From e5d099ebcedf4a11ce453afd5b4084519fd6b7f4 Mon Sep 17 00:00:00 2001 From: Zack Rauen Date: Fri, 17 Jul 2020 22:24:20 -0400 Subject: [PATCH] bugfixes - Floating window going below min on low resolution - Floating window editor not usable in settings - Confirmation modal component gone - Fix addon toast strings - Fix emote render - Add folder in AddonAPIs - Restructure FloatingWindows --- TODO.md | 2 +- js/main.js | 94 +- js/main.min.js | 2 +- package-lock.json | 3697 ++++++++++++++++----------------- package.json | 22 +- src/builtins/customcss.js | 4 +- src/builtins/emotes/emotes.js | 116 +- src/data/strings.js | 4 + src/modules/addonmanager.js | 28 +- src/modules/pluginapi.js | 2 +- src/modules/pluginmanager.js | 4 +- src/modules/thememanager.js | 4 +- src/structs/builtin.js | 4 + src/ui/floating/container.jsx | 12 +- src/ui/floating/window.jsx | 38 +- src/ui/floatingwindows.js | 19 + src/ui/modals.js | 26 +- src/ui/toasts.js | 4 +- 18 files changed, 1991 insertions(+), 2091 deletions(-) create mode 100644 src/ui/floatingwindows.js diff --git a/TODO.md b/TODO.md index b2fa194d..efe8a641 100644 --- a/TODO.md +++ b/TODO.md @@ -7,7 +7,7 @@ Note: The items listed here are not in any sort of priority order. ### To Do (Remote Side) - Dependency loading (jquery, css, config file) - Stop depending on injector giving config -- Fix emote render +- Abstract out more UI strings ### To Do (Injector) - Update to new windowprefs location diff --git a/js/main.js b/js/main.js index 71e99772..a15c452a 100644 --- a/js/main.js +++ b/js/main.js @@ -155,7 +155,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cus /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/customcss/csseditor */ \"./src/ui/customcss/csseditor.jsx\");\n/* harmony import */ var _ui_floating_container__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/floating/container */ \"./src/ui/floating/container.jsx\");\n/* harmony import */ var _ui_settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _modules_utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../modules/utilities */ \"./src/modules/utilities.js\");\n\n\n\n\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst UserSettings = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"updateAccount\");\nconst Dispatcher = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"dirtyDispatch\");\nconst ActionTypes = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"ActionTypes\").ActionTypes;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class CustomCSS extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Custom CSS\";\n }\n\n get category() {\n return \"customcss\";\n }\n\n get id() {\n return \"customcss\";\n }\n\n get startDetached() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"detached\";\n }\n\n get nativeOpen() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"system\";\n }\n\n constructor() {\n super();\n this.savedCss = \"\";\n this.insertedCss = \"\";\n this.isDetached = false;\n }\n\n async enabled() {\n if (!window.ace) {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].injectScript(\"ace-script\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js\").then(() => {\n if (window.require.original) window.require = window.require.original;\n });\n }\n\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].registerPanel(this.id, modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.customcss, {\n order: 2,\n element: () => [modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle\n }), modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n css: this.savedCss,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n openDetached: this.openDetached.bind(this),\n onChange: this.onChange.bind(this)\n })],\n onClick: thisObject => {\n if (this.isDetached) return;\n if (this.nativeOpen) return this.openNative();else if (this.startDetached) return this.openDetached();\n const settingsView = _modules_utilities__WEBPACK_IMPORTED_MODULE_5__[\"default\"].findInRenderTree(thisObject._reactInternalFiber, m => m && m.onSetSection, {\n walkable: [\"child\", \"memoizedProps\", \"props\", \"children\"]\n });\n if (settingsView && settingsView.onSetSection) settingsView.onSetSection(this.id);\n }\n });\n this.loadCSS();\n this.insertCSS(this.savedCss);\n this.watchContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].removePanel(this.id);\n this.unwatchContent();\n }\n\n watchContent() {\n if (this.watcher) return this.error(\"Already watching content.\");\n const timeCache = {};\n this.log(\"Starting to watch content.\");\n this.watcher = fs.watch(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename) return;\n await new Promise(r => setTimeout(r, 50));\n\n try {\n fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete timeCache[filename];\n this.saveCSS(\"\");\n }\n\n const stats = fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (timeCache[filename] == stats.mtime.getTime()) return;\n timeCache[filename] = stats.mtime.getTime();\n\n if (eventType == \"change\") {\n const newCSS = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n if (newCSS == this.savedCss) return;\n this.savedCss = newCSS;\n this.insertCSS(this.savedCss);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].emit(\"customcss-updated\", this.savedCss);\n }\n });\n }\n\n unwatchContent() {\n if (!this.watcher) return this.error(\"Was not watching content.\");\n this.watcher.close();\n delete this.watcher;\n this.log(\"No longer watching content.\");\n }\n\n onChange(value) {\n if (!modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\")) return;\n this.insertCSS(value);\n this.saveCSS(value);\n }\n\n loadCSS() {\n this.savedCss = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n }\n\n insertCSS(newCss) {\n if (typeof newCss === \"undefined\") newCss = this.insertedCss;else this.insertedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].updateCustomCSS(newCss);\n }\n\n saveCSS(newCss) {\n if (typeof newCss !== \"undefined\") this.savedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].saveCustomCSS(this.savedCss);\n }\n\n openNative() {\n electron.shell.openExternal(`file://${modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS}`);\n }\n\n openDetached(currentCSS) {\n const editorRef = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createRef();\n const editor = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n id: \"bd-floating-editor\",\n ref: editorRef,\n css: currentCSS,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n onChange: this.onChange.bind(this)\n });\n _ui_floating_container__WEBPACK_IMPORTED_MODULE_3__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle,\n id: \"floating-editor-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.confirmationText\n });\n this.isDetached = true;\n UserSettings.close();\n Dispatcher.dirtyDispatch({\n type: ActionTypes.LAYER_POP\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2N1c3RvbWNzcy5qcz9jM2YyIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsImVsZWN0cm9uIiwiVXNlclNldHRpbmdzIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiRGlzcGF0Y2hlciIsIkFjdGlvblR5cGVzIiwiQ3VzdG9tQ1NTIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwic3RhcnREZXRhY2hlZCIsIlNldHRpbmdzIiwiZ2V0IiwiY29sbGVjdGlvbiIsIm5hdGl2ZU9wZW4iLCJjb25zdHJ1Y3RvciIsInNhdmVkQ3NzIiwiaW5zZXJ0ZWRDc3MiLCJpc0RldGFjaGVkIiwiZW5hYmxlZCIsIndpbmRvdyIsImFjZSIsIkRPTU1hbmFnZXIiLCJpbmplY3RTY3JpcHQiLCJ0aGVuIiwib3JpZ2luYWwiLCJyZWdpc3RlclBhbmVsIiwiU3RyaW5ncyIsIlBhbmVscyIsImN1c3RvbWNzcyIsIm9yZGVyIiwiZWxlbWVudCIsImVkaXRvclRpdGxlIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiQ1NTRWRpdG9yIiwiY3NzIiwic2F2ZSIsInNhdmVDU1MiLCJiaW5kIiwidXBkYXRlIiwiaW5zZXJ0Q1NTIiwib3Blbk5hdGl2ZSIsIm9wZW5EZXRhY2hlZCIsIm9uQ2hhbmdlIiwib25DbGljayIsInRoaXNPYmplY3QiLCJzZXR0aW5nc1ZpZXciLCJVdGlsaXRpZXMiLCJmaW5kSW5SZW5kZXJUcmVlIiwiX3JlYWN0SW50ZXJuYWxGaWJlciIsIm0iLCJvblNldFNlY3Rpb24iLCJ3YWxrYWJsZSIsImxvYWRDU1MiLCJ3YXRjaENvbnRlbnQiLCJkaXNhYmxlZCIsInJlbW92ZVBhbmVsIiwidW53YXRjaENvbnRlbnQiLCJ3YXRjaGVyIiwiZXJyb3IiLCJ0aW1lQ2FjaGUiLCJsb2ciLCJ3YXRjaCIsIkRhdGFTdG9yZSIsImN1c3RvbUNTUyIsInBlcnNpc3RlbnQiLCJldmVudFR5cGUiLCJmaWxlbmFtZSIsIlByb21pc2UiLCJyIiwic2V0VGltZW91dCIsInN0YXRTeW5jIiwiZXJyIiwiY29kZSIsInN0YXRzIiwibXRpbWUiLCJnZXRUaW1lIiwibmV3Q1NTIiwibG9hZEN1c3RvbUNTUyIsIkV2ZW50cyIsImVtaXQiLCJjbG9zZSIsInZhbHVlIiwibmV3Q3NzIiwidXBkYXRlQ3VzdG9tQ1NTIiwic2F2ZUN1c3RvbUNTUyIsInNoZWxsIiwib3BlbkV4dGVybmFsIiwiY3VycmVudENTUyIsImVkaXRvclJlZiIsImNyZWF0ZVJlZiIsImVkaXRvciIsInJlZiIsIkZsb2F0aW5nV2luZG93Q29udGFpbmVyIiwib3BlbiIsIm9uQ2xvc2UiLCJvblJlc2l6ZSIsImN1cnJlbnQiLCJyZXNpemUiLCJ0aXRsZSIsImhlaWdodCIsIndpZHRoIiwiY2VudGVyIiwicmVzaXphYmxlIiwiY2hpbGRyZW4iLCJjb25maXJtQ2xvc2UiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsImNvbmZpcm1hdGlvblRleHQiLCJkaXJ0eURpc3BhdGNoIiwidHlwZSIsIkxBWUVSX1BPUCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsRUFBRSxHQUFHQyxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsUUFBUSxHQUFHRCxtQkFBTyxDQUFDLDBCQUFELENBQXhCOztBQUNBLE1BQU1FLFlBQVksR0FBR0Msc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFyQjtBQUNBLE1BQU1DLFVBQVUsR0FBR0Ysc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFuQjtBQUNBLE1BQU1FLFdBQVcsR0FBR0gsc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixhQUExQixFQUF5Q0UsV0FBN0Q7QUFFZSxtRUFBSSxNQUFNQyxTQUFOLFNBQXdCQyx3REFBeEIsQ0FBZ0M7QUFDL0MsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxZ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O0FBQ0gsT0FId0I7QUFJekIrRSxjQUFRLEVBQUUsTUFBTTtBQUNaLFlBQUksQ0FBQ1AsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ1EsT0FBekIsSUFBb0MsQ0FBQ1IsU0FBUyxDQUFDUSxPQUFWLENBQWtCQyxNQUEzRCxFQUFtRTtBQUNuRVQsaUJBQVMsQ0FBQ1EsT0FBVixDQUFrQkMsTUFBbEI7QUFDSCxPQVB3QjtBQVF6QkMsV0FBSyxFQUFFekUsK0NBQU8sQ0FBQ3RCLFNBQVIsQ0FBa0IyQixXQVJBO0FBU3pCdkIsUUFBRSxFQUFFLHdCQVRxQjtBQVV6QjRGLFlBQU0sRUFBRSxHQVZpQjtBQVd6QkMsV0FBSyxFQUFFLEdBWGtCO0FBWXpCQyxZQUFNLEVBQUUsSUFaaUI7QUFhekJDLGVBQVMsRUFBRSxJQWJjO0FBY3pCQyxjQUFRLEVBQUViLE1BZGU7QUFlekJjLGtCQUFZLEVBQUUsTUFBTTtBQUNoQixZQUFJLENBQUNoQixTQUFELElBQWMsQ0FBQ0EsU0FBUyxDQUFDUSxPQUE3QixFQUFzQyxPQUFPLEtBQVA7QUFDdEMsZUFBT1IsU0FBUyxDQUFDUSxPQUFWLENBQWtCUyxpQkFBekI7QUFDSCxPQWxCd0I7QUFtQnpCQyxzQkFBZ0IsRUFBRWpGLCtDQUFPLENBQUN0QixTQUFSLENBQWtCdUc7QUFuQlgsS0FBN0I7QUFxQkEsU0FBSzFGLFVBQUwsR0FBa0IsSUFBbEI7QUFDQWxCLGdCQUFZLENBQUNrRixLQUFiO0FBQ0EvRSxjQUFVLENBQUMwRyxhQUFYLENBQXlCO0FBQUNDLFVBQUksRUFBRTFHLFdBQVcsQ0FBQzJHO0FBQW5CLEtBQXpCO0FBQ0g7O0FBaEo4QyxDQUFwQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2N1c3RvbWNzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtTZXR0aW5ncywgRGF0YVN0b3JlLCBSZWFjdCwgV2VicGFja01vZHVsZXMsIEV2ZW50cywgRE9NTWFuYWdlciwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IENTU0VkaXRvciBmcm9tIFwiLi4vdWkvY3VzdG9tY3NzL2Nzc2VkaXRvclwiO1xyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3dDb250YWluZXIgZnJvbSBcIi4uL3VpL2Zsb2F0aW5nL2NvbnRhaW5lclwiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi4vdWkvc2V0dGluZ3MvdGl0bGVcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi4vbW9kdWxlcy91dGlsaXRpZXNcIjtcclxuXHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBlbGVjdHJvbiA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTtcclxuY29uc3QgVXNlclNldHRpbmdzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInVwZGF0ZUFjY291bnRcIik7XHJcbmNvbnN0IERpc3BhdGNoZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGlydHlEaXNwYXRjaFwiKTtcclxuY29uc3QgQWN0aW9uVHlwZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQWN0aW9uVHlwZXNcIikuQWN0aW9uVHlwZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgQ3VzdG9tQ1NTIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDdXN0b20gQ1NTXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImN1c3RvbWNzc1wiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJjdXN0b21jc3NcIjt9XHJcbiAgICBnZXQgc3RhcnREZXRhY2hlZCgpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJvcGVuQWN0aW9uXCIpID09IFwiZGV0YWNoZWRcIjt9XHJcbiAgICBnZXQgbmF0aXZlT3BlbigpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJvcGVuQWN0aW9uXCIpID09IFwic3lzdGVtXCI7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5pbnNlcnRlZENzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXdpbmRvdy5hY2UpIHtcclxuICAgICAgICAgICAgRE9NTWFuYWdlci5pbmplY3RTY3JpcHQoXCJhY2Utc2NyaXB0XCIsIFwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvYWNlLzEuMi45L2FjZS5qc1wiKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cucmVxdWlyZS5vcmlnaW5hbCkgd2luZG93LnJlcXVpcmUgPSB3aW5kb3cucmVxdWlyZS5vcmlnaW5hbDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFNldHRpbmdzLnJlZ2lzdGVyUGFuZWwodGhpcy5pZCwgU3RyaW5ncy5QYW5lbHMuY3VzdG9tY3NzLCB7XHJcbiAgICAgICAgICAgIG9yZGVyOiAyLFxyXG4gICAgICAgICAgICBlbGVtZW50OiAoKSA9PiBbPFNldHRpbmdzVGl0bGUgdGV4dD17U3RyaW5ncy5DdXN0b21DU1MuZWRpdG9yVGl0bGV9IC8+LCBSZWFjdC5jcmVhdGVFbGVtZW50KENTU0VkaXRvciwge1xyXG4gICAgICAgICAgICAgICAgY3NzOiB0aGlzLnNhdmVkQ3NzLFxyXG4gICAgICAgICAgICAgICAgc2F2ZTogdGhpcy5zYXZlQ1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHRoaXMuaW5zZXJ0Q1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9wZW5EZXRhY2hlZDogdGhpcy5vcGVuRGV0YWNoZWQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICAgICAgfSldLFxyXG4gICAgICAgICAgICBvbkNsaWNrOiAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEZXRhY2hlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubmF0aXZlT3BlbikgcmV0dXJuIHRoaXMub3Blbk5hdGl2ZSgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdGFydERldGFjaGVkKSByZXR1cm4gdGhpcy5vcGVuRGV0YWNoZWQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzVmlldyA9IFV0aWxpdGllcy5maW5kSW5SZW5kZXJUcmVlKHRoaXNPYmplY3QuX3JlYWN0SW50ZXJuYWxGaWJlciwgbSA9PiBtICYmIG0ub25TZXRTZWN0aW9uLCB7d2Fsa2FibGU6IFtcImNoaWxkXCIsIFwibWVtb2l6ZWRQcm9wc1wiLCBcInByb3BzXCIsIFwiY2hpbGRyZW5cIl19KTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nc1ZpZXcgJiYgc2V0dGluZ3NWaWV3Lm9uU2V0U2VjdGlvbikgc2V0dGluZ3NWaWV3Lm9uU2V0U2VjdGlvbih0aGlzLmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubG9hZENTUygpO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHRoaXMuc2F2ZWRDc3MpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgU2V0dGluZ3MucmVtb3ZlUGFuZWwodGhpcy5pZCk7XHJcbiAgICAgICAgdGhpcy51bndhdGNoQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAodGhpcy53YXRjaGVyKSByZXR1cm4gdGhpcy5lcnJvcihcIkFscmVhZHkgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICAgICAgY29uc3QgdGltZUNhY2hlID0ge307XHJcbiAgICAgICAgdGhpcy5sb2coXCJTdGFydGluZyB0byB3YXRjaCBjb250ZW50LlwiKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIgPSBmcy53YXRjaChEYXRhU3RvcmUuY3VzdG9tQ1NTLCB7cGVyc2lzdGVudDogZmFsc2V9LCBhc3luYyAoZXZlbnRUeXBlLCBmaWxlbmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50VHlwZSB8fCAhZmlsZW5hbWUpIHJldHVybjtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XHJcbiAgICAgICAgICAgIHRyeSB7ZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7fVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRU5PRU5UXCIpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aW1lQ2FjaGVbZmlsZW5hbWVdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlQ1NTKFwiXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7XHJcbiAgICAgICAgICAgIGlmICghc3RhdHMgfHwgIXN0YXRzLm10aW1lIHx8ICFzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihzdGF0cy5tdGltZS5nZXRUaW1lKCkpICE9PSBcIm51bWJlclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0aW1lQ2FjaGVbZmlsZW5hbWVdID09IHN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aW1lQ2FjaGVbZmlsZW5hbWVdID0gc3RhdHMubXRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09IFwiY2hhbmdlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NTUyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3Q1NTID09IHRoaXMuc2F2ZWRDc3MpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBuZXdDU1M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgICAgICAgICAgICAgIEV2ZW50cy5lbWl0KFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy5zYXZlZENzcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bndhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlcikgcmV0dXJuIHRoaXMuZXJyb3IoXCJXYXMgbm90IHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hlci5jbG9zZSgpO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLndhdGNoZXI7XHJcbiAgICAgICAgdGhpcy5sb2coXCJObyBsb25nZXIgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UodmFsdWUpIHtcclxuICAgICAgICBpZiAoIVNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHZhbHVlKTtcclxuICAgICAgICB0aGlzLnNhdmVDU1ModmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDU1MoKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSA9PT0gXCJ1bmRlZmluZWRcIikgbmV3Q3NzID0gdGhpcy5pbnNlcnRlZENzcztcclxuICAgICAgICBlbHNlIHRoaXMuaW5zZXJ0ZWRDc3MgPSBuZXdDc3M7XHJcbiAgICAgICAgRE9NTWFuYWdlci51cGRhdGVDdXN0b21DU1MobmV3Q3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlQ1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5zYXZlZENzcyA9IG5ld0NzcztcclxuICAgICAgICBEYXRhU3RvcmUuc2F2ZUN1c3RvbUNTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGVsZWN0cm9uLnNoZWxsLm9wZW5FeHRlcm5hbChgZmlsZTovLyR7RGF0YVN0b3JlLmN1c3RvbUNTU31gKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRGV0YWNoZWQoY3VycmVudENTUykge1xyXG4gICAgICAgIGNvbnN0IGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTRWRpdG9yLCB7XHJcbiAgICAgICAgICAgIGlkOiBcImJkLWZsb2F0aW5nLWVkaXRvclwiLFxyXG4gICAgICAgICAgICByZWY6IGVkaXRvclJlZixcclxuICAgICAgICAgICAgY3NzOiBjdXJyZW50Q1NTLFxyXG4gICAgICAgICAgICBzYXZlOiB0aGlzLnNhdmVDU1MuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lci5vcGVuKHtcclxuICAgICAgICAgICAgb25DbG9zZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uUmVzaXplOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRvclJlZiB8fCAhZWRpdG9yUmVmLmN1cnJlbnQgfHwgIWVkaXRvclJlZi5jdXJyZW50LnJlc2l6ZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQucmVzaXplKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRpdGxlOiBTdHJpbmdzLkN1c3RvbUNTUy5lZGl0b3JUaXRsZSxcclxuICAgICAgICAgICAgaWQ6IFwiZmxvYXRpbmctZWRpdG9yLXdpbmRvd1wiLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ3MCxcclxuICAgICAgICAgICAgd2lkdGg6IDQxMCxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBlZGl0b3IsXHJcbiAgICAgICAgICAgIGNvbmZpcm1DbG9zZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3JSZWYgfHwgIWVkaXRvclJlZi5jdXJyZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yUmVmLmN1cnJlbnQuaGFzVW5zYXZlZENoYW5nZXM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFN0cmluZ3MuQ3VzdG9tQ1NTLmNvbmZpcm1hdGlvblRleHRcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlzRGV0YWNoZWQgPSB0cnVlO1xyXG4gICAgICAgIFVzZXJTZXR0aW5ncy5jbG9zZSgpO1xyXG4gICAgICAgIERpc3BhdGNoZXIuZGlydHlEaXNwYXRjaCh7dHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfUE9QfSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/customcss.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/customcss/csseditor */ \"./src/ui/customcss/csseditor.jsx\");\n/* harmony import */ var _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/floatingwindows */ \"./src/ui/floatingwindows.js\");\n/* harmony import */ var _ui_settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _modules_utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../modules/utilities */ \"./src/modules/utilities.js\");\n\n\n\n\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst UserSettings = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"updateAccount\");\nconst Dispatcher = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"dirtyDispatch\");\nconst ActionTypes = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"ActionTypes\").ActionTypes;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class CustomCSS extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Custom CSS\";\n }\n\n get category() {\n return \"customcss\";\n }\n\n get id() {\n return \"customcss\";\n }\n\n get startDetached() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"detached\";\n }\n\n get nativeOpen() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"system\";\n }\n\n constructor() {\n super();\n this.savedCss = \"\";\n this.insertedCss = \"\";\n this.isDetached = false;\n }\n\n async enabled() {\n if (!window.ace) {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].injectScript(\"ace-script\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js\").then(() => {\n if (window.require.original) window.require = window.require.original;\n });\n }\n\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].registerPanel(this.id, modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.customcss, {\n order: 2,\n element: () => [/*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle\n }), modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n css: this.savedCss,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n openDetached: this.openDetached.bind(this),\n onChange: this.onChange.bind(this)\n })],\n onClick: thisObject => {\n if (this.isDetached) return;\n if (this.nativeOpen) return this.openNative();else if (this.startDetached) return this.openDetached();\n const settingsView = _modules_utilities__WEBPACK_IMPORTED_MODULE_5__[\"default\"].findInRenderTree(thisObject._reactInternalFiber, m => m && m.onSetSection, {\n walkable: [\"child\", \"memoizedProps\", \"props\", \"children\"]\n });\n if (settingsView && settingsView.onSetSection) settingsView.onSetSection(this.id);\n }\n });\n this.loadCSS();\n this.insertCSS(this.savedCss);\n this.watchContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].removePanel(this.id);\n this.unwatchContent();\n }\n\n watchContent() {\n if (this.watcher) return this.error(\"Already watching content.\");\n const timeCache = {};\n this.log(\"Starting to watch content.\");\n this.watcher = fs.watch(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename) return;\n await new Promise(r => setTimeout(r, 50));\n\n try {\n fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete timeCache[filename];\n this.saveCSS(\"\");\n }\n\n const stats = fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (timeCache[filename] == stats.mtime.getTime()) return;\n timeCache[filename] = stats.mtime.getTime();\n\n if (eventType == \"change\") {\n const newCSS = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n if (newCSS == this.savedCss) return;\n this.savedCss = newCSS;\n this.insertCSS(this.savedCss);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].emit(\"customcss-updated\", this.savedCss);\n }\n });\n }\n\n unwatchContent() {\n if (!this.watcher) return this.error(\"Was not watching content.\");\n this.watcher.close();\n delete this.watcher;\n this.log(\"No longer watching content.\");\n }\n\n onChange(value) {\n if (!modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\")) return;\n this.insertCSS(value);\n this.saveCSS(value);\n }\n\n loadCSS() {\n this.savedCss = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n }\n\n insertCSS(newCss) {\n if (typeof newCss === \"undefined\") newCss = this.insertedCss;else this.insertedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].updateCustomCSS(newCss);\n }\n\n saveCSS(newCss) {\n if (typeof newCss !== \"undefined\") this.savedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].saveCustomCSS(this.savedCss);\n }\n\n openNative() {\n electron.shell.openExternal(`file://${modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS}`);\n }\n\n openDetached(currentCSS) {\n const editorRef = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createRef();\n const editor = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n id: \"bd-floating-editor\",\n ref: editorRef,\n css: currentCSS,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n onChange: this.onChange.bind(this)\n });\n _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle,\n id: \"floating-editor-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.confirmationText\n });\n this.isDetached = true;\n UserSettings.close();\n Dispatcher.dirtyDispatch({\n type: ActionTypes.LAYER_POP\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2N1c3RvbWNzcy5qcz9jM2YyIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsImVsZWN0cm9uIiwiVXNlclNldHRpbmdzIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiRGlzcGF0Y2hlciIsIkFjdGlvblR5cGVzIiwiQ3VzdG9tQ1NTIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwic3RhcnREZXRhY2hlZCIsIlNldHRpbmdzIiwiZ2V0IiwiY29sbGVjdGlvbiIsIm5hdGl2ZU9wZW4iLCJjb25zdHJ1Y3RvciIsInNhdmVkQ3NzIiwiaW5zZXJ0ZWRDc3MiLCJpc0RldGFjaGVkIiwiZW5hYmxlZCIsIndpbmRvdyIsImFjZSIsIkRPTU1hbmFnZXIiLCJpbmplY3RTY3JpcHQiLCJ0aGVuIiwib3JpZ2luYWwiLCJyZWdpc3RlclBhbmVsIiwiU3RyaW5ncyIsIlBhbmVscyIsImN1c3RvbWNzcyIsIm9yZGVyIiwiZWxlbWVudCIsImVkaXRvclRpdGxlIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiQ1NTRWRpdG9yIiwiY3NzIiwic2F2ZSIsInNhdmVDU1MiLCJiaW5kIiwidXBkYXRlIiwiaW5zZXJ0Q1NTIiwib3Blbk5hdGl2ZSIsIm9wZW5EZXRhY2hlZCIsIm9uQ2hhbmdlIiwib25DbGljayIsInRoaXNPYmplY3QiLCJzZXR0aW5nc1ZpZXciLCJVdGlsaXRpZXMiLCJmaW5kSW5SZW5kZXJUcmVlIiwiX3JlYWN0SW50ZXJuYWxGaWJlciIsIm0iLCJvblNldFNlY3Rpb24iLCJ3YWxrYWJsZSIsImxvYWRDU1MiLCJ3YXRjaENvbnRlbnQiLCJkaXNhYmxlZCIsInJlbW92ZVBhbmVsIiwidW53YXRjaENvbnRlbnQiLCJ3YXRjaGVyIiwiZXJyb3IiLCJ0aW1lQ2FjaGUiLCJsb2ciLCJ3YXRjaCIsIkRhdGFTdG9yZSIsImN1c3RvbUNTUyIsInBlcnNpc3RlbnQiLCJldmVudFR5cGUiLCJmaWxlbmFtZSIsIlByb21pc2UiLCJyIiwic2V0VGltZW91dCIsInN0YXRTeW5jIiwiZXJyIiwiY29kZSIsInN0YXRzIiwibXRpbWUiLCJnZXRUaW1lIiwibmV3Q1NTIiwibG9hZEN1c3RvbUNTUyIsIkV2ZW50cyIsImVtaXQiLCJjbG9zZSIsInZhbHVlIiwibmV3Q3NzIiwidXBkYXRlQ3VzdG9tQ1NTIiwic2F2ZUN1c3RvbUNTUyIsInNoZWxsIiwib3BlbkV4dGVybmFsIiwiY3VycmVudENTUyIsImVkaXRvclJlZiIsImNyZWF0ZVJlZiIsImVkaXRvciIsInJlZiIsIkZsb2F0aW5nV2luZG93cyIsIm9wZW4iLCJvbkNsb3NlIiwib25SZXNpemUiLCJjdXJyZW50IiwicmVzaXplIiwidGl0bGUiLCJoZWlnaHQiLCJ3aWR0aCIsImNlbnRlciIsInJlc2l6YWJsZSIsImNoaWxkcmVuIiwiY29uZmlybUNsb3NlIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJjb25maXJtYXRpb25UZXh0IiwiZGlydHlEaXNwYXRjaCIsInR5cGUiLCJMQVlFUl9QT1AiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU1BLEVBQUUsR0FBR0MsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1DLFFBQVEsR0FBR0QsbUJBQU8sQ0FBQywwQkFBRCxDQUF4Qjs7QUFDQSxNQUFNRSxZQUFZLEdBQUdDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBckI7QUFDQSxNQUFNQyxVQUFVLEdBQUdGLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBbkI7QUFDQSxNQUFNRSxXQUFXLEdBQUdILHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsYUFBMUIsRUFBeUNFLFdBQTdEO0FBRWUsbUVBQUksTUFBTUMsU0FBTixTQUF3QkMsd0RBQXhCLENBQWdDO0FBQy9DLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sWUFBUDtBQUFx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Z0I7QUFJakIrRSxjQUFRLEVBQUUsTUFBTTtBQUNaLFlBQUksQ0FBQ1AsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ1EsT0FBekIsSUFBb0MsQ0FBQ1IsU0FBUyxDQUFDUSxPQUFWLENBQWtCQyxNQUEzRCxFQUFtRTtBQUNuRVQsaUJBQVMsQ0FBQ1EsT0FBVixDQUFrQkMsTUFBbEI7QUFDSCxPQVBnQjtBQVFqQkMsV0FBSyxFQUFFekUsK0NBQU8sQ0FBQ3RCLFNBQVIsQ0FBa0IyQixXQVJSO0FBU2pCdkIsUUFBRSxFQUFFLHdCQVRhO0FBVWpCNEYsWUFBTSxFQUFFLEdBVlM7QUFXakJDLFdBQUssRUFBRSxHQVhVO0FBWWpCQyxZQUFNLEVBQUUsSUFaUztBQWFqQkMsZUFBUyxFQUFFLElBYk07QUFjakJDLGNBQVEsRUFBRWIsTUFkTztBQWVqQmMsa0JBQVksRUFBRSxNQUFNO0FBQ2hCLFlBQUksQ0FBQ2hCLFNBQUQsSUFBYyxDQUFDQSxTQUFTLENBQUNRLE9BQTdCLEVBQXNDLE9BQU8sS0FBUDtBQUN0QyxlQUFPUixTQUFTLENBQUNRLE9BQVYsQ0FBa0JTLGlCQUF6QjtBQUNILE9BbEJnQjtBQW1CakJDLHNCQUFnQixFQUFFakYsK0NBQU8sQ0FBQ3RCLFNBQVIsQ0FBa0J1RztBQW5CbkIsS0FBckI7QUFxQkEsU0FBSzFGLFVBQUwsR0FBa0IsSUFBbEI7QUFDQWxCLGdCQUFZLENBQUNrRixLQUFiO0FBQ0EvRSxjQUFVLENBQUMwRyxhQUFYLENBQXlCO0FBQUNDLFVBQUksRUFBRTFHLFdBQVcsQ0FBQzJHO0FBQW5CLEtBQXpCO0FBQ0g7O0FBaEo4QyxDQUFwQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2N1c3RvbWNzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtTZXR0aW5ncywgRGF0YVN0b3JlLCBSZWFjdCwgV2VicGFja01vZHVsZXMsIEV2ZW50cywgRE9NTWFuYWdlciwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IENTU0VkaXRvciBmcm9tIFwiLi4vdWkvY3VzdG9tY3NzL2Nzc2VkaXRvclwiO1xyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3dzIGZyb20gXCIuLi91aS9mbG9hdGluZ3dpbmRvd3NcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4uL3VpL3NldHRpbmdzL3RpdGxlXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4uL21vZHVsZXMvdXRpbGl0aWVzXCI7XHJcblxyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuY29uc3QgZWxlY3Ryb24gPSByZXF1aXJlKFwiZWxlY3Ryb25cIik7XHJcbmNvbnN0IFVzZXJTZXR0aW5ncyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ1cGRhdGVBY2NvdW50XCIpO1xyXG5jb25zdCBEaXNwYXRjaGVyID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImRpcnR5RGlzcGF0Y2hcIik7XHJcbmNvbnN0IEFjdGlvblR5cGVzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkFjdGlvblR5cGVzXCIpLkFjdGlvblR5cGVzO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEN1c3RvbUNTUyBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiQ3VzdG9tIENTU1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJjdXN0b21jc3NcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiY3VzdG9tY3NzXCI7fVxyXG4gICAgZ2V0IHN0YXJ0RGV0YWNoZWQoKSB7cmV0dXJuIFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIFwib3BlbkFjdGlvblwiKSA9PSBcImRldGFjaGVkXCI7fVxyXG4gICAgZ2V0IG5hdGl2ZU9wZW4oKSB7cmV0dXJuIFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIFwib3BlbkFjdGlvblwiKSA9PSBcInN5c3RlbVwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0ZWRDc3MgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3cuYWNlKSB7XHJcbiAgICAgICAgICAgIERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0KFwiYWNlLXNjcmlwdFwiLCBcImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2FjZS8xLjIuOS9hY2UuanNcIikudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LnJlcXVpcmUub3JpZ2luYWwpIHdpbmRvdy5yZXF1aXJlID0gd2luZG93LnJlcXVpcmUub3JpZ2luYWw7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKHRoaXMuaWQsIFN0cmluZ3MuUGFuZWxzLmN1c3RvbWNzcywge1xyXG4gICAgICAgICAgICBvcmRlcjogMixcclxuICAgICAgICAgICAgZWxlbWVudDogKCkgPT4gWzxTZXR0aW5nc1RpdGxlIHRleHQ9e1N0cmluZ3MuQ3VzdG9tQ1NTLmVkaXRvclRpdGxlfSAvPiwgUmVhY3QuY3JlYXRlRWxlbWVudChDU1NFZGl0b3IsIHtcclxuICAgICAgICAgICAgICAgIGNzczogdGhpcy5zYXZlZENzcyxcclxuICAgICAgICAgICAgICAgIHNhdmU6IHRoaXMuc2F2ZUNTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgb3Blbk5hdGl2ZTogdGhpcy5vcGVuTmF0aXZlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvcGVuRGV0YWNoZWQ6IHRoaXMub3BlbkRldGFjaGVkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgIH0pXSxcclxuICAgICAgICAgICAgb25DbGljazogKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRGV0YWNoZWQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdGl2ZU9wZW4pIHJldHVybiB0aGlzLm9wZW5OYXRpdmUoKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3RhcnREZXRhY2hlZCkgcmV0dXJuIHRoaXMub3BlbkRldGFjaGVkKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZXR0aW5nc1ZpZXcgPSBVdGlsaXRpZXMuZmluZEluUmVuZGVyVHJlZSh0aGlzT2JqZWN0Ll9yZWFjdEludGVybmFsRmliZXIsIG0gPT4gbSAmJiBtLm9uU2V0U2VjdGlvbiwge3dhbGthYmxlOiBbXCJjaGlsZFwiLCBcIm1lbW9pemVkUHJvcHNcIiwgXCJwcm9wc1wiLCBcImNoaWxkcmVuXCJdfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3NWaWV3ICYmIHNldHRpbmdzVmlldy5vblNldFNlY3Rpb24pIHNldHRpbmdzVmlldy5vblNldFNlY3Rpb24odGhpcy5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmxvYWRDU1MoKTtcclxuICAgICAgICB0aGlzLmluc2VydENTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgICAgICB0aGlzLndhdGNoQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIFNldHRpbmdzLnJlbW92ZVBhbmVsKHRoaXMuaWQpO1xyXG4gICAgICAgIHRoaXMudW53YXRjaENvbnRlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICB3YXRjaENvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hlcikgcmV0dXJuIHRoaXMuZXJyb3IoXCJBbHJlYWR5IHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgICAgIGNvbnN0IHRpbWVDYWNoZSA9IHt9O1xyXG4gICAgICAgIHRoaXMubG9nKFwiU3RhcnRpbmcgdG8gd2F0Y2ggY29udGVudC5cIik7XHJcbiAgICAgICAgdGhpcy53YXRjaGVyID0gZnMud2F0Y2goRGF0YVN0b3JlLmN1c3RvbUNTUywge3BlcnNpc3RlbnQ6IGZhbHNlfSwgYXN5bmMgKGV2ZW50VHlwZSwgZmlsZW5hbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFldmVudFR5cGUgfHwgIWZpbGVuYW1lKSByZXR1cm47XHJcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCA1MCkpO1xyXG4gICAgICAgICAgICB0cnkge2ZzLnN0YXRTeW5jKERhdGFTdG9yZS5jdXN0b21DU1MpO31cclxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9PSBcIkVOT0VOVFwiKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgdGltZUNhY2hlW2ZpbGVuYW1lXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUNTUyhcIlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKERhdGFTdG9yZS5jdXN0b21DU1MpO1xyXG4gICAgICAgICAgICBpZiAoIXN0YXRzIHx8ICFzdGF0cy5tdGltZSB8fCAhc3RhdHMubXRpbWUuZ2V0VGltZSgpKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Yoc3RhdHMubXRpbWUuZ2V0VGltZSgpKSAhPT0gXCJudW1iZXJcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAodGltZUNhY2hlW2ZpbGVuYW1lXSA9PSBzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgdGltZUNhY2hlW2ZpbGVuYW1lXSA9IHN0YXRzLm10aW1lLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBcImNoYW5nZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDU1MgPSBEYXRhU3RvcmUubG9hZEN1c3RvbUNTUygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld0NTUyA9PSB0aGlzLnNhdmVkQ3NzKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVkQ3NzID0gbmV3Q1NTO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDU1ModGhpcy5zYXZlZENzcyk7XHJcbiAgICAgICAgICAgICAgICBFdmVudHMuZW1pdChcImN1c3RvbWNzcy11cGRhdGVkXCIsIHRoaXMuc2F2ZWRDc3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdW53YXRjaENvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLndhdGNoZXIpIHJldHVybiB0aGlzLmVycm9yKFwiV2FzIG5vdCB3YXRjaGluZyBjb250ZW50LlwiKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIuY2xvc2UoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy53YXRjaGVyO1xyXG4gICAgICAgIHRoaXMubG9nKFwiTm8gbG9uZ2VyIHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCFTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImN1c3RvbWNzc1wiLCBcImxpdmVVcGRhdGVcIikpIHJldHVybjtcclxuICAgICAgICB0aGlzLmluc2VydENTUyh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5zYXZlQ1NTKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQ1NTKCkge1xyXG4gICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBEYXRhU3RvcmUubG9hZEN1c3RvbUNTUygpO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydENTUyhuZXdDc3MpIHtcclxuICAgICAgICBpZiAodHlwZW9mKG5ld0NzcykgPT09IFwidW5kZWZpbmVkXCIpIG5ld0NzcyA9IHRoaXMuaW5zZXJ0ZWRDc3M7XHJcbiAgICAgICAgZWxzZSB0aGlzLmluc2VydGVkQ3NzID0gbmV3Q3NzO1xyXG4gICAgICAgIERPTU1hbmFnZXIudXBkYXRlQ3VzdG9tQ1NTKG5ld0Nzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNTUyhuZXdDc3MpIHtcclxuICAgICAgICBpZiAodHlwZW9mKG5ld0NzcykgIT09IFwidW5kZWZpbmVkXCIpIHRoaXMuc2F2ZWRDc3MgPSBuZXdDc3M7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNhdmVDdXN0b21DU1ModGhpcy5zYXZlZENzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk5hdGl2ZSgpIHtcclxuICAgICAgICBlbGVjdHJvbi5zaGVsbC5vcGVuRXh0ZXJuYWwoYGZpbGU6Ly8ke0RhdGFTdG9yZS5jdXN0b21DU1N9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRldGFjaGVkKGN1cnJlbnRDU1MpIHtcclxuICAgICAgICBjb25zdCBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICBjb25zdCBlZGl0b3IgPSBSZWFjdC5jcmVhdGVFbGVtZW50KENTU0VkaXRvciwge1xyXG4gICAgICAgICAgICBpZDogXCJiZC1mbG9hdGluZy1lZGl0b3JcIixcclxuICAgICAgICAgICAgcmVmOiBlZGl0b3JSZWYsXHJcbiAgICAgICAgICAgIGNzczogY3VycmVudENTUyxcclxuICAgICAgICAgICAgc2F2ZTogdGhpcy5zYXZlQ1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHVwZGF0ZTogdGhpcy5pbnNlcnRDU1MuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgb3Blbk5hdGl2ZTogdGhpcy5vcGVuTmF0aXZlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgRmxvYXRpbmdXaW5kb3dzLm9wZW4oe1xyXG4gICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGV0YWNoZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25SZXNpemU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWRpdG9yUmVmIHx8ICFlZGl0b3JSZWYuY3VycmVudCB8fCAhZWRpdG9yUmVmLmN1cnJlbnQucmVzaXplKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBlZGl0b3JSZWYuY3VycmVudC5yZXNpemUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGl0bGU6IFN0cmluZ3MuQ3VzdG9tQ1NTLmVkaXRvclRpdGxlLFxyXG4gICAgICAgICAgICBpZDogXCJmbG9hdGluZy1lZGl0b3Itd2luZG93XCIsXHJcbiAgICAgICAgICAgIGhlaWdodDogNDcwLFxyXG4gICAgICAgICAgICB3aWR0aDogNDEwLFxyXG4gICAgICAgICAgICBjZW50ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgY2hpbGRyZW46IGVkaXRvcixcclxuICAgICAgICAgICAgY29uZmlybUNsb3NlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRvclJlZiB8fCAhZWRpdG9yUmVmLmN1cnJlbnQpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlZGl0b3JSZWYuY3VycmVudC5oYXNVbnNhdmVkQ2hhbmdlcztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlybWF0aW9uVGV4dDogU3RyaW5ncy5DdXN0b21DU1MuY29uZmlybWF0aW9uVGV4dFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IHRydWU7XHJcbiAgICAgICAgVXNlclNldHRpbmdzLmNsb3NlKCk7XHJcbiAgICAgICAgRGlzcGF0Y2hlci5kaXJ0eURpc3BhdGNoKHt0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9QT1B9KTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/customcss.js\n"); /***/ }), @@ -215,7 +215,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_emote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/emote */ \"./src/ui/emote.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../structs/string */ \"./src/structs/string.js\");\n\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst EmoteURLs = {\n TwitchGlobal: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n TwitchSubscriber: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n FrankerFaceZ: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.frankerfacez.com/emoticon/{{id}}/1`),\n BTTV: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.betterttv.net/emote/{{id}}/1x`)\n};\nconst Emotes = {\n TwitchGlobal: {},\n TwitchSubscriber: {},\n BTTV: {},\n FrankerFaceZ: {}\n};\nconst blacklist = [];\nconst overrides = [\"twitch\", \"subscriber\", \"bttv\", \"ffz\"];\nconst modifiers = [\"flip\", \"spin\", \"pulse\", \"spin2\", \"spin3\", \"1spin\", \"2spin\", \"3spin\", \"tr\", \"bl\", \"br\", \"shake\", \"shake2\", \"shake3\", \"flap\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteModule extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Emotes\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emotes\";\n }\n\n get categories() {\n return Object.keys(Emotes).filter(k => this.isCategoryEnabled(k));\n }\n\n get shouldDownload() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", this.category, \"download\");\n }\n\n isCategoryEnabled(id) {\n return super.get(\"emotes\", \"categories\", id.toLowerCase());\n }\n\n get(id) {\n return super.get(\"emotes\", \"general\", id);\n }\n\n get MessageContentComponent() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"WebpackModules\"].getModule(m => m.defaultProps && m.defaultProps.hasOwnProperty(\"disableButtons\"));\n }\n\n get Emotes() {\n return Emotes;\n }\n\n get TwitchGlobal() {\n return Emotes.TwitchGlobal;\n }\n\n get TwitchSubscriber() {\n return Emotes.TwitchSubscriber;\n }\n\n get BTTV() {\n return Emotes.BTTV;\n }\n\n get FrankerFaceZ() {\n return Emotes.FrankerFaceZ;\n }\n\n get blacklist() {\n return blacklist;\n }\n\n get favorites() {\n return this.favoriteEmotes;\n }\n\n getUrl(category, name) {\n return EmoteURLs[category].format({\n id: Emotes[category][name]\n });\n }\n\n getCategory(category) {\n return Emotes[category];\n }\n\n getRemoteFile(category) {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].repoUrl(`data/emotes/${category.toLowerCase()}.json`);\n }\n\n initialize() {\n super.initialize();\n const storedFavorites = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getBDData(\"favoriteEmotes\");\n this.favoriteEmotes = storedFavorites || {};\n this.addFavorite = this.addFavorite.bind(this);\n this.removeFavorite = this.removeFavorite.bind(this);\n this.onCategoryToggle = this.onCategoryToggle.bind(this);\n this.resetEmotes = this.resetEmotes.bind(this);\n }\n\n async enabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].registerCollection(\"emotes\", \"Emotes\", data__WEBPACK_IMPORTED_MODULE_1__[\"EmoteConfig\"], {\n title: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.clearEmotes,\n onClick: this.resetEmotes\n });\n await this.getBlacklist();\n await this.loadEmoteData();\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"setting-updated\", this.onCategoryToggle);\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"setting-updated\", this.onCategoryToggle);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].removeCollection(\"emotes\");\n this.emptyEmotes();\n if (!this.cancelEmoteRender) return;\n this.cancelEmoteRender();\n delete this.cancelEmoteRender;\n }\n\n onCategoryToggle(collection, cat, category, enabled) {\n if (collection != \"emotes\" || cat != \"categories\") return;\n if (enabled) return this.loadEmoteData(category);\n return this.unloadEmoteData(category);\n }\n\n addFavorite(name, url) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) this.favoriteEmotes[name] = url;\n this.saveFavorites();\n }\n\n removeFavorite(name) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) return;\n delete this.favoriteEmotes[name];\n this.saveFavorites();\n }\n\n isFavorite(name) {\n return this.favoriteEmotes.hasOwnProperty(name);\n }\n\n saveFavorites() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setBDData(\"favoriteEmotes\", this.favoriteEmotes);\n }\n\n emptyEmotes() {\n for (const cat in Emotes) Object.assign(Emotes, {\n [cat]: {}\n });\n }\n\n patchMessageContent() {\n if (this.cancelEmoteRender) return;\n this.cancelEmoteRender = this.after(this.MessageContentComponent.prototype, \"render\", (thisObj, args, retVal) => {\n this.after(retVal.props, \"children\", (t, a, returnValue) => {\n if (this.categories.length == 0) return;\n const markup = returnValue.props.children[1];\n if (!markup.props.children) return;\n const nodes = markup.props.children[1];\n if (!nodes || !nodes.length) return;\n\n for (let n = 0; n < nodes.length; n++) {\n const node = nodes[n];\n if (typeof node !== \"string\") continue;\n const words = node.split(/([^\\s]+)([\\s]|$)/g);\n\n for (let c = 0, clen = this.categories.length; c < clen; c++) {\n for (let w = 0, wlen = words.length; w < wlen; w++) {\n const emote = words[w];\n const emoteSplit = emote.split(\":\");\n const emoteName = emoteSplit[0];\n let emoteModifier = emoteSplit[1] ? emoteSplit[1] : \"\";\n let emoteOverride = emoteModifier.slice(0);\n if (emoteName.length < 4 || blacklist.includes(emoteName)) continue;\n if (!modifiers.includes(emoteModifier) || !modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", \"general\", \"modifiers\")) emoteModifier = \"\";\n if (!overrides.includes(emoteOverride)) emoteOverride = \"\";else emoteModifier = emoteOverride;\n let current = this.categories[c];\n\n if (emoteOverride === \"twitch\") {\n if (Emotes.TwitchGlobal[emoteName]) current = \"TwitchGlobal\";else if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"subscriber\") {\n if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"bttv\") {\n if (Emotes.BTTV[emoteName]) current = \"BTTV\";\n } else if (emoteOverride === \"ffz\") {\n if (Emotes.FrankerFaceZ[emoteName]) current = \"FrankerFaceZ\";\n }\n\n if (!Emotes[current][emoteName]) continue;\n const results = nodes[n].match(new RegExp(`([\\\\s]|^)${modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].escape(emoteModifier ? emoteName + \":\" + emoteModifier : emoteName)}([\\\\s]|$)`));\n if (!results) continue;\n const pre = nodes[n].substring(0, results.index + results[1].length);\n const post = nodes[n].substring(results.index + results[0].length - results[2].length);\n nodes[n] = pre;\n const emoteComponent = modules__WEBPACK_IMPORTED_MODULE_2__[\"DiscordModules\"].React.createElement(_ui_emote__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n name: emoteName,\n url: EmoteURLs[current].format({\n id: Emotes[current][emoteName]\n }),\n modifier: emoteModifier,\n isFavorite: this.isFavorite(emoteName)\n });\n nodes.splice(n + 1, 0, post);\n nodes.splice(n + 1, 0, emoteComponent);\n }\n }\n }\n\n const onlyEmotes = nodes.every(r => {\n if (typeof r == \"string\" && r.replace(/\\s*/, \"\") == \"\") return true;else if (r.type && r.type.name == \"BDEmote\") return true;else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true;\n return false;\n });\n if (!onlyEmotes) return;\n\n for (const node of nodes) {\n if (typeof node != \"object\") continue;\n if (node.type.name == \"BDEmote\") node.props.jumboable = true;else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true;\n }\n });\n });\n }\n\n async getBlacklist() {\n try {\n const category = \"Blacklist\";\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n const list = useCache ? modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category) : await this.downloadEmotes(category);\n blacklist.push(...list);\n } catch (err) {// TODO: Log this\n }\n }\n\n isCacheValid(category) {\n return new Promise(resolve => {\n const etag = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getCacheHash(\"emotes\", category);\n if (!etag) return resolve(false);\n request.head({\n url: this.getRemoteFile(category),\n headers: {\n \"If-None-Match\": etag\n }\n }, (err, resp) => {\n resolve(resp.statusCode == 304);\n });\n });\n }\n\n async loadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loading, {\n type: \"info\"\n });\n this.emotesLoaded = false;\n\n for (const category of categories) {\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n let data = null;\n\n if (useCache) {\n this.log(`Loading ${category} emotes from local cache.`);\n const cachedData = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category);\n const hasData = Object.keys(cachedData).length > 0;\n if (hasData) data = cachedData;\n }\n\n if (!data) data = await this.downloadEmotes(category);\n Object.assign(Emotes[category], data);\n await new Promise(r => setTimeout(r, 1000));\n }\n\n this.emotesLoaded = true;\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].dispatch(\"emotes-loaded\");\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loaded, {\n type: \"success\"\n });\n }\n\n unloadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n\n for (const category of categories) {\n delete Emotes[category];\n Emotes[category] = {};\n }\n }\n\n downloadEmotes(category) {\n const url = this.getRemoteFile(category);\n this.log(`Downloading ${category} from ${url}`);\n const options = {\n url: url,\n timeout: 10000,\n json: true\n };\n return new Promise(resolve => {\n request.get(options, (error, response, parsedData) => {\n if (error || response.statusCode != 200) {\n this.stacktrace(`Could not download ${category} emotes.`, error);\n return resolve({});\n }\n\n for (const emote in parsedData) {\n if (emote.length < 4 || blacklist.includes(emote) || !parsedData[emote]) {\n delete parsedData[emote];\n continue;\n } // parsedData[emote] = EmoteURLs[category].format({id: parsedData[emote]});\n\n }\n\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].saveEmoteData(category, parsedData);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setCacheHash(\"emotes\", category, response.headers.etag);\n resolve(parsedData);\n this.log(`Downloaded ${category}`);\n });\n });\n }\n\n resetEmotes() {\n const categories = Object.keys(Emotes);\n this.unloadEmoteData(categories);\n\n for (const cat of categories) modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].invalidateCache(\"emotes\", cat);\n\n this.loadEmoteData();\n }\n\n}()); // (async () => {\n// const emoteData = await new Promise(resolve => {\n// const req = require(\"request\");\n// req.get({url: \"https://twitchemotes.com/api_cache/v3/global.json\", json: true}, (err, resp, parsedData) => {\n// for (const emote in parsedData) {\n// if (emote.length < 4 || window.bemotes.includes(emote)) {\n// delete parsedData[emote];\n// continue;\n// }\n// parsedData[emote] = parsedData[emote].id;\n// }\n// resolve(parsedData);\n// });\n// });\n// const fs = require(\"fs\");\n// fs.writeFileSync(\"Z:\\\\Programming\\\\BetterDiscordStuff\\\\BetterDiscordApp\\\\data\\\\emotes\\\\global.json\", JSON.stringify(emoteData));\n// return emoteData;\n// })();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZXMuanM/YzRjYyJdLCJuYW1lcyI6WyJyZXF1ZXN0IiwicmVxdWlyZSIsIkVtb3RlVVJMcyIsIlR3aXRjaEdsb2JhbCIsIkZvcm1hdHRhYmxlU3RyaW5nIiwiVHdpdGNoU3Vic2NyaWJlciIsIkZyYW5rZXJGYWNlWiIsIkJUVFYiLCJFbW90ZXMiLCJibGFja2xpc3QiLCJvdmVycmlkZXMiLCJtb2RpZmllcnMiLCJFbW90ZU1vZHVsZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJjYXRlZ29yaWVzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImsiLCJpc0NhdGVnb3J5RW5hYmxlZCIsInNob3VsZERvd25sb2FkIiwiU2V0dGluZ3MiLCJnZXQiLCJ0b0xvd2VyQ2FzZSIsIk1lc3NhZ2VDb250ZW50Q29tcG9uZW50IiwiV2VicGFja01vZHVsZXMiLCJnZXRNb2R1bGUiLCJtIiwiZGVmYXVsdFByb3BzIiwiaGFzT3duUHJvcGVydHkiLCJmYXZvcml0ZXMiLCJmYXZvcml0ZUVtb3RlcyIsImdldFVybCIsImZvcm1hdCIsImdldENhdGVnb3J5IiwiZ2V0UmVtb3RlRmlsZSIsIlV0aWxpdGllcyIsInJlcG9VcmwiLCJpbml0aWFsaXplIiwic3RvcmVkRmF2b3JpdGVzIiwiRGF0YVN0b3JlIiwiZ2V0QkREYXRhIiwiYWRkRmF2b3JpdGUiLCJiaW5kIiwicmVtb3ZlRmF2b3JpdGUiLCJvbkNhdGVnb3J5VG9nZ2xlIiwicmVzZXRFbW90ZXMiLCJlbmFibGVkIiwicmVnaXN0ZXJDb2xsZWN0aW9uIiwiRW1vdGVDb25maWciLCJ0aXRsZSIsIlN0cmluZ3MiLCJjbGVhckVtb3RlcyIsIm9uQ2xpY2siLCJnZXRCbGFja2xpc3QiLCJsb2FkRW1vdGVEYXRhIiwiRXZlbnRzIiwib24iLCJkaXNhYmxlZCIsIm9mZiIsInJlbW92ZUNvbGxlY3Rpb24iLCJlbXB0eUVtb3RlcyIsImNhbmNlbEVtb3RlUmVuZGVyIiwiY2F0IiwidW5sb2FkRW1vdGVEYXRhIiwidXJsIiwic2F2ZUZhdm9yaXRlcyIsImlzRmF2b3JpdGUiLCJzZXRCRERhdGEiLCJhc3NpZ24iLCJwYXRjaE1lc3NhZ2VDb250ZW50IiwiYWZ0ZXIiLCJwcm90b3R5cGUiLCJ0aGlzT2JqIiwiYXJncyIsInJldFZhbCIsInByb3BzIiwidCIsImEiLCJyZXR1cm5WYWx1ZSIsImxlbmd0aCIsIm1hcmt1cCIsImNoaWxkcmVuIiwibm9kZXMiLCJuIiwibm9kZSIsIndvcmRzIiwic3BsaXQiLCJjIiwiY2xlbiIsInciLCJ3bGVuIiwiZW1vdGUiLCJlbW90ZVNwbGl0IiwiZW1vdGVOYW1lIiwiZW1vdGVNb2RpZmllciIsImVtb3RlT3ZlcnJpZGUiLCJzbGljZSIsImluY2x1ZGVzIiwiY3VycmVudCIsInJlc3VsdHMiLCJtYXRjaCIsIlJlZ0V4cCIsImVzY2FwZSIsInByZSIsInN1YnN0cmluZyIsImluZGV4IiwicG9zdCIsImVtb3RlQ29tcG9uZW50IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJCREVtb3RlIiwibW9kaWZpZXIiLCJzcGxpY2UiLCJvbmx5RW1vdGVzIiwiZXZlcnkiLCJyIiwicmVwbGFjZSIsInR5cGUiLCJlbW9qaU5hbWUiLCJqdW1ib2FibGUiLCJleGlzdHMiLCJlbW90ZXNFeGlzdCIsInZhbGlkIiwiaXNDYWNoZVZhbGlkIiwidXNlQ2FjaGUiLCJsaXN0IiwiZ2V0RW1vdGVEYXRhIiwiZG93bmxvYWRFbW90ZXMiLCJwdXNoIiwiZXJyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJldGFnIiwiZ2V0Q2FjaGVIYXNoIiwiaGVhZCIsImhlYWRlcnMiLCJyZXNwIiwic3RhdHVzQ29kZSIsIkFycmF5IiwiaXNBcnJheSIsImFsbCIsIm1hcCIsImZpbmQiLCJUb2FzdHMiLCJzaG93IiwibG9hZGluZyIsImVtb3Rlc0xvYWRlZCIsImRhdGEiLCJsb2ciLCJjYWNoZWREYXRhIiwiaGFzRGF0YSIsInNldFRpbWVvdXQiLCJkaXNwYXRjaCIsImxvYWRlZCIsIm9wdGlvbnMiLCJ0aW1lb3V0IiwianNvbiIsImVycm9yIiwicmVzcG9uc2UiLCJwYXJzZWREYXRhIiwic3RhY2t0cmFjZSIsInNhdmVFbW90ZURhdGEiLCJzZXRDYWNoZUhhc2giLCJpbnZhbGlkYXRlQ2FjaGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE1BQU1BLE9BQU8sR0FBR0MsbUJBQU8sQ0FBQyx3QkFBRCxDQUF2Qjs7QUFFQSxNQUFNQyxTQUFTLEdBQUc7QUFDZEMsY0FBWSxFQUFFLElBQUlDLHVEQUFKLENBQXVCLHNEQUF2QixDQURBO0FBRWRDLGtCQUFnQixFQUFFLElBQUlELHVEQUFKLENBQXVCLHNEQUF2QixDQUZKO0FBR2RFLGNBQVksRUFBRSxJQUFJRix1REFBSixDQUF1QixnREFBdkIsQ0FIQTtBQUlkRyxNQUFJLEVBQUUsSUFBSUgsdURBQUosQ0FBdUIsMkNBQXZCO0FBSlEsQ0FBbEI7QUFPQSxNQUFNSSxNQUFNLEdBQUc7QUFDWEwsY0FBWSxFQUFFLEVBREg7QUFFWEUsa0JBQWdCLEVBQUUsRUFGUDtBQUdYRSxNQUFJLEVBQUUsRUFISztBQUlYRCxjQUFZLEVBQUU7QUFKSCxDQUFmO0FBT0EsTUFBTUcsU0FBUyxHQUFHLEVBQWxCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBeUIsTUFBekIsRUFBaUMsS0FBakMsQ0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixPQUFqQixFQUEwQixPQUExQixFQUFtQyxPQUFuQyxFQUE0QyxPQUE1QyxFQUFxRCxPQUFyRCxFQUE4RCxPQUE5RCxFQUF1RSxJQUF2RSxFQUE2RSxJQUE3RSxFQUFtRixJQUFuRixFQUF5RixPQUF6RixFQUFrRyxRQUFsRyxFQUE0RyxRQUE1RyxF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QUFZWixNQUFaLENBQW5CO0FBQ0EsU0FBSzRELGVBQUwsQ0FBcUJsRCxVQUFyQjs7QUFDQSxTQUFLLE1BQU1pRCxHQUFYLElBQWtCakQsVUFBbEIsRUFBOEIwQixpREFBUyxDQUFDNkgsZUFBVixDQUEwQixRQUExQixFQUFvQ3RHLEdBQXBDOztBQUM5QixTQUFLUixhQUFMO0FBQ0g7O0FBM1BnRCxDQUF0QyxFQUFmLEUsQ0ErUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcblxyXG5pbXBvcnQge0Vtb3RlQ29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgV2VicGFja01vZHVsZXMsIERhdGFTdG9yZSwgRGlzY29yZE1vZHVsZXMsIEV2ZW50cywgU2V0dGluZ3MsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBCREVtb3RlIGZyb20gXCIuLi8uLi91aS9lbW90ZVwiO1xyXG5pbXBvcnQgVG9hc3RzIGZyb20gXCIuLi8uLi91aS90b2FzdHNcIjtcclxuaW1wb3J0IEZvcm1hdHRhYmxlU3RyaW5nIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3N0cmluZ1wiO1xyXG5jb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG5jb25zdCBFbW90ZVVSTHMgPSB7XHJcbiAgICBUd2l0Y2hHbG9iYWw6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9zdGF0aWMtY2RuLmp0dm53Lm5ldC9lbW90aWNvbnMvdjEve3tpZH19LzEuMGApLFxyXG4gICAgVHdpdGNoU3Vic2NyaWJlcjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL3N0YXRpYy1jZG4uanR2bncubmV0L2Vtb3RpY29ucy92MS97e2lkfX0vMS4wYCksXHJcbiAgICBGcmFua2VyRmFjZVo6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9jZG4uZnJhbmtlcmZhY2V6LmNvbS9lbW90aWNvbi97e2lkfX0vMWApLFxyXG4gICAgQlRUVjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL2Nkbi5iZXR0ZXJ0dHYubmV0L2Vtb3RlL3t7aWR9fS8xeGApLFxyXG59O1xyXG5cclxuY29uc3QgRW1vdGVzID0ge1xyXG4gICAgVHdpdGNoR2xvYmFsOiB7fSxcclxuICAgIFR3aXRjaFN1YnNjcmliZXI6IHt9LFxyXG4gICAgQlRUVjoge30sXHJcbiAgICBGcmFua2VyRmFjZVo6IHt9XHJcbn07XHJcblxyXG5jb25zdCBibGFja2xpc3QgPSBbXTtcclxuY29uc3Qgb3ZlcnJpZGVzID0gW1widHdpdGNoXCIsIFwic3Vic2NyaWJlclwiLCBcImJ0dHZcIiwgXCJmZnpcIl07XHJcbmNvbnN0IG1vZGlmaWVycyA9IFtcImZsaXBcIiwgXCJzcGluXCIsIFwicHVsc2VcIiwgXCJzcGluMlwiLCBcInNwaW4zXCIsIFwiMXNwaW5cIiwgXCIyc3BpblwiLCBcIjNzcGluXCIsIFwidHJcIiwgXCJibFwiLCBcImJyXCIsIFwic2hha2VcIiwgXCJzaGFrZTJcIiwgXCJzaGFrZTNcIiwgXCJmbGFwXCJdO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEVtb3RlTW9kdWxlIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZXNcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJzZXR0aW5nc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImVtb3Rlc1wiO31cclxuICAgIGdldCBjYXRlZ29yaWVzKCkge3JldHVybiBPYmplY3Qua2V5cyhFbW90ZXMpLmZpbHRlcihrID0+IHRoaXMuaXNDYXRlZ29yeUVuYWJsZWQoaykpO31cclxuICAgIGdldCBzaG91bGREb3dubG9hZCgpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwiZW1vdGVzXCIsIHRoaXMuY2F0ZWdvcnksIFwiZG93bmxvYWRcIik7fVxyXG5cclxuICAgIGlzQ2F0ZWdvcnlFbmFibGVkKGlkKSB7cmV0dXJuIHN1cGVyLmdldChcImVtb3Rlc1wiLCBcImNhdGVnb3JpZXNcIiwgaWQudG9Mb3dlckNhc2UoKSk7fVxyXG5cclxuICAgIGdldChpZCkge3JldHVybiBzdXBlci5nZXQoXCJlbW90ZXNcIiwgXCJnZW5lcmFsXCIsIGlkKTt9XHJcblxyXG4gICAgZ2V0IE1lc3NhZ2VDb250ZW50Q29tcG9uZW50KCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUobSA9PiBtLmRlZmF1bHRQcm9wcyAmJiBtLmRlZmF1bHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShcImRpc2FibGVCdXR0b25zXCIpKTt9XHJcblxyXG4gICAgZ2V0IEVtb3RlcygpIHtyZXR1cm4gRW1vdGVzO31cclxuICAgIGdldCBUd2l0Y2hHbG9iYWwoKSB7cmV0dXJuIEVtb3Rlcy5Ud2l0Y2hHbG9iYWw7fVxyXG4gICAgZ2V0IFR3aXRjaFN1YnNjcmliZXIoKSB7cmV0dXJuIEVtb3Rlcy5Ud2l0Y2hTdWJzY3JpYmVyO31cclxuICAgIGdldCBCVFRWKCkge3JldHVybiBFbW90ZXMuQlRUVjt9XHJcbiAgICBnZXQgRnJhbmtlckZhY2VaKCkge3JldHVybiBFbW90ZXMuRnJhbmtlckZhY2VaO31cclxuICAgIGdldCBibGFja2xpc3QoKSB7cmV0dXJuIGJsYWNrbGlzdDt9XHJcbiAgICBnZXQgZmF2b3JpdGVzKCkge3JldHVybiB0aGlzLmZhdm9yaXRlRW1vdGVzO31cclxuICAgIGdldFVybChjYXRlZ29yeSwgbmFtZSkge3JldHVybiBFbW90ZVVSTHNbY2F0ZWdvcnldLmZvcm1hdCh7aWQ6IEVtb3Rlc1tjYXRlZ29yeV1bbmFtZV19KTt9XHJcblxyXG4gICAgZ2V0Q2F0ZWdvcnkoY2F0ZWdvcnkpIHtyZXR1cm4gRW1vdGVzW2NhdGVnb3J5XTt9XHJcbiAgICBnZXRSZW1vdGVGaWxlKGNhdGVnb3J5KSB7cmV0dXJuIFV0aWxpdGllcy5yZXBvVXJsKGBkYXRhL2Vtb3Rlcy8ke2NhdGVnb3J5LnRvTG93ZXJDYXNlKCl9Lmpzb25gKTt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVkRmF2b3JpdGVzID0gRGF0YVN0b3JlLmdldEJERGF0YShcImZhdm9yaXRlRW1vdGVzXCIpO1xyXG4gICAgICAgIHRoaXMuZmF2b3JpdGVFbW90ZXMgPSBzdG9yZWRGYXZvcml0ZXMgfHwge307XHJcbiAgICAgICAgdGhpcy5hZGRGYXZvcml0ZSA9IHRoaXMuYWRkRmF2b3JpdGUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbW92ZUZhdm9yaXRlID0gdGhpcy5yZW1vdmVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25DYXRlZ29yeVRvZ2dsZSA9IHRoaXMub25DYXRlZ29yeVRvZ2dsZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMucmVzZXRFbW90ZXMgPSB0aGlzLnJlc2V0RW1vdGVzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlckNvbGxlY3Rpb24oXCJlbW90ZXNcIiwgXCJFbW90ZXNcIiwgRW1vdGVDb25maWcsIHt0aXRsZTogU3RyaW5ncy5FbW90ZXMuY2xlYXJFbW90ZXMsIG9uQ2xpY2s6IHRoaXMucmVzZXRFbW90ZXN9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldEJsYWNrbGlzdCgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZEVtb3RlRGF0YSgpO1xyXG5cclxuICAgICAgICBFdmVudHMub24oXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5yZW1vdmVGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwic2V0dGluZy11cGRhdGVkXCIsIHRoaXMub25DYXRlZ29yeVRvZ2dsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcInNldHRpbmctdXBkYXRlZFwiLCB0aGlzLm9uQ2F0ZWdvcnlUb2dnbGUpO1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcImVtb3Rlcy1mYXZvcml0ZS1yZW1vdmVkXCIsIHRoaXMucmVtb3ZlRmF2b3JpdGUpO1xyXG4gICAgICAgIFNldHRpbmdzLnJlbW92ZUNvbGxlY3Rpb24oXCJlbW90ZXNcIik7XHJcbiAgICAgICAgdGhpcy5lbXB0eUVtb3RlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxFbW90ZVJlbmRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy5jYW5jZWxFbW90ZVJlbmRlcjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhdGVnb3J5VG9nZ2xlKGNvbGxlY3Rpb24sIGNhdCwgY2F0ZWdvcnksIGVuYWJsZWQpIHtcclxuICAgICAgICBpZiAoY29sbGVjdGlvbiAhPSBcImVtb3Rlc1wiIHx8IGNhdCAhPSBcImNhdGVnb3JpZXNcIikgcmV0dXJuO1xyXG4gICAgICAgIGlmIChlbmFibGVkKSByZXR1cm4gdGhpcy5sb2FkRW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy51bmxvYWRFbW90ZURhdGEoY2F0ZWdvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZhdm9yaXRlKG5hbWUsIHVybCkge1xyXG4gICAgICAgIGlmICghdGhpcy5mYXZvcml0ZUVtb3Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgdGhpcy5mYXZvcml0ZUVtb3Rlc1tuYW1lXSA9IHVybDtcclxuICAgICAgICB0aGlzLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZhdm9yaXRlRW1vdGVzLmhhc093blByb3BlcnR5KG5hbWUpKSByZXR1cm47XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZmF2b3JpdGVFbW90ZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5zYXZlRmF2b3JpdGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmF2b3JpdGVFbW90ZXMuaGFzT3duUHJvcGVydHkobmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUZhdm9yaXRlcygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0QkREYXRhKFwiZmF2b3JpdGVFbW90ZXNcIiwgdGhpcy5mYXZvcml0ZUVtb3Rlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW1wdHlFbW90ZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjYXQgaW4gRW1vdGVzKSBPYmplY3QuYXNzaWduKEVtb3Rlcywge1tjYXRdOiB7fX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVzc2FnZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhbmNlbEVtb3RlUmVuZGVyID0gdGhpcy5hZnRlcih0aGlzLk1lc3NhZ2VDb250ZW50Q29tcG9uZW50LnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKHRoaXNPYmosIGFyZ3MsIHJldFZhbCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFmdGVyKHJldFZhbC5wcm9wcywgXCJjaGlsZHJlblwiLCAodCwgYSwgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhdGVnb3JpZXMubGVuZ3RoID09IDApIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1hcmt1cCA9IHJldHVyblZhbHVlLnByb3BzLmNoaWxkcmVuWzFdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFtYXJrdXAucHJvcHMuY2hpbGRyZW4pIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gbWFya3VwLnByb3BzLmNoaWxkcmVuWzFdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFub2RlcyB8fCAhbm9kZXMubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW25dO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT09IFwic3RyaW5nXCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gbm9kZS5zcGxpdCgvKFteXFxzXSspKFtcXHNdfCQpL2cpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGMgPSAwLCBjbGVuID0gdGhpcy5jYXRlZ29yaWVzLmxlbmd0aDsgYyA8IGNsZW47IGMrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB3ID0gMCwgd2xlbiA9IHdvcmRzLmxlbmd0aDsgdyA8IHdsZW47IHcrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW1vdGUgPSB3b3Jkc1t3XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVtb3RlU3BsaXQgPSBlbW90ZS5zcGxpdChcIjpcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZU5hbWUgPSBlbW90ZVNwbGl0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVtb3RlTW9kaWZpZXIgPSBlbW90ZVNwbGl0WzFdID8gZW1vdGVTcGxpdFsxXSA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW1vdGVPdmVycmlkZSA9IGVtb3RlTW9kaWZpZXIuc2xpY2UoMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlTmFtZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZU5hbWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW9kaWZpZXJzLmluY2x1ZGVzKGVtb3RlTW9kaWZpZXIpIHx8ICFTZXR0aW5ncy5nZXQoXCJlbW90ZXNcIiwgXCJnZW5lcmFsXCIsIFwibW9kaWZpZXJzXCIpKSBlbW90ZU1vZGlmaWVyID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3ZlcnJpZGVzLmluY2x1ZGVzKGVtb3RlT3ZlcnJpZGUpKSBlbW90ZU92ZXJyaWRlID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZW1vdGVNb2RpZmllciA9IGVtb3RlT3ZlcnJpZGU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSB0aGlzLmNhdGVnb3JpZXNbY107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1vdGVPdmVycmlkZSA9PT0gXCJ0d2l0Y2hcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuVHdpdGNoR2xvYmFsW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaEdsb2JhbFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEVtb3Rlcy5Ud2l0Y2hTdWJzY3JpYmVyW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaFN1YnNjcmliZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwic3Vic2NyaWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEVtb3Rlcy5Ud2l0Y2hTdWJzY3JpYmVyW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaFN1YnNjcmliZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiYnR0dlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEVtb3Rlcy5CVFRWW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIkJUVFZcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiZmZ6XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLkZyYW5rZXJGYWNlWltlbW90ZU5hbWVdKSBjdXJyZW50ID0gXCJGcmFua2VyRmFjZVpcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUVtb3Rlc1tjdXJyZW50XVtlbW90ZU5hbWVdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBub2Rlc1tuXS5tYXRjaChuZXcgUmVnRXhwKGAoW1xcXFxzXXxeKSR7VXRpbGl0aWVzLmVzY2FwZShlbW90ZU1vZGlmaWVyID8gZW1vdGVOYW1lICsgXCI6XCIgKyBlbW90ZU1vZGlmaWVyIDogZW1vdGVOYW1lKX0oW1xcXFxzXXwkKWApKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0cykgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmUgPSBub2Rlc1tuXS5zdWJzdHJpbmcoMCwgcmVzdWx0cy5pbmRleCArIHJlc3VsdHNbMV0ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc3QgPSBub2Rlc1tuXS5zdWJzdHJpbmcocmVzdWx0cy5pbmRleCArIHJlc3VsdHNbMF0ubGVuZ3RoIC0gcmVzdWx0c1syXS5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNbbl0gPSBwcmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZUNvbXBvbmVudCA9IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoQkRFbW90ZSwge25hbWU6IGVtb3RlTmFtZSwgdXJsOiBFbW90ZVVSTHNbY3VycmVudF0uZm9ybWF0KHtpZDogRW1vdGVzW2N1cnJlbnRdW2Vtb3RlTmFtZV19KSwgbW9kaWZpZXI6IGVtb3RlTW9kaWZpZXIsIGlzRmF2b3JpdGU6IHRoaXMuaXNGYXZvcml0ZShlbW90ZU5hbWUpfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5zcGxpY2UobiArIDEsIDAsIHBvc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMuc3BsaWNlKG4gKyAxLCAwLCBlbW90ZUNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvbmx5RW1vdGVzID0gbm9kZXMuZXZlcnkociA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihyKSA9PSBcInN0cmluZ1wiICYmIHIucmVwbGFjZSgvXFxzKi8sIFwiXCIpID09IFwiXCIpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIudHlwZSAmJiByLnR5cGUubmFtZSA9PSBcIkJERW1vdGVcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoci5wcm9wcyAmJiByLnByb3BzLmNoaWxkcmVuICYmIHIucHJvcHMuY2hpbGRyZW4ucHJvcHMgJiYgci5wcm9wcy5jaGlsZHJlbi5wcm9wcy5lbW9qaU5hbWUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFvbmx5RW1vdGVzKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihub2RlKSAhPSBcIm9iamVjdFwiKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIG5vZGUucHJvcHMuanVtYm9hYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLnByb3BzICYmIG5vZGUucHJvcHMuY2hpbGRyZW4gJiYgbm9kZS5wcm9wcy5jaGlsZHJlbi5wcm9wcyAmJiBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzLmVtb2ppTmFtZSkgbm9kZS5wcm9wcy5jaGlsZHJlbi5wcm9wcy5qdW1ib2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRCbGFja2xpc3QoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSBcIkJsYWNrbGlzdFwiO1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdHMgPSBEYXRhU3RvcmUuZW1vdGVzRXhpc3QoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHRoaXMuaXNDYWNoZVZhbGlkKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdXNlQ2FjaGUgPSAodmFsaWQpIHx8ICghdmFsaWQgJiYgZXhpc3RzICYmICF0aGlzLnNob3VsZERvd25sb2FkKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IHVzZUNhY2hlID8gRGF0YVN0b3JlLmdldEVtb3RlRGF0YShjYXRlZ29yeSkgOiBhd2FpdCB0aGlzLmRvd25sb2FkRW1vdGVzKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgYmxhY2tsaXN0LnB1c2goLi4ubGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogTG9nIHRoaXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNDYWNoZVZhbGlkKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBldGFnID0gRGF0YVN0b3JlLmdldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGlmICghZXRhZykgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmhlYWQoe3VybDogdGhpcy5nZXRSZW1vdGVGaWxlKGNhdGVnb3J5KSwgaGVhZGVyczoge1wiSWYtTm9uZS1NYXRjaFwiOiBldGFnfX0sIChlcnIsIHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcC5zdGF0dXNDb2RlID09IDMwNCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkVtb3Rlcy5sb2FkaW5nLCB7dHlwZTogXCJpbmZvXCJ9KTtcclxuICAgICAgICB0aGlzLmVtb3Rlc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gRGF0YVN0b3JlLmVtb3Rlc0V4aXN0KGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCB0aGlzLmlzQ2FjaGVWYWxpZChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZUNhY2hlID0gKHZhbGlkKSB8fCAoIXZhbGlkICYmIGV4aXN0cyAmJiAhdGhpcy5zaG91bGREb3dubG9hZCk7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKHVzZUNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgTG9hZGluZyAke2NhdGVnb3J5fSBlbW90ZXMgZnJvbSBsb2NhbCBjYWNoZS5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZERhdGEgPSBEYXRhU3RvcmUuZ2V0RW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0RhdGEgPSBPYmplY3Qua2V5cyhjYWNoZWREYXRhKS5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0RhdGEpIGRhdGEgPSBjYWNoZWREYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghZGF0YSkgZGF0YSA9IGF3YWl0IHRoaXMuZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKEVtb3Rlc1tjYXRlZ29yeV0sIGRhdGEpO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTAwMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbW90ZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIEV2ZW50cy5kaXNwYXRjaChcImVtb3Rlcy1sb2FkZWRcIik7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5FbW90ZXMubG9hZGVkLCB7dHlwZTogXCJzdWNjZXNzXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bmxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgZGVsZXRlIEVtb3Rlc1tjYXRlZ29yeV07XHJcbiAgICAgICAgICAgIEVtb3Rlc1tjYXRlZ29yeV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFJlbW90ZUZpbGUoY2F0ZWdvcnkpO1xyXG4gICAgICAgIHRoaXMubG9nKGBEb3dubG9hZGluZyAke2NhdGVnb3J5fSBmcm9tICR7dXJsfWApO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7dXJsOiB1cmwsIHRpbWVvdXQ6IDEwMDAwLCBqc29uOiB0cnVlfTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlcXVlc3QuZ2V0KG9wdGlvbnMsIChlcnJvciwgcmVzcG9uc2UsIHBhcnNlZERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZShgQ291bGQgbm90IGRvd25sb2FkICR7Y2F0ZWdvcnl9IGVtb3Rlcy5gLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbW90ZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZSkgfHwgIXBhcnNlZERhdGFbZW1vdGVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2Vtb3RlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlZERhdGFbZW1vdGVdID0gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBwYXJzZWREYXRhW2Vtb3RlXX0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNhdmVFbW90ZURhdGEoY2F0ZWdvcnksIHBhcnNlZERhdGEpO1xyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSwgcmVzcG9uc2UuaGVhZGVycy5ldGFnKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocGFyc2VkRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgRG93bmxvYWRlZCAke2NhdGVnb3J5fWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEVtb3RlcygpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLnVubG9hZEVtb3RlRGF0YShjYXRlZ29yaWVzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSBEYXRhU3RvcmUuaW52YWxpZGF0ZUNhY2hlKFwiZW1vdGVzXCIsIGNhdCk7XHJcbiAgICAgICAgdGhpcy5sb2FkRW1vdGVEYXRhKCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5cclxuLy8gKGFzeW5jICgpID0+IHtcclxuLy8gICAgIGNvbnN0IGVtb3RlRGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4vLyAgICAgICAgIGNvbnN0IHJlcSA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpO1xyXG4vLyAgICAgICAgIHJlcS5nZXQoe3VybDogXCJodHRwczovL3R3aXRjaGVtb3Rlcy5jb20vYXBpX2NhY2hlL3YzL2dsb2JhbC5qc29uXCIsIGpzb246IHRydWV9LCAoZXJyLCByZXNwLCBwYXJzZWREYXRhKSA9PiB7XHJcbi8vICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4vLyAgICAgICAgICAgICAgICAgaWYgKGVtb3RlLmxlbmd0aCA8IDQgfHwgd2luZG93LmJlbW90ZXMuaW5jbHVkZXMoZW1vdGUpKSB7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZERhdGFbZW1vdGVdO1xyXG4vLyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4vLyAgICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICAgICAgcGFyc2VkRGF0YVtlbW90ZV0gPSBwYXJzZWREYXRhW2Vtb3RlXS5pZDtcclxuLy8gICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICByZXNvbHZlKHBhcnNlZERhdGEpO1xyXG4vLyAgICAgICAgIH0pO1xyXG4vLyAgICAgfSk7XHJcbi8vICAgICBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuLy8gICAgIGZzLndyaXRlRmlsZVN5bmMoXCJaOlxcXFxQcm9ncmFtbWluZ1xcXFxCZXR0ZXJEaXNjb3JkU3R1ZmZcXFxcQmV0dGVyRGlzY29yZEFwcFxcXFxkYXRhXFxcXGVtb3Rlc1xcXFxnbG9iYWwuanNvblwiLCBKU09OLnN0cmluZ2lmeShlbW90ZURhdGEpKTtcclxuLy8gICAgIHJldHVybiBlbW90ZURhdGE7XHJcbi8vIH0pKCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotes.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_emote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/emote */ \"./src/ui/emote.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../structs/string */ \"./src/structs/string.js\");\n\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst EmoteURLs = {\n TwitchGlobal: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n TwitchSubscriber: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n FrankerFaceZ: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.frankerfacez.com/emoticon/{{id}}/1`),\n BTTV: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.betterttv.net/emote/{{id}}/1x`)\n};\nconst Emotes = {\n TwitchGlobal: {},\n TwitchSubscriber: {},\n BTTV: {},\n FrankerFaceZ: {}\n};\nconst blacklist = [];\nconst overrides = [\"twitch\", \"subscriber\", \"bttv\", \"ffz\"];\nconst modifiers = [\"flip\", \"spin\", \"pulse\", \"spin2\", \"spin3\", \"1spin\", \"2spin\", \"3spin\", \"tr\", \"bl\", \"br\", \"shake\", \"shake2\", \"shake3\", \"flap\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteModule extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Emotes\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emotes\";\n }\n\n get categories() {\n return Object.keys(Emotes).filter(k => this.isCategoryEnabled(k));\n }\n\n get shouldDownload() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", this.category, \"download\");\n }\n\n isCategoryEnabled(id) {\n return super.get(\"emotes\", \"categories\", id.toLowerCase());\n }\n\n get(id) {\n return super.get(\"emotes\", \"general\", id);\n }\n\n get MessageComponent() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"WebpackModules\"].find(m => m.default && m.default.displayName && m.default.displayName == \"Message\");\n }\n\n get Emotes() {\n return Emotes;\n }\n\n get TwitchGlobal() {\n return Emotes.TwitchGlobal;\n }\n\n get TwitchSubscriber() {\n return Emotes.TwitchSubscriber;\n }\n\n get BTTV() {\n return Emotes.BTTV;\n }\n\n get FrankerFaceZ() {\n return Emotes.FrankerFaceZ;\n }\n\n get blacklist() {\n return blacklist;\n }\n\n get favorites() {\n return this.favoriteEmotes;\n }\n\n getUrl(category, name) {\n return EmoteURLs[category].format({\n id: Emotes[category][name]\n });\n }\n\n getCategory(category) {\n return Emotes[category];\n }\n\n getRemoteFile(category) {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].repoUrl(`data/emotes/${category.toLowerCase()}.json`);\n }\n\n initialize() {\n super.initialize();\n const storedFavorites = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getBDData(\"favoriteEmotes\");\n this.favoriteEmotes = storedFavorites || {};\n this.addFavorite = this.addFavorite.bind(this);\n this.removeFavorite = this.removeFavorite.bind(this);\n this.onCategoryToggle = this.onCategoryToggle.bind(this);\n this.resetEmotes = this.resetEmotes.bind(this);\n }\n\n async enabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].registerCollection(\"emotes\", \"Emotes\", data__WEBPACK_IMPORTED_MODULE_1__[\"EmoteConfig\"], {\n title: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.clearEmotes,\n onClick: this.resetEmotes\n });\n await this.getBlacklist();\n await this.loadEmoteData();\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"setting-updated\", this.onCategoryToggle);\n this.patchMessageContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"setting-updated\", this.onCategoryToggle);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].removeCollection(\"emotes\");\n this.emptyEmotes();\n if (!this.cancelEmoteRender) return;\n this.cancelEmoteRender();\n delete this.cancelEmoteRender;\n }\n\n onCategoryToggle(collection, cat, category, enabled) {\n if (collection != \"emotes\" || cat != \"categories\") return;\n if (enabled) return this.loadEmoteData(category);\n return this.unloadEmoteData(category);\n }\n\n addFavorite(name, url) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) this.favoriteEmotes[name] = url;\n this.saveFavorites();\n }\n\n removeFavorite(name) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) return;\n delete this.favoriteEmotes[name];\n this.saveFavorites();\n }\n\n isFavorite(name) {\n return this.favoriteEmotes.hasOwnProperty(name);\n }\n\n saveFavorites() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setBDData(\"favoriteEmotes\", this.favoriteEmotes);\n }\n\n emptyEmotes() {\n for (const cat in Emotes) Object.assign(Emotes, {\n [cat]: {}\n });\n }\n\n patchMessageContent() {\n if (this.cancelEmoteRender) return;\n this.cancelEmoteRender = this.before(this.MessageComponent, \"default\", (thisObj, args) => {\n const nodes = args[0].childrenMessageContent.props.content;\n if (!nodes || !nodes.length) return;\n\n for (let n = 0; n < nodes.length; n++) {\n const node = nodes[n];\n if (typeof node !== \"string\") continue;\n const words = node.split(/([^\\s]+)([\\s]|$)/g);\n\n for (let c = 0, clen = this.categories.length; c < clen; c++) {\n for (let w = 0, wlen = words.length; w < wlen; w++) {\n const emote = words[w];\n const emoteSplit = emote.split(\":\");\n const emoteName = emoteSplit[0];\n let emoteModifier = emoteSplit[1] ? emoteSplit[1] : \"\";\n let emoteOverride = emoteModifier.slice(0);\n if (emoteName.length < 4 || blacklist.includes(emoteName)) continue;\n if (!modifiers.includes(emoteModifier) || !modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", \"general\", \"modifiers\")) emoteModifier = \"\";\n if (!overrides.includes(emoteOverride)) emoteOverride = \"\";else emoteModifier = emoteOverride;\n let current = this.categories[c];\n\n if (emoteOverride === \"twitch\") {\n if (Emotes.TwitchGlobal[emoteName]) current = \"TwitchGlobal\";else if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"subscriber\") {\n if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"bttv\") {\n if (Emotes.BTTV[emoteName]) current = \"BTTV\";\n } else if (emoteOverride === \"ffz\") {\n if (Emotes.FrankerFaceZ[emoteName]) current = \"FrankerFaceZ\";\n }\n\n if (!Emotes[current][emoteName]) continue;\n const results = nodes[n].match(new RegExp(`([\\\\s]|^)${modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].escape(emoteModifier ? emoteName + \":\" + emoteModifier : emoteName)}([\\\\s]|$)`));\n if (!results) continue;\n const pre = nodes[n].substring(0, results.index + results[1].length);\n const post = nodes[n].substring(results.index + results[0].length - results[2].length);\n nodes[n] = pre;\n const emoteComponent = modules__WEBPACK_IMPORTED_MODULE_2__[\"DiscordModules\"].React.createElement(_ui_emote__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n name: emoteName,\n url: EmoteURLs[current].format({\n id: Emotes[current][emoteName]\n }),\n modifier: emoteModifier,\n isFavorite: this.isFavorite(emoteName)\n });\n nodes.splice(n + 1, 0, post);\n nodes.splice(n + 1, 0, emoteComponent);\n }\n }\n }\n\n const onlyEmotes = nodes.every(r => {\n if (typeof r == \"string\" && r.replace(/\\s*/, \"\") == \"\") return true;else if (r.type && r.type.name == \"BDEmote\") return true;else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true;\n return false;\n });\n if (!onlyEmotes) return;\n\n for (const node of nodes) {\n if (typeof node != \"object\") continue;\n if (node.type.name == \"BDEmote\") node.props.jumboable = true;else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true;\n }\n });\n }\n\n async getBlacklist() {\n try {\n const category = \"Blacklist\";\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n const list = useCache ? modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category) : await this.downloadEmotes(category);\n blacklist.push(...list);\n } catch (err) {// TODO: Log this\n }\n }\n\n isCacheValid(category) {\n return new Promise(resolve => {\n const etag = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getCacheHash(\"emotes\", category);\n if (!etag) return resolve(false);\n request.head({\n url: this.getRemoteFile(category),\n headers: {\n \"If-None-Match\": etag\n }\n }, (err, resp) => {\n resolve(resp.statusCode == 304);\n });\n });\n }\n\n async loadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loading, {\n type: \"info\"\n });\n this.emotesLoaded = false;\n\n for (const category of categories) {\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n let data = null;\n\n if (useCache) {\n this.log(`Loading ${category} emotes from local cache.`);\n const cachedData = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category);\n const hasData = Object.keys(cachedData).length > 0;\n if (hasData) data = cachedData;\n }\n\n if (!data) data = await this.downloadEmotes(category);\n Object.assign(Emotes[category], data);\n await new Promise(r => setTimeout(r, 1000));\n }\n\n this.emotesLoaded = true;\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].dispatch(\"emotes-loaded\");\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loaded, {\n type: \"success\"\n });\n }\n\n unloadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n\n for (const category of categories) {\n delete Emotes[category];\n Emotes[category] = {};\n }\n }\n\n downloadEmotes(category) {\n const url = this.getRemoteFile(category);\n this.log(`Downloading ${category} from ${url}`);\n const options = {\n url: url,\n timeout: 10000,\n json: true\n };\n return new Promise(resolve => {\n request.get(options, (error, response, parsedData) => {\n if (error || response.statusCode != 200) {\n this.stacktrace(`Could not download ${category} emotes.`, error);\n return resolve({});\n }\n\n for (const emote in parsedData) {\n if (emote.length < 4 || blacklist.includes(emote) || !parsedData[emote]) {\n delete parsedData[emote];\n continue;\n } // parsedData[emote] = EmoteURLs[category].format({id: parsedData[emote]});\n\n }\n\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].saveEmoteData(category, parsedData);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setCacheHash(\"emotes\", category, response.headers.etag);\n resolve(parsedData);\n this.log(`Downloaded ${category}`);\n });\n });\n }\n\n resetEmotes() {\n const categories = Object.keys(Emotes);\n this.unloadEmoteData(categories);\n\n for (const cat of categories) modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].invalidateCache(\"emotes\", cat);\n\n this.loadEmoteData();\n }\n\n}()); // (async () => {\n// const emoteData = await new Promise(resolve => {\n// const req = require(\"request\");\n// req.get({url: \"https://twitchemotes.com/api_cache/v3/global.json\", json: true}, (err, resp, parsedData) => {\n// for (const emote in parsedData) {\n// if (emote.length < 4 || window.bemotes.includes(emote)) {\n// delete parsedData[emote];\n// continue;\n// }\n// parsedData[emote] = parsedData[emote].id;\n// }\n// resolve(parsedData);\n// });\n// });\n// const fs = require(\"fs\");\n// fs.writeFileSync(\"Z:\\\\Programming\\\\BetterDiscordStuff\\\\BetterDiscordApp\\\\data\\\\emotes\\\\global.json\", JSON.stringify(emoteData));\n// return emoteData;\n// })();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZXMuanM/YzRjYyJdLCJuYW1lcyI6WyJyZXF1ZXN0IiwicmVxdWlyZSIsIkVtb3RlVVJMcyIsIlR3aXRjaEdsb2JhbCIsIkZvcm1hdHRhYmxlU3RyaW5nIiwiVHdpdGNoU3Vic2NyaWJlciIsIkZyYW5rZXJGYWNlWiIsIkJUVFYiLCJFbW90ZXMiLCJibGFja2xpc3QiLCJvdmVycmlkZXMiLCJtb2RpZmllcnMiLCJFbW90ZU1vZHVsZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJjYXRlZ29yaWVzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImsiLCJpc0NhdGVnb3J5RW5hYmxlZCIsInNob3VsZERvd25sb2FkIiwiU2V0dGluZ3MiLCJnZXQiLCJ0b0xvd2VyQ2FzZSIsIk1lc3NhZ2VDb21wb25lbnQiLCJXZWJwYWNrTW9kdWxlcyIsImZpbmQiLCJtIiwiZGVmYXVsdCIsImRpc3BsYXlOYW1lIiwiZmF2b3JpdGVzIiwiZmF2b3JpdGVFbW90ZXMiLCJnZXRVcmwiLCJmb3JtYXQiLCJnZXRDYXRlZ29yeSIsImdldFJlbW90ZUZpbGUiLCJVdGlsaXRpZXMiLCJyZXBvVXJsIiwiaW5pdGlhbGl6ZSIsInN0b3JlZEZhdm9yaXRlcyIsIkRhdGFTdG9yZSIsImdldEJERGF0YSIsImFkZEZhdm9yaXRlIiwiYmluZCIsInJlbW92ZUZhdm9yaXRlIiwib25DYXRlZ29yeVRvZ2dsZSIsInJlc2V0RW1vdGVzIiwiZW5hYmxlZCIsInJlZ2lzdGVyQ29sbGVjdGlvbiIsIkVtb3RlQ29uZmlnIiwidGl0bGUiLCJTdHJpbmdzIiwiY2xlYXJFbW90ZXMiLCJvbkNsaWNrIiwiZ2V0QmxhY2tsaXN0IiwibG9hZEVtb3RlRGF0YSIsIkV2ZW50cyIsIm9uIiwicGF0Y2hNZXNzYWdlQ29udGVudCIsImRpc2FibGVkIiwib2ZmIiwicmVtb3ZlQ29sbGVjdGlvbiIsImVtcHR5RW1vdGVzIiwiY2FuY2VsRW1vdGVSZW5kZXIiLCJjYXQiLCJ1bmxvYWRFbW90ZURhdGEiLCJ1cmwiLCJoYXNPd25Qcm9wZXJ0eSIsInNhdmVGYXZvcml0ZXMiLCJpc0Zhdm9yaXRlIiwic2V0QkREYXRhIiwiYXNzaWduIiwiYmVmb3JlIiwidGhpc09iaiIsImFyZ3MiLCJub2RlcyIsImNoaWxkcmVuTWVzc2FnZUNvbnRlbnQiLCJwcm9wcyIsImNvbnRlbnQiLCJsZW5ndGgiLCJuIiwibm9kZSIsIndvcmRzIiwic3BsaXQiLCJjIiwiY2xlbiIsInciLCJ3bGVuIiwiZW1vdGUiLCJlbW90ZVNwbGl0IiwiZW1vdGVOYW1lIiwiZW1vdGVNb2RpZmllciIsImVtb3RlT3ZlcnJpZGUiLCJzbGljZSIsImluY2x1ZGVzIiwiY3VycmVudCIsInJlc3VsdHMiLCJtYXRjaCIsIlJlZ0V4cCIsImVzY2FwZSIsInByZSIsInN1YnN0cmluZyIsImluZGV4IiwicG9zdCIsImVtb3RlQ29tcG9uZW50IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJCREVtb3RlIiwibW9kaWZpZXIiLCJzcGxpY2UiLCJvbmx5RW1vdGVzIiwiZXZlcnkiLCJyIiwicmVwbGFjZSIsInR5cGUiLCJjaGlsZHJlbiIsImVtb2ppTmFtZSIsImp1bWJvYWJsZSIsImV4aXN0cyIsImVtb3Rlc0V4aXN0IiwidmFsaWQiLCJpc0NhY2hlVmFsaWQiLCJ1c2VDYWNoZSIsImxpc3QiLCJnZXRFbW90ZURhdGEiLCJkb3dubG9hZEVtb3RlcyIsInB1c2giLCJlcnIiLCJQcm9taXNlIiwicmVzb2x2ZSIsImV0YWciLCJnZXRDYWNoZUhhc2giLCJoZWFkIiwiaGVhZGVycyIsInJlc3AiLCJzdGF0dXNDb2RlIiwiQXJyYXkiLCJpc0FycmF5IiwiYWxsIiwibWFwIiwiVG9hc3RzIiwic2hvdyIsImxvYWRpbmciLCJlbW90ZXNMb2FkZWQiLCJkYXRhIiwibG9nIiwiY2FjaGVkRGF0YSIsImhhc0RhdGEiLCJzZXRUaW1lb3V0IiwiZGlzcGF0Y2giLCJsb2FkZWQiLCJvcHRpb25zIiwidGltZW91dCIsImpzb24iLCJlcnJvciIsInJlc3BvbnNlIiwicGFyc2VkRGF0YSIsInN0YWNrdHJhY2UiLCJzYXZlRW1vdGVEYXRhIiwic2V0Q2FjaGVIYXNoIiwiaW52YWxpZGF0ZUNhY2hlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQSxPQUFPLEdBQUdDLG1CQUFPLENBQUMsd0JBQUQsQ0FBdkI7O0FBRUEsTUFBTUMsU0FBUyxHQUFHO0FBQ2RDLGNBQVksRUFBRSxJQUFJQyx1REFBSixDQUF1QixzREFBdkIsQ0FEQTtBQUVkQyxrQkFBZ0IsRUFBRSxJQUFJRCx1REFBSixDQUF1QixzREFBdkIsQ0FGSjtBQUdkRSxjQUFZLEVBQUUsSUFBSUYsdURBQUosQ0FBdUIsZ0RBQXZCLENBSEE7QUFJZEcsTUFBSSxFQUFFLElBQUlILHVEQUFKLENBQXVCLDJDQUF2QjtBQUpRLENBQWxCO0FBT0EsTUFBTUksTUFBTSxHQUFHO0FBQ1hMLGNBQVksRUFBRSxFQURIO0FBRVhFLGtCQUFnQixFQUFFLEVBRlA7QUFHWEUsTUFBSSxFQUFFLEVBSEs7QUFJWEQsY0FBWSxFQUFFO0FBSkgsQ0FBZjtBQU9BLE1BQU1HLFNBQVMsR0FBRyxFQUFsQjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxDQUFDLFFBQUQsRUFBVyxZQUFYLEVBQXlCLE1BQXpCLEVBQWlDLEtBQWpDLENBQWxCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLENBQUMsTUFBRCxFQUFTLE1BQVQsRUFBaUIsT0FBakIsRUFBMEIsT0FBMUIsRUFBbUMsT0FBbkMsRUFBNEMsT0FBNUMsRUFBcUQsT0FBckQsRUFBOEQsT0FBOUQsRUFBdUUsSUFBdkUsRUFBNkUsSUFBN0UsRUFBbUYsSUFBbkYsRUFBeUYsT0FBekYsRUFBa0csUUFBbEcsRUFBNEcsUUFBNUcsRUFBc0gsTUFBdEgsQ0FBbEI7QUFFZSxtRUFB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QUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3Rlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuXHJcbmltcG9ydCB7RW1vdGVDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCB7VXRpbGl0aWVzLCBXZWJwYWNrTW9kdWxlcywgRGF0YVN0b3JlLCBEaXNjb3JkTW9kdWxlcywgRXZlbnRzLCBTZXR0aW5ncywgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IEJERW1vdGUgZnJvbSBcIi4uLy4uL3VpL2Vtb3RlXCI7XHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uLy4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgRm9ybWF0dGFibGVTdHJpbmcgZnJvbSBcIi4uLy4uL3N0cnVjdHMvc3RyaW5nXCI7XHJcbmNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuXHJcbmNvbnN0IEVtb3RlVVJMcyA9IHtcclxuICAgIFR3aXRjaEdsb2JhbDogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL3N0YXRpYy1jZG4uanR2bncubmV0L2Vtb3RpY29ucy92MS97e2lkfX0vMS4wYCksXHJcbiAgICBUd2l0Y2hTdWJzY3JpYmVyOiBuZXcgRm9ybWF0dGFibGVTdHJpbmcoYGh0dHBzOi8vc3RhdGljLWNkbi5qdHZudy5uZXQvZW1vdGljb25zL3YxL3t7aWR9fS8xLjBgKSxcclxuICAgIEZyYW5rZXJGYWNlWjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL2Nkbi5mcmFua2VyZmFjZXouY29tL2Vtb3RpY29uL3t7aWR9fS8xYCksXHJcbiAgICBCVFRWOiBuZXcgRm9ybWF0dGFibGVTdHJpbmcoYGh0dHBzOi8vY2RuLmJldHRlcnR0di5uZXQvZW1vdGUve3tpZH19LzF4YCksXHJcbn07XHJcblxyXG5jb25zdCBFbW90ZXMgPSB7XHJcbiAgICBUd2l0Y2hHbG9iYWw6IHt9LFxyXG4gICAgVHdpdGNoU3Vic2NyaWJlcjoge30sXHJcbiAgICBCVFRWOiB7fSxcclxuICAgIEZyYW5rZXJGYWNlWjoge31cclxufTtcclxuXHJcbmNvbnN0IGJsYWNrbGlzdCA9IFtdO1xyXG5jb25zdCBvdmVycmlkZXMgPSBbXCJ0d2l0Y2hcIiwgXCJzdWJzY3JpYmVyXCIsIFwiYnR0dlwiLCBcImZmelwiXTtcclxuY29uc3QgbW9kaWZpZXJzID0gW1wiZmxpcFwiLCBcInNwaW5cIiwgXCJwdWxzZVwiLCBcInNwaW4yXCIsIFwic3BpbjNcIiwgXCIxc3BpblwiLCBcIjJzcGluXCIsIFwiM3NwaW5cIiwgXCJ0clwiLCBcImJsXCIsIFwiYnJcIiwgXCJzaGFrZVwiLCBcInNoYWtlMlwiLCBcInNoYWtlM1wiLCBcImZsYXBcIl07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRW1vdGVNb2R1bGUgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIkVtb3Rlc1wiO31cclxuICAgIGdldCBjb2xsZWN0aW9uKCkge3JldHVybiBcInNldHRpbmdzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiZW1vdGVzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3JpZXMoKSB7cmV0dXJuIE9iamVjdC5rZXlzKEVtb3RlcykuZmlsdGVyKGsgPT4gdGhpcy5pc0NhdGVnb3J5RW5hYmxlZChrKSk7fVxyXG4gICAgZ2V0IHNob3VsZERvd25sb2FkKCkge3JldHVybiBTZXR0aW5ncy5nZXQoXCJlbW90ZXNcIiwgdGhpcy5jYXRlZ29yeSwgXCJkb3dubG9hZFwiKTt9XHJcblxyXG4gICAgaXNDYXRlZ29yeUVuYWJsZWQoaWQpIHtyZXR1cm4gc3VwZXIuZ2V0KFwiZW1vdGVzXCIsIFwiY2F0ZWdvcmllc1wiLCBpZC50b0xvd2VyQ2FzZSgpKTt9XHJcblxyXG4gICAgZ2V0KGlkKSB7cmV0dXJuIHN1cGVyLmdldChcImVtb3Rlc1wiLCBcImdlbmVyYWxcIiwgaWQpO31cclxuXHJcbiAgICBnZXQgTWVzc2FnZUNvbXBvbmVudCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0uZGVmYXVsdCAmJiBtLmRlZmF1bHQuZGlzcGxheU5hbWUgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lID09IFwiTWVzc2FnZVwiKTt9XHJcblxyXG4gICAgZ2V0IEVtb3RlcygpIHtyZXR1cm4gRW1vdGVzO31cclxuICAgIGdldCBUd2l0Y2hHbG9iYWwoKSB7cmV0dXJuIEVtb3Rlcy5Ud2l0Y2hHbG9iYWw7fVxyXG4gICAgZ2V0IFR3aXRjaFN1YnNjcmliZXIoKSB7cmV0dXJuIEVtb3Rlcy5Ud2l0Y2hTdWJzY3JpYmVyO31cclxuICAgIGdldCBCVFRWKCkge3JldHVybiBFbW90ZXMuQlRUVjt9XHJcbiAgICBnZXQgRnJhbmtlckZhY2VaKCkge3JldHVybiBFbW90ZXMuRnJhbmtlckZhY2VaO31cclxuICAgIGdldCBibGFja2xpc3QoKSB7cmV0dXJuIGJsYWNrbGlzdDt9XHJcbiAgICBnZXQgZmF2b3JpdGVzKCkge3JldHVybiB0aGlzLmZhdm9yaXRlRW1vdGVzO31cclxuICAgIGdldFVybChjYXRlZ29yeSwgbmFtZSkge3JldHVybiBFbW90ZVVSTHNbY2F0ZWdvcnldLmZvcm1hdCh7aWQ6IEVtb3Rlc1tjYXRlZ29yeV1bbmFtZV19KTt9XHJcblxyXG4gICAgZ2V0Q2F0ZWdvcnkoY2F0ZWdvcnkpIHtyZXR1cm4gRW1vdGVzW2NhdGVnb3J5XTt9XHJcbiAgICBnZXRSZW1vdGVGaWxlKGNhdGVnb3J5KSB7cmV0dXJuIFV0aWxpdGllcy5yZXBvVXJsKGBkYXRhL2Vtb3Rlcy8ke2NhdGVnb3J5LnRvTG93ZXJDYXNlKCl9Lmpzb25gKTt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVkRmF2b3JpdGVzID0gRGF0YVN0b3JlLmdldEJERGF0YShcImZhdm9yaXRlRW1vdGVzXCIpO1xyXG4gICAgICAgIHRoaXMuZmF2b3JpdGVFbW90ZXMgPSBzdG9yZWRGYXZvcml0ZXMgfHwge307XHJcbiAgICAgICAgdGhpcy5hZGRGYXZvcml0ZSA9IHRoaXMuYWRkRmF2b3JpdGUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbW92ZUZhdm9yaXRlID0gdGhpcy5yZW1vdmVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25DYXRlZ29yeVRvZ2dsZSA9IHRoaXMub25DYXRlZ29yeVRvZ2dsZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMucmVzZXRFbW90ZXMgPSB0aGlzLnJlc2V0RW1vdGVzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlckNvbGxlY3Rpb24oXCJlbW90ZXNcIiwgXCJFbW90ZXNcIiwgRW1vdGVDb25maWcsIHt0aXRsZTogU3RyaW5ncy5FbW90ZXMuY2xlYXJFbW90ZXMsIG9uQ2xpY2s6IHRoaXMucmVzZXRFbW90ZXN9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldEJsYWNrbGlzdCgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZEVtb3RlRGF0YSgpO1xyXG5cclxuICAgICAgICBFdmVudHMub24oXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5yZW1vdmVGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwic2V0dGluZy11cGRhdGVkXCIsIHRoaXMub25DYXRlZ29yeVRvZ2dsZSk7XHJcbiAgICAgICAgdGhpcy5wYXRjaE1lc3NhZ2VDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcInNldHRpbmctdXBkYXRlZFwiLCB0aGlzLm9uQ2F0ZWdvcnlUb2dnbGUpO1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcImVtb3Rlcy1mYXZvcml0ZS1yZW1vdmVkXCIsIHRoaXMucmVtb3ZlRmF2b3JpdGUpO1xyXG4gICAgICAgIFNldHRpbmdzLnJlbW92ZUNvbGxlY3Rpb24oXCJlbW90ZXNcIik7XHJcbiAgICAgICAgdGhpcy5lbXB0eUVtb3RlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxFbW90ZVJlbmRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy5jYW5jZWxFbW90ZVJlbmRlcjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhdGVnb3J5VG9nZ2xlKGNvbGxlY3Rpb24sIGNhdCwgY2F0ZWdvcnksIGVuYWJsZWQpIHtcclxuICAgICAgICBpZiAoY29sbGVjdGlvbiAhPSBcImVtb3Rlc1wiIHx8IGNhdCAhPSBcImNhdGVnb3JpZXNcIikgcmV0dXJuO1xyXG4gICAgICAgIGlmIChlbmFibGVkKSByZXR1cm4gdGhpcy5sb2FkRW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy51bmxvYWRFbW90ZURhdGEoY2F0ZWdvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZhdm9yaXRlKG5hbWUsIHVybCkge1xyXG4gICAgICAgIGlmICghdGhpcy5mYXZvcml0ZUVtb3Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgdGhpcy5mYXZvcml0ZUVtb3Rlc1tuYW1lXSA9IHVybDtcclxuICAgICAgICB0aGlzLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZhdm9yaXRlRW1vdGVzLmhhc093blByb3BlcnR5KG5hbWUpKSByZXR1cm47XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZmF2b3JpdGVFbW90ZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5zYXZlRmF2b3JpdGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmF2b3JpdGVFbW90ZXMuaGFzT3duUHJvcGVydHkobmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUZhdm9yaXRlcygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0QkREYXRhKFwiZmF2b3JpdGVFbW90ZXNcIiwgdGhpcy5mYXZvcml0ZUVtb3Rlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW1wdHlFbW90ZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjYXQgaW4gRW1vdGVzKSBPYmplY3QuYXNzaWduKEVtb3Rlcywge1tjYXRdOiB7fX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVzc2FnZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhbmNlbEVtb3RlUmVuZGVyID0gdGhpcy5iZWZvcmUodGhpcy5NZXNzYWdlQ29tcG9uZW50LCBcImRlZmF1bHRcIiwgKHRoaXNPYmosIGFyZ3MpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBhcmdzWzBdLmNoaWxkcmVuTWVzc2FnZUNvbnRlbnQucHJvcHMuY29udGVudDtcclxuICAgICAgICAgICAgaWYgKCFub2RlcyB8fCAhbm9kZXMubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tuXTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT09IFwic3RyaW5nXCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBub2RlLnNwbGl0KC8oW15cXHNdKykoW1xcc118JCkvZyk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjID0gMCwgY2xlbiA9IHRoaXMuY2F0ZWdvcmllcy5sZW5ndGg7IGMgPCBjbGVuOyBjKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB3ID0gMCwgd2xlbiA9IHdvcmRzLmxlbmd0aDsgdyA8IHdsZW47IHcrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZSA9IHdvcmRzW3ddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZVNwbGl0ID0gZW1vdGUuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZU5hbWUgPSBlbW90ZVNwbGl0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW1vdGVNb2RpZmllciA9IGVtb3RlU3BsaXRbMV0gPyBlbW90ZVNwbGl0WzFdIDogXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVtb3RlT3ZlcnJpZGUgPSBlbW90ZU1vZGlmaWVyLnNsaWNlKDApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlTmFtZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZU5hbWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RpZmllcnMuaW5jbHVkZXMoZW1vdGVNb2RpZmllcikgfHwgIVNldHRpbmdzLmdldChcImVtb3Rlc1wiLCBcImdlbmVyYWxcIiwgXCJtb2RpZmllcnNcIikpIGVtb3RlTW9kaWZpZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW92ZXJyaWRlcy5pbmNsdWRlcyhlbW90ZU92ZXJyaWRlKSkgZW1vdGVPdmVycmlkZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZW1vdGVNb2RpZmllciA9IGVtb3RlT3ZlcnJpZGU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IHRoaXMuY2F0ZWdvcmllc1tjXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwidHdpdGNoXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuVHdpdGNoR2xvYmFsW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaEdsb2JhbFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwic3Vic2NyaWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiYnR0dlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLkJUVFZbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiQlRUVlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiZmZ6XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuRnJhbmtlckZhY2VaW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIkZyYW5rZXJGYWNlWlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUVtb3Rlc1tjdXJyZW50XVtlbW90ZU5hbWVdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IG5vZGVzW25dLm1hdGNoKG5ldyBSZWdFeHAoYChbXFxcXHNdfF4pJHtVdGlsaXRpZXMuZXNjYXBlKGVtb3RlTW9kaWZpZXIgPyBlbW90ZU5hbWUgKyBcIjpcIiArIGVtb3RlTW9kaWZpZXIgOiBlbW90ZU5hbWUpfShbXFxcXHNdfCQpYCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdHMpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmUgPSBub2Rlc1tuXS5zdWJzdHJpbmcoMCwgcmVzdWx0cy5pbmRleCArIHJlc3VsdHNbMV0ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zdCA9IG5vZGVzW25dLnN1YnN0cmluZyhyZXN1bHRzLmluZGV4ICsgcmVzdWx0c1swXS5sZW5ndGggLSByZXN1bHRzWzJdLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzW25dID0gcHJlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZUNvbXBvbmVudCA9IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoQkRFbW90ZSwge25hbWU6IGVtb3RlTmFtZSwgdXJsOiBFbW90ZVVSTHNbY3VycmVudF0uZm9ybWF0KHtpZDogRW1vdGVzW2N1cnJlbnRdW2Vtb3RlTmFtZV19KSwgbW9kaWZpZXI6IGVtb3RlTW9kaWZpZXIsIGlzRmF2b3JpdGU6IHRoaXMuaXNGYXZvcml0ZShlbW90ZU5hbWUpfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgcG9zdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgZW1vdGVDb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBvbmx5RW1vdGVzID0gbm9kZXMuZXZlcnkociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHIpID09IFwic3RyaW5nXCIgJiYgci5yZXBsYWNlKC9cXHMqLywgXCJcIikgPT0gXCJcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyLnR5cGUgJiYgci50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoci5wcm9wcyAmJiByLnByb3BzLmNoaWxkcmVuICYmIHIucHJvcHMuY2hpbGRyZW4ucHJvcHMgJiYgci5wcm9wcy5jaGlsZHJlbi5wcm9wcy5lbW9qaU5hbWUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFvbmx5RW1vdGVzKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT0gXCJvYmplY3RcIikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIG5vZGUucHJvcHMuanVtYm9hYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUucHJvcHMgJiYgbm9kZS5wcm9wcy5jaGlsZHJlbiAmJiBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzICYmIG5vZGUucHJvcHMuY2hpbGRyZW4ucHJvcHMuZW1vamlOYW1lKSBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzLmp1bWJvYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRCbGFja2xpc3QoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSBcIkJsYWNrbGlzdFwiO1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdHMgPSBEYXRhU3RvcmUuZW1vdGVzRXhpc3QoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHRoaXMuaXNDYWNoZVZhbGlkKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdXNlQ2FjaGUgPSAodmFsaWQpIHx8ICghdmFsaWQgJiYgZXhpc3RzICYmICF0aGlzLnNob3VsZERvd25sb2FkKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IHVzZUNhY2hlID8gRGF0YVN0b3JlLmdldEVtb3RlRGF0YShjYXRlZ29yeSkgOiBhd2FpdCB0aGlzLmRvd25sb2FkRW1vdGVzKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgYmxhY2tsaXN0LnB1c2goLi4ubGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogTG9nIHRoaXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNDYWNoZVZhbGlkKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBldGFnID0gRGF0YVN0b3JlLmdldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGlmICghZXRhZykgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmhlYWQoe3VybDogdGhpcy5nZXRSZW1vdGVGaWxlKGNhdGVnb3J5KSwgaGVhZGVyczoge1wiSWYtTm9uZS1NYXRjaFwiOiBldGFnfX0sIChlcnIsIHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcC5zdGF0dXNDb2RlID09IDMwNCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkVtb3Rlcy5sb2FkaW5nLCB7dHlwZTogXCJpbmZvXCJ9KTtcclxuICAgICAgICB0aGlzLmVtb3Rlc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gRGF0YVN0b3JlLmVtb3Rlc0V4aXN0KGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCB0aGlzLmlzQ2FjaGVWYWxpZChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZUNhY2hlID0gKHZhbGlkKSB8fCAoIXZhbGlkICYmIGV4aXN0cyAmJiAhdGhpcy5zaG91bGREb3dubG9hZCk7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKHVzZUNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgTG9hZGluZyAke2NhdGVnb3J5fSBlbW90ZXMgZnJvbSBsb2NhbCBjYWNoZS5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZERhdGEgPSBEYXRhU3RvcmUuZ2V0RW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0RhdGEgPSBPYmplY3Qua2V5cyhjYWNoZWREYXRhKS5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0RhdGEpIGRhdGEgPSBjYWNoZWREYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghZGF0YSkgZGF0YSA9IGF3YWl0IHRoaXMuZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKEVtb3Rlc1tjYXRlZ29yeV0sIGRhdGEpO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTAwMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbW90ZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIEV2ZW50cy5kaXNwYXRjaChcImVtb3Rlcy1sb2FkZWRcIik7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5FbW90ZXMubG9hZGVkLCB7dHlwZTogXCJzdWNjZXNzXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bmxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgZGVsZXRlIEVtb3Rlc1tjYXRlZ29yeV07XHJcbiAgICAgICAgICAgIEVtb3Rlc1tjYXRlZ29yeV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFJlbW90ZUZpbGUoY2F0ZWdvcnkpO1xyXG4gICAgICAgIHRoaXMubG9nKGBEb3dubG9hZGluZyAke2NhdGVnb3J5fSBmcm9tICR7dXJsfWApO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7dXJsOiB1cmwsIHRpbWVvdXQ6IDEwMDAwLCBqc29uOiB0cnVlfTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlcXVlc3QuZ2V0KG9wdGlvbnMsIChlcnJvciwgcmVzcG9uc2UsIHBhcnNlZERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZShgQ291bGQgbm90IGRvd25sb2FkICR7Y2F0ZWdvcnl9IGVtb3Rlcy5gLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbW90ZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZSkgfHwgIXBhcnNlZERhdGFbZW1vdGVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2Vtb3RlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlZERhdGFbZW1vdGVdID0gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBwYXJzZWREYXRhW2Vtb3RlXX0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNhdmVFbW90ZURhdGEoY2F0ZWdvcnksIHBhcnNlZERhdGEpO1xyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSwgcmVzcG9uc2UuaGVhZGVycy5ldGFnKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocGFyc2VkRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgRG93bmxvYWRlZCAke2NhdGVnb3J5fWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEVtb3RlcygpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLnVubG9hZEVtb3RlRGF0YShjYXRlZ29yaWVzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSBEYXRhU3RvcmUuaW52YWxpZGF0ZUNhY2hlKFwiZW1vdGVzXCIsIGNhdCk7XHJcbiAgICAgICAgdGhpcy5sb2FkRW1vdGVEYXRhKCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5cclxuLy8gKGFzeW5jICgpID0+IHtcclxuLy8gICAgIGNvbnN0IGVtb3RlRGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4vLyAgICAgICAgIGNvbnN0IHJlcSA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpO1xyXG4vLyAgICAgICAgIHJlcS5nZXQoe3VybDogXCJodHRwczovL3R3aXRjaGVtb3Rlcy5jb20vYXBpX2NhY2hlL3YzL2dsb2JhbC5qc29uXCIsIGpzb246IHRydWV9LCAoZXJyLCByZXNwLCBwYXJzZWREYXRhKSA9PiB7XHJcbi8vICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4vLyAgICAgICAgICAgICAgICAgaWYgKGVtb3RlLmxlbmd0aCA8IDQgfHwgd2luZG93LmJlbW90ZXMuaW5jbHVkZXMoZW1vdGUpKSB7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZERhdGFbZW1vdGVdO1xyXG4vLyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4vLyAgICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICAgICAgcGFyc2VkRGF0YVtlbW90ZV0gPSBwYXJzZWREYXRhW2Vtb3RlXS5pZDtcclxuLy8gICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICByZXNvbHZlKHBhcnNlZERhdGEpO1xyXG4vLyAgICAgICAgIH0pO1xyXG4vLyAgICAgfSk7XHJcbi8vICAgICBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuLy8gICAgIGZzLndyaXRlRmlsZVN5bmMoXCJaOlxcXFxQcm9ncmFtbWluZ1xcXFxCZXR0ZXJEaXNjb3JkU3R1ZmZcXFxcQmV0dGVyRGlzY29yZEFwcFxcXFxkYXRhXFxcXGVtb3Rlc1xcXFxnbG9iYWwuanNvblwiLCBKU09OLnN0cmluZ2lmeShlbW90ZURhdGEpKTtcclxuLy8gICAgIHJldHVybiBlbW90ZURhdGE7XHJcbi8vIH0pKCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotes.js\n"); /***/ }), @@ -347,7 +347,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n Panels: {\n plugins: \"Plugins\",\n themes: \"Themes\",\n customcss: \"Custom CSS\"\n },\n Collections: {\n settings: {\n name: \"Settings\",\n general: {\n name: \"General\",\n emotes: {\n name: \"Emote System\",\n note: \"Enables BD's emote system\"\n },\n publicServers: {\n name: \"Public Servers\",\n note: \"Display public servers button\"\n },\n voiceDisconnect: {\n name: \"Voice Disconnect\",\n note: \"Disconnect from voice server when closing Discord\"\n },\n twentyFourHour: {\n name: \"24-Hour Timestamps\",\n note: \"Hides channels when in minimal mode\"\n },\n classNormalizer: {\n name: \"Normalize Classes\",\n note: \"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Show Toasts\",\n note: \"Shows a small notification for important information\"\n }\n },\n appearance: {\n name: \"Appearance\",\n voiceMode: {\n name: \"Voice Mode\",\n note: \"Hides everything that isn't voice chat\"\n },\n minimalMode: {\n name: \"Minimal Mode\",\n note: \"Hide elements and reduce the size of elements\"\n },\n hideChannels: {\n name: \"Hide Channels\",\n note: \"Hides channels when in minimal mode\"\n },\n darkMode: {\n name: \"Dark Mode\",\n note: \"Make certain elements dark by default\"\n },\n coloredText: {\n name: \"Colored Text\",\n note: \"Make text colour the same as role color\"\n }\n },\n addons: {\n name: \"Addon Manager\",\n addonErrors: {\n name: \"Show Addon Errors\",\n note: \"Shows a modal with plugin/theme errors\"\n },\n autoScroll: {\n name: \"Scroll To Settings\",\n note: \"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)\"\n },\n autoReload: {\n name: \"Automatic Loading\",\n note: \"Automatically loads, reloads, and unloads plugins and themes\"\n },\n editAction: {\n name: \"Edit Action\",\n note: \"Where plugins & themes appear when editing\",\n options: {\n detached: \"Detached Window\",\n system: \"System Editor\"\n }\n }\n },\n customcss: {\n name: \"Custom CSS\",\n customcss: {\n name: \"Custom CSS\",\n note: \"Enables the Custom CSS tab\"\n },\n liveUpdate: {\n name: \"Live Update\",\n note: \"Updates the css as you type\"\n },\n startDetached: {\n name: \"Start Detached\",\n note: \"Clicking the Custom CSS tab opens the editor in a separate window\"\n },\n nativeOpen: {\n name: \"Open in Native Editor\",\n note: \"Clicking the Custom CSS tab opens your custom css in your native editor\"\n },\n openAction: {\n name: \"Editor Location\",\n note: \"Where Custom CSS should open by default\",\n options: {\n settings: \"Settings Menu\",\n detached: \"Detached Window\",\n system: \"System Editor\"\n }\n }\n },\n developer: {\n name: \"Developer Settings\",\n debuggerHotkey: {\n name: \"Debugger Hotkey\",\n note: \"Allows activating debugger when pressing F8\"\n },\n copySelector: {\n name: \"Copy Selector\",\n note: \"Adds a \\\"Copy Selector\\\" option to context menus when developer mode is active\"\n },\n reactDevTools: {\n name: \"React Developer Tools\",\n note: \"Injects your local installation of React Developer Tools into Discord\"\n }\n },\n window: {\n name: \"Window Preferences\",\n transparency: {\n name: \"Enable Transparency\",\n note: \"Enables the main window to be see-through (requires restart)\"\n },\n frame: {\n name: \"Window Frame\",\n note: \"Adds the native os window frame to the main window\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"General\",\n download: {\n name: \"Download Emotes\",\n note: \"Download emotes whenever they are out of date\"\n },\n emoteMenu: {\n name: \"Emote Menu\",\n note: \"Show Twitch/Favourite emotes in emote menu\"\n },\n hideEmojiMenu: {\n name: \"Hide Emoji Menu\",\n note: \"Hides Discord's emoji menu when using emote menu\"\n },\n autoCaps: {\n name: \"Emote Autocapitalization\",\n note: \"Autocapitalize emote commands\"\n },\n showNames: {\n name: \"Show Names\",\n note: \"Show emote names on hover\"\n },\n modifiers: {\n name: \"Show Emote Modifiers\",\n note: \"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animate On Hover\",\n note: \"Only animate the emote modifiers on hover\"\n }\n },\n categories: {\n name: \"Categories\",\n twitchglobal: {\n name: \"Twitch Globals\",\n note: \"Show Twitch global emotes\"\n },\n twitchsubscriber: {\n name: \"Twitch Subscribers\",\n note: \"Show Twitch subscriber emotes\"\n },\n frankerfacez: {\n name: \"FrankerFaceZ\",\n note: \"Show emotes from FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Show emotes from BTTV\"\n }\n }\n }\n },\n Addons: {\n title: \"{{name}} v{{version}} by {{author}}\",\n openFolder: \"Open {{type}} Folder\",\n reload: \"Reload\",\n addonSettings: \"Settings\",\n website: \"Website\",\n source: \"Source\",\n invite: \"Support Server\",\n donate: \"Donate\",\n patreon: \"Patreon\",\n name: \"Name\",\n author: \"Author\",\n version: \"Version\",\n added: \"Date Added\",\n modified: \"Date Modified\",\n search: \"Search {{type}}\",\n editAddon: \"Edit\",\n deleteAddon: \"Delete\",\n confirmDelete: \"Are you sure you want to delete {{name}}?\",\n confirmationText: \"You have unsaved changes to {{name}}. Closing this window will lose all those changes.\"\n },\n Emotes: {\n loading: \"Loading emotes in the background do not reload.\",\n loaded: \"All emotes successfully loaded.\",\n clearEmotes: \"Clear Emote Data\",\n favoriteAction: \"Favorite!\"\n },\n CustomCSS: {\n confirmationText: \"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.\",\n update: \"Update\",\n save: \"Save\",\n openNative: \"Open in System Editor\",\n openDetached: \"Detach Window\",\n settings: \"Editor Settings\",\n editorTitle: \"Custom CSS Editor\"\n },\n PublicServers: {\n button: \"public\",\n join: \"Join\",\n joining: \"Joining\",\n joined: \"Joined\",\n loading: \"Loading\",\n loadMore: \"Load More\",\n notConnected: \"Not connected to DiscordServers.com!\",\n search: \"Search\",\n connect: \"Connect\",\n reconnect: \"Reconnect\",\n categories: \"Categories\",\n connection: \"Connected as: {{username}}#{{discriminator}}\",\n results: \"Showing {{start}}-{{end}} of {{total}} results in {{category}}\",\n query: \"for {{query}}\"\n },\n Modals: {\n confirmAction: \"Are You Sure?\",\n okay: \"Okay\",\n cancel: \"Cancel\",\n close: \"Close\",\n name: \"Name\",\n message: \"Message\",\n error: \"Error\",\n addonErrors: \"Addon Errors\",\n restartRequired: \"Restart Required\",\n restartNow: \"Restart Now\",\n restartLater: \"Restart Later\",\n additionalInfo: \"Additional Info\"\n },\n Sorting: {\n sortBy: \"Sort By\",\n order: \"Order\",\n ascending: \"Ascending\",\n descending: \"Descending\"\n },\n WindowPrefs: {\n enabledInfo: \"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\\n\\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?\",\n disabledInfo: \"In order to take effect, Discord needs to be restarted. Do you want to restart now?\"\n },\n Startup: {\n notSupported: \"Not Supported\",\n versionMismatch: \"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\\n\\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)\",\n incompatibleApp: \"BandagedBD does not work with {{app}}. Please uninstall one of them.\",\n updateNow: \"Update Now\",\n maybeLater: \"Maybe Later\",\n updateAvailable: \"Update Available\",\n updateInfo: \"There is an update available for BandagedBD's Injector ({{version}}).\\n\\nYou can either update and restart now, or later.\",\n updateFailed: \"Could Not Update\",\n manualUpdate: \"Unable to update automatically, please download the installer and reinstall normally.\\n\\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)\"\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvc3RyaW5ncy5qcz9iYzcxIl0sIm5hbWVzIjpbIlBhbmVscyIsInBsdWdpbnMiLCJ0aGVtZXMiLCJjdXN0b21jc3MiLCJDb2xsZWN0aW9ucyIsInNldHRpbmdzIiwibmFtZSIsImdlbmVyYWwiLCJlbW90ZXMiLCJub3RlIiwicHVibGljU2VydmVycyIsInZvaWNlRGlzY29ubmVjdCIsInR3ZW50eUZvdXJIb3VyIiwiY2xhc3NOb3JtYWxpemVyIiwic2hvd1RvYXN0cyIsImFwcGVhcmFuY2UiLCJ2b2ljZU1vZGUiLCJtaW5pbWFsTW9kZSIsImhpZGVDaGFubmVscyIsImRhcmtNb2RlIiwiY29sb3JlZFRleHQiLCJhZGRvbnMiLCJhZGRvbkVycm9ycyIsImF1dG9TY3JvbGwiLCJhdXRvUmVsb2FkIiwiZWRpdEFjdGlvbiIsIm9wdGlvbnMiLCJkZXRhY2hlZCIsInN5c3RlbSIsImxpdmVVcGRhdGUiLCJzdGFydERldGFjaGVkIiwibmF0aXZlT3BlbiIsIm9wZW5BY3Rpb24iLCJkZXZlbG9wZXIiLCJkZWJ1Z2dlckhvdGtleSIsImNvcHlTZWxlY3RvciIsInJlYWN0RGV2VG9vbHMiLCJ3aW5kb3ciLCJ0cmFuc3BhcmVuY3kiLCJmcmFtZSIsImRvd25sb2FkIiwiZW1vdGVNZW51IiwiaGlkZUVtb2ppTWVudSIsImF1dG9DYXBzIiwic2hvd05hbWVzIiwibW9kaWZpZXJzIiwiYW5pbWF0ZU9uSG92ZXIiLCJjYXRlZ29yaWVzIiwidHdpdGNoZ2xvYmFsIiwidHdpdGNoc3Vic2NyaWJlciIsImZyYW5rZXJmYWNleiIsImJ0dHYiLCJBZGRvbnMiLCJ0aXRsZSIsIm9wZW5Gb2xkZXIiLCJyZWxvYWQiLCJhZGRvblNldHRpbmdzIiwid2Vic2l0ZSIsInNvdXJjZSIsImludml0ZSIsImRvbmF0ZSIsInBhdHJlb24iLCJhdXRob3IiLCJ2ZXJzaW9uIiwiYWRkZWQiLCJtb2RpZmllZCIsInNlYXJjaCIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwiY29uZmlybURlbGV0ZSIsImNvbmZpcm1hdGlvblRleHQiLCJFbW90ZXMiLCJsb2FkaW5nIiwibG9hZGVkIiwiY2xlYXJFbW90ZXMiLCJmYXZvcml0ZUFjdGlvbiIsIkN1c3RvbUNTUyIsInVwZGF0ZSIsInNhdmUiLCJvcGVuTmF0aXZlIiwib3BlbkRldGFjaGVkIiwiZWRpdG9yVGl0bGUiLCJQdWJsaWNTZXJ2ZXJzIiwiYnV0dG9uIiwiam9pbiIsImpvaW5pbmciLCJqb2luZWQiLCJsb2FkTW9yZSIsIm5vdENvbm5lY3RlZCIsImNvbm5lY3QiLCJyZWNvbm5lY3QiLCJjb25uZWN0aW9uIiwicmVzdWx0cyIsInF1ZXJ5IiwiTW9kYWxzIiwiY29uZmlybUFjdGlvbiIsIm9rYXkiLCJjYW5jZWwiLCJjbG9zZSIsIm1lc3NhZ2UiLCJlcnJvciIsInJlc3RhcnRSZXF1aXJlZCIsInJlc3RhcnROb3ciLCJyZXN0YXJ0TGF0ZXIiLCJhZGRpdGlvbmFsSW5mbyIsIlNvcnRpbmciLCJzb3J0QnkiLCJvcmRlciIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJXaW5kb3dQcmVmcyIsImVuYWJsZWRJbmZvIiwiZGlzYWJsZWRJbmZvIiwiU3RhcnR1cCIsIm5vdFN1cHBvcnRlZCIsInZlcnNpb25NaXNtYXRjaCIsImluY29tcGF0aWJsZUFwcCIsInVwZGF0ZU5vdyIsIm1heWJlTGF0ZXIiLCJ1cGRhdGVBdmFpbGFibGUiLCJ1cGRhdGVJbmZvIiwidXBkYXRlRmFpbGVkIiwibWFudWFsVXBkYXRlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ1hBLFFBQU0sRUFBRTtBQUNKQyxXQUFPLEVBQUUsU0FETDtBQUVKQyxVQUFNLEVBQUUsUUFGSjtBQUdKQyxhQUFTLEVBQUU7QUFIUCxHQURHO0FBTVhDLGFBQVcsRUFBRTtBQUNUQyxZQUFRLEVBQUU7QUFDTkMsVUFBSSxFQUFFLFVBREE7QUFFTkMsYUFBTyxFQUFFO0FBQ0xELFlBQUksRUFBRSxTQUREO0FBRUxFLGNBQU0sRUFBRTtBQUNKRixjQUFJ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QVMsRUFBRSxZQUpOO0FBS0xDLGNBQVUsRUFBRSxhQUxQO0FBTUxDLG1CQUFlLEVBQUUsa0JBTlo7QUFPTEMsY0FBVSxFQUFFLDJIQVBQO0FBUUxDLGdCQUFZLEVBQUUsa0JBUlQ7QUFTTEMsZ0JBQVksRUFBRTtBQVRUO0FBM1FFLENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9zdHJpbmdzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgUGFuZWxzOiB7XHJcbiAgICAgICAgcGx1Z2luczogXCJQbHVnaW5zXCIsXHJcbiAgICAgICAgdGhlbWVzOiBcIlRoZW1lc1wiLFxyXG4gICAgICAgIGN1c3RvbWNzczogXCJDdXN0b20gQ1NTXCJcclxuICAgIH0sXHJcbiAgICBDb2xsZWN0aW9uczoge1xyXG4gICAgICAgIHNldHRpbmdzOiB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgZ2VuZXJhbDoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJHZW5lcmFsXCIsXHJcbiAgICAgICAgICAgICAgICBlbW90ZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3RlIFN5c3RlbVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlcyBCRCdzIGVtb3RlIHN5c3RlbVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcHVibGljU2VydmVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiUHVibGljIFNlcnZlcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkRpc3BsYXkgcHVibGljIHNlcnZlcnMgYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB2b2ljZURpc2Nvbm5lY3Q6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZvaWNlIERpc2Nvbm5lY3RcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkRpc2Nvbm5lY3QgZnJvbSB2b2ljZSBzZXJ2ZXIgd2hlbiBjbG9zaW5nIERpc2NvcmRcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHR3ZW50eUZvdXJIb3VyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCIyNC1Ib3VyIFRpbWVzdGFtcHNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIGNoYW5uZWxzIHdoZW4gaW4gbWluaW1hbCBtb2RlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjbGFzc05vcm1hbGl6ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk5vcm1hbGl6ZSBDbGFzc2VzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIHN0YWJsZSBjbGFzc2VzIHRvIGVsZW1lbnRzIHRvIGhlbHAgdGhlbWVzLiAoZS5nLiBhZGRzIC5kYS1jaGFubmVscyB0byAuY2hhbm5lbHMtSWUybDZBKVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2hvd1RvYXN0czoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBUb2FzdHNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3dzIGEgc21hbGwgbm90aWZpY2F0aW9uIGZvciBpbXBvcnRhbnQgaW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkFwcGVhcmFuY2VcIixcclxuICAgICAgICAgICAgICAgIHZvaWNlTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVm9pY2UgTW9kZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgZXZlcnl0aGluZyB0aGF0IGlzbid0IHZvaWNlIGNoYXRcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1pbmltYWxNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJNaW5pbWFsIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGUgZWxlbWVudHMgYW5kIHJlZHVjZSB0aGUgc2l6ZSBvZiBlbGVtZW50c1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgaGlkZUNoYW5uZWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJIaWRlIENoYW5uZWxzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBjaGFubmVscyB3aGVuIGluIG1pbmltYWwgbW9kZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZGFya01vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRhcmsgTW9kZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiTWFrZSBjZXJ0YWluIGVsZW1lbnRzIGRhcmsgYnkgZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29sb3JlZFRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkNvbG9yZWQgVGV4dFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiTWFrZSB0ZXh0IGNvbG91ciB0aGUgc2FtZSBhcyByb2xlIGNvbG9yXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkb25zOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkFkZG9uIE1hbmFnZXJcIixcclxuICAgICAgICAgICAgICAgIGFkZG9uRXJyb3JzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IEFkZG9uIEVycm9yc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvd3MgYSBtb2RhbCB3aXRoIHBsdWdpbi90aGVtZSBlcnJvcnNcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGF1dG9TY3JvbGw6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNjcm9sbCBUbyBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQXV0by1zY3JvbGxzIHRvIGEgcGx1Z2luJ3Mgc2V0dGluZ3Mgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgKG9ubHkgaWYgb3V0IG9mIHZpZXcpXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhdXRvUmVsb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJBdXRvbWF0aWMgTG9hZGluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQXV0b21hdGljYWxseSBsb2FkcywgcmVsb2FkcywgYW5kIHVubG9hZHMgcGx1Z2lucyBhbmQgdGhlbWVzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlZGl0QWN0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFZGl0IEFjdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiV2hlcmUgcGx1Z2lucyAmIHRoZW1lcyBhcHBlYXIgd2hlbiBlZGl0aW5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhY2hlZDogXCJEZXRhY2hlZCBXaW5kb3dcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOiBcIlN5c3RlbSBFZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY3VzdG9tY3NzOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkN1c3RvbSBDU1NcIixcclxuICAgICAgICAgICAgICAgIGN1c3RvbWNzczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQ3VzdG9tIENTU1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlcyB0aGUgQ3VzdG9tIENTUyB0YWJcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGxpdmVVcGRhdGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkxpdmUgVXBkYXRlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJVcGRhdGVzIHRoZSBjc3MgYXMgeW91IHR5cGVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN0YXJ0RGV0YWNoZWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlN0YXJ0IERldGFjaGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJDbGlja2luZyB0aGUgQ3VzdG9tIENTUyB0YWIgb3BlbnMgdGhlIGVkaXRvciBpbiBhIHNlcGFyYXRlIHdpbmRvd1wiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG5hdGl2ZU9wZW46IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk9wZW4gaW4gTmF0aXZlIEVkaXRvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQ2xpY2tpbmcgdGhlIEN1c3RvbSBDU1MgdGFiIG9wZW5zIHlvdXIgY3VzdG9tIGNzcyBpbiB5b3VyIG5hdGl2ZSBlZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpb246IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVkaXRvciBMb2NhdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiV2hlcmUgQ3VzdG9tIENTUyBzaG91bGQgb3BlbiBieSBkZWZhdWx0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczogXCJTZXR0aW5ncyBNZW51XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFjaGVkOiBcIkRldGFjaGVkIFdpbmRvd1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06IFwiU3lzdGVtIEVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZXZlbG9wZXI6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiRGV2ZWxvcGVyIFNldHRpbmdzXCIsXHJcbiAgICAgICAgICAgICAgICBkZWJ1Z2dlckhvdGtleToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGVidWdnZXIgSG90a2V5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBbGxvd3MgYWN0aXZhdGluZyBkZWJ1Z2dlciB3aGVuIHByZXNzaW5nIEY4XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0b3I6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkNvcHkgU2VsZWN0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFkZHMgYSBcXFwiQ29weSBTZWxlY3RvclxcXCIgb3B0aW9uIHRvIGNvbnRleHQgbWVudXMgd2hlbiBkZXZlbG9wZXIgbW9kZSBpcyBhY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJlYWN0RGV2VG9vbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlJlYWN0IERldmVsb3BlciBUb29sc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSW5qZWN0cyB5b3VyIGxvY2FsIGluc3RhbGxhdGlvbiBvZiBSZWFjdCBEZXZlbG9wZXIgVG9vbHMgaW50byBEaXNjb3JkXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgd2luZG93OiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIldpbmRvdyBQcmVmZXJlbmNlc1wiLFxyXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbmN5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbmFibGUgVHJhbnNwYXJlbmN5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGVzIHRoZSBtYWluIHdpbmRvdyB0byBiZSBzZWUtdGhyb3VnaCAocmVxdWlyZXMgcmVzdGFydClcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZyYW1lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJXaW5kb3cgRnJhbWVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFkZHMgdGhlIG5hdGl2ZSBvcyB3aW5kb3cgZnJhbWUgdG8gdGhlIG1haW4gd2luZG93XCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiRW1vdGVzXCIsXHJcbiAgICAgICAgICAgIGdlbmVyYWw6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiR2VuZXJhbFwiLFxyXG4gICAgICAgICAgICAgICAgZG93bmxvYWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRvd25sb2FkIEVtb3Rlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRG93bmxvYWQgZW1vdGVzIHdoZW5ldmVyIHRoZXkgYXJlIG91dCBvZiBkYXRlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlbW90ZU1lbnU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3RlIE1lbnVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgVHdpdGNoL0Zhdm91cml0ZSBlbW90ZXMgaW4gZW1vdGUgbWVudVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgaGlkZUVtb2ppTWVudToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSGlkZSBFbW9qaSBNZW51XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBEaXNjb3JkJ3MgZW1vamkgbWVudSB3aGVuIHVzaW5nIGVtb3RlIG1lbnVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGF1dG9DYXBzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBBdXRvY2FwaXRhbGl6YXRpb25cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG9jYXBpdGFsaXplIGVtb3RlIGNvbW1hbmRzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaG93TmFtZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgTmFtZXNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgZW1vdGUgbmFtZXMgb24gaG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1vZGlmaWVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBFbW90ZSBNb2RpZmllcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZSBlbW90ZSBtb2RzIChmbGlwLCBzcGluLCBwdWxzZSwgc3BpbjIsIHNwaW4zLCAxc3BpbiwgMnNwaW4sIDNzcGluLCB0ciwgYmwsIGJyLCBzaGFrZSwgc2hha2UyLCBzaGFrZTMsIGZsYXApXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhbmltYXRlT25Ib3Zlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQW5pbWF0ZSBPbiBIb3ZlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiT25seSBhbmltYXRlIHRoZSBlbW90ZSBtb2RpZmllcnMgb24gaG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkNhdGVnb3JpZXNcIixcclxuICAgICAgICAgICAgICAgIHR3aXRjaGdsb2JhbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVHdpdGNoIEdsb2JhbHNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgVHdpdGNoIGdsb2JhbCBlbW90ZXNcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHR3aXRjaHN1YnNjcmliZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlR3aXRjaCBTdWJzY3JpYmVyc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBUd2l0Y2ggc3Vic2NyaWJlciBlbW90ZXNcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZyYW5rZXJmYWNlejoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRnJhbmtlckZhY2VaXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IGVtb3RlcyBmcm9tIEZGWlwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYnR0djoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQmV0dGVyVFRWXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IGVtb3RlcyBmcm9tIEJUVFZcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIEFkZG9uczoge1xyXG4gICAgICAgIHRpdGxlOiBcInt7bmFtZX19IHZ7e3ZlcnNpb259fSBieSB7e2F1dGhvcn19XCIsXHJcbiAgICAgICAgb3BlbkZvbGRlcjogXCJPcGVuIHt7dHlwZX19IEZvbGRlclwiLFxyXG4gICAgICAgIHJlbG9hZDogXCJSZWxvYWRcIixcclxuICAgICAgICBhZGRvblNldHRpbmdzOiBcIlNldHRpbmdzXCIsXHJcbiAgICAgICAgd2Vic2l0ZTogXCJXZWJzaXRlXCIsXHJcbiAgICAgICAgc291cmNlOiBcIlNvdXJjZVwiLFxyXG4gICAgICAgIGludml0ZTogXCJTdXBwb3J0IFNlcnZlclwiLFxyXG4gICAgICAgIGRvbmF0ZTogXCJEb25hdGVcIixcclxuICAgICAgICBwYXRyZW9uOiBcIlBhdHJlb25cIixcclxuICAgICAgICBuYW1lOiBcIk5hbWVcIixcclxuICAgICAgICBhdXRob3I6IFwiQXV0aG9yXCIsXHJcbiAgICAgICAgdmVyc2lvbjogXCJWZXJzaW9uXCIsXHJcbiAgICAgICAgYWRkZWQ6IFwiRGF0ZSBBZGRlZFwiLFxyXG4gICAgICAgIG1vZGlmaWVkOiBcIkRhdGUgTW9kaWZpZWRcIixcclxuICAgICAgICBzZWFyY2g6IFwiU2VhcmNoIHt7dHlwZX19XCIsXHJcbiAgICAgICAgZWRpdEFkZG9uOiBcIkVkaXRcIixcclxuICAgICAgICBkZWxldGVBZGRvbjogXCJEZWxldGVcIixcclxuICAgICAgICBjb25maXJtRGVsZXRlOiBcIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUge3tuYW1lfX0/XCIsXHJcbiAgICAgICAgY29uZmlybWF0aW9uVGV4dDogXCJZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgdG8ge3tuYW1lfX0uIENsb3NpbmcgdGhpcyB3aW5kb3cgd2lsbCBsb3NlIGFsbCB0aG9zZSBjaGFuZ2VzLlwiLFxyXG4gICAgfSxcclxuICAgIEVtb3Rlczoge1xyXG4gICAgICAgIGxvYWRpbmc6IFwiTG9hZGluZyBlbW90ZXMgaW4gdGhlIGJhY2tncm91bmQgZG8gbm90IHJlbG9hZC5cIixcclxuICAgICAgICBsb2FkZWQ6IFwiQWxsIGVtb3RlcyBzdWNjZXNzZnVsbHkgbG9hZGVkLlwiLFxyXG4gICAgICAgIGNsZWFyRW1vdGVzOiBcIkNsZWFyIEVtb3RlIERhdGFcIixcclxuICAgICAgICBmYXZvcml0ZUFjdGlvbjogXCJGYXZvcml0ZSFcIlxyXG4gICAgfSxcclxuICAgIEN1c3RvbUNTUzoge1xyXG4gICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFwiWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzIHRvIHlvdXIgQ3VzdG9tIENTUy4gQ2xvc2luZyB0aGlzIHdpbmRvdyB3aWxsIGxvc2UgYWxsIHRob3NlIGNoYW5nZXMuXCIsXHJcbiAgICAgICAgdXBkYXRlOiBcIlVwZGF0ZVwiLFxyXG4gICAgICAgIHNhdmU6IFwiU2F2ZVwiLFxyXG4gICAgICAgIG9wZW5OYXRpdmU6IFwiT3BlbiBpbiBTeXN0ZW0gRWRpdG9yXCIsXHJcbiAgICAgICAgb3BlbkRldGFjaGVkOiBcIkRldGFjaCBXaW5kb3dcIixcclxuICAgICAgICBzZXR0aW5nczogXCJFZGl0b3IgU2V0dGluZ3NcIixcclxuICAgICAgICBlZGl0b3JUaXRsZTogXCJDdXN0b20gQ1NTIEVkaXRvclwiXHJcbiAgICB9LFxyXG4gICAgUHVibGljU2VydmVyczoge1xyXG4gICAgICAgIGJ1dHRvbjogXCJwdWJsaWNcIixcclxuICAgICAgICBqb2luOiBcIkpvaW5cIixcclxuICAgICAgICBqb2luaW5nOiBcIkpvaW5pbmdcIixcclxuICAgICAgICBqb2luZWQ6IFwiSm9pbmVkXCIsXHJcbiAgICAgICAgbG9hZGluZzogXCJMb2FkaW5nXCIsXHJcbiAgICAgICAgbG9hZE1vcmU6IFwiTG9hZCBNb3JlXCIsXHJcbiAgICAgICAgbm90Q29ubmVjdGVkOiBcIk5vdCBjb25uZWN0ZWQgdG8gRGlzY29yZFNlcnZlcnMuY29tIVwiLFxyXG4gICAgICAgIHNlYXJjaDogXCJTZWFyY2hcIixcclxuICAgICAgICBjb25uZWN0OiBcIkNvbm5lY3RcIixcclxuICAgICAgICByZWNvbm5lY3Q6IFwiUmVjb25uZWN0XCIsXHJcbiAgICAgICAgY2F0ZWdvcmllczogXCJDYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgY29ubmVjdGlvbjogXCJDb25uZWN0ZWQgYXM6IHt7dXNlcm5hbWV9fSN7e2Rpc2NyaW1pbmF0b3J9fVwiLFxyXG4gICAgICAgIHJlc3VsdHM6IFwiU2hvd2luZyB7e3N0YXJ0fX0te3tlbmR9fSBvZiB7e3RvdGFsfX0gcmVzdWx0cyBpbiB7e2NhdGVnb3J5fX1cIixcclxuICAgICAgICBxdWVyeTogXCJmb3Ige3txdWVyeX19XCJcclxuICAgIH0sXHJcbiAgICBNb2RhbHM6IHtcclxuICAgICAgICBjb25maXJtQWN0aW9uOiBcIkFyZSBZb3UgU3VyZT9cIixcclxuICAgICAgICBva2F5OiBcIk9rYXlcIixcclxuICAgICAgICBjYW5jZWw6IFwiQ2FuY2VsXCIsXHJcbiAgICAgICAgY2xvc2U6IFwiQ2xvc2VcIixcclxuICAgICAgICBuYW1lOiBcIk5hbWVcIixcclxuICAgICAgICBtZXNzYWdlOiBcIk1lc3NhZ2VcIixcclxuICAgICAgICBlcnJvcjogXCJFcnJvclwiLFxyXG4gICAgICAgIGFkZG9uRXJyb3JzOiBcIkFkZG9uIEVycm9yc1wiLFxyXG4gICAgICAgIHJlc3RhcnRSZXF1aXJlZDogXCJSZXN0YXJ0IFJlcXVpcmVkXCIsXHJcbiAgICAgICAgcmVzdGFydE5vdzogXCJSZXN0YXJ0IE5vd1wiLFxyXG4gICAgICAgIHJlc3RhcnRMYXRlcjogXCJSZXN0YXJ0IExhdGVyXCIsXHJcbiAgICAgICAgYWRkaXRpb25hbEluZm86IFwiQWRkaXRpb25hbCBJbmZvXCJcclxuICAgIH0sXHJcbiAgICBTb3J0aW5nOiB7XHJcbiAgICAgICAgc29ydEJ5OiBcIlNvcnQgQnlcIixcclxuICAgICAgICBvcmRlcjogXCJPcmRlclwiLFxyXG4gICAgICAgIGFzY2VuZGluZzogXCJBc2NlbmRpbmdcIixcclxuICAgICAgICBkZXNjZW5kaW5nOiBcIkRlc2NlbmRpbmdcIlxyXG4gICAgfSxcclxuICAgIFdpbmRvd1ByZWZzOiB7XHJcbiAgICAgICAgZW5hYmxlZEluZm86IFwiVGhpcyBvcHRpb24gcmVxdWlyZXMgYSB0cmFuc3BhcmVudCB0aGVtZSBpbiBvcmRlciB0byB3b3JrIHByb3Blcmx5LiBPbiBXaW5kb3dzIHRoaXMgbWF5IGJyZWFrIHlvdXIgYWVybyBzbmFwcGluZyBhbmQgbWF4aW1pemluZy5cXG5cXG5JbiBvcmRlciB0byB0YWtlIGVmZmVjdCwgRGlzY29yZCBuZWVkcyB0byBiZSByZXN0YXJ0ZWQuIERvIHlvdSB3YW50IHRvIHJlc3RhcnQgbm93P1wiLFxyXG4gICAgICAgIGRpc2FibGVkSW5mbzogXCJJbiBvcmRlciB0byB0YWtlIGVmZmVjdCwgRGlzY29yZCBuZWVkcyB0byBiZSByZXN0YXJ0ZWQuIERvIHlvdSB3YW50IHRvIHJlc3RhcnQgbm93P1wiXHJcbiAgICB9LFxyXG4gICAgU3RhcnR1cDoge1xyXG4gICAgICAgIG5vdFN1cHBvcnRlZDogXCJOb3QgU3VwcG9ydGVkXCIsXHJcbiAgICAgICAgdmVyc2lvbk1pc21hdGNoOiBcIkJhbmRhZ2VkQkQgSW5qZWN0b3Igdnt7aW5qZWN0b3J9fSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBsYXRlc3QgcmVtb3RlICh2e3tyZW1vdGV9fSkuXFxuXFxuUGxlYXNlIGRvd25sb2FkIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIFtHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvcmVsZWFzZXMvbGF0ZXN0KVwiLFxyXG4gICAgICAgIGluY29tcGF0aWJsZUFwcDogXCJCYW5kYWdlZEJEIGRvZXMgbm90IHdvcmsgd2l0aCB7e2FwcH19LiBQbGVhc2UgdW5pbnN0YWxsIG9uZSBvZiB0aGVtLlwiLFxyXG4gICAgICAgIHVwZGF0ZU5vdzogXCJVcGRhdGUgTm93XCIsXHJcbiAgICAgICAgbWF5YmVMYXRlcjogXCJNYXliZSBMYXRlclwiLFxyXG4gICAgICAgIHVwZGF0ZUF2YWlsYWJsZTogXCJVcGRhdGUgQXZhaWxhYmxlXCIsXHJcbiAgICAgICAgdXBkYXRlSW5mbzogXCJUaGVyZSBpcyBhbiB1cGRhdGUgYXZhaWxhYmxlIGZvciBCYW5kYWdlZEJEJ3MgSW5qZWN0b3IgKHt7dmVyc2lvbn19KS5cXG5cXG5Zb3UgY2FuIGVpdGhlciB1cGRhdGUgYW5kIHJlc3RhcnQgbm93LCBvciBsYXRlci5cIixcclxuICAgICAgICB1cGRhdGVGYWlsZWQ6IFwiQ291bGQgTm90IFVwZGF0ZVwiLFxyXG4gICAgICAgIG1hbnVhbFVwZGF0ZTogXCJVbmFibGUgdG8gdXBkYXRlIGF1dG9tYXRpY2FsbHksIHBsZWFzZSBkb3dubG9hZCB0aGUgaW5zdGFsbGVyIGFuZCByZWluc3RhbGwgbm9ybWFsbHkuXFxuXFxuW0Rvd25sb2FkIEluc3RhbGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC9yZWxlYXNlcy9sYXRlc3QpXCJcclxuICAgIH1cclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/strings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n Panels: {\n plugins: \"Plugins\",\n themes: \"Themes\",\n customcss: \"Custom CSS\"\n },\n Collections: {\n settings: {\n name: \"Settings\",\n general: {\n name: \"General\",\n emotes: {\n name: \"Emote System\",\n note: \"Enables BD's emote system\"\n },\n publicServers: {\n name: \"Public Servers\",\n note: \"Display public servers button\"\n },\n voiceDisconnect: {\n name: \"Voice Disconnect\",\n note: \"Disconnect from voice server when closing Discord\"\n },\n twentyFourHour: {\n name: \"24-Hour Timestamps\",\n note: \"Hides channels when in minimal mode\"\n },\n classNormalizer: {\n name: \"Normalize Classes\",\n note: \"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Show Toasts\",\n note: \"Shows a small notification for important information\"\n }\n },\n appearance: {\n name: \"Appearance\",\n voiceMode: {\n name: \"Voice Mode\",\n note: \"Hides everything that isn't voice chat\"\n },\n minimalMode: {\n name: \"Minimal Mode\",\n note: \"Hide elements and reduce the size of elements\"\n },\n hideChannels: {\n name: \"Hide Channels\",\n note: \"Hides channels when in minimal mode\"\n },\n darkMode: {\n name: \"Dark Mode\",\n note: \"Make certain elements dark by default\"\n },\n coloredText: {\n name: \"Colored Text\",\n note: \"Make text colour the same as role color\"\n }\n },\n addons: {\n name: \"Addon Manager\",\n addonErrors: {\n name: \"Show Addon Errors\",\n note: \"Shows a modal with plugin/theme errors\"\n },\n autoScroll: {\n name: \"Scroll To Settings\",\n note: \"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)\"\n },\n autoReload: {\n name: \"Automatic Loading\",\n note: \"Automatically loads, reloads, and unloads plugins and themes\"\n },\n editAction: {\n name: \"Edit Action\",\n note: \"Where plugins & themes appear when editing\",\n options: {\n detached: \"Detached Window\",\n system: \"System Editor\"\n }\n }\n },\n customcss: {\n name: \"Custom CSS\",\n customcss: {\n name: \"Custom CSS\",\n note: \"Enables the Custom CSS tab\"\n },\n liveUpdate: {\n name: \"Live Update\",\n note: \"Updates the css as you type\"\n },\n startDetached: {\n name: \"Start Detached\",\n note: \"Clicking the Custom CSS tab opens the editor in a separate window\"\n },\n nativeOpen: {\n name: \"Open in Native Editor\",\n note: \"Clicking the Custom CSS tab opens your custom css in your native editor\"\n },\n openAction: {\n name: \"Editor Location\",\n note: \"Where Custom CSS should open by default\",\n options: {\n settings: \"Settings Menu\",\n detached: \"Detached Window\",\n system: \"System Editor\"\n }\n }\n },\n developer: {\n name: \"Developer Settings\",\n debuggerHotkey: {\n name: \"Debugger Hotkey\",\n note: \"Allows activating debugger when pressing F8\"\n },\n copySelector: {\n name: \"Copy Selector\",\n note: \"Adds a \\\"Copy Selector\\\" option to context menus when developer mode is active\"\n },\n reactDevTools: {\n name: \"React Developer Tools\",\n note: \"Injects your local installation of React Developer Tools into Discord\"\n }\n },\n window: {\n name: \"Window Preferences\",\n transparency: {\n name: \"Enable Transparency\",\n note: \"Enables the main window to be see-through (requires restart)\"\n },\n frame: {\n name: \"Window Frame\",\n note: \"Adds the native os window frame to the main window\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"General\",\n download: {\n name: \"Download Emotes\",\n note: \"Download emotes whenever they are out of date\"\n },\n emoteMenu: {\n name: \"Emote Menu\",\n note: \"Show Twitch/Favourite emotes in emote menu\"\n },\n hideEmojiMenu: {\n name: \"Hide Emoji Menu\",\n note: \"Hides Discord's emoji menu when using emote menu\"\n },\n autoCaps: {\n name: \"Emote Autocapitalization\",\n note: \"Autocapitalize emote commands\"\n },\n showNames: {\n name: \"Show Names\",\n note: \"Show emote names on hover\"\n },\n modifiers: {\n name: \"Show Emote Modifiers\",\n note: \"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animate On Hover\",\n note: \"Only animate the emote modifiers on hover\"\n }\n },\n categories: {\n name: \"Categories\",\n twitchglobal: {\n name: \"Twitch Globals\",\n note: \"Show Twitch global emotes\"\n },\n twitchsubscriber: {\n name: \"Twitch Subscribers\",\n note: \"Show Twitch subscriber emotes\"\n },\n frankerfacez: {\n name: \"FrankerFaceZ\",\n note: \"Show emotes from FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Show emotes from BTTV\"\n }\n }\n }\n },\n Addons: {\n title: \"{{name}} v{{version}} by {{author}}\",\n openFolder: \"Open {{type}} Folder\",\n reload: \"Reload\",\n addonSettings: \"Settings\",\n website: \"Website\",\n source: \"Source\",\n invite: \"Support Server\",\n donate: \"Donate\",\n patreon: \"Patreon\",\n name: \"Name\",\n author: \"Author\",\n version: \"Version\",\n added: \"Date Added\",\n modified: \"Date Modified\",\n search: \"Search {{type}}\",\n editAddon: \"Edit\",\n deleteAddon: \"Delete\",\n confirmDelete: \"Are you sure you want to delete {{name}}?\",\n confirmationText: \"You have unsaved changes to {{name}}. Closing this window will lose all those changes.\",\n enabled: \"{{name}} has been enabled.\",\n disabled: \"{{name}} has been disabled.\",\n unknownAuthor: \"Unknown Author\",\n noDescription: \"Description not provided.\"\n },\n Emotes: {\n loading: \"Loading emotes in the background do not reload.\",\n loaded: \"All emotes successfully loaded.\",\n clearEmotes: \"Clear Emote Data\",\n favoriteAction: \"Favorite!\"\n },\n CustomCSS: {\n confirmationText: \"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.\",\n update: \"Update\",\n save: \"Save\",\n openNative: \"Open in System Editor\",\n openDetached: \"Detach Window\",\n settings: \"Editor Settings\",\n editorTitle: \"Custom CSS Editor\"\n },\n PublicServers: {\n button: \"public\",\n join: \"Join\",\n joining: \"Joining\",\n joined: \"Joined\",\n loading: \"Loading\",\n loadMore: \"Load More\",\n notConnected: \"Not connected to DiscordServers.com!\",\n search: \"Search\",\n connect: \"Connect\",\n reconnect: \"Reconnect\",\n categories: \"Categories\",\n connection: \"Connected as: {{username}}#{{discriminator}}\",\n results: \"Showing {{start}}-{{end}} of {{total}} results in {{category}}\",\n query: \"for {{query}}\"\n },\n Modals: {\n confirmAction: \"Are You Sure?\",\n okay: \"Okay\",\n cancel: \"Cancel\",\n close: \"Close\",\n name: \"Name\",\n message: \"Message\",\n error: \"Error\",\n addonErrors: \"Addon Errors\",\n restartRequired: \"Restart Required\",\n restartNow: \"Restart Now\",\n restartLater: \"Restart Later\",\n additionalInfo: \"Additional Info\"\n },\n Sorting: {\n sortBy: \"Sort By\",\n order: \"Order\",\n ascending: \"Ascending\",\n descending: \"Descending\"\n },\n WindowPrefs: {\n enabledInfo: \"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\\n\\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?\",\n disabledInfo: \"In order to take effect, Discord needs to be restarted. Do you want to restart now?\"\n },\n Startup: {\n notSupported: \"Not Supported\",\n versionMismatch: \"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\\n\\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)\",\n incompatibleApp: \"BandagedBD does not work with {{app}}. Please uninstall one of them.\",\n updateNow: \"Update Now\",\n maybeLater: \"Maybe Later\",\n updateAvailable: \"Update Available\",\n updateInfo: \"There is an update available for BandagedBD's Injector ({{version}}).\\n\\nYou can either update and restart now, or later.\",\n updateFailed: \"Could Not Update\",\n manualUpdate: \"Unable to update automatically, please download the installer and reinstall normally.\\n\\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)\"\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvc3RyaW5ncy5qcz9iYzcxIl0sIm5hbWVzIjpbIlBhbmVscyIsInBsdWdpbnMiLCJ0aGVtZXMiLCJjdXN0b21jc3MiLCJDb2xsZWN0aW9ucyIsInNldHRpbmdzIiwibmFtZSIsImdlbmVyYWwiLCJlbW90ZXMiLCJub3RlIiwicHVibGljU2VydmVycyIsInZvaWNlRGlzY29ubmVjdCIsInR3ZW50eUZvdXJIb3VyIiwiY2xhc3NOb3JtYWxpemVyIiwic2hvd1RvYXN0cyIsImFwcGVhcmFuY2UiLCJ2b2ljZU1vZGUiLCJtaW5pbWFsTW9kZSIsImhpZGVDaGFubmVscyIsImRhcmtNb2RlIiwiY29sb3JlZFRleHQiLCJhZGRvbnMiLCJhZGRvbkVycm9ycyIsImF1dG9TY3JvbGwiLCJhdXRvUmVsb2FkIiwiZWRpdEFjdGlvbiIsIm9wdGlvbnMiLCJkZXRhY2hlZCIsInN5c3RlbSIsImxpdmVVcGRhdGUiLCJzdGFydERldGFjaGVkIiwibmF0aXZlT3BlbiIsIm9wZW5BY3Rpb24iLCJkZXZlbG9wZXIiLCJkZWJ1Z2dlckhvdGtleSIsImNvcHlTZWxlY3RvciIsInJlYWN0RGV2VG9vbHMiLCJ3aW5kb3ciLCJ0cmFuc3BhcmVuY3kiLCJmcmFtZSIsImRvd25sb2FkIiwiZW1vdGVNZW51IiwiaGlkZUVtb2ppTWVudSIsImF1dG9DYXBzIiwic2hvd05hbWVzIiwibW9kaWZpZXJzIiwiYW5pbWF0ZU9uSG92ZXIiLCJjYXRlZ29yaWVzIiwidHdpdGNoZ2xvYmFsIiwidHdpdGNoc3Vic2NyaWJlciIsImZyYW5rZXJmYWNleiIsImJ0dHYiLCJBZGRvbnMiLCJ0aXRsZSIsIm9wZW5Gb2xkZXIiLCJyZWxvYWQiLCJhZGRvblNldHRpbmdzIiwid2Vic2l0ZSIsInNvdXJjZSIsImludml0ZSIsImRvbmF0ZSIsInBhdHJlb24iLCJhdXRob3IiLCJ2ZXJzaW9uIiwiYWRkZWQiLCJtb2RpZmllZCIsInNlYXJjaCIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwiY29uZmlybURlbGV0ZSIsImNvbmZpcm1hdGlvblRleHQiLCJlbmFibGVkIiwiZGlzYWJsZWQiLCJ1bmtub3duQXV0aG9yIiwibm9EZXNjcmlwdGlvbiIsIkVtb3RlcyIsImxvYWRpbmciLCJsb2FkZWQiLCJjbGVhckVtb3RlcyIsImZhdm9yaXRlQWN0aW9uIiwiQ3VzdG9tQ1NTIiwidXBkYXRlIiwic2F2ZSIsIm9wZW5OYXRpdmUiLCJvcGVuRGV0YWNoZWQiLCJlZGl0b3JUaXRsZSIsIlB1YmxpY1NlcnZlcnMiLCJidXR0b24iLCJqb2luIiwiam9pbmluZyIsImpvaW5lZCIsImxvYWRNb3JlIiwibm90Q29ubmVjdGVkIiwiY29ubmVjdCIsInJlY29ubmVjdCIsImNvbm5lY3Rpb24iLCJyZXN1bHRzIiwicXVlcnkiLCJNb2RhbHMiLCJjb25maXJtQWN0aW9uIiwib2theSIsImNhbmNlbCIsImNsb3NlIiwibWVzc2FnZSIsImVycm9yIiwicmVzdGFydFJlcXVpcmVkIiwicmVzdGFydE5vdyIsInJlc3RhcnRMYXRlciIsImFkZGl0aW9uYWxJbmZvIiwiU29ydGluZyIsInNvcnRCeSIsIm9yZGVyIiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsIldpbmRvd1ByZWZzIiwiZW5hYmxlZEluZm8iLCJkaXNhYmxlZEluZm8iLCJTdGFydHVwIiwibm90U3VwcG9ydGVkIiwidmVyc2lvbk1pc21hdGNoIiwiaW5jb21wYXRpYmxlQXBwIiwidXBkYXRlTm93IiwibWF5YmVMYXRlciIsInVwZGF0ZUF2YWlsYWJsZSIsInVwZGF0ZUluZm8iLCJ1cGRhdGVGYWlsZWQiLCJtYW51YWxVcGRhdGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDWEEsUUFBTSxFQUFFO0FBQ0pDLFdBQU8sRUFBRSxTQURMO0FBRUpDLFVBQU0sRUFBRSxRQUZKO0FBR0pDLGFBQVMsRUFBRTtBQUhQLEdBREc7QUFNWEMsYUFBVyxFQUFFO0FBQ1RDLFlBQVEsRUFBRTtBQUNOQyxVQUFJLEVBQUUsVUFEQTtBQUVOQyxhQUFP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QVcsRUFBRTtBQUNUQyxlQUFXLEVBQUUseU5BREo7QUFFVEMsZ0JBQVksRUFBRTtBQUZMLEdBM1FGO0FBK1FYQyxTQUFPLEVBQUU7QUFDTEMsZ0JBQVksRUFBRSxlQURUO0FBRUxDLG1CQUFlLEVBQUUseU1BRlo7QUFHTEMsbUJBQWUsRUFBRSxzRUFIWjtBQUlMQyxhQUFTLEVBQUUsWUFKTjtBQUtMQyxjQUFVLEVBQUUsYUFMUDtBQU1MQyxtQkFBZSxFQUFFLGtCQU5aO0FBT0xDLGNBQVUsRUFBRSwySEFQUDtBQVFMQyxnQkFBWSxFQUFFLGtCQVJUO0FBU0xDLGdCQUFZLEVBQUU7QUFUVDtBQS9RRSxDQUFmIiwiZmlsZSI6Ii4vc3JjL2RhdGEvc3RyaW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICAgIFBhbmVsczoge1xyXG4gICAgICAgIHBsdWdpbnM6IFwiUGx1Z2luc1wiLFxyXG4gICAgICAgIHRoZW1lczogXCJUaGVtZXNcIixcclxuICAgICAgICBjdXN0b21jc3M6IFwiQ3VzdG9tIENTU1wiXHJcbiAgICB9LFxyXG4gICAgQ29sbGVjdGlvbnM6IHtcclxuICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICBuYW1lOiBcIlNldHRpbmdzXCIsXHJcbiAgICAgICAgICAgIGdlbmVyYWw6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiR2VuZXJhbFwiLFxyXG4gICAgICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBTeXN0ZW1cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgQkQncyBlbW90ZSBzeXN0ZW1cIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHB1YmxpY1NlcnZlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlB1YmxpYyBTZXJ2ZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNwbGF5IHB1YmxpYyBzZXJ2ZXJzIGJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdm9pY2VEaXNjb25uZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWb2ljZSBEaXNjb25uZWN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNjb25uZWN0IGZyb20gdm9pY2Ugc2VydmVyIHdoZW4gY2xvc2luZyBEaXNjb3JkXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0d2VudHlGb3VySG91cjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiMjQtSG91ciBUaW1lc3RhbXBzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBjaGFubmVscyB3aGVuIGluIG1pbmltYWwgbW9kZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOb3JtYWxpemVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJOb3JtYWxpemUgQ2xhc3Nlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyBzdGFibGUgY2xhc3NlcyB0byBlbGVtZW50cyB0byBoZWxwIHRoZW1lcy4gKGUuZy4gYWRkcyAuZGEtY2hhbm5lbHMgdG8gLmNoYW5uZWxzLUllMmw2QSlcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNob3dUb2FzdHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgVG9hc3RzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93cyBhIHNtYWxsIG5vdGlmaWNhdGlvbiBmb3IgaW1wb3J0YW50IGluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXBwZWFyYW5jZToge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBcHBlYXJhbmNlXCIsXHJcbiAgICAgICAgICAgICAgICB2b2ljZU1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZvaWNlIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIGV2ZXJ5dGhpbmcgdGhhdCBpc24ndCB2b2ljZSBjaGF0XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtaW5pbWFsTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTWluaW1hbCBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlIGVsZW1lbnRzIGFuZCByZWR1Y2UgdGhlIHNpemUgb2YgZWxlbWVudHNcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGhpZGVDaGFubmVsczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSGlkZSBDaGFubmVsc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgY2hhbm5lbHMgd2hlbiBpbiBtaW5pbWFsIG1vZGVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGRhcmtNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEYXJrIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgY2VydGFpbiBlbGVtZW50cyBkYXJrIGJ5IGRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbG9yZWRUZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb2xvcmVkIFRleHRcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgdGV4dCBjb2xvdXIgdGhlIHNhbWUgYXMgcm9sZSBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFkZG9uczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBZGRvbiBNYW5hZ2VyXCIsXHJcbiAgICAgICAgICAgICAgICBhZGRvbkVycm9yczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBBZGRvbiBFcnJvcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3dzIGEgbW9kYWwgd2l0aCBwbHVnaW4vdGhlbWUgZXJyb3JzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhdXRvU2Nyb2xsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTY3JvbGwgVG8gU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG8tc2Nyb2xscyB0byBhIHBsdWdpbidzIHNldHRpbmdzIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIChvbmx5IGlmIG91dCBvZiB2aWV3KVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYXV0b1JlbG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQXV0b21hdGljIExvYWRpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG9tYXRpY2FsbHkgbG9hZHMsIHJlbG9hZHMsIGFuZCB1bmxvYWRzIHBsdWdpbnMgYW5kIHRoZW1lc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZWRpdEFjdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRWRpdCBBY3Rpb25cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIldoZXJlIHBsdWdpbnMgJiB0aGVtZXMgYXBwZWFyIHdoZW4gZWRpdGluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWNoZWQ6IFwiRGV0YWNoZWQgV2luZG93XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTogXCJTeXN0ZW0gRWRpdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGN1c3RvbWNzczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJDdXN0b20gQ1NTXCIsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21jc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkN1c3RvbSBDU1NcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgdGhlIEN1c3RvbSBDU1MgdGFiXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBsaXZlVXBkYXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJMaXZlIFVwZGF0ZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVXBkYXRlcyB0aGUgY3NzIGFzIHlvdSB0eXBlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdGFydERldGFjaGVkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTdGFydCBEZXRhY2hlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQ2xpY2tpbmcgdGhlIEN1c3RvbSBDU1MgdGFiIG9wZW5zIHRoZSBlZGl0b3IgaW4gYSBzZXBhcmF0ZSB3aW5kb3dcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBuYXRpdmVPcGVuOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJPcGVuIGluIE5hdGl2ZSBFZGl0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkNsaWNraW5nIHRoZSBDdXN0b20gQ1NTIHRhYiBvcGVucyB5b3VyIGN1c3RvbSBjc3MgaW4geW91ciBuYXRpdmUgZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvcGVuQWN0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFZGl0b3IgTG9jYXRpb25cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIldoZXJlIEN1c3RvbSBDU1Mgc2hvdWxkIG9wZW4gYnkgZGVmYXVsdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IFwiU2V0dGluZ3MgTWVudVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhY2hlZDogXCJEZXRhY2hlZCBXaW5kb3dcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOiBcIlN5c3RlbSBFZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGV2ZWxvcGVyOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkRldmVsb3BlciBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICAgICAgZGVidWdnZXJIb3RrZXk6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRlYnVnZ2VyIEhvdGtleVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWxsb3dzIGFjdGl2YXRpbmcgZGVidWdnZXIgd2hlbiBwcmVzc2luZyBGOFwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29weVNlbGVjdG9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb3B5IFNlbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIGEgXFxcIkNvcHkgU2VsZWN0b3JcXFwiIG9wdGlvbiB0byBjb250ZXh0IG1lbnVzIHdoZW4gZGV2ZWxvcGVyIG1vZGUgaXMgYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZWFjdERldlRvb2xzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJSZWFjdCBEZXZlbG9wZXIgVG9vbHNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkluamVjdHMgeW91ciBsb2NhbCBpbnN0YWxsYXRpb24gb2YgUmVhY3QgRGV2ZWxvcGVyIFRvb2xzIGludG8gRGlzY29yZFwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHdpbmRvdzoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJXaW5kb3cgUHJlZmVyZW5jZXNcIixcclxuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW5jeToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW5hYmxlIFRyYW5zcGFyZW5jeVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlcyB0aGUgbWFpbiB3aW5kb3cgdG8gYmUgc2VlLXRocm91Z2ggKHJlcXVpcmVzIHJlc3RhcnQpXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmcmFtZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiV2luZG93IEZyYW1lXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIHRoZSBuYXRpdmUgb3Mgd2luZG93IGZyYW1lIHRvIHRoZSBtYWluIHdpbmRvd1wiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVtb3Rlczoge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVtb3Rlc1wiLFxyXG4gICAgICAgICAgICBnZW5lcmFsOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkdlbmVyYWxcIixcclxuICAgICAgICAgICAgICAgIGRvd25sb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEb3dubG9hZCBFbW90ZXNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkRvd25sb2FkIGVtb3RlcyB3aGVuZXZlciB0aGV5IGFyZSBvdXQgb2YgZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZW1vdGVNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBNZW51XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaC9GYXZvdXJpdGUgZW1vdGVzIGluIGVtb3RlIG1lbnVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGhpZGVFbW9qaU1lbnU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkhpZGUgRW1vamkgTWVudVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgRGlzY29yZCdzIGVtb2ppIG1lbnUgd2hlbiB1c2luZyBlbW90ZSBtZW51XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhdXRvQ2Fwczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGUgQXV0b2NhcGl0YWxpemF0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBdXRvY2FwaXRhbGl6ZSBlbW90ZSBjb21tYW5kc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2hvd05hbWVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IE5hbWVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IGVtb3RlIG5hbWVzIG9uIGhvdmVyXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtb2RpZmllcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgRW1vdGUgTW9kaWZpZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGUgZW1vdGUgbW9kcyAoZmxpcCwgc3BpbiwgcHVsc2UsIHNwaW4yLCBzcGluMywgMXNwaW4sIDJzcGluLCAzc3BpbiwgdHIsIGJsLCBiciwgc2hha2UsIHNoYWtlMiwgc2hha2UzLCBmbGFwKVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZU9uSG92ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkFuaW1hdGUgT24gSG92ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk9ubHkgYW5pbWF0ZSB0aGUgZW1vdGUgbW9kaWZpZXJzIG9uIGhvdmVyXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY2F0ZWdvcmllczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJDYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgICAgICAgICB0d2l0Y2hnbG9iYWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlR3aXRjaCBHbG9iYWxzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaCBnbG9iYWwgZW1vdGVzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0d2l0Y2hzdWJzY3JpYmVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJUd2l0Y2ggU3Vic2NyaWJlcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgVHdpdGNoIHN1YnNjcmliZXIgZW1vdGVzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmcmFua2VyZmFjZXo6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkZyYW5rZXJGYWNlWlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZXMgZnJvbSBGRlpcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ0dHY6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkJldHRlclRUVlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZXMgZnJvbSBCVFRWXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBBZGRvbnM6IHtcclxuICAgICAgICB0aXRsZTogXCJ7e25hbWV9fSB2e3t2ZXJzaW9ufX0gYnkge3thdXRob3J9fVwiLFxyXG4gICAgICAgIG9wZW5Gb2xkZXI6IFwiT3BlbiB7e3R5cGV9fSBGb2xkZXJcIixcclxuICAgICAgICByZWxvYWQ6IFwiUmVsb2FkXCIsXHJcbiAgICAgICAgYWRkb25TZXR0aW5nczogXCJTZXR0aW5nc1wiLFxyXG4gICAgICAgIHdlYnNpdGU6IFwiV2Vic2l0ZVwiLFxyXG4gICAgICAgIHNvdXJjZTogXCJTb3VyY2VcIixcclxuICAgICAgICBpbnZpdGU6IFwiU3VwcG9ydCBTZXJ2ZXJcIixcclxuICAgICAgICBkb25hdGU6IFwiRG9uYXRlXCIsXHJcbiAgICAgICAgcGF0cmVvbjogXCJQYXRyZW9uXCIsXHJcbiAgICAgICAgbmFtZTogXCJOYW1lXCIsXHJcbiAgICAgICAgYXV0aG9yOiBcIkF1dGhvclwiLFxyXG4gICAgICAgIHZlcnNpb246IFwiVmVyc2lvblwiLFxyXG4gICAgICAgIGFkZGVkOiBcIkRhdGUgQWRkZWRcIixcclxuICAgICAgICBtb2RpZmllZDogXCJEYXRlIE1vZGlmaWVkXCIsXHJcbiAgICAgICAgc2VhcmNoOiBcIlNlYXJjaCB7e3R5cGV9fVwiLFxyXG4gICAgICAgIGVkaXRBZGRvbjogXCJFZGl0XCIsXHJcbiAgICAgICAgZGVsZXRlQWRkb246IFwiRGVsZXRlXCIsXHJcbiAgICAgICAgY29uZmlybURlbGV0ZTogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHt7bmFtZX19P1wiLFxyXG4gICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFwiWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzIHRvIHt7bmFtZX19LiBDbG9zaW5nIHRoaXMgd2luZG93IHdpbGwgbG9zZSBhbGwgdGhvc2UgY2hhbmdlcy5cIixcclxuICAgICAgICBlbmFibGVkOiBcInt7bmFtZX19IGhhcyBiZWVuIGVuYWJsZWQuXCIsXHJcbiAgICAgICAgZGlzYWJsZWQ6IFwie3tuYW1lfX0gaGFzIGJlZW4gZGlzYWJsZWQuXCIsXHJcbiAgICAgICAgdW5rbm93bkF1dGhvcjogXCJVbmtub3duIEF1dGhvclwiLFxyXG4gICAgICAgIG5vRGVzY3JpcHRpb246IFwiRGVzY3JpcHRpb24gbm90IHByb3ZpZGVkLlwiXHJcbiAgICB9LFxyXG4gICAgRW1vdGVzOiB7XHJcbiAgICAgICAgbG9hZGluZzogXCJMb2FkaW5nIGVtb3RlcyBpbiB0aGUgYmFja2dyb3VuZCBkbyBub3QgcmVsb2FkLlwiLFxyXG4gICAgICAgIGxvYWRlZDogXCJBbGwgZW1vdGVzIHN1Y2Nlc3NmdWxseSBsb2FkZWQuXCIsXHJcbiAgICAgICAgY2xlYXJFbW90ZXM6IFwiQ2xlYXIgRW1vdGUgRGF0YVwiLFxyXG4gICAgICAgIGZhdm9yaXRlQWN0aW9uOiBcIkZhdm9yaXRlIVwiXHJcbiAgICB9LFxyXG4gICAgQ3VzdG9tQ1NTOiB7XHJcbiAgICAgICAgY29uZmlybWF0aW9uVGV4dDogXCJZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgdG8geW91ciBDdXN0b20gQ1NTLiBDbG9zaW5nIHRoaXMgd2luZG93IHdpbGwgbG9zZSBhbGwgdGhvc2UgY2hhbmdlcy5cIixcclxuICAgICAgICB1cGRhdGU6IFwiVXBkYXRlXCIsXHJcbiAgICAgICAgc2F2ZTogXCJTYXZlXCIsXHJcbiAgICAgICAgb3Blbk5hdGl2ZTogXCJPcGVuIGluIFN5c3RlbSBFZGl0b3JcIixcclxuICAgICAgICBvcGVuRGV0YWNoZWQ6IFwiRGV0YWNoIFdpbmRvd1wiLFxyXG4gICAgICAgIHNldHRpbmdzOiBcIkVkaXRvciBTZXR0aW5nc1wiLFxyXG4gICAgICAgIGVkaXRvclRpdGxlOiBcIkN1c3RvbSBDU1MgRWRpdG9yXCJcclxuICAgIH0sXHJcbiAgICBQdWJsaWNTZXJ2ZXJzOiB7XHJcbiAgICAgICAgYnV0dG9uOiBcInB1YmxpY1wiLFxyXG4gICAgICAgIGpvaW46IFwiSm9pblwiLFxyXG4gICAgICAgIGpvaW5pbmc6IFwiSm9pbmluZ1wiLFxyXG4gICAgICAgIGpvaW5lZDogXCJKb2luZWRcIixcclxuICAgICAgICBsb2FkaW5nOiBcIkxvYWRpbmdcIixcclxuICAgICAgICBsb2FkTW9yZTogXCJMb2FkIE1vcmVcIixcclxuICAgICAgICBub3RDb25uZWN0ZWQ6IFwiTm90IGNvbm5lY3RlZCB0byBEaXNjb3JkU2VydmVycy5jb20hXCIsXHJcbiAgICAgICAgc2VhcmNoOiBcIlNlYXJjaFwiLFxyXG4gICAgICAgIGNvbm5lY3Q6IFwiQ29ubmVjdFwiLFxyXG4gICAgICAgIHJlY29ubmVjdDogXCJSZWNvbm5lY3RcIixcclxuICAgICAgICBjYXRlZ29yaWVzOiBcIkNhdGVnb3JpZXNcIixcclxuICAgICAgICBjb25uZWN0aW9uOiBcIkNvbm5lY3RlZCBhczoge3t1c2VybmFtZX19I3t7ZGlzY3JpbWluYXRvcn19XCIsXHJcbiAgICAgICAgcmVzdWx0czogXCJTaG93aW5nIHt7c3RhcnR9fS17e2VuZH19IG9mIHt7dG90YWx9fSByZXN1bHRzIGluIHt7Y2F0ZWdvcnl9fVwiLFxyXG4gICAgICAgIHF1ZXJ5OiBcImZvciB7e3F1ZXJ5fX1cIlxyXG4gICAgfSxcclxuICAgIE1vZGFsczoge1xyXG4gICAgICAgIGNvbmZpcm1BY3Rpb246IFwiQXJlIFlvdSBTdXJlP1wiLFxyXG4gICAgICAgIG9rYXk6IFwiT2theVwiLFxyXG4gICAgICAgIGNhbmNlbDogXCJDYW5jZWxcIixcclxuICAgICAgICBjbG9zZTogXCJDbG9zZVwiLFxyXG4gICAgICAgIG5hbWU6IFwiTmFtZVwiLFxyXG4gICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZVwiLFxyXG4gICAgICAgIGVycm9yOiBcIkVycm9yXCIsXHJcbiAgICAgICAgYWRkb25FcnJvcnM6IFwiQWRkb24gRXJyb3JzXCIsXHJcbiAgICAgICAgcmVzdGFydFJlcXVpcmVkOiBcIlJlc3RhcnQgUmVxdWlyZWRcIixcclxuICAgICAgICByZXN0YXJ0Tm93OiBcIlJlc3RhcnQgTm93XCIsXHJcbiAgICAgICAgcmVzdGFydExhdGVyOiBcIlJlc3RhcnQgTGF0ZXJcIixcclxuICAgICAgICBhZGRpdGlvbmFsSW5mbzogXCJBZGRpdGlvbmFsIEluZm9cIlxyXG4gICAgfSxcclxuICAgIFNvcnRpbmc6IHtcclxuICAgICAgICBzb3J0Qnk6IFwiU29ydCBCeVwiLFxyXG4gICAgICAgIG9yZGVyOiBcIk9yZGVyXCIsXHJcbiAgICAgICAgYXNjZW5kaW5nOiBcIkFzY2VuZGluZ1wiLFxyXG4gICAgICAgIGRlc2NlbmRpbmc6IFwiRGVzY2VuZGluZ1wiXHJcbiAgICB9LFxyXG4gICAgV2luZG93UHJlZnM6IHtcclxuICAgICAgICBlbmFibGVkSW5mbzogXCJUaGlzIG9wdGlvbiByZXF1aXJlcyBhIHRyYW5zcGFyZW50IHRoZW1lIGluIG9yZGVyIHRvIHdvcmsgcHJvcGVybHkuIE9uIFdpbmRvd3MgdGhpcyBtYXkgYnJlYWsgeW91ciBhZXJvIHNuYXBwaW5nIGFuZCBtYXhpbWl6aW5nLlxcblxcbkluIG9yZGVyIHRvIHRha2UgZWZmZWN0LCBEaXNjb3JkIG5lZWRzIHRvIGJlIHJlc3RhcnRlZC4gRG8geW91IHdhbnQgdG8gcmVzdGFydCBub3c/XCIsXHJcbiAgICAgICAgZGlzYWJsZWRJbmZvOiBcIkluIG9yZGVyIHRvIHRha2UgZWZmZWN0LCBEaXNjb3JkIG5lZWRzIHRvIGJlIHJlc3RhcnRlZC4gRG8geW91IHdhbnQgdG8gcmVzdGFydCBub3c/XCJcclxuICAgIH0sXHJcbiAgICBTdGFydHVwOiB7XHJcbiAgICAgICAgbm90U3VwcG9ydGVkOiBcIk5vdCBTdXBwb3J0ZWRcIixcclxuICAgICAgICB2ZXJzaW9uTWlzbWF0Y2g6IFwiQmFuZGFnZWRCRCBJbmplY3RvciB2e3tpbmplY3Rvcn19IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGxhdGVzdCByZW1vdGUgKHZ7e3JlbW90ZX19KS5cXG5cXG5QbGVhc2UgZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gW0dpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC9yZWxlYXNlcy9sYXRlc3QpXCIsXHJcbiAgICAgICAgaW5jb21wYXRpYmxlQXBwOiBcIkJhbmRhZ2VkQkQgZG9lcyBub3Qgd29yayB3aXRoIHt7YXBwfX0uIFBsZWFzZSB1bmluc3RhbGwgb25lIG9mIHRoZW0uXCIsXHJcbiAgICAgICAgdXBkYXRlTm93OiBcIlVwZGF0ZSBOb3dcIixcclxuICAgICAgICBtYXliZUxhdGVyOiBcIk1heWJlIExhdGVyXCIsXHJcbiAgICAgICAgdXBkYXRlQXZhaWxhYmxlOiBcIlVwZGF0ZSBBdmFpbGFibGVcIixcclxuICAgICAgICB1cGRhdGVJbmZvOiBcIlRoZXJlIGlzIGFuIHVwZGF0ZSBhdmFpbGFibGUgZm9yIEJhbmRhZ2VkQkQncyBJbmplY3RvciAoe3t2ZXJzaW9ufX0pLlxcblxcbllvdSBjYW4gZWl0aGVyIHVwZGF0ZSBhbmQgcmVzdGFydCBub3csIG9yIGxhdGVyLlwiLFxyXG4gICAgICAgIHVwZGF0ZUZhaWxlZDogXCJDb3VsZCBOb3QgVXBkYXRlXCIsXHJcbiAgICAgICAgbWFudWFsVXBkYXRlOiBcIlVuYWJsZSB0byB1cGRhdGUgYXV0b21hdGljYWxseSwgcGxlYXNlIGRvd25sb2FkIHRoZSBpbnN0YWxsZXIgYW5kIHJlaW5zdGFsbCBub3JtYWxseS5cXG5cXG5bRG93bmxvYWQgSW5zdGFsbGVyXShodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL3JlbGVhc2VzL2xhdGVzdClcIlxyXG4gICAgfVxyXG59O1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/data/strings.js\n"); /***/ }), @@ -371,7 +371,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonManager; });\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../structs/metaerror */ \"./src/structs/metaerror.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_misc_addoneditor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ui/misc/addoneditor */ \"./src/ui/misc/addoneditor.jsx\");\n/* harmony import */ var _ui_floating_container__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../ui/floating/container */ \"./src/ui/floating/container.jsx\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_8__[\"default\"].React;\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst Module = __webpack_require__(/*! module */ \"module\").Module;\n\nModule.globalPaths.push(path.resolve(__webpack_require__(/*! electron */ \"electron\").remote.app.getAppPath(), \"node_modules\"));\nconst splitRegex = /[^\\S\\r\\n]*?\\r?(?:\\r\\n|\\n)[^\\S\\r\\n]*?\\*[^\\S\\r\\n]?/;\nconst escapedAtRegex = /^\\\\@/;\n\nconst stripBOM = function (fileContent) {\n if (fileContent.charCodeAt(0) === 0xFEFF) {\n fileContent = fileContent.slice(1);\n }\n\n return fileContent;\n};\n\nclass AddonManager {\n get name() {\n return \"\";\n }\n\n get moduleExtension() {\n return \"\";\n }\n\n get extension() {\n return \"\";\n }\n\n get addonFolder() {\n return \"\";\n }\n\n get language() {\n return \"\";\n }\n\n get prefix() {\n return \"addon\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"addons\";\n }\n\n get id() {\n return \"autoReload\";\n }\n\n emit(event, ...args) {\n return _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].emit(`${this.prefix}-${event}`, ...args);\n }\n\n constructor() {\n this.timeCache = {};\n this.addonList = [];\n this.state = {};\n }\n\n initialize() {\n this.originalRequire = Module._extensions[this.moduleExtension];\n Module._extensions[this.moduleExtension] = this.getAddonRequire();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].on(this.collection, this.category, this.id, enabled => {\n if (enabled) this.watchAddons();else this.unwatchAddons();\n });\n return this.loadAllAddons();\n } // Subclasses should overload this and modify the addon object as needed to fully load it\n\n\n initializeAddon() {\n return;\n } // Subclasses should overload this and modify the fileContent as needed to require() the file\n\n\n getFileModification(module, fileContent) {\n return fileContent;\n }\n\n startAddon() {\n return;\n }\n\n stopAddon() {\n return;\n }\n\n loadState() {\n const saved = _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(`${this.prefix}s`);\n if (!saved) return;\n Object.assign(this.state, saved);\n }\n\n saveState() {\n _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(`${this.prefix}s`, this.state);\n }\n\n watchAddons() {\n if (this.watcher) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(this.name, `Already watching ${this.prefix} addons.`);\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(this.name, `Starting to watch ${this.prefix} addons.`);\n this.watcher = fs.watch(this.addonFolder, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename || !filename.endsWith(this.extension)) return;\n await new Promise(r => setTimeout(r, 50));\n\n try {\n fs.statSync(path.resolve(this.addonFolder, filename));\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete this.timeCache[filename];\n this.unloadAddon(filename, true);\n }\n\n if (!fs.statSync(path.resolve(this.addonFolder, filename)).isFile()) return;\n const stats = fs.statSync(path.resolve(this.addonFolder, filename));\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (this.timeCache[filename] == stats.mtime.getTime()) return;\n this.timeCache[filename] = stats.mtime.getTime();\n if (eventType == \"rename\") this.loadAddon(filename, true);\n if (eventType == \"change\") this.reloadAddon(filename, true);\n });\n }\n\n unwatchAddons() {\n if (!this.watcher) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(this.name, `Was not watching ${this.prefix} addons.`);\n this.watcher.close();\n delete this.watcher;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(this.name, `No longer watching ${this.prefix} addons.`);\n }\n\n extractMeta(fileContent) {\n const firstLine = fileContent.split(\"\\n\")[0];\n const hasOldMeta = firstLine.includes(\"//META\");\n if (hasOldMeta) return this.parseOldMeta(fileContent);\n const hasNewMeta = firstLine.includes(\"/**\");\n if (hasNewMeta) return this.parseNewMeta(fileContent);\n throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META was not found.\");\n }\n\n parseOldMeta(fileContent) {\n const meta = fileContent.split(\"\\n\")[0];\n const metaData = meta.substring(meta.lastIndexOf(\"//META\") + 6, meta.lastIndexOf(\"*//\"));\n const parsed = _utilities__WEBPACK_IMPORTED_MODULE_0__[\"default\"].testJSON(metaData);\n if (!parsed) throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META could not be parsed.\");\n if (!parsed.name) throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META missing name data.\");\n parsed.format = \"json\";\n return parsed;\n }\n\n parseNewMeta(fileContent) {\n const block = fileContent.split(\"/**\", 2)[1].split(\"*/\", 1)[0];\n const out = {};\n let field = \"\";\n let accum = \"\";\n\n for (const line of block.split(splitRegex)) {\n if (line.length === 0) continue;\n\n if (line.charAt(0) === \"@\" && line.charAt(1) !== \" \") {\n out[field] = accum;\n const l = line.indexOf(\" \");\n field = line.substr(1, l - 1);\n accum = line.substr(l + 1);\n } else {\n accum += \" \" + line.replace(\"\\\\n\", \"\\n\").replace(escapedAtRegex, \"@\");\n }\n }\n\n out[field] = accum.trim();\n delete out[\"\"];\n out.format = \"jsdoc\";\n return out;\n }\n\n getAddonRequire() {\n const self = this; // const baseFolder = this.addonFolder;\n\n const originalRequire = this.originalRequire;\n return function (module, filename) {\n const possiblePath = path.resolve(self.addonFolder, path.basename(filename));\n if (!fs.existsSync(possiblePath) || filename !== fs.realpathSync(possiblePath)) return Reflect.apply(originalRequire, this, arguments);\n let fileContent = fs.readFileSync(filename, \"utf8\");\n fileContent = stripBOM(fileContent);\n const stats = fs.statSync(filename);\n const meta = self.extractMeta(fileContent);\n meta.id = meta.name;\n meta.filename = path.basename(filename);\n meta.added = stats.atimeMs;\n meta.modified = stats.mtimeMs;\n meta.size = stats.size;\n fileContent = self.getFileModification(module, fileContent, meta);\n\n module._compile(fileContent, filename);\n };\n } // Subclasses should use the return (if not AddonError) and push to this.addonList\n\n\n loadAddon(filename, shouldToast = false) {\n if (typeof filename === \"undefined\") return;\n\n try {\n require(path.resolve(this.addonFolder, filename));\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"](filename, filename, \"Could not be compiled.\", {\n message: error.message,\n stack: error.stack\n });\n }\n\n const addon = require(path.resolve(this.addonFolder, filename));\n\n if (this.addonList.find(c => c.id == addon.id)) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"](addon.name, filename, `There is already a plugin with name ${addon.name}`);\n const error = this.initializeAddon(addon);\n if (error) return error;\n this.addonList.push(addon);\n if (shouldToast) _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].success(`${addon.name} v${addon.version} was loaded.`);\n this.emit(\"loaded\", addon.id);\n if (!this.state[addon.id]) return this.state[addon.id] = false;\n return this.startAddon(addon);\n }\n\n unloadAddon(idOrFileOrAddon, shouldToast = true, isReload = false) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n if (!addon) return false;\n if (this.state[addon.id]) isReload ? this.stopAddon(addon) : this.disableAddon(addon);\n delete require.cache[require.resolve(path.resolve(this.addonFolder, addon.filename))];\n this.addonList.splice(this.addonList.indexOf(addon), 1);\n this.emit(\"unloaded\", addon.id);\n if (shouldToast) _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].success(`${addon.name} was unloaded.`);\n return true;\n }\n\n reloadAddon(idOrFileOrAddon, shouldToast = true) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n const didUnload = this.unloadAddon(addon, shouldToast, true);\n if (!didUnload) return didUnload;\n return this.loadAddon(addon.filename, shouldToast);\n }\n\n isLoaded(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return false;\n return true;\n }\n\n isEnabled(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return false;\n return this.state[addon.id];\n }\n\n enableAddon(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n if (this.state[addon.id]) return;\n this.state[addon.id] = true;\n this.startAddon(addon);\n this.saveState();\n }\n\n disableAddon(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n if (!this.state[addon.id]) return;\n this.state[addon.id] = false;\n this.stopAddon(addon);\n this.saveState();\n }\n\n toggleAddon(id) {\n if (this.state[id]) this.disableAddon(id);else this.enableAddon(id);\n }\n\n loadNewAddons() {\n const files = fs.readdirSync(this.addonFolder);\n const removed = this.addonList.filter(t => !files.includes(t.filename)).map(c => c.id);\n const added = files.filter(f => !this.addonList.find(t => t.filename == f) && f.endsWith(this.extension) && fs.statSync(path.resolve(this.addonFolder, f)).isFile());\n return {\n added,\n removed\n };\n }\n\n updateList() {\n const results = this.loadNewAddons();\n\n for (const filename of results.added) this.loadAddon(filename);\n\n for (const name of results.removed) this.unloadAddon(name);\n }\n\n loadAllAddons() {\n this.loadState();\n const errors = [];\n const files = fs.readdirSync(this.addonFolder);\n\n for (const filename of files) {\n if (!fs.statSync(path.resolve(this.addonFolder, filename)).isFile() || !filename.endsWith(this.extension)) continue;\n const addon = this.loadAddon(filename, false);\n if (addon instanceof _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) errors.push(addon);\n }\n\n this.saveState();\n if (_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.collection, this.category, this.id)) this.watchAddons();\n return errors;\n }\n\n deleteAddon(idOrFileOrAddon) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n return fs.unlinkSync(path.resolve(this.addonFolder, addon.filename));\n }\n\n saveAddon(idOrFileOrAddon, content) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n return fs.writeFileSync(path.resolve(this.addonFolder, addon.filename), content);\n }\n\n editAddon(idOrFileOrAddon, system) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n const fullPath = path.resolve(this.addonFolder, addon.filename);\n if (typeof system == \"undefined\") system = _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"settings\", \"addons\", \"editAction\") == \"system\";\n if (system) return __webpack_require__(/*! electron */ \"electron\").shell.openItem(`${fullPath}`);\n return this.openDetached(addon);\n }\n\n openDetached(addon) {\n const fullPath = path.resolve(this.addonFolder, addon.filename);\n const content = fs.readFileSync(fullPath).toString();\n const editorRef = React.createRef();\n const editor = React.createElement(_ui_misc_addoneditor__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n id: \"bd-floating-editor-\" + addon.name,\n ref: editorRef,\n content: content,\n save: this.saveAddon.bind(this, addon),\n openNative: this.editAddon.bind(this, addon, true),\n language: this.language\n });\n _ui_floating_container__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: addon.name,\n id: content.id,\n className: \"floating-addon-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.confirmationText.format({\n name: addon.name\n })\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvYWRkb25tYW5hZ2VyLmpzP2NlYTkiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsInBhdGgiLCJyZXF1aXJlIiwiZnMiLCJNb2R1bGUiLCJnbG9iYWxQYXRocyIsInB1c2giLCJyZXNvbHZlIiwicmVtb3RlIiwiYXBwIiwiZ2V0QXBwUGF0aCIsInNwbGl0UmVnZXgiLCJlc2NhcGVkQXRSZWdleCIsInN0cmlwQk9NIiwiZmlsZUNvbnRlbnQiLCJjaGFyQ29kZUF0Iiwic2xpY2UiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJsYW5ndWFnZSIsInByZWZpeCIsImNvbGxlY3Rpb24iLCJjYXRlZ29yeSIsImlkIiwiZW1pdCIsImV2ZW50IiwiYXJncyIsIkV2ZW50cyIsImNvbnN0cnVjdG9yIiwidGltZUNhY2hlIiwiYWRkb25MaXN0Iiwic3RhdGUiLCJpbml0aWFsaXplIiwib3JpZ2luYWxSZXF1aXJlIiwiX2V4dGVuc2lvbnMiLCJnZXRBZGRvblJlcXVpcmUiLCJTZXR0aW5ncyIsIm9uIiwiZW5hYmxlZCIsIndhdGNoQWRkb25zIiwidW53YXRjaEFkZG9ucyIsImxvYWRBbGxBZGRvbnMiLCJpbml0aWFsaXplQWRkb24iLCJnZXRGaWxlTW9kaWZpY2F0aW9uIiwibW9kdWxlIiwic3RhcnRBZGRvbiIsInN0b3BBZGRvbiIsImxvYWRTdGF0ZSIsInNhdmVkIiwiRGF0YVN0b3JlIiwiZ2V0RGF0YSIsIk9iamVjdCIsImFzc2lnbiIsInNhdmVTdGF0ZSIsInNldERhdGEiLCJ3YXRjaGVyIiwiTG9nZ2VyIiwiZXJyb3IiLCJsb2ciLCJ3YXRjaCIsInBlcnNpc3RlbnQiLCJldmVudFR5cGUiLCJmaWxlbmFtZSIsImVuZHNXaXRoIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0Iiwic3RhdFN5bmMiLCJlcnIiLCJjb2RlIiwidW5sb2FkQWRkb24iLCJpc0ZpbGUiLCJzdGF0cyIsIm10aW1lIiwiZ2V0VGltZSIsImxvYWRBZGRvbiIsInJlbG9hZEFkZG9uIiwiY2xvc2UiLCJleHRyYWN0TWV0YSIsImZpcnN0TGluZSIsInNwbGl0IiwiaGFzT2xkTWV0YSIsImluY2x1ZGVzIiwicGFyc2VPbGRNZXRhIiwiaGFzTmV3TWV0YSIsInBhcnNlTmV3TWV0YSIsIk1ldGFFcnJvciIsIm1ldGEiLCJtZXRhRGF0YSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwicGFyc2VkIiwiVXRpbGl0aWVzIiwidGVzdEpTT04iLCJmb3JtYXQiLCJibG9jayIsIm91dCIsImZpZWxkIiwiYWNjdW0iLCJsaW5lIiwibGVuZ3RoIiwiY2hhckF0IiwibCIsImluZGV4T2YiLCJzdWJzdHIiLCJyZXBsYWNlIiwidHJpbSIsInNlbGYiLCJwb3NzaWJsZVBhdGgiLCJiYXNlbmFtZSIsImV4aXN0c1N5bmMiLCJyZWFscGF0aFN5bmMiLCJSZWZsZWN0IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJyZWFkRmlsZVN5bmMiLCJhZGRlZCIsImF0aW1lTXMiLCJtb2RpZmllZCIsIm10aW1lTXMiLCJzaXplIiwiX2NvbXBpbGUiLCJzaG91bGRUb2FzdCIsIl9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fIiwiQWRkb25FcnJvciIsIm1lc3NhZ2UiLCJzdGFjayIsImFkZG9uIiwiZmluZCIsImMiLCJUb2FzdHMiLCJzdWNjZXNzIiwidmVyc2lvbiIsImlkT3JGaWxlT3JBZGRvbiIsImlzUmVsb2FkIiwiZGlzYWJsZUFkZG9uIiwiY2FjaGUiLCJzcGxpY2UiLCJkaWRVbmxvYWQiLCJpc0xvYWRlZCIsImlkT3JGaWxlIiwiaXNFbmFibGVkIiwiZW5hYmxlQWRkb24iLCJpZE9yQWRkb24iLCJwIiwidG9nZ2xlQWRkb24iLCJsb2FkTmV3QWRkb25zIiwiZmlsZXMiLCJyZWFkZGlyU3luYyIsInJlbW92ZWQiLCJmaWx0ZXIiLCJ0IiwibWFwIiwiZiIsInVwZGF0ZUxpc3QiLCJyZXN1bHRzIiwiZXJyb3JzIiwiZ2V0IiwiZGVsZXRlQWRkb24iLCJ1bmxpbmtTeW5jIiwic2F2ZUFkZG9uIiwiY29udGVudCIsIndyaXRlRmlsZVN5bmMiLCJlZGl0QWRkb24iLCJzeXN0ZW0iLCJmdWxsUGF0aCIsInNoZWxsIiwib3Blbkl0ZW0iLCJvcGVuRGV0YWNoZWQiLCJ0b1N0cmluZyIsImVkaXRvclJlZiIsImNyZWF0ZVJlZiIsImVkaXRvciIsImNyZWF0ZUVsZW1lbnQiLCJBZGRvbkVkaXRvciIsInJlZiIsInNhdmUiLCJiaW5kIiwib3Blbk5hdGl2ZSIsIkZsb2F0aW5nV2luZG93Q29udGFpbmVyIiwib3BlbiIsIm9uQ2xvc2UiLCJpc0RldGFjaGVkIiwib25SZXNpemUiLCJjdXJyZW50IiwicmVzaXplIiwidGl0bGUiLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJ3aWR0aCIsImNlbnRlciIsInJlc2l6YWJsZSIsImNoaWxkcmVuIiwiY29uZmlybUNsb3NlIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJjb25maXJtYXRpb25UZXh0IiwiU3RyaW5ncyIsIkFkZG9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBLE1BQU1BLEtBQUssR0FBR0MsdURBQWMsQ0FBQ0QsS0FBN0I7O0FBRUEsTUFBTUUsSUFBSSxHQUFHQyxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsbUJBQU8sQ0FBQyxzQkFBRCxDQUFQLENBQWtCRSxNQUFqQzs7QUFDQUEsTUFBTSxDQUFDQyxXQUFQLENBQW1CQyxJQUFuQixDQUF3QkwsSUFBSSxDQUFDTSxPQUFMLENBQWFMLG1CQUFPLENBQUMsMEJBQUQsQ0FB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YyxPQUFWLENBQWtCQyxNQUEzRCxFQUFtRTtBQUNuRWYsaUJBQVMsQ0FBQ2MsT0FBVixDQUFrQkMsTUFBbEI7QUFDSCxPQVB3QjtBQVF6QkMsV0FBSyxFQUFFM0QsS0FBSyxDQUFDaEgsSUFSWTtBQVN6QlEsUUFBRSxFQUFFMEksT0FBTyxDQUFDMUksRUFUYTtBQVV6Qm9LLGVBQVMsRUFBRSx1QkFWYztBQVd6QkMsWUFBTSxFQUFFLEdBWGlCO0FBWXpCQyxXQUFLLEVBQUUsR0Faa0I7QUFhekJDLFlBQU0sRUFBRSxJQWJpQjtBQWN6QkMsZUFBUyxFQUFFLElBZGM7QUFlekJDLGNBQVEsRUFBRXBCLE1BZmU7QUFnQnpCcUIsa0JBQVksRUFBRSxNQUFNO0FBQ2hCLFlBQUksQ0FBQ3ZCLFNBQUQsSUFBYyxDQUFDQSxTQUFTLENBQUNjLE9BQTdCLEVBQXNDLE9BQU8sS0FBUDtBQUN0QyxlQUFPZCxTQUFTLENBQUNjLE9BQVYsQ0FBa0JVLGlCQUF6QjtBQUNILE9BbkJ3QjtBQW9CekJDLHNCQUFnQixFQUFFQyxnREFBTyxDQUFDQyxNQUFSLENBQWVGLGdCQUFmLENBQWdDckcsTUFBaEMsQ0FBdUM7QUFBQy9FLFlBQUksRUFBRWdILEtBQUssQ0FBQ2hIO0FBQWIsT0FBdkM7QUFwQk8sS0FBN0I7QUFzQkg7O0FBdFM2QiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL2FkZG9ubWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBBZGRvbkVycm9yIGZyb20gXCIuLi9zdHJ1Y3RzL2FkZG9uZXJyb3JcIjtcclxuaW1wb3J0IE1ldGFFcnJvciBmcm9tIFwiLi4vc3RydWN0cy9tZXRhZXJyb3JcIjtcclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgU3RyaW5ncyBmcm9tIFwiLi9zdHJpbmdzXCI7XHJcblxyXG5pbXBvcnQgQWRkb25FZGl0b3IgZnJvbSBcIi4uL3VpL21pc2MvYWRkb25lZGl0b3JcIjtcclxuaW1wb3J0IEZsb2F0aW5nV2luZG93Q29udGFpbmVyIGZyb20gXCIuLi91aS9mbG9hdGluZy9jb250YWluZXJcIjtcclxuXHJcbmNvbnN0IFJlYWN0ID0gRGlzY29yZE1vZHVsZXMuUmVhY3Q7XHJcblxyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKFwibW9kdWxlXCIpLk1vZHVsZTtcclxuTW9kdWxlLmdsb2JhbFBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwLmdldEFwcFBhdGgoKSwgXCJub2RlX21vZHVsZXNcIikpO1xyXG5cclxuY29uc3Qgc3BsaXRSZWdleCA9IC9bXlxcU1xcclxcbl0qP1xccj8oPzpcXHJcXG58XFxuKVteXFxTXFxyXFxuXSo/XFwqW15cXFNcXHJcXG5dPy87XHJcbmNvbnN0IGVzY2FwZWRBdFJlZ2V4ID0gL15cXFxcQC87XHJcblxyXG5jb25zdCBzdHJpcEJPTSA9IGZ1bmN0aW9uKGZpbGVDb250ZW50KSB7XHJcbiAgICBpZiAoZmlsZUNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XHJcbiAgICAgICAgZmlsZUNvbnRlbnQgPSBmaWxlQ29udGVudC5zbGljZSgxKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlQ29udGVudDtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkZG9uTWFuYWdlciB7XHJcblxyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiXCI7fVxyXG4gICAgZ2V0IG1vZHVsZUV4dGVuc2lvbigpIHtyZXR1cm4gXCJcIjt9XHJcbiAgICBnZXQgZXh0ZW5zaW9uKCkge3JldHVybiBcIlwiO31cclxuICAgIGdldCBhZGRvbkZvbGRlcigpIHtyZXR1cm4gXCJcIjt9XHJcbiAgICBnZXQgbGFuZ3VhZ2UoKSB7cmV0dXJuIFwiXCI7fVxyXG4gICAgZ2V0IHByZWZpeCgpIHtyZXR1cm4gXCJhZGRvblwiO31cclxuICAgIGdldCBjb2xsZWN0aW9uKCkge3JldHVybiBcInNldHRpbmdzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImFkZG9uc1wiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJhdXRvUmVsb2FkXCI7fVxyXG4gICAgZW1pdChldmVudCwgLi4uYXJncykge3JldHVybiBFdmVudHMuZW1pdChgJHt0aGlzLnByZWZpeH0tJHtldmVudH1gLCAuLi5hcmdzKTt9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy50aW1lQ2FjaGUgPSB7fTtcclxuICAgICAgICB0aGlzLmFkZG9uTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxSZXF1aXJlID0gTW9kdWxlLl9leHRlbnNpb25zW3RoaXMubW9kdWxlRXh0ZW5zaW9uXTtcclxuICAgICAgICBNb2R1bGUuX2V4dGVuc2lvbnNbdGhpcy5tb2R1bGVFeHRlbnNpb25dID0gdGhpcy5nZXRBZGRvblJlcXVpcmUoKTtcclxuICAgICAgICBTZXR0aW5ncy5vbih0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIHRoaXMuaWQsIChlbmFibGVkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbmFibGVkKSB0aGlzLndhdGNoQWRkb25zKCk7XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy51bndhdGNoQWRkb25zKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZEFsbEFkZG9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJsb2FkIHRoaXMgYW5kIG1vZGlmeSB0aGUgYWRkb24gb2JqZWN0IGFzIG5lZWRlZCB0byBmdWxseSBsb2FkIGl0XHJcbiAgICBpbml0aWFsaXplQWRkb24oKSB7cmV0dXJuO31cclxuXHJcbiAgICAvLyBTdWJjbGFzc2VzIHNob3VsZCBvdmVybG9hZCB0aGlzIGFuZCBtb2RpZnkgdGhlIGZpbGVDb250ZW50IGFzIG5lZWRlZCB0byByZXF1aXJlKCkgdGhlIGZpbGVcclxuICAgIGdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCkge3JldHVybiBmaWxlQ29udGVudDt9XHJcblxyXG4gICAgc3RhcnRBZGRvbigpIHtyZXR1cm47fVxyXG4gICAgc3RvcEFkZG9uKCkge3JldHVybjt9XHJcblxyXG4gICAgbG9hZFN0YXRlKCkge1xyXG4gICAgICAgIGNvbnN0IHNhdmVkID0gRGF0YVN0b3JlLmdldERhdGEoYCR7dGhpcy5wcmVmaXh9c2ApO1xyXG4gICAgICAgIGlmICghc2F2ZWQpIHJldHVybjtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuc3RhdGUsIHNhdmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlU3RhdGUoKSB7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldERhdGEoYCR7dGhpcy5wcmVmaXh9c2AsIHRoaXMuc3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhdGNoQWRkb25zKCkge1xyXG4gICAgICAgIGlmICh0aGlzLndhdGNoZXIpIHJldHVybiBMb2dnZXIuZXJyb3IodGhpcy5uYW1lLCBgQWxyZWFkeSB3YXRjaGluZyAke3RoaXMucHJlZml4fSBhZGRvbnMuYCk7XHJcbiAgICAgICAgTG9nZ2VyLmxvZyh0aGlzLm5hbWUsIGBTdGFydGluZyB0byB3YXRjaCAke3RoaXMucHJlZml4fSBhZGRvbnMuYCk7XHJcbiAgICAgICAgdGhpcy53YXRjaGVyID0gZnMud2F0Y2godGhpcy5hZGRvbkZvbGRlciwge3BlcnNpc3RlbnQ6IGZhbHNlfSwgYXN5bmMgKGV2ZW50VHlwZSwgZmlsZW5hbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFldmVudFR5cGUgfHwgIWZpbGVuYW1lIHx8ICFmaWxlbmFtZS5lbmRzV2l0aCh0aGlzLmV4dGVuc2lvbikpIHJldHVybjtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XHJcbiAgICAgICAgICAgIHRyeSB7ZnMuc3RhdFN5bmMocGF0aC5yZXNvbHZlKHRoaXMuYWRkb25Gb2xkZXIsIGZpbGVuYW1lKSk7fVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRU5PRU5UXCIpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRpbWVDYWNoZVtmaWxlbmFtZV07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVubG9hZEFkZG9uKGZpbGVuYW1lLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpLmlzRmlsZSgpKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMocGF0aC5yZXNvbHZlKHRoaXMuYWRkb25Gb2xkZXIsIGZpbGVuYW1lKSk7XHJcbiAgICAgICAgICAgIGlmICghc3RhdHMgfHwgIXN0YXRzLm10aW1lIHx8ICFzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihzdGF0cy5tdGltZS5nZXRUaW1lKCkpICE9PSBcIm51bWJlclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVDYWNoZVtmaWxlbmFtZV0gPT0gc3RhdHMubXRpbWUuZ2V0VGltZSgpKSByZXR1cm47XHJcbiAgICAgICAgICAgIHRoaXMudGltZUNhY2hlW2ZpbGVuYW1lXSA9IHN0YXRzLm10aW1lLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBcInJlbmFtZVwiKSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGlmIChldmVudFR5cGUgPT0gXCJjaGFuZ2VcIikgdGhpcy5yZWxvYWRBZGRvbihmaWxlbmFtZSwgdHJ1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdW53YXRjaEFkZG9ucygpIHtcclxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlcikgcmV0dXJuIExvZ2dlci5lcnJvcih0aGlzLm5hbWUsIGBXYXMgbm90IHdhdGNoaW5nICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIuY2xvc2UoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy53YXRjaGVyO1xyXG4gICAgICAgIExvZ2dlci5sb2codGhpcy5uYW1lLCBgTm8gbG9uZ2VyIHdhdGNoaW5nICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgIH1cclxuXHJcbiAgICBleHRyYWN0TWV0YShmaWxlQ29udGVudCkge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0TGluZSA9IGZpbGVDb250ZW50LnNwbGl0KFwiXFxuXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IGhhc09sZE1ldGEgPSBmaXJzdExpbmUuaW5jbHVkZXMoXCIvL01FVEFcIik7XHJcbiAgICAgICAgaWYgKGhhc09sZE1ldGEpIHJldHVybiB0aGlzLnBhcnNlT2xkTWV0YShmaWxlQ29udGVudCk7XHJcbiAgICAgICAgY29uc3QgaGFzTmV3TWV0YSA9IGZpcnN0TGluZS5pbmNsdWRlcyhcIi8qKlwiKTtcclxuICAgICAgICBpZiAoaGFzTmV3TWV0YSkgcmV0dXJuIHRoaXMucGFyc2VOZXdNZXRhKGZpbGVDb250ZW50KTtcclxuICAgICAgICB0aHJvdyBuZXcgTWV0YUVycm9yKFwiTUVUQSB3YXMgbm90IGZvdW5kLlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZU9sZE1ldGEoZmlsZUNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBtZXRhID0gZmlsZUNvbnRlbnQuc3BsaXQoXCJcXG5cIilbMF07XHJcbiAgICAgICAgY29uc3QgbWV0YURhdGEgPSBtZXRhLnN1YnN0cmluZyhtZXRhLmxhc3RJbmRleE9mKFwiLy9NRVRBXCIpICsgNiwgbWV0YS5sYXN0SW5kZXhPZihcIiovL1wiKSk7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gVXRpbGl0aWVzLnRlc3RKU09OKG1ldGFEYXRhKTtcclxuICAgICAgICBpZiAoIXBhcnNlZCkgdGhyb3cgbmV3IE1ldGFFcnJvcihcIk1FVEEgY291bGQgbm90IGJlIHBhcnNlZC5cIik7XHJcbiAgICAgICAgaWYgKCFwYXJzZWQubmFtZSkgdGhyb3cgbmV3IE1ldGFFcnJvcihcIk1FVEEgbWlzc2luZyBuYW1lIGRhdGEuXCIpO1xyXG4gICAgICAgIHBhcnNlZC5mb3JtYXQgPSBcImpzb25cIjtcclxuICAgICAgICByZXR1cm4gcGFyc2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcnNlTmV3TWV0YShmaWxlQ29udGVudCkge1xyXG4gICAgICAgIGNvbnN0IGJsb2NrID0gZmlsZUNvbnRlbnQuc3BsaXQoXCIvKipcIiwgMilbMV0uc3BsaXQoXCIqL1wiLCAxKVswXTtcclxuICAgICAgICBjb25zdCBvdXQgPSB7fTtcclxuICAgICAgICBsZXQgZmllbGQgPSBcIlwiO1xyXG4gICAgICAgIGxldCBhY2N1bSA9IFwiXCI7XHJcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGJsb2NrLnNwbGl0KHNwbGl0UmVnZXgpKSB7XHJcbiAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA9PT0gMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChsaW5lLmNoYXJBdCgwKSA9PT0gXCJAXCIgJiYgbGluZS5jaGFyQXQoMSkgIT09IFwiIFwiKSB7XHJcbiAgICAgICAgICAgICAgICBvdXRbZmllbGRdID0gYWNjdW07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsID0gbGluZS5pbmRleE9mKFwiIFwiKTtcclxuICAgICAgICAgICAgICAgIGZpZWxkID0gbGluZS5zdWJzdHIoMSwgbCAtIDEpO1xyXG4gICAgICAgICAgICAgICAgYWNjdW0gPSBsaW5lLnN1YnN0cihsICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhY2N1bSArPSBcIiBcIiArIGxpbmUucmVwbGFjZShcIlxcXFxuXCIsIFwiXFxuXCIpLnJlcGxhY2UoZXNjYXBlZEF0UmVnZXgsIFwiQFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBvdXRbZmllbGRdID0gYWNjdW0udHJpbSgpO1xyXG4gICAgICAgIGRlbGV0ZSBvdXRbXCJcIl07XHJcbiAgICAgICAgb3V0LmZvcm1hdCA9IFwianNkb2NcIjtcclxuICAgICAgICByZXR1cm4gb3V0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZG9uUmVxdWlyZSgpIHtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICAvLyBjb25zdCBiYXNlRm9sZGVyID0gdGhpcy5hZGRvbkZvbGRlcjtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbFJlcXVpcmUgPSB0aGlzLm9yaWdpbmFsUmVxdWlyZTtcclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24obW9kdWxlLCBmaWxlbmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBwb3NzaWJsZVBhdGggPSBwYXRoLnJlc29sdmUoc2VsZi5hZGRvbkZvbGRlciwgcGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpO1xyXG4gICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocG9zc2libGVQYXRoKSB8fCBmaWxlbmFtZSAhPT0gZnMucmVhbHBhdGhTeW5jKHBvc3NpYmxlUGF0aCkpIHJldHVybiBSZWZsZWN0LmFwcGx5KG9yaWdpbmFsUmVxdWlyZSwgdGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgbGV0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCBcInV0ZjhcIik7XHJcbiAgICAgICAgICAgIGZpbGVDb250ZW50ID0gc3RyaXBCT00oZmlsZUNvbnRlbnQpO1xyXG4gICAgICAgICAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKGZpbGVuYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgbWV0YSA9IHNlbGYuZXh0cmFjdE1ldGEoZmlsZUNvbnRlbnQpO1xyXG4gICAgICAgICAgICBtZXRhLmlkID0gbWV0YS5uYW1lO1xyXG4gICAgICAgICAgICBtZXRhLmZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlbmFtZSk7XHJcbiAgICAgICAgICAgIG1ldGEuYWRkZWQgPSBzdGF0cy5hdGltZU1zO1xyXG4gICAgICAgICAgICBtZXRhLm1vZGlmaWVkID0gc3RhdHMubXRpbWVNcztcclxuICAgICAgICAgICAgbWV0YS5zaXplID0gc3RhdHMuc2l6ZTtcclxuICAgICAgICAgICAgZmlsZUNvbnRlbnQgPSBzZWxmLmdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCwgbWV0YSk7XHJcbiAgICAgICAgICAgIG1vZHVsZS5fY29tcGlsZShmaWxlQ29udGVudCwgZmlsZW5hbWUpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3ViY2xhc3NlcyBzaG91bGQgdXNlIHRoZSByZXR1cm4gKGlmIG5vdCBBZGRvbkVycm9yKSBhbmQgcHVzaCB0byB0aGlzLmFkZG9uTGlzdFxyXG4gICAgbG9hZEFkZG9uKGZpbGVuYW1lLCBzaG91bGRUb2FzdCA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihmaWxlbmFtZSkgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcclxuICAgICAgICB0cnkge19fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpO31cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtyZXR1cm4gbmV3IEFkZG9uRXJyb3IoZmlsZW5hbWUsIGZpbGVuYW1lLCBcIkNvdWxkIG5vdCBiZSBjb21waWxlZC5cIiwge21lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsIHN0YWNrOiBlcnJvci5zdGFja30pO31cclxuICAgICAgICBjb25zdCBhZGRvbiA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBhZGRvbi5pZCkpIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBmaWxlbmFtZSwgYFRoZXJlIGlzIGFscmVhZHkgYSBwbHVnaW4gd2l0aCBuYW1lICR7YWRkb24ubmFtZX1gKTtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMuaW5pdGlhbGl6ZUFkZG9uKGFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIHJldHVybiBlcnJvcjtcclxuICAgICAgICB0aGlzLmFkZG9uTGlzdC5wdXNoKGFkZG9uKTtcclxuICAgICAgICBpZiAoc2hvdWxkVG9hc3QpIFRvYXN0cy5zdWNjZXNzKGAke2FkZG9uLm5hbWV9IHYke2FkZG9uLnZlcnNpb259IHdhcyBsb2FkZWQuYCk7XHJcbiAgICAgICAgdGhpcy5lbWl0KFwibG9hZGVkXCIsIGFkZG9uLmlkKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlW2FkZG9uLmlkXSkgcmV0dXJuIHRoaXMuc3RhdGVbYWRkb24uaWRdID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRBZGRvbihhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgdW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uLCBzaG91bGRUb2FzdCA9IHRydWUsIGlzUmVsb2FkID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZVthZGRvbi5pZF0pIGlzUmVsb2FkID8gdGhpcy5zdG9wQWRkb24oYWRkb24pIDogdGhpcy5kaXNhYmxlQWRkb24oYWRkb24pO1xyXG4gICAgICAgIGRlbGV0ZSBfX25vbl93ZWJwYWNrX3JlcXVpcmVfXy5jYWNoZVtfX25vbl93ZWJwYWNrX3JlcXVpcmVfXy5yZXNvbHZlKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBhZGRvbi5maWxlbmFtZSkpXTtcclxuICAgICAgICB0aGlzLmFkZG9uTGlzdC5zcGxpY2UodGhpcy5hZGRvbkxpc3QuaW5kZXhPZihhZGRvbiksIDEpO1xyXG4gICAgICAgIHRoaXMuZW1pdChcInVubG9hZGVkXCIsIGFkZG9uLmlkKTtcclxuICAgICAgICBpZiAoc2hvdWxkVG9hc3QpIFRvYXN0cy5zdWNjZXNzKGAke2FkZG9uLm5hbWV9IHdhcyB1bmxvYWRlZC5gKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24sIHNob3VsZFRvYXN0ID0gdHJ1ZSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JGaWxlT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlT3JBZGRvbiB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlT3JBZGRvbikgOiBpZE9yRmlsZU9yQWRkb247XHJcbiAgICAgICAgY29uc3QgZGlkVW5sb2FkID0gdGhpcy51bmxvYWRBZGRvbihhZGRvbiwgc2hvdWxkVG9hc3QsIHRydWUpO1xyXG4gICAgICAgIGlmICghZGlkVW5sb2FkKSByZXR1cm4gZGlkVW5sb2FkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRBZGRvbihhZGRvbi5maWxlbmFtZSwgc2hvdWxkVG9hc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTG9hZGVkKGlkT3JGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZSB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlKTtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaXNFbmFibGVkKGlkT3JGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZSB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlKTtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVbYWRkb24uaWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZUFkZG9uKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlW2FkZG9uLmlkXSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc3RhdGVbYWRkb24uaWRdID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN0YXJ0QWRkb24oYWRkb24pO1xyXG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUFkZG9uKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVthZGRvbi5pZF0pIHJldHVybjtcclxuICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3RvcEFkZG9uKGFkZG9uKTtcclxuICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZUFkZG9uKGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbaWRdKSB0aGlzLmRpc2FibGVBZGRvbihpZCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLmVuYWJsZUFkZG9uKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkTmV3QWRkb25zKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmModGhpcy5hZGRvbkZvbGRlcik7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IHRoaXMuYWRkb25MaXN0LmZpbHRlcih0ID0+ICFmaWxlcy5pbmNsdWRlcyh0LmZpbGVuYW1lKSkubWFwKGMgPT4gYy5pZCk7XHJcbiAgICAgICAgY29uc3QgYWRkZWQgPSBmaWxlcy5maWx0ZXIoZiA9PiAhdGhpcy5hZGRvbkxpc3QuZmluZCh0ID0+IHQuZmlsZW5hbWUgPT0gZikgJiYgZi5lbmRzV2l0aCh0aGlzLmV4dGVuc2lvbikgJiYgZnMuc3RhdFN5bmMocGF0aC5yZXNvbHZlKHRoaXMuYWRkb25Gb2xkZXIsIGYpKS5pc0ZpbGUoKSk7XHJcbiAgICAgICAgcmV0dXJuIHthZGRlZCwgcmVtb3ZlZH07XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlTGlzdCgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5sb2FkTmV3QWRkb25zKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiByZXN1bHRzLmFkZGVkKSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIHJlc3VsdHMucmVtb3ZlZCkgdGhpcy51bmxvYWRBZGRvbihuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQWxsQWRkb25zKCkge1xyXG4gICAgICAgIHRoaXMubG9hZFN0YXRlKCk7XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gW107XHJcbiAgICAgICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLmFkZG9uRm9sZGVyKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmaWxlcykge1xyXG4gICAgICAgICAgICBpZiAoIWZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpLmlzRmlsZSgpIHx8ICFmaWxlbmFtZS5lbmRzV2l0aCh0aGlzLmV4dGVuc2lvbikpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb25zdCBhZGRvbiA9IHRoaXMubG9hZEFkZG9uKGZpbGVuYW1lLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChhZGRvbiBpbnN0YW5jZW9mIEFkZG9uRXJyb3IpIGVycm9ycy5wdXNoKGFkZG9uKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XHJcbiAgICAgICAgaWYgKFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIHRoaXMuaWQpKSB0aGlzLndhdGNoQWRkb25zKCk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVBZGRvbihpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIHJldHVybiBmcy51bmxpbmtTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBhZGRvbi5maWxlbmFtZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVBZGRvbihpZE9yRmlsZU9yQWRkb24sIGNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIHJldHVybiBmcy53cml0ZUZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBhZGRvbi5maWxlbmFtZSksIGNvbnRlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGVkaXRBZGRvbihpZE9yRmlsZU9yQWRkb24sIHN5c3RlbSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JGaWxlT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlT3JBZGRvbiB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlT3JBZGRvbikgOiBpZE9yRmlsZU9yQWRkb247XHJcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgYWRkb24uZmlsZW5hbWUpO1xyXG4gICAgICAgIGlmICh0eXBlb2Yoc3lzdGVtKSA9PSBcInVuZGVmaW5lZFwiKSBzeXN0ZW0gPSBTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImVkaXRBY3Rpb25cIikgPT0gXCJzeXN0ZW1cIjtcclxuICAgICAgICBpZiAoc3lzdGVtKSByZXR1cm4gcmVxdWlyZShcImVsZWN0cm9uXCIpLnNoZWxsLm9wZW5JdGVtKGAke2Z1bGxQYXRofWApO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5EZXRhY2hlZChhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRldGFjaGVkKGFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgYWRkb24uZmlsZW5hbWUpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgpLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkb25FZGl0b3IsIHtcclxuICAgICAgICAgICAgaWQ6IFwiYmQtZmxvYXRpbmctZWRpdG9yLVwiICsgYWRkb24ubmFtZSxcclxuICAgICAgICAgICAgcmVmOiBlZGl0b3JSZWYsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXHJcbiAgICAgICAgICAgIHNhdmU6IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcywgYWRkb24pLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLmVkaXRBZGRvbi5iaW5kKHRoaXMsIGFkZG9uLCB0cnVlKSxcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZ3VhZ2VcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgRmxvYXRpbmdXaW5kb3dDb250YWluZXIub3Blbih7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblJlc2l6ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3JSZWYgfHwgIWVkaXRvclJlZi5jdXJyZW50IHx8ICFlZGl0b3JSZWYuY3VycmVudC5yZXNpemUpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGVkaXRvclJlZi5jdXJyZW50LnJlc2l6ZSgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aXRsZTogYWRkb24ubmFtZSxcclxuICAgICAgICAgICAgaWQ6IGNvbnRlbnQuaWQsXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJmbG9hdGluZy1hZGRvbi13aW5kb3dcIixcclxuICAgICAgICAgICAgaGVpZ2h0OiA0NzAsXHJcbiAgICAgICAgICAgIHdpZHRoOiA0MTAsXHJcbiAgICAgICAgICAgIGNlbnRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogZWRpdG9yLFxyXG4gICAgICAgICAgICBjb25maXJtQ2xvc2U6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWRpdG9yUmVmIHx8ICFlZGl0b3JSZWYuY3VycmVudCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvclJlZi5jdXJyZW50Lmhhc1Vuc2F2ZWRDaGFuZ2VzO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25maXJtYXRpb25UZXh0OiBTdHJpbmdzLkFkZG9ucy5jb25maXJtYXRpb25UZXh0LmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZX0pXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/addonmanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonManager; });\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../structs/metaerror */ \"./src/structs/metaerror.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_misc_addoneditor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ui/misc/addoneditor */ \"./src/ui/misc/addoneditor.jsx\");\n/* harmony import */ var _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../ui/floatingwindows */ \"./src/ui/floatingwindows.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_8__[\"default\"].React;\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst Module = __webpack_require__(/*! module */ \"module\").Module;\n\nModule.globalPaths.push(path.resolve(__webpack_require__(/*! electron */ \"electron\").remote.app.getAppPath(), \"node_modules\"));\nconst splitRegex = /[^\\S\\r\\n]*?\\r?(?:\\r\\n|\\n)[^\\S\\r\\n]*?\\*[^\\S\\r\\n]?/;\nconst escapedAtRegex = /^\\\\@/;\n\nconst stripBOM = function (fileContent) {\n if (fileContent.charCodeAt(0) === 0xFEFF) {\n fileContent = fileContent.slice(1);\n }\n\n return fileContent;\n};\n\nclass AddonManager {\n get name() {\n return \"\";\n }\n\n get moduleExtension() {\n return \"\";\n }\n\n get extension() {\n return \"\";\n }\n\n get addonFolder() {\n return \"\";\n }\n\n get language() {\n return \"\";\n }\n\n get prefix() {\n return \"addon\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"addons\";\n }\n\n get id() {\n return \"autoReload\";\n }\n\n emit(event, ...args) {\n return _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].emit(`${this.prefix}-${event}`, ...args);\n }\n\n constructor() {\n this.timeCache = {};\n this.addonList = [];\n this.state = {};\n }\n\n initialize() {\n this.originalRequire = Module._extensions[this.moduleExtension];\n Module._extensions[this.moduleExtension] = this.getAddonRequire();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].on(this.collection, this.category, this.id, enabled => {\n if (enabled) this.watchAddons();else this.unwatchAddons();\n });\n return this.loadAllAddons();\n } // Subclasses should overload this and modify the addon object as needed to fully load it\n\n\n initializeAddon() {\n return;\n } // Subclasses should overload this and modify the fileContent as needed to require() the file\n\n\n getFileModification(module, fileContent) {\n return fileContent;\n }\n\n startAddon() {\n return;\n }\n\n stopAddon() {\n return;\n }\n\n loadState() {\n const saved = _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(`${this.prefix}s`);\n if (!saved) return;\n Object.assign(this.state, saved);\n }\n\n saveState() {\n _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(`${this.prefix}s`, this.state);\n }\n\n watchAddons() {\n if (this.watcher) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(this.name, `Already watching ${this.prefix} addons.`);\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(this.name, `Starting to watch ${this.prefix} addons.`);\n this.watcher = fs.watch(this.addonFolder, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename || !filename.endsWith(this.extension)) return;\n await new Promise(r => setTimeout(r, 100));\n\n try {\n const stats = fs.statSync(path.resolve(this.addonFolder, filename));\n if (!stats.isFile()) return;\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (this.timeCache[filename] == stats.mtime.getTime()) return;\n this.timeCache[filename] = stats.mtime.getTime();\n if (eventType == \"rename\") this.loadAddon(filename, true);\n if (eventType == \"change\") this.reloadAddon(filename, true);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete this.timeCache[filename];\n this.unloadAddon(filename, true);\n }\n });\n }\n\n unwatchAddons() {\n if (!this.watcher) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(this.name, `Was not watching ${this.prefix} addons.`);\n this.watcher.close();\n delete this.watcher;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(this.name, `No longer watching ${this.prefix} addons.`);\n }\n\n extractMeta(fileContent) {\n const firstLine = fileContent.split(\"\\n\")[0];\n const hasOldMeta = firstLine.includes(\"//META\");\n if (hasOldMeta) return this.parseOldMeta(fileContent);\n const hasNewMeta = firstLine.includes(\"/**\");\n if (hasNewMeta) return this.parseNewMeta(fileContent);\n throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META was not found.\");\n }\n\n parseOldMeta(fileContent) {\n const meta = fileContent.split(\"\\n\")[0];\n const metaData = meta.substring(meta.lastIndexOf(\"//META\") + 6, meta.lastIndexOf(\"*//\"));\n const parsed = _utilities__WEBPACK_IMPORTED_MODULE_0__[\"default\"].testJSON(metaData);\n if (!parsed) throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META could not be parsed.\");\n if (!parsed.name) throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META missing name data.\");\n parsed.format = \"json\";\n return parsed;\n }\n\n parseNewMeta(fileContent) {\n const block = fileContent.split(\"/**\", 2)[1].split(\"*/\", 1)[0];\n const out = {};\n let field = \"\";\n let accum = \"\";\n\n for (const line of block.split(splitRegex)) {\n if (line.length === 0) continue;\n\n if (line.charAt(0) === \"@\" && line.charAt(1) !== \" \") {\n out[field] = accum;\n const l = line.indexOf(\" \");\n field = line.substr(1, l - 1);\n accum = line.substr(l + 1);\n } else {\n accum += \" \" + line.replace(\"\\\\n\", \"\\n\").replace(escapedAtRegex, \"@\");\n }\n }\n\n out[field] = accum.trim();\n delete out[\"\"];\n out.format = \"jsdoc\";\n return out;\n }\n\n getAddonRequire() {\n const self = this; // const baseFolder = this.addonFolder;\n\n const originalRequire = this.originalRequire;\n return function (module, filename) {\n const possiblePath = path.resolve(self.addonFolder, path.basename(filename));\n if (!fs.existsSync(possiblePath) || filename !== fs.realpathSync(possiblePath)) return Reflect.apply(originalRequire, this, arguments);\n let fileContent = fs.readFileSync(filename, \"utf8\");\n fileContent = stripBOM(fileContent);\n const stats = fs.statSync(filename);\n const meta = self.extractMeta(fileContent);\n if (!meta.author) meta.author = _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.unknownAuthor;\n if (!meta.version) meta.version = \"???\";\n if (!meta.description) meta.description = _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.noDescription;\n meta.id = meta.name;\n meta.filename = path.basename(filename);\n meta.added = stats.atimeMs;\n meta.modified = stats.mtimeMs;\n meta.size = stats.size;\n fileContent = self.getFileModification(module, fileContent, meta);\n\n module._compile(fileContent, filename);\n };\n } // Subclasses should use the return (if not AddonError) and push to this.addonList\n\n\n loadAddon(filename, shouldToast = false) {\n if (typeof filename === \"undefined\") return;\n\n try {\n require(path.resolve(this.addonFolder, filename));\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"](filename, filename, \"Could not be compiled.\", {\n message: error.message,\n stack: error.stack\n });\n }\n\n const addon = require(path.resolve(this.addonFolder, filename));\n\n if (this.addonList.find(c => c.id == addon.id)) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"](addon.name, filename, `There is already a plugin with name ${addon.name}`);\n const error = this.initializeAddon(addon);\n if (error) return error;\n this.addonList.push(addon);\n if (shouldToast) _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].success(`${addon.name} v${addon.version} was loaded.`);\n this.emit(\"loaded\", addon.id);\n if (!this.state[addon.id]) return this.state[addon.id] = false;\n return this.startAddon(addon);\n }\n\n unloadAddon(idOrFileOrAddon, shouldToast = true, isReload = false) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n if (!addon) return false;\n if (this.state[addon.id]) isReload ? this.stopAddon(addon) : this.disableAddon(addon);\n delete require.cache[require.resolve(path.resolve(this.addonFolder, addon.filename))];\n this.addonList.splice(this.addonList.indexOf(addon), 1);\n this.emit(\"unloaded\", addon.id);\n if (shouldToast) _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].success(`${addon.name} was unloaded.`);\n return true;\n }\n\n reloadAddon(idOrFileOrAddon, shouldToast = true) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n const didUnload = this.unloadAddon(addon, shouldToast, true);\n if (!didUnload) return didUnload;\n return this.loadAddon(addon.filename, shouldToast);\n }\n\n isLoaded(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return false;\n return true;\n }\n\n isEnabled(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return false;\n return this.state[addon.id];\n }\n\n enableAddon(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n if (this.state[addon.id]) return;\n this.state[addon.id] = true;\n this.startAddon(addon);\n this.saveState();\n }\n\n disableAddon(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n if (!this.state[addon.id]) return;\n this.state[addon.id] = false;\n this.stopAddon(addon);\n this.saveState();\n }\n\n toggleAddon(id) {\n if (this.state[id]) this.disableAddon(id);else this.enableAddon(id);\n }\n\n loadNewAddons() {\n const files = fs.readdirSync(this.addonFolder);\n const removed = this.addonList.filter(t => !files.includes(t.filename)).map(c => c.id);\n const added = files.filter(f => !this.addonList.find(t => t.filename == f) && f.endsWith(this.extension) && fs.statSync(path.resolve(this.addonFolder, f)).isFile());\n return {\n added,\n removed\n };\n }\n\n updateList() {\n const results = this.loadNewAddons();\n\n for (const filename of results.added) this.loadAddon(filename);\n\n for (const name of results.removed) this.unloadAddon(name);\n }\n\n loadAllAddons() {\n this.loadState();\n const errors = [];\n const files = fs.readdirSync(this.addonFolder);\n\n for (const filename of files) {\n if (!fs.statSync(path.resolve(this.addonFolder, filename)).isFile() || !filename.endsWith(this.extension)) continue;\n const addon = this.loadAddon(filename, false);\n if (addon instanceof _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) errors.push(addon);\n }\n\n this.saveState();\n if (_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.collection, this.category, this.id)) this.watchAddons();\n return errors;\n }\n\n deleteAddon(idOrFileOrAddon) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n return fs.unlinkSync(path.resolve(this.addonFolder, addon.filename));\n }\n\n saveAddon(idOrFileOrAddon, content) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n return fs.writeFileSync(path.resolve(this.addonFolder, addon.filename), content);\n }\n\n editAddon(idOrFileOrAddon, system) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n const fullPath = path.resolve(this.addonFolder, addon.filename);\n if (typeof system == \"undefined\") system = _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"settings\", \"addons\", \"editAction\") == \"system\";\n if (system) return __webpack_require__(/*! electron */ \"electron\").shell.openItem(`${fullPath}`);\n return this.openDetached(addon);\n }\n\n openDetached(addon) {\n const fullPath = path.resolve(this.addonFolder, addon.filename);\n const content = fs.readFileSync(fullPath).toString();\n const editorRef = React.createRef();\n const editor = React.createElement(_ui_misc_addoneditor__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n id: \"bd-floating-editor-\" + addon.name,\n ref: editorRef,\n content: content,\n save: this.saveAddon.bind(this, addon),\n openNative: this.editAddon.bind(this, addon, true),\n language: this.language\n });\n _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: addon.name,\n id: content.id,\n className: \"floating-addon-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.confirmationText.format({\n name: addon.name\n })\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvYWRkb25tYW5hZ2VyLmpzP2NlYTkiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsInBhdGgiLCJyZXF1aXJlIiwiZnMiLCJNb2R1bGUiLCJnbG9iYWxQYXRocyIsInB1c2giLCJyZXNvbHZlIiwicmVtb3RlIiwiYXBwIiwiZ2V0QXBwUGF0aCIsInNwbGl0UmVnZXgiLCJlc2NhcGVkQXRSZWdleCIsInN0cmlwQk9NIiwiZmlsZUNvbnRlbnQiLCJjaGFyQ29kZUF0Iiwic2xpY2UiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJsYW5ndWFnZSIsInByZWZpeCIsImNvbGxlY3Rpb24iLCJjYXRlZ29yeSIsImlkIiwiZW1pdCIsImV2ZW50IiwiYXJncyIsIkV2ZW50cyIsImNvbnN0cnVjdG9yIiwidGltZUNhY2hlIiwiYWRkb25MaXN0Iiwic3RhdGUiLCJpbml0aWFsaXplIiwib3JpZ2luYWxSZXF1aXJlIiwiX2V4dGVuc2lvbnMiLCJnZXRBZGRvblJlcXVpcmUiLCJTZXR0aW5ncyIsIm9uIiwiZW5hYmxlZCIsIndhdGNoQWRkb25zIiwidW53YXRjaEFkZG9ucyIsImxvYWRBbGxBZGRvbnMiLCJpbml0aWFsaXplQWRkb24iLCJnZXRGaWxlTW9kaWZpY2F0aW9uIiwibW9kdWxlIiwic3RhcnRBZGRvbiIsInN0b3BBZGRvbiIsImxvYWRTdGF0ZSIsInNhdmVkIiwiRGF0YVN0b3JlIiwiZ2V0RGF0YSIsIk9iamVjdCIsImFzc2lnbiIsInNhdmVTdGF0ZSIsInNldERhdGEiLCJ3YXRjaGVyIiwiTG9nZ2VyIiwiZXJyb3IiLCJsb2ciLCJ3YXRjaCIsInBlcnNpc3RlbnQiLCJldmVudFR5cGUiLCJmaWxlbmFtZSIsImVuZHNXaXRoIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0Iiwic3RhdHMiLCJzdGF0U3luYyIsImlzRmlsZSIsIm10aW1lIiwiZ2V0VGltZSIsImxvYWRBZGRvbiIsInJlbG9hZEFkZG9uIiwiZXJyIiwiY29kZSIsInVubG9hZEFkZG9uIiwiY2xvc2UiLCJleHRyYWN0TWV0YSIsImZpcnN0TGluZSIsInNwbGl0IiwiaGFzT2xkTWV0YSIsImluY2x1ZGVzIiwicGFyc2VPbGRNZXRhIiwiaGFzTmV3TWV0YSIsInBhcnNlTmV3TWV0YSIsIk1ldGFFcnJvciIsIm1ldGEiLCJtZXRhRGF0YSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwicGFyc2VkIiwiVXRpbGl0aWVzIiwidGVzdEpTT04iLCJmb3JtYXQiLCJibG9jayIsIm91dCIsImZpZWxkIiwiYWNjdW0iLCJsaW5lIiwibGVuZ3RoIiwiY2hhckF0IiwibCIsImluZGV4T2YiLCJzdWJzdHIiLCJyZXBsYWNlIiwidHJpbSIsInNlbGYiLCJwb3NzaWJsZVBhdGgiLCJiYXNlbmFtZSIsImV4aXN0c1N5bmMiLCJyZWFscGF0aFN5bmMiLCJSZWZsZWN0IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJyZWFkRmlsZVN5bmMiLCJhdXRob3IiLCJTdHJpbmdzIiwiQWRkb25zIiwidW5rbm93bkF1dGhvciIsInZlcnNpb24iLCJkZXNjcmlwdGlvbiIsIm5vRGVzY3JpcHRpb24iLCJhZGRlZCIsImF0aW1lTXMiLCJtb2RpZmllZCIsIm10aW1lTXMiLCJzaXplIiwiX2NvbXBpbGUiLCJzaG91bGRUb2FzdCIsIl9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fIiwiQWRkb25FcnJvciIsIm1lc3NhZ2UiLCJzdGFjayIsImFkZG9uIiwiZmluZCIsImMiLCJUb2FzdHMiLCJzdWNjZXNzIiwiaWRPckZpbGVPckFkZG9uIiwiaXNSZWxvYWQiLCJkaXNhYmxlQWRkb24iLCJjYWNoZSIsInNwbGljZSIsImRpZFVubG9hZCIsImlzTG9hZGVkIiwiaWRPckZpbGUiLCJpc0VuYWJsZWQiLCJlbmFibGVBZGRvbiIsImlkT3JBZGRvbiIsInAiLCJ0b2dnbGVBZGRvbiIsImxvYWROZXdBZGRvbnMiLCJmaWxlcyIsInJlYWRkaXJTeW5jIiwicmVtb3ZlZCIsImZpbHRlciIsInQiLCJtYXAiLCJmIiwidXBkYXRlTGlzdCIsInJlc3VsdHMiLCJlcnJvcnMiLCJnZXQiLCJkZWxldGVBZGRvbiIsInVubGlua1N5bmMiLCJzYXZlQWRkb24iLCJjb250ZW50Iiwid3JpdGVGaWxlU3luYyIsImVkaXRBZGRvbiIsInN5c3RlbSIsImZ1bGxQYXRoIiwic2hlbGwiLCJvcGVuSXRlbSIsIm9wZW5EZXRhY2hlZCIsInRvU3RyaW5nIiwiZWRpdG9yUmVmIiwiY3JlYXRlUmVmIiwiZWRpdG9yIiwiY3JlYXRlRWxlbWVudCIsIkFkZG9uRWRpdG9yIiwicmVmIiwic2F2ZSIsImJpbmQiLCJvcGVuTmF0aXZlIiwiRmxvYXRpbmdXaW5kb3dzIiwib3BlbiIsIm9uQ2xvc2UiLCJpc0RldGFjaGVkIiwib25SZXNpemUiLCJjdXJyZW50IiwicmVzaXplIiwidGl0bGUiLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJ3aWR0aCIsImNlbnRlciIsInJlc2l6YWJsZSIsImNoaWxkcmVuIiwiY29uZmlybUNsb3NlIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJjb25maXJtYXRpb25UZXh0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHQyx1REFBYyxDQUFDRCxLQUE3Qjs7QUFFQSxNQUFNRSxJQUFJLEdBQUdDLG1CQUFPLENBQUMsa0JBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixtQkFBTyxDQUFDLHNCQUFELENBQVAsQ0FBa0JFLE1BQWpDOztBQUNBQSxNQUFNLENBQUNDLFdBQVAsQ0FBbUJDLElBQW5CLENB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QUFFLE1BQU07QUFDWCxhQUFLQyxVQUFMLEdBQWtCLEtBQWxCO0FBQ0gsT0FIZ0I7QUFJakJDLGNBQVEsRUFBRSxNQUFNO0FBQ1osWUFBSSxDQUFDYixTQUFELElBQWMsQ0FBQ0EsU0FBUyxDQUFDYyxPQUF6QixJQUFvQyxDQUFDZCxTQUFTLENBQUNjLE9BQVYsQ0FBa0JDLE1BQTNELEVBQW1FO0FBQ25FZixpQkFBUyxDQUFDYyxPQUFWLENBQWtCQyxNQUFsQjtBQUNILE9BUGdCO0FBUWpCQyxXQUFLLEVBQUUxRCxLQUFLLENBQUN2SCxJQVJJO0FBU2pCUSxRQUFFLEVBQUVnSixPQUFPLENBQUNoSixFQVRLO0FBVWpCMEssZUFBUyxFQUFFLHVCQVZNO0FBV2pCQyxZQUFNLEVBQUUsR0FYUztBQVlqQkMsV0FBSyxFQUFFLEdBWlU7QUFhakJDLFlBQU0sRUFBRSxJQWJTO0FBY2pCQyxlQUFTLEVBQUUsSUFkTTtBQWVqQkMsY0FBUSxFQUFFcEIsTUFmTztBQWdCakJxQixrQkFBWSxFQUFFLE1BQU07QUFDaEIsWUFBSSxDQUFDdkIsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ2MsT0FBN0IsRUFBc0MsT0FBTyxLQUFQO0FBQ3RDLGVBQU9kLFNBQVMsQ0FBQ2MsT0FBVixDQUFrQlUsaUJBQXpCO0FBQ0gsT0FuQmdCO0FBb0JqQkMsc0JBQWdCLEVBQUVwRixnREFBTyxDQUFDQyxNQUFSLENBQWVtRixnQkFBZixDQUFnQzNHLE1BQWhDLENBQXVDO0FBQUMvRSxZQUFJLEVBQUV1SCxLQUFLLENBQUN2SDtBQUFiLE9BQXZDO0FBcEJELEtBQXJCO0FBc0JIOztBQTFTNkIiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9hZGRvbm1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBFdmVudHMgZnJvbSBcIi4vZW1pdHRlclwiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5pbXBvcnQgQWRkb25FcnJvciBmcm9tIFwiLi4vc3RydWN0cy9hZGRvbmVycm9yXCI7XHJcbmltcG9ydCBNZXRhRXJyb3IgZnJvbSBcIi4uL3N0cnVjdHMvbWV0YWVycm9yXCI7XHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IEFkZG9uRWRpdG9yIGZyb20gXCIuLi91aS9taXNjL2FkZG9uZWRpdG9yXCI7XHJcbmltcG9ydCBGbG9hdGluZ1dpbmRvd3MgZnJvbSBcIi4uL3VpL2Zsb2F0aW5nd2luZG93c1wiO1xyXG5cclxuY29uc3QgUmVhY3QgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdDtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcbmNvbnN0IE1vZHVsZSA9IHJlcXVpcmUoXCJtb2R1bGVcIikuTW9kdWxlO1xyXG5Nb2R1bGUuZ2xvYmFsUGF0aHMucHVzaChwYXRoLnJlc29sdmUocmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZS5hcHAuZ2V0QXBwUGF0aCgpLCBcIm5vZGVfbW9kdWxlc1wiKSk7XHJcblxyXG5jb25zdCBzcGxpdFJlZ2V4ID0gL1teXFxTXFxyXFxuXSo/XFxyPyg/OlxcclxcbnxcXG4pW15cXFNcXHJcXG5dKj9cXCpbXlxcU1xcclxcbl0/LztcclxuY29uc3QgZXNjYXBlZEF0UmVnZXggPSAvXlxcXFxALztcclxuXHJcbmNvbnN0IHN0cmlwQk9NID0gZnVuY3Rpb24oZmlsZUNvbnRlbnQpIHtcclxuICAgIGlmIChmaWxlQ29udGVudC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcclxuICAgICAgICBmaWxlQ29udGVudCA9IGZpbGVDb250ZW50LnNsaWNlKDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbGVDb250ZW50O1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25NYW5hZ2VyIHtcclxuXHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJcIjt9XHJcbiAgICBnZXQgbW9kdWxlRXh0ZW5zaW9uKCkge3JldHVybiBcIlwiO31cclxuICAgIGdldCBleHRlbnNpb24oKSB7cmV0dXJuIFwiXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBcIlwiO31cclxuICAgIGdldCBsYW5ndWFnZSgpIHtyZXR1cm4gXCJcIjt9XHJcbiAgICBnZXQgcHJlZml4KCkge3JldHVybiBcImFkZG9uXCI7fVxyXG4gICAgZ2V0IGNvbGxlY3Rpb24oKSB7cmV0dXJuIFwic2V0dGluZ3NcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiYWRkb25zXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImF1dG9SZWxvYWRcIjt9XHJcbiAgICBlbWl0KGV2ZW50LCAuLi5hcmdzKSB7cmV0dXJuIEV2ZW50cy5lbWl0KGAke3RoaXMucHJlZml4fS0ke2V2ZW50fWAsIC4uLmFyZ3MpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnRpbWVDYWNoZSA9IHt9O1xyXG4gICAgICAgIHRoaXMuYWRkb25MaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbFJlcXVpcmUgPSBNb2R1bGUuX2V4dGVuc2lvbnNbdGhpcy5tb2R1bGVFeHRlbnNpb25dO1xyXG4gICAgICAgIE1vZHVsZS5fZXh0ZW5zaW9uc1t0aGlzLm1vZHVsZUV4dGVuc2lvbl0gPSB0aGlzLmdldEFkZG9uUmVxdWlyZSgpO1xyXG4gICAgICAgIFNldHRpbmdzLm9uKHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgdGhpcy5pZCwgKGVuYWJsZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHRoaXMud2F0Y2hBZGRvbnMoKTtcclxuICAgICAgICAgICAgZWxzZSB0aGlzLnVud2F0Y2hBZGRvbnMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQWxsQWRkb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcmxvYWQgdGhpcyBhbmQgbW9kaWZ5IHRoZSBhZGRvbiBvYmplY3QgYXMgbmVlZGVkIHRvIGZ1bGx5IGxvYWQgaXRcclxuICAgIGluaXRpYWxpemVBZGRvbigpIHtyZXR1cm47fVxyXG5cclxuICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJsb2FkIHRoaXMgYW5kIG1vZGlmeSB0aGUgZmlsZUNvbnRlbnQgYXMgbmVlZGVkIHRvIHJlcXVpcmUoKSB0aGUgZmlsZVxyXG4gICAgZ2V0RmlsZU1vZGlmaWNhdGlvbihtb2R1bGUsIGZpbGVDb250ZW50KSB7cmV0dXJuIGZpbGVDb250ZW50O31cclxuXHJcbiAgICBzdGFydEFkZG9uKCkge3JldHVybjt9XHJcbiAgICBzdG9wQWRkb24oKSB7cmV0dXJuO31cclxuXHJcbiAgICBsb2FkU3RhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBEYXRhU3RvcmUuZ2V0RGF0YShgJHt0aGlzLnByZWZpeH1zYCk7XHJcbiAgICAgICAgaWYgKCFzYXZlZCkgcmV0dXJuO1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5zdGF0ZSwgc2F2ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTdGF0ZSgpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShgJHt0aGlzLnByZWZpeH1zYCwgdGhpcy5zdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd2F0Y2hBZGRvbnMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hlcikgcmV0dXJuIExvZ2dlci5lcnJvcih0aGlzLm5hbWUsIGBBbHJlYWR5IHdhdGNoaW5nICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgICAgICBMb2dnZXIubG9nKHRoaXMubmFtZSwgYFN0YXJ0aW5nIHRvIHdhdGNoICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIgPSBmcy53YXRjaCh0aGlzLmFkZG9uRm9sZGVyLCB7cGVyc2lzdGVudDogZmFsc2V9LCBhc3luYyAoZXZlbnRUeXBlLCBmaWxlbmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50VHlwZSB8fCAhZmlsZW5hbWUgfHwgIWZpbGVuYW1lLmVuZHNXaXRoKHRoaXMuZXh0ZW5zaW9uKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTAwKSk7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdGF0cy5pc0ZpbGUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdGF0cyB8fCAhc3RhdHMubXRpbWUgfHwgIXN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZihzdGF0cy5tdGltZS5nZXRUaW1lKCkpICE9PSBcIm51bWJlclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lQ2FjaGVbZmlsZW5hbWVdID09IHN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lQ2FjaGVbZmlsZW5hbWVdID0gc3RhdHMubXRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBcInJlbmFtZVwiKSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09IFwiY2hhbmdlXCIpIHRoaXMucmVsb2FkQWRkb24oZmlsZW5hbWUsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSAhPT0gXCJFTk9FTlRcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudGltZUNhY2hlW2ZpbGVuYW1lXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5sb2FkQWRkb24oZmlsZW5hbWUsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdW53YXRjaEFkZG9ucygpIHtcclxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlcikgcmV0dXJuIExvZ2dlci5lcnJvcih0aGlzLm5hbWUsIGBXYXMgbm90IHdhdGNoaW5nICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIuY2xvc2UoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy53YXRjaGVyO1xyXG4gICAgICAgIExvZ2dlci5sb2codGhpcy5uYW1lLCBgTm8gbG9uZ2VyIHdhdGNoaW5nICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgIH1cclxuXHJcbiAgICBleHRyYWN0TWV0YShmaWxlQ29udGVudCkge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0TGluZSA9IGZpbGVDb250ZW50LnNwbGl0KFwiXFxuXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IGhhc09sZE1ldGEgPSBmaXJzdExpbmUuaW5jbHVkZXMoXCIvL01FVEFcIik7XHJcbiAgICAgICAgaWYgKGhhc09sZE1ldGEpIHJldHVybiB0aGlzLnBhcnNlT2xkTWV0YShmaWxlQ29udGVudCk7XHJcbiAgICAgICAgY29uc3QgaGFzTmV3TWV0YSA9IGZpcnN0TGluZS5pbmNsdWRlcyhcIi8qKlwiKTtcclxuICAgICAgICBpZiAoaGFzTmV3TWV0YSkgcmV0dXJuIHRoaXMucGFyc2VOZXdNZXRhKGZpbGVDb250ZW50KTtcclxuICAgICAgICB0aHJvdyBuZXcgTWV0YUVycm9yKFwiTUVUQSB3YXMgbm90IGZvdW5kLlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZU9sZE1ldGEoZmlsZUNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBtZXRhID0gZmlsZUNvbnRlbnQuc3BsaXQoXCJcXG5cIilbMF07XHJcbiAgICAgICAgY29uc3QgbWV0YURhdGEgPSBtZXRhLnN1YnN0cmluZyhtZXRhLmxhc3RJbmRleE9mKFwiLy9NRVRBXCIpICsgNiwgbWV0YS5sYXN0SW5kZXhPZihcIiovL1wiKSk7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gVXRpbGl0aWVzLnRlc3RKU09OKG1ldGFEYXRhKTtcclxuICAgICAgICBpZiAoIXBhcnNlZCkgdGhyb3cgbmV3IE1ldGFFcnJvcihcIk1FVEEgY291bGQgbm90IGJlIHBhcnNlZC5cIik7XHJcbiAgICAgICAgaWYgKCFwYXJzZWQubmFtZSkgdGhyb3cgbmV3IE1ldGFFcnJvcihcIk1FVEEgbWlzc2luZyBuYW1lIGRhdGEuXCIpO1xyXG4gICAgICAgIHBhcnNlZC5mb3JtYXQgPSBcImpzb25cIjtcclxuICAgICAgICByZXR1cm4gcGFyc2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcnNlTmV3TWV0YShmaWxlQ29udGVudCkge1xyXG4gICAgICAgIGNvbnN0IGJsb2NrID0gZmlsZUNvbnRlbnQuc3BsaXQoXCIvKipcIiwgMilbMV0uc3BsaXQoXCIqL1wiLCAxKVswXTtcclxuICAgICAgICBjb25zdCBvdXQgPSB7fTtcclxuICAgICAgICBsZXQgZmllbGQgPSBcIlwiO1xyXG4gICAgICAgIGxldCBhY2N1bSA9IFwiXCI7XHJcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGJsb2NrLnNwbGl0KHNwbGl0UmVnZXgpKSB7XHJcbiAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA9PT0gMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChsaW5lLmNoYXJBdCgwKSA9PT0gXCJAXCIgJiYgbGluZS5jaGFyQXQoMSkgIT09IFwiIFwiKSB7XHJcbiAgICAgICAgICAgICAgICBvdXRbZmllbGRdID0gYWNjdW07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsID0gbGluZS5pbmRleE9mKFwiIFwiKTtcclxuICAgICAgICAgICAgICAgIGZpZWxkID0gbGluZS5zdWJzdHIoMSwgbCAtIDEpO1xyXG4gICAgICAgICAgICAgICAgYWNjdW0gPSBsaW5lLnN1YnN0cihsICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhY2N1bSArPSBcIiBcIiArIGxpbmUucmVwbGFjZShcIlxcXFxuXCIsIFwiXFxuXCIpLnJlcGxhY2UoZXNjYXBlZEF0UmVnZXgsIFwiQFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBvdXRbZmllbGRdID0gYWNjdW0udHJpbSgpO1xyXG4gICAgICAgIGRlbGV0ZSBvdXRbXCJcIl07XHJcbiAgICAgICAgb3V0LmZvcm1hdCA9IFwianNkb2NcIjtcclxuICAgICAgICByZXR1cm4gb3V0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZG9uUmVxdWlyZSgpIHtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICAvLyBjb25zdCBiYXNlRm9sZGVyID0gdGhpcy5hZGRvbkZvbGRlcjtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbFJlcXVpcmUgPSB0aGlzLm9yaWdpbmFsUmVxdWlyZTtcclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24obW9kdWxlLCBmaWxlbmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBwb3NzaWJsZVBhdGggPSBwYXRoLnJlc29sdmUoc2VsZi5hZGRvbkZvbGRlciwgcGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpO1xyXG4gICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocG9zc2libGVQYXRoKSB8fCBmaWxlbmFtZSAhPT0gZnMucmVhbHBhdGhTeW5jKHBvc3NpYmxlUGF0aCkpIHJldHVybiBSZWZsZWN0LmFwcGx5KG9yaWdpbmFsUmVxdWlyZSwgdGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgbGV0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCBcInV0ZjhcIik7XHJcbiAgICAgICAgICAgIGZpbGVDb250ZW50ID0gc3RyaXBCT00oZmlsZUNvbnRlbnQpO1xyXG4gICAgICAgICAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKGZpbGVuYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgbWV0YSA9IHNlbGYuZXh0cmFjdE1ldGEoZmlsZUNvbnRlbnQpO1xyXG4gICAgICAgICAgICBpZiAoIW1ldGEuYXV0aG9yKSBtZXRhLmF1dGhvciA9IFN0cmluZ3MuQWRkb25zLnVua25vd25BdXRob3I7XHJcbiAgICAgICAgICAgIGlmICghbWV0YS52ZXJzaW9uKSBtZXRhLnZlcnNpb24gPSBcIj8/P1wiO1xyXG4gICAgICAgICAgICBpZiAoIW1ldGEuZGVzY3JpcHRpb24pIG1ldGEuZGVzY3JpcHRpb24gPSBTdHJpbmdzLkFkZG9ucy5ub0Rlc2NyaXB0aW9uO1xyXG4gICAgICAgICAgICBtZXRhLmlkID0gbWV0YS5uYW1lO1xyXG4gICAgICAgICAgICBtZXRhLmZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlbmFtZSk7XHJcbiAgICAgICAgICAgIG1ldGEuYWRkZWQgPSBzdGF0cy5hdGltZU1zO1xyXG4gICAgICAgICAgICBtZXRhLm1vZGlmaWVkID0gc3RhdHMubXRpbWVNcztcclxuICAgICAgICAgICAgbWV0YS5zaXplID0gc3RhdHMuc2l6ZTtcclxuICAgICAgICAgICAgZmlsZUNvbnRlbnQgPSBzZWxmLmdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCwgbWV0YSk7XHJcbiAgICAgICAgICAgIG1vZHVsZS5fY29tcGlsZShmaWxlQ29udGVudCwgZmlsZW5hbWUpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3ViY2xhc3NlcyBzaG91bGQgdXNlIHRoZSByZXR1cm4gKGlmIG5vdCBBZGRvbkVycm9yKSBhbmQgcHVzaCB0byB0aGlzLmFkZG9uTGlzdFxyXG4gICAgbG9hZEFkZG9uKGZpbGVuYW1lLCBzaG91bGRUb2FzdCA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihmaWxlbmFtZSkgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcclxuICAgICAgICB0cnkge19fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpO31cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtyZXR1cm4gbmV3IEFkZG9uRXJyb3IoZmlsZW5hbWUsIGZpbGVuYW1lLCBcIkNvdWxkIG5vdCBiZSBjb21waWxlZC5cIiwge21lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsIHN0YWNrOiBlcnJvci5zdGFja30pO31cclxuICAgICAgICBjb25zdCBhZGRvbiA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBhZGRvbi5pZCkpIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBmaWxlbmFtZSwgYFRoZXJlIGlzIGFscmVhZHkgYSBwbHVnaW4gd2l0aCBuYW1lICR7YWRkb24ubmFtZX1gKTtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMuaW5pdGlhbGl6ZUFkZG9uKGFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIHJldHVybiBlcnJvcjtcclxuICAgICAgICB0aGlzLmFkZG9uTGlzdC5wdXNoKGFkZG9uKTtcclxuICAgICAgICBpZiAoc2hvdWxkVG9hc3QpIFRvYXN0cy5zdWNjZXNzKGAke2FkZG9uLm5hbWV9IHYke2FkZG9uLnZlcnNpb259IHdhcyBsb2FkZWQuYCk7XHJcbiAgICAgICAgdGhpcy5lbWl0KFwibG9hZGVkXCIsIGFkZG9uLmlkKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlW2FkZG9uLmlkXSkgcmV0dXJuIHRoaXMuc3RhdGVbYWRkb24uaWRdID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRBZGRvbihhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgdW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uLCBzaG91bGRUb2FzdCA9IHRydWUsIGlzUmVsb2FkID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZVthZGRvbi5pZF0pIGlzUmVsb2FkID8gdGhpcy5zdG9wQWRkb24oYWRkb24pIDogdGhpcy5kaXNhYmxlQWRkb24oYWRkb24pO1xyXG4gICAgICAgIGRlbGV0ZSBfX25vbl93ZWJwYWNrX3JlcXVpcmVfXy5jYWNoZVtfX25vbl93ZWJwYWNrX3JlcXVpcmVfXy5yZXNvbHZlKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBhZGRvbi5maWxlbmFtZSkpXTtcclxuICAgICAgICB0aGlzLmFkZG9uTGlzdC5zcGxpY2UodGhpcy5hZGRvbkxpc3QuaW5kZXhPZihhZGRvbiksIDEpO1xyXG4gICAgICAgIHRoaXMuZW1pdChcInVubG9hZGVkXCIsIGFkZG9uLmlkKTtcclxuICAgICAgICBpZiAoc2hvdWxkVG9hc3QpIFRvYXN0cy5zdWNjZXNzKGAke2FkZG9uLm5hbWV9IHdhcyB1bmxvYWRlZC5gKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24sIHNob3VsZFRvYXN0ID0gdHJ1ZSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JGaWxlT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlT3JBZGRvbiB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlT3JBZGRvbikgOiBpZE9yRmlsZU9yQWRkb247XHJcbiAgICAgICAgY29uc3QgZGlkVW5sb2FkID0gdGhpcy51bmxvYWRBZGRvbihhZGRvbiwgc2hvdWxkVG9hc3QsIHRydWUpO1xyXG4gICAgICAgIGlmICghZGlkVW5sb2FkKSByZXR1cm4gZGlkVW5sb2FkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRBZGRvbihhZGRvbi5maWxlbmFtZSwgc2hvdWxkVG9hc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTG9hZGVkKGlkT3JGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZSB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlKTtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaXNFbmFibGVkKGlkT3JGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZSB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlKTtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVbYWRkb24uaWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZUFkZG9uKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlW2FkZG9uLmlkXSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc3RhdGVbYWRkb24uaWRdID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN0YXJ0QWRkb24oYWRkb24pO1xyXG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUFkZG9uKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVthZGRvbi5pZF0pIHJldHVybjtcclxuICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3RvcEFkZG9uKGFkZG9uKTtcclxuICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZUFkZG9uKGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbaWRdKSB0aGlzLmRpc2FibGVBZGRvbihpZCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLmVuYWJsZUFkZG9uKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkTmV3QWRkb25zKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmModGhpcy5hZGRvbkZvbGRlcik7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IHRoaXMuYWRkb25MaXN0LmZpbHRlcih0ID0+ICFmaWxlcy5pbmNsdWRlcyh0LmZpbGVuYW1lKSkubWFwKGMgPT4gYy5pZCk7XHJcbiAgICAgICAgY29uc3QgYWRkZWQgPSBmaWxlcy5maWx0ZXIoZiA9PiAhdGhpcy5hZGRvbkxpc3QuZmluZCh0ID0+IHQuZmlsZW5hbWUgPT0gZikgJiYgZi5lbmRzV2l0aCh0aGlzLmV4dGVuc2lvbikgJiYgZnMuc3RhdFN5bmMocGF0aC5yZXNvbHZlKHRoaXMuYWRkb25Gb2xkZXIsIGYpKS5pc0ZpbGUoKSk7XHJcbiAgICAgICAgcmV0dXJuIHthZGRlZCwgcmVtb3ZlZH07XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlTGlzdCgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5sb2FkTmV3QWRkb25zKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiByZXN1bHRzLmFkZGVkKSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIHJlc3VsdHMucmVtb3ZlZCkgdGhpcy51bmxvYWRBZGRvbihuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQWxsQWRkb25zKCkge1xyXG4gICAgICAgIHRoaXMubG9hZFN0YXRlKCk7XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gW107XHJcbiAgICAgICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLmFkZG9uRm9sZGVyKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmaWxlcykge1xyXG4gICAgICAgICAgICBpZiAoIWZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpLmlzRmlsZSgpIHx8ICFmaWxlbmFtZS5lbmRzV2l0aCh0aGlzLmV4dGVuc2lvbikpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb25zdCBhZGRvbiA9IHRoaXMubG9hZEFkZG9uKGZpbGVuYW1lLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChhZGRvbiBpbnN0YW5jZW9mIEFkZG9uRXJyb3IpIGVycm9ycy5wdXNoKGFkZG9uKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XHJcbiAgICAgICAgaWYgKFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIHRoaXMuaWQpKSB0aGlzLndhdGNoQWRkb25zKCk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVBZGRvbihpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIHJldHVybiBmcy51bmxpbmtTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBhZGRvbi5maWxlbmFtZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVBZGRvbihpZE9yRmlsZU9yQWRkb24sIGNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIHJldHVybiBmcy53cml0ZUZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBhZGRvbi5maWxlbmFtZSksIGNvbnRlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGVkaXRBZGRvbihpZE9yRmlsZU9yQWRkb24sIHN5c3RlbSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JGaWxlT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlT3JBZGRvbiB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlT3JBZGRvbikgOiBpZE9yRmlsZU9yQWRkb247XHJcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgYWRkb24uZmlsZW5hbWUpO1xyXG4gICAgICAgIGlmICh0eXBlb2Yoc3lzdGVtKSA9PSBcInVuZGVmaW5lZFwiKSBzeXN0ZW0gPSBTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImVkaXRBY3Rpb25cIikgPT0gXCJzeXN0ZW1cIjtcclxuICAgICAgICBpZiAoc3lzdGVtKSByZXR1cm4gcmVxdWlyZShcImVsZWN0cm9uXCIpLnNoZWxsLm9wZW5JdGVtKGAke2Z1bGxQYXRofWApO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5EZXRhY2hlZChhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRldGFjaGVkKGFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgYWRkb24uZmlsZW5hbWUpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgpLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkb25FZGl0b3IsIHtcclxuICAgICAgICAgICAgaWQ6IFwiYmQtZmxvYXRpbmctZWRpdG9yLVwiICsgYWRkb24ubmFtZSxcclxuICAgICAgICAgICAgcmVmOiBlZGl0b3JSZWYsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXHJcbiAgICAgICAgICAgIHNhdmU6IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcywgYWRkb24pLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLmVkaXRBZGRvbi5iaW5kKHRoaXMsIGFkZG9uLCB0cnVlKSxcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZ3VhZ2VcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgRmxvYXRpbmdXaW5kb3dzLm9wZW4oe1xyXG4gICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGV0YWNoZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25SZXNpemU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWRpdG9yUmVmIHx8ICFlZGl0b3JSZWYuY3VycmVudCB8fCAhZWRpdG9yUmVmLmN1cnJlbnQucmVzaXplKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBlZGl0b3JSZWYuY3VycmVudC5yZXNpemUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGl0bGU6IGFkZG9uLm5hbWUsXHJcbiAgICAgICAgICAgIGlkOiBjb250ZW50LmlkLFxyXG4gICAgICAgICAgICBjbGFzc05hbWU6IFwiZmxvYXRpbmctYWRkb24td2luZG93XCIsXHJcbiAgICAgICAgICAgIGhlaWdodDogNDcwLFxyXG4gICAgICAgICAgICB3aWR0aDogNDEwLFxyXG4gICAgICAgICAgICBjZW50ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgY2hpbGRyZW46IGVkaXRvcixcclxuICAgICAgICAgICAgY29uZmlybUNsb3NlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRvclJlZiB8fCAhZWRpdG9yUmVmLmN1cnJlbnQpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlZGl0b3JSZWYuY3VycmVudC5oYXNVbnNhdmVkQ2hhbmdlcztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlybWF0aW9uVGV4dDogU3RyaW5ncy5BZGRvbnMuY29uZmlybWF0aW9uVGV4dC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWV9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/addonmanager.js\n"); /***/ }), @@ -515,7 +515,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst BdApi = {\n get React() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].React;\n },\n\n get ReactDOM() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ReactDOM;\n },\n\n get WindowConfigFile() {\n return \"\";\n },\n\n get settings() {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].collections;\n },\n\n get emotes() {\n return {};\n },\n\n get version() {\n return data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version;\n }\n\n};\n\nBdApi.getAllWindowPreferences = function () {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(\"windowprefs\") || {};\n};\n\nBdApi.getWindowPreference = function (key) {\n return this.getAllWindowPreferences()[key];\n};\n\nBdApi.setWindowPreference = function (key, value) {\n const prefs = this.getAllWindowPreferences();\n prefs[key] = value;\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(\"windowprefs\", prefs);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.injectCSS = function (id, css) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectStyle(id, css);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.clearCSS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStyle(id);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.linkJS = function (id, url) {\n return _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectScript(id, url);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.unlinkJS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeScript(id);\n};\n/**\r\n * Shows a generic but very customizable modal.\r\n * @param {string} title - title of the modal\r\n * @param {string} content - a string of text to display in the modal\r\n */\n\n\nBdApi.alert = function (title, content) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].alert(title, content);\n};\n/**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `TextElement` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n */\n\n\nBdApi.showConfirmationModal = function (title, content, options = {}) {\n return _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].showConfirmationModal(title, content, options);\n};\n/**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\nBdApi.showToast = function (content, options = {}) {\n _ui_toasts__WEBPACK_IMPORTED_MODULE_6__[\"default\"].show(content, options);\n}; // Finds module\n\n\nBdApi.findModule = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter);\n}; // Finds module\n\n\nBdApi.findAllModules = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter, false);\n}; // Finds module\n\n\nBdApi.findModuleByProps = function (...props) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByProps(...props);\n};\n\nBdApi.findModuleByPrototypes = function (...protos) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByPrototypes(...protos);\n};\n\nBdApi.findModuleByDisplayName = function (name) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByDisplayName(name);\n}; // Gets react instance\n\n\nBdApi.getInternalInstance = function (node) {\n if (!(node instanceof window.jQuery) && !(node instanceof Element)) return undefined;\n if (node instanceof jQuery) node = node[0];\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getReactInstance(node);\n}; // Gets data\n\n\nBdApi.loadData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getPluginData(pluginName, key);\n};\n\nBdApi.getData = BdApi.loadData; // Sets data\n\nBdApi.saveData = function (pluginName, key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setPluginData(pluginName, key, data);\n};\n\nBdApi.setData = BdApi.saveData; // Deletes data\n\nBdApi.deleteData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].deletePluginData(pluginName, key);\n}; // Patches other functions\n\n\nBdApi.monkeyPatch = function (what, methodName, options) {\n const {\n before,\n after,\n instead,\n once = false,\n silent = false,\n force = false\n } = options;\n const displayName = options.displayName || what.displayName || what.name || what.constructor.displayName || what.constructor.name;\n if (!silent) console.log(\"patch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n\n if (!what[methodName]) {\n if (force) what[methodName] = function () {};else return console.error(methodName, \"does not exist for\", displayName); // eslint-disable-line no-console\n }\n\n const origMethod = what[methodName];\n\n const cancel = () => {\n if (!silent) console.log(\"unpatch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n\n what[methodName] = origMethod;\n };\n\n what[methodName] = function () {\n const data = {\n thisObject: this,\n methodArguments: arguments,\n cancelPatch: cancel,\n originalMethod: origMethod,\n callOriginalMethod: () => data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)\n };\n\n if (instead) {\n const tempRet = _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(instead, \"`instead` callback of \" + what[methodName].displayName)(data);\n if (tempRet !== undefined) data.returnValue = tempRet;\n } else {\n if (before) _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(before, \"`before` callback of \" + what[methodName].displayName)(data);\n data.callOriginalMethod();\n if (after) _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(after, \"`after` callback of \" + what[methodName].displayName)(data);\n }\n\n if (once) cancel();\n return data.returnValue;\n };\n\n what[methodName].__monkeyPatched = true;\n if (!what[methodName].__originalMethod) what[methodName].__originalMethod = origMethod;\n what[methodName].displayName = \"patched \" + (what[methodName].displayName || methodName);\n return cancel;\n}; // Event when element is removed\n\n\nBdApi.onRemoved = function (node, callback) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onRemoved(node, callback);\n}; // Wraps function in try..catch\n\n\nBdApi.suppressErrors = function (method, message) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(method, message);\n}; // Tests for valid JSON\n\n\nBdApi.testJSON = function (data) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(data);\n}; //Get another plugin\n//name = name of plugin\n\n\nBdApi.getPlugin = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].addonList.find(a => a.name == name);\n};\n\nBdApi.isPluginEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n const plugin = this.getPlugin(name);\n if (!plugin) return false;\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isEnabled(plugin.id);\n};\n\nBdApi.isThemeEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)\");\n const theme = _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].addonList.find(a => a.name == name);\n if (!theme) return false;\n return _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isEnabled(theme.id);\n};\n\nBdApi.isSettingEnabled = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id);\n};\n\nBdApi.enableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, true);\n};\n\nBdApi.disableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, false);\n};\n\nBdApi.toggleSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, !_settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id));\n}; // Gets data\n\n\nBdApi.getBDData = function (key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getBDData(key);\n}; // Sets data\n\n\nBdApi.setBDData = function (key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setBDData(key, data);\n};\n\nconst makeAddonAPI = manager => new class AddonAPI {\n get folder() {\n return manager.folder;\n }\n\n isEnabled(idOrFile) {\n return manager.isEnabled(idOrFile);\n }\n\n enable(idOrAddon) {\n return manager.enableAddon(idOrAddon);\n }\n\n disable(idOrAddon) {\n return manager.disableAddon(idOrAddon);\n }\n\n toggle(idOrAddon) {\n return manager.toggleAddon(idOrAddon);\n }\n\n reload(idOrFileOrAddon) {\n return manager.reloadAddon(idOrFileOrAddon);\n }\n\n get(idOrFile) {\n return manager.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n }\n\n getAll() {\n return manager.addonList;\n }\n\n}();\n\nBdApi.Plugins = makeAddonAPI(_pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nBdApi.Themes = makeAddonAPI(_thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nObject.freeze(BdApi);\nObject.freeze(BdApi.Plugins);\nObject.freeze(BdApi.Themes);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BdApi);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcGx1Z2luYXBpLmpzPzZhOTMiXSwibmFtZXMiOlsiQmRBcGkiLCJSZWFjdCIsIkRpc2NvcmRNb2R1bGVzIiwiUmVhY3RET00iLCJXaW5kb3dDb25maWdGaWxlIiwic2V0dGluZ3MiLCJTZXR0aW5ncyIsImNvbGxlY3Rpb25zIiwiZW1vdGVzIiwidmVyc2lvbiIsIkNvbmZpZyIsImdldEFsbFdpbmRvd1ByZWZlcmVuY2VzIiwiRGF0YVN0b3JlIiwiZ2V0RGF0YSIsImdldFdpbmRvd1ByZWZlcmVuY2UiLCJrZXkiLCJzZXRXaW5kb3dQcmVmZXJlbmNlIiwidmFsdWUiLCJwcmVmcyIsInNldERhdGEiLCJpbmplY3RDU1MiLCJpZCIsImNzcyIsIkRPTU1hbmFnZXIiLCJpbmplY3RTdHlsZSIsImNsZWFyQ1NTIiwicmVtb3ZlU3R5bGUiLCJsaW5rSlMiLCJ1cmwiLCJpbmplY3RTY3JpcHQiLCJ1bmxpbmtKUyIsInJlbW92ZVNjcmlwdCIsImFsZXJ0IiwidGl0bGUiLCJjb250ZW50IiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwib3B0aW9ucyIsInNob3dUb2FzdCIsIlRvYXN0cyIsInNob3ciLCJmaW5kTW9kdWxlIiwiZmlsdGVyIiwiV2VicGFja01vZHVsZXMiLCJnZXRNb2R1bGUiLCJmaW5kQWxsTW9kdWxlcyIsImZpbmRNb2R1bGVCeVByb3BzIiwicHJvcHMiLCJnZXRCeVByb3BzIiwiZmluZE1vZHVsZUJ5UHJvdG90eXBlcyIsInByb3RvcyIsImdldEJ5UHJvdG90eXBlcyIsImZpbmRNb2R1bGVCeURpc3BsYXlOYW1lIiwibmFtZSIsImdldEJ5RGlzcGxheU5hbWUiLCJnZXRJbnRlcm5hbEluc3RhbmNlIiwibm9kZSIsIndpbmRvdyIsImpRdWVyeSIsIkVsZW1lbnQiLCJ1bmRlZmluZWQiLCJVdGlsaXRpZXMiLCJnZXRSZWFjdEluc3RhbmNlIiwibG9hZERhdGEiLCJwbHVnaW5OYW1lIiwiZ2V0UGx1Z2luRGF0YSIsInNhdmVEYXRhIiwiZGF0YSIsInNldFBsdWdpbkRhdGEiLCJkZWxldGVEYXRhIiwiZGVsZXRlUGx1Z2luRGF0YSIsIm1vbmtleVBhdGNoIiwid2hhdCIsIm1ldGhvZE5hbWUiLCJiZWZvcmUiLCJhZnRlciIsImluc3RlYWQiLCJvbmNlIiwic2lsZW50IiwiZm9yY2UiLCJkaXNwbGF5TmFtZSIsImNvbnN0cnVjdG9yIiwiY29uc29sZSIsImxvZyIsImVycm9yIiwib3JpZ01ldGhvZCIsImNhbmNlbCIsInRoaXNPYmplY3QiLCJtZXRob2RBcmd1bWVudHMiLCJhcmd1bWVudHMiLCJjYW5jZWxQYXRjaCIsIm9yaWdpbmFsTWV0aG9kIiwiY2FsbE9yaWdpbmFsTWV0aG9kIiwicmV0dXJuVmFsdWUiLCJhcHBseSIsInRlbXBSZXQiLCJzdXBwcmVzc0Vycm9ycyIsIl9fbW9ua2V5UGF0Y2hlZCIsIl9fb3JpZ2luYWxNZXRob2QiLCJvblJlbW92ZWQiLCJjYWxsYmFjayIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJ0ZXN0SlNPTiIsImdldFBsdWdpbiIsIkxvZ2dlciIsIndhcm4iLCJQbHVnaW5NYW5hZ2VyIiwiYWRkb25MaXN0IiwiZmluZCIsImEiLCJpc1BsdWdpbkVuYWJsZWQiLCJwbHVnaW4iLCJpc0VuYWJsZWQiLCJpc1RoZW1lRW5hYmxlZCIsInRoZW1lIiwiVGhlbWVNYW5hZ2VyIiwiaXNTZXR0aW5nRW5hYmxlZCIsImNvbGxlY3Rpb24iLCJjYXRlZ29yeSIsImdldCIsImVuYWJsZVNldHRpbmciLCJzZXQiLCJkaXNhYmxlU2V0dGluZyIsInRvZ2dsZVNldHRpbmciLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJtYWtlQWRkb25BUEkiLCJtYW5hZ2VyIiwiQWRkb25BUEkiLCJmb2xkZXIiLCJpZE9yRmlsZSIsImVuYWJsZSIsImlkT3JBZGRvbiIsImVuYWJsZUFkZG9uIiwiZGlzYWJsZSIsImRpc2FibGVBZGRvbiIsInRvZ2dsZSIsInRvZ2dsZUFkZG9uIiwicmVsb2FkIiwiaWRPckZpbGVPckFkZG9uIiwicmVsb2FkQWRkb24iLCJjIiwiZmlsZW5hbWUiLCJnZXRBbGwiLCJQbHVnaW5zIiwiVGhlbWVzIiwiT2JqZWN0IiwiZnJlZXplIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLEtBQUssR0FBRztBQUNWLE1BQUlDLEtBQUosR0FBWTtBQUFFLFdBQU9DLHVEQUFjLENBQUNELEtBQXRCO0FBQThCLEdBRGxDOztBQUVWLE1BQUlFLFFBQUosR0FBZTtBQUFFLFdBQU9ELHVEQUFjLENBQUNDLFFBQXRCO0FBQWlDLEdBRnhDOztBQUdWLE1BQUlDLGdCQUFKLEdBQXVCO0FBQUMsV0FBTyxFQUFQO0FBQVcsR0FIekI7O0FBSVYsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBT0MseURBQVEsQ0FBQ0MsV0FBaEI7QUFBNkIsR0FKbkM7O0FBS1YsTUFBSUMsTUFBSixHQUFhO0FBQUMsV0FBTyxFQUFQO0FBQVcsR0FMZjs7QUFNVixNQUFJQyxPQUFKLEdBQWM7QUFBQyxXQUFPQywyQ0FBTSxDQUFDRCxPQUFkO0FBQXVCOztBQU41QixDQUFkOztBQVNBVCxLQUFLLENBQUNXLHVCQUFOLEdBQWdDLFlBQVc7QUFDdkMsU0FBT0Msa0RBQVMsQ0FBQ0MsT0FBVixDQUFrQixhQUFsQixLQUFvQyxFQUEzQztBQUNILENBRkQ7O0FBSUFiLEtBQUssQ0FBQ2MsbUJBQU4sR0FBNEIsVUFBU0MsR0FBVCxFQUFjO0FBQ3RDLFNBQU8sS0FBS0osdUJBQUwsR0FBK0JJLEdBQS9CLENBQVA7QUFDSCxDQUZEOztBQUlBZixLQUFLLENBQUNnQixtQkFBTixHQUE0QixVQUFTRCxHQUFULEVBQWNFLEtBQWQsRUFBcUI7QUFDN0MsUUFBTUMsS0FBSyxHQUFHLEtBQUtQLHVCQUFMLEVBQWQ7QUFDQU8s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QUN0RXBCLEtBQUcsQ0FBQ1csUUFBRCxFQUFXO0FBQUMsV0FBT0gsT0FBTyxDQUFDcEIsU0FBUixDQUFrQkMsSUFBbEIsQ0FBdUJpQyxDQUFDLElBQUlBLENBQUMsQ0FBQ3pILEVBQUYsSUFBUThHLFFBQVIsSUFBb0JXLENBQUMsQ0FBQ0MsUUFBRixJQUFjWixRQUE5RCxDQUFQO0FBQWdGOztBQUMvRmEsUUFBTSxHQUFHO0FBQUMsV0FBT2hCLE9BQU8sQ0FBQ3BCLFNBQWY7QUFBMEI7O0FBUmEsQ0FBbkIsRUFBbEM7O0FBV0E1RyxLQUFLLENBQUNpSixPQUFOLEdBQWdCbEIsWUFBWSxDQUFDcEIsc0RBQUQsQ0FBNUI7QUFDQTNHLEtBQUssQ0FBQ2tKLE1BQU4sR0FBZW5CLFlBQVksQ0FBQ1gscURBQUQsQ0FBM0I7QUFFQStCLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjcEosS0FBZDtBQUNBbUosTUFBTSxDQUFDQyxNQUFQLENBQWNwSixLQUFLLENBQUNpSixPQUFwQjtBQUNBRSxNQUFNLENBQUNDLE1BQVAsQ0FBY3BKLEtBQUssQ0FBQ2tKLE1BQXBCO0FBRWVsSixvRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3BsdWdpbmFwaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgV2VicGFja01vZHVsZXMgZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgUGx1Z2luTWFuYWdlciBmcm9tIFwiLi9wbHVnaW5tYW5hZ2VyXCI7XHJcbmltcG9ydCBUaGVtZU1hbmFnZXIgZnJvbSBcIi4vdGhlbWVtYW5hZ2VyXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuXHJcbmNvbnN0IEJkQXBpID0ge1xyXG4gICAgZ2V0IFJlYWN0KCkgeyByZXR1cm4gRGlzY29yZE1vZHVsZXMuUmVhY3Q7IH0sXHJcbiAgICBnZXQgUmVhY3RET00oKSB7IHJldHVybiBEaXNjb3JkTW9kdWxlcy5SZWFjdERPTTsgfSxcclxuICAgIGdldCBXaW5kb3dDb25maWdGaWxlKCkge3JldHVybiBcIlwiO30sXHJcbiAgICBnZXQgc2V0dGluZ3MoKSB7cmV0dXJuIFNldHRpbmdzLmNvbGxlY3Rpb25zO30sXHJcbiAgICBnZXQgZW1vdGVzKCkge3JldHVybiB7fTt9LFxyXG4gICAgZ2V0IHZlcnNpb24oKSB7cmV0dXJuIENvbmZpZy52ZXJzaW9uO31cclxufTtcclxuXHJcbkJkQXBpLmdldEFsbFdpbmRvd1ByZWZlcmVuY2VzID0gZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldERhdGEoXCJ3aW5kb3dwcmVmc1wiKSB8fCB7fTtcclxufTtcclxuXHJcbkJkQXBpLmdldFdpbmRvd1ByZWZlcmVuY2UgPSBmdW5jdGlvbihrZXkpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEFsbFdpbmRvd1ByZWZlcmVuY2VzKClba2V5XTtcclxufTtcclxuXHJcbkJkQXBpLnNldFdpbmRvd1ByZWZlcmVuY2UgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XHJcbiAgICBjb25zdCBwcmVmcyA9IHRoaXMuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMoKTtcclxuICAgIHByZWZzW2tleV0gPSB2YWx1ZTtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxufTtcclxuXHJcbi8vSW5qZWN0IENTUyB0byBkb2N1bWVudCBoZWFkXHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbi8vY3NzID0gY3VzdG9tIGNzc1xyXG5CZEFwaS5pbmplY3RDU1MgPSBmdW5jdGlvbiAoaWQsIGNzcykge1xyXG4gICAgRE9NTWFuYWdlci5pbmplY3RTdHlsZShpZCwgY3NzKTtcclxufTtcclxuXHJcbi8vQ2xlYXIgY3NzL3JlbW92ZSBhbnkgZWxlbWVudFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG5CZEFwaS5jbGVhckNTUyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgRE9NTWFuYWdlci5yZW1vdmVTdHlsZShpZCk7XHJcbn07XHJcblxyXG4vL0luamVjdCBDU1MgdG8gZG9jdW1lbnQgaGVhZFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG4vL2NzcyA9IGN1c3RvbSBjc3NcclxuQmRBcGkubGlua0pTID0gZnVuY3Rpb24gKGlkLCB1cmwpIHtcclxuICAgIHJldHVybiBET01NYW5hZ2VyLmluamVjdFNjcmlwdChpZCwgdXJsKTtcclxufTtcclxuXHJcbi8vQ2xlYXIgY3NzL3JlbW92ZSBhbnkgZWxlbWVudFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG5CZEFwaS51bmxpbmtKUyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgRE9NTWFuYWdlci5yZW1vdmVTY3JpcHQoaWQpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgbW9kYWwuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIHRpdGxlIG9mIHRoZSBtb2RhbFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCAtIGEgc3RyaW5nIG9mIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgbW9kYWxcclxuICovXHJcbkJkQXBpLmFsZXJ0ID0gZnVuY3Rpb24gKHRpdGxlLCBjb250ZW50KSB7XHJcbiAgICBNb2RhbHMuYWxlcnQodGl0bGUsIGNvbnRlbnQpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgY29uZmlybWF0aW9uIG1vZGFsIHdpdGggb3B0aW9uYWwgY29uZmlybSBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cclxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSB7KHN0cmluZ3xSZWFjdEVsZW1lbnR8QXJyYXk8c3RyaW5nfFJlYWN0RWxlbWVudD4pfSBjaGlsZHJlbiAtIGEgc2luZ2xlIG9yIG1peGVkIGFycmF5IG9mIHJlYWN0IGVsZW1lbnRzIGFuZCBzdHJpbmdzLiBFdmVyeXRoaW5nIGlzIHdyYXBwZWQgaW4gRGlzY29yZCdzIGBUZXh0RWxlbWVudGAgY29tcG9uZW50IHNvIHN0cmluZ3Mgd2lsbCBzaG93IGFuZCByZW5kZXIgcHJvcGVybHkuXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBvcHRpb25zIHRvIG1vZGlmeSB0aGUgbW9kYWxcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5kYW5nZXI9ZmFsc2VdIC0gd2hldGhlciB0aGUgbWFpbiBidXR0b24gc2hvdWxkIGJlIHJlZCBvciBub3RcclxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNvbmZpcm1UZXh0PU9rYXldIC0gdGV4dCBmb3IgdGhlIGNvbmZpcm1hdGlvbi9zdWJtaXQgYnV0dG9uXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jYW5jZWxUZXh0PUNhbmNlbF0gLSB0ZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gKiBAcGFyYW0ge2NhbGxhYmxlfSBbb3B0aW9ucy5vbkNvbmZpcm09Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBzdWJtaXQgYnV0dG9uXHJcbiAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ2FuY2VsPU5PT1BdIC0gY2FsbGJhY2sgdG8gb2NjdXIgd2hlbiBjbGlja2luZyB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gKi9cclxuQmRBcGkuc2hvd0NvbmZpcm1hdGlvbk1vZGFsID0gZnVuY3Rpb24gKHRpdGxlLCBjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIHJldHVybiBNb2RhbHMuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHRpdGxlLCBjb250ZW50LCBvcHRpb25zKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHNob3dzIGEgdG9hc3Qgc2ltaWxhciB0byBhbmRyb2lkIHRvd2FyZHMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCBUaGUgc3RyaW5nIHRvIHNob3cgaW4gdGhlIHRvYXN0LlxyXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBPcHRpb25zIG9iamVjdC4gT3B0aW9uYWwgcGFyYW1ldGVyLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudHlwZT1cIlwiXSBDaGFuZ2VzIHRoZSB0eXBlIG9mIHRoZSB0b2FzdCBzdHlsaXN0aWNhbGx5IGFuZCBzZW1hbnRpY2FsbHkuIENob2ljZXM6IFwiXCIsIFwiaW5mb1wiLCBcInN1Y2Nlc3NcIiwgXCJkYW5nZXJcIi9cImVycm9yXCIsIFwid2FybmluZ1wiL1wid2FyblwiLiBEZWZhdWx0OiBcIlwiXHJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWNvbj10cnVlXSBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGljb24gc2hvdWxkIHNob3cgY29ycmVzcG9uZGluZyB0byB0aGUgdHlwZS4gQSB0b2FzdCB3aXRob3V0IHR5cGUgd2lsbCBhbHdheXMgaGF2ZSBubyBpY29uLiBEZWZhdWx0OiB0cnVlXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aW1lb3V0PTMwMDBdIEFkanVzdHMgdGhlIHRpbWUgKGluIG1zKSB0aGUgdG9hc3Qgc2hvdWxkIGJlIHNob3duIGZvciBiZWZvcmUgZGlzYXBwZWFyaW5nIGF1dG9tYXRpY2FsbHkuIERlZmF1bHQ6IDMwMDBcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVNob3c9ZmFsc2VdIFdoZXRoZXIgdG8gZm9yY2Ugc2hvd2luZyB0aGUgdG9hc3QgYW5kIGlnbm9yZSB0aGUgYmQgc2V0dGluZ1xyXG4gKi9cclxuQmRBcGkuc2hvd1RvYXN0ID0gZnVuY3Rpb24oY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBUb2FzdHMuc2hvdyhjb250ZW50LCBvcHRpb25zKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kTW9kdWxlID0gZnVuY3Rpb24oZmlsdGVyKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKGZpbHRlcik7XHJcbn07XHJcblxyXG4vLyBGaW5kcyBtb2R1bGVcclxuQmRBcGkuZmluZEFsbE1vZHVsZXMgPSBmdW5jdGlvbihmaWx0ZXIpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUoZmlsdGVyLCBmYWxzZSk7XHJcbn07XHJcblxyXG4vLyBGaW5kcyBtb2R1bGVcclxuQmRBcGkuZmluZE1vZHVsZUJ5UHJvcHMgPSBmdW5jdGlvbiguLi5wcm9wcykge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoLi4ucHJvcHMpO1xyXG59O1xyXG5cclxuQmRBcGkuZmluZE1vZHVsZUJ5UHJvdG90eXBlcyA9IGZ1bmN0aW9uKC4uLnByb3Rvcykge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvdG90eXBlcyguLi5wcm90b3MpO1xyXG59O1xyXG5cclxuQmRBcGkuZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShuYW1lKTtcclxufTtcclxuXHJcbi8vIEdldHMgcmVhY3QgaW5zdGFuY2VcclxuQmRBcGkuZ2V0SW50ZXJuYWxJbnN0YW5jZSA9IGZ1bmN0aW9uKG5vZGUpIHtcclxuICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiB3aW5kb3cualF1ZXJ5KSAmJiAhKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgalF1ZXJ5KSBub2RlID0gbm9kZVswXTtcclxuICAgIHJldHVybiBVdGlsaXRpZXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKTtcclxufTtcclxuXHJcbi8vIEdldHMgZGF0YVxyXG5CZEFwaS5sb2FkRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5nZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSk7XHJcbn07XHJcblxyXG5CZEFwaS5nZXREYXRhID0gQmRBcGkubG9hZERhdGE7XHJcblxyXG4vLyBTZXRzIGRhdGFcclxuQmRBcGkuc2F2ZURhdGEgPSBmdW5jdGlvbihwbHVnaW5OYW1lLCBrZXksIGRhdGEpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0UGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXksIGRhdGEpO1xyXG59O1xyXG5cclxuQmRBcGkuc2V0RGF0YSA9IEJkQXBpLnNhdmVEYXRhO1xyXG5cclxuLy8gRGVsZXRlcyBkYXRhXHJcbkJkQXBpLmRlbGV0ZURhdGEgPSBmdW5jdGlvbihwbHVnaW5OYW1lLCBrZXkpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZGVsZXRlUGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXkpO1xyXG59O1xyXG5cclxuLy8gUGF0Y2hlcyBvdGhlciBmdW5jdGlvbnNcclxuQmRBcGkubW9ua2V5UGF0Y2ggPSBmdW5jdGlvbih3aGF0LCBtZXRob2ROYW1lLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7YmVmb3JlLCBhZnRlciwgaW5zdGVhZCwgb25jZSA9IGZhbHNlLCBzaWxlbnQgPSBmYWxzZSwgZm9yY2UgPSBmYWxzZX0gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgZGlzcGxheU5hbWUgPSBvcHRpb25zLmRpc3BsYXlOYW1lIHx8IHdoYXQuZGlzcGxheU5hbWUgfHwgd2hhdC5uYW1lIHx8IHdoYXQuY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgd2hhdC5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgaWYgKCFzaWxlbnQpIGNvbnNvbGUubG9nKFwicGF0Y2hcIiwgbWV0aG9kTmFtZSwgXCJvZlwiLCBkaXNwbGF5TmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxyXG4gICAgaWYgKCF3aGF0W21ldGhvZE5hbWVdKSB7XHJcbiAgICAgICAgaWYgKGZvcmNlKSB3aGF0W21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7fTtcclxuICAgICAgICBlbHNlIHJldHVybiBjb25zb2xlLmVycm9yKG1ldGhvZE5hbWUsIFwiZG9lcyBub3QgZXhpc3QgZm9yXCIsIGRpc3BsYXlOYW1lKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXHJcbiAgICB9XHJcbiAgICBjb25zdCBvcmlnTWV0aG9kID0gd2hhdFttZXRob2ROYW1lXTtcclxuICAgIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIXNpbGVudCkgY29uc29sZS5sb2coXCJ1bnBhdGNoXCIsIG1ldGhvZE5hbWUsIFwib2ZcIiwgZGlzcGxheU5hbWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgICB3aGF0W21ldGhvZE5hbWVdID0gb3JpZ01ldGhvZDtcclxuICAgIH07XHJcbiAgICB3aGF0W21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgICAgdGhpc09iamVjdDogdGhpcyxcclxuICAgICAgICAgICAgbWV0aG9kQXJndW1lbnRzOiBhcmd1bWVudHMsXHJcbiAgICAgICAgICAgIGNhbmNlbFBhdGNoOiBjYW5jZWwsXHJcbiAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kOiBvcmlnTWV0aG9kLFxyXG4gICAgICAgICAgICBjYWxsT3JpZ2luYWxNZXRob2Q6ICgpID0+IGRhdGEucmV0dXJuVmFsdWUgPSBkYXRhLm9yaWdpbmFsTWV0aG9kLmFwcGx5KGRhdGEudGhpc09iamVjdCwgZGF0YS5tZXRob2RBcmd1bWVudHMpXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoaW5zdGVhZCkge1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wUmV0ID0gVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGluc3RlYWQsIFwiYGluc3RlYWRgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbiAgICAgICAgICAgIGlmICh0ZW1wUmV0ICE9PSB1bmRlZmluZWQpIGRhdGEucmV0dXJuVmFsdWUgPSB0ZW1wUmV0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGJlZm9yZSkgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGJlZm9yZSwgXCJgYmVmb3JlYCBjYWxsYmFjayBvZiBcIiArIHdoYXRbbWV0aG9kTmFtZV0uZGlzcGxheU5hbWUpKGRhdGEpO1xyXG4gICAgICAgICAgICBkYXRhLmNhbGxPcmlnaW5hbE1ldGhvZCgpO1xyXG4gICAgICAgICAgICBpZiAoYWZ0ZXIpIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyhhZnRlciwgXCJgYWZ0ZXJgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbmNlKSBjYW5jZWwoKTtcclxuICAgICAgICByZXR1cm4gZGF0YS5yZXR1cm5WYWx1ZTtcclxuICAgIH07XHJcbiAgICB3aGF0W21ldGhvZE5hbWVdLl9fbW9ua2V5UGF0Y2hlZCA9IHRydWU7XHJcbiAgICBpZiAoIXdoYXRbbWV0aG9kTmFtZV0uX19vcmlnaW5hbE1ldGhvZCkgd2hhdFttZXRob2ROYW1lXS5fX29yaWdpbmFsTWV0aG9kID0gb3JpZ01ldGhvZDtcclxuICAgIHdoYXRbbWV0aG9kTmFtZV0uZGlzcGxheU5hbWUgPSBcInBhdGNoZWQgXCIgKyAod2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSB8fCBtZXRob2ROYW1lKTtcclxuICAgIHJldHVybiBjYW5jZWw7XHJcbn07XHJcbi8vIEV2ZW50IHdoZW4gZWxlbWVudCBpcyByZW1vdmVkXHJcbkJkQXBpLm9uUmVtb3ZlZCA9IGZ1bmN0aW9uKG5vZGUsIGNhbGxiYWNrKSB7XHJcbiAgICByZXR1cm4gVXRpbGl0aWVzLm9uUmVtb3ZlZChub2RlLCBjYWxsYmFjayk7XHJcbn07XHJcblxyXG4vLyBXcmFwcyBmdW5jdGlvbiBpbiB0cnkuLmNhdGNoXHJcbkJkQXBpLnN1cHByZXNzRXJyb3JzID0gZnVuY3Rpb24obWV0aG9kLCBtZXNzYWdlKSB7XHJcbiAgICByZXR1cm4gVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKG1ldGhvZCwgbWVzc2FnZSk7XHJcbn07XHJcblxyXG4vLyBUZXN0cyBmb3IgdmFsaWQgSlNPTlxyXG5CZEFwaS50ZXN0SlNPTiA9IGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgIHJldHVybiBVdGlsaXRpZXMudGVzdEpTT04oZGF0YSk7XHJcbn07XHJcblxyXG4vL0dldCBhbm90aGVyIHBsdWdpblxyXG4vL25hbWUgPSBuYW1lIG9mIHBsdWdpblxyXG5CZEFwaS5nZXRQbHVnaW4gPSBmdW5jdGlvbiAobmFtZSkge1xyXG4gICAgTG9nZ2VyLndhcm4oXCJCZEFwaVwiLCBcImdldFBsdWdpbiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgbWFrZSB1c2Ugb2YgdGhlIGFkZG9uIGFwaSAoQmRBcGkuUGx1Z2lucylcIik7XHJcbiAgICByZXR1cm4gUGx1Z2luTWFuYWdlci5hZGRvbkxpc3QuZmluZChhID0+IGEubmFtZSA9PSBuYW1lKTtcclxufTtcclxuXHJcbkJkQXBpLmlzUGx1Z2luRW5hYmxlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgIExvZ2dlci53YXJuKFwiQmRBcGlcIiwgXCJpc1BsdWdpbkVuYWJsZWQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIG1ha2UgdXNlIG9mIHRoZSBhZGRvbiBhcGkgKEJkQXBpLlBsdWdpbnMpXCIpO1xyXG4gICAgY29uc3QgcGx1Z2luID0gdGhpcy5nZXRQbHVnaW4obmFtZSk7XHJcbiAgICBpZiAoIXBsdWdpbikgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIFBsdWdpbk1hbmFnZXIuaXNFbmFibGVkKHBsdWdpbi5pZCk7XHJcbn07XHJcblxyXG5CZEFwaS5pc1RoZW1lRW5hYmxlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgIExvZ2dlci53YXJuKFwiQmRBcGlcIiwgXCJpc1RoZW1lRW5hYmxlZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgbWFrZSB1c2Ugb2YgdGhlIGFkZG9uIGFwaSAoQmRBcGkuVGhlbWVzKVwiKTtcclxuICAgIGNvbnN0IHRoZW1lID0gVGhlbWVNYW5hZ2VyLmFkZG9uTGlzdC5maW5kKGEgPT4gYS5uYW1lID09IG5hbWUpO1xyXG4gICAgaWYgKCF0aGVtZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIFRoZW1lTWFuYWdlci5pc0VuYWJsZWQodGhlbWUuaWQpO1xyXG59O1xyXG5cclxuQmRBcGkuaXNTZXR0aW5nRW5hYmxlZCA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLmdldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpO1xyXG59O1xyXG5cclxuQmRBcGkuZW5hYmxlU2V0dGluZyA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLnNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHRydWUpO1xyXG59O1xyXG5cclxuQmRBcGkuZGlzYWJsZVNldHRpbmcgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5zZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCBmYWxzZSk7XHJcbn07XHJcblxyXG5CZEFwaS50b2dnbGVTZXR0aW5nID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3Muc2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgIVNldHRpbmdzLmdldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpKTtcclxufTtcclxuXHJcbi8vIEdldHMgZGF0YVxyXG5CZEFwaS5nZXRCRERhdGEgPSBmdW5jdGlvbihrZXkpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZ2V0QkREYXRhKGtleSk7XHJcbn07XHJcblxyXG4vLyBTZXRzIGRhdGFcclxuQmRBcGkuc2V0QkREYXRhID0gZnVuY3Rpb24oa2V5LCBkYXRhKSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLnNldEJERGF0YShrZXksIGRhdGEpO1xyXG59O1xyXG5cclxuY29uc3QgbWFrZUFkZG9uQVBJID0gKG1hbmFnZXIpID0+IG5ldyBjbGFzcyBBZGRvbkFQSSB7XHJcbiAgICBnZXQgZm9sZGVyKCkge3JldHVybiBtYW5hZ2VyLmZvbGRlcjt9XHJcbiAgICBpc0VuYWJsZWQoaWRPckZpbGUpIHtyZXR1cm4gbWFuYWdlci5pc0VuYWJsZWQoaWRPckZpbGUpO31cclxuICAgIGVuYWJsZShpZE9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGUoaWRPckFkZG9uKSB7cmV0dXJuIG1hbmFnZXIuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlKGlkT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnRvZ2dsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgcmVsb2FkKGlkT3JGaWxlT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnJlbG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7fVxyXG4gICAgZ2V0KGlkT3JGaWxlKSB7cmV0dXJuIG1hbmFnZXIuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGUpO31cclxuICAgIGdldEFsbCgpIHtyZXR1cm4gbWFuYWdlci5hZGRvbkxpc3Q7fVxyXG59O1xyXG5cclxuQmRBcGkuUGx1Z2lucyA9IG1ha2VBZGRvbkFQSShQbHVnaW5NYW5hZ2VyKTtcclxuQmRBcGkuVGhlbWVzID0gbWFrZUFkZG9uQVBJKFRoZW1lTWFuYWdlcik7XHJcblxyXG5PYmplY3QuZnJlZXplKEJkQXBpKTtcclxuT2JqZWN0LmZyZWV6ZShCZEFwaS5QbHVnaW5zKTtcclxuT2JqZWN0LmZyZWV6ZShCZEFwaS5UaGVtZXMpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmRBcGk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/pluginapi.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst BdApi = {\n get React() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].React;\n },\n\n get ReactDOM() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ReactDOM;\n },\n\n get WindowConfigFile() {\n return \"\";\n },\n\n get settings() {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].collections;\n },\n\n get emotes() {\n return {};\n },\n\n get version() {\n return data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version;\n }\n\n};\n\nBdApi.getAllWindowPreferences = function () {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(\"windowprefs\") || {};\n};\n\nBdApi.getWindowPreference = function (key) {\n return this.getAllWindowPreferences()[key];\n};\n\nBdApi.setWindowPreference = function (key, value) {\n const prefs = this.getAllWindowPreferences();\n prefs[key] = value;\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(\"windowprefs\", prefs);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.injectCSS = function (id, css) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectStyle(id, css);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.clearCSS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStyle(id);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.linkJS = function (id, url) {\n return _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectScript(id, url);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.unlinkJS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeScript(id);\n};\n/**\r\n * Shows a generic but very customizable modal.\r\n * @param {string} title - title of the modal\r\n * @param {string} content - a string of text to display in the modal\r\n */\n\n\nBdApi.alert = function (title, content) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].alert(title, content);\n};\n/**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `TextElement` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n */\n\n\nBdApi.showConfirmationModal = function (title, content, options = {}) {\n return _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].showConfirmationModal(title, content, options);\n};\n/**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\nBdApi.showToast = function (content, options = {}) {\n _ui_toasts__WEBPACK_IMPORTED_MODULE_6__[\"default\"].show(content, options);\n}; // Finds module\n\n\nBdApi.findModule = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter);\n}; // Finds module\n\n\nBdApi.findAllModules = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter, false);\n}; // Finds module\n\n\nBdApi.findModuleByProps = function (...props) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByProps(...props);\n};\n\nBdApi.findModuleByPrototypes = function (...protos) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByPrototypes(...protos);\n};\n\nBdApi.findModuleByDisplayName = function (name) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByDisplayName(name);\n}; // Gets react instance\n\n\nBdApi.getInternalInstance = function (node) {\n if (!(node instanceof window.jQuery) && !(node instanceof Element)) return undefined;\n if (node instanceof jQuery) node = node[0];\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getReactInstance(node);\n}; // Gets data\n\n\nBdApi.loadData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getPluginData(pluginName, key);\n};\n\nBdApi.getData = BdApi.loadData; // Sets data\n\nBdApi.saveData = function (pluginName, key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setPluginData(pluginName, key, data);\n};\n\nBdApi.setData = BdApi.saveData; // Deletes data\n\nBdApi.deleteData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].deletePluginData(pluginName, key);\n}; // Patches other functions\n\n\nBdApi.monkeyPatch = function (what, methodName, options) {\n const {\n before,\n after,\n instead,\n once = false,\n silent = false,\n force = false\n } = options;\n const displayName = options.displayName || what.displayName || what.name || what.constructor.displayName || what.constructor.name;\n if (!silent) console.log(\"patch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n\n if (!what[methodName]) {\n if (force) what[methodName] = function () {};else return console.error(methodName, \"does not exist for\", displayName); // eslint-disable-line no-console\n }\n\n const origMethod = what[methodName];\n\n const cancel = () => {\n if (!silent) console.log(\"unpatch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n\n what[methodName] = origMethod;\n };\n\n what[methodName] = function () {\n const data = {\n thisObject: this,\n methodArguments: arguments,\n cancelPatch: cancel,\n originalMethod: origMethod,\n callOriginalMethod: () => data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)\n };\n\n if (instead) {\n const tempRet = _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(instead, \"`instead` callback of \" + what[methodName].displayName)(data);\n if (tempRet !== undefined) data.returnValue = tempRet;\n } else {\n if (before) _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(before, \"`before` callback of \" + what[methodName].displayName)(data);\n data.callOriginalMethod();\n if (after) _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(after, \"`after` callback of \" + what[methodName].displayName)(data);\n }\n\n if (once) cancel();\n return data.returnValue;\n };\n\n what[methodName].__monkeyPatched = true;\n if (!what[methodName].__originalMethod) what[methodName].__originalMethod = origMethod;\n what[methodName].displayName = \"patched \" + (what[methodName].displayName || methodName);\n return cancel;\n}; // Event when element is removed\n\n\nBdApi.onRemoved = function (node, callback) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onRemoved(node, callback);\n}; // Wraps function in try..catch\n\n\nBdApi.suppressErrors = function (method, message) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(method, message);\n}; // Tests for valid JSON\n\n\nBdApi.testJSON = function (data) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(data);\n}; //Get another plugin\n//name = name of plugin\n\n\nBdApi.getPlugin = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].addonList.find(a => a.name == name);\n};\n\nBdApi.isPluginEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n const plugin = this.getPlugin(name);\n if (!plugin) return false;\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isEnabled(plugin.id);\n};\n\nBdApi.isThemeEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)\");\n const theme = _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].addonList.find(a => a.name == name);\n if (!theme) return false;\n return _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isEnabled(theme.id);\n};\n\nBdApi.isSettingEnabled = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id);\n};\n\nBdApi.enableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, true);\n};\n\nBdApi.disableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, false);\n};\n\nBdApi.toggleSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, !_settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id));\n}; // Gets data\n\n\nBdApi.getBDData = function (key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getBDData(key);\n}; // Sets data\n\n\nBdApi.setBDData = function (key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setBDData(key, data);\n};\n\nconst makeAddonAPI = manager => new class AddonAPI {\n get folder() {\n return manager.addonFolder;\n }\n\n isEnabled(idOrFile) {\n return manager.isEnabled(idOrFile);\n }\n\n enable(idOrAddon) {\n return manager.enableAddon(idOrAddon);\n }\n\n disable(idOrAddon) {\n return manager.disableAddon(idOrAddon);\n }\n\n toggle(idOrAddon) {\n return manager.toggleAddon(idOrAddon);\n }\n\n reload(idOrFileOrAddon) {\n return manager.reloadAddon(idOrFileOrAddon);\n }\n\n get(idOrFile) {\n return manager.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n }\n\n getAll() {\n return manager.addonList;\n }\n\n}();\n\nBdApi.Plugins = makeAddonAPI(_pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nBdApi.Themes = makeAddonAPI(_thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nObject.freeze(BdApi);\nObject.freeze(BdApi.Plugins);\nObject.freeze(BdApi.Themes);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BdApi);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcGx1Z2luYXBpLmpzPzZhOTMiXSwibmFtZXMiOlsiQmRBcGkiLCJSZWFjdCIsIkRpc2NvcmRNb2R1bGVzIiwiUmVhY3RET00iLCJXaW5kb3dDb25maWdGaWxlIiwic2V0dGluZ3MiLCJTZXR0aW5ncyIsImNvbGxlY3Rpb25zIiwiZW1vdGVzIiwidmVyc2lvbiIsIkNvbmZpZyIsImdldEFsbFdpbmRvd1ByZWZlcmVuY2VzIiwiRGF0YVN0b3JlIiwiZ2V0RGF0YSIsImdldFdpbmRvd1ByZWZlcmVuY2UiLCJrZXkiLCJzZXRXaW5kb3dQcmVmZXJlbmNlIiwidmFsdWUiLCJwcmVmcyIsInNldERhdGEiLCJpbmplY3RDU1MiLCJpZCIsImNzcyIsIkRPTU1hbmFnZXIiLCJpbmplY3RTdHlsZSIsImNsZWFyQ1NTIiwicmVtb3ZlU3R5bGUiLCJsaW5rSlMiLCJ1cmwiLCJpbmplY3RTY3JpcHQiLCJ1bmxpbmtKUyIsInJlbW92ZVNjcmlwdCIsImFsZXJ0IiwidGl0bGUiLCJjb250ZW50IiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwib3B0aW9ucyIsInNob3dUb2FzdCIsIlRvYXN0cyIsInNob3ciLCJmaW5kTW9kdWxlIiwiZmlsdGVyIiwiV2VicGFja01vZHVsZXMiLCJnZXRNb2R1bGUiLCJmaW5kQWxsTW9kdWxlcyIsImZpbmRNb2R1bGVCeVByb3BzIiwicHJvcHMiLCJnZXRCeVByb3BzIiwiZmluZE1vZHVsZUJ5UHJvdG90eXBlcyIsInByb3RvcyIsImdldEJ5UHJvdG90eXBlcyIsImZpbmRNb2R1bGVCeURpc3BsYXlOYW1lIiwibmFtZSIsImdldEJ5RGlzcGxheU5hbWUiLCJnZXRJbnRlcm5hbEluc3RhbmNlIiwibm9kZSIsIndpbmRvdyIsImpRdWVyeSIsIkVsZW1lbnQiLCJ1bmRlZmluZWQiLCJVdGlsaXRpZXMiLCJnZXRSZWFjdEluc3RhbmNlIiwibG9hZERhdGEiLCJwbHVnaW5OYW1lIiwiZ2V0UGx1Z2luRGF0YSIsInNhdmVEYXRhIiwiZGF0YSIsInNldFBsdWdpbkRhdGEiLCJkZWxldGVEYXRhIiwiZGVsZXRlUGx1Z2luRGF0YSIsIm1vbmtleVBhdGNoIiwid2hhdCIsIm1ldGhvZE5hbWUiLCJiZWZvcmUiLCJhZnRlciIsImluc3RlYWQiLCJvbmNlIiwic2lsZW50IiwiZm9yY2UiLCJkaXNwbGF5TmFtZSIsImNvbnN0cnVjdG9yIiwiY29uc29sZSIsImxvZyIsImVycm9yIiwib3JpZ01ldGhvZCIsImNhbmNlbCIsInRoaXNPYmplY3QiLCJtZXRob2RBcmd1bWVudHMiLCJhcmd1bWVudHMiLCJjYW5jZWxQYXRjaCIsIm9yaWdpbmFsTWV0aG9kIiwiY2FsbE9yaWdpbmFsTWV0aG9kIiwicmV0dXJuVmFsdWUiLCJhcHBseSIsInRlbXBSZXQiLCJzdXBwcmVzc0Vycm9ycyIsIl9fbW9ua2V5UGF0Y2hlZCIsIl9fb3JpZ2luYWxNZXRob2QiLCJvblJlbW92ZWQiLCJjYWxsYmFjayIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJ0ZXN0SlNPTiIsImdldFBsdWdpbiIsIkxvZ2dlciIsIndhcm4iLCJQbHVnaW5NYW5hZ2VyIiwiYWRkb25MaXN0IiwiZmluZCIsImEiLCJpc1BsdWdpbkVuYWJsZWQiLCJwbHVnaW4iLCJpc0VuYWJsZWQiLCJpc1RoZW1lRW5hYmxlZCIsInRoZW1lIiwiVGhlbWVNYW5hZ2VyIiwiaXNTZXR0aW5nRW5hYmxlZCIsImNvbGxlY3Rpb24iLCJjYXRlZ29yeSIsImdldCIsImVuYWJsZVNldHRpbmciLCJzZXQiLCJkaXNhYmxlU2V0dGluZyIsInRvZ2dsZVNldHRpbmciLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJtYWtlQWRkb25BUEkiLCJtYW5hZ2VyIiwiQWRkb25BUEkiLCJmb2xkZXIiLCJhZGRvbkZvbGRlciIsImlkT3JGaWxlIiwiZW5hYmxlIiwiaWRPckFkZG9uIiwiZW5hYmxlQWRkb24iLCJkaXNhYmxlIiwiZGlzYWJsZUFkZG9uIiwidG9nZ2xlIiwidG9nZ2xlQWRkb24iLCJyZWxvYWQiLCJpZE9yRmlsZU9yQWRkb24iLCJyZWxvYWRBZGRvbiIsImMiLCJmaWxlbmFtZSIsImdldEFsbCIsIlBsdWdpbnMiLCJUaGVtZXMiLCJPYmplY3QiLCJmcmVlemUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHO0FBQ1YsTUFBSUMsS0FBSixHQUFZO0FBQUUsV0FBT0MsdURBQWMsQ0FBQ0QsS0FBdEI7QUFBOEIsR0FEbEM7O0FBRVYsTUFBSUUsUUFBSixHQUFlO0FBQUUsV0FBT0QsdURBQWMsQ0FBQ0MsUUFBdEI7QUFBaUMsR0FGeEM7O0FBR1YsTUFBSUMsZ0JBQUosR0FBdUI7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUh6Qjs7QUFJVixNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPQyx5REFBUSxDQUFDQyxXQUFoQjtBQUE2QixHQUpuQzs7QUFLVixNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUxmOztBQU1WLE1BQUlDLE9BQUosR0FBYztBQUFDLFdBQU9DLDJDQUFNLENBQUNELE9BQWQ7QUFBdUI7O0FBTjVCLENBQWQ7O0FBU0FULEtBQUssQ0FBQ1csdUJBQU4sR0FBZ0MsWUFBVztBQUN2QyxTQUFPQyxrREFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQTNDO0FBQ0gsQ0FGRDs7QUFJQWIsS0FBSyxDQUFDYyxtQkFBTixHQUE0QixVQUFTQyxHQUFULEVBQWM7QUFDdEMsU0FBTyxLQUFLSix1QkFBTCxHQUErQkksR0FBL0IsQ0FBUDtBQUNILENBRkQ7O0FBSUFmLEtBQUssQ0FBQ2dCLG1CQUFOLEdBQTRCLFVBQVNELEdBQVQsRUFBY0UsS0FBZCxFQUFxQjtBQUM3QyxRQUFNQyxLQUFLLEdBQUcsS0FBS1AsdUJB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LENBQVA7QUFBNkM7O0FBQ3RFckIsS0FBRyxDQUFDWSxRQUFELEVBQVc7QUFBQyxXQUFPSixPQUFPLENBQUNwQixTQUFSLENBQWtCQyxJQUFsQixDQUF1QmtDLENBQUMsSUFBSUEsQ0FBQyxDQUFDMUgsRUFBRixJQUFRK0csUUFBUixJQUFvQlcsQ0FBQyxDQUFDQyxRQUFGLElBQWNaLFFBQTlELENBQVA7QUFBZ0Y7O0FBQy9GYSxRQUFNLEdBQUc7QUFBQyxXQUFPakIsT0FBTyxDQUFDcEIsU0FBZjtBQUEwQjs7QUFSYSxDQUFuQixFQUFsQzs7QUFXQTVHLEtBQUssQ0FBQ2tKLE9BQU4sR0FBZ0JuQixZQUFZLENBQUNwQixzREFBRCxDQUE1QjtBQUNBM0csS0FBSyxDQUFDbUosTUFBTixHQUFlcEIsWUFBWSxDQUFDWCxxREFBRCxDQUEzQjtBQUVBZ0MsTUFBTSxDQUFDQyxNQUFQLENBQWNySixLQUFkO0FBQ0FvSixNQUFNLENBQUNDLE1BQVAsQ0FBY3JKLEtBQUssQ0FBQ2tKLE9BQXBCO0FBQ0FFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjckosS0FBSyxDQUFDbUosTUFBcEI7QUFFZW5KLG9FQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvcGx1Z2luYXBpLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCBXZWJwYWNrTW9kdWxlcyBmcm9tIFwiLi93ZWJwYWNrbW9kdWxlc1wiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IERhdGFTdG9yZSBmcm9tIFwiLi9kYXRhc3RvcmVcIjtcclxuaW1wb3J0IERPTU1hbmFnZXIgZnJvbSBcIi4vZG9tbWFuYWdlclwiO1xyXG5pbXBvcnQgVG9hc3RzIGZyb20gXCIuLi91aS90b2FzdHNcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vdWkvbW9kYWxzXCI7XHJcbmltcG9ydCBQbHVnaW5NYW5hZ2VyIGZyb20gXCIuL3BsdWdpbm1hbmFnZXJcIjtcclxuaW1wb3J0IFRoZW1lTWFuYWdlciBmcm9tIFwiLi90aGVtZW1hbmFnZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5cclxuY29uc3QgQmRBcGkgPSB7XHJcbiAgICBnZXQgUmVhY3QoKSB7IHJldHVybiBEaXNjb3JkTW9kdWxlcy5SZWFjdDsgfSxcclxuICAgIGdldCBSZWFjdERPTSgpIHsgcmV0dXJuIERpc2NvcmRNb2R1bGVzLlJlYWN0RE9NOyB9LFxyXG4gICAgZ2V0IFdpbmRvd0NvbmZpZ0ZpbGUoKSB7cmV0dXJuIFwiXCI7fSxcclxuICAgIGdldCBzZXR0aW5ncygpIHtyZXR1cm4gU2V0dGluZ3MuY29sbGVjdGlvbnM7fSxcclxuICAgIGdldCBlbW90ZXMoKSB7cmV0dXJuIHt9O30sXHJcbiAgICBnZXQgdmVyc2lvbigpIHtyZXR1cm4gQ29uZmlnLnZlcnNpb247fVxyXG59O1xyXG5cclxuQmRBcGkuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMgPSBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG59O1xyXG5cclxuQmRBcGkuZ2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMoKVtrZXldO1xyXG59O1xyXG5cclxuQmRBcGkuc2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcclxuICAgIGNvbnN0IHByZWZzID0gdGhpcy5nZXRBbGxXaW5kb3dQcmVmZXJlbmNlcygpO1xyXG4gICAgcHJlZnNba2V5XSA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXREYXRhKFwid2luZG93cHJlZnNcIiwgcHJlZnMpO1xyXG59O1xyXG5cclxuLy9JbmplY3QgQ1NTIHRvIGRvY3VtZW50IGhlYWRcclxuLy9pZCA9IGlkIG9mIGVsZW1lbnRcclxuLy9jc3MgPSBjdXN0b20gY3NzXHJcbkJkQXBpLmluamVjdENTUyA9IGZ1bmN0aW9uIChpZCwgY3NzKSB7XHJcbiAgICBET01NYW5hZ2VyLmluamVjdFN0eWxlKGlkLCBjc3MpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLmNsZWFyQ1NTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVN0eWxlKGlkKTtcclxufTtcclxuXHJcbi8vSW5qZWN0IENTUyB0byBkb2N1bWVudCBoZWFkXHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbi8vY3NzID0gY3VzdG9tIGNzc1xyXG5CZEFwaS5saW5rSlMgPSBmdW5jdGlvbiAoaWQsIHVybCkge1xyXG4gICAgcmV0dXJuIERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0KGlkLCB1cmwpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLnVubGlua0pTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVNjcmlwdChpZCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBtb2RhbC5cclxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IC0gYSBzdHJpbmcgb2YgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBtb2RhbFxyXG4gKi9cclxuQmRBcGkuYWxlcnQgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgIE1vZGFscy5hbGVydCh0aXRsZSwgY29udGVudCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBjb25maXJtYXRpb24gbW9kYWwgd2l0aCBvcHRpb25hbCBjb25maXJtIGFuZCBjYW5jZWwgY2FsbGJhY2tzLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSB0aXRsZSBvZiB0aGUgbW9kYWxcclxuICogQHBhcmFtIHsoc3RyaW5nfFJlYWN0RWxlbWVudHxBcnJheTxzdHJpbmd8UmVhY3RFbGVtZW50Pil9IGNoaWxkcmVuIC0gYSBzaW5nbGUgb3IgbWl4ZWQgYXJyYXkgb2YgcmVhY3QgZWxlbWVudHMgYW5kIHN0cmluZ3MuIEV2ZXJ5dGhpbmcgaXMgd3JhcHBlZCBpbiBEaXNjb3JkJ3MgYFRleHRFbGVtZW50YCBjb21wb25lbnQgc28gc3RyaW5ncyB3aWxsIHNob3cgYW5kIHJlbmRlciBwcm9wZXJseS5cclxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIG9wdGlvbnMgdG8gbW9kaWZ5IHRoZSBtb2RhbFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRhbmdlcj1mYWxzZV0gLSB3aGV0aGVyIHRoZSBtYWluIGJ1dHRvbiBzaG91bGQgYmUgcmVkIG9yIG5vdFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29uZmlybVRleHQ9T2theV0gLSB0ZXh0IGZvciB0aGUgY29uZmlybWF0aW9uL3N1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNhbmNlbFRleHQ9Q2FuY2VsXSAtIHRleHQgZm9yIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ29uZmlybT1OT09QXSAtIGNhbGxiYWNrIHRvIG9jY3VyIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25DYW5jZWw9Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqL1xyXG5CZEFwaS5zaG93Q29uZmlybWF0aW9uTW9kYWwgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIE1vZGFscy5zaG93Q29uZmlybWF0aW9uTW9kYWwodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgc2hvd3MgYSB0b2FzdCBzaW1pbGFyIHRvIGFuZHJvaWQgdG93YXJkcyB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBzdHJpbmcgdG8gc2hvdyBpbiB0aGUgdG9hc3QuXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIE9wdGlvbnMgb2JqZWN0LiBPcHRpb25hbCBwYXJhbWV0ZXIuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50eXBlPVwiXCJdIENoYW5nZXMgdGhlIHR5cGUgb2YgdGhlIHRvYXN0IHN0eWxpc3RpY2FsbHkgYW5kIHNlbWFudGljYWxseS4gQ2hvaWNlczogXCJcIiwgXCJpbmZvXCIsIFwic3VjY2Vzc1wiLCBcImRhbmdlclwiL1wiZXJyb3JcIiwgXCJ3YXJuaW5nXCIvXCJ3YXJuXCIuIERlZmF1bHQ6IFwiXCJcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pY29uPXRydWVdIERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBzaG91bGQgc2hvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlLiBBIHRvYXN0IHdpdGhvdXQgdHlwZSB3aWxsIGFsd2F5cyBoYXZlIG5vIGljb24uIERlZmF1bHQ6IHRydWVcclxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnRpbWVvdXQ9MzAwMF0gQWRqdXN0cyB0aGUgdGltZSAoaW4gbXMpIHRoZSB0b2FzdCBzaG91bGQgYmUgc2hvd24gZm9yIGJlZm9yZSBkaXNhcHBlYXJpbmcgYXV0b21hdGljYWxseS4gRGVmYXVsdDogMzAwMFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlU2hvdz1mYWxzZV0gV2hldGhlciB0byBmb3JjZSBzaG93aW5nIHRoZSB0b2FzdCBhbmQgaWdub3JlIHRoZSBiZCBzZXR0aW5nXHJcbiAqL1xyXG5CZEFwaS5zaG93VG9hc3QgPSBmdW5jdGlvbihjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIFRvYXN0cy5zaG93KGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLy8gRmluZHMgbW9kdWxlXHJcbkJkQXBpLmZpbmRNb2R1bGUgPSBmdW5jdGlvbihmaWx0ZXIpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUoZmlsdGVyKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kQWxsTW9kdWxlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShmaWx0ZXIsIGZhbHNlKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm9wcyA9IGZ1bmN0aW9uKC4uLnByb3BzKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyguLi5wcm9wcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm90b3R5cGVzID0gZnVuY3Rpb24oLi4ucHJvdG9zKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKC4uLnByb3Rvcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlEaXNwbGF5TmFtZSA9IGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKG5hbWUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyByZWFjdCBpbnN0YW5jZVxyXG5CZEFwaS5nZXRJbnRlcm5hbEluc3RhbmNlID0gZnVuY3Rpb24obm9kZSkge1xyXG4gICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIHdpbmRvdy5qUXVlcnkpICYmICEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBqUXVlcnkpIG5vZGUgPSBub2RlWzBdO1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5nZXRSZWFjdEluc3RhbmNlKG5vZGUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyBkYXRhXHJcbkJkQXBpLmxvYWREYXRhID0gZnVuY3Rpb24ocGx1Z2luTmFtZSwga2V5KSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldFBsdWdpbkRhdGEocGx1Z2luTmFtZSwga2V5KTtcclxufTtcclxuXHJcbkJkQXBpLmdldERhdGEgPSBCZEFwaS5sb2FkRGF0YTtcclxuXHJcbi8vIFNldHMgZGF0YVxyXG5CZEFwaS5zYXZlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSwgZGF0YSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSwgZGF0YSk7XHJcbn07XHJcblxyXG5CZEFwaS5zZXREYXRhID0gQmRBcGkuc2F2ZURhdGE7XHJcblxyXG4vLyBEZWxldGVzIGRhdGFcclxuQmRBcGkuZGVsZXRlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5kZWxldGVQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSk7XHJcbn07XHJcblxyXG4vLyBQYXRjaGVzIG90aGVyIGZ1bmN0aW9uc1xyXG5CZEFwaS5tb25rZXlQYXRjaCA9IGZ1bmN0aW9uKHdoYXQsIG1ldGhvZE5hbWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHtiZWZvcmUsIGFmdGVyLCBpbnN0ZWFkLCBvbmNlID0gZmFsc2UsIHNpbGVudCA9IGZhbHNlLCBmb3JjZSA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBkaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWUgfHwgd2hhdC5kaXNwbGF5TmFtZSB8fCB3aGF0Lm5hbWUgfHwgd2hhdC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB3aGF0LmNvbnN0cnVjdG9yLm5hbWU7XHJcbiAgICBpZiAoIXNpbGVudCkgY29uc29sZS5sb2coXCJwYXRjaFwiLCBtZXRob2ROYW1lLCBcIm9mXCIsIGRpc3BsYXlOYW1lKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXHJcbiAgICBpZiAoIXdoYXRbbWV0aG9kTmFtZV0pIHtcclxuICAgICAgICBpZiAoZm9yY2UpIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHt9O1xyXG4gICAgICAgIGVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IobWV0aG9kTmFtZSwgXCJkb2VzIG5vdCBleGlzdCBmb3JcIiwgZGlzcGxheU5hbWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcclxuICAgIH1cclxuICAgIGNvbnN0IG9yaWdNZXRob2QgPSB3aGF0W21ldGhvZE5hbWVdO1xyXG4gICAgY29uc3QgY2FuY2VsID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghc2lsZW50KSBjb25zb2xlLmxvZyhcInVucGF0Y2hcIiwgbWV0aG9kTmFtZSwgXCJvZlwiLCBkaXNwbGF5TmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxyXG4gICAgICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBvcmlnTWV0aG9kO1xyXG4gICAgfTtcclxuICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICAgICAgICB0aGlzT2JqZWN0OiB0aGlzLFxyXG4gICAgICAgICAgICBtZXRob2RBcmd1bWVudHM6IGFyZ3VtZW50cyxcclxuICAgICAgICAgICAgY2FuY2VsUGF0Y2g6IGNhbmNlbCxcclxuICAgICAgICAgICAgb3JpZ2luYWxNZXRob2Q6IG9yaWdNZXRob2QsXHJcbiAgICAgICAgICAgIGNhbGxPcmlnaW5hbE1ldGhvZDogKCkgPT4gZGF0YS5yZXR1cm5WYWx1ZSA9IGRhdGEub3JpZ2luYWxNZXRob2QuYXBwbHkoZGF0YS50aGlzT2JqZWN0LCBkYXRhLm1ldGhvZEFyZ3VtZW50cylcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChpbnN0ZWFkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXBSZXQgPSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoaW5zdGVhZCwgXCJgaW5zdGVhZGAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuICAgICAgICAgICAgaWYgKHRlbXBSZXQgIT09IHVuZGVmaW5lZCkgZGF0YS5yZXR1cm5WYWx1ZSA9IHRlbXBSZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoYmVmb3JlKSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoYmVmb3JlLCBcImBiZWZvcmVgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbiAgICAgICAgICAgIGRhdGEuY2FsbE9yaWdpbmFsTWV0aG9kKCk7XHJcbiAgICAgICAgICAgIGlmIChhZnRlcikgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGFmdGVyLCBcImBhZnRlcmAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uY2UpIGNhbmNlbCgpO1xyXG4gICAgICAgIHJldHVybiBkYXRhLnJldHVyblZhbHVlO1xyXG4gICAgfTtcclxuICAgIHdoYXRbbWV0aG9kTmFtZV0uX19tb25rZXlQYXRjaGVkID0gdHJ1ZTtcclxuICAgIGlmICghd2hhdFttZXRob2ROYW1lXS5fX29yaWdpbmFsTWV0aG9kKSB3aGF0W21ldGhvZE5hbWVdLl9fb3JpZ2luYWxNZXRob2QgPSBvcmlnTWV0aG9kO1xyXG4gICAgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSA9IFwicGF0Y2hlZCBcIiArICh3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lIHx8IG1ldGhvZE5hbWUpO1xyXG4gICAgcmV0dXJuIGNhbmNlbDtcclxufTtcclxuLy8gRXZlbnQgd2hlbiBlbGVtZW50IGlzIHJlbW92ZWRcclxuQmRBcGkub25SZW1vdmVkID0gZnVuY3Rpb24obm9kZSwgY2FsbGJhY2spIHtcclxuICAgIHJldHVybiBVdGlsaXRpZXMub25SZW1vdmVkKG5vZGUsIGNhbGxiYWNrKTtcclxufTtcclxuXHJcbi8vIFdyYXBzIGZ1bmN0aW9uIGluIHRyeS4uY2F0Y2hcclxuQmRBcGkuc3VwcHJlc3NFcnJvcnMgPSBmdW5jdGlvbihtZXRob2QsIG1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMobWV0aG9kLCBtZXNzYWdlKTtcclxufTtcclxuXHJcbi8vIFRlc3RzIGZvciB2YWxpZCBKU09OXHJcbkJkQXBpLnRlc3RKU09OID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy50ZXN0SlNPTihkYXRhKTtcclxufTtcclxuXHJcbi8vR2V0IGFub3RoZXIgcGx1Z2luXHJcbi8vbmFtZSA9IG5hbWUgb2YgcGx1Z2luXHJcbkJkQXBpLmdldFBsdWdpbiA9IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiZ2V0UGx1Z2luIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5QbHVnaW5zKVwiKTtcclxuICAgIHJldHVybiBQbHVnaW5NYW5hZ2VyLmFkZG9uTGlzdC5maW5kKGEgPT4gYS5uYW1lID09IG5hbWUpO1xyXG59O1xyXG5cclxuQmRBcGkuaXNQbHVnaW5FbmFibGVkID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgTG9nZ2VyLndhcm4oXCJCZEFwaVwiLCBcImlzUGx1Z2luRW5hYmxlZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgbWFrZSB1c2Ugb2YgdGhlIGFkZG9uIGFwaSAoQmRBcGkuUGx1Z2lucylcIik7XHJcbiAgICBjb25zdCBwbHVnaW4gPSB0aGlzLmdldFBsdWdpbihuYW1lKTtcclxuICAgIGlmICghcGx1Z2luKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gUGx1Z2luTWFuYWdlci5pc0VuYWJsZWQocGx1Z2luLmlkKTtcclxufTtcclxuXHJcbkJkQXBpLmlzVGhlbWVFbmFibGVkID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgTG9nZ2VyLndhcm4oXCJCZEFwaVwiLCBcImlzVGhlbWVFbmFibGVkIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5UaGVtZXMpXCIpO1xyXG4gICAgY29uc3QgdGhlbWUgPSBUaGVtZU1hbmFnZXIuYWRkb25MaXN0LmZpbmQoYSA9PiBhLm5hbWUgPT0gbmFtZSk7XHJcbiAgICBpZiAoIXRoZW1lKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gVGhlbWVNYW5hZ2VyLmlzRW5hYmxlZCh0aGVtZS5pZCk7XHJcbn07XHJcblxyXG5CZEFwaS5pc1NldHRpbmdFbmFibGVkID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3MuZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCk7XHJcbn07XHJcblxyXG5CZEFwaS5lbmFibGVTZXR0aW5nID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3Muc2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdHJ1ZSk7XHJcbn07XHJcblxyXG5CZEFwaS5kaXNhYmxlU2V0dGluZyA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLnNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIGZhbHNlKTtcclxufTtcclxuXHJcbkJkQXBpLnRvZ2dsZVNldHRpbmcgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5zZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCAhU2V0dGluZ3MuZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkpO1xyXG59O1xyXG5cclxuLy8gR2V0cyBkYXRhXHJcbkJkQXBpLmdldEJERGF0YSA9IGZ1bmN0aW9uKGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5nZXRCRERhdGEoa2V5KTtcclxufTtcclxuXHJcbi8vIFNldHMgZGF0YVxyXG5CZEFwaS5zZXRCRERhdGEgPSBmdW5jdGlvbihrZXksIGRhdGEpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0QkREYXRhKGtleSwgZGF0YSk7XHJcbn07XHJcblxyXG5jb25zdCBtYWtlQWRkb25BUEkgPSAobWFuYWdlcikgPT4gbmV3IGNsYXNzIEFkZG9uQVBJIHtcclxuICAgIGdldCBmb2xkZXIoKSB7cmV0dXJuIG1hbmFnZXIuYWRkb25Gb2xkZXI7fVxyXG4gICAgaXNFbmFibGVkKGlkT3JGaWxlKSB7cmV0dXJuIG1hbmFnZXIuaXNFbmFibGVkKGlkT3JGaWxlKTt9XHJcbiAgICBlbmFibGUoaWRPckFkZG9uKSB7cmV0dXJuIG1hbmFnZXIuZW5hYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICBkaXNhYmxlKGlkT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLmRpc2FibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHRvZ2dsZShpZE9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci50b2dnbGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHJlbG9hZChpZE9yRmlsZU9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci5yZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24pO31cclxuICAgIGdldChpZE9yRmlsZSkge3JldHVybiBtYW5hZ2VyLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZSB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlKTt9XHJcbiAgICBnZXRBbGwoKSB7cmV0dXJuIG1hbmFnZXIuYWRkb25MaXN0O31cclxufTtcclxuXHJcbkJkQXBpLlBsdWdpbnMgPSBtYWtlQWRkb25BUEkoUGx1Z2luTWFuYWdlcik7XHJcbkJkQXBpLlRoZW1lcyA9IG1ha2VBZGRvbkFQSShUaGVtZU1hbmFnZXIpO1xyXG5cclxuT2JqZWN0LmZyZWV6ZShCZEFwaSk7XHJcbk9iamVjdC5mcmVlemUoQmRBcGkuUGx1Z2lucyk7XHJcbk9iamVjdC5mcmVlemUoQmRBcGkuVGhlbWVzKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEJkQXBpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/pluginapi.js\n"); /***/ }), @@ -527,7 +527,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst electronRemote = __webpack_require__(/*! electron */ \"electron\").remote;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PluginManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n get name() {\n return \"PluginManager\";\n }\n\n get moduleExtension() {\n return \".js\";\n }\n\n get extension() {\n return \".plugin.js\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\");\n }\n\n get prefix() {\n return \"plugin\";\n }\n\n get language() {\n return \"javascript\";\n }\n\n constructor() {\n super();\n this.onSwitch = this.onSwitch.bind(this);\n this.observer = new MutationObserver(mutations => {\n for (let i = 0, mlen = mutations.length; i < mlen; i++) {\n this.onMutation(mutations[i]);\n }\n });\n }\n\n initialize() {\n const errors = super.initialize();\n this.setupFunctions();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].registerPanel(\"plugins\", _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.togglePlugin.bind(this),\n reload: this.reloadPlugin.bind(this),\n refreshList: this.updatePluginList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updatePluginList() {\n return this.updateList();\n }\n\n loadAllPlugins() {\n return this.loadAllAddons();\n }\n\n enablePlugin(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disablePlugin(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n togglePlugin(id) {\n return this.toggleAddon(id);\n }\n\n unloadPlugin(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadPlugin(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadPlugin(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: [error]\n });\n return typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n }\n /* Overrides */\n\n\n initializeAddon(addon) {\n if (!addon.type) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Plugin had no exports\", {\n message: \"Plugin had no exports or no name property.\",\n stack: \"\"\n });\n\n try {\n const thePlugin = new addon.type();\n addon.plugin = thePlugin;\n addon.name = thePlugin.getName() || addon.name;\n addon.author = thePlugin.getAuthor() || addon.author || \"No author\";\n addon.description = thePlugin.getDescription() || addon.description || \"No description\";\n addon.version = thePlugin.getVersion() || addon.version || \"No version\";\n\n try {\n if (typeof addon.plugin.load == \"function\") addon.plugin.load();\n } catch (error) {\n this.state[addon.id] = false;\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"load() could not be fired.\", {\n message: error.message,\n stack: error.stack\n });\n }\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Could not be constructed.\", {\n message: error.message,\n stack: error.stack\n });\n }\n }\n\n getFileModification(module, fileContent, meta) {\n module._compile(fileContent, module.filename);\n\n const didExport = !_utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(module.exports);\n\n if (didExport) {\n meta.type = module.exports;\n module.exports = meta;\n return \"\";\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn(this.name, `${meta.name}, please start assigning module.exports`);\n fileContent += `\\nmodule.exports = ${JSON.stringify(meta)};\\nmodule.exports.type = ${meta.exports || meta.name};`;\n return fileContent;\n }\n\n startAddon(id) {\n return this.startPlugin(id);\n }\n\n stopAddon(id) {\n return this.stopPlugin(id);\n }\n\n startPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.start();\n this.emit(\"started\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(`${addon.name} v${addon.version} has started.`);\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`${addon.name} v${addon.version} could not be started.`);\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be started.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"start() could not be fired.\", {\n message: err.message,\n stack: err.stack\n });\n }\n }\n\n stopPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.stop();\n this.emit(\"stopped\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(`${addon.name} v${addon.version} has stopped.`);\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`${addon.name} v${addon.version} could not be stopped.`);\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be stopped.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"stop() could not be fired.\", {\n message: err.message,\n stack: err.stack\n });\n }\n }\n\n setupFunctions() {\n electronRemote.getCurrentWebContents().on(\"did-navigate-in-page\", this.onSwitch.bind(this));\n this.observer.observe(document, {\n childList: true,\n subtree: true\n });\n }\n\n onSwitch() {\n this.emit(\"page-switch\");\n\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.onSwitch === \"function\") {\n try {\n plugin.onSwitch();\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire onSwitch for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n onMutation(mutation) {\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.observer === \"function\") {\n try {\n plugin.observer(mutation);\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire observer for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcGx1Z2lubWFuYWdlci5qcz9kMTczIl0sIm5hbWVzIjpbInBhdGgiLCJyZXF1aXJlIiwiZWxlY3Ryb25SZW1vdGUiLCJyZW1vdGUiLCJQbHVnaW5NYW5hZ2VyIiwiQWRkb25NYW5hZ2VyIiwibmFtZSIsIm1vZHVsZUV4dGVuc2lvbiIsImV4dGVuc2lvbiIsImFkZG9uRm9sZGVyIiwicmVzb2x2ZSIsIkNvbmZpZyIsImRhdGFQYXRoIiwicHJlZml4IiwibGFuZ3VhZ2UiLCJjb25zdHJ1Y3RvciIsIm9uU3dpdGNoIiwiYmluZCIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsImkiLCJtbGVuIiwibGVuZ3RoIiwib25NdXRhdGlvbiIsImluaXRpYWxpemUiLCJlcnJvcnMiLCJzZXR1cEZ1bmN0aW9ucyIsIlNldHRpbmdzIiwicmVnaXN0ZXJQYW5lbCIsIlN0cmluZ3MiLCJQYW5lbHMiLCJwbHVnaW5zIiwiZWxlbWVudCIsIlNldHRpbmdzUmVuZGVyZXIiLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0Iiwic3RhdGUiLCJmb2xkZXIiLCJvbkNoYW5nZSIsInRvZ2dsZVBsdWdpbiIsInJlbG9hZCIsInJlbG9hZFBsdWdpbiIsInJlZnJlc2hMaXN0IiwidXBkYXRlUGx1Z2luTGlzdCIsInNhdmVBZGRvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwidXBkYXRlTGlzdCIsImxvYWRBbGxQbHVnaW5zIiwibG9hZEFsbEFkZG9ucyIsImVuYWJsZVBsdWdpbiIsImlkT3JBZGRvbiIsImVuYWJsZUFkZG9uIiwiZGlzYWJsZVBsdWdpbiIsImRpc2FibGVBZGRvbiIsImlkIiwidG9nZ2xlQWRkb24iLCJ1bmxvYWRQbHVnaW4iLCJpZE9yRmlsZU9yQWRkb24iLCJ1bmxvYWRBZGRvbiIsImxvYWRQbHVnaW4iLCJmaWxlbmFtZSIsImVycm9yIiwibG9hZEFkZG9uIiwiTW9kYWxzIiwic2hvd0FkZG9uRXJyb3JzIiwidGhlbWVzIiwicmVsb2FkQWRkb24iLCJmaW5kIiwiYyIsImluaXRpYWxpemVBZGRvbiIsImFkZG9uIiwidHlwZSIsIkFkZG9uRXJyb3IiLCJtZXNzYWdlIiwic3RhY2siLCJ0aGVQbHVnaW4iLCJwbHVnaW4iLCJnZXROYW1lIiwiYXV0aG9yIiwiZ2V0QXV0aG9yIiwiZGVzY3JpcHRpb24iLCJnZXREZXNjcmlwdGlvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwibG9hZCIsImdldEZpbGVNb2RpZmljYXRpb24iLCJtb2R1bGUiLCJmaWxlQ29udGVudCIsIm1ldGEiLCJfY29tcGlsZSIsImRpZEV4cG9ydCIsIlV0aWxpdGllcyIsImlzRW1wdHkiLCJleHBvcnRzIiwiTG9nZ2VyIiwid2FybiIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydEFkZG9uIiwic3RhcnRQbHVnaW4iLCJzdG9wQWRkb24iLCJzdG9wUGx1Z2luIiwicCIsInN0YXJ0IiwiZW1pdCIsIlRvYXN0cyIsInNob3ciLCJlcnIiLCJzdGFja3RyYWNlIiwic3RvcCIsImdldEN1cnJlbnRXZWJDb250ZW50cyIsIm9uIiwib2JzZXJ2ZSIsImRvY3VtZW50IiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsIm11dGF0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUNBLE1BQU1DLGNBQWMsR0FBR0QsbUJBQU8sQ0FBQywwQkFBRCxDQUFQLENBQW9CRSxNQUEzQzs7QUFFZSxtRUFBSSxNQUFNQyxhQUFOLFNBQTRCQyxxREFBNUIsQ0FBeUM7QUFDeEQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUNwQyxNQUFJQyxlQUFKLEdBQXNCO0FBQUMs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dUM7O0FBQ3ZDLFVBQUksT0FBT3NCLE1BQU0sQ0FBQzlELFFBQWQsS0FBNEIsVUFBaEMsRUFBNEM7QUFDeEMsWUFBSTtBQUFFOEQsZ0JBQU0sQ0FBQzlELFFBQVA7QUFBb0IsU0FBMUIsQ0FDQSxPQUFPNkYsR0FBUCxFQUFZO0FBQUViLHlEQUFNLENBQUNjLFVBQVAsQ0FBa0IsS0FBS3hHLElBQXZCLEVBQTZCLGlDQUFpQyxLQUFLOEIsU0FBTCxDQUFlZixDQUFmLEVBQWtCZixJQUFuRCxHQUEwRCxHQUF2RixFQUE0RnVHLEdBQTVGO0FBQW1HO0FBQ3BIO0FBQ0o7QUFDSjs7QUFFRHJGLFlBQVUsQ0FBQzhGLFFBQUQsRUFBVztBQUNqQixTQUFLLElBQUlqRyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUtlLFNBQUwsQ0FBZWIsTUFBbkMsRUFBMkNGLENBQUMsRUFBNUMsRUFBZ0Q7QUFDNUMsWUFBTXlELE1BQU0sR0FBRyxLQUFLMUMsU0FBTCxDQUFlZixDQUFmLEVBQWtCeUQsTUFBakM7QUFDQSxVQUFJLENBQUMsS0FBS3pDLEtBQUwsQ0FBVyxLQUFLRCxTQUFMLENBQWVmLENBQWYsRUFBa0JtQyxFQUE3QixDQUFMLEVBQXVDOztBQUN2QyxVQUFJLE9BQU9zQixNQUFNLENBQUM1RCxRQUFkLEtBQTJCLFVBQS9CLEVBQTJDO0FBQ3ZDLFlBQUk7QUFBRTRELGdCQUFNLENBQUM1RCxRQUFQLENBQWdCb0csUUFBaEI7QUFBNEIsU0FBbEMsQ0FDQSxPQUFPVCxHQUFQLEVBQVk7QUFBRWIseURBQU0sQ0FBQ2MsVUFBUCxDQUFrQixLQUFLeEcsSUFBdkIsRUFBNkIsaUNBQWlDLEtBQUs4QixTQUFMLENBQWVmLENBQWYsRUFBa0JmLElBQW5ELEdBQTBELEdBQXZGLEVBQTRGdUcsR0FBNUY7QUFBbUc7QUFDcEg7QUFDSjtBQUNKOztBQTNKdUQsQ0FBN0MsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3BsdWdpbm1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IEFkZG9uTWFuYWdlciBmcm9tIFwiLi9hZGRvbm1hbmFnZXJcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IEFkZG9uRXJyb3IgZnJvbSBcIi4uL3N0cnVjdHMvYWRkb25lcnJvclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuXHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzUmVuZGVyZXIgZnJvbSBcIi4uL3VpL3NldHRpbmdzXCI7XHJcblxyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbmNvbnN0IGVsZWN0cm9uUmVtb3RlID0gcmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBQbHVnaW5NYW5hZ2VyIGV4dGVuZHMgQWRkb25NYW5hZ2VyIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlBsdWdpbk1hbmFnZXJcIjt9XHJcbiAgICBnZXQgbW9kdWxlRXh0ZW5zaW9uKCkge3JldHVybiBcIi5qc1wiO31cclxuICAgIGdldCBleHRlbnNpb24oKSB7cmV0dXJuIFwiLnBsdWdpbi5qc1wiO31cclxuICAgIGdldCBhZGRvbkZvbGRlcigpIHtyZXR1cm4gcGF0aC5yZXNvbHZlKENvbmZpZy5kYXRhUGF0aCwgXCJwbHVnaW5zXCIpO31cclxuICAgIGdldCBwcmVmaXgoKSB7cmV0dXJuIFwicGx1Z2luXCI7fVxyXG4gICAgZ2V0IGxhbmd1YWdlKCkge3JldHVybiBcImphdmFzY3JpcHRcIjt9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLm9uU3dpdGNoID0gdGhpcy5vblN3aXRjaC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBtbGVuID0gbXV0YXRpb25zLmxlbmd0aDsgaSA8IG1sZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbk11dGF0aW9uKG11dGF0aW9uc1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN1cGVyLmluaXRpYWxpemUoKTtcclxuICAgICAgICB0aGlzLnNldHVwRnVuY3Rpb25zKCk7XHJcbiAgICAgICAgU2V0dGluZ3MucmVnaXN0ZXJQYW5lbChcInBsdWdpbnNcIiwgU3RyaW5ncy5QYW5lbHMucGx1Z2lucywge2VsZW1lbnQ6ICgpID0+IFNldHRpbmdzUmVuZGVyZXIuZ2V0QWRkb25QYW5lbChTdHJpbmdzLlBhbmVscy5wbHVnaW5zLCB0aGlzLmFkZG9uTGlzdCwgdGhpcy5zdGF0ZSwge1xyXG4gICAgICAgICAgICBmb2xkZXI6IHRoaXMuYWRkb25Gb2xkZXIsXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZVBsdWdpbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICByZWxvYWQ6IHRoaXMucmVsb2FkUGx1Z2luLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0OiB0aGlzLnVwZGF0ZVBsdWdpbkxpc3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgc2F2ZUFkZG9uOiB0aGlzLnNhdmVBZGRvbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBlZGl0QWRkb246IHRoaXMuZWRpdEFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGRlbGV0ZUFkZG9uOiB0aGlzLmRlbGV0ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHByZWZpeDogdGhpcy5wcmVmaXhcclxuICAgICAgICB9KX0pO1xyXG4gICAgICAgIHJldHVybiBlcnJvcnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyogQWxpYXNlcyAqL1xyXG4gICAgdXBkYXRlUGx1Z2luTGlzdCgpIHtyZXR1cm4gdGhpcy51cGRhdGVMaXN0KCk7fVxyXG4gICAgbG9hZEFsbFBsdWdpbnMoKSB7cmV0dXJuIHRoaXMubG9hZEFsbEFkZG9ucygpO31cclxuXHJcbiAgICBlbmFibGVQbHVnaW4oaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZW5hYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICBkaXNhYmxlUGx1Z2luKGlkT3JBZGRvbikge3JldHVybiB0aGlzLmRpc2FibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHRvZ2dsZVBsdWdpbihpZCkge3JldHVybiB0aGlzLnRvZ2dsZUFkZG9uKGlkKTt9XHJcblxyXG4gICAgdW5sb2FkUGx1Z2luKGlkT3JGaWxlT3JBZGRvbikge3JldHVybiB0aGlzLnVubG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7fVxyXG5cclxuICAgIGxvYWRQbHVnaW4oZmlsZW5hbWUpIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMubG9hZEFkZG9uKGZpbGVuYW1lKTtcclxuICAgICAgICBpZiAoZXJyb3IpIE1vZGFscy5zaG93QWRkb25FcnJvcnMoe3RoZW1lczogW2Vycm9yXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZFBsdWdpbihpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucmVsb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIE1vZGFscy5zaG93QWRkb25FcnJvcnMoe3BsdWdpbnM6IFtlcnJvcl19KTtcclxuICAgICAgICByZXR1cm4gdHlwZW9mKGlkT3JGaWxlT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlT3JBZGRvbiB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlT3JBZGRvbikgOiBpZE9yRmlsZU9yQWRkb247XHJcbiAgICB9XHJcblxyXG4gICAgLyogT3ZlcnJpZGVzICovXHJcbiAgICBpbml0aWFsaXplQWRkb24oYWRkb24pIHtcclxuICAgICAgICBpZiAoIWFkZG9uLnR5cGUpIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgXCJQbHVnaW4gaGFkIG5vIGV4cG9ydHNcIiwge21lc3NhZ2U6IFwiUGx1Z2luIGhhZCBubyBleHBvcnRzIG9yIG5vIG5hbWUgcHJvcGVydHkuXCIsIHN0YWNrOiBcIlwifSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgdGhlUGx1Z2luID0gbmV3IGFkZG9uLnR5cGUoKTtcclxuICAgICAgICAgICAgYWRkb24ucGx1Z2luID0gdGhlUGx1Z2luO1xyXG4gICAgICAgICAgICBhZGRvbi5uYW1lID0gdGhlUGx1Z2luLmdldE5hbWUoKSB8fCBhZGRvbi5uYW1lO1xyXG4gICAgICAgICAgICBhZGRvbi5hdXRob3IgPSB0aGVQbHVnaW4uZ2V0QXV0aG9yKCkgfHwgYWRkb24uYXV0aG9yIHx8IFwiTm8gYXV0aG9yXCI7XHJcbiAgICAgICAgICAgIGFkZG9uLmRlc2NyaXB0aW9uID0gdGhlUGx1Z2luLmdldERlc2NyaXB0aW9uKCkgfHwgYWRkb24uZGVzY3JpcHRpb24gfHwgXCJObyBkZXNjcmlwdGlvblwiO1xyXG4gICAgICAgICAgICBhZGRvbi52ZXJzaW9uID0gdGhlUGx1Z2luLmdldFZlcnNpb24oKSB8fCBhZGRvbi52ZXJzaW9uIHx8IFwiTm8gdmVyc2lvblwiO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZihhZGRvbi5wbHVnaW4ubG9hZCkgPT0gXCJmdW5jdGlvblwiKSBhZGRvbi5wbHVnaW4ubG9hZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgXCJsb2FkKCkgY291bGQgbm90IGJlIGZpcmVkLlwiLCB7bWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7cmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcIkNvdWxkIG5vdCBiZSBjb25zdHJ1Y3RlZC5cIiwge21lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsIHN0YWNrOiBlcnJvci5zdGFja30pO31cclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWxlTW9kaWZpY2F0aW9uKG1vZHVsZSwgZmlsZUNvbnRlbnQsIG1ldGEpIHtcclxuICAgICAgICBtb2R1bGUuX2NvbXBpbGUoZmlsZUNvbnRlbnQsIG1vZHVsZS5maWxlbmFtZSk7XHJcbiAgICAgICAgY29uc3QgZGlkRXhwb3J0ID0gIVV0aWxpdGllcy5pc0VtcHR5KG1vZHVsZS5leHBvcnRzKTtcclxuICAgICAgICBpZiAoZGlkRXhwb3J0KSB7XHJcbiAgICAgICAgICAgIG1ldGEudHlwZSA9IG1vZHVsZS5leHBvcnRzO1xyXG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IG1ldGE7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBMb2dnZXIud2Fybih0aGlzLm5hbWUsIGAke21ldGEubmFtZX0sIHBsZWFzZSBzdGFydCBhc3NpZ25pbmcgbW9kdWxlLmV4cG9ydHNgKTtcclxuICAgICAgICBmaWxlQ29udGVudCArPSBgXFxubW9kdWxlLmV4cG9ydHMgPSAke0pTT04uc3RyaW5naWZ5KG1ldGEpfTtcXG5tb2R1bGUuZXhwb3J0cy50eXBlID0gJHttZXRhLmV4cG9ydHMgfHwgbWV0YS5uYW1lfTtgO1xyXG4gICAgICAgIHJldHVybiBmaWxlQ29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuc3RhcnRQbHVnaW4oaWQpO31cclxuICAgIHN0b3BBZGRvbihpZCkge3JldHVybiB0aGlzLnN0b3BQbHVnaW4oaWQpO31cclxuXHJcbiAgICBzdGFydFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdChcInN0YXJ0ZWRcIiwgYWRkb24uaWQpO1xyXG4gICAgICAgICAgICBUb2FzdHMuc2hvdyhgJHthZGRvbi5uYW1lfSB2JHthZGRvbi52ZXJzaW9ufSBoYXMgc3RhcnRlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBUb2FzdHMuZXJyb3IoYCR7YWRkb24ubmFtZX0gdiR7YWRkb24udmVyc2lvbn0gY291bGQgbm90IGJlIHN0YXJ0ZWQuYCk7XHJcbiAgICAgICAgICAgIExvZ2dlci5zdGFja3RyYWNlKHRoaXMubmFtZSwgYWRkb24ubmFtZSArIFwiIGNvdWxkIG5vdCBiZSBzdGFydGVkLlwiLCBlcnIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgYWRkb24uZmlsZW5hbWUsIFwic3RhcnQoKSBjb3VsZCBub3QgYmUgZmlyZWQuXCIsIHttZXNzYWdlOiBlcnIubWVzc2FnZSwgc3RhY2s6IGVyci5zdGFja30pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdG9wUGx1Z2luKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHBsdWdpbiA9IGFkZG9uLnBsdWdpbjtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBwbHVnaW4uc3RvcCgpO1xyXG4gICAgICAgICAgICB0aGlzLmVtaXQoXCJzdG9wcGVkXCIsIGFkZG9uLmlkKTtcclxuICAgICAgICAgICAgVG9hc3RzLnNob3coYCR7YWRkb24ubmFtZX0gdiR7YWRkb24udmVyc2lvbn0gaGFzIHN0b3BwZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgVG9hc3RzLmVycm9yKGAke2FkZG9uLm5hbWV9IHYke2FkZG9uLnZlcnNpb259IGNvdWxkIG5vdCBiZSBzdG9wcGVkLmApO1xyXG4gICAgICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIGFkZG9uLm5hbWUgKyBcIiBjb3VsZCBub3QgYmUgc3RvcHBlZC5cIiwgZXJyKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcInN0b3AoKSBjb3VsZCBub3QgYmUgZmlyZWQuXCIsIHttZXNzYWdlOiBlcnIubWVzc2FnZSwgc3RhY2s6IGVyci5zdGFja30pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXR1cEZ1bmN0aW9ucygpIHtcclxuICAgICAgICBlbGVjdHJvblJlbW90ZS5nZXRDdXJyZW50V2ViQ29udGVudHMoKS5vbihcImRpZC1uYXZpZ2F0ZS1pbi1wYWdlXCIsIHRoaXMub25Td2l0Y2guYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7XHJcbiAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICAgICAgc3VidHJlZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU3dpdGNoKCkge1xyXG4gICAgICAgIHRoaXMuZW1pdChcInBhZ2Utc3dpdGNoXCIpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hZGRvbkxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcGx1Z2luID0gdGhpcy5hZGRvbkxpc3RbaV0ucGx1Z2luO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbdGhpcy5hZGRvbkxpc3RbaV0uaWRdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihwbHVnaW4ub25Td2l0Y2gpID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7IHBsdWdpbi5vblN3aXRjaCgpOyB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7IExvZ2dlci5zdGFja3RyYWNlKHRoaXMubmFtZSwgXCJVbmFibGUgdG8gZmlyZSBvblN3aXRjaCBmb3IgXCIgKyB0aGlzLmFkZG9uTGlzdFtpXS5uYW1lICsgXCIuXCIsIGVycik7IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbk11dGF0aW9uKG11dGF0aW9uKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmFkZG9uTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBwbHVnaW4gPSB0aGlzLmFkZG9uTGlzdFtpXS5wbHVnaW47XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVt0aGlzLmFkZG9uTGlzdFtpXS5pZF0pIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHBsdWdpbi5vYnNlcnZlciA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkgeyBwbHVnaW4ub2JzZXJ2ZXIobXV0YXRpb24pOyB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7IExvZ2dlci5zdGFja3RyYWNlKHRoaXMubmFtZSwgXCJVbmFibGUgdG8gZmlyZSBvYnNlcnZlciBmb3IgXCIgKyB0aGlzLmFkZG9uTGlzdFtpXS5uYW1lICsgXCIuXCIsIGVycik7IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/pluginmanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst electronRemote = __webpack_require__(/*! electron */ \"electron\").remote;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PluginManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n get name() {\n return \"PluginManager\";\n }\n\n get moduleExtension() {\n return \".js\";\n }\n\n get extension() {\n return \".plugin.js\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\");\n }\n\n get prefix() {\n return \"plugin\";\n }\n\n get language() {\n return \"javascript\";\n }\n\n constructor() {\n super();\n this.onSwitch = this.onSwitch.bind(this);\n this.observer = new MutationObserver(mutations => {\n for (let i = 0, mlen = mutations.length; i < mlen; i++) {\n this.onMutation(mutations[i]);\n }\n });\n }\n\n initialize() {\n const errors = super.initialize();\n this.setupFunctions();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].registerPanel(\"plugins\", _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.togglePlugin.bind(this),\n reload: this.reloadPlugin.bind(this),\n refreshList: this.updatePluginList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updatePluginList() {\n return this.updateList();\n }\n\n loadAllPlugins() {\n return this.loadAllAddons();\n }\n\n enablePlugin(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disablePlugin(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n togglePlugin(id) {\n return this.toggleAddon(id);\n }\n\n unloadPlugin(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadPlugin(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadPlugin(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: [error]\n });\n return typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n }\n /* Overrides */\n\n\n initializeAddon(addon) {\n if (!addon.type) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Plugin had no exports\", {\n message: \"Plugin had no exports or no name property.\",\n stack: \"\"\n });\n\n try {\n const thePlugin = new addon.type();\n addon.plugin = thePlugin;\n addon.name = thePlugin.getName() || addon.name;\n addon.author = thePlugin.getAuthor() || addon.author || \"No author\";\n addon.description = thePlugin.getDescription() || addon.description || \"No description\";\n addon.version = thePlugin.getVersion() || addon.version || \"No version\";\n\n try {\n if (typeof addon.plugin.load == \"function\") addon.plugin.load();\n } catch (error) {\n this.state[addon.id] = false;\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"load() could not be fired.\", {\n message: error.message,\n stack: error.stack\n });\n }\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Could not be constructed.\", {\n message: error.message,\n stack: error.stack\n });\n }\n }\n\n getFileModification(module, fileContent, meta) {\n module._compile(fileContent, module.filename);\n\n const didExport = !_utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(module.exports);\n\n if (didExport) {\n meta.type = module.exports;\n module.exports = meta;\n return \"\";\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn(this.name, `${meta.name}, please start assigning module.exports`);\n fileContent += `\\nmodule.exports = ${JSON.stringify(meta)};\\nmodule.exports.type = ${meta.exports || meta.name};`;\n return fileContent;\n }\n\n startAddon(id) {\n return this.startPlugin(id);\n }\n\n stopAddon(id) {\n return this.stopPlugin(id);\n }\n\n startPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.start();\n this.emit(\"started\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`${addon.name} v${addon.version} could not be started.`);\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be started.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"start() could not be fired.\", {\n message: err.message,\n stack: err.stack\n });\n }\n }\n\n stopPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.stop();\n this.emit(\"stopped\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(`${addon.name} v${addon.version} could not be stopped.`);\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be stopped.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"stop() could not be fired.\", {\n message: err.message,\n stack: err.stack\n });\n }\n }\n\n setupFunctions() {\n electronRemote.getCurrentWebContents().on(\"did-navigate-in-page\", this.onSwitch.bind(this));\n this.observer.observe(document, {\n childList: true,\n subtree: true\n });\n }\n\n onSwitch() {\n this.emit(\"page-switch\");\n\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.onSwitch === \"function\") {\n try {\n plugin.onSwitch();\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire onSwitch for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n onMutation(mutation) {\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.observer === \"function\") {\n try {\n plugin.observer(mutation);\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire observer for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcGx1Z2lubWFuYWdlci5qcz9kMTczIl0sIm5hbWVzIjpbInBhdGgiLCJyZXF1aXJlIiwiZWxlY3Ryb25SZW1vdGUiLCJyZW1vdGUiLCJQbHVnaW5NYW5hZ2VyIiwiQWRkb25NYW5hZ2VyIiwibmFtZSIsIm1vZHVsZUV4dGVuc2lvbiIsImV4dGVuc2lvbiIsImFkZG9uRm9sZGVyIiwicmVzb2x2ZSIsIkNvbmZpZyIsImRhdGFQYXRoIiwicHJlZml4IiwibGFuZ3VhZ2UiLCJjb25zdHJ1Y3RvciIsIm9uU3dpdGNoIiwiYmluZCIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsImkiLCJtbGVuIiwibGVuZ3RoIiwib25NdXRhdGlvbiIsImluaXRpYWxpemUiLCJlcnJvcnMiLCJzZXR1cEZ1bmN0aW9ucyIsIlNldHRpbmdzIiwicmVnaXN0ZXJQYW5lbCIsIlN0cmluZ3MiLCJQYW5lbHMiLCJwbHVnaW5zIiwiZWxlbWVudCIsIlNldHRpbmdzUmVuZGVyZXIiLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0Iiwic3RhdGUiLCJmb2xkZXIiLCJvbkNoYW5nZSIsInRvZ2dsZVBsdWdpbiIsInJlbG9hZCIsInJlbG9hZFBsdWdpbiIsInJlZnJlc2hMaXN0IiwidXBkYXRlUGx1Z2luTGlzdCIsInNhdmVBZGRvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwidXBkYXRlTGlzdCIsImxvYWRBbGxQbHVnaW5zIiwibG9hZEFsbEFkZG9ucyIsImVuYWJsZVBsdWdpbiIsImlkT3JBZGRvbiIsImVuYWJsZUFkZG9uIiwiZGlzYWJsZVBsdWdpbiIsImRpc2FibGVBZGRvbiIsImlkIiwidG9nZ2xlQWRkb24iLCJ1bmxvYWRQbHVnaW4iLCJpZE9yRmlsZU9yQWRkb24iLCJ1bmxvYWRBZGRvbiIsImxvYWRQbHVnaW4iLCJmaWxlbmFtZSIsImVycm9yIiwibG9hZEFkZG9uIiwiTW9kYWxzIiwic2hvd0FkZG9uRXJyb3JzIiwidGhlbWVzIiwicmVsb2FkQWRkb24iLCJmaW5kIiwiYyIsImluaXRpYWxpemVBZGRvbiIsImFkZG9uIiwidHlwZSIsIkFkZG9uRXJyb3IiLCJtZXNzYWdlIiwic3RhY2siLCJ0aGVQbHVnaW4iLCJwbHVnaW4iLCJnZXROYW1lIiwiYXV0aG9yIiwiZ2V0QXV0aG9yIiwiZGVzY3JpcHRpb24iLCJnZXREZXNjcmlwdGlvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwibG9hZCIsImdldEZpbGVNb2RpZmljYXRpb24iLCJtb2R1bGUiLCJmaWxlQ29udGVudCIsIm1ldGEiLCJfY29tcGlsZSIsImRpZEV4cG9ydCIsIlV0aWxpdGllcyIsImlzRW1wdHkiLCJleHBvcnRzIiwiTG9nZ2VyIiwid2FybiIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydEFkZG9uIiwic3RhcnRQbHVnaW4iLCJzdG9wQWRkb24iLCJzdG9wUGx1Z2luIiwicCIsInN0YXJ0IiwiZW1pdCIsIlRvYXN0cyIsInNob3ciLCJBZGRvbnMiLCJlbmFibGVkIiwiZm9ybWF0IiwiZXJyIiwic3RhY2t0cmFjZSIsInN0b3AiLCJkaXNhYmxlZCIsImdldEN1cnJlbnRXZWJDb250ZW50cyIsIm9uIiwib2JzZXJ2ZSIsImRvY3VtZW50IiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsIm11dGF0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUNBLE1BQU1DLGNBQWMsR0FBR0QsbUJBQU8sQ0FBQywwQkFBRCxDQUFQLENBQW9CRSxNQUEzQzs7QUFFZSxtRUFBSSxNQUFNQyxhQUFOLFNBQTRCQyxxREFBNUIsQ0FBeUM7QUFDeEQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxl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a0IsS0FBSzNHLElBQXZCLEVBQTZCLGlDQUFpQyxLQUFLOEIsU0FBTCxDQUFlZixDQUFmLEVBQWtCZixJQUFuRCxHQUEwRCxHQUF2RixFQUE0RjBHLEdBQTVGO0FBQW1HO0FBQ3BIO0FBQ0o7QUFDSjs7QUEzSnVELENBQTdDLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wbHVnaW5tYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmltcG9ydCBBZGRvbk1hbmFnZXIgZnJvbSBcIi4vYWRkb25tYW5hZ2VyXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCBBZGRvbkVycm9yIGZyb20gXCIuLi9zdHJ1Y3RzL2FkZG9uZXJyb3JcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgU3RyaW5ncyBmcm9tIFwiLi9zdHJpbmdzXCI7XHJcblxyXG5pbXBvcnQgVG9hc3RzIGZyb20gXCIuLi91aS90b2FzdHNcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vdWkvbW9kYWxzXCI7XHJcbmltcG9ydCBTZXR0aW5nc1JlbmRlcmVyIGZyb20gXCIuLi91aS9zZXR0aW5nc1wiO1xyXG5cclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xyXG5jb25zdCBlbGVjdHJvblJlbW90ZSA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGU7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgUGx1Z2luTWFuYWdlciBleHRlbmRzIEFkZG9uTWFuYWdlciB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJQbHVnaW5NYW5hZ2VyXCI7fVxyXG4gICAgZ2V0IG1vZHVsZUV4dGVuc2lvbigpIHtyZXR1cm4gXCIuanNcIjt9XHJcbiAgICBnZXQgZXh0ZW5zaW9uKCkge3JldHVybiBcIi5wbHVnaW4uanNcIjt9XHJcbiAgICBnZXQgYWRkb25Gb2xkZXIoKSB7cmV0dXJuIHBhdGgucmVzb2x2ZShDb25maWcuZGF0YVBhdGgsIFwicGx1Z2luc1wiKTt9XHJcbiAgICBnZXQgcHJlZml4KCkge3JldHVybiBcInBsdWdpblwiO31cclxuICAgIGdldCBsYW5ndWFnZSgpIHtyZXR1cm4gXCJqYXZhc2NyaXB0XCI7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5vblN3aXRjaCA9IHRoaXMub25Td2l0Y2guYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbWxlbiA9IG11dGF0aW9ucy5sZW5ndGg7IGkgPCBtbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25NdXRhdGlvbihtdXRhdGlvbnNbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBjb25zdCBlcnJvcnMgPSBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgdGhpcy5zZXR1cEZ1bmN0aW9ucygpO1xyXG4gICAgICAgIFNldHRpbmdzLnJlZ2lzdGVyUGFuZWwoXCJwbHVnaW5zXCIsIFN0cmluZ3MuUGFuZWxzLnBsdWdpbnMsIHtlbGVtZW50OiAoKSA9PiBTZXR0aW5nc1JlbmRlcmVyLmdldEFkZG9uUGFuZWwoU3RyaW5ncy5QYW5lbHMucGx1Z2lucywgdGhpcy5hZGRvbkxpc3QsIHRoaXMuc3RhdGUsIHtcclxuICAgICAgICAgICAgZm9sZGVyOiB0aGlzLmFkZG9uRm9sZGVyLFxyXG4gICAgICAgICAgICBvbkNoYW5nZTogdGhpcy50b2dnbGVQbHVnaW4uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVsb2FkOiB0aGlzLnJlbG9hZFBsdWdpbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICByZWZyZXNoTGlzdDogdGhpcy51cGRhdGVQbHVnaW5MaXN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHNhdmVBZGRvbjogdGhpcy5zYXZlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZWRpdEFkZG9uOiB0aGlzLmVkaXRBZGRvbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBkZWxldGVBZGRvbjogdGhpcy5kZWxldGVBZGRvbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBwcmVmaXg6IHRoaXMucHJlZml4XHJcbiAgICAgICAgfSl9KTtcclxuICAgICAgICByZXR1cm4gZXJyb3JzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIEFsaWFzZXMgKi9cclxuICAgIHVwZGF0ZVBsdWdpbkxpc3QoKSB7cmV0dXJuIHRoaXMudXBkYXRlTGlzdCgpO31cclxuICAgIGxvYWRBbGxQbHVnaW5zKCkge3JldHVybiB0aGlzLmxvYWRBbGxBZGRvbnMoKTt9XHJcblxyXG4gICAgZW5hYmxlUGx1Z2luKGlkT3JBZGRvbikge3JldHVybiB0aGlzLmVuYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgZGlzYWJsZVBsdWdpbihpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5kaXNhYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICB0b2dnbGVQbHVnaW4oaWQpIHtyZXR1cm4gdGhpcy50b2dnbGVBZGRvbihpZCk7fVxyXG5cclxuICAgIHVubG9hZFBsdWdpbihpZE9yRmlsZU9yQWRkb24pIHtyZXR1cm4gdGhpcy51bmxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24pO31cclxuXHJcbiAgICBsb2FkUGx1Z2luKGZpbGVuYW1lKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSk7XHJcbiAgICAgICAgaWYgKGVycm9yKSBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHt0aGVtZXM6IFtlcnJvcl19KTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWRQbHVnaW4oaWRPckZpbGVPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnJlbG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7XHJcbiAgICAgICAgaWYgKGVycm9yKSBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHtwbHVnaW5zOiBbZXJyb3JdfSk7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIE92ZXJyaWRlcyAqL1xyXG4gICAgaW5pdGlhbGl6ZUFkZG9uKGFkZG9uKSB7XHJcbiAgICAgICAgaWYgKCFhZGRvbi50eXBlKSByZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgYWRkb24uZmlsZW5hbWUsIFwiUGx1Z2luIGhhZCBubyBleHBvcnRzXCIsIHttZXNzYWdlOiBcIlBsdWdpbiBoYWQgbm8gZXhwb3J0cyBvciBubyBuYW1lIHByb3BlcnR5LlwiLCBzdGFjazogXCJcIn0pO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRoZVBsdWdpbiA9IG5ldyBhZGRvbi50eXBlKCk7XHJcbiAgICAgICAgICAgIGFkZG9uLnBsdWdpbiA9IHRoZVBsdWdpbjtcclxuICAgICAgICAgICAgYWRkb24ubmFtZSA9IHRoZVBsdWdpbi5nZXROYW1lKCkgfHwgYWRkb24ubmFtZTtcclxuICAgICAgICAgICAgYWRkb24uYXV0aG9yID0gdGhlUGx1Z2luLmdldEF1dGhvcigpIHx8IGFkZG9uLmF1dGhvciB8fCBcIk5vIGF1dGhvclwiO1xyXG4gICAgICAgICAgICBhZGRvbi5kZXNjcmlwdGlvbiA9IHRoZVBsdWdpbi5nZXREZXNjcmlwdGlvbigpIHx8IGFkZG9uLmRlc2NyaXB0aW9uIHx8IFwiTm8gZGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgICAgYWRkb24udmVyc2lvbiA9IHRoZVBsdWdpbi5nZXRWZXJzaW9uKCkgfHwgYWRkb24udmVyc2lvbiB8fCBcIk5vIHZlcnNpb25cIjtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YoYWRkb24ucGx1Z2luLmxvYWQpID09IFwiZnVuY3Rpb25cIikgYWRkb24ucGx1Z2luLmxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVbYWRkb24uaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgYWRkb24uZmlsZW5hbWUsIFwibG9hZCgpIGNvdWxkIG5vdCBiZSBmaXJlZC5cIiwge21lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsIHN0YWNrOiBlcnJvci5zdGFja30pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnJvcikge3JldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgXCJDb3VsZCBub3QgYmUgY29uc3RydWN0ZWQuXCIsIHttZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBzdGFjazogZXJyb3Iuc3RhY2t9KTt9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsZU1vZGlmaWNhdGlvbihtb2R1bGUsIGZpbGVDb250ZW50LCBtZXRhKSB7XHJcbiAgICAgICAgbW9kdWxlLl9jb21waWxlKGZpbGVDb250ZW50LCBtb2R1bGUuZmlsZW5hbWUpO1xyXG4gICAgICAgIGNvbnN0IGRpZEV4cG9ydCA9ICFVdGlsaXRpZXMuaXNFbXB0eShtb2R1bGUuZXhwb3J0cyk7XHJcbiAgICAgICAgaWYgKGRpZEV4cG9ydCkge1xyXG4gICAgICAgICAgICBtZXRhLnR5cGUgPSBtb2R1bGUuZXhwb3J0cztcclxuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBtZXRhO1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgTG9nZ2VyLndhcm4odGhpcy5uYW1lLCBgJHttZXRhLm5hbWV9LCBwbGVhc2Ugc3RhcnQgYXNzaWduaW5nIG1vZHVsZS5leHBvcnRzYCk7XHJcbiAgICAgICAgZmlsZUNvbnRlbnQgKz0gYFxcbm1vZHVsZS5leHBvcnRzID0gJHtKU09OLnN0cmluZ2lmeShtZXRhKX07XFxubW9kdWxlLmV4cG9ydHMudHlwZSA9ICR7bWV0YS5leHBvcnRzIHx8IG1ldGEubmFtZX07YDtcclxuICAgICAgICByZXR1cm4gZmlsZUNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRBZGRvbihpZCkge3JldHVybiB0aGlzLnN0YXJ0UGx1Z2luKGlkKTt9XHJcbiAgICBzdG9wQWRkb24oaWQpIHtyZXR1cm4gdGhpcy5zdG9wUGx1Z2luKGlkKTt9XHJcblxyXG4gICAgc3RhcnRQbHVnaW4oaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgcGx1Z2luID0gYWRkb24ucGx1Z2luO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHBsdWdpbi5zdGFydCgpO1xyXG4gICAgICAgICAgICB0aGlzLmVtaXQoXCJzdGFydGVkXCIsIGFkZG9uLmlkKTtcclxuICAgICAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgVG9hc3RzLmVycm9yKGAke2FkZG9uLm5hbWV9IHYke2FkZG9uLnZlcnNpb259IGNvdWxkIG5vdCBiZSBzdGFydGVkLmApO1xyXG4gICAgICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIGFkZG9uLm5hbWUgKyBcIiBjb3VsZCBub3QgYmUgc3RhcnRlZC5cIiwgZXJyKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcInN0YXJ0KCkgY291bGQgbm90IGJlIGZpcmVkLlwiLCB7bWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2t9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0b3AoKTtcclxuICAgICAgICAgICAgdGhpcy5lbWl0KFwic3RvcHBlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgICAgIFRvYXN0cy5zaG93KFN0cmluZ3MuQWRkb25zLmRpc2FibGVkLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBUb2FzdHMuZXJyb3IoYCR7YWRkb24ubmFtZX0gdiR7YWRkb24udmVyc2lvbn0gY291bGQgbm90IGJlIHN0b3BwZWQuYCk7XHJcbiAgICAgICAgICAgIExvZ2dlci5zdGFja3RyYWNlKHRoaXMubmFtZSwgYWRkb24ubmFtZSArIFwiIGNvdWxkIG5vdCBiZSBzdG9wcGVkLlwiLCBlcnIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgYWRkb24uZmlsZW5hbWUsIFwic3RvcCgpIGNvdWxkIG5vdCBiZSBmaXJlZC5cIiwge21lc3NhZ2U6IGVyci5tZXNzYWdlLCBzdGFjazogZXJyLnN0YWNrfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldHVwRnVuY3Rpb25zKCkge1xyXG4gICAgICAgIGVsZWN0cm9uUmVtb3RlLmdldEN1cnJlbnRXZWJDb250ZW50cygpLm9uKFwiZGlkLW5hdmlnYXRlLWluLXBhZ2VcIiwgdGhpcy5vblN3aXRjaC5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHtcclxuICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxyXG4gICAgICAgICAgICBzdWJ0cmVlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Td2l0Y2goKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KFwicGFnZS1zd2l0Y2hcIik7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmFkZG9uTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBwbHVnaW4gPSB0aGlzLmFkZG9uTGlzdFtpXS5wbHVnaW47XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVt0aGlzLmFkZG9uTGlzdFtpXS5pZF0pIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mKHBsdWdpbi5vblN3aXRjaCkgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHsgcGx1Z2luLm9uU3dpdGNoKCk7IH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHsgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBcIlVuYWJsZSB0byBmaXJlIG9uU3dpdGNoIGZvciBcIiArIHRoaXMuYWRkb25MaXN0W2ldLm5hbWUgKyBcIi5cIiwgZXJyKTsgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uTXV0YXRpb24obXV0YXRpb24pIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYWRkb25MaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuYWRkb25MaXN0W2ldLnBsdWdpbjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlW3RoaXMuYWRkb25MaXN0W2ldLmlkXSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGx1Z2luLm9ic2VydmVyID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7IHBsdWdpbi5vYnNlcnZlcihtdXRhdGlvbik7IH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHsgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBcIlVuYWJsZSB0byBmaXJlIG9ic2VydmVyIGZvciBcIiArIHRoaXMuYWRkb25MaXN0W2ldLm5hbWUgKyBcIi5cIiwgZXJyKTsgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/pluginmanager.js\n"); /***/ }), @@ -575,7 +575,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loc /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ThemeManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n get name() {\n return \"ThemeManager\";\n }\n\n get moduleExtension() {\n return \".css\";\n }\n\n get extension() {\n return \".theme.css\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"themes\");\n }\n\n get prefix() {\n return \"theme\";\n }\n\n get language() {\n return \"css\";\n }\n\n initialize() {\n const errors = super.initialize();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerPanel(\"themes\", _strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.toggleTheme.bind(this),\n reload: this.reloadTheme.bind(this),\n refreshList: this.updateThemeList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updateThemeList() {\n return this.updateList();\n }\n\n loadAllThemes() {\n return this.loadAllAddons();\n }\n\n enableTheme(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disableTheme(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n toggleTheme(id) {\n return this.toggleAddon(id);\n }\n\n unloadTheme(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadTheme(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadTheme(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n /* Overrides */\n\n\n getFileModification(module, fileContent, meta) {\n meta.css = fileContent;\n return `module.exports = ${JSON.stringify(meta)};`;\n }\n\n startAddon(id) {\n return this.addTheme(id);\n }\n\n stopAddon(id) {\n return this.removeTheme(id);\n }\n\n addTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectTheme(addon.id, addon.css);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(`${addon.name} v${addon.version} has been applied.`);\n }\n\n removeTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeTheme(addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(`${addon.name} v${addon.version} has been removed.`);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvdGhlbWVtYW5hZ2VyLmpzPzQwNzgiXSwibmFtZXMiOlsicGF0aCIsInJlcXVpcmUiLCJUaGVtZU1hbmFnZXIiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJyZXNvbHZlIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJwcmVmaXgiLCJsYW5ndWFnZSIsImluaXRpYWxpemUiLCJlcnJvcnMiLCJTZXR0aW5ncyIsInJlZ2lzdGVyUGFuZWwiLCJTdHJpbmdzIiwiUGFuZWxzIiwidGhlbWVzIiwiZWxlbWVudCIsIlNldHRpbmdzUmVuZGVyZXIiLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0Iiwic3RhdGUiLCJmb2xkZXIiLCJvbkNoYW5nZSIsInRvZ2dsZVRoZW1lIiwiYmluZCIsInJlbG9hZCIsInJlbG9hZFRoZW1lIiwicmVmcmVzaExpc3QiLCJ1cGRhdGVUaGVtZUxpc3QiLCJzYXZlQWRkb24iLCJlZGl0QWRkb24iLCJkZWxldGVBZGRvbiIsInVwZGF0ZUxpc3QiLCJsb2FkQWxsVGhlbWVzIiwibG9hZEFsbEFkZG9ucyIsImVuYWJsZVRoZW1lIiwiaWRPckFkZG9uIiwiZW5hYmxlQWRkb24iLCJkaXNhYmxlVGhlbWUiLCJkaXNhYmxlQWRkb24iLCJpZCIsInRvZ2dsZUFkZG9uIiwidW5sb2FkVGhlbWUiLCJpZE9yRmlsZU9yQWRkb24iLCJ1bmxvYWRBZGRvbiIsImxvYWRUaGVtZSIsImZpbGVuYW1lIiwiZXJyb3IiLCJsb2FkQWRkb24iLCJNb2RhbHMiLCJzaG93QWRkb25FcnJvcnMiLCJyZWxvYWRBZGRvbiIsImdldEZpbGVNb2RpZmljYXRpb24iLCJtb2R1bGUiLCJmaWxlQ29udGVudCIsIm1ldGEiLCJjc3MiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhcnRBZGRvbiIsImFkZFRoZW1lIiwic3RvcEFkZG9uIiwicmVtb3ZlVGhlbWUiLCJhZGRvbiIsImZpbmQiLCJwIiwiRE9NTWFuYWdlciIsImluamVjdFRoZW1lIiwiVG9hc3RzIiwic2hvdyIsInZlcnNpb24iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUVlLG1FQUFJLE1BQU1DLFlBQU4sU0FBMkJDLHFEQUEzQixDQUF3QztBQUN2RCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGNBQVA7QUFBdUI7O0FBQ25DLE1BQUlDLGVBQUosR0FBc0I7QUFBQyxXQUFPLE1BQVA7QUFBZTs7QUFDdEMsTUFBSUMsU0FBSixHQUFnQjtBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDdEMsTUFBSUMsV0FBSixHQUFrQjtBQUFDLFdBQU9QLElBQUksQ0FBQ1EsT0FBTCxDQUFhQywyQ0FBTSxDQUFDQyxRQUFwQixFQUE4QixRQUE5QixDQUFQO0FBQWdEOztBQUNuRSxNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLE9BQVA7QUFBZ0I7O0FBQzlCLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sS0FBUDtBQUFjOztBQUU5QkMsWUFBVSxHQUFHO0FBQ1QsVUFBTUMsTUFBTSxHQUFHLE1BQU1ELFVBQU4sRUFBZjtBQUNBRSw0REFBUSxDQUFDQyxhQUFULENBQXVCLFFBQXZCLEVBQWlDQyxnREFBTyxDQUFDQyxNQUFSLENBQWVDLE1BQWhELEVBQXdEO0FBQUNDLGFBQU8sRUFBRSxNQUFNQyxvREFBZ0IsQ0FBQ0MsYUFBakIsQ0FBK0JMLGdEQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBOUMsRUFBc0QsS0FBS0ksU0FBM0QsRUFBc0UsS0FBS0MsS0FBM0UsRUFBa0Y7QUFDdEpDLGNBQU0sRUFBRSxLQUFLbEIsV0FEeUk7QUFFdEptQixnQkFBUSxFQUFFLEtBQUtDLFdBQUwsQ0FBaUJDLElBQWpC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RURSLGFBQVcsQ0FBQzFCLFNBQUQsRUFBWTtBQUNuQixVQUFNMkIsS0FBSyxHQUFHLE9BQU8zQixTQUFQLElBQXFCLFFBQXJCLEdBQWdDLEtBQUtqQixTQUFMLENBQWU2QyxJQUFmLENBQW9CQyxDQUFDLElBQUlBLENBQUMsQ0FBQ3pCLEVBQUYsSUFBUUosU0FBakMsQ0FBaEMsR0FBOEVBLFNBQTVGO0FBQ0EsUUFBSSxDQUFDMkIsS0FBTCxFQUFZO0FBQ1pHLHVEQUFVLENBQUNKLFdBQVgsQ0FBdUJDLEtBQUssQ0FBQ3ZCLEVBQTdCO0FBQ0E0QixzREFBTSxDQUFDQyxJQUFQLENBQWEsR0FBRU4sS0FBSyxDQUFDL0QsSUFBSyxLQUFJK0QsS0FBSyxDQUFDTyxPQUFRLG9CQUE1QztBQUNIOztBQWhFc0QsQ0FBNUMsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3RoZW1lbWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgQWRkb25NYW5hZ2VyIGZyb20gXCIuL2FkZG9ubWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NSZW5kZXJlciBmcm9tIFwiLi4vdWkvc2V0dGluZ3NcIjtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBUaGVtZU1hbmFnZXIgZXh0ZW5kcyBBZGRvbk1hbmFnZXIge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVGhlbWVNYW5hZ2VyXCI7fVxyXG4gICAgZ2V0IG1vZHVsZUV4dGVuc2lvbigpIHtyZXR1cm4gXCIuY3NzXCI7fVxyXG4gICAgZ2V0IGV4dGVuc2lvbigpIHtyZXR1cm4gXCIudGhlbWUuY3NzXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInRoZW1lc1wiKTt9XHJcbiAgICBnZXQgcHJlZml4KCkge3JldHVybiBcInRoZW1lXCI7fVxyXG4gICAgZ2V0IGxhbmd1YWdlKCkge3JldHVybiBcImNzc1wiO31cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN1cGVyLmluaXRpYWxpemUoKTtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKFwidGhlbWVzXCIsIFN0cmluZ3MuUGFuZWxzLnRoZW1lcywge2VsZW1lbnQ6ICgpID0+IFNldHRpbmdzUmVuZGVyZXIuZ2V0QWRkb25QYW5lbChTdHJpbmdzLlBhbmVscy50aGVtZXMsIHRoaXMuYWRkb25MaXN0LCB0aGlzLnN0YXRlLCB7XHJcbiAgICAgICAgICAgIGZvbGRlcjogdGhpcy5hZGRvbkZvbGRlcixcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudG9nZ2xlVGhlbWUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVsb2FkOiB0aGlzLnJlbG9hZFRoZW1lLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0OiB0aGlzLnVwZGF0ZVRoZW1lTGlzdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBzYXZlQWRkb246IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGVkaXRBZGRvbjogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZGVsZXRlQWRkb246IHRoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeFxyXG4gICAgICAgIH0pfSk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKiBBbGlhc2VzICovXHJcbiAgICB1cGRhdGVUaGVtZUxpc3QoKSB7cmV0dXJuIHRoaXMudXBkYXRlTGlzdCgpO31cclxuICAgIGxvYWRBbGxUaGVtZXMoKSB7cmV0dXJuIHRoaXMubG9hZEFsbEFkZG9ucygpO31cclxuXHJcbiAgICBlbmFibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5kaXNhYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICB0b2dnbGVUaGVtZShpZCkge3JldHVybiB0aGlzLnRvZ2dsZUFkZG9uKGlkKTt9XHJcblxyXG4gICAgdW5sb2FkVGhlbWUoaWRPckZpbGVPckFkZG9uKSB7cmV0dXJuIHRoaXMudW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTt9XHJcblxyXG4gICAgbG9hZFRoZW1lKGZpbGVuYW1lKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSk7XHJcbiAgICAgICAgaWYgKGVycm9yKSBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHt0aGVtZXM6IFtlcnJvcl19KTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWRUaGVtZShpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucmVsb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIE1vZGFscy5zaG93QWRkb25FcnJvcnMoe3RoZW1lczogW2Vycm9yXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIE92ZXJyaWRlcyAqL1xyXG4gICAgZ2V0RmlsZU1vZGlmaWNhdGlvbihtb2R1bGUsIGZpbGVDb250ZW50LCBtZXRhKSB7XHJcbiAgICAgICAgbWV0YS5jc3MgPSBmaWxlQ29udGVudDtcclxuICAgICAgICByZXR1cm4gYG1vZHVsZS5leHBvcnRzID0gJHtKU09OLnN0cmluZ2lmeShtZXRhKX07YDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuYWRkVGhlbWUoaWQpO31cclxuICAgIHN0b3BBZGRvbihpZCkge3JldHVybiB0aGlzLnJlbW92ZVRoZW1lKGlkKTt9XHJcblxyXG4gICAgYWRkVGhlbWUoaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgRE9NTWFuYWdlci5pbmplY3RUaGVtZShhZGRvbi5pZCwgYWRkb24uY3NzKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhgJHthZGRvbi5uYW1lfSB2JHthZGRvbi52ZXJzaW9ufSBoYXMgYmVlbiBhcHBsaWVkLmApO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVRoZW1lKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIERPTU1hbmFnZXIucmVtb3ZlVGhlbWUoYWRkb24uaWQpO1xyXG4gICAgICAgIFRvYXN0cy5zaG93KGAke2FkZG9uLm5hbWV9IHYke2FkZG9uLnZlcnNpb259IGhhcyBiZWVuIHJlbW92ZWQuYCk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/thememanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ThemeManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n get name() {\n return \"ThemeManager\";\n }\n\n get moduleExtension() {\n return \".css\";\n }\n\n get extension() {\n return \".theme.css\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"themes\");\n }\n\n get prefix() {\n return \"theme\";\n }\n\n get language() {\n return \"css\";\n }\n\n initialize() {\n const errors = super.initialize();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerPanel(\"themes\", _strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.toggleTheme.bind(this),\n reload: this.reloadTheme.bind(this),\n refreshList: this.updateThemeList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updateThemeList() {\n return this.updateList();\n }\n\n loadAllThemes() {\n return this.loadAllAddons();\n }\n\n enableTheme(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disableTheme(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n toggleTheme(id) {\n return this.toggleAddon(id);\n }\n\n unloadTheme(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadTheme(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadTheme(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n /* Overrides */\n\n\n getFileModification(module, fileContent, meta) {\n meta.css = fileContent;\n return `module.exports = ${JSON.stringify(meta)};`;\n }\n\n startAddon(id) {\n return this.addTheme(id);\n }\n\n stopAddon(id) {\n return this.removeTheme(id);\n }\n\n addTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectTheme(addon.id, addon.css);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n removeTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeTheme(addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvdGhlbWVtYW5hZ2VyLmpzPzQwNzgiXSwibmFtZXMiOlsicGF0aCIsInJlcXVpcmUiLCJUaGVtZU1hbmFnZXIiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJyZXNvbHZlIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJwcmVmaXgiLCJsYW5ndWFnZSIsImluaXRpYWxpemUiLCJlcnJvcnMiLCJTZXR0aW5ncyIsInJlZ2lzdGVyUGFuZWwiLCJTdHJpbmdzIiwiUGFuZWxzIiwidGhlbWVzIiwiZWxlbWVudCIsIlNldHRpbmdzUmVuZGVyZXIiLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0Iiwic3RhdGUiLCJmb2xkZXIiLCJvbkNoYW5nZSIsInRvZ2dsZVRoZW1lIiwiYmluZCIsInJlbG9hZCIsInJlbG9hZFRoZW1lIiwicmVmcmVzaExpc3QiLCJ1cGRhdGVUaGVtZUxpc3QiLCJzYXZlQWRkb24iLCJlZGl0QWRkb24iLCJkZWxldGVBZGRvbiIsInVwZGF0ZUxpc3QiLCJsb2FkQWxsVGhlbWVzIiwibG9hZEFsbEFkZG9ucyIsImVuYWJsZVRoZW1lIiwiaWRPckFkZG9uIiwiZW5hYmxlQWRkb24iLCJkaXNhYmxlVGhlbWUiLCJkaXNhYmxlQWRkb24iLCJpZCIsInRvZ2dsZUFkZG9uIiwidW5sb2FkVGhlbWUiLCJpZE9yRmlsZU9yQWRkb24iLCJ1bmxvYWRBZGRvbiIsImxvYWRUaGVtZSIsImZpbGVuYW1lIiwiZXJyb3IiLCJsb2FkQWRkb24iLCJNb2RhbHMiLCJzaG93QWRkb25FcnJvcnMiLCJyZWxvYWRBZGRvbiIsImdldEZpbGVNb2RpZmljYXRpb24iLCJtb2R1bGUiLCJmaWxlQ29udGVudCIsIm1ldGEiLCJjc3MiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhcnRBZGRvbiIsImFkZFRoZW1lIiwic3RvcEFkZG9uIiwicmVtb3ZlVGhlbWUiLCJhZGRvbiIsImZpbmQiLCJwIiwiRE9NTWFuYWdlciIsImluamVjdFRoZW1lIiwiVG9hc3RzIiwic2hvdyIsIkFkZG9ucyIsImVuYWJsZWQiLCJmb3JtYXQiLCJ2ZXJzaW9uIiwiZGlzYWJsZWQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUVlLG1FQUFJLE1BQU1DLFlBQU4sU0FBMkJDLHFEQUEzQixDQUF3QztBQUN2RCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGNBQVA7QUFBdUI7O0FBQ25DLE1BQUlDLGVBQUosR0FBc0I7QUFBQyxXQUFPLE1BQVA7QUFBZTs7QUFDdEMsTUFBSUMsU0FBSixHQUFnQjtBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDdEMsTUFBSUMsV0FBSixHQUFrQjtBQUFDLFdBQU9QLElBQUksQ0FBQ1EsT0FBTCxDQUFhQywyQ0FBTSxDQUFDQyxRQUFwQixFQUE4QixRQUE5QixDQUFQO0FBQWdEOztBQUNuRSxNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLE9BQVA7QUFBZ0I7O0FBQzlCLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sS0FBUDtBQUFjOztBQUU5QkMsWUFBVSxHQUFHO0FBQ1QsVUFBTUMsTUFBTSxHQUFHLE1BQU1ELFVBQU4sRUFBZjtBQUNBRSw0REFBUSxDQUFDQyxhQUFULENBQXVCLFFBQXZCLEVBQWlDQyxnREFBTyxDQUFDQyxNQUFSLENBQWVDLE1BQWhELEVBQXdEO0FBQUNDLGFBQU8sRUFBRSxNQUFNQyxvREFBZ0IsQ0FBQ0MsYUFBakIsQ0FBK0JMLGdEQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBOUMsRUFBc0QsS0FBS0ksU0FBM0QsRUFBc0UsS0FBS0MsS0FBM0UsRUFBa0Y7QUFDdEpDLGNBQU0sRUFBRSxLQUFLbEIsV0FEeUk7QUFF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QWVDLE9BQWYsQ0FBdUJDLE1BQXZCLENBQThCO0FBQUN4RSxVQUFJLEVBQUUrRCxLQUFLLENBQUMvRCxJQUFiO0FBQW1CeUUsYUFBTyxFQUFFVixLQUFLLENBQUNVO0FBQWxDLEtBQTlCLENBQVo7QUFDSDs7QUFFRFgsYUFBVyxDQUFDMUIsU0FBRCxFQUFZO0FBQ25CLFVBQU0yQixLQUFLLEdBQUcsT0FBTzNCLFNBQVAsSUFBcUIsUUFBckIsR0FBZ0MsS0FBS2pCLFNBQUwsQ0FBZTZDLElBQWYsQ0FBb0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDekIsRUFBRixJQUFRSixTQUFqQyxDQUFoQyxHQUE4RUEsU0FBNUY7QUFDQSxRQUFJLENBQUMyQixLQUFMLEVBQVk7QUFDWkcsdURBQVUsQ0FBQ0osV0FBWCxDQUF1QkMsS0FBSyxDQUFDdkIsRUFBN0I7QUFDQTRCLHNEQUFNLENBQUNDLElBQVAsQ0FBWXhELGdEQUFPLENBQUN5RCxNQUFSLENBQWVJLFFBQWYsQ0FBd0JGLE1BQXhCLENBQStCO0FBQUN4RSxVQUFJLEVBQUUrRCxLQUFLLENBQUMvRCxJQUFiO0FBQW1CeUUsYUFBTyxFQUFFVixLQUFLLENBQUNVO0FBQWxDLEtBQS9CLENBQVo7QUFDSDs7QUFoRXNELENBQTVDLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy90aGVtZW1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IEFkZG9uTWFuYWdlciBmcm9tIFwiLi9hZGRvbm1hbmFnZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgRE9NTWFuYWdlciBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuXHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzUmVuZGVyZXIgZnJvbSBcIi4uL3VpL3NldHRpbmdzXCI7XHJcblxyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgVGhlbWVNYW5hZ2VyIGV4dGVuZHMgQWRkb25NYW5hZ2VyIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlRoZW1lTWFuYWdlclwiO31cclxuICAgIGdldCBtb2R1bGVFeHRlbnNpb24oKSB7cmV0dXJuIFwiLmNzc1wiO31cclxuICAgIGdldCBleHRlbnNpb24oKSB7cmV0dXJuIFwiLnRoZW1lLmNzc1wiO31cclxuICAgIGdldCBhZGRvbkZvbGRlcigpIHtyZXR1cm4gcGF0aC5yZXNvbHZlKENvbmZpZy5kYXRhUGF0aCwgXCJ0aGVtZXNcIik7fVxyXG4gICAgZ2V0IHByZWZpeCgpIHtyZXR1cm4gXCJ0aGVtZVwiO31cclxuICAgIGdldCBsYW5ndWFnZSgpIHtyZXR1cm4gXCJjc3NcIjt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBjb25zdCBlcnJvcnMgPSBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgU2V0dGluZ3MucmVnaXN0ZXJQYW5lbChcInRoZW1lc1wiLCBTdHJpbmdzLlBhbmVscy50aGVtZXMsIHtlbGVtZW50OiAoKSA9PiBTZXR0aW5nc1JlbmRlcmVyLmdldEFkZG9uUGFuZWwoU3RyaW5ncy5QYW5lbHMudGhlbWVzLCB0aGlzLmFkZG9uTGlzdCwgdGhpcy5zdGF0ZSwge1xyXG4gICAgICAgICAgICBmb2xkZXI6IHRoaXMuYWRkb25Gb2xkZXIsXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZVRoZW1lLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlbG9hZDogdGhpcy5yZWxvYWRUaGVtZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICByZWZyZXNoTGlzdDogdGhpcy51cGRhdGVUaGVtZUxpc3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgc2F2ZUFkZG9uOiB0aGlzLnNhdmVBZGRvbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBlZGl0QWRkb246IHRoaXMuZWRpdEFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGRlbGV0ZUFkZG9uOiB0aGlzLmRlbGV0ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHByZWZpeDogdGhpcy5wcmVmaXhcclxuICAgICAgICB9KX0pO1xyXG4gICAgICAgIHJldHVybiBlcnJvcnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyogQWxpYXNlcyAqL1xyXG4gICAgdXBkYXRlVGhlbWVMaXN0KCkge3JldHVybiB0aGlzLnVwZGF0ZUxpc3QoKTt9XHJcbiAgICBsb2FkQWxsVGhlbWVzKCkge3JldHVybiB0aGlzLmxvYWRBbGxBZGRvbnMoKTt9XHJcblxyXG4gICAgZW5hYmxlVGhlbWUoaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZW5hYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICBkaXNhYmxlVGhlbWUoaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlVGhlbWUoaWQpIHtyZXR1cm4gdGhpcy50b2dnbGVBZGRvbihpZCk7fVxyXG5cclxuICAgIHVubG9hZFRoZW1lKGlkT3JGaWxlT3JBZGRvbikge3JldHVybiB0aGlzLnVubG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7fVxyXG5cclxuICAgIGxvYWRUaGVtZShmaWxlbmFtZSkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5sb2FkQWRkb24oZmlsZW5hbWUpO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7dGhlbWVzOiBbZXJyb3JdfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVsb2FkVGhlbWUoaWRPckZpbGVPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnJlbG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7XHJcbiAgICAgICAgaWYgKGVycm9yKSBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHt0aGVtZXM6IFtlcnJvcl19KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiBPdmVycmlkZXMgKi9cclxuICAgIGdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCwgbWV0YSkge1xyXG4gICAgICAgIG1ldGEuY3NzID0gZmlsZUNvbnRlbnQ7XHJcbiAgICAgICAgcmV0dXJuIGBtb2R1bGUuZXhwb3J0cyA9ICR7SlNPTi5zdHJpbmdpZnkobWV0YSl9O2A7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRBZGRvbihpZCkge3JldHVybiB0aGlzLmFkZFRoZW1lKGlkKTt9XHJcbiAgICBzdG9wQWRkb24oaWQpIHtyZXR1cm4gdGhpcy5yZW1vdmVUaGVtZShpZCk7fVxyXG5cclxuICAgIGFkZFRoZW1lKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIERPTU1hbmFnZXIuaW5qZWN0VGhlbWUoYWRkb24uaWQsIGFkZG9uLmNzcyk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlVGhlbWUoaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgRE9NTWFuYWdlci5yZW1vdmVUaGVtZShhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZGlzYWJsZWQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/thememanager.js\n"); /***/ }), @@ -635,7 +635,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BuiltinModule; });\n/* harmony import */ var _modules_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _modules_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modules/emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../modules/settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _modules_patcher__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modules/patcher */ \"./src/modules/patcher.js\");\n\n\n\n\nclass BuiltinModule {\n get name() {\n return \"Unnamed Builtin\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"None\";\n }\n\n async initialize() {\n if (_modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.collection, this.category, this.id)) await this.enable();\n _modules_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].on(\"setting-updated\", (collection, category, id, enabled) => {\n if (collection != this.collection || category !== this.category || id !== this.id) return;\n if (enabled) this.enable();else this.disable();\n });\n this.initialized = true;\n }\n\n registerSetting(collection, category, id, onEnable, onDisable) {\n if (arguments.length == 4) {\n collection = this.collection;\n category = arguments[0];\n id = arguments[1];\n onEnable = arguments[2];\n onDisable = arguments[3];\n } else if (arguments.length == 3) {\n collection = this.collection;\n category = this.category;\n id = arguments[0];\n onEnable = arguments[1];\n onDisable = arguments[2];\n }\n\n return _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].on(collection, category, id, value => {\n if (value) onEnable();else onDisable();\n });\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n collection = this.collection;\n category = arguments[0];\n id = arguments[1];\n } else if (arguments.length == 1) {\n collection = this.collection;\n category = this.category;\n id = arguments[0];\n }\n\n return _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(collection, category, id);\n }\n\n async enable() {\n this.log(\"Enabled\");\n await this.enabled();\n }\n\n async disable() {\n this.log(\"Disabled\");\n await this.disabled();\n }\n\n async enabled() {}\n\n async disabled() {}\n\n log(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].log(this.name, ...message);\n }\n\n warn(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].warn(this.name, ...message);\n }\n\n error(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(this.name, ...message);\n }\n\n stacktrace(message, error) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stacktrace(this.name, message, error);\n }\n\n after(object, func, callback) {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].after(this.name, object, func, callback);\n }\n\n unpatchAll() {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].unpatchAll(this.name);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3N0cnVjdHMvYnVpbHRpbi5qcz85NTYyIl0sIm5hbWVzIjpbIkJ1aWx0aW5Nb2R1bGUiLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJpbml0aWFsaXplIiwiU2V0dGluZ3MiLCJnZXQiLCJlbmFibGUiLCJFdmVudHMiLCJvbiIsImVuYWJsZWQiLCJkaXNhYmxlIiwiaW5pdGlhbGl6ZWQiLCJyZWdpc3RlclNldHRpbmciLCJvbkVuYWJsZSIsIm9uRGlzYWJsZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInZhbHVlIiwibG9nIiwiZGlzYWJsZWQiLCJtZXNzYWdlIiwiTG9nZ2VyIiwid2FybiIsImVycm9yIiwiZXJyIiwic3RhY2t0cmFjZSIsImFmdGVyIiwib2JqZWN0IiwiZnVuYyIsImNhbGxiYWNrIiwiUGF0Y2hlciIsInVucGF0Y2hBbGwiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsTUFBTUEsYUFBTixDQUFvQjtBQUUvQixNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUN0QyxNQUFJQyxVQUFKLEdBQWlCO0FBQUMsV0FBTyxVQUFQO0FBQW1COztBQUNyQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sTUFBUDtBQUFlOztBQUV6QixRQUFNQyxVQUFOLEdBQW1CO0FBQ2YsUUFBSUMsZ0VBQVEsQ0FBQ0MsR0FBVCxDQUFhLEtBQUtMLFVBQWxCLEVBQThCLEtBQUtDLFFBQW5DLEVBQTZDLEtBQUtDLEVBQWxELENBQUosRUFBMkQsTUFBTSxLQUFLSSxNQUFMLEVBQU47QUFDM0RDLDREQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QixDQUFDUixVQUFELEVBQWFDLFFBQWIsRUFBdUJDLEVBQXZCLEVBQTJCTyxP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LENBQVcsS0FBS3pCLElBQWhCLEVBQXNCLEdBQUdxQixPQUF6QjtBQUNIOztBQUVESyxZQUFVLENBQUNMLE9BQUQsRUFBVUcsS0FBVixFQUFpQjtBQUN2QkYsMkRBQU0sQ0FBQ0ksVUFBUCxDQUFrQixLQUFLMUIsSUFBdkIsRUFBNkJxQixPQUE3QixFQUFzQ0csS0FBdEM7QUFDSDs7QUFFREcsT0FBSyxDQUFDQyxNQUFELEVBQVNDLElBQVQsRUFBZUMsUUFBZixFQUF5QjtBQUMxQixXQUFPQyx3REFBTyxDQUFDSixLQUFSLENBQWMsS0FBSzNCLElBQW5CLEVBQXlCNEIsTUFBekIsRUFBaUNDLElBQWpDLEVBQXVDQyxRQUF2QyxDQUFQO0FBQ0g7O0FBRURFLFlBQVUsR0FBRztBQUNULFdBQU9ELHdEQUFPLENBQUNDLFVBQVIsQ0FBbUIsS0FBS2hDLElBQXhCLENBQVA7QUFDSDs7QUF2RjhCIiwiZmlsZSI6Ii4vc3JjL3N0cnVjdHMvYnVpbHRpbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2dnZXIgZnJvbSBcIi4uL21vZHVsZXMvbG9nZ2VyXCI7XHJcbmltcG9ydCBFdmVudHMgZnJvbSBcIi4uL21vZHVsZXMvZW1pdHRlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4uL21vZHVsZXMvc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBQYXRjaGVyIGZyb20gXCIuLi9tb2R1bGVzL3BhdGNoZXJcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWx0aW5Nb2R1bGUge1xyXG5cclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlVubmFtZWQgQnVpbHRpblwiO31cclxuICAgIGdldCBjb2xsZWN0aW9uKCkge3JldHVybiBcInNldHRpbmdzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiTm9uZVwiO31cclxuXHJcbiAgICBhc3luYyBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGlmIChTZXR0aW5ncy5nZXQodGhpcy5jb2xsZWN0aW9uLCB0aGlzLmNhdGVnb3J5LCB0aGlzLmlkKSkgYXdhaXQgdGhpcy5lbmFibGUoKTtcclxuICAgICAgICBFdmVudHMub24oXCJzZXR0aW5nLXVwZGF0ZWRcIiwgKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgZW5hYmxlZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29sbGVjdGlvbiAhPSB0aGlzLmNvbGxlY3Rpb24gfHwgY2F0ZWdvcnkgIT09IHRoaXMuY2F0ZWdvcnkgfHwgaWQgIT09IHRoaXMuaWQpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHRoaXMuZW5hYmxlKCk7XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5kaXNhYmxlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJTZXR0aW5nKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgb25FbmFibGUsIG9uRGlzYWJsZSkge1xyXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDQpIHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSBhcmd1bWVudHNbMF07XHJcbiAgICAgICAgICAgIGlkID0gYXJndW1lbnRzWzFdO1xyXG4gICAgICAgICAgICBvbkVuYWJsZSA9IGFyZ3VtZW50c1syXTtcclxuICAgICAgICAgICAgb25EaXNhYmxlID0gYXJndW1lbnRzWzNdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDMpIHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3J5O1xyXG4gICAgICAgICAgICBpZCA9IGFyZ3VtZW50c1swXTtcclxuICAgICAgICAgICAgb25FbmFibGUgPSBhcmd1bWVudHNbMV07XHJcbiAgICAgICAgICAgIG9uRGlzYWJsZSA9IGFyZ3VtZW50c1syXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFNldHRpbmdzLm9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSkgb25FbmFibGUoKTtcclxuICAgICAgICAgICAgZWxzZSBvbkRpc2FibGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGFyZ3VtZW50c1swXTtcclxuICAgICAgICAgICAgaWQgPSBhcmd1bWVudHNbMV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcnk7XHJcbiAgICAgICAgICAgIGlkID0gYXJndW1lbnRzWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gU2V0dGluZ3MuZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlKCkge1xyXG4gICAgICAgIHRoaXMubG9nKFwiRW5hYmxlZFwiKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmVuYWJsZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkaXNhYmxlKCkge1xyXG4gICAgICAgIHRoaXMubG9nKFwiRGlzYWJsZWRcIik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5kaXNhYmxlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZWQoKSB7fVxyXG4gICAgYXN5bmMgZGlzYWJsZWQoKSB7fVxyXG5cclxuICAgIGxvZyguLi5tZXNzYWdlKSB7XHJcbiAgICAgICAgTG9nZ2VyLmxvZyh0aGlzLm5hbWUsIC4uLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhcm4oLi4ubWVzc2FnZSkge1xyXG4gICAgICAgIExvZ2dlci53YXJuKHRoaXMubmFtZSwgLi4ubWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXJyb3IoLi4ubWVzc2FnZSkge1xyXG4gICAgICAgIExvZ2dlci5lcnIodGhpcy5uYW1lLCAuLi5tZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFja3RyYWNlKG1lc3NhZ2UsIGVycm9yKSB7XHJcbiAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBtZXNzYWdlLCBlcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgYWZ0ZXIob2JqZWN0LCBmdW5jLCBjYWxsYmFjaykge1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLmFmdGVyKHRoaXMubmFtZSwgb2JqZWN0LCBmdW5jLCBjYWxsYmFjayk7XHJcbiAgICB9XHJcblxyXG4gICAgdW5wYXRjaEFsbCgpIHtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci51bnBhdGNoQWxsKHRoaXMubmFtZSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/structs/builtin.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BuiltinModule; });\n/* harmony import */ var _modules_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _modules_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modules/emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../modules/settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _modules_patcher__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modules/patcher */ \"./src/modules/patcher.js\");\n\n\n\n\nclass BuiltinModule {\n get name() {\n return \"Unnamed Builtin\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"None\";\n }\n\n async initialize() {\n if (_modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.collection, this.category, this.id)) await this.enable();\n _modules_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].on(\"setting-updated\", (collection, category, id, enabled) => {\n if (collection != this.collection || category !== this.category || id !== this.id) return;\n if (enabled) this.enable();else this.disable();\n });\n this.initialized = true;\n }\n\n registerSetting(collection, category, id, onEnable, onDisable) {\n if (arguments.length == 4) {\n collection = this.collection;\n category = arguments[0];\n id = arguments[1];\n onEnable = arguments[2];\n onDisable = arguments[3];\n } else if (arguments.length == 3) {\n collection = this.collection;\n category = this.category;\n id = arguments[0];\n onEnable = arguments[1];\n onDisable = arguments[2];\n }\n\n return _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].on(collection, category, id, value => {\n if (value) onEnable();else onDisable();\n });\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n collection = this.collection;\n category = arguments[0];\n id = arguments[1];\n } else if (arguments.length == 1) {\n collection = this.collection;\n category = this.category;\n id = arguments[0];\n }\n\n return _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(collection, category, id);\n }\n\n async enable() {\n this.log(\"Enabled\");\n await this.enabled();\n }\n\n async disable() {\n this.log(\"Disabled\");\n await this.disabled();\n }\n\n async enabled() {}\n\n async disabled() {}\n\n log(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].log(this.name, ...message);\n }\n\n warn(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].warn(this.name, ...message);\n }\n\n error(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(this.name, ...message);\n }\n\n stacktrace(message, error) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stacktrace(this.name, message, error);\n }\n\n before(object, func, callback) {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].before(this.name, object, func, callback);\n }\n\n after(object, func, callback) {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].after(this.name, object, func, callback);\n }\n\n unpatchAll() {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].unpatchAll(this.name);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3N0cnVjdHMvYnVpbHRpbi5qcz85NTYyIl0sIm5hbWVzIjpbIkJ1aWx0aW5Nb2R1bGUiLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJpbml0aWFsaXplIiwiU2V0dGluZ3MiLCJnZXQiLCJlbmFibGUiLCJFdmVudHMiLCJvbiIsImVuYWJsZWQiLCJkaXNhYmxlIiwiaW5pdGlhbGl6ZWQiLCJyZWdpc3RlclNldHRpbmciLCJvbkVuYWJsZSIsIm9uRGlzYWJsZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInZhbHVlIiwibG9nIiwiZGlzYWJsZWQiLCJtZXNzYWdlIiwiTG9nZ2VyIiwid2FybiIsImVycm9yIiwiZXJyIiwic3RhY2t0cmFjZSIsImJlZm9yZSIsIm9iamVjdCIsImZ1bmMiLCJjYWxsYmFjayIsIlBhdGNoZXIiLCJhZnRlciIsInVucGF0Y2hBbGwiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsTUFBTUEsYUFBTixDQUFvQjtBQUUvQixNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUN0QyxNQUFJQyxVQUFKLEdBQWlCO0FBQUMsV0FBTyxVQUFQO0FBQW1COztBQUNyQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sTUFBUDtBQUFlOztBQUV6QixRQUFNQyxVQUFOLEdBQW1CO0FBQ2YsUUFBSUMsZ0VBQVEsQ0FBQ0MsR0FBVCxDQUFhLEtBQUtMLFVBQWxCLEVBQThCLEtBQUtDLFFBQW5DLEVBQTZDLEtBQUtDLEVBQWxELENBQUosRUFBMkQsTUFBTSxLQUFLSSxNQUFMLEVBQU47QUFDM0RDLDREQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QixDQUFDUixVQUFELEVBQWFDLFFBQWIsRUFBdUJDLEVBQXZC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QUFDRyxHQUFQLENBQVcsS0FBS3pCLElBQWhCLEVBQXNCLEdBQUdxQixPQUF6QjtBQUNIOztBQUVESyxZQUFVLENBQUNMLE9BQUQsRUFBVUcsS0FBVixFQUFpQjtBQUN2QkYsMkRBQU0sQ0FBQ0ksVUFBUCxDQUFrQixLQUFLMUIsSUFBdkIsRUFBNkJxQixPQUE3QixFQUFzQ0csS0FBdEM7QUFDSDs7QUFFREcsUUFBTSxDQUFDQyxNQUFELEVBQVNDLElBQVQsRUFBZUMsUUFBZixFQUF5QjtBQUMzQixXQUFPQyx3REFBTyxDQUFDSixNQUFSLENBQWUsS0FBSzNCLElBQXBCLEVBQTBCNEIsTUFBMUIsRUFBa0NDLElBQWxDLEVBQXdDQyxRQUF4QyxDQUFQO0FBQ0g7O0FBRURFLE9BQUssQ0FBQ0osTUFBRCxFQUFTQyxJQUFULEVBQWVDLFFBQWYsRUFBeUI7QUFDMUIsV0FBT0Msd0RBQU8sQ0FBQ0MsS0FBUixDQUFjLEtBQUtoQyxJQUFuQixFQUF5QjRCLE1BQXpCLEVBQWlDQyxJQUFqQyxFQUF1Q0MsUUFBdkMsQ0FBUDtBQUNIOztBQUVERyxZQUFVLEdBQUc7QUFDVCxXQUFPRix3REFBTyxDQUFDRSxVQUFSLENBQW1CLEtBQUtqQyxJQUF4QixDQUFQO0FBQ0g7O0FBM0Y4QiIsImZpbGUiOiIuL3NyYy9zdHJ1Y3RzL2J1aWx0aW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi9tb2R1bGVzL2xvZ2dlclwiO1xyXG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuLi9tb2R1bGVzL2VtaXR0ZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuLi9tb2R1bGVzL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgUGF0Y2hlciBmcm9tIFwiLi4vbW9kdWxlcy9wYXRjaGVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsdGluTW9kdWxlIHtcclxuXHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJVbm5hbWVkIEJ1aWx0aW5cIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJzZXR0aW5nc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcIk5vbmVcIjt9XHJcblxyXG4gICAgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBpZiAoU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgdGhpcy5pZCkpIGF3YWl0IHRoaXMuZW5hYmxlKCk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwic2V0dGluZy11cGRhdGVkXCIsIChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIGVuYWJsZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb24gIT0gdGhpcy5jb2xsZWN0aW9uIHx8IGNhdGVnb3J5ICE9PSB0aGlzLmNhdGVnb3J5IHx8IGlkICE9PSB0aGlzLmlkKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChlbmFibGVkKSB0aGlzLmVuYWJsZSgpO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZGlzYWJsZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyU2V0dGluZyhjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIG9uRW5hYmxlLCBvbkRpc2FibGUpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSA0KSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNhdGVnb3J5ID0gYXJndW1lbnRzWzBdO1xyXG4gICAgICAgICAgICBpZCA9IGFyZ3VtZW50c1sxXTtcclxuICAgICAgICAgICAgb25FbmFibGUgPSBhcmd1bWVudHNbMl07XHJcbiAgICAgICAgICAgIG9uRGlzYWJsZSA9IGFyZ3VtZW50c1szXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAzKSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeTtcclxuICAgICAgICAgICAgaWQgPSBhcmd1bWVudHNbMF07XHJcbiAgICAgICAgICAgIG9uRW5hYmxlID0gYXJndW1lbnRzWzFdO1xyXG4gICAgICAgICAgICBvbkRpc2FibGUgPSBhcmd1bWVudHNbMl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBTZXR0aW5ncy5vbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIG9uRW5hYmxlKCk7XHJcbiAgICAgICAgICAgIGVsc2Ugb25EaXNhYmxlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSBhcmd1bWVudHNbMF07XHJcbiAgICAgICAgICAgIGlkID0gYXJndW1lbnRzWzFdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3J5O1xyXG4gICAgICAgICAgICBpZCA9IGFyZ3VtZW50c1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFNldHRpbmdzLmdldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZSgpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIkVuYWJsZWRcIik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbmFibGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGlzYWJsZSgpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIkRpc2FibGVkXCIpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZGlzYWJsZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlbmFibGVkKCkge31cclxuICAgIGFzeW5jIGRpc2FibGVkKCkge31cclxuXHJcbiAgICBsb2coLi4ubWVzc2FnZSkge1xyXG4gICAgICAgIExvZ2dlci5sb2codGhpcy5uYW1lLCAuLi5tZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICB3YXJuKC4uLm1lc3NhZ2UpIHtcclxuICAgICAgICBMb2dnZXIud2Fybih0aGlzLm5hbWUsIC4uLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGVycm9yKC4uLm1lc3NhZ2UpIHtcclxuICAgICAgICBMb2dnZXIuZXJyKHRoaXMubmFtZSwgLi4ubWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhY2t0cmFjZShtZXNzYWdlLCBlcnJvcikge1xyXG4gICAgICAgIExvZ2dlci5zdGFja3RyYWNlKHRoaXMubmFtZSwgbWVzc2FnZSwgZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGJlZm9yZShvYmplY3QsIGZ1bmMsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgcmV0dXJuIFBhdGNoZXIuYmVmb3JlKHRoaXMubmFtZSwgb2JqZWN0LCBmdW5jLCBjYWxsYmFjayk7XHJcbiAgICB9XHJcblxyXG4gICAgYWZ0ZXIob2JqZWN0LCBmdW5jLCBjYWxsYmFjaykge1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLmFmdGVyKHRoaXMubmFtZSwgb2JqZWN0LCBmdW5jLCBjYWxsYmFjayk7XHJcbiAgICB9XHJcblxyXG4gICAgdW5wYXRjaEFsbCgpIHtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci51bnBhdGNoQWxsKHRoaXMubmFtZSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/structs/builtin.js\n"); /***/ }), @@ -695,7 +695,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Checkbox; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Checkbox extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.state = {\n checked: this.props.checked || false\n };\n }\n\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-item\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-label label-JWQiNe da-label\"\n }, this.props.text), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox\",\n onClick: this.onClick\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-inner checkboxInner-3yjcPe da-checkboxInner\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"checkbox checkboxElement-1qV33p da-checkboxElement\",\n checked: this.state.checked,\n type: \"checkbox\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)));\n }\n\n onClick() {\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2N1c3RvbWNzcy9jaGVja2JveC5qc3g/MjJiNSJdLCJuYW1lcyI6WyJDaGVja2JveCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIm9uQ2xpY2siLCJiaW5kIiwic3RhdGUiLCJjaGVja2VkIiwicmVuZGVyIiwidGV4dCIsIm9uQ2hhbmdlIiwic2V0U3RhdGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsUUFBTixTQUF1QkMsNkNBQUssQ0FBQ0MsU0FBN0IsQ0FBdUM7QUFDbERDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxLQUFLQSxPQUFMLENBQWFDLElBQWIsQ0FBa0IsSUFBbEIsQ0FBZjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUFDQyxhQUFPLEVBQUUsS0FBS0osS0FBTCxDQUFXSSxPQUFYLElBQXNCO0FBQWhDLEtBQWI7QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsV0FBTztBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0g7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUF1RCxLQUFLTCxLQUFMLENBQVdNLElBQWxFLENBREcsRUFFSDtBQUFLLGVBQVMsRUFBQywwRUFBZjtBQUEwRixhQUFPLEVBQUUsS0FBS0w7QUFBeEcsT0FDSTtBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0k7QUFBTyxlQUFTLEVBQUMsb0RBQWpCO0FBQXNFLGFBQU8sRUFBRSxLQUFLRSxLQUFMLENBQVdDLE9BQTFGO0FBQW1HLFVBQUksRUFBQztBQUF4RyxNQURKLEVBRUkseUVBRkosQ0FESixFQUtJLHlFQUxKLENBRkcsQ0FBUDtBQVVIOztBQUVESCxTQUFPLEdBQUc7QUFDTixTQUFLRCxLQUFMLENBQVdPLFFBQVgsQ0FBb0IsQ0FBQyxLQUFLSixLQUFMLENBQVdDLE9BQWhDO0FBQ0EsU0FBS0ksUUFBTCxDQUFjO0FBQUNKLGFBQU8sRUFBRSxDQUFDLEtBQUtELEtBQUwsQ0FBV0M7QUFBdEIsS0FBZDtBQUNIOztBQXZCaUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2NoZWNrYm94LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGVja2JveCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge2NoZWNrZWQ6IHRoaXMucHJvcHMuY2hlY2tlZCB8fCBmYWxzZX07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1sYWJlbCBsYWJlbC1KV1FpTmUgZGEtbGFiZWxcIj57dGhpcy5wcm9wcy50ZXh0fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LXdyYXBwZXIgY2hlY2tib3gtM2thZVNVIGRhLWNoZWNrYm94IGNoZWNrYm94LTNFVklTSiBkYS1jaGVja2JveFwiIG9uQ2xpY2s9e3RoaXMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWlubmVyIGNoZWNrYm94SW5uZXItM3lqY1BlIGRhLWNoZWNrYm94SW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiY2hlY2tib3ggY2hlY2tib3hFbGVtZW50LTFxVjMzcCBkYS1jaGVja2JveEVsZW1lbnRcIiBjaGVja2VkPXt0aGlzLnN0YXRlLmNoZWNrZWR9IHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoIXRoaXMuc3RhdGUuY2hlY2tlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogIXRoaXMuc3RhdGUuY2hlY2tlZH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/checkbox.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Checkbox; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Checkbox extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.state = {\n checked: this.props.checked || false\n };\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-label label-JWQiNe da-label\"\n }, this.props.text), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox\",\n onClick: this.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-inner checkboxInner-3yjcPe da-checkboxInner\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"checkbox checkboxElement-1qV33p da-checkboxElement\",\n checked: this.state.checked,\n type: \"checkbox\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)));\n }\n\n onClick() {\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2N1c3RvbWNzcy9jaGVja2JveC5qc3g/MjJiNSJdLCJuYW1lcyI6WyJDaGVja2JveCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIm9uQ2xpY2siLCJiaW5kIiwic3RhdGUiLCJjaGVja2VkIiwicmVuZGVyIiwidGV4dCIsIm9uQ2hhbmdlIiwic2V0U3RhdGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsUUFBTixTQUF1QkMsNkNBQUssQ0FBQ0MsU0FBN0IsQ0FBdUM7QUFDbERDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxLQUFLQSxPQUFMLENBQWFDLElBQWIsQ0FBa0IsSUFBbEIsQ0FBZjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUFDQyxhQUFPLEVBQUUsS0FBS0osS0FBTCxDQUFXSSxPQUFYLElBQXNCO0FBQWhDLEtBQWI7QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSDtBQUFLLGVBQVMsRUFBQztBQUFmLE9BQXVELEtBQUtMLEtBQUwsQ0FBV00sSUFBbEUsQ0FERyxlQUVIO0FBQUssZUFBUyxFQUFDLDBFQUFmO0FBQTBGLGFBQU8sRUFBRSxLQUFLTDtBQUF4RyxvQkFDSTtBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQU8sZUFBUyxFQUFDLG9EQUFqQjtBQUFzRSxhQUFPLEVBQUUsS0FBS0UsS0FBTCxDQUFXQyxPQUExRjtBQUFtRyxVQUFJLEVBQUM7QUFBeEcsTUFESixlQUVJLHlFQUZKLENBREosZUFLSSx5RUFMSixDQUZHLENBQVA7QUFVSDs7QUFFREgsU0FBTyxHQUFHO0FBQ04sU0FBS0QsS0FBTCxDQUFXTyxRQUFYLENBQW9CLENBQUMsS0FBS0osS0FBTCxDQUFXQyxPQUFoQztBQUNBLFNBQUtJLFFBQUwsQ0FBYztBQUFDSixhQUFPLEVBQUUsQ0FBQyxLQUFLRCxLQUFMLENBQVdDO0FBQXRCLEtBQWQ7QUFDSDs7QUF2QmlEIiwiZmlsZSI6Ii4vc3JjL3VpL2N1c3RvbWNzcy9jaGVja2JveC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hlY2tib3ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5vbkNsaWNrID0gdGhpcy5vbkNsaWNrLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtjaGVja2VkOiB0aGlzLnByb3BzLmNoZWNrZWQgfHwgZmFsc2V9O1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2hlY2tib3gtbGFiZWwgbGFiZWwtSldRaU5lIGRhLWxhYmVsXCI+e3RoaXMucHJvcHMudGV4dH08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC13cmFwcGVyIGNoZWNrYm94LTNrYWVTVSBkYS1jaGVja2JveCBjaGVja2JveC0zRVZJU0ogZGEtY2hlY2tib3hcIiBvbkNsaWNrPXt0aGlzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1pbm5lciBjaGVja2JveElubmVyLTN5amNQZSBkYS1jaGVja2JveElubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT1cImNoZWNrYm94IGNoZWNrYm94RWxlbWVudC0xcVYzM3AgZGEtY2hlY2tib3hFbGVtZW50XCIgY2hlY2tlZD17dGhpcy5zdGF0ZS5jaGVja2VkfSB0eXBlPVwiY2hlY2tib3hcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGljaygpIHtcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKCF0aGlzLnN0YXRlLmNoZWNrZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6ICF0aGlzLnN0YXRlLmNoZWNrZWR9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/customcss/checkbox.jsx\n"); /***/ }), @@ -707,7 +707,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CssEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n/* harmony import */ var _icons_detach__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/detach */ \"./src/ui/icons/detach.jsx\");\n\n // import Checkbox from \"./checkbox\";\n\n\n\n\n\n\nclass CssEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.toggleLiveUpdate = this.toggleLiveUpdate.bind(this);\n this.updateCss = this.updateCss.bind(this);\n this.saveCss = this.saveCss.bind(this);\n this.openDetached = this.props.openDetached ? this.openDetached.bind(this) : null;\n this.openNative = this.openNative.bind(this);\n this.updateEditor = this.updateEditor.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.update,\n onClick: this.updateCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.saveCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Collections.settings.customcss.liveUpdate.name,\n type: \"checkbox\",\n onChange: this.toggleLiveUpdate,\n checked: modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\"),\n side: \"right\"\n }];\n if (this.openDetached) this.controls.push({\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_detach__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openDetached,\n onClick: this.openDetached,\n side: \"right\"\n });\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"customcss-updated\", this.updateEditor);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(\"customcss-updated\", this.updateEditor);\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n if (this.props.onChange) this.props.onChange(...arguments);\n }\n\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n readOnly: this.props.readOnly,\n id: this.props.id || \"bd-customcss-editor\",\n onChange: this.onChange,\n controls: this.controls,\n value: this.props.css\n });\n }\n\n toggleLiveUpdate(checked) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].set(\"settings\", \"customcss\", \"liveUpdate\", checked);\n }\n\n updateCss(event, newCss) {\n if (this.props.update) this.props.update(newCss);\n }\n\n saveCss(event, newCss) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(newCss);\n }\n\n openDetached(event, currentCSS) {\n if (!this.props.openDetached) return;\n this.props.openDetached(currentCSS);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2N1c3RvbWNzcy9jc3NlZGl0b3IuanN4PzQyMzAiXSwibmFtZXMiOlsiQ3NzRWRpdG9yIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJvbkNoYW5nZSIsImJpbmQiLCJ0b2dnbGVMaXZlVXBkYXRlIiwidXBkYXRlQ3NzIiwic2F2ZUNzcyIsIm9wZW5EZXRhY2hlZCIsIm9wZW5OYXRpdmUiLCJ1cGRhdGVFZGl0b3IiLCJjb250cm9scyIsImxhYmVsIiwiY3JlYXRlRWxlbWVudCIsIlJlZnJlc2giLCJzaXplIiwidG9vbHRpcCIsIlN0cmluZ3MiLCJDdXN0b21DU1MiLCJ1cGRhdGUiLCJvbkNsaWNrIiwiU2F2ZSIsInNhdmUiLCJFZGl0IiwiQ29nIiwic2V0dGluZ3MiLCJDb2xsZWN0aW9ucyIsImN1c3RvbWNzcyIsImxpdmVVcGRhdGUiLCJuYW1lIiwidHlwZSIsImNoZWNrZWQiLCJTZXR0aW5ncyIsImdldCIsInNpZGUiLCJwdXNoIiwiRGV0YWNoIiwiY29tcG9uZW50RGlkTW91bnQiLCJFdmVudHMiLCJvbiIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwib2ZmIiwibmV3Q1NTIiwiZWRpdG9yIiwidmFsdWUiLCJzZXNzaW9uIiwiZ2V0VmFsdWUiLCJuZXdWYWx1ZSIsInNldFZhbHVlIiwic2hvd1NldHRpbmdzIiwia2V5QmluZGluZyIsIiRkZWZhdWx0SGFuZGxlciIsImNvbW1hbmRzIiwic2hvd1NldHRpbmdzTWVudSIsImV4ZWMiLCJyZXNpemUiLCJzZXRFZGl0b3JSZWYiLCJlZGl0b3JSZWYiLCJjdXJyZW50IiwiYXJndW1lbnRzIiwicmVuZGVyIiwicmVhZE9ubHkiLCJpZCIsImNzcyIsInNldCIsImV2ZW50IiwibmV3Q3NzIiwiY3VycmVudENTUyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Q0FHQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsTUFBTUEsU0FBTixTQUF3QkMsNkNBQUssQ0FBQ0MsU0FBOUIsQ0FBd0M7QUFFbkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUVBLFNBQUtDLGlCQUFMLEdBQXlCLEtBQXpCO0FBRUEsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLQyxnQkFBTCxHQUF3QixLQUFLQSxnQkFBTCxDQUFzQkQsSUFBdEIsQ0FBMkIsSUFBM0IsQ0FBeEI7QUFDQSxTQUFLRSxTQUFMLEdBQWlCLEtBQUtBLFNBQUwsQ0FBZUYsSUFBZixDQUFvQixJQUFwQixDQUFqQjtBQUNBLFNBQUtHLE9BQUwsR0FBZSxLQUFLQSxPQUFMLENBQWFILElBQWIsQ0FBa0IsSUFBbEIsQ0FBZjtBQUNBLFNBQUtJLFlBQUwsR0FBb0IsS0FBS1AsS0FBTCxDQUFXTyxZQUFYLEdBQTBCLEtBQUtBLFlBQUwsQ0FBa0JKLElBQWxCLENBQXVCLElBQXZCLENBQTFCLEdBQXlELElBQTdFO0FBQ0EsU0FBS0ssVUFBTCxHQUFrQixLQUFLQSxVQUFMLENBQWdCTCxJQUFoQixDQUFxQixJQUFyQixDQUFsQjtBQUNBLFNBQUtNLFlBQUwsR0FBb0IsS0FBS0EsWUFBTCxDQUFrQk4sSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBcEI7QUFFQSxTQUFLTyxRQUFMLEdBQWdCLENBQ1o7QUFBQ0MsV0FBSyxFQUFFZCw2Q0FBSyxDQUFDZSxhQUFOLENBQW9CQyxxREFBcEIsRUFBNkI7QUFBQ0MsWUFBSSxFQUFFO0FBQVAsT0FBN0IsQ0FBUjtBQUFzREMsYUFBTyxFQUFFQywrQ0FBTyxDQUFDQyxTQUFSLENBQWtCQyxNQUFqRjtBQUF5RkMsYUFBTyxFQUFFLEtBQUtkO0FBQXZHLEtBRFksRUFFWjtBQUFDTSxXQUFLLEVBQUVkLDZDQUFLLENBQUNlLGFBQU4sQ0FBb0JRLG1EQUFwQixFQUEwQjtBQUFDTixZQUFJLEVBQUU7QUFBUCxPQUExQixDQUFSO0FBQW1EQyxhQUFPLEVBQUVDLCtDQUFPLENBQUNDLFNBQVIsQ0FBa0JJLElBQTlFO0FBQW9GRixhQUFPLEVBQUUsS0FBS2I7QUFBbEcsS0FGWSxFQUdaO0FBQUNLLFdBQUssRUFBRWQsNkNBQUssQ0FBQ2UsYUFBTixDQUFvQlUsbURBQXBCLEVBQTBCO0FBQUNSLFlBQUksRUFBRTtBQUFQLE9BQTFCLENBQVI7QUFBbURDLGFBQU8sRUFBRUMsK0NBQU8sQ0FBQ0MsU0FBUixDQUFrQlQsVUFBOUU7QUFBMEZXLGFBQU8sRUFBRSxLQUFLWDtBQUF4RyxLQUhZLEVBSVo7QUFBQ0csV0FBSyxFQUFFZCw2Q0FBSyxDQUFDZSxhQUFOLENBQW9CVyxrREFBcEIsRUFBeUI7QUFBQ1QsWUFBSSxFQUFFO0FBQVAsT0FBekIsQ0FBUjtBQUFrREMsYUFBTyxFQUFFQywrQ0FBTyxDQUFDQyxTQUFSLENBQWtCTyxRQUE3RTtBQUF1RkwsYUFBTyxFQUFFO0FBQWhHLEtBSlksRUFLWjtBQUFDUixXQUFLLEVBQUVLLCtDQUFPLENBQUNTLFdBQVIsQ0FBb0JELFFBQXBCLENBQTZCRSxTQUE3QixDQUF1Q0MsVUFBdkMsQ0FBa0RDLElBQTFEO0FBQWdFQyxVQUFJLEVBQUMsVUFBckU7QUFBaUYzQixjQUFRLEVBQUUsS0FBS0UsZ0JBQWhHO0FBQWtIMEIsYUFBTyxFQUFFQyxnREFBUSxDQUFDQyxHQUFULENBQWEsVUFBYixFQUF5QixXQUF6QixFQUFzQyxZQUF0QyxDQUEzSDtBQUFnTEMsVUFBSSxFQUFFO0FBQXRMLEtBTFksQ0FBaEI7QUFPQSxRQUFJLEtBQUsxQixZQUFULEVBQXVCLEtBQUtHLFFBQUwsQ0FBY3dCLElBQWQsQ0FBbUI7QUFBQ3ZCLFdBQUssRUFBRWQsNkNBQUssQ0FBQ2UsYUFBTixDQUFvQnVCLHFEQUFwQixFQUE0QjtBQUFDckIsWUFBSSxFQUFFO0FBQVAsT0FBNUIsQ0FBUjtBQUFxREMsYUFBTyxFQUFFQywrQ0FBTyxDQUFDQyxTQUFSLENBQWtCVixZQUFoRjtBQUE4RlksYUFBTyxFQUFFLEtBQUtaLFlBQTVHO0FBQTBIMEIsVUFBSSxFQUFFO0FBQWhJLEtBQW5CO0FBQzFCOztBQUVERyxtQkFBaUIsR0FBRztBQUNoQkMsa0RBQU0sQ0FBQ0MsRUFBUCxDQUFVLG1CQUFWLEVBQStCLEtBQUs3QixZQUFwQztBQUNIOztBQUVEOEIsc0JBQW9CLEdBQUc7QUFDbkJGLGtEQUFNLENBQUNHLEdBQVAsQ0FBVyxtQkFBWCxFQUFnQyxLQUFLL0IsWUFBckM7QUFDSDs7QUFFREEsY0FBWSxDQUFDZ0MsTUFBRCxFQUFTO0FBQ2pCLFFBQUksQ0FBQyxLQUFLQyxNQUFWLEVBQWtCO0FBQ2xCLFNBQUtBLE1BQUwsQ0FBWUMsS0FBWixHQUFvQkYsTUFBcEI7QUFDSDs7QUFFRCxNQUFJRSxLQUFKLEdBQVk7QUFBQyxXQUFPLEtBQUtELE1BQUwsQ0FBWUUsT0FBWixDQUFvQkMsUUFBcEIsRUFBUDtBQUF1Qzs7QUFDcEQsTUFBSUYsS0FBSixDQUFVRyxRQUFWLEVBQW9CO0FBQ2hCLFNBQUtKLE1BQUwsQ0FBWUssUUFBWixDQUFxQkQsUUFBckI7QUFDSDs7QUFFREUsY0FBWSxHQUFHO0FBQUMsV0FBTyxLQUFLTixNQUFMLENBQVlPLFVBQVosQ0FBdUJDLGVBQXZCLENBQXVDQyxRQUF2QyxDQUFnREMsZ0JBQWhELENBQWlFQyxJQUFqRSxDQUFzRSxLQUFLWCxNQUEzRSxDQUFQO0FBQTJGOztBQUMzR1ksUUFBTSxHQUFHO0FBQUMsV0FBTyxLQUFLWixNQUFMLENBQVlZLE1BQVosRUFBUDtBQUE2Qjs7QUFFdkNDLGNBQVksQ0FBQ2IsTUFBRCxFQUFTO0FBQ2pCLFNBQUtBLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFFBQUksS0FBSzFDLEtBQUwsQ0FBV3dELFNBQVgsSUFBd0IsT0FBTyxLQUFLeEQsS0FBTCxDQUFXd0QsU0FBWCxDQUFxQkMsT0FBNUIsS0FBeUMsV0FBckUsRUFBa0YsS0FBS3pELEtBQUwsQ0FBV3dELFNBQVgsQ0FBcUJDLE9BQXJCLEdBQStCZixNQUEvQixDQUFsRixLQUNLLElBQUksS0FBSzFDLEtBQUwsQ0FBV3dELFNBQWYsRUFBMEIsS0FBS3hELEtBQUwsQ0FBV3dELFNBQVgsR0FBdUJkLE1BQXZCO0FBQ2xDOztBQUVEeEMsVUFBUSxHQUFHO0FBQ1AsU0FBS0QsaUJBQUwsR0FBeUIsSUFBekI7QUFDQSxRQUFJLEtBQUtELEtBQUwsQ0FBV0UsUUFBZixFQUF5QixLQUFLRixLQUFMLENBQVdFLFFBQVgsQ0FBb0IsR0FBR3dELFNBQXZCO0FBQzVCOztBQUVEQyxRQUFNLEdBQUc7QUFDTCxXQUFPLDREQUFDLCtDQUFEO0FBQVEsU0FBRyxFQUFFLEtBQUtKLFlBQUwsQ0FBa0JwRCxJQUFsQixDQUF1QixJQUF2QixDQUFiO0FBQTJDLGNBQVEsRUFBRSxLQUFLSCxLQUFMLENBQVc0RCxRQUFoRTtBQUEwRSxRQUFFLEVBQUUsS0FBSzVELEtBQUwsQ0FBVzZELEVBQVgsSUFBaUIscUJBQS9GO0FBQXNILGNBQVEsRUFBRSxLQUFLM0QsUUFBckk7QUFBK0ksY0FBUSxFQUFFLEtBQUtRLFFBQTlKO0FBQXdLLFdBQUssRUFBRSxLQUFLVixLQUFMLENBQVc4RDtBQUExTCxNQUFQO0FBQ0g7O0FBRUQxRCxrQkFBZ0IsQ0FBQzBCLE9BQUQsRUFBVTtBQUN0QkMsb0RBQVEsQ0FBQ2dDLEdBQVQsQ0FBYSxVQUFiLEVBQXlCLFdBQXpCLEVBQXNDLFlBQXRDLEVBQW9EakMsT0FBcEQ7QUFDSDs7QUFFRHpCLFdBQVMsQ0FBQzJELEtBQUQsRUFBUUMsTUFBUixFQUFnQjtBQUNyQixRQUFJLEtBQUtqRSxLQUFMLENBQVdrQixNQUFmLEVBQXVCLEtBQUtsQixLQUFMLENBQVdrQixNQUFYLENBQWtCK0MsTUFBbEI7QUFDMUI7O0FBRUQzRCxTQUFPLENBQUMwRCxLQUFELEVBQVFDLE1BQVIsRUFBZ0I7QUFDbkIsU0FBS2hFLGlCQUFMLEdBQXlCLEtBQXpCO0FBQ0EsUUFBSSxLQUFLRCxLQUFMLENBQVdxQixJQUFmLEVBQXFCLEtBQUtyQixLQUFMLENBQVdxQixJQUFYLENBQWdCNEMsTUFBaEI7QUFDeEI7O0FBRUQxRCxjQUFZLENBQUN5RCxLQUFELEVBQVFFLFVBQVIsRUFBb0I7QUFDNUIsUUFBSSxDQUFDLEtBQUtsRSxLQUFMLENBQVdPLFlBQWhCLEVBQThCO0FBQzlCLFNBQUtQLEtBQUwsQ0FBV08sWUFBWCxDQUF3QjJELFVBQXhCO0FBQ0g7O0FBRUQxRCxZQUFVLEdBQUc7QUFDVCxRQUFJLEtBQUtSLEtBQUwsQ0FBV1EsVUFBZixFQUEyQixLQUFLUixLQUFMLENBQVdRLFVBQVg7QUFDOUI7O0FBakZrRCIsImZpbGUiOiIuL3NyYy91aS9jdXN0b21jc3MvY3NzZWRpdG9yLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFNldHRpbmdzLCBFdmVudHMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRWRpdG9yIGZyb20gXCIuL2VkaXRvclwiO1xyXG4vLyBpbXBvcnQgQ2hlY2tib3ggZnJvbSBcIi4vY2hlY2tib3hcIjtcclxuaW1wb3J0IFJlZnJlc2ggZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgU2F2ZSBmcm9tIFwiLi4vaWNvbnMvc2F2ZVwiO1xyXG5pbXBvcnQgRWRpdCBmcm9tIFwiLi4vaWNvbnMvZWRpdFwiO1xyXG5pbXBvcnQgQ29nIGZyb20gXCIuLi9pY29ucy9jb2dcIjtcclxuaW1wb3J0IERldGFjaCBmcm9tIFwiLi4vaWNvbnMvZGV0YWNoXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDc3NFZGl0b3IgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy50b2dnbGVMaXZlVXBkYXRlID0gdGhpcy50b2dnbGVMaXZlVXBkYXRlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDc3MgPSB0aGlzLnVwZGF0ZUNzcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNzcyA9IHRoaXMuc2F2ZUNzcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub3BlbkRldGFjaGVkID0gdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQgPyB0aGlzLm9wZW5EZXRhY2hlZC5iaW5kKHRoaXMpIDogbnVsbDtcclxuICAgICAgICB0aGlzLm9wZW5OYXRpdmUgPSB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvciA9IHRoaXMudXBkYXRlRWRpdG9yLmJpbmQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29udHJvbHMgPSBbXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChSZWZyZXNoLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1MudXBkYXRlLCBvbkNsaWNrOiB0aGlzLnVwZGF0ZUNzc30sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChTYXZlLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2F2ZSwgb25DbGljazogdGhpcy5zYXZlQ3NzfSxcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXQsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5vcGVuTmF0aXZlLCBvbkNsaWNrOiB0aGlzLm9wZW5OYXRpdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29nLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2V0dGluZ3MsIG9uQ2xpY2s6IFwic2hvd1NldHRpbmdzXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQ29sbGVjdGlvbnMuc2V0dGluZ3MuY3VzdG9tY3NzLmxpdmVVcGRhdGUubmFtZSwgdHlwZTpcImNoZWNrYm94XCIsIG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZUxpdmVVcGRhdGUsIGNoZWNrZWQ6IFNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSwgc2lkZTogXCJyaWdodFwifVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgaWYgKHRoaXMub3BlbkRldGFjaGVkKSB0aGlzLmNvbnRyb2xzLnB1c2goe2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KERldGFjaCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLm9wZW5EZXRhY2hlZCwgb25DbGljazogdGhpcy5vcGVuRGV0YWNoZWQsIHNpZGU6IFwicmlnaHRcIn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIEV2ZW50cy5vbihcImN1c3RvbWNzcy11cGRhdGVkXCIsIHRoaXMudXBkYXRlRWRpdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub2ZmKFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy51cGRhdGVFZGl0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUVkaXRvcihuZXdDU1MpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5lZGl0b3IudmFsdWUgPSBuZXdDU1M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCkge3JldHVybiB0aGlzLmVkaXRvci5zZXNzaW9uLmdldFZhbHVlKCk7fVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtyZXR1cm4gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjKHRoaXMuZWRpdG9yKTt9XHJcbiAgICByZXNpemUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO31cclxuXHJcbiAgICBzZXRFZGl0b3JSZWYoZWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmICYmIHR5cGVvZih0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50KSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5wcm9wcy5lZGl0b3JSZWYuY3VycmVudCA9IGVkaXRvcjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BzLmVkaXRvclJlZikgdGhpcy5wcm9wcy5lZGl0b3JSZWYgPSBlZGl0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHRoaXMucHJvcHMub25DaGFuZ2UoLi4uYXJndW1lbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxFZGl0b3IgcmVmPXt0aGlzLnNldEVkaXRvclJlZi5iaW5kKHRoaXMpfSByZWFkT25seT17dGhpcy5wcm9wcy5yZWFkT25seX0gaWQ9e3RoaXMucHJvcHMuaWQgfHwgXCJiZC1jdXN0b21jc3MtZWRpdG9yXCJ9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSBjb250cm9scz17dGhpcy5jb250cm9sc30gdmFsdWU9e3RoaXMucHJvcHMuY3NzfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVMaXZlVXBkYXRlKGNoZWNrZWQpIHtcclxuICAgICAgICBTZXR0aW5ncy5zZXQoXCJzZXR0aW5nc1wiLCBcImN1c3RvbWNzc1wiLCBcImxpdmVVcGRhdGVcIiwgY2hlY2tlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ3NzKGV2ZW50LCBuZXdDc3MpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy51cGRhdGUpIHRoaXMucHJvcHMudXBkYXRlKG5ld0Nzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNzcyhldmVudCwgbmV3Q3NzKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNhdmUpIHRoaXMucHJvcHMuc2F2ZShuZXdDc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5EZXRhY2hlZChldmVudCwgY3VycmVudENTUykge1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb3BzLm9wZW5EZXRhY2hlZChjdXJyZW50Q1NTKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5OYXRpdmUpIHRoaXMucHJvcHMub3Blbk5hdGl2ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/csseditor.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CssEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n/* harmony import */ var _icons_detach__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/detach */ \"./src/ui/icons/detach.jsx\");\n\n // import Checkbox from \"./checkbox\";\n\n\n\n\n\n\nclass CssEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.toggleLiveUpdate = this.toggleLiveUpdate.bind(this);\n this.updateCss = this.updateCss.bind(this);\n this.saveCss = this.saveCss.bind(this);\n this.openDetached = this.props.openDetached ? this.openDetached.bind(this) : null;\n this.openNative = this.openNative.bind(this);\n this.updateEditor = this.updateEditor.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.update,\n onClick: this.updateCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.saveCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Collections.settings.customcss.liveUpdate.name,\n type: \"checkbox\",\n onChange: this.toggleLiveUpdate,\n checked: modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\"),\n side: \"right\"\n }];\n if (this.openDetached) this.controls.push({\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_detach__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openDetached,\n onClick: this.openDetached,\n side: \"right\"\n });\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"customcss-updated\", this.updateEditor);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(\"customcss-updated\", this.updateEditor);\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n if (this.props.onChange) this.props.onChange(...arguments);\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n readOnly: this.props.readOnly,\n id: this.props.id || \"bd-customcss-editor\",\n onChange: this.onChange,\n controls: this.controls,\n value: this.props.css\n });\n }\n\n toggleLiveUpdate(checked) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].set(\"settings\", \"customcss\", \"liveUpdate\", checked);\n }\n\n updateCss(event, newCss) {\n if (this.props.update) this.props.update(newCss);\n }\n\n saveCss(event, newCss) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(newCss);\n }\n\n openDetached(event, currentCSS) {\n if (!this.props.openDetached) return;\n this.props.openDetached(currentCSS);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2N1c3RvbWNzcy9jc3NlZGl0b3IuanN4PzQyMzAiXSwibmFtZXMiOlsiQ3NzRWRpdG9yIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJvbkNoYW5nZSIsImJpbmQiLCJ0b2dnbGVMaXZlVXBkYXRlIiwidXBkYXRlQ3NzIiwic2F2ZUNzcyIsIm9wZW5EZXRhY2hlZCIsIm9wZW5OYXRpdmUiLCJ1cGRhdGVFZGl0b3IiLCJjb250cm9scyIsImxhYmVsIiwiY3JlYXRlRWxlbWVudCIsIlJlZnJlc2giLCJzaXplIiwidG9vbHRpcCIsIlN0cmluZ3MiLCJDdXN0b21DU1MiLCJ1cGRhdGUiLCJvbkNsaWNrIiwiU2F2ZSIsInNhdmUiLCJFZGl0IiwiQ29nIiwic2V0dGluZ3MiLCJDb2xsZWN0aW9ucyIsImN1c3RvbWNzcyIsImxpdmVVcGRhdGUiLCJuYW1lIiwidHlwZSIsImNoZWNrZWQiLCJTZXR0aW5ncyIsImdldCIsInNpZGUiLCJwdXNoIiwiRGV0YWNoIiwiY29tcG9uZW50RGlkTW91bnQiLCJFdmVudHMiLCJvbiIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwib2ZmIiwibmV3Q1NTIiwiZWRpdG9yIiwidmFsdWUiLCJzZXNzaW9uIiwiZ2V0VmFsdWUiLCJuZXdWYWx1ZSIsInNldFZhbHVlIiwic2hvd1NldHRpbmdzIiwia2V5QmluZGluZyIsIiRkZWZhdWx0SGFuZGxlciIsImNvbW1hbmRzIiwic2hvd1NldHRpbmdzTWVudSIsImV4ZWMiLCJyZXNpemUiLCJzZXRFZGl0b3JSZWYiLCJlZGl0b3JSZWYiLCJjdXJyZW50IiwiYXJndW1lbnRzIiwicmVuZGVyIiwicmVhZE9ubHkiLCJpZCIsImNzcyIsInNldCIsImV2ZW50IiwibmV3Q3NzIiwiY3VycmVudENTUyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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OztBQUVEMUQsY0FBWSxDQUFDeUQsS0FBRCxFQUFRRSxVQUFSLEVBQW9CO0FBQzVCLFFBQUksQ0FBQyxLQUFLbEUsS0FBTCxDQUFXTyxZQUFoQixFQUE4QjtBQUM5QixTQUFLUCxLQUFMLENBQVdPLFlBQVgsQ0FBd0IyRCxVQUF4QjtBQUNIOztBQUVEMUQsWUFBVSxHQUFHO0FBQ1QsUUFBSSxLQUFLUixLQUFMLENBQVdRLFVBQWYsRUFBMkIsS0FBS1IsS0FBTCxDQUFXUSxVQUFYO0FBQzlCOztBQWpGa0QiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2Nzc2VkaXRvci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBTZXR0aW5ncywgRXZlbnRzLCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IEVkaXRvciBmcm9tIFwiLi9lZGl0b3JcIjtcclxuLy8gaW1wb3J0IENoZWNrYm94IGZyb20gXCIuL2NoZWNrYm94XCI7XHJcbmltcG9ydCBSZWZyZXNoIGZyb20gXCIuLi9pY29ucy9yZWxvYWRcIjtcclxuaW1wb3J0IFNhdmUgZnJvbSBcIi4uL2ljb25zL3NhdmVcIjtcclxuaW1wb3J0IEVkaXQgZnJvbSBcIi4uL2ljb25zL2VkaXRcIjtcclxuaW1wb3J0IENvZyBmcm9tIFwiLi4vaWNvbnMvY29nXCI7XHJcbmltcG9ydCBEZXRhY2ggZnJvbSBcIi4uL2ljb25zL2RldGFjaFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3NzRWRpdG9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlTGl2ZVVwZGF0ZSA9IHRoaXMudG9nZ2xlTGl2ZVVwZGF0ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ3NzID0gdGhpcy51cGRhdGVDc3MuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNhdmVDc3MgPSB0aGlzLnNhdmVDc3MuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9wZW5EZXRhY2hlZCA9IHRoaXMucHJvcHMub3BlbkRldGFjaGVkID8gdGhpcy5vcGVuRGV0YWNoZWQuYmluZCh0aGlzKSA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVuTmF0aXZlID0gdGhpcy5vcGVuTmF0aXZlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVFZGl0b3IgPSB0aGlzLnVwZGF0ZUVkaXRvci5iaW5kKHRoaXMpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbnRyb2xzID0gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVmcmVzaCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLnVwZGF0ZSwgb25DbGljazogdGhpcy51cGRhdGVDc3N9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2F2ZSwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLnNhdmUsIG9uQ2xpY2s6IHRoaXMuc2F2ZUNzc30sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChFZGl0LCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Mub3Blbk5hdGl2ZSwgb25DbGljazogdGhpcy5vcGVuTmF0aXZlfSxcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KENvZywge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLnNldHRpbmdzLCBvbkNsaWNrOiBcInNob3dTZXR0aW5nc1wifSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLkNvbGxlY3Rpb25zLnNldHRpbmdzLmN1c3RvbWNzcy5saXZlVXBkYXRlLm5hbWUsIHR5cGU6XCJjaGVja2JveFwiLCBvbkNoYW5nZTogdGhpcy50b2dnbGVMaXZlVXBkYXRlLCBjaGVja2VkOiBTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImN1c3RvbWNzc1wiLCBcImxpdmVVcGRhdGVcIiksIHNpZGU6IFwicmlnaHRcIn1cclxuICAgICAgICBdO1xyXG4gICAgICAgIGlmICh0aGlzLm9wZW5EZXRhY2hlZCkgdGhpcy5jb250cm9scy5wdXNoKHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChEZXRhY2gsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5vcGVuRGV0YWNoZWQsIG9uQ2xpY2s6IHRoaXMub3BlbkRldGFjaGVkLCBzaWRlOiBcInJpZ2h0XCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub24oXCJjdXN0b21jc3MtdXBkYXRlZFwiLCB0aGlzLnVwZGF0ZUVkaXRvcik7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcImN1c3RvbWNzcy11cGRhdGVkXCIsIHRoaXMudXBkYXRlRWRpdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVFZGl0b3IobmV3Q1NTKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRvcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnZhbHVlID0gbmV3Q1NTO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3Iuc2Vzc2lvbi5nZXRWYWx1ZSgpO31cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyh0aGlzLmVkaXRvcik7fVxyXG4gICAgcmVzaXplKCkge3JldHVybiB0aGlzLmVkaXRvci5yZXNpemUoKTt9XHJcblxyXG4gICAgc2V0RWRpdG9yUmVmKGVkaXRvcikge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmVkaXRvclJlZiAmJiB0eXBlb2YodGhpcy5wcm9wcy5lZGl0b3JSZWYuY3VycmVudCkgIT09IFwidW5kZWZpbmVkXCIpIHRoaXMucHJvcHMuZWRpdG9yUmVmLmN1cnJlbnQgPSBlZGl0b3I7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5wcm9wcy5lZGl0b3JSZWYpIHRoaXMucHJvcHMuZWRpdG9yUmVmID0gZWRpdG9yO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKCkge1xyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2hhbmdlKSB0aGlzLnByb3BzLm9uQ2hhbmdlKC4uLmFyZ3VtZW50cyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8RWRpdG9yIHJlZj17dGhpcy5zZXRFZGl0b3JSZWYuYmluZCh0aGlzKX0gcmVhZE9ubHk9e3RoaXMucHJvcHMucmVhZE9ubHl9IGlkPXt0aGlzLnByb3BzLmlkIHx8IFwiYmQtY3VzdG9tY3NzLWVkaXRvclwifSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gY29udHJvbHM9e3RoaXMuY29udHJvbHN9IHZhbHVlPXt0aGlzLnByb3BzLmNzc30gLz47XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlTGl2ZVVwZGF0ZShjaGVja2VkKSB7XHJcbiAgICAgICAgU2V0dGluZ3Muc2V0KFwic2V0dGluZ3NcIiwgXCJjdXN0b21jc3NcIiwgXCJsaXZlVXBkYXRlXCIsIGNoZWNrZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUNzcyhldmVudCwgbmV3Q3NzKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudXBkYXRlKSB0aGlzLnByb3BzLnVwZGF0ZShuZXdDc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVDc3MoZXZlbnQsIG5ld0Nzcykge1xyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5zYXZlKSB0aGlzLnByb3BzLnNhdmUobmV3Q3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRGV0YWNoZWQoZXZlbnQsIGN1cnJlbnRDU1MpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMub3BlbkRldGFjaGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQoY3VycmVudENTUyk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk5hdGl2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vcGVuTmF0aXZlKSB0aGlzLnByb3BzLm9wZW5OYXRpdmUoKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/customcss/csseditor.jsx\n"); /***/ }), @@ -719,7 +719,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CodeEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checkbox */ \"./src/ui/customcss/checkbox.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nconst languages = [\"abap\", \"abc\", \"actionscript\", \"ada\", \"apache_conf\", \"asciidoc\", \"assembly_x86\", \"autohotkey\", \"batchfile\", \"bro\", \"c_cpp\", \"c9search\", \"cirru\", \"clojure\", \"cobol\", \"coffee\", \"coldfusion\", \"csharp\", \"csound_document\", \"csound_orchestra\", \"csound_score\", \"css\", \"curly\", \"d\", \"dart\", \"diff\", \"dockerfile\", \"dot\", \"drools\", \"dummy\", \"dummysyntax\", \"eiffel\", \"ejs\", \"elixir\", \"elm\", \"erlang\", \"forth\", \"fortran\", \"ftl\", \"gcode\", \"gherkin\", \"gitignore\", \"glsl\", \"gobstones\", \"golang\", \"graphqlschema\", \"groovy\", \"haml\", \"handlebars\", \"haskell\", \"haskell_cabal\", \"haxe\", \"hjson\", \"html\", \"html_elixir\", \"html_ruby\", \"ini\", \"io\", \"jack\", \"jade\", \"java\", \"javascript\", \"json\", \"jsoniq\", \"jsp\", \"jssm\", \"jsx\", \"julia\", \"kotlin\", \"latex\", \"less\", \"liquid\", \"lisp\", \"livescript\", \"logiql\", \"lsl\", \"lua\", \"luapage\", \"lucene\", \"makefile\", \"markdown\", \"mask\", \"matlab\", \"maze\", \"mel\", \"mushcode\", \"mysql\", \"nix\", \"nsis\", \"objectivec\", \"ocaml\", \"pascal\", \"perl\", \"pgsql\", \"php\", \"pig\", \"powershell\", \"praat\", \"prolog\", \"properties\", \"protobuf\", \"python\", \"r\", \"razor\", \"rdoc\", \"red\", \"rhtml\", \"rst\", \"ruby\", \"rust\", \"sass\", \"scad\", \"scala\", \"scheme\", \"scss\", \"sh\", \"sjs\", \"smarty\", \"snippets\", \"soy_template\", \"space\", \"sql\", \"sqlserver\", \"stylus\", \"svg\", \"swift\", \"tcl\", \"tex\", \"text\", \"textile\", \"toml\", \"tsx\", \"twig\", \"typescript\", \"vala\", \"vbscript\", \"velocity\", \"verilog\", \"vhdl\", \"wollok\", \"xml\", \"xquery\", \"yaml\", \"django\"];\nconst themes = [\"chrome\", \"clouds\", \"crimson_editor\", \"dawn\", \"dreamweaver\", \"eclipse\", \"github\", \"iplastic\", \"solarized_light\", \"textmate\", \"tomorrow\", \"xcode\", \"kuroir\", \"katzenmilch\", \"sqlserver\", \"ambiance\", \"chaos\", \"clouds_midnight\", \"cobalt\", \"gruvbox\", \"gob\", \"idle_fingers\", \"kr_theme\", \"merbivore\", \"merbivore_soft\", \"mono_industrial\", \"monokai\", \"pastel_on_dark\", \"solarized_dark\", \"terminal\", \"tomorrow_night\", \"tomorrow_night_blue\", \"tomorrow_night_bright\", \"tomorrow_night_eighties\", \"twilight\", \"vibrant_ink\"];\nclass CodeEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n static get defaultId() {\n return \"bd-editor\";\n }\n\n constructor(props) {\n super(props);\n\n for (const control of this.props.controls) {\n if (control.type == \"checkbox\") continue;\n if (control.onClick == \"showSettings\") control.onClick = this.showSettings.bind(this);\n }\n\n this.props.theme = this.props.theme.toLowerCase().replace(/ /g, \"_\");\n if (!themes.includes(this.props.theme)) this.props.theme = CodeEditor.defaultProps.theme;\n this.props.language = this.props.language.toLowerCase().replace(/ /g, \"_\");\n if (!languages.includes(this.props.language)) this.props.language = CodeEditor.defaultProps.language;\n this.onChange = this.onChange.bind(this);\n }\n\n static get defaultProps() {\n return {\n controls: [],\n theme: \"bd-monokai\",\n language: \"css\",\n id: this.defaultId,\n fontSize: 14\n };\n }\n\n static get themes() {\n return themes;\n }\n\n componentDidMount() {\n this.editor = ace.edit(this.props.id); // Add id to the ace menu container\n\n const originalShow = this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec;\n\n this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec = function () {\n originalShow.apply(this, arguments);\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) continue;\n const node = mutation.addedNodes[0];\n if (node.parentElement !== document.body || !node.querySelector(\"#ace_settingsmenu\")) continue;\n node.id = \"ace_settingsmenu_container\";\n observer.disconnect();\n }\n });\n observer.observe(document.body, {\n childList: true\n });\n };\n\n const theme = this.props.theme == CodeEditor.defaultProps.theme ? this.props.theme.split(\"-\")[1] : this.props.theme;\n this.editor.setTheme(`ace/theme/${theme}`);\n this.editor.session.setMode(`ace/mode/${this.props.language}`);\n this.editor.setShowPrintMargin(false);\n this.editor.setFontSize(this.props.fontSize);\n this.editor.on(\"change\", this.onChange);\n }\n\n componentWillUnmount() {\n this.editor.destroy();\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n onChange() {\n if (this.props.onChange) this.props.onChange(this.value);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n buildControl(control) {\n if (control.type == \"checkbox\") return this.makeCheckbox(control);\n return this.makeButton(control);\n }\n\n makeCheckbox(checkbox) {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_checkbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: checkbox.label,\n onChange: checkbox.onChange,\n checked: checkbox.checked\n });\n }\n\n makeButton(button) {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: button.tooltip\n }, props => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", _extends({}, props, {\n className: \"btn btn-primary\",\n onClick: event => {\n button.onClick(event, this.value);\n }\n }), button.label);\n });\n }\n\n render() {\n if (this.editor && this.editor.resize) this.editor.resize();\n const controlsLeft = this.props.controls.filter(c => c.side != \"right\").map(this.buildControl.bind(this));\n const controlsRight = this.props.controls.filter(c => c.side == \"right\").map(this.buildControl.bind(this));\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-panel\",\n className: this.props.theme\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-controls\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-left\"\n }, controlsLeft), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-right\"\n }, controlsRight)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"editor-wrapper\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: \"editor \" + this.props.theme\n }, this.props.value)));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2N1c3RvbWNzcy9lZGl0b3IuanN4P2ZmZTIiXSwibmFtZXMiOlsiVG9vbHRpcCIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsImxhbmd1YWdlcyIsInRoZW1lcyIsIkNvZGVFZGl0b3IiLCJSZWFjdCIsIkNvbXBvbmVudCIsImRlZmF1bHRJZCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJjb250cm9sIiwiY29udHJvbHMiLCJ0eXBlIiwib25DbGljayIsInNob3dTZXR0aW5ncyIsImJpbmQiLCJ0aGVtZSIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsImluY2x1ZGVzIiwiZGVmYXVsdFByb3BzIiwibGFuZ3VhZ2UiLCJvbkNoYW5nZSIsImlkIiwiZm9udFNpemUiLCJjb21wb25lbnREaWRNb3VudCIsImVkaXRvciIsImFjZSIsImVkaXQiLCJvcmlnaW5hbFNob3ciLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsImFwcGx5IiwiYXJndW1lbnRzIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwibXV0YXRpb24iLCJhZGRlZE5vZGVzIiwibGVuZ3RoIiwiRWxlbWVudCIsIm5vZGUiLCJwYXJlbnRFbGVtZW50IiwiZG9jdW1lbnQiLCJib2R5IiwicXVlcnlTZWxlY3RvciIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwiY2hpbGRMaXN0Iiwic3BsaXQiLCJzZXRUaGVtZSIsInNlc3Npb24iLCJzZXRNb2RlIiwic2V0U2hvd1ByaW50TWFyZ2luIiwic2V0Rm9udFNpemUiLCJvbiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiZGVzdHJveSIsInZhbHVlIiwiZ2V0VmFsdWUiLCJuZXdWYWx1ZSIsInNldFZhbHVlIiwicmVzaXplIiwiYnVpbGRDb250cm9sIiwibWFrZUNoZWNrYm94IiwibWFrZUJ1dHRvbiIsImNoZWNrYm94IiwibGFiZWwiLCJjaGVja2VkIiwiYnV0dG9uIiwidG9vbHRpcCIsImV2ZW50IiwicmVuZGVyIiwiY29udHJvbHNMZWZ0IiwiZmlsdGVyIiwiYyIsInNpZGUiLCJtYXAiLCJjb250cm9sc1JpZ2h0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUVBO0FBRUEsTUFBTUEsT0FBTyxHQUFHQyxzREFBYyxDQUFDQyxnQkFBZixDQUFnQyxTQUFoQyxDQUFoQjtBQUVBLE1BQU1DLFNBQVMsR0FBRyxDQUFDLE1BQUQsRUFBUyxLQUFULEVBQWdCLGNBQWhCLEVBQWdDLEtBQWhDLEVBQXVDLGFBQXZDLEVBQXNELFVBQXRELEVBQWtFLGNBQWxFLEVBQWtGLFlBQWxGLEVBQWdHLFdBQWhHLEVBQTZHLEtBQTdHLEVBQW9ILE9BQXBILEVBQTZILFVBQTdILEVBQXlJLE9BQXpJLEVBQWtKLFNBQWxKLEVBQTZKLE9BQTdKLEVBQXNLLFFBQXRLLEVBQWdMLFlBQWhMLEVBQThMLFFBQTlMLEVBQXdNLGlCQUF4TSxFQUEyTixrQkFBM04sRUFBK08sY0FBL08sRUFBK1AsS0FBL1AsRUFBc1EsT0FBdFEsRUFBK1EsR0FBL1EsRUFBb1IsTUFBcFIsRUFBNFIsTUFBNVIsRUFBb1MsWUFBcFMsRUFBa1QsS0FBbFQsRUFBeVQsUUFBelQsRUFBbVUsT0FBblUsRUFBNFUsYUFBNVUsRUFBMlYsUUFBM1YsRUFBcVcsS0FBclcsRUFBNFcsUUFBNVcsRUFBc1gsS0FBdFgsRUFBNlgsUUFBN1gsRUFBdVksT0FBdlksRUFBZ1osU0FBaFosRUFBMlosS0FBM1osRUFBa2EsT0FBbGEsRUFBMmEsU0FBM2EsRUFBc2IsV0FBdGIsRUFBbWMsTUFBbmMsRUFBMmMsV0FBM2MsRUFBd2QsUUFBeGQsRUFBa2UsZUFBbGUsRUFBbWYsUUFBbmYsRUFBNmYsTUFBN2YsRUFBcWdCLFlBQXJnQixFQUFtaEIsU0FBbmhCLEVBQThoQixlQUE5aEIsRUFBK2lCLE1BQS9pQixFQUF1akIsT0FBdmpCLEVBQWdrQixNQUFoa0IsRUFBd2tCLGFB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TUFBTCxJQUFlLEtBQUtBLE1BQUwsQ0FBWXVDLE1BQS9CLEVBQXVDLEtBQUt2QyxNQUFMLENBQVl1QyxNQUFaO0FBRXZDLFVBQU1XLFlBQVksR0FBRyxLQUFLbkUsS0FBTCxDQUFXRSxRQUFYLENBQW9Ca0UsTUFBcEIsQ0FBMkJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxJQUFGLElBQVUsT0FBMUMsRUFBbURDLEdBQW5ELENBQXVELEtBQUtkLFlBQUwsQ0FBa0JuRCxJQUFsQixDQUF1QixJQUF2QixDQUF2RCxDQUFyQjtBQUNBLFVBQU1rRSxhQUFhLEdBQUcsS0FBS3hFLEtBQUwsQ0FBV0UsUUFBWCxDQUFvQmtFLE1BQXBCLENBQTJCQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsSUFBRixJQUFVLE9BQTFDLEVBQW1EQyxHQUFuRCxDQUF1RCxLQUFLZCxZQUFMLENBQWtCbkQsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBdkQsQ0FBdEI7QUFFQSxXQUFPO0FBQUssUUFBRSxFQUFDLGlCQUFSO0FBQTBCLGVBQVMsRUFBRSxLQUFLTixLQUFMLENBQVdPO0FBQWhELE9BQ0s7QUFBSyxRQUFFLEVBQUM7QUFBUixPQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FDSzRELFlBREwsQ0FESixFQUlJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FDS0ssYUFETCxDQUpKLENBREwsRUFTSztBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0k7QUFBSyxRQUFFLEVBQUUsS0FBS3hFLEtBQUwsQ0FBV2MsRUFBcEI7QUFBd0IsZUFBUyxFQUFFLFlBQVksS0FBS2QsS0FBTCxDQUFXTztBQUExRCxPQUFrRSxLQUFLUCxLQUFMLENBQVdvRCxLQUE3RSxDQURKLENBVEwsQ0FBUDtBQWFIOztBQS9HbUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2VkaXRvci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiLi9jaGVja2JveFwiO1xyXG5cclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuY29uc3QgbGFuZ3VhZ2VzID0gW1wiYWJhcFwiLCBcImFiY1wiLCBcImFjdGlvbnNjcmlwdFwiLCBcImFkYVwiLCBcImFwYWNoZV9jb25mXCIsIFwiYXNjaWlkb2NcIiwgXCJhc3NlbWJseV94ODZcIiwgXCJhdXRvaG90a2V5XCIsIFwiYmF0Y2hmaWxlXCIsIFwiYnJvXCIsIFwiY19jcHBcIiwgXCJjOXNlYXJjaFwiLCBcImNpcnJ1XCIsIFwiY2xvanVyZVwiLCBcImNvYm9sXCIsIFwiY29mZmVlXCIsIFwiY29sZGZ1c2lvblwiLCBcImNzaGFycFwiLCBcImNzb3VuZF9kb2N1bWVudFwiLCBcImNzb3VuZF9vcmNoZXN0cmFcIiwgXCJjc291bmRfc2NvcmVcIiwgXCJjc3NcIiwgXCJjdXJseVwiLCBcImRcIiwgXCJkYXJ0XCIsIFwiZGlmZlwiLCBcImRvY2tlcmZpbGVcIiwgXCJkb3RcIiwgXCJkcm9vbHNcIiwgXCJkdW1teVwiLCBcImR1bW15c3ludGF4XCIsIFwiZWlmZmVsXCIsIFwiZWpzXCIsIFwiZWxpeGlyXCIsIFwiZWxtXCIsIFwiZXJsYW5nXCIsIFwiZm9ydGhcIiwgXCJmb3J0cmFuXCIsIFwiZnRsXCIsIFwiZ2NvZGVcIiwgXCJnaGVya2luXCIsIFwiZ2l0aWdub3JlXCIsIFwiZ2xzbFwiLCBcImdvYnN0b25lc1wiLCBcImdvbGFuZ1wiLCBcImdyYXBocWxzY2hlbWFcIiwgXCJncm9vdnlcIiwgXCJoYW1sXCIsIFwiaGFuZGxlYmFyc1wiLCBcImhhc2tlbGxcIiwgXCJoYXNrZWxsX2NhYmFsXCIsIFwiaGF4ZVwiLCBcImhqc29uXCIsIFwiaHRtbFwiLCBcImh0bWxfZWxpeGlyXCIsIFwiaHRtbF9ydWJ5XCIsIFwiaW5pXCIsIFwiaW9cIiwgXCJqYWNrXCIsIFwiamFkZVwiLCBcImphdmFcIiwgXCJqYXZhc2NyaXB0XCIsIFwianNvblwiLCBcImpzb25pcVwiLCBcImpzcFwiLCBcImpzc21cIiwgXCJqc3hcIiwgXCJqdWxpYVwiLCBcImtvdGxpblwiLCBcImxhdGV4XCIsIFwibGVzc1wiLCBcImxpcXVpZFwiLCBcImxpc3BcIiwgXCJsaXZlc2NyaXB0XCIsIFwibG9naXFsXCIsIFwibHNsXCIsIFwibHVhXCIsIFwibHVhcGFnZVwiLCBcImx1Y2VuZVwiLCBcIm1ha2VmaWxlXCIsIFwibWFya2Rvd25cIiwgXCJtYXNrXCIsIFwibWF0bGFiXCIsIFwibWF6ZVwiLCBcIm1lbFwiLCBcIm11c2hjb2RlXCIsIFwibXlzcWxcIiwgXCJuaXhcIiwgXCJuc2lzXCIsIFwib2JqZWN0aXZlY1wiLCBcIm9jYW1sXCIsIFwicGFzY2FsXCIsIFwicGVybFwiLCBcInBnc3FsXCIsIFwicGhwXCIsIFwicGlnXCIsIFwicG93ZXJzaGVsbFwiLCBcInByYWF0XCIsIFwicHJvbG9nXCIsIFwicHJvcGVydGllc1wiLCBcInByb3RvYnVmXCIsIFwicHl0aG9uXCIsIFwiclwiLCBcInJhem9yXCIsIFwicmRvY1wiLCBcInJlZFwiLCBcInJodG1sXCIsIFwicnN0XCIsIFwicnVieVwiLCBcInJ1c3RcIiwgXCJzYXNzXCIsIFwic2NhZFwiLCBcInNjYWxhXCIsIFwic2NoZW1lXCIsIFwic2Nzc1wiLCBcInNoXCIsIFwic2pzXCIsIFwic21hcnR5XCIsIFwic25pcHBldHNcIiwgXCJzb3lfdGVtcGxhdGVcIiwgXCJzcGFjZVwiLCBcInNxbFwiLCBcInNxbHNlcnZlclwiLCBcInN0eWx1c1wiLCBcInN2Z1wiLCBcInN3aWZ0XCIsIFwidGNsXCIsIFwidGV4XCIsIFwidGV4dFwiLCBcInRleHRpbGVcIiwgXCJ0b21sXCIsIFwidHN4XCIsIFwidHdpZ1wiLCBcInR5cGVzY3JpcHRcIiwgXCJ2YWxhXCIsIFwidmJzY3JpcHRcIiwgXCJ2ZWxvY2l0eVwiLCBcInZlcmlsb2dcIiwgXCJ2aGRsXCIsIFwid29sbG9rXCIsIFwieG1sXCIsIFwieHF1ZXJ5XCIsIFwieWFtbFwiLCBcImRqYW5nb1wiXTtcclxuY29uc3QgdGhlbWVzID0gW1wiY2hyb21lXCIsIFwiY2xvdWRzXCIsIFwiY3JpbXNvbl9lZGl0b3JcIiwgXCJkYXduXCIsIFwiZHJlYW13ZWF2ZXJcIiwgXCJlY2xpcHNlXCIsIFwiZ2l0aHViXCIsIFwiaXBsYXN0aWNcIiwgXCJzb2xhcml6ZWRfbGlnaHRcIiwgXCJ0ZXh0bWF0ZVwiLCBcInRvbW9ycm93XCIsIFwieGNvZGVcIiwgXCJrdXJvaXJcIiwgXCJrYXR6ZW5taWxjaFwiLCBcInNxbHNlcnZlclwiLCBcImFtYmlhbmNlXCIsIFwiY2hhb3NcIiwgXCJjbG91ZHNfbWlkbmlnaHRcIiwgXCJjb2JhbHRcIiwgXCJncnV2Ym94XCIsIFwiZ29iXCIsIFwiaWRsZV9maW5nZXJzXCIsIFwia3JfdGhlbWVcIiwgXCJtZXJiaXZvcmVcIiwgXCJtZXJiaXZvcmVfc29mdFwiLCBcIm1vbm9faW5kdXN0cmlhbFwiLCBcIm1vbm9rYWlcIiwgXCJwYXN0ZWxfb25fZGFya1wiLCBcInNvbGFyaXplZF9kYXJrXCIsIFwidGVybWluYWxcIiwgXCJ0b21vcnJvd19uaWdodFwiLCBcInRvbW9ycm93X25pZ2h0X2JsdWVcIiwgXCJ0b21vcnJvd19uaWdodF9icmlnaHRcIiwgXCJ0b21vcnJvd19uaWdodF9laWdodGllc1wiLCBcInR3aWxpZ2h0XCIsIFwidmlicmFudF9pbmtcIl07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2RlRWRpdG9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdElkKCkge3JldHVybiBcImJkLWVkaXRvclwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICBcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5wcm9wcy5jb250cm9scykge1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLm9uQ2xpY2sgPT0gXCJzaG93U2V0dGluZ3NcIikgY29udHJvbC5vbkNsaWNrID0gdGhpcy5zaG93U2V0dGluZ3MuYmluZCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucHJvcHMudGhlbWUgPSB0aGlzLnByb3BzLnRoZW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCBcIl9cIik7XHJcbiAgICAgICAgaWYgKCF0aGVtZXMuaW5jbHVkZXModGhpcy5wcm9wcy50aGVtZSkpIHRoaXMucHJvcHMudGhlbWUgPSBDb2RlRWRpdG9yLmRlZmF1bHRQcm9wcy50aGVtZTtcclxuXHJcbiAgICAgICAgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IHRoaXMucHJvcHMubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8gL2csIFwiX1wiKTtcclxuICAgICAgICBpZiAoIWxhbmd1YWdlcy5pbmNsdWRlcyh0aGlzLnByb3BzLmxhbmd1YWdlKSkgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IENvZGVFZGl0b3IuZGVmYXVsdFByb3BzLmxhbmd1YWdlO1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdFByb3BzKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvbnRyb2xzOiBbXSxcclxuICAgICAgICAgICAgdGhlbWU6IFwiYmQtbW9ub2thaVwiLFxyXG4gICAgICAgICAgICBsYW5ndWFnZTogXCJjc3NcIixcclxuICAgICAgICAgICAgaWQ6IHRoaXMuZGVmYXVsdElkLFxyXG4gICAgICAgICAgICBmb250U2l6ZTogMTRcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgdGhlbWVzKCkge3JldHVybiB0aGVtZXM7fVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gYWNlLmVkaXQodGhpcy5wcm9wcy5pZCk7XHJcblxyXG4gICAgICAgIC8vIEFkZCBpZCB0byB0aGUgYWNlIG1lbnUgY29udGFpbmVyXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTaG93ID0gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBvcmlnaW5hbFNob3cuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoIHx8ICEobXV0YXRpb24uYWRkZWROb2Rlc1swXSBpbnN0YW5jZW9mIEVsZW1lbnQpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbXV0YXRpb24uYWRkZWROb2Rlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJlbnRFbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5IHx8ICFub2RlLnF1ZXJ5U2VsZWN0b3IoXCIjYWNlX3NldHRpbmdzbWVudVwiKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pZCA9IFwiYWNlX3NldHRpbmdzbWVudV9jb250YWluZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWV9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB0aGVtZSA9IHRoaXMucHJvcHMudGhlbWUgPT0gQ29kZUVkaXRvci5kZWZhdWx0UHJvcHMudGhlbWUgPyB0aGlzLnByb3BzLnRoZW1lLnNwbGl0KFwiLVwiKVsxXSA6IHRoaXMucHJvcHMudGhlbWU7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VGhlbWUoYGFjZS90aGVtZS8ke3RoZW1lfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNlc3Npb24uc2V0TW9kZShgYWNlL21vZGUvJHt0aGlzLnByb3BzLmxhbmd1YWdlfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFNob3dQcmludE1hcmdpbihmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0Rm9udFNpemUodGhpcy5wcm9wcy5mb250U2l6ZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iub24oXCJjaGFuZ2VcIiwgdGhpcy5vbkNoYW5nZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3Iuc2Vzc2lvbi5nZXRWYWx1ZSgpO31cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyh0aGlzLmVkaXRvcik7fVxyXG4gICAgcmVzaXplKCkge3JldHVybiB0aGlzLmVkaXRvci5yZXNpemUoKTt9XHJcblxyXG4gICAgYnVpbGRDb250cm9sKGNvbnRyb2wpIHtcclxuICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgcmV0dXJuIHRoaXMubWFrZUNoZWNrYm94KGNvbnRyb2wpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VCdXR0b24oY29udHJvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUNoZWNrYm94KGNoZWNrYm94KSB7XHJcbiAgICAgICAgcmV0dXJuIDxDaGVja2JveCB0ZXh0PXtjaGVja2JveC5sYWJlbH0gb25DaGFuZ2U9e2NoZWNrYm94Lm9uQ2hhbmdlfSBjaGVja2VkPXtjaGVja2JveC5jaGVja2VkfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlQnV0dG9uKGJ1dHRvbikge1xyXG4gICAgICAgIHJldHVybiA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PXtidXR0b24udG9vbHRpcH0+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxidXR0b24gey4uLnByb3BzfSBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIiBvbkNsaWNrPXsoZXZlbnQpID0+IHtidXR0b24ub25DbGljayhldmVudCwgdGhpcy52YWx1ZSk7fX0+e2J1dHRvbi5sYWJlbH08L2J1dHRvbj47XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD47XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLmVkaXRvci5yZXNpemUpIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO1xyXG5cclxuICAgICAgICBjb25zdCBjb250cm9sc0xlZnQgPSB0aGlzLnByb3BzLmNvbnRyb2xzLmZpbHRlcihjID0+IGMuc2lkZSAhPSBcInJpZ2h0XCIpLm1hcCh0aGlzLmJ1aWxkQ29udHJvbC5iaW5kKHRoaXMpKTtcclxuICAgICAgICBjb25zdCBjb250cm9sc1JpZ2h0ID0gdGhpcy5wcm9wcy5jb250cm9scy5maWx0ZXIoYyA9PiBjLnNpZGUgPT0gXCJyaWdodFwiKS5tYXAodGhpcy5idWlsZENvbnRyb2wuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPVwiYmQtZWRpdG9yLXBhbmVsXCIgY2xhc3NOYW1lPXt0aGlzLnByb3BzLnRoZW1lfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYmQtZWRpdG9yLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbHMtc2VjdGlvbiBjb250cm9scy1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNMZWZ0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9scy1zZWN0aW9uIGNvbnRyb2xzLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNSaWdodH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlZGl0b3Itd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e1wiZWRpdG9yIFwiICsgdGhpcy5wcm9wcy50aGVtZX0+e3RoaXMucHJvcHMudmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/customcss/editor.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CodeEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checkbox */ \"./src/ui/customcss/checkbox.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nconst languages = [\"abap\", \"abc\", \"actionscript\", \"ada\", \"apache_conf\", \"asciidoc\", \"assembly_x86\", \"autohotkey\", \"batchfile\", \"bro\", \"c_cpp\", \"c9search\", \"cirru\", \"clojure\", \"cobol\", \"coffee\", \"coldfusion\", \"csharp\", \"csound_document\", \"csound_orchestra\", \"csound_score\", \"css\", \"curly\", \"d\", \"dart\", \"diff\", \"dockerfile\", \"dot\", \"drools\", \"dummy\", \"dummysyntax\", \"eiffel\", \"ejs\", \"elixir\", \"elm\", \"erlang\", \"forth\", \"fortran\", \"ftl\", \"gcode\", \"gherkin\", \"gitignore\", \"glsl\", \"gobstones\", \"golang\", \"graphqlschema\", \"groovy\", \"haml\", \"handlebars\", \"haskell\", \"haskell_cabal\", \"haxe\", \"hjson\", \"html\", \"html_elixir\", \"html_ruby\", \"ini\", \"io\", \"jack\", \"jade\", \"java\", \"javascript\", \"json\", \"jsoniq\", \"jsp\", \"jssm\", \"jsx\", \"julia\", \"kotlin\", \"latex\", \"less\", \"liquid\", \"lisp\", \"livescript\", \"logiql\", \"lsl\", \"lua\", \"luapage\", \"lucene\", \"makefile\", \"markdown\", \"mask\", \"matlab\", \"maze\", \"mel\", \"mushcode\", \"mysql\", \"nix\", \"nsis\", \"objectivec\", \"ocaml\", \"pascal\", \"perl\", \"pgsql\", \"php\", \"pig\", \"powershell\", \"praat\", \"prolog\", \"properties\", \"protobuf\", \"python\", \"r\", \"razor\", \"rdoc\", \"red\", \"rhtml\", \"rst\", \"ruby\", \"rust\", \"sass\", \"scad\", \"scala\", \"scheme\", \"scss\", \"sh\", \"sjs\", \"smarty\", \"snippets\", \"soy_template\", \"space\", \"sql\", \"sqlserver\", \"stylus\", \"svg\", \"swift\", \"tcl\", \"tex\", \"text\", \"textile\", \"toml\", \"tsx\", \"twig\", \"typescript\", \"vala\", \"vbscript\", \"velocity\", \"verilog\", \"vhdl\", \"wollok\", \"xml\", \"xquery\", \"yaml\", \"django\"];\nconst themes = [\"chrome\", \"clouds\", \"crimson_editor\", \"dawn\", \"dreamweaver\", \"eclipse\", \"github\", \"iplastic\", \"solarized_light\", \"textmate\", \"tomorrow\", \"xcode\", \"kuroir\", \"katzenmilch\", \"sqlserver\", \"ambiance\", \"chaos\", \"clouds_midnight\", \"cobalt\", \"gruvbox\", \"gob\", \"idle_fingers\", \"kr_theme\", \"merbivore\", \"merbivore_soft\", \"mono_industrial\", \"monokai\", \"pastel_on_dark\", \"solarized_dark\", \"terminal\", \"tomorrow_night\", \"tomorrow_night_blue\", \"tomorrow_night_bright\", \"tomorrow_night_eighties\", \"twilight\", \"vibrant_ink\"];\nclass CodeEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n static get defaultId() {\n return \"bd-editor\";\n }\n\n constructor(props) {\n super(props);\n\n for (const control of this.props.controls) {\n if (control.type == \"checkbox\") continue;\n if (control.onClick == \"showSettings\") control.onClick = this.showSettings.bind(this);\n }\n\n this.props.theme = this.props.theme.toLowerCase().replace(/ /g, \"_\");\n if (!themes.includes(this.props.theme)) this.props.theme = CodeEditor.defaultProps.theme;\n this.props.language = this.props.language.toLowerCase().replace(/ /g, \"_\");\n if (!languages.includes(this.props.language)) this.props.language = CodeEditor.defaultProps.language;\n this.onChange = this.onChange.bind(this);\n }\n\n static get defaultProps() {\n return {\n controls: [],\n theme: \"bd-monokai\",\n language: \"css\",\n id: this.defaultId,\n fontSize: 14\n };\n }\n\n static get themes() {\n return themes;\n }\n\n componentDidMount() {\n this.editor = ace.edit(this.props.id); // Add id to the ace menu container\n\n const originalShow = this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec;\n\n this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec = function () {\n originalShow.apply(this, arguments);\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) continue;\n const node = mutation.addedNodes[0];\n if (node.parentElement !== document.body || !node.querySelector(\"#ace_settingsmenu\")) continue;\n node.id = \"ace_settingsmenu_container\";\n observer.disconnect();\n }\n });\n observer.observe(document.body, {\n childList: true\n });\n };\n\n const theme = this.props.theme == CodeEditor.defaultProps.theme ? this.props.theme.split(\"-\")[1] : this.props.theme;\n this.editor.setTheme(`ace/theme/${theme}`);\n this.editor.session.setMode(`ace/mode/${this.props.language}`);\n this.editor.setShowPrintMargin(false);\n this.editor.setFontSize(this.props.fontSize);\n this.editor.on(\"change\", this.onChange);\n }\n\n componentWillUnmount() {\n this.editor.destroy();\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n onChange() {\n if (this.props.onChange) this.props.onChange(this.value);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n buildControl(control) {\n if (control.type == \"checkbox\") return this.makeCheckbox(control);\n return this.makeButton(control);\n }\n\n makeCheckbox(checkbox) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_checkbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: checkbox.label,\n onChange: checkbox.onChange,\n checked: checkbox.checked\n });\n }\n\n makeButton(button) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: button.tooltip\n }, props => {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", _extends({}, props, {\n className: \"btn btn-primary\",\n onClick: event => {\n button.onClick(event, this.value);\n }\n }), button.label);\n });\n }\n\n render() {\n if (this.editor && this.editor.resize) this.editor.resize();\n const controlsLeft = this.props.controls.filter(c => c.side != \"right\").map(this.buildControl.bind(this));\n const controlsRight = this.props.controls.filter(c => c.side == \"right\").map(this.buildControl.bind(this));\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-panel\",\n className: this.props.theme\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-controls\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-left\"\n }, controlsLeft), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-right\"\n }, controlsRight)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"editor-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: \"editor \" + this.props.theme\n }, this.props.value)));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2N1c3RvbWNzcy9lZGl0b3IuanN4P2ZmZTIiXSwibmFtZXMiOlsiVG9vbHRpcCIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsImxhbmd1YWdlcyIsInRoZW1lcyIsIkNvZGVFZGl0b3IiLCJSZWFjdCIsIkNvbXBvbmVudCIsImRlZmF1bHRJZCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJjb250cm9sIiwiY29udHJvbHMiLCJ0eXBlIiwib25DbGljayIsInNob3dTZXR0aW5ncyIsImJpbmQiLCJ0aGVtZSIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsImluY2x1ZGVzIiwiZGVmYXVsdFByb3BzIiwibGFuZ3VhZ2UiLCJvbkNoYW5nZSIsImlkIiwiZm9udFNpemUiLCJjb21wb25lbnREaWRNb3VudCIsImVkaXRvciIsImFjZSIsImVkaXQiLCJvcmlnaW5hbFNob3ciLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsImFwcGx5IiwiYXJndW1lbnRzIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwibXV0YXRpb24iLCJhZGRlZE5vZGVzIiwibGVuZ3RoIiwiRWxlbWVudCIsIm5vZGUiLCJwYXJlbnRFbGVtZW50IiwiZG9jdW1lbnQiLCJib2R5IiwicXVlcnlTZWxlY3RvciIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwiY2hpbGRMaXN0Iiwic3BsaXQiLCJzZXRUaGVtZSIsInNlc3Npb24iLCJzZXRNb2RlIiwic2V0U2hvd1ByaW50TWFyZ2luIiwic2V0Rm9udFNpemUiLCJvbiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiZGVzdHJveSIsInZhbHVlIiwiZ2V0VmFsdWUiLCJuZXdWYWx1ZSIsInNldFZhbHVlIiwicmVzaXplIiwiYnVpbGRDb250cm9sIiwibWFrZUNoZWNrYm94IiwibWFrZUJ1dHRvbiIsImNoZWNrYm94IiwibGFiZWwiLCJjaGVja2VkIiwiYnV0dG9uIiwidG9vbHRpcCIsImV2ZW50IiwicmVuZGVyIiwiY29udHJvbHNMZWZ0IiwiZmlsdGVyIiwiYyIsInNpZGUiLCJtYXAiLCJjb250cm9sc1JpZ2h0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUVBO0FBRUEsTUFBTUEsT0FBTyxHQUFHQyxzREFBYyxDQUFDQyxnQkFBZixDQUFnQyxTQUFoQyxDQUFoQjtBQUVBLE1BQU1DLFNBQVMsR0FBRyxDQUFDLE1BQUQsRUFBUyxLQUFULEVBQWdCLGNBQWhCLEVBQWdDLEtBQWhDLEVBQXVDLGFBQXZDLEVBQXNELFVBQXRELEVBQWtFLGNBQWxFLEVBQWtGLFlBQWxGLEVBQWdHLFdBQWhHLEVBQTZHLEtBQTdHLEVBQW9ILE9BQXBILEVBQTZILFVBQTdILEVBQXlJLE9BQXpJLEVBQWtKLFNBQWxKLEVBQTZKLE9BQTdKLEVBQXNLLFFBQXRLLEVBQWdMLFlBQWhMLEVBQThMLFFBQTlMLEVBQXdNLGlCQUF4TSxFQUEyTixrQkFBM04sRUFBK08sY0FBL08sRUFBK1AsS0FBL1AsRUFBc1EsT0FBdFEsRUFBK1EsR0FBL1EsRUFBb1IsTUFBcFIsRUFBNFIsTUFBNVIsRUFBb1MsWUFBcFMsRUFBa1QsS0FBbFQsRUFBeVQsUUFBelQsRUFBbVUsT0FBblUsRUFBNFUsYUFBNVUsRUFBMlYsUUFBM1YsRUFBcVcsS0FBclcsRUFBNFcsUUFBNVcsRUFBc1gsS0FBdFgsRUFBNlgsUUFBN1gsRUFBdVksT0FBdlksRUFBZ1osU0FBaFosRUFBMlosS0FBM1osRUFBa2EsT0FBbGEsRUFBMmEsU0FBM2EsRUFBc2IsV0FBdGIsRUFBbWMsTUFBbmMsRUFBMmMsV0FBM2MsRUFBd2QsUUFBeGQsRUFBa2UsZUFBbGUsRUFBbWYsUUFBbmYsRUFBNmYsTUFBN2YsRUFBcWdCLFlBQXJnQixFQUFtaEIsU0FBbmhCLEVBQThoQixlQUE5aEIsRUFBK2lCLE1BQS9pQixFQUF1akIsT0FBdmpCLEVBQWdrQixNQUFoa0IsRUFBd2tCLGFB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akQsTUFBTCxJQUFlLEtBQUtBLE1BQUwsQ0FBWXVDLE1BQS9CLEVBQXVDLEtBQUt2QyxNQUFMLENBQVl1QyxNQUFaO0FBRXZDLFVBQU1XLFlBQVksR0FBRyxLQUFLbkUsS0FBTCxDQUFXRSxRQUFYLENBQW9Ca0UsTUFBcEIsQ0FBMkJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxJQUFGLElBQVUsT0FBMUMsRUFBbURDLEdBQW5ELENBQXVELEtBQUtkLFlBQUwsQ0FBa0JuRCxJQUFsQixDQUF1QixJQUF2QixDQUF2RCxDQUFyQjtBQUNBLFVBQU1rRSxhQUFhLEdBQUcsS0FBS3hFLEtBQUwsQ0FBV0UsUUFBWCxDQUFvQmtFLE1BQXBCLENBQTJCQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsSUFBRixJQUFVLE9BQTFDLEVBQW1EQyxHQUFuRCxDQUF1RCxLQUFLZCxZQUFMLENBQWtCbkQsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBdkQsQ0FBdEI7QUFFQSx3QkFBTztBQUFLLFFBQUUsRUFBQyxpQkFBUjtBQUEwQixlQUFTLEVBQUUsS0FBS04sS0FBTCxDQUFXTztBQUFoRCxvQkFDSztBQUFLLFFBQUUsRUFBQztBQUFSLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FDSzRELFlBREwsQ0FESixlQUlJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FDS0ssYUFETCxDQUpKLENBREwsZUFTSztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQUssUUFBRSxFQUFFLEtBQUt4RSxLQUFMLENBQVdjLEVBQXBCO0FBQXdCLGVBQVMsRUFBRSxZQUFZLEtBQUtkLEtBQUwsQ0FBV087QUFBMUQsT0FBa0UsS0FBS1AsS0FBTCxDQUFXb0QsS0FBN0UsQ0FESixDQVRMLENBQVA7QUFhSDs7QUEvR21EIiwiZmlsZSI6Ii4vc3JjL3VpL2N1c3RvbWNzcy9lZGl0b3IuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIi4vY2hlY2tib3hcIjtcclxuXHJcbmNvbnN0IFRvb2x0aXAgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVG9vbHRpcFwiKTtcclxuXHJcbmNvbnN0IGxhbmd1YWdlcyA9IFtcImFiYXBcIiwgXCJhYmNcIiwgXCJhY3Rpb25zY3JpcHRcIiwgXCJhZGFcIiwgXCJhcGFjaGVfY29uZlwiLCBcImFzY2lpZG9jXCIsIFwiYXNzZW1ibHlfeDg2XCIsIFwiYXV0b2hvdGtleVwiLCBcImJhdGNoZmlsZVwiLCBcImJyb1wiLCBcImNfY3BwXCIsIFwiYzlzZWFyY2hcIiwgXCJjaXJydVwiLCBcImNsb2p1cmVcIiwgXCJjb2JvbFwiLCBcImNvZmZlZVwiLCBcImNvbGRmdXNpb25cIiwgXCJjc2hhcnBcIiwgXCJjc291bmRfZG9jdW1lbnRcIiwgXCJjc291bmRfb3JjaGVzdHJhXCIsIFwiY3NvdW5kX3Njb3JlXCIsIFwiY3NzXCIsIFwiY3VybHlcIiwgXCJkXCIsIFwiZGFydFwiLCBcImRpZmZcIiwgXCJkb2NrZXJmaWxlXCIsIFwiZG90XCIsIFwiZHJvb2xzXCIsIFwiZHVtbXlcIiwgXCJkdW1teXN5bnRheFwiLCBcImVpZmZlbFwiLCBcImVqc1wiLCBcImVsaXhpclwiLCBcImVsbVwiLCBcImVybGFuZ1wiLCBcImZvcnRoXCIsIFwiZm9ydHJhblwiLCBcImZ0bFwiLCBcImdjb2RlXCIsIFwiZ2hlcmtpblwiLCBcImdpdGlnbm9yZVwiLCBcImdsc2xcIiwgXCJnb2JzdG9uZXNcIiwgXCJnb2xhbmdcIiwgXCJncmFwaHFsc2NoZW1hXCIsIFwiZ3Jvb3Z5XCIsIFwiaGFtbFwiLCBcImhhbmRsZWJhcnNcIiwgXCJoYXNrZWxsXCIsIFwiaGFza2VsbF9jYWJhbFwiLCBcImhheGVcIiwgXCJoanNvblwiLCBcImh0bWxcIiwgXCJodG1sX2VsaXhpclwiLCBcImh0bWxfcnVieVwiLCBcImluaVwiLCBcImlvXCIsIFwiamFja1wiLCBcImphZGVcIiwgXCJqYXZhXCIsIFwiamF2YXNjcmlwdFwiLCBcImpzb25cIiwgXCJqc29uaXFcIiwgXCJqc3BcIiwgXCJqc3NtXCIsIFwianN4XCIsIFwianVsaWFcIiwgXCJrb3RsaW5cIiwgXCJsYXRleFwiLCBcImxlc3NcIiwgXCJsaXF1aWRcIiwgXCJsaXNwXCIsIFwibGl2ZXNjcmlwdFwiLCBcImxvZ2lxbFwiLCBcImxzbFwiLCBcImx1YVwiLCBcImx1YXBhZ2VcIiwgXCJsdWNlbmVcIiwgXCJtYWtlZmlsZVwiLCBcIm1hcmtkb3duXCIsIFwibWFza1wiLCBcIm1hdGxhYlwiLCBcIm1hemVcIiwgXCJtZWxcIiwgXCJtdXNoY29kZVwiLCBcIm15c3FsXCIsIFwibml4XCIsIFwibnNpc1wiLCBcIm9iamVjdGl2ZWNcIiwgXCJvY2FtbFwiLCBcInBhc2NhbFwiLCBcInBlcmxcIiwgXCJwZ3NxbFwiLCBcInBocFwiLCBcInBpZ1wiLCBcInBvd2Vyc2hlbGxcIiwgXCJwcmFhdFwiLCBcInByb2xvZ1wiLCBcInByb3BlcnRpZXNcIiwgXCJwcm90b2J1ZlwiLCBcInB5dGhvblwiLCBcInJcIiwgXCJyYXpvclwiLCBcInJkb2NcIiwgXCJyZWRcIiwgXCJyaHRtbFwiLCBcInJzdFwiLCBcInJ1YnlcIiwgXCJydXN0XCIsIFwic2Fzc1wiLCBcInNjYWRcIiwgXCJzY2FsYVwiLCBcInNjaGVtZVwiLCBcInNjc3NcIiwgXCJzaFwiLCBcInNqc1wiLCBcInNtYXJ0eVwiLCBcInNuaXBwZXRzXCIsIFwic295X3RlbXBsYXRlXCIsIFwic3BhY2VcIiwgXCJzcWxcIiwgXCJzcWxzZXJ2ZXJcIiwgXCJzdHlsdXNcIiwgXCJzdmdcIiwgXCJzd2lmdFwiLCBcInRjbFwiLCBcInRleFwiLCBcInRleHRcIiwgXCJ0ZXh0aWxlXCIsIFwidG9tbFwiLCBcInRzeFwiLCBcInR3aWdcIiwgXCJ0eXBlc2NyaXB0XCIsIFwidmFsYVwiLCBcInZic2NyaXB0XCIsIFwidmVsb2NpdHlcIiwgXCJ2ZXJpbG9nXCIsIFwidmhkbFwiLCBcIndvbGxva1wiLCBcInhtbFwiLCBcInhxdWVyeVwiLCBcInlhbWxcIiwgXCJkamFuZ29cIl07XHJcbmNvbnN0IHRoZW1lcyA9IFtcImNocm9tZVwiLCBcImNsb3Vkc1wiLCBcImNyaW1zb25fZWRpdG9yXCIsIFwiZGF3blwiLCBcImRyZWFtd2VhdmVyXCIsIFwiZWNsaXBzZVwiLCBcImdpdGh1YlwiLCBcImlwbGFzdGljXCIsIFwic29sYXJpemVkX2xpZ2h0XCIsIFwidGV4dG1hdGVcIiwgXCJ0b21vcnJvd1wiLCBcInhjb2RlXCIsIFwia3Vyb2lyXCIsIFwia2F0emVubWlsY2hcIiwgXCJzcWxzZXJ2ZXJcIiwgXCJhbWJpYW5jZVwiLCBcImNoYW9zXCIsIFwiY2xvdWRzX21pZG5pZ2h0XCIsIFwiY29iYWx0XCIsIFwiZ3J1dmJveFwiLCBcImdvYlwiLCBcImlkbGVfZmluZ2Vyc1wiLCBcImtyX3RoZW1lXCIsIFwibWVyYml2b3JlXCIsIFwibWVyYml2b3JlX3NvZnRcIiwgXCJtb25vX2luZHVzdHJpYWxcIiwgXCJtb25va2FpXCIsIFwicGFzdGVsX29uX2RhcmtcIiwgXCJzb2xhcml6ZWRfZGFya1wiLCBcInRlcm1pbmFsXCIsIFwidG9tb3Jyb3dfbmlnaHRcIiwgXCJ0b21vcnJvd19uaWdodF9ibHVlXCIsIFwidG9tb3Jyb3dfbmlnaHRfYnJpZ2h0XCIsIFwidG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXNcIiwgXCJ0d2lsaWdodFwiLCBcInZpYnJhbnRfaW5rXCJdO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29kZUVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgZ2V0IGRlZmF1bHRJZCgpIHtyZXR1cm4gXCJiZC1lZGl0b3JcIjt9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMucHJvcHMuY29udHJvbHMpIHtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wudHlwZSA9PSBcImNoZWNrYm94XCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5vbkNsaWNrID09IFwic2hvd1NldHRpbmdzXCIpIGNvbnRyb2wub25DbGljayA9IHRoaXMuc2hvd1NldHRpbmdzLmJpbmQodGhpcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnByb3BzLnRoZW1lID0gdGhpcy5wcm9wcy50aGVtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyAvZywgXCJfXCIpO1xyXG4gICAgICAgIGlmICghdGhlbWVzLmluY2x1ZGVzKHRoaXMucHJvcHMudGhlbWUpKSB0aGlzLnByb3BzLnRoZW1lID0gQ29kZUVkaXRvci5kZWZhdWx0UHJvcHMudGhlbWU7XHJcblxyXG4gICAgICAgIHRoaXMucHJvcHMubGFuZ3VhZ2UgPSB0aGlzLnByb3BzLmxhbmd1YWdlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCBcIl9cIik7XHJcbiAgICAgICAgaWYgKCFsYW5ndWFnZXMuaW5jbHVkZXModGhpcy5wcm9wcy5sYW5ndWFnZSkpIHRoaXMucHJvcHMubGFuZ3VhZ2UgPSBDb2RlRWRpdG9yLmRlZmF1bHRQcm9wcy5sYW5ndWFnZTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IGRlZmF1bHRQcm9wcygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjb250cm9sczogW10sXHJcbiAgICAgICAgICAgIHRoZW1lOiBcImJkLW1vbm9rYWlcIixcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6IFwiY3NzXCIsXHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmRlZmF1bHRJZCxcclxuICAgICAgICAgICAgZm9udFNpemU6IDE0XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IHRoZW1lcygpIHtyZXR1cm4gdGhlbWVzO31cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICB0aGlzLmVkaXRvciA9IGFjZS5lZGl0KHRoaXMucHJvcHMuaWQpO1xyXG5cclxuICAgICAgICAvLyBBZGQgaWQgdG8gdGhlIGFjZSBtZW51IGNvbnRhaW5lclxyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU2hvdyA9IHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYztcclxuICAgICAgICB0aGlzLmVkaXRvci5rZXlCaW5kaW5nLiRkZWZhdWx0SGFuZGxlci5jb21tYW5kcy5zaG93U2V0dGluZ3NNZW51LmV4ZWMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgb3JpZ2luYWxTaG93LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCB8fCAhKG11dGF0aW9uLmFkZGVkTm9kZXNbMF0gaW5zdGFuY2VvZiBFbGVtZW50KSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG11dGF0aW9uLmFkZGVkTm9kZXNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUucGFyZW50RWxlbWVudCAhPT0gZG9jdW1lbnQuYm9keSB8fCAhbm9kZS5xdWVyeVNlbGVjdG9yKFwiI2FjZV9zZXR0aW5nc21lbnVcIikpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuaWQgPSBcImFjZV9zZXR0aW5nc21lbnVfY29udGFpbmVyXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7Y2hpbGRMaXN0OiB0cnVlfSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLnByb3BzLnRoZW1lID09IENvZGVFZGl0b3IuZGVmYXVsdFByb3BzLnRoZW1lID8gdGhpcy5wcm9wcy50aGVtZS5zcGxpdChcIi1cIilbMV0gOiB0aGlzLnByb3BzLnRoZW1lO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFRoZW1lKGBhY2UvdGhlbWUvJHt0aGVtZX1gKTtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXNzaW9uLnNldE1vZGUoYGFjZS9tb2RlLyR7dGhpcy5wcm9wcy5sYW5ndWFnZX1gKTtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRTaG93UHJpbnRNYXJnaW4oZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldEZvbnRTaXplKHRoaXMucHJvcHMuZm9udFNpemUpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLm9uKFwiY2hhbmdlXCIsIHRoaXMub25DaGFuZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnNlc3Npb24uZ2V0VmFsdWUoKTt9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NldHRpbmdzKCkge3JldHVybiB0aGlzLmVkaXRvci5rZXlCaW5kaW5nLiRkZWZhdWx0SGFuZGxlci5jb21tYW5kcy5zaG93U2V0dGluZ3NNZW51LmV4ZWModGhpcy5lZGl0b3IpO31cclxuICAgIHJlc2l6ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3IucmVzaXplKCk7fVxyXG5cclxuICAgIGJ1aWxkQ29udHJvbChjb250cm9sKSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wudHlwZSA9PSBcImNoZWNrYm94XCIpIHJldHVybiB0aGlzLm1ha2VDaGVja2JveChjb250cm9sKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5tYWtlQnV0dG9uKGNvbnRyb2wpO1xyXG4gICAgfVxyXG5cclxuICAgIG1ha2VDaGVja2JveChjaGVja2JveCkge1xyXG4gICAgICAgIHJldHVybiA8Q2hlY2tib3ggdGV4dD17Y2hlY2tib3gubGFiZWx9IG9uQ2hhbmdlPXtjaGVja2JveC5vbkNoYW5nZX0gY2hlY2tlZD17Y2hlY2tib3guY2hlY2tlZH0gLz47XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUJ1dHRvbihidXR0b24pIHtcclxuICAgICAgICByZXR1cm4gPFRvb2x0aXAgY29sb3I9XCJibGFja1wiIHBvc2l0aW9uPVwidG9wXCIgdGV4dD17YnV0dG9uLnRvb2x0aXB9PlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YnV0dG9uIHsuLi5wcm9wc30gY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25DbGljaz17KGV2ZW50KSA9PiB7YnV0dG9uLm9uQ2xpY2soZXZlbnQsIHRoaXMudmFsdWUpO319PntidXR0b24ubGFiZWx9PC9idXR0b24+O1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+O1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3IucmVzaXplKSB0aGlzLmVkaXRvci5yZXNpemUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29udHJvbHNMZWZ0ID0gdGhpcy5wcm9wcy5jb250cm9scy5maWx0ZXIoYyA9PiBjLnNpZGUgIT0gXCJyaWdodFwiKS5tYXAodGhpcy5idWlsZENvbnRyb2wuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgY29uc3QgY29udHJvbHNSaWdodCA9IHRoaXMucHJvcHMuY29udHJvbHMuZmlsdGVyKGMgPT4gYy5zaWRlID09IFwicmlnaHRcIikubWFwKHRoaXMuYnVpbGRDb250cm9sLmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgICByZXR1cm4gPGRpdiBpZD1cImJkLWVkaXRvci1wYW5lbFwiIGNsYXNzTmFtZT17dGhpcy5wcm9wcy50aGVtZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImJkLWVkaXRvci1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRyb2xzLXNlY3Rpb24gY29udHJvbHMtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbnRyb2xzTGVmdH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbHMtc2VjdGlvbiBjb250cm9scy1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbnRyb2xzUmlnaHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZWRpdG9yLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD17dGhpcy5wcm9wcy5pZH0gY2xhc3NOYW1lPXtcImVkaXRvciBcIiArIHRoaXMucHJvcHMudGhlbWV9Pnt0aGlzLnByb3BzLnZhbHVlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/editor.jsx\n"); /***/ }), @@ -743,7 +743,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ErrorBoundary; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ErrorBoundary extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n\n componentDidCatch() {\n this.setState({\n hasError: true\n });\n }\n\n render() {\n if (this.state.hasError) return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"react-error\"\n }, \"Component Error\");\n return this.props.children;\n }\n\n}\nconst originalRender = ErrorBoundary.prototype.render;\nObject.defineProperty(ErrorBoundary.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"ErrorBoundary\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Vycm9yYm91bmRhcnkuanN4P2Q2ZDEiXSwibmFtZXMiOlsiRXJyb3JCb3VuZGFyeSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiaGFzRXJyb3IiLCJjb21wb25lbnREaWRDYXRjaCIsInNldFN0YXRlIiwicmVuZGVyIiwiY2hpbGRyZW4iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJnZXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsYUFBTixTQUE0QkMsNkNBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2pCLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsY0FBUSxFQUFFO0FBQVgsS0FBYjtBQUNEOztBQUVEQyxtQkFBaUIsR0FBRztBQUNsQixTQUFLQyxRQUFMLENBQWM7QUFBQ0YsY0FBUSxFQUFFO0FBQVgsS0FBZDtBQUNEOztBQUVERyxRQUFNLEdBQUc7QUFDUCxRQUFJLEtBQUtKLEtBQUwsQ0FBV0MsUUFBZixFQUF5QixPQUFPO0FBQUssZUFBUyxFQUFDO0FBQWYseUJBQVA7QUFDekIsV0FBTyxLQUFLRixLQUFMLENBQVdNLFFBQWxCO0FBQ0Q7O0FBYnNEO0FBZ0IzRCxNQUFNQyxjQUFjLEdBQUdYLGFBQWEsQ0FBQ1ksU0FBZCxDQUF3QkgsTUFBL0M7QUFDQUksTUFBTSxDQUFDQyxjQUFQLENBQXNCZCxhQUFhLENBQUNZLFNBQXBDLEVBQStDLFFBQS9DLEVBQXlEO0FBQ3JERyxZQUFVLEVBQUUsS0FEeUM7QUFFckRDLGNBQVksRUFBRSxLQUZ1QztBQUdyREMsS0FBRyxFQUFFLFlBQVc7QUFBQ0Msa0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLGVBQVosRUFBNkIscUdBQTdCO0FBQXFJLEdBSGpHO0FBSXJEQyxLQUFHLEVBQUUsTUFBTVQ7QUFKMEMsQ0FBekQiLCJmaWxlIjoiLi9zcmMvdWkvZXJyb3Jib3VuZGFyeS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBMb2dnZXJ9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcnJvckJvdW5kYXJ5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgdGhpcy5zdGF0ZSA9IHtoYXNFcnJvcjogZmFsc2V9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZENhdGNoKCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtoYXNFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUuaGFzRXJyb3IpIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInJlYWN0LWVycm9yXCI+Q29tcG9uZW50IEVycm9yPC9kaXY+OyAgXHJcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuOyBcclxuICAgIH1cclxufVxyXG5cclxuY29uc3Qgb3JpZ2luYWxSZW5kZXIgPSBFcnJvckJvdW5kYXJ5LnByb3RvdHlwZS5yZW5kZXI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShFcnJvckJvdW5kYXJ5LnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkVycm9yQm91bmRhcnlcIiwgXCJBZGRvbiBwb2xpY3kgZm9yIHBsdWdpbnMgIzUgaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC93aWtpL0FkZG9uLVBvbGljaWVzI3BsdWdpbnNcIik7fSxcclxuICAgIGdldDogKCkgPT4gb3JpZ2luYWxSZW5kZXJcclxufSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/errorboundary.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ErrorBoundary; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ErrorBoundary extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n\n componentDidCatch() {\n this.setState({\n hasError: true\n });\n }\n\n render() {\n if (this.state.hasError) return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"react-error\"\n }, \"Component Error\");\n return this.props.children;\n }\n\n}\nconst originalRender = ErrorBoundary.prototype.render;\nObject.defineProperty(ErrorBoundary.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"ErrorBoundary\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Vycm9yYm91bmRhcnkuanN4P2Q2ZDEiXSwibmFtZXMiOlsiRXJyb3JCb3VuZGFyeSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiaGFzRXJyb3IiLCJjb21wb25lbnREaWRDYXRjaCIsInNldFN0YXRlIiwicmVuZGVyIiwiY2hpbGRyZW4iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJnZXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsYUFBTixTQUE0QkMsNkNBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2pCLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsY0FBUSxFQUFFO0FBQVgsS0FBYjtBQUNEOztBQUVEQyxtQkFBaUIsR0FBRztBQUNsQixTQUFLQyxRQUFMLENBQWM7QUFBQ0YsY0FBUSxFQUFFO0FBQVgsS0FBZDtBQUNEOztBQUVERyxRQUFNLEdBQUc7QUFDUCxRQUFJLEtBQUtKLEtBQUwsQ0FBV0MsUUFBZixFQUF5QixvQkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLHlCQUFQO0FBQ3pCLFdBQU8sS0FBS0YsS0FBTCxDQUFXTSxRQUFsQjtBQUNEOztBQWJzRDtBQWdCM0QsTUFBTUMsY0FBYyxHQUFHWCxhQUFhLENBQUNZLFNBQWQsQ0FBd0JILE1BQS9DO0FBQ0FJLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQmQsYUFBYSxDQUFDWSxTQUFwQyxFQUErQyxRQUEvQyxFQUF5RDtBQUNyREcsWUFBVSxFQUFFLEtBRHlDO0FBRXJEQyxjQUFZLEVBQUUsS0FGdUM7QUFHckRDLEtBQUcsRUFBRSxZQUFXO0FBQUNDLGtEQUFNLENBQUNDLElBQVAsQ0FBWSxlQUFaLEVBQTZCLHFHQUE3QjtBQUFxSSxHQUhqRztBQUlyREMsS0FBRyxFQUFFLE1BQU1UO0FBSjBDLENBQXpEIiwiZmlsZSI6Ii4vc3JjL3VpL2Vycm9yYm91bmRhcnkuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXJyb3JCb3VuZGFyeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgIHRoaXMuc3RhdGUgPSB7aGFzRXJyb3I6IGZhbHNlfTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRDYXRjaCgpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7aGFzRXJyb3I6IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXRlLmhhc0Vycm9yKSByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJyZWFjdC1lcnJvclwiPkNvbXBvbmVudCBFcnJvcjwvZGl2PjsgIFxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjsgXHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUucmVuZGVyO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJFcnJvckJvdW5kYXJ5XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/errorboundary.jsx\n"); /***/ }), @@ -755,7 +755,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./window */ \"./src/ui/floating/window.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\nclass FloatingWindowContainer extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n windows: []\n };\n }\n\n get minY() {\n const appContainer = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].query(`#app-mount > div[class*=\"app-\"`);\n if (appContainer) return appContainer.offsetTop;\n return 0;\n }\n\n render() {\n return this.state.windows.map(window => modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_window__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _extends({}, window, {\n close: this.close.bind(this, window.id),\n minY: this.minY\n }), window.children));\n }\n\n open(window) {\n this.setState({\n windows: [...this.state.windows, window]\n });\n }\n\n close(id) {\n this.setState({\n windows: this.state.windows.filter(w => {\n if (w.id == id && w.onClose) w.onClose();\n return w.id != id;\n })\n });\n }\n\n static get id() {\n return \"floating-windows\";\n }\n\n static get root() {\n if (this._root) return this._root;\n const container = document.createElement(\"div\");\n container.id = this.id;\n document.body.append(container);\n return this._root = container;\n }\n\n}\n\nconst containerRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\nconst container = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(FloatingWindowContainer, {\n ref: containerRef\n});\nconst wrapped = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"AppReferencePositionLayer\").AppLayerProvider().props.layerContext.Provider, {\n value: [document.querySelector(\"#app-mount > .layerContainer-yqaFcK\")]\n}, container);\nconst div = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].createElement(`
`);\nmodules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].query(\"#app-mount\").append(div);\nmodules__WEBPACK_IMPORTED_MODULE_0__[\"ReactDOM\"].render(wrapped, div);\n/* harmony default export */ __webpack_exports__[\"default\"] = (containerRef.current);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Zsb2F0aW5nL2NvbnRhaW5lci5qc3g/MTU2OSJdLCJuYW1lcyI6WyJGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwid2luZG93cyIsIm1pblkiLCJhcHBDb250YWluZXIiLCJET00iLCJxdWVyeSIsIm9mZnNldFRvcCIsInJlbmRlciIsIm1hcCIsIndpbmRvdyIsImNsb3NlIiwiYmluZCIsImlkIiwiY2hpbGRyZW4iLCJvcGVuIiwic2V0U3RhdGUiLCJmaWx0ZXIiLCJ3Iiwib25DbG9zZSIsInJvb3QiLCJfcm9vdCIsImNvbnRhaW5lciIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImJvZHkiLCJhcHBlbmQiLCJjb250YWluZXJSZWYiLCJjcmVhdGVSZWYiLCJ3cmFwcGVkIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiQXBwTGF5ZXJQcm92aWRlciIsImxheWVyQ29udGV4dCIsIlByb3ZpZGVyIiwidmFsdWUiLCJxdWVyeVNlbGVjdG9yIiwiZGl2IiwiUmVhY3RET00iLCJjdXJyZW50Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBRUE7O0FBRUEsTUFBTUEsdUJBQU4sU0FBc0NDLDZDQUFLLENBQUNDLFNBQTVDLENBQXNEO0FBRWxEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsYUFBTyxFQUFFO0FBQVYsS0FBYjtBQUNIOztBQUVELE1BQUlDLElBQUosR0FBVztBQUNQLFVBQU1DLFlBQVksR0FBR0MsMkNBQUcsQ0FBQ0MsS0FBSixDQUFXLGdDQUFYLENBQXJCO0FBQ0EsUUFBSUYsWUFBSixFQUFrQixPQUFPQSxZQUFZLENBQUNHLFNBQXBCO0FBQ2xCLFdBQU8sQ0FBUDtBQUNIOztBQUVEQyxRQUFNLEdBQUc7QUFDTCxXQUFPLEtBQUtQLEtBQUwsQ0FBV0MsT0FBWCxDQUFtQk8sR0FBbkIsQ0FBdUJDLE1BQU0sSUFDaEMsNERBQUMsK0NBQUQsZUFBb0JBLE1BQXBCO0FBQTRCLFdBQUssRUFBRSxLQUFLQyxLQUFMLENBQVdDLElBQVgsQ0FBZ0IsSUFBaEIsRUFBc0JGLE1BQU0sQ0FBQ0csRUFBN0IsQ0FBbkM7QUFBcUUsVUFBSSxFQUFFLEtBQUtWO0FBQWhGLFFBQ1NPLE1BQU0sQ0FBQ0ksUUFEaEIsQ0FERyxDQUFQO0FBS0g7O0FBRURDLE1BQUksQ0FBQ0wsTUFBRCxFQUFTO0FBQ1QsU0FBS00sUUFBTCxDQUFjO0FBQ1ZkLGFBQU8sRUFBRSxDQUFDLEdBQUcsS0FBS0QsS0FBTCxDQUFXQyxPQUFmLEVBQXdCUSxNQUF4QjtBQURDLEtBQWQ7QUFHSDs7QUFFREMsT0FBSyxDQUFDRSxFQUFELEVBQUs7QUFDTixTQUFLRyxRQUFMLENBQWM7QUFDVmQsYUFBTyxFQUFFLEtBQUtELEtBQUwsQ0FBV0MsT0FBWCxDQUFtQmUsTUFBbkIsQ0FBMEJDLENBQUMsSUFBSTtBQUNwQyxZQUFJQSxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBUixJQUFjSyxDQUFDLENBQUNDLE9BQXBCLEVBQTZCRCxDQUFDLENBQUNDLE9BQUY7QUFDN0IsZUFBT0QsQ0FBQyxDQUFDTCxFQUFGLElBQVFBLEVBQWY7QUFDSCxPQUhRO0FBREMsS0FBZDtBQU1IOztBQUVELGFBQVdBLEVBQVgsR0FBZ0I7QUFBQyxXQUFPLGtCQUFQO0FBQTJCOztBQUM1QyxhQUFXTyxJQUFYLEdBQWtCO0FBQ2QsUUFBSSxLQUFLQyxLQUFULEVBQWdCLE9BQU8sS0FBS0EsS0FBWjtBQUNoQixVQUFNQyxTQUFTLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixLQUF2QixDQUFsQjtBQUNBRixhQUFTLENBQUNULEVBQVYsR0FBZSxLQUFLQSxFQUFwQjtBQUNBVSxZQUFRLENBQUNFLElBQVQsQ0FBY0MsTUFBZCxDQUFxQkosU0FBckI7QUFDQSxXQUFPLEtBQUtELEtBQUwsR0FBYUMsU0FBcEI7QUFDSDs7QUEzQ2lEOztBQThDdEQsTUFBTUssWUFBWSxHQUFHOUIsNkNBQUssQ0FBQytCLFNBQU4sRUFBckI7QUFDQSxNQUFNTixTQUFTLEdBQUcsNERBQUMsdUJBQUQ7QUFBeUIsS0FBRyxFQUFFSztBQUE5QixFQUFsQjtBQUNBLE1BQU1FLE9BQU8sR0FBR2hDLDZDQUFLLENBQUMyQixhQUFOLENBQW9CTSxzREFBYyxDQUFDQyxVQUFmLENBQTBCLDJCQUExQixFQUF1REMsZ0JBQXZELEdBQTBFaEMsS0FBMUUsQ0FBZ0ZpQyxZQUFoRixDQUE2RkMsUUFBakgsRUFBMkg7QUFBQ0MsT0FBSyxFQUFFLENBQUNaLFFBQVEsQ0FBQ2EsYUFBVCxDQUF1QixxQ0FBdkIsQ0FBRDtBQUFSLENBQTNILEVBQXFNZCxTQUFyTSxDQUFoQjtBQUNBLE1BQU1lLEdBQUcsR0FBR2hDLDJDQUFHLENBQUNtQixhQUFKLENBQW1CLG1DQUFuQixDQUFaO0FBQ0FuQiwyQ0FBRyxDQUFDQyxLQUFKLENBQVUsWUFBVixFQUF3Qm9CLE1BQXhCLENBQStCVyxHQUEvQjtBQUNBQyxnREFBUSxDQUFDOUIsTUFBVCxDQUFnQnFCLE9BQWhCLEVBQXlCUSxHQUF6QjtBQUNlViwyRUFBWSxDQUFDWSxPQUE1QiIsImZpbGUiOiIuL3NyYy91aS9mbG9hdGluZy9jb250YWluZXIuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgUmVhY3RET00sIERPTSwgV2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3cgZnJvbSBcIi4vd2luZG93XCI7XHJcblxyXG5jbGFzcyBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt3aW5kb3dzOiBbXX07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1pblkoKSB7XHJcbiAgICAgICAgY29uc3QgYXBwQ29udGFpbmVyID0gRE9NLnF1ZXJ5KGAjYXBwLW1vdW50ID4gZGl2W2NsYXNzKj1cImFwcC1cImApO1xyXG4gICAgICAgIGlmIChhcHBDb250YWluZXIpIHJldHVybiBhcHBDb250YWluZXIub2Zmc2V0VG9wO1xyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS53aW5kb3dzLm1hcCh3aW5kb3cgPT5cclxuICAgICAgICAgICAgPEZsb2F0aW5nV2luZG93IHsuLi53aW5kb3d9IGNsb3NlPXt0aGlzLmNsb3NlLmJpbmQodGhpcywgd2luZG93LmlkKX0gbWluWT17dGhpcy5taW5ZfT5cclxuICAgICAgICAgICAgICAgICAgICB7d2luZG93LmNoaWxkcmVufVxyXG4gICAgICAgICAgICA8L0Zsb2F0aW5nV2luZG93PlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbih3aW5kb3cpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgd2luZG93czogWy4uLnRoaXMuc3RhdGUud2luZG93cywgd2luZG93XVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlKGlkKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHdpbmRvd3M6IHRoaXMuc3RhdGUud2luZG93cy5maWx0ZXIodyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAody5pZCA9PSBpZCAmJiB3Lm9uQ2xvc2UpIHcub25DbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHcuaWQgIT0gaWQ7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldCBpZCgpIHtyZXR1cm4gXCJmbG9hdGluZy13aW5kb3dzXCI7fVxyXG4gICAgc3RhdGljIGdldCByb290KCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yb290KSByZXR1cm4gdGhpcy5fcm9vdDtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIGNvbnRhaW5lci5pZCA9IHRoaXMuaWQ7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoY29udGFpbmVyKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdCA9IGNvbnRhaW5lcjtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3QgY29udGFpbmVyUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbmNvbnN0IGNvbnRhaW5lciA9IDxGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciByZWY9e2NvbnRhaW5lclJlZn0gLz47XHJcbmNvbnN0IHdyYXBwZWQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJBcHBSZWZlcmVuY2VQb3NpdGlvbkxheWVyXCIpLkFwcExheWVyUHJvdmlkZXIoKS5wcm9wcy5sYXllckNvbnRleHQuUHJvdmlkZXIsIHt2YWx1ZTogW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwLW1vdW50ID4gLmxheWVyQ29udGFpbmVyLXlxYUZjS1wiKV19LCBjb250YWluZXIpO1xyXG5jb25zdCBkaXYgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImZsb2F0aW5nLXdpbmRvd3MtbGF5ZXJcIj5gKTtcclxuRE9NLnF1ZXJ5KFwiI2FwcC1tb3VudFwiKS5hcHBlbmQoZGl2KTtcclxuUmVhY3RET00ucmVuZGVyKHdyYXBwZWQsIGRpdik7XHJcbmV4cG9ydCBkZWZhdWx0IGNvbnRhaW5lclJlZi5jdXJyZW50OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floating/container.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./window */ \"./src/ui/floating/window.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\nclass FloatingWindowContainer extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n windows: []\n };\n }\n\n get minY() {\n const appContainer = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].query(`#app-mount > div[class*=\"app-\"]`);\n if (appContainer) return appContainer.offsetTop;\n return 0;\n }\n\n render() {\n return this.state.windows.map(window => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_window__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _extends({}, window, {\n close: this.close.bind(this, window.id),\n minY: this.minY\n }), window.children));\n }\n\n open(window) {\n this.setState({\n windows: [...this.state.windows, window]\n });\n }\n\n close(id) {\n this.setState({\n windows: this.state.windows.filter(w => {\n if (w.id == id && w.onClose) w.onClose();\n return w.id != id;\n })\n });\n }\n\n static get id() {\n return \"floating-windows\";\n }\n\n static get root() {\n if (this._root) return this._root;\n const container = document.createElement(\"div\");\n container.id = this.id;\n document.body.append(container);\n return this._root = container;\n }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FloatingWindowContainer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Zsb2F0aW5nL2NvbnRhaW5lci5qc3g/MTU2OSJdLCJuYW1lcyI6WyJGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwid2luZG93cyIsIm1pblkiLCJhcHBDb250YWluZXIiLCJET00iLCJxdWVyeSIsIm9mZnNldFRvcCIsInJlbmRlciIsIm1hcCIsIndpbmRvdyIsImNsb3NlIiwiYmluZCIsImlkIiwiY2hpbGRyZW4iLCJvcGVuIiwic2V0U3RhdGUiLCJmaWx0ZXIiLCJ3Iiwib25DbG9zZSIsInJvb3QiLCJfcm9vdCIsImNvbnRhaW5lciIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImJvZHkiLCJhcHBlbmQiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFFQTs7QUFFQSxNQUFNQSx1QkFBTixTQUFzQ0MsNkNBQUssQ0FBQ0MsU0FBNUMsQ0FBc0Q7QUFFbERDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUFDQyxhQUFPLEVBQUU7QUFBVixLQUFiO0FBQ0g7O0FBRUQsTUFBSUMsSUFBSixHQUFXO0FBQ1AsVUFBTUMsWUFBWSxHQUFHQywyQ0FBRyxDQUFDQyxLQUFKLENBQVcsaUNBQVgsQ0FBckI7QUFDQSxRQUFJRixZQUFKLEVBQWtCLE9BQU9BLFlBQVksQ0FBQ0csU0FBcEI7QUFDbEIsV0FBTyxDQUFQO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFdBQU8sS0FBS1AsS0FBTCxDQUFXQyxPQUFYLENBQW1CTyxHQUFuQixDQUF1QkMsTUFBTSxpQkFDaEMsNERBQUMsK0NBQUQsZUFBb0JBLE1BQXBCO0FBQTRCLFdBQUssRUFBRSxLQUFLQyxLQUFMLENBQVdDLElBQVgsQ0FBZ0IsSUFBaEIsRUFBc0JGLE1BQU0sQ0FBQ0csRUFBN0IsQ0FBbkM7QUFBcUUsVUFBSSxFQUFFLEtBQUtWO0FBQWhGLFFBQ1NPLE1BQU0sQ0FBQ0ksUUFEaEIsQ0FERyxDQUFQO0FBS0g7O0FBRURDLE1BQUksQ0FBQ0wsTUFBRCxFQUFTO0FBQ1QsU0FBS00sUUFBTCxDQUFjO0FBQ1ZkLGFBQU8sRUFBRSxDQUFDLEdBQUcsS0FBS0QsS0FBTCxDQUFXQyxPQUFmLEVBQXdCUSxNQUF4QjtBQURDLEtBQWQ7QUFHSDs7QUFFREMsT0FBSyxDQUFDRSxFQUFELEVBQUs7QUFDTixTQUFLRyxRQUFMLENBQWM7QUFDVmQsYUFBTyxFQUFFLEtBQUtELEtBQUwsQ0FBV0MsT0FBWCxDQUFtQmUsTUFBbkIsQ0FBMEJDLENBQUMsSUFBSTtBQUNwQyxZQUFJQSxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBUixJQUFjSyxDQUFDLENBQUNDLE9BQXBCLEVBQTZCRCxDQUFDLENBQUNDLE9BQUY7QUFDN0IsZUFBT0QsQ0FBQyxDQUFDTCxFQUFGLElBQVFBLEVBQWY7QUFDSCxPQUhRO0FBREMsS0FBZDtBQU1IOztBQUVELGFBQVdBLEVBQVgsR0FBZ0I7QUFBQyxXQUFPLGtCQUFQO0FBQTJCOztBQUM1QyxhQUFXTyxJQUFYLEdBQWtCO0FBQ2QsUUFBSSxLQUFLQyxLQUFULEVBQWdCLE9BQU8sS0FBS0EsS0FBWjtBQUNoQixVQUFNQyxTQUFTLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixLQUF2QixDQUFsQjtBQUNBRixhQUFTLENBQUNULEVBQVYsR0FBZSxLQUFLQSxFQUFwQjtBQUNBVSxZQUFRLENBQUNFLElBQVQsQ0FBY0MsTUFBZCxDQUFxQkosU0FBckI7QUFDQSxXQUFPLEtBQUtELEtBQUwsR0FBYUMsU0FBcEI7QUFDSDs7QUEzQ2lEOztBQThDdkMxQixzRkFBZiIsImZpbGUiOiIuL3NyYy91aS9mbG9hdGluZy9jb250YWluZXIuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgRE9NfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IEZsb2F0aW5nV2luZG93IGZyb20gXCIuL3dpbmRvd1wiO1xyXG5cclxuY2xhc3MgRmxvYXRpbmdXaW5kb3dDb250YWluZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7d2luZG93czogW119O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtaW5ZKCkge1xyXG4gICAgICAgIGNvbnN0IGFwcENvbnRhaW5lciA9IERPTS5xdWVyeShgI2FwcC1tb3VudCA+IGRpdltjbGFzcyo9XCJhcHAtXCJdYCk7XHJcbiAgICAgICAgaWYgKGFwcENvbnRhaW5lcikgcmV0dXJuIGFwcENvbnRhaW5lci5vZmZzZXRUb3A7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLndpbmRvd3MubWFwKHdpbmRvdyA9PlxyXG4gICAgICAgICAgICA8RmxvYXRpbmdXaW5kb3cgey4uLndpbmRvd30gY2xvc2U9e3RoaXMuY2xvc2UuYmluZCh0aGlzLCB3aW5kb3cuaWQpfSBtaW5ZPXt0aGlzLm1pbll9PlxyXG4gICAgICAgICAgICAgICAgICAgIHt3aW5kb3cuY2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvRmxvYXRpbmdXaW5kb3c+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuKHdpbmRvdykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB3aW5kb3dzOiBbLi4udGhpcy5zdGF0ZS53aW5kb3dzLCB3aW5kb3ddXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoaWQpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgd2luZG93czogdGhpcy5zdGF0ZS53aW5kb3dzLmZpbHRlcih3ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh3LmlkID09IGlkICYmIHcub25DbG9zZSkgdy5vbkNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdy5pZCAhPSBpZDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IGlkKCkge3JldHVybiBcImZsb2F0aW5nLXdpbmRvd3NcIjt9XHJcbiAgICBzdGF0aWMgZ2V0IHJvb3QoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3QpIHJldHVybiB0aGlzLl9yb290O1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgY29udGFpbmVyLmlkID0gdGhpcy5pZDtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChjb250YWluZXIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yb290ID0gY29udGFpbmVyO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lcjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/floating/container.jsx\n"); /***/ }), @@ -767,7 +767,19 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modu /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_screen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../structs/screen */ \"./src/structs/screen.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/fullscreen */ \"./src/ui/icons/fullscreen.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n\n\n\n\n // const Draggable = WebpackModules.getByDisplayName(\"Draggable\");\n// {\n// \"dragAnywhere\": true,\n// \"className\": \"pictureInPictureWindow-1B5qSe\",\n// \"maxX\": 1969,\n// \"maxY\": this.maxY,\n// \"onDragStart\": \"Æ’ () {}\",\n// \"onDrag\": \"Æ’ () {}\",\n// \"onDragEnd\": \"Æ’ () {}\",\n// \"children\": \"
\",\n// \"initialX\": 0,\n// \"initialY\": 0\n// }\n\nclass FloatingWindow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false\n };\n this.offX = 0;\n this.offY = 0;\n this.maxX = this.props.maxX || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width;\n this.maxY = this.props.maxY || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height;\n this.minX = this.props.minX || 0;\n this.minY = this.props.minY || 0;\n this.titlebar = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.window = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.close = this.close.bind(this);\n this.maximize = this.maximize.bind(this);\n this.onDrag = this.onDrag.bind(this);\n this.onDragStart = this.onDragStart.bind(this);\n this.onDragStop = this.onDragStop.bind(this);\n this.onResizeStart = this.onResizeStart.bind(this);\n }\n\n componentDidMount() {\n this.window.current.addEventListener(\"mousedown\", this.onResizeStart, false);\n this.titlebar.current.addEventListener(\"mousedown\", this.onDragStart, false);\n document.addEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n onResizeStart() {\n this.currentWidth = this.window.current.offsetWidth;\n this.currentHeight = this.window.current.offsetHeight;\n }\n\n onDragStop() {\n document.removeEventListener(\"mousemove\", this.onDrag, true);\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n\n if (width != this.currentWidth || height != this.currentHeight) {\n if (this.props.onResize) this.props.onResize();\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n if (left + width >= this.maxX) this.window.current.style.width = this.maxX - left + \"px\";\n if (top + height >= this.maxY) this.window.current.style.height = this.maxY - top + \"px\";\n }\n\n this.currentWidth = width;\n this.currentHeight = height;\n }\n\n onDragStart(e) {\n const div = this.window.current;\n this.offY = e.clientY - parseInt(div.offsetTop);\n this.offX = e.clientX - parseInt(div.offsetLeft);\n document.addEventListener(\"mousemove\", this.onDrag, true);\n }\n\n onDrag(e) {\n const div = this.window.current;\n let newTop = e.clientY - this.offY;\n if (newTop <= this.minY) newTop = this.minY;\n if (newTop + this.currentHeight >= this.maxY) newTop = this.maxY - this.currentHeight;\n let newLeft = e.clientX - this.offX;\n if (newLeft <= this.minX) newLeft = this.minX;\n if (newLeft + this.currentWidth >= this.maxX) newLeft = this.maxX - this.currentWidth;\n div.style.top = newTop + \"px\";\n div.style.left = newLeft + \"px\";\n }\n\n componentWillUnmount() {\n this.titlebar.current.removeEventListener(\"mousedown\", this.onDragStart, false);\n document.removeEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n render() {\n const top = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height / 2 - this.props.height / 2 : this.props.top;\n const left = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width / 2 - this.props.width / 2 : this.props.left; // console.log(top, left);\n\n const className = `floating-window${` ${this.props.className}` || \"\"}${this.props.resizable ? \" resizable\" : \"\"}${this.state.modalOpen ? \" modal-open\" : \"\"}`;\n const styles = {\n height: this.props.height,\n width: this.props.width,\n left: left || 0,\n top: top || 0\n };\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: className,\n ref: this.window,\n style: styles\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-titlebar\",\n ref: this.titlebar\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"title\"\n }, this.props.title), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-buttons\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button maximize-button\",\n onClick: this.maximize\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n })), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button close-button\",\n onClick: this.close\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)))), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-content\"\n }, this.props.children));\n }\n\n async close() {\n let shouldClose = true;\n const confirmClose = typeof this.props.confirmClose == \"function\" ? this.props.confirmClose() : this.props.confirmClose;\n\n if (confirmClose) {\n this.setState({\n modalOpen: true\n });\n shouldClose = await this.confirmClose();\n this.setState({\n modalOpen: false\n });\n }\n\n if (this.props.close && shouldClose) this.props.close();\n }\n\n maximize() {\n this.window.current.style.width = \"100%\";\n this.window.current.style.height = \"100%\";\n if (this.props.onResize) this.props.onResize();\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n const right = left + width;\n const bottom = top + height;\n if (bottom > this.maxY) this.window.current.style.top = this.maxY - height + \"px\";\n if (right > this.maxX) this.window.current.style.left = this.maxX - width + \"px\";\n }\n\n confirmClose() {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, this.props.confirmationText, {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.close,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Zsb2F0aW5nL3dpbmRvdy5qc3g/Y2YzZCJdLCJuYW1lcyI6WyJGbG9hdGluZ1dpbmRvdyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwibW9kYWxPcGVuIiwib2ZmWCIsIm9mZlkiLCJtYXhYIiwiU2NyZWVuIiwid2lkdGgiLCJtYXhZIiwiaGVpZ2h0IiwibWluWCIsIm1pblkiLCJ0aXRsZWJhciIsImNyZWF0ZVJlZiIsIndpbmRvdyIsImNsb3NlIiwiYmluZCIsIm1heGltaXplIiwib25EcmFnIiwib25EcmFnU3RhcnQiLCJvbkRyYWdTdG9wIiwib25SZXNpemVTdGFydCIsImNvbXBvbmVudERpZE1vdW50IiwiY3VycmVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJkb2N1bWVudCIsImN1cnJlbnRXaWR0aCIsIm9mZnNldFdpZHRoIiwiY3VycmVudEhlaWdodCIsIm9mZnNldEhlaWdodCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblJlc2l6ZSIsImxlZnQiLCJwYXJzZUludCIsInN0eWxlIiwidG9wIiwiZSIsImRpdiIsImNsaWVudFkiLCJvZmZzZXRUb3AiLCJjbGllbnRYIiwib2Zmc2V0TGVmdCIsIm5ld1RvcCIsIm5ld0xlZnQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbmRlciIsImNlbnRlciIsImNsYXNzTmFtZSIsInJlc2l6YWJsZSIsInN0eWxlcyIsImlkIiwidGl0bGUiLCJjaGlsZHJlbiIsInNob3VsZENsb3NlIiwiY29uZmlybUNsb3NlIiwic2V0U3RhdGUiLCJyaWdodCIsImJvdHRvbSIsIlByb21pc2UiLCJyZXNvbHZlIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiU3RyaW5ncyIsImNvbmZpcm1BY3Rpb24iLCJjb25maXJtYXRpb25UZXh0IiwiZGFuZ2VyIiwiY29uZmlybVRleHQiLCJvbkNvbmZpcm0iLCJvbkNhbmNlbCJd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RCIsImZpbGUiOiIuL3NyYy91aS9mbG9hdGluZy93aW5kb3cuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBTY3JlZW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvc2NyZWVuXCI7XHJcbmltcG9ydCBDbG9zZUJ1dHRvbiBmcm9tIFwiLi4vaWNvbnMvY2xvc2VcIjtcclxuaW1wb3J0IE1heGltaXplSWNvbiBmcm9tIFwiLi4vaWNvbnMvZnVsbHNjcmVlblwiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuXHJcbi8vIGNvbnN0IERyYWdnYWJsZSA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJEcmFnZ2FibGVcIik7XHJcbi8vIHtcclxuLy8gICAgIFwiZHJhZ0FueXdoZXJlXCI6IHRydWUsXHJcbi8vICAgICBcImNsYXNzTmFtZVwiOiBcInBpY3R1cmVJblBpY3R1cmVXaW5kb3ctMUI1cVNlXCIsXHJcbi8vICAgICBcIm1heFhcIjogMTk2OSxcclxuLy8gICAgIFwibWF4WVwiOiB0aGlzLm1heFksXHJcbi8vICAgICBcIm9uRHJhZ1N0YXJ0XCI6IFwixpIgKCkge31cIixcclxuLy8gICAgIFwib25EcmFnXCI6IFwixpIgKCkge31cIixcclxuLy8gICAgIFwib25EcmFnRW5kXCI6IFwixpIgKCkge31cIixcclxuLy8gICAgIFwiY2hpbGRyZW5cIjogXCI8ZGl2IC8+XCIsXHJcbi8vICAgICBcImluaXRpYWxYXCI6IDAsXHJcbi8vICAgICBcImluaXRpYWxZXCI6IDBcclxuLy8gICB9XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGbG9hdGluZ1dpbmRvdyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcblxyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7bW9kYWxPcGVuOiBmYWxzZX07XHJcblxyXG4gICAgICAgIHRoaXMub2ZmWCA9IDA7XHJcbiAgICAgICAgdGhpcy5vZmZZID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5tYXhYID0gdGhpcy5wcm9wcy5tYXhYIHx8IFNjcmVlbi53aWR0aDtcclxuICAgICAgICB0aGlzLm1heFkgPSB0aGlzLnByb3BzLm1heFkgfHwgU2NyZWVuLmhlaWdodDtcclxuICAgICAgICB0aGlzLm1pblggPSB0aGlzLnByb3BzLm1pblggfHwgMDtcclxuICAgICAgICB0aGlzLm1pblkgPSB0aGlzLnByb3BzLm1pblkgfHwgMDtcclxuXHJcbiAgICAgICAgdGhpcy50aXRsZWJhciA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIHRoaXMud2luZG93ID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcblxyXG4gICAgICAgIHRoaXMuY2xvc2UgPSB0aGlzLmNsb3NlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5tYXhpbWl6ZSA9IHRoaXMubWF4aW1pemUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uRHJhZyA9IHRoaXMub25EcmFnLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkRyYWdTdGFydCA9IHRoaXMub25EcmFnU3RhcnQuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uRHJhZ1N0b3AgPSB0aGlzLm9uRHJhZ1N0b3AuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uUmVzaXplU3RhcnQgPSB0aGlzLm9uUmVzaXplU3RhcnQuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vblJlc2l6ZVN0YXJ0LCBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy50aXRsZWJhci5jdXJyZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbkRyYWdTdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25EcmFnU3RvcCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUmVzaXplU3RhcnQoKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V2lkdGggPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEhlaWdodCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ1N0b3AoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uRHJhZywgdHJ1ZSk7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIGlmICh3aWR0aCAhPSB0aGlzLmN1cnJlbnRXaWR0aCB8fCBoZWlnaHQgIT0gdGhpcy5jdXJyZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzaXplKSB0aGlzLnByb3BzLm9uUmVzaXplKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgICAgICAgICBjb25zdCB0b3AgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLnRvcCk7XHJcbiAgICAgICAgICAgIGlmIChsZWZ0ICsgd2lkdGggPj0gdGhpcy5tYXhYKSB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLndpZHRoID0gKHRoaXMubWF4WCAtIGxlZnQpICsgXCJweFwiO1xyXG4gICAgICAgICAgICBpZiAodG9wICsgaGVpZ2h0ID49IHRoaXMubWF4WSkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5oZWlnaHQgPSAodGhpcy5tYXhZIC0gdG9wKSArIFwicHhcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmFnU3RhcnQoZSkge1xyXG4gICAgICAgIGNvbnN0IGRpdiA9IHRoaXMud2luZG93LmN1cnJlbnQ7XHJcbiAgICAgICAgdGhpcy5vZmZZID0gZS5jbGllbnRZIC0gcGFyc2VJbnQoZGl2Lm9mZnNldFRvcCk7XHJcbiAgICAgICAgdGhpcy5vZmZYID0gZS5jbGllbnRYIC0gcGFyc2VJbnQoZGl2Lm9mZnNldExlZnQpO1xyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbkRyYWcsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZyhlKSB7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gdGhpcy53aW5kb3cuY3VycmVudDtcclxuICAgICAgICBsZXQgbmV3VG9wID0gKGUuY2xpZW50WSAtIHRoaXMub2ZmWSk7XHJcbiAgICAgICAgaWYgKG5ld1RvcCA8PSB0aGlzLm1pblkpIG5ld1RvcCA9IHRoaXMubWluWTtcclxuICAgICAgICBpZiAobmV3VG9wICsgdGhpcy5jdXJyZW50SGVpZ2h0ID49IHRoaXMubWF4WSkgbmV3VG9wID0gdGhpcy5tYXhZIC0gdGhpcy5jdXJyZW50SGVpZ2h0O1xyXG5cclxuICAgICAgICBsZXQgbmV3TGVmdCA9IChlLmNsaWVudFggLSB0aGlzLm9mZlgpO1xyXG4gICAgICAgIGlmIChuZXdMZWZ0IDw9IHRoaXMubWluWCkgbmV3TGVmdCA9IHRoaXMubWluWDtcclxuICAgICAgICBpZiAobmV3TGVmdCArIHRoaXMuY3VycmVudFdpZHRoID49IHRoaXMubWF4WCkgbmV3TGVmdCA9IHRoaXMubWF4WCAtIHRoaXMuY3VycmVudFdpZHRoO1xyXG5cclxuICAgICAgICBkaXYuc3R5bGUudG9wID0gbmV3VG9wICsgXCJweFwiO1xyXG4gICAgICAgIGRpdi5zdHlsZS5sZWZ0ID0gbmV3TGVmdCArIFwicHhcIjtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgICAgICB0aGlzLnRpdGxlYmFyLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLm9uRHJhZ1N0YXJ0LCBmYWxzZSk7XHJcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbkRyYWdTdG9wLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IHRoaXMucHJvcHMuY2VudGVyID8gKFNjcmVlbi5oZWlnaHQgLyAyKSAtICh0aGlzLnByb3BzLmhlaWdodCAvIDIpIDogdGhpcy5wcm9wcy50b3A7XHJcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMucHJvcHMuY2VudGVyID8gKFNjcmVlbi53aWR0aCAvIDIpIC0gKHRoaXMucHJvcHMud2lkdGggLyAyKSA6IHRoaXMucHJvcHMubGVmdCA7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codG9wLCBsZWZ0KTtcclxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBgZmxvYXRpbmctd2luZG93JHtgICR7dGhpcy5wcm9wcy5jbGFzc05hbWV9YCB8fCBcIlwifSR7dGhpcy5wcm9wcy5yZXNpemFibGUgPyBcIiByZXNpemFibGVcIiA6IFwiXCJ9JHt0aGlzLnN0YXRlLm1vZGFsT3BlbiA/IFwiIG1vZGFsLW9wZW5cIiA6IFwiXCJ9YDtcclxuICAgICAgICBjb25zdCBzdHlsZXMgPSB7aGVpZ2h0OiB0aGlzLnByb3BzLmhlaWdodCwgd2lkdGg6IHRoaXMucHJvcHMud2lkdGgsIGxlZnQ6IGxlZnQgfHwgMCwgdG9wOiB0b3AgfHwgMH07XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgaWQ9e3RoaXMucHJvcHMuaWR9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSByZWY9e3RoaXMud2luZG93fSBzdHlsZT17c3R5bGVzfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXdpbmRvdy10aXRsZWJhclwiIHJlZj17dGhpcy50aXRsZWJhcn0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRpdGxlXCI+e3RoaXMucHJvcHMudGl0bGV9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXdpbmRvdy1idXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ1dHRvbiBtYXhpbWl6ZS1idXR0b25cIiBvbkNsaWNrPXt0aGlzLm1heGltaXplfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWF4aW1pemVJY29uIHNpemU9XCIxOHB4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b24gY2xvc2UtYnV0dG9uXCIgb25DbGljaz17dGhpcy5jbG9zZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENsb3NlQnV0dG9uIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy13aW5kb3ctY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjbG9zZSgpIHtcclxuICAgICAgICBsZXQgc2hvdWxkQ2xvc2UgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGNvbmZpcm1DbG9zZSA9IHR5cGVvZih0aGlzLnByb3BzLmNvbmZpcm1DbG9zZSkgPT0gXCJmdW5jdGlvblwiID8gdGhpcy5wcm9wcy5jb25maXJtQ2xvc2UoKSA6IHRoaXMucHJvcHMuY29uZmlybUNsb3NlO1xyXG4gICAgICAgIGlmIChjb25maXJtQ2xvc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7bW9kYWxPcGVuOiB0cnVlfSk7XHJcbiAgICAgICAgICAgIHNob3VsZENsb3NlID0gYXdhaXQgdGhpcy5jb25maXJtQ2xvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7bW9kYWxPcGVuOiBmYWxzZX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5jbG9zZSAmJiBzaG91bGRDbG9zZSkgdGhpcy5wcm9wcy5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG1heGltaXplKCkge1xyXG4gICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUud2lkdGggPSBcIjEwMCVcIjtcclxuICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzaXplKSB0aGlzLnByb3BzLm9uUmVzaXplKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5sZWZ0KTtcclxuICAgICAgICBjb25zdCB0b3AgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLnRvcCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gbGVmdCArIHdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IHRvcCArIGhlaWdodDtcclxuXHJcbiAgICAgICAgaWYgKGJvdHRvbSA+IHRoaXMubWF4WSkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS50b3AgPSAodGhpcy5tYXhZIC0gaGVpZ2h0KSArIFwicHhcIjtcclxuICAgICAgICBpZiAocmlnaHQgPiB0aGlzLm1heFgpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCA9ICh0aGlzLm1heFggLSB3aWR0aCkgKyBcInB4XCI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybUNsb3NlKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5jb25maXJtQWN0aW9uLCB0aGlzLnByb3BzLmNvbmZpcm1hdGlvblRleHQsIHtcclxuICAgICAgICAgICAgICAgIGRhbmdlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1UZXh0OiBTdHJpbmdzLk1vZGFscy5jbG9zZSxcclxuICAgICAgICAgICAgICAgIG9uQ29uZmlybTogKCkgPT4ge3Jlc29sdmUodHJ1ZSk7fSxcclxuICAgICAgICAgICAgICAgIG9uQ2FuY2VsOiAoKSA9PiB7cmVzb2x2ZShmYWxzZSk7fVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floating/window.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_screen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../structs/screen */ \"./src/structs/screen.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/fullscreen */ \"./src/ui/icons/fullscreen.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n\n\n\n\n // const Draggable = WebpackModules.getByDisplayName(\"Draggable\");\n// {\n// \"dragAnywhere\": true,\n// \"className\": \"pictureInPictureWindow-1B5qSe\",\n// \"maxX\": 1969,\n// \"maxY\": this.maxY,\n// \"onDragStart\": \"Æ’ () {}\",\n// \"onDrag\": \"Æ’ () {}\",\n// \"onDragEnd\": \"Æ’ () {}\",\n// \"children\": \"
\",\n// \"initialX\": 0,\n// \"initialY\": 0\n// }\n\nclass FloatingWindow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false\n };\n this.offX = 0;\n this.offY = 0;\n this.maxX = this.props.maxX || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width;\n this.maxY = this.props.maxY || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height;\n this.minX = this.props.minX || 0;\n this.minY = this.props.minY || 0;\n this.titlebar = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.window = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.close = this.close.bind(this);\n this.maximize = this.maximize.bind(this);\n this.onDrag = this.onDrag.bind(this);\n this.onDragStart = this.onDragStart.bind(this);\n this.onDragStop = this.onDragStop.bind(this);\n this.onResizeStart = this.onResizeStart.bind(this);\n }\n\n componentDidMount() {\n this.window.current.addEventListener(\"mousedown\", this.onResizeStart, false);\n this.titlebar.current.addEventListener(\"mousedown\", this.onDragStart, false);\n document.addEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n onResizeStart() {\n this.currentWidth = this.window.current.offsetWidth;\n this.currentHeight = this.window.current.offsetHeight;\n }\n\n onDragStop() {\n document.removeEventListener(\"mousemove\", this.onDrag, true);\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n\n if (width != this.currentWidth || height != this.currentHeight) {\n if (this.props.onResize) this.props.onResize();\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n if (left + width >= this.maxX) this.window.current.style.width = this.maxX - left + \"px\";\n if (top + height >= this.maxY) this.window.current.style.height = this.maxY - top + \"px\";\n }\n\n this.currentWidth = width;\n this.currentHeight = height;\n }\n\n onDragStart(e) {\n const div = this.window.current;\n this.offY = e.clientY - parseInt(div.offsetTop);\n this.offX = e.clientX - parseInt(div.offsetLeft);\n document.addEventListener(\"mousemove\", this.onDrag, true);\n }\n\n onDrag(e) {\n const div = this.window.current;\n let newTop = e.clientY - this.offY;\n if (newTop <= this.minY) newTop = this.minY;\n if (newTop + this.currentHeight >= this.maxY) newTop = this.maxY - this.currentHeight;\n let newLeft = e.clientX - this.offX;\n if (newLeft <= this.minX) newLeft = this.minX;\n if (newLeft + this.currentWidth >= this.maxX) newLeft = this.maxX - this.currentWidth;\n div.style.top = newTop + \"px\";\n div.style.left = newLeft + \"px\";\n }\n\n componentWillUnmount() {\n this.titlebar.current.removeEventListener(\"mousedown\", this.onDragStart, false);\n document.removeEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n render() {\n const top = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height / 2 - this.props.height / 2 : this.props.top;\n const left = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width / 2 - this.props.width / 2 : this.props.left; // console.log(top, left);\n\n const className = `floating-window${` ${this.props.className}` || \"\"}${this.props.resizable ? \" resizable\" : \"\"}${this.state.modalOpen ? \" modal-open\" : \"\"}`;\n const styles = {\n height: this.props.height,\n width: this.props.width,\n left: left || 0,\n top: top || 0\n };\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: className,\n ref: this.window,\n style: styles\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-titlebar\",\n ref: this.titlebar\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"title\"\n }, this.props.title), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-buttons\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button maximize-button\",\n onClick: this.maximize\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button close-button\",\n onClick: this.close\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-content\"\n }, this.props.children));\n }\n\n maximize() {\n this.window.current.style.width = \"100%\";\n this.window.current.style.height = \"100%\";\n if (this.props.onResize) this.props.onResize();\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n const right = left + width;\n const bottom = top + height; // Prevent expanding off the bottom and right and readjust position\n\n if (bottom > this.maxY) this.window.current.style.top = this.maxY - height + \"px\";\n if (right > this.maxX) this.window.current.style.left = this.maxX - width + \"px\";\n const newLeft = parseInt(this.window.current.style.left);\n const newTop = parseInt(this.window.current.style.top); // For small screens it's possible this pushes us off the other direction... we need to readjust size\n\n if (newTop < this.minY) {\n const difference = this.minY - newTop;\n this.window.current.style.top = this.minY + \"px\";\n this.window.current.style.height = height - difference + \"px\";\n }\n\n if (newLeft < this.minX) {\n const difference = this.minX - newLeft;\n this.window.current.style.left = this.minX + \"px\";\n this.window.current.style.height = width - difference + \"px\";\n }\n }\n\n async close() {\n let shouldClose = true;\n const confirmClose = typeof this.props.confirmClose == \"function\" ? this.props.confirmClose() : this.props.confirmClose;\n\n if (confirmClose) {\n this.setState({\n modalOpen: true\n });\n shouldClose = await this.confirmClose();\n this.setState({\n modalOpen: false\n });\n }\n\n if (this.props.close && shouldClose) this.props.close();\n }\n\n confirmClose() {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, this.props.confirmationText, {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.close,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Zsb2F0aW5nL3dpbmRvdy5qc3g/Y2YzZCJdLCJuYW1lcyI6WyJGbG9hdGluZ1dpbmRvdyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwibW9kYWxPcGVuIiwib2ZmWCIsIm9mZlkiLCJtYXhYIiwiU2NyZWVuIiwid2lkdGgiLCJtYXhZIiwiaGVpZ2h0IiwibWluWCIsIm1pblkiLCJ0aXRsZWJhciIsImNyZWF0ZVJlZiIsIndpbmRvdyIsImNsb3NlIiwiYmluZCIsIm1heGltaXplIiwib25EcmFnIiwib25EcmFnU3RhcnQiLCJvbkRyYWdTdG9wIiwib25SZXNpemVTdGFydCIsImNvbXBvbmVudERpZE1vdW50IiwiY3VycmVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJkb2N1bWVudCIsImN1cnJlbnRXaWR0aCIsIm9mZnNldFdpZHRoIiwiY3VycmVudEhlaWdodCIsIm9mZnNldEhlaWdodCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblJlc2l6ZSIsImxlZnQiLCJwYXJzZUludCIsInN0eWxlIiwidG9wIiwiZSIsImRpdiIsImNsaWVudFkiLCJvZmZzZXRUb3AiLCJjbGllbnRYIiwib2Zmc2V0TGVmdCIsIm5ld1RvcCIsIm5ld0xlZnQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbmRlciIsImNlbnRlciIsImNsYXNzTmFtZSIsInJlc2l6YWJsZSIsInN0eWxlcyIsImlkIiwidGl0bGUiLCJjaGlsZHJlbiIsInJpZ2h0IiwiYm90dG9tIiwiZGlmZmVyZW5jZSIsInNob3VsZENsb3NlIiwiY29uZmlybUNsb3NlIiwic2V0U3RhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsIk1vZGFscyIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsIlN0cmluZ3MiLCJjb25maXJtQWN0aW9uIiwiY29uZmlybWF0aW9uVGV4dCIsImRhbmdlciIsImNvbmZpcm1UZXh0Iiwib25Db25maXJt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TUMsWUFBWSxHQUFHLE9BQU8sS0FBS3pELEtBQUwsQ0FBV3lELFlBQWxCLElBQW1DLFVBQW5DLEdBQWdELEtBQUt6RCxLQUFMLENBQVd5RCxZQUFYLEVBQWhELEdBQTRFLEtBQUt6RCxLQUFMLENBQVd5RCxZQUE1Rzs7QUFDQSxRQUFJQSxZQUFKLEVBQWtCO0FBQ2QsV0FBS0MsUUFBTCxDQUFjO0FBQUN4RCxpQkFBUyxFQUFFO0FBQVosT0FBZDtBQUNBc0QsaUJBQVcsR0FBRyxNQUFNLEtBQUtDLFlBQUwsRUFBcEI7QUFDQSxXQUFLQyxRQUFMLENBQWM7QUFBQ3hELGlCQUFTLEVBQUU7QUFBWixPQUFkO0FBQ0g7O0FBQ0QsUUFBSSxLQUFLRixLQUFMLENBQVdlLEtBQVgsSUFBb0J5QyxXQUF4QixFQUFxQyxLQUFLeEQsS0FBTCxDQUFXZSxLQUFYO0FBQ3hDOztBQUVEMEMsY0FBWSxHQUFHO0FBQ1gsV0FBTyxJQUFJRSxPQUFKLENBQVlDLE9BQU8sSUFBSTtBQUMxQkMscURBQU0sQ0FBQ0MscUJBQVAsQ0FBNkJDLCtDQUFPLENBQUNGLE1BQVIsQ0FBZUcsYUFBNUMsRUFBMkQsS0FBS2hFLEtBQUwsQ0FBV2lFLGdCQUF0RSxFQUF3RjtBQUNwRkMsY0FBTSxFQUFFLElBRDRFO0FBRXBGQyxtQkFBVyxFQUFFSiwrQ0FBTyxDQUFDRixNQUFSLENBQWU5QyxLQUZ3RDtBQUdwRnFELGlCQUFTLEVBQUUsTUFBTTtBQUFDUixpQkFBTyxDQUFDLElBQUQsQ0FBUDtBQUFlLFNBSG1EO0FBSXBGUyxnQkFBUSxFQUFFLE1BQU07QUFBQ1QsaUJBQU8sQ0FBQyxLQUFELENBQVA7QUFBZ0I7QUFKbUQsT0FBeEY7QUFNSCxLQVBNLENBQVA7QUFRSDs7QUEzSnVEIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nL3dpbmRvdy5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IFNjcmVlbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9zY3JlZW5cIjtcclxuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gXCIuLi9pY29ucy9jbG9zZVwiO1xyXG5pbXBvcnQgTWF4aW1pemVJY29uIGZyb20gXCIuLi9pY29ucy9mdWxsc2NyZWVuXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL21vZGFsc1wiO1xyXG5cclxuLy8gY29uc3QgRHJhZ2dhYmxlID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIkRyYWdnYWJsZVwiKTtcclxuLy8ge1xyXG4vLyAgICAgXCJkcmFnQW55d2hlcmVcIjogdHJ1ZSxcclxuLy8gICAgIFwiY2xhc3NOYW1lXCI6IFwicGljdHVyZUluUGljdHVyZVdpbmRvdy0xQjVxU2VcIixcclxuLy8gICAgIFwibWF4WFwiOiAxOTY5LFxyXG4vLyAgICAgXCJtYXhZXCI6IHRoaXMubWF4WSxcclxuLy8gICAgIFwib25EcmFnU3RhcnRcIjogXCLGkiAoKSB7fVwiLFxyXG4vLyAgICAgXCJvbkRyYWdcIjogXCLGkiAoKSB7fVwiLFxyXG4vLyAgICAgXCJvbkRyYWdFbmRcIjogXCLGkiAoKSB7fVwiLFxyXG4vLyAgICAgXCJjaGlsZHJlblwiOiBcIjxkaXYgLz5cIixcclxuLy8gICAgIFwiaW5pdGlhbFhcIjogMCxcclxuLy8gICAgIFwiaW5pdGlhbFlcIjogMFxyXG4vLyAgIH1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsb2F0aW5nV2luZG93IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHttb2RhbE9wZW46IGZhbHNlfTtcclxuXHJcbiAgICAgICAgdGhpcy5vZmZYID0gMDtcclxuICAgICAgICB0aGlzLm9mZlkgPSAwO1xyXG5cclxuICAgICAgICB0aGlzLm1heFggPSB0aGlzLnByb3BzLm1heFggfHwgU2NyZWVuLndpZHRoO1xyXG4gICAgICAgIHRoaXMubWF4WSA9IHRoaXMucHJvcHMubWF4WSB8fCBTY3JlZW4uaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMubWluWCA9IHRoaXMucHJvcHMubWluWCB8fCAwO1xyXG4gICAgICAgIHRoaXMubWluWSA9IHRoaXMucHJvcHMubWluWSB8fCAwO1xyXG5cclxuICAgICAgICB0aGlzLnRpdGxlYmFyID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy53aW5kb3cgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuXHJcbiAgICAgICAgdGhpcy5jbG9zZSA9IHRoaXMuY2xvc2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm1heGltaXplID0gdGhpcy5tYXhpbWl6ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25EcmFnID0gdGhpcy5vbkRyYWcuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uRHJhZ1N0YXJ0ID0gdGhpcy5vbkRyYWdTdGFydC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25EcmFnU3RvcCA9IHRoaXMub25EcmFnU3RvcC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25SZXNpemVTdGFydCA9IHRoaXMub25SZXNpemVTdGFydC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLm9uUmVzaXplU3RhcnQsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLnRpdGxlYmFyLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLm9uRHJhZ1N0YXJ0LCBmYWxzZSk7XHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbkRyYWdTdG9wLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25SZXNpemVTdGFydCgpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRXaWR0aCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmFnU3RvcCgpIHtcclxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25EcmFnLCB0cnVlKTtcclxuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgaWYgKHdpZHRoICE9IHRoaXMuY3VycmVudFdpZHRoIHx8IGhlaWdodCAhPSB0aGlzLmN1cnJlbnRIZWlnaHQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNpemUpIHRoaXMucHJvcHMub25SZXNpemUoKTtcclxuICAgICAgICAgICAgY29uc3QgbGVmdCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuICAgICAgICAgICAgaWYgKGxlZnQgKyB3aWR0aCA+PSB0aGlzLm1heFgpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUud2lkdGggPSAodGhpcy5tYXhYIC0gbGVmdCkgKyBcInB4XCI7XHJcbiAgICAgICAgICAgIGlmICh0b3AgKyBoZWlnaHQgPj0gdGhpcy5tYXhZKSB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmhlaWdodCA9ICh0aGlzLm1heFkgLSB0b3ApICsgXCJweFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRXaWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEhlaWdodCA9IGhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdTdGFydChlKSB7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gdGhpcy53aW5kb3cuY3VycmVudDtcclxuICAgICAgICB0aGlzLm9mZlkgPSBlLmNsaWVudFkgLSBwYXJzZUludChkaXYub2Zmc2V0VG9wKTtcclxuICAgICAgICB0aGlzLm9mZlggPSBlLmNsaWVudFggLSBwYXJzZUludChkaXYub2Zmc2V0TGVmdCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uRHJhZywgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmFnKGUpIHtcclxuICAgICAgICBjb25zdCBkaXYgPSB0aGlzLndpbmRvdy5jdXJyZW50O1xyXG4gICAgICAgIGxldCBuZXdUb3AgPSAoZS5jbGllbnRZIC0gdGhpcy5vZmZZKTtcclxuICAgICAgICBpZiAobmV3VG9wIDw9IHRoaXMubWluWSkgbmV3VG9wID0gdGhpcy5taW5ZO1xyXG4gICAgICAgIGlmIChuZXdUb3AgKyB0aGlzLmN1cnJlbnRIZWlnaHQgPj0gdGhpcy5tYXhZKSBuZXdUb3AgPSB0aGlzLm1heFkgLSB0aGlzLmN1cnJlbnRIZWlnaHQ7XHJcblxyXG4gICAgICAgIGxldCBuZXdMZWZ0ID0gKGUuY2xpZW50WCAtIHRoaXMub2ZmWCk7XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgPD0gdGhpcy5taW5YKSBuZXdMZWZ0ID0gdGhpcy5taW5YO1xyXG4gICAgICAgIGlmIChuZXdMZWZ0ICsgdGhpcy5jdXJyZW50V2lkdGggPj0gdGhpcy5tYXhYKSBuZXdMZWZ0ID0gdGhpcy5tYXhYIC0gdGhpcy5jdXJyZW50V2lkdGg7XHJcblxyXG4gICAgICAgIGRpdi5zdHlsZS50b3AgPSBuZXdUb3AgKyBcInB4XCI7XHJcbiAgICAgICAgZGl2LnN0eWxlLmxlZnQgPSBuZXdMZWZ0ICsgXCJweFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgIHRoaXMudGl0bGViYXIuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25EcmFnU3RhcnQsIGZhbHNlKTtcclxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLm9uRHJhZ1N0b3AsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgdG9wID0gdGhpcy5wcm9wcy5jZW50ZXIgPyAoU2NyZWVuLmhlaWdodCAvIDIpIC0gKHRoaXMucHJvcHMuaGVpZ2h0IC8gMikgOiB0aGlzLnByb3BzLnRvcDtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy5wcm9wcy5jZW50ZXIgPyAoU2NyZWVuLndpZHRoIC8gMikgLSAodGhpcy5wcm9wcy53aWR0aCAvIDIpIDogdGhpcy5wcm9wcy5sZWZ0IDtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0b3AsIGxlZnQpO1xyXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGBmbG9hdGluZy13aW5kb3cke2AgJHt0aGlzLnByb3BzLmNsYXNzTmFtZX1gIHx8IFwiXCJ9JHt0aGlzLnByb3BzLnJlc2l6YWJsZSA/IFwiIHJlc2l6YWJsZVwiIDogXCJcIn0ke3RoaXMuc3RhdGUubW9kYWxPcGVuID8gXCIgbW9kYWwtb3BlblwiIDogXCJcIn1gO1xyXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtoZWlnaHQ6IHRoaXMucHJvcHMuaGVpZ2h0LCB3aWR0aDogdGhpcy5wcm9wcy53aWR0aCwgbGVmdDogbGVmdCB8fCAwLCB0b3A6IHRvcCB8fCAwfTtcclxuICAgICAgICByZXR1cm4gPGRpdiBpZD17dGhpcy5wcm9wcy5pZH0gY2xhc3NOYW1lPXtjbGFzc05hbWV9IHJlZj17dGhpcy53aW5kb3d9IHN0eWxlPXtzdHlsZXN9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvYXRpbmctd2luZG93LXRpdGxlYmFyXCIgcmVmPXt0aGlzLnRpdGxlYmFyfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGl0bGVcIj57dGhpcy5wcm9wcy50aXRsZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvYXRpbmctd2luZG93LWJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uIG1heGltaXplLWJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMubWF4aW1pemV9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNYXhpbWl6ZUljb24gc2l6ZT1cIjE4cHhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ1dHRvbiBjbG9zZS1idXR0b25cIiBvbkNsaWNrPXt0aGlzLmNsb3NlfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2VCdXR0b24gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXdpbmRvdy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG5cclxuICAgIG1heGltaXplKCkge1xyXG4gICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUud2lkdGggPSBcIjEwMCVcIjtcclxuICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzaXplKSB0aGlzLnByb3BzLm9uUmVzaXplKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5sZWZ0KTtcclxuICAgICAgICBjb25zdCB0b3AgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLnRvcCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gbGVmdCArIHdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IHRvcCArIGhlaWdodDtcclxuXHJcbiAgICAgICAgLy8gUHJldmVudCBleHBhbmRpbmcgb2ZmIHRoZSBib3R0b20gYW5kIHJpZ2h0IGFuZCByZWFkanVzdCBwb3NpdGlvblxyXG4gICAgICAgIGlmIChib3R0b20gPiB0aGlzLm1heFkpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wID0gKHRoaXMubWF4WSAtIGhlaWdodCkgKyBcInB4XCI7XHJcbiAgICAgICAgaWYgKHJpZ2h0ID4gdGhpcy5tYXhYKSB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQgPSAodGhpcy5tYXhYIC0gd2lkdGgpICsgXCJweFwiO1xyXG5cclxuICAgICAgICBjb25zdCBuZXdMZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5sZWZ0KTtcclxuICAgICAgICBjb25zdCBuZXdUb3AgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLnRvcCk7XHJcblxyXG4gICAgICAgIC8vIEZvciBzbWFsbCBzY3JlZW5zIGl0J3MgcG9zc2libGUgdGhpcyBwdXNoZXMgdXMgb2ZmIHRoZSBvdGhlciBkaXJlY3Rpb24uLi4gd2UgbmVlZCB0byByZWFkanVzdCBzaXplXHJcbiAgICAgICAgaWYgKG5ld1RvcCA8IHRoaXMubWluWSkge1xyXG4gICAgICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gdGhpcy5taW5ZIC0gbmV3VG9wO1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLnRvcCA9IHRoaXMubWluWSArIFwicHhcIjtcclxuICAgICAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5oZWlnaHQgPSAoaGVpZ2h0IC0gZGlmZmVyZW5jZSkgKyBcInB4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuZXdMZWZ0IDwgdGhpcy5taW5YKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLm1pblggLSBuZXdMZWZ0O1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQgPSB0aGlzLm1pblggKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gKHdpZHRoIC0gZGlmZmVyZW5jZSkgKyBcInB4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNsb3NlKCkge1xyXG4gICAgICAgIGxldCBzaG91bGRDbG9zZSA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgY29uZmlybUNsb3NlID0gdHlwZW9mKHRoaXMucHJvcHMuY29uZmlybUNsb3NlKSA9PSBcImZ1bmN0aW9uXCIgPyB0aGlzLnByb3BzLmNvbmZpcm1DbG9zZSgpIDogdGhpcy5wcm9wcy5jb25maXJtQ2xvc2U7XHJcbiAgICAgICAgaWYgKGNvbmZpcm1DbG9zZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHttb2RhbE9wZW46IHRydWV9KTtcclxuICAgICAgICAgICAgc2hvdWxkQ2xvc2UgPSBhd2FpdCB0aGlzLmNvbmZpcm1DbG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHttb2RhbE9wZW46IGZhbHNlfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmNsb3NlICYmIHNob3VsZENsb3NlKSB0aGlzLnByb3BzLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybUNsb3NlKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5jb25maXJtQWN0aW9uLCB0aGlzLnByb3BzLmNvbmZpcm1hdGlvblRleHQsIHtcclxuICAgICAgICAgICAgICAgIGRhbmdlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1UZXh0OiBTdHJpbmdzLk1vZGFscy5jbG9zZSxcclxuICAgICAgICAgICAgICAgIG9uQ29uZmlybTogKCkgPT4ge3Jlc29sdmUodHJ1ZSk7fSxcclxuICAgICAgICAgICAgICAgIG9uQ2FuY2VsOiAoKSA9PiB7cmVzb2x2ZShmYWxzZSk7fVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floating/window.jsx\n"); + +/***/ }), + +/***/ "./src/ui/floatingwindows.js": +/*!***********************************!*\ + !*** ./src/ui/floatingwindows.js ***! + \***********************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindows; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _floating_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./floating/container */ \"./src/ui/floating/container.jsx\");\n\n\nclass FloatingWindows {\n static initialize() {\n const containerRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n const container = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_floating_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: containerRef\n });\n const wrapped = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"AppReferencePositionLayer\").AppLayerProvider().props.layerContext.Provider, {\n value: [document.querySelector(\"#app-mount > .layerContainer-yqaFcK\")]\n }, container);\n const div = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].createElement(`
`);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.append(div);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"ReactDOM\"].render(wrapped, div);\n this.ref = containerRef;\n }\n\n static open(window) {\n if (!this.ref) this.initialize();\n return this.ref.current.open(window);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Zsb2F0aW5nd2luZG93cy5qcz8xNzQzIl0sIm5hbWVzIjpbIkZsb2F0aW5nV2luZG93cyIsImluaXRpYWxpemUiLCJjb250YWluZXJSZWYiLCJSZWFjdCIsImNyZWF0ZVJlZiIsImNvbnRhaW5lciIsIndyYXBwZWQiLCJjcmVhdGVFbGVtZW50IiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiQXBwTGF5ZXJQcm92aWRlciIsInByb3BzIiwibGF5ZXJDb250ZXh0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImRpdiIsIkRPTSIsIkRPTU1hbmFnZXIiLCJiZEJvZHkiLCJhcHBlbmQiLCJSZWFjdERPTSIsInJlbmRlciIsInJlZiIsIm9wZW4iLCJ3aW5kb3ciLCJjdXJyZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxNQUFNQSxlQUFOLENBQXNCO0FBQ2pDLFNBQU9DLFVBQVAsR0FBb0I7QUFDaEIsVUFBTUMsWUFBWSxHQUFHQyw2Q0FBSyxDQUFDQyxTQUFOLEVBQXJCO0FBQ0EsVUFBTUMsU0FBUyxnQkFBRyw0REFBQywyREFBRDtBQUF5QixTQUFHLEVBQUVIO0FBQTlCLE1BQWxCO0FBQ0EsVUFBTUksT0FBTyxHQUFHSCw2Q0FBSyxDQUFDSSxhQUFOLENBQW9CQyxzREFBYyxDQUFDQyxVQUFmLENBQTBCLDJCQUExQixFQUF1REMsZ0JBQXZELEdBQTBFQyxLQUExRSxDQUFnRkMsWUFBaEYsQ0FBNkZDLFFBQWpILEVBQTJIO0FBQUNDLFdBQUssRUFBRSxDQUFDQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIscUNBQXZCLENBQUQ7QUFBUixLQUEzSCxFQUFxTVgsU0FBck0sQ0FBaEI7QUFDQSxVQUFNWSxHQUFHLEdBQUdDLDJDQUFHLENBQUNYLGFBQUosQ0FBbUIsbUNBQW5CLENBQVo7QUFDQVksc0RBQVUsQ0FBQ0MsTUFBWCxDQUFrQkMsTUFBbEIsQ0FBeUJKLEdBQXpCO0FBQ0FLLG9EQUFRLENBQUNDLE1BQVQsQ0FBZ0JqQixPQUFoQixFQUF5QlcsR0FBekI7QUFDQSxTQUFLTyxHQUFMLEdBQVd0QixZQUFYO0FBQ0g7O0FBRUQsU0FBT3VCLElBQVAsQ0FBWUMsTUFBWixFQUFvQjtBQUNoQixRQUFJLENBQUMsS0FBS0YsR0FBVixFQUFlLEtBQUt2QixVQUFMO0FBQ2YsV0FBTyxLQUFLdUIsR0FBTCxDQUFTRyxPQUFULENBQWlCRixJQUFqQixDQUFzQkMsTUFBdEIsQ0FBUDtBQUNIOztBQWRnQyIsImZpbGUiOiIuL3NyYy91aS9mbG9hdGluZ3dpbmRvd3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzLCBSZWFjdCwgUmVhY3RET00sIERPTSwgRE9NTWFuYWdlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IEZsb2F0aW5nV2luZG93Q29udGFpbmVyIGZyb20gXCIuL2Zsb2F0aW5nL2NvbnRhaW5lclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvYXRpbmdXaW5kb3dzIHtcclxuICAgIHN0YXRpYyBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IDxGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciByZWY9e2NvbnRhaW5lclJlZn0gLz47XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlZCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkFwcFJlZmVyZW5jZVBvc2l0aW9uTGF5ZXJcIikuQXBwTGF5ZXJQcm92aWRlcigpLnByb3BzLmxheWVyQ29udGV4dC5Qcm92aWRlciwge3ZhbHVlOiBbZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnQgPiAubGF5ZXJDb250YWluZXIteXFhRmNLXCIpXX0sIGNvbnRhaW5lcik7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgaWQ9XCJmbG9hdGluZy13aW5kb3dzLWxheWVyXCI+YCk7XHJcbiAgICAgICAgRE9NTWFuYWdlci5iZEJvZHkuYXBwZW5kKGRpdik7XHJcbiAgICAgICAgUmVhY3RET00ucmVuZGVyKHdyYXBwZWQsIGRpdik7XHJcbiAgICAgICAgdGhpcy5yZWYgPSBjb250YWluZXJSZWY7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHN0YXRpYyBvcGVuKHdpbmRvdykge1xyXG4gICAgICAgIGlmICghdGhpcy5yZWYpIHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZi5jdXJyZW50Lm9wZW4od2luZG93KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floatingwindows.js\n"); /***/ }), @@ -779,7 +791,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDLogo; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass BDLogo extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: \"bd-logo \" + this.props.className,\n height: \"100%\",\n width: this.props.size || \"16px\",\n viewBox: \"0 0 2000 2000\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"metadata\", null), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"defs\", null, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow1\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"20\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n })), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow2\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"15\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(255,255,255,0.15)\"\n })), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow3\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"10\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n }))), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", null, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow3)\"\n },\n fill: \"#171717\",\n opacity: \"1\",\n d: \"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow2)\"\n },\n fill: \"#3E82E5\",\n opacity: \"1\",\n d: \"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow1)\"\n },\n fill: \"#FFFFFF\",\n opacity: \"1\",\n d: \"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2JkbG9nby5qc3g/YmQ4OSJdLCJuYW1lcyI6WyJCRExvZ28iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInByb3BzIiwiY2xhc3NOYW1lIiwic2l6ZSIsImZpbGxSdWxlIiwiY2xpcFJ1bGUiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJmaWx0ZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMsNkNBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLFdBQU87QUFBSyxlQUFTLEVBQUUsYUFBYSxLQUFLQyxLQUFMLENBQVdDLFNBQXhDO0FBQW1ELFlBQU0sRUFBQyxNQUExRDtBQUFpRSxXQUFLLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxJQUFYLElBQW1CLE1BQTNGO0FBQW1HLGFBQU8sRUFBQyxlQUEzRztBQUEySCxXQUFLLEVBQUU7QUFBQ0MsZ0JBQVEsRUFBRSxTQUFYO0FBQXNCQyxnQkFBUSxFQUFFLFNBQWhDO0FBQTJDQyxxQkFBYSxFQUFFLE9BQTFEO0FBQW1FQyxzQkFBYyxFQUFFO0FBQW5GO0FBQWxJLE9BQ0gsNkVBREcsRUFFSCwwRUFDSTtBQUFRLFFBQUUsRUFBQztBQUFYLE9BQXFCO0FBQWMsUUFBRSxFQUFDLElBQWpCO0FBQXNCLFFBQUUsRUFBQyxHQUF6QjtBQUE2QixrQkFBWSxFQUFDLElBQTFDO0FBQStDLGdCQUFVLEVBQUM7QUFBMUQsTUFBckIsQ0FESixFQUVJO0FBQVEsUUFBRSxFQUFDO0FBQVgsT0FBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQUZKLEVBR0k7QUFBUSxRQUFFLEVBQUM7QUFBWCxPQUFxQjtBQUFjLFFBQUUsRUFBQyxJQUFqQjtBQUFzQixRQUFFLEVBQUMsR0FBekI7QUFBNkIsa0JBQVksRUFBQyxJQUExQztBQUErQyxnQkFBVSxFQUFDO0FBQTFELE1BQXJCLENBSEosQ0FGRyxFQU9ILHVFQUNJO0FBQU0sV0FBSyxFQUFFO0FBQUNDLGNBQU0sRUFBRTtBQUFULE9BQWI7QUFBd0MsVUFBSSxFQUFDLFNBQTdDO0FBQXVELGFBQU8sRUFBQyxHQUEvRDtBQUFtRSxPQUFDLEVBQUM7QUFBckUsTUFESixFQUVJO0FBQU0sV0FBSyxFQUFFO0FBQUNBLGNBQU0sRUFBRTtBQUFULE9BQWI7QUFBd0MsVUFBSSxFQUFDLFNBQTdDO0FBQXVELGFBQU8sRUFBQyxHQUEvRDtBQUFtRSxPQUFDLEVBQUM7QUFBckUsTUFGSixFQUdJO0FBQU0sV0FBSyxFQUFFO0FBQUNBLGNBQU0sRUFBRTtBQUFULE9BQWI7QUFBd0MsVUFBSSxFQUFDLFNBQTdDO0FBQXVELGFBQU8sRUFBQyxHQUEvRDtBQUFtRSxPQUFDLEVBQUM7QUFBckUsTUFISixDQVBHLENBQVA7QUFhSDs7QUFmK0MiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvYmRsb2dvLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCRExvZ28gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17XCJiZC1sb2dvIFwiICsgdGhpcy5wcm9wcy5jbGFzc05hbWV9IGhlaWdodD1cIjEwMCVcIiB3aWR0aD17dGhpcy5wcm9wcy5zaXplIHx8IFwiMTZweFwifSB2aWV3Qm94PVwiMCAwIDIwMDAgMjAwMFwiIHN0eWxlPXt7ZmlsbFJ1bGU6IFwiZXZlbm9kZFwiLCBjbGlwUnVsZTogXCJldmVub2RkXCIsIHN0cm9rZUxpbmVjYXA6IFwicm91bmRcIiwgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIn19PlxyXG4gICAgICAgICAgICA8bWV0YWRhdGEgLz5cclxuICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwic2hhZG93MVwiPjxmZURyb3BTaGFkb3cgZHg9XCIyMFwiIGR5PVwiMFwiIHN0ZERldmlhdGlvbj1cIjIwXCIgZmxvb2RDb2xvcj1cInJnYmEoMCwwLDAsMC4zNSlcIiAvPjwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cInNoYWRvdzJcIj48ZmVEcm9wU2hhZG93IGR4PVwiMTVcIiBkeT1cIjBcIiBzdGREZXZpYXRpb249XCIyMFwiIGZsb29kQ29sb3I9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMTUpXCIgLz48L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJzaGFkb3czXCI+PGZlRHJvcFNoYWRvdyBkeD1cIjEwXCIgZHk9XCIwXCIgc3RkRGV2aWF0aW9uPVwiMjBcIiBmbG9vZENvbG9yPVwicmdiYSgwLDAsMCwwLjM1KVwiIC8+PC9maWx0ZXI+XHJcbiAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgPGc+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT17e2ZpbHRlcjogXCJ1cmwoI3NoYWRvdzMpXCJ9fSBmaWxsPVwiIzE3MTcxN1wiIG9wYWNpdHk9XCIxXCIgZD1cIk0xMTk1LjQ0KzEzNS40NDJMMTE5NS40NCsxMzUuNDQyTDk5Ny42KzEzNi40NDJDMTAyNC4yKzE0OS43NDIrMTE3MC4zNCsxNjMuNTQyKzExOTMuNjQrMTc5Ljc0MkMxMjY0LjM0KzIyOC44NDIrMTMxOS43NCsyOTEuMjQyKzEzNTguMjQrMzY1LjA0MkMxMzk4LjE0KzQ0MS42NDIrMTQxOS43NCs1MzAuNjQyKzE0MjIuNTQrNjI5LjY0MkwxNDIyLjU0KzYzMC44NDJMMTQyMi41NCs2MzIuMDQyQzE0MjIuNTQrNzczLjE0MisxNDIyLjU0KzEyMjguMTQrMTQyMi41NCsxMzY5LjE0TDE0MjIuNTQrMTM3MC4zNEwxNDIyLjU0KzEzNzEuNTRDMTQxOS44NCsxNDcwLjU0KzEzOTguMjQrMTU1OS41NCsxMzU4LjI0KzE2MzYuMTRDMTMxOS43NCsxNzA5Ljk0KzEyNjQuNDQrMTc3Mi4zNCsxMTkzLjY0KzE4MjEuNDRDMTE3MS4wNCsxODM3LjE0KzEwMjUuNysxODUwLjU0KzEwMDArMTg2My41NEwxMTkzLjU0KzE4NjQuNTRDMTUzOS43NCsxODY2LjQ0KzE4NjQuNTQrMTY5My4zNCsxODY0LjU0KzEyOTYuNjRMMTg2NC41NCs3MTYuOTQyQzE4NjYuNDQrMzEyLjQ0MisxNTQxLjY0KzEzNS40NDIrMTE5NS40NCsxMzUuNDQyWlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT17e2ZpbHRlcjogXCJ1cmwoI3NoYWRvdzIpXCJ9fSBmaWxsPVwiIzNFODJFNVwiIG9wYWNpdHk9XCIxXCIgZD1cIk0xNjk1LjU0KzYzMS40NDJDMTY4NS44NCsyNzguMDQyKzE0MDkuMzQrMTM1LjQ0MisxMDUyLjk0KzEzNS40NDJMMzYxLjc0KzEzNi40NDJMODAzLjc0KzQ5MC40NDJMMTA2MC43NCs0OTAuNDQyQzEzMzUuMjQrNDkwLjQ0MisxMzM1LjI0KzgzNS4zNDIrMTA2MC43NCs4MzUuMzQyTDEwNjAuNzQrMTE2NC44NEMxMTUwLjIyKzExNjQuODQrMTIxMC41MysxMjAxLjQ4KzEyNDEuNjgrMTI1MC44N0MxMzA2LjA3KzEzNTMrMTI0NS43NisxNTA5LjY0KzEwNjAuNzQrMTUwOS42NEwzNjEuNzQrMTg2My41NEwxMDUyLjk0KzE4NjQuNTRDMTQwOS4yNCsxODY0LjU0KzE2ODUuNzQrMTcyMS45NCsxNjk1LjU0KzEzNjguNTRDMTY5NS41NCsxMjA1Ljk0KzE2NTEuMDQrMTA4NC40NCsxNTcyLjY0Kzk5OS45NDJDMTY1MS4wNCs5MTUuNTQyKzE2OTUuNTQrNzk0LjA0MisxNjk1LjU0KzYzMS40NDJaXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0eWxlPXt7ZmlsdGVyOiBcInVybCgjc2hhZG93MSlcIn19IGZpbGw9XCIjRkZGRkZGXCIgb3BhY2l0eT1cIjFcIiBkPVwiTTE0NjkuMjUrNjMxLjQ0MkMxNDU5LjU1KzI3OC4wNDIrMTE4My4wNSsxMzUuNDQyKzgyNi42NSsxMzUuNDQyTDEzNS40NSsxMzUuNDQyTDEzNS40NSsxMDA0QzEzNS40NSsxMDA0KzEzNS40MjcrMTI1NS4yMSszNTUuNjI2KzEyNTUuMjFDNTc1LjgyNSsxMjU1LjIxKzU3NS44NDgrMTAwNCs1NzUuODQ4KzEwMDRMNTc3LjQ1KzQ5MC40NDJMODM0LjQ1KzQ5MC40NDJDMTEwOC45NSs0OTAuNDQyKzExMDguOTUrODM1LjM0Mis4MzQuNDUrODM1LjM0Mkw2NjQuNjUrODM1LjM0Mkw2NjQuNjUrMTE2NC44NEw4MzQuNDUrMTE2NC44NEM5MjMuOTMyKzExNjQuODQrOTg0LjI0NCsxMjAxLjQ4KzEwMTUuMzkrMTI1MC44N0MxMDc5Ljc4KzEzNTMrMTAxOS40NysxNTA5LjY0KzgzNC40NSsxNTA5LjY0TDEzNS40NSsxNTA5LjY0TDEzNS40NSsxODY0LjU0TDgyNi42NSsxODY0LjU0QzExODIuOTUrMTg2NC41NCsxNDU5LjQ1KzE3MjEuOTQrMTQ2OS4yNSsxMzY4LjU0QzE0NjkuMjUrMTIwNS45NCsxNDI0Ljc1KzEwODQuNDQrMTM0Ni4zNSs5OTkuOTQyQzE0MjQuNzUrOTE1LjU0MisxNDY5LjI1Kzc5NC4wNDIrMTQ2OS4yNSs2MzEuNDQyWlwiIC8+XHJcbiAgICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/bdlogo.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDLogo; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass BDLogo extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: \"bd-logo \" + this.props.className,\n height: \"100%\",\n width: this.props.size || \"16px\",\n viewBox: \"0 0 2000 2000\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"metadata\", null), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"defs\", null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow1\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"20\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow2\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"15\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(255,255,255,0.15)\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow3\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"10\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n }))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow3)\"\n },\n fill: \"#171717\",\n opacity: \"1\",\n d: \"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow2)\"\n },\n fill: \"#3E82E5\",\n opacity: \"1\",\n d: \"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow1)\"\n },\n fill: \"#FFFFFF\",\n opacity: \"1\",\n d: \"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2JkbG9nby5qc3g/YmQ4OSJdLCJuYW1lcyI6WyJCRExvZ28iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInByb3BzIiwiY2xhc3NOYW1lIiwic2l6ZSIsImZpbGxSdWxlIiwiY2xpcFJ1bGUiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJmaWx0ZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMsNkNBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFFLGFBQWEsS0FBS0MsS0FBTCxDQUFXQyxTQUF4QztBQUFtRCxZQUFNLEVBQUMsTUFBMUQ7QUFBaUUsV0FBSyxFQUFFLEtBQUtELEtBQUwsQ0FBV0UsSUFBWCxJQUFtQixNQUEzRjtBQUFtRyxhQUFPLEVBQUMsZUFBM0c7QUFBMkgsV0FBSyxFQUFFO0FBQUNDLGdCQUFRLEVBQUUsU0FBWDtBQUFzQkMsZ0JBQVEsRUFBRSxTQUFoQztBQUEyQ0MscUJBQWEsRUFBRSxPQUExRDtBQUFtRUMsc0JBQWMsRUFBRTtBQUFuRjtBQUFsSSxvQkFDSCw2RUFERyxlQUVILHVGQUNJO0FBQVEsUUFBRSxFQUFDO0FBQVgsb0JBQXFCO0FBQWMsUUFBRSxFQUFDLElBQWpCO0FBQXNCLFFBQUUsRUFBQyxHQUF6QjtBQUE2QixrQkFBWSxFQUFDLElBQTFDO0FBQStDLGdCQUFVLEVBQUM7QUFBMUQsTUFBckIsQ0FESixlQUVJO0FBQVEsUUFBRSxFQUFDO0FBQVgsb0JBQXFCO0FBQWMsUUFBRSxFQUFDLElBQWpCO0FBQXNCLFFBQUUsRUFBQyxHQUF6QjtBQUE2QixrQkFBWSxFQUFDLElBQTFDO0FBQStDLGdCQUFVLEVBQUM7QUFBMUQsTUFBckIsQ0FGSixlQUdJO0FBQVEsUUFBRSxFQUFDO0FBQVgsb0JBQXFCO0FBQWMsUUFBRSxFQUFDLElBQWpCO0FBQXNCLFFBQUUsRUFBQyxHQUF6QjtBQUE2QixrQkFBWSxFQUFDLElBQTFDO0FBQStDLGdCQUFVLEVBQUM7QUFBMUQsTUFBckIsQ0FISixDQUZHLGVBT0gsb0ZBQ0k7QUFBTSxXQUFLLEVBQUU7QUFBQ0MsY0FBTSxFQUFFO0FBQVQsT0FBYjtBQUF3QyxVQUFJLEVBQUMsU0FBN0M7QUFBdUQsYUFBTyxFQUFDLEdBQS9EO0FBQW1FLE9BQUMsRUFBQztBQUFyRSxNQURKLGVBRUk7QUFBTSxXQUFLLEVBQUU7QUFBQ0EsY0FBTSxFQUFFO0FBQVQsT0FBYjtBQUF3QyxVQUFJLEVBQUMsU0FBN0M7QUFBdUQsYUFBTyxFQUFDLEdBQS9EO0FBQW1FLE9BQUMsRUFBQztBQUFyRSxNQUZKLGVBR0k7QUFBTSxXQUFLLEVBQUU7QUFBQ0EsY0FBTSxFQUFFO0FBQVQsT0FBYjtBQUF3QyxVQUFJLEVBQUMsU0FBN0M7QUFBdUQsYUFBTyxFQUFDLEdBQS9EO0FBQW1FLE9BQUMsRUFBQztBQUFyRSxNQUhKLENBUEcsQ0FBUDtBQWFIOztBQWYrQyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9iZGxvZ28uanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJETG9nbyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXtcImJkLWxvZ28gXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZX0gaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPXt0aGlzLnByb3BzLnNpemUgfHwgXCIxNnB4XCJ9IHZpZXdCb3g9XCIwIDAgMjAwMCAyMDAwXCIgc3R5bGU9e3tmaWxsUnVsZTogXCJldmVub2RkXCIsIGNsaXBSdWxlOiBcImV2ZW5vZGRcIiwgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLCBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwifX0+XHJcbiAgICAgICAgICAgIDxtZXRhZGF0YSAvPlxyXG4gICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJzaGFkb3cxXCI+PGZlRHJvcFNoYWRvdyBkeD1cIjIwXCIgZHk9XCIwXCIgc3RkRGV2aWF0aW9uPVwiMjBcIiBmbG9vZENvbG9yPVwicmdiYSgwLDAsMCwwLjM1KVwiIC8+PC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwic2hhZG93MlwiPjxmZURyb3BTaGFkb3cgZHg9XCIxNVwiIGR5PVwiMFwiIHN0ZERldmlhdGlvbj1cIjIwXCIgZmxvb2RDb2xvcj1cInJnYmEoMjU1LDI1NSwyNTUsMC4xNSlcIiAvPjwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cInNoYWRvdzNcIj48ZmVEcm9wU2hhZG93IGR4PVwiMTBcIiBkeT1cIjBcIiBzdGREZXZpYXRpb249XCIyMFwiIGZsb29kQ29sb3I9XCJyZ2JhKDAsMCwwLDAuMzUpXCIgLz48L2ZpbHRlcj5cclxuICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8Zz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0eWxlPXt7ZmlsdGVyOiBcInVybCgjc2hhZG93MylcIn19IGZpbGw9XCIjMTcxNzE3XCIgb3BhY2l0eT1cIjFcIiBkPVwiTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0eWxlPXt7ZmlsdGVyOiBcInVybCgjc2hhZG93MilcIn19IGZpbGw9XCIjM0U4MkU1XCIgb3BhY2l0eT1cIjFcIiBkPVwiTTE2OTUuNTQrNjMxLjQ0MkMxNjg1Ljg0KzI3OC4wNDIrMTQwOS4zNCsxMzUuNDQyKzEwNTIuOTQrMTM1LjQ0MkwzNjEuNzQrMTM2LjQ0Mkw4MDMuNzQrNDkwLjQ0MkwxMDYwLjc0KzQ5MC40NDJDMTMzNS4yNCs0OTAuNDQyKzEzMzUuMjQrODM1LjM0MisxMDYwLjc0KzgzNS4zNDJMMTA2MC43NCsxMTY0Ljg0QzExNTAuMjIrMTE2NC44NCsxMjEwLjUzKzEyMDEuNDgrMTI0MS42OCsxMjUwLjg3QzEzMDYuMDcrMTM1MysxMjQ1Ljc2KzE1MDkuNjQrMTA2MC43NCsxNTA5LjY0TDM2MS43NCsxODYzLjU0TDEwNTIuOTQrMTg2NC41NEMxNDA5LjI0KzE4NjQuNTQrMTY4NS43NCsxNzIxLjk0KzE2OTUuNTQrMTM2OC41NEMxNjk1LjU0KzEyMDUuOTQrMTY1MS4wNCsxMDg0LjQ0KzE1NzIuNjQrOTk5Ljk0MkMxNjUxLjA0KzkxNS41NDIrMTY5NS41NCs3OTQuMDQyKzE2OTUuNTQrNjMxLjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3cxKVwifX0gZmlsbD1cIiNGRkZGRkZcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTQ2OS4yNSs2MzEuNDQyQzE0NTkuNTUrMjc4LjA0MisxMTgzLjA1KzEzNS40NDIrODI2LjY1KzEzNS40NDJMMTM1LjQ1KzEzNS40NDJMMTM1LjQ1KzEwMDRDMTM1LjQ1KzEwMDQrMTM1LjQyNysxMjU1LjIxKzM1NS42MjYrMTI1NS4yMUM1NzUuODI1KzEyNTUuMjErNTc1Ljg0OCsxMDA0KzU3NS44NDgrMTAwNEw1NzcuNDUrNDkwLjQ0Mkw4MzQuNDUrNDkwLjQ0MkMxMTA4Ljk1KzQ5MC40NDIrMTEwOC45NSs4MzUuMzQyKzgzNC40NSs4MzUuMzQyTDY2NC42NSs4MzUuMzQyTDY2NC42NSsxMTY0Ljg0TDgzNC40NSsxMTY0Ljg0QzkyMy45MzIrMTE2NC44NCs5ODQuMjQ0KzEyMDEuNDgrMTAxNS4zOSsxMjUwLjg3QzEwNzkuNzgrMTM1MysxMDE5LjQ3KzE1MDkuNjQrODM0LjQ1KzE1MDkuNjRMMTM1LjQ1KzE1MDkuNjRMMTM1LjQ1KzE4NjQuNTRMODI2LjY1KzE4NjQuNTRDMTE4Mi45NSsxODY0LjU0KzE0NTkuNDUrMTcyMS45NCsxNDY5LjI1KzEzNjguNTRDMTQ2OS4yNSsxMjA1Ljk0KzE0MjQuNzUrMTA4NC40NCsxMzQ2LjM1Kzk5OS45NDJDMTQyNC43NSs5MTUuNTQyKzE0NjkuMjUrNzk0LjA0MisxNDY5LjI1KzYzMS40NDJaXCIgLz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/bdlogo.jsx\n"); /***/ }), @@ -791,7 +803,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CloseButton; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass CloseButton extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 12 12\",\n style: {\n width: \"18px\",\n height: \"18px\"\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", {\n className: \"background\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h12v12H0\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n className: \"fill\",\n fill: \"#dcddde\",\n d: \"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2Nsb3NlLmpzeD9iY2UxIl0sIm5hbWVzIjpbIkNsb3NlQnV0dG9uIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyw2Q0FBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUNyREMsUUFBTSxHQUFHO0FBQ0wsV0FBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUUsTUFBUjtBQUFnQkMsY0FBTSxFQUFFO0FBQXhCO0FBQWhDLE9BQ0g7QUFBRyxlQUFTLEVBQUMsWUFBYjtBQUEwQixVQUFJLEVBQUMsTUFBL0I7QUFBc0MsY0FBUSxFQUFDO0FBQS9DLE9BQ0k7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURKLEVBRUk7QUFBTSxlQUFTLEVBQUMsTUFBaEI7QUFBdUIsVUFBSSxFQUFDLFNBQTVCO0FBQXNDLE9BQUMsRUFBQztBQUF4QyxNQUZKLENBREcsQ0FBUDtBQU1IOztBQVJvRCIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9jbG9zZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xvc2VCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBzdHlsZT17e3dpZHRoOiBcIjE4cHhcIiwgaGVpZ2h0OiBcIjE4cHhcIn19PlxyXG4gICAgICAgICAgICA8ZyBjbGFzc05hbWU9XCJiYWNrZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiBmaWxsUnVsZT1cImV2ZW5vZGRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAwaDEydjEySDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3NOYW1lPVwiZmlsbFwiIGZpbGw9XCIjZGNkZGRlXCIgZD1cIk05LjUgMy4yMDVMOC43OTUgMi41IDYgNS4yOTUgMy4yMDUgMi41bC0uNzA1LjcwNUw1LjI5NSA2IDIuNSA4Ljc5NWwuNzA1LjcwNUw2IDYuNzA1IDguNzk1IDkuNWwuNzA1LS43MDVMNi43MDUgNlwiIC8+XHJcbiAgICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/close.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CloseButton; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass CloseButton extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 12 12\",\n style: {\n width: \"18px\",\n height: \"18px\"\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", {\n className: \"background\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h12v12H0\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n className: \"fill\",\n fill: \"#dcddde\",\n d: \"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2Nsb3NlLmpzeD9iY2UxIl0sIm5hbWVzIjpbIkNsb3NlQnV0dG9uIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyw2Q0FBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUNyREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFLE1BQVI7QUFBZ0JDLGNBQU0sRUFBRTtBQUF4QjtBQUFoQyxvQkFDSDtBQUFHLGVBQVMsRUFBQyxZQUFiO0FBQTBCLFVBQUksRUFBQyxNQUEvQjtBQUFzQyxjQUFRLEVBQUM7QUFBL0Msb0JBQ0k7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURKLGVBRUk7QUFBTSxlQUFTLEVBQUMsTUFBaEI7QUFBdUIsVUFBSSxFQUFDLFNBQTVCO0FBQXNDLE9BQUMsRUFBQztBQUF4QyxNQUZKLENBREcsQ0FBUDtBQU1IOztBQVJvRCIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9jbG9zZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xvc2VCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBzdHlsZT17e3dpZHRoOiBcIjE4cHhcIiwgaGVpZ2h0OiBcIjE4cHhcIn19PlxyXG4gICAgICAgICAgICA8ZyBjbGFzc05hbWU9XCJiYWNrZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiBmaWxsUnVsZT1cImV2ZW5vZGRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAwaDEydjEySDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3NOYW1lPVwiZmlsbFwiIGZpbGw9XCIjZGNkZGRlXCIgZD1cIk05LjUgMy4yMDVMOC43OTUgMi41IDYgNS4yOTUgMy4yMDUgMi41bC0uNzA1LjcwNUw1LjI5NSA2IDIuNSA4Ljc5NWwuNzA1LjcwNUw2IDYuNzA1IDguNzk1IDkuNWwuNzA1LS43MDVMNi43MDUgNlwiIC8+XHJcbiAgICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/close.jsx\n"); /***/ }), @@ -803,7 +815,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Cog; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Cog extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"20px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 20 20\",\n style: {\n width: size,\n height: size\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h20v20H0V0z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2NvZy5qc3g/MGFiZCJdLCJuYW1lcyI6WyJDb2ciLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLEdBQU4sU0FBa0JDLDZDQUFLLENBQUNDLFNBQXhCLENBQWtDO0FBQzdDQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0EsV0FBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxPQUNDO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREQsRUFFQztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkQsQ0FBUDtBQUlIOztBQVA0QyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9jb2cuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjIwcHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDIwdjIwSDBWMHpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS45NSAxMC43OGMuMDMtLjI1LjA1LS41MS4wNS0uNzhzLS4wMi0uNTMtLjA2LS43OGwxLjY5LTEuMzJjLjE1LS4xMi4xOS0uMzQuMS0uNTFsLTEuNi0yLjc3Yy0uMS0uMTgtLjMxLS4yNC0uNDktLjE4bC0xLjk5LjhjLS40Mi0uMzItLjg2LS41OC0xLjM1LS43OEwxMiAyLjM0Yy0uMDMtLjItLjItLjM0LS40LS4zNEg4LjRjLS4yIDAtLjM2LjE0LS4zOS4zNGwtLjMgMi4xMmMtLjQ5LjItLjk0LjQ3LTEuMzUuNzhsLTEuOTktLjhjLS4xOC0uMDctLjM5IDAtLjQ5LjE4bC0xLjYgMi43N2MtLjEuMTgtLjA2LjM5LjEuNTFsMS42OSAxLjMyYy0uMDQuMjUtLjA3LjUyLS4wNy43OHMuMDIuNTMuMDYuNzhMMi4zNyAxMi4xYy0uMTUuMTItLjE5LjM0LS4xLjUxbDEuNiAyLjc3Yy4xLjE4LjMxLjI0LjQ5LjE4bDEuOTktLjhjLjQyLjMyLjg2LjU4IDEuMzUuNzhsLjMgMi4xMmMuMDQuMi4yLjM0LjQuMzRoMy4yYy4yIDAgLjM3LS4xNC4zOS0uMzRsLjMtMi4xMmMuNDktLjIuOTQtLjQ3IDEuMzUtLjc4bDEuOTkuOGMuMTguMDcuMzkgMCAuNDktLjE4bDEuNi0yLjc3Yy4xLS4xOC4wNi0uMzktLjEtLjUxbC0xLjY3LTEuMzJ6TTEwIDEzYy0xLjY1IDAtMy0xLjM1LTMtM3MxLjM1LTMgMy0zIDMgMS4zNSAzIDMtMS4zNSAzLTMgM3pcIiAvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/cog.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Cog; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Cog extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"20px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 20 20\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h20v20H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2NvZy5qc3g/MGFiZCJdLCJuYW1lcyI6WyJDb2ciLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLEdBQU4sU0FBa0JDLDZDQUFLLENBQUNDLFNBQXhCLENBQWtDO0FBQzdDQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixXQUFLLEVBQUU7QUFBQ0UsYUFBSyxFQUFFRixJQUFSO0FBQWNHLGNBQU0sRUFBRUg7QUFBdEI7QUFBaEMsb0JBQ0M7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFERCxlQUVDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGRCxDQUFQO0FBSUg7O0FBUDRDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2NvZy5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29nIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjBweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjB2MjBIMFYwelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1Ljk1IDEwLjc4Yy4wMy0uMjUuMDUtLjUxLjA1LS43OHMtLjAyLS41My0uMDYtLjc4bDEuNjktMS4zMmMuMTUtLjEyLjE5LS4zNC4xLS41MWwtMS42LTIuNzdjLS4xLS4xOC0uMzEtLjI0LS40OS0uMThsLTEuOTkuOGMtLjQyLS4zMi0uODYtLjU4LTEuMzUtLjc4TDEyIDIuMzRjLS4wMy0uMi0uMi0uMzQtLjQtLjM0SDguNGMtLjIgMC0uMzYuMTQtLjM5LjM0bC0uMyAyLjEyYy0uNDkuMi0uOTQuNDctMS4zNS43OGwtMS45OS0uOGMtLjE4LS4wNy0uMzkgMC0uNDkuMThsLTEuNiAyLjc3Yy0uMS4xOC0uMDYuMzkuMS41MWwxLjY5IDEuMzJjLS4wNC4yNS0uMDcuNTItLjA3Ljc4cy4wMi41My4wNi43OEwyLjM3IDEyLjFjLS4xNS4xMi0uMTkuMzQtLjEuNTFsMS42IDIuNzdjLjEuMTguMzEuMjQuNDkuMThsMS45OS0uOGMuNDIuMzIuODYuNTggMS4zNS43OGwuMyAyLjEyYy4wNC4yLjIuMzQuNC4zNGgzLjJjLjIgMCAuMzctLjE0LjM5LS4zNGwuMy0yLjEyYy40OS0uMi45NC0uNDcgMS4zNS0uNzhsMS45OS44Yy4xOC4wNy4zOSAwIC40OS0uMThsMS42LTIuNzdjLjEtLjE4LjA2LS4zOS0uMS0uNTFsLTEuNjctMS4zMnpNMTAgMTNjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwiIC8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/cog.jsx\n"); /***/ }), @@ -815,7 +827,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Delete; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Delete extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2RlbGV0ZS5qc3g/NWIwYiJdLCJuYW1lcyI6WyJEZWxldGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0Iiwib25DbGljayJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLFdBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCLE9BQXRGO0FBQW1ILGFBQU8sRUFBRSxLQUFLQyxLQUFMLENBQVdJO0FBQXZJLE9BQ0s7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFETCxFQUM0QztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRDVDLEVBRUs7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFGTCxDQUFQO0FBSUg7O0FBUCtDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2RlbGV0ZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVsZXRlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gZmlsbD1cIiNGRkZGRkZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIi8+PHBhdGggZD1cIk02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6bTIuNDYtNy4xMmwxLjQxLTEuNDFMMTIgMTIuNTlsMi4xMi0yLjEyIDEuNDEgMS40MUwxMy40MSAxNGwyLjEyIDIuMTItMS40MSAxLjQxTDEyIDE1LjQxbC0yLjEyIDIuMTItMS40MS0xLjQxTDEwLjU5IDE0bC0yLjEzLTIuMTJ6TTE1LjUgNGwtMS0xaC01bC0xIDFINXYyaDE0VjR6XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/delete.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Delete; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Delete extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2RlbGV0ZS5qc3g/NWIwYiJdLCJuYW1lcyI6WyJEZWxldGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0Iiwib25DbGljayJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssZUFBUyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsU0FBWCxJQUF3QixFQUF4QztBQUE0QyxVQUFJLEVBQUMsU0FBakQ7QUFBMkQsYUFBTyxFQUFDLFdBQW5FO0FBQStFLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVILElBQVI7QUFBY0ksY0FBTSxFQUFFSjtBQUF0QixPQUF0RjtBQUFtSCxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXSTtBQUF2SSxvQkFDSztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURMLGVBQzRDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFENUMsZUFFSztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQUZMLENBQVA7QUFJSDs7QUFQK0MiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZGVsZXRlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZWxldGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiLz48cGF0aCBkPVwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi40Ni03LjEybDEuNDEtMS40MUwxMiAxMi41OWwyLjEyLTIuMTIgMS40MSAxLjQxTDEzLjQxIDE0bDIuMTIgMi4xMi0xLjQxIDEuNDFMMTIgMTUuNDFsLTIuMTIgMi4xMi0xLjQxLTEuNDFMMTAuNTkgMTRsLTIuMTMtMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/delete.jsx\n"); /***/ }), @@ -827,7 +839,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Detach; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Detach extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2RldGFjaC5qc3g/M2NlYSJdLCJuYW1lcyI6WyJEZXRhY2giLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0EsV0FBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxPQUNDO0FBQU0sT0FBQyxFQUFDLGVBQVI7QUFBd0IsVUFBSSxFQUFDO0FBQTdCLE1BREQsRUFFQztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkQsQ0FBUDtBQUlIOztBQVArQyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9kZXRhY2guanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERldGFjaCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTkgMTlINVY1aDdWM0g1Yy0xLjExIDAtMiAuOS0yIDJ2MTRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNMTQgM3YyaDMuNTlsLTkuODMgOS44MyAxLjQxIDEuNDFMMTkgNi40MVYxMGgyVjNoLTd6XCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/detach.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Detach; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Detach extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2RldGFjaC5qc3g/M2NlYSJdLCJuYW1lcyI6WyJEZXRhY2giLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixXQUFLLEVBQUU7QUFBQ0UsYUFBSyxFQUFFRixJQUFSO0FBQWNHLGNBQU0sRUFBRUg7QUFBdEI7QUFBaEMsb0JBQ0M7QUFBTSxPQUFDLEVBQUMsZUFBUjtBQUF3QixVQUFJLEVBQUM7QUFBN0IsTUFERCxlQUVDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGRCxDQUFQO0FBSUg7O0FBUCtDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2RldGFjaC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGV0YWNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xOSAxOUg1VjVoN1YzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3pcIiAvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/detach.jsx\n"); /***/ }), @@ -839,7 +851,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DownArrow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass DownArrow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2Rvd25hcnJvdy5qc3g/MjFmNSJdLCJuYW1lcyI6WyJEb3duQXJyb3ciLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFNBQU4sU0FBd0JDLDZDQUFLLENBQUNDLFNBQTlCLENBQXdDO0FBQ25EQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0EsV0FBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsT0FDSztBQUFNLE9BQUMsRUFBQztBQUFSLE1BREwsQ0FBUDtBQUdIOztBQU5rRCIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9kb3duYXJyb3cuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERvd25BcnJvdyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjE2cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IGZpbGw9XCIjRkZGRkZGXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4xMiA5LjI5TDEyIDEzLjE3bDMuODgtMy44OGMuMzktLjM5IDEuMDItLjM5IDEuNDEgMCAuMzkuMzkuMzkgMS4wMiAwIDEuNDFsLTQuNTkgNC41OWMtLjM5LjM5LTEuMDIuMzktMS40MSAwTDYuNyAxMC43Yy0uMzktLjM5LS4zOS0xLjAyIDAtMS40MS4zOS0uMzggMS4wMy0uMzkgMS40MiAwelwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/downarrow.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DownArrow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass DownArrow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2Rvd25hcnJvdy5qc3g/MjFmNSJdLCJuYW1lcyI6WyJEb3duQXJyb3ciLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFNBQU4sU0FBd0JDLDZDQUFLLENBQUNDLFNBQTlCLENBQXdDO0FBQ25EQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCO0FBQXRGLG9CQUNLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFETCxDQUFQO0FBR0g7O0FBTmtEIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Rvd25hcnJvdy5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRG93bkFycm93IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMTZweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gZmlsbD1cIiNGRkZGRkZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjEyIDkuMjlMMTIgMTMuMTdsMy44OC0zLjg4Yy4zOS0uMzkgMS4wMi0uMzkgMS40MSAwIC4zOS4zOS4zOSAxLjAyIDAgMS40MWwtNC41OSA0LjU5Yy0uMzkuMzktMS4wMi4zOS0xLjQxIDBMNi43IDEwLjdjLS4zOS0uMzktLjM5LTEuMDIgMC0xLjQxLjM5LS4zOCAxLjAzLS4zOSAxLjQyIDB6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/downarrow.jsx\n"); /***/ }), @@ -851,7 +863,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Edit; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Edit extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2VkaXQuanN4PzQ2ZTMiXSwibmFtZXMiOlsiRWRpdCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLElBQU4sU0FBbUJDLDZDQUFLLENBQUNDLFNBQXpCLENBQW1DO0FBQzlDQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0EsV0FBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxXQUFLLEVBQUU7QUFBQ0UsYUFBSyxFQUFFRixJQUFSO0FBQWNHLGNBQU0sRUFBRUg7QUFBdEIsT0FBL0M7QUFBNEUsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0c7QUFBaEcsT0FDQztBQUFNLE9BQUMsRUFBQztBQUFSLE1BREQsRUFFQztBQUFNLE9BQUMsRUFBQyxlQUFSO0FBQXdCLFVBQUksRUFBQztBQUE3QixNQUZELENBQVA7QUFJSDs7QUFQNkMiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZWRpdC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIiNGRkZGRkZcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/edit.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Edit; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Edit extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2VkaXQuanN4PzQ2ZTMiXSwibmFtZXMiOlsiRWRpdCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLElBQU4sU0FBbUJDLDZDQUFLLENBQUNDLFNBQXpCLENBQW1DO0FBQzlDQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixVQUFJLEVBQUMsU0FBOUI7QUFBd0MsV0FBSyxFQUFFO0FBQUNFLGFBQUssRUFBRUYsSUFBUjtBQUFjRyxjQUFNLEVBQUVIO0FBQXRCLE9BQS9DO0FBQTRFLGFBQU8sRUFBRSxLQUFLQyxLQUFMLENBQVdHO0FBQWhHLG9CQUNDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFERCxlQUVDO0FBQU0sT0FBQyxFQUFDLGVBQVI7QUFBd0IsVUFBSSxFQUFDO0FBQTdCLE1BRkQsQ0FBUDtBQUlIOztBQVA2QyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9lZGl0LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiI0ZGRkZGRlwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/edit.jsx\n"); /***/ }), @@ -863,7 +875,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FullScreen; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass FullScreen extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2Z1bGxzY3JlZW4uanN4P2Y1MzEiXSwibmFtZXMiOlsiRnVsbFNjcmVlbiIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFVBQU4sU0FBeUJDLDZDQUFLLENBQUNDLFNBQS9CLENBQXlDO0FBQ3BEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0EsV0FBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEIsT0FBdEY7QUFBbUgsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0k7QUFBdkksT0FDSztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURMLEVBRUs7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZMLENBQVA7QUFJSDs7QUFQbUQiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZnVsbHNjcmVlbi5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnVsbFNjcmVlbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IGZpbGw9XCIjRkZGRkZGXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/fullscreen.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FullScreen; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass FullScreen extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2Z1bGxzY3JlZW4uanN4P2Y1MzEiXSwibmFtZXMiOlsiRnVsbFNjcmVlbiIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFVBQU4sU0FBeUJDLDZDQUFLLENBQUNDLFNBQS9CLENBQXlDO0FBQ3BEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCLE9BQXRGO0FBQW1ILGFBQU8sRUFBRSxLQUFLQyxLQUFMLENBQVdJO0FBQXZJLG9CQUNLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREwsZUFFSztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkwsQ0FBUDtBQUlIOztBQVBtRCIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9mdWxsc2NyZWVuLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGdWxsU2NyZWVuIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gZmlsbD1cIiNGRkZGRkZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDE0SDV2NWg1di0ySDd2LTN6bS0yLTRoMlY3aDNWNUg1djV6bTEyIDdoLTN2Mmg1di01aC0ydjN6TTE0IDV2MmgzdjNoMlY1aC01elwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/fullscreen.jsx\n"); /***/ }), @@ -875,7 +887,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return History; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass History extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"18px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n className: this.props.className || \"\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2hpc3RvcnkuanN4PzY2YmMiXSwibmFtZXMiOlsiSGlzdG9yeSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE9BQU4sU0FBc0JDLDZDQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0EsV0FBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQTNFO0FBQStFLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVILElBQVI7QUFBY0ksY0FBTSxFQUFFSjtBQUF0QixPQUF0RjtBQUFtSCxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXSTtBQUF2SSxPQUNDO0FBQU0sT0FBQyxFQUFDLGVBQVI7QUFBd0IsVUFBSSxFQUFDO0FBQTdCLE1BREQsRUFFQztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkQsQ0FBUDtBQUlIOztBQVBnRCIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9oaXN0b3J5LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIaXN0b3J5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMThweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiI0ZGRkZGRlwiIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDNjLTQuOTcgMC05IDQuMDMtOSA5SDFsMy44OSAzLjg5LjA3LjE0TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkM4LjI3IDE5Ljk5IDEwLjUxIDIxIDEzIDIxYzQuOTcgMCA5LTQuMDMgOS05cy00LjAzLTktOS05em0tMSA1djVsNC4yOCAyLjU0LjcyLTEuMjEtMy41LTIuMDhWOEgxMnpcIi8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/history.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return History; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass History extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"18px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n className: this.props.className || \"\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2hpc3RvcnkuanN4PzY2YmMiXSwibmFtZXMiOlsiSGlzdG9yeSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE9BQU4sU0FBc0JDLDZDQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixVQUFJLEVBQUMsU0FBOUI7QUFBd0MsZUFBUyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsU0FBWCxJQUF3QixFQUEzRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEIsT0FBdEY7QUFBbUgsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0k7QUFBdkksb0JBQ0M7QUFBTSxPQUFDLEVBQUMsZUFBUjtBQUF3QixVQUFJLEVBQUM7QUFBN0IsTUFERCxlQUVDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGRCxDQUFQO0FBSUg7O0FBUGdEIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2hpc3RvcnkuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhpc3RvcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIxOHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCIjRkZGRkZGXCIgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgM2MtNC45NyAwLTkgNC4wMy05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQzguMjcgMTkuOTkgMTAuNTEgMjEgMTMgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyelwiLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/history.jsx\n"); /***/ }), @@ -887,7 +899,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReloadIcon; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ReloadIcon extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n onClick: this.props.onClick,\n fill: \"#dcddde\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL3JlbG9hZC5qc3g/MzhiMiJdLCJuYW1lcyI6WyJSZWxvYWRJY29uIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsVUFBTixTQUF5QkMsNkNBQUssQ0FBQ0MsU0FBL0IsQ0FBeUM7QUFDcERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSxXQUFPO0FBQUssZUFBUyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsU0FBWCxJQUF3QixFQUF4QztBQUE0QyxhQUFPLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxPQUFoRTtBQUF5RSxVQUFJLEVBQUMsU0FBOUU7QUFBd0YsYUFBTyxFQUFDLFdBQWhHO0FBQTRHLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVKLElBQVI7QUFBY0ssY0FBTSxFQUFFTDtBQUF0QjtBQUFuSCxPQUNIO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFERyxFQUVIO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BRkcsQ0FBUDtBQUlIOztBQVBtRCIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9yZWxvYWQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlbG9hZEljb24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9IGZpbGw9XCIjZGNkZGRlXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjY1IDYuMzVDMTYuMiA0LjkgMTQuMjEgNCAxMiA0Yy00LjQyIDAtNy45OSAzLjU4LTcuOTkgOHMzLjU3IDggNy45OSA4YzMuNzMgMCA2Ljg0LTIuNTUgNy43My02aC0yLjA4Yy0uODIgMi4zMy0zLjA0IDQtNS42NSA0LTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTZjMS42NiAwIDMuMTQuNjkgNC4yMiAxLjc4TDEzIDExaDdWNGwtMi4zNSAyLjM1elwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMHpcIiAvPlxyXG4gICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/reload.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReloadIcon; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ReloadIcon extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n onClick: this.props.onClick,\n fill: \"#dcddde\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL3JlbG9hZC5qc3g/MzhiMiJdLCJuYW1lcyI6WyJSZWxvYWRJY29uIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsVUFBTixTQUF5QkMsNkNBQUssQ0FBQ0MsU0FBL0IsQ0FBeUM7QUFDcERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsYUFBTyxFQUFFLEtBQUtELEtBQUwsQ0FBV0UsT0FBaEU7QUFBeUUsVUFBSSxFQUFDLFNBQTlFO0FBQXdGLGFBQU8sRUFBQyxXQUFoRztBQUE0RyxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSixJQUFSO0FBQWNLLGNBQU0sRUFBRUw7QUFBdEI7QUFBbkgsb0JBQ0g7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURHLGVBRUg7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFGRyxDQUFQO0FBSUg7O0FBUG1EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL3JlbG9hZC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVsb2FkSWNvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30gZmlsbD1cIiNkY2RkZGVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNjUgNi4zNUMxNi4yIDQuOSAxNC4yMSA0IDEyIDRjLTQuNDIgMC03Ljk5IDMuNTgtNy45OSA4czMuNTcgOCA3Ljk5IDhjMy43MyAwIDYuODQtMi41NSA3LjczLTZoLTIuMDhjLS44MiAyLjMzLTMuMDQgNC01LjY1IDQtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6XCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwelwiIC8+XHJcbiAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/reload.jsx\n"); /***/ }), @@ -899,7 +911,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Save; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Save extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL3NhdmUuanN4PzU4MGYiXSwibmFtZXMiOlsiU2F2ZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsSUFBTixTQUFtQkMsNkNBQUssQ0FBQ0MsU0FBekIsQ0FBbUM7QUFDOUNDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSxXQUFPO0FBQUssYUFBTyxFQUFDLFdBQWI7QUFBeUIsV0FBSyxFQUFFO0FBQUNFLGFBQUssRUFBRUYsSUFBUjtBQUFjRyxjQUFNLEVBQUVIO0FBQXRCO0FBQWhDLE9BQ0M7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFERCxFQUVDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGRCxDQUFQO0FBSUg7O0FBUDZDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL3NhdmUuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNhdmUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcgM0g1Yy0xLjExIDAtMiAuOS0yIDJ2MTRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2wtNC00em0yIDE2SDVWNWgxMS4xN0wxOSA3LjgzVjE5em0tNy03Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pNNiA2aDl2NEg2elwiIC8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/save.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Save; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Save extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL3NhdmUuanN4PzU4MGYiXSwibmFtZXMiOlsiU2F2ZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsSUFBTixTQUFtQkMsNkNBQUssQ0FBQ0MsU0FBekIsQ0FBbUM7QUFDOUNDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQNkMiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvc2F2ZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2F2ZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNyAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3bC00LTR6bTIgMTZINVY1aDExLjE3TDE5IDcuODNWMTl6bS03LTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zek02IDZoOXY0SDZ6XCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/save.jsx\n"); /***/ }), @@ -911,7 +923,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL3NlYXJjaC5qc3g/ODA5ZiJdLCJuYW1lcyI6WyJTZWFyY2giLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0EsV0FBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsT0FDSztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURMLEVBRUs7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZMLENBQVA7QUFJSDs7QUFQK0MiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvc2VhcmNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWFyY2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIxNnB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/search.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL3NlYXJjaC5qc3g/ODA5ZiJdLCJuYW1lcyI6WyJTZWFyY2giLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCO0FBQXRGLG9CQUNLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREwsZUFFSztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkwsQ0FBUDtBQUlIOztBQVArQyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9zZWFyY2guanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlYXJjaCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjE2cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IGZpbGw9XCIjRkZGRkZGXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/search.jsx\n"); /***/ }), @@ -923,7 +935,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _customcss_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../customcss/editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n\n\n\n\n\nclass AddonEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.save = this.save.bind(this);\n this.openNative = this.openNative.bind(this);\n this.update = this.update.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.save\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }];\n }\n\n update() {\n this.forceUpdate();\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_customcss_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n language: this.props.language,\n id: this.props.id || \"bd-addon-editor\",\n controls: this.controls,\n value: this.props.content,\n onChange: this.onChange\n });\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n }\n\n save(event, content) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(content);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL21pc2MvYWRkb25lZGl0b3IuanN4P2ViOWMiXSwibmFtZXMiOlsiQWRkb25FZGl0b3IiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsIm9uQ2hhbmdlIiwiYmluZCIsInNhdmUiLCJvcGVuTmF0aXZlIiwidXBkYXRlIiwiY29udHJvbHMiLCJsYWJlbCIsImNyZWF0ZUVsZW1lbnQiLCJTYXZlIiwic2l6ZSIsInRvb2x0aXAiLCJTdHJpbmdzIiwiQ3VzdG9tQ1NTIiwib25DbGljayIsIkVkaXQiLCJDb2ciLCJzZXR0aW5ncyIsImZvcmNlVXBkYXRlIiwidXBkYXRlRWRpdG9yIiwibmV3Q1NTIiwiZWRpdG9yIiwidmFsdWUiLCJzZXNzaW9uIiwiZ2V0VmFsdWUiLCJuZXdWYWx1ZSIsInNldFZhbHVlIiwic2hvd1NldHRpbmdzIiwia2V5QmluZGluZyIsIiRkZWZhdWx0SGFuZGxlciIsImNvbW1hbmRzIiwic2hvd1NldHRpbmdzTWVudSIsImV4ZWMiLCJyZXNpemUiLCJzZXRFZGl0b3JSZWYiLCJlZGl0b3JSZWYiLCJjdXJyZW50IiwicmVuZGVyIiwibGFuZ3VhZ2UiLCJpZCIsImNvbnRlbnQiLCJldmVudCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsTUFBTUEsV0FBTixTQUEwQkMsNkNBQUssQ0FBQ0MsU0FBaEMsQ0FBMEM7QUFFckRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUVBLFNBQUtDLGlCQUFMLEdBQXlCLEtBQXpCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLQyxJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVRCxJQUFWLENBQWUsSUFB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LEdBQXlCLElBQXpCO0FBQ0g7O0FBRURHLE1BQUksQ0FBQ3NDLEtBQUQsRUFBUUQsT0FBUixFQUFpQjtBQUNqQixTQUFLeEMsaUJBQUwsR0FBeUIsS0FBekI7QUFDQSxRQUFJLEtBQUtELEtBQUwsQ0FBV0ksSUFBZixFQUFxQixLQUFLSixLQUFMLENBQVdJLElBQVgsQ0FBZ0JxQyxPQUFoQjtBQUN4Qjs7QUFFRHBDLFlBQVUsR0FBRztBQUNULFFBQUksS0FBS0wsS0FBTCxDQUFXSyxVQUFmLEVBQTJCLEtBQUtMLEtBQUwsQ0FBV0ssVUFBWDtBQUM5Qjs7QUF4RG9EIiwiZmlsZSI6Ii4vc3JjL3VpL21pc2MvYWRkb25lZGl0b3IuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBFZGl0b3IgZnJvbSBcIi4uL2N1c3RvbWNzcy9lZGl0b3JcIjtcclxuaW1wb3J0IFNhdmUgZnJvbSBcIi4uL2ljb25zL3NhdmVcIjtcclxuaW1wb3J0IEVkaXQgZnJvbSBcIi4uL2ljb25zL2VkaXRcIjtcclxuaW1wb3J0IENvZyBmcm9tIFwiLi4vaWNvbnMvY29nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcblxyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2F2ZSA9IHRoaXMuc2F2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub3Blbk5hdGl2ZSA9IHRoaXMub3Blbk5hdGl2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250cm9scyA9IFtcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KFNhdmUsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zYXZlLCBvbkNsaWNrOiB0aGlzLnNhdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRWRpdCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLm9wZW5OYXRpdmUsIG9uQ2xpY2s6IHRoaXMub3Blbk5hdGl2ZX0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChDb2csIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zZXR0aW5ncywgb25DbGljazogXCJzaG93U2V0dGluZ3NcIn1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSgpIHtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRWRpdG9yKG5ld0NTUykge1xyXG4gICAgICAgIGlmICghdGhpcy5lZGl0b3IpIHJldHVybjtcclxuICAgICAgICB0aGlzLmVkaXRvci52YWx1ZSA9IG5ld0NTUztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnNlc3Npb24uZ2V0VmFsdWUoKTt9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NldHRpbmdzKCkge3JldHVybiB0aGlzLmVkaXRvci5rZXlCaW5kaW5nLiRkZWZhdWx0SGFuZGxlci5jb21tYW5kcy5zaG93U2V0dGluZ3NNZW51LmV4ZWModGhpcy5lZGl0b3IpO31cclxuICAgIHJlc2l6ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3IucmVzaXplKCk7fVxyXG5cclxuICAgIHNldEVkaXRvclJlZihlZGl0b3IpIHtcclxuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0b3JSZWYgJiYgdHlwZW9mKHRoaXMucHJvcHMuZWRpdG9yUmVmLmN1cnJlbnQpICE9PSBcInVuZGVmaW5lZFwiKSB0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50ID0gZWRpdG9yO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmKSB0aGlzLnByb3BzLmVkaXRvclJlZiA9IGVkaXRvcjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxFZGl0b3IgcmVmPXt0aGlzLnNldEVkaXRvclJlZi5iaW5kKHRoaXMpfSBsYW5ndWFnZT17dGhpcy5wcm9wcy5sYW5ndWFnZX0gaWQ9e3RoaXMucHJvcHMuaWQgfHwgXCJiZC1hZGRvbi1lZGl0b3JcIn0gY29udHJvbHM9e3RoaXMuY29udHJvbHN9IHZhbHVlPXt0aGlzLnByb3BzLmNvbnRlbnR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKGV2ZW50LCBjb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNhdmUpIHRoaXMucHJvcHMuc2F2ZShjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5OYXRpdmUpIHRoaXMucHJvcHMub3Blbk5hdGl2ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/misc/addoneditor.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _customcss_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../customcss/editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n\n\n\n\n\nclass AddonEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.save = this.save.bind(this);\n this.openNative = this.openNative.bind(this);\n this.update = this.update.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.save\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }];\n }\n\n update() {\n this.forceUpdate();\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_customcss_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n language: this.props.language,\n id: this.props.id || \"bd-addon-editor\",\n controls: this.controls,\n value: this.props.content,\n onChange: this.onChange\n });\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n }\n\n save(event, content) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(content);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL21pc2MvYWRkb25lZGl0b3IuanN4P2ViOWMiXSwibmFtZXMiOlsiQWRkb25FZGl0b3IiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsIm9uQ2hhbmdlIiwiYmluZCIsInNhdmUiLCJvcGVuTmF0aXZlIiwidXBkYXRlIiwiY29udHJvbHMiLCJsYWJlbCIsImNyZWF0ZUVsZW1lbnQiLCJTYXZlIiwic2l6ZSIsInRvb2x0aXAiLCJTdHJpbmdzIiwiQ3VzdG9tQ1NTIiwib25DbGljayIsIkVkaXQiLCJDb2ciLCJzZXR0aW5ncyIsImZvcmNlVXBkYXRlIiwidXBkYXRlRWRpdG9yIiwibmV3Q1NTIiwiZWRpdG9yIiwidmFsdWUiLCJzZXNzaW9uIiwiZ2V0VmFsdWUiLCJuZXdWYWx1ZSIsInNldFZhbHVlIiwic2hvd1NldHRpbmdzIiwia2V5QmluZGluZyIsIiRkZWZhdWx0SGFuZGxlciIsImNvbW1hbmRzIiwic2hvd1NldHRpbmdzTWVudSIsImV4ZWMiLCJyZXNpemUiLCJzZXRFZGl0b3JSZWYiLCJlZGl0b3JSZWYiLCJjdXJyZW50IiwicmVuZGVyIiwibGFuZ3VhZ2UiLCJpZCIsImNvbnRlbnQiLCJldmVudCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsTUFBTUEsV0FBTixTQUEwQkMsNkNBQUssQ0FBQ0MsU0FBaEMsQ0FBMEM7QUFFckRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUVBLFNBQUtDLGlCQUFMLEdBQXlCLEtBQXpCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLQyxJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVRCxJQUFWLENBQWUsSUFB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TCxHQUF5QixJQUF6QjtBQUNIOztBQUVERyxNQUFJLENBQUNzQyxLQUFELEVBQVFELE9BQVIsRUFBaUI7QUFDakIsU0FBS3hDLGlCQUFMLEdBQXlCLEtBQXpCO0FBQ0EsUUFBSSxLQUFLRCxLQUFMLENBQVdJLElBQWYsRUFBcUIsS0FBS0osS0FBTCxDQUFXSSxJQUFYLENBQWdCcUMsT0FBaEI7QUFDeEI7O0FBRURwQyxZQUFVLEdBQUc7QUFDVCxRQUFJLEtBQUtMLEtBQUwsQ0FBV0ssVUFBZixFQUEyQixLQUFLTCxLQUFMLENBQVdLLFVBQVg7QUFDOUI7O0FBeERvRCIsImZpbGUiOiIuL3NyYy91aS9taXNjL2FkZG9uZWRpdG9yLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRWRpdG9yIGZyb20gXCIuLi9jdXN0b21jc3MvZWRpdG9yXCI7XHJcbmltcG9ydCBTYXZlIGZyb20gXCIuLi9pY29ucy9zYXZlXCI7XHJcbmltcG9ydCBFZGl0IGZyb20gXCIuLi9pY29ucy9lZGl0XCI7XHJcbmltcG9ydCBDb2cgZnJvbSBcIi4uL2ljb25zL2NvZ1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25FZGl0b3IgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNhdmUgPSB0aGlzLnNhdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9wZW5OYXRpdmUgPSB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZSA9IHRoaXMudXBkYXRlLmJpbmQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29udHJvbHMgPSBbXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChTYXZlLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2F2ZSwgb25DbGljazogdGhpcy5zYXZlfSxcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXQsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5vcGVuTmF0aXZlLCBvbkNsaWNrOiB0aGlzLm9wZW5OYXRpdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29nLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2V0dGluZ3MsIG9uQ2xpY2s6IFwic2hvd1NldHRpbmdzXCJ9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUVkaXRvcihuZXdDU1MpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5lZGl0b3IudmFsdWUgPSBuZXdDU1M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCkge3JldHVybiB0aGlzLmVkaXRvci5zZXNzaW9uLmdldFZhbHVlKCk7fVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtyZXR1cm4gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjKHRoaXMuZWRpdG9yKTt9XHJcbiAgICByZXNpemUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO31cclxuXHJcbiAgICBzZXRFZGl0b3JSZWYoZWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmICYmIHR5cGVvZih0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50KSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5wcm9wcy5lZGl0b3JSZWYuY3VycmVudCA9IGVkaXRvcjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BzLmVkaXRvclJlZikgdGhpcy5wcm9wcy5lZGl0b3JSZWYgPSBlZGl0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8RWRpdG9yIHJlZj17dGhpcy5zZXRFZGl0b3JSZWYuYmluZCh0aGlzKX0gbGFuZ3VhZ2U9e3RoaXMucHJvcHMubGFuZ3VhZ2V9IGlkPXt0aGlzLnByb3BzLmlkIHx8IFwiYmQtYWRkb24tZWRpdG9yXCJ9IGNvbnRyb2xzPXt0aGlzLmNvbnRyb2xzfSB2YWx1ZT17dGhpcy5wcm9wcy5jb250ZW50fSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gLz47XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZShldmVudCwgY29udGVudCkge1xyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5zYXZlKSB0aGlzLnByb3BzLnNhdmUoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk5hdGl2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vcGVuTmF0aXZlKSB0aGlzLnByb3BzLm9wZW5OYXRpdmUoKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/misc/addoneditor.jsx\n"); /***/ }), @@ -935,7 +947,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Modals; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n\n\n\nclass Modals {\n static get shouldShowAddonErrors() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"addons\", \"addonErrors\");\n }\n\n static get ModalStack() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n }\n\n static get AlertModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByPrototypes(\"handleCancel\", \"handleSubmit\", \"handleMinorConfirm\");\n }\n\n static get TextElement() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Sizes\", \"Weights\");\n }\n\n static get ConfirmationModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.defaultProps && m.key && m.key() == \"confirm-modal\");\n }\n\n static get Markdown() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Markdown\");\n }\n\n static default(title, content) {\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
\n
${title}
\n
\n
\n
\n
\n ${content}\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n document.querySelector(\"#app-mount\").append(modal);\n }\n\n static alert(title, content) {\n this.showConfirmationModal(title, content);\n }\n /**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `Markdown` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n * @param {string} [options.key] - key used to identify the modal. If not provided, one is generated and returned\r\n * @returns {string} - the key used for this modal\r\n */\n\n\n static showConfirmationModal(title, content, options = {}) {\n const Markdown = this.Markdown;\n const ConfirmationModal = this.ConfirmationModal;\n const ModalStack = this.ModalStack;\n if (content instanceof _structs_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) content = content.toString();\n if (!this.ModalStack || !this.ConfirmationModal || !this.Markdown) return this.default(title, content);\n\n const emptyFunction = () => {};\n\n const {\n onConfirm = emptyFunction,\n onCancel = emptyFunction,\n confirmText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.okay,\n cancelText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.cancel,\n danger = false,\n key = undefined\n } = options;\n if (!Array.isArray(content)) content = [content];\n content = content.map(c => typeof c === \"string\" ? modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Markdown, null, c) : c);\n return ModalStack.push(ConfirmationModal, {\n header: title,\n children: content,\n red: danger,\n confirmText: confirmText,\n cancelText: cancelText,\n onConfirm: onConfirm,\n onCancel: onCancel\n }, key);\n }\n\n static showAddonErrors({\n plugins: pluginErrors = [],\n themes: themeErrors = []\n }) {\n if (!pluginErrors || !themeErrors || !this.shouldShowAddonErrors) return;\n if (!pluginErrors.length && !themeErrors.length) return;\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.addonErrors}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.plugins}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.themes}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.name}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.message}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.error}
\n
\n
\n
\n\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n\n const generateTab = function (errors) {\n const container = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n\n for (const err of errors) {\n const error = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
${err.name ? err.name : err.file}
\n
${err.message}
\n \n
`);\n container.append(error);\n\n if (err.error) {\n error.querySelectorAll(\"a\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].stacktrace(\"AddonError\", `Error details for ${err.name ? err.name : err.file}.`, err.error);\n }));\n }\n }\n\n return container;\n };\n\n const tabs = [generateTab(pluginErrors), generateTab(themeErrors)];\n modal.querySelectorAll(\".tab-bar-item\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n const selected = modal.querySelector(\".tab-bar-item.selected\");\n if (selected) modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].removeClass(selected, \"selected\");\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(e.target, \"selected\");\n const scroller = modal.querySelector(\".scroller\");\n scroller.innerHTML = \"\";\n scroller.append(tabs[modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].index(e.target)]);\n }));\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\").append(modal);\n if (pluginErrors.length) modal.querySelector(\".tab-bar-item\").click();else modal.querySelectorAll(\".tab-bar-item\")[1].click();\n }\n\n static showChangelogModal(options = {}) {\n const ModalStack = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n const ChangelogClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"fixed\", \"improved\");\n const TextElement = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Text\");\n const FlexChild = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Child\");\n const Titles = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Tags\", \"default\");\n const Changelog = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.defaultProps && m.defaultProps.selectable == false);\n const MarkdownParser = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"defaultRules\", \"parse\");\n if (!Changelog || !ModalStack || !ChangelogClasses || !TextElement || !FlexChild || !Titles || !MarkdownParser) return modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].warn(\"Modals\", \"showChangelogModal missing modules\");\n const {\n image = \"https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5\",\n description = \"\",\n changes = [],\n title = \"BandagedBD\",\n subtitle = `v${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion}`,\n footer\n } = options;\n const ce = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement;\n const changelogItems = [ce(\"img\", {\n src: image\n })];\n if (description) changelogItems.push(ce(\"p\", null, MarkdownParser.parse(description)));\n\n for (let c = 0; c < changes.length; c++) {\n const entry = changes[c];\n const type = ChangelogClasses[entry.type] ? ChangelogClasses[entry.type] : ChangelogClasses.added;\n const margin = c == 0 ? ChangelogClasses.marginTop : \"\";\n changelogItems.push(ce(\"h1\", {\n className: `${type} ${margin}`\n }, entry.title));\n const list = ce(\"ul\", null, entry.items.map(i => ce(\"li\", null, MarkdownParser.parse(i))));\n changelogItems.push(list);\n }\n\n const renderHeader = function () {\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, ce(Titles.default, {\n tag: Titles.Tags.H4\n }, title), ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD,\n className: ChangelogClasses.date\n }, subtitle));\n };\n\n const renderFooter = () => {\n const Anchor = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.displayName == \"Anchor\");\n const AnchorClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"anchorUnderlineOnHover\") || {\n anchor: \"anchor-3Z-8Bb\",\n anchorUnderlineOnHover: \"anchorUnderlineOnHover-2ESHQB\"\n };\n\n const joinSupportServer = click => {\n click.preventDefault();\n click.stopPropagation();\n ModalStack.pop();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(\"2HScm8j\");\n };\n\n const supportLink = Anchor ? ce(Anchor, {\n onClick: joinSupportServer\n }, \"Join our Discord Server.\") : ce(\"a\", {\n className: `${AnchorClasses.anchor} ${AnchorClasses.anchorUnderlineOnHover}`,\n onClick: joinSupportServer\n }, \"Join our Discord Server.\");\n const defaultFooter = ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD\n }, \"Need support? \", supportLink);\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, footer ? footer : defaultFooter);\n };\n\n return ModalStack.push(Changelog, {\n className: ChangelogClasses.container,\n selectable: true,\n onScroll: _ => _,\n onClose: _ => _,\n renderHeader: renderHeader,\n renderFooter: renderFooter,\n children: changelogItems\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL21vZGFscy5qcz8zYWIyIl0sIm5hbWVzIjpbIk1vZGFscyIsInNob3VsZFNob3dBZGRvbkVycm9ycyIsIlNldHRpbmdzIiwiZ2V0IiwiTW9kYWxTdGFjayIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsIkFsZXJ0TW9kYWwiLCJnZXRCeVByb3RvdHlwZXMiLCJUZXh0RWxlbWVudCIsIkNvbmZpcm1hdGlvbk1vZGFsIiwiZ2V0TW9kdWxlIiwibSIsImRlZmF1bHRQcm9wcyIsImtleSIsIk1hcmtkb3duIiwiZmluZEJ5RGlzcGxheU5hbWUiLCJkZWZhdWx0IiwidGl0bGUiLCJjb250ZW50IiwibW9kYWwiLCJET00iLCJjcmVhdGVFbGVtZW50IiwiU3RyaW5ncyIsIm9rYXkiLCJxdWVyeVNlbGVjdG9yIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNsYXNzTGlzdCIsImFkZCIsInNldFRpbWVvdXQiLCJyZW1vdmUiLCJkb2N1bWVudCIsImFwcGVuZCIsImFsZXJ0Iiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwib3B0aW9ucyIsIkZvcm1hdHRhYmxlU3RyaW5nIiwidG9TdHJpbmciLCJlbXB0eUZ1bmN0aW9uIiwib25Db25maXJtIiwib25DYW5jZWwiLCJjb25maXJtVGV4dCIsImNhbmNlbFRleHQiLCJjYW5jZWwiLCJkYW5nZXIiLCJ1bmRlZmluZWQiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJjIiwiUmVhY3QiLCJwdXNoIiwiaGVhZGVyIiwiY2hpbGRyZW4iLCJyZWQiLCJzaG93QWRkb25FcnJvcnMiLCJwbHVnaW5zIiwicGx1Z2luRXJyb3JzIiwidGhlbWVzIiwidGhlbWVFcnJvcnMiLCJsZW5ndGgiLCJhZGRvbkVycm9ycyIsIlBhbmVscyIsIm5hbWUiLCJtZXNzYWdlIiwiZXJyb3IiLCJnZW5lcmF0ZVRhYiIsImVycm9ycyIsImNvbnRhaW5lciIsImVyciIsImZpbGUiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImVsIiwiZSIsInByZXZlbnREZWZhdWx0IiwiTG9nZ2VyIiwic3RhY2t0cmFjZSIsInRhYnMiLCJzZWxlY3RlZCIsInJlbW92ZUNsYXNzIiwiYWRkQ2xhc3MiLCJ0YXJnZXQiLCJzY3JvbGxlciIsImlubmVySFRNTCIsImluZGV4IiwicXVlcnkiLCJjbGljayIsInNob3dDaGFuZ2Vsb2dNb2RhbCIsIkNoYW5nZWxvZ0NsYXNzZXMiLCJGbGV4Q2hpbGQiLCJUaXRsZXMiLCJDaGFuZ2Vsb2ciLCJzZWxlY3RhYmxlIiwiTWFya2Rvd25QYXJzZXIiLCJ3YXJuIiwiaW1hZ2UiLCJkZXNjcmlwdGlvbiIsImNoYW5nZXMiLCJzdWJ0aXRsZSIsIkNvbmZpZyIsImJiZFZlcnNpb24iLCJmb290ZXIiLCJjZSIsImNoYW5nZWxvZ0l0ZW1zIiwic3JjIiwicGFyc2UiLCJlbnRyeSIsInR5cGUiLCJhZGRlZCIsIm1hcmdpbiIsIm1hcmdpblRvcCIsImNsYXNzTmFtZSIsImxpc3QiLCJpdGVtcyIsImkiLCJyZW5kZXJIZWFkZXIiLCJDaGlsZCIsImdyb3ciLCJzaHJpbmsiLCJ0YWciLCJUYWdzIiwiSDQiLCJzaXplIiwiU2l6ZXMiLCJTTUFMTCIsImNvbG9yIiwiQ29sb3JzIiwiU1RBTkRBUkQiLCJkYXRlIiwicmVuZGVyRm9vdGVyIiwiQW5jaG9yIiwiZGlzcGxheU5hbWUiLCJBbmNob3JDbGFzc2VzIiwiYW5jaG9yIiwiYW5jaG9yVW5kZXJsaW5lT25Ib3ZlciIsImpvaW5TdXBwb3J0U2VydmVyIiwic3RvcFByb3BhZ2F0aW9uIiwicG9wIiwiRGlzY29yZE1vZHVsZXMiLCJJbnZpdGVBY3Rpb25zIiwiYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbCIsInN1cHBvcnRMaW5rIiwib25DbGljayIsImRlZmF1bHRGb290ZXIiLCJvblNjcm9sbCIsIl8iLCJvbkNsb3NlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRWUsTUFB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QUE1RTtBQUErRVEsZUFBTyxFQUFFUDtBQUF4RixPQUFOLEVBQWtILDBCQUFsSCxDQUF0RztBQUNBLFlBQU1RLGFBQWEsR0FBR3pDLEVBQUUsQ0FBQzlGLFdBQUQsRUFBYztBQUFDa0gsWUFBSSxFQUFFbEgsV0FBVyxDQUFDbUgsS0FBWixDQUFrQkMsS0FBekI7QUFBZ0NDLGFBQUssRUFBRXJILFdBQVcsQ0FBQ3NILE1BQVosQ0FBbUJDO0FBQTFELE9BQWQsRUFBbUYsZ0JBQW5GLEVBQXFHYyxXQUFyRyxDQUF4QjtBQUNBLGFBQU92QyxFQUFFLENBQUNiLFNBQVMsQ0FBQzJCLEtBQVgsRUFBa0I7QUFBQ0MsWUFBSSxFQUFFLENBQVA7QUFBVUMsY0FBTSxFQUFFO0FBQWxCLE9BQWxCLEVBQXdDakIsTUFBTSxHQUFHQSxNQUFILEdBQVkwQyxhQUExRCxDQUFUO0FBQ0gsS0FaRDs7QUFjQSxXQUFPNUksVUFBVSxDQUFDK0MsSUFBWCxDQUFnQnlDLFNBQWhCLEVBQTJCO0FBQzlCb0IsZUFBUyxFQUFFdkIsZ0JBQWdCLENBQUNyQixTQURFO0FBRTlCeUIsZ0JBQVUsRUFBRSxJQUZrQjtBQUc5Qm9ELGNBQVEsRUFBRUMsQ0FBQyxJQUFJQSxDQUhlO0FBSTlCQyxhQUFPLEVBQUVELENBQUMsSUFBSUEsQ0FKZ0I7QUFLOUI5QixrQkFBWSxFQUFFQSxZQUxnQjtBQU05QmMsa0JBQVksRUFBRUEsWUFOZ0I7QUFPOUI3RSxjQUFRLEVBQUVtRDtBQVBvQixLQUEzQixDQUFQO0FBU0g7O0FBcE51QiIsImZpbGUiOiIuL3NyYy91aS9tb2RhbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IHtMb2dnZXIsIFdlYnBhY2tNb2R1bGVzLCBSZWFjdCwgU2V0dGluZ3MsIFN0cmluZ3MsIERPTSwgRGlzY29yZE1vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBGb3JtYXR0YWJsZVN0cmluZyBmcm9tIFwiLi4vc3RydWN0cy9zdHJpbmdcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZGFscyB7XHJcblxyXG4gICAgc3RhdGljIGdldCBzaG91bGRTaG93QWRkb25FcnJvcnMoKSB7cmV0dXJuIFNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiYWRkb25zXCIsIFwiYWRkb25FcnJvcnNcIik7fVxyXG5cclxuICAgIHN0YXRpYyBnZXQgTW9kYWxTdGFjaygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hcIiwgXCJ1cGRhdGVcIiwgXCJwb3BcIiwgXCJwb3BXaXRoS2V5XCIpO31cclxuICAgIHN0YXRpYyBnZXQgQWxlcnRNb2RhbCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKFwiaGFuZGxlQ2FuY2VsXCIsIFwiaGFuZGxlU3VibWl0XCIsIFwiaGFuZGxlTWlub3JDb25maXJtXCIpO31cclxuICAgIHN0YXRpYyBnZXQgVGV4dEVsZW1lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJTaXplc1wiLCBcIldlaWdodHNcIik7fVxyXG4gICAgc3RhdGljIGdldCBDb25maXJtYXRpb25Nb2RhbCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0UHJvcHMgJiYgbS5rZXkgJiYgbS5rZXkoKSA9PSBcImNvbmZpcm0tbW9kYWxcIik7fVxyXG4gICAgc3RhdGljIGdldCBNYXJrZG93bigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJNYXJrZG93blwiKTt9XHJcblxyXG4gICAgc3RhdGljIGRlZmF1bHQodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBtb2RhbCA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtd3JhcHBlciB0aGVtZS1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtYmFja2Ryb3AgYmFja2Ryb3AtMXdybUtCXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwgbW9kYWwtMVVHZG5SXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsLWlubmVyIGlubmVyLTFKZUdWY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGhlYWRlci0xUl9BakZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPiR7dGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgZmFkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXIgZm9vdGVyLTJ5ZkNnWCBmb290ZXItM3JEV2RDIGZvb3Rlci0yZ0wxcHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYmQtYnV0dG9uXCI+JHtTdHJpbmdzLk1vZGFscy5va2F5fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5gKTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmZvb3RlciBidXR0b25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgbW9kYWwuY2xhc3NMaXN0LmFkZChcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RhbC5yZW1vdmUoKTsgfSwgMzAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmJkLWJhY2tkcm9wXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG1vZGFsLmNsYXNzTGlzdC5hZGQoXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikuYXBwZW5kKG1vZGFsKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYWxlcnQodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbCh0aXRsZSwgY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyBhIGdlbmVyaWMgYnV0IHZlcnkgY3VzdG9taXphYmxlIGNvbmZpcm1hdGlvbiBtb2RhbCB3aXRoIG9wdGlvbmFsIGNvbmZpcm0gYW5kIGNhbmNlbCBjYWxsYmFja3MuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSB0aXRsZSBvZiB0aGUgbW9kYWxcclxuICAgICAqIEBwYXJhbSB7KHN0cmluZ3xSZWFjdEVsZW1lbnR8QXJyYXk8c3RyaW5nfFJlYWN0RWxlbWVudD4pfSBjaGlsZHJlbiAtIGEgc2luZ2xlIG9yIG1peGVkIGFycmF5IG9mIHJlYWN0IGVsZW1lbnRzIGFuZCBzdHJpbmdzLiBFdmVyeXRoaW5nIGlzIHdyYXBwZWQgaW4gRGlzY29yZCdzIGBNYXJrZG93bmAgY29tcG9uZW50IHNvIHN0cmluZ3Mgd2lsbCBzaG93IGFuZCByZW5kZXIgcHJvcGVybHkuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIC0gb3B0aW9ucyB0byBtb2RpZnkgdGhlIG1vZGFsXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRhbmdlcj1mYWxzZV0gLSB3aGV0aGVyIHRoZSBtYWluIGJ1dHRvbiBzaG91bGQgYmUgcmVkIG9yIG5vdFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNvbmZpcm1UZXh0PU9rYXldIC0gdGV4dCBmb3IgdGhlIGNvbmZpcm1hdGlvbi9zdWJtaXQgYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2FuY2VsVGV4dD1DYW5jZWxdIC0gdGV4dCBmb3IgdGhlIGNhbmNlbCBidXR0b25cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ29uZmlybT1OT09QXSAtIGNhbGxiYWNrIHRvIG9jY3VyIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b25cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ2FuY2VsPU5PT1BdIC0gY2FsbGJhY2sgdG8gb2NjdXIgd2hlbiBjbGlja2luZyB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmtleV0gLSBrZXkgdXNlZCB0byBpZGVudGlmeSB0aGUgbW9kYWwuIElmIG5vdCBwcm92aWRlZCwgb25lIGlzIGdlbmVyYXRlZCBhbmQgcmV0dXJuZWRcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGtleSB1c2VkIGZvciB0aGlzIG1vZGFsXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBzaG93Q29uZmlybWF0aW9uTW9kYWwodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IE1hcmtkb3duID0gdGhpcy5NYXJrZG93bjtcclxuICAgICAgICBjb25zdCBDb25maXJtYXRpb25Nb2RhbCA9IHRoaXMuQ29uZmlybWF0aW9uTW9kYWw7XHJcbiAgICAgICAgY29uc3QgTW9kYWxTdGFjayA9IHRoaXMuTW9kYWxTdGFjaztcclxuICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIEZvcm1hdHRhYmxlU3RyaW5nKSBjb250ZW50ID0gY29udGVudC50b1N0cmluZygpO1xyXG4gICAgICAgIGlmICghdGhpcy5Nb2RhbFN0YWNrIHx8ICF0aGlzLkNvbmZpcm1hdGlvbk1vZGFsIHx8ICF0aGlzLk1hcmtkb3duKSByZXR1cm4gdGhpcy5kZWZhdWx0KHRpdGxlLCBjb250ZW50KTtcclxuXHJcbiAgICAgICAgY29uc3QgZW1wdHlGdW5jdGlvbiA9ICgpID0+IHt9O1xyXG4gICAgICAgIGNvbnN0IHtvbkNvbmZpcm0gPSBlbXB0eUZ1bmN0aW9uLCBvbkNhbmNlbCA9IGVtcHR5RnVuY3Rpb24sIGNvbmZpcm1UZXh0ID0gU3RyaW5ncy5Nb2RhbHMub2theSwgY2FuY2VsVGV4dCA9IFN0cmluZ3MuTW9kYWxzLmNhbmNlbCwgZGFuZ2VyID0gZmFsc2UsIGtleSA9IHVuZGVmaW5lZH0gPSBvcHRpb25zO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb250ZW50KSkgY29udGVudCA9IFtjb250ZW50XTtcclxuICAgICAgICBjb250ZW50ID0gY29udGVudC5tYXAoYyA9PiB0eXBlb2YoYykgPT09IFwic3RyaW5nXCIgPyBSZWFjdC5jcmVhdGVFbGVtZW50KE1hcmtkb3duLCBudWxsLCBjKSA6IGMpO1xyXG5cclxuICAgICAgICByZXR1cm4gTW9kYWxTdGFjay5wdXNoKENvbmZpcm1hdGlvbk1vZGFsLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcjogdGl0bGUsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjb250ZW50LFxyXG4gICAgICAgICAgICByZWQ6IGRhbmdlcixcclxuICAgICAgICAgICAgY29uZmlybVRleHQ6IGNvbmZpcm1UZXh0LFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiBjYW5jZWxUZXh0LFxyXG4gICAgICAgICAgICBvbkNvbmZpcm06IG9uQ29uZmlybSxcclxuICAgICAgICAgICAgb25DYW5jZWw6IG9uQ2FuY2VsXHJcbiAgICAgICAgfSwga2V5KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2hvd0FkZG9uRXJyb3JzKHtwbHVnaW5zOiBwbHVnaW5FcnJvcnMgPSBbXSwgdGhlbWVzOiB0aGVtZUVycm9ycyA9IFtdfSkge1xyXG4gICAgICAgIGlmICghcGx1Z2luRXJyb3JzIHx8ICF0aGVtZUVycm9ycyB8fCAhdGhpcy5zaG91bGRTaG93QWRkb25FcnJvcnMpIHJldHVybjtcclxuICAgICAgICBpZiAoIXBsdWdpbkVycm9ycy5sZW5ndGggJiYgIXRoZW1lRXJyb3JzLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IG1vZGFsID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJiZC1tb2RhbC13cmFwcGVyIHRoZW1lLWRhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLWJhY2tkcm9wIGJhY2tkcm9wLTF3cm1LQlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwgYmQtY29udGVudC1tb2RhbCBtb2RhbC0xVUdkblJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1pbm5lciBpbm5lci0xSmVHVmNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGhlYWRlci0xUl9BakZcIj48ZGl2IGNsYXNzPVwidGl0bGVcIj4ke1N0cmluZ3MuTW9kYWxzLmFkZG9uRXJyb3JzfTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXIgVE9QXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXItaXRlbVwiPiR7U3RyaW5ncy5QYW5lbHMucGx1Z2luc308L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhci1pdGVtXCI+JHtTdHJpbmdzLlBhbmVscy50aGVtZXN9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW5hbWVcIj4ke1N0cmluZ3MuTW9kYWxzLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNvbHVtbi1tZXNzYWdlXCI+JHtTdHJpbmdzLk1vZGFscy5tZXNzYWdlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tZXJyb3JcIj4ke1N0cmluZ3MuTW9kYWxzLmVycm9yfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgZmFkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXIgZm9vdGVyLTJ5ZkNnWCBmb290ZXItM3JEV2RDIGZvb3Rlci0yZ0wxcHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJiZC1idXR0b25cIj4ke1N0cmluZ3MuTW9kYWxzLm9rYXl9PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+YCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGdlbmVyYXRlVGFiID0gZnVuY3Rpb24oZXJyb3JzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiZXJyb3JzXCI+YCk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXJyIG9mIGVycm9ycykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cImVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW5hbWVcIj4ke2Vyci5uYW1lID8gZXJyLm5hbWUgOiBlcnIuZmlsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tbWVzc2FnZVwiPiR7ZXJyLm1lc3NhZ2V9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLWVycm9yXCI+PGEgY2xhc3M9XCJlcnJvci1saW5rXCIgaHJlZj1cIlwiPiR7ZXJyLmVycm9yID8gZXJyLmVycm9yLm1lc3NhZ2UgOiBcIlwifTwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnF1ZXJ5U2VsZWN0b3JBbGwoXCJhXCIpLmZvckVhY2goZWwgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UoXCJBZGRvbkVycm9yXCIsIGBFcnJvciBkZXRhaWxzIGZvciAke2Vyci5uYW1lID8gZXJyLm5hbWUgOiBlcnIuZmlsZX0uYCwgZXJyLmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB0YWJzID0gW2dlbmVyYXRlVGFiKHBsdWdpbkVycm9ycyksIGdlbmVyYXRlVGFiKHRoZW1lRXJyb3JzKV07XHJcblxyXG4gICAgICAgIG1vZGFsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIudGFiLWJhci1pdGVtXCIpLmZvckVhY2goZWwgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnRhYi1iYXItaXRlbS5zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSBET00ucmVtb3ZlQ2xhc3Moc2VsZWN0ZWQsIFwic2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIERPTS5hZGRDbGFzcyhlLnRhcmdldCwgXCJzZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsZXIgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnNjcm9sbGVyXCIpO1xyXG4gICAgICAgICAgICBzY3JvbGxlci5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgICBzY3JvbGxlci5hcHBlbmQodGFic1tET00uaW5kZXgoZS50YXJnZXQpXSk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmZvb3RlciBidXR0b25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgRE9NLmFkZENsYXNzKG1vZGFsLCBcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RhbC5yZW1vdmUoKTsgfSwgMzAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmJkLWJhY2tkcm9wXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIERPTS5hZGRDbGFzcyhtb2RhbCwgXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgRE9NLnF1ZXJ5KFwiI2FwcC1tb3VudFwiKS5hcHBlbmQobW9kYWwpO1xyXG4gICAgICAgIGlmIChwbHVnaW5FcnJvcnMubGVuZ3RoKSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnRhYi1iYXItaXRlbVwiKS5jbGljaygpO1xyXG4gICAgICAgIGVsc2UgbW9kYWwucXVlcnlTZWxlY3RvckFsbChcIi50YWItYmFyLWl0ZW1cIilbMV0uY2xpY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2hvd0NoYW5nZWxvZ01vZGFsKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IE1vZGFsU3RhY2sgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicHVzaFwiLCBcInVwZGF0ZVwiLCBcInBvcFwiLCBcInBvcFdpdGhLZXlcIik7XHJcbiAgICAgICAgY29uc3QgQ2hhbmdlbG9nQ2xhc3NlcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJmaXhlZFwiLCBcImltcHJvdmVkXCIpO1xyXG4gICAgICAgIGNvbnN0IFRleHRFbGVtZW50ID0gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJUZXh0XCIpO1xyXG4gICAgICAgIGNvbnN0IEZsZXhDaGlsZCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJDaGlsZFwiKTtcclxuICAgICAgICBjb25zdCBUaXRsZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiVGFnc1wiLCBcImRlZmF1bHRcIik7XHJcbiAgICAgICAgY29uc3QgQ2hhbmdlbG9nID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0UHJvcHMgJiYgbS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZSA9PSBmYWxzZSk7XHJcbiAgICAgICAgY29uc3QgTWFya2Rvd25QYXJzZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGVmYXVsdFJ1bGVzXCIsIFwicGFyc2VcIik7XHJcbiAgICAgICAgaWYgKCFDaGFuZ2Vsb2cgfHwgIU1vZGFsU3RhY2sgfHwgIUNoYW5nZWxvZ0NsYXNzZXMgfHwgIVRleHRFbGVtZW50IHx8ICFGbGV4Q2hpbGQgfHwgIVRpdGxlcyB8fCAhTWFya2Rvd25QYXJzZXIpIHJldHVybiBMb2dnZXIud2FybihcIk1vZGFsc1wiLCBcInNob3dDaGFuZ2Vsb2dNb2RhbCBtaXNzaW5nIG1vZHVsZXNcIik7XHJcbiAgICBcclxuICAgICAgICBjb25zdCB7aW1hZ2UgPSBcImh0dHBzOi8vcmVwb3NpdG9yeS1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEwNTQ3MzUzNy85NTdiNTQ4MC03YzI2LTExZTktODQwMS01MGZhODIwY2JhZTVcIiwgZGVzY3JpcHRpb24gPSBcIlwiLCBjaGFuZ2VzID0gW10sIHRpdGxlID0gXCJCYW5kYWdlZEJEXCIsIHN1YnRpdGxlID0gYHYke0NvbmZpZy5iYmRWZXJzaW9ufWAsIGZvb3Rlcn0gPSBvcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IGNlID0gUmVhY3QuY3JlYXRlRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjaGFuZ2Vsb2dJdGVtcyA9IFtjZShcImltZ1wiLCB7c3JjOiBpbWFnZX0pXTtcclxuICAgICAgICBpZiAoZGVzY3JpcHRpb24pIGNoYW5nZWxvZ0l0ZW1zLnB1c2goY2UoXCJwXCIsIG51bGwsIE1hcmtkb3duUGFyc2VyLnBhcnNlKGRlc2NyaXB0aW9uKSkpO1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY2hhbmdlcy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IGNoYW5nZXNbY107XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBDaGFuZ2Vsb2dDbGFzc2VzW2VudHJ5LnR5cGVdID8gQ2hhbmdlbG9nQ2xhc3Nlc1tlbnRyeS50eXBlXSA6IENoYW5nZWxvZ0NsYXNzZXMuYWRkZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IGMgPT0gMCA/IENoYW5nZWxvZ0NsYXNzZXMubWFyZ2luVG9wIDogXCJcIjtcclxuICAgICAgICAgICAgY2hhbmdlbG9nSXRlbXMucHVzaChjZShcImgxXCIsIHtjbGFzc05hbWU6IGAke3R5cGV9ICR7bWFyZ2lufWAsfSwgZW50cnkudGl0bGUpKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGNlKFwidWxcIiwgbnVsbCwgZW50cnkuaXRlbXMubWFwKGkgPT4gY2UoXCJsaVwiLCBudWxsLCBNYXJrZG93blBhcnNlci5wYXJzZShpKSkpKTtcclxuICAgICAgICAgICAgY2hhbmdlbG9nSXRlbXMucHVzaChsaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVuZGVySGVhZGVyID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjZShGbGV4Q2hpbGQuQ2hpbGQsIHtncm93OiAxLCBzaHJpbms6IDF9LFxyXG4gICAgICAgICAgICAgICAgY2UoVGl0bGVzLmRlZmF1bHQsIHt0YWc6IFRpdGxlcy5UYWdzLkg0fSwgdGl0bGUpLFxyXG4gICAgICAgICAgICAgICAgY2UoVGV4dEVsZW1lbnQsIHtzaXplOiBUZXh0RWxlbWVudC5TaXplcy5TTUFMTCwgY29sb3I6IFRleHRFbGVtZW50LkNvbG9ycy5TVEFOREFSRCwgY2xhc3NOYW1lOiBDaGFuZ2Vsb2dDbGFzc2VzLmRhdGV9LCBzdWJ0aXRsZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAgICAgY29uc3QgcmVuZGVyRm9vdGVyID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBBbmNob3IgPSBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUobSA9PiBtLmRpc3BsYXlOYW1lID09IFwiQW5jaG9yXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBBbmNob3JDbGFzc2VzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFuY2hvclVuZGVybGluZU9uSG92ZXJcIikgfHwge2FuY2hvcjogXCJhbmNob3ItM1otOEJiXCIsIGFuY2hvclVuZGVybGluZU9uSG92ZXI6IFwiYW5jaG9yVW5kZXJsaW5lT25Ib3Zlci0yRVNIUUJcIn07XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5TdXBwb3J0U2VydmVyID0gKGNsaWNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjbGljay5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgY2xpY2suc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBNb2RhbFN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuSW52aXRlQWN0aW9ucy5hY2NlcHRJbnZpdGVBbmRUcmFuc2l0aW9uVG9JbnZpdGVDaGFubmVsKFwiMkhTY204alwiKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3Qgc3VwcG9ydExpbmsgPSBBbmNob3IgPyBjZShBbmNob3IsIHtvbkNsaWNrOiBqb2luU3VwcG9ydFNlcnZlcn0sIFwiSm9pbiBvdXIgRGlzY29yZCBTZXJ2ZXIuXCIpIDogY2UoXCJhXCIsIHtjbGFzc05hbWU6IGAke0FuY2hvckNsYXNzZXMuYW5jaG9yfSAke0FuY2hvckNsYXNzZXMuYW5jaG9yVW5kZXJsaW5lT25Ib3Zlcn1gLCBvbkNsaWNrOiBqb2luU3VwcG9ydFNlcnZlcn0sIFwiSm9pbiBvdXIgRGlzY29yZCBTZXJ2ZXIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0Rm9vdGVyID0gY2UoVGV4dEVsZW1lbnQsIHtzaXplOiBUZXh0RWxlbWVudC5TaXplcy5TTUFMTCwgY29sb3I6IFRleHRFbGVtZW50LkNvbG9ycy5TVEFOREFSRH0sIFwiTmVlZCBzdXBwb3J0PyBcIiwgc3VwcG9ydExpbmspO1xyXG4gICAgICAgICAgICByZXR1cm4gY2UoRmxleENoaWxkLkNoaWxkLCB7Z3JvdzogMSwgc2hyaW5rOiAxfSwgZm9vdGVyID8gZm9vdGVyIDogZGVmYXVsdEZvb3Rlcik7XHJcbiAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiBNb2RhbFN0YWNrLnB1c2goQ2hhbmdlbG9nLCB7XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZTogQ2hhbmdlbG9nQ2xhc3Nlcy5jb250YWluZXIsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIG9uU2Nyb2xsOiBfID0+IF8sXHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IF8gPT4gXyxcclxuICAgICAgICAgICAgcmVuZGVySGVhZGVyOiByZW5kZXJIZWFkZXIsXHJcbiAgICAgICAgICAgIHJlbmRlckZvb3RlcjogcmVuZGVyRm9vdGVyLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogY2hhbmdlbG9nSXRlbXNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/modals.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Modals; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n\n\n\nclass Modals {\n static get shouldShowAddonErrors() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"addons\", \"addonErrors\");\n }\n\n static get ModalActions() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"openModal\", \"updateModal\");\n }\n\n static get ModalStack() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n }\n\n static get AlertModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByPrototypes(\"handleCancel\", \"handleSubmit\", \"handleMinorConfirm\");\n }\n\n static get TextElement() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Sizes\", \"Weights\");\n }\n\n static get ConfirmationModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"ConfirmModal\");\n }\n\n static get Markdown() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Markdown\");\n }\n\n static default(title, content) {\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
\n
${title}
\n
\n
\n
\n
\n ${content}\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n document.querySelector(\"#app-mount\").append(modal);\n }\n\n static alert(title, content) {\n this.showConfirmationModal(title, content);\n }\n /**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `Markdown` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n * @param {string} [options.key] - key used to identify the modal. If not provided, one is generated and returned\r\n * @returns {string} - the key used for this modal\r\n */\n\n\n static showConfirmationModal(title, content, options = {}) {\n const Markdown = this.Markdown;\n const ConfirmationModal = this.ConfirmationModal;\n const ModalActions = this.ModalActions;\n if (content instanceof _structs_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) content = content.toString();\n if (!this.ModalActions || !this.ConfirmationModal || !this.Markdown) return this.default(title, content);\n\n const emptyFunction = () => {};\n\n const {\n onConfirm = emptyFunction,\n onCancel = emptyFunction,\n confirmText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.okay,\n cancelText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.cancel,\n danger = false,\n key = undefined\n } = options;\n if (!Array.isArray(content)) content = [content];\n content = content.map(c => typeof c === \"string\" ? modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Markdown, null, c) : c);\n return ModalActions.openModal(props => {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(ConfirmationModal, Object.assign({\n header: title,\n red: danger,\n confirmText: confirmText,\n cancelText: cancelText,\n onConfirm: onConfirm,\n onCancel: onCancel\n }, props), content);\n }, {\n modalKey: key\n });\n }\n\n static showAddonErrors({\n plugins: pluginErrors = [],\n themes: themeErrors = []\n }) {\n if (!pluginErrors || !themeErrors || !this.shouldShowAddonErrors) return;\n if (!pluginErrors.length && !themeErrors.length) return;\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.addonErrors}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.plugins}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.themes}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.name}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.message}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.error}
\n
\n
\n
\n\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n\n const generateTab = function (errors) {\n const container = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n\n for (const err of errors) {\n const error = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
${err.name ? err.name : err.file}
\n
${err.message}
\n \n
`);\n container.append(error);\n\n if (err.error) {\n error.querySelectorAll(\"a\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].stacktrace(\"AddonError\", `Error details for ${err.name ? err.name : err.file}.`, err.error);\n }));\n }\n }\n\n return container;\n };\n\n const tabs = [generateTab(pluginErrors), generateTab(themeErrors)];\n modal.querySelectorAll(\".tab-bar-item\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n const selected = modal.querySelector(\".tab-bar-item.selected\");\n if (selected) modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].removeClass(selected, \"selected\");\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(e.target, \"selected\");\n const scroller = modal.querySelector(\".scroller\");\n scroller.innerHTML = \"\";\n scroller.append(tabs[modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].index(e.target)]);\n }));\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\").append(modal);\n if (pluginErrors.length) modal.querySelector(\".tab-bar-item\").click();else modal.querySelectorAll(\".tab-bar-item\")[1].click();\n }\n\n static showChangelogModal(options = {}) {\n const ModalStack = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n const ChangelogClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"fixed\", \"improved\");\n const TextElement = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Text\");\n const FlexChild = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Child\");\n const Titles = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Tags\", \"default\");\n const Changelog = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.defaultProps && m.defaultProps.selectable == false);\n const MarkdownParser = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"defaultRules\", \"parse\");\n if (!Changelog || !ModalStack || !ChangelogClasses || !TextElement || !FlexChild || !Titles || !MarkdownParser) return modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].warn(\"Modals\", \"showChangelogModal missing modules\");\n const {\n image = \"https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5\",\n description = \"\",\n changes = [],\n title = \"BandagedBD\",\n subtitle = `v${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion}`,\n footer\n } = options;\n const ce = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement;\n const changelogItems = [ce(\"img\", {\n src: image\n })];\n if (description) changelogItems.push(ce(\"p\", null, MarkdownParser.parse(description)));\n\n for (let c = 0; c < changes.length; c++) {\n const entry = changes[c];\n const type = ChangelogClasses[entry.type] ? ChangelogClasses[entry.type] : ChangelogClasses.added;\n const margin = c == 0 ? ChangelogClasses.marginTop : \"\";\n changelogItems.push(ce(\"h1\", {\n className: `${type} ${margin}`\n }, entry.title));\n const list = ce(\"ul\", null, entry.items.map(i => ce(\"li\", null, MarkdownParser.parse(i))));\n changelogItems.push(list);\n }\n\n const renderHeader = function () {\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, ce(Titles.default, {\n tag: Titles.Tags.H4\n }, title), ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD,\n className: ChangelogClasses.date\n }, subtitle));\n };\n\n const renderFooter = () => {\n const Anchor = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.displayName == \"Anchor\");\n const AnchorClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"anchorUnderlineOnHover\") || {\n anchor: \"anchor-3Z-8Bb\",\n anchorUnderlineOnHover: \"anchorUnderlineOnHover-2ESHQB\"\n };\n\n const joinSupportServer = click => {\n click.preventDefault();\n click.stopPropagation();\n ModalStack.pop();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(\"2HScm8j\");\n };\n\n const supportLink = Anchor ? ce(Anchor, {\n onClick: joinSupportServer\n }, \"Join our Discord Server.\") : ce(\"a\", {\n className: `${AnchorClasses.anchor} ${AnchorClasses.anchorUnderlineOnHover}`,\n onClick: joinSupportServer\n }, \"Join our Discord Server.\");\n const defaultFooter = ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD\n }, \"Need support? \", supportLink);\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, footer ? footer : defaultFooter);\n };\n\n return ModalStack.push(Changelog, {\n className: ChangelogClasses.container,\n selectable: true,\n onScroll: _ => _,\n onClose: _ => _,\n renderHeader: renderHeader,\n renderFooter: renderFooter,\n children: changelogItems\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL21vZGFscy5qcz8zYWIyIl0sIm5hbWVzIjpbIk1vZGFscyIsInNob3VsZFNob3dBZGRvbkVycm9ycyIsIlNldHRpbmdzIiwiZ2V0IiwiTW9kYWxBY3Rpb25zIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiTW9kYWxTdGFjayIsIkFsZXJ0TW9kYWwiLCJnZXRCeVByb3RvdHlwZXMiLCJUZXh0RWxlbWVudCIsIkNvbmZpcm1hdGlvbk1vZGFsIiwiZmluZEJ5RGlzcGxheU5hbWUiLCJNYXJrZG93biIsImRlZmF1bHQiLCJ0aXRsZSIsImNvbnRlbnQiLCJtb2RhbCIsIkRPTSIsImNyZWF0ZUVsZW1lbnQiLCJTdHJpbmdzIiwib2theSIsInF1ZXJ5U2VsZWN0b3IiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xhc3NMaXN0IiwiYWRkIiwic2V0VGltZW91dCIsInJlbW92ZSIsImRvY3VtZW50IiwiYXBwZW5kIiwiYWxlcnQiLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJvcHRpb25zIiwiRm9ybWF0dGFibGVTdHJpbmciLCJ0b1N0cmluZyIsImVtcHR5RnVuY3Rpb24iLCJvbkNvbmZpcm0iLCJvbkNhbmNlbCIsImNvbmZpcm1UZXh0IiwiY2FuY2VsVGV4dCIsImNhbmNlbCIsImRhbmdlciIsImtleSIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImMiLCJSZWFjdCIsIm9wZW5Nb2RhbCIsInByb3BzIiwiT2JqZWN0IiwiYXNzaWduIiwiaGVhZGVyIiwicmVkIiwibW9kYWxLZXkiLCJzaG93QWRkb25FcnJvcnMiLCJwbHVnaW5zIiwicGx1Z2luRXJyb3JzIiwidGhlbWVzIiwidGhlbWVFcnJvcnMiLCJsZW5ndGgiLCJhZGRvbkVycm9ycyIsIlBhbmVscyIsIm5hbWUiLCJtZXNzYWdlIiwiZXJyb3IiLCJnZW5lcmF0ZVRhYiIsImVycm9ycyIsImNvbnRhaW5lciIsImVyciIsImZpbGUiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImVsIiwiZSIsInByZXZlbnREZWZhdWx0IiwiTG9nZ2VyIiwic3RhY2t0cmFjZSIsInRhYnMiLCJzZWxlY3RlZCIsInJlbW92ZUNsYXNzIiwiYWRkQ2xhc3MiLCJ0YXJnZXQiLCJzY3JvbGxlciIsImlubmVySFRNTCIsImluZGV4IiwicXVlcnkiLCJjbGljayIsInNob3dDaGFuZ2Vsb2dNb2RhbCIsIkNoYW5nZWxvZ0NsYXNzZXMiLCJGbGV4Q2hpbGQiLCJUaXRsZXMiLCJDaGFuZ2Vsb2ciLCJnZXRNb2R1bGUiLCJtIiwiZGVmYXVsdFByb3BzIiwic2VsZWN0YWJsZSIsIk1hcmtkb3duUGFyc2VyIiwid2FybiIsImltYWdlIiwiZGVzY3JpcHRpb24iLCJjaGFuZ2VzIiwic3VidGl0bGUiLCJDb25maWciLCJiYmRWZXJzaW9uIiwiZm9vdGVyIiwiY2UiLCJjaGFuZ2Vsb2dJdGVtcyIsInNyYyIsInB1c2giLCJwYXJzZSIsImVudHJ5IiwidHlwZSIsImFkZGVkIiwibWFyZ2luIiwibWFyZ2luVG9wIiwiY2xhc3NOYW1lIiwibGlzdCIsIml0ZW1zIiwiaSIsInJlbmRlckhlYWRlciIsIkNoaWxkIiwiZ3JvdyIsInNocmluayIsInRhZyIsIlRhZ3MiLCJINCIsInNpemUiLCJTaXplcyIsIlNNQUxMIiwiY29sb3IiLCJDb2xvcnMiLCJTVEFOREFSRCIsImRhdGUiLCJyZW5kZXJGb290ZXIiLCJBbmNob3IiLCJkaXNwbGF5TmFtZSIsIkFuY2hvckNsYXNzZXMiLCJhbmNob3IiLCJhbmNob3JVbmRlcmxpbmVPbkhvdmVyIiwiam9pblN1cHBvcnRTZXJ2ZXIiLCJzdG9wUHJvcGFnYXRpb24iLCJwb3AiLCJEaXNjb3JkTW9kdWxlcyIsIkludml0ZUFjdGlvbnMiLCJhY2NlcHRJbnZpdGVBbmRUcmFuc2l0aW9uVG9JbnZpdGVDaGFubmVsIiwic3VwcG9ydExpbmsiLCJvbkNsaWNrIiwiZGVmYXVsdEZvb3RlciIsIm9uU2Nyb2xsIiwiXyIsIm9uQ2xvc2UiLCJjaGlsZHJl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Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge0xvZ2dlciwgV2VicGFja01vZHVsZXMsIFJlYWN0LCBTZXR0aW5ncywgU3RyaW5ncywgRE9NLCBEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IEZvcm1hdHRhYmxlU3RyaW5nIGZyb20gXCIuLi9zdHJ1Y3RzL3N0cmluZ1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kYWxzIHtcclxuXHJcbiAgICBzdGF0aWMgZ2V0IHNob3VsZFNob3dBZGRvbkVycm9ycygpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwic2V0dGluZ3NcIiwgXCJhZGRvbnNcIiwgXCJhZGRvbkVycm9yc1wiKTt9XHJcblxyXG4gICAgc3RhdGljIGdldCBNb2RhbEFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJvcGVuTW9kYWxcIiwgXCJ1cGRhdGVNb2RhbFwiKTt9XHJcbiAgICBzdGF0aWMgZ2V0IE1vZGFsU3RhY2soKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwdXNoXCIsIFwidXBkYXRlXCIsIFwicG9wXCIsIFwicG9wV2l0aEtleVwiKTt9XHJcbiAgICBzdGF0aWMgZ2V0IEFsZXJ0TW9kYWwoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvdG90eXBlcyhcImhhbmRsZUNhbmNlbFwiLCBcImhhbmRsZVN1Ym1pdFwiLCBcImhhbmRsZU1pbm9yQ29uZmlybVwiKTt9XHJcbiAgICBzdGF0aWMgZ2V0IFRleHRFbGVtZW50KCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiU2l6ZXNcIiwgXCJXZWlnaHRzXCIpO31cclxuICAgIHN0YXRpYyBnZXQgQ29uZmlybWF0aW9uTW9kYWwoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiQ29uZmlybU1vZGFsXCIpO31cclxuICAgIHN0YXRpYyBnZXQgTWFya2Rvd24oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiTWFya2Rvd25cIik7fVxyXG5cclxuICAgIHN0YXRpYyBkZWZhdWx0KHRpdGxlLCBjb250ZW50KSB7XHJcbiAgICAgICAgY29uc3QgbW9kYWwgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cImJkLW1vZGFsLXdyYXBwZXIgdGhlbWUtZGFya1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLWJhY2tkcm9wIGJhY2tkcm9wLTF3cm1LQlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsIG1vZGFsLTFVR2RuUlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1pbm5lciBpbm5lci0xSmVHVmNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlciBoZWFkZXItMVJfQWpGXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj4ke3RpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlci13cmFwIGZhZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyIGZvb3Rlci0yeWZDZ1ggZm9vdGVyLTNyRFdkQyBmb290ZXItMmdMMXBwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJkLWJ1dHRvblwiPiR7U3RyaW5ncy5Nb2RhbHMub2theX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+YCk7XHJcbiAgICAgICAgbW9kYWwucXVlcnlTZWxlY3RvcihcIi5mb290ZXIgYnV0dG9uXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG1vZGFsLmNsYXNzTGlzdC5hZGQoXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbW9kYWwucXVlcnlTZWxlY3RvcihcIi5iZC1iYWNrZHJvcFwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBtb2RhbC5jbGFzc0xpc3QuYWRkKFwiY2xvc2luZ1wiKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IG1vZGFsLnJlbW92ZSgpOyB9LCAzMDApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwLW1vdW50XCIpLmFwcGVuZChtb2RhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFsZXJ0KHRpdGxlLCBjb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uTW9kYWwodGl0bGUsIGNvbnRlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBjb25maXJtYXRpb24gbW9kYWwgd2l0aCBvcHRpb25hbCBjb25maXJtIGFuZCBjYW5jZWwgY2FsbGJhY2tzLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAgICAgKiBAcGFyYW0geyhzdHJpbmd8UmVhY3RFbGVtZW50fEFycmF5PHN0cmluZ3xSZWFjdEVsZW1lbnQ+KX0gY2hpbGRyZW4gLSBhIHNpbmdsZSBvciBtaXhlZCBhcnJheSBvZiByZWFjdCBlbGVtZW50cyBhbmQgc3RyaW5ncy4gRXZlcnl0aGluZyBpcyB3cmFwcGVkIGluIERpc2NvcmQncyBgTWFya2Rvd25gIGNvbXBvbmVudCBzbyBzdHJpbmdzIHdpbGwgc2hvdyBhbmQgcmVuZGVyIHByb3Blcmx5LlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIG9wdGlvbnMgdG8gbW9kaWZ5IHRoZSBtb2RhbFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5kYW5nZXI9ZmFsc2VdIC0gd2hldGhlciB0aGUgbWFpbiBidXR0b24gc2hvdWxkIGJlIHJlZCBvciBub3RcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jb25maXJtVGV4dD1Pa2F5XSAtIHRleHQgZm9yIHRoZSBjb25maXJtYXRpb24vc3VibWl0IGJ1dHRvblxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNhbmNlbFRleHQ9Q2FuY2VsXSAtIHRleHQgZm9yIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0ge2NhbGxhYmxlfSBbb3B0aW9ucy5vbkNvbmZpcm09Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBzdWJtaXQgYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0ge2NhbGxhYmxlfSBbb3B0aW9ucy5vbkNhbmNlbD1OT09QXSAtIGNhbGxiYWNrIHRvIG9jY3VyIHdoZW4gY2xpY2tpbmcgdGhlIGNhbmNlbCBidXR0b25cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5rZXldIC0ga2V5IHVzZWQgdG8gaWRlbnRpZnkgdGhlIG1vZGFsLiBJZiBub3QgcHJvdmlkZWQsIG9uZSBpcyBnZW5lcmF0ZWQgYW5kIHJldHVybmVkXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBrZXkgdXNlZCBmb3IgdGhpcyBtb2RhbFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHRpdGxlLCBjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICBjb25zdCBNYXJrZG93biA9IHRoaXMuTWFya2Rvd247XHJcbiAgICAgICAgY29uc3QgQ29uZmlybWF0aW9uTW9kYWwgPSB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsO1xyXG4gICAgICAgIGNvbnN0IE1vZGFsQWN0aW9ucyA9IHRoaXMuTW9kYWxBY3Rpb25zO1xyXG4gICAgICAgIGlmIChjb250ZW50IGluc3RhbmNlb2YgRm9ybWF0dGFibGVTdHJpbmcpIGNvbnRlbnQgPSBjb250ZW50LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLk1vZGFsQWN0aW9ucyB8fCAhdGhpcy5Db25maXJtYXRpb25Nb2RhbCB8fCAhdGhpcy5NYXJrZG93bikgcmV0dXJuIHRoaXMuZGVmYXVsdCh0aXRsZSwgY29udGVudCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGVtcHR5RnVuY3Rpb24gPSAoKSA9PiB7fTtcclxuICAgICAgICBjb25zdCB7b25Db25maXJtID0gZW1wdHlGdW5jdGlvbiwgb25DYW5jZWwgPSBlbXB0eUZ1bmN0aW9uLCBjb25maXJtVGV4dCA9IFN0cmluZ3MuTW9kYWxzLm9rYXksIGNhbmNlbFRleHQgPSBTdHJpbmdzLk1vZGFscy5jYW5jZWwsIGRhbmdlciA9IGZhbHNlLCBrZXkgPSB1bmRlZmluZWR9ID0gb3B0aW9ucztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIGNvbnRlbnQgPSBbY29udGVudF07XHJcbiAgICAgICAgY29udGVudCA9IGNvbnRlbnQubWFwKGMgPT4gdHlwZW9mKGMpID09PSBcInN0cmluZ1wiID8gUmVhY3QuY3JlYXRlRWxlbWVudChNYXJrZG93biwgbnVsbCwgYykgOiBjKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIE1vZGFsQWN0aW9ucy5vcGVuTW9kYWwocHJvcHMgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDb25maXJtYXRpb25Nb2RhbCwgT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgcmVkOiBkYW5nZXIsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogY29uZmlybVRleHQsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxUZXh0OiBjYW5jZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiBvbkNvbmZpcm0sXHJcbiAgICAgICAgICAgICAgICBvbkNhbmNlbDogb25DYW5jZWxcclxuICAgICAgICAgICAgfSwgcHJvcHMpLCBjb250ZW50KTtcclxuICAgICAgICB9LCB7bW9kYWxLZXk6IGtleX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzaG93QWRkb25FcnJvcnMoe3BsdWdpbnM6IHBsdWdpbkVycm9ycyA9IFtdLCB0aGVtZXM6IHRoZW1lRXJyb3JzID0gW119KSB7XHJcbiAgICAgICAgaWYgKCFwbHVnaW5FcnJvcnMgfHwgIXRoZW1lRXJyb3JzIHx8ICF0aGlzLnNob3VsZFNob3dBZGRvbkVycm9ycykgcmV0dXJuO1xyXG4gICAgICAgIGlmICghcGx1Z2luRXJyb3JzLmxlbmd0aCAmJiAhdGhlbWVFcnJvcnMubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgbW9kYWwgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cImJkLW1vZGFsLXdyYXBwZXIgdGhlbWUtZGFya1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtYmFja2Ryb3AgYmFja2Ryb3AtMXdybUtCXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbCBiZC1jb250ZW50LW1vZGFsIG1vZGFsLTFVR2RuUlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsLWlubmVyIGlubmVyLTFKZUdWY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXIgaGVhZGVyLTFSX0FqRlwiPjxkaXYgY2xhc3M9XCJ0aXRsZVwiPiR7U3RyaW5ncy5Nb2RhbHMuYWRkb25FcnJvcnN9PC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhciBUT1BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhci1pdGVtXCI+JHtTdHJpbmdzLlBhbmVscy5wbHVnaW5zfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItYmFyLWl0ZW1cIj4ke1N0cmluZ3MuUGFuZWxzLnRoZW1lc308L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tbmFtZVwiPiR7U3RyaW5ncy5Nb2RhbHMubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW1lc3NhZ2VcIj4ke1N0cmluZ3MuTW9kYWxzLm1lc3NhZ2V9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNvbHVtbi1lcnJvclwiPiR7U3RyaW5ncy5Nb2RhbHMuZXJyb3J9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsZXItd3JhcCBmYWRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlciBmb290ZXItMnlmQ2dYIGZvb3Rlci0zckRXZEMgZm9vdGVyLTJnTDFwcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJkLWJ1dHRvblwiPiR7U3RyaW5ncy5Nb2RhbHMub2theX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gKTtcclxuXHJcbiAgICAgICAgY29uc3QgZ2VuZXJhdGVUYWIgPSBmdW5jdGlvbihlcnJvcnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJlcnJvcnNcIj5gKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBlcnIgb2YgZXJyb3JzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tbmFtZVwiPiR7ZXJyLm5hbWUgPyBlcnIubmFtZSA6IGVyci5maWxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNvbHVtbi1tZXNzYWdlXCI+JHtlcnIubWVzc2FnZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tZXJyb3JcIj48YSBjbGFzcz1cImVycm9yLWxpbmtcIiBocmVmPVwiXCI+JHtlcnIuZXJyb3IgPyBlcnIuZXJyb3IubWVzc2FnZSA6IFwiXCJ9PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmApO1xyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IucXVlcnlTZWxlY3RvckFsbChcImFcIikuZm9yRWFjaChlbCA9PiBlbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZShcIkFkZG9uRXJyb3JcIiwgYEVycm9yIGRldGFpbHMgZm9yICR7ZXJyLm5hbWUgPyBlcnIubmFtZSA6IGVyci5maWxlfS5gLCBlcnIuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY29udGFpbmVyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IHRhYnMgPSBbZ2VuZXJhdGVUYWIocGx1Z2luRXJyb3JzKSwgZ2VuZXJhdGVUYWIodGhlbWVFcnJvcnMpXTtcclxuXHJcbiAgICAgICAgbW9kYWwucXVlcnlTZWxlY3RvckFsbChcIi50YWItYmFyLWl0ZW1cIikuZm9yRWFjaChlbCA9PiBlbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGUpID0+IHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoXCIudGFiLWJhci1pdGVtLnNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIERPTS5yZW1vdmVDbGFzcyhzZWxlY3RlZCwgXCJzZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgRE9NLmFkZENsYXNzKGUudGFyZ2V0LCBcInNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBzY3JvbGxlciA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoXCIuc2Nyb2xsZXJcIik7XHJcbiAgICAgICAgICAgIHNjcm9sbGVyLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgICAgIHNjcm9sbGVyLmFwcGVuZCh0YWJzW0RPTS5pbmRleChlLnRhcmdldCldKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIG1vZGFsLnF1ZXJ5U2VsZWN0b3IoXCIuZm9vdGVyIGJ1dHRvblwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBET00uYWRkQ2xhc3MobW9kYWwsIFwiY2xvc2luZ1wiKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IG1vZGFsLnJlbW92ZSgpOyB9LCAzMDApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1vZGFsLnF1ZXJ5U2VsZWN0b3IoXCIuYmQtYmFja2Ryb3BcIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgRE9NLmFkZENsYXNzKG1vZGFsLCBcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RhbC5yZW1vdmUoKTsgfSwgMzAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBET00ucXVlcnkoXCIjYXBwLW1vdW50XCIpLmFwcGVuZChtb2RhbCk7XHJcbiAgICAgICAgaWYgKHBsdWdpbkVycm9ycy5sZW5ndGgpIG1vZGFsLnF1ZXJ5U2VsZWN0b3IoXCIudGFiLWJhci1pdGVtXCIpLmNsaWNrKCk7XHJcbiAgICAgICAgZWxzZSBtb2RhbC5xdWVyeVNlbGVjdG9yQWxsKFwiLnRhYi1iYXItaXRlbVwiKVsxXS5jbGljaygpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzaG93Q2hhbmdlbG9nTW9kYWwob3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3QgTW9kYWxTdGFjayA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwdXNoXCIsIFwidXBkYXRlXCIsIFwicG9wXCIsIFwicG9wV2l0aEtleVwiKTtcclxuICAgICAgICBjb25zdCBDaGFuZ2Vsb2dDbGFzc2VzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImZpeGVkXCIsIFwiaW1wcm92ZWRcIik7XHJcbiAgICAgICAgY29uc3QgVGV4dEVsZW1lbnQgPSBXZWJwYWNrTW9kdWxlcy5maW5kQnlEaXNwbGF5TmFtZShcIlRleHRcIik7XHJcbiAgICAgICAgY29uc3QgRmxleENoaWxkID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkNoaWxkXCIpO1xyXG4gICAgICAgIGNvbnN0IFRpdGxlcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJUYWdzXCIsIFwiZGVmYXVsdFwiKTtcclxuICAgICAgICBjb25zdCBDaGFuZ2Vsb2cgPSBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUobSA9PiBtLmRlZmF1bHRQcm9wcyAmJiBtLmRlZmF1bHRQcm9wcy5zZWxlY3RhYmxlID09IGZhbHNlKTtcclxuICAgICAgICBjb25zdCBNYXJrZG93blBhcnNlciA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJkZWZhdWx0UnVsZXNcIiwgXCJwYXJzZVwiKTtcclxuICAgICAgICBpZiAoIUNoYW5nZWxvZyB8fCAhTW9kYWxTdGFjayB8fCAhQ2hhbmdlbG9nQ2xhc3NlcyB8fCAhVGV4dEVsZW1lbnQgfHwgIUZsZXhDaGlsZCB8fCAhVGl0bGVzIHx8ICFNYXJrZG93blBhcnNlcikgcmV0dXJuIExvZ2dlci53YXJuKFwiTW9kYWxzXCIsIFwic2hvd0NoYW5nZWxvZ01vZGFsIG1pc3NpbmcgbW9kdWxlc1wiKTtcclxuICAgIFxyXG4gICAgICAgIGNvbnN0IHtpbWFnZSA9IFwiaHR0cHM6Ly9yZXBvc2l0b3J5LWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTA1NDczNTM3Lzk1N2I1NDgwLTdjMjYtMTFlOS04NDAxLTUwZmE4MjBjYmFlNVwiLCBkZXNjcmlwdGlvbiA9IFwiXCIsIGNoYW5nZXMgPSBbXSwgdGl0bGUgPSBcIkJhbmRhZ2VkQkRcIiwgc3VidGl0bGUgPSBgdiR7Q29uZmlnLmJiZFZlcnNpb259YCwgZm9vdGVyfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgY29uc3QgY2UgPSBSZWFjdC5jcmVhdGVFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGNoYW5nZWxvZ0l0ZW1zID0gW2NlKFwiaW1nXCIsIHtzcmM6IGltYWdlfSldO1xyXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbikgY2hhbmdlbG9nSXRlbXMucHVzaChjZShcInBcIiwgbnVsbCwgTWFya2Rvd25QYXJzZXIucGFyc2UoZGVzY3JpcHRpb24pKSk7XHJcbiAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBjaGFuZ2VzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gY2hhbmdlc1tjXTtcclxuICAgICAgICAgICAgY29uc3QgdHlwZSA9IENoYW5nZWxvZ0NsYXNzZXNbZW50cnkudHlwZV0gPyBDaGFuZ2Vsb2dDbGFzc2VzW2VudHJ5LnR5cGVdIDogQ2hhbmdlbG9nQ2xhc3Nlcy5hZGRlZDtcclxuICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gYyA9PSAwID8gQ2hhbmdlbG9nQ2xhc3Nlcy5tYXJnaW5Ub3AgOiBcIlwiO1xyXG4gICAgICAgICAgICBjaGFuZ2Vsb2dJdGVtcy5wdXNoKGNlKFwiaDFcIiwge2NsYXNzTmFtZTogYCR7dHlwZX0gJHttYXJnaW59YCx9LCBlbnRyeS50aXRsZSkpO1xyXG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gY2UoXCJ1bFwiLCBudWxsLCBlbnRyeS5pdGVtcy5tYXAoaSA9PiBjZShcImxpXCIsIG51bGwsIE1hcmtkb3duUGFyc2VyLnBhcnNlKGkpKSkpO1xyXG4gICAgICAgICAgICBjaGFuZ2Vsb2dJdGVtcy5wdXNoKGxpc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZW5kZXJIZWFkZXIgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNlKEZsZXhDaGlsZC5DaGlsZCwge2dyb3c6IDEsIHNocmluazogMX0sXHJcbiAgICAgICAgICAgICAgICBjZShUaXRsZXMuZGVmYXVsdCwge3RhZzogVGl0bGVzLlRhZ3MuSDR9LCB0aXRsZSksXHJcbiAgICAgICAgICAgICAgICBjZShUZXh0RWxlbWVudCwge3NpemU6IFRleHRFbGVtZW50LlNpemVzLlNNQUxMLCBjb2xvcjogVGV4dEVsZW1lbnQuQ29sb3JzLlNUQU5EQVJELCBjbGFzc05hbWU6IENoYW5nZWxvZ0NsYXNzZXMuZGF0ZX0sIHN1YnRpdGxlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICBcclxuICAgICAgICBjb25zdCByZW5kZXJGb290ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IEFuY2hvciA9IFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShtID0+IG0uZGlzcGxheU5hbWUgPT0gXCJBbmNob3JcIik7XHJcbiAgICAgICAgICAgIGNvbnN0IEFuY2hvckNsYXNzZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYW5jaG9yVW5kZXJsaW5lT25Ib3ZlclwiKSB8fCB7YW5jaG9yOiBcImFuY2hvci0zWi04QmJcIiwgYW5jaG9yVW5kZXJsaW5lT25Ib3ZlcjogXCJhbmNob3JVbmRlcmxpbmVPbkhvdmVyLTJFU0hRQlwifTtcclxuICAgICAgICAgICAgY29uc3Qgam9pblN1cHBvcnRTZXJ2ZXIgPSAoY2xpY2spID0+IHtcclxuICAgICAgICAgICAgICAgIGNsaWNrLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICBjbGljay5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIE1vZGFsU3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgICAgICBEaXNjb3JkTW9kdWxlcy5JbnZpdGVBY3Rpb25zLmFjY2VwdEludml0ZUFuZFRyYW5zaXRpb25Ub0ludml0ZUNoYW5uZWwoXCIySFNjbThqXCIpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBzdXBwb3J0TGluayA9IEFuY2hvciA/IGNlKEFuY2hvciwge29uQ2xpY2s6IGpvaW5TdXBwb3J0U2VydmVyfSwgXCJKb2luIG91ciBEaXNjb3JkIFNlcnZlci5cIikgOiBjZShcImFcIiwge2NsYXNzTmFtZTogYCR7QW5jaG9yQ2xhc3Nlcy5hbmNob3J9ICR7QW5jaG9yQ2xhc3Nlcy5hbmNob3JVbmRlcmxpbmVPbkhvdmVyfWAsIG9uQ2xpY2s6IGpvaW5TdXBwb3J0U2VydmVyfSwgXCJKb2luIG91ciBEaXNjb3JkIFNlcnZlci5cIik7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRGb290ZXIgPSBjZShUZXh0RWxlbWVudCwge3NpemU6IFRleHRFbGVtZW50LlNpemVzLlNNQUxMLCBjb2xvcjogVGV4dEVsZW1lbnQuQ29sb3JzLlNUQU5EQVJEfSwgXCJOZWVkIHN1cHBvcnQ/IFwiLCBzdXBwb3J0TGluayk7XHJcbiAgICAgICAgICAgIHJldHVybiBjZShGbGV4Q2hpbGQuQ2hpbGQsIHtncm93OiAxLCBzaHJpbms6IDF9LCBmb290ZXIgPyBmb290ZXIgOiBkZWZhdWx0Rm9vdGVyKTtcclxuICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIE1vZGFsU3RhY2sucHVzaChDaGFuZ2Vsb2csIHtcclxuICAgICAgICAgICAgY2xhc3NOYW1lOiBDaGFuZ2Vsb2dDbGFzc2VzLmNvbnRhaW5lcixcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgb25TY3JvbGw6IF8gPT4gXyxcclxuICAgICAgICAgICAgb25DbG9zZTogXyA9PiBfLFxyXG4gICAgICAgICAgICByZW5kZXJIZWFkZXI6IHJlbmRlckhlYWRlcixcclxuICAgICAgICAgICAgcmVuZGVyRm9vdGVyOiByZW5kZXJGb290ZXIsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjaGFuZ2Vsb2dJdGVtc1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/modals.js\n"); /***/ }), @@ -947,7 +959,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ServerCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ServerCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.defaultAvatar();\n this.state = {\n imageError: false,\n joined: this.props.joined\n };\n this.join = this.join.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n render() {\n const {\n server\n } = this.props;\n const buttonText = typeof this.state.joined == \"string\" ? `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joining}...` : this.state.joined ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joined : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.join;\n const buttonClass = `bd-button${this.state.joined == true ? \" bd-button-success\" : \"\"}`;\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError\n }), \",\", modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-content\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-header\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-name\"\n }, server.name), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-member-count\"\n }, server.members, \" Members\")), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller-wrap bd-server-description-container\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller bd-server-description\"\n }, server.description)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-footer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-tags\"\n }, server.categories.join(\", \")), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: buttonClass,\n onClick: this.join\n }, buttonText))));\n }\n\n handleError() {\n this.props.server.iconUrl = this.props.defaultAvatar();\n this.setState({\n imageError: true\n });\n }\n\n async join() {\n if (this.state.joined) return;\n this.setState({\n joined: \"joining\"\n });\n const didJoin = await this.props.join(this.props.server.identifier, this.props.server.nativejoin);\n this.setState({\n joined: didJoin\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvY2FyZC5qc3g/NzYwMiJdLCJuYW1lcyI6WyJTZXJ2ZXJDYXJkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic2VydmVyIiwiaWNvblVybCIsImRlZmF1bHRBdmF0YXIiLCJzdGF0ZSIsImltYWdlRXJyb3IiLCJqb2luZWQiLCJqb2luIiwiYmluZCIsImhhbmRsZUVycm9yIiwicmVuZGVyIiwiYnV0dG9uVGV4dCIsIlN0cmluZ3MiLCJQdWJsaWNTZXJ2ZXJzIiwiam9pbmluZyIsImJ1dHRvbkNsYXNzIiwicGlubmVkIiwibmFtZSIsIm1lbWJlcnMiLCJkZXNjcmlwdGlvbiIsImNhdGVnb3JpZXMiLCJzZXRTdGF0ZSIsImRpZEpvaW4iLCJpZGVudGlmaWVyIiwibmF0aXZlam9pbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxVQUFOLFNBQXlCQyw2Q0FBSyxDQUFDQyxTQUEvQixDQUF5QztBQUNwREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsUUFBSSxDQUFDLEtBQUtBLEtBQUwsQ0FBV0MsTUFBWCxDQUFrQkMsT0FBdkIsRUFBZ0MsS0FBS0YsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUFsQixHQUE0QixLQUFLRixLQUFMLENBQVdHLGFBQVgsRUFBNUI7QUFDaEMsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGdCQUFVLEVBQUUsS0FESDtBQUVUQyxZQUFNLEVBQUUsS0FBS04sS0FBTCxDQUFXTTtBQUZWLEtBQWI7QUFJQSxTQUFLQyxJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVQyxJQUFWLENBQWUsSUFBZixDQUFaO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixLQUFLQSxXQUFMLENBQWlCRCxJQUFqQixDQUFzQixJQUF0QixDQUFuQjtBQUNIOztBQUVERSxRQUFNLEdBQUc7QUFDTCxVQUFNO0FBQUNUO0FBQUQsUUFBVyxLQUFLRCxLQUF0QjtBQUNBLFVBQU1XLFVBQVUsR0FBRyxPQUFPLEtBQUtQLEtBQUwsQ0FBV0UsTUFBbEIsSUFBNkIsUUFBN0IsR0FBeUMsR0FBRU0sK0NBQU8sQ0FBQ0MsYUFBUixDQUFzQkMsT0FBUSxLQUF6RSxHQUFnRixLQUFLVixLQUFMLENBQVdFLE1BQVgsR0FBb0JNLCtDQUFPLENBQUNDLGFBQVIsQ0FBc0JQLE1BQTFDLEdBQW1ETSwrQ0FBTyxDQUFDQyxhQUFSLENBQXNCTixJQUE1SztBQUNBLFVBQU1RLFdBQVcsR0FBSSxZQUFXLEtBQUtYLEtBQUwsQ0FBV0UsTUFBWCxJQUFxQixJQUFyQixHQUE0QixvQkFBNUIsR0FBbUQsRUFBRyxFQUF0RjtBQUNBLFdBQU87QUFBSyxlQUFTLEVBQUcsaUJBQWdCTCxNQUFNLENBQUNlLE1BQVAsR0FBZ0Isd0JBQWhCLEdBQTJDLEVBQUc7QUFBL0UsT0FDQztBQUFLLGVBQVMsRUFBQyxpQkFBZjtBQUFpQyxTQUFHLEVBQUVmLE1BQU0sQ0FBQ0MsT0FBN0M7QUFBc0QsYUFBTyxFQUFFLEtBQUtPO0FBQXBFLE1BREQsT0FFQztBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNJO0FBQUksZUFBUyxFQUFDO0FBQWQsT0FBZ0NSLE1BQU0sQ0FBQ2dCLElBQXZDLENBREosRUFFSTtBQUFJLGVBQVMsRUFBQztBQUFkLE9BQXdDaEIsTUFBTSxDQUFDaUIsT0FBL0MsYUFGSixDQURKLEVBS0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBb0RqQixNQUFNLENBQUNrQixXQUEzRCxDQURKLENBTEosRUFRSTtBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFpQ2xCLE1BQU0sQ0FBQ21CLFVBQVAsQ0FBa0JiLElBQWxCLENBQXVCLElBQXZCLENBQWpDLENBREosRUFFSTtBQUFRLFVBQUksRUFBQyxRQUFiO0FBQXNCLGVBQVMsRUFBRVEsV0FBakM7QUFBOEMsYUFBTyxFQUFFLEtBQUtSO0FBQTVELE9BQW1FSSxVQUFuRSxDQUZKLENBUkosQ0FGRCxDQUFQO0FBZ0JIOztBQUVERixhQUFXLEdBQUc7QUFDVixTQUFLVCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csYUFBWCxFQUE1QjtBQUNBLFNBQUtrQixRQUFMLENBQWM7QUFBQ2hCLGdCQUFVLEVBQUU7QUFBYixLQUFkO0FBQ0g7O0FBRUQsUUFBTUUsSUFBTixHQUFhO0FBQ1QsUUFBSSxLQUFLSCxLQUFMLENBQVdFLE1BQWYsRUFBdUI7QUFDdkIsU0FBS2UsUUFBTCxDQUFjO0FBQUNmLFlBQU0sRUFBRTtBQUFULEtBQWQ7QUFDQSxVQUFNZ0IsT0FBTyxHQUFHLE1BQU0sS0FBS3RCLEtBQUwsQ0FBV08sSUFBWCxDQUFnQixLQUFLUCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JzQixVQUFsQyxFQUE4QyxLQUFLdkIsS0FBTCxDQUFXQyxNQUFYLENBQWtCdUIsVUFBaEUsQ0FBdEI7QUFDQSxTQUFLSCxRQUFMLENBQWM7QUFBQ2YsWUFBTSxFQUFFZ0I7QUFBVCxLQUFkO0FBQ0g7O0FBNUNtRCIsImZpbGUiOiIuL3NyYy91aS9wdWJsaWNzZXJ2ZXJzL2NhcmQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlcnZlckNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsKSB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgaW1hZ2VFcnJvcjogZmFsc2UsXHJcbiAgICAgICAgICAgIGpvaW5lZDogdGhpcy5wcm9wcy5qb2luZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXJ2ZXJ9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBidXR0b25UZXh0ID0gdHlwZW9mKHRoaXMuc3RhdGUuam9pbmVkKSA9PSBcInN0cmluZ1wiID8gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5pbmd9Li4uYCA6IHRoaXMuc3RhdGUuam9pbmVkID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5lZCA6IFN0cmluZ3MuUHVibGljU2VydmVycy5qb2luO1xyXG4gICAgICAgIGNvbnN0IGJ1dHRvbkNsYXNzID0gYGJkLWJ1dHRvbiR7dGhpcy5zdGF0ZS5qb2luZWQgPT0gdHJ1ZSA/IFwiIGJkLWJ1dHRvbi1zdWNjZXNzXCIgOiBcIlwifWA7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmQtc2VydmVyLWNhcmQke3NlcnZlci5waW5uZWQgPyBcIiBiZC1zZXJ2ZXItY2FyZC1waW5uZWRcIiA6IFwiXCJ9YH0+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImJkLXNlcnZlci1pbWFnZVwiIHNyYz17c2VydmVyLmljb25Vcmx9IG9uRXJyb3I9e3RoaXMuaGFuZGxlRXJyb3J9IC8+LFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3NOYW1lPVwiYmQtc2VydmVyLW5hbWVcIj57c2VydmVyLm5hbWV9PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzTmFtZT1cImJkLXNlcnZlci1tZW1iZXItY291bnRcIj57c2VydmVyLm1lbWJlcnN9IE1lbWJlcnM8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyLXdyYXAgYmQtc2VydmVyLWRlc2NyaXB0aW9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyIGJkLXNlcnZlci1kZXNjcmlwdGlvblwiPntzZXJ2ZXIuZGVzY3JpcHRpb259PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLXRhZ3NcIj57c2VydmVyLmNhdGVnb3JpZXMuam9pbihcIiwgXCIpfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9e2J1dHRvbkNsYXNzfSBvbkNsaWNrPXt0aGlzLmpvaW59PntidXR0b25UZXh0fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVFcnJvcigpIHtcclxuICAgICAgICB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGpvaW4oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuam9pbmVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBcImpvaW5pbmdcIn0pO1xyXG4gICAgICAgIGNvbnN0IGRpZEpvaW4gPSBhd2FpdCB0aGlzLnByb3BzLmpvaW4odGhpcy5wcm9wcy5zZXJ2ZXIuaWRlbnRpZmllciwgdGhpcy5wcm9wcy5zZXJ2ZXIubmF0aXZlam9pbik7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBkaWRKb2lufSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/publicservers/card.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ServerCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ServerCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.defaultAvatar();\n this.state = {\n imageError: false,\n joined: this.props.joined\n };\n this.join = this.join.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n render() {\n const {\n server\n } = this.props;\n const buttonText = typeof this.state.joined == \"string\" ? `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joining}...` : this.state.joined ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joined : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.join;\n const buttonClass = `bd-button${this.state.joined == true ? \" bd-button-success\" : \"\"}`;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError\n }), \",\", /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-content\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-name\"\n }, server.name), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-member-count\"\n }, server.members, \" Members\")), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller-wrap bd-server-description-container\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller bd-server-description\"\n }, server.description)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-footer\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-tags\"\n }, server.categories.join(\", \")), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: buttonClass,\n onClick: this.join\n }, buttonText))));\n }\n\n handleError() {\n this.props.server.iconUrl = this.props.defaultAvatar();\n this.setState({\n imageError: true\n });\n }\n\n async join() {\n if (this.state.joined) return;\n this.setState({\n joined: \"joining\"\n });\n const didJoin = await this.props.join(this.props.server.identifier, this.props.server.nativejoin);\n this.setState({\n joined: didJoin\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvY2FyZC5qc3g/NzYwMiJdLCJuYW1lcyI6WyJTZXJ2ZXJDYXJkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic2VydmVyIiwiaWNvblVybCIsImRlZmF1bHRBdmF0YXIiLCJzdGF0ZSIsImltYWdlRXJyb3IiLCJqb2luZWQiLCJqb2luIiwiYmluZCIsImhhbmRsZUVycm9yIiwicmVuZGVyIiwiYnV0dG9uVGV4dCIsIlN0cmluZ3MiLCJQdWJsaWNTZXJ2ZXJzIiwiam9pbmluZyIsImJ1dHRvbkNsYXNzIiwicGlubmVkIiwibmFtZSIsIm1lbWJlcnMiLCJkZXNjcmlwdGlvbiIsImNhdGVnb3JpZXMiLCJzZXRTdGF0ZSIsImRpZEpvaW4iLCJpZGVudGlmaWVyIiwibmF0aXZlam9pbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxVQUFOLFNBQXlCQyw2Q0FBSyxDQUFDQyxTQUEvQixDQUF5QztBQUNwREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsUUFBSSxDQUFDLEtBQUtBLEtBQUwsQ0FBV0MsTUFBWCxDQUFrQkMsT0FBdkIsRUFBZ0MsS0FBS0YsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUFsQixHQUE0QixLQUFLRixLQUFMLENBQVdHLGFBQVgsRUFBNUI7QUFDaEMsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGdCQUFVLEVBQUUsS0FESDtBQUVUQyxZQUFNLEVBQUUsS0FBS04sS0FBTCxDQUFXTTtBQUZWLEtBQWI7QUFJQSxTQUFLQyxJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVQyxJQUFWLENBQWUsSUFBZixDQUFaO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixLQUFLQSxXQUFMLENBQWlCRCxJQUFqQixDQUFzQixJQUF0QixDQUFuQjtBQUNIOztBQUVERSxRQUFNLEdBQUc7QUFDTCxVQUFNO0FBQUNUO0FBQUQsUUFBVyxLQUFLRCxLQUF0QjtBQUNBLFVBQU1XLFVBQVUsR0FBRyxPQUFPLEtBQUtQLEtBQUwsQ0FBV0UsTUFBbEIsSUFBNkIsUUFBN0IsR0FBeUMsR0FBRU0sK0NBQU8sQ0FBQ0MsYUFBUixDQUFzQkMsT0FBUSxLQUF6RSxHQUFnRixLQUFLVixLQUFMLENBQVdFLE1BQVgsR0FBb0JNLCtDQUFPLENBQUNDLGFBQVIsQ0FBc0JQLE1BQTFDLEdBQW1ETSwrQ0FBTyxDQUFDQyxhQUFSLENBQXNCTixJQUE1SztBQUNBLFVBQU1RLFdBQVcsR0FBSSxZQUFXLEtBQUtYLEtBQUwsQ0FBV0UsTUFBWCxJQUFxQixJQUFyQixHQUE0QixvQkFBNUIsR0FBbUQsRUFBRyxFQUF0RjtBQUNBLHdCQUFPO0FBQUssZUFBUyxFQUFHLGlCQUFnQkwsTUFBTSxDQUFDZSxNQUFQLEdBQWdCLHdCQUFoQixHQUEyQyxFQUFHO0FBQS9FLG9CQUNDO0FBQUssZUFBUyxFQUFDLGlCQUFmO0FBQWlDLFNBQUcsRUFBRWYsTUFBTSxDQUFDQyxPQUE3QztBQUFzRCxhQUFPLEVBQUUsS0FBS087QUFBcEUsTUFERCxvQkFFQztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSSxlQUFTLEVBQUM7QUFBZCxPQUFnQ1IsTUFBTSxDQUFDZ0IsSUFBdkMsQ0FESixlQUVJO0FBQUksZUFBUyxFQUFDO0FBQWQsT0FBd0NoQixNQUFNLENBQUNpQixPQUEvQyxhQUZKLENBREosZUFLSTtBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBb0RqQixNQUFNLENBQUNrQixXQUEzRCxDQURKLENBTEosZUFRSTtBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBaUNsQixNQUFNLENBQUNtQixVQUFQLENBQWtCYixJQUFsQixDQUF1QixJQUF2QixDQUFqQyxDQURKLGVBRUk7QUFBUSxVQUFJLEVBQUMsUUFBYjtBQUFzQixlQUFTLEVBQUVRLFdBQWpDO0FBQThDLGFBQU8sRUFBRSxLQUFLUjtBQUE1RCxPQUFtRUksVUFBbkUsQ0FGSixDQVJKLENBRkQsQ0FBUDtBQWdCSDs7QUFFREYsYUFBVyxHQUFHO0FBQ1YsU0FBS1QsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUFsQixHQUE0QixLQUFLRixLQUFMLENBQVdHLGFBQVgsRUFBNUI7QUFDQSxTQUFLa0IsUUFBTCxDQUFjO0FBQUNoQixnQkFBVSxFQUFFO0FBQWIsS0FBZDtBQUNIOztBQUVELFFBQU1FLElBQU4sR0FBYTtBQUNULFFBQUksS0FBS0gsS0FBTCxDQUFXRSxNQUFmLEVBQXVCO0FBQ3ZCLFNBQUtlLFFBQUwsQ0FBYztBQUFDZixZQUFNLEVBQUU7QUFBVCxLQUFkO0FBQ0EsVUFBTWdCLE9BQU8sR0FBRyxNQUFNLEtBQUt0QixLQUFMLENBQVdPLElBQVgsQ0FBZ0IsS0FBS1AsS0FBTCxDQUFXQyxNQUFYLENBQWtCc0IsVUFBbEMsRUFBOEMsS0FBS3ZCLEtBQUwsQ0FBV0MsTUFBWCxDQUFrQnVCLFVBQWhFLENBQXRCO0FBQ0EsU0FBS0gsUUFBTCxDQUFjO0FBQUNmLFlBQU0sRUFBRWdCO0FBQVQsS0FBZDtBQUNIOztBQTVDbUQiLCJmaWxlIjoiLi9zcmMvdWkvcHVibGljc2VydmVycy9jYXJkLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXJ2ZXJDYXJkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5zZXJ2ZXIuaWNvblVybCkgdGhpcy5wcm9wcy5zZXJ2ZXIuaWNvblVybCA9IHRoaXMucHJvcHMuZGVmYXVsdEF2YXRhcigpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIGltYWdlRXJyb3I6IGZhbHNlLFxyXG4gICAgICAgICAgICBqb2luZWQ6IHRoaXMucHJvcHMuam9pbmVkXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmpvaW4gPSB0aGlzLmpvaW4uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yID0gdGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7c2VydmVyfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uVGV4dCA9IHR5cGVvZih0aGlzLnN0YXRlLmpvaW5lZCkgPT0gXCJzdHJpbmdcIiA/IGAke1N0cmluZ3MuUHVibGljU2VydmVycy5qb2luaW5nfS4uLmAgOiB0aGlzLnN0YXRlLmpvaW5lZCA/IFN0cmluZ3MuUHVibGljU2VydmVycy5qb2luZWQgOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMuam9pbjtcclxuICAgICAgICBjb25zdCBidXR0b25DbGFzcyA9IGBiZC1idXR0b24ke3RoaXMuc3RhdGUuam9pbmVkID09IHRydWUgPyBcIiBiZC1idXR0b24tc3VjY2Vzc1wiIDogXCJcIn1gO1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlcnZlci1jYXJkJHtzZXJ2ZXIucGlubmVkID8gXCIgYmQtc2VydmVyLWNhcmQtcGlubmVkXCIgOiBcIlwifWB9PlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItaW1hZ2VcIiBzcmM9e3NlcnZlci5pY29uVXJsfSBvbkVycm9yPXt0aGlzLmhhbmRsZUVycm9yfSAvPixcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlcnZlci1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzTmFtZT1cImJkLXNlcnZlci1uYW1lXCI+e3NlcnZlci5uYW1lfTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItbWVtYmVyLWNvdW50XCI+e3NlcnZlci5tZW1iZXJzfSBNZW1iZXJzPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zY3JvbGxlci13cmFwIGJkLXNlcnZlci1kZXNjcmlwdGlvbi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zY3JvbGxlciBiZC1zZXJ2ZXItZGVzY3JpcHRpb25cIj57c2VydmVyLmRlc2NyaXB0aW9ufTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlcnZlci10YWdzXCI+e3NlcnZlci5jYXRlZ29yaWVzLmpvaW4oXCIsIFwiKX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPXtidXR0b25DbGFzc30gb25DbGljaz17dGhpcy5qb2lufT57YnV0dG9uVGV4dH08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wcy5zZXJ2ZXIuaWNvblVybCA9IHRoaXMucHJvcHMuZGVmYXVsdEF2YXRhcigpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlRXJyb3I6IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBqb2luKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmpvaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2pvaW5lZDogXCJqb2luaW5nXCJ9KTtcclxuICAgICAgICBjb25zdCBkaWRKb2luID0gYXdhaXQgdGhpcy5wcm9wcy5qb2luKHRoaXMucHJvcHMuc2VydmVyLmlkZW50aWZpZXIsIHRoaXMucHJvcHMuc2VydmVyLm5hdGl2ZWpvaW4pO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2pvaW5lZDogZGlkSm9pbn0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/publicservers/card.jsx\n"); /***/ }), @@ -959,7 +971,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServers; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./card */ \"./src/ui/publicservers/card.jsx\");\n/* harmony import */ var _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../structs/psconnection */ \"./src/structs/psconnection.js\");\n/* harmony import */ var _settings_components_search__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../settings/components/search */ \"./src/ui/settings/components/search.jsx\");\n\n\n\n\n\nconst SettingsView = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"SettingsView\");\nclass PublicServers extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n get categoryButtons() {\n return [\"All\", \"FPS Games\", \"MMO Games\", \"Strategy Games\", \"MOBA Games\", \"RPG Games\", \"Tabletop Games\", \"Sandbox Games\", \"Simulation Games\", \"Music\", \"Community\", \"Language\", \"Programming\", \"Other\"];\n }\n\n constructor(props) {\n super(props);\n this.state = {\n category: \"All\",\n query: \"\",\n loading: true,\n user: null,\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n };\n this.changeCategory = this.changeCategory.bind(this);\n this.searchKeyDown = this.searchKeyDown.bind(this);\n this.connect = this.connect.bind(this);\n this.loadNextPage = this.loadNextPage.bind(this);\n this.join = this.join.bind(this);\n }\n\n componentDidMount() {\n this.checkConnection();\n }\n\n async checkConnection() {\n const userData = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].checkConnection();\n\n if (!userData) {\n return this.setState({\n loading: true,\n user: null\n });\n }\n\n this.setState({\n user: userData\n });\n this.search();\n }\n\n async connect() {\n await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].connect();\n this.checkConnection();\n }\n\n searchKeyDown(e) {\n if (this.state.loading || e.which !== 13) return;\n this.search(e.target.value);\n }\n\n async search(term = \"\", from = 0) {\n this.setState({\n query: term,\n loading: true\n });\n const results = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].search({\n term,\n category: this.state.category == \"All\" ? \"\" : this.state.category,\n from\n });\n\n if (!results) {\n return this.setState({\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n });\n }\n\n this.setState({\n loading: false,\n results\n });\n }\n\n async changeCategory(id) {\n if (this.state.loading) return;\n await new Promise(resolve => this.setState({\n category: id\n }, resolve));\n this.search();\n }\n\n loadNextPage() {\n if (this.state.loading) return;\n this.search(this.state.query, this.state.results.next);\n }\n\n async join(id, native = false) {\n return await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].join(id, native);\n }\n\n get searchBox() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_components_search__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onKeyDown: this.searchKeyDown,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search}...`\n });\n }\n\n get title() {\n if (!this.state.user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.notConnected;\n if (this.state.loading) return `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading}...`;\n const start = this.state.results.from + 1;\n const total = this.state.results.total;\n const end = this.state.results.next ? this.state.results.next : total;\n let title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.results.format({\n start,\n end,\n total,\n category: this.state.category\n });\n if (this.state.query) title += \" \" + modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.query.format({\n query: this.state.query\n });\n return title;\n }\n\n get content() {\n const connectButton = this.state.user ? null : {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connect,\n onClick: this.connect\n };\n const pinned = this.state.category == \"All\" || !this.state.user ? this.bdServer : null;\n const servers = this.state.results.servers.map(server => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: server.identifier,\n server: server,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n join: this.join,\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n });\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title,\n button: connectButton\n }), pinned, servers, this.state.results.next ? this.nextButton : null, this.state.results.servers.length > 0 && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title\n })];\n }\n\n get nextButton() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-next\",\n onClick: this.loadNextPage\n }, this.state.loading ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loadMore);\n }\n\n get connection() {\n const {\n user\n } = this.state;\n if (!user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n });\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footnote\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connection.format(user)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-reconnect\",\n onClick: this.connect\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.reconnect));\n }\n\n get bdServer() {\n const server = {\n name: \"BetterDiscord\",\n online: \"7500+\",\n members: \"20000+\",\n categories: [\"community\", \"programming\", \"support\"],\n description: \"Official BetterDiscord server for plugins, themes, support, etc\",\n identifier: \"86004744966914048\",\n iconUrl: \"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp\",\n nativejoin: true,\n invite_code: \"0Tmfo5ZbORCRqbAd\",\n pinned: true\n };\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n server: server,\n pinned: true,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n }\n\n render() {\n const categories = this.categoryButtons.map(name => ({\n section: name,\n label: name,\n element: () => this.content\n }));\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(SettingsView, {\n onClose: this.props.close,\n onSetSection: this.changeCategory,\n section: this.state.category,\n sections: [{\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search\n }, {\n section: \"CUSTOM\",\n element: () => this.searchBox\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.categories\n }, ...categories, {\n section: \"DIVIDER\"\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n href: \"https://discordservers.com\",\n target: \"_blank\"\n }, \"DiscordServers.com\")\n }, {\n section: \"DIVIDER\"\n }, {\n section: \"CUSTOM\",\n element: () => this.connection\n }],\n theme: \"dark\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvbWVudS5qcz85YWNkIl0sIm5hbWVzIjpbIlNldHRpbmdzVmlldyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIlB1YmxpY1NlcnZlcnMiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNhdGVnb3J5QnV0dG9ucyIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsImNhdGVnb3J5IiwicXVlcnkiLCJsb2FkaW5nIiwidXNlciIsInJlc3VsdHMiLCJzZXJ2ZXJzIiwic2l6ZSIsImZyb20iLCJ0b3RhbCIsIm5leHQiLCJjaGFuZ2VDYXRlZ29yeSIsImJpbmQiLCJzZWFyY2hLZXlEb3duIiwiY29ubmVjdCIsImxvYWROZXh0UGFnZSIsImpvaW4iLCJjb21wb25lbnREaWRNb3VudCIsImNoZWNrQ29ubmVjdGlvbiIsInVzZXJEYXRhIiwiQ29ubmVjdGlvbiIsInNldFN0YXRlIiwic2VhcmNoIiwiZSIsIndoaWNoIiwidGFyZ2V0IiwidmFsdWUiLCJ0ZXJtIiwiaWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm5hdGl2ZSIsInNlYXJjaEJveCIsIlN0cmluZ3MiLCJ0aXRsZSIsIm5vdENvbm5lY3RlZCIsInN0YXJ0IiwiZW5kIiwiZm9ybWF0IiwiY29udGVudCIsImNvbm5lY3RCdXR0b24iLCJvbkNsaWNrIiwicGlubmVkIiwiYmRTZXJ2ZXIiLCJtYXAiLCJzZXJ2ZXIiLCJjcmVhdGVFbGVtZW50IiwiU2VydmVyQ2FyZCIsImtleSIsImlkZW50aWZpZXIiLCJqb2luZWQiLCJoYXNKb2luZWQiLCJkZWZhdWx0QXZhdGFyIiwiZ2V0RGVmYXVsdEF2YXRhciIsIlNldHRpbmdzVGl0bGUiLCJ0ZXh0IiwiYnV0dG9uIiwibmV4dEJ1dHRvbiIsImxlbmd0aCIsInR5cGUiLCJjbGFzc05hbWUiLCJsb2FkTW9yZSIsImNvbm5lY3Rpb24iLCJyZWNvbm5lY3QiLCJuYW1lIiwib25saW5lIiwibWVtYmVycyIsImNhdGVnb3JpZXMiLCJkZXNjcmlwdGlvbiIsImljb25VcmwiLCJuYXRpdmVqb2luIiwiaW52aXRlX2NvZGUiLCJyZW5kZXIiLCJzZWN0aW9uIiwibGFiZWwiLCJlbGVtZW50Iiwib25DbG9zZSIsImNsb3NlIiwib25TZXRTZWN0aW9uIiwic2VjdGlvbnMiLCJocmVmIiwidGhlbWUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFlBQVksR0FBR0Msc0RBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsY0FBaEMsQ0FBckI7QUFFZSxNQUFNQyxhQUFOLFNBQTRCQyw2Q0FBSyxDQUFDQyxTQUFsQyxDQUE0QztBQUV2RCxNQUFJQyxlQUFKLEdBQXNCO0FBQ2xCLFdBQU8sQ0FBQyxLQUFELEVBQVEsV0FBUixFQUFxQixXQUFyQixFQUFrQyxnQkFBbEMsRUFBb0QsWUFBcEQsRUFBa0UsV0FBbEUsRUFBK0UsZ0JBQS9FLEVBQWlHLGVBQWpHLEVBQWtILGtCQUFsSCxFQUFzSSxPQUF0SSxFQUErSSxXQUEvSSxFQUE0SixVQUE1SixFQUF3SyxhQUF4SyxFQUF1TCxPQUF2TCxDQUFQO0FBQ0g7O0FBRURDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUNUQyxjQUFRLEVBQUUsS0FERDtBQUVUQyxXQUFLLEVBQUUsRUFGRTtBQUdUQyxhQUFPLEVBQUUsSUFIQTtBQUlUQyxVQUFJLEVBQUUsSUFKRztBQUtUQyxhQUFPLEVBQUU7QUFDTEMsZUFBTyxFQUFFLEVBREo7QUFFTEMsWUFBSSxFQUFFLENBRkQ7QUFHTEMsWUFBSSxFQUFFLENBSEQ7QUFJTEMsYUFBSyxFQUFFLENBSkY7QUFLTEMsWUFBSSxFQUFFO0FBTEQ7QUFMQSxLQUFiO0FBY0EsU0FBS0MsY0FBTCxHQUFzQixLQUFLQSxjQUFMLENBQW9CQyxJQUFwQixDQUF5QixJQUF6QixDQUF0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QztBQUNyQ3FGLGFBQU8sRUFBRSxLQUFLN0UsS0FBTCxDQUFXOEUsS0FEaUI7QUFFckNDLGtCQUFZLEVBQUUsS0FBS25FLGNBRmtCO0FBR3JDOEQsYUFBTyxFQUFFLEtBQUt6RSxLQUFMLENBQVdDLFFBSGlCO0FBSXJDOEUsY0FBUSxFQUFFLENBQ047QUFBQ04sZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLCtDQUFPLENBQUN2QyxhQUFSLENBQXNCNEI7QUFBakQsT0FETSxFQUVOO0FBQUNtRCxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBSzNDO0FBQXhDLE9BRk0sRUFHTjtBQUFDeUMsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLCtDQUFPLENBQUN2QyxhQUFSLENBQXNCeUU7QUFBakQsT0FITSxFQUlOLEdBQUdBLFVBSkcsRUFLTjtBQUFDTSxlQUFPLEVBQUU7QUFBVixPQUxNLEVBTU47QUFBQ0EsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRS9FLDZDQUFLLENBQUNtRCxhQUFOLENBQW9CLEdBQXBCLEVBQXlCO0FBQUNrQyxjQUFJLEVBQUUsNEJBQVA7QUFBcUN2RCxnQkFBTSxFQUFFO0FBQTdDLFNBQXpCLEVBQWlGLG9CQUFqRjtBQUEzQixPQU5NLEVBT047QUFBQ2dELGVBQU8sRUFBRTtBQUFWLE9BUE0sRUFRTjtBQUFDQSxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBS2I7QUFBeEMsT0FSTSxDQUoyQjtBQWNyQ21CLFdBQUssRUFBRTtBQWQ4QixLQUFsQyxDQUFQO0FBZ0JIOztBQWxLc0QiLCJmaWxlIjoiLi9zcmMvdWkvcHVibGljc2VydmVycy9tZW51LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuLi9zZXR0aW5ncy90aXRsZVwiO1xyXG5pbXBvcnQgU2VydmVyQ2FyZCBmcm9tIFwiLi9jYXJkXCI7XHJcbmltcG9ydCBDb25uZWN0aW9uIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3BzY29ubmVjdGlvblwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuLi9zZXR0aW5ncy9jb21wb25lbnRzL3NlYXJjaFwiO1xyXG5cclxuY29uc3QgU2V0dGluZ3NWaWV3ID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlNldHRpbmdzVmlld1wiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1YmxpY1NlcnZlcnMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGdldCBjYXRlZ29yeUJ1dHRvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcIkFsbFwiLCBcIkZQUyBHYW1lc1wiLCBcIk1NTyBHYW1lc1wiLCBcIlN0cmF0ZWd5IEdhbWVzXCIsIFwiTU9CQSBHYW1lc1wiLCBcIlJQRyBHYW1lc1wiLCBcIlRhYmxldG9wIEdhbWVzXCIsIFwiU2FuZGJveCBHYW1lc1wiLCBcIlNpbXVsYXRpb24gR2FtZXNcIiwgXCJNdXNpY1wiLCBcIkNvbW11bml0eVwiLCBcIkxhbmd1YWdlXCIsIFwiUHJvZ3JhbW1pbmdcIiwgXCJPdGhlclwiXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogXCJBbGxcIixcclxuICAgICAgICAgICAgcXVlcnk6IFwiXCIsXHJcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgICAgICAgIHJlc3VsdHM6IHtcclxuICAgICAgICAgICAgICAgIHNlcnZlcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcclxuICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2F0ZWdvcnkgPSB0aGlzLmNoYW5nZUNhdGVnb3J5LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hLZXlEb3duID0gdGhpcy5zZWFyY2hLZXlEb3duLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ID0gdGhpcy5jb25uZWN0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UgPSB0aGlzLmxvYWROZXh0UGFnZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJEYXRhID0gYXdhaXQgQ29ubmVjdGlvbi5jaGVja0Nvbm5lY3Rpb24oKTtcclxuICAgICAgICBpZiAoIXVzZXJEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiB0cnVlLCB1c2VyOiBudWxsfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3VzZXI6IHVzZXJEYXRhfSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjb25uZWN0KCkge1xyXG4gICAgICAgIGF3YWl0IENvbm5lY3Rpb24uY29ubmVjdCgpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoS2V5RG93bihlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZyB8fCBlLndoaWNoICE9PSAxMykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzZWFyY2godGVybSA9IFwiXCIsIGZyb20gPSAwKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cXVlcnk6IHRlcm0sIGxvYWRpbmc6IHRydWV9KTtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgQ29ubmVjdGlvbi5zZWFyY2goe3Rlcm0sIGNhdGVnb3J5OiB0aGlzLnN0YXRlLmNhdGVnb3J5ID09IFwiQWxsXCIgPyBcIlwiIDogdGhpcy5zdGF0ZS5jYXRlZ29yeSwgZnJvbX0pO1xyXG4gICAgICAgIGlmICghcmVzdWx0cykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7cmVzdWx0czoge1xyXG4gICAgICAgICAgICAgICAgc2VydmVyczogW10sXHJcbiAgICAgICAgICAgICAgICBzaXplOiAwLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogMCxcclxuICAgICAgICAgICAgICAgIHRvdGFsOiAwLFxyXG4gICAgICAgICAgICAgICAgbmV4dDogbnVsbFxyXG4gICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2xvYWRpbmc6IGZhbHNlLCByZXN1bHRzfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hhbmdlQ2F0ZWdvcnkoaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm47XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0aGlzLnNldFN0YXRlKHtjYXRlZ29yeTogaWR9LCByZXNvbHZlKSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkTmV4dFBhZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKHRoaXMuc3RhdGUucXVlcnksIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBqb2luKGlkLCBuYXRpdmUgPSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBDb25uZWN0aW9uLmpvaW4oaWQsIG5hdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlYXJjaEJveCgpIHtcclxuICAgICAgICByZXR1cm4gPFNlYXJjaCBvbktleURvd249e3RoaXMuc2VhcmNoS2V5RG93bn0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuUHVibGljU2VydmVycy5zZWFyY2h9Li4uYH0gLz47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHRpdGxlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS51c2VyKSByZXR1cm4gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLm5vdENvbm5lY3RlZDtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm4gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmd9Li4uYDtcclxuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhdGUucmVzdWx0cy5mcm9tICsgMTtcclxuICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMuc3RhdGUucmVzdWx0cy50b3RhbDtcclxuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA/IHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0IDogdG90YWw7XHJcbiAgICAgICAgbGV0IHRpdGxlID0gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnJlc3VsdHMuZm9ybWF0KHtzdGFydCwgZW5kLCB0b3RhbCwgY2F0ZWdvcnk6IHRoaXMuc3RhdGUuY2F0ZWdvcnl9KTtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5xdWVyeSkgdGl0bGUgKz0gXCIgXCIgKyBTdHJpbmdzLlB1YmxpY1NlcnZlcnMucXVlcnkuZm9ybWF0KHtxdWVyeTogdGhpcy5zdGF0ZS5xdWVyeX0pO1xyXG4gICAgICAgIHJldHVybiB0aXRsZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29udGVudCgpIHtcclxuICAgICAgICBjb25zdCBjb25uZWN0QnV0dG9uID0gdGhpcy5zdGF0ZS51c2VyID8gbnVsbCA6IHt0aXRsZTogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3QsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH07XHJcbiAgICAgICAgY29uc3QgcGlubmVkID0gdGhpcy5zdGF0ZS5jYXRlZ29yeSA9PSBcIkFsbFwiIHx8ICF0aGlzLnN0YXRlLnVzZXIgPyB0aGlzLmJkU2VydmVyIDogbnVsbDtcclxuICAgICAgICBjb25zdCBzZXJ2ZXJzID0gdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubWFwKChzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VydmVyQ2FyZCwge2tleTogc2VydmVyLmlkZW50aWZpZXIsIHNlcnZlcjogc2VydmVyLCBqb2luZWQ6IENvbm5lY3Rpb24uaGFzSm9pbmVkKHNlcnZlci5pZGVudGlmaWVyKSwgam9pbjogdGhpcy5qb2luLCBkZWZhdWx0QXZhdGFyOiBDb25uZWN0aW9uLmdldERlZmF1bHRBdmF0YXJ9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRoaXMudGl0bGUsIGJ1dHRvbjogY29ubmVjdEJ1dHRvbn0pLFxyXG4gICAgICAgICAgICBwaW5uZWQsXHJcbiAgICAgICAgICAgIHNlcnZlcnMsXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0ID8gdGhpcy5uZXh0QnV0dG9uIDogbnVsbCxcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubGVuZ3RoID4gMCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aGlzLnRpdGxlfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuZXh0QnV0dG9uKCkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1uZXh0XCIsIG9uQ2xpY2s6IHRoaXMubG9hZE5leHRQYWdlfSwgdGhpcy5zdGF0ZS5sb2FkaW5nID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmcgOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMubG9hZE1vcmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHt1c2VyfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7aWQ6IFwiYmQtY29ubmVjdGlvblwifSk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBcImJkLWNvbm5lY3Rpb25cIn0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZC1mb290bm90ZVwifSwgU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3Rpb24uZm9ybWF0KHVzZXIpKSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJkLWJ1dHRvbiBiZC1idXR0b24tcmVjb25uZWN0XCIsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH0sIFN0cmluZ3MuUHVibGljU2VydmVycy5yZWNvbm5lY3QpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYmRTZXJ2ZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkJldHRlckRpc2NvcmRcIixcclxuICAgICAgICAgICAgb25saW5lOiBcIjc1MDArXCIsXHJcbiAgICAgICAgICAgIG1lbWJlcnM6IFwiMjAwMDArXCIsXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFtcImNvbW11bml0eVwiLCBcInByb2dyYW1taW5nXCIsIFwic3VwcG9ydFwiXSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT2ZmaWNpYWwgQmV0dGVyRGlzY29yZCBzZXJ2ZXIgZm9yIHBsdWdpbnMsIHRoZW1lcywgc3VwcG9ydCwgZXRjXCIsXHJcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IFwiODYwMDQ3NDQ5NjY5MTQwNDhcIixcclxuICAgICAgICAgICAgaWNvblVybDogXCJodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9pY29ucy84NjAwNDc0NDk2NjkxNDA0OC8yOTJlN2Y2YmZmZjJiNzFkZmQxM2U1MDhhODU5YWVkZC53ZWJwXCIsXHJcbiAgICAgICAgICAgIG5hdGl2ZWpvaW46IHRydWUsXHJcbiAgICAgICAgICAgIGludml0ZV9jb2RlOiBcIjBUbWZvNVpiT1JDUnFiQWRcIixcclxuICAgICAgICAgICAgcGlubmVkOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXJ2ZXJDYXJkLCB7c2VydmVyOiBzZXJ2ZXIsIHBpbm5lZDogdHJ1ZSwgam9pbmVkOiBDb25uZWN0aW9uLmhhc0pvaW5lZChzZXJ2ZXIuaWRlbnRpZmllciksIGRlZmF1bHRBdmF0YXI6IENvbm5lY3Rpb24uZ2V0RGVmYXVsdEF2YXRhcn0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5jYXRlZ29yeUJ1dHRvbnMubWFwKG5hbWUgPT4gKHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb246IG5hbWUsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZSxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuY29udGVudFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NWaWV3LCB7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IHRoaXMucHJvcHMuY2xvc2UsXHJcbiAgICAgICAgICAgIG9uU2V0U2VjdGlvbjogdGhpcy5jaGFuZ2VDYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zdGF0ZS5jYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnNlYXJjaH0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJDVVNUT01cIiwgZWxlbWVudDogKCkgPT4gdGhpcy5zZWFyY2hCb3h9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiSEVBREVSXCIsIGxhYmVsOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMuY2F0ZWdvcmllc30sXHJcbiAgICAgICAgICAgICAgICAuLi5jYXRlZ29yaWVzLFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2hyZWY6IFwiaHR0cHM6Ly9kaXNjb3Jkc2VydmVycy5jb21cIiwgdGFyZ2V0OiBcIl9ibGFua1wifSwgXCJEaXNjb3JkU2VydmVycy5jb21cIil9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiAoKSA9PiB0aGlzLmNvbm5lY3Rpb259XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHRoZW1lOiBcImRhcmtcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/publicservers/menu.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServers; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./card */ \"./src/ui/publicservers/card.jsx\");\n/* harmony import */ var _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../structs/psconnection */ \"./src/structs/psconnection.js\");\n/* harmony import */ var _settings_components_search__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../settings/components/search */ \"./src/ui/settings/components/search.jsx\");\n\n\n\n\n\nconst SettingsView = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"SettingsView\");\nclass PublicServers extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n get categoryButtons() {\n return [\"All\", \"FPS Games\", \"MMO Games\", \"Strategy Games\", \"MOBA Games\", \"RPG Games\", \"Tabletop Games\", \"Sandbox Games\", \"Simulation Games\", \"Music\", \"Community\", \"Language\", \"Programming\", \"Other\"];\n }\n\n constructor(props) {\n super(props);\n this.state = {\n category: \"All\",\n query: \"\",\n loading: true,\n user: null,\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n };\n this.changeCategory = this.changeCategory.bind(this);\n this.searchKeyDown = this.searchKeyDown.bind(this);\n this.connect = this.connect.bind(this);\n this.loadNextPage = this.loadNextPage.bind(this);\n this.join = this.join.bind(this);\n }\n\n componentDidMount() {\n this.checkConnection();\n }\n\n async checkConnection() {\n const userData = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].checkConnection();\n\n if (!userData) {\n return this.setState({\n loading: true,\n user: null\n });\n }\n\n this.setState({\n user: userData\n });\n this.search();\n }\n\n async connect() {\n await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].connect();\n this.checkConnection();\n }\n\n searchKeyDown(e) {\n if (this.state.loading || e.which !== 13) return;\n this.search(e.target.value);\n }\n\n async search(term = \"\", from = 0) {\n this.setState({\n query: term,\n loading: true\n });\n const results = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].search({\n term,\n category: this.state.category == \"All\" ? \"\" : this.state.category,\n from\n });\n\n if (!results) {\n return this.setState({\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n });\n }\n\n this.setState({\n loading: false,\n results\n });\n }\n\n async changeCategory(id) {\n if (this.state.loading) return;\n await new Promise(resolve => this.setState({\n category: id\n }, resolve));\n this.search();\n }\n\n loadNextPage() {\n if (this.state.loading) return;\n this.search(this.state.query, this.state.results.next);\n }\n\n async join(id, native = false) {\n return await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].join(id, native);\n }\n\n get searchBox() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_components_search__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onKeyDown: this.searchKeyDown,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search}...`\n });\n }\n\n get title() {\n if (!this.state.user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.notConnected;\n if (this.state.loading) return `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading}...`;\n const start = this.state.results.from + 1;\n const total = this.state.results.total;\n const end = this.state.results.next ? this.state.results.next : total;\n let title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.results.format({\n start,\n end,\n total,\n category: this.state.category\n });\n if (this.state.query) title += \" \" + modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.query.format({\n query: this.state.query\n });\n return title;\n }\n\n get content() {\n const connectButton = this.state.user ? null : {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connect,\n onClick: this.connect\n };\n const pinned = this.state.category == \"All\" || !this.state.user ? this.bdServer : null;\n const servers = this.state.results.servers.map(server => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: server.identifier,\n server: server,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n join: this.join,\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n });\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title,\n button: connectButton\n }), pinned, servers, this.state.results.next ? this.nextButton : null, this.state.results.servers.length > 0 && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title\n })];\n }\n\n get nextButton() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-next\",\n onClick: this.loadNextPage\n }, this.state.loading ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loadMore);\n }\n\n get connection() {\n const {\n user\n } = this.state;\n if (!user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n });\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footnote\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connection.format(user)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-reconnect\",\n onClick: this.connect\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.reconnect));\n }\n\n get bdServer() {\n const server = {\n name: \"BetterDiscord\",\n online: \"7500+\",\n members: \"20000+\",\n categories: [\"community\", \"programming\", \"support\"],\n description: \"Official BetterDiscord server for plugins, themes, support, etc\",\n identifier: \"86004744966914048\",\n iconUrl: \"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp\",\n nativejoin: true,\n invite_code: \"0Tmfo5ZbORCRqbAd\",\n pinned: true\n };\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n server: server,\n pinned: true,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n }\n\n render() {\n const categories = this.categoryButtons.map(name => ({\n section: name,\n label: name,\n element: () => this.content\n }));\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(SettingsView, {\n onClose: this.props.close,\n onSetSection: this.changeCategory,\n section: this.state.category,\n sections: [{\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search\n }, {\n section: \"CUSTOM\",\n element: () => this.searchBox\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.categories\n }, ...categories, {\n section: \"DIVIDER\"\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n href: \"https://discordservers.com\",\n target: \"_blank\"\n }, \"DiscordServers.com\")\n }, {\n section: \"DIVIDER\"\n }, {\n section: \"CUSTOM\",\n element: () => this.connection\n }],\n theme: \"dark\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvbWVudS5qcz85YWNkIl0sIm5hbWVzIjpbIlNldHRpbmdzVmlldyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIlB1YmxpY1NlcnZlcnMiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNhdGVnb3J5QnV0dG9ucyIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsImNhdGVnb3J5IiwicXVlcnkiLCJsb2FkaW5nIiwidXNlciIsInJlc3VsdHMiLCJzZXJ2ZXJzIiwic2l6ZSIsImZyb20iLCJ0b3RhbCIsIm5leHQiLCJjaGFuZ2VDYXRlZ29yeSIsImJpbmQiLCJzZWFyY2hLZXlEb3duIiwiY29ubmVjdCIsImxvYWROZXh0UGFnZSIsImpvaW4iLCJjb21wb25lbnREaWRNb3VudCIsImNoZWNrQ29ubmVjdGlvbiIsInVzZXJEYXRhIiwiQ29ubmVjdGlvbiIsInNldFN0YXRlIiwic2VhcmNoIiwiZSIsIndoaWNoIiwidGFyZ2V0IiwidmFsdWUiLCJ0ZXJtIiwiaWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm5hdGl2ZSIsInNlYXJjaEJveCIsIlN0cmluZ3MiLCJ0aXRsZSIsIm5vdENvbm5lY3RlZCIsInN0YXJ0IiwiZW5kIiwiZm9ybWF0IiwiY29udGVudCIsImNvbm5lY3RCdXR0b24iLCJvbkNsaWNrIiwicGlubmVkIiwiYmRTZXJ2ZXIiLCJtYXAiLCJzZXJ2ZXIiLCJjcmVhdGVFbGVtZW50IiwiU2VydmVyQ2FyZCIsImtleSIsImlkZW50aWZpZXIiLCJqb2luZWQiLCJoYXNKb2luZWQiLCJkZWZhdWx0QXZhdGFyIiwiZ2V0RGVmYXVsdEF2YXRhciIsIlNldHRpbmdzVGl0bGUiLCJ0ZXh0IiwiYnV0dG9uIiwibmV4dEJ1dHRvbiIsImxlbmd0aCIsInR5cGUiLCJjbGFzc05hbWUiLCJsb2FkTW9yZSIsImNvbm5lY3Rpb24iLCJyZWNvbm5lY3QiLCJuYW1lIiwib25saW5lIiwibWVtYmVycyIsImNhdGVnb3JpZXMiLCJkZXNjcmlwdGlvbiIsImljb25VcmwiLCJuYXRpdmVqb2luIiwiaW52aXRlX2NvZGUiLCJyZW5kZXIiLCJzZWN0aW9uIiwibGFiZWwiLCJlbGVtZW50Iiwib25DbG9zZSIsImNsb3NlIiwib25TZXRTZWN0aW9uIiwic2VjdGlvbnMiLCJocmVmIiwidGhlbWUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFlBQVksR0FBR0Msc0RBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsY0FBaEMsQ0FBckI7QUFFZSxNQUFNQyxhQUFOLFNBQTRCQyw2Q0FBSyxDQUFDQyxTQUFsQyxDQUE0QztBQUV2RCxNQUFJQyxlQUFKLEdBQXNCO0FBQ2xCLFdBQU8sQ0FBQyxLQUFELEVBQVEsV0FBUixFQUFxQixXQUFyQixFQUFrQyxnQkFBbEMsRUFBb0QsWUFBcEQsRUFBa0UsV0FBbEUsRUFBK0UsZ0JBQS9FLEVBQWlHLGVBQWpHLEVBQWtILGtCQUFsSCxFQUFzSSxPQUF0SSxFQUErSSxXQUEvSSxFQUE0SixVQUE1SixFQUF3SyxhQUF4SyxFQUF1TCxPQUF2TCxDQUFQO0FBQ0g7O0FBRURDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUNUQyxjQUFRLEVBQUUsS0FERDtBQUVUQyxXQUFLLEVBQUUsRUFGRTtBQUdUQyxhQUFPLEVBQUUsSUFIQTtBQUlUQyxVQUFJLEVBQUUsSUFKRztBQUtUQyxhQUFPLEVBQUU7QUFDTEMsZUFBTyxFQUFFLEVBREo7QUFFTEMsWUFBSSxFQUFFLENBRkQ7QUFHTEMsWUFBSSxFQUFFLENBSEQ7QUFJTEMsYUFBSyxFQUFFLENBSkY7QUFLTEMsWUFBSSxFQUFFO0FBTEQ7QUFMQSxLQUFiO0FBY0EsU0FBS0MsY0FBTCxHQUFzQixLQUFLQSxjQUFMLENBQW9CQyxJQUFwQixDQUF5QixJQUF6QixDQUF0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a0M7QUFDckNxRixhQUFPLEVBQUUsS0FBSzdFLEtBQUwsQ0FBVzhFLEtBRGlCO0FBRXJDQyxrQkFBWSxFQUFFLEtBQUtuRSxjQUZrQjtBQUdyQzhELGFBQU8sRUFBRSxLQUFLekUsS0FBTCxDQUFXQyxRQUhpQjtBQUlyQzhFLGNBQVEsRUFBRSxDQUNOO0FBQUNOLGVBQU8sRUFBRSxRQUFWO0FBQW9CQyxhQUFLLEVBQUV6QywrQ0FBTyxDQUFDdkMsYUFBUixDQUFzQjRCO0FBQWpELE9BRE0sRUFFTjtBQUFDbUQsZUFBTyxFQUFFLFFBQVY7QUFBb0JFLGVBQU8sRUFBRSxNQUFNLEtBQUszQztBQUF4QyxPQUZNLEVBR047QUFBQ3lDLGVBQU8sRUFBRSxRQUFWO0FBQW9CQyxhQUFLLEVBQUV6QywrQ0FBTyxDQUFDdkMsYUFBUixDQUFzQnlFO0FBQWpELE9BSE0sRUFJTixHQUFHQSxVQUpHLEVBS047QUFBQ00sZUFBTyxFQUFFO0FBQVYsT0FMTSxFQU1OO0FBQUNBLGVBQU8sRUFBRSxRQUFWO0FBQW9CQyxhQUFLLEVBQUUvRSw2Q0FBSyxDQUFDbUQsYUFBTixDQUFvQixHQUFwQixFQUF5QjtBQUFDa0MsY0FBSSxFQUFFLDRCQUFQO0FBQXFDdkQsZ0JBQU0sRUFBRTtBQUE3QyxTQUF6QixFQUFpRixvQkFBakY7QUFBM0IsT0FOTSxFQU9OO0FBQUNnRCxlQUFPLEVBQUU7QUFBVixPQVBNLEVBUU47QUFBQ0EsZUFBTyxFQUFFLFFBQVY7QUFBb0JFLGVBQU8sRUFBRSxNQUFNLEtBQUtiO0FBQXhDLE9BUk0sQ0FKMkI7QUFjckNtQixXQUFLLEVBQUU7QUFkOEIsS0FBbEMsQ0FBUDtBQWdCSDs7QUFsS3NEIiwiZmlsZSI6Ii4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvbWVudS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFdlYnBhY2tNb2R1bGVzLCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi4vc2V0dGluZ3MvdGl0bGVcIjtcclxuaW1wb3J0IFNlcnZlckNhcmQgZnJvbSBcIi4vY2FyZFwiO1xyXG5pbXBvcnQgQ29ubmVjdGlvbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9wc2Nvbm5lY3Rpb25cIjtcclxuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi4vc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2hcIjtcclxuXHJcbmNvbnN0IFNldHRpbmdzVmlldyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJTZXR0aW5nc1ZpZXdcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBnZXQgY2F0ZWdvcnlCdXR0b25zKCkge1xyXG4gICAgICAgIHJldHVybiBbXCJBbGxcIiwgXCJGUFMgR2FtZXNcIiwgXCJNTU8gR2FtZXNcIiwgXCJTdHJhdGVneSBHYW1lc1wiLCBcIk1PQkEgR2FtZXNcIiwgXCJSUEcgR2FtZXNcIiwgXCJUYWJsZXRvcCBHYW1lc1wiLCBcIlNhbmRib3ggR2FtZXNcIiwgXCJTaW11bGF0aW9uIEdhbWVzXCIsIFwiTXVzaWNcIiwgXCJDb21tdW5pdHlcIiwgXCJMYW5ndWFnZVwiLCBcIlByb2dyYW1taW5nXCIsIFwiT3RoZXJcIl07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6IFwiQWxsXCIsXHJcbiAgICAgICAgICAgIHF1ZXJ5OiBcIlwiLFxyXG4gICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICB1c2VyOiBudWxsLFxyXG4gICAgICAgICAgICByZXN1bHRzOiB7XHJcbiAgICAgICAgICAgICAgICBzZXJ2ZXJzOiBbXSxcclxuICAgICAgICAgICAgICAgIHNpemU6IDAsXHJcbiAgICAgICAgICAgICAgICBmcm9tOiAwLFxyXG4gICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICBuZXh0OiBudWxsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNoYW5nZUNhdGVnb3J5ID0gdGhpcy5jaGFuZ2VDYXRlZ29yeS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoS2V5RG93biA9IHRoaXMuc2VhcmNoS2V5RG93bi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdCA9IHRoaXMuY29ubmVjdC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMubG9hZE5leHRQYWdlID0gdGhpcy5sb2FkTmV4dFBhZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmpvaW4gPSB0aGlzLmpvaW4uYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICB0aGlzLmNoZWNrQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoZWNrQ29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCB1c2VyRGF0YSA9IGF3YWl0IENvbm5lY3Rpb24uY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgaWYgKCF1c2VyRGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7bG9hZGluZzogdHJ1ZSwgdXNlcjogbnVsbH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFN0YXRlKHt1c2VyOiB1c2VyRGF0YX0pO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY29ubmVjdCgpIHtcclxuICAgICAgICBhd2FpdCBDb25uZWN0aW9uLmNvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLmNoZWNrQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaEtleURvd24oZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxvYWRpbmcgfHwgZS53aGljaCAhPT0gMTMpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNlYXJjaChlLnRhcmdldC52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoKHRlcm0gPSBcIlwiLCBmcm9tID0gMCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3F1ZXJ5OiB0ZXJtLCBsb2FkaW5nOiB0cnVlfSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IENvbm5lY3Rpb24uc2VhcmNoKHt0ZXJtLCBjYXRlZ29yeTogdGhpcy5zdGF0ZS5jYXRlZ29yeSA9PSBcIkFsbFwiID8gXCJcIiA6IHRoaXMuc3RhdGUuY2F0ZWdvcnksIGZyb219KTtcclxuICAgICAgICBpZiAoIXJlc3VsdHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGUoe3Jlc3VsdHM6IHtcclxuICAgICAgICAgICAgICAgIHNlcnZlcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcclxuICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGxcclxuICAgICAgICAgICAgfX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiBmYWxzZSwgcmVzdWx0c30pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoYW5nZUNhdGVnb3J5KGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGhpcy5zZXRTdGF0ZSh7Y2F0ZWdvcnk6IGlkfSwgcmVzb2x2ZSkpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZE5leHRQYWdlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxvYWRpbmcpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNlYXJjaCh0aGlzLnN0YXRlLnF1ZXJ5LCB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgam9pbihpZCwgbmF0aXZlID0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgQ29ubmVjdGlvbi5qb2luKGlkLCBuYXRpdmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzZWFyY2hCb3goKSB7XHJcbiAgICAgICAgcmV0dXJuIDxTZWFyY2ggb25LZXlEb3duPXt0aGlzLnNlYXJjaEtleURvd259IHBsYWNlaG9sZGVyPXtgJHtTdHJpbmdzLlB1YmxpY1NlcnZlcnMuc2VhcmNofS4uLmB9IC8+O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB0aXRsZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUudXNlcikgcmV0dXJuIFN0cmluZ3MuUHVibGljU2VydmVycy5ub3RDb25uZWN0ZWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuIGAke1N0cmluZ3MuUHVibGljU2VydmVycy5sb2FkaW5nfS4uLmA7XHJcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXRlLnJlc3VsdHMuZnJvbSArIDE7XHJcbiAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLnN0YXRlLnJlc3VsdHMudG90YWw7XHJcbiAgICAgICAgY29uc3QgZW5kID0gdGhpcy5zdGF0ZS5yZXN1bHRzLm5leHQgPyB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA6IHRvdGFsO1xyXG4gICAgICAgIGxldCB0aXRsZSA9IFN0cmluZ3MuUHVibGljU2VydmVycy5yZXN1bHRzLmZvcm1hdCh7c3RhcnQsIGVuZCwgdG90YWwsIGNhdGVnb3J5OiB0aGlzLnN0YXRlLmNhdGVnb3J5fSk7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUucXVlcnkpIHRpdGxlICs9IFwiIFwiICsgU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnF1ZXJ5LmZvcm1hdCh7cXVlcnk6IHRoaXMuc3RhdGUucXVlcnl9KTtcclxuICAgICAgICByZXR1cm4gdGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNvbnRlbnQoKSB7XHJcbiAgICAgICAgY29uc3QgY29ubmVjdEJ1dHRvbiA9IHRoaXMuc3RhdGUudXNlciA/IG51bGwgOiB7dGl0bGU6IFN0cmluZ3MuUHVibGljU2VydmVycy5jb25uZWN0LCBvbkNsaWNrOiB0aGlzLmNvbm5lY3R9O1xyXG4gICAgICAgIGNvbnN0IHBpbm5lZCA9IHRoaXMuc3RhdGUuY2F0ZWdvcnkgPT0gXCJBbGxcIiB8fCAhdGhpcy5zdGF0ZS51c2VyID8gdGhpcy5iZFNlcnZlciA6IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc2VydmVycyA9IHRoaXMuc3RhdGUucmVzdWx0cy5zZXJ2ZXJzLm1hcCgoc2VydmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNlcnZlckNhcmQsIHtrZXk6IHNlcnZlci5pZGVudGlmaWVyLCBzZXJ2ZXI6IHNlcnZlciwgam9pbmVkOiBDb25uZWN0aW9uLmhhc0pvaW5lZChzZXJ2ZXIuaWRlbnRpZmllciksIGpvaW46IHRoaXMuam9pbiwgZGVmYXVsdEF2YXRhcjogQ29ubmVjdGlvbi5nZXREZWZhdWx0QXZhdGFyfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIFtSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aGlzLnRpdGxlLCBidXR0b246IGNvbm5lY3RCdXR0b259KSxcclxuICAgICAgICAgICAgcGlubmVkLFxyXG4gICAgICAgICAgICBzZXJ2ZXJzLFxyXG4gICAgICAgICAgICB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA/IHRoaXMubmV4dEJ1dHRvbiA6IG51bGwsXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0cy5zZXJ2ZXJzLmxlbmd0aCA+IDAgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc1RpdGxlLCB7dGV4dDogdGhpcy50aXRsZX0pXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbmV4dEJ1dHRvbigpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJkLWJ1dHRvbiBiZC1idXR0b24tbmV4dFwiLCBvbkNsaWNrOiB0aGlzLmxvYWROZXh0UGFnZX0sIHRoaXMuc3RhdGUubG9hZGluZyA/IFN0cmluZ3MuUHVibGljU2VydmVycy5sb2FkaW5nIDogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRNb3JlKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCB7dXNlcn0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGlmICghdXNlcikgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBcImJkLWNvbm5lY3Rpb25cIn0pO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtpZDogXCJiZC1jb25uZWN0aW9uXCJ9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmQtZm9vdG5vdGVcIn0sIFN0cmluZ3MuUHVibGljU2VydmVycy5jb25uZWN0aW9uLmZvcm1hdCh1c2VyKSksXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwge3R5cGU6IFwiYnV0dG9uXCIsIGNsYXNzTmFtZTogXCJiZC1idXR0b24gYmQtYnV0dG9uLXJlY29ubmVjdFwiLCBvbkNsaWNrOiB0aGlzLmNvbm5lY3R9LCBTdHJpbmdzLlB1YmxpY1NlcnZlcnMucmVjb25uZWN0KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJkU2VydmVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNlcnZlciA9IHtcclxuICAgICAgICAgICAgbmFtZTogXCJCZXR0ZXJEaXNjb3JkXCIsXHJcbiAgICAgICAgICAgIG9ubGluZTogXCI3NTAwK1wiLFxyXG4gICAgICAgICAgICBtZW1iZXJzOiBcIjIwMDAwK1wiLFxyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBbXCJjb21tdW5pdHlcIiwgXCJwcm9ncmFtbWluZ1wiLCBcInN1cHBvcnRcIl0sXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk9mZmljaWFsIEJldHRlckRpc2NvcmQgc2VydmVyIGZvciBwbHVnaW5zLCB0aGVtZXMsIHN1cHBvcnQsIGV0Y1wiLFxyXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBcIjg2MDA0NzQ0OTY2OTE0MDQ4XCIsXHJcbiAgICAgICAgICAgIGljb25Vcmw6IFwiaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vaWNvbnMvODYwMDQ3NDQ5NjY5MTQwNDgvMjkyZTdmNmJmZmYyYjcxZGZkMTNlNTA4YTg1OWFlZGQud2VicFwiLFxyXG4gICAgICAgICAgICBuYXRpdmVqb2luOiB0cnVlLFxyXG4gICAgICAgICAgICBpbnZpdGVfY29kZTogXCIwVG1mbzVaYk9SQ1JxYkFkXCIsXHJcbiAgICAgICAgICAgIHBpbm5lZDogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VydmVyQ2FyZCwge3NlcnZlcjogc2VydmVyLCBwaW5uZWQ6IHRydWUsIGpvaW5lZDogQ29ubmVjdGlvbi5oYXNKb2luZWQoc2VydmVyLmlkZW50aWZpZXIpLCBkZWZhdWx0QXZhdGFyOiBDb25uZWN0aW9uLmdldERlZmF1bHRBdmF0YXJ9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcnlCdXR0b25zLm1hcChuYW1lID0+ICh7XHJcbiAgICAgICAgICAgICAgICBzZWN0aW9uOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IG5hbWUsXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50OiAoKSA9PiB0aGlzLmNvbnRlbnRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVmlldywge1xyXG4gICAgICAgICAgICBvbkNsb3NlOiB0aGlzLnByb3BzLmNsb3NlLFxyXG4gICAgICAgICAgICBvblNldFNlY3Rpb246IHRoaXMuY2hhbmdlQ2F0ZWdvcnksXHJcbiAgICAgICAgICAgIHNlY3Rpb246IHRoaXMuc3RhdGUuY2F0ZWdvcnksXHJcbiAgICAgICAgICAgIHNlY3Rpb25zOiBbXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJIRUFERVJcIiwgbGFiZWw6IFN0cmluZ3MuUHVibGljU2VydmVycy5zZWFyY2h9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiQ1VTVE9NXCIsIGVsZW1lbnQ6ICgpID0+IHRoaXMuc2VhcmNoQm94fSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNhdGVnb3JpZXN9LFxyXG4gICAgICAgICAgICAgICAgLi4uY2F0ZWdvcmllcyxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkRJVklERVJcIn0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJIRUFERVJcIiwgbGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHtocmVmOiBcImh0dHBzOi8vZGlzY29yZHNlcnZlcnMuY29tXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIFwiRGlzY29yZFNlcnZlcnMuY29tXCIpfSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkRJVklERVJcIn0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJDVVNUT01cIiwgZWxlbWVudDogKCkgPT4gdGhpcy5jb25uZWN0aW9ufVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICB0aGVtZTogXCJkYXJrXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/publicservers/menu.js\n"); /***/ }), @@ -983,7 +995,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modu /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_delete__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/delete */ \"./src/ui/icons/delete.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass AddonCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n settingsOpen: false\n };\n this.settingsPanel = \"\";\n this.panelRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.reload = this.reload.bind(this);\n this.showSettings = this.showSettings.bind(this);\n this.closeSettings = this.closeSettings.bind(this);\n }\n\n reload() {\n if (!this.props.reload) return;\n this.props.addon = this.props.reload(this.props.addon.id);\n this.forceUpdate();\n }\n\n componentDidUpdate() {\n if (!this.state.settingsOpen) return;\n if (this.settingsPanel instanceof Node) this.panelRef.current.appendChild(this.settingsPanel);\n setImmediate(() => {\n const isHidden = (container, element) => {\n const cTop = container.scrollTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n return eTop < cTop || eBottom > cBottom;\n };\n\n const thisNode = this.panelRef.current;\n const container = thisNode.closest(\".scroller\");\n if (!isHidden(container, thisNode)) return;\n const thisNodeOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(thisNode);\n const containerOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(container);\n const original = container.scrollTop;\n const endPoint = thisNodeOffset.top - containerOffset.top + container.scrollTop - 30;\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].animate({\n duration: 300,\n update: function (progress) {\n if (endPoint > original) container.scrollTop = original + progress * (endPoint - original);else container.scrollTop = original - progress * (original - endPoint);\n }\n });\n });\n }\n\n getString(value) {\n return typeof value == \"string\" ? value : value.toString();\n }\n\n onChange() {\n this.props.onChange && this.props.onChange(this.props.addon.id);\n this.props.enabled = !this.props.enabled;\n }\n\n showSettings() {\n if (!this.props.hasSettings) return;\n this.setState({\n settingsOpen: true\n });\n }\n\n closeSettings() {\n this.panelRef.current.innerHTML = \"\";\n this.setState({\n settingsOpen: false\n });\n }\n\n buildTitle(name, version, author) {\n const title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.title.split(/({{[A-Za-z]+}})/);\n const nameIndex = title.findIndex(s => s == \"{{name}}\");\n if (nameIndex) title[nameIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-name\"\n }, name);\n const versionIndex = title.findIndex(s => s == \"{{version}}\");\n if (nameIndex) title[versionIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-version\"\n }, version);\n const authorIndex = title.findIndex(s => s == \"{{author}}\");\n if (nameIndex) title[authorIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-author\"\n }, author);\n return title.flat();\n }\n\n get settingsComponent() {\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n\n try {\n this.settingsPanel = this.props.getSettingsPanel();\n } catch (err) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].stacktrace(\"Addon Settings\", \"Unable to get settings panel for \" + name + \".\", err);\n }\n\n const props = {\n id: `${name}-settings`,\n className: \"addon-settings\",\n ref: this.panelRef\n };\n\n if (typeof settingsPanel == \"string\") {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Addon Settings\", \"Using a DOMString is officially deprecated.\");\n props.dangerouslySetInnerHTML = this.settingsPanel;\n }\n\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-card settings-open bd-switch-item\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-close\",\n onClick: this.closeSettings\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", props, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, this.settingsPanel instanceof modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component || typeof this.settingsPanel === \"function\" ? this.settingsPanel : null)));\n }\n\n buildLink(which) {\n const url = this.props.addon[which];\n if (!url) return null;\n const link = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bd-link bd-link-website\",\n href: url,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons[which]);\n\n if (which == \"invite\") {\n link.props.onClick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n let code = url;\n const tester = /\\.gg\\/(.*)$/;\n if (tester.test(code)) code = code.match(tester)[1];\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].LayerStack.popLayer();\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(code);\n };\n }\n\n return link;\n }\n\n get footer() {\n const links = [\"website\", \"source\", \"invite\", \"donate\", \"patreon\"];\n if (!links.some(l => this.props.addon[l]) && !this.props.hasSettings) return null;\n const linkComponents = links.map(this.buildLink.bind(this)).filter(c => c);\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-links\"\n }, linkComponents.map((comp, i) => i < linkComponents.length - 1 ? [comp, \" | \"] : comp).flat()), this.props.hasSettings && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n onClick: this.showSettings,\n className: \"bd-button bd-button-addon-settings\",\n disabled: !this.props.enabled\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.addonSettings));\n }\n\n makeButton(title, children, action) {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: title\n }, props => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-addon-button\",\n onClick: action\n }), children);\n });\n }\n\n render() {\n if (this.state.settingsOpen) return this.settingsComponent;\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n const author = this.getString(addon.author);\n const description = this.getString(addon.description);\n const version = this.getString(addon.version);\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: `${addon.id}-card`,\n className: \"bd-addon-card settings-closed\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-header\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-title\"\n }, this.buildTitle(name, version, author)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls\"\n }, this.props.editAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.editAddon, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), this.props.editAddon), this.props.deleteAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_delete__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null), this.props.deleteAddon), this.props.showReloadIcon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.reload, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-reload bd-reload-card\"\n }), this.reload), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n checked: this.props.enabled,\n onChange: this.onChange\n }))), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description-wrap scroller-wrap fade\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description scroller\"\n }, description)), this.footer);\n }\n\n}\nconst originalRender = AddonCard.prototype.render;\nObject.defineProperty(AddonCard.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonCard\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2FkZG9uY2FyZC5qc3g/NjM3MyJdLCJuYW1lcyI6WyJUb29sdGlwIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwiQWRkb25DYXJkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJzZXR0aW5nc09wZW4iLCJzZXR0aW5nc1BhbmVsIiwicGFuZWxSZWYiLCJjcmVhdGVSZWYiLCJvbkNoYW5nZSIsImJpbmQiLCJyZWxvYWQiLCJzaG93U2V0dGluZ3MiLCJjbG9zZVNldHRpbmdzIiwiYWRkb24iLCJpZCIsImZvcmNlVXBkYXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiTm9kZSIsImN1cnJlbnQiLCJhcHBlbmRDaGlsZCIsInNldEltbWVkaWF0ZSIsImlzSGlkZGVuIiwiY29udGFpbmVyIiwiZWxlbWVudCIsImNUb3AiLCJzY3JvbGxUb3AiLCJjQm90dG9tIiwiY2xpZW50SGVpZ2h0IiwiZVRvcCIsIm9mZnNldFRvcCIsImVCb3R0b20iLCJ0aGlzTm9kZSIsImNsb3Nlc3QiLCJ0aGlzTm9kZU9mZnNldCIsIkRPTSIsIm9mZnNldCIsImNvbnRhaW5lck9mZnNldCIsIm9yaWdpbmFsIiwiZW5kUG9pbnQiLCJ0b3AiLCJhbmltYXRlIiwiZHVyYXRpb24iLCJ1cGRhdGUiLCJwcm9ncmVzcyIsImdldFN0cmluZyIsInZhbHVlIiwidG9TdHJpbmciLCJlbmFibGVkIiwiaGFzU2V0dGluZ3MiLCJzZXRTdGF0ZSIsImlubmVySFRNTCIsImJ1aWxkVGl0bGUiLCJuYW1lIiwidmVyc2lvbiIsImF1dGhvciIsInRpdGxlIiwiU3RyaW5ncyIsIkFkZG9ucyIsInNwbGl0IiwibmFtZUluZGV4IiwiZmluZEluZGV4IiwicyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJ2ZXJzaW9uSW5kZXgiLCJhdXRob3JJbmRleCIsImZsYXQiLCJzZXR0aW5nc0NvbXBvbmVudCIsImdldFNldHRpbmdzUGFuZWwiLCJlcnIiLCJMb2dnZXIiLCJzdGFja3RyYWNlIiwicmVmIiwid2FybiIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiYnVpbGRMaW5rIiwid2hpY2giLCJ1cmwiLCJsaW5rIiwib25DbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjb2RlIiwidGVzdGVyIiwidGVzdCIsIm1hdGNoIiwiRGlzY29yZE1vZHVsZXMiLCJMYXllclN0YWNrIiwicG9wTGF5ZXIiLCJJbnZpdGVBY3Rpb25zIiwiYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbCIsImZvb3RlciIsImxpbmtzIiwic29tZSIsImwiLCJsaW5rQ29tcG9uZW50cyIsIm1hcCIsImZpbHRlciIsImMiLCJjb21wIiwiaSIsImxlbmd0aCIsImFkZG9uU2V0dGluZ3MiLCJtYWtlQnV0dG9uIiwiY2hpbGRyZW4iLCJhY3Rpb24iLCJyZW5kZXIiLCJkZXNjcmlwdGlvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwic2hvd1JlbG9hZEljb24iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImdldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLE9BQU8sR0FBR0Msc0RBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxNQUFNQyxTQUFOLFNBQXdCQyw2Q0FBSyxDQUFDQyxTQUE5QixDQUF3QztBQUVuREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGtCQUFZLEVBQUU7QUFETCxLQUFiO0FBSUEsU0FBS0MsYUFBTCxHQUFxQixFQUFyQjtBQUNBLFNB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bnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyLCBTdHJpbmdzLCBXZWJwYWNrTW9kdWxlcywgRE9NLCBEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gXCIuLi9pY29ucy9jbG9zZVwiO1xyXG5pbXBvcnQgUmVsb2FkSWNvbiBmcm9tIFwiLi4vaWNvbnMvcmVsb2FkXCI7XHJcbmltcG9ydCBFZGl0SWNvbiBmcm9tIFwiLi4vaWNvbnMvZWRpdFwiO1xyXG5pbXBvcnQgRGVsZXRlSWNvbiBmcm9tIFwiLi4vaWNvbnMvZGVsZXRlXCI7XHJcbmltcG9ydCBTd2l0Y2ggZnJvbSBcIi4vY29tcG9uZW50cy9zd2l0Y2hcIjtcclxuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAgXCIuLi9lcnJvcmJvdW5kYXJ5XCI7XHJcblxyXG5jb25zdCBUb29sdGlwID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzT3BlbjogZmFsc2VcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmdzUGFuZWwgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMucGFuZWxSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbG9hZCA9IHRoaXMucmVsb2FkLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zaG93U2V0dGluZ3MgPSB0aGlzLnNob3dTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY2xvc2VTZXR0aW5ncyA9IHRoaXMuY2xvc2VTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMucmVsb2FkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5hZGRvbiA9IHRoaXMucHJvcHMucmVsb2FkKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLnNldHRpbmdzT3BlbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1BhbmVsKTtcclxuXHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW4gPSAoY29udGFpbmVyLCBlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNCb3R0b20gPSBjVG9wICsgY29udGFpbmVyLmNsaWVudEhlaWdodDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVCb3R0b20gPSBlVG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gIChlVG9wIDwgY1RvcCB8fCBlQm90dG9tID4gY0JvdHRvbSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aGlzTm9kZSA9IHRoaXMucGFuZWxSZWYuY3VycmVudDtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpc05vZGUuY2xvc2VzdChcIi5zY3JvbGxlclwiKTtcclxuICAgICAgICAgICAgaWYgKCFpc0hpZGRlbihjb250YWluZXIsIHRoaXNOb2RlKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb25zdCB0aGlzTm9kZU9mZnNldCA9IERPTS5vZmZzZXQodGhpc05vZGUpO1xyXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJPZmZzZXQgPSBET00ub2Zmc2V0KGNvbnRhaW5lcik7XHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsID0gY29udGFpbmVyLnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0aGlzTm9kZU9mZnNldC50b3AgLSBjb250YWluZXJPZmZzZXQudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIDMwO1xyXG4gICAgICAgICAgICBET00uYW5pbWF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwLFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihwcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbmRQb2ludCA+IG9yaWdpbmFsKSBjb250YWluZXIuc2Nyb2xsVG9wID0gb3JpZ2luYWwgKyAocHJvZ3Jlc3MgKiAoZW5kUG9pbnQgLSBvcmlnaW5hbCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgY29udGFpbmVyLnNjcm9sbFRvcCA9IG9yaWdpbmFsIC0gKHByb2dyZXNzICogKG9yaWdpbmFsIC0gZW5kUG9pbnQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RyaW5nKHZhbHVlKSB7cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSBcInN0cmluZ1wiID8gdmFsdWUgOiB2YWx1ZS50b1N0cmluZygpO31cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlICYmIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5hZGRvbi5pZCk7XHJcbiAgICAgICAgdGhpcy5wcm9wcy5lbmFibGVkID0gIXRoaXMucHJvcHMuZW5hYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLmhhc1NldHRpbmdzKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2V0dGluZ3NPcGVuOiB0cnVlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VTZXR0aW5ncygpIHtcclxuICAgICAgICB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRUaXRsZShuYW1lLCB2ZXJzaW9uLCBhdXRob3IpIHtcclxuICAgICAgICBjb25zdCB0aXRsZSA9IFN0cmluZ3MuQWRkb25zLnRpdGxlLnNwbGl0KC8oe3tbQS1aYS16XSt9fSkvKTtcclxuICAgICAgICBjb25zdCBuYW1lSW5kZXggPSB0aXRsZS5maW5kSW5kZXgocyA9PiBzID09IFwie3tuYW1lfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbbmFtZUluZGV4XSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmQtbmFtZVwifSwgbmFtZSk7XHJcbiAgICAgICAgY29uc3QgdmVyc2lvbkluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7dmVyc2lvbn19XCIpO1xyXG4gICAgICAgIGlmIChuYW1lSW5kZXgpIHRpdGxlW3ZlcnNpb25JbmRleF0gPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkLXZlcnNpb25cIn0sIHZlcnNpb24pO1xyXG4gICAgICAgIGNvbnN0IGF1dGhvckluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7YXV0aG9yfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbYXV0aG9ySW5kZXhdID0gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZC1hdXRob3JcIn0sIGF1dGhvcik7XHJcbiAgICAgICAgcmV0dXJuIHRpdGxlLmZsYXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2V0dGluZ3NDb21wb25lbnQoKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLnByb3BzLmFkZG9uO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5uYW1lKTtcclxuICAgICAgICB0cnkgeyB0aGlzLnNldHRpbmdzUGFuZWwgPSB0aGlzLnByb3BzLmdldFNldHRpbmdzUGFuZWwoKTsgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHsgTG9nZ2VyLnN0YWNrdHJhY2UoXCJBZGRvbiBTZXR0aW5nc1wiLCBcIlVuYWJsZSB0byBnZXQgc2V0dGluZ3MgcGFuZWwgZm9yIFwiICsgbmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BzID0ge2lkOiBgJHtuYW1lfS1zZXR0aW5nc2AsIGNsYXNzTmFtZTogXCJhZGRvbi1zZXR0aW5nc1wiLCByZWY6IHRoaXMucGFuZWxSZWZ9O1xyXG4gICAgICAgIGlmICh0eXBlb2Yoc2V0dGluZ3NQYW5lbCkgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBMb2dnZXIud2FybihcIkFkZG9uIFNldHRpbmdzXCIsIFwiVXNpbmcgYSBET01TdHJpbmcgaXMgb2ZmaWNpYWxseSBkZXByZWNhdGVkLlwiKTtcclxuICAgICAgICAgICAgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPSB0aGlzLnNldHRpbmdzUGFuZWw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1jYXJkIHNldHRpbmdzLW9wZW4gYmQtc3dpdGNoLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNsb3NlXCIgb25DbGljaz17dGhpcy5jbG9zZVNldHRpbmdzfT48Q2xvc2VCdXR0b24gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm9wc30+PEVycm9yQm91bmRhcnk+e3RoaXMuc2V0dGluZ3NQYW5lbCBpbnN0YW5jZW9mIFJlYWN0LkNvbXBvbmVudCB8fCB0eXBlb2YodGhpcy5zZXR0aW5nc1BhbmVsKSA9PT0gXCJmdW5jdGlvblwiID8gdGhpcy5zZXR0aW5nc1BhbmVsIDogbnVsbH08L0Vycm9yQm91bmRhcnk+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRMaW5rKHdoaWNoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5wcm9wcy5hZGRvblt3aGljaF07XHJcbiAgICAgICAgaWYgKCF1cmwpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGNvbnN0IGxpbmsgPSA8YSBjbGFzc05hbWU9XCJiZC1saW5rIGJkLWxpbmstd2Vic2l0ZVwiIGhyZWY9e3VybH0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPntTdHJpbmdzLkFkZG9uc1t3aGljaF19PC9hPjtcclxuICAgICAgICBpZiAod2hpY2ggPT0gXCJpbnZpdGVcIikge1xyXG4gICAgICAgICAgICBsaW5rLnByb3BzLm9uQ2xpY2sgPSBmdW5jdGlvbihldmVudCkge1xyXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvZGUgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXN0ZXIgPSAvXFwuZ2dcXC8oLiopJC87XHJcbiAgICAgICAgICAgICAgICBpZiAodGVzdGVyLnRlc3QoY29kZSkpIGNvZGUgPSBjb2RlLm1hdGNoKHRlc3RlcilbMV07XHJcbiAgICAgICAgICAgICAgICBEaXNjb3JkTW9kdWxlcy5MYXllclN0YWNrLnBvcExheWVyKCk7XHJcbiAgICAgICAgICAgICAgICBEaXNjb3JkTW9kdWxlcy5JbnZpdGVBY3Rpb25zLmFjY2VwdEludml0ZUFuZFRyYW5zaXRpb25Ub0ludml0ZUNoYW5uZWwoY29kZSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsaW5rO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmb290ZXIoKSB7XHJcbiAgICAgICAgY29uc3QgbGlua3MgPSBbXCJ3ZWJzaXRlXCIsIFwic291cmNlXCIsIFwiaW52aXRlXCIsIFwiZG9uYXRlXCIsIFwicGF0cmVvblwiXTtcclxuICAgICAgICBpZiAoIWxpbmtzLnNvbWUobCA9PiB0aGlzLnByb3BzLmFkZG9uW2xdKSAmJiAhdGhpcy5wcm9wcy5oYXNTZXR0aW5ncykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgY29uc3QgbGlua0NvbXBvbmVudHMgPSBsaW5rcy5tYXAodGhpcy5idWlsZExpbmsuYmluZCh0aGlzKSkuZmlsdGVyKGMgPT4gYyk7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmQtbGlua3NcIj57bGlua0NvbXBvbmVudHMubWFwKChjb21wLCBpKSA9PiBpIDwgbGlua0NvbXBvbmVudHMubGVuZ3RoIC0gMSA/IFtjb21wLCBcIiB8IFwiXSA6IGNvbXApLmZsYXQoKX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuaGFzU2V0dGluZ3MgJiYgPGJ1dHRvbiBvbkNsaWNrPXt0aGlzLnNob3dTZXR0aW5nc30gY2xhc3NOYW1lPVwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1hZGRvbi1zZXR0aW5nc1wiIGRpc2FibGVkPXshdGhpcy5wcm9wcy5lbmFibGVkfT57U3RyaW5ncy5BZGRvbnMuYWRkb25TZXR0aW5nc308L2J1dHRvbj59XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUJ1dHRvbih0aXRsZSwgY2hpbGRyZW4sIGFjdGlvbikge1xyXG4gICAgICAgIHJldHVybiAgPFRvb2x0aXAgY29sb3I9XCJibGFja1wiIHBvc2l0aW9uPVwidG9wXCIgdGV4dD17dGl0bGV9PlxyXG4gICAgICAgICAgICAgICAgICAgIHsocHJvcHMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYgey4uLnByb3BzfSBjbGFzc05hbWU9XCJiZC1hZGRvbi1idXR0b25cIiBvbkNsaWNrPXthY3Rpb259PntjaGlsZHJlbn08L2Rpdj47XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD47XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNldHRpbmdzT3BlbikgcmV0dXJuIHRoaXMuc2V0dGluZ3NDb21wb25lbnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5wcm9wcy5hZGRvbjtcclxuICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRTdHJpbmcoYWRkb24ubmFtZSk7XHJcbiAgICAgICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRTdHJpbmcoYWRkb24uYXV0aG9yKTtcclxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMuZ2V0U3RyaW5nKGFkZG9uLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5nZXRTdHJpbmcoYWRkb24udmVyc2lvbik7XHJcblxyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPXtgJHthZGRvbi5pZH0tY2FyZGB9IGNsYXNzTmFtZT1cImJkLWFkZG9uLWNhcmQgc2V0dGluZ3MtY2xvc2VkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJkLXRpdGxlXCI+e3RoaXMuYnVpbGRUaXRsZShuYW1lLCB2ZXJzaW9uLCBhdXRob3IpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtY29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5lZGl0QWRkb24gJiYgdGhpcy5tYWtlQnV0dG9uKFN0cmluZ3MuQWRkb25zLmVkaXRBZGRvbiwgPEVkaXRJY29uIC8+LCB0aGlzLnByb3BzLmVkaXRBZGRvbil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuZGVsZXRlQWRkb24gJiYgdGhpcy5tYWtlQnV0dG9uKFN0cmluZ3MuQWRkb25zLmRlbGV0ZUFkZG9uLCA8RGVsZXRlSWNvbiAvPiwgdGhpcy5wcm9wcy5kZWxldGVBZGRvbil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd1JlbG9hZEljb24gJiYgdGhpcy5tYWtlQnV0dG9uKFN0cmluZ3MuQWRkb25zLnJlbG9hZCwgPFJlbG9hZEljb24gY2xhc3NOYW1lPVwiYmQtcmVsb2FkIGJkLXJlbG9hZC1jYXJkXCIgLz4sIHRoaXMucmVsb2FkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoIGNoZWNrZWQ9e3RoaXMucHJvcHMuZW5hYmxlZH0gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWRlc2NyaXB0aW9uLXdyYXAgc2Nyb2xsZXItd3JhcCBmYWRlXCI+PGRpdiBjbGFzc05hbWU9XCJiZC1kZXNjcmlwdGlvbiBzY3JvbGxlclwiPntkZXNjcmlwdGlvbn08L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5mb290ZXJ9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gQWRkb25DYXJkLnByb3RvdHlwZS5yZW5kZXI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShBZGRvbkNhcmQucHJvdG90eXBlLCBcInJlbmRlclwiLCB7XHJcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICBzZXQ6IGZ1bmN0aW9uKCkge0xvZ2dlci53YXJuKFwiQWRkb25DYXJkXCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/addoncard.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_delete__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/delete */ \"./src/ui/icons/delete.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass AddonCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n settingsOpen: false\n };\n this.settingsPanel = \"\";\n this.panelRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.reload = this.reload.bind(this);\n this.showSettings = this.showSettings.bind(this);\n this.closeSettings = this.closeSettings.bind(this);\n }\n\n reload() {\n if (!this.props.reload) return;\n this.props.addon = this.props.reload(this.props.addon.id);\n this.forceUpdate();\n }\n\n componentDidUpdate() {\n if (!this.state.settingsOpen) return;\n if (this.settingsPanel instanceof Node) this.panelRef.current.appendChild(this.settingsPanel);\n setImmediate(() => {\n const isHidden = (container, element) => {\n const cTop = container.scrollTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n return eTop < cTop || eBottom > cBottom;\n };\n\n const thisNode = this.panelRef.current;\n const container = thisNode.closest(\".scroller\");\n if (!isHidden(container, thisNode)) return;\n const thisNodeOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(thisNode);\n const containerOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(container);\n const original = container.scrollTop;\n const endPoint = thisNodeOffset.top - containerOffset.top + container.scrollTop - 30;\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].animate({\n duration: 300,\n update: function (progress) {\n if (endPoint > original) container.scrollTop = original + progress * (endPoint - original);else container.scrollTop = original - progress * (original - endPoint);\n }\n });\n });\n }\n\n getString(value) {\n return typeof value == \"string\" ? value : value.toString();\n }\n\n onChange() {\n this.props.onChange && this.props.onChange(this.props.addon.id);\n this.props.enabled = !this.props.enabled;\n }\n\n showSettings() {\n if (!this.props.hasSettings) return;\n this.setState({\n settingsOpen: true\n });\n }\n\n closeSettings() {\n this.panelRef.current.innerHTML = \"\";\n this.setState({\n settingsOpen: false\n });\n }\n\n buildTitle(name, version, author) {\n const title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.title.split(/({{[A-Za-z]+}})/);\n const nameIndex = title.findIndex(s => s == \"{{name}}\");\n if (nameIndex) title[nameIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-name\"\n }, name);\n const versionIndex = title.findIndex(s => s == \"{{version}}\");\n if (nameIndex) title[versionIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-version\"\n }, version);\n const authorIndex = title.findIndex(s => s == \"{{author}}\");\n if (nameIndex) title[authorIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-author\"\n }, author);\n return title.flat();\n }\n\n get settingsComponent() {\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n\n try {\n this.settingsPanel = this.props.getSettingsPanel();\n } catch (err) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].stacktrace(\"Addon Settings\", \"Unable to get settings panel for \" + name + \".\", err);\n }\n\n const props = {\n id: `${name}-settings`,\n className: \"addon-settings\",\n ref: this.panelRef\n };\n\n if (typeof settingsPanel == \"string\") {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Addon Settings\", \"Using a DOMString is officially deprecated.\");\n props.dangerouslySetInnerHTML = this.settingsPanel;\n }\n\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-card settings-open bd-switch-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-close\",\n onClick: this.closeSettings\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", props, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, this.settingsPanel instanceof modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component || typeof this.settingsPanel === \"function\" ? this.settingsPanel : null)));\n }\n\n buildLink(which) {\n const url = this.props.addon[which];\n if (!url) return null;\n const link = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bd-link bd-link-website\",\n href: url,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons[which]);\n\n if (which == \"invite\") {\n link.props.onClick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n let code = url;\n const tester = /\\.gg\\/(.*)$/;\n if (tester.test(code)) code = code.match(tester)[1];\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].LayerStack.popLayer();\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(code);\n };\n }\n\n return link;\n }\n\n get footer() {\n const links = [\"website\", \"source\", \"invite\", \"donate\", \"patreon\"];\n if (!links.some(l => this.props.addon[l]) && !this.props.hasSettings) return null;\n const linkComponents = links.map(this.buildLink.bind(this)).filter(c => c);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footer\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-links\"\n }, linkComponents.map((comp, i) => i < linkComponents.length - 1 ? [comp, \" | \"] : comp).flat()), this.props.hasSettings && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n onClick: this.showSettings,\n className: \"bd-button bd-button-addon-settings\",\n disabled: !this.props.enabled\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.addonSettings));\n }\n\n makeButton(title, children, action) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: title\n }, props => {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-addon-button\",\n onClick: action\n }), children);\n });\n }\n\n render() {\n if (this.state.settingsOpen) return this.settingsComponent;\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n const author = this.getString(addon.author);\n const description = this.getString(addon.description);\n const version = this.getString(addon.version);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: `${addon.id}-card`,\n className: \"bd-addon-card settings-closed\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-title\"\n }, this.buildTitle(name, version, author)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls\"\n }, this.props.editAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.editAddon, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), this.props.editAddon), this.props.deleteAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_delete__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null), this.props.deleteAddon), this.props.showReloadIcon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.reload, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-reload bd-reload-card\"\n }), this.reload), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n checked: this.props.enabled,\n onChange: this.onChange\n }))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description-wrap scroller-wrap fade\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description scroller\"\n }, description)), this.footer);\n }\n\n}\nconst originalRender = AddonCard.prototype.render;\nObject.defineProperty(AddonCard.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonCard\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2FkZG9uY2FyZC5qc3g/NjM3MyJdLCJuYW1lcyI6WyJUb29sdGlwIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwiQWRkb25DYXJkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJzZXR0aW5nc09wZW4iLCJzZXR0aW5nc1BhbmVsIiwicGFuZWxSZWYiLCJjcmVhdGVSZWYiLCJvbkNoYW5nZSIsImJpbmQiLCJyZWxvYWQiLCJzaG93U2V0dGluZ3MiLCJjbG9zZVNldHRpbmdzIiwiYWRkb24iLCJpZCIsImZvcmNlVXBkYXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiTm9kZSIsImN1cnJlbnQiLCJhcHBlbmRDaGlsZCIsInNldEltbWVkaWF0ZSIsImlzSGlkZGVuIiwiY29udGFpbmVyIiwiZWxlbWVudCIsImNUb3AiLCJzY3JvbGxUb3AiLCJjQm90dG9tIiwiY2xpZW50SGVpZ2h0IiwiZVRvcCIsIm9mZnNldFRvcCIsImVCb3R0b20iLCJ0aGlzTm9kZSIsImNsb3Nlc3QiLCJ0aGlzTm9kZU9mZnNldCIsIkRPTSIsIm9mZnNldCIsImNvbnRhaW5lck9mZnNldCIsIm9yaWdpbmFsIiwiZW5kUG9pbnQiLCJ0b3AiLCJhbmltYXRlIiwiZHVyYXRpb24iLCJ1cGRhdGUiLCJwcm9ncmVzcyIsImdldFN0cmluZyIsInZhbHVlIiwidG9TdHJpbmciLCJlbmFibGVkIiwiaGFzU2V0dGluZ3MiLCJzZXRTdGF0ZSIsImlubmVySFRNTCIsImJ1aWxkVGl0bGUiLCJuYW1lIiwidmVyc2lvbiIsImF1dGhvciIsInRpdGxlIiwiU3RyaW5ncyIsIkFkZG9ucyIsInNwbGl0IiwibmFtZUluZGV4IiwiZmluZEluZGV4IiwicyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJ2ZXJzaW9uSW5kZXgiLCJhdXRob3JJbmRleCIsImZsYXQiLCJzZXR0aW5nc0NvbXBvbmVudCIsImdldFNldHRpbmdzUGFuZWwiLCJlcnIiLCJMb2dnZXIiLCJzdGFja3RyYWNlIiwicmVmIiwid2FybiIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiYnVpbGRMaW5rIiwid2hpY2giLCJ1cmwiLCJsaW5rIiwib25DbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjb2RlIiwidGVzdGVyIiwidGVzdCIsIm1hdGNoIiwiRGlzY29yZE1vZHVsZXMiLCJMYXllclN0YWNrIiwicG9wTGF5ZXIiLCJJbnZpdGVBY3Rpb25zIiwiYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbCIsImZvb3RlciIsImxpbmtzIiwic29tZSIsImwiLCJsaW5rQ29tcG9uZW50cyIsIm1hcCIsImZpbHRlciIsImMiLCJjb21wIiwiaSIsImxlbmd0aCIsImFkZG9uU2V0dGluZ3MiLCJtYWtlQnV0dG9uIiwiY2hpbGRyZW4iLCJhY3Rpb24iLCJyZW5kZXIiLCJkZXNjcmlwdGlvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwic2hvd1JlbG9hZEljb24iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImdldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLE9BQU8sR0FBR0Msc0RBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxNQUFNQyxTQUFOLFNBQXdCQyw2Q0FBSyxDQUFDQyxTQUE5QixDQUF3QztBQUVuREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGtCQUFZLEVBQUU7QUFETCxLQUFiO0FBSUEsU0FBS0MsYUFBTCxHQUFxQixFQUFyQjtBQUNBLFNB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cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIExvZ2dlciwgU3RyaW5ncywgV2VicGFja01vZHVsZXMsIERPTSwgRGlzY29yZE1vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBDbG9zZUJ1dHRvbiBmcm9tIFwiLi4vaWNvbnMvY2xvc2VcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgRWRpdEljb24gZnJvbSBcIi4uL2ljb25zL2VkaXRcIjtcclxuaW1wb3J0IERlbGV0ZUljb24gZnJvbSBcIi4uL2ljb25zL2RlbGV0ZVwiO1xyXG5pbXBvcnQgU3dpdGNoIGZyb20gXCIuL2NvbXBvbmVudHMvc3dpdGNoXCI7XHJcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gIFwiLi4vZXJyb3Jib3VuZGFyeVwiO1xyXG5cclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25DYXJkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBzZXR0aW5nc09wZW46IGZhbHNlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc1BhbmVsID0gXCJcIjtcclxuICAgICAgICB0aGlzLnBhbmVsUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcblxyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5yZWxvYWQgPSB0aGlzLnJlbG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2hvd1NldHRpbmdzID0gdGhpcy5zaG93U2V0dGluZ3MuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmNsb3NlU2V0dGluZ3MgPSB0aGlzLmNsb3NlU2V0dGluZ3MuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnJlbG9hZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucHJvcHMuYWRkb24gPSB0aGlzLnByb3BzLnJlbG9hZCh0aGlzLnByb3BzLmFkZG9uLmlkKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5zZXR0aW5nc09wZW4pIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc1BhbmVsIGluc3RhbmNlb2YgTm9kZSkgdGhpcy5wYW5lbFJlZi5jdXJyZW50LmFwcGVuZENoaWxkKHRoaXMuc2V0dGluZ3NQYW5lbCk7XHJcblxyXG4gICAgICAgIHNldEltbWVkaWF0ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzSGlkZGVuID0gKGNvbnRhaW5lciwgZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY1RvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjQm90dG9tID0gY1RvcCArIGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlVG9wID0gZWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlQm90dG9tID0gZVRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICAoZVRvcCA8IGNUb3AgfHwgZUJvdHRvbSA+IGNCb3R0b20pO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgY29uc3QgdGhpc05vZGUgPSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXNOb2RlLmNsb3Nlc3QoXCIuc2Nyb2xsZXJcIik7XHJcbiAgICAgICAgICAgIGlmICghaXNIaWRkZW4oY29udGFpbmVyLCB0aGlzTm9kZSkpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgdGhpc05vZGVPZmZzZXQgPSBET00ub2Zmc2V0KHRoaXNOb2RlKTtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyT2Zmc2V0ID0gRE9NLm9mZnNldChjb250YWluZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpc05vZGVPZmZzZXQudG9wIC0gY29udGFpbmVyT2Zmc2V0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSAzMDtcclxuICAgICAgICAgICAgRE9NLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMCxcclxuICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24ocHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kUG9pbnQgPiBvcmlnaW5hbCkgY29udGFpbmVyLnNjcm9sbFRvcCA9IG9yaWdpbmFsICsgKHByb2dyZXNzICogKGVuZFBvaW50IC0gb3JpZ2luYWwpKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBvcmlnaW5hbCAtIChwcm9ncmVzcyAqIChvcmlnaW5hbCAtIGVuZFBvaW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0cmluZyh2YWx1ZSkge3JldHVybiB0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTt9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSAmJiB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMucHJvcHMuZW5hYmxlZCA9ICF0aGlzLnByb3BzLmVuYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NldHRpbmdzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5oYXNTZXR0aW5ncykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3NldHRpbmdzT3BlbjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgdGhpcy5wYW5lbFJlZi5jdXJyZW50LmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2V0dGluZ3NPcGVuOiBmYWxzZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkVGl0bGUobmFtZSwgdmVyc2lvbiwgYXV0aG9yKSB7XHJcbiAgICAgICAgY29uc3QgdGl0bGUgPSBTdHJpbmdzLkFkZG9ucy50aXRsZS5zcGxpdCgvKHt7W0EtWmEtel0rfX0pLyk7XHJcbiAgICAgICAgY29uc3QgbmFtZUluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7bmFtZX19XCIpO1xyXG4gICAgICAgIGlmIChuYW1lSW5kZXgpIHRpdGxlW25hbWVJbmRleF0gPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkLW5hbWVcIn0sIG5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHZlcnNpb25JbmRleCA9IHRpdGxlLmZpbmRJbmRleChzID0+IHMgPT0gXCJ7e3ZlcnNpb259fVwiKTtcclxuICAgICAgICBpZiAobmFtZUluZGV4KSB0aXRsZVt2ZXJzaW9uSW5kZXhdID0gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZC12ZXJzaW9uXCJ9LCB2ZXJzaW9uKTtcclxuICAgICAgICBjb25zdCBhdXRob3JJbmRleCA9IHRpdGxlLmZpbmRJbmRleChzID0+IHMgPT0gXCJ7e2F1dGhvcn19XCIpO1xyXG4gICAgICAgIGlmIChuYW1lSW5kZXgpIHRpdGxlW2F1dGhvckluZGV4XSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmQtYXV0aG9yXCJ9LCBhdXRob3IpO1xyXG4gICAgICAgIHJldHVybiB0aXRsZS5mbGF0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNldHRpbmdzQ29tcG9uZW50KCkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5wcm9wcy5hZGRvbjtcclxuICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRTdHJpbmcoYWRkb24ubmFtZSk7XHJcbiAgICAgICAgdHJ5IHsgdGhpcy5zZXR0aW5nc1BhbmVsID0gdGhpcy5wcm9wcy5nZXRTZXR0aW5nc1BhbmVsKCk7IH1cclxuICAgICAgICBjYXRjaCAoZXJyKSB7IExvZ2dlci5zdGFja3RyYWNlKFwiQWRkb24gU2V0dGluZ3NcIiwgXCJVbmFibGUgdG8gZ2V0IHNldHRpbmdzIHBhbmVsIGZvciBcIiArIG5hbWUgKyBcIi5cIiwgZXJyKTsgfVxyXG5cclxuICAgICAgICBjb25zdCBwcm9wcyA9IHtpZDogYCR7bmFtZX0tc2V0dGluZ3NgLCBjbGFzc05hbWU6IFwiYWRkb24tc2V0dGluZ3NcIiwgcmVmOiB0aGlzLnBhbmVsUmVmfTtcclxuICAgICAgICBpZiAodHlwZW9mKHNldHRpbmdzUGFuZWwpID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgTG9nZ2VyLndhcm4oXCJBZGRvbiBTZXR0aW5nc1wiLCBcIlVzaW5nIGEgRE9NU3RyaW5nIGlzIG9mZmljaWFsbHkgZGVwcmVjYXRlZC5cIik7XHJcbiAgICAgICAgICAgIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0gdGhpcy5zZXR0aW5nc1BhbmVsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtYWRkb24tY2FyZCBzZXR0aW5ncy1vcGVuIGJkLXN3aXRjaC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1jbG9zZVwiIG9uQ2xpY2s9e3RoaXMuY2xvc2VTZXR0aW5nc30+PENsb3NlQnV0dG9uIC8+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB7Li4ucHJvcHN9PjxFcnJvckJvdW5kYXJ5Pnt0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBSZWFjdC5Db21wb25lbnQgfHwgdHlwZW9mKHRoaXMuc2V0dGluZ3NQYW5lbCkgPT09IFwiZnVuY3Rpb25cIiA/IHRoaXMuc2V0dGluZ3NQYW5lbCA6IG51bGx9PC9FcnJvckJvdW5kYXJ5PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkTGluayh3aGljaCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMucHJvcHMuYWRkb25bd2hpY2hdO1xyXG4gICAgICAgIGlmICghdXJsKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBsaW5rID0gPGEgY2xhc3NOYW1lPVwiYmQtbGluayBiZC1saW5rLXdlYnNpdGVcIiBocmVmPXt1cmx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj57U3RyaW5ncy5BZGRvbnNbd2hpY2hdfTwvYT47XHJcbiAgICAgICAgaWYgKHdoaWNoID09IFwiaW52aXRlXCIpIHtcclxuICAgICAgICAgICAgbGluay5wcm9wcy5vbkNsaWNrID0gZnVuY3Rpb24oZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGxldCBjb2RlID0gdXJsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGVzdGVyID0gL1xcLmdnXFwvKC4qKSQvO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRlc3Rlci50ZXN0KGNvZGUpKSBjb2RlID0gY29kZS5tYXRjaCh0ZXN0ZXIpWzFdO1xyXG4gICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuTGF5ZXJTdGFjay5wb3BMYXllcigpO1xyXG4gICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuSW52aXRlQWN0aW9ucy5hY2NlcHRJbnZpdGVBbmRUcmFuc2l0aW9uVG9JbnZpdGVDaGFubmVsKGNvZGUpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGluaztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZm9vdGVyKCkge1xyXG4gICAgICAgIGNvbnN0IGxpbmtzID0gW1wid2Vic2l0ZVwiLCBcInNvdXJjZVwiLCBcImludml0ZVwiLCBcImRvbmF0ZVwiLCBcInBhdHJlb25cIl07XHJcbiAgICAgICAgaWYgKCFsaW5rcy5zb21lKGwgPT4gdGhpcy5wcm9wcy5hZGRvbltsXSkgJiYgIXRoaXMucHJvcHMuaGFzU2V0dGluZ3MpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGNvbnN0IGxpbmtDb21wb25lbnRzID0gbGlua3MubWFwKHRoaXMuYnVpbGRMaW5rLmJpbmQodGhpcykpLmZpbHRlcihjID0+IGMpO1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImJkLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJkLWxpbmtzXCI+e2xpbmtDb21wb25lbnRzLm1hcCgoY29tcCwgaSkgPT4gaSA8IGxpbmtDb21wb25lbnRzLmxlbmd0aCAtIDEgPyBbY29tcCwgXCIgfCBcIl0gOiBjb21wKS5mbGF0KCl9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmhhc1NldHRpbmdzICYmIDxidXR0b24gb25DbGljaz17dGhpcy5zaG93U2V0dGluZ3N9IGNsYXNzTmFtZT1cImJkLWJ1dHRvbiBiZC1idXR0b24tYWRkb24tc2V0dGluZ3NcIiBkaXNhYmxlZD17IXRoaXMucHJvcHMuZW5hYmxlZH0+e1N0cmluZ3MuQWRkb25zLmFkZG9uU2V0dGluZ3N9PC9idXR0b24+fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG5cclxuICAgIG1ha2VCdXR0b24odGl0bGUsIGNoaWxkcmVuLCBhY3Rpb24pIHtcclxuICAgICAgICByZXR1cm4gIDxUb29sdGlwIGNvbG9yPVwiYmxhY2tcIiBwb3NpdGlvbj1cInRvcFwiIHRleHQ9e3RpdGxlfT5cclxuICAgICAgICAgICAgICAgICAgICB7KHByb3BzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IHsuLi5wcm9wc30gY2xhc3NOYW1lPVwiYmQtYWRkb24tYnV0dG9uXCIgb25DbGljaz17YWN0aW9ufT57Y2hpbGRyZW59PC9kaXY+O1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+O1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zZXR0aW5nc09wZW4pIHJldHVybiB0aGlzLnNldHRpbmdzQ29tcG9uZW50O1xyXG5cclxuICAgICAgICBjb25zdCBhZGRvbiA9IHRoaXMucHJvcHMuYWRkb247XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0U3RyaW5nKGFkZG9uLm5hbWUpO1xyXG4gICAgICAgIGNvbnN0IGF1dGhvciA9IHRoaXMuZ2V0U3RyaW5nKGFkZG9uLmF1dGhvcik7XHJcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLmdldFN0cmluZyhhZGRvbi5kZXNjcmlwdGlvbik7XHJcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0U3RyaW5nKGFkZG9uLnZlcnNpb24pO1xyXG5cclxuICAgICAgICByZXR1cm4gPGRpdiBpZD17YCR7YWRkb24uaWR9LWNhcmRgfSBjbGFzc05hbWU9XCJiZC1hZGRvbi1jYXJkIHNldHRpbmdzLWNsb3NlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtYWRkb24taGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZC10aXRsZVwiPnt0aGlzLmJ1aWxkVGl0bGUobmFtZSwgdmVyc2lvbiwgYXV0aG9yKX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuZWRpdEFkZG9uICYmIHRoaXMubWFrZUJ1dHRvbihTdHJpbmdzLkFkZG9ucy5lZGl0QWRkb24sIDxFZGl0SWNvbiAvPiwgdGhpcy5wcm9wcy5lZGl0QWRkb24pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmRlbGV0ZUFkZG9uICYmIHRoaXMubWFrZUJ1dHRvbihTdHJpbmdzLkFkZG9ucy5kZWxldGVBZGRvbiwgPERlbGV0ZUljb24gLz4sIHRoaXMucHJvcHMuZGVsZXRlQWRkb24pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnNob3dSZWxvYWRJY29uICYmIHRoaXMubWFrZUJ1dHRvbihTdHJpbmdzLkFkZG9ucy5yZWxvYWQsIDxSZWxvYWRJY29uIGNsYXNzTmFtZT1cImJkLXJlbG9hZCBiZC1yZWxvYWQtY2FyZFwiIC8+LCB0aGlzLnJlbG9hZCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaCBjaGVja2VkPXt0aGlzLnByb3BzLmVuYWJsZWR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1kZXNjcmlwdGlvbi13cmFwIHNjcm9sbGVyLXdyYXAgZmFkZVwiPjxkaXYgY2xhc3NOYW1lPVwiYmQtZGVzY3JpcHRpb24gc2Nyb2xsZXJcIj57ZGVzY3JpcHRpb259PC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMuZm9vdGVyfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBvcmlnaW5hbFJlbmRlciA9IEFkZG9uQ2FyZC5wcm90b3R5cGUucmVuZGVyO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQWRkb25DYXJkLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkFkZG9uQ2FyZFwiLCBcIkFkZG9uIHBvbGljeSBmb3IgcGx1Z2lucyAjNSBodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL3dpa2kvQWRkb24tUG9saWNpZXMjcGx1Z2luc1wiKTt9LFxyXG4gICAgZ2V0OiAoKSA9PiBvcmlnaW5hbFJlbmRlclxyXG59KTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/addoncard.jsx\n"); /***/ }), @@ -995,7 +1007,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonList; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _addoncard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addoncard */ \"./src/ui/settings/addoncard.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_search__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/search */ \"./src/ui/settings/components/search.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\n\n\n\n\n\n\n\n\nclass AddonList extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n sort: \"name\",\n ascending: true,\n query: \"\"\n };\n this.sort = this.sort.bind(this);\n this.reverse = this.reverse.bind(this);\n this.search = this.search.bind(this);\n this.update = this.update.bind(this);\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-unloaded`, this.update);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-unloaded`, this.update);\n }\n\n update() {\n this.forceUpdate();\n }\n\n reload() {\n if (this.props.refreshList) this.props.refreshList();\n this.forceUpdate();\n }\n\n reverse(value) {\n this.setState({\n ascending: value\n });\n }\n\n sort(value) {\n this.setState({\n sort: value\n });\n }\n\n search(event) {\n this.setState({\n query: event.target.value.toLocaleLowerCase()\n });\n }\n\n get sortOptions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.name,\n value: \"name\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.author,\n value: \"author\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.version,\n value: \"version\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.added,\n value: \"added\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.modified,\n value: \"modified\"\n }];\n }\n\n get directions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.ascending,\n value: true\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.descending,\n value: false\n }];\n }\n\n render() {\n const {\n title,\n folder,\n addonList,\n addonState,\n onChange,\n reload\n } = this.props;\n const showReloadIcon = !modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"addons\", \"autoReload\");\n const button = folder ? {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.openFolder.format({\n type: title\n }),\n onClick: () => {\n const shell = __webpack_require__(/*! electron */ \"electron\").shell;\n\n const open = shell.openItem || shell.openPath;\n open(folder);\n }\n } : null;\n const sortedAddons = addonList.sort((a, b) => {\n const first = a[this.state.sort];\n const second = b[this.state.sort];\n if (typeof first == \"string\") return first.toLocaleLowerCase().localeCompare(second.toLocaleLowerCase());\n if (first > second) return 1;\n if (second > first) return -1;\n return 0;\n });\n if (!this.state.ascending) sortedAddons.reverse();\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: \"title\",\n text: title,\n button: button,\n otherChildren: showReloadIcon && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"bd-reload\",\n onClick: this.reload.bind(this)\n })\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls bd-addon-controls\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_search__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onChange: this.search,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.search.format({\n type: this.props.title\n })}...`\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-dropdowns\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.sortBy, \":\"), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.sortOptions,\n onChange: this.sort,\n style: \"transparent\"\n })), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.order, \":\"), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.directions,\n onChange: this.reverse,\n style: \"transparent\"\n })))), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n key: \"addonList\",\n className: \"bd-addon-list\"\n }, sortedAddons.map(addon => {\n if (this.state.query) {\n let matches = addon.name.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.author.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.description.toLocaleLowerCase().includes(this.state.query);\n if (!matches) return null;\n }\n\n const hasSettings = addon.type && typeof addon.plugin.getSettingsPanel === \"function\";\n const getSettings = hasSettings && addon.plugin.getSettingsPanel.bind(addon.plugin);\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_addoncard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n editAddon: this.editAddon.bind(this, addon.id),\n deleteAddon: this.deleteAddon.bind(this, addon.id),\n showReloadIcon: showReloadIcon,\n key: addon.id,\n enabled: addonState[addon.id],\n addon: addon,\n onChange: onChange,\n reload: reload,\n hasSettings: hasSettings,\n getSettingsPanel: getSettings\n }));\n }))];\n }\n\n editAddon(id) {\n if (this.props.editAddon) this.props.editAddon(id);\n }\n\n async deleteAddon(id) {\n const addon = this.props.addonList.find(a => a.id == id);\n const shouldDelete = await this.confirmDelete(addon);\n if (!shouldDelete) return;\n if (this.props.deleteAddon) this.props.deleteAddon(addon);\n }\n\n confirmDelete(addon) {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.confirmDelete.format({\n name: addon.name\n }), {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}\nconst originalRender = AddonList.prototype.render;\nObject.defineProperty(AddonList.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonList\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2FkZG9ubGlzdC5qc3g/NjRkMiJdLCJuYW1lcyI6WyJBZGRvbkxpc3QiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNvcnQiLCJhc2NlbmRpbmciLCJxdWVyeSIsImJpbmQiLCJyZXZlcnNlIiwic2VhcmNoIiwidXBkYXRlIiwiY29tcG9uZW50RGlkTW91bnQiLCJFdmVudHMiLCJvbiIsInByZWZpeCIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwib2ZmIiwiZm9yY2VVcGRhdGUiLCJyZWxvYWQiLCJyZWZyZXNoTGlzdCIsInZhbHVlIiwic2V0U3RhdGUiLCJldmVudCIsInRhcmdldCIsInRvTG9jYWxlTG93ZXJDYXNlIiwic29ydE9wdGlvbnMiLCJsYWJlbCIsIlN0cmluZ3MiLCJBZGRvbnMiLCJuYW1lIiwiYXV0aG9yIiwidmVyc2lvbiIsImFkZGVkIiwibW9kaWZpZWQiLCJkaXJlY3Rpb25zIiwiU29ydGluZyIsImRlc2NlbmRpbmciLCJyZW5kZXIiLCJ0aXRsZSIsImZvbGRlciIsImFkZG9uTGlzdCIsImFkZG9uU3RhdGUiLCJvbkNoYW5nZSIsInNob3dSZWxvYWRJY29uIiwiU2V0dGluZ3MiLCJnZXQiLCJidXR0b24iLCJvcGVuRm9sZGVyIiwiZm9ybWF0IiwidHlwZSIsIm9uQ2xpY2siLCJzaGVsbCIsInJlcXVpcmUiLCJvcGVuIiwib3Blbkl0ZW0iLCJvcGVuUGF0aCIsInNvcnRlZEFkZG9ucyIsImEiLCJiIiwiZmlyc3QiLCJzZWNvbmQiLCJsb2NhbGVDb21wYXJlIiwic29ydEJ5Iiwib3JkZXIiLCJtYXAiLCJhZGRvbiIsIm1hdGNoZXMiLCJpbmNsdWRlcyIsImRlc2NyaXB0aW9uIiwiaGFzU2V0dGluZ3MiLCJwbHVnaW4iLCJnZXRTZXR0aW5nc1BhbmVsIiwiZ2V0U2V0dGluZ3MiLCJlZGl0QWRkb24iLCJpZCIsImRlbGV0ZUFkZG9uIiwiZmluZCIsInNob3VsZERlbGV0ZSIsImNvbmZpcm1EZWxldGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsIk1vZGFscyIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsImNvbmZpcm1BY3Rpb24iLCJkYW5nZXIiLCJjb25maXJtVGV4dCIsIm9uQ29uZmlybSIsIm9uQ2FuY2VsIiwib3JpZ2luYWxSZW5kZXIiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJzZXQiLCJMb2dnZXIiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFZSxNQUFNQSxTQUFOLFNBQXdCQyw2Q0FBSyxDQUFDQyxTQUE5QixDQUF3QztBQUVuREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLFVBQUksRUFBRSxNQUFQO0FBQWVDLGVBQVMsRUFBRSxJQUExQjtBQUFnQ0MsV0FBSyxFQUFFO0FBQXZDLEtBQWI7QUFDQSxTQUFLRixJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVRyxJQUFWLENBQWUsSUFBZixDQUFaO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUQsSUFBYixDQUFrQixJQUFsQixDQUFmO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBWUYsSUFBWixDQUFpQixJQUFqQixDQUFkO0FBQ0EsU0FBS0csTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBWUgsSUFBWixDQUFpQixJQUFqQixDQUFkO0FBQ0g7O0FBRURJLG1CQUFpQixHQUFHO0FBQ2hCQyxrREFBTSxDQUFDQyxFQUFQLENBQVcsR0FBRSxLQUFLWCxLQUFMLENBQVdZLE1BQU8sU0FBL0IsRUFBeUMsS0FBS0osTUFBOUM7QUFDQUUsa0RBQU0sQ0FB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U0FBaEMsRUFBMkMsUUFBM0MsRUFBcUQ7QUFDakRHLFlBQVUsRUFBRSxLQURxQztBQUVqREMsY0FBWSxFQUFFLEtBRm1DO0FBR2pEQyxLQUFHLEVBQUUsWUFBVztBQUFDQyxrREFBTSxDQUFDQyxJQUFQLENBQVksV0FBWixFQUF5QixxR0FBekI7QUFBaUksR0FIakc7QUFJakRuRCxLQUFHLEVBQUUsTUFBTTJDO0FBSnNDLENBQXJEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2FkZG9ubGlzdC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBTZXR0aW5ncywgU3RyaW5ncywgRXZlbnRzLCBMb2dnZXJ9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4vdGl0bGVcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgQWRkb25DYXJkIGZyb20gXCIuL2FkZG9uY2FyZFwiO1xyXG5pbXBvcnQgRHJvcGRvd24gZnJvbSBcIi4vY29tcG9uZW50cy9kcm9wZG93blwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL2NvbXBvbmVudHMvc2VhcmNoXCI7XHJcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gIFwiLi4vZXJyb3Jib3VuZGFyeVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25MaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge3NvcnQ6IFwibmFtZVwiLCBhc2NlbmRpbmc6IHRydWUsIHF1ZXJ5OiBcIlwifTtcclxuICAgICAgICB0aGlzLnNvcnQgPSB0aGlzLnNvcnQuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJldmVyc2UgPSB0aGlzLnJldmVyc2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNlYXJjaCA9IHRoaXMuc2VhcmNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGUgPSB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LXVubG9hZGVkYCwgdGhpcy51cGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub2ZmKGAke3RoaXMucHJvcHMucHJlZml4fS11bmxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5yZWZyZXNoTGlzdCkgdGhpcy5wcm9wcy5yZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZlcnNlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7YXNjZW5kaW5nOiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNvcnQodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzb3J0OiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaChldmVudCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3F1ZXJ5OiBldmVudC50YXJnZXQudmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzb3J0T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLm5hbWUsIHZhbHVlOiBcIm5hbWVcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMuYXV0aG9yLCB2YWx1ZTogXCJhdXRob3JcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMudmVyc2lvbiwgdmFsdWU6IFwidmVyc2lvblwifSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLkFkZG9ucy5hZGRlZCwgdmFsdWU6IFwiYWRkZWRcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMubW9kaWZpZWQsIHZhbHVlOiBcIm1vZGlmaWVkXCJ9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGlyZWN0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuU29ydGluZy5hc2NlbmRpbmcsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLlNvcnRpbmcuZGVzY2VuZGluZywgdmFsdWU6IGZhbHNlfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHt0aXRsZSwgZm9sZGVyLCBhZGRvbkxpc3QsIGFkZG9uU3RhdGUsIG9uQ2hhbmdlLCByZWxvYWR9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBzaG93UmVsb2FkSWNvbiA9ICFTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImF1dG9SZWxvYWRcIik7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gZm9sZGVyID8ge3RpdGxlOiBTdHJpbmdzLkFkZG9ucy5vcGVuRm9sZGVyLmZvcm1hdCh7dHlwZTogdGl0bGV9KSwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzaGVsbCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5zaGVsbDtcclxuICAgICAgICAgICAgY29uc3Qgb3BlbiA9IHNoZWxsLm9wZW5JdGVtIHx8IHNoZWxsLm9wZW5QYXRoO1xyXG4gICAgICAgICAgICBvcGVuKGZvbGRlcik7XHJcbiAgICAgICAgfX0gOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEFkZG9ucyA9IGFkZG9uTGlzdC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gYVt0aGlzLnN0YXRlLnNvcnRdO1xyXG4gICAgICAgICAgICBjb25zdCBzZWNvbmQgPSBiW3RoaXMuc3RhdGUuc29ydF07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YoZmlyc3QpID09IFwic3RyaW5nXCIpIHJldHVybiBmaXJzdC50b0xvY2FsZUxvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoc2Vjb25kLnRvTG9jYWxlTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICBpZiAoZmlyc3QgPiBzZWNvbmQpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoc2Vjb25kID4gZmlyc3QpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmFzY2VuZGluZykgc29ydGVkQWRkb25zLnJldmVyc2UoKTtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICA8U2V0dGluZ3NUaXRsZSBrZXk9XCJ0aXRsZVwiIHRleHQ9e3RpdGxlfSBidXR0b249e2J1dHRvbn0gb3RoZXJDaGlsZHJlbj17c2hvd1JlbG9hZEljb24gJiYgPFJlbG9hZEljb24gY2xhc3NOYW1lPVwiYmQtcmVsb2FkXCIgb25DbGljaz17dGhpcy5yZWxvYWQuYmluZCh0aGlzKX0gLz59IC8+LFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNvbnRyb2xzIGJkLWFkZG9uLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8U2VhcmNoIG9uQ2hhbmdlPXt0aGlzLnNlYXJjaH0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuQWRkb25zLnNlYXJjaC5mb3JtYXQoe3R5cGU6IHRoaXMucHJvcHMudGl0bGV9KX0uLi5gfSAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1kcm9wZG93bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJiZC1sYWJlbFwiPntTdHJpbmdzLlNvcnRpbmcuc29ydEJ5fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5zb3J0T3B0aW9uc30gb25DaGFuZ2U9e3RoaXMuc29ydH0gc3R5bGU9XCJ0cmFuc3BhcmVudFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57U3RyaW5ncy5Tb3J0aW5nLm9yZGVyfTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5kaXJlY3Rpb25zfSBvbkNoYW5nZT17dGhpcy5yZXZlcnNlfSBzdHlsZT1cInRyYW5zcGFyZW50XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4sXHJcbiAgICAgICAgICAgIDxkaXYga2V5PVwiYWRkb25MaXN0XCIgY2xhc3NOYW1lPXtcImJkLWFkZG9uLWxpc3RcIn0+XHJcbiAgICAgICAgICAgIHtzb3J0ZWRBZGRvbnMubWFwKGFkZG9uID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLnF1ZXJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBhZGRvbi5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uYXV0aG9yLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uZGVzY3JpcHRpb24udG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnN0YXRlLnF1ZXJ5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXMpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzU2V0dGluZ3MgPSBhZGRvbi50eXBlICYmIHR5cGVvZihhZGRvbi5wbHVnaW4uZ2V0U2V0dGluZ3NQYW5lbCkgPT09IFwiZnVuY3Rpb25cIjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdldFNldHRpbmdzID0gaGFzU2V0dGluZ3MgJiYgYWRkb24ucGx1Z2luLmdldFNldHRpbmdzUGFuZWwuYmluZChhZGRvbi5wbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxFcnJvckJvdW5kYXJ5PjxBZGRvbkNhcmQgZWRpdEFkZG9uPXt0aGlzLmVkaXRBZGRvbi5iaW5kKHRoaXMsIGFkZG9uLmlkKX0gZGVsZXRlQWRkb249e3RoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzLCBhZGRvbi5pZCl9IHNob3dSZWxvYWRJY29uPXtzaG93UmVsb2FkSWNvbn0ga2V5PXthZGRvbi5pZH0gZW5hYmxlZD17YWRkb25TdGF0ZVthZGRvbi5pZF19IGFkZG9uPXthZGRvbn0gb25DaGFuZ2U9e29uQ2hhbmdlfSByZWxvYWQ9e3JlbG9hZH0gaGFzU2V0dGluZ3M9e2hhc1NldHRpbmdzfSBnZXRTZXR0aW5nc1BhbmVsPXtnZXRTZXR0aW5nc30gLz48L0Vycm9yQm91bmRhcnk+O1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0QWRkb24oaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0QWRkb24pIHRoaXMucHJvcHMuZWRpdEFkZG9uKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVBZGRvbihpZCkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5wcm9wcy5hZGRvbkxpc3QuZmluZChhID0+IGEuaWQgPT0gaWQpO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZERlbGV0ZSA9IGF3YWl0IHRoaXMuY29uZmlybURlbGV0ZShhZGRvbik7XHJcbiAgICAgICAgaWYgKCFzaG91bGREZWxldGUpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWxldGVBZGRvbikgdGhpcy5wcm9wcy5kZWxldGVBZGRvbihhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURlbGV0ZShhZGRvbikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5jb25maXJtQWN0aW9uLCBTdHJpbmdzLkFkZG9ucy5jb25maXJtRGVsZXRlLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZX0pLCB7XHJcbiAgICAgICAgICAgICAgICBkYW5nZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5BZGRvbnMuZGVsZXRlQWRkb24sXHJcbiAgICAgICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtyZXNvbHZlKHRydWUpO30sXHJcbiAgICAgICAgICAgICAgICBvbkNhbmNlbDogKCkgPT4ge3Jlc29sdmUoZmFsc2UpO31cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gQWRkb25MaXN0LnByb3RvdHlwZS5yZW5kZXI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShBZGRvbkxpc3QucHJvdG90eXBlLCBcInJlbmRlclwiLCB7XHJcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICBzZXQ6IGZ1bmN0aW9uKCkge0xvZ2dlci53YXJuKFwiQWRkb25MaXN0XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/addonlist.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonList; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _addoncard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addoncard */ \"./src/ui/settings/addoncard.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_search__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/search */ \"./src/ui/settings/components/search.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\n\n\n\n\n\n\n\n\nclass AddonList extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n sort: \"name\",\n ascending: true,\n query: \"\"\n };\n this.sort = this.sort.bind(this);\n this.reverse = this.reverse.bind(this);\n this.search = this.search.bind(this);\n this.update = this.update.bind(this);\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-unloaded`, this.update);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-unloaded`, this.update);\n }\n\n update() {\n this.forceUpdate();\n }\n\n reload() {\n if (this.props.refreshList) this.props.refreshList();\n this.forceUpdate();\n }\n\n reverse(value) {\n this.setState({\n ascending: value\n });\n }\n\n sort(value) {\n this.setState({\n sort: value\n });\n }\n\n search(event) {\n this.setState({\n query: event.target.value.toLocaleLowerCase()\n });\n }\n\n get sortOptions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.name,\n value: \"name\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.author,\n value: \"author\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.version,\n value: \"version\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.added,\n value: \"added\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.modified,\n value: \"modified\"\n }];\n }\n\n get directions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.ascending,\n value: true\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.descending,\n value: false\n }];\n }\n\n render() {\n const {\n title,\n folder,\n addonList,\n addonState,\n onChange,\n reload\n } = this.props;\n const showReloadIcon = !modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"addons\", \"autoReload\");\n const button = folder ? {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.openFolder.format({\n type: title\n }),\n onClick: () => {\n const shell = __webpack_require__(/*! electron */ \"electron\").shell;\n\n const open = shell.openItem || shell.openPath;\n open(folder);\n }\n } : null;\n const sortedAddons = addonList.sort((a, b) => {\n const first = a[this.state.sort];\n const second = b[this.state.sort];\n if (typeof first == \"string\") return first.toLocaleLowerCase().localeCompare(second.toLocaleLowerCase());\n if (first > second) return 1;\n if (second > first) return -1;\n return 0;\n });\n if (!this.state.ascending) sortedAddons.reverse();\n return [/*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: \"title\",\n text: title,\n button: button,\n otherChildren: showReloadIcon && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"bd-reload\",\n onClick: this.reload.bind(this)\n })\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls bd-addon-controls\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_search__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onChange: this.search,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.search.format({\n type: this.props.title\n })}...`\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-dropdowns\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.sortBy, \":\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.sortOptions,\n onChange: this.sort,\n style: \"transparent\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.order, \":\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.directions,\n onChange: this.reverse,\n style: \"transparent\"\n })))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n key: \"addonList\",\n className: \"bd-addon-list\"\n }, sortedAddons.map(addon => {\n if (this.state.query) {\n let matches = addon.name.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.author.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.description.toLocaleLowerCase().includes(this.state.query);\n if (!matches) return null;\n }\n\n const hasSettings = addon.type && typeof addon.plugin.getSettingsPanel === \"function\";\n const getSettings = hasSettings && addon.plugin.getSettingsPanel.bind(addon.plugin);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_addoncard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n editAddon: this.editAddon.bind(this, addon.id),\n deleteAddon: this.deleteAddon.bind(this, addon.id),\n showReloadIcon: showReloadIcon,\n key: addon.id,\n enabled: addonState[addon.id],\n addon: addon,\n onChange: onChange,\n reload: reload,\n hasSettings: hasSettings,\n getSettingsPanel: getSettings\n }));\n }))];\n }\n\n editAddon(id) {\n if (this.props.editAddon) this.props.editAddon(id);\n }\n\n async deleteAddon(id) {\n const addon = this.props.addonList.find(a => a.id == id);\n const shouldDelete = await this.confirmDelete(addon);\n if (!shouldDelete) return;\n if (this.props.deleteAddon) this.props.deleteAddon(addon);\n }\n\n confirmDelete(addon) {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.confirmDelete.format({\n name: addon.name\n }), {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}\nconst originalRender = AddonList.prototype.render;\nObject.defineProperty(AddonList.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonList\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2FkZG9ubGlzdC5qc3g/NjRkMiJdLCJuYW1lcyI6WyJBZGRvbkxpc3QiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNvcnQiLCJhc2NlbmRpbmciLCJxdWVyeSIsImJpbmQiLCJyZXZlcnNlIiwic2VhcmNoIiwidXBkYXRlIiwiY29tcG9uZW50RGlkTW91bnQiLCJFdmVudHMiLCJvbiIsInByZWZpeCIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwib2ZmIiwiZm9yY2VVcGRhdGUiLCJyZWxvYWQiLCJyZWZyZXNoTGlzdCIsInZhbHVlIiwic2V0U3RhdGUiLCJldmVudCIsInRhcmdldCIsInRvTG9jYWxlTG93ZXJDYXNlIiwic29ydE9wdGlvbnMiLCJsYWJlbCIsIlN0cmluZ3MiLCJBZGRvbnMiLCJuYW1lIiwiYXV0aG9yIiwidmVyc2lvbiIsImFkZGVkIiwibW9kaWZpZWQiLCJkaXJlY3Rpb25zIiwiU29ydGluZyIsImRlc2NlbmRpbmciLCJyZW5kZXIiLCJ0aXRsZSIsImZvbGRlciIsImFkZG9uTGlzdCIsImFkZG9uU3RhdGUiLCJvbkNoYW5nZSIsInNob3dSZWxvYWRJY29uIiwiU2V0dGluZ3MiLCJnZXQiLCJidXR0b24iLCJvcGVuRm9sZGVyIiwiZm9ybWF0IiwidHlwZSIsIm9uQ2xpY2siLCJzaGVsbCIsInJlcXVpcmUiLCJvcGVuIiwib3Blbkl0ZW0iLCJvcGVuUGF0aCIsInNvcnRlZEFkZG9ucyIsImEiLCJiIiwiZmlyc3QiLCJzZWNvbmQiLCJsb2NhbGVDb21wYXJlIiwic29ydEJ5Iiwib3JkZXIiLCJtYXAiLCJhZGRvbiIsIm1hdGNoZXMiLCJpbmNsdWRlcyIsImRlc2NyaXB0aW9uIiwiaGFzU2V0dGluZ3MiLCJwbHVnaW4iLCJnZXRTZXR0aW5nc1BhbmVsIiwiZ2V0U2V0dGluZ3MiLCJlZGl0QWRkb24iLCJpZCIsImRlbGV0ZUFkZG9uIiwiZmluZCIsInNob3VsZERlbGV0ZSIsImNvbmZpcm1EZWxldGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsIk1vZGFscyIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsImNvbmZpcm1BY3Rpb24iLCJkYW5nZXIiLCJjb25maXJtVGV4dCIsIm9uQ29uZmlybSIsIm9uQ2FuY2VsIiwib3JpZ2luYWxSZW5kZXIiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJzZXQiLCJMb2dnZXIiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFZSxNQUFNQSxTQUFOLFNBQXdCQyw2Q0FBSyxDQUFDQyxTQUE5QixDQUF3QztBQUVuREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLFVBQUksRUFBRSxNQUFQO0FBQWVDLGVBQVMsRUFBRSxJQUExQjtBQUFnQ0MsV0FBSyxFQUFFO0FBQXZDLEtBQWI7QUFDQSxTQUFLRixJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVRyxJQUFWLENBQWUsSUFBZixDQUFaO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUQsSUFBYixDQUFrQixJQUFsQixDQUFmO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBWUYsSUFBWixDQUFpQixJQUFqQixDQUFkO0FBQ0EsU0FBS0csTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBWUgsSUFBWixDQUFpQixJQUFqQixDQUFkO0FBQ0g7O0FBRURJLG1CQUFpQixHQUFHO0FBQ2hCQyxrREFBTSxDQUFDQyxFQUFQLENBQVcsR0FBRSxLQUFLWCxLQUFMLENBQVdZLE1BQU8sU0FBL0IsRUFBeUMsS0FBS0osTUFBOUM7QUFDQUUsa0RBQU0sQ0FB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Q0FBQzJGLFNBQWhDLEVBQTJDLFFBQTNDLEVBQXFEO0FBQ2pERyxZQUFVLEVBQUUsS0FEcUM7QUFFakRDLGNBQVksRUFBRSxLQUZtQztBQUdqREMsS0FBRyxFQUFFLFlBQVc7QUFBQ0Msa0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLFdBQVosRUFBeUIscUdBQXpCO0FBQWlJLEdBSGpHO0FBSWpEbkQsS0FBRyxFQUFFLE1BQU0yQztBQUpzQyxDQUFyRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9hZGRvbmxpc3QuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU2V0dGluZ3MsIFN0cmluZ3MsIEV2ZW50cywgTG9nZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vbW9kYWxzXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuL3RpdGxlXCI7XHJcbmltcG9ydCBSZWxvYWRJY29uIGZyb20gXCIuLi9pY29ucy9yZWxvYWRcIjtcclxuaW1wb3J0IEFkZG9uQ2FyZCBmcm9tIFwiLi9hZGRvbmNhcmRcIjtcclxuaW1wb3J0IERyb3Bkb3duIGZyb20gXCIuL2NvbXBvbmVudHMvZHJvcGRvd25cIjtcclxuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9jb21wb25lbnRzL3NlYXJjaFwiO1xyXG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICBcIi4uL2Vycm9yYm91bmRhcnlcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkZG9uTGlzdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtzb3J0OiBcIm5hbWVcIiwgYXNjZW5kaW5nOiB0cnVlLCBxdWVyeTogXCJcIn07XHJcbiAgICAgICAgdGhpcy5zb3J0ID0gdGhpcy5zb3J0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5yZXZlcnNlID0gdGhpcy5yZXZlcnNlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2ggPSB0aGlzLnNlYXJjaC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9uKGAke3RoaXMucHJvcHMucHJlZml4fS1sb2FkZWRgLCB0aGlzLnVwZGF0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKGAke3RoaXMucHJvcHMucHJlZml4fS11bmxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub2ZmKGAke3RoaXMucHJvcHMucHJlZml4fS1sb2FkZWRgLCB0aGlzLnVwZGF0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9mZihgJHt0aGlzLnByb3BzLnByZWZpeH0tdW5sb2FkZWRgLCB0aGlzLnVwZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKCkge1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMucmVmcmVzaExpc3QpIHRoaXMucHJvcHMucmVmcmVzaExpc3QoKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV2ZXJzZSh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2FzY2VuZGluZzogdmFsdWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBzb3J0KHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c29ydDogdmFsdWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZWFyY2goZXZlbnQpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtxdWVyeTogZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCl9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc29ydE9wdGlvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLkFkZG9ucy5uYW1lLCB2YWx1ZTogXCJuYW1lXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLmF1dGhvciwgdmFsdWU6IFwiYXV0aG9yXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLnZlcnNpb24sIHZhbHVlOiBcInZlcnNpb25cIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMuYWRkZWQsIHZhbHVlOiBcImFkZGVkXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLm1vZGlmaWVkLCB2YWx1ZTogXCJtb2RpZmllZFwifVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRpcmVjdGlvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLlNvcnRpbmcuYXNjZW5kaW5nLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5Tb3J0aW5nLmRlc2NlbmRpbmcsIHZhbHVlOiBmYWxzZX1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7dGl0bGUsIGZvbGRlciwgYWRkb25MaXN0LCBhZGRvblN0YXRlLCBvbkNoYW5nZSwgcmVsb2FkfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgY29uc3Qgc2hvd1JlbG9hZEljb24gPSAhU2V0dGluZ3MuZ2V0KFwic2V0dGluZ3NcIiwgXCJhZGRvbnNcIiwgXCJhdXRvUmVsb2FkXCIpO1xyXG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGZvbGRlciA/IHt0aXRsZTogU3RyaW5ncy5BZGRvbnMub3BlbkZvbGRlci5mb3JtYXQoe3R5cGU6IHRpdGxlfSksIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2hlbGwgPSByZXF1aXJlKFwiZWxlY3Ryb25cIikuc2hlbGw7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wZW4gPSBzaGVsbC5vcGVuSXRlbSB8fCBzaGVsbC5vcGVuUGF0aDtcclxuICAgICAgICAgICAgb3Blbihmb2xkZXIpO1xyXG4gICAgICAgIH19IDogbnVsbDtcclxuICAgICAgICBjb25zdCBzb3J0ZWRBZGRvbnMgPSBhZGRvbkxpc3Quc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdCA9IGFbdGhpcy5zdGF0ZS5zb3J0XTtcclxuICAgICAgICAgICAgY29uc3Qgc2Vjb25kID0gYlt0aGlzLnN0YXRlLnNvcnRdO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mKGZpcnN0KSA9PSBcInN0cmluZ1wiKSByZXR1cm4gZmlyc3QudG9Mb2NhbGVMb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKHNlY29uZC50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0ID4gc2Vjb25kKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKHNlY29uZCA+IGZpcnN0KSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5hc2NlbmRpbmcpIHNvcnRlZEFkZG9ucy5yZXZlcnNlKCk7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgPFNldHRpbmdzVGl0bGUga2V5PVwidGl0bGVcIiB0ZXh0PXt0aXRsZX0gYnV0dG9uPXtidXR0b259IG90aGVyQ2hpbGRyZW49e3Nob3dSZWxvYWRJY29uICYmIDxSZWxvYWRJY29uIGNsYXNzTmFtZT1cImJkLXJlbG9hZFwiIG9uQ2xpY2s9e3RoaXMucmVsb2FkLmJpbmQodGhpcyl9IC8+fSAvPixcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1jb250cm9scyBiZC1hZGRvbi1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgPFNlYXJjaCBvbkNoYW5nZT17dGhpcy5zZWFyY2h9IHBsYWNlaG9sZGVyPXtgJHtTdHJpbmdzLkFkZG9ucy5zZWFyY2guZm9ybWF0KHt0eXBlOiB0aGlzLnByb3BzLnRpdGxlfSl9Li4uYH0gLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtYWRkb24tZHJvcGRvd25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57U3RyaW5ncy5Tb3J0aW5nLnNvcnRCeX06PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duIG9wdGlvbnM9e3RoaXMuc29ydE9wdGlvbnN9IG9uQ2hhbmdlPXt0aGlzLnNvcnR9IHN0eWxlPVwidHJhbnNwYXJlbnRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJkLWxhYmVsXCI+e1N0cmluZ3MuU29ydGluZy5vcmRlcn06PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duIG9wdGlvbnM9e3RoaXMuZGlyZWN0aW9uc30gb25DaGFuZ2U9e3RoaXMucmV2ZXJzZX0gc3R5bGU9XCJ0cmFuc3BhcmVudFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+LFxyXG4gICAgICAgICAgICA8ZGl2IGtleT1cImFkZG9uTGlzdFwiIGNsYXNzTmFtZT17XCJiZC1hZGRvbi1saXN0XCJ9PlxyXG4gICAgICAgICAgICB7c29ydGVkQWRkb25zLm1hcChhZGRvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5xdWVyeSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaGVzID0gYWRkb24ubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc3RhdGUucXVlcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBtYXRjaGVzIHx8IGFkZG9uLmF1dGhvci50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc3RhdGUucXVlcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBtYXRjaGVzIHx8IGFkZG9uLmRlc2NyaXB0aW9uLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1NldHRpbmdzID0gYWRkb24udHlwZSAmJiB0eXBlb2YoYWRkb24ucGx1Z2luLmdldFNldHRpbmdzUGFuZWwpID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBnZXRTZXR0aW5ncyA9IGhhc1NldHRpbmdzICYmIGFkZG9uLnBsdWdpbi5nZXRTZXR0aW5nc1BhbmVsLmJpbmQoYWRkb24ucGx1Z2luKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiA8RXJyb3JCb3VuZGFyeT48QWRkb25DYXJkIGVkaXRBZGRvbj17dGhpcy5lZGl0QWRkb24uYmluZCh0aGlzLCBhZGRvbi5pZCl9IGRlbGV0ZUFkZG9uPXt0aGlzLmRlbGV0ZUFkZG9uLmJpbmQodGhpcywgYWRkb24uaWQpfSBzaG93UmVsb2FkSWNvbj17c2hvd1JlbG9hZEljb259IGtleT17YWRkb24uaWR9IGVuYWJsZWQ9e2FkZG9uU3RhdGVbYWRkb24uaWRdfSBhZGRvbj17YWRkb259IG9uQ2hhbmdlPXtvbkNoYW5nZX0gcmVsb2FkPXtyZWxvYWR9IGhhc1NldHRpbmdzPXtoYXNTZXR0aW5nc30gZ2V0U2V0dGluZ3NQYW5lbD17Z2V0U2V0dGluZ3N9IC8+PC9FcnJvckJvdW5kYXJ5PjtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgZWRpdEFkZG9uKGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZWRpdEFkZG9uKSB0aGlzLnByb3BzLmVkaXRBZGRvbihpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlQWRkb24oaWQpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHRoaXMucHJvcHMuYWRkb25MaXN0LmZpbmQoYSA9PiBhLmlkID09IGlkKTtcclxuICAgICAgICBjb25zdCBzaG91bGREZWxldGUgPSBhd2FpdCB0aGlzLmNvbmZpcm1EZWxldGUoYWRkb24pO1xyXG4gICAgICAgIGlmICghc2hvdWxkRGVsZXRlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGVsZXRlQWRkb24pIHRoaXMucHJvcHMuZGVsZXRlQWRkb24oYWRkb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1EZWxldGUoYWRkb24pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIE1vZGFscy5zaG93Q29uZmlybWF0aW9uTW9kYWwoU3RyaW5ncy5Nb2RhbHMuY29uZmlybUFjdGlvbiwgU3RyaW5ncy5BZGRvbnMuY29uZmlybURlbGV0ZS5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWV9KSwge1xyXG4gICAgICAgICAgICAgICAgZGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IFN0cmluZ3MuQWRkb25zLmRlbGV0ZUFkZG9uLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiAoKSA9PiB7cmVzb2x2ZSh0cnVlKTt9LFxyXG4gICAgICAgICAgICAgICAgb25DYW5jZWw6ICgpID0+IHtyZXNvbHZlKGZhbHNlKTt9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBvcmlnaW5hbFJlbmRlciA9IEFkZG9uTGlzdC5wcm90b3R5cGUucmVuZGVyO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQWRkb25MaXN0LnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkFkZG9uTGlzdFwiLCBcIkFkZG9uIHBvbGljeSBmb3IgcGx1Z2lucyAjNSBodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL3dpa2kvQWRkb24tUG9saWNpZXMjcGx1Z2luc1wiKTt9LFxyXG4gICAgZ2V0OiAoKSA9PiBvcmlnaW5hbFJlbmRlclxyXG59KTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/addonlist.jsx\n"); /***/ }), @@ -1007,7 +1019,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Select; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_downarrow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/downarrow */ \"./src/ui/icons/downarrow.jsx\");\n\n\nclass Select extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n value: this.props.value || this.props.options[0].value\n };\n this.dropdown = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.showMenu = this.showMenu.bind(this);\n this.hideMenu = this.hideMenu.bind(this);\n }\n\n showMenu(event) {\n event.preventDefault();\n this.setState({\n open: true\n }, () => {\n document.addEventListener(\"click\", this.hideMenu);\n });\n }\n\n hideMenu() {\n this.setState({\n open: false\n }, () => {\n document.removeEventListener(\"click\", this.hideMenu);\n });\n }\n\n onChange(value) {\n this.setState({\n value\n });\n if (this.props.onChange) this.props.onChange(value);\n }\n\n get selected() {\n return this.props.options.find(o => o.value == this.state.value);\n }\n\n get options() {\n const selected = this.selected;\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-options\"\n }, this.props.options.map(opt => modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select-option${selected.value == opt.value ? \" selected\" : \"\"}`,\n onClick: this.onChange.bind(this, opt.value)\n }, opt.label)));\n }\n\n render() {\n const style = this.props.style == \"transparent\" ? \" bd-select-transparent\" : \"\";\n const isOpen = this.state.open ? \" menu-open\" : \"\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select${style}${isOpen}`,\n onClick: this.showMenu,\n ref: this.dropdown\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-value\"\n }, this.selected.label), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_downarrow__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"bd-select-arrow\"\n }), this.state.open && this.options);\n }\n\n} // return
\n// \n//
\n//
\n//
{this.selected.label}
\n// \n//
\n//
\n// {this.state.open && this.options}\n//
;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvZHJvcGRvd24uanN4PzRhOWMiXSwibmFtZXMiOlsiU2VsZWN0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJvcGVuIiwidmFsdWUiLCJvcHRpb25zIiwiZHJvcGRvd24iLCJjcmVhdGVSZWYiLCJvbkNoYW5nZSIsImJpbmQiLCJzaG93TWVudSIsImhpZGVNZW51IiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInNldFN0YXRlIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNlbGVjdGVkIiwiZmluZCIsIm8iLCJtYXAiLCJvcHQiLCJsYWJlbCIsInJlbmRlciIsInN0eWxlIiwiaXNPcGVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLFVBQUksRUFBRSxLQUFQO0FBQWNDLFdBQUssRUFBRSxLQUFLSCxLQUFMLENBQVdHLEtBQVgsSUFBb0IsS0FBS0gsS0FBTCxDQUFXSSxPQUFYLENBQW1CLENBQW5CLEVBQXNCRDtBQUEvRCxLQUFiO0FBQ0EsU0FBS0UsUUFBTCxHQUFnQlIsNkNBQUssQ0FBQ1MsU0FBTixFQUFoQjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNELElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLRSxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0YsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNIOztBQUVEQyxVQUFRLENBQUNFLEtBQUQsRUFBUTtBQUNaQSxTQUFLLENBQUNDLGNBQU47QUFDQSxTQUFLQyxRQUFMLENBQWM7QUFBQ1gsVUFBSSxFQUFFO0FBQVAsS0FBZCxFQUE0QixNQUFNO0FBQzlCWSxjQUFRLENBQUNDLGdCQUFULENBQTBCLE9BQTFCLEVBQW1DLEtBQUtMLFFBQXhDO0FBQ0gsS0FGRDtBQUdIOztBQUVEQSxVQUFRLEdBQUc7QUFDUCxTQUFLRyxRQUFMLENBQWM7QUFBQ1gsVUFBSSxFQUFFO0FBQVAsS0FBZCxFQUE2QixNQUFNO0FBQy9CWSxjQUFRLENBQUNFLG1CQUFULENBQTZCLE9BQTdCLEVBQXNDLEtBQUtOLFFBQTNDO0FBQ0gsS0FGRDtBQUdIOztBQUVESCxVQUFRLENBQUNKLEtBQUQsRUFBUTtBQUNaLFNBQUtVLFFBQUwsQ0FBYztBQUFDVjtBQUFELEtBQWQ7QUFDQSxRQUFJLEtBQUtILEtBQUwsQ0FBV08sUUFBZixFQUF5QixLQUFLUCxLQUFMLENBQVdPLFFBQVgsQ0FBb0JKLEtBQXBCO0FBQzVCOztBQUVELE1BQUljLFFBQUosR0FBZTtBQUFDLFdBQU8sS0FBS2pCLEtBQUwsQ0FBV0ksT0FBWCxDQUFtQmMsSUFBbkIsQ0FBd0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDaEIsS0FBRixJQUFXLEtBQUtGLEtBQUwsQ0FBV0UsS0FBbkQsQ0FBUDtBQUFrRTs7QUFFbEYsTUFBSUMsT0FBSixHQUFjO0FBQ1YsVUFBTWEsUUFBUSxHQUFHLEtBQUtBLFFBQXRCO0FBQ0EsV0FBTztBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0YsS0FBS2pCLEtBQUwsQ0FBV0ksT0FBWCxDQUFtQmdCLEdBQW5CLENBQXVCQyxHQUFHLElBQ3ZCO0FBQUssZUFBUyxFQUFHLG1CQUFrQkosUUFBUSxDQUFDZCxLQUFULElBQWtCa0IsR0FBRyxDQUFDbEIsS0FBdEIsR0FBOEIsV0FBOUIsR0FBNEMsRUFBRyxFQUFsRjtBQUFxRixhQUFPLEVBQUUsS0FBS0ksUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLEVBQXlCYSxHQUFHLENBQUNsQixLQUE3QjtBQUE5RixPQUFvSWtCLEdBQUcsQ0FBQ0MsS0FBeEksQ0FESCxDQURFLENBQVA7QUFLSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsS0FBSyxHQUFHLEtBQUt4QixLQUFMLENBQVd3QixLQUFYLElBQW9CLGFBQXBCLEdBQW9DLHdCQUFwQyxHQUErRCxFQUE3RTtBQUNBLFVBQU1DLE1BQU0sR0FBRyxLQUFLeEIsS0FBTCxDQUFXQyxJQUFYLEdBQWtCLFlBQWxCLEdBQWlDLEVBQWhEO0FBQ0EsV0FBUTtBQUFLLGVBQVMsRUFBRyxZQUFXc0IsS0FBTSxHQUFFQyxNQUFPLEVBQTNDO0FBQThDLGFBQU8sRUFBRSxLQUFLaEIsUUFBNUQ7QUFBc0UsU0FBRyxFQUFFLEtBQUtKO0FBQWhGLE9BQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFrQyxLQUFLWSxRQUFMLENBQWNLLEtBQWhELENBREosRUFFSSw0REFBQyx3REFBRDtBQUFPLGVBQVMsRUFBQztBQUFqQixNQUZKLEVBR0ssS0FBS3JCLEtBQUwsQ0FBV0MsSUFBWCxJQUFtQixLQUFLRSxPQUg3QixDQUFSO0FBS0g7O0FBL0MrQyxDLENBa0RwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL2Ryb3Bkb3duLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBBcnJvdyBmcm9tIFwiLi4vLi4vaWNvbnMvZG93bmFycm93XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtvcGVuOiBmYWxzZSwgdmFsdWU6IHRoaXMucHJvcHMudmFsdWUgfHwgdGhpcy5wcm9wcy5vcHRpb25zWzBdLnZhbHVlfTtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNob3dNZW51ID0gdGhpcy5zaG93TWVudS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGlkZU1lbnUgPSB0aGlzLmhpZGVNZW51LmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd01lbnUoZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe29wZW46IHRydWV9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmhpZGVNZW51KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlTWVudSgpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtvcGVuOiBmYWxzZX0sICgpID0+IHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuaGlkZU1lbnUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWV9KTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlbGVjdGVkKCkge3JldHVybiB0aGlzLnByb3BzLm9wdGlvbnMuZmluZChvID0+IG8udmFsdWUgPT0gdGhpcy5zdGF0ZS52YWx1ZSk7fVxyXG5cclxuICAgIGdldCBvcHRpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5vcHRpb25zLm1hcChvcHQgPT4gXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdC1vcHRpb24ke3NlbGVjdGVkLnZhbHVlID09IG9wdC52YWx1ZSA/IFwiIHNlbGVjdGVkXCIgOiBcIlwifWB9IG9uQ2xpY2s9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBvcHQudmFsdWUpfT57b3B0LmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLnByb3BzLnN0eWxlID09IFwidHJhbnNwYXJlbnRcIiA/IFwiIGJkLXNlbGVjdC10cmFuc3BhcmVudFwiIDogXCJcIjtcclxuICAgICAgICBjb25zdCBpc09wZW4gPSB0aGlzLnN0YXRlLm9wZW4gPyBcIiBtZW51LW9wZW5cIiA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC12YWx1ZVwiPnt0aGlzLnNlbGVjdGVkLmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxBcnJvdyBjbGFzc05hbWU9XCJiZC1zZWxlY3QtYXJyb3dcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLm9wZW4gJiYgdGhpcy5vcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcFwiPlxyXG4vLyA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57dGhpcy5wcm9wcy5sYWJlbH08L2xhYmVsPlxyXG4vLyA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuLy8gICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWNvbnRyb2xzXCI+XHJcbi8vICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3QtdmFsdWVcIj57dGhpcy5zZWxlY3RlZC5sYWJlbH08L2Rpdj5cclxuLy8gICAgICAgICA8QXJyb3cgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWFycm93XCIgLz5cclxuLy8gICAgIDwvZGl2PlxyXG4vLyA8L2Rpdj5cclxuLy8ge3RoaXMuc3RhdGUub3BlbiAmJiB0aGlzLm9wdGlvbnN9XHJcbi8vIDwvZGl2PjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/dropdown.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Select; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_downarrow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/downarrow */ \"./src/ui/icons/downarrow.jsx\");\n\n\nclass Select extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n value: this.props.value || this.props.options[0].value\n };\n this.dropdown = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.showMenu = this.showMenu.bind(this);\n this.hideMenu = this.hideMenu.bind(this);\n }\n\n showMenu(event) {\n event.preventDefault();\n this.setState({\n open: true\n }, () => {\n document.addEventListener(\"click\", this.hideMenu);\n });\n }\n\n hideMenu() {\n this.setState({\n open: false\n }, () => {\n document.removeEventListener(\"click\", this.hideMenu);\n });\n }\n\n onChange(value) {\n this.setState({\n value\n });\n if (this.props.onChange) this.props.onChange(value);\n }\n\n get selected() {\n return this.props.options.find(o => o.value == this.state.value);\n }\n\n get options() {\n const selected = this.selected;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-options\"\n }, this.props.options.map(opt => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select-option${selected.value == opt.value ? \" selected\" : \"\"}`,\n onClick: this.onChange.bind(this, opt.value)\n }, opt.label)));\n }\n\n render() {\n const style = this.props.style == \"transparent\" ? \" bd-select-transparent\" : \"\";\n const isOpen = this.state.open ? \" menu-open\" : \"\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select${style}${isOpen}`,\n onClick: this.showMenu,\n ref: this.dropdown\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-value\"\n }, this.selected.label), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_downarrow__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"bd-select-arrow\"\n }), this.state.open && this.options);\n }\n\n} // return
\n// \n//
\n//
\n//
{this.selected.label}
\n// \n//
\n//
\n// {this.state.open && this.options}\n//
;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvZHJvcGRvd24uanN4PzRhOWMiXSwibmFtZXMiOlsiU2VsZWN0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJvcGVuIiwidmFsdWUiLCJvcHRpb25zIiwiZHJvcGRvd24iLCJjcmVhdGVSZWYiLCJvbkNoYW5nZSIsImJpbmQiLCJzaG93TWVudSIsImhpZGVNZW51IiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInNldFN0YXRlIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNlbGVjdGVkIiwiZmluZCIsIm8iLCJtYXAiLCJvcHQiLCJsYWJlbCIsInJlbmRlciIsInN0eWxlIiwiaXNPcGVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLFVBQUksRUFBRSxLQUFQO0FBQWNDLFdBQUssRUFBRSxLQUFLSCxLQUFMLENBQVdHLEtBQVgsSUFBb0IsS0FBS0gsS0FBTCxDQUFXSSxPQUFYLENBQW1CLENBQW5CLEVBQXNCRDtBQUEvRCxLQUFiO0FBQ0EsU0FBS0UsUUFBTCxHQUFnQlIsNkNBQUssQ0FBQ1MsU0FBTixFQUFoQjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNELElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLRSxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0YsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNIOztBQUVEQyxVQUFRLENBQUNFLEtBQUQsRUFBUTtBQUNaQSxTQUFLLENBQUNDLGNBQU47QUFDQSxTQUFLQyxRQUFMLENBQWM7QUFBQ1gsVUFBSSxFQUFFO0FBQVAsS0FBZCxFQUE0QixNQUFNO0FBQzlCWSxjQUFRLENBQUNDLGdCQUFULENBQTBCLE9BQTFCLEVBQW1DLEtBQUtMLFFBQXhDO0FBQ0gsS0FGRDtBQUdIOztBQUVEQSxVQUFRLEdBQUc7QUFDUCxTQUFLRyxRQUFMLENBQWM7QUFBQ1gsVUFBSSxFQUFFO0FBQVAsS0FBZCxFQUE2QixNQUFNO0FBQy9CWSxjQUFRLENBQUNFLG1CQUFULENBQTZCLE9BQTdCLEVBQXNDLEtBQUtOLFFBQTNDO0FBQ0gsS0FGRDtBQUdIOztBQUVESCxVQUFRLENBQUNKLEtBQUQsRUFBUTtBQUNaLFNBQUtVLFFBQUwsQ0FBYztBQUFDVjtBQUFELEtBQWQ7QUFDQSxRQUFJLEtBQUtILEtBQUwsQ0FBV08sUUFBZixFQUF5QixLQUFLUCxLQUFMLENBQVdPLFFBQVgsQ0FBb0JKLEtBQXBCO0FBQzVCOztBQUVELE1BQUljLFFBQUosR0FBZTtBQUFDLFdBQU8sS0FBS2pCLEtBQUwsQ0FBV0ksT0FBWCxDQUFtQmMsSUFBbkIsQ0FBd0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDaEIsS0FBRixJQUFXLEtBQUtGLEtBQUwsQ0FBV0UsS0FBbkQsQ0FBUDtBQUFrRTs7QUFFbEYsTUFBSUMsT0FBSixHQUFjO0FBQ1YsVUFBTWEsUUFBUSxHQUFHLEtBQUtBLFFBQXRCO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNGLEtBQUtqQixLQUFMLENBQVdJLE9BQVgsQ0FBbUJnQixHQUFuQixDQUF1QkMsR0FBRyxpQkFDdkI7QUFBSyxlQUFTLEVBQUcsbUJBQWtCSixRQUFRLENBQUNkLEtBQVQsSUFBa0JrQixHQUFHLENBQUNsQixLQUF0QixHQUE4QixXQUE5QixHQUE0QyxFQUFHLEVBQWxGO0FBQXFGLGFBQU8sRUFBRSxLQUFLSSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsRUFBeUJhLEdBQUcsQ0FBQ2xCLEtBQTdCO0FBQTlGLE9BQW9Ja0IsR0FBRyxDQUFDQyxLQUF4SSxDQURILENBREUsQ0FBUDtBQUtIOztBQUVEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxLQUFLLEdBQUcsS0FBS3hCLEtBQUwsQ0FBV3dCLEtBQVgsSUFBb0IsYUFBcEIsR0FBb0Msd0JBQXBDLEdBQStELEVBQTdFO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLEtBQUt4QixLQUFMLENBQVdDLElBQVgsR0FBa0IsWUFBbEIsR0FBaUMsRUFBaEQ7QUFDQSx3QkFBUTtBQUFLLGVBQVMsRUFBRyxZQUFXc0IsS0FBTSxHQUFFQyxNQUFPLEVBQTNDO0FBQThDLGFBQU8sRUFBRSxLQUFLaEIsUUFBNUQ7QUFBc0UsU0FBRyxFQUFFLEtBQUtKO0FBQWhGLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBa0MsS0FBS1ksUUFBTCxDQUFjSyxLQUFoRCxDQURKLGVBRUksNERBQUMsd0RBQUQ7QUFBTyxlQUFTLEVBQUM7QUFBakIsTUFGSixFQUdLLEtBQUtyQixLQUFMLENBQVdDLElBQVgsSUFBbUIsS0FBS0UsT0FIN0IsQ0FBUjtBQUtIOztBQS9DK0MsQyxDQWtEcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9kcm9wZG93bi5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgQXJyb3cgZnJvbSBcIi4uLy4uL2ljb25zL2Rvd25hcnJvd1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VsZWN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7b3BlbjogZmFsc2UsIHZhbHVlOiB0aGlzLnByb3BzLnZhbHVlIHx8IHRoaXMucHJvcHMub3B0aW9uc1swXS52YWx1ZX07XHJcbiAgICAgICAgdGhpcy5kcm9wZG93biA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zaG93TWVudSA9IHRoaXMuc2hvd01lbnUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmhpZGVNZW51ID0gdGhpcy5oaWRlTWVudS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dNZW51KGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtvcGVuOiB0cnVlfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5oaWRlTWVudSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZU1lbnUoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7b3BlbjogZmFsc2V9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmhpZGVNZW51KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3ZhbHVlfSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHRoaXMucHJvcHMub25DaGFuZ2UodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzZWxlY3RlZCgpIHtyZXR1cm4gdGhpcy5wcm9wcy5vcHRpb25zLmZpbmQobyA9PiBvLnZhbHVlID09IHRoaXMuc3RhdGUudmFsdWUpO31cclxuXHJcbiAgICBnZXQgb3B0aW9ucygpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LW9wdGlvbnNcIj5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMub3B0aW9ucy5tYXAob3B0ID0+IFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BiZC1zZWxlY3Qtb3B0aW9uJHtzZWxlY3RlZC52YWx1ZSA9PSBvcHQudmFsdWUgPyBcIiBzZWxlY3RlZFwiIDogXCJcIn1gfSBvbkNsaWNrPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcywgb3B0LnZhbHVlKX0+e29wdC5sYWJlbH08L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5wcm9wcy5zdHlsZSA9PSBcInRyYW5zcGFyZW50XCIgPyBcIiBiZC1zZWxlY3QtdHJhbnNwYXJlbnRcIiA6IFwiXCI7XHJcbiAgICAgICAgY29uc3QgaXNPcGVuID0gdGhpcy5zdGF0ZS5vcGVuID8gXCIgbWVudS1vcGVuXCIgOiBcIlwiO1xyXG4gICAgICAgIHJldHVybiAgPGRpdiBjbGFzc05hbWU9e2BiZC1zZWxlY3Qke3N0eWxlfSR7aXNPcGVufWB9IG9uQ2xpY2s9e3RoaXMuc2hvd01lbnV9IHJlZj17dGhpcy5kcm9wZG93bn0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3QtdmFsdWVcIj57dGhpcy5zZWxlY3RlZC5sYWJlbH08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8QXJyb3cgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWFycm93XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5vcGVuICYmIHRoaXMub3B0aW9uc31cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufVxyXG5cclxuLy8gcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LXdyYXBcIj5cclxuLy8gPGxhYmVsIGNsYXNzTmFtZT1cImJkLWxhYmVsXCI+e3RoaXMucHJvcHMubGFiZWx9PC9sYWJlbD5cclxuLy8gPGRpdiBjbGFzc05hbWU9e2BiZC1zZWxlY3Qke3N0eWxlfSR7aXNPcGVufWB9IG9uQ2xpY2s9e3RoaXMuc2hvd01lbnV9IHJlZj17dGhpcy5kcm9wZG93bn0+XHJcbi8vICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC1jb250cm9sc1wiPlxyXG4vLyAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LXZhbHVlXCI+e3RoaXMuc2VsZWN0ZWQubGFiZWx9PC9kaXY+XHJcbi8vICAgICAgICAgPEFycm93IGNsYXNzTmFtZT1cImJkLXNlbGVjdC1hcnJvd1wiIC8+XHJcbi8vICAgICA8L2Rpdj5cclxuLy8gPC9kaXY+XHJcbi8vIHt0aGlzLnN0YXRlLm9wZW4gJiYgdGhpcy5vcHRpb25zfVxyXG4vLyA8L2Rpdj47Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/dropdown.jsx\n"); /***/ }), @@ -1019,7 +1031,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingItem; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass SettingItem extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-item\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-header\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n htmlFor: this.props.id,\n className: \"bd-setting-title\"\n }, this.props.name), this.props.children), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-note\"\n }, this.props.note), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-divider\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvaXRlbS5qc3g/NzY1NyJdLCJuYW1lcyI6WyJTZXR0aW5nSXRlbSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJpZCIsIm5hbWUiLCJjaGlsZHJlbiIsIm5vdGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsV0FBTixTQUEwQkMsNkNBQUssQ0FBQ0MsU0FBaEMsQ0FBMEM7QUFDckRDLFFBQU0sR0FBRztBQUNMLFdBQU87QUFBSyxlQUFTLEVBQUU7QUFBaEIsT0FDSztBQUFLLGVBQVMsRUFBRTtBQUFoQixPQUNJO0FBQU8sYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsRUFBM0I7QUFBK0IsZUFBUyxFQUFFO0FBQTFDLE9BQStELEtBQUtELEtBQUwsQ0FBV0UsSUFBMUUsQ0FESixFQUVLLEtBQUtGLEtBQUwsQ0FBV0csUUFGaEIsQ0FETCxFQUtLO0FBQUssZUFBUyxFQUFFO0FBQWhCLE9BQW9DLEtBQUtILEtBQUwsQ0FBV0ksSUFBL0MsQ0FMTCxFQU1LO0FBQUssZUFBUyxFQUFFO0FBQWhCLE1BTkwsQ0FBUDtBQVFIOztBQVZvRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL2l0ZW0uanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdJdGVtIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy1pdGVtXCJ9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctaGVhZGVyXCJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj17dGhpcy5wcm9wcy5pZH0gY2xhc3NOYW1lPXtcImJkLXNldHRpbmctdGl0bGVcIn0+e3RoaXMucHJvcHMubmFtZX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLW5vdGVcIn0+e3RoaXMucHJvcHMubm90ZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLWRpdmlkZXJcIn0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/components/item.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingItem; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass SettingItem extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n htmlFor: this.props.id,\n className: \"bd-setting-title\"\n }, this.props.name), this.props.children), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-note\"\n }, this.props.note), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-divider\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvaXRlbS5qc3g/NzY1NyJdLCJuYW1lcyI6WyJTZXR0aW5nSXRlbSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJpZCIsIm5hbWUiLCJjaGlsZHJlbiIsIm5vdGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsV0FBTixTQUEwQkMsNkNBQUssQ0FBQ0MsU0FBaEMsQ0FBMEM7QUFDckRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFFO0FBQWhCLG9CQUNLO0FBQUssZUFBUyxFQUFFO0FBQWhCLG9CQUNJO0FBQU8sYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsRUFBM0I7QUFBK0IsZUFBUyxFQUFFO0FBQTFDLE9BQStELEtBQUtELEtBQUwsQ0FBV0UsSUFBMUUsQ0FESixFQUVLLEtBQUtGLEtBQUwsQ0FBV0csUUFGaEIsQ0FETCxlQUtLO0FBQUssZUFBUyxFQUFFO0FBQWhCLE9BQW9DLEtBQUtILEtBQUwsQ0FBV0ksSUFBL0MsQ0FMTCxlQU1LO0FBQUssZUFBUyxFQUFFO0FBQWhCLE1BTkwsQ0FBUDtBQVFIOztBQVZvRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL2l0ZW0uanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdJdGVtIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy1pdGVtXCJ9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctaGVhZGVyXCJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj17dGhpcy5wcm9wcy5pZH0gY2xhc3NOYW1lPXtcImJkLXNldHRpbmctdGl0bGVcIn0+e3RoaXMucHJvcHMubmFtZX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLW5vdGVcIn0+e3RoaXMucHJvcHMubm90ZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLWRpdmlkZXJcIn0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/components/item.jsx\n"); /***/ }), @@ -1031,7 +1043,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/search */ \"./src/ui/icons/search.jsx\");\n\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-search-wrapper\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n onChange: this.props.onChange,\n onKeyDown: this.props.onKeyDown,\n type: \"text\",\n className: \"bd-search\",\n placeholder: this.props.placeholder,\n maxLength: \"50\"\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc2VhcmNoLmpzeD82NzI0Il0sIm5hbWVzIjpbIlNlYXJjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJvbkNoYW5nZSIsIm9uS2V5RG93biIsInBsYWNlaG9sZGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsV0FBTztBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0s7QUFBTyxjQUFRLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxRQUE1QjtBQUFzQyxlQUFTLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxTQUE1RDtBQUF1RSxVQUFJLEVBQUMsTUFBNUU7QUFBbUYsZUFBUyxFQUFDLFdBQTdGO0FBQXlHLGlCQUFXLEVBQUUsS0FBS0YsS0FBTCxDQUFXRyxXQUFqSTtBQUE4SSxlQUFTLEVBQUM7QUFBeEosTUFETCxFQUVLLDREQUFDLHFEQUFELE9BRkwsQ0FBUDtBQUlIOztBQU4rQyIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL3NlYXJjaC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiLi4vLi4vaWNvbnMvc2VhcmNoXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWFyY2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlYXJjaC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG9uQ2hhbmdlPXt0aGlzLnByb3BzLm9uQ2hhbmdlfSBvbktleURvd249e3RoaXMucHJvcHMub25LZXlEb3dufSB0eXBlPVwidGV4dFwiIGNsYXNzTmFtZT1cImJkLXNlYXJjaFwiIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyfSBtYXhMZW5ndGg9XCI1MFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPFNlYXJjaEljb24gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/components/search.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/search */ \"./src/ui/icons/search.jsx\");\n\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-search-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n onChange: this.props.onChange,\n onKeyDown: this.props.onKeyDown,\n type: \"text\",\n className: \"bd-search\",\n placeholder: this.props.placeholder,\n maxLength: \"50\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc2VhcmNoLmpzeD82NzI0Il0sIm5hbWVzIjpbIlNlYXJjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJvbkNoYW5nZSIsIm9uS2V5RG93biIsInBsYWNlaG9sZGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSztBQUFPLGNBQVEsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFFBQTVCO0FBQXNDLGVBQVMsRUFBRSxLQUFLRCxLQUFMLENBQVdFLFNBQTVEO0FBQXVFLFVBQUksRUFBQyxNQUE1RTtBQUFtRixlQUFTLEVBQUMsV0FBN0Y7QUFBeUcsaUJBQVcsRUFBRSxLQUFLRixLQUFMLENBQVdHLFdBQWpJO0FBQThJLGVBQVMsRUFBQztBQUF4SixNQURMLGVBRUssNERBQUMscURBQUQsT0FGTCxDQUFQO0FBSUg7O0FBTitDIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc2VhcmNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCIuLi8uLi9pY29ucy9zZWFyY2hcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlYXJjaCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VhcmNoLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgb25DaGFuZ2U9e3RoaXMucHJvcHMub25DaGFuZ2V9IG9uS2V5RG93bj17dGhpcy5wcm9wcy5vbktleURvd259IHR5cGU9XCJ0ZXh0XCIgY2xhc3NOYW1lPVwiYmQtc2VhcmNoXCIgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXJ9IG1heExlbmd0aD1cIjUwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/search.jsx\n"); /***/ }), @@ -1043,7 +1055,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Switch; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Switch extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n checked: this.props.checked\n };\n this.onChange = this.onChange.bind(this);\n }\n\n onChange() {\n if (this.props.disabled) return;\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n render() {\n const enabledClass = this.props.disabled ? \" bd-switch-disabled\" : \"\";\n const checkedClass = this.state.checked ? \" bd-switch-checked\" : \"\";\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-switch` + enabledClass + checkedClass\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n type: \"checkbox\",\n id: this.props.id,\n className: `bd-checkbox`,\n disabled: this.props.disabled,\n checked: this.state.checked,\n onChange: this.onChange\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc3dpdGNoLmpzeD82MWQyIl0sIm5hbWVzIjpbIlN3aXRjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwiYmluZCIsImRpc2FibGVkIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJlbmFibGVkQ2xhc3MiLCJjaGVja2VkQ2xhc3MiLCJpZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRSxLQUFLRixLQUFMLENBQVdFO0FBQXJCLEtBQWI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNIOztBQUVERCxVQUFRLEdBQUc7QUFDUCxRQUFJLEtBQUtILEtBQUwsQ0FBV0ssUUFBZixFQUF5QjtBQUN6QixTQUFLTCxLQUFMLENBQVdHLFFBQVgsQ0FBb0IsQ0FBQyxLQUFLRixLQUFMLENBQVdDLE9BQWhDO0FBQ0EsU0FBS0ksUUFBTCxDQUFjO0FBQUNKLGFBQU8sRUFBRSxDQUFDLEtBQUtELEtBQUwsQ0FBV0M7QUFBdEIsS0FBZDtBQUNIOztBQUVESyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxZQUFZLEdBQUcsS0FBS1IsS0FBTCxDQUFXSyxRQUFYLEdBQXNCLHFCQUF0QixHQUE4QyxFQUFuRTtBQUNBLFVBQU1JLFlBQVksR0FBRyxLQUFLUixLQUFMLENBQVdDLE9BQVgsR0FBcUIsb0JBQXJCLEdBQTRDLEVBQWpFO0FBQ0EsV0FBUTtBQUFLLGVBQVMsRUFBRyxXQUFELEdBQWNNLFlBQWQsR0FBNkJDO0FBQTdDLE9BQ0k7QUFBTyxVQUFJLEVBQUMsVUFBWjtBQUF1QixRQUFFLEVBQUUsS0FBS1QsS0FBTCxDQUFXVSxFQUF0QztBQUEwQyxlQUFTLEVBQUcsYUFBdEQ7QUFBb0UsY0FBUSxFQUFFLEtBQUtWLEtBQUwsQ0FBV0ssUUFBekY7QUFBbUcsYUFBTyxFQUFFLEtBQUtKLEtBQUwsQ0FBV0MsT0FBdkg7QUFBZ0ksY0FBUSxFQUFFLEtBQUtDO0FBQS9JLE1BREosQ0FBUjtBQUdIOztBQW5CK0MiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zd2l0Y2guanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN3aXRjaCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge2NoZWNrZWQ6IHRoaXMucHJvcHMuY2hlY2tlZH07XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoIXRoaXMuc3RhdGUuY2hlY2tlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogIXRoaXMuc3RhdGUuY2hlY2tlZH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBlbmFibGVkQ2xhc3MgPSB0aGlzLnByb3BzLmRpc2FibGVkID8gXCIgYmQtc3dpdGNoLWRpc2FibGVkXCIgOiBcIlwiO1xyXG4gICAgICAgIGNvbnN0IGNoZWNrZWRDbGFzcyA9IHRoaXMuc3RhdGUuY2hlY2tlZCA/IFwiIGJkLXN3aXRjaC1jaGVja2VkXCIgOiBcIlwiO1xyXG4gICAgICAgIHJldHVybiAgPGRpdiBjbGFzc05hbWU9e2BiZC1zd2l0Y2hgICsgZW5hYmxlZENsYXNzICsgY2hlY2tlZENsYXNzfT5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9e3RoaXMucHJvcHMuaWR9IGNsYXNzTmFtZT17YGJkLWNoZWNrYm94YH0gZGlzYWJsZWQ9e3RoaXMucHJvcHMuZGlzYWJsZWR9IGNoZWNrZWQ9e3RoaXMuc3RhdGUuY2hlY2tlZH0gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9IC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/switch.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Switch; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Switch extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n checked: this.props.checked\n };\n this.onChange = this.onChange.bind(this);\n }\n\n onChange() {\n if (this.props.disabled) return;\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n render() {\n const enabledClass = this.props.disabled ? \" bd-switch-disabled\" : \"\";\n const checkedClass = this.state.checked ? \" bd-switch-checked\" : \"\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-switch` + enabledClass + checkedClass\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n type: \"checkbox\",\n id: this.props.id,\n className: `bd-checkbox`,\n disabled: this.props.disabled,\n checked: this.state.checked,\n onChange: this.onChange\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc3dpdGNoLmpzeD82MWQyIl0sIm5hbWVzIjpbIlN3aXRjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwiYmluZCIsImRpc2FibGVkIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJlbmFibGVkQ2xhc3MiLCJjaGVja2VkQ2xhc3MiLCJpZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRSxLQUFLRixLQUFMLENBQVdFO0FBQXJCLEtBQWI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNIOztBQUVERCxVQUFRLEdBQUc7QUFDUCxRQUFJLEtBQUtILEtBQUwsQ0FBV0ssUUFBZixFQUF5QjtBQUN6QixTQUFLTCxLQUFMLENBQVdHLFFBQVgsQ0FBb0IsQ0FBQyxLQUFLRixLQUFMLENBQVdDLE9BQWhDO0FBQ0EsU0FBS0ksUUFBTCxDQUFjO0FBQUNKLGFBQU8sRUFBRSxDQUFDLEtBQUtELEtBQUwsQ0FBV0M7QUFBdEIsS0FBZDtBQUNIOztBQUVESyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxZQUFZLEdBQUcsS0FBS1IsS0FBTCxDQUFXSyxRQUFYLEdBQXNCLHFCQUF0QixHQUE4QyxFQUFuRTtBQUNBLFVBQU1JLFlBQVksR0FBRyxLQUFLUixLQUFMLENBQVdDLE9BQVgsR0FBcUIsb0JBQXJCLEdBQTRDLEVBQWpFO0FBQ0Esd0JBQVE7QUFBSyxlQUFTLEVBQUcsV0FBRCxHQUFjTSxZQUFkLEdBQTZCQztBQUE3QyxvQkFDSTtBQUFPLFVBQUksRUFBQyxVQUFaO0FBQXVCLFFBQUUsRUFBRSxLQUFLVCxLQUFMLENBQVdVLEVBQXRDO0FBQTBDLGVBQVMsRUFBRyxhQUF0RDtBQUFvRSxjQUFRLEVBQUUsS0FBS1YsS0FBTCxDQUFXSyxRQUF6RjtBQUFtRyxhQUFPLEVBQUUsS0FBS0osS0FBTCxDQUFXQyxPQUF2SDtBQUFnSSxjQUFRLEVBQUUsS0FBS0M7QUFBL0ksTUFESixDQUFSO0FBR0g7O0FBbkIrQyIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL3N3aXRjaC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3dpdGNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7Y2hlY2tlZDogdGhpcy5wcm9wcy5jaGVja2VkfTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSghdGhpcy5zdGF0ZS5jaGVja2VkKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkOiAhdGhpcy5zdGF0ZS5jaGVja2VkfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IGVuYWJsZWRDbGFzcyA9IHRoaXMucHJvcHMuZGlzYWJsZWQgPyBcIiBiZC1zd2l0Y2gtZGlzYWJsZWRcIiA6IFwiXCI7XHJcbiAgICAgICAgY29uc3QgY2hlY2tlZENsYXNzID0gdGhpcy5zdGF0ZS5jaGVja2VkID8gXCIgYmQtc3dpdGNoLWNoZWNrZWRcIiA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuICA8ZGl2IGNsYXNzTmFtZT17YGJkLXN3aXRjaGAgKyBlbmFibGVkQ2xhc3MgKyBjaGVja2VkQ2xhc3N9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD17dGhpcy5wcm9wcy5pZH0gY2xhc3NOYW1lPXtgYmQtY2hlY2tib3hgfSBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH0gY2hlY2tlZD17dGhpcy5zdGF0ZS5jaGVja2VkfSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/components/switch.jsx\n"); /***/ }), @@ -1055,7 +1067,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Divider; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Divider extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2RpdmlkZXIuanN4P2M4Y2MiXSwibmFtZXMiOlsiRGl2aWRlciIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE9BQU4sU0FBc0JDLDZDQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxRQUFNLEdBQUc7QUFDTCxXQUFPO0FBQUssZUFBUyxFQUFDO0FBQWYsTUFBUDtBQUNIOztBQUhnRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9kaXZpZGVyLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXZpZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1kaXZpZGVyIGRpdmlkZXItMzU3M29PIG1hcmdpblRvcDgtMURMWjFuIG1hcmdpbkJvdHRvbTQwLTJ2SXdUdlwiIC8+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/divider.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Divider; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Divider extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2RpdmlkZXIuanN4P2M4Y2MiXSwibmFtZXMiOlsiRGl2aWRlciIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE9BQU4sU0FBc0JDLDZDQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLE1BQVA7QUFDSDs7QUFIZ0QiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvZGl2aWRlci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGl2aWRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtZGl2aWRlciBkaXZpZGVyLTM1NzNvTyBtYXJnaW5Ub3A4LTFETFoxbiBtYXJnaW5Cb3R0b200MC0ydkl3VHZcIiAvPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/divider.jsx\n"); /***/ }), @@ -1067,7 +1079,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Group; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _divider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./divider */ \"./src/ui/settings/divider.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/item */ \"./src/ui/settings/components/item.jsx\");\n\n\n\n\n\n\nconst baseClassName = \"bd-settings-group\";\nclass Group extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n\n if (this.props.button && this.props.collapsible) {\n const original = this.props.button.onClick;\n\n this.props.button.onClick = event => {\n event.stopPropagation();\n original(...arguments);\n };\n }\n\n if (!this.props.hasOwnProperty(\"shown\")) this.props.shown = true;\n this.container = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.state = {\n collapsed: this.props.collapsible && !this.props.shown\n };\n this.onChange = this.onChange.bind(this);\n this.toggleCollapse = this.toggleCollapse.bind(this);\n }\n\n toggleCollapse() {\n const container = this.container.current;\n const timeout = this.state.collapsed ? 300 : 1;\n container.style.setProperty(\"height\", container.scrollHeight + \"px\");\n container.classList.add(\"animating\");\n this.setState({\n collapsed: !this.state.collapsed\n }, () => setTimeout(() => {\n container.style.setProperty(\"height\", \"\");\n container.classList.remove(\"animating\");\n }, timeout));\n }\n\n onChange(id, value) {\n if (!this.props.onChange) return;\n if (this.props.id) this.props.onChange(this.props.id, id, value);else this.props.onChange(id, value);\n this.forceUpdate();\n }\n\n render() {\n const {\n settings\n } = this.props;\n const collapseClass = this.props.collapsible ? `collapsible ${this.state.collapsed ? \"collapsed\" : \"expanded\"}` : \"\";\n const groupClass = `${baseClassName} ${collapseClass}`;\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: groupClass\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.props.name,\n collapsible: this.props.collapsible,\n onClick: this.toggleCollapse,\n button: this.props.button,\n isGroup: true\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-settings-container\",\n ref: this.container\n }, settings.filter(s => !s.hidden).map(setting => {\n let component = null;\n if (setting.type == \"dropdown\") component = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n options: setting.options,\n value: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (setting.type == \"switch\") component = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n checked: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (!component) return null;\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_item__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n id: setting.id,\n key: setting.id,\n name: setting.name,\n note: setting.note\n }, component);\n })), this.props.showDivider && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_divider__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null));\n }\n\n}\nconst originalRender = Group.prototype.render;\nObject.defineProperty(Group.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Group\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2dyb3VwLmpzeD8xYjcyIl0sIm5hbWVzIjpbImJhc2VDbGFzc05hbWUiLCJHcm91cCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImJ1dHRvbiIsImNvbGxhcHNpYmxlIiwib3JpZ2luYWwiLCJvbkNsaWNrIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJhcmd1bWVudHMiLCJoYXNPd25Qcm9wZXJ0eSIsInNob3duIiwiY29udGFpbmVyIiwiY3JlYXRlUmVmIiwic3RhdGUiLCJjb2xsYXBzZWQiLCJvbkNoYW5nZSIsImJpbmQiLCJ0b2dnbGVDb2xsYXBzZSIsImN1cnJlbnQiLCJ0aW1lb3V0Iiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsInNjcm9sbEhlaWdodCIsImNsYXNzTGlzdCIsImFkZCIsInNldFN0YXRlIiwic2V0VGltZW91dCIsInJlbW92ZSIsImlkIiwidmFsdWUiLCJmb3JjZVVwZGF0ZSIsInJlbmRlciIsInNldHRpbmdzIiwiY29sbGFwc2VDbGFzcyIsImdyb3VwQ2xhc3MiLCJuYW1lIiwiZmlsdGVyIiwicyIsImhpZGRlbiIsIm1hcCIsInNldHRpbmciLCJjb21wb25lbnQiLCJ0eXBlIiwiZGlzYWJsZWQiLCJvcHRpb25zIiwibm90ZSIsInNob3dEaXZpZGVyIiwib3JpZ2luYWxSZW5kZXIiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJzZXQiLCJMb2dnZXIiLCJ3YXJuIiwiZ2V0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsYUFBYSxHQUFHLG1CQUF0QjtBQUVlLE1BQU1DLEtBQU4sU0FBb0JDLDZDQUFLLENBQUNDLFNBQTFCLENBQW9DO0FBQy9D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QUFPLENBQUNaLEVBQWxCO0FBQXNCLFdBQUcsRUFBRVksT0FBTyxDQUFDWixFQUFuQztBQUF1QyxZQUFJLEVBQUVZLE9BQU8sQ0FBQ0wsSUFBckQ7QUFBMkQsWUFBSSxFQUFFSyxPQUFPLENBQUNLO0FBQXpFLFNBQWdGSixTQUFoRixDQUFQO0FBQ0gsS0FOQSxDQURMLENBRkwsRUFXTSxLQUFLeEMsS0FBTCxDQUFXNkMsV0FBWCxJQUEwQiw0REFBQyxnREFBRCxPQVhoQyxDQUFQO0FBYUg7O0FBM0Q4QztBQThEbkQsTUFBTUMsY0FBYyxHQUFHbEQsS0FBSyxDQUFDbUQsU0FBTixDQUFnQmpCLE1BQXZDO0FBQ0FrQixNQUFNLENBQUNDLGNBQVAsQ0FBc0JyRCxLQUFLLENBQUNtRCxTQUE1QixFQUF1QyxRQUF2QyxFQUFpRDtBQUM3Q0csWUFBVSxFQUFFLEtBRGlDO0FBRTdDQyxjQUFZLEVBQUUsS0FGK0I7QUFHN0NDLEtBQUcsRUFBRSxZQUFXO0FBQUNDLGtEQUFNLENBQUNDLElBQVAsQ0FBWSxPQUFaLEVBQXFCLHFHQUFyQjtBQUE2SCxHQUhqRztBQUk3Q0MsS0FBRyxFQUFFLE1BQU1UO0FBSmtDLENBQWpEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2dyb3VwLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIExvZ2dlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IFRpdGxlIGZyb20gXCIuL3RpdGxlXCI7XHJcbmltcG9ydCBEaXZpZGVyIGZyb20gXCIuL2RpdmlkZXJcIjtcclxuaW1wb3J0IFN3aXRjaCBmcm9tIFwiLi9jb21wb25lbnRzL3N3aXRjaFwiO1xyXG5pbXBvcnQgRHJvcGRvd24gZnJvbSBcIi4vY29tcG9uZW50cy9kcm9wZG93blwiO1xyXG5pbXBvcnQgSXRlbSBmcm9tIFwiLi9jb21wb25lbnRzL2l0ZW1cIjtcclxuXHJcbmNvbnN0IGJhc2VDbGFzc05hbWUgPSBcImJkLXNldHRpbmdzLWdyb3VwXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcm91cCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuYnV0dG9uICYmIHRoaXMucHJvcHMuY29sbGFwc2libGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSB0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrO1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIG9yaWdpbmFsKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoXCJzaG93blwiKSkgdGhpcy5wcm9wcy5zaG93biA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY29sbGFwc2VkOiB0aGlzLnByb3BzLmNvbGxhcHNpYmxlICYmICF0aGlzLnByb3BzLnNob3duXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnRvZ2dsZUNvbGxhcHNlID0gdGhpcy50b2dnbGVDb2xsYXBzZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XHJcbiAgICAgICAgY29uc3QgdGltZW91dCA9IHRoaXMuc3RhdGUuY29sbGFwc2VkID8gMzAwIDogMTtcclxuICAgICAgICBjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJoZWlnaHRcIiwgY29udGFpbmVyLnNjcm9sbEhlaWdodCArIFwicHhcIik7XHJcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJhbmltYXRpbmdcIik7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29sbGFwc2VkOiAhdGhpcy5zdGF0ZS5jb2xsYXBzZWR9LCAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KFwiaGVpZ2h0XCIsIFwiXCIpO1xyXG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcImFuaW1hdGluZ1wiKTtcclxuICAgICAgICB9LCB0aW1lb3V0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLm9uQ2hhbmdlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuaWQpIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5pZCwgaWQsIHZhbHVlKTtcclxuICAgICAgICBlbHNlIHRoaXMucHJvcHMub25DaGFuZ2UoaWQsIHZhbHVlKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXR0aW5nc30gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IGNvbGxhcHNlQ2xhc3MgPSB0aGlzLnByb3BzLmNvbGxhcHNpYmxlID8gYGNvbGxhcHNpYmxlICR7dGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyBcImNvbGxhcHNlZFwiIDogXCJleHBhbmRlZFwifWAgOiBcIlwiO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQ2xhc3MgPSBgJHtiYXNlQ2xhc3NOYW1lfSAke2NvbGxhcHNlQ2xhc3N9YDtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtncm91cENsYXNzfT5cclxuICAgICAgICAgICAgICAgICAgICA8VGl0bGUgdGV4dD17dGhpcy5wcm9wcy5uYW1lfSBjb2xsYXBzaWJsZT17dGhpcy5wcm9wcy5jb2xsYXBzaWJsZX0gb25DbGljaz17dGhpcy50b2dnbGVDb2xsYXBzZX0gYnV0dG9uPXt0aGlzLnByb3BzLmJ1dHRvbn0gaXNHcm91cD17dHJ1ZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNldHRpbmdzLWNvbnRhaW5lclwiIHJlZj17dGhpcy5jb250YWluZXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2V0dGluZ3MuZmlsdGVyKHMgPT4gIXMuaGlkZGVuKS5tYXAoKHNldHRpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcImRyb3Bkb3duXCIpIGNvbXBvbmVudCA9IDxEcm9wZG93biBkaXNhYmxlZD17c2V0dGluZy5kaXNhYmxlZH0gaWQ9e3NldHRpbmcuaWR9IG9wdGlvbnM9e3NldHRpbmcub3B0aW9uc30gdmFsdWU9e3NldHRpbmcudmFsdWV9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcywgc2V0dGluZy5pZCl9IC8+O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcInN3aXRjaFwiKSBjb21wb25lbnQgPSA8U3dpdGNoIGRpc2FibGVkPXtzZXR0aW5nLmRpc2FibGVkfSBpZD17c2V0dGluZy5pZH0gY2hlY2tlZD17c2V0dGluZy52YWx1ZX0gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBzZXR0aW5nLmlkKX0gLz47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEl0ZW0gaWQ9e3NldHRpbmcuaWR9IGtleT17c2V0dGluZy5pZH0gbmFtZT17c2V0dGluZy5uYW1lfSBub3RlPXtzZXR0aW5nLm5vdGV9Pntjb21wb25lbnR9PC9JdGVtPjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd0RpdmlkZXIgJiYgPERpdmlkZXIgLz59XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gR3JvdXAucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyb3VwLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkdyb3VwXCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/group.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Group; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _divider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./divider */ \"./src/ui/settings/divider.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/item */ \"./src/ui/settings/components/item.jsx\");\n\n\n\n\n\n\nconst baseClassName = \"bd-settings-group\";\nclass Group extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n\n if (this.props.button && this.props.collapsible) {\n const original = this.props.button.onClick;\n\n this.props.button.onClick = event => {\n event.stopPropagation();\n original(...arguments);\n };\n }\n\n if (!this.props.hasOwnProperty(\"shown\")) this.props.shown = true;\n this.container = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.state = {\n collapsed: this.props.collapsible && !this.props.shown\n };\n this.onChange = this.onChange.bind(this);\n this.toggleCollapse = this.toggleCollapse.bind(this);\n }\n\n toggleCollapse() {\n const container = this.container.current;\n const timeout = this.state.collapsed ? 300 : 1;\n container.style.setProperty(\"height\", container.scrollHeight + \"px\");\n container.classList.add(\"animating\");\n this.setState({\n collapsed: !this.state.collapsed\n }, () => setTimeout(() => {\n container.style.setProperty(\"height\", \"\");\n container.classList.remove(\"animating\");\n }, timeout));\n }\n\n onChange(id, value) {\n if (!this.props.onChange) return;\n if (this.props.id) this.props.onChange(this.props.id, id, value);else this.props.onChange(id, value);\n this.forceUpdate();\n }\n\n render() {\n const {\n settings\n } = this.props;\n const collapseClass = this.props.collapsible ? `collapsible ${this.state.collapsed ? \"collapsed\" : \"expanded\"}` : \"\";\n const groupClass = `${baseClassName} ${collapseClass}`;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: groupClass\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.props.name,\n collapsible: this.props.collapsible,\n onClick: this.toggleCollapse,\n button: this.props.button,\n isGroup: true\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-settings-container\",\n ref: this.container\n }, settings.filter(s => !s.hidden).map(setting => {\n let component = null;\n if (setting.type == \"dropdown\") component = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n options: setting.options,\n value: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (setting.type == \"switch\") component = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n checked: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (!component) return null;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_item__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n id: setting.id,\n key: setting.id,\n name: setting.name,\n note: setting.note\n }, component);\n })), this.props.showDivider && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_divider__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null));\n }\n\n}\nconst originalRender = Group.prototype.render;\nObject.defineProperty(Group.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Group\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2dyb3VwLmpzeD8xYjcyIl0sIm5hbWVzIjpbImJhc2VDbGFzc05hbWUiLCJHcm91cCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImJ1dHRvbiIsImNvbGxhcHNpYmxlIiwib3JpZ2luYWwiLCJvbkNsaWNrIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJhcmd1bWVudHMiLCJoYXNPd25Qcm9wZXJ0eSIsInNob3duIiwiY29udGFpbmVyIiwiY3JlYXRlUmVmIiwic3RhdGUiLCJjb2xsYXBzZWQiLCJvbkNoYW5nZSIsImJpbmQiLCJ0b2dnbGVDb2xsYXBzZSIsImN1cnJlbnQiLCJ0aW1lb3V0Iiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsInNjcm9sbEhlaWdodCIsImNsYXNzTGlzdCIsImFkZCIsInNldFN0YXRlIiwic2V0VGltZW91dCIsInJlbW92ZSIsImlkIiwidmFsdWUiLCJmb3JjZVVwZGF0ZSIsInJlbmRlciIsInNldHRpbmdzIiwiY29sbGFwc2VDbGFzcyIsImdyb3VwQ2xhc3MiLCJuYW1lIiwiZmlsdGVyIiwicyIsImhpZGRlbiIsIm1hcCIsInNldHRpbmciLCJjb21wb25lbnQiLCJ0eXBlIiwiZGlzYWJsZWQiLCJvcHRpb25zIiwibm90ZSIsInNob3dEaXZpZGVyIiwib3JpZ2luYWxSZW5kZXIiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJzZXQiLCJMb2dnZXIiLCJ3YXJuIiwiZ2V0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsYUFBYSxHQUFHLG1CQUF0QjtBQUVlLE1BQU1DLEtBQU4sU0FBb0JDLDZDQUFLLENBQUNDLFNBQTFCLENBQW9DO0FBQy9D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QUVELE9BQU8sQ0FBQ1osRUFBbEI7QUFBc0IsV0FBRyxFQUFFWSxPQUFPLENBQUNaLEVBQW5DO0FBQXVDLFlBQUksRUFBRVksT0FBTyxDQUFDTCxJQUFyRDtBQUEyRCxZQUFJLEVBQUVLLE9BQU8sQ0FBQ0s7QUFBekUsU0FBZ0ZKLFNBQWhGLENBQVA7QUFDSCxLQU5BLENBREwsQ0FGTCxFQVdNLEtBQUt4QyxLQUFMLENBQVc2QyxXQUFYLGlCQUEwQiw0REFBQyxnREFBRCxPQVhoQyxDQUFQO0FBYUg7O0FBM0Q4QztBQThEbkQsTUFBTUMsY0FBYyxHQUFHbEQsS0FBSyxDQUFDbUQsU0FBTixDQUFnQmpCLE1BQXZDO0FBQ0FrQixNQUFNLENBQUNDLGNBQVAsQ0FBc0JyRCxLQUFLLENBQUNtRCxTQUE1QixFQUF1QyxRQUF2QyxFQUFpRDtBQUM3Q0csWUFBVSxFQUFFLEtBRGlDO0FBRTdDQyxjQUFZLEVBQUUsS0FGK0I7QUFHN0NDLEtBQUcsRUFBRSxZQUFXO0FBQUNDLGtEQUFNLENBQUNDLElBQVAsQ0FBWSxPQUFaLEVBQXFCLHFHQUFyQjtBQUE2SCxHQUhqRztBQUk3Q0MsS0FBRyxFQUFFLE1BQU1UO0FBSmtDLENBQWpEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2dyb3VwLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIExvZ2dlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IFRpdGxlIGZyb20gXCIuL3RpdGxlXCI7XHJcbmltcG9ydCBEaXZpZGVyIGZyb20gXCIuL2RpdmlkZXJcIjtcclxuaW1wb3J0IFN3aXRjaCBmcm9tIFwiLi9jb21wb25lbnRzL3N3aXRjaFwiO1xyXG5pbXBvcnQgRHJvcGRvd24gZnJvbSBcIi4vY29tcG9uZW50cy9kcm9wZG93blwiO1xyXG5pbXBvcnQgSXRlbSBmcm9tIFwiLi9jb21wb25lbnRzL2l0ZW1cIjtcclxuXHJcbmNvbnN0IGJhc2VDbGFzc05hbWUgPSBcImJkLXNldHRpbmdzLWdyb3VwXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcm91cCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuYnV0dG9uICYmIHRoaXMucHJvcHMuY29sbGFwc2libGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSB0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrO1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIG9yaWdpbmFsKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoXCJzaG93blwiKSkgdGhpcy5wcm9wcy5zaG93biA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY29sbGFwc2VkOiB0aGlzLnByb3BzLmNvbGxhcHNpYmxlICYmICF0aGlzLnByb3BzLnNob3duXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnRvZ2dsZUNvbGxhcHNlID0gdGhpcy50b2dnbGVDb2xsYXBzZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XHJcbiAgICAgICAgY29uc3QgdGltZW91dCA9IHRoaXMuc3RhdGUuY29sbGFwc2VkID8gMzAwIDogMTtcclxuICAgICAgICBjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJoZWlnaHRcIiwgY29udGFpbmVyLnNjcm9sbEhlaWdodCArIFwicHhcIik7XHJcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJhbmltYXRpbmdcIik7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29sbGFwc2VkOiAhdGhpcy5zdGF0ZS5jb2xsYXBzZWR9LCAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KFwiaGVpZ2h0XCIsIFwiXCIpO1xyXG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcImFuaW1hdGluZ1wiKTtcclxuICAgICAgICB9LCB0aW1lb3V0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLm9uQ2hhbmdlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuaWQpIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5pZCwgaWQsIHZhbHVlKTtcclxuICAgICAgICBlbHNlIHRoaXMucHJvcHMub25DaGFuZ2UoaWQsIHZhbHVlKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXR0aW5nc30gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IGNvbGxhcHNlQ2xhc3MgPSB0aGlzLnByb3BzLmNvbGxhcHNpYmxlID8gYGNvbGxhcHNpYmxlICR7dGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyBcImNvbGxhcHNlZFwiIDogXCJleHBhbmRlZFwifWAgOiBcIlwiO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQ2xhc3MgPSBgJHtiYXNlQ2xhc3NOYW1lfSAke2NvbGxhcHNlQ2xhc3N9YDtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtncm91cENsYXNzfT5cclxuICAgICAgICAgICAgICAgICAgICA8VGl0bGUgdGV4dD17dGhpcy5wcm9wcy5uYW1lfSBjb2xsYXBzaWJsZT17dGhpcy5wcm9wcy5jb2xsYXBzaWJsZX0gb25DbGljaz17dGhpcy50b2dnbGVDb2xsYXBzZX0gYnV0dG9uPXt0aGlzLnByb3BzLmJ1dHRvbn0gaXNHcm91cD17dHJ1ZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNldHRpbmdzLWNvbnRhaW5lclwiIHJlZj17dGhpcy5jb250YWluZXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2V0dGluZ3MuZmlsdGVyKHMgPT4gIXMuaGlkZGVuKS5tYXAoKHNldHRpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcImRyb3Bkb3duXCIpIGNvbXBvbmVudCA9IDxEcm9wZG93biBkaXNhYmxlZD17c2V0dGluZy5kaXNhYmxlZH0gaWQ9e3NldHRpbmcuaWR9IG9wdGlvbnM9e3NldHRpbmcub3B0aW9uc30gdmFsdWU9e3NldHRpbmcudmFsdWV9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcywgc2V0dGluZy5pZCl9IC8+O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcInN3aXRjaFwiKSBjb21wb25lbnQgPSA8U3dpdGNoIGRpc2FibGVkPXtzZXR0aW5nLmRpc2FibGVkfSBpZD17c2V0dGluZy5pZH0gY2hlY2tlZD17c2V0dGluZy52YWx1ZX0gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBzZXR0aW5nLmlkKX0gLz47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEl0ZW0gaWQ9e3NldHRpbmcuaWR9IGtleT17c2V0dGluZy5pZH0gbmFtZT17c2V0dGluZy5uYW1lfSBub3RlPXtzZXR0aW5nLm5vdGV9Pntjb21wb25lbnR9PC9JdGVtPjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd0RpdmlkZXIgJiYgPERpdmlkZXIgLz59XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gR3JvdXAucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyb3VwLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkdyb3VwXCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/group.jsx\n"); /***/ }), @@ -1079,7 +1091,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/history */ \"./src/ui/icons/history.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\nconst SidebarComponents = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.Header && m.Separator && m.Item);\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-sidebar-header\"\n }, modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(SidebarComponents.Header, null, \"BandagedBD\"), modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"Changelog\"\n }, props => modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-changelog-button\",\n onClick: () => _modals__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showChangelogModal(data__WEBPACK_IMPORTED_MODULE_0__[\"Changelog\"])\n }), modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_icons_history__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-icon\",\n size: \"16px\"\n }))));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3NpZGViYXJoZWFkZXIuanN4P2E5NWEiXSwibmFtZXMiOlsiU2lkZWJhckNvbXBvbmVudHMiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZSIsIm0iLCJIZWFkZXIiLCJTZXBhcmF0b3IiLCJJdGVtIiwiVG9vbHRpcCIsImdldEJ5RGlzcGxheU5hbWUiLCJTZXR0aW5nc1RpdGxlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwicmVuZGVyIiwiTW9kYWxzIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsaUJBQWlCLEdBQUdDLHNEQUFjLENBQUNDLFNBQWYsQ0FBeUJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxNQUFGLElBQVlELENBQUMsQ0FBQ0UsU0FBZCxJQUEyQkYsQ0FBQyxDQUFDRyxJQUEzRCxDQUExQjtBQUNBLE1BQU1DLE9BQU8sR0FBR04sc0RBQWMsQ0FBQ08sZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxNQUFNQyxhQUFOLFNBQTRCQyw2Q0FBSyxDQUFDQyxTQUFsQyxDQUE0QztBQUN2REMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFdBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLLDREQUFDLGlCQUFELENBQW1CLE1BQW5CLHFCQURMLEVBRUssNERBQUMsT0FBRDtBQUFTLFdBQUssRUFBQyxPQUFmO0FBQXVCLGNBQVEsRUFBQyxLQUFoQztBQUFzQyxVQUFJLEVBQUM7QUFBM0MsT0FDS0QsS0FBSyxJQUNGLGdGQUFTQSxLQUFUO0FBQWdCLGVBQVMsRUFBQyxxQkFBMUI7QUFBZ0QsYUFBTyxFQUFFLE1BQU1FLCtDQUFNLENBQUNDLGtCQUFQLENBQTBCQyw4Q0FBMUI7QUFBL0QsUUFDSSw0REFBQyxzREFBRDtBQUFhLGVBQVMsRUFBQyxTQUF2QjtBQUFpQyxVQUFJLEVBQUM7QUFBdEMsTUFESixDQUZSLENBRkwsQ0FBUDtBQVVIOztBQWhCc0QiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3Mvc2lkZWJhcmhlYWRlci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZWxvZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBIaXN0b3J5SWNvbiBmcm9tIFwiLi4vaWNvbnMvaGlzdG9yeVwiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuXHJcbmNvbnN0IFNpZGViYXJDb21wb25lbnRzID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5IZWFkZXIgJiYgbS5TZXBhcmF0b3IgJiYgbS5JdGVtKTtcclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ3NUaXRsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2lkZWJhci1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNvbXBvbmVudHMuSGVhZGVyPkJhbmRhZ2VkQkQ8L1NpZGViYXJDb21wb25lbnRzLkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PVwiQ2hhbmdlbG9nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcyA9PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgey4uLnByb3BzfSBjbGFzc05hbWU9XCJiZC1jaGFuZ2Vsb2ctYnV0dG9uXCIgb25DbGljaz17KCkgPT4gTW9kYWxzLnNob3dDaGFuZ2Vsb2dNb2RhbChDaGFuZ2Vsb2cpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlzdG9yeUljb24gY2xhc3NOYW1lPVwiYmQtaWNvblwiIHNpemU9XCIxNnB4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/sidebarheader.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/history */ \"./src/ui/icons/history.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\nconst SidebarComponents = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.Header && m.Separator && m.Item);\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-sidebar-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(SidebarComponents.Header, null, \"BandagedBD\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"Changelog\"\n }, props => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-changelog-button\",\n onClick: () => _modals__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showChangelogModal(data__WEBPACK_IMPORTED_MODULE_0__[\"Changelog\"])\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_icons_history__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-icon\",\n size: \"16px\"\n }))));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3NpZGViYXJoZWFkZXIuanN4P2E5NWEiXSwibmFtZXMiOlsiU2lkZWJhckNvbXBvbmVudHMiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZSIsIm0iLCJIZWFkZXIiLCJTZXBhcmF0b3IiLCJJdGVtIiwiVG9vbHRpcCIsImdldEJ5RGlzcGxheU5hbWUiLCJTZXR0aW5nc1RpdGxlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwicmVuZGVyIiwiTW9kYWxzIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsaUJBQWlCLEdBQUdDLHNEQUFjLENBQUNDLFNBQWYsQ0FBeUJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxNQUFGLElBQVlELENBQUMsQ0FBQ0UsU0FBZCxJQUEyQkYsQ0FBQyxDQUFDRyxJQUEzRCxDQUExQjtBQUNBLE1BQU1DLE9BQU8sR0FBR04sc0RBQWMsQ0FBQ08sZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxNQUFNQyxhQUFOLFNBQTRCQyw2Q0FBSyxDQUFDQyxTQUFsQyxDQUE0QztBQUN2REMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0ssNERBQUMsaUJBQUQsQ0FBbUIsTUFBbkIscUJBREwsZUFFSyw0REFBQyxPQUFEO0FBQVMsV0FBSyxFQUFDLE9BQWY7QUFBdUIsY0FBUSxFQUFDLEtBQWhDO0FBQXNDLFVBQUksRUFBQztBQUEzQyxPQUNLRCxLQUFLLGlCQUNGLGdGQUFTQSxLQUFUO0FBQWdCLGVBQVMsRUFBQyxxQkFBMUI7QUFBZ0QsYUFBTyxFQUFFLE1BQU1FLCtDQUFNLENBQUNDLGtCQUFQLENBQTBCQyw4Q0FBMUI7QUFBL0QscUJBQ0ksNERBQUMsc0RBQUQ7QUFBYSxlQUFTLEVBQUMsU0FBdkI7QUFBaUMsVUFBSSxFQUFDO0FBQXRDLE1BREosQ0FGUixDQUZMLENBQVA7QUFVSDs7QUFoQnNEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL3NpZGViYXJoZWFkZXIuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2Vsb2d9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCB7UmVhY3QsIFdlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgSGlzdG9yeUljb24gZnJvbSBcIi4uL2ljb25zL2hpc3RvcnlcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vbW9kYWxzXCI7XHJcblxyXG5jb25zdCBTaWRlYmFyQ29tcG9uZW50cyA9IFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShtID0+IG0uSGVhZGVyICYmIG0uU2VwYXJhdG9yICYmIG0uSXRlbSk7XHJcbmNvbnN0IFRvb2x0aXAgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVG9vbHRpcFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdzVGl0bGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImJkLXNpZGViYXItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFNpZGViYXJDb21wb25lbnRzLkhlYWRlcj5CYW5kYWdlZEJEPC9TaWRlYmFyQ29tcG9uZW50cy5IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgY29sb3I9XCJibGFja1wiIHBvc2l0aW9uPVwidG9wXCIgdGV4dD1cIkNoYW5nZWxvZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMgPT4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm9wc30gY2xhc3NOYW1lPVwiYmQtY2hhbmdlbG9nLWJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IE1vZGFscy5zaG93Q2hhbmdlbG9nTW9kYWwoQ2hhbmdlbG9nKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpc3RvcnlJY29uIGNsYXNzTmFtZT1cImJkLWljb25cIiBzaXplPVwiMTZweFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/sidebarheader.jsx\n"); /***/ }), @@ -1091,7 +1103,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst className = \"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7\";\nconst className2 = \"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8\";\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n } //h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20\n\n\n render() {\n const baseClass = this.props.isGroup ? className2 : className;\n const titleClass = this.props.className ? `${baseClass} ${this.props.className}` : baseClass;\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h2\", {\n className: titleClass,\n onClick: () => {\n this.props.onClick && this.props.onClick();\n }\n }, this.props.text, this.props.button && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n className: \"bd-button bd-button-title\",\n onClick: this.props.button.onClick\n }, this.props.button.title), this.props.otherChildren);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3RpdGxlLmpzeD9iNTliIl0sIm5hbWVzIjpbImNsYXNzTmFtZSIsImNsYXNzTmFtZTIiLCJTZXR0aW5nc1RpdGxlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwicmVuZGVyIiwiYmFzZUNsYXNzIiwiaXNHcm91cCIsInRpdGxlQ2xhc3MiLCJvbkNsaWNrIiwidGV4dCIsImJ1dHRvbiIsInRpdGxlIiwib3RoZXJDaGlsZHJlbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQSxNQUFNQSxTQUFTLEdBQUcsK0pBQWxCO0FBQ0EsTUFBTUMsVUFBVSxHQUFHLG1QQUFuQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLDZDQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBQ3ZEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDSCxHQUhzRCxDQUkzRDs7O0FBQ0lDLFFBQU0sR0FBRztBQUNMLFVBQU1DLFNBQVMsR0FBRyxLQUFLRixLQUFMLENBQVdHLE9BQVgsR0FBcUJSLFVBQXJCLEdBQWtDRCxTQUFwRDtBQUNBLFVBQU1VLFVBQVUsR0FBRyxLQUFLSixLQUFMLENBQVdOLFNBQVgsR0FBd0IsR0FBRVEsU0FBVSxJQUFHLEtBQUtGLEtBQUwsQ0FBV04sU0FBVSxFQUE1RCxHQUFnRVEsU0FBbkY7QUFDQSxXQUFPO0FBQUksZUFBUyxFQUFFRSxVQUFmO0FBQTJCLGFBQU8sRUFBRSxNQUFNO0FBQUMsYUFBS0osS0FBTCxDQUFXSyxPQUFYLElBQXNCLEtBQUtMLEtBQUwsQ0FBV0ssT0FBWCxFQUF0QjtBQUE0QztBQUF2RixPQUNFLEtBQUtMLEtBQUwsQ0FBV00sSUFEYixFQUVFLEtBQUtOLEtBQUwsQ0FBV08sTUFBWCxJQUFxQjtBQUFRLGVBQVMsRUFBQywyQkFBbEI7QUFBOEMsYUFBTyxFQUFFLEtBQUtQLEtBQUwsQ0FBV08sTUFBWCxDQUFrQkY7QUFBekUsT0FBbUYsS0FBS0wsS0FBTCxDQUFXTyxNQUFYLENBQWtCQyxLQUFyRyxDQUZ2QixFQUdFLEtBQUtSLEtBQUwsQ0FBV1MsYUFIYixDQUFQO0FBS0g7O0FBYnNEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL3RpdGxlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCBjbGFzc05hbWUgPSBcImJkLXNldHRpbmdzLXRpdGxlIGgyLTJnV0UtbyB0aXRsZS0zc1pXWVEgc2l6ZTE2LTE0Y0d6NSBoZWlnaHQyMC1tTzJlSU4gd2VpZ2h0U2VtaUJvbGQtTkpleHppIGRlZmF1bHRDb2xvci0xX2FqWDAgZGVmYXVsdE1hcmdpbmgyLTJMVGFVTCBtYXJnaW5Cb3R0b20yMC0zMnFJRDdcIjtcclxuY29uc3QgY2xhc3NOYW1lMiA9IFwiYmQtc2V0dGluZ3MtdGl0bGUgYmQtc2V0dGluZ3MtZ3JvdXAtdGl0bGUgaDUtMThfMW5kIHRpdGxlLTNzWldZUSBzaXplMTItM1IwODQ1IGhlaWdodDE2LTJMdjNxQSB3ZWlnaHRTZW1pQm9sZC1OSmV4emkgZGEtaDUgZGEtdGl0bGUgZGEtc2l6ZTEyIGRhLWhlaWdodDE2IGRhLXdlaWdodFNlbWlCb2xkIG1hcmdpbkJvdHRvbTQtMnFrNEh5IGRhLW1hcmdpbkJvdHRvbTQgbWFyZ2luVG9wOC0xRExaMW4gZGEtbWFyZ2luVG9wOFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ3NUaXRsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgIH1cclxuLy9oMi0yZ1dFLW8gdGl0bGUtM3NaV1lRIHNpemUxNi0xNGNHejUgaGVpZ2h0MjAtbU8yZUlOIHdlaWdodFNlbWlCb2xkLU5KZXh6aSBkYS1oMiBkYS10aXRsZSBkYS1zaXplMTYgZGEtaGVpZ2h0MjAgZGEtd2VpZ2h0U2VtaUJvbGQgZGVmYXVsdENvbG9yLTFfYWpYMCBkYS1kZWZhdWx0Q29sb3IgbWFyZ2luVG9wNjAtM1BHYnRLIGRhLW1hcmdpblRvcDYwIG1hcmdpbkJvdHRvbTIwLTMycUlENyBkYS1tYXJnaW5Cb3R0b20yMFxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzcyA9IHRoaXMucHJvcHMuaXNHcm91cCA/IGNsYXNzTmFtZTIgOiBjbGFzc05hbWU7XHJcbiAgICAgICAgY29uc3QgdGl0bGVDbGFzcyA9IHRoaXMucHJvcHMuY2xhc3NOYW1lID8gYCR7YmFzZUNsYXNzfSAke3RoaXMucHJvcHMuY2xhc3NOYW1lfWAgOiBiYXNlQ2xhc3M7XHJcbiAgICAgICAgcmV0dXJuIDxoMiBjbGFzc05hbWU9e3RpdGxlQ2xhc3N9IG9uQ2xpY2s9eygpID0+IHt0aGlzLnByb3BzLm9uQ2xpY2sgJiYgdGhpcy5wcm9wcy5vbkNsaWNrKCk7fX0+XHJcbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy50ZXh0fVxyXG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYnV0dG9uICYmIDxidXR0b24gY2xhc3NOYW1lPVwiYmQtYnV0dG9uIGJkLWJ1dHRvbi10aXRsZVwiIG9uQ2xpY2s9e3RoaXMucHJvcHMuYnV0dG9uLm9uQ2xpY2t9Pnt0aGlzLnByb3BzLmJ1dHRvbi50aXRsZX08L2J1dHRvbj59XHJcbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5vdGhlckNoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgPC9oMj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/title.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst className = \"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7\";\nconst className2 = \"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8\";\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n } //h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20\n\n\n render() {\n const baseClass = this.props.isGroup ? className2 : className;\n const titleClass = this.props.className ? `${baseClass} ${this.props.className}` : baseClass;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h2\", {\n className: titleClass,\n onClick: () => {\n this.props.onClick && this.props.onClick();\n }\n }, this.props.text, this.props.button && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n className: \"bd-button bd-button-title\",\n onClick: this.props.button.onClick\n }, this.props.button.title), this.props.otherChildren);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3RpdGxlLmpzeD9iNTliIl0sIm5hbWVzIjpbImNsYXNzTmFtZSIsImNsYXNzTmFtZTIiLCJTZXR0aW5nc1RpdGxlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwicmVuZGVyIiwiYmFzZUNsYXNzIiwiaXNHcm91cCIsInRpdGxlQ2xhc3MiLCJvbkNsaWNrIiwidGV4dCIsImJ1dHRvbiIsInRpdGxlIiwib3RoZXJDaGlsZHJlbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQSxNQUFNQSxTQUFTLEdBQUcsK0pBQWxCO0FBQ0EsTUFBTUMsVUFBVSxHQUFHLG1QQUFuQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLDZDQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBQ3ZEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDSCxHQUhzRCxDQUkzRDs7O0FBQ0lDLFFBQU0sR0FBRztBQUNMLFVBQU1DLFNBQVMsR0FBRyxLQUFLRixLQUFMLENBQVdHLE9BQVgsR0FBcUJSLFVBQXJCLEdBQWtDRCxTQUFwRDtBQUNBLFVBQU1VLFVBQVUsR0FBRyxLQUFLSixLQUFMLENBQVdOLFNBQVgsR0FBd0IsR0FBRVEsU0FBVSxJQUFHLEtBQUtGLEtBQUwsQ0FBV04sU0FBVSxFQUE1RCxHQUFnRVEsU0FBbkY7QUFDQSx3QkFBTztBQUFJLGVBQVMsRUFBRUUsVUFBZjtBQUEyQixhQUFPLEVBQUUsTUFBTTtBQUFDLGFBQUtKLEtBQUwsQ0FBV0ssT0FBWCxJQUFzQixLQUFLTCxLQUFMLENBQVdLLE9BQVgsRUFBdEI7QUFBNEM7QUFBdkYsT0FDRSxLQUFLTCxLQUFMLENBQVdNLElBRGIsRUFFRSxLQUFLTixLQUFMLENBQVdPLE1BQVgsaUJBQXFCO0FBQVEsZUFBUyxFQUFDLDJCQUFsQjtBQUE4QyxhQUFPLEVBQUUsS0FBS1AsS0FBTCxDQUFXTyxNQUFYLENBQWtCRjtBQUF6RSxPQUFtRixLQUFLTCxLQUFMLENBQVdPLE1BQVgsQ0FBa0JDLEtBQXJHLENBRnZCLEVBR0UsS0FBS1IsS0FBTCxDQUFXUyxhQUhiLENBQVA7QUFLSDs7QUFic0QiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvdGl0bGUuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGNsYXNzTmFtZSA9IFwiYmQtc2V0dGluZ3MtdGl0bGUgaDItMmdXRS1vIHRpdGxlLTNzWldZUSBzaXplMTYtMTRjR3o1IGhlaWdodDIwLW1PMmVJTiB3ZWlnaHRTZW1pQm9sZC1OSmV4emkgZGVmYXVsdENvbG9yLTFfYWpYMCBkZWZhdWx0TWFyZ2luaDItMkxUYVVMIG1hcmdpbkJvdHRvbTIwLTMycUlEN1wiO1xyXG5jb25zdCBjbGFzc05hbWUyID0gXCJiZC1zZXR0aW5ncy10aXRsZSBiZC1zZXR0aW5ncy1ncm91cC10aXRsZSBoNS0xOF8xbmQgdGl0bGUtM3NaV1lRIHNpemUxMi0zUjA4NDUgaGVpZ2h0MTYtMkx2M3FBIHdlaWdodFNlbWlCb2xkLU5KZXh6aSBkYS1oNSBkYS10aXRsZSBkYS1zaXplMTIgZGEtaGVpZ2h0MTYgZGEtd2VpZ2h0U2VtaUJvbGQgbWFyZ2luQm90dG9tNC0ycWs0SHkgZGEtbWFyZ2luQm90dG9tNCBtYXJnaW5Ub3A4LTFETFoxbiBkYS1tYXJnaW5Ub3A4XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5nc1RpdGxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgfVxyXG4vL2gyLTJnV0UtbyB0aXRsZS0zc1pXWVEgc2l6ZTE2LTE0Y0d6NSBoZWlnaHQyMC1tTzJlSU4gd2VpZ2h0U2VtaUJvbGQtTkpleHppIGRhLWgyIGRhLXRpdGxlIGRhLXNpemUxNiBkYS1oZWlnaHQyMCBkYS13ZWlnaHRTZW1pQm9sZCBkZWZhdWx0Q29sb3ItMV9halgwIGRhLWRlZmF1bHRDb2xvciBtYXJnaW5Ub3A2MC0zUEdidEsgZGEtbWFyZ2luVG9wNjAgbWFyZ2luQm90dG9tMjAtMzJxSUQ3IGRhLW1hcmdpbkJvdHRvbTIwXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZUNsYXNzID0gdGhpcy5wcm9wcy5pc0dyb3VwID8gY2xhc3NOYW1lMiA6IGNsYXNzTmFtZTtcclxuICAgICAgICBjb25zdCB0aXRsZUNsYXNzID0gdGhpcy5wcm9wcy5jbGFzc05hbWUgPyBgJHtiYXNlQ2xhc3N9ICR7dGhpcy5wcm9wcy5jbGFzc05hbWV9YCA6IGJhc2VDbGFzcztcclxuICAgICAgICByZXR1cm4gPGgyIGNsYXNzTmFtZT17dGl0bGVDbGFzc30gb25DbGljaz17KCkgPT4ge3RoaXMucHJvcHMub25DbGljayAmJiB0aGlzLnByb3BzLm9uQ2xpY2soKTt9fT5cclxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnRleHR9XHJcbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5idXR0b24gJiYgPGJ1dHRvbiBjbGFzc05hbWU9XCJiZC1idXR0b24gYmQtYnV0dG9uLXRpdGxlXCIgb25DbGljaz17dGhpcy5wcm9wcy5idXR0b24ub25DbGlja30+e3RoaXMucHJvcHMuYnV0dG9uLnRpdGxlfTwvYnV0dG9uPn1cclxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLm90aGVyQ2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgICA8L2gyPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/title.jsx\n"); /***/ }), @@ -1103,7 +1115,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Toasts; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst channelsClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"sidebar\", \"hasNotice\").sidebar.split(\" \")[0];\nconst membersWrapClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"membersWrap\").membersWrap.split(\" \")[0];\nclass Toasts {\n static get shouldShowToasts() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"general\", \"showToasts\");\n }\n /** Shorthand for `type = \"success\"` for {@link module:Toasts.show} */\n\n\n static async success(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"success\"\n }));\n }\n /** Shorthand for `type = \"info\"` for {@link module:Toasts.show} */\n\n\n static async info(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"info\"\n }));\n }\n /** Shorthand for `type = \"warning\"` for {@link module:Toasts.show} */\n\n\n static async warning(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"warning\"\n }));\n }\n /** Shorthand for `type = \"error\"` for {@link module:Toasts.show} */\n\n\n static async error(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"error\"\n }));\n }\n /** Shorthand for `type = \"default\"` for {@link module:Toasts.show} */\n\n\n static async default(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"\"\n }));\n }\n /**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\n static show(content, options = {}) {\n const {\n type = \"\",\n icon = true,\n timeout = 3000,\n forceShow = false\n } = options;\n if (!this.shouldShowToasts && !forceShow) return;\n this.ensureContainer();\n const toastElem = document.createElement(\"div\");\n toastElem.classList.add(\"bd-toast\");\n if (type) toastElem.classList.add(\"toast-\" + type);\n if (type && icon) toastElem.classList.add(\"icon\");\n toastElem.innerText = content;\n document.querySelector(\".bd-toasts\").appendChild(toastElem);\n setTimeout(() => {\n toastElem.classList.add(\"closing\");\n setTimeout(() => {\n toastElem.remove();\n if (!document.querySelectorAll(\".bd-toasts .bd-toast\").length) document.querySelector(\".bd-toasts\").remove();\n }, 300);\n }, timeout);\n }\n\n static ensureContainer() {\n if (document.querySelector(\".bd-toasts\")) return;\n const container = document.querySelector(`.${channelsClass} + div`);\n const memberlist = container.querySelector(`.${membersWrapClass}`);\n const form = container ? container.querySelector(\"form\") : null;\n const left = container ? container.getBoundingClientRect().left : 310;\n const right = memberlist ? memberlist.getBoundingClientRect().left : 0;\n const width = right ? right - container.getBoundingClientRect().left : container.offsetWidth;\n const bottom = form ? form.offsetHeight : 80;\n const toastWrapper = document.createElement(\"div\");\n toastWrapper.classList.add(\"bd-toasts\");\n toastWrapper.style.setProperty(\"left\", left + \"px\");\n toastWrapper.style.setProperty(\"width\", width + \"px\");\n toastWrapper.style.setProperty(\"bottom\", bottom + \"px\");\n document.querySelector(\"#app-mount\").appendChild(toastWrapper);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3RvYXN0cy5qcz9jZmU1Il0sIm5hbWVzIjpbImNoYW5uZWxzQ2xhc3MiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJzaWRlYmFyIiwic3BsaXQiLCJtZW1iZXJzV3JhcENsYXNzIiwibWVtYmVyc1dyYXAiLCJUb2FzdHMiLCJzaG91bGRTaG93VG9hc3RzIiwiU2V0dGluZ3MiLCJnZXQiLCJzdWNjZXNzIiwiY29udGVudCIsIm9wdGlvbnMiLCJzaG93IiwiT2JqZWN0IiwiYXNzaWduIiwidHlwZSIsImluZm8iLCJ3YXJuaW5nIiwiZXJyb3IiLCJkZWZhdWx0IiwiaWNvbiIsInRpbWVvdXQiLCJmb3JjZVNob3ciLCJlbnN1cmVDb250YWluZXIiLCJ0b2FzdEVsZW0iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJpbm5lclRleHQiLCJxdWVyeVNlbGVjdG9yIiwiYXBwZW5kQ2hpbGQiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImNvbnRhaW5lciIsIm1lbWJlcmxpc3QiLCJmb3JtIiwibGVmdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJpZ2h0Iiwid2lkdGgiLCJvZmZzZXRXaWR0aCIsImJvdHRvbSIsIm9mZnNldEhlaWdodCIsInRvYXN0V3JhcHBlciIsInN0eWxlIiwic2V0UHJvcGVydHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsYUFBYSxHQUFHQyxzREFBYyxDQUFDQyxVQUFmLENBQTBCLFNBQTFCLEVBQXFDLFdBQXJDLEVBQWtEQyxPQUFsRCxDQUEwREMsS0FBMUQsQ0FBZ0UsR0FBaEUsRUFBcUUsQ0FBckUsQ0FBdEI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR0osc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixhQUExQixFQUF5Q0ksV0FBekMsQ0FBcURGLEtBQXJELENBQTJE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QUFHLElBQTlDO0FBQ0FPLGdCQUFZLENBQUNDLEtBQWIsQ0FBbUJDLFdBQW5CLENBQStCLE9BQS9CLEVBQXdDTixLQUFLLEdBQUcsSUFBaEQ7QUFDQUksZ0JBQVksQ0FBQ0MsS0FBYixDQUFtQkMsV0FBbkIsQ0FBK0IsUUFBL0IsRUFBeUNKLE1BQU0sR0FBRyxJQUFsRDtBQUNBbkIsWUFBUSxDQUFDSyxhQUFULENBQXVCLFlBQXZCLEVBQXFDQyxXQUFyQyxDQUFpRGUsWUFBakQ7QUFDSDs7QUEvRHVCIiwiZmlsZSI6Ii4vc3JjL3VpL3RvYXN0cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V2VicGFja01vZHVsZXMsIFNldHRpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3QgY2hhbm5lbHNDbGFzcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJzaWRlYmFyXCIsIFwiaGFzTm90aWNlXCIpLnNpZGViYXIuc3BsaXQoXCIgXCIpWzBdO1xyXG5jb25zdCBtZW1iZXJzV3JhcENsYXNzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIm1lbWJlcnNXcmFwXCIpLm1lbWJlcnNXcmFwLnNwbGl0KFwiIFwiKVswXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRvYXN0cyB7XHJcblxyXG4gICAgc3RhdGljIGdldCBzaG91bGRTaG93VG9hc3RzKCkge3JldHVybiBTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImdlbmVyYWxcIiwgXCJzaG93VG9hc3RzXCIpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwic3VjY2Vzc1wiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBzdWNjZXNzKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJzdWNjZXNzXCJ9KSk7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJpbmZvXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIGluZm8oY29udGVudCwgb3B0aW9ucyA9IHt9KSB7cmV0dXJuIHRoaXMuc2hvdyhjb250ZW50LCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcImluZm9cIn0pKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcIndhcm5pbmdcImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgd2FybmluZyhjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwid2FybmluZ1wifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwiZXJyb3JcImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgZXJyb3IoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7cmV0dXJuIHRoaXMuc2hvdyhjb250ZW50LCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcImVycm9yXCJ9KSk7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJkZWZhdWx0XCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIGRlZmF1bHQoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7cmV0dXJuIHRoaXMuc2hvdyhjb250ZW50LCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcIlwifSkpO31cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgc2hvd3MgYSB0b2FzdCBzaW1pbGFyIHRvIGFuZHJvaWQgdG93YXJkcyB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgVGhlIHN0cmluZyB0byBzaG93IGluIHRoZSB0b2FzdC5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIE9wdGlvbnMgb2JqZWN0LiBPcHRpb25hbCBwYXJhbWV0ZXIuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudHlwZT1cIlwiXSBDaGFuZ2VzIHRoZSB0eXBlIG9mIHRoZSB0b2FzdCBzdHlsaXN0aWNhbGx5IGFuZCBzZW1hbnRpY2FsbHkuIENob2ljZXM6IFwiXCIsIFwiaW5mb1wiLCBcInN1Y2Nlc3NcIiwgXCJkYW5nZXJcIi9cImVycm9yXCIsIFwid2FybmluZ1wiL1wid2FyblwiLiBEZWZhdWx0OiBcIlwiXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmljb249dHJ1ZV0gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpY29uIHNob3VsZCBzaG93IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHR5cGUuIEEgdG9hc3Qgd2l0aG91dCB0eXBlIHdpbGwgYWx3YXlzIGhhdmUgbm8gaWNvbi4gRGVmYXVsdDogdHJ1ZVxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnRpbWVvdXQ9MzAwMF0gQWRqdXN0cyB0aGUgdGltZSAoaW4gbXMpIHRoZSB0b2FzdCBzaG91bGQgYmUgc2hvd24gZm9yIGJlZm9yZSBkaXNhcHBlYXJpbmcgYXV0b21hdGljYWxseS4gRGVmYXVsdDogMzAwMFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVNob3c9ZmFsc2VdIFdoZXRoZXIgdG8gZm9yY2Ugc2hvd2luZyB0aGUgdG9hc3QgYW5kIGlnbm9yZSB0aGUgYmQgc2V0dGluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgc2hvdyhjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICBjb25zdCB7dHlwZSA9IFwiXCIsIGljb24gPSB0cnVlLCB0aW1lb3V0ID0gMzAwMCwgZm9yY2VTaG93ID0gZmFsc2V9ID0gb3B0aW9ucztcclxuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkU2hvd1RvYXN0cyAmJiAhZm9yY2VTaG93KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5lbnN1cmVDb250YWluZXIoKTtcclxuICAgICAgICBjb25zdCB0b2FzdEVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIHRvYXN0RWxlbS5jbGFzc0xpc3QuYWRkKFwiYmQtdG9hc3RcIik7XHJcbiAgICAgICAgaWYgKHR5cGUpIHRvYXN0RWxlbS5jbGFzc0xpc3QuYWRkKFwidG9hc3QtXCIgKyB0eXBlKTtcclxuICAgICAgICBpZiAodHlwZSAmJiBpY29uKSB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcImljb25cIik7XHJcbiAgICAgICAgdG9hc3RFbGVtLmlubmVyVGV4dCA9IGNvbnRlbnQ7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5iZC10b2FzdHNcIikuYXBwZW5kQ2hpbGQodG9hc3RFbGVtKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdG9hc3RFbGVtLmNsYXNzTGlzdC5hZGQoXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRvYXN0RWxlbS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5iZC10b2FzdHMgLmJkLXRvYXN0XCIpLmxlbmd0aCkgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5iZC10b2FzdHNcIikucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIH0sIDMwMCk7XHJcbiAgICAgICAgfSwgdGltZW91dCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGVuc3VyZUNvbnRhaW5lcigpIHtcclxuICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5iZC10b2FzdHNcIikpIHJldHVybjtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHtjaGFubmVsc0NsYXNzfSArIGRpdmApO1xyXG4gICAgICAgIGNvbnN0IG1lbWJlcmxpc3QgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcihgLiR7bWVtYmVyc1dyYXBDbGFzc31gKTtcclxuICAgICAgICBjb25zdCBmb3JtID0gY29udGFpbmVyID8gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCJmb3JtXCIpIDogbnVsbDtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gY29udGFpbmVyID8gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgOiAzMTA7XHJcbiAgICAgICAgY29uc3QgcmlnaHQgPSBtZW1iZXJsaXN0ID8gbWVtYmVybGlzdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IDogMDtcclxuICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0ID8gcmlnaHQgLSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA6IGNvbnRhaW5lci5vZmZzZXRXaWR0aDtcclxuICAgICAgICBjb25zdCBib3R0b20gPSBmb3JtID8gZm9ybS5vZmZzZXRIZWlnaHQgOiA4MDtcclxuICAgICAgICBjb25zdCB0b2FzdFdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIHRvYXN0V3JhcHBlci5jbGFzc0xpc3QuYWRkKFwiYmQtdG9hc3RzXCIpO1xyXG4gICAgICAgIHRvYXN0V3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcImxlZnRcIiwgbGVmdCArIFwicHhcIik7XHJcbiAgICAgICAgdG9hc3RXcmFwcGVyLnN0eWxlLnNldFByb3BlcnR5KFwid2lkdGhcIiwgd2lkdGggKyBcInB4XCIpO1xyXG4gICAgICAgIHRvYXN0V3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcImJvdHRvbVwiLCBib3R0b20gKyBcInB4XCIpO1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwLW1vdW50XCIpLmFwcGVuZENoaWxkKHRvYXN0V3JhcHBlcik7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/toasts.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Toasts; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst channelsClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"sidebar\", \"hasNotice\").sidebar.split(\" \")[0];\nconst membersWrapClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"membersWrap\").membersWrap.split(\" \")[0];\nclass Toasts {\n static get shouldShowToasts() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"general\", \"showToasts\");\n }\n /** Shorthand for `type = \"success\"` for {@link module:Toasts.show} */\n\n\n static async success(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"success\"\n }));\n }\n /** Shorthand for `type = \"info\"` for {@link module:Toasts.show} */\n\n\n static async info(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"info\"\n }));\n }\n /** Shorthand for `type = \"warning\"` for {@link module:Toasts.show} */\n\n\n static async warning(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"warning\"\n }));\n }\n /** Shorthand for `type = \"error\"` for {@link module:Toasts.show} */\n\n\n static async error(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"error\"\n }));\n }\n /** Shorthand for `type = \"default\"` for {@link module:Toasts.show} */\n\n\n static async default(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"\"\n }));\n }\n /**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\n static show(content, options = {}) {\n const {\n type = \"\",\n icon = true,\n timeout = 3000,\n forceShow = false\n } = options;\n if (!this.shouldShowToasts && !forceShow) return;\n this.ensureContainer();\n const toastElem = document.createElement(\"div\");\n toastElem.classList.add(\"bd-toast\");\n if (type) toastElem.classList.add(\"toast-\" + type);\n if (type && icon) toastElem.classList.add(\"icon\");\n toastElem.innerText = content;\n document.querySelector(\".bd-toasts\").appendChild(toastElem);\n setTimeout(() => {\n toastElem.classList.add(\"closing\");\n setTimeout(() => {\n toastElem.remove();\n if (!document.querySelectorAll(\".bd-toasts .bd-toast\").length) document.querySelector(\".bd-toasts\").remove();\n }, 300);\n }, timeout);\n }\n\n static ensureContainer() {\n if (document.querySelector(\".bd-toasts\")) return;\n const container = document.querySelector(`.${channelsClass} + div`);\n const memberlist = container.querySelector(`.${membersWrapClass}`);\n const form = container ? container.querySelector(\"form\") : null;\n const left = container ? container.getBoundingClientRect().left : 310;\n const right = memberlist ? memberlist.getBoundingClientRect().left : 0;\n const width = right ? right - container.getBoundingClientRect().left : container.offsetWidth;\n const bottom = form ? form.offsetHeight : 80;\n const toastWrapper = document.createElement(\"div\");\n toastWrapper.classList.add(\"bd-toasts\");\n toastWrapper.style.setProperty(\"left\", left + \"px\");\n toastWrapper.style.setProperty(\"width\", width + \"px\");\n toastWrapper.style.setProperty(\"bottom\", bottom + \"px\");\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.appendChild(toastWrapper);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3RvYXN0cy5qcz9jZmU1Il0sIm5hbWVzIjpbImNoYW5uZWxzQ2xhc3MiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJzaWRlYmFyIiwic3BsaXQiLCJtZW1iZXJzV3JhcENsYXNzIiwibWVtYmVyc1dyYXAiLCJUb2FzdHMiLCJzaG91bGRTaG93VG9hc3RzIiwiU2V0dGluZ3MiLCJnZXQiLCJzdWNjZXNzIiwiY29udGVudCIsIm9wdGlvbnMiLCJzaG93IiwiT2JqZWN0IiwiYXNzaWduIiwidHlwZSIsImluZm8iLCJ3YXJuaW5nIiwiZXJyb3IiLCJkZWZhdWx0IiwiaWNvbiIsInRpbWVvdXQiLCJmb3JjZVNob3ciLCJlbnN1cmVDb250YWluZXIiLCJ0b2FzdEVsZW0iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJpbm5lclRleHQiLCJxdWVyeVNlbGVjdG9yIiwiYXBwZW5kQ2hpbGQiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImNvbnRhaW5lciIsIm1lbWJlcmxpc3QiLCJmb3JtIiwibGVmdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJpZ2h0Iiwid2lkdGgiLCJvZmZzZXRXaWR0aCIsImJvdHRvbSIsIm9mZnNldEhlaWdodCIsInRvYXN0V3JhcHBlciIsInN0eWxlIiwic2V0UHJvcGVydHkiLCJET01NYW5hZ2VyIiwiYmRCb2R5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLE1BQU1BLGFBQWEsR0FBR0Msc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixTQUExQixFQUFxQyxXQUFyQyxFQUFrREMsT0FBbEQsQ0FBMERDLEtBQTFELENBQWdFLEdBQWhFLEVBQXFFLENBQXJFLENBQXRCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUdKLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsYUFBMUIsRUFBeUNJLFdB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K0IsTUFBL0IsRUFBdUNULElBQUksR0FBRyxJQUE5QztBQUNBTyxnQkFBWSxDQUFDQyxLQUFiLENBQW1CQyxXQUFuQixDQUErQixPQUEvQixFQUF3Q04sS0FBSyxHQUFHLElBQWhEO0FBQ0FJLGdCQUFZLENBQUNDLEtBQWIsQ0FBbUJDLFdBQW5CLENBQStCLFFBQS9CLEVBQXlDSixNQUFNLEdBQUcsSUFBbEQ7QUFDQUssc0RBQVUsQ0FBQ0MsTUFBWCxDQUFrQm5CLFdBQWxCLENBQThCZSxZQUE5QjtBQUNIOztBQS9EdUIiLCJmaWxlIjoiLi9zcmMvdWkvdG9hc3RzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtXZWJwYWNrTW9kdWxlcywgU2V0dGluZ3MsIERPTU1hbmFnZXJ9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCBjaGFubmVsc0NsYXNzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNpZGViYXJcIiwgXCJoYXNOb3RpY2VcIikuc2lkZWJhci5zcGxpdChcIiBcIilbMF07XHJcbmNvbnN0IG1lbWJlcnNXcmFwQ2xhc3MgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwibWVtYmVyc1dyYXBcIikubWVtYmVyc1dyYXAuc3BsaXQoXCIgXCIpWzBdO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9hc3RzIHtcclxuXHJcbiAgICBzdGF0aWMgZ2V0IHNob3VsZFNob3dUb2FzdHMoKSB7cmV0dXJuIFNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiZ2VuZXJhbFwiLCBcInNob3dUb2FzdHNcIik7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJzdWNjZXNzXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIHN1Y2Nlc3MoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7cmV0dXJuIHRoaXMuc2hvdyhjb250ZW50LCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcInN1Y2Nlc3NcIn0pKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcImluZm9cImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgaW5mbyhjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiaW5mb1wifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwid2FybmluZ1wiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyB3YXJuaW5nKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJ3YXJuaW5nXCJ9KSk7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJlcnJvclwiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBlcnJvcihjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiZXJyb3JcIn0pKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcImRlZmF1bHRcImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgZGVmYXVsdChjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiXCJ9KSk7fVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBzaG93cyBhIHRvYXN0IHNpbWlsYXIgdG8gYW5kcm9pZCB0b3dhcmRzIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCBUaGUgc3RyaW5nIHRvIHNob3cgaW4gdGhlIHRvYXN0LlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgT3B0aW9ucyBvYmplY3QuIE9wdGlvbmFsIHBhcmFtZXRlci5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50eXBlPVwiXCJdIENoYW5nZXMgdGhlIHR5cGUgb2YgdGhlIHRvYXN0IHN0eWxpc3RpY2FsbHkgYW5kIHNlbWFudGljYWxseS4gQ2hvaWNlczogXCJcIiwgXCJpbmZvXCIsIFwic3VjY2Vzc1wiLCBcImRhbmdlclwiL1wiZXJyb3JcIiwgXCJ3YXJuaW5nXCIvXCJ3YXJuXCIuIERlZmF1bHQ6IFwiXCJcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWNvbj10cnVlXSBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGljb24gc2hvdWxkIHNob3cgY29ycmVzcG9uZGluZyB0byB0aGUgdHlwZS4gQSB0b2FzdCB3aXRob3V0IHR5cGUgd2lsbCBhbHdheXMgaGF2ZSBubyBpY29uLiBEZWZhdWx0OiB0cnVlXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMudGltZW91dD0zMDAwXSBBZGp1c3RzIHRoZSB0aW1lIChpbiBtcykgdGhlIHRvYXN0IHNob3VsZCBiZSBzaG93biBmb3IgYmVmb3JlIGRpc2FwcGVhcmluZyBhdXRvbWF0aWNhbGx5LiBEZWZhdWx0OiAzMDAwXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlU2hvdz1mYWxzZV0gV2hldGhlciB0byBmb3JjZSBzaG93aW5nIHRoZSB0b2FzdCBhbmQgaWdub3JlIHRoZSBiZCBzZXR0aW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBzaG93KGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IHt0eXBlID0gXCJcIiwgaWNvbiA9IHRydWUsIHRpbWVvdXQgPSAzMDAwLCBmb3JjZVNob3cgPSBmYWxzZX0gPSBvcHRpb25zO1xyXG4gICAgICAgIGlmICghdGhpcy5zaG91bGRTaG93VG9hc3RzICYmICFmb3JjZVNob3cpIHJldHVybjtcclxuICAgICAgICB0aGlzLmVuc3VyZUNvbnRhaW5lcigpO1xyXG4gICAgICAgIGNvbnN0IHRvYXN0RWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgdG9hc3RFbGVtLmNsYXNzTGlzdC5hZGQoXCJiZC10b2FzdFwiKTtcclxuICAgICAgICBpZiAodHlwZSkgdG9hc3RFbGVtLmNsYXNzTGlzdC5hZGQoXCJ0b2FzdC1cIiArIHR5cGUpO1xyXG4gICAgICAgIGlmICh0eXBlICYmIGljb24pIHRvYXN0RWxlbS5jbGFzc0xpc3QuYWRkKFwiaWNvblwiKTtcclxuICAgICAgICB0b2FzdEVsZW0uaW5uZXJUZXh0ID0gY29udGVudDtcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmJkLXRvYXN0c1wiKS5hcHBlbmRDaGlsZCh0b2FzdEVsZW0pO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdG9hc3RFbGVtLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmJkLXRvYXN0cyAuYmQtdG9hc3RcIikubGVuZ3RoKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmJkLXRvYXN0c1wiKS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgfSwgMzAwKTtcclxuICAgICAgICB9LCB0aW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZW5zdXJlQ29udGFpbmVyKCkge1xyXG4gICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmJkLXRvYXN0c1wiKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke2NoYW5uZWxzQ2xhc3N9ICsgZGl2YCk7XHJcbiAgICAgICAgY29uc3QgbWVtYmVybGlzdCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAuJHttZW1iZXJzV3JhcENsYXNzfWApO1xyXG4gICAgICAgIGNvbnN0IGZvcm0gPSBjb250YWluZXIgPyBjb250YWluZXIucXVlcnlTZWxlY3RvcihcImZvcm1cIikgOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBjb250YWluZXIgPyBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA6IDMxMDtcclxuICAgICAgICBjb25zdCByaWdodCA9IG1lbWJlcmxpc3QgPyBtZW1iZXJsaXN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgOiAwO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgPyByaWdodCAtIGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IDogY29udGFpbmVyLm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IGZvcm0gPyBmb3JtLm9mZnNldEhlaWdodCA6IDgwO1xyXG4gICAgICAgIGNvbnN0IHRvYXN0V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgdG9hc3RXcmFwcGVyLmNsYXNzTGlzdC5hZGQoXCJiZC10b2FzdHNcIik7XHJcbiAgICAgICAgdG9hc3RXcmFwcGVyLnN0eWxlLnNldFByb3BlcnR5KFwibGVmdFwiLCBsZWZ0ICsgXCJweFwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCB3aWR0aCArIFwicHhcIik7XHJcbiAgICAgICAgdG9hc3RXcmFwcGVyLnN0eWxlLnNldFByb3BlcnR5KFwiYm90dG9tXCIsIGJvdHRvbSArIFwicHhcIik7XHJcbiAgICAgICAgRE9NTWFuYWdlci5iZEJvZHkuYXBwZW5kQ2hpbGQodG9hc3RXcmFwcGVyKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/toasts.js\n"); /***/ }), diff --git a/js/main.min.js b/js/main.min.js index db2c8dcf..f999b800 100644 --- a/js/main.min.js +++ b/js/main.min.js @@ -1 +1 @@ -var Core=function(e){var t={};function s(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.l=!0,i.exports}return s.m=e,s.c=t,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)s.d(n,i,function(t){return e[t]}.bind(null,i));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=9)}([function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")},function(e,t){e.exports=require("request")},function(e,t){e.exports=require("module")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("rimraf")},function(e,t){e.exports=require("yauzl")},function(e,t){e.exports=require("mkdirp")},function(e,t,s){"use strict";s.r(t);var n={};s.r(n),s.d(n,"CustomCSS",(function(){return at})),s.d(n,"WindowPrefs",(function(){return lt})),s.d(n,"TwentyFourHour",(function(){return dt})),s.d(n,"ClassNormalizer",(function(){return ht})),s.d(n,"PublicServers",(function(){return Ct})),s.d(n,"VoiceDisconnect",(function(){return St})),s.d(n,"ColoredText",(function(){return Pt})),s.d(n,"DarkMode",(function(){return xt})),s.d(n,"MinimalMode",(function(){return kt})),s.d(n,"VoiceMode",(function(){return At})),s.d(n,"EmoteModule",(function(){return Ot})),s.d(n,"EmoteMenu",(function(){return zt})),s.d(n,"CopySelector",(function(){return Rt})),s.d(n,"Debugger",(function(){return $t})),s.d(n,"ReactDevTools",(function(){return Gt}));var i={Panels:{plugins:"Plugins",themes:"Themes",customcss:"Custom CSS"},Collections:{settings:{name:"Settings",general:{name:"General",emotes:{name:"Emote System",note:"Enables BD's emote system"},publicServers:{name:"Public Servers",note:"Display public servers button"},voiceDisconnect:{name:"Voice Disconnect",note:"Disconnect from voice server when closing Discord"},twentyFourHour:{name:"24-Hour Timestamps",note:"Hides channels when in minimal mode"},classNormalizer:{name:"Normalize Classes",note:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)"},showToasts:{name:"Show Toasts",note:"Shows a small notification for important information"}},appearance:{name:"Appearance",voiceMode:{name:"Voice Mode",note:"Hides everything that isn't voice chat"},minimalMode:{name:"Minimal Mode",note:"Hide elements and reduce the size of elements"},hideChannels:{name:"Hide Channels",note:"Hides channels when in minimal mode"},darkMode:{name:"Dark Mode",note:"Make certain elements dark by default"},coloredText:{name:"Colored Text",note:"Make text colour the same as role color"}},addons:{name:"Addon Manager",addonErrors:{name:"Show Addon Errors",note:"Shows a modal with plugin/theme errors"},autoScroll:{name:"Scroll To Settings",note:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)"},autoReload:{name:"Automatic Loading",note:"Automatically loads, reloads, and unloads plugins and themes"},editAction:{name:"Edit Action",note:"Where plugins & themes appear when editing",options:{detached:"Detached Window",system:"System Editor"}}},customcss:{name:"Custom CSS",customcss:{name:"Custom CSS",note:"Enables the Custom CSS tab"},liveUpdate:{name:"Live Update",note:"Updates the css as you type"},startDetached:{name:"Start Detached",note:"Clicking the Custom CSS tab opens the editor in a separate window"},nativeOpen:{name:"Open in Native Editor",note:"Clicking the Custom CSS tab opens your custom css in your native editor"},openAction:{name:"Editor Location",note:"Where Custom CSS should open by default",options:{settings:"Settings Menu",detached:"Detached Window",system:"System Editor"}}},developer:{name:"Developer Settings",debuggerHotkey:{name:"Debugger Hotkey",note:"Allows activating debugger when pressing F8"},copySelector:{name:"Copy Selector",note:'Adds a "Copy Selector" option to context menus when developer mode is active'},reactDevTools:{name:"React Developer Tools",note:"Injects your local installation of React Developer Tools into Discord"}},window:{name:"Window Preferences",transparency:{name:"Enable Transparency",note:"Enables the main window to be see-through (requires restart)"},frame:{name:"Window Frame",note:"Adds the native os window frame to the main window"}}},emotes:{name:"Emotes",general:{name:"General",download:{name:"Download Emotes",note:"Download emotes whenever they are out of date"},emoteMenu:{name:"Emote Menu",note:"Show Twitch/Favourite emotes in emote menu"},hideEmojiMenu:{name:"Hide Emoji Menu",note:"Hides Discord's emoji menu when using emote menu"},autoCaps:{name:"Emote Autocapitalization",note:"Autocapitalize emote commands"},showNames:{name:"Show Names",note:"Show emote names on hover"},modifiers:{name:"Show Emote Modifiers",note:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)"},animateOnHover:{name:"Animate On Hover",note:"Only animate the emote modifiers on hover"}},categories:{name:"Categories",twitchglobal:{name:"Twitch Globals",note:"Show Twitch global emotes"},twitchsubscriber:{name:"Twitch Subscribers",note:"Show Twitch subscriber emotes"},frankerfacez:{name:"FrankerFaceZ",note:"Show emotes from FFZ"},bttv:{name:"BetterTTV",note:"Show emotes from BTTV"}}}},Addons:{title:"{{name}} v{{version}} by {{author}}",openFolder:"Open {{type}} Folder",reload:"Reload",addonSettings:"Settings",website:"Website",source:"Source",invite:"Support Server",donate:"Donate",patreon:"Patreon",name:"Name",author:"Author",version:"Version",added:"Date Added",modified:"Date Modified",search:"Search {{type}}",editAddon:"Edit",deleteAddon:"Delete",confirmDelete:"Are you sure you want to delete {{name}}?",confirmationText:"You have unsaved changes to {{name}}. Closing this window will lose all those changes."},Emotes:{loading:"Loading emotes in the background do not reload.",loaded:"All emotes successfully loaded.",clearEmotes:"Clear Emote Data",favoriteAction:"Favorite!"},CustomCSS:{confirmationText:"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.",update:"Update",save:"Save",openNative:"Open in System Editor",openDetached:"Detach Window",settings:"Editor Settings",editorTitle:"Custom CSS Editor"},PublicServers:{button:"public",join:"Join",joining:"Joining",joined:"Joined",loading:"Loading",loadMore:"Load More",notConnected:"Not connected to DiscordServers.com!",search:"Search",connect:"Connect",reconnect:"Reconnect",categories:"Categories",connection:"Connected as: {{username}}#{{discriminator}}",results:"Showing {{start}}-{{end}} of {{total}} results in {{category}}",query:"for {{query}}"},Modals:{confirmAction:"Are You Sure?",okay:"Okay",cancel:"Cancel",close:"Close",name:"Name",message:"Message",error:"Error",addonErrors:"Addon Errors",restartRequired:"Restart Required",restartNow:"Restart Now",restartLater:"Restart Later",additionalInfo:"Additional Info"},Sorting:{sortBy:"Sort By",order:"Order",ascending:"Ascending",descending:"Descending"},WindowPrefs:{enabledInfo:"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\n\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?",disabledInfo:"In order to take effect, Discord needs to be restarted. Do you want to restart now?"},Startup:{notSupported:"Not Supported",versionMismatch:"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\n\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",incompatibleApp:"BandagedBD does not work with {{app}}. Please uninstall one of them.",updateNow:"Update Now",maybeLater:"Maybe Later",updateAvailable:"Update Available",updateInfo:"There is an update available for BandagedBD's Injector ({{version}}).\n\nYou can either update and restart now, or later.",updateFailed:"Could Not Update",manualUpdate:"Unable to update automatically, please download the installer and reinstall normally.\n\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)"}},o={local:!1,localServer:"//localhost:8080",minified:!0,version:"0.3.0",branch:"master",repo:"rauenzi",minSupportedVersion:"0.3.0",bbdVersion:"1.0.0"},r=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"download",value:!0},{type:"switch",id:"emoteMenu",value:!0},{type:"switch",id:"hideEmojiMenu",value:!1,enableWith:"emoteMenu"},{type:"switch",id:"showNames",value:!0},{type:"switch",id:"modifiers",value:!0},{type:"switch",id:"animateOnHover",value:!1}]},{type:"category",id:"categories",name:"Categories",collapsible:!0,settings:[{type:"switch",id:"twitchglobal",value:!0},{type:"switch",id:"twitchsubscriber",value:!1},{type:"switch",id:"frankerfacez",value:!0},{type:"switch",id:"bttv",value:!0}]}],a=[{type:"category",id:"general",collapsible:!0,settings:[{type:"switch",id:"emotes",value:!0},{type:"switch",id:"publicServers",value:!0},{type:"switch",id:"voiceDisconnect",value:!1},{type:"switch",id:"twentyFourHour",value:!1},{type:"switch",id:"classNormalizer",value:!0},{type:"switch",id:"showToasts",value:!0}]},{type:"category",id:"appearance",collapsible:!0,settings:[{type:"switch",id:"voiceMode",value:!1},{type:"switch",id:"minimalMode",value:!1},{type:"switch",id:"hideChannels",value:!1,enableWith:"minimalMode"},{type:"switch",id:"darkMode",value:!0},{type:"switch",id:"coloredText",value:!1}]},{type:"category",id:"addons",collapsible:!0,shown:!1,settings:[{type:"switch",id:"addonErrors",value:!0},{type:"switch",id:"autoScroll",value:!0},{type:"switch",id:"autoReload",value:!0},{type:"dropdown",id:"editAction",value:"detached",options:[{value:"detached"},{value:"system"}]}]},{type:"category",id:"customcss",collapsible:!0,shown:!1,settings:[{type:"switch",id:"customcss",value:!0},{type:"switch",id:"liveUpdate",value:!1},{type:"dropdown",id:"openAction",value:"settings",options:[{value:"settings"},{value:"detached"},{value:"system"}]}]},{type:"category",id:"developer",collapsible:!0,shown:!1,settings:[{type:"switch",id:"debuggerHotkey",value:!1},{type:"switch",id:"copySelector",value:!1},{type:"switch",id:"reactDevTools",value:!1}]},{type:"category",id:"window",collapsible:!0,shown:!1,settings:[{type:"switch",id:"transparency",value:!1},{type:"switch",id:"frame",value:!1,hidden:!0}]}],l={description:"Don't be shocked, this modal is supposed to be here.",changes:[{title:"What's New?",items:["**BandagedBD will now keep you updated with changelogs!** I will try to only show a changelog when there's more than a tiny or internal change.","**Twitter (@BandagedBD)** I created a Twitter to try and provide support and such for those without access to the server. https://Twitter.com/BandagedBD"]},{title:"Fixes",type:"fixed",items:["**Colored Text** option should work again.","**Emotes** should show up in chat.","Fixed a bug where BBD attempted to patch the TabBar module incorrectly. (Thanks, DevilBro)"]},{title:"Minor Stuff",type:"improved",items:["**Colour->Color.** Swapped to using English-US spelling by default to be consistent, and to potentially be prepared for localization.","**Versions simplified.** The BandagedBD version now integrates into Discord's at the bottom-left of settings instead of randomly being a part of the setting list."]}]};const d={err:"error",error:"error",dbg:"debug",debug:"debug",log:"log",warn:"warn",info:"info"};class c{static stacktrace(e,t,s){console.error(`%c[${e}]%c ${t}\n\n%c`,"color: #3a71c1; font-weight: 700;","color: red; font-weight: 700;","color: red;",s)}static err(e,...t){c._log(e,t,"error")}static warn(e,...t){c._log(e,t,"warn")}static info(e,...t){c._log(e,t,"info")}static debug(e,...t){c._log(e,t,"debug")}static log(e,...t){c._log(e,t)}static _log(e,t,s="log"){s=c.parseType(s),Array.isArray(t)||(t=[t]),console[s](`%c[BandagedBD]%c [${e}]%c`,"color: #3E82E5; font-weight: 700;","color: #3a71c1;","",...t)}static parseType(e){return d.hasOwnProperty(e)?d[e]:"log"}}class h{static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static addStyle(e,t){document.head.append(h.createElement(``))}static removeStyle(e){const t=document.getElementById(e);t&&t.remove()}static addScript(e,t){return new Promise(s=>{const n=document.createElement("script");n.id=e,n.src=t,n.type="text/javascript",n.onload=s,document.head.append(n)})}static removeScript(e){e=this.escapeID(e);const t=document.getElementById(e);t&&t.remove()}static animate({timing:e=(e=>e),update:t,duration:s}){const n=performance.now();requestAnimationFrame((function i(o){let r=(o-n)/s;r>1&&(r=1);const a=e(r);t(a),r<1&&requestAnimationFrame(i)}))}static Q(e){const t=this.parseHTML(e);return(t instanceof NodeList?Array.from(t).some(e=>1===e.nodeType):1===t.nodeType)?t:this.query(e)}static query(e,t){return t||(t=document),t.querySelector(e)}static queryAll(e,t){return t||(t=document),t.querySelectorAll(e)}static parseHTML(e,t=!1){const s=document.createElement("template");s.innerHTML=e;const n=s.content.cloneNode(!0);return t?n:n.childNodes.length>1?n.childNodes:n.childNodes[0]}static createElement(e,t=!1){return this.parseHTML(e,t)}static escapeHTML(e){const t=document.createTextNode(""),s=document.createElement("span");return s.append(t),t.nodeValue=e,s.innerHTML}static addClass(e,...t){t=t.flat().filter(e=>e);for(let e=0;ee),e.classList.add(...t),e}static removeClass(e,...t){for(let e=0;ee),e.classList.remove(...t),e}static toggleClass(e,t,s){return t=t.toString().split(" ").filter(e=>e),void 0!==s?t.forEach(t=>e.classList.toggle(t,s)):t.forEach(t=>e.classList.toggle(t)),e}static hasClass(e,t){return t.toString().split(" ").filter(e=>e).every(t=>e.classList.contains(t))}static replaceClass(e,t,s){return e.classList.replace(t,s),e}static appendTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.append(e),e):null}static prependTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.prepend(e),e):null}static insertAfter(e,t){return t.parentNode.insertBefore(e,t.nextSibling),e}static after(e,t){return e.parentNode.insertBefore(t,e.nextSibling),e}static next(e,t=""){return t?e.querySelector("+ "+t):e.nextElementSibling}static nextAll(e){return e.querySelectorAll("~ *")}static nextUntil(e,t){const s=[];for(;e.nextElementSibling&&!e.nextElementSibling.matches(t);)s.push(e=e.nextElementSibling);return s}static previous(e,t=""){const s=e.previousElementSibling;return t?s&&s.matches(t)?s:null:s}static previousAll(e){const t=[];for(;e.previousElementSibling;)t.push(e=e.previousElementSibling);return t}static previousUntil(e,t){const s=[];for(;e.previousElementSibling&&!e.previousElementSibling.matches(t);)s.push(e=e.previousElementSibling);return s}static indexInParent(e){const t=e.parentNode.childNodes;let s=0;for(let n=0;n "+t)}static findChildren(e,t){return e.querySelectorAll(":scope > "+t)}static parents(e,t=""){const s=[];if(t)for(;e.parentElement&&e.parentElement.closest(t);)s.push(e=e.parentElement.closest(t));else for(;e.parentElement;)s.push(e=e.parentElement);return s}static parentsUntil(e,t){const s=[];for(;e.parentElement&&!e.parentElement.matches(t);)s.push(e=e.parentElement);return s}static siblings(e,t="*"){return Array.from(e.parentElement.children).filter(s=>s!=e&&s.matches(t))}static css(e,t,s){return void 0===s?global.getComputedStyle(e)[t]:(e.style[t]=s,e)}static width(e,t){return void 0===t?parseInt(getComputedStyle(e).width):(e.style.width=t,e)}static height(e,t){return void 0===t?parseInt(getComputedStyle(e).height):(e.style.height=t,e)}static text(e,t){return void 0===t?e.textContent:e.textContent=t}static innerWidth(e){return e.clientWidth}static innerHeight(e){return e.clientHeight}static outerWidth(e){return e.offsetWidth}static outerHeight(e){return e.offsetHeight}static offset(e){return e.getBoundingClientRect()}static get listeners(){return this._listeners||(this._listeners={})}static on(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(e){e.target.matches(s)&&n(e)}:n;e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static once(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(t){t.target.matches(s)&&(n(t),e.removeEventListener(i,a))}:function(t){n(t),e.removeEventListener(i,a)};e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static __offAll(e,t){const[s,n]=e.split(".");let i=e=>e.event==s,o=e=>e;t&&(i=e=>e.event==s&&e.element==t,o=e=>e.element==t);const r=this.listeners[n]||[],a=s?r.filter(i):r.filter(o);for(let e=0;e{this.observer.unsubscribe(n),t()};return this.observer.subscribe(n,t=>{const n=Array.from(s?t.addedNodes:t.removedNodes),i=n.indexOf(e)>-1,o=n.some(t=>t.contains(e));return i||o}),e}static onMount(e,t){return this.onMountChange(e,t)}static onUnmount(e,t){return this.onMountChange(e,t,!1)}static onAdded(e,t){return this.onMount(e,t)}static onRemoved(e,t){return this.onUnmount(e,t,!1)}static wrap(e){const t=this.parseHTML('
');for(let s=0;s1?n.childNodes:n.childNodes[0]}static getTextArea(){return h.query(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static escape(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e)}catch(e){return!1}}static suppressErrors(e,t){return(...s)=>{try{return e(...s)}catch(e){c.stacktrace("SuppressedError","Error occurred in "+t,e)}}}static onRemoved(e,t){const s=new MutationObserver(n=>{for(let i=0;i-1,l=r.some(t=>t.contains(e));(a||l)&&(s.disconnect(),t())}});s.observe(document.body,{subtree:!0,childList:!0})}static isEmpty(e){if(null==e||null==e||""==e)return!0;if("object"!=typeof e)return!1;if(Array.isArray(e))return 0==e.length;for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}static memoizeObject(e){const t=new Proxy(e,{get:function(e,t){if(e.hasOwnProperty(t)){if(Object.getOwnPropertyDescriptor(e,t).get){const s=e[t];delete e[t],e[t]=s}return e[t]}},set:function(e,t,s){return e.hasOwnProperty(t)?c.error("MemoizedObject","Trying to overwrite existing property"):(e[t]=s,e[t])}});return Object.defineProperty(t,"hasOwnProperty",{value:function(e){return void 0!==this[e]}}),t}static extend(e,...t){for(let s=0;se.startsWith("__reactInternalInstance"))]||null}static getOwnerInstance(e,{include:t,exclude:s=["Popout","Tooltip","Scroller","BackgroundFlash"],filter:n=(e=>e)}={}){if(void 0===e)return;const i=void 0===t,o=i?s:t;function r(e){const t=function(e){const t=e.type;return t&&(t.displayName||t.name)||null}(e);return null!==t&&!!(o.includes(t)^i)}let a=this.getReactInstance(e);for(a=a&&a.return;null!==a;a=a.return){if(null===a)continue;const e=a.stateNode;if(null!==a&&!(e instanceof HTMLElement)&&r(a)&&n(e))return e}return null}}class p{static byProperties(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&e.every(e=>void 0!==n[e])}}static byPrototypeFields(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&(!!n.prototype&&e.every(e=>void 0!==n.prototype[e]))}}static byCode(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&-1!==n.toString([]).search(e)}}static byString(...e){return t=>{const s=t.toString([]);for(const t of e)if(!s.includes(t))return!1;return!0}}static byDisplayName(e){return t=>t&&t.displayName===e}static combine(...e){return t=>e.every(e=>e(t))}}const m=e=>{if(e.remove&&e.set&&e.clear&&e.get&&!e.sort)return null;if(!e.getToken&&!e.getEmail&&!e.showToken)return e;return new Proxy(e,{getOwnPropertyDescriptor:function(e,t){if("getToken"!==t&&"getEmail"!==t&&"showToken"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){return"getToken"==t?()=>"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa":"getEmail"==t?()=>"puppet11112@gmail.com":"showToken"==t?()=>!0:e[t]}})};class g{static find(e,t=!0){return this.getModule(e,t)}static findAll(e){return this.getModule(e,!1)}static findByUniqueProperties(e,t=!0){return t?this.getByProps(...e):this.getAllByProps(...e)}static findByDisplayName(e){return this.getByDisplayName(e)}static getModule(e,t=!0){const s=this.getAllModules(),n=[];for(const i in s){if(!s.hasOwnProperty(i))continue;const o=s[i],{exports:r}=o;let a=null;if(r&&(r.__esModule&&r.default&&e(r.default)&&(a=r.default),e(r)&&(a=r),a)){if(t)return m(a);n.push(m(a))}}return t||0==n.length?void 0:n}static getModules(e){return this.getModule(e,!1)}static getByDisplayName(e){return this.getModule(p.byDisplayName(e),!0)}static getByRegex(e,t=!0){return this.getModule(p.byCode(e),t)}static getByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!0)}static getAllByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!1)}static getByProps(...e){return this.getModule(p.byProperties(e),!0)}static getAllByProps(...e){return this.getModule(p.byProperties(e),!1)}static getByString(...e){return this.getModule(p.byString(...e),!0)}static getAllByString(...e){return this.getModule(p.byString(...e),!1)}static get require(){if(this._require)return this._require;const e="bbd-webpackmodules",t="function"==typeof window.webpackJsonp?window.webpackJsonp([],{[e]:(e,t,s)=>t.default=s},[e]).default:window.webpackJsonp.push([[],{[e]:(e,t,s)=>e.exports=s},[[e]]]);return delete t.m[e],delete t.c[e],this._require=t}static getAllModules(){return this.require.c}}var f=u.memoizeObject({get React(){return g.getByProps("createElement","cloneElement")},get ReactDOM(){return g.getByProps("render","findDOMNode")},get Flux(){return g.getByProps("connectStores")},get Events(){return g.getByPrototypes("setMaxListeners","emit")},get GuildStore(){return g.getByProps("getGuild")},get SortedGuildStore(){return g.getByProps("getSortedGuilds")},get SelectedGuildStore(){return g.getByProps("getLastSelectedGuildId")},get GuildSync(){return g.getByProps("getSyncedGuilds")},get GuildInfo(){return g.getByProps("getAcronym")},get GuildChannelsStore(){return g.getByProps("getChannels","getDefaultChannel")},get GuildMemberStore(){return g.getByProps("getMember")},get MemberCountStore(){return g.getByProps("getMemberCounts")},get GuildEmojiStore(){return g.getByProps("getEmojis")},get GuildActions(){return g.getByProps("markGuildAsRead")},get GuildPermissions(){return g.getByProps("getGuildPermissions")},get ChannelStore(){return g.getByProps("getChannels","getDMFromUserId")},get SelectedChannelStore(){return g.getByProps("getLastSelectedChannelId")},get ChannelActions(){return g.getByProps("selectChannel")},get PrivateChannelActions(){return g.getByProps("openPrivateChannel")},get ChannelSelector(){return g.getByProps("selectGuild","selectChannel")},get UserInfoStore(){return g.getByProps("getToken")},get UserSettingsStore(){return g.getByProps("guildPositions")},get AccountManager(){return g.getByProps("register","login")},get UserSettingsUpdater(){return g.getByProps("updateRemoteSettings")},get OnlineWatcher(){return g.getByProps("isOnline")},get CurrentUserIdle(){return g.getByProps("getIdleTime")},get RelationshipStore(){return g.getByProps("isBlocked","getFriendIDs")},get RelationshipManager(){return g.getByProps("addRelationship")},get MentionStore(){return g.getByProps("getMentions")},get UserStore(){return g.getByProps("getCurrentUser")},get UserStatusStore(){return g.getByProps("getStatus","getState")},get UserTypingStore(){return g.getByProps("isTyping")},get UserActivityStore(){return g.getByProps("getActivity")},get UserNameResolver(){return g.getByProps("getName")},get UserNoteStore(){return g.getByProps("getNote")},get UserNoteActions(){return g.getByProps("updateNote")},get EmojiInfo(){return g.getByProps("isEmojiDisabled")},get EmojiUtils(){return g.getByProps("getGuildEmoji")},get EmojiStore(){return g.getByProps("getByCategory","EMOJI_NAME_RE")},get InviteStore(){return g.getByProps("getInvites")},get InviteResolver(){return g.getByProps("findInvite")},get InviteActions(){return g.getByProps("acceptInvite")},get DiscordConstants(){return g.getByProps("Permissions","ActivityTypes","StatusTypes")},get DiscordPermissions(){return g.getByProps("Permissions","ActivityTypes","StatusTypes").Permissions},get PermissionUtils(){return g.getByProps("getHighestRole")},get ColorConverter(){return g.getByProps("hex2int")},get ColorShader(){return g.getByProps("darken")},get TinyColor(){return g.getByPrototypes("toRgb")},get ClassResolver(){return g.getByProps("getClass")},get ButtonData(){return g.getByProps("ButtonSizes")},get IconNames(){return g.getByProps("IconNames")},get NavigationUtils(){return g.getByProps("transitionTo","replaceWith","getHistory")},get MessageStore(){return g.getByProps("getMessages")},get MessageActions(){return g.getByProps("jumpToMessage","_sendMessage")},get MessageQueue(){return g.getByProps("enqueue")},get MessageParser(){return g.getByProps("createMessage","parse","unparse")},get hljs(){return g.getByProps("highlight","highlightBlock")},get SimpleMarkdown(){return g.getByProps("parseBlock","parseInline","defaultOutput")},get ExperimentStore(){return g.getByProps("getExperimentOverrides")},get ExperimentsManager(){return g.getByProps("isDeveloper")},get CurrentExperiment(){return g.getByProps("getExperimentId")},get ImageResolver(){return g.getByProps("getUserAvatarURL","getGuildIconURL")},get ImageUtils(){return g.getByProps("getSizedImageSrc")},get AvatarDefaults(){return g.getByProps("getUserAvatarURL","DEFAULT_AVATARS")},get WindowInfo(){return g.getByProps("isFocused","windowSize")},get TagInfo(){return g.getByProps("VALID_TAG_NAMES")},get DOMInfo(){return g.getByProps("canUseDOM")},get LocaleManager(){return g.getByProps("setLocale")},get Moment(){return g.getByProps("parseZone")},get LocationManager(){return g.getByProps("createLocation")},get Timestamps(){return g.getByProps("fromTimestamp")},get TimeFormatter(){return g.getByProps("dateFormat")},get Strings(){return g.getByProps("Messages").Messages},get StringFormats(){return g.getByProps("a","z")},get StringUtils(){return g.getByProps("toASCII")},get URLParser(){return g.getByProps("Url","parse")},get ExtraURLs(){return g.getByProps("getArticleURL")},get DNDActions(){return g.getByProps("beginDrag")},get DNDSources(){return g.getByProps("addTarget")},get DNDObjects(){return g.getByProps("DragSource")},get MediaDeviceInfo(){return g.getByProps("Codecs","SUPPORTED_BROWSERS")},get MediaInfo(){return g.getByProps("getOutputVolume")},get MediaEngineInfo(){return g.getByProps("MediaEngineFeatures")},get VoiceInfo(){return g.getByProps("EchoCancellation")},get VideoStream(){return g.getByProps("getVideoStream")},get SoundModule(){return g.getByProps("playSound")},get ElectronModule(){return g.getByProps("setBadge")},get Dispatcher(){return g.getByProps("dirtyDispatch")},get PathUtils(){return g.getByProps("hasBasename")},get NotificationModule(){return g.getByProps("showNotification")},get RouterModule(){return g.getByProps("Router")},get APIModule(){return g.getByProps("getAPIBaseURL")},get AnalyticEvents(){return g.getByProps("AnalyticEventConfigs")},get KeyGenerator(){return g.getByRegex(/"binary"/)},get Buffers(){return g.getByProps("Buffer","kMaxLength")},get DeviceStore(){return g.getByProps("getDevices")},get SoftwareInfo(){return g.getByProps("os")},get CurrentContext(){return g.getByProps("setTagsContext")},get GuildClasses(){const e=g.getByProps("wrapper","unreadMentionsBar"),t=g.getByProps("guildsError","selected"),s=g.getByProps("blobContainer");return Object.assign({},e,t,s)},get LayerStack(){return g.getByProps("pushLayer")}});const b=s(5);var y=new class extends b{constructor(){super(),this.setMaxListeners(20)}dispatch(e,...t){this.emit(e,...t)}};const v=s(2),w=s(1),C=DiscordNative.globals?DiscordNative.globals.releaseChannel:DiscordNative.app?DiscordNative.app.getReleaseChannel():"stable";var S=new class{constructor(){this.data={misc:{}},this.pluginData={},this.cacheData={}}initialize(){v.existsSync(this.baseFolder)||v.mkdirSync(this.baseFolder),v.existsSync(this.dataFolder)||v.mkdirSync(this.dataFolder),v.existsSync(this.localeFolder)||v.mkdirSync(this.localeFolder),v.existsSync(this.emoteFolder)||v.mkdirSync(this.emoteFolder),v.existsSync(this.cacheFile)||v.writeFileSync(this.cacheFile,JSON.stringify({})),v.existsSync(this.customCSS)||v.writeFileSync(this.customCSS,"");const e=v.readdirSync(this.dataFolder).filter(e=>!v.statSync(w.resolve(this.dataFolder,e)).isDirectory()&&e.endsWith(".json"));for(const t of e)this.data[t.split(".")[0]]=require(w.resolve(this.dataFolder,t));this.cacheData=u.testJSON(v.readFileSync(this.cacheFile).toString())||{}}get injectionPath(){if(this._injectionPath)return this._injectionPath;const e=s(0).remote.app,t=e.getAppPath(),n=e.getPath("userData"),i=w.resolve(n,e.getVersion(),"modules","discord_desktop_core","injector"),o=w.resolve(t,"..","app"),r=v.existsSync(o)?o:v.existsSync(i)?i:null;return this._injectionPath=r||null}get customCSS(){return this._customCSS||(this._customCSS=w.resolve(this.dataFolder,"custom.css"))}get baseFolder(){return this._baseFolder||(this._baseFolder=w.resolve(o.dataPath,"data"))}get dataFolder(){return this._dataFolder||(this._dataFolder=w.resolve(this.baseFolder,`${C}`))}get localeFolder(){return this._localeFolder||(this._localeFolder=w.resolve(this.baseFolder,"locales"))}get emoteFolder(){return this._emoteFolder||(this._emoteFolder=w.resolve(this.baseFolder,"emotes"))}get cacheFile(){return this._cacheFile||(this._cacheFile=w.resolve(this.baseFolder,".cache"))}getPluginFile(e){return w.resolve(o.dataPath,"plugins",e+".config.json")}_getFile(e){return"settings"==e||"plugins"==e||"themes"==e||"window"==e?w.resolve(this.dataFolder,`${e}.json`):w.resolve(this.dataFolder,"misc.json")}getBDData(e){return this.data.misc[e]||""}setBDData(e,t){this.data.misc[e]=t,v.writeFileSync(w.resolve(this.dataFolder,"misc.json"),JSON.stringify(this.data.misc,null,4))}getLocale(e){const t=w.resolve(this.localeFolder,`${e}.json`);return v.existsSync(t)?u.testJSON(v.readFileSync(t).toString()):null}saveLocale(e,t){v.writeFileSync(w.resolve(this.localeFolder,`${e}.json`),JSON.stringify(t,null,4))}getCacheHash(e,t){return this.cacheData[e]&&v.existsSync(w.resolve(this.baseFolder,e,`${t}.json`))&&this.cacheData[e][t]||""}setCacheHash(e,t,s){this.cacheData[e]||(this.cacheData[e]={}),this.cacheData[e][t]=s,v.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData))}invalidateCache(e,t){this.cacheData[e]&&(delete this.cacheData[e][t],v.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData)))}emotesExist(e){return v.existsSync(w.resolve(this.emoteFolder,`${e}.json`))}getEmoteData(e){const t=w.resolve(this.emoteFolder,`${e}.json`);return v.existsSync(t)?u.testJSON(v.readFileSync(t).toString()):null}saveEmoteData(e,t){v.writeFileSync(w.resolve(this.emoteFolder,`${e}.json`),JSON.stringify(t))}getData(e){return this.data[e]||""}setData(e,t){this.data[e]=t,v.writeFileSync(w.resolve(this.dataFolder,`${e}.json`),JSON.stringify(t,null,4))}loadCustomCSS(){return v.readFileSync(this.customCSS).toString()}saveCustomCSS(e){return v.writeFileSync(this.customCSS,e)}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]||void 0:v.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(v.readFileSync(this.getPluginFile(e))),this.pluginData[e][t]||void 0):void 0}setPluginData(e,t,s){void 0!==s&&(void 0===this.pluginData[e]&&(this.pluginData[e]={}),this.pluginData[e][t]=s,v.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4)))}deletePluginData(e,t){void 0===this.pluginData[e]&&(this.pluginData[e]={}),delete this.pluginData[e][t],v.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4))}};const E=s(3),{Dispatcher:P,DiscordConstants:x,UserSettingsStore:k}=f;var A=new class{get discordLocale(){return k.locale.split("-")[0]}get defaultLocale(){return"en"}constructor(){this.locale="",this.strings={}}async initialize(){await this.setLocale(this.discordLocale),P.subscribe(x.ActionTypes.USER_SETTINGS_UPDATE,({settings:e})=>{const t=e.locale;t&&t!=this.locale&&this.setLocale(t.split("-")[0])})}async setLocale(e){let t;if(e!=this.defaultLocale){if(t=await this.getLocaleStrings(e),!t)return this.setLocale(this.defaultLocale)}else t=i;this.locale=e,u.extend(this.strings,t),y.emit("strings-updated")}async getLocaleStrings(e){const t=S.getCacheHash("locales",e);if(!t)return await this.downloadLocale(e);const s=await this.downloadLocale(e,t);return s||S.getLocale(e)}downloadLocale(e,t=""){return new Promise(s=>{const n={url:u.repoUrl(`data/locales/${e}.json`),timeout:2e3,json:!0};t&&(n.headers={"If-None-Match":t}),E.get(n,(t,n,i)=>{if(t||200!==n.statusCode)return s(null);S.saveLocale(e,i),S.setCacheHash("locales",e,n.headers.etag),s(i)})})}};class D{static get bdHead(){return this.getElement("bd-head")}static get bdBody(){return this.getElement("bd-body")}static get bdScripts(){return this.getElement("bd-scripts")}static get bdStyles(){return this.getElement("bd-styles")}static get bdThemes(){return this.getElement("bd-themes")}static get bdCustomCSS(){return this.getElement("#customcss")}static initialize(){this.createElement("bd-head",{target:document.head}),this.createElement("bd-body",{target:document.body}),this.createElement("bd-scripts",{target:this.bdHead}),this.createElement("bd-styles",{target:this.bdHead}),this.createElement("bd-themes",{target:this.bdHead}),this.createElement("style",{id:"customcss",target:this.bdHead})}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static getElement(e,t=document){return e instanceof Node?e:t.querySelector(e)}static createElement(e,t={}){const{className:s,id:n,target:i}=t,o=document.createElement(e);return s&&(o.className=s),n&&(o.id=n),i&&this.getElement(i).append(o),o}static removeStyle(e){e=this.escapeID(e);const t=this.getElement(`#${e}`,this.bdStyles);t&&t.remove()}static injectStyle(e,t){e=this.escapeID(e);const s=this.getElement(`#${e}`,this.bdStyles)||this.createElement("style",{id:e});s.textContent=t,this.bdStyles.append(s)}static removeTheme(e){e=this.escapeID(e);const t=this.getElement(`#${e}`,this.bdThemes);t&&t.remove()}static injectTheme(e,t){e=this.escapeID(e);const s=this.getElement(`#${e}`,this.bdThemes)||this.createElement("style",{id:e});s.textContent=t,this.bdThemes.append(s)}static updateCustomCSS(e){this.bdCustomCSS.textContent=e}static removeScript(e){e=this.escapeID(e);const t=this.getElement(`#${e}`,this.bdScripts);t&&t.remove()}static injectScript(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement(`#${e}`,this.bdScripts)||this.createElement("script",{id:e});n.src=t,n.onload=s,this.bdScripts.append(n)})}}class M extends String{format(e){return u.formatString(this,e)}}var N=new Proxy(A.strings,{get:function(e,t){return e.hasOwnProperty(t)?new Proxy(e[t],{get:function(e,t){return"string"==typeof e[t]?new M(e[t]):e[t]}}):new Proxy({},{get:function(){return`String group "${t}" not found.`}})}}),L=new class{constructor(){this.state={},this.collections=[],this.panels=[],this.updateStrings=this.updateStrings.bind(this)}initialize(){this.registerCollection("settings","Settings",a),y.on("strings-updated",this.updateStrings)}registerCollection(e,t,s,n=null){if(this.collections.find(t=>t.id==e))return c.error("Settings","Already have a collection with id "+e);this.collections.push({type:"collection",id:e,name:t,settings:s,button:n}),this.setupCollection(e),this.loadCollection(e),this.updateStrings()}removeCollection(e){const t=this.collections.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.collections.splice(t,1)}registerPanel(e,t,s){if(this.panels.find(t=>t.id==e))return c.error("Settings","Already have a panel with id "+e);const{element:n,onClick:i,order:o=1}=s,r={id:e,order:o,label:t,section:e};i&&(r.clickListener=i),n&&(r.element=n instanceof f.React.Component?()=>f.React.createElement(n,{}):"function"==typeof n?n:()=>n),this.panels.push(r)}removePanel(e){const t=this.panels.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.panels.splice(t,1)}getPath(e,t="",s=""){return{collection:3==e.length?e[0]:t,category:3==e.length?e[1]:2==e.length?e[0]:s,setting:e[e.length-1]}}setupCollection(e){const t=this.collections.find(t=>t.id==e);if(!t)return;const s=t.settings;this.state[t.id]||(this.state[t.id]={});for(let e=0;e{const e=this.state[o.collection][o.category][o.setting];return s.enableWith?!e:e}})}}}}saveSettings(){for(const e in this.state)this.saveCollection(e)}loadSettings(){for(const e in this.state)this.loadCollection(e)}saveCollection(e){S.setData(e,this.state[e])}loadCollection(e){const t=S.getData(e);if(!t)return this.saveCollection(e);for(const s in this.state[e]){t[s]||Object.assign(t,{[s]:this.state[e][s]});for(const n in this.state[e][s]){if(null==t[s][n])continue;const i=this.getSetting(e,s,n);if("switch"==i.type&&(this.state[e][s][n]=t[s][n]),"dropdown"==i.type){i.options.some(e=>e.value==t[s][n])&&(this.state[e][s][n]=t[s][n])}}}this.saveCollection(e)}onSettingChange(e,t,s,n){this.state[e][t][s]=n,y.dispatch("setting-updated",e,t,s,n),this.saveCollection(e)}getSetting(e,t,s){return 2==arguments.length?this.collections[0].find(e=>e.id==arguments[0]).settings.find(e=>e.id==arguments[1]):this.collections.find(t=>t.id==e).settings.find(e=>e.id==t).settings.find(e=>e.id==s)}get(e,t,s){return 2==arguments.length&&(s=t,t=e,e="settings"),!(!this.state[e]||!this.state[e][t])&&this.state[e][t][s]}set(e,t,s,n){return 3==arguments.length&&(n=s,s=t,t=e,e="settings"),this.onSettingChange(e,t,s,n)}on(e,t,s,n){const i=(i,o,r,a)=>{i===e&&o===t&&r===s&&n(a)};return y.on("setting-updated",i),()=>{y.off("setting-updated",i)}}updateStrings(){for(let e=0;e"before"===e.type))try{t.callback(this,arguments)}catch(s){c.err("Patcher",`Could not fire before callback of ${e.functionName} for ${t.caller}`,s)}const s=e.children.filter(e=>"instead"===e.type);if(s.length)for(const n of s)try{const s=n.callback(this,arguments,e.originalFunction.bind(this));void 0!==s&&(t=s)}catch(t){c.err("Patcher",`Could not fire instead callback of ${e.functionName} for ${n.caller}`,t)}else t=e.originalFunction.apply(this,arguments);for(const s of e.children.filter(e=>"after"===e.type))try{const e=s.callback(this,arguments,t);void 0!==e&&(t=e)}catch(t){c.err("Patcher",`Could not fire after callback of ${e.functionName} for ${s.caller}`,t)}return t}}static rePatch(e){e.proxyFunction=e.module[e.functionName]=this.makeOverride(e)}static makePatch(e,t,s){const n={name:s,module:e,functionName:t,originalFunction:e[t],proxyFunction:null,revert:()=>{n.module[n.functionName]=n.originalFunction,n.proxyFunction=null,n.children=[]},counter:0,children:[]};return n.proxyFunction=e[t]=this.makeOverride(n),this.patches.push(n),n}static before(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"before"}))}static after(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"after"}))}static instead(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"instead"}))}static pushChildPatch(e,t,s,n,i={}){const{type:o="after",forcePatch:r=!0}=i,a=this.resolveModule(t);if(!a)return null;if(!a[s]&&r&&(a[s]=function(){}),!(a[s]instanceof Function))return null;"string"==typeof t&&(i.displayName=t);const l=`${i.displayName||a.displayName||a.name||a.constructor.displayName||a.constructor.name}.${s}`,d=this.patches.find(e=>e.module==a&&e.functionName==s)||this.makePatch(a,s,l);d.proxyFunction||this.rePatch(d);const c={caller:e,type:o,id:d.counter,callback:n,unpatch:()=>{if(d.children.splice(d.children.findIndex(e=>e.id===c.id&&e.type===o),1),d.children.length<=0){const e=this.patches.findIndex(e=>e.module==a&&e.functionName==s);this.patches[e].revert(),this.patches.splice(e,1)}}};return d.children.push(c),d.counter++,c.unpatch}}const F=f.React,O={},I=new Set,z=new Set;var R=new class{get named(){return O}get unknown(){return I}get listeners(){return z}constructor(){j.after("ReactComponents",F,"createElement",(e,t,s)=>{this.walkRenderTree(s)}),j.instead("ReactComponents",F.Component.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),j.instead("ReactComponents",F.Component.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)}),j.instead("ReactComponents",F.PureComponent.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),j.instead("ReactComponents",F.PureComponent.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)})}initialize(){this.walkReactTree(document.querySelector("#app-mount")._reactRootContainer._internalRoot.current)}get(e,t){return new Promise(s=>{if(O[e])return s(O[e]);if(z.add({name:e,filter:t,resolve:s}),t)for(const s of I)t(s)&&(s.displayName=e,I.delete(s),this.addNamedComponent(s))})}addNamedComponent(e){const t=e.displayName;if(!O[t]){O[t]=e;for(const s of z)s.name===t&&(s.resolve(e),z.delete(s))}}addUnknownComponent(e){if(!I.has(e)){for(const t of z)t.filter&&t.filter(e)&&(e.displayName=t.name,this.addNamedComponent(e));e.displayName||I.add(e)}}addComponent(e){return e.displayName?this.addNamedComponent(e):this.addUnknownComponent(e)}walkRenderTree(e){if(e){if("function"==typeof e.type&&this.addComponent(e.type),Array.isArray(e))for(const t of e)this.walkRenderTree(t);e.props&&e.props.children&&this.walkRenderTree(e.props.children)}}walkReactTree(e){e&&("function"==typeof e.type&&this.addComponent(e.type),e.child&&this.walkReactTree(e.child),e.sibling&&this.walkReactTree(e.sibling))}};const q=f.React,H=f.ReactDOM,U=g.getByProps("sidebar","hasNotice").sidebar.split(" ")[0],_=g.getByProps("membersWrap").membersWrap.split(" ")[0];class W{static get shouldShowToasts(){return L.get("settings","general","showToasts")}static async success(e,t={}){return this.show(e,Object.assign(t,{type:"success"}))}static async info(e,t={}){return this.show(e,Object.assign(t,{type:"info"}))}static async warning(e,t={}){return this.show(e,Object.assign(t,{type:"warning"}))}static async error(e,t={}){return this.show(e,Object.assign(t,{type:"error"}))}static async default(e,t={}){return this.show(e,Object.assign(t,{type:""}))}static show(e,t={}){const{type:s="",icon:n=!0,timeout:i=3e3,forceShow:o=!1}=t;if(!this.shouldShowToasts&&!o)return;this.ensureContainer();const r=document.createElement("div");r.classList.add("bd-toast"),s&&r.classList.add("toast-"+s),s&&n&&r.classList.add("icon"),r.innerText=e,document.querySelector(".bd-toasts").appendChild(r),setTimeout(()=>{r.classList.add("closing"),setTimeout(()=>{r.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},i)}static ensureContainer(){if(document.querySelector(".bd-toasts"))return;const e=document.querySelector(`.${U} + div`),t=e.querySelector(`.${_}`),s=e?e.querySelector("form"):null,n=e?e.getBoundingClientRect().left:310,i=t?t.getBoundingClientRect().left:0,o=i?i-e.getBoundingClientRect().left:e.offsetWidth,r=s?s.offsetHeight:80,a=document.createElement("div");a.classList.add("bd-toasts"),a.style.setProperty("left",n+"px"),a.style.setProperty("width",o+"px"),a.style.setProperty("bottom",r+"px"),document.querySelector("#app-mount").appendChild(a)}}class G extends q.Component{constructor(e){super(e),this.onClick=this.onClick.bind(this),this.state={checked:this.props.checked||!1}}render(){return q.createElement("div",{className:"checkbox-item"},q.createElement("div",{className:"checkbox-label label-JWQiNe da-label"},this.props.text),q.createElement("div",{className:"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox",onClick:this.onClick},q.createElement("div",{className:"checkbox-inner checkboxInner-3yjcPe da-checkboxInner"},q.createElement("input",{className:"checkbox checkboxElement-1qV33p da-checkboxElement",checked:this.state.checked,type:"checkbox"}),q.createElement("span",null)),q.createElement("span",null)))}onClick(){this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked})}}function V(){return(V=Object.assign||function(e){for(var t=1;t{for(const s of e){if(!(s.addedNodes.length&&s.addedNodes[0]instanceof Element))continue;const e=s.addedNodes[0];e.parentElement===document.body&&e.querySelector("#ace_settingsmenu")&&(e.id="ace_settingsmenu_container",t.disconnect())}});t.observe(document.body,{childList:!0})};const t=this.props.theme==Z.defaultProps.theme?this.props.theme.split("-")[1]:this.props.theme;this.editor.setTheme(`ace/theme/${t}`),this.editor.session.setMode(`ace/mode/${this.props.language}`),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(this.props.fontSize),this.editor.on("change",this.onChange)}componentWillUnmount(){this.editor.destroy()}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}onChange(){this.props.onChange&&this.props.onChange(this.value)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}buildControl(e){return"checkbox"==e.type?this.makeCheckbox(e):this.makeButton(e)}makeCheckbox(e){return q.createElement(G,{text:e.label,onChange:e.onChange,checked:e.checked})}makeButton(e){return q.createElement(J,{color:"black",position:"top",text:e.tooltip},t=>q.createElement("button",V({},t,{className:"btn btn-primary",onClick:t=>{e.onClick(t,this.value)}}),e.label))}render(){this.editor&&this.editor.resize&&this.editor.resize();const e=this.props.controls.filter(e=>"right"!=e.side).map(this.buildControl.bind(this)),t=this.props.controls.filter(e=>"right"==e.side).map(this.buildControl.bind(this));return q.createElement("div",{id:"bd-editor-panel",className:this.props.theme},q.createElement("div",{id:"bd-editor-controls"},q.createElement("div",{className:"controls-section controls-left"},e),q.createElement("div",{className:"controls-section controls-right"},t)),q.createElement("div",{className:"editor-wrapper"},q.createElement("div",{id:this.props.id,className:"editor "+this.props.theme},this.props.value)))}}class K extends q.Component{render(){const e=this.props.size||"24px";return q.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},q.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),q.createElement("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"}))}}class Q extends q.Component{render(){const e=this.props.size||"24px";return q.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",style:{width:e,height:e},onClick:this.props.onClick},q.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),q.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}}class ee extends q.Component{render(){const e=this.props.size||"20px";return q.createElement("svg",{viewBox:"0 0 20 20",style:{width:e,height:e}},q.createElement("path",{fill:"none",d:"M0 0h20v20H0V0z"}),q.createElement("path",{d:"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}))}}class te extends q.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.save=this.save.bind(this),this.openNative=this.openNative.bind(this),this.update=this.update.bind(this),this.controls=[{label:q.createElement(K,{size:"18px"}),tooltip:N.CustomCSS.save,onClick:this.save},{label:q.createElement(Q,{size:"18px"}),tooltip:N.CustomCSS.openNative,onClick:this.openNative},{label:q.createElement(ee,{size:"18px"}),tooltip:N.CustomCSS.settings,onClick:"showSettings"}]}update(){this.forceUpdate()}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}render(){return q.createElement(Z,{ref:this.setEditorRef.bind(this),language:this.props.language,id:this.props.id||"bd-addon-editor",controls:this.controls,value:this.props.content,onChange:this.onChange})}onChange(){this.hasUnsavedChanges=!0}save(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openNative(){this.props.openNative&&this.props.openNative()}}class se{static get width(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get height(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}class ne extends q.Component{render(){return q.createElement("svg",{viewBox:"0 0 12 12",style:{width:"18px",height:"18px"}},q.createElement("g",{className:"background",fill:"none",fillRule:"evenodd"},q.createElement("path",{d:"M0 0h12v12H0"}),q.createElement("path",{className:"fill",fill:"#dcddde",d:"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6"})))}}class ie extends q.Component{render(){const e=this.props.size||"24px";return q.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},q.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),q.createElement("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"}))}}class oe{static get shouldShowAddonErrors(){return L.get("settings","addons","addonErrors")}static get ModalStack(){return g.getByProps("push","update","pop","popWithKey")}static get AlertModal(){return g.getByPrototypes("handleCancel","handleSubmit","handleMinorConfirm")}static get TextElement(){return g.getByProps("Sizes","Weights")}static get ConfirmationModal(){return g.getModule(e=>e.defaultProps&&e.key&&"confirm-modal"==e.key())}static get Markdown(){return g.findByDisplayName("Markdown")}static default(e,t){const s=h.createElement(`
\n
\n \n
`);s.querySelector(".footer button").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),document.querySelector("#app-mount").append(s)}static alert(e,t){this.showConfirmationModal(e,t)}static showConfirmationModal(e,t,s={}){const n=this.Markdown,i=this.ConfirmationModal,o=this.ModalStack;if(t instanceof M&&(t=t.toString()),!this.ModalStack||!this.ConfirmationModal||!this.Markdown)return this.default(e,t);const r=()=>{},{onConfirm:a=r,onCancel:l=r,confirmText:d=N.Modals.okay,cancelText:c=N.Modals.cancel,danger:h=!1,key:u}=s;return Array.isArray(t)||(t=[t]),t=t.map(e=>"string"==typeof e?q.createElement(n,null,e):e),o.push(i,{header:e,children:t,red:h,confirmText:d,cancelText:c,onConfirm:a,onCancel:l},u)}static showAddonErrors({plugins:e=[],themes:t=[]}){if(!e||!t||!this.shouldShowAddonErrors)return;if(!e.length&&!t.length)return;const s=h.createElement(`
\n
\n \n
`),n=function(e){const t=h.createElement('
');for(const s of e){const e=h.createElement(`
\n
${s.name?s.name:s.file}
\n
${s.message}
\n \n
`);t.append(e),s.error&&e.querySelectorAll("a").forEach(e=>e.addEventListener("click",e=>{e.preventDefault(),c.stacktrace("AddonError",`Error details for ${s.name?s.name:s.file}.`,s.error)}))}return t},i=[n(e),n(t)];s.querySelectorAll(".tab-bar-item").forEach(e=>e.addEventListener("click",e=>{e.preventDefault();const t=s.querySelector(".tab-bar-item.selected");t&&h.removeClass(t,"selected"),h.addClass(e.target,"selected");const n=s.querySelector(".scroller");n.innerHTML="",n.append(i[h.index(e.target)])})),s.querySelector(".footer button").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),h.query("#app-mount").append(s),e.length?s.querySelector(".tab-bar-item").click():s.querySelectorAll(".tab-bar-item")[1].click()}static showChangelogModal(e={}){const t=g.getByProps("push","update","pop","popWithKey"),s=g.getByProps("fixed","improved"),n=g.findByDisplayName("Text"),i=g.getByProps("Child"),r=g.getByProps("Tags","default"),a=g.getModule(e=>e.defaultProps&&0==e.defaultProps.selectable),l=g.getByProps("defaultRules","parse");if(!(a&&t&&s&&n&&i&&r&&l))return c.warn("Modals","showChangelogModal missing modules");const{image:d="https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5",description:h="",changes:u=[],title:p="BandagedBD",subtitle:m=`v${o.bbdVersion}`,footer:b}=e,y=q.createElement,v=[y("img",{src:d})];h&&v.push(y("p",null,l.parse(h)));for(let e=0;ey("li",null,l.parse(e))));v.push(o)}return t.push(a,{className:s.container,selectable:!0,onScroll:e=>e,onClose:e=>e,renderHeader:function(){return y(i.Child,{grow:1,shrink:1},y(r.default,{tag:r.Tags.H4},p),y(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD,className:s.date},m))},renderFooter:()=>{const e=g.getModule(e=>"Anchor"==e.displayName),s=g.getByProps("anchorUnderlineOnHover")||{anchor:"anchor-3Z-8Bb",anchorUnderlineOnHover:"anchorUnderlineOnHover-2ESHQB"},o=e=>{e.preventDefault(),e.stopPropagation(),t.pop(),f.InviteActions.acceptInviteAndTransitionToInviteChannel("2HScm8j")},r=e?y(e,{onClick:o},"Join our Discord Server."):y("a",{className:`${s.anchor} ${s.anchorUnderlineOnHover}`,onClick:o},"Join our Discord Server."),a=y(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD},"Need support? ",r);return y(i.Child,{grow:1,shrink:1},b||a)},children:v})}}class re extends q.Component{constructor(e){super(e),this.state={modalOpen:!1},this.offX=0,this.offY=0,this.maxX=this.props.maxX||se.width,this.maxY=this.props.maxY||se.height,this.minX=this.props.minX||0,this.minY=this.props.minY||0,this.titlebar=q.createRef(),this.window=q.createRef(),this.close=this.close.bind(this),this.maximize=this.maximize.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragStart=this.onDragStart.bind(this),this.onDragStop=this.onDragStop.bind(this),this.onResizeStart=this.onResizeStart.bind(this)}componentDidMount(){this.window.current.addEventListener("mousedown",this.onResizeStart,!1),this.titlebar.current.addEventListener("mousedown",this.onDragStart,!1),document.addEventListener("mouseup",this.onDragStop,!1)}onResizeStart(){this.currentWidth=this.window.current.offsetWidth,this.currentHeight=this.window.current.offsetHeight}onDragStop(){document.removeEventListener("mousemove",this.onDrag,!0);const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight;if(e!=this.currentWidth||t!=this.currentHeight){this.props.onResize&&this.props.onResize();const s=parseInt(this.window.current.style.left),n=parseInt(this.window.current.style.top);s+e>=this.maxX&&(this.window.current.style.width=this.maxX-s+"px"),n+t>=this.maxY&&(this.window.current.style.height=this.maxY-n+"px")}this.currentWidth=e,this.currentHeight=t}onDragStart(e){const t=this.window.current;this.offY=e.clientY-parseInt(t.offsetTop),this.offX=e.clientX-parseInt(t.offsetLeft),document.addEventListener("mousemove",this.onDrag,!0)}onDrag(e){const t=this.window.current;let s=e.clientY-this.offY;s<=this.minY&&(s=this.minY),s+this.currentHeight>=this.maxY&&(s=this.maxY-this.currentHeight);let n=e.clientX-this.offX;n<=this.minX&&(n=this.minX),n+this.currentWidth>=this.maxX&&(n=this.maxX-this.currentWidth),t.style.top=s+"px",t.style.left=n+"px"}componentWillUnmount(){this.titlebar.current.removeEventListener("mousedown",this.onDragStart,!1),document.removeEventListener("mouseup",this.onDragStop,!1)}render(){const e=this.props.center?se.height/2-this.props.height/2:this.props.top,t=this.props.center?se.width/2-this.props.width/2:this.props.left,s=`floating-window${` ${this.props.className}`||""}${this.props.resizable?" resizable":""}${this.state.modalOpen?" modal-open":""}`,n={height:this.props.height,width:this.props.width,left:t||0,top:e||0};return q.createElement("div",{id:this.props.id,className:s,ref:this.window,style:n},q.createElement("div",{className:"floating-window-titlebar",ref:this.titlebar},q.createElement("span",{className:"title"},this.props.title),q.createElement("div",{className:"floating-window-buttons"},q.createElement("div",{className:"button maximize-button",onClick:this.maximize},q.createElement(ie,{size:"18px"})),q.createElement("div",{className:"button close-button",onClick:this.close},q.createElement(ne,null)))),q.createElement("div",{className:"floating-window-content"},this.props.children))}async close(){let e=!0;("function"==typeof this.props.confirmClose?this.props.confirmClose():this.props.confirmClose)&&(this.setState({modalOpen:!0}),e=await this.confirmClose(),this.setState({modalOpen:!1})),this.props.close&&e&&this.props.close()}maximize(){this.window.current.style.width="100%",this.window.current.style.height="100%",this.props.onResize&&this.props.onResize();const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight,s=parseInt(this.window.current.style.left)+e;parseInt(this.window.current.style.top)+t>this.maxY&&(this.window.current.style.top=this.maxY-t+"px"),s>this.maxX&&(this.window.current.style.left=this.maxX-e+"px")}confirmClose(){return new Promise(e=>{oe.showConfirmationModal(N.Modals.confirmAction,this.props.confirmationText,{danger:!0,confirmText:N.Modals.close,onConfirm:()=>{e(!0)},onCancel:()=>{e(!1)}})})}}function ae(){return(ae=Object.assign||function(e){for(var t=1;t div[class*="app-"');return e?e.offsetTop:0}render(){return this.state.windows.map(e=>q.createElement(re,ae({},e,{close:this.close.bind(this,e.id),minY:this.minY}),e.children))}open(e){this.setState({windows:[...this.state.windows,e]})}close(e){this.setState({windows:this.state.windows.filter(t=>(t.id==e&&t.onClose&&t.onClose(),t.id!=e))})}static get id(){return"floating-windows"}static get root(){if(this._root)return this._root;const e=document.createElement("div");return e.id=this.id,document.body.append(e),this._root=e}}const de=q.createRef(),ce=q.createElement(le,{ref:de}),he=q.createElement(g.getByProps("AppReferencePositionLayer").AppLayerProvider().props.layerContext.Provider,{value:[document.querySelector("#app-mount > .layerContainer-yqaFcK")]},ce),ue=h.createElement('
');h.query("#app-mount").append(ue),H.render(he,ue);var pe=de.current;const me=f.React,ge=s(1),fe=s(2),be=s(4).Module;be.globalPaths.push(ge.resolve(s(0).remote.app.getAppPath(),"node_modules"));const ye=/[^\S\r\n]*?\r?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/,ve=/^\\@/,we=function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e};class Ce{get name(){return""}get moduleExtension(){return""}get extension(){return""}get addonFolder(){return""}get language(){return""}get prefix(){return"addon"}get collection(){return"settings"}get category(){return"addons"}get id(){return"autoReload"}emit(e,...t){return y.emit(`${this.prefix}-${e}`,...t)}constructor(){this.timeCache={},this.addonList=[],this.state={}}initialize(){return this.originalRequire=be._extensions[this.moduleExtension],be._extensions[this.moduleExtension]=this.getAddonRequire(),L.on(this.collection,this.category,this.id,e=>{e?this.watchAddons():this.unwatchAddons()}),this.loadAllAddons()}initializeAddon(){}getFileModification(e,t){return t}startAddon(){}stopAddon(){}loadState(){const e=S.getData(`${this.prefix}s`);e&&Object.assign(this.state,e)}saveState(){S.setData(`${this.prefix}s`,this.state)}watchAddons(){if(this.watcher)return c.error(this.name,`Already watching ${this.prefix} addons.`);c.log(this.name,`Starting to watch ${this.prefix} addons.`),this.watcher=fe.watch(this.addonFolder,{persistent:!1},async(e,t)=>{if(!e||!t||!t.endsWith(this.extension))return;await new Promise(e=>setTimeout(e,50));try{fe.statSync(ge.resolve(this.addonFolder,t))}catch(e){if("ENOENT"!==e.code)return;delete this.timeCache[t],this.unloadAddon(t,!0)}if(!fe.statSync(ge.resolve(this.addonFolder,t)).isFile())return;const s=fe.statSync(ge.resolve(this.addonFolder,t));s&&s.mtime&&s.mtime.getTime()&&"number"==typeof s.mtime.getTime()&&this.timeCache[t]!=s.mtime.getTime()&&(this.timeCache[t]=s.mtime.getTime(),"rename"==e&&this.loadAddon(t,!0),"change"==e&&this.reloadAddon(t,!0))})}unwatchAddons(){if(!this.watcher)return c.error(this.name,`Was not watching ${this.prefix} addons.`);this.watcher.close(),delete this.watcher,c.log(this.name,`No longer watching ${this.prefix} addons.`)}extractMeta(e){const t=e.split("\n")[0];if(t.includes("//META"))return this.parseOldMeta(e);if(t.includes("/**"))return this.parseNewMeta(e);throw new T("META was not found.")}parseOldMeta(e){const t=e.split("\n")[0],s=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//")),n=u.testJSON(s);if(!n)throw new T("META could not be parsed.");if(!n.name)throw new T("META missing name data.");return n.format="json",n}parseNewMeta(e){const t=e.split("/**",2)[1].split("*/",1)[0],s={};let n="",i="";for(const e of t.split(ye))if(0!==e.length)if("@"===e.charAt(0)&&" "!==e.charAt(1)){s[n]=i;const t=e.indexOf(" ");n=e.substr(1,t-1),i=e.substr(t+1)}else i+=" "+e.replace("\\n","\n").replace(ve,"@");return s[n]=i.trim(),delete s[""],s.format="jsdoc",s}getAddonRequire(){const e=this,t=this.originalRequire;return function(s,n){const i=ge.resolve(e.addonFolder,ge.basename(n));if(!fe.existsSync(i)||n!==fe.realpathSync(i))return Reflect.apply(t,this,arguments);let o=fe.readFileSync(n,"utf8");o=we(o);const r=fe.statSync(n),a=e.extractMeta(o);a.id=a.name,a.filename=ge.basename(n),a.added=r.atimeMs,a.modified=r.mtimeMs,a.size=r.size,o=e.getFileModification(s,o,a),s._compile(o,n)}}loadAddon(e,t=!1){if(void 0===e)return;try{require(ge.resolve(this.addonFolder,e))}catch(n){return new B(e,e,"Could not be compiled.",{message:n.message,stack:n.stack})}const s=require(ge.resolve(this.addonFolder,e));if(this.addonList.find(e=>e.id==s.id))return new B(s.name,e,`There is already a plugin with name ${s.name}`);const n=this.initializeAddon(s);return n||(this.addonList.push(s),t&&W.success(`${s.name} v${s.version} was loaded.`),this.emit("loaded",s.id),this.state[s.id]?this.startAddon(s):this.state[s.id]=!1)}unloadAddon(e,t=!0,s=!1){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return!!n&&(this.state[n.id]&&(s?this.stopAddon(n):this.disableAddon(n)),delete require.cache[require.resolve(ge.resolve(this.addonFolder,n.filename))],this.addonList.splice(this.addonList.indexOf(n),1),this.emit("unloaded",n.id),t&&W.success(`${n.name} was unloaded.`),!0)}reloadAddon(e,t=!0){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,n=this.unloadAddon(s,t,!0);return n?this.loadAddon(s.filename,t):n}isLoaded(e){return!!this.addonList.find(t=>t.id==e||t.filename==e)}isEnabled(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);return!!t&&this.state[t.id]}enableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(this.state[t.id]||(this.state[t.id]=!0,this.startAddon(t),this.saveState()))}disableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&this.state[t.id]&&(this.state[t.id]=!1,this.stopAddon(t),this.saveState())}toggleAddon(e){this.state[e]?this.disableAddon(e):this.enableAddon(e)}loadNewAddons(){const e=fe.readdirSync(this.addonFolder),t=this.addonList.filter(t=>!e.includes(t.filename)).map(e=>e.id);return{added:e.filter(e=>!this.addonList.find(t=>t.filename==e)&&e.endsWith(this.extension)&&fe.statSync(ge.resolve(this.addonFolder,e)).isFile()),removed:t}}updateList(){const e=this.loadNewAddons();for(const t of e.added)this.loadAddon(t);for(const t of e.removed)this.unloadAddon(t)}loadAllAddons(){this.loadState();const e=[],t=fe.readdirSync(this.addonFolder);for(const s of t){if(!fe.statSync(ge.resolve(this.addonFolder,s)).isFile()||!s.endsWith(this.extension))continue;const t=this.loadAddon(s,!1);t instanceof B&&e.push(t)}return this.saveState(),L.get(this.collection,this.category,this.id)&&this.watchAddons(),e}deleteAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return fe.unlinkSync(ge.resolve(this.addonFolder,t.filename))}saveAddon(e,t){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return fe.writeFileSync(ge.resolve(this.addonFolder,s.filename),t)}editAddon(e,t){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,i=ge.resolve(this.addonFolder,n.filename);return void 0===t&&(t="system"==L.get("settings","addons","editAction")),t?s(0).shell.openItem(`${i}`):this.openDetached(n)}openDetached(e){const t=ge.resolve(this.addonFolder,e.filename),s=fe.readFileSync(t).toString(),n=me.createRef(),i=me.createElement(te,{id:"bd-floating-editor-"+e.name,ref:n,content:s,save:this.saveAddon.bind(this,e),openNative:this.editAddon.bind(this,e,!0),language:this.language});pe.open({onClose:()=>{this.isDetached=!1},onResize:()=>{n&&n.current&&n.current.resize&&n.current.resize()},title:e.name,id:s.id,className:"floating-addon-window",height:470,width:410,center:!0,resizable:!0,children:i,confirmClose:()=>!(!n||!n.current)&&n.current.hasUnsavedChanges,confirmationText:N.Addons.confirmationText.format({name:e.name})})}}class Se extends q.Component{constructor(e){super(e)}render(){const e=this.props.isGroup?"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8":"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7",t=this.props.className?`${e} ${this.props.className}`:e;return q.createElement("h2",{className:t,onClick:()=>{this.props.onClick&&this.props.onClick()}},this.props.text,this.props.button&&q.createElement("button",{className:"bd-button bd-button-title",onClick:this.props.button.onClick},this.props.button.title),this.props.otherChildren)}}class Ee extends q.Component{render(){const e=this.props.size||"24px";return q.createElement("svg",{className:this.props.className||"",onClick:this.props.onClick,fill:"#dcddde",viewBox:"0 0 24 24",style:{width:e,height:e}},q.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),q.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Pe extends q.Component{render(){const e=this.props.size||"24px";return q.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},q.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),q.createElement("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),q.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class xe extends q.Component{constructor(e){super(e),this.state={checked:this.props.checked},this.onChange=this.onChange.bind(this)}onChange(){this.props.disabled||(this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked}))}render(){const e=this.props.disabled?" bd-switch-disabled":"",t=this.state.checked?" bd-switch-checked":"";return q.createElement("div",{className:"bd-switch"+e+t},q.createElement("input",{type:"checkbox",id:this.props.id,className:"bd-checkbox",disabled:this.props.disabled,checked:this.state.checked,onChange:this.onChange}))}}class ke extends q.Component{constructor(e){super(e),this.state={hasError:!1}}componentDidCatch(){this.setState({hasError:!0})}render(){return this.state.hasError?q.createElement("div",{className:"react-error"},"Component Error"):this.props.children}}const Ae=ke.prototype.render;function De(){return(De=Object.assign||function(e){for(var t=1;tAe});const Me=g.getByDisplayName("Tooltip");class Ne extends q.Component{constructor(e){super(e),this.state={settingsOpen:!1},this.settingsPanel="",this.panelRef=q.createRef(),this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this),this.showSettings=this.showSettings.bind(this),this.closeSettings=this.closeSettings.bind(this)}reload(){this.props.reload&&(this.props.addon=this.props.reload(this.props.addon.id),this.forceUpdate())}componentDidUpdate(){this.state.settingsOpen&&(this.settingsPanel instanceof Node&&this.panelRef.current.appendChild(this.settingsPanel),setImmediate(()=>{const e=this.panelRef.current,t=e.closest(".scroller");if(!((e,t)=>{const s=e.scrollTop,n=s+e.clientHeight,i=t.offsetTop,o=i+t.clientHeight;return in})(t,e))return;const s=h.offset(e),n=h.offset(t),i=t.scrollTop,o=s.top-n.top+t.scrollTop-30;h.animate({duration:300,update:function(e){t.scrollTop=o>i?i+e*(o-i):i-e*(i-o)}})}))}getString(e){return"string"==typeof e?e:e.toString()}onChange(){this.props.onChange&&this.props.onChange(this.props.addon.id),this.props.enabled=!this.props.enabled}showSettings(){this.props.hasSettings&&this.setState({settingsOpen:!0})}closeSettings(){this.panelRef.current.innerHTML="",this.setState({settingsOpen:!1})}buildTitle(e,t,s){const n=N.Addons.title.split(/({{[A-Za-z]+}})/),i=n.findIndex(e=>"{{name}}"==e);i&&(n[i]=q.createElement("span",{className:"bd-name"},e));const o=n.findIndex(e=>"{{version}}"==e);i&&(n[o]=q.createElement("span",{className:"bd-version"},t));const r=n.findIndex(e=>"{{author}}"==e);return i&&(n[r]=q.createElement("span",{className:"bd-author"},s)),n.flat()}get settingsComponent(){const e=this.props.addon,t=this.getString(e.name);try{this.settingsPanel=this.props.getSettingsPanel()}catch(e){c.stacktrace("Addon Settings","Unable to get settings panel for "+t+".",e)}const s={id:`${t}-settings`,className:"addon-settings",ref:this.panelRef};return"string"==typeof settingsPanel&&(c.warn("Addon Settings","Using a DOMString is officially deprecated."),s.dangerouslySetInnerHTML=this.settingsPanel),q.createElement("div",{className:"bd-addon-card settings-open bd-switch-item"},q.createElement("div",{className:"bd-close",onClick:this.closeSettings},q.createElement(ne,null)),q.createElement("div",s,q.createElement(ke,null,this.settingsPanel instanceof q.Component||"function"==typeof this.settingsPanel?this.settingsPanel:null)))}buildLink(e){const t=this.props.addon[e];if(!t)return null;const s=q.createElement("a",{className:"bd-link bd-link-website",href:t,target:"_blank",rel:"noopener noreferrer"},N.Addons[e]);return"invite"==e&&(s.props.onClick=function(e){e.preventDefault(),e.stopPropagation();let s=t;const n=/\.gg\/(.*)$/;n.test(s)&&(s=s.match(n)[1]),f.LayerStack.popLayer(),f.InviteActions.acceptInviteAndTransitionToInviteChannel(s)}),s}get footer(){const e=["website","source","invite","donate","patreon"];if(!e.some(e=>this.props.addon[e])&&!this.props.hasSettings)return null;const t=e.map(this.buildLink.bind(this)).filter(e=>e);return q.createElement("div",{className:"bd-footer"},q.createElement("span",{className:"bd-links"},t.map((e,s)=>sq.createElement("div",De({},e,{className:"bd-addon-button",onClick:s}),t))}render(){if(this.state.settingsOpen)return this.settingsComponent;const e=this.props.addon,t=this.getString(e.name),s=this.getString(e.author),n=this.getString(e.description),i=this.getString(e.version);return q.createElement("div",{id:`${e.id}-card`,className:"bd-addon-card settings-closed"},q.createElement("div",{className:"bd-addon-header"},q.createElement("span",{className:"bd-title"},this.buildTitle(t,i,s)),q.createElement("div",{className:"bd-controls"},this.props.editAddon&&this.makeButton(N.Addons.editAddon,q.createElement(Q,null),this.props.editAddon),this.props.deleteAddon&&this.makeButton(N.Addons.deleteAddon,q.createElement(Pe,null),this.props.deleteAddon),this.props.showReloadIcon&&this.makeButton(N.Addons.reload,q.createElement(Ee,{className:"bd-reload bd-reload-card"}),this.reload),q.createElement(xe,{checked:this.props.enabled,onChange:this.onChange}))),q.createElement("div",{className:"bd-description-wrap scroller-wrap fade"},q.createElement("div",{className:"bd-description scroller"},n)),this.footer)}}const Le=Ne.prototype.render;Object.defineProperty(Ne.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonCard","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Le});class Be extends q.Component{render(){const e=this.props.size||"16px";return q.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},q.createElement("path",{d:"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z"}))}}class Te extends q.Component{constructor(e){super(e),this.state={open:!1,value:this.props.value||this.props.options[0].value},this.dropdown=q.createRef(),this.onChange=this.onChange.bind(this),this.showMenu=this.showMenu.bind(this),this.hideMenu=this.hideMenu.bind(this)}showMenu(e){e.preventDefault(),this.setState({open:!0},()=>{document.addEventListener("click",this.hideMenu)})}hideMenu(){this.setState({open:!1},()=>{document.removeEventListener("click",this.hideMenu)})}onChange(e){this.setState({value:e}),this.props.onChange&&this.props.onChange(e)}get selected(){return this.props.options.find(e=>e.value==this.state.value)}get options(){const e=this.selected;return q.createElement("div",{className:"bd-select-options"},this.props.options.map(t=>q.createElement("div",{className:`bd-select-option${e.value==t.value?" selected":""}`,onClick:this.onChange.bind(this,t.value)},t.label)))}render(){const e="transparent"==this.props.style?" bd-select-transparent":"",t=this.state.open?" menu-open":"";return q.createElement("div",{className:`bd-select${e}${t}`,onClick:this.showMenu,ref:this.dropdown},q.createElement("div",{className:"bd-select-value"},this.selected.label),q.createElement(Be,{className:"bd-select-arrow"}),this.state.open&&this.options)}}class je extends q.Component{render(){const e=this.props.size||"16px";return q.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},q.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),q.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}))}}class Fe extends q.Component{render(){return q.createElement("div",{className:"bd-search-wrapper"},q.createElement("input",{onChange:this.props.onChange,onKeyDown:this.props.onKeyDown,type:"text",className:"bd-search",placeholder:this.props.placeholder,maxLength:"50"}),q.createElement(je,null))}}class Oe extends q.Component{constructor(e){super(e),this.state={sort:"name",ascending:!0,query:""},this.sort=this.sort.bind(this),this.reverse=this.reverse.bind(this),this.search=this.search.bind(this),this.update=this.update.bind(this)}componentDidMount(){y.on(`${this.props.prefix}-loaded`,this.update),y.on(`${this.props.prefix}-unloaded`,this.update)}componentWillUnmount(){y.off(`${this.props.prefix}-loaded`,this.update),y.off(`${this.props.prefix}-unloaded`,this.update)}update(){this.forceUpdate()}reload(){this.props.refreshList&&this.props.refreshList(),this.forceUpdate()}reverse(e){this.setState({ascending:e})}sort(e){this.setState({sort:e})}search(e){this.setState({query:e.target.value.toLocaleLowerCase()})}get sortOptions(){return[{label:N.Addons.name,value:"name"},{label:N.Addons.author,value:"author"},{label:N.Addons.version,value:"version"},{label:N.Addons.added,value:"added"},{label:N.Addons.modified,value:"modified"}]}get directions(){return[{label:N.Sorting.ascending,value:!0},{label:N.Sorting.descending,value:!1}]}render(){const{title:e,folder:t,addonList:n,addonState:i,onChange:o,reload:r}=this.props,a=!L.get("settings","addons","autoReload"),l=t?{title:N.Addons.openFolder.format({type:e}),onClick:()=>{const e=s(0).shell;(e.openItem||e.openPath)(t)}}:null,d=n.sort((e,t)=>{const s=e[this.state.sort],n=t[this.state.sort];return"string"==typeof s?s.toLocaleLowerCase().localeCompare(n.toLocaleLowerCase()):s>n?1:n>s?-1:0});return this.state.ascending||d.reverse(),[q.createElement(Se,{key:"title",text:e,button:l,otherChildren:a&&q.createElement(Ee,{className:"bd-reload",onClick:this.reload.bind(this)})}),q.createElement("div",{className:"bd-controls bd-addon-controls"},q.createElement(Fe,{onChange:this.search,placeholder:`${N.Addons.search.format({type:this.props.title})}...`}),q.createElement("div",{className:"bd-addon-dropdowns"},q.createElement("div",{className:"bd-select-wrapper"},q.createElement("label",{className:"bd-label"},N.Sorting.sortBy,":"),q.createElement(Te,{options:this.sortOptions,onChange:this.sort,style:"transparent"})),q.createElement("div",{className:"bd-select-wrapper"},q.createElement("label",{className:"bd-label"},N.Sorting.order,":"),q.createElement(Te,{options:this.directions,onChange:this.reverse,style:"transparent"})))),q.createElement("div",{key:"addonList",className:"bd-addon-list"},d.map(e=>{if(this.state.query){let t=e.name.toLocaleLowerCase().includes(this.state.query);if(t=t||e.author.toLocaleLowerCase().includes(this.state.query),t=t||e.description.toLocaleLowerCase().includes(this.state.query),!t)return null}const t=e.type&&"function"==typeof e.plugin.getSettingsPanel,s=t&&e.plugin.getSettingsPanel.bind(e.plugin);return q.createElement(ke,null,q.createElement(Ne,{editAddon:this.editAddon.bind(this,e.id),deleteAddon:this.deleteAddon.bind(this,e.id),showReloadIcon:a,key:e.id,enabled:i[e.id],addon:e,onChange:o,reload:r,hasSettings:t,getSettingsPanel:s}))}))]}editAddon(e){this.props.editAddon&&this.props.editAddon(e)}async deleteAddon(e){const t=this.props.addonList.find(t=>t.id==e);await this.confirmDelete(t)&&this.props.deleteAddon&&this.props.deleteAddon(t)}confirmDelete(e){return new Promise(t=>{oe.showConfirmationModal(N.Modals.confirmAction,N.Addons.confirmDelete.format({name:e.name}),{danger:!0,confirmText:N.Addons.deleteAddon,onConfirm:()=>{t(!0)},onCancel:()=>{t(!1)}})})}}const Ie=Oe.prototype.render;Object.defineProperty(Oe.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonList","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Ie});class ze extends q.Component{render(){return q.createElement("div",{className:"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv"})}}class Re extends q.Component{render(){return q.createElement("div",{className:"bd-setting-item"},q.createElement("div",{className:"bd-setting-header"},q.createElement("label",{htmlFor:this.props.id,className:"bd-setting-title"},this.props.name),this.props.children),q.createElement("div",{className:"bd-setting-note"},this.props.note),q.createElement("div",{className:"bd-setting-divider"}))}}class $e extends q.Component{constructor(e){if(super(e),this.props.button&&this.props.collapsible){const e=this.props.button.onClick;this.props.button.onClick=t=>{t.stopPropagation(),e(...arguments)}}this.props.hasOwnProperty("shown")||(this.props.shown=!0),this.container=q.createRef(),this.state={collapsed:this.props.collapsible&&!this.props.shown},this.onChange=this.onChange.bind(this),this.toggleCollapse=this.toggleCollapse.bind(this)}toggleCollapse(){const e=this.container.current,t=this.state.collapsed?300:1;e.style.setProperty("height",e.scrollHeight+"px"),e.classList.add("animating"),this.setState({collapsed:!this.state.collapsed},()=>setTimeout(()=>{e.style.setProperty("height",""),e.classList.remove("animating")},t))}onChange(e,t){this.props.onChange&&(this.props.id?this.props.onChange(this.props.id,e,t):this.props.onChange(e,t),this.forceUpdate())}render(){const{settings:e}=this.props,t=`bd-settings-group ${this.props.collapsible?`collapsible ${this.state.collapsed?"collapsed":"expanded"}`:""}`;return q.createElement("div",{className:t},q.createElement(Se,{text:this.props.name,collapsible:this.props.collapsible,onClick:this.toggleCollapse,button:this.props.button,isGroup:!0}),q.createElement("div",{className:"bd-settings-container",ref:this.container},e.filter(e=>!e.hidden).map(e=>{let t=null;return"dropdown"==e.type&&(t=q.createElement(Te,{disabled:e.disabled,id:e.id,options:e.options,value:e.value,onChange:this.onChange.bind(this,e.id)})),"switch"==e.type&&(t=q.createElement(xe,{disabled:e.disabled,id:e.id,checked:e.value,onChange:this.onChange.bind(this,e.id)})),t?q.createElement(Re,{id:e.id,key:e.id,name:e.name,note:e.note},t):null})),this.props.showDivider&&q.createElement(ze,null))}}const qe=$e.prototype.render;Object.defineProperty($e.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("Group","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>qe});class He extends q.Component{render(){const e=this.props.size||"18px";return q.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",className:this.props.className||"",style:{width:e,height:e},onClick:this.props.onClick},q.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),q.createElement("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"}))}}function Ue(){return(Ue=Object.assign||function(e){for(var t=1;te.Header&&e.Separator&&e.Item),We=g.getByDisplayName("Tooltip");class Ge extends q.Component{constructor(e){super(e)}render(){return q.createElement("div",{className:"bd-sidebar-header"},q.createElement(_e.Header,null,"BandagedBD"),q.createElement(We,{color:"black",position:"top",text:"Changelog"},e=>q.createElement("div",Ue({},e,{className:"bd-changelog-button",onClick:()=>oe.showChangelogModal(l)}),q.createElement(He,{className:"bd-icon",size:"16px"}))))}}var Ve=new class{constructor(){this.patchSections(),y.on("strings-updated",this.forceUpdate)}onChange(e){return(t,s,n)=>{const i=L.collections.length+L.panels.length;e(t,s,n),i!=L.collections.length+L.panels.length&&setTimeout(this.forceUpdate.bind(this),50)}}buildSettingsPanel(e,t,s,n,i=null){return t.forEach(e=>{e.settings.forEach(t=>t.value=s[e.id][t.id])}),this.getSettingsPanel(e,t,this.onChange(n),i)}getSettingsPanel(e,t,s,n=null){return[q.createElement(Se,{text:e,button:n}),t.map(e=>q.createElement($e,Object.assign({},e,{onChange:s})))]}getAddonPanel(e,t,s,n={}){return q.createElement(Oe,Object.assign({},{title:e,addonList:t,addonState:s},n))}async patchSections(){const e=await R.get("UserSettings",e=>e.prototype&&e.prototype.generateSections);j.after("SettingsManager",e.prototype,"render",e=>{e._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id="user-settings"}),j.after("SettingsManager",e.prototype,"generateSections",(e,t,s)=>{let n=s.findIndex(e=>"linux"==e.section.toLowerCase())+1;const i=e=>{s.splice(n,0,e),n++};i({section:"DIVIDER"}),i({section:"CUSTOM",element:Ge});for(const e of L.collections)e.disabled||i({section:e.name,label:e.name,element:()=>this.buildSettingsPanel(e.name,e.settings,L.state[e.id],L.onSettingChange.bind(L,e.id),e.button?e.button:null)});for(const t of L.panels.sort((e,t)=>e.order>t.order))t.clickListener&&(t.onClick=n=>t.clickListener(e,n,s)),i(t)}),this.forceUpdate()}forceUpdate(){const e=g.getByProps("standardSidebarView").standardSidebarView.split(" ")[0],t=document.querySelector(`.${e}`);if(!t)return;const s=u.findInReactTree(u.getReactInstance(t),e=>e&&e.generateSections,{walkable:["return","stateNode"]});s&&s.forceUpdate()}};const Je=s(1),Ye=s(0).remote;var Xe=new class extends Ce{get name(){return"PluginManager"}get moduleExtension(){return".js"}get extension(){return".plugin.js"}get addonFolder(){return Je.resolve(o.dataPath,"plugins")}get prefix(){return"plugin"}get language(){return"javascript"}constructor(){super(),this.onSwitch=this.onSwitch.bind(this),this.observer=new MutationObserver(e=>{for(let t=0,s=e.length;tVe.getAddonPanel(N.Panels.plugins,this.addonList,this.state,{folder:this.addonFolder,onChange:this.togglePlugin.bind(this),reload:this.reloadPlugin.bind(this),refreshList:this.updatePluginList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updatePluginList(){return this.updateList()}loadAllPlugins(){return this.loadAllAddons()}enablePlugin(e){return this.enableAddon(e)}disablePlugin(e){return this.disableAddon(e)}togglePlugin(e){return this.toggleAddon(e)}unloadPlugin(e){return this.unloadAddon(e)}loadPlugin(e){const t=this.loadAddon(e);t&&oe.showAddonErrors({themes:[t]})}reloadPlugin(e){const t=this.reloadAddon(e);return t&&oe.showAddonErrors({plugins:[t]}),"string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e}initializeAddon(e){if(!e.type)return new B(e.name,e.filename,"Plugin had no exports",{message:"Plugin had no exports or no name property.",stack:""});try{const t=new e.type;e.plugin=t,e.name=t.getName()||e.name,e.author=t.getAuthor()||e.author||"No author",e.description=t.getDescription()||e.description||"No description",e.version=t.getVersion()||e.version||"No version";try{"function"==typeof e.plugin.load&&e.plugin.load()}catch(t){return this.state[e.id]=!1,new B(e.name,e.filename,"load() could not be fired.",{message:t.message,stack:t.stack})}}catch(t){return new B(e.name,e.filename,"Could not be constructed.",{message:t.message,stack:t.stack})}}getFileModification(e,t,s){return e._compile(t,e.filename),u.isEmpty(e.exports)?(c.warn(this.name,`${s.name}, please start assigning module.exports`),t+=`\nmodule.exports = ${JSON.stringify(s)};\nmodule.exports.type = ${s.exports||s.name};`):(s.type=e.exports,e.exports=s,"")}startAddon(e){return this.startPlugin(e)}stopAddon(e){return this.stopPlugin(e)}startPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.start(),this.emit("started",t.id),W.show(`${t.name} v${t.version} has started.`)}catch(e){return this.state[t.id]=!1,W.error(`${t.name} v${t.version} could not be started.`),c.stacktrace(this.name,t.name+" could not be started.",e),new B(t.name,t.filename,"start() could not be fired.",{message:e.message,stack:e.stack})}}stopPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.stop(),this.emit("stopped",t.id),W.show(`${t.name} v${t.version} has stopped.`)}catch(e){return this.state[t.id]=!1,W.error(`${t.name} v${t.version} could not be stopped.`),c.stacktrace(this.name,t.name+" could not be stopped.",e),new B(t.name,t.filename,"stop() could not be fired.",{message:e.message,stack:e.stack})}}setupFunctions(){Ye.getCurrentWebContents().on("did-navigate-in-page",this.onSwitch.bind(this)),this.observer.observe(document,{childList:!0,subtree:!0})}onSwitch(){this.emit("page-switch");for(let e=0;eVe.getAddonPanel(N.Panels.themes,this.addonList,this.state,{folder:this.addonFolder,onChange:this.toggleTheme.bind(this),reload:this.reloadTheme.bind(this),refreshList:this.updateThemeList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updateThemeList(){return this.updateList()}loadAllThemes(){return this.loadAllAddons()}enableTheme(e){return this.enableAddon(e)}disableTheme(e){return this.disableAddon(e)}toggleTheme(e){return this.toggleAddon(e)}unloadTheme(e){return this.unloadAddon(e)}loadTheme(e){const t=this.loadAddon(e);t&&oe.showAddonErrors({themes:[t]})}reloadTheme(e){const t=this.reloadAddon(e);t&&oe.showAddonErrors({themes:[t]})}getFileModification(e,t,s){return s.css=t,`module.exports = ${JSON.stringify(s)};`}startAddon(e){return this.addTheme(e)}stopAddon(e){return this.removeTheme(e)}addTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(D.injectTheme(t.id,t.css),W.show(`${t.name} v${t.version} has been applied.`))}removeTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(D.removeTheme(t.id),W.show(`${t.name} v${t.version} has been removed.`))}};class Qe{get name(){return"Unnamed Builtin"}get collection(){return"settings"}get category(){return"general"}get id(){return"None"}async initialize(){L.get(this.collection,this.category,this.id)&&await this.enable(),y.on("setting-updated",(e,t,s,n)=>{e==this.collection&&t===this.category&&s===this.id&&(n?this.enable():this.disable())}),this.initialized=!0}registerSetting(e,t,s,n,i){return 4==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1],n=arguments[2],i=arguments[3]):3==arguments.length&&(e=this.collection,t=this.category,s=arguments[0],n=arguments[1],i=arguments[2]),L.on(e,t,s,e=>{e?n():i()})}get(e,t,s){return 2==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1]):1==arguments.length&&(e=this.collection,t=this.category,s=arguments[0]),L.get(e,t,s)}async enable(){this.log("Enabled"),await this.enabled()}async disable(){this.log("Disabled"),await this.disabled()}async enabled(){}async disabled(){}log(...e){c.log(this.name,...e)}warn(...e){c.warn(this.name,...e)}error(...e){c.err(this.name,...e)}stacktrace(e,t){c.stacktrace(this.name,e,t)}after(e,t,s){return j.after(this.name,e,t,s)}unpatchAll(){return j.unpatchAll(this.name)}}class et extends q.Component{render(){const e=this.props.size||"24px";return q.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},q.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),q.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}))}}class tt extends q.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.toggleLiveUpdate=this.toggleLiveUpdate.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.openDetached=this.props.openDetached?this.openDetached.bind(this):null,this.openNative=this.openNative.bind(this),this.updateEditor=this.updateEditor.bind(this),this.controls=[{label:q.createElement(Ee,{size:"18px"}),tooltip:N.CustomCSS.update,onClick:this.updateCss},{label:q.createElement(K,{size:"18px"}),tooltip:N.CustomCSS.save,onClick:this.saveCss},{label:q.createElement(Q,{size:"18px"}),tooltip:N.CustomCSS.openNative,onClick:this.openNative},{label:q.createElement(ee,{size:"18px"}),tooltip:N.CustomCSS.settings,onClick:"showSettings"},{label:N.Collections.settings.customcss.liveUpdate.name,type:"checkbox",onChange:this.toggleLiveUpdate,checked:L.get("settings","customcss","liveUpdate"),side:"right"}],this.openDetached&&this.controls.push({label:q.createElement(et,{size:"18px"}),tooltip:N.CustomCSS.openDetached,onClick:this.openDetached,side:"right"})}componentDidMount(){y.on("customcss-updated",this.updateEditor)}componentWillUnmount(){y.off("customcss-updated",this.updateEditor)}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}onChange(){this.hasUnsavedChanges=!0,this.props.onChange&&this.props.onChange(...arguments)}render(){return q.createElement(Z,{ref:this.setEditorRef.bind(this),readOnly:this.props.readOnly,id:this.props.id||"bd-customcss-editor",onChange:this.onChange,controls:this.controls,value:this.props.css})}toggleLiveUpdate(e){L.set("settings","customcss","liveUpdate",e)}updateCss(e,t){this.props.update&&this.props.update(t)}saveCss(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openDetached(e,t){this.props.openDetached&&this.props.openDetached(t)}openNative(){this.props.openNative&&this.props.openNative()}}const st=s(2),nt=s(0),it=g.getByProps("updateAccount"),ot=g.getByProps("dirtyDispatch"),rt=g.getByProps("ActionTypes").ActionTypes;var at=new class extends Qe{get name(){return"Custom CSS"}get category(){return"customcss"}get id(){return"customcss"}get startDetached(){return"detached"==L.get(this.collection,this.category,"openAction")}get nativeOpen(){return"system"==L.get(this.collection,this.category,"openAction")}constructor(){super(),this.savedCss="",this.insertedCss="",this.isDetached=!1}async enabled(){window.ace||D.injectScript("ace-script","https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js").then(()=>{window.require.original&&(window.require=window.require.original)}),L.registerPanel(this.id,N.Panels.customcss,{order:2,element:()=>[q.createElement(Se,{text:N.CustomCSS.editorTitle}),q.createElement(tt,{css:this.savedCss,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),openDetached:this.openDetached.bind(this),onChange:this.onChange.bind(this)})],onClick:e=>{if(this.isDetached)return;if(this.nativeOpen)return this.openNative();if(this.startDetached)return this.openDetached();const t=u.findInRenderTree(e._reactInternalFiber,e=>e&&e.onSetSection,{walkable:["child","memoizedProps","props","children"]});t&&t.onSetSection&&t.onSetSection(this.id)}}),this.loadCSS(),this.insertCSS(this.savedCss),this.watchContent()}disabled(){L.removePanel(this.id),this.unwatchContent()}watchContent(){if(this.watcher)return this.error("Already watching content.");const e={};this.log("Starting to watch content."),this.watcher=st.watch(S.customCSS,{persistent:!1},async(t,s)=>{if(!t||!s)return;await new Promise(e=>setTimeout(e,50));try{st.statSync(S.customCSS)}catch(t){if("ENOENT"!==t.code)return;delete e[s],this.saveCSS("")}const n=st.statSync(S.customCSS);if(n&&n.mtime&&n.mtime.getTime()&&"number"==typeof n.mtime.getTime()&&e[s]!=n.mtime.getTime()&&(e[s]=n.mtime.getTime(),"change"==t)){const e=S.loadCustomCSS();if(e==this.savedCss)return;this.savedCss=e,this.insertCSS(this.savedCss),y.emit("customcss-updated",this.savedCss)}})}unwatchContent(){if(!this.watcher)return this.error("Was not watching content.");this.watcher.close(),delete this.watcher,this.log("No longer watching content.")}onChange(e){L.get("settings","customcss","liveUpdate")&&(this.insertCSS(e),this.saveCSS(e))}loadCSS(){this.savedCss=S.loadCustomCSS()}insertCSS(e){void 0===e?e=this.insertedCss:this.insertedCss=e,D.updateCustomCSS(e)}saveCSS(e){void 0!==e&&(this.savedCss=e),S.saveCustomCSS(this.savedCss)}openNative(){nt.shell.openExternal(`file://${S.customCSS}`)}openDetached(e){const t=q.createRef(),s=q.createElement(tt,{id:"bd-floating-editor",ref:t,css:e,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),onChange:this.onChange.bind(this)});pe.open({onClose:()=>{this.isDetached=!1},onResize:()=>{t&&t.current&&t.current.resize&&t.current.resize()},title:N.CustomCSS.editorTitle,id:"floating-editor-window",height:470,width:410,center:!0,resizable:!0,children:s,confirmClose:()=>!(!t||!t.current)&&t.current.hasUnsavedChanges,confirmationText:N.CustomCSS.confirmationText}),this.isDetached=!0,it.close(),ot.dirtyDispatch({type:rt.LAYER_POP})}},lt=new class extends Qe{get name(){return"WindowPrefs"}get category(){return"window"}get id(){return"transparency"}enabled(){this.setWindowPreference("transparent",!0),this.setWindowPreference("backgroundColor","#00000000"),this.showModal(N.WindowPrefs.enabledInfo)}disabled(){this.deleteWindowPreference("transparent"),this.deleteWindowPreference("backgroundColor"),this.showModal(N.WindowPrefs.disabledInfo)}showModal(e){this.initialized&&oe.showConfirmationModal(N.Modals.additionalInfo,e,{confirmText:N.Modals.restartNow,cancelText:N.Modals.restartLater,onConfirm:()=>{const e=s(0).remote.app;e.relaunch(),e.exit()}})}getWindowPreference(e){return(S.getData("windowprefs")||{})[e]}setWindowPreference(e,t){const s=S.getData("windowprefs")||{};s[e]=t,S.setData("windowprefs",s)}deleteWindowPreference(e){const t=S.getData("windowprefs")||{};delete t[e],S.setData("windowprefs",t)}},dt=new class extends Qe{get name(){return"24Hour"}get category(){return"general"}get id(){return"twentyFourHour"}enabled(){this.inject24Hour()}disabled(){this.unpatchAll()}inject24Hour(){const e=new RegExp("([0-9]{1,2}):([0-9]{1,2})\\s(AM|PM)"),t=(t,s,n)=>{const i=n.match(e);if(i&&4===i.length)return"AM"===i[3]?n.replace(i[0],`${"12"===i[1]?"00":i[1].padStart(2,"0")}:${i[2]}`):n.replace(i[0],`${"12"===i[1]?"12":parseInt(i[1])+12}:${i[2]}`)};this.after(f.TimeFormatter,"calendarFormat",t),this.after(f.TimeFormatter,"dateFormat",t)}};const ct=new RegExp("^(?!da-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$");var ht=new class extends Qe{get id(){return"classNormalizer"}get category(){return"general"}get name(){return"ClassNormalizer"}enabled(){this.hasPatched||(this.patchClassModules(g.getModules(this.moduleFilter.bind(this))),this.normalizeElement(document.querySelector("#app-mount")),this.hasPatched=!0,this.patchDOMMethods())}disabled(){this.hasPatched&&(this.unpatchClassModules(g.getModules(this.moduleFilter.bind(this))),this.revertElement(document.querySelector("#app-mount")),this.hasPatched=!1)}patchClassModules(e){for(const t of e)this.patchClassModule("da",t)}unpatchClassModules(e){for(const t of e)this.unpatchClassModule("da",t)}shouldIgnore(e){return!isNaN(e)||(!!(e.endsWith("px")||e.endsWith("ch")||e.endsWith("em")||e.endsWith("ms"))||(!!e.startsWith("layerContainer-")||(!(!e.startsWith("#")||7!=e.length&&4!=e.length)||!(!e.includes("calc(")&&!e.includes("rgba")))))}moduleFilter(e){if("object"!=typeof e||Array.isArray(e))return!1;if(e.__esModule)return!1;if(!Object.keys(e).length)return!1;for(const t in e){const s=e[t];if("string"!=typeof s)return!1;if(!this.shouldIgnore(s)){if(1===s.split("-").length)return!1;if(!ct.test(s.split(" ")[0]))return!1}}return!0}patchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;const i=n.split(" ");for(const n of i){const i=n.match(ct);if(!i||!i.length||i.length<2)continue;const o=i[1].split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");t[s]+=` ${e}-${o}`}}}unpatchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;let i="";const o=n.split(" ");for(const t of o)t.startsWith(`${e}-`)||(i+=` ${t}`);t[s]=i.trim()}}normalizeElement(e){if(!(e instanceof Element))return;const t=e.classList;for(let s=0,n=t.length;st?e[0].toUpperCase()+e.slice(1):e).join("");e.classList.add(`da-${n}`)}for(const t of e.children)this.normalizeElement(t)}revertElement(e){if(!(e instanceof Element))return;e.children&&e.children.length&&this.revertElement(e.children[0]),e.nextElementSibling&&this.revertElement(e.nextElementSibling);const t=e.classList,s=[];for(let e=0;e{const o=[];t&&o.push(`category=${t.replace(/ /g,"%20")}`),e&&o.push(`term=${e.replace(/ /g,"%20")}`),n&&o.push(`from=${n}`);const r=`?${o.join("&")}`;i.get({url:`${this.endPoint}${r}${r?"&schema=new":"?schema=new"}`,json:!0},(e,t,n)=>{if(e)return s(null);const i=n.size+n.from;s({servers:n.results,size:n.size,from:n.from,total:n.total,next:i>=n.total?null:i})})})}static async join(e,t=!1){if(t)return gt.acceptInvite(e);try{return await fetch(`${this.joinEndPoint}/${e}`,{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),!0}catch(e){return!1}}static async checkConnection(){try{const e=await fetch("https://auth.discordservers.com/info",{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),t=await e.json();return this._accessToken=t.access_token,t}catch(e){return!1}}static connect(){return new Promise(e=>{const t=new ft(this.windowOptions),s=`https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=${this.connectEndPoint}`;t.webContents.on("did-navigate",(s,n)=>{n==this.connectEndPoint&&(t.close(),e())}),t.loadURL(s)})}static get windowOptions(){return{width:380,height:450,backgroundColor:"#282b30",show:!0,resizable:!0,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!0,webPreferences:{nodeIntegration:!1}}}}const yt=g.getByDisplayName("SettingsView");class vt extends q.Component{get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","MOBA Games","RPG Games","Tabletop Games","Sandbox Games","Simulation Games","Music","Community","Language","Programming","Other"]}constructor(e){super(e),this.state={category:"All",query:"",loading:!0,user:null,results:{servers:[],size:0,from:0,total:0,next:null}},this.changeCategory=this.changeCategory.bind(this),this.searchKeyDown=this.searchKeyDown.bind(this),this.connect=this.connect.bind(this),this.loadNextPage=this.loadNextPage.bind(this),this.join=this.join.bind(this)}componentDidMount(){this.checkConnection()}async checkConnection(){const e=await bt.checkConnection();if(!e)return this.setState({loading:!0,user:null});this.setState({user:e}),this.search()}async connect(){await bt.connect(),this.checkConnection()}searchKeyDown(e){this.state.loading||13!==e.which||this.search(e.target.value)}async search(e="",t=0){this.setState({query:e,loading:!0});const s=await bt.search({term:e,category:"All"==this.state.category?"":this.state.category,from:t});if(!s)return this.setState({results:{servers:[],size:0,from:0,total:0,next:null}});this.setState({loading:!1,results:s})}async changeCategory(e){this.state.loading||(await new Promise(t=>this.setState({category:e},t)),this.search())}loadNextPage(){this.state.loading||this.search(this.state.query,this.state.results.next)}async join(e,t=!1){return await bt.join(e,t)}get searchBox(){return q.createElement(Fe,{onKeyDown:this.searchKeyDown,placeholder:`${N.PublicServers.search}...`})}get title(){if(!this.state.user)return N.PublicServers.notConnected;if(this.state.loading)return`${N.PublicServers.loading}...`;const e=this.state.results.from+1,t=this.state.results.total,s=this.state.results.next?this.state.results.next:t;let n=N.PublicServers.results.format({start:e,end:s,total:t,category:this.state.category});return this.state.query&&(n+=" "+N.PublicServers.query.format({query:this.state.query})),n}get content(){const e=this.state.user?null:{title:N.PublicServers.connect,onClick:this.connect},t="All"!=this.state.category&&this.state.user?null:this.bdServer,s=this.state.results.servers.map(e=>q.createElement(ut,{key:e.identifier,server:e,joined:bt.hasJoined(e.identifier),join:this.join,defaultAvatar:bt.getDefaultAvatar}));return[q.createElement(Se,{text:this.title,button:e}),t,s,this.state.results.next?this.nextButton:null,this.state.results.servers.length>0&&q.createElement(Se,{text:this.title})]}get nextButton(){return q.createElement("button",{type:"button",className:"bd-button bd-button-next",onClick:this.loadNextPage},this.state.loading?N.PublicServers.loading:N.PublicServers.loadMore)}get connection(){const{user:e}=this.state;return e?q.createElement("div",{id:"bd-connection"},q.createElement("div",{className:"bd-footnote"},N.PublicServers.connection.format(e)),q.createElement("button",{type:"button",className:"bd-button bd-button-reconnect",onClick:this.connect},N.PublicServers.reconnect)):q.createElement("div",{id:"bd-connection"})}get bdServer(){const e={name:"BetterDiscord",online:"7500+",members:"20000+",categories:["community","programming","support"],description:"Official BetterDiscord server for plugins, themes, support, etc",identifier:"86004744966914048",iconUrl:"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",nativejoin:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0};return q.createElement(ut,{server:e,pinned:!0,joined:bt.hasJoined(e.identifier),defaultAvatar:bt.getDefaultAvatar})}render(){const e=this.categoryButtons.map(e=>({section:e,label:e,element:()=>this.content}));return q.createElement(yt,{onClose:this.props.close,onSetSection:this.changeCategory,section:this.state.category,sections:[{section:"HEADER",label:N.PublicServers.search},{section:"CUSTOM",element:()=>this.searchBox},{section:"HEADER",label:N.PublicServers.categories},...e,{section:"DIVIDER"},{section:"HEADER",label:q.createElement("a",{href:"https://discordservers.com",target:"_blank"},"DiscordServers.com")},{section:"DIVIDER"},{section:"CUSTOM",element:()=>this.connection}],theme:"dark"})}}const wt=g.getByProps("pushLayer");var Ct=new class extends Qe{get name(){return"PublicServers"}get category(){return"general"}get id(){return"publicServers"}enabled(){const e=g.find(e=>e.default&&"NavigableGuilds"==e.default.displayName),t=g.findByDisplayName("Guilds");e||t||this.warn("Can't find GuildList component"),this.guildPatch=this.after(e||t.prototype,e?"default":"render",this._appendButton),this._appendButton()}disabled(){this.unpatchAll(),h.query("#bd-pub-li").remove()}_appendButton(){const e=f.GuildClasses.wrapper.split(" ")[0],t=h.query(`.${e} .scroller-2TZvBN >:first-child`);h.after(t,this.button)}openPublicServers(){wt.pushLayer(()=>f.React.createElement(vt,{close:wt.popLayer}))}get button(){const e=h.createElement(`
`),t=h.createElement(`
${N.PublicServers.button}
`);return t.addEventListener("click",()=>{this.openPublicServers()}),e.append(t),e}},St=new class extends Qe{get name(){return"VoiceDisconnect"}get category(){return"general"}get id(){return"voiceDisconnect"}constructor(){super(),this.beforeUnload=this.beforeUnload.bind(this)}enabled(){window.addEventListener("beforeunload",this.beforeUnload)}disabled(){window.removeEventListener("beforeunload",this.beforeUnload)}beforeUnload(){f.ChannelActions.selectVoiceChannel(null,null)}};const Et=g.getModule(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName);var Pt=new class extends Qe{get name(){return"ColoredText"}get category(){return"appearance"}get id(){return"coloredText"}enabled(){this.injectColoredText()}disabled(){this.unpatchAll()}injectColoredText(){this.after(Et.prototype,"render",(e,t,s)=>{this.after(s.props,"children",{silent:!0,after:({returnValue:t})=>{const s=t.props.children[1],n=e.props.message.colorString;s&&n&&(s.props.style={color:n})}})})}removeColoredText(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})}},xt=new class extends Qe{get name(){return"DarkMode"}get category(){return"appearance"}get id(){return"darkMode"}enabled(){document.getElementById("app-mount").classList.add("bda-dark","bd-dark")}disabled(){document.getElementById("app-mount").classList.remove("bda-dark","bd-dark")}},kt=new class extends Qe{get name(){return"MinimalMode"}get category(){return"appearance"}get id(){return"minimalMode"}get hideChannelsID(){return"hideChannels"}get hideChannels(){return this.get(this.hideChannelsID)}constructor(){super(),this.enableHideChannels=this.enableHideChannels.bind(this),this.disableHideChannels=this.disableHideChannels.bind(this)}enabled(){document.body.classList.add("bd-minimal"),this.hideChannels&&this.enableHideChannels(),this.hideChannelCancel=this.registerSetting(this.hideChannelsID,this.enableHideChannels,this.disableHideChannels)}disabled(){document.body.classList.remove("bd-minimal"),this.hideChannels&&this.disableHideChannels(),this.hideChannelCancel&&this.hideChannelCancel()}enableHideChannels(){document.body.classList.add("bd-minimal-chan")}disableHideChannels(){document.body.classList.remove("bd-minimal-chan")}},At=new class extends Qe{get name(){return"VoiceMode"}get category(){return"appearance"}get id(){return"voiceMode"}enabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility","hidden"),document.querySelector(".chat-3bRxxu").style.setProperty("min-width","0px"),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","100000")}disabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility",""),document.querySelector(".chat-3bRxxu").style.setProperty("min-width",""),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","")}};const Dt=g.getByDisplayName("Tooltip");class Mt extends q.Component{constructor(e){super(e),this.state={shouldAnimate:!this.animateOnHover,isFavorite:this.props.isFavorite},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onClick=this.onClick.bind(this),this.toggleFavorite=this.toggleFavorite.bind(this)}get animateOnHover(){return L.get("emotes","general","animateOnHover")}get label(){return this.props.modifier?`${this.props.name}:${this.props.modifier}`:this.props.name}get modifierClass(){return this.props.modifier?` emote${this.props.modifier}`:""}onMouseEnter(){!this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!0})}onMouseLeave(){this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!1})}onClick(e){this.props.onClick&&this.props.onClick(e)}toggleFavorite(e){e.preventDefault(),e.stopPropagation(),this.state.isFavorite?y.emit("emotes-favorite-removed",this.label):y.emit("emotes-favorite-added",this.label,this.props.url),this.setState({isFavorite:!this.state.isFavorite})}render(){return q.createElement(Dt,{color:"black",position:"top",text:this.label,delay:750},e=>q.createElement("div",Object.assign({className:"emotewrapper"+(this.props.jumboable?" jumboable":""),onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onClick:this.onClick},e),q.createElement("img",{draggable:!1,className:"emote"+this.modifierClass+(this.props.jumboable?" jumboable":"")+(this.state.shouldAnimate?"":" stop-animation"),dataModifier:this.props.modifier,alt:this.label,src:this.props.url}),q.createElement("input",{className:"fav"+(this.state.isFavorite?" active":""),title:N.Emotes.favoriteAction,type:"button",onClick:this.toggleFavorite})))}}const Nt=s(3),Lt={TwitchGlobal:new M("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),TwitchSubscriber:new M("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),FrankerFaceZ:new M("https://cdn.frankerfacez.com/emoticon/{{id}}/1"),BTTV:new M("https://cdn.betterttv.net/emote/{{id}}/1x")},Bt={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{}},Tt=[],jt=["twitch","subscriber","bttv","ffz"],Ft=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"];var Ot=new class extends Qe{get name(){return"Emotes"}get collection(){return"settings"}get category(){return"general"}get id(){return"emotes"}get categories(){return Object.keys(Bt).filter(e=>this.isCategoryEnabled(e))}get shouldDownload(){return L.get("emotes",this.category,"download")}isCategoryEnabled(e){return super.get("emotes","categories",e.toLowerCase())}get(e){return super.get("emotes","general",e)}get MessageContentComponent(){return g.getModule(e=>e.defaultProps&&e.defaultProps.hasOwnProperty("disableButtons"))}get Emotes(){return Bt}get TwitchGlobal(){return Bt.TwitchGlobal}get TwitchSubscriber(){return Bt.TwitchSubscriber}get BTTV(){return Bt.BTTV}get FrankerFaceZ(){return Bt.FrankerFaceZ}get blacklist(){return Tt}get favorites(){return this.favoriteEmotes}getUrl(e,t){return Lt[e].format({id:Bt[e][t]})}getCategory(e){return Bt[e]}getRemoteFile(e){return u.repoUrl(`data/emotes/${e.toLowerCase()}.json`)}initialize(){super.initialize();const e=S.getBDData("favoriteEmotes");this.favoriteEmotes=e||{},this.addFavorite=this.addFavorite.bind(this),this.removeFavorite=this.removeFavorite.bind(this),this.onCategoryToggle=this.onCategoryToggle.bind(this),this.resetEmotes=this.resetEmotes.bind(this)}async enabled(){L.registerCollection("emotes","Emotes",r,{title:N.Emotes.clearEmotes,onClick:this.resetEmotes}),await this.getBlacklist(),await this.loadEmoteData(),y.on("emotes-favorite-added",this.addFavorite),y.on("emotes-favorite-removed",this.removeFavorite),y.on("setting-updated",this.onCategoryToggle)}disabled(){y.off("setting-updated",this.onCategoryToggle),y.off("emotes-favorite-added",this.addFavorite),y.off("emotes-favorite-removed",this.removeFavorite),L.removeCollection("emotes"),this.emptyEmotes(),this.cancelEmoteRender&&(this.cancelEmoteRender(),delete this.cancelEmoteRender)}onCategoryToggle(e,t,s,n){if("emotes"==e&&"categories"==t)return n?this.loadEmoteData(s):this.unloadEmoteData(s)}addFavorite(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.saveFavorites()}removeFavorite(e){this.favoriteEmotes.hasOwnProperty(e)&&(delete this.favoriteEmotes[e],this.saveFavorites())}isFavorite(e){return this.favoriteEmotes.hasOwnProperty(e)}saveFavorites(){S.setBDData("favoriteEmotes",this.favoriteEmotes)}emptyEmotes(){for(const e in Bt)Object.assign(Bt,{[e]:{}})}patchMessageContent(){this.cancelEmoteRender||(this.cancelEmoteRender=this.after(this.MessageContentComponent.prototype,"render",(e,t,s)=>{this.after(s.props,"children",(e,t,s)=>{if(0==this.categories.length)return;const n=s.props.children[1];if(!n.props.children)return;const i=n.props.children[1];if(i&&i.length){for(let e=0;e"string"==typeof e&&""==e.replace(/\s*/,"")||(!(!e.type||"BDEmote"!=e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName))))for(const e of i)"object"==typeof e&&("BDEmote"==e.type.name?e.props.jumboable=!0:e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName&&(e.props.children.props.jumboable=!0))}})}))}async getBlacklist(){try{const e="Blacklist",t=S.emotesExist(e),s=await this.isCacheValid(e),n=s||!s&&t&&!this.shouldDownload?S.getEmoteData(e):await this.downloadEmotes(e);Tt.push(...n)}catch(e){}}isCacheValid(e){return new Promise(t=>{const s=S.getCacheHash("emotes",e);if(!s)return t(!1);Nt.head({url:this.getRemoteFile(e),headers:{"If-None-Match":s}},(e,s)=>{t(304==s.statusCode)})})}async loadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(Bt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase())),W.show(N.Emotes.loading,{type:"info"}),this.emotesLoaded=!1;for(const t of e){const e=S.emotesExist(t),s=await this.isCacheValid(t);let n=null;if(s||!s&&e&&!this.shouldDownload){this.log(`Loading ${t} emotes from local cache.`);const e=S.getEmoteData(t);Object.keys(e).length>0&&(n=e)}n||(n=await this.downloadEmotes(t)),Object.assign(Bt[t],n),await new Promise(e=>setTimeout(e,1e3))}this.emotesLoaded=!0,y.dispatch("emotes-loaded"),W.show(N.Emotes.loaded,{type:"success"})}unloadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(Bt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase()));for(const t of e)delete Bt[t],Bt[t]={}}downloadEmotes(e){const t=this.getRemoteFile(e);this.log(`Downloading ${e} from ${t}`);const s={url:t,timeout:1e4,json:!0};return new Promise(t=>{Nt.get(s,(s,n,i)=>{if(s||200!=n.statusCode)return this.stacktrace(`Could not download ${e} emotes.`,s),t({});for(const e in i)(e.length<4||Tt.includes(e)||!i[e])&&delete i[e];S.saveEmoteData(e,i),S.setCacheHash("emotes",e,n.headers.etag),t(i),this.log(`Downloaded ${e}`)})})}resetEmotes(){const e=Object.keys(Bt);this.unloadEmoteData(e);for(const t of e)S.invalidateCache("emotes",t);this.loadEmoteData()}};const It=(e,t,s={})=>{const{onContextMenu:n,onClick:i}=s,o=h.createElement(`
\n ${e}\n
`);return n&&o.addEventListener("contextmenu",n),o.addEventListener("click",i),o};var zt=new class extends Qe{get name(){return"EmoteMenu"}get collection(){return"emotes"}get category(){return"general"}get id(){return"emoteMenu"}get hideEmojisID(){return"hideEmojiMenu"}get hideEmojis(){return this.get(this.hideEmojisID)}constructor(){super(),this.lastTab="bd-qem-emojis",this.qmeHeader=h.createElement('
\n \n \n
');for(const e of this.qmeHeader.getElementsByTagName("button"))e.addEventListener("click",this.switchMenu.bind(this));this.teContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.teContainerInner=this.teContainer.querySelector(".emote-menu-inner"),this.faContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.faContainerInner=this.faContainer.querySelector(".emote-menu-inner"),this.observer=new MutationObserver(e=>{for(const t of e)this.observe(t)}),this.enableHideEmojis=this.enableHideEmojis.bind(this),this.disableHideEmojis=this.disableHideEmojis.bind(this),this.updateTwitchEmotes=this.updateTwitchEmotes.bind(this)}async enabled(){return oe.alert("Emote Menu Broken","Emote Menu is currently broken, it is recommended to disable this until it is fixed.")}disabled(){y.off("emotes-loaded",this.updateTwitchEmotes),this.observer.disconnect(),this.disableHideEmojis(),this.hideEmojiCancel&&this.hideEmojiCancel()}enableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.add("bd-qme-hidden")}disableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.remove("bd-qme-hidden")}insertEmote(e){const t=u.getTextArea();u.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)}favContext(e){e.stopPropagation();const t=e.target.closest(".emote-container").children[0],s=$('
Remove
');s.css({top:e.pageY-$("#bd-qem-favourite-container").offset().top,left:e.pageX-$("#bd-qem-favourite-container").offset().left}),$(t).parent().append(s),s.on("click",e=>{e.preventDefault(),e.stopPropagation(),$(t).remove(),Ot.removeFavorite($(t).attr("title")),this.updateFavorites(),$(document).off("mousedown.emotemenu")}),$(document).on("mousedown.emotemenu",(function(e){"removemenu"!=e.target.id&&($("#removemenu").remove(),$(document).off("mousedown.emotemenu"))}))}switchMenu(e){let t="string"==typeof e?e:e.target.id;"bd-qem-emojis"==t&&this.hideEmojis&&(t="bd-qem-favourite");const s=$("#bd-qem-twitch"),n=$("#bd-qem-favourite"),i=$("#bd-qem-emojis");switch(s.removeClass("active"),n.removeClass("active"),i.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bd-qem-favourite-container").hide(),$("#bd-qem-twitch-container").hide(),t){case"bd-qem-twitch":s.addClass("active"),$("#bd-qem-twitch-container").show();break;case"bd-qem-favourite":n.addClass("active"),$("#bd-qem-favourite-container").show();break;case"bd-qem-emojis":i.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j input").focus()}t&&(this.lastTab=t)}observe(e){if(!(e.addedNodes.length&&e.addedNodes[0]instanceof Element))return;const t=e.addedNodes[0];if(!t.classList.contains("layer-v9HyYc")||!t.getElementsByClassName("emojiPicker-3m1S-j").length||t.querySelector(".emojiPicker-3m1S-j").parentElement.classList.contains("animatorLeft-1EQxU0"))return;const s=$(t);this.hideEmojis?s.addClass("bd-qme-hidden"):s.removeClass("bd-qme-hidden"),s.prepend(this.qmeHeader),s.append(this.teContainer),s.append(this.faContainer),this.switchMenu(this.lastTab)}updateTwitchEmotes(){for(;this.teContainerInner.firstChild;)this.teContainerInner.firstChild.remove();for(const e in Ot.getCategory("TwitchGlobal")){if(!Ot.getCategory("TwitchGlobal").hasOwnProperty(e))continue;const t=Ot.getUrl("TwitchGlobal",e),s=It(e,t,{onClick:this.insertEmote.bind(this,e)});this.teContainerInner.append(s)}}updateFavorites(){for(;this.faContainerInner.firstChild;)this.faContainerInner.firstChild.remove();for(const e in Ot.favorites){const t=Ot.favorites[e],s=It(e,t,{onClick:this.insertEmote.bind(this,e),onContextMenu:this.favContext.bind(this)});this.faContainerInner.append(s)}Ot.saveFavorites()}},Rt=new class extends Qe{get name(){return"DeveloperMode"}get category(){return"developer"}get id(){return"developerMode"}get selectorModeID(){return"copySelector"}get selectorMode(){return this.get(this.selectorModeID)}constructor(){super(),this.copySelectorListener=this.copySelectorListener.bind(this)}enabled(){document.addEventListener("contextmenu",this.copySelectorListener)}disabled(){document.removeEventListener("contextmenu",this.copySelectorListener)}copySelectorListener(e){e.stopPropagation();const t=this.getSelector(e.target);setImmediate((function(){let s=h.query(".contextMenu-HLZMGh");if(!s){const t=h.query("#app-mount"),n=h.createElement('
');s=h.createElement('
'),n.append(s),t.append(n),n.style.top=e.clientY+"px",n.style.left=e.clientX+"px",n.style.zIndex="1002";const i=function(e){e.keyCode&&27!==e.keyCode||(n.remove(),document.removeEventListener("click",i),document.removeEventListener("contextmenu",i),document.removeEventListener("keyup",i))};document.addEventListener("click",i),document.addEventListener("contextmenu",i),document.addEventListener("keyup",i)}const n=h.createElement('
'),i=h.createElement('
');i.append(h.createElement('
Copy Selector
')),i.addEventListener("click",()=>{f.ElectronModule.copy(t),s.style.display="none"}),n.append(i),s.append(n)}))}getSelector(e){if(e.id)return`#${e.id}`;const t=this.getRules(e),s=t[t.length-1];return s?s.selectorText:e.classList.length?`.${Array.from(e.classList).join(".")}`:`.${Array.from(e.parentElement.classList).join(".")}`}getRules(e,t=e.ownerDocument.styleSheets){return[...t].filter(e=>!e.href||!e.href.includes("BetterDiscordApp")).map(e=>[...e.cssRules||[]]).flat().filter(t=>t&&t.selectorText&&e.matches(t.selectorText)&&t.style.length&&t.selectorText.split(", ").length<8&&!t.selectorText.split(", ").includes("*"))}},$t=new class extends Qe{get name(){return"Debugger"}get category(){return"developer"}get id(){return"debuggerHotkey"}enabled(){document.addEventListener("keydown",this.debugListener)}disabled(){document.removeEventListener("keydown",this.debugListener)}debugListener(e){119!==e.which&&118!=e.which||(e.preventDefault(),e.stopImmediatePropagation())}};const qt=s(0),Ht=s(2),Ut=s(1),_t=qt.remote.BrowserWindow,Wt=qt.remote.getCurrentWebContents();var Gt=new class extends Qe{get name(){return"ReactDevTools"}get category(){return"developer"}get id(){return"reactDevTools"}initialize(){super.initialize(),this.findExtension()}findExtension(){let e="";if(e="win32"===process.platform?Ut.resolve(process.env.LOCALAPPDATA,"Google/Chrome/User Data"):"linux"===process.platform?Ut.resolve(process.env.HOME,".config/google-chrome"):"darwin"===process.platform?Ut.resolve(process.env.HOME,"Library/Application Support/Google/Chrome"):Ut.resolve(process.env.HOME,".config/chromium"),e+="/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/",Ht.existsSync(e)){const t=Ht.readdirSync(e);e=Ut.resolve(e,t[t.length-1])}this.extensionPath=e,this.isExtensionInstalled=Ht.existsSync(e),this.listener=this.listener.bind(this)}enabled(){if(this.isExtensionInstalled||this.findExtension(),!this.isExtensionInstalled)return oe.alert("Extension Not Found","Unable to find the React Developer Tools extension on your PC. Please install the extension on your local Chrome installation.");setImmediate(()=>Wt.on("devtools-opened",this.listener)),Wt.isDevToolsOpened()&&this.listener()}disabled(){Wt.removeListener("devtools-opened",this.listener)}listener(){if(!this.isExtensionInstalled)return;_t.removeDevToolsExtension("React Developer Tools"),_t.addDevToolsExtension(this.extensionPath)?this.log("Successfully installed react devtools."):this.error("Couldn't find react devtools in chrome extensions!")}};class Vt extends q.Component{render(){return q.createElement("svg",{className:"bd-logo "+this.props.className,height:"100%",width:this.props.size||"16px",viewBox:"0 0 2000 2000",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}},q.createElement("metadata",null),q.createElement("defs",null,q.createElement("filter",{id:"shadow1"},q.createElement("feDropShadow",{dx:"20",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"})),q.createElement("filter",{id:"shadow2"},q.createElement("feDropShadow",{dx:"15",dy:"0",stdDeviation:"20",floodColor:"rgba(255,255,255,0.15)"})),q.createElement("filter",{id:"shadow3"},q.createElement("feDropShadow",{dx:"10",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"}))),q.createElement("g",null,q.createElement("path",{style:{filter:"url(#shadow3)"},fill:"#171717",opacity:"1",d:"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z"}),q.createElement("path",{style:{filter:"url(#shadow2)"},fill:"#3E82E5",opacity:"1",d:"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z"}),q.createElement("path",{style:{filter:"url(#shadow1)"},fill:"#FFFFFF",opacity:"1",d:"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z"})))}}const Jt=f.React,Yt=g.getByDisplayName("Tooltip");var Xt=new class{initialize(){u.suppressErrors(this.patchSocial.bind(this),"BD Social Patch")(),u.suppressErrors(this.patchGuildPills.bind(this),"BD Guild Pills Patch")(),u.suppressErrors(this.patchGuildListItems.bind(this),"BD Guild List Items Patch")(),u.suppressErrors(this.patchGuildSeparator.bind(this),"BD Guild Separator Patch")(),u.suppressErrors(this.patchMessageHeader.bind(this),"BD Message Header Patch")(),u.suppressErrors(this.patchMemberList.bind(this),"BD Member List Patch")()}patchSocial(){if(this.socialPatch)return;const e=g.getByDisplayName("TabBar"),t=g.getByDisplayName("Anchor");e&&(this.socialPatch=j.after("ComponentPatcher",e.prototype,"render",(e,s,n)=>{const i=n.props.children;if(!i||!i.length||i.length<3)return;if("Separator"!==i[i.length-3].type.displayName)return;if(!i[i.length-2].type.toString().includes("socialLinks"))return;if(t){const e=i[i.length-2].type,s=function(){const s=e(...arguments);return s.props.children.push(f.React.createElement(t,{className:"bd-social-link",href:"https://twitter.com/BandagedBD",title:"BandagedBD",target:"_blank"},f.React.createElement(Vt,{size:"16px",className:"bd-social-logo"}))),s};i[i.length-2].type=s}const r=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},`Injector ${o.version}`),a=`(${o.hash?o.hash.substring(0,7):o.branch})`,l=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},`BBD ${o.bbdVersion} `,f.React.createElement("span",{className:"versionHash-2gXjIB da-versionHash"},a)),d=i[i.length-1].type;i[i.length-1].type=function(){const e=d(...arguments);return e.props.children.splice(e.props.children.length-1,0,r),e.props.children.splice(1,0,l),e}}))}patchGuildListItems(){if(this.guildListItemsPatch)return;const e=f.GuildClasses.listItem.split(" ")[0],t=f.GuildClasses.blobContainer.split(" ")[0],s=u.getReactInstance(document.querySelector(`.${e} .${t}`).parentElement).return.type;s&&(this.guildListItemsPatch=j.after("ComponentPatcher",s.prototype,"render",(e,t,s)=>{if(!s||!e)return;const n=e.props;return s.props.className+=" bd-guild",n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.audio&&(s.props.className+=" bd-audio"),n.video&&(s.props.className+=" bd-video"),n.badge&&(s.props.className+=" bd-badge"),n.animatable&&(s.props.className+=" bd-animatable"),s}))}patchGuildPills(){if(this.guildPillPatch)return;const e=g.getModule(e=>e.default&&!e.default.displayName&&e.default.toString&&e.default.toString().includes("translate3d"));e&&(this.guildPillPatch=j.after("ComponentPatcher",e,"default",(e,t,s)=>{const n=t[0];return n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.hovered&&(s.props.className+=" bd-hovered"),s}))}patchGuildSeparator(){if(this.guildSeparatorPatch)return;const e=g.getByDisplayName("Guilds"),t=g.getByProps("renderListItem");if(!t||!e)return;const s=function(){const e=t.Separator(...arguments);return e.props.className+=" bd-guild-separator",e};this.guildSeparatorPatch=j.after("ComponentPatcher",e.prototype,"render",(e,t,n)=>{const i=u.findInReactTree(n,e=>e.type&&!e.type.displayName&&"function"==typeof e.type&&u.isEmpty(e.props));i&&(i.type=s)})}patchMessageHeader(){if(this.messageHeaderPatch)return;const e=g.getByProps("MessageTimestamp"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.default&&(this.messageHeaderPatch=j.after("ComponentPatcher",e,"default",(e,s,n)=>{const i=u.getNestedProp(s[0],"message.author"),o=u.getNestedProp(n,"props.children.1.props.children.1.props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Jt.createElement(Yt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Jt.createElement(t,Object.assign({className:"bd-chat-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Jt.createElement(Vt,{size:"16px",className:"bd-logo"}))))}))}patchMemberList(){if(this.memberListPatch)return;const e=g.findByDisplayName("MemberListItem"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.prototype&&e.prototype.renderDecorators&&(this.memberListPatch=j.after("ComponentPatcher",e.prototype,"renderDecorators",(e,s,n)=>{const i=u.getNestedProp(e,"props.user"),o=u.getNestedProp(n,"props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Jt.createElement(Yt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Jt.createElement(t,Object.assign({className:"bd-member-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Jt.createElement(Vt,{size:"16px",className:"bd-logo"}))))}))}};const Zt=f.GuildClasses;function Kt(){}Kt.prototype.setConfig=function(e){Object.assign(o,e)},Kt.prototype.init=async function(){if(S.initialize(),await A.initialize(),o.versiono.version&&oe.showConfirmationModal(N.Startup.updateAvailable,N.Startup.updateInfo.format({version:e}),{confirmText:N.Startup.updateNow,cancelText:N.Startup.maybeLater,onConfirm:async()=>{const e=()=>{oe.alert(N.Startup.updateFailed,N.Startup.manualUpdate)};try{if(!await this.updateInjector())return e();const t=s(0).remote.app;t.relaunch(),t.exit()}catch(t){e()}}}),c.log("Startup","Initializing Settings"),L.initialize(),D.initialize(),await this.waitForGuilds(),R.initialize(),Xt.initialize();for(const e in n)n[e].initialize();c.log("Startup","Loading Plugins");const t=Xe.initialize();c.log("Startup","Loading Themes");const i=Ke.initialize();c.log("Startup","Removing Loading Icon"),document.getElementsByClassName("bd-loaderv2")[0].remove(),c.log("Startup","Collecting Startup Errors"),oe.showAddonErrors({plugins:t,themes:i});const r=S.getBDData("version");o.bbdVersion>r&&(oe.showChangelogModal(l),S.setBDData("version",o.bbdVersion))},Kt.prototype.waitForGuilds=function(){let e=0;return new Promise(t=>{const s=function(){e++,"complete"!=document.readyState&&setTimeout(s,100);const n=Zt.wrapper.split(" ")[0],i=Zt.listItem.split(" ")[0],r=Zt.blobContainer.split(" ")[0];return document.querySelectorAll(`.${n} .${i} .${r}`).length>0||e>=50?t(o.deferLoaded=!0):void setTimeout(s,100)};s()})},Kt.prototype.updateInjector=async function(){const e=S.injectionPath;if(!e)return!1;const t=s(2),n=s(1),i=s(6),o=s(7),r=s(8),a=s(3),l=n.resolve(e,".."),d=n.basename(e),h="https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip",u=n.resolve(l,"injector.zip"),p=n.resolve(l,"BetterDiscordApp-injector");c.log("InjectorUpdate","Downloading "+h);let m=await new Promise(e=>{a.get({url:h,encoding:null},async(s,n,i)=>{if(s||200!==n.statusCode)return e(!1);await new Promise(e=>t.exists(u,e))&&await new Promise(e=>t.rename(u,`${u}.bak${Math.round(performance.now())}`,e)),c.log("InjectorUpdate","Writing "+u),t.writeFile(u,i,t=>e(!t))})});if(!m)return m;await new Promise(e=>t.exists(p,e))&&await new Promise(e=>t.rename(p,`${p}.bak${Math.round(performance.now())}`,e));const g=await new Promise(e=>o.open(u,{lazyEntries:!0},(t,s)=>e(s)));g.on("entry",(function(e){if(e.fileName.endsWith("/"))return g.readEntry();c.log("InjectorUpdate","Extracting "+e.fileName);const s=n.resolve(l,e.fileName);r.sync(n.dirname(s)),g.openReadStream(e,(function(e,n){if(e)return m=!1;n.on("end",(function(){g.readEntry()})),n.pipe(t.createWriteStream(s))}))})),g.readEntry(),await new Promise(e=>g.once("end",e));const f=n.resolve(l,`${d}.bak${Math.round(performance.now())}`);return await new Promise(s=>t.rename(e,f,s)),c.log("InjectorUpdate",`Renaming ${n.basename(p)} to ${d}`),m=await new Promise(s=>t.rename(p,e,e=>s(!e))),m?m?(await new Promise(e=>i(f,e)),await new Promise(e=>t.unlink(u,e)),c.log("InjectorUpdate","Injector Updated!"),m):(c.err("InjectorUpdate","Something went wrong... restoring backups."),await new Promise(e=>i(p,e)),await new Promise(s=>t.rename(f,e,s)),m):(c.err("InjectorUpdate","Failed to rename the final directory"),m)};var Qt=new Kt;const es={get React(){return f.React},get ReactDOM(){return f.ReactDOM},get WindowConfigFile(){return""},get settings(){return L.collections},get emotes(){return{}},get version(){return o.version},getAllWindowPreferences:function(){return S.getData("windowprefs")||{}},getWindowPreference:function(e){return this.getAllWindowPreferences()[e]},setWindowPreference:function(e,t){const s=this.getAllWindowPreferences();return s[e]=t,S.setData("windowprefs",s)},injectCSS:function(e,t){D.injectStyle(e,t)},clearCSS:function(e){D.removeStyle(e)},linkJS:function(e,t){return D.injectScript(e,t)},unlinkJS:function(e){D.removeScript(e)},alert:function(e,t){oe.alert(e,t)},showConfirmationModal:function(e,t,s={}){return oe.showConfirmationModal(e,t,s)},showToast:function(e,t={}){W.show(e,t)},findModule:function(e){return g.getModule(e)},findAllModules:function(e){return g.getModule(e,!1)},findModuleByProps:function(...e){return g.getByProps(...e)},findModuleByPrototypes:function(...e){return g.getByPrototypes(...e)},findModuleByDisplayName:function(e){return g.getByDisplayName(e)},getInternalInstance:function(e){if(e instanceof window.jQuery||e instanceof Element)return e instanceof jQuery&&(e=e[0]),u.getReactInstance(e)},loadData:function(e,t){return S.getPluginData(e,t)}};es.getData=es.loadData,es.saveData=function(e,t,s){return S.setPluginData(e,t,s)},es.setData=es.saveData,es.deleteData=function(e,t){return S.deletePluginData(e,t)},es.monkeyPatch=function(e,t,s){const{before:n,after:i,instead:o,once:r=!1,silent:a=!1,force:l=!1}=s,d=s.displayName||e.displayName||e.name||e.constructor.displayName||e.constructor.name;if(a||console.log("patch",t,"of",d),!e[t]){if(!l)return console.error(t,"does not exist for",d);e[t]=function(){}}const c=e[t],h=()=>{a||console.log("unpatch",t,"of",d),e[t]=c};return e[t]=function(){const s={thisObject:this,methodArguments:arguments,cancelPatch:h,originalMethod:c,callOriginalMethod:()=>s.returnValue=s.originalMethod.apply(s.thisObject,s.methodArguments)};if(o){const n=u.suppressErrors(o,"`instead` callback of "+e[t].displayName)(s);void 0!==n&&(s.returnValue=n)}else n&&u.suppressErrors(n,"`before` callback of "+e[t].displayName)(s),s.callOriginalMethod(),i&&u.suppressErrors(i,"`after` callback of "+e[t].displayName)(s);return r&&h(),s.returnValue},e[t].__monkeyPatched=!0,e[t].__originalMethod||(e[t].__originalMethod=c),e[t].displayName="patched "+(e[t].displayName||t),h},es.onRemoved=function(e,t){return u.onRemoved(e,t)},es.suppressErrors=function(e,t){return u.suppressErrors(e,t)},es.testJSON=function(e){return u.testJSON(e)},es.getPlugin=function(e){return c.warn("BdApi","getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)"),Xe.addonList.find(t=>t.name==e)},es.isPluginEnabled=function(e){c.warn("BdApi","isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)");const t=this.getPlugin(e);return!!t&&Xe.isEnabled(t.id)},es.isThemeEnabled=function(e){c.warn("BdApi","isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)");const t=Ke.addonList.find(t=>t.name==e);return!!t&&Ke.isEnabled(t.id)},es.isSettingEnabled=function(e,t,s){return L.get(e,t,s)},es.enableSetting=function(e,t,s){return L.set(e,t,s,!0)},es.disableSetting=function(e,t,s){return L.set(e,t,s,!1)},es.toggleSetting=function(e,t,s){return L.set(e,t,s,!L.get(e,t,s))},es.getBDData=function(e){return S.getBDData(e)},es.setBDData=function(e,t){return S.setBDData(e,t)};const ts=e=>new class{get folder(){return e.folder}isEnabled(t){return e.isEnabled(t)}enable(t){return e.enableAddon(t)}disable(t){return e.disableAddon(t)}toggle(t){return e.toggleAddon(t)}reload(t){return e.reloadAddon(t)}get(t){return e.addonList.find(e=>e.id==t||e.filename==t)}getAll(){return e.addonList}};es.Plugins=ts(Xe),es.Themes=ts(Ke),Object.freeze(es),Object.freeze(es.Plugins),Object.freeze(es.Themes);var ss=es;s.d(t,"default",(function(){return is})),function(){const e=Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype,"contentWindow").get;Object.defineProperty(HTMLIFrameElement.prototype,"contentWindow",{get:function(){const t=Reflect.apply(e,this,arguments);return new Proxy(t,{getOwnPropertyDescriptor:function(e,t){if("localStorage"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){if("localStorage"===t)return null;const s=e[t];return"function"==typeof s?s.bind(e):s}})}}),Object.defineProperty(Reflect,"apply",{value:Reflect.apply,writable:!1,configurable:!1}),Object.defineProperty(Function.prototype,"bind",{value:Function.prototype.bind,writable:!1,configurable:!1});const t=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){const e=arguments[1];return e.toLowerCase().includes("api/webhooks")?null:Reflect.apply(t,this,arguments)}}();const ns=document.createElement("div");ns.className="bd-loaderv2",ns.title="BandagedBD is loading...",document.body.appendChild(ns),window.BdApi=ss;class is{constructor(e){Qt.setConfig(e)}init(){Qt.init()}}!function(){const e="betterdiscord/",t=s(4),n=t._load;t._load=function(t){if("betterdiscord"===t||t.startsWith(e)){if("api"==t.substr(e.length))return ss}return n.apply(this,arguments)}}()}]).default; \ No newline at end of file +var Core=function(e){var t={};function s(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.l=!0,i.exports}return s.m=e,s.c=t,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)s.d(n,i,function(t){return e[t]}.bind(null,i));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=9)}([function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")},function(e,t){e.exports=require("request")},function(e,t){e.exports=require("module")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("rimraf")},function(e,t){e.exports=require("yauzl")},function(e,t){e.exports=require("mkdirp")},function(e,t,s){"use strict";s.r(t),s.d(t,"default",(function(){return ts}));var n={};s.r(n),s.d(n,"CustomCSS",(function(){return it})),s.d(n,"WindowPrefs",(function(){return ot})),s.d(n,"TwentyFourHour",(function(){return rt})),s.d(n,"ClassNormalizer",(function(){return lt})),s.d(n,"PublicServers",(function(){return yt})),s.d(n,"VoiceDisconnect",(function(){return vt})),s.d(n,"ColoredText",(function(){return Ct})),s.d(n,"DarkMode",(function(){return St})),s.d(n,"MinimalMode",(function(){return Et})),s.d(n,"VoiceMode",(function(){return Pt})),s.d(n,"EmoteModule",(function(){return Tt})),s.d(n,"EmoteMenu",(function(){return Ft})),s.d(n,"CopySelector",(function(){return Ot})),s.d(n,"Debugger",(function(){return It})),s.d(n,"ReactDevTools",(function(){return _t}));var i={Panels:{plugins:"Plugins",themes:"Themes",customcss:"Custom CSS"},Collections:{settings:{name:"Settings",general:{name:"General",emotes:{name:"Emote System",note:"Enables BD's emote system"},publicServers:{name:"Public Servers",note:"Display public servers button"},voiceDisconnect:{name:"Voice Disconnect",note:"Disconnect from voice server when closing Discord"},twentyFourHour:{name:"24-Hour Timestamps",note:"Hides channels when in minimal mode"},classNormalizer:{name:"Normalize Classes",note:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)"},showToasts:{name:"Show Toasts",note:"Shows a small notification for important information"}},appearance:{name:"Appearance",voiceMode:{name:"Voice Mode",note:"Hides everything that isn't voice chat"},minimalMode:{name:"Minimal Mode",note:"Hide elements and reduce the size of elements"},hideChannels:{name:"Hide Channels",note:"Hides channels when in minimal mode"},darkMode:{name:"Dark Mode",note:"Make certain elements dark by default"},coloredText:{name:"Colored Text",note:"Make text colour the same as role color"}},addons:{name:"Addon Manager",addonErrors:{name:"Show Addon Errors",note:"Shows a modal with plugin/theme errors"},autoScroll:{name:"Scroll To Settings",note:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)"},autoReload:{name:"Automatic Loading",note:"Automatically loads, reloads, and unloads plugins and themes"},editAction:{name:"Edit Action",note:"Where plugins & themes appear when editing",options:{detached:"Detached Window",system:"System Editor"}}},customcss:{name:"Custom CSS",customcss:{name:"Custom CSS",note:"Enables the Custom CSS tab"},liveUpdate:{name:"Live Update",note:"Updates the css as you type"},startDetached:{name:"Start Detached",note:"Clicking the Custom CSS tab opens the editor in a separate window"},nativeOpen:{name:"Open in Native Editor",note:"Clicking the Custom CSS tab opens your custom css in your native editor"},openAction:{name:"Editor Location",note:"Where Custom CSS should open by default",options:{settings:"Settings Menu",detached:"Detached Window",system:"System Editor"}}},developer:{name:"Developer Settings",debuggerHotkey:{name:"Debugger Hotkey",note:"Allows activating debugger when pressing F8"},copySelector:{name:"Copy Selector",note:'Adds a "Copy Selector" option to context menus when developer mode is active'},reactDevTools:{name:"React Developer Tools",note:"Injects your local installation of React Developer Tools into Discord"}},window:{name:"Window Preferences",transparency:{name:"Enable Transparency",note:"Enables the main window to be see-through (requires restart)"},frame:{name:"Window Frame",note:"Adds the native os window frame to the main window"}}},emotes:{name:"Emotes",general:{name:"General",download:{name:"Download Emotes",note:"Download emotes whenever they are out of date"},emoteMenu:{name:"Emote Menu",note:"Show Twitch/Favourite emotes in emote menu"},hideEmojiMenu:{name:"Hide Emoji Menu",note:"Hides Discord's emoji menu when using emote menu"},autoCaps:{name:"Emote Autocapitalization",note:"Autocapitalize emote commands"},showNames:{name:"Show Names",note:"Show emote names on hover"},modifiers:{name:"Show Emote Modifiers",note:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)"},animateOnHover:{name:"Animate On Hover",note:"Only animate the emote modifiers on hover"}},categories:{name:"Categories",twitchglobal:{name:"Twitch Globals",note:"Show Twitch global emotes"},twitchsubscriber:{name:"Twitch Subscribers",note:"Show Twitch subscriber emotes"},frankerfacez:{name:"FrankerFaceZ",note:"Show emotes from FFZ"},bttv:{name:"BetterTTV",note:"Show emotes from BTTV"}}}},Addons:{title:"{{name}} v{{version}} by {{author}}",openFolder:"Open {{type}} Folder",reload:"Reload",addonSettings:"Settings",website:"Website",source:"Source",invite:"Support Server",donate:"Donate",patreon:"Patreon",name:"Name",author:"Author",version:"Version",added:"Date Added",modified:"Date Modified",search:"Search {{type}}",editAddon:"Edit",deleteAddon:"Delete",confirmDelete:"Are you sure you want to delete {{name}}?",confirmationText:"You have unsaved changes to {{name}}. Closing this window will lose all those changes.",enabled:"{{name}} has been enabled.",disabled:"{{name}} has been disabled.",unknownAuthor:"Unknown Author",noDescription:"Description not provided."},Emotes:{loading:"Loading emotes in the background do not reload.",loaded:"All emotes successfully loaded.",clearEmotes:"Clear Emote Data",favoriteAction:"Favorite!"},CustomCSS:{confirmationText:"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.",update:"Update",save:"Save",openNative:"Open in System Editor",openDetached:"Detach Window",settings:"Editor Settings",editorTitle:"Custom CSS Editor"},PublicServers:{button:"public",join:"Join",joining:"Joining",joined:"Joined",loading:"Loading",loadMore:"Load More",notConnected:"Not connected to DiscordServers.com!",search:"Search",connect:"Connect",reconnect:"Reconnect",categories:"Categories",connection:"Connected as: {{username}}#{{discriminator}}",results:"Showing {{start}}-{{end}} of {{total}} results in {{category}}",query:"for {{query}}"},Modals:{confirmAction:"Are You Sure?",okay:"Okay",cancel:"Cancel",close:"Close",name:"Name",message:"Message",error:"Error",addonErrors:"Addon Errors",restartRequired:"Restart Required",restartNow:"Restart Now",restartLater:"Restart Later",additionalInfo:"Additional Info"},Sorting:{sortBy:"Sort By",order:"Order",ascending:"Ascending",descending:"Descending"},WindowPrefs:{enabledInfo:"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\n\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?",disabledInfo:"In order to take effect, Discord needs to be restarted. Do you want to restart now?"},Startup:{notSupported:"Not Supported",versionMismatch:"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\n\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",incompatibleApp:"BandagedBD does not work with {{app}}. Please uninstall one of them.",updateNow:"Update Now",maybeLater:"Maybe Later",updateAvailable:"Update Available",updateInfo:"There is an update available for BandagedBD's Injector ({{version}}).\n\nYou can either update and restart now, or later.",updateFailed:"Could Not Update",manualUpdate:"Unable to update automatically, please download the installer and reinstall normally.\n\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)"}},o={local:!1,localServer:"//localhost:8080",minified:!0,version:"0.3.0",branch:"master",repo:"rauenzi",minSupportedVersion:"0.3.0",bbdVersion:"1.0.0"},r=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"download",value:!0},{type:"switch",id:"emoteMenu",value:!0},{type:"switch",id:"hideEmojiMenu",value:!1,enableWith:"emoteMenu"},{type:"switch",id:"showNames",value:!0},{type:"switch",id:"modifiers",value:!0},{type:"switch",id:"animateOnHover",value:!1}]},{type:"category",id:"categories",name:"Categories",collapsible:!0,settings:[{type:"switch",id:"twitchglobal",value:!0},{type:"switch",id:"twitchsubscriber",value:!1},{type:"switch",id:"frankerfacez",value:!0},{type:"switch",id:"bttv",value:!0}]}],a=[{type:"category",id:"general",collapsible:!0,settings:[{type:"switch",id:"emotes",value:!0},{type:"switch",id:"publicServers",value:!0},{type:"switch",id:"voiceDisconnect",value:!1},{type:"switch",id:"twentyFourHour",value:!1},{type:"switch",id:"classNormalizer",value:!0},{type:"switch",id:"showToasts",value:!0}]},{type:"category",id:"appearance",collapsible:!0,settings:[{type:"switch",id:"voiceMode",value:!1},{type:"switch",id:"minimalMode",value:!1},{type:"switch",id:"hideChannels",value:!1,enableWith:"minimalMode"},{type:"switch",id:"darkMode",value:!0},{type:"switch",id:"coloredText",value:!1}]},{type:"category",id:"addons",collapsible:!0,shown:!1,settings:[{type:"switch",id:"addonErrors",value:!0},{type:"switch",id:"autoScroll",value:!0},{type:"switch",id:"autoReload",value:!0},{type:"dropdown",id:"editAction",value:"detached",options:[{value:"detached"},{value:"system"}]}]},{type:"category",id:"customcss",collapsible:!0,shown:!1,settings:[{type:"switch",id:"customcss",value:!0},{type:"switch",id:"liveUpdate",value:!1},{type:"dropdown",id:"openAction",value:"settings",options:[{value:"settings"},{value:"detached"},{value:"system"}]}]},{type:"category",id:"developer",collapsible:!0,shown:!1,settings:[{type:"switch",id:"debuggerHotkey",value:!1},{type:"switch",id:"copySelector",value:!1},{type:"switch",id:"reactDevTools",value:!1}]},{type:"category",id:"window",collapsible:!0,shown:!1,settings:[{type:"switch",id:"transparency",value:!1},{type:"switch",id:"frame",value:!1,hidden:!0}]}],l={description:"Don't be shocked, this modal is supposed to be here.",changes:[{title:"What's New?",items:["**BandagedBD will now keep you updated with changelogs!** I will try to only show a changelog when there's more than a tiny or internal change.","**Twitter (@BandagedBD)** I created a Twitter to try and provide support and such for those without access to the server. https://Twitter.com/BandagedBD"]},{title:"Fixes",type:"fixed",items:["**Colored Text** option should work again.","**Emotes** should show up in chat.","Fixed a bug where BBD attempted to patch the TabBar module incorrectly. (Thanks, DevilBro)"]},{title:"Minor Stuff",type:"improved",items:["**Colour->Color.** Swapped to using English-US spelling by default to be consistent, and to potentially be prepared for localization.","**Versions simplified.** The BandagedBD version now integrates into Discord's at the bottom-left of settings instead of randomly being a part of the setting list."]}]};const d={err:"error",error:"error",dbg:"debug",debug:"debug",log:"log",warn:"warn",info:"info"};class c{static stacktrace(e,t,s){console.error(`%c[${e}]%c ${t}\n\n%c`,"color: #3a71c1; font-weight: 700;","color: red; font-weight: 700;","color: red;",s)}static err(e,...t){c._log(e,t,"error")}static warn(e,...t){c._log(e,t,"warn")}static info(e,...t){c._log(e,t,"info")}static debug(e,...t){c._log(e,t,"debug")}static log(e,...t){c._log(e,t)}static _log(e,t,s="log"){s=c.parseType(s),Array.isArray(t)||(t=[t]),console[s](`%c[BandagedBD]%c [${e}]%c`,"color: #3E82E5; font-weight: 700;","color: #3a71c1;","",...t)}static parseType(e){return d.hasOwnProperty(e)?d[e]:"log"}}class h{static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static addStyle(e,t){document.head.append(h.createElement(``))}static removeStyle(e){const t=document.getElementById(e);t&&t.remove()}static addScript(e,t){return new Promise(s=>{const n=document.createElement("script");n.id=e,n.src=t,n.type="text/javascript",n.onload=s,document.head.append(n)})}static removeScript(e){e=this.escapeID(e);const t=document.getElementById(e);t&&t.remove()}static animate({timing:e=(e=>e),update:t,duration:s}){const n=performance.now();requestAnimationFrame((function i(o){let r=(o-n)/s;r>1&&(r=1);const a=e(r);t(a),r<1&&requestAnimationFrame(i)}))}static Q(e){const t=this.parseHTML(e);return(t instanceof NodeList?Array.from(t).some(e=>1===e.nodeType):1===t.nodeType)?t:this.query(e)}static query(e,t){return t||(t=document),t.querySelector(e)}static queryAll(e,t){return t||(t=document),t.querySelectorAll(e)}static parseHTML(e,t=!1){const s=document.createElement("template");s.innerHTML=e;const n=s.content.cloneNode(!0);return t?n:n.childNodes.length>1?n.childNodes:n.childNodes[0]}static createElement(e,t=!1){return this.parseHTML(e,t)}static escapeHTML(e){const t=document.createTextNode(""),s=document.createElement("span");return s.append(t),t.nodeValue=e,s.innerHTML}static addClass(e,...t){t=t.flat().filter(e=>e);for(let e=0;ee),e.classList.add(...t),e}static removeClass(e,...t){for(let e=0;ee),e.classList.remove(...t),e}static toggleClass(e,t,s){return t=t.toString().split(" ").filter(e=>e),void 0!==s?t.forEach(t=>e.classList.toggle(t,s)):t.forEach(t=>e.classList.toggle(t)),e}static hasClass(e,t){return t.toString().split(" ").filter(e=>e).every(t=>e.classList.contains(t))}static replaceClass(e,t,s){return e.classList.replace(t,s),e}static appendTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.append(e),e):null}static prependTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.prepend(e),e):null}static insertAfter(e,t){return t.parentNode.insertBefore(e,t.nextSibling),e}static after(e,t){return e.parentNode.insertBefore(t,e.nextSibling),e}static next(e,t=""){return t?e.querySelector("+ "+t):e.nextElementSibling}static nextAll(e){return e.querySelectorAll("~ *")}static nextUntil(e,t){const s=[];for(;e.nextElementSibling&&!e.nextElementSibling.matches(t);)s.push(e=e.nextElementSibling);return s}static previous(e,t=""){const s=e.previousElementSibling;return t?s&&s.matches(t)?s:null:s}static previousAll(e){const t=[];for(;e.previousElementSibling;)t.push(e=e.previousElementSibling);return t}static previousUntil(e,t){const s=[];for(;e.previousElementSibling&&!e.previousElementSibling.matches(t);)s.push(e=e.previousElementSibling);return s}static indexInParent(e){const t=e.parentNode.childNodes;let s=0;for(let n=0;n "+t)}static findChildren(e,t){return e.querySelectorAll(":scope > "+t)}static parents(e,t=""){const s=[];if(t)for(;e.parentElement&&e.parentElement.closest(t);)s.push(e=e.parentElement.closest(t));else for(;e.parentElement;)s.push(e=e.parentElement);return s}static parentsUntil(e,t){const s=[];for(;e.parentElement&&!e.parentElement.matches(t);)s.push(e=e.parentElement);return s}static siblings(e,t="*"){return Array.from(e.parentElement.children).filter(s=>s!=e&&s.matches(t))}static css(e,t,s){return void 0===s?global.getComputedStyle(e)[t]:(e.style[t]=s,e)}static width(e,t){return void 0===t?parseInt(getComputedStyle(e).width):(e.style.width=t,e)}static height(e,t){return void 0===t?parseInt(getComputedStyle(e).height):(e.style.height=t,e)}static text(e,t){return void 0===t?e.textContent:e.textContent=t}static innerWidth(e){return e.clientWidth}static innerHeight(e){return e.clientHeight}static outerWidth(e){return e.offsetWidth}static outerHeight(e){return e.offsetHeight}static offset(e){return e.getBoundingClientRect()}static get listeners(){return this._listeners||(this._listeners={})}static on(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(e){e.target.matches(s)&&n(e)}:n;e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static once(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(t){t.target.matches(s)&&(n(t),e.removeEventListener(i,a))}:function(t){n(t),e.removeEventListener(i,a)};e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static __offAll(e,t){const[s,n]=e.split(".");let i=e=>e.event==s,o=e=>e;t&&(i=e=>e.event==s&&e.element==t,o=e=>e.element==t);const r=this.listeners[n]||[],a=s?r.filter(i):r.filter(o);for(let e=0;e{this.observer.unsubscribe(n),t()};return this.observer.subscribe(n,t=>{const n=Array.from(s?t.addedNodes:t.removedNodes),i=n.indexOf(e)>-1,o=n.some(t=>t.contains(e));return i||o}),e}static onMount(e,t){return this.onMountChange(e,t)}static onUnmount(e,t){return this.onMountChange(e,t,!1)}static onAdded(e,t){return this.onMount(e,t)}static onRemoved(e,t){return this.onUnmount(e,t,!1)}static wrap(e){const t=this.parseHTML('
');for(let s=0;s1?n.childNodes:n.childNodes[0]}static getTextArea(){return h.query(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static escape(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e)}catch(e){return!1}}static suppressErrors(e,t){return(...s)=>{try{return e(...s)}catch(e){c.stacktrace("SuppressedError","Error occurred in "+t,e)}}}static onRemoved(e,t){const s=new MutationObserver(n=>{for(let i=0;i-1,l=r.some(t=>t.contains(e));(a||l)&&(s.disconnect(),t())}});s.observe(document.body,{subtree:!0,childList:!0})}static isEmpty(e){if(null==e||null==e||""==e)return!0;if("object"!=typeof e)return!1;if(Array.isArray(e))return 0==e.length;for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}static memoizeObject(e){const t=new Proxy(e,{get:function(e,t){if(e.hasOwnProperty(t)){if(Object.getOwnPropertyDescriptor(e,t).get){const s=e[t];delete e[t],e[t]=s}return e[t]}},set:function(e,t,s){return e.hasOwnProperty(t)?c.error("MemoizedObject","Trying to overwrite existing property"):(e[t]=s,e[t])}});return Object.defineProperty(t,"hasOwnProperty",{value:function(e){return void 0!==this[e]}}),t}static extend(e,...t){for(let s=0;se.startsWith("__reactInternalInstance"))]||null}static getOwnerInstance(e,{include:t,exclude:s=["Popout","Tooltip","Scroller","BackgroundFlash"],filter:n=(e=>e)}={}){if(void 0===e)return;const i=void 0===t,o=i?s:t;function r(e){const t=function(e){const t=e.type;return t&&(t.displayName||t.name)||null}(e);return null!==t&&!!(o.includes(t)^i)}let a=this.getReactInstance(e);for(a=a&&a.return;null!==a;a=a.return){if(null===a)continue;const e=a.stateNode;if(null!==a&&!(e instanceof HTMLElement)&&r(a)&&n(e))return e}return null}}class p{static byProperties(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&e.every(e=>void 0!==n[e])}}static byPrototypeFields(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&(!!n.prototype&&e.every(e=>void 0!==n.prototype[e]))}}static byCode(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&-1!==n.toString([]).search(e)}}static byString(...e){return t=>{const s=t.toString([]);for(const t of e)if(!s.includes(t))return!1;return!0}}static byDisplayName(e){return t=>t&&t.displayName===e}static combine(...e){return t=>e.every(e=>e(t))}}const m=e=>{if(e.remove&&e.set&&e.clear&&e.get&&!e.sort)return null;if(!e.getToken&&!e.getEmail&&!e.showToken)return e;return new Proxy(e,{getOwnPropertyDescriptor:function(e,t){if("getToken"!==t&&"getEmail"!==t&&"showToken"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){return"getToken"==t?()=>"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa":"getEmail"==t?()=>"puppet11112@gmail.com":"showToken"==t?()=>!0:e[t]}})};class g{static find(e,t=!0){return this.getModule(e,t)}static findAll(e){return this.getModule(e,!1)}static findByUniqueProperties(e,t=!0){return t?this.getByProps(...e):this.getAllByProps(...e)}static findByDisplayName(e){return this.getByDisplayName(e)}static getModule(e,t=!0){const s=this.getAllModules(),n=[];for(const i in s){if(!s.hasOwnProperty(i))continue;const o=s[i],{exports:r}=o;let a=null;if(r&&(r.__esModule&&r.default&&e(r.default)&&(a=r.default),e(r)&&(a=r),a)){if(t)return m(a);n.push(m(a))}}return t||0==n.length?void 0:n}static getModules(e){return this.getModule(e,!1)}static getByDisplayName(e){return this.getModule(p.byDisplayName(e),!0)}static getByRegex(e,t=!0){return this.getModule(p.byCode(e),t)}static getByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!0)}static getAllByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!1)}static getByProps(...e){return this.getModule(p.byProperties(e),!0)}static getAllByProps(...e){return this.getModule(p.byProperties(e),!1)}static getByString(...e){return this.getModule(p.byString(...e),!0)}static getAllByString(...e){return this.getModule(p.byString(...e),!1)}static get require(){if(this._require)return this._require;const e="bbd-webpackmodules",t="function"==typeof window.webpackJsonp?window.webpackJsonp([],{[e]:(e,t,s)=>t.default=s},[e]).default:window.webpackJsonp.push([[],{[e]:(e,t,s)=>e.exports=s},[[e]]]);return delete t.m[e],delete t.c[e],this._require=t}static getAllModules(){return this.require.c}}var f=u.memoizeObject({get React(){return g.getByProps("createElement","cloneElement")},get ReactDOM(){return g.getByProps("render","findDOMNode")},get Flux(){return g.getByProps("connectStores")},get Events(){return g.getByPrototypes("setMaxListeners","emit")},get GuildStore(){return g.getByProps("getGuild")},get SortedGuildStore(){return g.getByProps("getSortedGuilds")},get SelectedGuildStore(){return g.getByProps("getLastSelectedGuildId")},get GuildSync(){return g.getByProps("getSyncedGuilds")},get GuildInfo(){return g.getByProps("getAcronym")},get GuildChannelsStore(){return g.getByProps("getChannels","getDefaultChannel")},get GuildMemberStore(){return g.getByProps("getMember")},get MemberCountStore(){return g.getByProps("getMemberCounts")},get GuildEmojiStore(){return g.getByProps("getEmojis")},get GuildActions(){return g.getByProps("markGuildAsRead")},get GuildPermissions(){return g.getByProps("getGuildPermissions")},get ChannelStore(){return g.getByProps("getChannels","getDMFromUserId")},get SelectedChannelStore(){return g.getByProps("getLastSelectedChannelId")},get ChannelActions(){return g.getByProps("selectChannel")},get PrivateChannelActions(){return g.getByProps("openPrivateChannel")},get ChannelSelector(){return g.getByProps("selectGuild","selectChannel")},get UserInfoStore(){return g.getByProps("getToken")},get UserSettingsStore(){return g.getByProps("guildPositions")},get AccountManager(){return g.getByProps("register","login")},get UserSettingsUpdater(){return g.getByProps("updateRemoteSettings")},get OnlineWatcher(){return g.getByProps("isOnline")},get CurrentUserIdle(){return g.getByProps("getIdleTime")},get RelationshipStore(){return g.getByProps("isBlocked","getFriendIDs")},get RelationshipManager(){return g.getByProps("addRelationship")},get MentionStore(){return g.getByProps("getMentions")},get UserStore(){return g.getByProps("getCurrentUser")},get UserStatusStore(){return g.getByProps("getStatus","getState")},get UserTypingStore(){return g.getByProps("isTyping")},get UserActivityStore(){return g.getByProps("getActivity")},get UserNameResolver(){return g.getByProps("getName")},get UserNoteStore(){return g.getByProps("getNote")},get UserNoteActions(){return g.getByProps("updateNote")},get EmojiInfo(){return g.getByProps("isEmojiDisabled")},get EmojiUtils(){return g.getByProps("getGuildEmoji")},get EmojiStore(){return g.getByProps("getByCategory","EMOJI_NAME_RE")},get InviteStore(){return g.getByProps("getInvites")},get InviteResolver(){return g.getByProps("findInvite")},get InviteActions(){return g.getByProps("acceptInvite")},get DiscordConstants(){return g.getByProps("Permissions","ActivityTypes","StatusTypes")},get DiscordPermissions(){return g.getByProps("Permissions","ActivityTypes","StatusTypes").Permissions},get PermissionUtils(){return g.getByProps("getHighestRole")},get ColorConverter(){return g.getByProps("hex2int")},get ColorShader(){return g.getByProps("darken")},get TinyColor(){return g.getByPrototypes("toRgb")},get ClassResolver(){return g.getByProps("getClass")},get ButtonData(){return g.getByProps("ButtonSizes")},get IconNames(){return g.getByProps("IconNames")},get NavigationUtils(){return g.getByProps("transitionTo","replaceWith","getHistory")},get MessageStore(){return g.getByProps("getMessages")},get MessageActions(){return g.getByProps("jumpToMessage","_sendMessage")},get MessageQueue(){return g.getByProps("enqueue")},get MessageParser(){return g.getByProps("createMessage","parse","unparse")},get hljs(){return g.getByProps("highlight","highlightBlock")},get SimpleMarkdown(){return g.getByProps("parseBlock","parseInline","defaultOutput")},get ExperimentStore(){return g.getByProps("getExperimentOverrides")},get ExperimentsManager(){return g.getByProps("isDeveloper")},get CurrentExperiment(){return g.getByProps("getExperimentId")},get ImageResolver(){return g.getByProps("getUserAvatarURL","getGuildIconURL")},get ImageUtils(){return g.getByProps("getSizedImageSrc")},get AvatarDefaults(){return g.getByProps("getUserAvatarURL","DEFAULT_AVATARS")},get WindowInfo(){return g.getByProps("isFocused","windowSize")},get TagInfo(){return g.getByProps("VALID_TAG_NAMES")},get DOMInfo(){return g.getByProps("canUseDOM")},get LocaleManager(){return g.getByProps("setLocale")},get Moment(){return g.getByProps("parseZone")},get LocationManager(){return g.getByProps("createLocation")},get Timestamps(){return g.getByProps("fromTimestamp")},get TimeFormatter(){return g.getByProps("dateFormat")},get Strings(){return g.getByProps("Messages").Messages},get StringFormats(){return g.getByProps("a","z")},get StringUtils(){return g.getByProps("toASCII")},get URLParser(){return g.getByProps("Url","parse")},get ExtraURLs(){return g.getByProps("getArticleURL")},get DNDActions(){return g.getByProps("beginDrag")},get DNDSources(){return g.getByProps("addTarget")},get DNDObjects(){return g.getByProps("DragSource")},get MediaDeviceInfo(){return g.getByProps("Codecs","SUPPORTED_BROWSERS")},get MediaInfo(){return g.getByProps("getOutputVolume")},get MediaEngineInfo(){return g.getByProps("MediaEngineFeatures")},get VoiceInfo(){return g.getByProps("EchoCancellation")},get VideoStream(){return g.getByProps("getVideoStream")},get SoundModule(){return g.getByProps("playSound")},get ElectronModule(){return g.getByProps("setBadge")},get Dispatcher(){return g.getByProps("dirtyDispatch")},get PathUtils(){return g.getByProps("hasBasename")},get NotificationModule(){return g.getByProps("showNotification")},get RouterModule(){return g.getByProps("Router")},get APIModule(){return g.getByProps("getAPIBaseURL")},get AnalyticEvents(){return g.getByProps("AnalyticEventConfigs")},get KeyGenerator(){return g.getByRegex(/"binary"/)},get Buffers(){return g.getByProps("Buffer","kMaxLength")},get DeviceStore(){return g.getByProps("getDevices")},get SoftwareInfo(){return g.getByProps("os")},get CurrentContext(){return g.getByProps("setTagsContext")},get GuildClasses(){const e=g.getByProps("wrapper","unreadMentionsBar"),t=g.getByProps("guildsError","selected"),s=g.getByProps("blobContainer");return Object.assign({},e,t,s)},get LayerStack(){return g.getByProps("pushLayer")}});const b=s(5);var y=new class extends b{constructor(){super(),this.setMaxListeners(20)}dispatch(e,...t){this.emit(e,...t)}};const v=s(2),w=s(1),C=DiscordNative.globals?DiscordNative.globals.releaseChannel:DiscordNative.app?DiscordNative.app.getReleaseChannel():"stable";var S=new class{constructor(){this.data={misc:{}},this.pluginData={},this.cacheData={}}initialize(){v.existsSync(this.baseFolder)||v.mkdirSync(this.baseFolder),v.existsSync(this.dataFolder)||v.mkdirSync(this.dataFolder),v.existsSync(this.localeFolder)||v.mkdirSync(this.localeFolder),v.existsSync(this.emoteFolder)||v.mkdirSync(this.emoteFolder),v.existsSync(this.cacheFile)||v.writeFileSync(this.cacheFile,JSON.stringify({})),v.existsSync(this.customCSS)||v.writeFileSync(this.customCSS,"");const e=v.readdirSync(this.dataFolder).filter(e=>!v.statSync(w.resolve(this.dataFolder,e)).isDirectory()&&e.endsWith(".json"));for(const t of e)this.data[t.split(".")[0]]=require(w.resolve(this.dataFolder,t));this.cacheData=u.testJSON(v.readFileSync(this.cacheFile).toString())||{}}get injectionPath(){if(this._injectionPath)return this._injectionPath;const e=s(0).remote.app,t=e.getAppPath(),n=e.getPath("userData"),i=w.resolve(n,e.getVersion(),"modules","discord_desktop_core","injector"),o=w.resolve(t,"..","app"),r=v.existsSync(o)?o:v.existsSync(i)?i:null;return this._injectionPath=r||null}get customCSS(){return this._customCSS||(this._customCSS=w.resolve(this.dataFolder,"custom.css"))}get baseFolder(){return this._baseFolder||(this._baseFolder=w.resolve(o.dataPath,"data"))}get dataFolder(){return this._dataFolder||(this._dataFolder=w.resolve(this.baseFolder,""+C))}get localeFolder(){return this._localeFolder||(this._localeFolder=w.resolve(this.baseFolder,"locales"))}get emoteFolder(){return this._emoteFolder||(this._emoteFolder=w.resolve(this.baseFolder,"emotes"))}get cacheFile(){return this._cacheFile||(this._cacheFile=w.resolve(this.baseFolder,".cache"))}getPluginFile(e){return w.resolve(o.dataPath,"plugins",e+".config.json")}_getFile(e){return"settings"==e||"plugins"==e||"themes"==e||"window"==e?w.resolve(this.dataFolder,e+".json"):w.resolve(this.dataFolder,"misc.json")}getBDData(e){return this.data.misc[e]||""}setBDData(e,t){this.data.misc[e]=t,v.writeFileSync(w.resolve(this.dataFolder,"misc.json"),JSON.stringify(this.data.misc,null,4))}getLocale(e){const t=w.resolve(this.localeFolder,e+".json");return v.existsSync(t)?u.testJSON(v.readFileSync(t).toString()):null}saveLocale(e,t){v.writeFileSync(w.resolve(this.localeFolder,e+".json"),JSON.stringify(t,null,4))}getCacheHash(e,t){return this.cacheData[e]&&v.existsSync(w.resolve(this.baseFolder,e,t+".json"))&&this.cacheData[e][t]||""}setCacheHash(e,t,s){this.cacheData[e]||(this.cacheData[e]={}),this.cacheData[e][t]=s,v.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData))}invalidateCache(e,t){this.cacheData[e]&&(delete this.cacheData[e][t],v.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData)))}emotesExist(e){return v.existsSync(w.resolve(this.emoteFolder,e+".json"))}getEmoteData(e){const t=w.resolve(this.emoteFolder,e+".json");return v.existsSync(t)?u.testJSON(v.readFileSync(t).toString()):null}saveEmoteData(e,t){v.writeFileSync(w.resolve(this.emoteFolder,e+".json"),JSON.stringify(t))}getData(e){return this.data[e]||""}setData(e,t){this.data[e]=t,v.writeFileSync(w.resolve(this.dataFolder,e+".json"),JSON.stringify(t,null,4))}loadCustomCSS(){return v.readFileSync(this.customCSS).toString()}saveCustomCSS(e){return v.writeFileSync(this.customCSS,e)}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]||void 0:v.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(v.readFileSync(this.getPluginFile(e))),this.pluginData[e][t]||void 0):void 0}setPluginData(e,t,s){void 0!==s&&(void 0===this.pluginData[e]&&(this.pluginData[e]={}),this.pluginData[e][t]=s,v.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4)))}deletePluginData(e,t){void 0===this.pluginData[e]&&(this.pluginData[e]={}),delete this.pluginData[e][t],v.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4))}};const E=s(3),{Dispatcher:P,DiscordConstants:x,UserSettingsStore:k}=f;var A=new class{get discordLocale(){return k.locale.split("-")[0]}get defaultLocale(){return"en"}constructor(){this.locale="",this.strings={}}async initialize(){await this.setLocale(this.discordLocale),P.subscribe(x.ActionTypes.USER_SETTINGS_UPDATE,({settings:e})=>{const t=e.locale;t&&t!=this.locale&&this.setLocale(t.split("-")[0])})}async setLocale(e){let t;if(e!=this.defaultLocale){if(t=await this.getLocaleStrings(e),!t)return this.setLocale(this.defaultLocale)}else t=i;this.locale=e,u.extend(this.strings,t),y.emit("strings-updated")}async getLocaleStrings(e){const t=S.getCacheHash("locales",e);if(!t)return await this.downloadLocale(e);const s=await this.downloadLocale(e,t);return s||S.getLocale(e)}downloadLocale(e,t=""){return new Promise(s=>{const n={url:u.repoUrl(`data/locales/${e}.json`),timeout:2e3,json:!0};t&&(n.headers={"If-None-Match":t}),E.get(n,(t,n,i)=>{if(t||200!==n.statusCode)return s(null);S.saveLocale(e,i),S.setCacheHash("locales",e,n.headers.etag),s(i)})})}};class D{static get bdHead(){return this.getElement("bd-head")}static get bdBody(){return this.getElement("bd-body")}static get bdScripts(){return this.getElement("bd-scripts")}static get bdStyles(){return this.getElement("bd-styles")}static get bdThemes(){return this.getElement("bd-themes")}static get bdCustomCSS(){return this.getElement("#customcss")}static initialize(){this.createElement("bd-head",{target:document.head}),this.createElement("bd-body",{target:document.body}),this.createElement("bd-scripts",{target:this.bdHead}),this.createElement("bd-styles",{target:this.bdHead}),this.createElement("bd-themes",{target:this.bdHead}),this.createElement("style",{id:"customcss",target:this.bdHead})}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static getElement(e,t=document){return e instanceof Node?e:t.querySelector(e)}static createElement(e,t={}){const{className:s,id:n,target:i}=t,o=document.createElement(e);return s&&(o.className=s),n&&(o.id=n),i&&this.getElement(i).append(o),o}static removeStyle(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdStyles);t&&t.remove()}static injectStyle(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdStyles)||this.createElement("style",{id:e});s.textContent=t,this.bdStyles.append(s)}static removeTheme(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdThemes);t&&t.remove()}static injectTheme(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdThemes)||this.createElement("style",{id:e});s.textContent=t,this.bdThemes.append(s)}static updateCustomCSS(e){this.bdCustomCSS.textContent=e}static removeScript(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdScripts);t&&t.remove()}static injectScript(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement("#"+e,this.bdScripts)||this.createElement("script",{id:e});n.src=t,n.onload=s,this.bdScripts.append(n)})}}class M extends String{format(e){return u.formatString(this,e)}}var N=new Proxy(A.strings,{get:function(e,t){return e.hasOwnProperty(t)?new Proxy(e[t],{get:function(e,t){return"string"==typeof e[t]?new M(e[t]):e[t]}}):new Proxy({},{get:function(){return`String group "${t}" not found.`}})}}),L=new class{constructor(){this.state={},this.collections=[],this.panels=[],this.updateStrings=this.updateStrings.bind(this)}initialize(){this.registerCollection("settings","Settings",a),y.on("strings-updated",this.updateStrings)}registerCollection(e,t,s,n=null){if(this.collections.find(t=>t.id==e))return c.error("Settings","Already have a collection with id "+e);this.collections.push({type:"collection",id:e,name:t,settings:s,button:n}),this.setupCollection(e),this.loadCollection(e),this.updateStrings()}removeCollection(e){const t=this.collections.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.collections.splice(t,1)}registerPanel(e,t,s){if(this.panels.find(t=>t.id==e))return c.error("Settings","Already have a panel with id "+e);const{element:n,onClick:i,order:o=1}=s,r={id:e,order:o,label:t,section:e};i&&(r.clickListener=i),n&&(r.element=n instanceof f.React.Component?()=>f.React.createElement(n,{}):"function"==typeof n?n:()=>n),this.panels.push(r)}removePanel(e){const t=this.panels.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.panels.splice(t,1)}getPath(e,t="",s=""){return{collection:3==e.length?e[0]:t,category:3==e.length?e[1]:2==e.length?e[0]:s,setting:e[e.length-1]}}setupCollection(e){const t=this.collections.find(t=>t.id==e);if(!t)return;const s=t.settings;this.state[t.id]||(this.state[t.id]={});for(let e=0;e{const e=this.state[o.collection][o.category][o.setting];return s.enableWith?!e:e}})}}}}saveSettings(){for(const e in this.state)this.saveCollection(e)}loadSettings(){for(const e in this.state)this.loadCollection(e)}saveCollection(e){S.setData(e,this.state[e])}loadCollection(e){const t=S.getData(e);if(!t)return this.saveCollection(e);for(const s in this.state[e]){t[s]||Object.assign(t,{[s]:this.state[e][s]});for(const n in this.state[e][s]){if(null==t[s][n])continue;const i=this.getSetting(e,s,n);if("switch"==i.type&&(this.state[e][s][n]=t[s][n]),"dropdown"==i.type){i.options.some(e=>e.value==t[s][n])&&(this.state[e][s][n]=t[s][n])}}}this.saveCollection(e)}onSettingChange(e,t,s,n){this.state[e][t][s]=n,y.dispatch("setting-updated",e,t,s,n),this.saveCollection(e)}getSetting(e,t,s){return 2==arguments.length?this.collections[0].find(e=>e.id==arguments[0]).settings.find(e=>e.id==arguments[1]):this.collections.find(t=>t.id==e).settings.find(e=>e.id==t).settings.find(e=>e.id==s)}get(e,t,s){return 2==arguments.length&&(s=t,t=e,e="settings"),!(!this.state[e]||!this.state[e][t])&&this.state[e][t][s]}set(e,t,s,n){return 3==arguments.length&&(n=s,s=t,t=e,e="settings"),this.onSettingChange(e,t,s,n)}on(e,t,s,n){const i=(i,o,r,a)=>{i===e&&o===t&&r===s&&n(a)};return y.on("setting-updated",i),()=>{y.off("setting-updated",i)}}updateStrings(){for(let e=0;e"before"===e.type))try{t.callback(this,arguments)}catch(s){c.err("Patcher",`Could not fire before callback of ${e.functionName} for ${t.caller}`,s)}const s=e.children.filter(e=>"instead"===e.type);if(s.length)for(const n of s)try{const s=n.callback(this,arguments,e.originalFunction.bind(this));void 0!==s&&(t=s)}catch(t){c.err("Patcher",`Could not fire instead callback of ${e.functionName} for ${n.caller}`,t)}else t=e.originalFunction.apply(this,arguments);for(const s of e.children.filter(e=>"after"===e.type))try{const e=s.callback(this,arguments,t);void 0!==e&&(t=e)}catch(t){c.err("Patcher",`Could not fire after callback of ${e.functionName} for ${s.caller}`,t)}return t}}static rePatch(e){e.proxyFunction=e.module[e.functionName]=this.makeOverride(e)}static makePatch(e,t,s){const n={name:s,module:e,functionName:t,originalFunction:e[t],proxyFunction:null,revert:()=>{n.module[n.functionName]=n.originalFunction,n.proxyFunction=null,n.children=[]},counter:0,children:[]};return n.proxyFunction=e[t]=this.makeOverride(n),this.patches.push(n),n}static before(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"before"}))}static after(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"after"}))}static instead(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"instead"}))}static pushChildPatch(e,t,s,n,i={}){const{type:o="after",forcePatch:r=!0}=i,a=this.resolveModule(t);if(!a)return null;if(!a[s]&&r&&(a[s]=function(){}),!(a[s]instanceof Function))return null;"string"==typeof t&&(i.displayName=t);const l=`${i.displayName||a.displayName||a.name||a.constructor.displayName||a.constructor.name}.${s}`,d=this.patches.find(e=>e.module==a&&e.functionName==s)||this.makePatch(a,s,l);d.proxyFunction||this.rePatch(d);const c={caller:e,type:o,id:d.counter,callback:n,unpatch:()=>{if(d.children.splice(d.children.findIndex(e=>e.id===c.id&&e.type===o),1),d.children.length<=0){const e=this.patches.findIndex(e=>e.module==a&&e.functionName==s);this.patches[e].revert(),this.patches.splice(e,1)}}};return d.children.push(c),d.counter++,c.unpatch}}const F=f.React,O={},I=new Set,z=new Set;var R=new class{get named(){return O}get unknown(){return I}get listeners(){return z}constructor(){j.after("ReactComponents",F,"createElement",(e,t,s)=>{this.walkRenderTree(s)}),j.instead("ReactComponents",F.Component.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),j.instead("ReactComponents",F.Component.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)}),j.instead("ReactComponents",F.PureComponent.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),j.instead("ReactComponents",F.PureComponent.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)})}initialize(){this.walkReactTree(document.querySelector("#app-mount")._reactRootContainer._internalRoot.current)}get(e,t){return new Promise(s=>{if(O[e])return s(O[e]);if(z.add({name:e,filter:t,resolve:s}),t)for(const s of I)t(s)&&(s.displayName=e,I.delete(s),this.addNamedComponent(s))})}addNamedComponent(e){const t=e.displayName;if(!O[t]){O[t]=e;for(const s of z)s.name===t&&(s.resolve(e),z.delete(s))}}addUnknownComponent(e){if(!I.has(e)){for(const t of z)t.filter&&t.filter(e)&&(e.displayName=t.name,this.addNamedComponent(e));e.displayName||I.add(e)}}addComponent(e){return e.displayName?this.addNamedComponent(e):this.addUnknownComponent(e)}walkRenderTree(e){if(e){if("function"==typeof e.type&&this.addComponent(e.type),Array.isArray(e))for(const t of e)this.walkRenderTree(t);e.props&&e.props.children&&this.walkRenderTree(e.props.children)}}walkReactTree(e){e&&("function"==typeof e.type&&this.addComponent(e.type),e.child&&this.walkReactTree(e.child),e.sibling&&this.walkReactTree(e.sibling))}};const H=f.React,q=f.ReactDOM,U=g.getByProps("sidebar","hasNotice").sidebar.split(" ")[0],_=g.getByProps("membersWrap").membersWrap.split(" ")[0];class W{static get shouldShowToasts(){return L.get("settings","general","showToasts")}static async success(e,t={}){return this.show(e,Object.assign(t,{type:"success"}))}static async info(e,t={}){return this.show(e,Object.assign(t,{type:"info"}))}static async warning(e,t={}){return this.show(e,Object.assign(t,{type:"warning"}))}static async error(e,t={}){return this.show(e,Object.assign(t,{type:"error"}))}static async default(e,t={}){return this.show(e,Object.assign(t,{type:""}))}static show(e,t={}){const{type:s="",icon:n=!0,timeout:i=3e3,forceShow:o=!1}=t;if(!this.shouldShowToasts&&!o)return;this.ensureContainer();const r=document.createElement("div");r.classList.add("bd-toast"),s&&r.classList.add("toast-"+s),s&&n&&r.classList.add("icon"),r.innerText=e,document.querySelector(".bd-toasts").appendChild(r),setTimeout(()=>{r.classList.add("closing"),setTimeout(()=>{r.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},i)}static ensureContainer(){if(document.querySelector(".bd-toasts"))return;const e=document.querySelector(`.${U} + div`),t=e.querySelector("."+_),s=e?e.querySelector("form"):null,n=e?e.getBoundingClientRect().left:310,i=t?t.getBoundingClientRect().left:0,o=i?i-e.getBoundingClientRect().left:e.offsetWidth,r=s?s.offsetHeight:80,a=document.createElement("div");a.classList.add("bd-toasts"),a.style.setProperty("left",n+"px"),a.style.setProperty("width",o+"px"),a.style.setProperty("bottom",r+"px"),D.bdBody.appendChild(a)}}class G extends H.Component{constructor(e){super(e),this.onClick=this.onClick.bind(this),this.state={checked:this.props.checked||!1}}render(){return H.createElement("div",{className:"checkbox-item"},H.createElement("div",{className:"checkbox-label label-JWQiNe da-label"},this.props.text),H.createElement("div",{className:"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox",onClick:this.onClick},H.createElement("div",{className:"checkbox-inner checkboxInner-3yjcPe da-checkboxInner"},H.createElement("input",{className:"checkbox checkboxElement-1qV33p da-checkboxElement",checked:this.state.checked,type:"checkbox"}),H.createElement("span",null)),H.createElement("span",null)))}onClick(){this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked})}}function V(){return(V=Object.assign||function(e){for(var t=1;t{for(const s of e){if(!(s.addedNodes.length&&s.addedNodes[0]instanceof Element))continue;const e=s.addedNodes[0];e.parentElement===document.body&&e.querySelector("#ace_settingsmenu")&&(e.id="ace_settingsmenu_container",t.disconnect())}});t.observe(document.body,{childList:!0})};const t=this.props.theme==Z.defaultProps.theme?this.props.theme.split("-")[1]:this.props.theme;this.editor.setTheme("ace/theme/"+t),this.editor.session.setMode("ace/mode/"+this.props.language),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(this.props.fontSize),this.editor.on("change",this.onChange)}componentWillUnmount(){this.editor.destroy()}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}onChange(){this.props.onChange&&this.props.onChange(this.value)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}buildControl(e){return"checkbox"==e.type?this.makeCheckbox(e):this.makeButton(e)}makeCheckbox(e){return H.createElement(G,{text:e.label,onChange:e.onChange,checked:e.checked})}makeButton(e){return H.createElement(J,{color:"black",position:"top",text:e.tooltip},t=>H.createElement("button",V({},t,{className:"btn btn-primary",onClick:t=>{e.onClick(t,this.value)}}),e.label))}render(){this.editor&&this.editor.resize&&this.editor.resize();const e=this.props.controls.filter(e=>"right"!=e.side).map(this.buildControl.bind(this)),t=this.props.controls.filter(e=>"right"==e.side).map(this.buildControl.bind(this));return H.createElement("div",{id:"bd-editor-panel",className:this.props.theme},H.createElement("div",{id:"bd-editor-controls"},H.createElement("div",{className:"controls-section controls-left"},e),H.createElement("div",{className:"controls-section controls-right"},t)),H.createElement("div",{className:"editor-wrapper"},H.createElement("div",{id:this.props.id,className:"editor "+this.props.theme},this.props.value)))}}class K extends H.Component{render(){const e=this.props.size||"24px";return H.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},H.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),H.createElement("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"}))}}class Q extends H.Component{render(){const e=this.props.size||"24px";return H.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",style:{width:e,height:e},onClick:this.props.onClick},H.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),H.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}}class ee extends H.Component{render(){const e=this.props.size||"20px";return H.createElement("svg",{viewBox:"0 0 20 20",style:{width:e,height:e}},H.createElement("path",{fill:"none",d:"M0 0h20v20H0V0z"}),H.createElement("path",{d:"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}))}}class te extends H.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.save=this.save.bind(this),this.openNative=this.openNative.bind(this),this.update=this.update.bind(this),this.controls=[{label:H.createElement(K,{size:"18px"}),tooltip:N.CustomCSS.save,onClick:this.save},{label:H.createElement(Q,{size:"18px"}),tooltip:N.CustomCSS.openNative,onClick:this.openNative},{label:H.createElement(ee,{size:"18px"}),tooltip:N.CustomCSS.settings,onClick:"showSettings"}]}update(){this.forceUpdate()}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}render(){return H.createElement(Z,{ref:this.setEditorRef.bind(this),language:this.props.language,id:this.props.id||"bd-addon-editor",controls:this.controls,value:this.props.content,onChange:this.onChange})}onChange(){this.hasUnsavedChanges=!0}save(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openNative(){this.props.openNative&&this.props.openNative()}}class se{static get width(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get height(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}class ne extends H.Component{render(){return H.createElement("svg",{viewBox:"0 0 12 12",style:{width:"18px",height:"18px"}},H.createElement("g",{className:"background",fill:"none",fillRule:"evenodd"},H.createElement("path",{d:"M0 0h12v12H0"}),H.createElement("path",{className:"fill",fill:"#dcddde",d:"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6"})))}}class ie extends H.Component{render(){const e=this.props.size||"24px";return H.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},H.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),H.createElement("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"}))}}class oe{static get shouldShowAddonErrors(){return L.get("settings","addons","addonErrors")}static get ModalActions(){return g.getByProps("openModal","updateModal")}static get ModalStack(){return g.getByProps("push","update","pop","popWithKey")}static get AlertModal(){return g.getByPrototypes("handleCancel","handleSubmit","handleMinorConfirm")}static get TextElement(){return g.getByProps("Sizes","Weights")}static get ConfirmationModal(){return g.findByDisplayName("ConfirmModal")}static get Markdown(){return g.findByDisplayName("Markdown")}static default(e,t){const s=h.createElement(`
\n
\n \n
`);s.querySelector(".footer button").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),document.querySelector("#app-mount").append(s)}static alert(e,t){this.showConfirmationModal(e,t)}static showConfirmationModal(e,t,s={}){const n=this.Markdown,i=this.ConfirmationModal,o=this.ModalActions;if(t instanceof M&&(t=t.toString()),!this.ModalActions||!this.ConfirmationModal||!this.Markdown)return this.default(e,t);const r=()=>{},{onConfirm:a=r,onCancel:l=r,confirmText:d=N.Modals.okay,cancelText:c=N.Modals.cancel,danger:h=!1,key:u}=s;return Array.isArray(t)||(t=[t]),t=t.map(e=>"string"==typeof e?H.createElement(n,null,e):e),o.openModal(s=>H.createElement(i,Object.assign({header:e,red:h,confirmText:d,cancelText:c,onConfirm:a,onCancel:l},s),t),{modalKey:u})}static showAddonErrors({plugins:e=[],themes:t=[]}){if(!e||!t||!this.shouldShowAddonErrors)return;if(!e.length&&!t.length)return;const s=h.createElement(`
\n
\n \n
`),n=function(e){const t=h.createElement('
');for(const s of e){const e=h.createElement(`
\n
${s.name?s.name:s.file}
\n
${s.message}
\n \n
`);t.append(e),s.error&&e.querySelectorAll("a").forEach(e=>e.addEventListener("click",e=>{e.preventDefault(),c.stacktrace("AddonError",`Error details for ${s.name?s.name:s.file}.`,s.error)}))}return t},i=[n(e),n(t)];s.querySelectorAll(".tab-bar-item").forEach(e=>e.addEventListener("click",e=>{e.preventDefault();const t=s.querySelector(".tab-bar-item.selected");t&&h.removeClass(t,"selected"),h.addClass(e.target,"selected");const n=s.querySelector(".scroller");n.innerHTML="",n.append(i[h.index(e.target)])})),s.querySelector(".footer button").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),h.query("#app-mount").append(s),e.length?s.querySelector(".tab-bar-item").click():s.querySelectorAll(".tab-bar-item")[1].click()}static showChangelogModal(e={}){const t=g.getByProps("push","update","pop","popWithKey"),s=g.getByProps("fixed","improved"),n=g.findByDisplayName("Text"),i=g.getByProps("Child"),r=g.getByProps("Tags","default"),a=g.getModule(e=>e.defaultProps&&0==e.defaultProps.selectable),l=g.getByProps("defaultRules","parse");if(!(a&&t&&s&&n&&i&&r&&l))return c.warn("Modals","showChangelogModal missing modules");const{image:d="https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5",description:h="",changes:u=[],title:p="BandagedBD",subtitle:m="v"+o.bbdVersion,footer:b}=e,y=H.createElement,v=[y("img",{src:d})];h&&v.push(y("p",null,l.parse(h)));for(let e=0;ey("li",null,l.parse(e))));v.push(o)}return t.push(a,{className:s.container,selectable:!0,onScroll:e=>e,onClose:e=>e,renderHeader:function(){return y(i.Child,{grow:1,shrink:1},y(r.default,{tag:r.Tags.H4},p),y(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD,className:s.date},m))},renderFooter:()=>{const e=g.getModule(e=>"Anchor"==e.displayName),s=g.getByProps("anchorUnderlineOnHover")||{anchor:"anchor-3Z-8Bb",anchorUnderlineOnHover:"anchorUnderlineOnHover-2ESHQB"},o=e=>{e.preventDefault(),e.stopPropagation(),t.pop(),f.InviteActions.acceptInviteAndTransitionToInviteChannel("2HScm8j")},r=e?y(e,{onClick:o},"Join our Discord Server."):y("a",{className:`${s.anchor} ${s.anchorUnderlineOnHover}`,onClick:o},"Join our Discord Server."),a=y(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD},"Need support? ",r);return y(i.Child,{grow:1,shrink:1},b||a)},children:v})}}class re extends H.Component{constructor(e){super(e),this.state={modalOpen:!1},this.offX=0,this.offY=0,this.maxX=this.props.maxX||se.width,this.maxY=this.props.maxY||se.height,this.minX=this.props.minX||0,this.minY=this.props.minY||0,this.titlebar=H.createRef(),this.window=H.createRef(),this.close=this.close.bind(this),this.maximize=this.maximize.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragStart=this.onDragStart.bind(this),this.onDragStop=this.onDragStop.bind(this),this.onResizeStart=this.onResizeStart.bind(this)}componentDidMount(){this.window.current.addEventListener("mousedown",this.onResizeStart,!1),this.titlebar.current.addEventListener("mousedown",this.onDragStart,!1),document.addEventListener("mouseup",this.onDragStop,!1)}onResizeStart(){this.currentWidth=this.window.current.offsetWidth,this.currentHeight=this.window.current.offsetHeight}onDragStop(){document.removeEventListener("mousemove",this.onDrag,!0);const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight;if(e!=this.currentWidth||t!=this.currentHeight){this.props.onResize&&this.props.onResize();const s=parseInt(this.window.current.style.left),n=parseInt(this.window.current.style.top);s+e>=this.maxX&&(this.window.current.style.width=this.maxX-s+"px"),n+t>=this.maxY&&(this.window.current.style.height=this.maxY-n+"px")}this.currentWidth=e,this.currentHeight=t}onDragStart(e){const t=this.window.current;this.offY=e.clientY-parseInt(t.offsetTop),this.offX=e.clientX-parseInt(t.offsetLeft),document.addEventListener("mousemove",this.onDrag,!0)}onDrag(e){const t=this.window.current;let s=e.clientY-this.offY;s<=this.minY&&(s=this.minY),s+this.currentHeight>=this.maxY&&(s=this.maxY-this.currentHeight);let n=e.clientX-this.offX;n<=this.minX&&(n=this.minX),n+this.currentWidth>=this.maxX&&(n=this.maxX-this.currentWidth),t.style.top=s+"px",t.style.left=n+"px"}componentWillUnmount(){this.titlebar.current.removeEventListener("mousedown",this.onDragStart,!1),document.removeEventListener("mouseup",this.onDragStop,!1)}render(){const e=this.props.center?se.height/2-this.props.height/2:this.props.top,t=this.props.center?se.width/2-this.props.width/2:this.props.left,s=`floating-window${" "+this.props.className||""}${this.props.resizable?" resizable":""}${this.state.modalOpen?" modal-open":""}`,n={height:this.props.height,width:this.props.width,left:t||0,top:e||0};return H.createElement("div",{id:this.props.id,className:s,ref:this.window,style:n},H.createElement("div",{className:"floating-window-titlebar",ref:this.titlebar},H.createElement("span",{className:"title"},this.props.title),H.createElement("div",{className:"floating-window-buttons"},H.createElement("div",{className:"button maximize-button",onClick:this.maximize},H.createElement(ie,{size:"18px"})),H.createElement("div",{className:"button close-button",onClick:this.close},H.createElement(ne,null)))),H.createElement("div",{className:"floating-window-content"},this.props.children))}maximize(){this.window.current.style.width="100%",this.window.current.style.height="100%",this.props.onResize&&this.props.onResize();const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight,s=parseInt(this.window.current.style.left)+e;parseInt(this.window.current.style.top)+t>this.maxY&&(this.window.current.style.top=this.maxY-t+"px"),s>this.maxX&&(this.window.current.style.left=this.maxX-e+"px");const n=parseInt(this.window.current.style.left),i=parseInt(this.window.current.style.top);if(i{oe.showConfirmationModal(N.Modals.confirmAction,this.props.confirmationText,{danger:!0,confirmText:N.Modals.close,onConfirm:()=>{e(!0)},onCancel:()=>{e(!1)}})})}}function ae(){return(ae=Object.assign||function(e){for(var t=1;t div[class*="app-"]');return e?e.offsetTop:0}render(){return this.state.windows.map(e=>H.createElement(re,ae({},e,{close:this.close.bind(this,e.id),minY:this.minY}),e.children))}open(e){this.setState({windows:[...this.state.windows,e]})}close(e){this.setState({windows:this.state.windows.filter(t=>(t.id==e&&t.onClose&&t.onClose(),t.id!=e))})}static get id(){return"floating-windows"}static get root(){if(this._root)return this._root;const e=document.createElement("div");return e.id=this.id,document.body.append(e),this._root=e}}var de=le;class ce{static initialize(){const e=H.createRef(),t=H.createElement(de,{ref:e}),s=H.createElement(g.getByProps("AppReferencePositionLayer").AppLayerProvider().props.layerContext.Provider,{value:[document.querySelector("#app-mount > .layerContainer-yqaFcK")]},t),n=h.createElement('
');D.bdBody.append(n),q.render(s,n),this.ref=e}static open(e){return this.ref||this.initialize(),this.ref.current.open(e)}}const he=f.React,ue=s(1),pe=s(2),me=s(4).Module;me.globalPaths.push(ue.resolve(s(0).remote.app.getAppPath(),"node_modules"));const ge=/[^\S\r\n]*?\r?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/,fe=/^\\@/,be=function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e};class ye{get name(){return""}get moduleExtension(){return""}get extension(){return""}get addonFolder(){return""}get language(){return""}get prefix(){return"addon"}get collection(){return"settings"}get category(){return"addons"}get id(){return"autoReload"}emit(e,...t){return y.emit(`${this.prefix}-${e}`,...t)}constructor(){this.timeCache={},this.addonList=[],this.state={}}initialize(){return this.originalRequire=me._extensions[this.moduleExtension],me._extensions[this.moduleExtension]=this.getAddonRequire(),L.on(this.collection,this.category,this.id,e=>{e?this.watchAddons():this.unwatchAddons()}),this.loadAllAddons()}initializeAddon(){}getFileModification(e,t){return t}startAddon(){}stopAddon(){}loadState(){const e=S.getData(this.prefix+"s");e&&Object.assign(this.state,e)}saveState(){S.setData(this.prefix+"s",this.state)}watchAddons(){if(this.watcher)return c.error(this.name,`Already watching ${this.prefix} addons.`);c.log(this.name,`Starting to watch ${this.prefix} addons.`),this.watcher=pe.watch(this.addonFolder,{persistent:!1},async(e,t)=>{if(e&&t&&t.endsWith(this.extension)){await new Promise(e=>setTimeout(e,100));try{const s=pe.statSync(ue.resolve(this.addonFolder,t));if(!s.isFile())return;if(!s||!s.mtime||!s.mtime.getTime())return;if("number"!=typeof s.mtime.getTime())return;if(this.timeCache[t]==s.mtime.getTime())return;this.timeCache[t]=s.mtime.getTime(),"rename"==e&&this.loadAddon(t,!0),"change"==e&&this.reloadAddon(t,!0)}catch(e){if("ENOENT"!==e.code)return;delete this.timeCache[t],this.unloadAddon(t,!0)}}})}unwatchAddons(){if(!this.watcher)return c.error(this.name,`Was not watching ${this.prefix} addons.`);this.watcher.close(),delete this.watcher,c.log(this.name,`No longer watching ${this.prefix} addons.`)}extractMeta(e){const t=e.split("\n")[0];if(t.includes("//META"))return this.parseOldMeta(e);if(t.includes("/**"))return this.parseNewMeta(e);throw new T("META was not found.")}parseOldMeta(e){const t=e.split("\n")[0],s=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//")),n=u.testJSON(s);if(!n)throw new T("META could not be parsed.");if(!n.name)throw new T("META missing name data.");return n.format="json",n}parseNewMeta(e){const t=e.split("/**",2)[1].split("*/",1)[0],s={};let n="",i="";for(const e of t.split(ge))if(0!==e.length)if("@"===e.charAt(0)&&" "!==e.charAt(1)){s[n]=i;const t=e.indexOf(" ");n=e.substr(1,t-1),i=e.substr(t+1)}else i+=" "+e.replace("\\n","\n").replace(fe,"@");return s[n]=i.trim(),delete s[""],s.format="jsdoc",s}getAddonRequire(){const e=this,t=this.originalRequire;return function(s,n){const i=ue.resolve(e.addonFolder,ue.basename(n));if(!pe.existsSync(i)||n!==pe.realpathSync(i))return Reflect.apply(t,this,arguments);let o=pe.readFileSync(n,"utf8");o=be(o);const r=pe.statSync(n),a=e.extractMeta(o);a.author||(a.author=N.Addons.unknownAuthor),a.version||(a.version="???"),a.description||(a.description=N.Addons.noDescription),a.id=a.name,a.filename=ue.basename(n),a.added=r.atimeMs,a.modified=r.mtimeMs,a.size=r.size,o=e.getFileModification(s,o,a),s._compile(o,n)}}loadAddon(e,t=!1){if(void 0===e)return;try{require(ue.resolve(this.addonFolder,e))}catch(n){return new B(e,e,"Could not be compiled.",{message:n.message,stack:n.stack})}const s=require(ue.resolve(this.addonFolder,e));if(this.addonList.find(e=>e.id==s.id))return new B(s.name,e,"There is already a plugin with name "+s.name);const n=this.initializeAddon(s);return n||(this.addonList.push(s),t&&W.success(`${s.name} v${s.version} was loaded.`),this.emit("loaded",s.id),this.state[s.id]?this.startAddon(s):this.state[s.id]=!1)}unloadAddon(e,t=!0,s=!1){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return!!n&&(this.state[n.id]&&(s?this.stopAddon(n):this.disableAddon(n)),delete require.cache[require.resolve(ue.resolve(this.addonFolder,n.filename))],this.addonList.splice(this.addonList.indexOf(n),1),this.emit("unloaded",n.id),t&&W.success(n.name+" was unloaded."),!0)}reloadAddon(e,t=!0){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,n=this.unloadAddon(s,t,!0);return n?this.loadAddon(s.filename,t):n}isLoaded(e){return!!this.addonList.find(t=>t.id==e||t.filename==e)}isEnabled(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);return!!t&&this.state[t.id]}enableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(this.state[t.id]||(this.state[t.id]=!0,this.startAddon(t),this.saveState()))}disableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&this.state[t.id]&&(this.state[t.id]=!1,this.stopAddon(t),this.saveState())}toggleAddon(e){this.state[e]?this.disableAddon(e):this.enableAddon(e)}loadNewAddons(){const e=pe.readdirSync(this.addonFolder),t=this.addonList.filter(t=>!e.includes(t.filename)).map(e=>e.id);return{added:e.filter(e=>!this.addonList.find(t=>t.filename==e)&&e.endsWith(this.extension)&&pe.statSync(ue.resolve(this.addonFolder,e)).isFile()),removed:t}}updateList(){const e=this.loadNewAddons();for(const t of e.added)this.loadAddon(t);for(const t of e.removed)this.unloadAddon(t)}loadAllAddons(){this.loadState();const e=[],t=pe.readdirSync(this.addonFolder);for(const s of t){if(!pe.statSync(ue.resolve(this.addonFolder,s)).isFile()||!s.endsWith(this.extension))continue;const t=this.loadAddon(s,!1);t instanceof B&&e.push(t)}return this.saveState(),L.get(this.collection,this.category,this.id)&&this.watchAddons(),e}deleteAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.unlinkSync(ue.resolve(this.addonFolder,t.filename))}saveAddon(e,t){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.writeFileSync(ue.resolve(this.addonFolder,s.filename),t)}editAddon(e,t){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,i=ue.resolve(this.addonFolder,n.filename);return void 0===t&&(t="system"==L.get("settings","addons","editAction")),t?s(0).shell.openItem(""+i):this.openDetached(n)}openDetached(e){const t=ue.resolve(this.addonFolder,e.filename),s=pe.readFileSync(t).toString(),n=he.createRef(),i=he.createElement(te,{id:"bd-floating-editor-"+e.name,ref:n,content:s,save:this.saveAddon.bind(this,e),openNative:this.editAddon.bind(this,e,!0),language:this.language});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{n&&n.current&&n.current.resize&&n.current.resize()},title:e.name,id:s.id,className:"floating-addon-window",height:470,width:410,center:!0,resizable:!0,children:i,confirmClose:()=>!(!n||!n.current)&&n.current.hasUnsavedChanges,confirmationText:N.Addons.confirmationText.format({name:e.name})})}}class ve extends H.Component{constructor(e){super(e)}render(){const e=this.props.isGroup?"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8":"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7",t=this.props.className?`${e} ${this.props.className}`:e;return H.createElement("h2",{className:t,onClick:()=>{this.props.onClick&&this.props.onClick()}},this.props.text,this.props.button&&H.createElement("button",{className:"bd-button bd-button-title",onClick:this.props.button.onClick},this.props.button.title),this.props.otherChildren)}}class we extends H.Component{render(){const e=this.props.size||"24px";return H.createElement("svg",{className:this.props.className||"",onClick:this.props.onClick,fill:"#dcddde",viewBox:"0 0 24 24",style:{width:e,height:e}},H.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),H.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Ce extends H.Component{render(){const e=this.props.size||"24px";return H.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},H.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),H.createElement("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),H.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Se extends H.Component{constructor(e){super(e),this.state={checked:this.props.checked},this.onChange=this.onChange.bind(this)}onChange(){this.props.disabled||(this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked}))}render(){const e=this.props.disabled?" bd-switch-disabled":"",t=this.state.checked?" bd-switch-checked":"";return H.createElement("div",{className:"bd-switch"+e+t},H.createElement("input",{type:"checkbox",id:this.props.id,className:"bd-checkbox",disabled:this.props.disabled,checked:this.state.checked,onChange:this.onChange}))}}class Ee extends H.Component{constructor(e){super(e),this.state={hasError:!1}}componentDidCatch(){this.setState({hasError:!0})}render(){return this.state.hasError?H.createElement("div",{className:"react-error"},"Component Error"):this.props.children}}const Pe=Ee.prototype.render;function xe(){return(xe=Object.assign||function(e){for(var t=1;tPe});const ke=g.getByDisplayName("Tooltip");class Ae extends H.Component{constructor(e){super(e),this.state={settingsOpen:!1},this.settingsPanel="",this.panelRef=H.createRef(),this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this),this.showSettings=this.showSettings.bind(this),this.closeSettings=this.closeSettings.bind(this)}reload(){this.props.reload&&(this.props.addon=this.props.reload(this.props.addon.id),this.forceUpdate())}componentDidUpdate(){this.state.settingsOpen&&(this.settingsPanel instanceof Node&&this.panelRef.current.appendChild(this.settingsPanel),setImmediate(()=>{const e=this.panelRef.current,t=e.closest(".scroller");if(!((e,t)=>{const s=e.scrollTop,n=s+e.clientHeight,i=t.offsetTop,o=i+t.clientHeight;return in})(t,e))return;const s=h.offset(e),n=h.offset(t),i=t.scrollTop,o=s.top-n.top+t.scrollTop-30;h.animate({duration:300,update:function(e){t.scrollTop=o>i?i+e*(o-i):i-e*(i-o)}})}))}getString(e){return"string"==typeof e?e:e.toString()}onChange(){this.props.onChange&&this.props.onChange(this.props.addon.id),this.props.enabled=!this.props.enabled}showSettings(){this.props.hasSettings&&this.setState({settingsOpen:!0})}closeSettings(){this.panelRef.current.innerHTML="",this.setState({settingsOpen:!1})}buildTitle(e,t,s){const n=N.Addons.title.split(/({{[A-Za-z]+}})/),i=n.findIndex(e=>"{{name}}"==e);i&&(n[i]=H.createElement("span",{className:"bd-name"},e));const o=n.findIndex(e=>"{{version}}"==e);i&&(n[o]=H.createElement("span",{className:"bd-version"},t));const r=n.findIndex(e=>"{{author}}"==e);return i&&(n[r]=H.createElement("span",{className:"bd-author"},s)),n.flat()}get settingsComponent(){const e=this.props.addon,t=this.getString(e.name);try{this.settingsPanel=this.props.getSettingsPanel()}catch(e){c.stacktrace("Addon Settings","Unable to get settings panel for "+t+".",e)}const s={id:t+"-settings",className:"addon-settings",ref:this.panelRef};return"string"==typeof settingsPanel&&(c.warn("Addon Settings","Using a DOMString is officially deprecated."),s.dangerouslySetInnerHTML=this.settingsPanel),H.createElement("div",{className:"bd-addon-card settings-open bd-switch-item"},H.createElement("div",{className:"bd-close",onClick:this.closeSettings},H.createElement(ne,null)),H.createElement("div",s,H.createElement(Ee,null,this.settingsPanel instanceof H.Component||"function"==typeof this.settingsPanel?this.settingsPanel:null)))}buildLink(e){const t=this.props.addon[e];if(!t)return null;const s=H.createElement("a",{className:"bd-link bd-link-website",href:t,target:"_blank",rel:"noopener noreferrer"},N.Addons[e]);return"invite"==e&&(s.props.onClick=function(e){e.preventDefault(),e.stopPropagation();let s=t;const n=/\.gg\/(.*)$/;n.test(s)&&(s=s.match(n)[1]),f.LayerStack.popLayer(),f.InviteActions.acceptInviteAndTransitionToInviteChannel(s)}),s}get footer(){const e=["website","source","invite","donate","patreon"];if(!e.some(e=>this.props.addon[e])&&!this.props.hasSettings)return null;const t=e.map(this.buildLink.bind(this)).filter(e=>e);return H.createElement("div",{className:"bd-footer"},H.createElement("span",{className:"bd-links"},t.map((e,s)=>sH.createElement("div",xe({},e,{className:"bd-addon-button",onClick:s}),t))}render(){if(this.state.settingsOpen)return this.settingsComponent;const e=this.props.addon,t=this.getString(e.name),s=this.getString(e.author),n=this.getString(e.description),i=this.getString(e.version);return H.createElement("div",{id:e.id+"-card",className:"bd-addon-card settings-closed"},H.createElement("div",{className:"bd-addon-header"},H.createElement("span",{className:"bd-title"},this.buildTitle(t,i,s)),H.createElement("div",{className:"bd-controls"},this.props.editAddon&&this.makeButton(N.Addons.editAddon,H.createElement(Q,null),this.props.editAddon),this.props.deleteAddon&&this.makeButton(N.Addons.deleteAddon,H.createElement(Ce,null),this.props.deleteAddon),this.props.showReloadIcon&&this.makeButton(N.Addons.reload,H.createElement(we,{className:"bd-reload bd-reload-card"}),this.reload),H.createElement(Se,{checked:this.props.enabled,onChange:this.onChange}))),H.createElement("div",{className:"bd-description-wrap scroller-wrap fade"},H.createElement("div",{className:"bd-description scroller"},n)),this.footer)}}const De=Ae.prototype.render;Object.defineProperty(Ae.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonCard","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>De});class Me extends H.Component{render(){const e=this.props.size||"16px";return H.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},H.createElement("path",{d:"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z"}))}}class Ne extends H.Component{constructor(e){super(e),this.state={open:!1,value:this.props.value||this.props.options[0].value},this.dropdown=H.createRef(),this.onChange=this.onChange.bind(this),this.showMenu=this.showMenu.bind(this),this.hideMenu=this.hideMenu.bind(this)}showMenu(e){e.preventDefault(),this.setState({open:!0},()=>{document.addEventListener("click",this.hideMenu)})}hideMenu(){this.setState({open:!1},()=>{document.removeEventListener("click",this.hideMenu)})}onChange(e){this.setState({value:e}),this.props.onChange&&this.props.onChange(e)}get selected(){return this.props.options.find(e=>e.value==this.state.value)}get options(){const e=this.selected;return H.createElement("div",{className:"bd-select-options"},this.props.options.map(t=>H.createElement("div",{className:"bd-select-option"+(e.value==t.value?" selected":""),onClick:this.onChange.bind(this,t.value)},t.label)))}render(){const e="transparent"==this.props.style?" bd-select-transparent":"",t=this.state.open?" menu-open":"";return H.createElement("div",{className:`bd-select${e}${t}`,onClick:this.showMenu,ref:this.dropdown},H.createElement("div",{className:"bd-select-value"},this.selected.label),H.createElement(Me,{className:"bd-select-arrow"}),this.state.open&&this.options)}}class Le extends H.Component{render(){const e=this.props.size||"16px";return H.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},H.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),H.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}))}}class Be extends H.Component{render(){return H.createElement("div",{className:"bd-search-wrapper"},H.createElement("input",{onChange:this.props.onChange,onKeyDown:this.props.onKeyDown,type:"text",className:"bd-search",placeholder:this.props.placeholder,maxLength:"50"}),H.createElement(Le,null))}}class Te extends H.Component{constructor(e){super(e),this.state={sort:"name",ascending:!0,query:""},this.sort=this.sort.bind(this),this.reverse=this.reverse.bind(this),this.search=this.search.bind(this),this.update=this.update.bind(this)}componentDidMount(){y.on(this.props.prefix+"-loaded",this.update),y.on(this.props.prefix+"-unloaded",this.update)}componentWillUnmount(){y.off(this.props.prefix+"-loaded",this.update),y.off(this.props.prefix+"-unloaded",this.update)}update(){this.forceUpdate()}reload(){this.props.refreshList&&this.props.refreshList(),this.forceUpdate()}reverse(e){this.setState({ascending:e})}sort(e){this.setState({sort:e})}search(e){this.setState({query:e.target.value.toLocaleLowerCase()})}get sortOptions(){return[{label:N.Addons.name,value:"name"},{label:N.Addons.author,value:"author"},{label:N.Addons.version,value:"version"},{label:N.Addons.added,value:"added"},{label:N.Addons.modified,value:"modified"}]}get directions(){return[{label:N.Sorting.ascending,value:!0},{label:N.Sorting.descending,value:!1}]}render(){const{title:e,folder:t,addonList:n,addonState:i,onChange:o,reload:r}=this.props,a=!L.get("settings","addons","autoReload"),l=t?{title:N.Addons.openFolder.format({type:e}),onClick:()=>{const e=s(0).shell;(e.openItem||e.openPath)(t)}}:null,d=n.sort((e,t)=>{const s=e[this.state.sort],n=t[this.state.sort];return"string"==typeof s?s.toLocaleLowerCase().localeCompare(n.toLocaleLowerCase()):s>n?1:n>s?-1:0});return this.state.ascending||d.reverse(),[H.createElement(ve,{key:"title",text:e,button:l,otherChildren:a&&H.createElement(we,{className:"bd-reload",onClick:this.reload.bind(this)})}),H.createElement("div",{className:"bd-controls bd-addon-controls"},H.createElement(Be,{onChange:this.search,placeholder:N.Addons.search.format({type:this.props.title})+"..."}),H.createElement("div",{className:"bd-addon-dropdowns"},H.createElement("div",{className:"bd-select-wrapper"},H.createElement("label",{className:"bd-label"},N.Sorting.sortBy,":"),H.createElement(Ne,{options:this.sortOptions,onChange:this.sort,style:"transparent"})),H.createElement("div",{className:"bd-select-wrapper"},H.createElement("label",{className:"bd-label"},N.Sorting.order,":"),H.createElement(Ne,{options:this.directions,onChange:this.reverse,style:"transparent"})))),H.createElement("div",{key:"addonList",className:"bd-addon-list"},d.map(e=>{if(this.state.query){let t=e.name.toLocaleLowerCase().includes(this.state.query);if(t=t||e.author.toLocaleLowerCase().includes(this.state.query),t=t||e.description.toLocaleLowerCase().includes(this.state.query),!t)return null}const t=e.type&&"function"==typeof e.plugin.getSettingsPanel,s=t&&e.plugin.getSettingsPanel.bind(e.plugin);return H.createElement(Ee,null,H.createElement(Ae,{editAddon:this.editAddon.bind(this,e.id),deleteAddon:this.deleteAddon.bind(this,e.id),showReloadIcon:a,key:e.id,enabled:i[e.id],addon:e,onChange:o,reload:r,hasSettings:t,getSettingsPanel:s}))}))]}editAddon(e){this.props.editAddon&&this.props.editAddon(e)}async deleteAddon(e){const t=this.props.addonList.find(t=>t.id==e);await this.confirmDelete(t)&&this.props.deleteAddon&&this.props.deleteAddon(t)}confirmDelete(e){return new Promise(t=>{oe.showConfirmationModal(N.Modals.confirmAction,N.Addons.confirmDelete.format({name:e.name}),{danger:!0,confirmText:N.Addons.deleteAddon,onConfirm:()=>{t(!0)},onCancel:()=>{t(!1)}})})}}const je=Te.prototype.render;Object.defineProperty(Te.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonList","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>je});class Fe extends H.Component{render(){return H.createElement("div",{className:"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv"})}}class Oe extends H.Component{render(){return H.createElement("div",{className:"bd-setting-item"},H.createElement("div",{className:"bd-setting-header"},H.createElement("label",{htmlFor:this.props.id,className:"bd-setting-title"},this.props.name),this.props.children),H.createElement("div",{className:"bd-setting-note"},this.props.note),H.createElement("div",{className:"bd-setting-divider"}))}}class Ie extends H.Component{constructor(e){if(super(e),this.props.button&&this.props.collapsible){const e=this.props.button.onClick;this.props.button.onClick=t=>{t.stopPropagation(),e(...arguments)}}this.props.hasOwnProperty("shown")||(this.props.shown=!0),this.container=H.createRef(),this.state={collapsed:this.props.collapsible&&!this.props.shown},this.onChange=this.onChange.bind(this),this.toggleCollapse=this.toggleCollapse.bind(this)}toggleCollapse(){const e=this.container.current,t=this.state.collapsed?300:1;e.style.setProperty("height",e.scrollHeight+"px"),e.classList.add("animating"),this.setState({collapsed:!this.state.collapsed},()=>setTimeout(()=>{e.style.setProperty("height",""),e.classList.remove("animating")},t))}onChange(e,t){this.props.onChange&&(this.props.id?this.props.onChange(this.props.id,e,t):this.props.onChange(e,t),this.forceUpdate())}render(){const{settings:e}=this.props,t="bd-settings-group "+(this.props.collapsible?"collapsible "+(this.state.collapsed?"collapsed":"expanded"):"");return H.createElement("div",{className:t},H.createElement(ve,{text:this.props.name,collapsible:this.props.collapsible,onClick:this.toggleCollapse,button:this.props.button,isGroup:!0}),H.createElement("div",{className:"bd-settings-container",ref:this.container},e.filter(e=>!e.hidden).map(e=>{let t=null;return"dropdown"==e.type&&(t=H.createElement(Ne,{disabled:e.disabled,id:e.id,options:e.options,value:e.value,onChange:this.onChange.bind(this,e.id)})),"switch"==e.type&&(t=H.createElement(Se,{disabled:e.disabled,id:e.id,checked:e.value,onChange:this.onChange.bind(this,e.id)})),t?H.createElement(Oe,{id:e.id,key:e.id,name:e.name,note:e.note},t):null})),this.props.showDivider&&H.createElement(Fe,null))}}const ze=Ie.prototype.render;Object.defineProperty(Ie.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("Group","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>ze});class Re extends H.Component{render(){const e=this.props.size||"18px";return H.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",className:this.props.className||"",style:{width:e,height:e},onClick:this.props.onClick},H.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),H.createElement("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"}))}}function He(){return(He=Object.assign||function(e){for(var t=1;te.Header&&e.Separator&&e.Item),Ue=g.getByDisplayName("Tooltip");class _e extends H.Component{constructor(e){super(e)}render(){return H.createElement("div",{className:"bd-sidebar-header"},H.createElement(qe.Header,null,"BandagedBD"),H.createElement(Ue,{color:"black",position:"top",text:"Changelog"},e=>H.createElement("div",He({},e,{className:"bd-changelog-button",onClick:()=>oe.showChangelogModal(l)}),H.createElement(Re,{className:"bd-icon",size:"16px"}))))}}var $e=new class{constructor(){this.patchSections(),y.on("strings-updated",this.forceUpdate)}onChange(e){return(t,s,n)=>{const i=L.collections.length+L.panels.length;e(t,s,n);i!=L.collections.length+L.panels.length&&setTimeout(this.forceUpdate.bind(this),50)}}buildSettingsPanel(e,t,s,n,i=null){return t.forEach(e=>{e.settings.forEach(t=>t.value=s[e.id][t.id])}),this.getSettingsPanel(e,t,this.onChange(n),i)}getSettingsPanel(e,t,s,n=null){return[H.createElement(ve,{text:e,button:n}),t.map(e=>H.createElement(Ie,Object.assign({},e,{onChange:s})))]}getAddonPanel(e,t,s,n={}){return H.createElement(Te,Object.assign({},{title:e,addonList:t,addonState:s},n))}async patchSections(){const e=await R.get("UserSettings",e=>e.prototype&&e.prototype.generateSections);j.after("SettingsManager",e.prototype,"render",e=>{e._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id="user-settings"}),j.after("SettingsManager",e.prototype,"generateSections",(e,t,s)=>{let n=s.findIndex(e=>"linux"==e.section.toLowerCase())+1;const i=e=>{s.splice(n,0,e),n++};i({section:"DIVIDER"}),i({section:"CUSTOM",element:_e});for(const e of L.collections)e.disabled||i({section:e.name,label:e.name,element:()=>this.buildSettingsPanel(e.name,e.settings,L.state[e.id],L.onSettingChange.bind(L,e.id),e.button?e.button:null)});for(const t of L.panels.sort((e,t)=>e.order>t.order))t.clickListener&&(t.onClick=n=>t.clickListener(e,n,s)),i(t)}),this.forceUpdate()}forceUpdate(){const e=g.getByProps("standardSidebarView").standardSidebarView.split(" ")[0],t=document.querySelector("."+e);if(!t)return;const s=u.findInReactTree(u.getReactInstance(t),e=>e&&e.generateSections,{walkable:["return","stateNode"]});s&&s.forceUpdate()}};const We=s(1),Ge=s(0).remote;var Ve=new class extends ye{get name(){return"PluginManager"}get moduleExtension(){return".js"}get extension(){return".plugin.js"}get addonFolder(){return We.resolve(o.dataPath,"plugins")}get prefix(){return"plugin"}get language(){return"javascript"}constructor(){super(),this.onSwitch=this.onSwitch.bind(this),this.observer=new MutationObserver(e=>{for(let t=0,s=e.length;t$e.getAddonPanel(N.Panels.plugins,this.addonList,this.state,{folder:this.addonFolder,onChange:this.togglePlugin.bind(this),reload:this.reloadPlugin.bind(this),refreshList:this.updatePluginList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updatePluginList(){return this.updateList()}loadAllPlugins(){return this.loadAllAddons()}enablePlugin(e){return this.enableAddon(e)}disablePlugin(e){return this.disableAddon(e)}togglePlugin(e){return this.toggleAddon(e)}unloadPlugin(e){return this.unloadAddon(e)}loadPlugin(e){const t=this.loadAddon(e);t&&oe.showAddonErrors({themes:[t]})}reloadPlugin(e){const t=this.reloadAddon(e);return t&&oe.showAddonErrors({plugins:[t]}),"string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e}initializeAddon(e){if(!e.type)return new B(e.name,e.filename,"Plugin had no exports",{message:"Plugin had no exports or no name property.",stack:""});try{const t=new e.type;e.plugin=t,e.name=t.getName()||e.name,e.author=t.getAuthor()||e.author||"No author",e.description=t.getDescription()||e.description||"No description",e.version=t.getVersion()||e.version||"No version";try{"function"==typeof e.plugin.load&&e.plugin.load()}catch(t){return this.state[e.id]=!1,new B(e.name,e.filename,"load() could not be fired.",{message:t.message,stack:t.stack})}}catch(t){return new B(e.name,e.filename,"Could not be constructed.",{message:t.message,stack:t.stack})}}getFileModification(e,t,s){e._compile(t,e.filename);return u.isEmpty(e.exports)?(c.warn(this.name,s.name+", please start assigning module.exports"),t+=`\nmodule.exports = ${JSON.stringify(s)};\nmodule.exports.type = ${s.exports||s.name};`):(s.type=e.exports,e.exports=s,"")}startAddon(e){return this.startPlugin(e)}stopAddon(e){return this.stopPlugin(e)}startPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.start(),this.emit("started",t.id),W.show(N.Addons.enabled.format({name:t.name,version:t.version}))}catch(e){return this.state[t.id]=!1,W.error(`${t.name} v${t.version} could not be started.`),c.stacktrace(this.name,t.name+" could not be started.",e),new B(t.name,t.filename,"start() could not be fired.",{message:e.message,stack:e.stack})}}stopPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.stop(),this.emit("stopped",t.id),W.show(N.Addons.disabled.format({name:t.name,version:t.version}))}catch(e){return this.state[t.id]=!1,W.error(`${t.name} v${t.version} could not be stopped.`),c.stacktrace(this.name,t.name+" could not be stopped.",e),new B(t.name,t.filename,"stop() could not be fired.",{message:e.message,stack:e.stack})}}setupFunctions(){Ge.getCurrentWebContents().on("did-navigate-in-page",this.onSwitch.bind(this)),this.observer.observe(document,{childList:!0,subtree:!0})}onSwitch(){this.emit("page-switch");for(let e=0;e$e.getAddonPanel(N.Panels.themes,this.addonList,this.state,{folder:this.addonFolder,onChange:this.toggleTheme.bind(this),reload:this.reloadTheme.bind(this),refreshList:this.updateThemeList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updateThemeList(){return this.updateList()}loadAllThemes(){return this.loadAllAddons()}enableTheme(e){return this.enableAddon(e)}disableTheme(e){return this.disableAddon(e)}toggleTheme(e){return this.toggleAddon(e)}unloadTheme(e){return this.unloadAddon(e)}loadTheme(e){const t=this.loadAddon(e);t&&oe.showAddonErrors({themes:[t]})}reloadTheme(e){const t=this.reloadAddon(e);t&&oe.showAddonErrors({themes:[t]})}getFileModification(e,t,s){return s.css=t,`module.exports = ${JSON.stringify(s)};`}startAddon(e){return this.addTheme(e)}stopAddon(e){return this.removeTheme(e)}addTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(D.injectTheme(t.id,t.css),W.show(N.Addons.enabled.format({name:t.name,version:t.version})))}removeTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(D.removeTheme(t.id),W.show(N.Addons.disabled.format({name:t.name,version:t.version})))}};class Xe{get name(){return"Unnamed Builtin"}get collection(){return"settings"}get category(){return"general"}get id(){return"None"}async initialize(){L.get(this.collection,this.category,this.id)&&await this.enable(),y.on("setting-updated",(e,t,s,n)=>{e==this.collection&&t===this.category&&s===this.id&&(n?this.enable():this.disable())}),this.initialized=!0}registerSetting(e,t,s,n,i){return 4==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1],n=arguments[2],i=arguments[3]):3==arguments.length&&(e=this.collection,t=this.category,s=arguments[0],n=arguments[1],i=arguments[2]),L.on(e,t,s,e=>{e?n():i()})}get(e,t,s){return 2==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1]):1==arguments.length&&(e=this.collection,t=this.category,s=arguments[0]),L.get(e,t,s)}async enable(){this.log("Enabled"),await this.enabled()}async disable(){this.log("Disabled"),await this.disabled()}async enabled(){}async disabled(){}log(...e){c.log(this.name,...e)}warn(...e){c.warn(this.name,...e)}error(...e){c.err(this.name,...e)}stacktrace(e,t){c.stacktrace(this.name,e,t)}before(e,t,s){return j.before(this.name,e,t,s)}after(e,t,s){return j.after(this.name,e,t,s)}unpatchAll(){return j.unpatchAll(this.name)}}class Ze extends H.Component{render(){const e=this.props.size||"24px";return H.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},H.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),H.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}))}}class Ke extends H.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.toggleLiveUpdate=this.toggleLiveUpdate.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.openDetached=this.props.openDetached?this.openDetached.bind(this):null,this.openNative=this.openNative.bind(this),this.updateEditor=this.updateEditor.bind(this),this.controls=[{label:H.createElement(we,{size:"18px"}),tooltip:N.CustomCSS.update,onClick:this.updateCss},{label:H.createElement(K,{size:"18px"}),tooltip:N.CustomCSS.save,onClick:this.saveCss},{label:H.createElement(Q,{size:"18px"}),tooltip:N.CustomCSS.openNative,onClick:this.openNative},{label:H.createElement(ee,{size:"18px"}),tooltip:N.CustomCSS.settings,onClick:"showSettings"},{label:N.Collections.settings.customcss.liveUpdate.name,type:"checkbox",onChange:this.toggleLiveUpdate,checked:L.get("settings","customcss","liveUpdate"),side:"right"}],this.openDetached&&this.controls.push({label:H.createElement(Ze,{size:"18px"}),tooltip:N.CustomCSS.openDetached,onClick:this.openDetached,side:"right"})}componentDidMount(){y.on("customcss-updated",this.updateEditor)}componentWillUnmount(){y.off("customcss-updated",this.updateEditor)}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}onChange(){this.hasUnsavedChanges=!0,this.props.onChange&&this.props.onChange(...arguments)}render(){return H.createElement(Z,{ref:this.setEditorRef.bind(this),readOnly:this.props.readOnly,id:this.props.id||"bd-customcss-editor",onChange:this.onChange,controls:this.controls,value:this.props.css})}toggleLiveUpdate(e){L.set("settings","customcss","liveUpdate",e)}updateCss(e,t){this.props.update&&this.props.update(t)}saveCss(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openDetached(e,t){this.props.openDetached&&this.props.openDetached(t)}openNative(){this.props.openNative&&this.props.openNative()}}const Qe=s(2),et=s(0),tt=g.getByProps("updateAccount"),st=g.getByProps("dirtyDispatch"),nt=g.getByProps("ActionTypes").ActionTypes;var it=new class extends Xe{get name(){return"Custom CSS"}get category(){return"customcss"}get id(){return"customcss"}get startDetached(){return"detached"==L.get(this.collection,this.category,"openAction")}get nativeOpen(){return"system"==L.get(this.collection,this.category,"openAction")}constructor(){super(),this.savedCss="",this.insertedCss="",this.isDetached=!1}async enabled(){window.ace||D.injectScript("ace-script","https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js").then(()=>{window.require.original&&(window.require=window.require.original)}),L.registerPanel(this.id,N.Panels.customcss,{order:2,element:()=>[H.createElement(ve,{text:N.CustomCSS.editorTitle}),H.createElement(Ke,{css:this.savedCss,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),openDetached:this.openDetached.bind(this),onChange:this.onChange.bind(this)})],onClick:e=>{if(this.isDetached)return;if(this.nativeOpen)return this.openNative();if(this.startDetached)return this.openDetached();const t=u.findInRenderTree(e._reactInternalFiber,e=>e&&e.onSetSection,{walkable:["child","memoizedProps","props","children"]});t&&t.onSetSection&&t.onSetSection(this.id)}}),this.loadCSS(),this.insertCSS(this.savedCss),this.watchContent()}disabled(){L.removePanel(this.id),this.unwatchContent()}watchContent(){if(this.watcher)return this.error("Already watching content.");const e={};this.log("Starting to watch content."),this.watcher=Qe.watch(S.customCSS,{persistent:!1},async(t,s)=>{if(!t||!s)return;await new Promise(e=>setTimeout(e,50));try{Qe.statSync(S.customCSS)}catch(t){if("ENOENT"!==t.code)return;delete e[s],this.saveCSS("")}const n=Qe.statSync(S.customCSS);if(n&&n.mtime&&n.mtime.getTime()&&"number"==typeof n.mtime.getTime()&&e[s]!=n.mtime.getTime()&&(e[s]=n.mtime.getTime(),"change"==t)){const e=S.loadCustomCSS();if(e==this.savedCss)return;this.savedCss=e,this.insertCSS(this.savedCss),y.emit("customcss-updated",this.savedCss)}})}unwatchContent(){if(!this.watcher)return this.error("Was not watching content.");this.watcher.close(),delete this.watcher,this.log("No longer watching content.")}onChange(e){L.get("settings","customcss","liveUpdate")&&(this.insertCSS(e),this.saveCSS(e))}loadCSS(){this.savedCss=S.loadCustomCSS()}insertCSS(e){void 0===e?e=this.insertedCss:this.insertedCss=e,D.updateCustomCSS(e)}saveCSS(e){void 0!==e&&(this.savedCss=e),S.saveCustomCSS(this.savedCss)}openNative(){et.shell.openExternal("file://"+S.customCSS)}openDetached(e){const t=H.createRef(),s=H.createElement(Ke,{id:"bd-floating-editor",ref:t,css:e,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),onChange:this.onChange.bind(this)});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{t&&t.current&&t.current.resize&&t.current.resize()},title:N.CustomCSS.editorTitle,id:"floating-editor-window",height:470,width:410,center:!0,resizable:!0,children:s,confirmClose:()=>!(!t||!t.current)&&t.current.hasUnsavedChanges,confirmationText:N.CustomCSS.confirmationText}),this.isDetached=!0,tt.close(),st.dirtyDispatch({type:nt.LAYER_POP})}},ot=new class extends Xe{get name(){return"WindowPrefs"}get category(){return"window"}get id(){return"transparency"}enabled(){this.setWindowPreference("transparent",!0),this.setWindowPreference("backgroundColor","#00000000"),this.showModal(N.WindowPrefs.enabledInfo)}disabled(){this.deleteWindowPreference("transparent"),this.deleteWindowPreference("backgroundColor"),this.showModal(N.WindowPrefs.disabledInfo)}showModal(e){this.initialized&&oe.showConfirmationModal(N.Modals.additionalInfo,e,{confirmText:N.Modals.restartNow,cancelText:N.Modals.restartLater,onConfirm:()=>{const e=s(0).remote.app;e.relaunch(),e.exit()}})}getWindowPreference(e){return(S.getData("windowprefs")||{})[e]}setWindowPreference(e,t){const s=S.getData("windowprefs")||{};s[e]=t,S.setData("windowprefs",s)}deleteWindowPreference(e){const t=S.getData("windowprefs")||{};delete t[e],S.setData("windowprefs",t)}},rt=new class extends Xe{get name(){return"24Hour"}get category(){return"general"}get id(){return"twentyFourHour"}enabled(){this.inject24Hour()}disabled(){this.unpatchAll()}inject24Hour(){const e=new RegExp("([0-9]{1,2}):([0-9]{1,2})\\s(AM|PM)"),t=(t,s,n)=>{const i=n.match(e);if(i&&4===i.length)return"AM"===i[3]?n.replace(i[0],`${"12"===i[1]?"00":i[1].padStart(2,"0")}:${i[2]}`):n.replace(i[0],`${"12"===i[1]?"12":parseInt(i[1])+12}:${i[2]}`)};this.after(f.TimeFormatter,"calendarFormat",t),this.after(f.TimeFormatter,"dateFormat",t)}};const at=new RegExp("^(?!da-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$");var lt=new class extends Xe{get id(){return"classNormalizer"}get category(){return"general"}get name(){return"ClassNormalizer"}enabled(){this.hasPatched||(this.patchClassModules(g.getModules(this.moduleFilter.bind(this))),this.normalizeElement(document.querySelector("#app-mount")),this.hasPatched=!0,this.patchDOMMethods())}disabled(){this.hasPatched&&(this.unpatchClassModules(g.getModules(this.moduleFilter.bind(this))),this.revertElement(document.querySelector("#app-mount")),this.hasPatched=!1)}patchClassModules(e){for(const t of e)this.patchClassModule("da",t)}unpatchClassModules(e){for(const t of e)this.unpatchClassModule("da",t)}shouldIgnore(e){return!isNaN(e)||(!!(e.endsWith("px")||e.endsWith("ch")||e.endsWith("em")||e.endsWith("ms"))||(!!e.startsWith("layerContainer-")||(!(!e.startsWith("#")||7!=e.length&&4!=e.length)||!(!e.includes("calc(")&&!e.includes("rgba")))))}moduleFilter(e){if("object"!=typeof e||Array.isArray(e))return!1;if(e.__esModule)return!1;if(!Object.keys(e).length)return!1;for(const t in e){const s=e[t];if("string"!=typeof s)return!1;if(!this.shouldIgnore(s)){if(1===s.split("-").length)return!1;if(!at.test(s.split(" ")[0]))return!1}}return!0}patchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;const i=n.split(" ");for(const n of i){const i=n.match(at);if(!i||!i.length||i.length<2)continue;const o=i[1].split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");t[s]+=` ${e}-${o}`}}}unpatchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;let i="";const o=n.split(" ");for(const t of o)t.startsWith(e+"-")||(i+=" "+t);t[s]=i.trim()}}normalizeElement(e){if(!(e instanceof Element))return;const t=e.classList;for(let s=0,n=t.length;st?e[0].toUpperCase()+e.slice(1):e).join("");e.classList.add("da-"+n)}for(const t of e.children)this.normalizeElement(t)}revertElement(e){if(!(e instanceof Element))return;e.children&&e.children.length&&this.revertElement(e.children[0]),e.nextElementSibling&&this.revertElement(e.nextElementSibling);const t=e.classList,s=[];for(let e=0;e{const o=[];t&&o.push("category="+t.replace(/ /g,"%20")),e&&o.push("term="+e.replace(/ /g,"%20")),n&&o.push("from="+n);const r="?"+o.join("&");i.get({url:`${this.endPoint}${r}${r?"&schema=new":"?schema=new"}`,json:!0},(e,t,n)=>{if(e)return s(null);const i=n.size+n.from;s({servers:n.results,size:n.size,from:n.from,total:n.total,next:i>=n.total?null:i})})})}static async join(e,t=!1){if(t)return ut.acceptInvite(e);try{return await fetch(`${this.joinEndPoint}/${e}`,{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),!0}catch(e){return!1}}static async checkConnection(){try{const e=await fetch("https://auth.discordservers.com/info",{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),t=await e.json();return this._accessToken=t.access_token,t}catch(e){return!1}}static connect(){return new Promise(e=>{const t=new pt(this.windowOptions),s="https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl="+this.connectEndPoint;t.webContents.on("did-navigate",(s,n)=>{n==this.connectEndPoint&&(t.close(),e())}),t.loadURL(s)})}static get windowOptions(){return{width:380,height:450,backgroundColor:"#282b30",show:!0,resizable:!0,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!0,webPreferences:{nodeIntegration:!1}}}}const gt=g.getByDisplayName("SettingsView");class ft extends H.Component{get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","MOBA Games","RPG Games","Tabletop Games","Sandbox Games","Simulation Games","Music","Community","Language","Programming","Other"]}constructor(e){super(e),this.state={category:"All",query:"",loading:!0,user:null,results:{servers:[],size:0,from:0,total:0,next:null}},this.changeCategory=this.changeCategory.bind(this),this.searchKeyDown=this.searchKeyDown.bind(this),this.connect=this.connect.bind(this),this.loadNextPage=this.loadNextPage.bind(this),this.join=this.join.bind(this)}componentDidMount(){this.checkConnection()}async checkConnection(){const e=await mt.checkConnection();if(!e)return this.setState({loading:!0,user:null});this.setState({user:e}),this.search()}async connect(){await mt.connect(),this.checkConnection()}searchKeyDown(e){this.state.loading||13!==e.which||this.search(e.target.value)}async search(e="",t=0){this.setState({query:e,loading:!0});const s=await mt.search({term:e,category:"All"==this.state.category?"":this.state.category,from:t});if(!s)return this.setState({results:{servers:[],size:0,from:0,total:0,next:null}});this.setState({loading:!1,results:s})}async changeCategory(e){this.state.loading||(await new Promise(t=>this.setState({category:e},t)),this.search())}loadNextPage(){this.state.loading||this.search(this.state.query,this.state.results.next)}async join(e,t=!1){return await mt.join(e,t)}get searchBox(){return H.createElement(Be,{onKeyDown:this.searchKeyDown,placeholder:N.PublicServers.search+"..."})}get title(){if(!this.state.user)return N.PublicServers.notConnected;if(this.state.loading)return N.PublicServers.loading+"...";const e=this.state.results.from+1,t=this.state.results.total,s=this.state.results.next?this.state.results.next:t;let n=N.PublicServers.results.format({start:e,end:s,total:t,category:this.state.category});return this.state.query&&(n+=" "+N.PublicServers.query.format({query:this.state.query})),n}get content(){const e=this.state.user?null:{title:N.PublicServers.connect,onClick:this.connect},t="All"!=this.state.category&&this.state.user?null:this.bdServer,s=this.state.results.servers.map(e=>H.createElement(dt,{key:e.identifier,server:e,joined:mt.hasJoined(e.identifier),join:this.join,defaultAvatar:mt.getDefaultAvatar}));return[H.createElement(ve,{text:this.title,button:e}),t,s,this.state.results.next?this.nextButton:null,this.state.results.servers.length>0&&H.createElement(ve,{text:this.title})]}get nextButton(){return H.createElement("button",{type:"button",className:"bd-button bd-button-next",onClick:this.loadNextPage},this.state.loading?N.PublicServers.loading:N.PublicServers.loadMore)}get connection(){const{user:e}=this.state;return e?H.createElement("div",{id:"bd-connection"},H.createElement("div",{className:"bd-footnote"},N.PublicServers.connection.format(e)),H.createElement("button",{type:"button",className:"bd-button bd-button-reconnect",onClick:this.connect},N.PublicServers.reconnect)):H.createElement("div",{id:"bd-connection"})}get bdServer(){const e={name:"BetterDiscord",online:"7500+",members:"20000+",categories:["community","programming","support"],description:"Official BetterDiscord server for plugins, themes, support, etc",identifier:"86004744966914048",iconUrl:"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",nativejoin:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0};return H.createElement(dt,{server:e,pinned:!0,joined:mt.hasJoined(e.identifier),defaultAvatar:mt.getDefaultAvatar})}render(){const e=this.categoryButtons.map(e=>({section:e,label:e,element:()=>this.content}));return H.createElement(gt,{onClose:this.props.close,onSetSection:this.changeCategory,section:this.state.category,sections:[{section:"HEADER",label:N.PublicServers.search},{section:"CUSTOM",element:()=>this.searchBox},{section:"HEADER",label:N.PublicServers.categories},...e,{section:"DIVIDER"},{section:"HEADER",label:H.createElement("a",{href:"https://discordservers.com",target:"_blank"},"DiscordServers.com")},{section:"DIVIDER"},{section:"CUSTOM",element:()=>this.connection}],theme:"dark"})}}const bt=g.getByProps("pushLayer");var yt=new class extends Xe{get name(){return"PublicServers"}get category(){return"general"}get id(){return"publicServers"}enabled(){const e=g.find(e=>e.default&&"NavigableGuilds"==e.default.displayName),t=g.findByDisplayName("Guilds");e||t||this.warn("Can't find GuildList component"),this.guildPatch=this.after(e||t.prototype,e?"default":"render",this._appendButton),this._appendButton()}disabled(){this.unpatchAll(),h.query("#bd-pub-li").remove()}_appendButton(){const e=f.GuildClasses.wrapper.split(" ")[0],t=h.query(`.${e} .scroller-2TZvBN >:first-child`);h.after(t,this.button)}openPublicServers(){bt.pushLayer(()=>f.React.createElement(ft,{close:bt.popLayer}))}get button(){const e=h.createElement(`
`),t=h.createElement(`
${N.PublicServers.button}
`);return t.addEventListener("click",()=>{this.openPublicServers()}),e.append(t),e}},vt=new class extends Xe{get name(){return"VoiceDisconnect"}get category(){return"general"}get id(){return"voiceDisconnect"}constructor(){super(),this.beforeUnload=this.beforeUnload.bind(this)}enabled(){window.addEventListener("beforeunload",this.beforeUnload)}disabled(){window.removeEventListener("beforeunload",this.beforeUnload)}beforeUnload(){f.ChannelActions.selectVoiceChannel(null,null)}};const wt=g.getModule(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName);var Ct=new class extends Xe{get name(){return"ColoredText"}get category(){return"appearance"}get id(){return"coloredText"}enabled(){this.injectColoredText()}disabled(){this.unpatchAll()}injectColoredText(){this.after(wt.prototype,"render",(e,t,s)=>{this.after(s.props,"children",{silent:!0,after:({returnValue:t})=>{const s=t.props.children[1],n=e.props.message.colorString;s&&n&&(s.props.style={color:n})}})})}removeColoredText(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})}},St=new class extends Xe{get name(){return"DarkMode"}get category(){return"appearance"}get id(){return"darkMode"}enabled(){document.getElementById("app-mount").classList.add("bda-dark","bd-dark")}disabled(){document.getElementById("app-mount").classList.remove("bda-dark","bd-dark")}},Et=new class extends Xe{get name(){return"MinimalMode"}get category(){return"appearance"}get id(){return"minimalMode"}get hideChannelsID(){return"hideChannels"}get hideChannels(){return this.get(this.hideChannelsID)}constructor(){super(),this.enableHideChannels=this.enableHideChannels.bind(this),this.disableHideChannels=this.disableHideChannels.bind(this)}enabled(){document.body.classList.add("bd-minimal"),this.hideChannels&&this.enableHideChannels(),this.hideChannelCancel=this.registerSetting(this.hideChannelsID,this.enableHideChannels,this.disableHideChannels)}disabled(){document.body.classList.remove("bd-minimal"),this.hideChannels&&this.disableHideChannels(),this.hideChannelCancel&&this.hideChannelCancel()}enableHideChannels(){document.body.classList.add("bd-minimal-chan")}disableHideChannels(){document.body.classList.remove("bd-minimal-chan")}},Pt=new class extends Xe{get name(){return"VoiceMode"}get category(){return"appearance"}get id(){return"voiceMode"}enabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility","hidden"),document.querySelector(".chat-3bRxxu").style.setProperty("min-width","0px"),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","100000")}disabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility",""),document.querySelector(".chat-3bRxxu").style.setProperty("min-width",""),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","")}};const xt=g.getByDisplayName("Tooltip");class kt extends H.Component{constructor(e){super(e),this.state={shouldAnimate:!this.animateOnHover,isFavorite:this.props.isFavorite},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onClick=this.onClick.bind(this),this.toggleFavorite=this.toggleFavorite.bind(this)}get animateOnHover(){return L.get("emotes","general","animateOnHover")}get label(){return this.props.modifier?`${this.props.name}:${this.props.modifier}`:this.props.name}get modifierClass(){return this.props.modifier?" emote"+this.props.modifier:""}onMouseEnter(){!this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!0})}onMouseLeave(){this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!1})}onClick(e){this.props.onClick&&this.props.onClick(e)}toggleFavorite(e){e.preventDefault(),e.stopPropagation(),this.state.isFavorite?y.emit("emotes-favorite-removed",this.label):y.emit("emotes-favorite-added",this.label,this.props.url),this.setState({isFavorite:!this.state.isFavorite})}render(){return H.createElement(xt,{color:"black",position:"top",text:this.label,delay:750},e=>H.createElement("div",Object.assign({className:"emotewrapper"+(this.props.jumboable?" jumboable":""),onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onClick:this.onClick},e),H.createElement("img",{draggable:!1,className:"emote"+this.modifierClass+(this.props.jumboable?" jumboable":"")+(this.state.shouldAnimate?"":" stop-animation"),dataModifier:this.props.modifier,alt:this.label,src:this.props.url}),H.createElement("input",{className:"fav"+(this.state.isFavorite?" active":""),title:N.Emotes.favoriteAction,type:"button",onClick:this.toggleFavorite})))}}const At=s(3),Dt={TwitchGlobal:new M("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),TwitchSubscriber:new M("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),FrankerFaceZ:new M("https://cdn.frankerfacez.com/emoticon/{{id}}/1"),BTTV:new M("https://cdn.betterttv.net/emote/{{id}}/1x")},Mt={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{}},Nt=[],Lt=["twitch","subscriber","bttv","ffz"],Bt=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"];var Tt=new class extends Xe{get name(){return"Emotes"}get collection(){return"settings"}get category(){return"general"}get id(){return"emotes"}get categories(){return Object.keys(Mt).filter(e=>this.isCategoryEnabled(e))}get shouldDownload(){return L.get("emotes",this.category,"download")}isCategoryEnabled(e){return super.get("emotes","categories",e.toLowerCase())}get(e){return super.get("emotes","general",e)}get MessageComponent(){return g.find(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName)}get Emotes(){return Mt}get TwitchGlobal(){return Mt.TwitchGlobal}get TwitchSubscriber(){return Mt.TwitchSubscriber}get BTTV(){return Mt.BTTV}get FrankerFaceZ(){return Mt.FrankerFaceZ}get blacklist(){return Nt}get favorites(){return this.favoriteEmotes}getUrl(e,t){return Dt[e].format({id:Mt[e][t]})}getCategory(e){return Mt[e]}getRemoteFile(e){return u.repoUrl(`data/emotes/${e.toLowerCase()}.json`)}initialize(){super.initialize();const e=S.getBDData("favoriteEmotes");this.favoriteEmotes=e||{},this.addFavorite=this.addFavorite.bind(this),this.removeFavorite=this.removeFavorite.bind(this),this.onCategoryToggle=this.onCategoryToggle.bind(this),this.resetEmotes=this.resetEmotes.bind(this)}async enabled(){L.registerCollection("emotes","Emotes",r,{title:N.Emotes.clearEmotes,onClick:this.resetEmotes}),await this.getBlacklist(),await this.loadEmoteData(),y.on("emotes-favorite-added",this.addFavorite),y.on("emotes-favorite-removed",this.removeFavorite),y.on("setting-updated",this.onCategoryToggle),this.patchMessageContent()}disabled(){y.off("setting-updated",this.onCategoryToggle),y.off("emotes-favorite-added",this.addFavorite),y.off("emotes-favorite-removed",this.removeFavorite),L.removeCollection("emotes"),this.emptyEmotes(),this.cancelEmoteRender&&(this.cancelEmoteRender(),delete this.cancelEmoteRender)}onCategoryToggle(e,t,s,n){if("emotes"==e&&"categories"==t)return n?this.loadEmoteData(s):this.unloadEmoteData(s)}addFavorite(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.saveFavorites()}removeFavorite(e){this.favoriteEmotes.hasOwnProperty(e)&&(delete this.favoriteEmotes[e],this.saveFavorites())}isFavorite(e){return this.favoriteEmotes.hasOwnProperty(e)}saveFavorites(){S.setBDData("favoriteEmotes",this.favoriteEmotes)}emptyEmotes(){for(const e in Mt)Object.assign(Mt,{[e]:{}})}patchMessageContent(){this.cancelEmoteRender||(this.cancelEmoteRender=this.before(this.MessageComponent,"default",(e,t)=>{const s=t[0].childrenMessageContent.props.content;if(!s||!s.length)return;for(let e=0;e"string"==typeof e&&""==e.replace(/\s*/,"")||(!(!e.type||"BDEmote"!=e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName))))for(const e of s)"object"==typeof e&&("BDEmote"==e.type.name?e.props.jumboable=!0:e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName&&(e.props.children.props.jumboable=!0))}))}async getBlacklist(){try{const e="Blacklist",t=S.emotesExist(e),s=await this.isCacheValid(e),n=s||!s&&t&&!this.shouldDownload?S.getEmoteData(e):await this.downloadEmotes(e);Nt.push(...n)}catch(e){}}isCacheValid(e){return new Promise(t=>{const s=S.getCacheHash("emotes",e);if(!s)return t(!1);At.head({url:this.getRemoteFile(e),headers:{"If-None-Match":s}},(e,s)=>{t(304==s.statusCode)})})}async loadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(Mt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase())),W.show(N.Emotes.loading,{type:"info"}),this.emotesLoaded=!1;for(const t of e){const e=S.emotesExist(t),s=await this.isCacheValid(t);let n=null;if(s||!s&&e&&!this.shouldDownload){this.log(`Loading ${t} emotes from local cache.`);const e=S.getEmoteData(t);Object.keys(e).length>0&&(n=e)}n||(n=await this.downloadEmotes(t)),Object.assign(Mt[t],n),await new Promise(e=>setTimeout(e,1e3))}this.emotesLoaded=!0,y.dispatch("emotes-loaded"),W.show(N.Emotes.loaded,{type:"success"})}unloadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(Mt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase()));for(const t of e)delete Mt[t],Mt[t]={}}downloadEmotes(e){const t=this.getRemoteFile(e);this.log(`Downloading ${e} from ${t}`);const s={url:t,timeout:1e4,json:!0};return new Promise(t=>{At.get(s,(s,n,i)=>{if(s||200!=n.statusCode)return this.stacktrace(`Could not download ${e} emotes.`,s),t({});for(const e in i)(e.length<4||Nt.includes(e)||!i[e])&&delete i[e];S.saveEmoteData(e,i),S.setCacheHash("emotes",e,n.headers.etag),t(i),this.log("Downloaded "+e)})})}resetEmotes(){const e=Object.keys(Mt);this.unloadEmoteData(e);for(const t of e)S.invalidateCache("emotes",t);this.loadEmoteData()}};const jt=(e,t,s={})=>{const{onContextMenu:n,onClick:i}=s,o=h.createElement(`
\n ${e}\n
`);return n&&o.addEventListener("contextmenu",n),o.addEventListener("click",i),o};var Ft=new class extends Xe{get name(){return"EmoteMenu"}get collection(){return"emotes"}get category(){return"general"}get id(){return"emoteMenu"}get hideEmojisID(){return"hideEmojiMenu"}get hideEmojis(){return this.get(this.hideEmojisID)}constructor(){super(),this.lastTab="bd-qem-emojis",this.qmeHeader=h.createElement('
\n \n \n
');for(const e of this.qmeHeader.getElementsByTagName("button"))e.addEventListener("click",this.switchMenu.bind(this));this.teContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.teContainerInner=this.teContainer.querySelector(".emote-menu-inner"),this.faContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.faContainerInner=this.faContainer.querySelector(".emote-menu-inner"),this.observer=new MutationObserver(e=>{for(const t of e)this.observe(t)}),this.enableHideEmojis=this.enableHideEmojis.bind(this),this.disableHideEmojis=this.disableHideEmojis.bind(this),this.updateTwitchEmotes=this.updateTwitchEmotes.bind(this)}async enabled(){return oe.alert("Emote Menu Broken","Emote Menu is currently broken, it is recommended to disable this until it is fixed.")}disabled(){y.off("emotes-loaded",this.updateTwitchEmotes),this.observer.disconnect(),this.disableHideEmojis(),this.hideEmojiCancel&&this.hideEmojiCancel()}enableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.add("bd-qme-hidden")}disableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.remove("bd-qme-hidden")}insertEmote(e){const t=u.getTextArea();u.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)}favContext(e){e.stopPropagation();const t=e.target.closest(".emote-container").children[0],s=$('
Remove
');s.css({top:e.pageY-$("#bd-qem-favourite-container").offset().top,left:e.pageX-$("#bd-qem-favourite-container").offset().left}),$(t).parent().append(s),s.on("click",e=>{e.preventDefault(),e.stopPropagation(),$(t).remove(),Tt.removeFavorite($(t).attr("title")),this.updateFavorites(),$(document).off("mousedown.emotemenu")}),$(document).on("mousedown.emotemenu",(function(e){"removemenu"!=e.target.id&&($("#removemenu").remove(),$(document).off("mousedown.emotemenu"))}))}switchMenu(e){let t="string"==typeof e?e:e.target.id;"bd-qem-emojis"==t&&this.hideEmojis&&(t="bd-qem-favourite");const s=$("#bd-qem-twitch"),n=$("#bd-qem-favourite"),i=$("#bd-qem-emojis");switch(s.removeClass("active"),n.removeClass("active"),i.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bd-qem-favourite-container").hide(),$("#bd-qem-twitch-container").hide(),t){case"bd-qem-twitch":s.addClass("active"),$("#bd-qem-twitch-container").show();break;case"bd-qem-favourite":n.addClass("active"),$("#bd-qem-favourite-container").show();break;case"bd-qem-emojis":i.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j input").focus()}t&&(this.lastTab=t)}observe(e){if(!(e.addedNodes.length&&e.addedNodes[0]instanceof Element))return;const t=e.addedNodes[0];if(!t.classList.contains("layer-v9HyYc")||!t.getElementsByClassName("emojiPicker-3m1S-j").length||t.querySelector(".emojiPicker-3m1S-j").parentElement.classList.contains("animatorLeft-1EQxU0"))return;const s=$(t);this.hideEmojis?s.addClass("bd-qme-hidden"):s.removeClass("bd-qme-hidden"),s.prepend(this.qmeHeader),s.append(this.teContainer),s.append(this.faContainer),this.switchMenu(this.lastTab)}updateTwitchEmotes(){for(;this.teContainerInner.firstChild;)this.teContainerInner.firstChild.remove();for(const e in Tt.getCategory("TwitchGlobal")){if(!Tt.getCategory("TwitchGlobal").hasOwnProperty(e))continue;const t=Tt.getUrl("TwitchGlobal",e),s=jt(e,t,{onClick:this.insertEmote.bind(this,e)});this.teContainerInner.append(s)}}updateFavorites(){for(;this.faContainerInner.firstChild;)this.faContainerInner.firstChild.remove();for(const e in Tt.favorites){const t=Tt.favorites[e],s=jt(e,t,{onClick:this.insertEmote.bind(this,e),onContextMenu:this.favContext.bind(this)});this.faContainerInner.append(s)}Tt.saveFavorites()}},Ot=new class extends Xe{get name(){return"DeveloperMode"}get category(){return"developer"}get id(){return"developerMode"}get selectorModeID(){return"copySelector"}get selectorMode(){return this.get(this.selectorModeID)}constructor(){super(),this.copySelectorListener=this.copySelectorListener.bind(this)}enabled(){document.addEventListener("contextmenu",this.copySelectorListener)}disabled(){document.removeEventListener("contextmenu",this.copySelectorListener)}copySelectorListener(e){e.stopPropagation();const t=this.getSelector(e.target);setImmediate((function(){let s=h.query(".contextMenu-HLZMGh");if(!s){const t=h.query("#app-mount"),n=h.createElement('
');s=h.createElement('
'),n.append(s),t.append(n),n.style.top=e.clientY+"px",n.style.left=e.clientX+"px",n.style.zIndex="1002";const i=function(e){e.keyCode&&27!==e.keyCode||(n.remove(),document.removeEventListener("click",i),document.removeEventListener("contextmenu",i),document.removeEventListener("keyup",i))};document.addEventListener("click",i),document.addEventListener("contextmenu",i),document.addEventListener("keyup",i)}const n=h.createElement('
'),i=h.createElement('
');i.append(h.createElement('
Copy Selector
')),i.addEventListener("click",()=>{f.ElectronModule.copy(t),s.style.display="none"}),n.append(i),s.append(n)}))}getSelector(e){if(e.id)return"#"+e.id;const t=this.getRules(e),s=t[t.length-1];return s?s.selectorText:e.classList.length?"."+Array.from(e.classList).join("."):"."+Array.from(e.parentElement.classList).join(".")}getRules(e,t=e.ownerDocument.styleSheets){return[...t].filter(e=>!e.href||!e.href.includes("BetterDiscordApp")).map(e=>[...e.cssRules||[]]).flat().filter(t=>t&&t.selectorText&&e.matches(t.selectorText)&&t.style.length&&t.selectorText.split(", ").length<8&&!t.selectorText.split(", ").includes("*"))}},It=new class extends Xe{get name(){return"Debugger"}get category(){return"developer"}get id(){return"debuggerHotkey"}enabled(){document.addEventListener("keydown",this.debugListener)}disabled(){document.removeEventListener("keydown",this.debugListener)}debugListener(e){119!==e.which&&118!=e.which||(e.preventDefault(),e.stopImmediatePropagation())}};const zt=s(0),Rt=s(2),Ht=s(1),qt=zt.remote.BrowserWindow,Ut=zt.remote.getCurrentWebContents();var _t=new class extends Xe{get name(){return"ReactDevTools"}get category(){return"developer"}get id(){return"reactDevTools"}initialize(){super.initialize(),this.findExtension()}findExtension(){let e="";if(e="win32"===process.platform?Ht.resolve(process.env.LOCALAPPDATA,"Google/Chrome/User Data"):"linux"===process.platform?Ht.resolve(process.env.HOME,".config/google-chrome"):"darwin"===process.platform?Ht.resolve(process.env.HOME,"Library/Application Support/Google/Chrome"):Ht.resolve(process.env.HOME,".config/chromium"),e+="/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/",Rt.existsSync(e)){const t=Rt.readdirSync(e);e=Ht.resolve(e,t[t.length-1])}this.extensionPath=e,this.isExtensionInstalled=Rt.existsSync(e),this.listener=this.listener.bind(this)}enabled(){if(this.isExtensionInstalled||this.findExtension(),!this.isExtensionInstalled)return oe.alert("Extension Not Found","Unable to find the React Developer Tools extension on your PC. Please install the extension on your local Chrome installation.");setImmediate(()=>Ut.on("devtools-opened",this.listener)),Ut.isDevToolsOpened()&&this.listener()}disabled(){Ut.removeListener("devtools-opened",this.listener)}listener(){if(!this.isExtensionInstalled)return;qt.removeDevToolsExtension("React Developer Tools");qt.addDevToolsExtension(this.extensionPath)?this.log("Successfully installed react devtools."):this.error("Couldn't find react devtools in chrome extensions!")}};class $t extends H.Component{render(){return H.createElement("svg",{className:"bd-logo "+this.props.className,height:"100%",width:this.props.size||"16px",viewBox:"0 0 2000 2000",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}},H.createElement("metadata",null),H.createElement("defs",null,H.createElement("filter",{id:"shadow1"},H.createElement("feDropShadow",{dx:"20",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"})),H.createElement("filter",{id:"shadow2"},H.createElement("feDropShadow",{dx:"15",dy:"0",stdDeviation:"20",floodColor:"rgba(255,255,255,0.15)"})),H.createElement("filter",{id:"shadow3"},H.createElement("feDropShadow",{dx:"10",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"}))),H.createElement("g",null,H.createElement("path",{style:{filter:"url(#shadow3)"},fill:"#171717",opacity:"1",d:"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z"}),H.createElement("path",{style:{filter:"url(#shadow2)"},fill:"#3E82E5",opacity:"1",d:"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z"}),H.createElement("path",{style:{filter:"url(#shadow1)"},fill:"#FFFFFF",opacity:"1",d:"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z"})))}}const Wt=f.React,Gt=g.getByDisplayName("Tooltip");var Vt=new class{initialize(){u.suppressErrors(this.patchSocial.bind(this),"BD Social Patch")(),u.suppressErrors(this.patchGuildPills.bind(this),"BD Guild Pills Patch")(),u.suppressErrors(this.patchGuildListItems.bind(this),"BD Guild List Items Patch")(),u.suppressErrors(this.patchGuildSeparator.bind(this),"BD Guild Separator Patch")(),u.suppressErrors(this.patchMessageHeader.bind(this),"BD Message Header Patch")(),u.suppressErrors(this.patchMemberList.bind(this),"BD Member List Patch")()}patchSocial(){if(this.socialPatch)return;const e=g.getByDisplayName("TabBar"),t=g.getByDisplayName("Anchor");e&&(this.socialPatch=j.after("ComponentPatcher",e.prototype,"render",(e,s,n)=>{const i=n.props.children;if(!i||!i.length||i.length<3)return;if("Separator"!==i[i.length-3].type.displayName)return;if(!i[i.length-2].type.toString().includes("socialLinks"))return;if(t){const e=i[i.length-2].type,s=function(){const s=e(...arguments);return s.props.children.push(f.React.createElement(t,{className:"bd-social-link",href:"https://twitter.com/BandagedBD",title:"BandagedBD",target:"_blank"},f.React.createElement($t,{size:"16px",className:"bd-social-logo"}))),s};i[i.length-2].type=s}const r=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},"Injector "+o.version),a=`(${o.hash?o.hash.substring(0,7):o.branch})`,l=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},`BBD ${o.bbdVersion} `,f.React.createElement("span",{className:"versionHash-2gXjIB da-versionHash"},a)),d=i[i.length-1].type;i[i.length-1].type=function(){const e=d(...arguments);return e.props.children.splice(e.props.children.length-1,0,r),e.props.children.splice(1,0,l),e}}))}patchGuildListItems(){if(this.guildListItemsPatch)return;const e=f.GuildClasses.listItem.split(" ")[0],t=f.GuildClasses.blobContainer.split(" ")[0],s=u.getReactInstance(document.querySelector(`.${e} .${t}`).parentElement).return.type;s&&(this.guildListItemsPatch=j.after("ComponentPatcher",s.prototype,"render",(e,t,s)=>{if(!s||!e)return;const n=e.props;return s.props.className+=" bd-guild",n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.audio&&(s.props.className+=" bd-audio"),n.video&&(s.props.className+=" bd-video"),n.badge&&(s.props.className+=" bd-badge"),n.animatable&&(s.props.className+=" bd-animatable"),s}))}patchGuildPills(){if(this.guildPillPatch)return;const e=g.getModule(e=>e.default&&!e.default.displayName&&e.default.toString&&e.default.toString().includes("translate3d"));e&&(this.guildPillPatch=j.after("ComponentPatcher",e,"default",(e,t,s)=>{const n=t[0];return n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.hovered&&(s.props.className+=" bd-hovered"),s}))}patchGuildSeparator(){if(this.guildSeparatorPatch)return;const e=g.getByDisplayName("Guilds"),t=g.getByProps("renderListItem");if(!t||!e)return;const s=function(){const e=t.Separator(...arguments);return e.props.className+=" bd-guild-separator",e};this.guildSeparatorPatch=j.after("ComponentPatcher",e.prototype,"render",(e,t,n)=>{const i=u.findInReactTree(n,e=>e.type&&!e.type.displayName&&"function"==typeof e.type&&u.isEmpty(e.props));i&&(i.type=s)})}patchMessageHeader(){if(this.messageHeaderPatch)return;const e=g.getByProps("MessageTimestamp"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.default&&(this.messageHeaderPatch=j.after("ComponentPatcher",e,"default",(e,s,n)=>{const i=u.getNestedProp(s[0],"message.author"),o=u.getNestedProp(n,"props.children.1.props.children.1.props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Wt.createElement(Gt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Wt.createElement(t,Object.assign({className:"bd-chat-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Wt.createElement($t,{size:"16px",className:"bd-logo"}))))}))}patchMemberList(){if(this.memberListPatch)return;const e=g.findByDisplayName("MemberListItem"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.prototype&&e.prototype.renderDecorators&&(this.memberListPatch=j.after("ComponentPatcher",e.prototype,"renderDecorators",(e,s,n)=>{const i=u.getNestedProp(e,"props.user"),o=u.getNestedProp(n,"props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Wt.createElement(Gt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Wt.createElement(t,Object.assign({className:"bd-member-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Wt.createElement($t,{size:"16px",className:"bd-logo"}))))}))}};const Jt=f.GuildClasses;function Yt(){}Yt.prototype.setConfig=function(e){Object.assign(o,e)},Yt.prototype.init=async function(){if(S.initialize(),await A.initialize(),o.versiono.version&&oe.showConfirmationModal(N.Startup.updateAvailable,N.Startup.updateInfo.format({version:e}),{confirmText:N.Startup.updateNow,cancelText:N.Startup.maybeLater,onConfirm:async()=>{const e=()=>{oe.alert(N.Startup.updateFailed,N.Startup.manualUpdate)};try{if(!await this.updateInjector())return e();const t=s(0).remote.app;t.relaunch(),t.exit()}catch(t){e()}}}),c.log("Startup","Initializing Settings"),L.initialize(),D.initialize(),await this.waitForGuilds(),R.initialize(),Vt.initialize();for(const e in n)n[e].initialize();c.log("Startup","Loading Plugins");const t=Ve.initialize();c.log("Startup","Loading Themes");const i=Ye.initialize();c.log("Startup","Removing Loading Icon"),document.getElementsByClassName("bd-loaderv2")[0].remove(),c.log("Startup","Collecting Startup Errors"),oe.showAddonErrors({plugins:t,themes:i});const r=S.getBDData("version");o.bbdVersion>r&&(oe.showChangelogModal(l),S.setBDData("version",o.bbdVersion))},Yt.prototype.waitForGuilds=function(){let e=0;return new Promise(t=>{const s=function(){e++,"complete"!=document.readyState&&setTimeout(s,100);const n=Jt.wrapper.split(" ")[0],i=Jt.listItem.split(" ")[0],r=Jt.blobContainer.split(" ")[0];return document.querySelectorAll(`.${n} .${i} .${r}`).length>0||e>=50?t(o.deferLoaded=!0):void setTimeout(s,100)};s()})},Yt.prototype.updateInjector=async function(){const e=S.injectionPath;if(!e)return!1;const t=s(2),n=s(1),i=s(6),o=s(7),r=s(8),a=s(3),l=n.resolve(e,".."),d=n.basename(e),h="https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip",u=n.resolve(l,"injector.zip"),p=n.resolve(l,"BetterDiscordApp-injector");c.log("InjectorUpdate","Downloading "+h);let m=await new Promise(e=>{a.get({url:h,encoding:null},async(s,n,i)=>{if(s||200!==n.statusCode)return e(!1);await new Promise(e=>t.exists(u,e))&&await new Promise(e=>t.rename(u,`${u}.bak${Math.round(performance.now())}`,e)),c.log("InjectorUpdate","Writing "+u),t.writeFile(u,i,t=>e(!t))})});if(!m)return m;await new Promise(e=>t.exists(p,e))&&await new Promise(e=>t.rename(p,`${p}.bak${Math.round(performance.now())}`,e));const g=await new Promise(e=>o.open(u,{lazyEntries:!0},(t,s)=>e(s)));g.on("entry",(function(e){if(e.fileName.endsWith("/"))return g.readEntry();c.log("InjectorUpdate","Extracting "+e.fileName);const s=n.resolve(l,e.fileName);r.sync(n.dirname(s)),g.openReadStream(e,(function(e,n){if(e)return m=!1;n.on("end",(function(){g.readEntry()})),n.pipe(t.createWriteStream(s))}))})),g.readEntry(),await new Promise(e=>g.once("end",e));const f=n.resolve(l,`${d}.bak${Math.round(performance.now())}`);return await new Promise(s=>t.rename(e,f,s)),c.log("InjectorUpdate",`Renaming ${n.basename(p)} to ${d}`),m=await new Promise(s=>t.rename(p,e,e=>s(!e))),m?m?(await new Promise(e=>i(f,e)),await new Promise(e=>t.unlink(u,e)),c.log("InjectorUpdate","Injector Updated!"),m):(c.err("InjectorUpdate","Something went wrong... restoring backups."),await new Promise(e=>i(p,e)),await new Promise(s=>t.rename(f,e,s)),m):(c.err("InjectorUpdate","Failed to rename the final directory"),m)};var Xt=new Yt;const Zt={get React(){return f.React},get ReactDOM(){return f.ReactDOM},get WindowConfigFile(){return""},get settings(){return L.collections},get emotes(){return{}},get version(){return o.version},getAllWindowPreferences:function(){return S.getData("windowprefs")||{}},getWindowPreference:function(e){return this.getAllWindowPreferences()[e]},setWindowPreference:function(e,t){const s=this.getAllWindowPreferences();return s[e]=t,S.setData("windowprefs",s)},injectCSS:function(e,t){D.injectStyle(e,t)},clearCSS:function(e){D.removeStyle(e)},linkJS:function(e,t){return D.injectScript(e,t)},unlinkJS:function(e){D.removeScript(e)},alert:function(e,t){oe.alert(e,t)},showConfirmationModal:function(e,t,s={}){return oe.showConfirmationModal(e,t,s)},showToast:function(e,t={}){W.show(e,t)},findModule:function(e){return g.getModule(e)},findAllModules:function(e){return g.getModule(e,!1)},findModuleByProps:function(...e){return g.getByProps(...e)},findModuleByPrototypes:function(...e){return g.getByPrototypes(...e)},findModuleByDisplayName:function(e){return g.getByDisplayName(e)},getInternalInstance:function(e){if(e instanceof window.jQuery||e instanceof Element)return e instanceof jQuery&&(e=e[0]),u.getReactInstance(e)},loadData:function(e,t){return S.getPluginData(e,t)}};Zt.getData=Zt.loadData,Zt.saveData=function(e,t,s){return S.setPluginData(e,t,s)},Zt.setData=Zt.saveData,Zt.deleteData=function(e,t){return S.deletePluginData(e,t)},Zt.monkeyPatch=function(e,t,s){const{before:n,after:i,instead:o,once:r=!1,silent:a=!1,force:l=!1}=s,d=s.displayName||e.displayName||e.name||e.constructor.displayName||e.constructor.name;if(a||console.log("patch",t,"of",d),!e[t]){if(!l)return console.error(t,"does not exist for",d);e[t]=function(){}}const c=e[t],h=()=>{a||console.log("unpatch",t,"of",d),e[t]=c};return e[t]=function(){const s={thisObject:this,methodArguments:arguments,cancelPatch:h,originalMethod:c,callOriginalMethod:()=>s.returnValue=s.originalMethod.apply(s.thisObject,s.methodArguments)};if(o){const n=u.suppressErrors(o,"`instead` callback of "+e[t].displayName)(s);void 0!==n&&(s.returnValue=n)}else n&&u.suppressErrors(n,"`before` callback of "+e[t].displayName)(s),s.callOriginalMethod(),i&&u.suppressErrors(i,"`after` callback of "+e[t].displayName)(s);return r&&h(),s.returnValue},e[t].__monkeyPatched=!0,e[t].__originalMethod||(e[t].__originalMethod=c),e[t].displayName="patched "+(e[t].displayName||t),h},Zt.onRemoved=function(e,t){return u.onRemoved(e,t)},Zt.suppressErrors=function(e,t){return u.suppressErrors(e,t)},Zt.testJSON=function(e){return u.testJSON(e)},Zt.getPlugin=function(e){return c.warn("BdApi","getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)"),Ve.addonList.find(t=>t.name==e)},Zt.isPluginEnabled=function(e){c.warn("BdApi","isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)");const t=this.getPlugin(e);return!!t&&Ve.isEnabled(t.id)},Zt.isThemeEnabled=function(e){c.warn("BdApi","isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)");const t=Ye.addonList.find(t=>t.name==e);return!!t&&Ye.isEnabled(t.id)},Zt.isSettingEnabled=function(e,t,s){return L.get(e,t,s)},Zt.enableSetting=function(e,t,s){return L.set(e,t,s,!0)},Zt.disableSetting=function(e,t,s){return L.set(e,t,s,!1)},Zt.toggleSetting=function(e,t,s){return L.set(e,t,s,!L.get(e,t,s))},Zt.getBDData=function(e){return S.getBDData(e)},Zt.setBDData=function(e,t){return S.setBDData(e,t)};const Kt=e=>new class{get folder(){return e.addonFolder}isEnabled(t){return e.isEnabled(t)}enable(t){return e.enableAddon(t)}disable(t){return e.disableAddon(t)}toggle(t){return e.toggleAddon(t)}reload(t){return e.reloadAddon(t)}get(t){return e.addonList.find(e=>e.id==t||e.filename==t)}getAll(){return e.addonList}};Zt.Plugins=Kt(Ve),Zt.Themes=Kt(Ye),Object.freeze(Zt),Object.freeze(Zt.Plugins),Object.freeze(Zt.Themes);var Qt=Zt;!function(){const e=Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype,"contentWindow").get;Object.defineProperty(HTMLIFrameElement.prototype,"contentWindow",{get:function(){const t=Reflect.apply(e,this,arguments);return new Proxy(t,{getOwnPropertyDescriptor:function(e,t){if("localStorage"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){if("localStorage"===t)return null;const s=e[t];return"function"==typeof s?s.bind(e):s}})}}),Object.defineProperty(Reflect,"apply",{value:Reflect.apply,writable:!1,configurable:!1}),Object.defineProperty(Function.prototype,"bind",{value:Function.prototype.bind,writable:!1,configurable:!1});const t=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){const e=arguments[1];return e.toLowerCase().includes("api/webhooks")?null:Reflect.apply(t,this,arguments)}}();const es=document.createElement("div");es.className="bd-loaderv2",es.title="BandagedBD is loading...",document.body.appendChild(es),window.BdApi=Qt;class ts{constructor(e){Xt.setConfig(e)}init(){Xt.init()}}!function(){const e="betterdiscord/",t=s(4),n=t._load;t._load=function(t){if("betterdiscord"===t||t.startsWith(e)){if("api"==t.substr(e.length))return Qt}return n.apply(this,arguments)}}()}]).default; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9b3fa587..4393c27d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,31 +5,44 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.5.tgz", + "integrity": "sha512-mPVoWNzIpYJHbWje0if7Ck36bpbtTvIxOi9+6WSK9wjGEXearAqlwBoTQvVjsAY2VIwgcs8V940geY3okzRCEw==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" } }, "@babel/core": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", - "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.5.tgz", + "integrity": "sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helpers": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.5", - "@babel/types": "^7.4.4", - "convert-source-map": "^1.1.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.5", + "@babel/types": "^7.10.5", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" @@ -45,807 +58,1034 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, "@babel/generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", - "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", "dev": true, "requires": { - "@babel/types": "^7.4.4", + "@babel/types": "^7.10.5", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz", - "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", "dev": true, "requires": { - "@babel/types": "^7.3.0", - "esutils": "^2.0.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" } }, - "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz", + "integrity": "sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", - "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.10.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.5" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-module-transforms": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", - "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz", + "integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", - "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.19" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-replace-supers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", - "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.10.4" } }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helpers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", - "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "dev": true, "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", - "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", - "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", + "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz", + "integrity": "sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-jsx": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", - "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz", - "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", - "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz", + "integrity": "sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.11" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", - "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.4.4", - "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", - "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", - "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz", - "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", - "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", "dev": true, "requires": { - "regexp-tree": "^0.1.6" + "@babel/helper-create-regexp-features-plugin": "^7.10.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" } }, "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", - "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", + "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", - "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", + "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "^7.3.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz", + "integrity": "sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz", - "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz", + "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz", - "integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz", + "integrity": "sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz", + "integrity": "sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "dev": true, "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz", + "integrity": "sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz", - "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.4.tgz", + "integrity": "sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.4.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.4.4", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.4.4", - "@babel/plugin-transform-classes": "^7.4.4", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-modules-systemjs": "^7.4.4", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", + "@babel/compat-data": "^7.10.4", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.10.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.10.4", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.10.4", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.10.4", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", + "levenary": "^1.1.1", "semver": "^5.5.0" } }, - "@babel/preset-react": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", - "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.4.tgz", + "integrity": "sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.10.4", + "@babel/plugin-transform-react-jsx": "^7.10.4", + "@babel/plugin-transform-react-jsx-development": "^7.10.4", + "@babel/plugin-transform-react-jsx-self": "^7.10.4", + "@babel/plugin-transform-react-jsx-source": "^7.10.4", + "@babel/plugin-transform-react-pure-annotations": "^7.10.4" } }, "@babel/register": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.4.4.tgz", - "integrity": "sha512-sn51H88GRa00+ZoMqCVgOphmswG4b7mhf9VOB0LUBAieykq2GnRFerlN+JQkO/ntT7wz4jaHNSRPg9IdMPEUkA==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.10.5.tgz", + "integrity": "sha512-eYHdLv43nyvmPn9bfNfrcC4+iYNwdQ8Pxk1MFJuU/U5LpSYl/PH4dFMazCYZDFVi8ueG3shvO+AQfLrxpYulQw==", "dev": true, "requires": { - "core-js": "^3.0.0", "find-cache-dir": "^2.0.0", - "lodash": "^4.17.11", - "mkdirp": "^0.5.1", + "lodash": "^4.17.19", + "make-dir": "^2.1.0", "pirates": "^4.0.0", - "source-map-support": "^0.5.9" + "source-map-support": "^0.5.16" + } + }, + "@babel/runtime": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz", + "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", - "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/types": "^7.4.4", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.11" + "lodash": "^4.17.19" }, "dependencies": { "debug": { @@ -858,197 +1098,202 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, "@babel/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", - "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -1065,24 +1310,18 @@ "dev": true }, "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -1095,29 +1334,20 @@ "dev": true }, "ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.1.tgz", + "integrity": "sha512-KWcq3xN8fDjSB+IMoh2VaXVhRI0BBGxoYp3rx7Pkb6z0cFjYR9Q9l4yZqqals0/zsioCmocC5H6UvsGD4MoIBA==", "dev": true }, "ansi-colors": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { "ansi-wrap": "^0.1.0" } }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-gray": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", @@ -1127,15 +1357,6 @@ "ansi-wrap": "0.1.0" } }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -1305,6 +1526,14 @@ "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "assert": { @@ -1341,23 +1570,15 @@ "dev": true }, "async-done": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", - "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.2", - "process-nextick-args": "^1.0.7", + "process-nextick-args": "^2.0.0", "stream-exhaust": "^1.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - } } }, "async-each": { @@ -1382,15 +1603,25 @@ "dev": true }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" } }, "bach": { @@ -1472,9 +1703,9 @@ } }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "dev": true }, "big.js": { @@ -1489,16 +1720,26 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", "dev": true }, "brace-expansion": { @@ -1591,21 +1832,56 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "browserify-zlib": { @@ -1618,20 +1894,21 @@ } }, "browserslist": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.1.tgz", - "integrity": "sha512-1MC18ooMPRG2UuVFJTHFIAkk6mpByJfxCrnUyvSlu/hyQSFHMrlhM02SzNuCV+quTP4CKmqtOMAIjrifrpBJXQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", + "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000971", - "electron-to-chromium": "^1.3.137", - "node-releases": "^1.1.21" + "caniuse-lite": "^1.0.30001093", + "electron-to-chromium": "^1.3.488", + "escalade": "^3.0.1", + "node-releases": "^1.1.58" } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -1664,22 +1941,23 @@ "dev": true }, "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { - "bluebird": "^3.5.3", + "bluebird": "^3.5.5", "chownr": "^1.1.1", "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", + "glob": "^7.1.4", "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", + "rimraf": "^2.6.3", "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" @@ -1709,9 +1987,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000971", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz", - "integrity": "sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g==", + "version": "1.0.30001102", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001102.tgz", + "integrity": "sha512-fOjqRmHjRXv1H1YD6QVLb96iKqnu17TjcLSaX64TwhGYed0P1E1CCWZ9OujbbK4Z/7zax7zAzvQidzdtjx8RcA==", "dev": true }, "chalk": { @@ -1726,9 +2004,9 @@ } }, "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -1754,9 +2032,9 @@ } }, "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "chrome-trace-event": { @@ -1779,9 +2057,9 @@ } }, "circular-dependency-plugin": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", - "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", + "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", "dev": true }, "class-utils": { @@ -1808,29 +2086,40 @@ } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } } } @@ -1854,9 +2143,9 @@ "dev": true }, "cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -1913,9 +2202,9 @@ "dev": true }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "commondir": { @@ -1949,13 +2238,10 @@ } }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "constants-browserify": { "version": "1.0.0", @@ -1964,9 +2250,9 @@ "dev": true }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -2002,37 +2288,24 @@ "is-plain-object": "^2.0.1" } }, - "core-js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.1.3.tgz", - "integrity": "sha512-PWZ+ZfuaKf178BIAg+CRsljwjIMRV8MY00CbZczkR6Zk5LfkSkjGoaab3+bqRQWVITNZxQB7TFYz+CFcyuamvA==", - "dev": true - }, "core-js-compat": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.3.tgz", - "integrity": "sha512-EP018pVhgwsKHz3YoN1hTq49aRe+h017Kjz0NQz3nXV0cCRMvH3fLQl+vEPGr4r4J5sk4sU3tUC7U1aqTCeJeA==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", "dev": true, "requires": { - "browserslist": "^4.6.0", - "core-js-pure": "3.1.3", - "semver": "^6.1.0" + "browserslist": "^4.8.5", + "semver": "7.0.0" }, "dependencies": { "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true } } }, - "core-js-pure": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.3.tgz", - "integrity": "sha512-k3JWTrcQBKqjkjI0bkfXS0lbpWPxYuHWfMMjC1VDmzU4Q58IwSbuXSo99YO/hUHlw/EB4AlfA2PVxOGkrIq6dA==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -2047,6 +2320,14 @@ "requires": { "bn.js": "^4.1.0", "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "create-hash": { @@ -2109,45 +2390,48 @@ } }, "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", "dev": true, "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.29" + "css-tree": "1.0.0-alpha.39" } }, "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "dev": true, "requires": { - "es5-ext": "^0.10.9" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2243,9 +2527,9 @@ } }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -2267,6 +2551,14 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "domain-browser": { @@ -2298,15 +2590,15 @@ } }, "electron-to-chromium": { - "version": "1.3.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.137.tgz", - "integrity": "sha512-kGi32g42a8vS/WnYE7ELJyejRT7hbr3UeOOu0WeuYuQ29gCpg9Lrf6RdcTQVXSt/v0bjCfnlb/EWOOsiKpTmkw==", + "version": "1.3.499", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.499.tgz", + "integrity": "sha512-y7FwtQm/8xuLMnYQfBQDYzCpNn+VkSnf4c3Km5TWMNXg7JA5RQBuxmcLaKdDVcIK0K5xGIa7TlxpRt4BdNxNoA==", "dev": true }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -2316,43 +2608,58 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" }, "dependencies": { - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true } } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "errno": { @@ -2374,14 +2681,14 @@ } }, "es5-ext": { - "version": "0.10.49", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz", - "integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==", + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "dev": true, "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -2396,27 +2703,33 @@ } }, "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "ext": "^1.1.2" } }, "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "dev": true, "requires": { "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2443,21 +2756,21 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", "dev": true }, "evp_bytestokey": { @@ -2470,21 +2783,6 @@ "safe-buffer": "^5.1.1" } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2529,6 +2827,23 @@ "homedir-polyfill": "^1.0.1" } }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2634,23 +2949,30 @@ } }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -2707,9 +3029,9 @@ } }, "fined": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz", - "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", "dev": true, "requires": { "expand-tilde": "^2.0.2", @@ -2798,551 +3120,14 @@ "dev": true }, "fsevents": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz", - "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, "optional": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } + "bindings": "^1.5.0", + "nan": "^2.12.1" } }, "function-bind": { @@ -3351,20 +3136,17 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true }, "get-value": { "version": "2.0.6", @@ -3373,9 +3155,9 @@ "dev": true }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3485,14 +3267,14 @@ "dev": true }, "gulp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", - "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", "dev": true, "requires": { - "glob-watcher": "^5.0.0", - "gulp-cli": "^2.0.0", - "undertaker": "^1.0.0", + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", "vinyl-fs": "^3.0.0" }, "dependencies": { @@ -3520,9 +3302,9 @@ "dev": true }, "gulp-cli": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.1.0.tgz", - "integrity": "sha512-txzgdFVlEPShBZus6JJyGyKJoBVDq6Do0ZQgIgx5RAsmhNVTDjymmOxpQvo3c20m66FldilS68ZXj2Q9w5dKbA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", "dev": true, "requires": { "ansi-colors": "^1.0.1", @@ -3533,7 +3315,7 @@ "copy-props": "^2.0.1", "fancy-log": "^1.3.2", "gulplog": "^1.0.0", - "interpret": "^1.1.0", + "interpret": "^1.4.0", "isobject": "^3.0.1", "liftoff": "^3.1.0", "matchdep": "^2.0.0", @@ -3541,16 +3323,10 @@ "pretty-hrtime": "^1.0.0", "replace-homedir": "^1.0.0", "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", + "v8flags": "^3.2.0", "yargs": "^7.1.0" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -3560,24 +3336,6 @@ "number-is-nan": "^1.0.0" } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -3608,9 +3366,9 @@ "dev": true }, "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz", + "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==", "dev": true, "requires": { "camelcase": "^3.0.0", @@ -3625,87 +3383,36 @@ "string-width": "^1.0.2", "which-module": "^1.0.0", "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" + "yargs-parser": "5.0.0-security.0" } }, "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "version": "5.0.0-security.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz", + "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==", "dev": true, "requires": { - "camelcase": "^3.0.0" + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" } } } }, "gulp-csso": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/gulp-csso/-/gulp-csso-3.0.1.tgz", - "integrity": "sha512-zhkvq06x1SJrpBN8YNJfc1PDono2+xjB6nI9UmBPh88nS4Weuz0hZMgJ4YruOw9Bf+oDrX71U6pkos6pIQhc1g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/gulp-csso/-/gulp-csso-4.0.1.tgz", + "integrity": "sha512-Kg8gqmd6XcUlMTdBbqdCEcpHumc8ytc4khgm9AXeCjl8eHx7b6tC11y8haizFI+Zw/cSHL6HCj7GwGLwxxBUFQ==", "dev": true, "requires": { - "csso": "^3.0.0", - "plugin-error": "^0.1.2", + "csso": "^4.0.0", + "plugin-error": "^1.0.0", "vinyl-sourcemaps-apply": "^0.2.1" - }, - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "dev": true, - "requires": { - "kind-of": "^1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", - "dev": true - }, - "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", - "dev": true, - "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - } - } } }, "gulp-rename": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", - "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", + "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", "dev": true }, "gulplog": { @@ -3724,9 +3431,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, "has-value": { @@ -3762,13 +3469,39 @@ } }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "hash.js": { @@ -3802,9 +3535,9 @@ } }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "https-browserify": { @@ -3841,10 +3574,10 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, "inflight": { @@ -3870,9 +3603,9 @@ "dev": true }, "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, "invariant": { @@ -3885,9 +3618,9 @@ } }, "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-absolute": { @@ -4051,12 +3784,6 @@ "is-unc-path": "^1.0.0" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, "is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -4108,12 +3835,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4145,12 +3866,12 @@ "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, "just-debounce": { @@ -4160,9 +3881,9 @@ "dev": true }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "last-run": { @@ -4185,12 +3906,12 @@ } }, "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "invert-kv": "^1.0.0" } }, "lead": { @@ -4202,6 +3923,21 @@ "flush-write-stream": "^1.0.2" } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, "liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -4246,13 +3982,13 @@ "dev": true }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" }, "dependencies": { @@ -4278,9 +4014,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, "loose-envify": { @@ -4320,21 +4056,6 @@ "kind-of": "^6.0.2" } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -4397,22 +4118,11 @@ } }, "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -4452,14 +4162,16 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -4482,9 +4194,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "mississippi": { @@ -4503,6 +4215,18 @@ "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, "mixin-deep": { @@ -4527,20 +4251,12 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "minimist": "^1.2.5" } }, "move-concurrently": { @@ -4570,9 +4286,9 @@ "dev": true }, "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", "dev": true, "optional": true }, @@ -4596,9 +4312,9 @@ } }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "next-tick": { @@ -4614,9 +4330,9 @@ "dev": true }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -4629,7 +4345,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -4641,7 +4357,7 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { "punycode": { @@ -4659,13 +4375,10 @@ "dev": true }, "node-releases": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.21.tgz", - "integrity": "sha512-TwnURTCjc8a+ElJUjmDqU6+12jhli1Q61xOQmdZ7ECZVBZuQpN/1UnembiIHDM1wCcfLvh5wrWXUF5H6ufX64Q==", - "dev": true, - "requires": { - "semver": "^5.3.0" - } + "version": "1.1.59", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.59.tgz", + "integrity": "sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw==", + "dev": true }, "normalize-package-data": { "version": "2.5.0", @@ -4677,17 +4390,6 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } } }, "normalize-path": { @@ -4708,15 +4410,6 @@ "once": "^1.3.2" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -4829,9 +4522,9 @@ } }, "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -4853,34 +4546,14 @@ "dev": true }, "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "lcid": "^1.0.0" } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", @@ -4906,26 +4579,26 @@ "dev": true }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "requires": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -4975,9 +4648,9 @@ "dev": true }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -5045,9 +4718,9 @@ } }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -5057,6 +4730,13 @@ "sha.js": "^2.4.8" } }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -5096,6 +4776,18 @@ "find-up": "^3.0.0" } }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -5104,16 +4796,10 @@ }, "pretty-hrtime": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -5150,12 +4836,20 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -5171,18 +4865,6 @@ "duplexify": "^3.6.0", "inherits": "^2.0.3", "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } } }, "punycode": { @@ -5300,27 +4982,33 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", "dev": true }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "requires": { "regenerate": "^1.4.0" } }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, "regenerator-transform": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", - "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "private": "^0.1.6" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -5333,36 +5021,30 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz", - "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==", - "dev": true - }, "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -5416,9 +5098,9 @@ "dev": true }, "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", "dev": true }, "replace-homedir": { @@ -5439,18 +5121,18 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "path-parse": "^1.0.6" } }, "resolve-cwd": { @@ -5500,9 +5182,9 @@ "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { "glob": "^7.1.3" @@ -5543,14 +5225,14 @@ } }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" } }, "semver": { @@ -5569,10 +5251,13 @@ } }, "serialize-javascript": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", - "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "set-blocking": { "version": "2.0.0", @@ -5634,12 +5319,6 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -5773,9 +5452,9 @@ } }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -5803,9 +5482,9 @@ "dev": true }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -5813,15 +5492,15 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -5829,9 +5508,9 @@ } }, "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "split-string": { @@ -5919,34 +5598,35 @@ } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } @@ -5962,7 +5642,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -5978,12 +5658,6 @@ "is-utf8": "^0.2.0" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -6010,14 +5684,14 @@ "dev": true }, "terser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz", - "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "requires": { - "commander": "^2.19.0", + "commander": "^2.20.0", "source-map": "~0.6.1", - "source-map-support": "~0.5.10" + "source-map-support": "~0.5.12" }, "dependencies": { "source-map": { @@ -6029,23 +5703,33 @@ } }, "terser-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", "dev": true, "requires": { - "cacache": "^11.3.2", - "find-cache-dir": "^2.0.0", + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", - "loader-utils": "^1.2.3", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "serialize-javascript": "^3.1.0", "source-map": "^0.6.1", - "terser": "^4.0.0", - "webpack-sources": "^1.3.0", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" }, "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6055,45 +5739,13 @@ } }, "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "readable-stream": "^2.1.5", + "readable-stream": "~2.3.6", "xtend": "~4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "through2-filter": { @@ -6113,9 +5765,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -6194,16 +5846,10 @@ "through2": "^2.0.3" } }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true }, "tty-browserify": { @@ -6212,6 +5858,12 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -6264,15 +5916,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, "union-value": { @@ -6297,9 +5949,9 @@ } }, "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -6356,9 +6008,9 @@ } }, "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "uri-js": { @@ -6416,15 +6068,15 @@ "dev": true }, "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", "dev": true }, "v8flags": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz", - "integrity": "sha512-MtivA7GF24yMPte9Rp/BWGCYQNaUj86zeYxV/x2RRJMKagImbbv3u8iJC57lNhWLPcGLJmHcHmFWkNsplbbLWw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", "dev": true, "requires": { "homedir-polyfill": "^1.0.1" @@ -6510,103 +6162,302 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^3.4.0", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", + "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" } }, "webpack": { - "version": "4.32.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.32.2.tgz", - "integrity": "sha512-F+H2Aa1TprTQrpodRAWUMJn7A8MgDx82yQiNvYMaj3d1nv3HetKU0oqEulL9huj8enirKi8KvEXQ3QtuHF89Zg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.0.5", - "acorn-dynamic-import": "^4.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } } }, "webpack-cli": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.2.tgz", - "integrity": "sha512-FLkobnaJJ+03j5eplxlI0TUxhGCOdfewspIGuvDVtpOlrAuKMFC57K42Ukxqs1tn8947/PM6tP95gQc0DCzRYA==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", + "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", "dev": true, "requires": { - "chalk": "^2.4.1", + "chalk": "^2.4.2", "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.0", - "findup-sync": "^2.0.0", - "global-modules": "^1.0.0", + "enhanced-resolve": "^4.1.1", + "findup-sync": "^3.0.0", + "global-modules": "^2.0.0", "import-local": "^2.0.0", - "interpret": "^1.1.0", - "loader-utils": "^1.1.0", - "supports-color": "^5.5.0", - "v8-compile-cache": "^2.0.2", - "yargs": "^12.0.5" + "interpret": "^1.4.0", + "loader-utils": "^1.4.0", + "supports-color": "^6.1.0", + "v8-compile-cache": "^2.1.1", + "yargs": "^13.3.2" }, "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", "dev": true, "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" } }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" } } } }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -6684,9 +6535,9 @@ "dev": true }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { @@ -6696,35 +6547,33 @@ "dev": true }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index 02b92b23..27d510d2 100644 --- a/package.json +++ b/package.json @@ -23,16 +23,16 @@ }, "homepage": "https://github.com/rauenzi/BetterDiscordApp#readme", "devDependencies": { - "@babel/core": "^7.3.4", - "@babel/preset-env": "^7.3.4", - "@babel/preset-react": "^7.0.0", - "@babel/register": "^7.0.0", - "babel-loader": "^8.0.6", - "circular-dependency-plugin": "^5.0.2", - "gulp": "^4.0.0", - "gulp-csso": "^3.0.1", - "gulp-rename": "^1.4.0", - "webpack": "^4.29.6", - "webpack-cli": "^3.2.3" + "@babel/core": "^7.10.5", + "@babel/preset-env": "^7.10.4", + "@babel/preset-react": "^7.10.4", + "@babel/register": "^7.10.5", + "babel-loader": "^8.1.0", + "circular-dependency-plugin": "^5.2.0", + "gulp": "^4.0.2", + "gulp-csso": "^4.0.1", + "gulp-rename": "^2.0.0", + "webpack": "^4.43.0", + "webpack-cli": "^3.3.12" } } diff --git a/src/builtins/customcss.js b/src/builtins/customcss.js index 909a05d6..3d7dae5d 100644 --- a/src/builtins/customcss.js +++ b/src/builtins/customcss.js @@ -1,7 +1,7 @@ import Builtin from "../structs/builtin"; import {Settings, DataStore, React, WebpackModules, Events, DOMManager, Strings} from "modules"; import CSSEditor from "../ui/customcss/csseditor"; -import FloatingWindowContainer from "../ui/floating/container"; +import FloatingWindows from "../ui/floatingwindows"; import SettingsTitle from "../ui/settings/title"; import Utilities from "../modules/utilities"; @@ -131,7 +131,7 @@ export default new class CustomCSS extends Builtin { onChange: this.onChange.bind(this) }); - FloatingWindowContainer.open({ + FloatingWindows.open({ onClose: () => { this.isDetached = false; }, diff --git a/src/builtins/emotes/emotes.js b/src/builtins/emotes/emotes.js index 81b10476..f4da13de 100644 --- a/src/builtins/emotes/emotes.js +++ b/src/builtins/emotes/emotes.js @@ -37,7 +37,7 @@ export default new class EmoteModule extends Builtin { get(id) {return super.get("emotes", "general", id);} - get MessageContentComponent() {return WebpackModules.getModule(m => m.defaultProps && m.defaultProps.hasOwnProperty("disableButtons"));} + get MessageComponent() {return WebpackModules.find(m => m.default && m.default.displayName && m.default.displayName == "Message");} get Emotes() {return Emotes;} get TwitchGlobal() {return Emotes.TwitchGlobal;} @@ -69,6 +69,7 @@ export default new class EmoteModule extends Builtin { Events.on("emotes-favorite-added", this.addFavorite); Events.on("emotes-favorite-removed", this.removeFavorite); Events.on("setting-updated", this.onCategoryToggle); + this.patchMessageContent(); } disabled() { @@ -113,71 +114,66 @@ export default new class EmoteModule extends Builtin { patchMessageContent() { if (this.cancelEmoteRender) return; - this.cancelEmoteRender = this.after(this.MessageContentComponent.prototype, "render", (thisObj, args, retVal) => { - this.after(retVal.props, "children", (t, a, returnValue) => { - if (this.categories.length == 0) return; - const markup = returnValue.props.children[1]; - if (!markup.props.children) return; - const nodes = markup.props.children[1]; - if (!nodes || !nodes.length) return; - for (let n = 0; n < nodes.length; n++) { - const node = nodes[n]; - if (typeof(node) !== "string") continue; - const words = node.split(/([^\s]+)([\s]|$)/g); - for (let c = 0, clen = this.categories.length; c < clen; c++) { - for (let w = 0, wlen = words.length; w < wlen; w++) { - const emote = words[w]; - const emoteSplit = emote.split(":"); - const emoteName = emoteSplit[0]; - let emoteModifier = emoteSplit[1] ? emoteSplit[1] : ""; - let emoteOverride = emoteModifier.slice(0); + this.cancelEmoteRender = this.before(this.MessageComponent, "default", (thisObj, args) => { + const nodes = args[0].childrenMessageContent.props.content; + if (!nodes || !nodes.length) return; + for (let n = 0; n < nodes.length; n++) { + const node = nodes[n]; + if (typeof(node) !== "string") continue; + const words = node.split(/([^\s]+)([\s]|$)/g); + for (let c = 0, clen = this.categories.length; c < clen; c++) { + for (let w = 0, wlen = words.length; w < wlen; w++) { + const emote = words[w]; + const emoteSplit = emote.split(":"); + const emoteName = emoteSplit[0]; + let emoteModifier = emoteSplit[1] ? emoteSplit[1] : ""; + let emoteOverride = emoteModifier.slice(0); - if (emoteName.length < 4 || blacklist.includes(emoteName)) continue; - if (!modifiers.includes(emoteModifier) || !Settings.get("emotes", "general", "modifiers")) emoteModifier = ""; - if (!overrides.includes(emoteOverride)) emoteOverride = ""; - else emoteModifier = emoteOverride; + if (emoteName.length < 4 || blacklist.includes(emoteName)) continue; + if (!modifiers.includes(emoteModifier) || !Settings.get("emotes", "general", "modifiers")) emoteModifier = ""; + if (!overrides.includes(emoteOverride)) emoteOverride = ""; + else emoteModifier = emoteOverride; - let current = this.categories[c]; - if (emoteOverride === "twitch") { - if (Emotes.TwitchGlobal[emoteName]) current = "TwitchGlobal"; - else if (Emotes.TwitchSubscriber[emoteName]) current = "TwitchSubscriber"; - } - else if (emoteOverride === "subscriber") { - if (Emotes.TwitchSubscriber[emoteName]) current = "TwitchSubscriber"; - } - else if (emoteOverride === "bttv") { - if (Emotes.BTTV[emoteName]) current = "BTTV"; - } - else if (emoteOverride === "ffz") { - if (Emotes.FrankerFaceZ[emoteName]) current = "FrankerFaceZ"; - } - - if (!Emotes[current][emoteName]) continue; - const results = nodes[n].match(new RegExp(`([\\s]|^)${Utilities.escape(emoteModifier ? emoteName + ":" + emoteModifier : emoteName)}([\\s]|$)`)); - if (!results) continue; - const pre = nodes[n].substring(0, results.index + results[1].length); - const post = nodes[n].substring(results.index + results[0].length - results[2].length); - nodes[n] = pre; - const emoteComponent = DiscordModules.React.createElement(BDEmote, {name: emoteName, url: EmoteURLs[current].format({id: Emotes[current][emoteName]}), modifier: emoteModifier, isFavorite: this.isFavorite(emoteName)}); - nodes.splice(n + 1, 0, post); - nodes.splice(n + 1, 0, emoteComponent); + let current = this.categories[c]; + if (emoteOverride === "twitch") { + if (Emotes.TwitchGlobal[emoteName]) current = "TwitchGlobal"; + else if (Emotes.TwitchSubscriber[emoteName]) current = "TwitchSubscriber"; } + else if (emoteOverride === "subscriber") { + if (Emotes.TwitchSubscriber[emoteName]) current = "TwitchSubscriber"; + } + else if (emoteOverride === "bttv") { + if (Emotes.BTTV[emoteName]) current = "BTTV"; + } + else if (emoteOverride === "ffz") { + if (Emotes.FrankerFaceZ[emoteName]) current = "FrankerFaceZ"; + } + + if (!Emotes[current][emoteName]) continue; + const results = nodes[n].match(new RegExp(`([\\s]|^)${Utilities.escape(emoteModifier ? emoteName + ":" + emoteModifier : emoteName)}([\\s]|$)`)); + if (!results) continue; + const pre = nodes[n].substring(0, results.index + results[1].length); + const post = nodes[n].substring(results.index + results[0].length - results[2].length); + nodes[n] = pre; + const emoteComponent = DiscordModules.React.createElement(BDEmote, {name: emoteName, url: EmoteURLs[current].format({id: Emotes[current][emoteName]}), modifier: emoteModifier, isFavorite: this.isFavorite(emoteName)}); + nodes.splice(n + 1, 0, post); + nodes.splice(n + 1, 0, emoteComponent); } } - const onlyEmotes = nodes.every(r => { - if (typeof(r) == "string" && r.replace(/\s*/, "") == "") return true; - else if (r.type && r.type.name == "BDEmote") return true; - else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true; - return false; - }); - if (!onlyEmotes) return; - - for (const node of nodes) { - if (typeof(node) != "object") continue; - if (node.type.name == "BDEmote") node.props.jumboable = true; - else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true; - } + } + const onlyEmotes = nodes.every(r => { + if (typeof(r) == "string" && r.replace(/\s*/, "") == "") return true; + else if (r.type && r.type.name == "BDEmote") return true; + else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true; + return false; }); + if (!onlyEmotes) return; + + for (const node of nodes) { + if (typeof(node) != "object") continue; + if (node.type.name == "BDEmote") node.props.jumboable = true; + else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true; + } }); } diff --git a/src/data/strings.js b/src/data/strings.js index a727b9aa..dc1eb275 100644 --- a/src/data/strings.js +++ b/src/data/strings.js @@ -209,6 +209,10 @@ export default { deleteAddon: "Delete", confirmDelete: "Are you sure you want to delete {{name}}?", confirmationText: "You have unsaved changes to {{name}}. Closing this window will lose all those changes.", + enabled: "{{name}} has been enabled.", + disabled: "{{name}} has been disabled.", + unknownAuthor: "Unknown Author", + noDescription: "Description not provided." }, Emotes: { loading: "Loading emotes in the background do not reload.", diff --git a/src/modules/addonmanager.js b/src/modules/addonmanager.js index 2608a4be..1b5a86e6 100644 --- a/src/modules/addonmanager.js +++ b/src/modules/addonmanager.js @@ -10,7 +10,7 @@ import DiscordModules from "./discordmodules"; import Strings from "./strings"; import AddonEditor from "../ui/misc/addoneditor"; -import FloatingWindowContainer from "../ui/floating/container"; +import FloatingWindows from "../ui/floatingwindows"; const React = DiscordModules.React; @@ -82,21 +82,22 @@ export default class AddonManager { Logger.log(this.name, `Starting to watch ${this.prefix} addons.`); this.watcher = fs.watch(this.addonFolder, {persistent: false}, async (eventType, filename) => { if (!eventType || !filename || !filename.endsWith(this.extension)) return; - await new Promise(r => setTimeout(r, 50)); - try {fs.statSync(path.resolve(this.addonFolder, filename));} + await new Promise(r => setTimeout(r, 100)); + try { + const stats = fs.statSync(path.resolve(this.addonFolder, filename)); + if (!stats.isFile()) return; + if (!stats || !stats.mtime || !stats.mtime.getTime()) return; + if (typeof(stats.mtime.getTime()) !== "number") return; + if (this.timeCache[filename] == stats.mtime.getTime()) return; + this.timeCache[filename] = stats.mtime.getTime(); + if (eventType == "rename") this.loadAddon(filename, true); + if (eventType == "change") this.reloadAddon(filename, true); + } catch (err) { if (err.code !== "ENOENT") return; delete this.timeCache[filename]; this.unloadAddon(filename, true); } - if (!fs.statSync(path.resolve(this.addonFolder, filename)).isFile()) return; - const stats = fs.statSync(path.resolve(this.addonFolder, filename)); - if (!stats || !stats.mtime || !stats.mtime.getTime()) return; - if (typeof(stats.mtime.getTime()) !== "number") return; - if (this.timeCache[filename] == stats.mtime.getTime()) return; - this.timeCache[filename] = stats.mtime.getTime(); - if (eventType == "rename") this.loadAddon(filename, true); - if (eventType == "change") this.reloadAddon(filename, true); }); } @@ -160,6 +161,9 @@ export default class AddonManager { fileContent = stripBOM(fileContent); const stats = fs.statSync(filename); const meta = self.extractMeta(fileContent); + if (!meta.author) meta.author = Strings.Addons.unknownAuthor; + if (!meta.version) meta.version = "???"; + if (!meta.description) meta.description = Strings.Addons.noDescription; meta.id = meta.name; meta.filename = path.basename(filename); meta.added = stats.atimeMs; @@ -301,7 +305,7 @@ export default class AddonManager { language: this.language }); - FloatingWindowContainer.open({ + FloatingWindows.open({ onClose: () => { this.isDetached = false; }, diff --git a/src/modules/pluginapi.js b/src/modules/pluginapi.js index 9c3030d8..b71eb67a 100644 --- a/src/modules/pluginapi.js +++ b/src/modules/pluginapi.js @@ -249,7 +249,7 @@ BdApi.setBDData = function(key, data) { }; const makeAddonAPI = (manager) => new class AddonAPI { - get folder() {return manager.folder;} + get folder() {return manager.addonFolder;} isEnabled(idOrFile) {return manager.isEnabled(idOrFile);} enable(idOrAddon) {return manager.enableAddon(idOrAddon);} disable(idOrAddon) {return manager.disableAddon(idOrAddon);} diff --git a/src/modules/pluginmanager.js b/src/modules/pluginmanager.js index fb449529..4dc21e8b 100644 --- a/src/modules/pluginmanager.js +++ b/src/modules/pluginmanager.js @@ -112,7 +112,7 @@ export default new class PluginManager extends AddonManager { try { plugin.start(); this.emit("started", addon.id); - Toasts.show(`${addon.name} v${addon.version} has started.`); + Toasts.show(Strings.Addons.enabled.format({name: addon.name, version: addon.version})); } catch (err) { this.state[addon.id] = false; @@ -129,7 +129,7 @@ export default new class PluginManager extends AddonManager { try { plugin.stop(); this.emit("stopped", addon.id); - Toasts.show(`${addon.name} v${addon.version} has stopped.`); + Toasts.show(Strings.Addons.disabled.format({name: addon.name, version: addon.version})); } catch (err) { this.state[addon.id] = false; diff --git a/src/modules/thememanager.js b/src/modules/thememanager.js index 4a40ff5a..d1df00fa 100644 --- a/src/modules/thememanager.js +++ b/src/modules/thememanager.js @@ -66,13 +66,13 @@ export default new class ThemeManager extends AddonManager { const addon = typeof(idOrAddon) == "string" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon; if (!addon) return; DOMManager.injectTheme(addon.id, addon.css); - Toasts.show(`${addon.name} v${addon.version} has been applied.`); + Toasts.show(Strings.Addons.enabled.format({name: addon.name, version: addon.version})); } removeTheme(idOrAddon) { const addon = typeof(idOrAddon) == "string" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon; if (!addon) return; DOMManager.removeTheme(addon.id); - Toasts.show(`${addon.name} v${addon.version} has been removed.`); + Toasts.show(Strings.Addons.disabled.format({name: addon.name, version: addon.version})); } }; \ No newline at end of file diff --git a/src/structs/builtin.js b/src/structs/builtin.js index 283a8707..7be192bc 100644 --- a/src/structs/builtin.js +++ b/src/structs/builtin.js @@ -84,6 +84,10 @@ export default class BuiltinModule { Logger.stacktrace(this.name, message, error); } + before(object, func, callback) { + return Patcher.before(this.name, object, func, callback); + } + after(object, func, callback) { return Patcher.after(this.name, object, func, callback); } diff --git a/src/ui/floating/container.jsx b/src/ui/floating/container.jsx index 72a90803..17a4eea4 100644 --- a/src/ui/floating/container.jsx +++ b/src/ui/floating/container.jsx @@ -1,4 +1,4 @@ -import {React, ReactDOM, DOM, WebpackModules} from "modules"; +import {React, DOM} from "modules"; import FloatingWindow from "./window"; @@ -10,7 +10,7 @@ class FloatingWindowContainer extends React.Component { } get minY() { - const appContainer = DOM.query(`#app-mount > div[class*="app-"`); + const appContainer = DOM.query(`#app-mount > div[class*="app-"]`); if (appContainer) return appContainer.offsetTop; return 0; } @@ -48,10 +48,4 @@ class FloatingWindowContainer extends React.Component { } } -const containerRef = React.createRef(); -const container = ; -const wrapped = React.createElement(WebpackModules.getByProps("AppReferencePositionLayer").AppLayerProvider().props.layerContext.Provider, {value: [document.querySelector("#app-mount > .layerContainer-yqaFcK")]}, container); -const div = DOM.createElement(`
`); -DOM.query("#app-mount").append(div); -ReactDOM.render(wrapped, div); -export default containerRef.current; \ No newline at end of file +export default FloatingWindowContainer; \ No newline at end of file diff --git a/src/ui/floating/window.jsx b/src/ui/floating/window.jsx index d8dbb6ad..e262cd4d 100644 --- a/src/ui/floating/window.jsx +++ b/src/ui/floating/window.jsx @@ -121,17 +121,6 @@ export default class FloatingWindow extends React.Component {
; } - async close() { - let shouldClose = true; - const confirmClose = typeof(this.props.confirmClose) == "function" ? this.props.confirmClose() : this.props.confirmClose; - if (confirmClose) { - this.setState({modalOpen: true}); - shouldClose = await this.confirmClose(); - this.setState({modalOpen: false}); - } - if (this.props.close && shouldClose) this.props.close(); - } - maximize() { this.window.current.style.width = "100%"; this.window.current.style.height = "100%"; @@ -145,8 +134,35 @@ export default class FloatingWindow extends React.Component { const right = left + width; const bottom = top + height; + // Prevent expanding off the bottom and right and readjust position if (bottom > this.maxY) this.window.current.style.top = (this.maxY - height) + "px"; if (right > this.maxX) this.window.current.style.left = (this.maxX - width) + "px"; + + const newLeft = parseInt(this.window.current.style.left); + const newTop = parseInt(this.window.current.style.top); + + // For small screens it's possible this pushes us off the other direction... we need to readjust size + if (newTop < this.minY) { + const difference = this.minY - newTop; + this.window.current.style.top = this.minY + "px"; + this.window.current.style.height = (height - difference) + "px"; + } + if (newLeft < this.minX) { + const difference = this.minX - newLeft; + this.window.current.style.left = this.minX + "px"; + this.window.current.style.height = (width - difference) + "px"; + } + } + + async close() { + let shouldClose = true; + const confirmClose = typeof(this.props.confirmClose) == "function" ? this.props.confirmClose() : this.props.confirmClose; + if (confirmClose) { + this.setState({modalOpen: true}); + shouldClose = await this.confirmClose(); + this.setState({modalOpen: false}); + } + if (this.props.close && shouldClose) this.props.close(); } confirmClose() { diff --git a/src/ui/floatingwindows.js b/src/ui/floatingwindows.js new file mode 100644 index 00000000..5ecc03d0 --- /dev/null +++ b/src/ui/floatingwindows.js @@ -0,0 +1,19 @@ +import {WebpackModules, React, ReactDOM, DOM, DOMManager} from "modules"; +import FloatingWindowContainer from "./floating/container"; + +export default class FloatingWindows { + static initialize() { + const containerRef = React.createRef(); + const container = ; + const wrapped = React.createElement(WebpackModules.getByProps("AppReferencePositionLayer").AppLayerProvider().props.layerContext.Provider, {value: [document.querySelector("#app-mount > .layerContainer-yqaFcK")]}, container); + const div = DOM.createElement(`
`); + DOMManager.bdBody.append(div); + ReactDOM.render(wrapped, div); + this.ref = containerRef; + } + + static open(window) { + if (!this.ref) this.initialize(); + return this.ref.current.open(window); + } +} \ No newline at end of file diff --git a/src/ui/modals.js b/src/ui/modals.js index 36b89e9a..08524505 100644 --- a/src/ui/modals.js +++ b/src/ui/modals.js @@ -6,10 +6,11 @@ export default class Modals { static get shouldShowAddonErrors() {return Settings.get("settings", "addons", "addonErrors");} + static get ModalActions() {return WebpackModules.getByProps("openModal", "updateModal");} static get ModalStack() {return WebpackModules.getByProps("push", "update", "pop", "popWithKey");} static get AlertModal() {return WebpackModules.getByPrototypes("handleCancel", "handleSubmit", "handleMinorConfirm");} static get TextElement() {return WebpackModules.getByProps("Sizes", "Weights");} - static get ConfirmationModal() {return WebpackModules.getModule(m => m.defaultProps && m.key && m.key() == "confirm-modal");} + static get ConfirmationModal() {return WebpackModules.findByDisplayName("ConfirmModal");} static get Markdown() {return WebpackModules.findByDisplayName("Markdown");} static default(title, content) { @@ -64,9 +65,9 @@ export default class Modals { static showConfirmationModal(title, content, options = {}) { const Markdown = this.Markdown; const ConfirmationModal = this.ConfirmationModal; - const ModalStack = this.ModalStack; + const ModalActions = this.ModalActions; if (content instanceof FormattableString) content = content.toString(); - if (!this.ModalStack || !this.ConfirmationModal || !this.Markdown) return this.default(title, content); + if (!this.ModalActions || !this.ConfirmationModal || !this.Markdown) return this.default(title, content); const emptyFunction = () => {}; const {onConfirm = emptyFunction, onCancel = emptyFunction, confirmText = Strings.Modals.okay, cancelText = Strings.Modals.cancel, danger = false, key = undefined} = options; @@ -74,15 +75,16 @@ export default class Modals { if (!Array.isArray(content)) content = [content]; content = content.map(c => typeof(c) === "string" ? React.createElement(Markdown, null, c) : c); - return ModalStack.push(ConfirmationModal, { - header: title, - children: content, - red: danger, - confirmText: confirmText, - cancelText: cancelText, - onConfirm: onConfirm, - onCancel: onCancel - }, key); + return ModalActions.openModal(props => { + return React.createElement(ConfirmationModal, Object.assign({ + header: title, + red: danger, + confirmText: confirmText, + cancelText: cancelText, + onConfirm: onConfirm, + onCancel: onCancel + }, props), content); + }, {modalKey: key}); } static showAddonErrors({plugins: pluginErrors = [], themes: themeErrors = []}) { diff --git a/src/ui/toasts.js b/src/ui/toasts.js index 447c76c8..18fe6516 100644 --- a/src/ui/toasts.js +++ b/src/ui/toasts.js @@ -1,4 +1,4 @@ -import {WebpackModules, Settings} from "modules"; +import {WebpackModules, Settings, DOMManager} from "modules"; const channelsClass = WebpackModules.getByProps("sidebar", "hasNotice").sidebar.split(" ")[0]; const membersWrapClass = WebpackModules.getByProps("membersWrap").membersWrap.split(" ")[0]; @@ -65,6 +65,6 @@ export default class Toasts { toastWrapper.style.setProperty("left", left + "px"); toastWrapper.style.setProperty("width", width + "px"); toastWrapper.style.setProperty("bottom", bottom + "px"); - document.querySelector("#app-mount").appendChild(toastWrapper); + DOMManager.bdBody.appendChild(toastWrapper); } } \ No newline at end of file