PATH: /home/hwyuvbry/public_html/kerbau/assets/vendor/js
FILE_BARU
CREATE
FOLDER_BARU
MKDIR
UPLOAD_FILE
GO
[ .. KEMBALI ]
📄 bootstrap.js
↓
X
📄 bootstrap.js.LICENSE.txt
↓
X
📄 dropdown-hover.js
↓
X
📄 helpers.js
↓
X
📄 mega-dropdown.js
↓
X
📄 menu.js
↓
X
📄 template-customizer.js
↓
X
SAVING...
BERHASIL DIUBAH!
EDITING: bootstrap.js
/* * ATTENTION: An "eval-source-map" devtool has been used. * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ /******/ (function() { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./node_modules/@popperjs/core/lib/createPopper.js": /*!*********************************************************!*\ !*** ./node_modules/@popperjs/core/lib/createPopper.js ***! \*********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createPopper\": function() { return /* binding */ createPopper; },\n/* harmony export */ \"detectOverflow\": function() { return /* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; },\n/* harmony export */ \"popperGenerator\": function() { return /* binding */ popperGenerator; }\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js\");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\");\n/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ \"./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dom-utils/getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ \"./node_modules/@popperjs/core/lib/utils/orderModifiers.js\");\n/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/debounce.js */ \"./node_modules/@popperjs/core/lib/utils/debounce.js\");\n/* harmony import */ var _utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/validateModifiers.js */ \"./node_modules/@popperjs/core/lib/utils/validateModifiers.js\");\n/* harmony import */ var _utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/uniqueBy.js */ \"./node_modules/@popperjs/core/lib/utils/uniqueBy.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ \"./node_modules/@popperjs/core/lib/utils/mergeByName.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nfunction popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(reference.contextElement) : [],\n popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (true) {\n var modifiers = (0,_utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n (0,_utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(modifiers);\n\n if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state.options.placement) === _enums_js__WEBPACK_IMPORTED_MODULE_7__.auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = (0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (true) {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(popper), state.options.strategy === 'fixed'),\n popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (true) {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (true) {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nvar createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUErRDtBQUNOO0FBQ1E7QUFDSjtBQUNFO0FBQ1I7QUFDWjtBQUNrQjtBQUNsQjtBQUNnQjtBQUNWO0FBQ007QUFDRDtBQUNwQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNFQUFzRSxhQUFhO0FBQ25GO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBLHFCQUFxQixtRUFBUyxjQUFjLDJFQUFpQix5Q0FBeUMsMkVBQWlCO0FBQ3ZILGtCQUFrQiwyRUFBaUI7QUFDbkMsV0FBVztBQUNYOztBQUVBLCtCQUErQixvRUFBYyxDQUFDLGlFQUFXLHlEQUF5RDs7QUFFbEg7QUFDQTtBQUNBLFNBQVMsR0FBRztBQUNaOztBQUVBLFlBQVksSUFBcUM7QUFDakQsMEJBQTBCLDhEQUFRO0FBQ2xDO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsVUFBVSx1RUFBaUI7O0FBRTNCLGNBQWMsc0VBQWdCLDhCQUE4QiwyQ0FBSTtBQUNoRTtBQUNBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQywwRUFBZ0I7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEOzs7QUFHQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDOztBQUVBO0FBQ0EsY0FBYyxJQUFxQztBQUNuRDtBQUNBOztBQUVBO0FBQ0EsVUFBVTs7O0FBR1Y7QUFDQSxxQkFBcUIsMEVBQWdCLFlBQVksMEVBQWU7QUFDaEUsa0JBQWtCLHdFQUFhO0FBQy9CLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0EsNkNBQTZDLEtBQUs7O0FBRWxEO0FBQ0Esc0VBQXNFO0FBQ3RFLFNBQVM7QUFDVDs7QUFFQSw0QkFBNEIsdUNBQXVDO0FBQ25FLGNBQWMsSUFBcUM7QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTtBQUNoRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsY0FBYywrREFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLElBQXFDO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRztBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxtREFBbUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvY3JlYXRlUG9wcGVyLmpzPzZjZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IHZhbGlkYXRlTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgdW5pcXVlQnkgZnJvbSBcIi4vdXRpbHMvdW5pcXVlQnkuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuL2VudW1zLmpzXCI7XG52YXIgSU5WQUxJRF9FTEVNRU5UX0VSUk9SID0gJ1BvcHBlcjogSW52YWxpZCByZWZlcmVuY2Ugb3IgcG9wcGVyIGFyZ3VtZW50IHByb3ZpZGVkLiBUaGV5IG11c3QgYmUgZWl0aGVyIGEgRE9NIGVsZW1lbnQgb3IgdmlydHVhbCBlbGVtZW50Lic7XG52YXIgSU5GSU5JVEVfTE9PUF9FUlJPUiA9ICdQb3BwZXI6IEFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG1vZGlmaWVycyBjeWNsZSBoYXMgYmVlbiBkZXRlY3RlZCEgVGhlIGN5Y2xlIGhhcyBiZWVuIGludGVycnVwdGVkIHRvIHByZXZlbnQgYSBicm93c2VyIGNyYXNoLic7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7IC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBtb2RpZmllcnMgc28gdGhhdCB0aGUgY29uc3VtZXIgd2lsbCBnZXQgd2FybmVkXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGUgbW9kaWZpZXJzIGlzIGludmFsaWQgZm9yIGFueSByZWFzb25cblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgdmFyIG1vZGlmaWVycyA9IHVuaXF1ZUJ5KFtdLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycyksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycyk7XG5cbiAgICAgICAgICBpZiAoZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5vcHRpb25zLnBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICAgICAgICAgIHZhciBmbGlwTW9kaWZpZXIgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdmbGlwJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZsaXBNb2RpZmllcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImF1dG9cIiBwbGFjZW1lbnRzIHJlcXVpcmUgdGhlIFwiZmxpcFwiIG1vZGlmaWVyIGJlJywgJ3ByZXNlbnQgYW5kIGVuYWJsZWQgdG8gd29yay4nXS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocG9wcGVyKSxcbiAgICAgICAgICAgICAgbWFyZ2luVG9wID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luVG9wLFxuICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20gPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5MZWZ0OyAvLyBXZSBubyBsb25nZXIgdGFrZSBpbnRvIGFjY291bnQgYG1hcmdpbnNgIG9uIHRoZSBwb3BwZXIsIGFuZCBpdCBjYW5cbiAgICAgICAgICAvLyBjYXVzZSBidWdzIHdpdGggcG9zaXRpb25pbmcsIHNvIHdlJ2xsIHdhcm4gdGhlIGNvbnN1bWVyXG5cblxuICAgICAgICAgIGlmIChbbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0XS5zb21lKGZ1bmN0aW9uIChtYXJnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcmdpbik7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogQ1NTIFwibWFyZ2luXCIgc3R5bGVzIGNhbm5vdCBiZSB1c2VkIHRvIGFwcGx5IHBhZGRpbmcnLCAnYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgb3IgYm91bmRhcnkuJywgJ1RvIHJlcGxpY2F0ZSBtYXJnaW4sIHVzZSB0aGUgYG9mZnNldGAgbW9kaWZpZXIsIGFzIHdlbGwgYXMnLCAndGhlIGBwYWRkaW5nYCBvcHRpb24gaW4gdGhlIGBwcmV2ZW50T3ZlcmZsb3dgIGFuZCBgZmxpcGAnLCAnbW9kaWZpZXJzLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19kZWJ1Z19sb29wc19fID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBfX2RlYnVnX2xvb3BzX18gKz0gMTtcblxuICAgICAgICAgICAgaWYgKF9fZGVidWdfbG9vcHNfXyA+IDEwMCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKElORklOSVRFX0xPT1BfRVJST1IpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZSxcbiAgICAgICAgICAgIF9yZWYzJG9wdGlvbnMgPSBfcmVmMy5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYzJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZjMkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYzLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/createPopper.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js": /*!***************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***! \***************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ contains; }\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\nfunction contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUErQztBQUNoQztBQUNmLDJEQUEyRDs7QUFFM0Q7QUFDQTtBQUNBLElBQUk7QUFDSix1QkFBdUIsNERBQVk7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7O0FBR1Y7QUFDQSxRQUFRO0FBQ1IsTUFBTTs7O0FBR047QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvY29udGFpbnMuanM/N2YzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/contains.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js": /*!****************************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***! \****************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getBoundingClientRect; }\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js\");\n\n\n\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {\n scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBMkQ7QUFDbEI7QUFDRjtBQUNjO0FBQ3RDO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLDZEQUFhO0FBQ25DLHVDQUF1QyxxREFBSztBQUM1Qyx3Q0FBd0MscURBQUs7QUFDN0M7O0FBRUEsYUFBYSx5REFBUyxZQUFZLHlEQUFTO0FBQzNDOztBQUVBLDBCQUEwQixnRUFBZ0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanM/MGY4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cblxuICB2YXIgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaW5jbHVkZVNjYWxlICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBzY2FsZVggPSBlbGVtZW50Lm9mZnNldFdpZHRoID4gMCA/IHJvdW5kKGNsaWVudFJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxIDogMTtcbiAgICBzY2FsZVkgPSBlbGVtZW50Lm9mZnNldEhlaWdodCA+IDAgPyByb3VuZChjbGllbnRSZWN0LmhlaWdodCkgLyBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCAxIDogMTtcbiAgfVxuXG4gIHZhciBfcmVmID0gaXNFbGVtZW50KGVsZW1lbnQpID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93LFxuICAgICAgdmlzdWFsVmlld3BvcnQgPSBfcmVmLnZpc3VhbFZpZXdwb3J0O1xuXG4gIHZhciBhZGRWaXN1YWxPZmZzZXRzID0gIWlzTGF5b3V0Vmlld3BvcnQoKSAmJiBpc0ZpeGVkU3RyYXRlZ3k7XG4gIHZhciB4ID0gKGNsaWVudFJlY3QubGVmdCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCA6IDApKSAvIHNjYWxlWDtcbiAgdmFyIHkgPSAoY2xpZW50UmVjdC50b3AgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcCA6IDApKSAvIHNjYWxlWTtcbiAgdmFyIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlWDtcbiAgdmFyIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGVZO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgbGVmdDogeCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js": /*!**********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***! \**********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getClippingRect; }\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js\");\n/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js\");\n/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ \"./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js\");\n/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ \"./node_modules/@popperjs/core/lib/dom-utils/contains.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ \"./node_modules/@popperjs/core/lib/utils/rectToClientRect.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(element).position) >= 0;\n var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(element) : element;\n\n if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nfunction getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top);\n accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right);\n accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom);\n accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXVDO0FBQ1k7QUFDQTtBQUNJO0FBQ0o7QUFDTTtBQUNKO0FBQ007QUFDSTtBQUNoQjtBQUNWO0FBQ007QUFDaUI7QUFDaEI7O0FBRTVDO0FBQ0EsYUFBYSxxRUFBcUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEIsK0NBQVEsR0FBRyxzRUFBZ0IsQ0FBQywrREFBZSx1QkFBdUIseURBQVMsMEVBQTBFLHNFQUFnQixDQUFDLCtEQUFlLENBQUMsa0VBQWtCO0FBQ3BPLEVBQUU7QUFDRjtBQUNBOzs7QUFHQTtBQUNBLHdCQUF3QixpRUFBaUIsQ0FBQyw2REFBYTtBQUN2RCx3REFBd0QsZ0VBQWdCO0FBQ3hFLDRDQUE0Qyw2REFBYSxZQUFZLGdFQUFlOztBQUVwRixPQUFPLHlEQUFTO0FBQ2hCO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQSxXQUFXLHlEQUFTLG9CQUFvQix5REFBUSxvQ0FBb0MsNERBQVc7QUFDL0YsR0FBRztBQUNILEVBQUU7QUFDRjs7O0FBR2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG9EQUFHO0FBQ3JCLG9CQUFvQixvREFBRztBQUN2QixxQkFBcUIsb0RBQUc7QUFDeEIsbUJBQW1CLG9EQUFHO0FBQ3RCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzPzlkZTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js": /*!***********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***! \***********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getCompositeRect; }\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1;\n var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent);\n var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent);\n var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(offsetParent);\n var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(documentElement)) {\n scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(offsetParent);\n }\n\n if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) {\n offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUErRDtBQUNoQjtBQUNKO0FBQ0s7QUFDVztBQUNGO0FBQ1I7QUFDUjs7QUFFekM7QUFDQTtBQUNBLGVBQWUscURBQUs7QUFDcEIsZUFBZSxxREFBSztBQUNwQjtBQUNBLEVBQUU7QUFDRjs7O0FBR2U7QUFDZjtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDLDZEQUFhO0FBQzdDLDZCQUE2Qiw2REFBYTtBQUMxQyx3QkFBd0Isa0VBQWtCO0FBQzFDLGFBQWEscUVBQXFCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLDJEQUFXO0FBQ25CLElBQUksOERBQWM7QUFDbEIsZUFBZSw2REFBYTtBQUM1Qjs7QUFFQSxRQUFRLDZEQUFhO0FBQ3JCLGdCQUFnQixxRUFBcUI7QUFDckM7QUFDQTtBQUNBLE1BQU07QUFDTixrQkFBa0IsbUVBQW1CO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanM/ZDExNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js": /*!***********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***! \***********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getComputedStyle; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n\nfunction getComputedStyle(element) {\n return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element).getComputedStyle(element);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXVDO0FBQ3hCO0FBQ2YsU0FBUyx5REFBUztBQUNsQiIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcz9iNTE5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js": /*!*************************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***! \*************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getDocumentElement; }\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\nfunction getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEM7QUFDN0I7QUFDZjtBQUNBLFdBQVcseURBQVM7QUFDcEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzP2VmNTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICByZXR1cm4gKChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgZWxlbWVudC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js": /*!**********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***! \**********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getDocumentRect; }\n/* harmony export */ });\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\");\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element);\n var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n var y = -winScroll.scrollTop;\n\n if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(body || html).direction === 'rtl') {\n x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudFJlY3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXlEO0FBQ0o7QUFDTTtBQUNSO0FBQ1osQ0FBQztBQUN4Qzs7QUFFZTtBQUNmOztBQUVBLGFBQWEsa0VBQWtCO0FBQy9CLGtCQUFrQiwrREFBZTtBQUNqQztBQUNBLGNBQWMsbURBQUc7QUFDakIsZUFBZSxtREFBRztBQUNsQixrQ0FBa0MsbUVBQW1CO0FBQ3JEOztBQUVBLE1BQU0sZ0VBQWdCO0FBQ3RCLFNBQVMsbURBQUc7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzPzNlNzkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgeyBtYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW5TY3JvbGwgPSBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5O1xuICB2YXIgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuc2Nyb2xsV2lkdGggOiAwLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApO1xuICB2YXIgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keSA/IGJvZHkuc2Nyb2xsSGVpZ2h0IDogMCwgYm9keSA/IGJvZHkuY2xpZW50SGVpZ2h0IDogMCk7XG4gIHZhciB4ID0gLXdpblNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgdmFyIHkgPSAtd2luU2Nyb2xsLnNjcm9sbFRvcDtcblxuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js": /*!***************************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***! \***************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getHTMLElementScroll; }\n/* harmony export */ });\nfunction getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcz81ZmU2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js": /*!********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***! \********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getLayoutRect; }\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nfunction getLayoutRect(element) {\n var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStELENBQUM7QUFDaEU7O0FBRWU7QUFDZixtQkFBbUIscUVBQXFCLFdBQVc7QUFDbkQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzP2UyZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjsgLy8gUmV0dXJucyB0aGUgbGF5b3V0IHJlY3Qgb2YgYW4gZWxlbWVudCByZWxhdGl2ZSB0byBpdHMgb2Zmc2V0UGFyZW50LiBMYXlvdXRcbi8vIG1lYW5zIGl0IGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdHJhbnNmb3Jtcy5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TGF5b3V0UmVjdChlbGVtZW50KSB7XG4gIHZhciBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpOyAvLyBVc2UgdGhlIGNsaWVudFJlY3Qgc2l6ZXMgaWYgaXQncyBub3QgYmVlbiB0cmFuc2Zvcm1lZC5cbiAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMjIzXG5cbiAgdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LndpZHRoIC0gd2lkdGgpIDw9IDEpIHtcbiAgICB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XG4gIH1cblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC5oZWlnaHQgLSBoZWlnaHQpIDw9IDEpIHtcbiAgICBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogZWxlbWVudC5vZmZzZXRMZWZ0LFxuICAgIHk6IGVsZW1lbnQub2Zmc2V0VG9wLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js": /*!******************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***! \******************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getNodeName; }\n/* harmony export */ });\nfunction getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcz81Nzg4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js": /*!********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***! \********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getNodeScroll; }\n/* harmony export */ });\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js\");\n\n\n\n\nfunction getNodeScroll(node) {\n if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) {\n return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node);\n } else {\n return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(node);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlU2Nyb2xsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQW1EO0FBQ1o7QUFDUztBQUNhO0FBQzlDO0FBQ2YsZUFBZSx5REFBUyxXQUFXLDZEQUFhO0FBQ2hELFdBQVcsK0RBQWU7QUFDMUIsSUFBSTtBQUNKLFdBQVcsb0VBQW9CO0FBQy9CO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanM/MTk5YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js": /*!**********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***! \**********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getOffsetParent; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js\");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ \"./node_modules/@popperjs/core/lib/utils/userAgent.js\");\n\n\n\n\n\n\n\n\nfunction getTrueOffsetParent(element) {\n if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837\n (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])());\n var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])());\n\n if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n\n if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(currentNode)) < 0) {\n var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBdUM7QUFDSTtBQUNVO0FBQ1M7QUFDYjtBQUNGO0FBQ0M7O0FBRWhEO0FBQ0EsT0FBTyw2REFBYTtBQUNwQixFQUFFLGdFQUFnQjtBQUNsQjtBQUNBOztBQUVBO0FBQ0EsRUFBRTtBQUNGOzs7QUFHQTtBQUNBLGtDQUFrQywrREFBVztBQUM3Qyw2QkFBNkIsK0RBQVc7O0FBRXhDLGNBQWMsNkRBQWE7QUFDM0I7QUFDQSxxQkFBcUIsZ0VBQWdCOztBQUVyQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNkRBQWE7O0FBRWpDLE1BQU0sNERBQVk7QUFDbEI7QUFDQTs7QUFFQSxTQUFTLDZEQUFhLDBDQUEwQywyREFBVztBQUMzRSxjQUFjLGdFQUFnQixlQUFlO0FBQzdDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7OztBQUdlO0FBQ2YsZUFBZSx5REFBUztBQUN4Qjs7QUFFQSx5QkFBeUIsOERBQWMsa0JBQWtCLGdFQUFnQjtBQUN6RTtBQUNBOztBQUVBLHVCQUF1QiwyREFBVyw2QkFBNkIsMkRBQVcsNkJBQTZCLGdFQUFnQjtBQUN2SDtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qcz9iNjJiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQsIGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBpc1RhYmxlRWxlbWVudCBmcm9tIFwiLi9pc1RhYmxlRWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gL2ZpcmVmb3gvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuICB2YXIgaXNJRSA9IC9UcmlkZW50L2kudGVzdChnZXRVQVN0cmluZygpKTtcblxuICBpZiAoaXNJRSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgLy8gSW4gSUUgOSwgMTAgYW5kIDExIGZpeGVkIGVsZW1lbnRzIGNvbnRhaW5pbmcgYmxvY2sgaXMgYWx3YXlzIGVzdGFibGlzaGVkIGJ5IHRoZSB2aWV3cG9ydFxuICAgIHZhciBlbGVtZW50Q3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgIGlmIChlbGVtZW50Q3NzLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB2YXIgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuXG4gIGlmIChpc1NoYWRvd1Jvb3QoY3VycmVudE5vZGUpKSB7XG4gICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5ob3N0O1xuICB9XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js": /*!********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***! \********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getParentNode; }\n/* harmony export */ });\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n\n\nfunction getParentNode(element) {\n if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element) // fallback\n\n );\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRQYXJlbnROb2RlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBMkM7QUFDYztBQUNWO0FBQ2hDO0FBQ2YsTUFBTSwyREFBVztBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDREQUFZO0FBQ2hCO0FBQ0EsSUFBSSxrRUFBa0I7O0FBRXRCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFBhcmVudE5vZGUuanM/MjhiZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js": /*!**********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***! \**********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getScrollParent; }\n/* harmony export */ });\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n\n\n\nfunction getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node)) {\n return node;\n }\n\n return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(node));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBK0M7QUFDRTtBQUNOO0FBQ0s7QUFDakM7QUFDZiw0Q0FBNEMsMkRBQVc7QUFDdkQ7QUFDQTtBQUNBOztBQUVBLE1BQU0sNkRBQWEsVUFBVSw4REFBYztBQUMzQztBQUNBOztBQUVBLHlCQUF5Qiw2REFBYTtBQUN0QyIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0U2Nyb2xsUGFyZW50LmpzPzlkMGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js": /*!**********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***! \**********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getViewportRect; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\");\n/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js\");\n\n\n\n\nfunction getViewportRect(element, strategy) {\n var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element);\n var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element),\n y: y\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRWaWV3cG9ydFJlY3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBdUM7QUFDa0I7QUFDRTtBQUNOO0FBQ3RDO0FBQ2YsWUFBWSx5REFBUztBQUNyQixhQUFhLGtFQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixnRUFBZ0I7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxtRUFBbUI7QUFDOUI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRWaWV3cG9ydFJlY3QuanM/N2M3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICB2YXIgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIHZhciB4ID0gMDtcbiAgdmFyIHkgPSAwO1xuXG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIHZhciBsYXlvdXRWaWV3cG9ydCA9IGlzTGF5b3V0Vmlld3BvcnQoKTtcblxuICAgIGlmIChsYXlvdXRWaWV3cG9ydCB8fCAhbGF5b3V0Vmlld3BvcnQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js": /*!****************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***! \****************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getWindow; }\n/* harmony export */ });\nfunction getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3cuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcz8xZmMwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js": /*!**********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***! \**********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getWindowScroll; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n\nfunction getWindowScroll(node) {\n var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBdUM7QUFDeEI7QUFDZixZQUFZLHlEQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanM/YTMyMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js": /*!**************************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***! \**************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getWindowScrollBarX; }\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\");\n\n\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element).scrollLeft;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0Q7QUFDTjtBQUNOO0FBQ3BDO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHFFQUFxQixDQUFDLGtFQUFrQixrQkFBa0IsK0RBQWU7QUFDbEYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbEJhclguanM/NjEyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgLy8gUG9wcGVyIDEgaXMgYnJva2VuIGluIHRoaXMgY2FzZSBhbmQgbmV2ZXIgaGFkIGEgYnVnIHJlcG9ydCBzbyBsZXQncyBhc3N1bWVcbiAgLy8gaXQncyBub3QgYW4gaXNzdWUuIEkgZG9uJ3QgdGhpbmsgYW55b25lIGV2ZXIgc3BlY2lmaWVzIHdpZHRoIG9uIDxodG1sPlxuICAvLyBhbnl3YXkuXG4gIC8vIEJyb3dzZXJzIHdoZXJlIHRoZSBsZWZ0IHNjcm9sbGJhciBkb2Vzbid0IGNhdXNlIGFuIGlzc3VlIHJlcG9ydCBgMGAgZm9yXG4gIC8vIHRoaXMgKGUuZy4gRWRnZSAyMDE5LCBJRTExLCBTYWZhcmkpXG4gIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js": /*!*****************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***! \*****************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isElement\": function() { return /* binding */ isElement; },\n/* harmony export */ \"isHTMLElement\": function() { return /* binding */ isHTMLElement; },\n/* harmony export */ \"isShadowRoot\": function() { return /* binding */ isShadowRoot; }\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n\n\nfunction isElement(node) {\n var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBdUM7O0FBRXZDO0FBQ0EsbUJBQW1CLHlEQUFTO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIseURBQVM7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQix5REFBUztBQUM1QjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzPzI3NjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcblxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuSFRNTEVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKSB7XG4gIC8vIElFIDExIGhhcyBubyBTaGFkb3dSb290XG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5TaGFkb3dSb290O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q7XG59XG5cbmV4cG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js": /*!***********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***! \***********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ isLayoutViewport; }\n/* harmony export */ });\n/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ \"./node_modules/@popperjs/core/lib/utils/userAgent.js\");\n\nfunction isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])());\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc0xheW91dFZpZXdwb3J0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWdEO0FBQ2pDO0FBQ2YsZ0RBQWdELCtEQUFXO0FBQzNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc0xheW91dFZpZXdwb3J0LmpzPzc0YWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTGF5b3V0Vmlld3BvcnQoKSB7XG4gIHJldHVybiAhL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChnZXRVQVN0cmluZygpKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js": /*!*********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***! \*********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ isScrollParent; }\n/* harmony export */ });\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n\nfunction isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1Njcm9sbFBhcmVudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFxRDtBQUN0QztBQUNmO0FBQ0EsMEJBQTBCLGdFQUFnQjtBQUMxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanM/YWU2YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js": /*!*********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***! \*********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ isTableElement; }\n/* harmony export */ });\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element)) >= 0;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUEyQztBQUM1QjtBQUNmLHVDQUF1QywyREFBVztBQUNsRCIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNUYWJsZUVsZW1lbnQuanM/YjQ1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmRleE9mKGdldE5vZGVOYW1lKGVsZW1lbnQpKSA+PSAwO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js": /*!************************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***! \************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ listScrollParents; }\n/* harmony export */ });\n/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js\");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\");\n\n\n\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nfunction listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(target)));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFtRDtBQUNKO0FBQ1I7QUFDVTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLCtEQUFlO0FBQ3BDO0FBQ0EsWUFBWSx5REFBUztBQUNyQiwrREFBK0QsOERBQWM7QUFDN0U7QUFDQTtBQUNBLHVDQUF1Qyw2REFBYTtBQUNwRCIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanM/ZWExYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/enums.js": /*!**************************************************!*\ !*** ./node_modules/@popperjs/core/lib/enums.js ***! \**************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"afterMain\": function() { return /* binding */ afterMain; },\n/* harmony export */ \"afterRead\": function() { return /* binding */ afterRead; },\n/* harmony export */ \"afterWrite\": function() { return /* binding */ afterWrite; },\n/* harmony export */ \"auto\": function() { return /* binding */ auto; },\n/* harmony export */ \"basePlacements\": function() { return /* binding */ basePlacements; },\n/* harmony export */ \"beforeMain\": function() { return /* binding */ beforeMain; },\n/* harmony export */ \"beforeRead\": function() { return /* binding */ beforeRead; },\n/* harmony export */ \"beforeWrite\": function() { return /* binding */ beforeWrite; },\n/* harmony export */ \"bottom\": function() { return /* binding */ bottom; },\n/* harmony export */ \"clippingParents\": function() { return /* binding */ clippingParents; },\n/* harmony export */ \"end\": function() { return /* binding */ end; },\n/* harmony export */ \"left\": function() { return /* binding */ left; },\n/* harmony export */ \"main\": function() { return /* binding */ main; },\n/* harmony export */ \"modifierPhases\": function() { return /* binding */ modifierPhases; },\n/* harmony export */ \"placements\": function() { return /* binding */ placements; },\n/* harmony export */ \"popper\": function() { return /* binding */ popper; },\n/* harmony export */ \"read\": function() { return /* binding */ read; },\n/* harmony export */ \"reference\": function() { return /* binding */ reference; },\n/* harmony export */ \"right\": function() { return /* binding */ right; },\n/* harmony export */ \"start\": function() { return /* binding */ start; },\n/* harmony export */ \"top\": function() { return /* binding */ top; },\n/* harmony export */ \"variationPlacements\": function() { return /* binding */ variationPlacements; },\n/* harmony export */ \"viewport\": function() { return /* binding */ viewport; },\n/* harmony export */ \"write\": function() { return /* binding */ write; }\n/* harmony export */ });\nvar top = 'top';\nvar bottom = 'bottom';\nvar right = 'right';\nvar left = 'left';\nvar auto = 'auto';\nvar basePlacements = [top, bottom, right, left];\nvar start = 'start';\nvar end = 'end';\nvar clippingParents = 'clippingParents';\nvar viewport = 'viewport';\nvar popper = 'popper';\nvar reference = 'reference';\nvar variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nvar beforeRead = 'beforeRead';\nvar read = 'read';\nvar afterRead = 'afterRead'; // pure-logic modifiers\n\nvar beforeMain = 'beforeMain';\nvar main = 'main';\nvar afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nvar beforeWrite = 'beforeWrite';\nvar write = 'write';\nvar afterWrite = 'afterWrite';\nvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2VudW1zLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ1A7QUFDQSxDQUFDO0FBQ007QUFDUDtBQUNBLENBQUMsT0FBTzs7QUFFRDtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcz83N2Y5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgdG9wID0gJ3RvcCc7XG5leHBvcnQgdmFyIGJvdHRvbSA9ICdib3R0b20nO1xuZXhwb3J0IHZhciByaWdodCA9ICdyaWdodCc7XG5leHBvcnQgdmFyIGxlZnQgPSAnbGVmdCc7XG5leHBvcnQgdmFyIGF1dG8gPSAnYXV0byc7XG5leHBvcnQgdmFyIGJhc2VQbGFjZW1lbnRzID0gW3RvcCwgYm90dG9tLCByaWdodCwgbGVmdF07XG5leHBvcnQgdmFyIHN0YXJ0ID0gJ3N0YXJ0JztcbmV4cG9ydCB2YXIgZW5kID0gJ2VuZCc7XG5leHBvcnQgdmFyIGNsaXBwaW5nUGFyZW50cyA9ICdjbGlwcGluZ1BhcmVudHMnO1xuZXhwb3J0IHZhciB2aWV3cG9ydCA9ICd2aWV3cG9ydCc7XG5leHBvcnQgdmFyIHBvcHBlciA9ICdwb3BwZXInO1xuZXhwb3J0IHZhciByZWZlcmVuY2UgPSAncmVmZXJlbmNlJztcbmV4cG9ydCB2YXIgdmFyaWF0aW9uUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9iYXNlUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pO1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL1tdLmNvbmNhdChiYXNlUGxhY2VtZW50cywgW2F1dG9dKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQsIHBsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7IC8vIG1vZGlmaWVycyB0aGF0IG5lZWQgdG8gcmVhZCB0aGUgRE9NXG5cbmV4cG9ydCB2YXIgYmVmb3JlUmVhZCA9ICdiZWZvcmVSZWFkJztcbmV4cG9ydCB2YXIgcmVhZCA9ICdyZWFkJztcbmV4cG9ydCB2YXIgYWZ0ZXJSZWFkID0gJ2FmdGVyUmVhZCc7IC8vIHB1cmUtbG9naWMgbW9kaWZpZXJzXG5cbmV4cG9ydCB2YXIgYmVmb3JlTWFpbiA9ICdiZWZvcmVNYWluJztcbmV4cG9ydCB2YXIgbWFpbiA9ICdtYWluJztcbmV4cG9ydCB2YXIgYWZ0ZXJNYWluID0gJ2FmdGVyTWFpbic7IC8vIG1vZGlmaWVyIHdpdGggdGhlIHB1cnBvc2UgdG8gd3JpdGUgdG8gdGhlIERPTSAob3Igd3JpdGUgaW50byBhIGZyYW1ld29yayBzdGF0ZSlcblxuZXhwb3J0IHZhciBiZWZvcmVXcml0ZSA9ICdiZWZvcmVXcml0ZSc7XG5leHBvcnQgdmFyIHdyaXRlID0gJ3dyaXRlJztcbmV4cG9ydCB2YXIgYWZ0ZXJXcml0ZSA9ICdhZnRlcldyaXRlJztcbmV4cG9ydCB2YXIgbW9kaWZpZXJQaGFzZXMgPSBbYmVmb3JlUmVhZCwgcmVhZCwgYWZ0ZXJSZWFkLCBiZWZvcmVNYWluLCBtYWluLCBhZnRlck1haW4sIGJlZm9yZVdyaXRlLCB3cml0ZSwgYWZ0ZXJXcml0ZV07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/enums.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/index.js": /*!**************************************************!*\ !*** ./node_modules/@popperjs/core/lib/index.js ***! \**************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"afterMain\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain; },\n/* harmony export */ \"afterRead\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead; },\n/* harmony export */ \"afterWrite\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite; },\n/* harmony export */ \"applyStyles\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles; },\n/* harmony export */ \"arrow\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow; },\n/* harmony export */ \"auto\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto; },\n/* harmony export */ \"basePlacements\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements; },\n/* harmony export */ \"beforeMain\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain; },\n/* harmony export */ \"beforeRead\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeRead; },\n/* harmony export */ \"beforeWrite\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite; },\n/* harmony export */ \"bottom\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom; },\n/* harmony export */ \"clippingParents\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents; },\n/* harmony export */ \"computeStyles\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles; },\n/* harmony export */ \"createPopper\": function() { return /* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper; },\n/* harmony export */ \"createPopperBase\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper; },\n/* harmony export */ \"createPopperLite\": function() { return /* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper; },\n/* harmony export */ \"detectOverflow\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */ \"end\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end; },\n/* harmony export */ \"eventListeners\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners; },\n/* harmony export */ \"flip\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip; },\n/* harmony export */ \"hide\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide; },\n/* harmony export */ \"left\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left; },\n/* harmony export */ \"main\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main; },\n/* harmony export */ \"modifierPhases\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases; },\n/* harmony export */ \"offset\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset; },\n/* harmony export */ \"placements\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements; },\n/* harmony export */ \"popper\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper; },\n/* harmony export */ \"popperGenerator\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator; },\n/* harmony export */ \"popperOffsets\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets; },\n/* harmony export */ \"preventOverflow\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow; },\n/* harmony export */ \"read\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read; },\n/* harmony export */ \"reference\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference; },\n/* harmony export */ \"right\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right; },\n/* harmony export */ \"start\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.start; },\n/* harmony export */ \"top\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top; },\n/* harmony export */ \"variationPlacements\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements; },\n/* harmony export */ \"viewport\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport; },\n/* harmony export */ \"write\": function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write; }\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ \"./node_modules/@popperjs/core/lib/modifiers/index.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/createPopper.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper.js */ \"./node_modules/@popperjs/core/lib/popper.js\");\n/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popper-lite.js */ \"./node_modules/@popperjs/core/lib/popper-lite.js\");\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTJCO0FBQ1UsQ0FBQzs7QUFFZ0UsQ0FBQzs7QUFFNUQsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9pbmRleC5qcz8xMjM1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2VudW1zLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2RpZmllcnMvaW5kZXguanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93LCBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyQmFzZSB9IGZyb20gXCIuL2NyZWF0ZVBvcHBlci5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciB9IGZyb20gXCIuL3BvcHBlci5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciBhcyBjcmVhdGVQb3BwZXJMaXRlIH0gZnJvbSBcIi4vcG9wcGVyLWxpdGUuanNcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/index.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js": /*!******************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***! \******************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7QUFBc0Q7QUFDSyxDQUFDO0FBQzVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDLFNBQVMsdUVBQWEsY0FBYyxxRUFBVztBQUMvQztBQUNBLE1BQU07QUFDTjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUhBQXVIOztBQUV2SDtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQUksR0FBRzs7QUFFZCxXQUFXLHVFQUFhLGNBQWMscUVBQVc7QUFDakQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsRUFBRTs7O0FBR0YsK0RBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcz8wYWI0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIFRoaXMgbW9kaWZpZXIgdGFrZXMgdGhlIHN0eWxlcyBwcmVwYXJlZCBieSB0aGUgYGNvbXB1dGVTdHlsZXNgIG1vZGlmaWVyXG4vLyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBIVE1MRWxlbWVudHMgc3VjaCBhcyBwb3BwZXIgYW5kIGFycm93XG5cbmZ1bmN0aW9uIGFwcGx5U3R5bGVzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZTtcbiAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB2YXIgc3R5bGUgPSBzdGF0ZS5zdHlsZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gRmxvdyBkb2Vzbid0IHN1cHBvcnQgdG8gZXh0ZW5kIHRoaXMgcHJvcGVydHksIGJ1dCBpdCdzIHRoZSBtb3N0XG4gICAgLy8gZWZmZWN0aXZlIHdheSB0byBhcHBseSBzdHlsZXMgdG8gYW4gSFRNTEVsZW1lbnRcbiAgICAvLyAkRmxvd0ZpeE1lW2Nhbm5vdC13cml0ZV1cblxuXG4gICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlc1tuYW1lXTtcblxuICAgICAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlID09PSB0cnVlID8gJycgOiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGU7XG4gIHZhciBpbml0aWFsU3R5bGVzID0ge1xuICAgIHBvcHBlcjoge1xuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJyxcbiAgICAgIG1hcmdpbjogJzAnXG4gICAgfSxcbiAgICBhcnJvdzoge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZSdcbiAgICB9LFxuICAgIHJlZmVyZW5jZToge31cbiAgfTtcbiAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5wb3BwZXIuc3R5bGUsIGluaXRpYWxTdHlsZXMucG9wcGVyKTtcbiAgc3RhdGUuc3R5bGVzID0gaW5pdGlhbFN0eWxlcztcblxuICBpZiAoc3RhdGUuZWxlbWVudHMuYXJyb3cpIHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLmFycm93LnN0eWxlLCBpbml0aWFsU3R5bGVzLmFycm93KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgICB2YXIgc3R5bGVQcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc3RhdGUuc3R5bGVzLmhhc093blByb3BlcnR5KG5hbWUpID8gc3RhdGUuc3R5bGVzW25hbWVdIDogaW5pdGlhbFN0eWxlc1tuYW1lXSk7IC8vIFNldCBhbGwgdmFsdWVzIHRvIGFuIGVtcHR5IHN0cmluZyB0byB1bnNldCB0aGVtXG5cbiAgICAgIHZhciBzdHlsZSA9IHN0eWxlUHJvcGVydGllcy5yZWR1Y2UoZnVuY3Rpb24gKHN0eWxlLCBwcm9wZXJ0eSkge1xuICAgICAgICBzdHlsZVtwcm9wZXJ0eV0gPSAnJztcbiAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgfSwge30pOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBhcHBseVN0eWxlcyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ2NvbXB1dGVTdHlsZXMnXVxufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js": /*!************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***! \************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\");\n/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/contains.js */ \"./node_modules/@popperjs/core/lib/dom-utils/contains.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\");\n/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ \"./node_modules/@popperjs/core/lib/utils/within.js\");\n/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ \"./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js\");\n/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ \"./node_modules/@popperjs/core/lib/utils/expandToHashMap.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(state.placement);\n var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(basePlacement);\n var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(arrowElement);\n var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left;\n var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (true) {\n if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__.isHTMLElement)(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(state.elements.popper, arrowElement)) {\n if (true) {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUE0RDtBQUNGO0FBQ1Y7QUFDYztBQUNjO0FBQ2hDO0FBQ29CO0FBQ047QUFDYTtBQUNaLENBQUM7O0FBRTVEO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0EsR0FBRztBQUNILFNBQVMsd0VBQWtCLHlDQUF5QyxxRUFBZSxVQUFVLHFEQUFjO0FBQzNHOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzRUFBZ0I7QUFDdEMsYUFBYSw4RUFBd0I7QUFDckMsb0JBQW9CLDJDQUFJLEVBQUUsNENBQUs7QUFDL0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLHVFQUFhO0FBQy9CLCtCQUErQiwwQ0FBRyxHQUFHLDJDQUFJO0FBQ3pDLCtCQUErQiw2Q0FBTSxHQUFHLDRDQUFLO0FBQzdDO0FBQ0E7QUFDQSwwQkFBMEIseUVBQWU7QUFDekM7QUFDQSx1REFBdUQ7QUFDdkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSx3REFBTSxvQkFBb0I7O0FBRXpDO0FBQ0EseURBQXlEO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxJQUFxQztBQUMzQyxTQUFTLHVFQUFhO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxPQUFPLGtFQUFRO0FBQ2YsUUFBUSxJQUFxQztBQUM3QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRiwrREFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cuanM/MDkyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuLi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4uL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qc1wiO1xuaW1wb3J0IHsgbGVmdCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB0b3AsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB0b1BhZGRpbmdPYmplY3QgPSBmdW5jdGlvbiB0b1BhZGRpbmdPYmplY3QocGFkZGluZywgc3RhdGUpIHtcbiAgcGFkZGluZyA9IHR5cGVvZiBwYWRkaW5nID09PSAnZnVuY3Rpb24nID8gcGFkZGluZyhPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHBhZGRpbmc7XG4gIHJldHVybiBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xufTtcblxuZnVuY3Rpb24gYXJyb3coX3JlZikge1xuICB2YXIgX3N0YXRlJG1vZGlmaWVyc0RhdGEkO1xuXG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgaXNWZXJ0aWNhbCA9IFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwO1xuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICBpZiAoIWFycm93RWxlbWVudCB8fCAhcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gdG9QYWRkaW5nT2JqZWN0KG9wdGlvbnMucGFkZGluZywgc3RhdGUpO1xuICB2YXIgYXJyb3dSZWN0ID0gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpO1xuICB2YXIgbWluUHJvcCA9IGF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gIHZhciBtYXhQcm9wID0gYXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gIHZhciBlbmREaWZmID0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2xlbl0gKyBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucG9wcGVyW2xlbl07XG4gIHZhciBzdGFydERpZmYgPSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoYXJyb3dFbGVtZW50KTtcbiAgdmFyIGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudEhlaWdodCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggfHwgMCA6IDA7XG4gIHZhciBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjsgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBwb3BwZXIgaWYgdGhlIGNlbnRlciBwb2ludCBpc1xuICAvLyBvdXRzaWRlIG9mIHRoZSBwb3BwZXIgYm91bmRzXG5cbiAgdmFyIG1pbiA9IHBhZGRpbmdPYmplY3RbbWluUHJvcF07XG4gIHZhciBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dSZWN0W2xlbl0gLSBwYWRkaW5nT2JqZWN0W21heFByb3BdO1xuICB2YXIgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd1JlY3RbbGVuXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgdmFyIG9mZnNldCA9IHdpdGhpbihtaW4sIGNlbnRlciwgbWF4KTsgLy8gUHJldmVudHMgYnJlYWtpbmcgc3ludGF4IGhpZ2hsaWdodGluZy4uLlxuXG4gIHZhciBheGlzUHJvcCA9IGF4aXM7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSAoX3N0YXRlJG1vZGlmaWVyc0RhdGEkID0ge30sIF9zdGF0ZSRtb2RpZmllcnNEYXRhJFtheGlzUHJvcF0gPSBvZmZzZXQsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJC5jZW50ZXJPZmZzZXQgPSBvZmZzZXQgLSBjZW50ZXIsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJCk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGFycm93RWxlbWVudCA9IF9vcHRpb25zJGVsZW1lbnQgPT09IHZvaWQgMCA/ICdbZGF0YS1wb3BwZXItYXJyb3ddJyA6IF9vcHRpb25zJGVsZW1lbnQ7XG5cbiAgaWYgKGFycm93RWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIENTUyBzZWxlY3RvclxuXG5cbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoYXJyb3dFbGVtZW50KTtcblxuICAgIGlmICghYXJyb3dFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmICghaXNIVE1MRWxlbWVudChhcnJvd0VsZW1lbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgZWxlbWVudCBtdXN0IGJlIGFuIEhUTUxFbGVtZW50IChub3QgYW4gU1ZHRWxlbWVudCkuJywgJ1RvIHVzZSBhbiBTVkcgYXJyb3csIHdyYXAgaXQgaW4gYW4gSFRNTEVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMnLCAndGhlIGFycm93LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb250YWlucyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIsIGFycm93RWxlbWVudCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgbW9kaWZpZXJcXCdzIGBlbGVtZW50YCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBvcHBlcicsICdlbGVtZW50LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/arrow.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js": /*!********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***! \********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"mapToStyles\": function() { return /* binding */ mapToStyles; }\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0,\n y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0\n };\n}\n\nfunction mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left;\n var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(popper)) {\n offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(popper);\n\n if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {\n sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {\n sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (true) {\n var transitionProperty = (0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state.placement),\n variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUE0RDtBQUNFO0FBQ1o7QUFDa0I7QUFDSjtBQUNKO0FBQ1I7QUFDWCxDQUFDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxxREFBSztBQUNaLE9BQU8scURBQUs7QUFDWjtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYywyQ0FBSTtBQUNsQixjQUFjLDBDQUFHO0FBQ2pCOztBQUVBO0FBQ0EsdUJBQXVCLHlFQUFlO0FBQ3RDO0FBQ0E7O0FBRUEseUJBQXlCLG1FQUFTO0FBQ2xDLHFCQUFxQiw0RUFBa0I7O0FBRXZDLFVBQVUsMEVBQWdCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOOztBQUVBLHNCQUFzQiwwQ0FBRyxtQkFBbUIsMkNBQUksa0JBQWtCLDRDQUFLLG1CQUFtQiwwQ0FBRztBQUM3RixjQUFjLDZDQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLDJDQUFJLG1CQUFtQiwwQ0FBRyxrQkFBa0IsNkNBQU0sbUJBQW1CLDBDQUFHO0FBQzlGLGNBQWMsNENBQUs7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDJCQUEyQixvQ0FBb0M7QUFDL0Q7O0FBRUEseUJBQXlCLHFDQUFxQztBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxJQUFxQztBQUMzQyw2QkFBNkIsMEVBQWdCOztBQUU3QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsc0VBQWdCO0FBQy9CLGVBQWUsa0VBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQyxtREFBbUQ7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSx5Q0FBeUMsa0RBQWtEO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLDRDQUE0QztBQUM1QztBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRiwrREFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzPzdjZGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZikge1xuICB2YXIgeCA9IF9yZWYueCxcbiAgICAgIHkgPSBfcmVmLnk7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG4gIHZhciBkcHIgPSB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICByZXR1cm4ge1xuICAgIHg6IHJvdW5kKHggKiBkcHIpIC8gZHByIHx8IDAsXG4gICAgeTogcm91bmQoeSAqIGRwcikgLyBkcHIgfHwgMFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9TdHlsZXMoX3JlZjIpIHtcbiAgdmFyIF9PYmplY3QkYXNzaWduMjtcblxuICB2YXIgcG9wcGVyID0gX3JlZjIucG9wcGVyLFxuICAgICAgcG9wcGVyUmVjdCA9IF9yZWYyLnBvcHBlclJlY3QsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmMi5wbGFjZW1lbnQsXG4gICAgICB2YXJpYXRpb24gPSBfcmVmMi52YXJpYXRpb24sXG4gICAgICBvZmZzZXRzID0gX3JlZjIub2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uID0gX3JlZjIucG9zaXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfcmVmMi5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBhZGFwdGl2ZSA9IF9yZWYyLmFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzID0gX3JlZjIucm91bmRPZmZzZXRzLFxuICAgICAgaXNGaXhlZCA9IF9yZWYyLmlzRml4ZWQ7XG4gIHZhciBfb2Zmc2V0cyR4ID0gb2Zmc2V0cy54LFxuICAgICAgeCA9IF9vZmZzZXRzJHggPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR4LFxuICAgICAgX29mZnNldHMkeSA9IG9mZnNldHMueSxcbiAgICAgIHkgPSBfb2Zmc2V0cyR5ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeTtcblxuICB2YXIgX3JlZjMgPSB0eXBlb2Ygcm91bmRPZmZzZXRzID09PSAnZnVuY3Rpb24nID8gcm91bmRPZmZzZXRzKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWYzLng7XG4gIHkgPSBfcmVmMy55O1xuICB2YXIgaGFzWCA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3gnKTtcbiAgdmFyIGhhc1kgPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd5Jyk7XG4gIHZhciBzaWRlWCA9IGxlZnQ7XG4gIHZhciBzaWRlWSA9IHRvcDtcbiAgdmFyIHdpbiA9IHdpbmRvdztcblxuICBpZiAoYWRhcHRpdmUpIHtcbiAgICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KHBvcHBlcik7XG4gICAgdmFyIGhlaWdodFByb3AgPSAnY2xpZW50SGVpZ2h0JztcbiAgICB2YXIgd2lkdGhQcm9wID0gJ2NsaWVudFdpZHRoJztcblxuICAgIGlmIChvZmZzZXRQYXJlbnQgPT09IGdldFdpbmRvdyhwb3BwZXIpKSB7XG4gICAgICBvZmZzZXRQYXJlbnQgPSBnZXREb2N1bWVudEVsZW1lbnQocG9wcGVyKTtcblxuICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiAhPT0gJ3N0YXRpYycgJiYgcG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgICAgaGVpZ2h0UHJvcCA9ICdzY3JvbGxIZWlnaHQnO1xuICAgICAgICB3aWR0aFByb3AgPSAnc2Nyb2xsV2lkdGgnO1xuICAgICAgfVxuICAgIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FzdF06IGZvcmNlIHR5cGUgcmVmaW5lbWVudCwgd2UgY29tcGFyZSBvZmZzZXRQYXJlbnQgd2l0aCB3aW5kb3cgYWJvdmUsIGJ1dCBGbG93IGRvZXNuJ3QgZGV0ZWN0IGl0XG5cblxuICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudDtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09IHRvcCB8fCAocGxhY2VtZW50ID09PSBsZWZ0IHx8IHBsYWNlbWVudCA9PT0gcmlnaHQpICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWSA9IGJvdHRvbTtcbiAgICAgIHZhciBvZmZzZXRZID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQuaGVpZ2h0IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbaGVpZ2h0UHJvcF07XG4gICAgICB5IC09IG9mZnNldFkgLSBwb3BwZXJSZWN0LmhlaWdodDtcbiAgICAgIHkgKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09IGxlZnQgfHwgKHBsYWNlbWVudCA9PT0gdG9wIHx8IHBsYWNlbWVudCA9PT0gYm90dG9tKSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVggPSByaWdodDtcbiAgICAgIHZhciBvZmZzZXRYID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQud2lkdGggOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFt3aWR0aFByb3BdO1xuICAgICAgeCAtPSBvZmZzZXRYIC0gcG9wcGVyUmVjdC53aWR0aDtcbiAgICAgIHggKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgfSwgYWRhcHRpdmUgJiYgdW5zZXRTaWRlcyk7XG5cbiAgdmFyIF9yZWY0ID0gcm91bmRPZmZzZXRzID09PSB0cnVlID8gcm91bmRPZmZzZXRzQnlEUFIoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjQueDtcbiAgeSA9IF9yZWY0Lnk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDw9IDEgPyBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiIDogXCJ0cmFuc2xhdGUzZChcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4LCAwKVwiLCBfT2JqZWN0JGFzc2lnbikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduMiA9IHt9LCBfT2JqZWN0JGFzc2lnbjJbc2lkZVldID0gaGFzWSA/IHkgKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yW3NpZGVYXSA9IGhhc1ggPyB4ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMi50cmFuc2Zvcm0gPSAnJywgX09iamVjdCRhc3NpZ24yKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdHlsZXMoX3JlZjUpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjUuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjUub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9IG9wdGlvbnMuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZ3B1QWNjZWxlcmF0LFxuICAgICAgX29wdGlvbnMkYWRhcHRpdmUgPSBvcHRpb25zLmFkYXB0aXZlLFxuICAgICAgYWRhcHRpdmUgPSBfb3B0aW9ucyRhZGFwdGl2ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFkYXB0aXZlLFxuICAgICAgX29wdGlvbnMkcm91bmRPZmZzZXRzID0gb3B0aW9ucy5yb3VuZE9mZnNldHMsXG4gICAgICByb3VuZE9mZnNldHMgPSBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyb3VuZE9mZnNldHM7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIHZhciB0cmFuc2l0aW9uUHJvcGVydHkgPSBnZXRDb21wdXRlZFN0eWxlKHN0YXRlLmVsZW1lbnRzLnBvcHBlcikudHJhbnNpdGlvblByb3BlcnR5IHx8ICcnO1xuXG4gICAgaWYgKGFkYXB0aXZlICYmIFsndHJhbnNmb3JtJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLnNvbWUoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gdHJhbnNpdGlvblByb3BlcnR5LmluZGV4T2YocHJvcGVydHkpID49IDA7XG4gICAgfSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogRGV0ZWN0ZWQgQ1NTIHRyYW5zaXRpb25zIG9uIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nJywgJ0NTUyBwcm9wZXJ0aWVzOiBcInRyYW5zZm9ybVwiLCBcInRvcFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwibGVmdFwiLicsICdcXG5cXG4nLCAnRGlzYWJsZSB0aGUgXCJjb21wdXRlU3R5bGVzXCIgbW9kaWZpZXJcXCdzIGBhZGFwdGl2ZWAgb3B0aW9uIHRvIGFsbG93JywgJ2ZvciBzbW9vdGggdHJhbnNpdGlvbnMsIG9yIHJlbW92ZSB0aGVzZSBwcm9wZXJ0aWVzIGZyb20gdGhlIENTUycsICd0cmFuc2l0aW9uIGRlY2xhcmF0aW9uIG9uIHRoZSBwb3BwZXIgZWxlbWVudCBpZiBvbmx5IHRyYW5zaXRpb25pbmcnLCAnb3BhY2l0eSBvciBiYWNrZ3JvdW5kLWNvbG9yIGZvciBleGFtcGxlLicsICdcXG5cXG4nLCAnV2UgcmVjb21tZW5kIHVzaW5nIHRoZSBwb3BwZXIgZWxlbWVudCBhcyBhIHdyYXBwZXIgYXJvdW5kIGFuIGlubmVyJywgJ2VsZW1lbnQgdGhhdCBjYW4gaGF2ZSBhbnkgQ1NTIHByb3BlcnR5IHRyYW5zaXRpb25lZCBmb3IgYW5pbWF0aW9ucy4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSB7XG4gICAgcGxhY2VtZW50OiBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCksXG4gICAgdmFyaWF0aW9uOiBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KSxcbiAgICBwb3BwZXI6IHN0YXRlLmVsZW1lbnRzLnBvcHBlcixcbiAgICBwb3BwZXJSZWN0OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiBncHVBY2NlbGVyYXRpb24sXG4gICAgaXNGaXhlZDogc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJ1xuICB9O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMucG9wcGVyLCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgYWRhcHRpdmU6IGFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3cgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5hcnJvdyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5hcnJvdywgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93LFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBhZGFwdGl2ZTogZmFsc2UsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXBsYWNlbWVudCc6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgZm46IGNvbXB1dGVTdHlsZXMsXG4gIGRhdGE6IHt9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js": /*!*********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***! \*********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qcy5qcyIsIm1hcHBpbmdzIjoiOztBQUFrRCxDQUFDOztBQUVuRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUVBQVM7QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGLCtEQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qcz9hZDZlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgcGFzc2l2ZSA9IHtcbiAgcGFzc2l2ZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgPSBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIGRhdGE6IHt9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js": /*!***********************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***! \***********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) {\n return [];\n }\n\n var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(placement);\n return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement);\n\n var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start;\n var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(mainVariationSide);\n }\n\n var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQW9FO0FBQ1I7QUFDMEI7QUFDOUI7QUFDWTtBQUNBO0FBQ2hCLENBQUM7O0FBRXJEO0FBQ0EsTUFBTSxzRUFBZ0IsZ0JBQWdCLDJDQUFJO0FBQzFDO0FBQ0E7O0FBRUEsMEJBQTBCLDBFQUFvQjtBQUM5QyxVQUFVLG1GQUE2QixnQ0FBZ0MsbUZBQTZCO0FBQ3BHOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzRUFBZ0I7QUFDdEM7QUFDQSxpR0FBaUcsMEVBQW9CO0FBQ3JIO0FBQ0Esc0JBQXNCLHNFQUFnQixnQkFBZ0IsMkNBQUksR0FBRywwRUFBb0I7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQix1QkFBdUI7QUFDekM7O0FBRUEseUJBQXlCLHNFQUFnQjs7QUFFekMsMkJBQTJCLGtFQUFZLGdCQUFnQiw0Q0FBSztBQUM1RCxzQkFBc0IsMENBQUcsRUFBRSw2Q0FBTTtBQUNqQztBQUNBLG1CQUFtQixvRUFBYztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDREQUE0RCw0Q0FBSyxHQUFHLDJDQUFJLHNCQUFzQiw2Q0FBTSxHQUFHLDBDQUFHOztBQUUxRztBQUNBLDBCQUEwQiwwRUFBb0I7QUFDOUM7O0FBRUEsMkJBQTJCLDBFQUFvQjtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0MsUUFBUTtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGLCtEQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanM/ZWNiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/flip.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js": /*!***********************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***! \***********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n\n\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzLmpzIiwibWFwcGluZ3MiOiI7OztBQUF1RDtBQUNDOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVUsMENBQUcsRUFBRSw0Q0FBSyxFQUFFLDZDQUFNLEVBQUUsMkNBQUk7QUFDbEM7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG9FQUFjO0FBQ3hDO0FBQ0EsR0FBRztBQUNILDBCQUEwQixvRUFBYztBQUN4QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7OztBQUdGLCtEQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2hpZGUuanM/MWQ2YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QsIHByZXZlbnRlZE9mZnNldHMpIHtcbiAgaWYgKHByZXZlbnRlZE9mZnNldHMgPT09IHZvaWQgMCkge1xuICAgIHByZXZlbnRlZE9mZnNldHMgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQgLSBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCArIHByZXZlbnRlZE9mZnNldHMueCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0ICsgcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoIC0gcHJldmVudGVkT2Zmc2V0cy54XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gW3RvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdF0uc29tZShmdW5jdGlvbiAoc2lkZSkge1xuICAgIHJldHVybiBvdmVyZmxvd1tzaWRlXSA+PSAwO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGlkZShfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBwcmV2ZW50ZWRPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3c7XG4gIHZhciByZWZlcmVuY2VPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gIH0pO1xuICB2YXIgcG9wcGVyQWx0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gIH0pO1xuICB2YXIgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocmVmZXJlbmNlT3ZlcmZsb3csIHJlZmVyZW5jZVJlY3QpO1xuICB2YXIgcG9wcGVyRXNjYXBlT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHBvcHBlckFsdE92ZXJmbG93LCBwb3BwZXJSZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKTtcbiAgdmFyIGlzUmVmZXJlbmNlSGlkZGVuID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyk7XG4gIHZhciBoYXNQb3BwZXJFc2NhcGVkID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHBvcHBlckVzY2FwZU9mZnNldHMpO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0ge1xuICAgIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0czogcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzLFxuICAgIHBvcHBlckVzY2FwZU9mZnNldHM6IHBvcHBlckVzY2FwZU9mZnNldHMsXG4gICAgaXNSZWZlcmVuY2VIaWRkZW46IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgIGhhc1BvcHBlckVzY2FwZWQ6IGhhc1BvcHBlckVzY2FwZWRcbiAgfTtcbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1yZWZlcmVuY2UtaGlkZGVuJzogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgJ2RhdGEtcG9wcGVyLWVzY2FwZWQnOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnaGlkZScsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J10sXG4gIGZuOiBoaWRlXG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/hide.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/index.js": /*!************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***! \************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"applyStyles\": function() { return /* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */ \"arrow\": function() { return /* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */ \"computeStyles\": function() { return /* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; },\n/* harmony export */ \"eventListeners\": function() { return /* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */ \"flip\": function() { return /* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; },\n/* harmony export */ \"hide\": function() { return /* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */ \"offset\": function() { return /* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; },\n/* harmony export */ \"popperOffsets\": function() { return /* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; },\n/* harmony export */ \"preventOverflow\": function() { return /* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\");\n/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ \"./node_modules/@popperjs/core/lib/modifiers/arrow.js\");\n/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\");\n/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ \"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\");\n/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ \"./node_modules/@popperjs/core/lib/modifiers/flip.js\");\n/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ \"./node_modules/@popperjs/core/lib/modifiers/hide.js\");\n/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ \"./node_modules/@popperjs/core/lib/modifiers/offset.js\");\n/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ \"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\");\n/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ \"./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js\");\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEQ7QUFDWjtBQUNnQjtBQUNFO0FBQ3BCO0FBQ0E7QUFDSTtBQUNjIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9pbmRleC5qcz8xZTc2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgYXBwbHlTdHlsZXMgfSBmcm9tIFwiLi9hcHBseVN0eWxlcy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcnJvdyB9IGZyb20gXCIuL2Fycm93LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbXB1dGVTdHlsZXMgfSBmcm9tIFwiLi9jb21wdXRlU3R5bGVzLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGV2ZW50TGlzdGVuZXJzIH0gZnJvbSBcIi4vZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmxpcCB9IGZyb20gXCIuL2ZsaXAuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaGlkZSB9IGZyb20gXCIuL2hpZGUuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb2Zmc2V0IH0gZnJvbSBcIi4vb2Zmc2V0LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBvcHBlck9mZnNldHMgfSBmcm9tIFwiLi9wb3BwZXJPZmZzZXRzLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZXZlbnRPdmVyZmxvdyB9IGZyb20gXCIuL3ByZXZlbnRPdmVyZmxvdy5qc1wiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/index.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js": /*!*************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***! \*************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"distanceAndSkiddingToXY\": function() { return /* binding */ distanceAndSkiddingToXY; }\n/* harmony export */ });\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement);\n var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTREO0FBQ0QsQ0FBQzs7QUFFckQ7QUFDUCxzQkFBc0Isc0VBQWdCO0FBQ3RDLHdCQUF3QiwyQ0FBSSxFQUFFLDBDQUFHOztBQUVqQyxtRUFBbUU7QUFDbkU7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSwyQ0FBSSxFQUFFLDRDQUFLO0FBQ3JCO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3REFBaUI7QUFDOUI7QUFDQTtBQUNBLEdBQUcsSUFBSTtBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7OztBQUdGLCtEQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcz85ODM1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBwbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgcmVjdHMsIG9mZnNldCkge1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgdmFyIGludmVydERpc3RhbmNlID0gW2xlZnQsIHRvcF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwID8gLTEgOiAxO1xuXG4gIHZhciBfcmVmID0gdHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJyA/IG9mZnNldChPYmplY3QuYXNzaWduKHt9LCByZWN0cywge1xuICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gIH0pKSA6IG9mZnNldCxcbiAgICAgIHNraWRkaW5nID0gX3JlZlswXSxcbiAgICAgIGRpc3RhbmNlID0gX3JlZlsxXTtcblxuICBza2lkZGluZyA9IHNraWRkaW5nIHx8IDA7XG4gIGRpc3RhbmNlID0gKGRpc3RhbmNlIHx8IDApICogaW52ZXJ0RGlzdGFuY2U7XG4gIHJldHVybiBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IHtcbiAgICB4OiBkaXN0YW5jZSxcbiAgICB5OiBza2lkZGluZ1xuICB9IDoge1xuICAgIHg6IHNraWRkaW5nLFxuICAgIHk6IGRpc3RhbmNlXG4gIH07XG59XG5cbmZ1bmN0aW9uIG9mZnNldChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYyLm5hbWU7XG4gIHZhciBfb3B0aW9ucyRvZmZzZXQgPSBvcHRpb25zLm9mZnNldCxcbiAgICAgIG9mZnNldCA9IF9vcHRpb25zJG9mZnNldCA9PT0gdm9pZCAwID8gWzAsIDBdIDogX29wdGlvbnMkb2Zmc2V0O1xuICB2YXIgZGF0YSA9IHBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkocGxhY2VtZW50LCBzdGF0ZS5yZWN0cywgb2Zmc2V0KTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHZhciBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQgPSBkYXRhW3N0YXRlLnBsYWNlbWVudF0sXG4gICAgICB4ID0gX2RhdGEkc3RhdGUkcGxhY2VtZW50LngsXG4gICAgICB5ID0gX2RhdGEkc3RhdGUkcGxhY2VtZW50Lnk7XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnggKz0geDtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueSArPSB5O1xuICB9XG5cbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGRhdGE7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdvZmZzZXQnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIGZuOiBvZmZzZXRcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/offset.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js": /*!********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***! \********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ \"./node_modules/@popperjs/core/lib/utils/computeOffsets.js\");\n\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXdEOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixvRUFBYztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRiwrREFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzPzEzNGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbXB1dGVPZmZzZXRzIGZyb20gXCIuLi91dGlscy9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuXG5mdW5jdGlvbiBwb3BwZXJPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIC8vIE9mZnNldHMgYXJlIHRoZSBhY3R1YWwgcG9zaXRpb24gdGhlIHBvcHBlciBuZWVkcyB0byBoYXZlIHRvIGJlXG4gIC8vIHByb3Blcmx5IHBvc2l0aW9uZWQgbmVhciBpdHMgcmVmZXJlbmNlIGVsZW1lbnRcbiAgLy8gVGhpcyBpcyB0aGUgbW9zdCBiYXNpYyBwbGFjZW1lbnQsIGFuZCB3aWxsIGJlIGFkanVzdGVkIGJ5XG4gIC8vIHRoZSBtb2RpZmllcnMgaW4gdGhlIG5leHQgc3RlcFxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogc3RhdGUucmVjdHMucmVmZXJlbmNlLFxuICAgIGVsZW1lbnQ6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3BvcHBlck9mZnNldHMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3JlYWQnLFxuICBmbjogcG9wcGVyT2Zmc2V0cyxcbiAgZGF0YToge31cbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js": /*!**********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***! \**********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\");\n/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ \"./node_modules/@popperjs/core/lib/utils/getAltAxis.js\");\n/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ \"./node_modules/@popperjs/core/lib/utils/within.js\");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ \"./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state.placement);\n var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(basePlacement);\n var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;\n var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;\n\n var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQThEO0FBQ0Y7QUFDZ0I7QUFDNUI7QUFDWTtBQUNGO0FBQ0k7QUFDTjtBQUNKO0FBQ1k7QUFDRTs7QUFFbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0VBQWM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsc0JBQXNCLHNFQUFnQjtBQUN0QyxrQkFBa0Isa0VBQVk7QUFDOUI7QUFDQSxpQkFBaUIsOEVBQXdCO0FBQ3pDLGdCQUFnQixnRUFBVTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSw0RkFBNEY7QUFDNUY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQ0FBc0MsMENBQUcsR0FBRywyQ0FBSTtBQUNoRCxxQ0FBcUMsNkNBQU0sR0FBRyw0Q0FBSztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDRDQUFLO0FBQ3BDLCtCQUErQiw0Q0FBSywyQ0FBMkM7QUFDL0U7O0FBRUE7QUFDQSw2Q0FBNkMsdUVBQWE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EseUhBQXlILHdFQUFrQjtBQUMzSTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsd0RBQU07QUFDekI7QUFDQTtBQUNBLG9EQUFvRCx5RUFBZTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix3REFBTSxVQUFVLG9EQUFPLHlDQUF5QyxvREFBTztBQUNqRztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx1Q0FBdUMsMENBQUcsR0FBRywyQ0FBSTs7QUFFakQsc0NBQXNDLDZDQUFNLEdBQUcsNENBQUs7O0FBRXBEOztBQUVBOztBQUVBOztBQUVBOztBQUVBLHdCQUF3QiwwQ0FBRyxFQUFFLDJDQUFJOztBQUVqQzs7QUFFQTs7QUFFQTs7QUFFQSxvREFBb0QsZ0VBQWMsb0NBQW9DLHdEQUFNOztBQUU1RztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRiwrREFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanM/OTQzNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHN0YXJ0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QWx0QXhpcyBmcm9tIFwiLi4vdXRpbHMvZ2V0QWx0QXhpcy5qc1wiO1xuaW1wb3J0IHsgd2l0aGluLCB3aXRoaW5NYXhDbGFtcCB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuLi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmltcG9ydCB7IG1pbiBhcyBtYXRoTWluLCBtYXggYXMgbWF0aE1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIHByZXZlbnRPdmVyZmxvdyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIF9vcHRpb25zJHRldGhlciA9IG9wdGlvbnMudGV0aGVyLFxuICAgICAgdGV0aGVyID0gX29wdGlvbnMkdGV0aGVyID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkdGV0aGVyLFxuICAgICAgX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID0gb3B0aW9ucy50ZXRoZXJPZmZzZXQsXG4gICAgICB0ZXRoZXJPZmZzZXQgPSBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQ7XG4gIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5XG4gIH0pO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gIXZhcmlhdGlvbjtcbiAgdmFyIG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgYWx0QXhpcyA9IGdldEFsdEF4aXMobWFpbkF4aXMpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgdGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gdGV0aGVyT2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogdGV0aGVyT2Zmc2V0O1xuICB2YXIgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldFZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogdGV0aGVyT2Zmc2V0VmFsdWUsXG4gICAgYWx0QXhpczogdGV0aGVyT2Zmc2V0VmFsdWVcbiAgfSA6IE9iamVjdC5hc3NpZ24oe1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGFsdEF4aXM6IDBcbiAgfSwgdGV0aGVyT2Zmc2V0VmFsdWUpO1xuICB2YXIgb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0ID8gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXRbc3RhdGUucGxhY2VtZW50XSA6IG51bGw7XG4gIHZhciBkYXRhID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmICghcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDtcblxuICAgIHZhciBtYWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICAgIHZhciBhbHRTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgIHZhciBvZmZzZXQgPSBwb3BwZXJPZmZzZXRzW21haW5BeGlzXTtcbiAgICB2YXIgbWluID0gb2Zmc2V0ICsgb3ZlcmZsb3dbbWFpblNpZGVdO1xuICAgIHZhciBtYXggPSBvZmZzZXQgLSBvdmVyZmxvd1thbHRTaWRlXTtcbiAgICB2YXIgYWRkaXRpdmUgPSB0ZXRoZXIgPyAtcG9wcGVyUmVjdFtsZW5dIC8gMiA6IDA7XG4gICAgdmFyIG1pbkxlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gOiBwb3BwZXJSZWN0W2xlbl07XG4gICAgdmFyIG1heExlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyAtcG9wcGVyUmVjdFtsZW5dIDogLXJlZmVyZW5jZVJlY3RbbGVuXTsgLy8gV2UgbmVlZCB0byBpbmNsdWRlIHRoZSBhcnJvdyBpbiB0aGUgY2FsY3VsYXRpb24gc28gdGhlIGFycm93IGRvZXNuJ3QgZ29cbiAgICAvLyBvdXRzaWRlIHRoZSByZWZlcmVuY2UgYm91bmRzXG5cbiAgICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gICAgdmFyIGFycm93UmVjdCA9IHRldGhlciAmJiBhcnJvd0VsZW1lbnQgPyBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCkgOiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdmFyIGFycm93UGFkZGluZ09iamVjdCA9IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXSA/IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXS5wYWRkaW5nIDogZ2V0RnJlc2hTaWRlT2JqZWN0KCk7XG4gICAgdmFyIGFycm93UGFkZGluZ01pbiA9IGFycm93UGFkZGluZ09iamVjdFttYWluU2lkZV07XG4gICAgdmFyIGFycm93UGFkZGluZ01heCA9IGFycm93UGFkZGluZ09iamVjdFthbHRTaWRlXTsgLy8gSWYgdGhlIHJlZmVyZW5jZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBhcnJvdyBsZW5ndGgsIHdlIGRvbid0IHdhbnRcbiAgICAvLyB0byBpbmNsdWRlIGl0cyBmdWxsIHNpemUgaW4gdGhlIGNhbGN1bGF0aW9uLiBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsXG4gICAgLy8gYW5kIG5lYXIgdGhlIGVkZ2Ugb2YgYSBib3VuZGFyeSwgdGhlIHBvcHBlciBjYW4gb3ZlcmZsb3cgZXZlbiBpZiB0aGVcbiAgICAvLyByZWZlcmVuY2UgaXMgbm90IG92ZXJmbG93aW5nIGFzIHdlbGwgKGUuZy4gdmlydHVhbCBlbGVtZW50cyB3aXRoIG5vXG4gICAgLy8gd2lkdGggb3IgaGVpZ2h0KVxuXG4gICAgdmFyIGFycm93TGVuID0gd2l0aGluKDAsIHJlZmVyZW5jZVJlY3RbbGVuXSwgYXJyb3dSZWN0W2xlbl0pO1xuICAgIHZhciBtaW5PZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gLyAyIC0gYWRkaXRpdmUgLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1pbkxlbiAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBtYXhPZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyAtcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiArIGFkZGl0aXZlICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtYXhMZW4gKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdyAmJiBnZXRPZmZzZXRQYXJlbnQoc3RhdGUuZWxlbWVudHMuYXJyb3cpO1xuICAgIHZhciBjbGllbnRPZmZzZXQgPSBhcnJvd09mZnNldFBhcmVudCA/IG1haW5BeGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRUb3AgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudExlZnQgfHwgMCA6IDA7XG4gICAgdmFyIG9mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVttYWluQXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgOiAwO1xuICAgIHZhciB0ZXRoZXJNaW4gPSBvZmZzZXQgKyBtaW5PZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlIC0gY2xpZW50T2Zmc2V0O1xuICAgIHZhciB0ZXRoZXJNYXggPSBvZmZzZXQgKyBtYXhPZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlO1xuICAgIHZhciBwcmV2ZW50ZWRPZmZzZXQgPSB3aXRoaW4odGV0aGVyID8gbWF0aE1pbihtaW4sIHRldGhlck1pbikgOiBtaW4sIG9mZnNldCwgdGV0aGVyID8gbWF0aE1heChtYXgsIHRldGhlck1heCkgOiBtYXgpO1xuICAgIHBvcHBlck9mZnNldHNbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0IC0gb2Zmc2V0O1xuICB9XG5cbiAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyO1xuXG4gICAgdmFyIF9tYWluU2lkZSA9IG1haW5BeGlzID09PSAneCcgPyB0b3AgOiBsZWZ0O1xuXG4gICAgdmFyIF9hbHRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGJvdHRvbSA6IHJpZ2h0O1xuXG4gICAgdmFyIF9vZmZzZXQgPSBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdO1xuXG4gICAgdmFyIF9sZW4gPSBhbHRBeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICB2YXIgX21pbiA9IF9vZmZzZXQgKyBvdmVyZmxvd1tfbWFpblNpZGVdO1xuXG4gICAgdmFyIF9tYXggPSBfb2Zmc2V0IC0gb3ZlcmZsb3dbX2FsdFNpZGVdO1xuXG4gICAgdmFyIGlzT3JpZ2luU2lkZSA9IFt0b3AsIGxlZnRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgIT09IC0xO1xuXG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJDIgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW2FsdEF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkMiA6IDA7XG5cbiAgICB2YXIgX3RldGhlck1pbiA9IGlzT3JpZ2luU2lkZSA/IF9taW4gOiBfb2Zmc2V0IC0gcmVmZXJlbmNlUmVjdFtfbGVuXSAtIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzO1xuXG4gICAgdmFyIF90ZXRoZXJNYXggPSBpc09yaWdpblNpZGUgPyBfb2Zmc2V0ICsgcmVmZXJlbmNlUmVjdFtfbGVuXSArIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzIDogX21heDtcblxuICAgIHZhciBfcHJldmVudGVkT2Zmc2V0ID0gdGV0aGVyICYmIGlzT3JpZ2luU2lkZSA/IHdpdGhpbk1heENsYW1wKF90ZXRoZXJNaW4sIF9vZmZzZXQsIF90ZXRoZXJNYXgpIDogd2l0aGluKHRldGhlciA/IF90ZXRoZXJNaW4gOiBfbWluLCBfb2Zmc2V0LCB0ZXRoZXIgPyBfdGV0aGVyTWF4IDogX21heCk7XG5cbiAgICBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldCAtIF9vZmZzZXQ7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBwcmV2ZW50T3ZlcmZsb3csXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J11cbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/popper-lite.js": /*!********************************************************!*\ !*** ./node_modules/@popperjs/core/lib/popper-lite.js ***! \********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createPopper\": function() { return /* binding */ createPopper; },\n/* harmony export */ \"defaultModifiers\": function() { return /* binding */ defaultModifiers; },\n/* harmony export */ \"detectOverflow\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */ \"popperGenerator\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator; }\n/* harmony export */ });\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/createPopper.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ \"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\");\n/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ \"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\");\n/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\");\n/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\");\n\n\n\n\n\nvar defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]];\nvar createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBb0U7QUFDVDtBQUNGO0FBQ0E7QUFDSjtBQUNyRCx3QkFBd0Isb0VBQWMsRUFBRSxtRUFBYSxFQUFFLG1FQUFhLEVBQUUsaUVBQVc7QUFDakYsZ0NBQWdDLGlFQUFlO0FBQy9DO0FBQ0EsQ0FBQyxHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzPzQ1ZDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdyB9IGZyb20gXCIuL2NyZWF0ZVBvcHBlci5qc1wiO1xuaW1wb3J0IGV2ZW50TGlzdGVuZXJzIGZyb20gXCIuL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qc1wiO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSBcIi4vbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanNcIjtcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzXCI7XG5pbXBvcnQgYXBwbHlTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzXCI7XG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IFtldmVudExpc3RlbmVycywgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgYXBwbHlTdHlsZXNdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/popper-lite.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/popper.js": /*!***************************************************!*\ !*** ./node_modules/@popperjs/core/lib/popper.js ***! \***************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"applyStyles\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles; },\n/* harmony export */ \"arrow\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow; },\n/* harmony export */ \"computeStyles\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles; },\n/* harmony export */ \"createPopper\": function() { return /* binding */ createPopper; },\n/* harmony export */ \"createPopperLite\": function() { return /* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper; },\n/* harmony export */ \"defaultModifiers\": function() { return /* binding */ defaultModifiers; },\n/* harmony export */ \"detectOverflow\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; },\n/* harmony export */ \"eventListeners\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners; },\n/* harmony export */ \"flip\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip; },\n/* harmony export */ \"hide\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide; },\n/* harmony export */ \"offset\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset; },\n/* harmony export */ \"popperGenerator\": function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator; },\n/* harmony export */ \"popperOffsets\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets; },\n/* harmony export */ \"preventOverflow\": function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow; }\n/* harmony export */ });\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/createPopper.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ \"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\");\n/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ \"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\");\n/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\");\n/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\");\n/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ \"./node_modules/@popperjs/core/lib/modifiers/offset.js\");\n/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ \"./node_modules/@popperjs/core/lib/modifiers/flip.js\");\n/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ \"./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js\");\n/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ \"./node_modules/@popperjs/core/lib/modifiers/arrow.js\");\n/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ \"./node_modules/@popperjs/core/lib/modifiers/hide.js\");\n/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ \"./node_modules/@popperjs/core/lib/popper-lite.js\");\n/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ \"./node_modules/@popperjs/core/lib/modifiers/index.js\");\n\n\n\n\n\n\n\n\n\n\nvar defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]];\nvar createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBb0U7QUFDVDtBQUNGO0FBQ0E7QUFDSjtBQUNWO0FBQ0o7QUFDc0I7QUFDcEI7QUFDRjtBQUN2Qyx3QkFBd0Isb0VBQWMsRUFBRSxtRUFBYSxFQUFFLG1FQUFhLEVBQUUsaUVBQVcsRUFBRSw0REFBTSxFQUFFLDBEQUFJLEVBQUUscUVBQWUsRUFBRSwyREFBSyxFQUFFLDBEQUFJO0FBQzdILGdDQUFnQyxpRUFBZTtBQUMvQztBQUNBLENBQUMsR0FBRzs7QUFFdUUsQ0FBQzs7QUFFUixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci5qcz8zOWMzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/popper.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js": /*!***********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***! \***********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ computeAutoPlacement; }\n/* harmony export */ });\n/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n\n\n\n\nfunction computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP;\n var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(placement);\n var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) {\n return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(placement) === variation;\n }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (true) {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQTZDO0FBQ2tEO0FBQzlDO0FBQ0k7QUFDdEM7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsaURBQWE7QUFDOUUsa0JBQWtCLDREQUFZO0FBQzlCLGdEQUFnRCwwREFBbUIsR0FBRyxpRUFBMEI7QUFDaEcsV0FBVyw0REFBWTtBQUN2QixHQUFHLElBQUkscURBQWM7QUFDckI7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQSxRQUFRLElBQXFDO0FBQzdDO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBLHFCQUFxQiw4REFBYztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRSxnRUFBZ0I7QUFDdkI7QUFDQSxHQUFHLElBQUk7QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzPzQzY2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHZhcmlhdGlvblBsYWNlbWVudHMsIGJhc2VQbGFjZW1lbnRzLCBwbGFjZW1lbnRzIGFzIGFsbFBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgX29wdGlvbnMkYWxsb3dlZEF1dG9QID0gX29wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gX29wdGlvbnMkYWxsb3dlZEF1dG9QID09PSB2b2lkIDAgPyBhbGxQbGFjZW1lbnRzIDogX29wdGlvbnMkYWxsb3dlZEF1dG9QO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCk7XG4gIHZhciBwbGFjZW1lbnRzID0gdmFyaWF0aW9uID8gZmxpcFZhcmlhdGlvbnMgPyB2YXJpYXRpb25QbGFjZW1lbnRzIDogdmFyaWF0aW9uUGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gdmFyaWF0aW9uO1xuICB9KSA6IGJhc2VQbGFjZW1lbnRzO1xuICB2YXIgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFsbG93ZWRBdXRvUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCkgPj0gMDtcbiAgfSk7XG5cbiAgaWYgKGFsbG93ZWRQbGFjZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFRoZSBgYWxsb3dlZEF1dG9QbGFjZW1lbnRzYCBvcHRpb24gZGlkIG5vdCBhbGxvdyBhbnknLCAncGxhY2VtZW50cy4gRW5zdXJlIHRoZSBgcGxhY2VtZW50YCBvcHRpb24gbWF0Y2hlcyB0aGUgdmFyaWF0aW9uJywgJ29mIHRoZSBhbGxvd2VkIHBsYWNlbWVudHMuJywgJ0ZvciBleGFtcGxlLCBcImF1dG9cIiBjYW5ub3QgYmUgdXNlZCB0byBhbGxvdyBcImJvdHRvbS1zdGFydFwiLicsICdVc2UgXCJhdXRvLXN0YXJ0XCIgaW5zdGVhZC4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXTogRmxvdyBzZWVtcyB0byBoYXZlIHByb2JsZW1zIHdpdGggdHdvIGFycmF5IHVuaW9ucy4uLlxuXG5cbiAgdmFyIG92ZXJmbG93cyA9IGFsbG93ZWRQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pW2dldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KV07XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICByZXR1cm4gT2JqZWN0LmtleXMob3ZlcmZsb3dzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93c1thXSAtIG92ZXJmbG93c1tiXTtcbiAgfSk7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js": /*!*****************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***! \*****************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ computeOffsets; }\n/* harmony export */ });\n/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n\n\n\nfunction computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement) : null;\n var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXFEO0FBQ1I7QUFDd0I7QUFDRjtBQUNwRDtBQUNmO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxnRUFBZ0I7QUFDbEQsOEJBQThCLDREQUFZO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsMENBQUc7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsNkNBQU07QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsNENBQUs7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsMkNBQUk7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsd0VBQXdCOztBQUV6RDtBQUNBOztBQUVBO0FBQ0EsV0FBVyw0Q0FBSztBQUNoQjtBQUNBOztBQUVBLFdBQVcsMENBQUc7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzPzVkN2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4vZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHN0YXJ0LCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHJlZmVyZW5jZSA9IF9yZWYucmVmZXJlbmNlLFxuICAgICAgZWxlbWVudCA9IF9yZWYuZWxlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IHBsYWNlbWVudCA/IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciB2YXJpYXRpb24gPSBwbGFjZW1lbnQgPyBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZWxlbWVudC53aWR0aCAvIDI7XG4gIHZhciBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGVsZW1lbnQuaGVpZ2h0IC8gMjtcbiAgdmFyIG9mZnNldHM7XG5cbiAgc3dpdGNoIChiYXNlUGxhY2VtZW50KSB7XG4gICAgY2FzZSB0b3A6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGVsZW1lbnQuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGJvdHRvbTpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSByaWdodDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGxlZnQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGVsZW1lbnQud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cblxuICB2YXIgbWFpbkF4aXMgPSBiYXNlUGxhY2VtZW50ID8gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpIDogbnVsbDtcblxuICBpZiAobWFpbkF4aXMgIT0gbnVsbCkge1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgc3dpdGNoICh2YXJpYXRpb24pIHtcbiAgICAgIGNhc2Ugc3RhcnQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gLSAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGVuZDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSArIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9mZnNldHM7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/debounce.js": /*!***********************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/debounce.js ***! \***********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ debounce; }\n/* harmony export */ });\nfunction debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RlYm91bmNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanM/YjFlMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWJvdW5jZShmbikge1xuICB2YXIgcGVuZGluZztcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgIHBlbmRpbmcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBwZW5kaW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHJlc29sdmUoZm4oKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBlbmRpbmc7XG4gIH07XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/debounce.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js": /*!*****************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***! \*****************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ detectOverflow; }\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js\");\n/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ \"./node_modules/@popperjs/core/lib/utils/computeOffsets.js\");\n/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ \"./node_modules/@popperjs/core/lib/utils/rectToClientRect.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ \"./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js\");\n/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ \"./node_modules/@popperjs/core/lib/utils/expandToHashMap.js\");\n\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements));\n var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state.elements.reference);\n var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBOEQ7QUFDTTtBQUNNO0FBQ3pCO0FBQ0k7QUFDMEQ7QUFDeEQ7QUFDRTtBQUNOLENBQUM7O0FBRXJDO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxzREFBZTtBQUMvRDtBQUNBLHdEQUF3RCwrQ0FBUTtBQUNoRTtBQUNBLDBEQUEwRCw2Q0FBTTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixrRUFBa0IseUNBQXlDLCtEQUFlLFVBQVUscURBQWM7QUFDeEgsc0NBQXNDLDZDQUFNLEdBQUcsZ0RBQVMsR0FBRyw2Q0FBTTtBQUNqRTtBQUNBO0FBQ0EsMkJBQTJCLHlFQUFlLENBQUMsbUVBQVMsZ0RBQWdELDRFQUFrQjtBQUN0SCw0QkFBNEIsK0VBQXFCO0FBQ2pELHNCQUFzQiw4REFBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCx5QkFBeUIsZ0VBQWdCLGlCQUFpQjtBQUMxRCw2Q0FBNkMsNkNBQU0sMkNBQTJDO0FBQzlGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0MseUJBQXlCLDZDQUFNO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0IsNENBQUssRUFBRSw2Q0FBTTtBQUNuQyxrQkFBa0IsMENBQUcsRUFBRSw2Q0FBTTtBQUM3QjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzP2I2MTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldENsaXBwaW5nUmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGNvbXB1dGVPZmZzZXRzIGZyb20gXCIuL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5pbXBvcnQgcmVjdFRvQ2xpZW50UmVjdCBmcm9tIFwiLi9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBjbGlwcGluZ1BhcmVudHMsIHJlZmVyZW5jZSwgcG9wcGVyLCBib3R0b20sIHRvcCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB2aWV3cG9ydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi9leHBhbmRUb0hhc2hNYXAuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIF9vcHRpb25zJHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zJHBsYWNlbWVudCA9PT0gdm9pZCAwID8gc3RhdGUucGxhY2VtZW50IDogX29wdGlvbnMkcGxhY2VtZW50LFxuICAgICAgX29wdGlvbnMkc3RyYXRlZ3kgPSBfb3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIHN0cmF0ZWd5ID0gX29wdGlvbnMkc3RyYXRlZ3kgPT09IHZvaWQgMCA/IHN0YXRlLnN0cmF0ZWd5IDogX29wdGlvbnMkc3RyYXRlZ3ksXG4gICAgICBfb3B0aW9ucyRib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucyRib3VuZGFyeSA9PT0gdm9pZCAwID8gY2xpcHBpbmdQYXJlbnRzIDogX29wdGlvbnMkYm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRyb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucyRyb290Qm91bmRhcnkgPT09IHZvaWQgMCA/IHZpZXdwb3J0IDogX29wdGlvbnMkcm9vdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZWxlbWVudENvbnRlID0gX29wdGlvbnMuZWxlbWVudENvbnRleHQsXG4gICAgICBlbGVtZW50Q29udGV4dCA9IF9vcHRpb25zJGVsZW1lbnRDb250ZSA9PT0gdm9pZCAwID8gcG9wcGVyIDogX29wdGlvbnMkZWxlbWVudENvbnRlLFxuICAgICAgX29wdGlvbnMkYWx0Qm91bmRhcnkgPSBfb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMkYWx0Qm91bmRhcnkgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucyRwYWRkaW5nID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkcGFkZGluZztcbiAgdmFyIHBhZGRpbmdPYmplY3QgPSBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xuICB2YXIgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyByZWZlcmVuY2UgOiBwb3BwZXI7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgdmFyIGNsaXBwaW5nQ2xpZW50UmVjdCA9IGdldENsaXBwaW5nUmVjdChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCBnZXREb2N1bWVudEVsZW1lbnQoc3RhdGUuZWxlbWVudHMucG9wcGVyKSwgYm91bmRhcnksIHJvb3RCb3VuZGFyeSwgc3RyYXRlZ3kpO1xuICB2YXIgcmVmZXJlbmNlQ2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChzdGF0ZS5lbGVtZW50cy5yZWZlcmVuY2UpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUNsaWVudFJlY3QsXG4gICAgZWxlbWVudDogcG9wcGVyUmVjdCxcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KTtcbiAgdmFyIHBvcHBlckNsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KE9iamVjdC5hc3NpZ24oe30sIHBvcHBlclJlY3QsIHBvcHBlck9mZnNldHMpKTtcbiAgdmFyIGVsZW1lbnRDbGllbnRSZWN0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHBvcHBlckNsaWVudFJlY3QgOiByZWZlcmVuY2VDbGllbnRSZWN0OyAvLyBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyByZWN0XG4gIC8vIDAgb3IgbmVnYXRpdmUgPSB3aXRoaW4gdGhlIGNsaXBwaW5nIHJlY3RcblxuICB2YXIgb3ZlcmZsb3dPZmZzZXRzID0ge1xuICAgIHRvcDogY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wLFxuICAgIGJvdHRvbTogZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tLFxuICAgIGxlZnQ6IGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCxcbiAgICByaWdodDogZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0XG4gIH07XG4gIHZhciBvZmZzZXREYXRhID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQ7IC8vIE9mZnNldHMgY2FuIGJlIGFwcGxpZWQgb25seSB0byB0aGUgcG9wcGVyIGVsZW1lbnRcblxuICBpZiAoZWxlbWVudENvbnRleHQgPT09IHBvcHBlciAmJiBvZmZzZXREYXRhKSB7XG4gICAgdmFyIG9mZnNldCA9IG9mZnNldERhdGFbcGxhY2VtZW50XTtcbiAgICBPYmplY3Qua2V5cyhvdmVyZmxvd09mZnNldHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIG11bHRpcGx5ID0gW3JpZ2h0LCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gMSA6IC0xO1xuICAgICAgdmFyIGF4aXMgPSBbdG9wLCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gJ3knIDogJ3gnO1xuICAgICAgb3ZlcmZsb3dPZmZzZXRzW2tleV0gKz0gb2Zmc2V0W2F4aXNdICogbXVsdGlwbHk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gb3ZlcmZsb3dPZmZzZXRzO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js": /*!******************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***! \******************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ expandToHashMap; }\n/* harmony export */ });\nfunction expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUCIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanM/OTg1MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/format.js": /*!*********************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/format.js ***! \*********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ format; }\n/* harmony export */ });\nfunction format(str) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return [].concat(args).reduce(function (p, c) {\n return p.replace(/%s/, c);\n }, str);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2Zvcm1hdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZix5RkFBeUYsYUFBYTtBQUN0RztBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZm9ybWF0LmpzP2Y1M2UiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0KHN0cikge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gW10uY29uY2F0KGFyZ3MpLnJlZHVjZShmdW5jdGlvbiAocCwgYykge1xuICAgIHJldHVybiBwLnJlcGxhY2UoLyVzLywgYyk7XG4gIH0sIHN0cik7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/format.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js": /*!*************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***! \*************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getAltAxis; }\n/* harmony export */ });\nfunction getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRBbHRBeGlzLmpzP2YyZTAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QWx0QXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js": /*!*******************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***! \*******************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getBasePlacement; }\n/* harmony export */ });\n\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFtQztBQUNwQjtBQUNmO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcz9iNTBlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js": /*!*********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***! \*********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getFreshSideObject; }\n/* harmony export */ });\nfunction getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanM/MzVmNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js": /*!***************************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***! \***************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getMainAxisFromPlacement; }\n/* harmony export */ });\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcz9hZDlkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js": /*!***********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***! \***********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getOppositePlacement; }\n/* harmony export */ });\nvar hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanM/NTIzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzaCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js": /*!********************************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***! \********************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getOppositeVariationPlacement; }\n/* harmony export */ });\nvar hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qcz81MDBiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js": /*!***************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***! \***************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getVariation; }\n/* harmony export */ });\nfunction getVariation(placement) {\n return placement.split('-')[1];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldFZhcmlhdGlvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldFZhcmlhdGlvbi5qcz8zZDhkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/getVariation.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/math.js": /*!*******************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/math.js ***! \*******************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"max\": function() { return /* binding */ max; },\n/* harmony export */ \"min\": function() { return /* binding */ min; },\n/* harmony export */ \"round\": function() { return /* binding */ round; }\n/* harmony export */ });\nvar max = Math.max;\nvar min = Math.min;\nvar round = Math.round;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU87QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanM/ODRjNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgcm91bmQgPSBNYXRoLnJvdW5kOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/math.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js": /*!**************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***! \**************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ mergeByName; }\n/* harmony export */ });\nfunction mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixLQUFLO0FBQ0w7QUFDQSxHQUFHLElBQUksR0FBRzs7QUFFVjtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzPzJhMzUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/mergeByName.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js": /*!*********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***! \*********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ mergePaddingObject; }\n/* harmony export */ });\n/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ \"./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js\");\n\nfunction mergePaddingObject(paddingObject) {\n return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(), paddingObject);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF5RDtBQUMxQztBQUNmLHlCQUF5QixFQUFFLGtFQUFrQjtBQUM3QyIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanM/ZDM5YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VQYWRkaW5nT2JqZWN0KHBhZGRpbmdPYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGdldEZyZXNoU2lkZU9iamVjdCgpLCBwYWRkaW5nT2JqZWN0KTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js": /*!*****************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***! \*****************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ orderModifiers; }\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nfunction orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZDLENBQUM7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRWU7QUFDZjtBQUNBLDJDQUEyQzs7QUFFM0MsU0FBUyw0REFBcUI7QUFDOUI7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanM/YjllNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js": /*!*******************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***! \*******************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ rectToClientRect; }\n/* harmony export */ });\nfunction rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2YseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanM/N2JjZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlY3QsIHtcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgdG9wOiByZWN0LnksXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9KTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/uniqueBy.js": /*!***********************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/uniqueBy.js ***! \***********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ uniqueBy; }\n/* harmony export */ });\nfunction uniqueBy(arr, fn) {\n var identifiers = new Set();\n return arr.filter(function (item) {\n var identifier = fn(item);\n\n if (!identifiers.has(identifier)) {\n identifiers.add(identifier);\n return true;\n }\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VuaXF1ZUJ5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy91bmlxdWVCeS5qcz82MDE0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaXF1ZUJ5KGFyciwgZm4pIHtcbiAgdmFyIGlkZW50aWZpZXJzID0gbmV3IFNldCgpO1xuICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpZGVudGlmaWVyID0gZm4oaXRlbSk7XG5cbiAgICBpZiAoIWlkZW50aWZpZXJzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgaWRlbnRpZmllcnMuYWRkKGlkZW50aWZpZXIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/uniqueBy.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/userAgent.js": /*!************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/userAgent.js ***! \************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getUAString; }\n/* harmony export */ });\nfunction getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VzZXJBZ2VudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy91c2VyQWdlbnQuanM/MTJkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVQVN0cmluZygpIHtcbiAgdmFyIHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuXG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEuYnJhbmRzKSB7XG4gICAgcmV0dXJuIHVhRGF0YS5icmFuZHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5icmFuZCArIFwiL1wiICsgaXRlbS52ZXJzaW9uO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/userAgent.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/validateModifiers.js": /*!********************************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/validateModifiers.js ***! \********************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ validateModifiers; }\n/* harmony export */ });\n/* harmony import */ var _format_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./format.js */ \"./node_modules/@popperjs/core/lib/utils/format.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n\nvar INVALID_MODIFIER_ERROR = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nvar MISSING_DEPENDENCY_ERROR = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nvar VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];\nfunction validateModifiers(modifiers) {\n modifiers.forEach(function (modifier) {\n [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`\n .filter(function (value, index, self) {\n return self.indexOf(value) === index;\n }).forEach(function (key) {\n switch (key) {\n case 'name':\n if (typeof modifier.name !== 'string') {\n console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, String(modifier.name), '\"name\"', '\"string\"', \"\\\"\" + String(modifier.name) + \"\\\"\"));\n }\n\n break;\n\n case 'enabled':\n if (typeof modifier.enabled !== 'boolean') {\n console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"enabled\"', '\"boolean\"', \"\\\"\" + String(modifier.enabled) + \"\\\"\"));\n }\n\n break;\n\n case 'phase':\n if (_enums_js__WEBPACK_IMPORTED_MODULE_1__.modifierPhases.indexOf(modifier.phase) < 0) {\n console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"phase\"', \"either \" + _enums_js__WEBPACK_IMPORTED_MODULE_1__.modifierPhases.join(', '), \"\\\"\" + String(modifier.phase) + \"\\\"\"));\n }\n\n break;\n\n case 'fn':\n if (typeof modifier.fn !== 'function') {\n console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"fn\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'effect':\n if (modifier.effect != null && typeof modifier.effect !== 'function') {\n console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"effect\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'requires':\n if (modifier.requires != null && !Array.isArray(modifier.requires)) {\n console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"requires\"', '\"array\"', \"\\\"\" + String(modifier.requires) + \"\\\"\"));\n }\n\n break;\n\n case 'requiresIfExists':\n if (!Array.isArray(modifier.requiresIfExists)) {\n console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(INVALID_MODIFIER_ERROR, modifier.name, '\"requiresIfExists\"', '\"array\"', \"\\\"\" + String(modifier.requiresIfExists) + \"\\\"\"));\n }\n\n break;\n\n case 'options':\n case 'data':\n break;\n\n default:\n console.error(\"PopperJS: an invalid property has been provided to the \\\"\" + modifier.name + \"\\\" modifier, valid properties are \" + VALID_PROPERTIES.map(function (s) {\n return \"\\\"\" + s + \"\\\"\";\n }).join(', ') + \"; but \\\"\" + key + \"\\\" was provided.\");\n }\n\n modifier.requires && modifier.requires.forEach(function (requirement) {\n if (modifiers.find(function (mod) {\n return mod.name === requirement;\n }) == null) {\n console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));\n }\n });\n });\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFpQztBQUNZO0FBQzdDO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLHNEQUFNO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsc0RBQU07QUFDaEM7O0FBRUE7O0FBRUE7QUFDQSxjQUFjLDZEQUFzQjtBQUNwQywwQkFBMEIsc0RBQU0sK0RBQStELDBEQUFtQjtBQUNsSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCLHNEQUFNO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsc0RBQU07QUFDaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLDBCQUEwQixzREFBTTtBQUNoQzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCLHNEQUFNO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGtCQUFrQjtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsd0JBQXdCLHNEQUFNO0FBQzlCO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdmFsaWRhdGVNb2RpZmllcnMuanM/Nzk1NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9ybWF0IGZyb20gXCIuL2Zvcm1hdC5qc1wiO1xuaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbnZhciBJTlZBTElEX01PRElGSUVSX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHByb3ZpZGVkIGFuIGludmFsaWQgJXMgcHJvcGVydHksIGV4cGVjdGVkICVzIGJ1dCBnb3QgJXMnO1xudmFyIE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiA9ICdQb3BwZXI6IG1vZGlmaWVyIFwiJXNcIiByZXF1aXJlcyBcIiVzXCIsIGJ1dCBcIiVzXCIgbW9kaWZpZXIgaXMgbm90IGF2YWlsYWJsZSc7XG52YXIgVkFMSURfUFJPUEVSVElFUyA9IFsnbmFtZScsICdlbmFibGVkJywgJ3BoYXNlJywgJ2ZuJywgJ2VmZmVjdCcsICdyZXF1aXJlcycsICdvcHRpb25zJ107XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgW10uY29uY2F0KE9iamVjdC5rZXlzKG1vZGlmaWVyKSwgVkFMSURfUFJPUEVSVElFUykgLy8gSUUxMS1jb21wYXRpYmxlIHJlcGxhY2VtZW50IGZvciBgbmV3IFNldChpdGVyYWJsZSlgXG4gICAgLmZpbHRlcihmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBzZWxmKSB7XG4gICAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICBpZiAodHlwZW9mIG1vZGlmaWVyLm5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksICdcIm5hbWVcIicsICdcInN0cmluZ1wiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIubmFtZSkgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuYWJsZWQnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZW5hYmxlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlbmFibGVkXCInLCAnXCJib29sZWFuXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5lbmFibGVkKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncGhhc2UnOlxuICAgICAgICAgIGlmIChtb2RpZmllclBoYXNlcy5pbmRleE9mKG1vZGlmaWVyLnBoYXNlKSA8IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInBoYXNlXCInLCBcImVpdGhlciBcIiArIG1vZGlmaWVyUGhhc2VzLmpvaW4oJywgJyksIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnBoYXNlKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZm4nOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImZuXCInLCAnXCJmdW5jdGlvblwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIuZm4pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZmZlY3QnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5lZmZlY3QgIT0gbnVsbCAmJiB0eXBlb2YgbW9kaWZpZXIuZWZmZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlZmZlY3RcIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzJzpcbiAgICAgICAgICBpZiAobW9kaWZpZXIucmVxdWlyZXMgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlcykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzXCInLCAnXCJhcnJheVwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucmVxdWlyZXMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyZXF1aXJlc0lmRXhpc3RzJzpcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzSWZFeGlzdHNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnb3B0aW9ucyc6XG4gICAgICAgIGNhc2UgJ2RhdGEnOlxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlBvcHBlckpTOiBhbiBpbnZhbGlkIHByb3BlcnR5IGhhcyBiZWVuIHByb3ZpZGVkIHRvIHRoZSBcXFwiXCIgKyBtb2RpZmllci5uYW1lICsgXCJcXFwiIG1vZGlmaWVyLCB2YWxpZCBwcm9wZXJ0aWVzIGFyZSBcIiArIFZBTElEX1BST1BFUlRJRVMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBzICsgXCJcXFwiXCI7XG4gICAgICAgICAgfSkuam9pbignLCAnKSArIFwiOyBidXQgXFxcIlwiICsga2V5ICsgXCJcXFwiIHdhcyBwcm92aWRlZC5cIik7XG4gICAgICB9XG5cbiAgICAgIG1vZGlmaWVyLnJlcXVpcmVzICYmIG1vZGlmaWVyLnJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKHJlcXVpcmVtZW50KSB7XG4gICAgICAgIGlmIChtb2RpZmllcnMuZmluZChmdW5jdGlvbiAobW9kKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZC5uYW1lID09PSByZXF1aXJlbWVudDtcbiAgICAgICAgfSkgPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiwgU3RyaW5nKG1vZGlmaWVyLm5hbWUpLCByZXF1aXJlbWVudCwgcmVxdWlyZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/validateModifiers.js\n"); /***/ }), /***/ "./node_modules/@popperjs/core/lib/utils/within.js": /*!*********************************************************!*\ !*** ./node_modules/@popperjs/core/lib/utils/within.js ***! \*********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"within\": function() { return /* binding */ within; },\n/* harmony export */ \"withinMaxClamp\": function() { return /* binding */ withinMaxClamp; }\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\nfunction within(min, value, max) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max));\n}\nfunction withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3dpdGhpbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMkQ7QUFDcEQ7QUFDUCxTQUFTLDZDQUFPLE1BQU0sNkNBQU87QUFDN0I7QUFDTztBQUNQO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy93aXRoaW4uanM/ZTQzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXggYXMgbWF0aE1heCwgbWluIGFzIG1hdGhNaW4gfSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluKG1pbiwgdmFsdWUsIG1heCkge1xuICByZXR1cm4gbWF0aE1heChtaW4sIG1hdGhNaW4odmFsdWUsIG1heCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbk1heENsYW1wKG1pbiwgdmFsdWUsIG1heCkge1xuICB2YXIgdiA9IHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpO1xuICByZXR1cm4gdiA+IG1heCA/IG1heCA6IHY7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/lib/utils/within.js\n"); /***/ }), /***/ "./js/bootstrap.js": /*!*************************!*\ !*** ./js/bootstrap.js ***! \*************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"bootstrap\": function() { return /* reexport module object */ bootstrap__WEBPACK_IMPORTED_MODULE_0__; }\n/* harmony export */ });\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/bootstrap.esm.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9qcy9ib290c3RyYXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBc0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uL2pzL2Jvb3RzdHJhcC5qcz85NDVmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJvb3RzdHJhcCBmcm9tICdib290c3RyYXAnXHJcblxyXG5leHBvcnQgeyBib290c3RyYXAgfVxyXG4iXSwibmFtZXMiOlsiYm9vdHN0cmFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./js/bootstrap.js\n"); /***/ }), /***/ "./node_modules/bootstrap/dist/js/bootstrap.esm.js": /*!*********************************************************!*\ !*** ./node_modules/bootstrap/dist/js/bootstrap.esm.js ***! \*********************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Alert\": function() { return /* binding */ Alert; },\n/* harmony export */ \"Button\": function() { return /* binding */ Button; },\n/* harmony export */ \"Carousel\": function() { return /* binding */ Carousel; },\n/* harmony export */ \"Collapse\": function() { return /* binding */ Collapse; },\n/* harmony export */ \"Dropdown\": function() { return /* binding */ Dropdown; },\n/* harmony export */ \"Modal\": function() { return /* binding */ Modal; },\n/* harmony export */ \"Offcanvas\": function() { return /* binding */ Offcanvas; },\n/* harmony export */ \"Popover\": function() { return /* binding */ Popover; },\n/* harmony export */ \"ScrollSpy\": function() { return /* binding */ ScrollSpy; },\n/* harmony export */ \"Tab\": function() { return /* binding */ Tab; },\n/* harmony export */ \"Toast\": function() { return /* binding */ Toast; },\n/* harmony export */ \"Tooltip\": function() { return /* binding */ Tooltip; }\n/* harmony export */ });\n/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @popperjs/core */ \"./node_modules/@popperjs/core/lib/index.js\");\n/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @popperjs/core */ \"./node_modules/@popperjs/core/lib/popper.js\");\nvar _KEY_TO_DIRECTION;\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n/*!\n * Bootstrap v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nvar MAX_UID = 1000000;\nvar MILLISECONDS_MULTIPLIER = 1000;\nvar TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n\nvar toType = function toType(object) {\n if (object === null || object === undefined) {\n return \"\".concat(object);\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * Public Util API\n */\n\nvar getUID = function getUID(prefix) {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nvar getSelector = function getSelector(element) {\n var selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n var hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = \"#\".concat(hrefAttribute.split('#')[1]);\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n return selector;\n};\nvar getSelectorFromElement = function getSelectorFromElement(element) {\n var selector = getSelector(element);\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n return null;\n};\nvar getElementFromSelector = function getElementFromSelector(element) {\n var selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n};\nvar getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n var _window$getComputedSt = window.getComputedStyle(element),\n transitionDuration = _window$getComputedSt.transitionDuration,\n transitionDelay = _window$getComputedSt.transitionDelay;\n var floatTransitionDuration = Number.parseFloat(transitionDuration);\n var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nvar triggerTransitionEnd = function triggerTransitionEnd(element) {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nvar isElement = function isElement(object) {\n if (!object || _typeof(object) !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nvar getElement = function getElement(object) {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object);\n }\n return null;\n};\nvar isVisible = function isVisible(element) {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n var elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed\n\n var closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n var summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nvar isDisabled = function isDisabled(element) {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nvar findShadowRoot = function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nvar noop = function noop() {};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n\nvar reflow = function reflow(element) {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nvar getjQuery = function getjQuery() {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nvar DOMContentLoadedCallbacks = [];\nvar onDOMContentLoaded = function onDOMContentLoaded(callback) {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', function () {\n var _iterator = _createForOfIteratorHelper(DOMContentLoadedCallbacks),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _callback = _step.value;\n _callback();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nvar isRTL = function isRTL() {\n return document.documentElement.dir === 'rtl';\n};\nvar defineJQueryPlugin = function defineJQueryPlugin(plugin) {\n onDOMContentLoaded(function () {\n var $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n var name = plugin.NAME;\n var JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = function () {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nvar execute = function execute(callback) {\n if (typeof callback === 'function') {\n callback();\n }\n};\nvar executeAfterTransition = function executeAfterTransition(callback, transitionElement) {\n var waitForTransition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n var durationPadding = 5;\n var emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n var called = false;\n var handler = function handler(_ref) {\n var target = _ref.target;\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(function () {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n\nvar getNextActiveElement = function getNextActiveElement(list, activeElement, shouldGetNext, isCycleAllowed) {\n var listLength = list.length;\n var index = list.indexOf(activeElement); // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nvar stripNameRegex = /\\..*/;\nvar stripUidRegex = /::\\d+$/;\nvar eventRegistry = {}; // Events storage\n\nvar uidEvent = 1;\nvar customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nvar nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && \"\".concat(uid, \"::\").concat(uidEvent++) || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n var uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n var domElements = element.querySelectorAll(selector);\n for (var target = event.target; target && target !== this; target = target.parentNode) {\n var _iterator2 = _createForOfIteratorHelper(domElements),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var domElement = _step2.value;\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n };\n}\nfunction findHandler(events, callable) {\n var delegationSelector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n return Object.values(events).find(function (event) {\n return event.callable === callable && event.delegationSelector === delegationSelector;\n });\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n var isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check\n\n var callable = isDelegated ? delegationFunction : handler || delegationFunction;\n var typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n var _normalizeParameters = normalizeParameters(originalTypeEvent, handler, delegationFunction),\n _normalizeParameters2 = _slicedToArray(_normalizeParameters, 3),\n isDelegated = _normalizeParameters2[0],\n callable = _normalizeParameters2[1],\n typeEvent = _normalizeParameters2[2]; // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n if (originalTypeEvent in customEvents) {\n var wrapFunction = function wrapFunction(fn) {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n var events = getElementEvents(element);\n var handlers = events[typeEvent] || (events[typeEvent] = {});\n var previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n var uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n var fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n var fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n var storeElementEvent = events[typeEvent] || {};\n for (var _i2 = 0, _Object$keys = Object.keys(storeElementEvent); _i2 < _Object$keys.length; _i2++) {\n var handlerKey = _Object$keys[_i2];\n if (handlerKey.includes(namespace)) {\n var event = storeElementEvent[handlerKey];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nvar EventHandler = {\n on: function on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one: function one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off: function off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n var _normalizeParameters3 = normalizeParameters(originalTypeEvent, handler, delegationFunction),\n _normalizeParameters4 = _slicedToArray(_normalizeParameters3, 3),\n isDelegated = _normalizeParameters4[0],\n callable = _normalizeParameters4[1],\n typeEvent = _normalizeParameters4[2];\n var inNamespace = typeEvent !== originalTypeEvent;\n var events = getElementEvents(element);\n var storeElementEvent = events[typeEvent] || {};\n var isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (var _i3 = 0, _Object$keys2 = Object.keys(events); _i3 < _Object$keys2.length; _i3++) {\n var elementEvent = _Object$keys2[_i3];\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (var _i4 = 0, _Object$keys3 = Object.keys(storeElementEvent); _i4 < _Object$keys3.length; _i4++) {\n var keyHandlers = _Object$keys3[_i4];\n var handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n var event = storeElementEvent[keyHandlers];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger: function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n var $ = getjQuery();\n var typeEvent = getTypeEvent(event);\n var inNamespace = event !== typeEvent;\n var jQueryEvent = null;\n var bubbles = true;\n var nativeDispatch = true;\n var defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n var evt = new Event(event, {\n bubbles: bubbles,\n cancelable: true\n });\n evt = hydrateObj(evt, args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta) {\n var _loop = function _loop() {\n var _ref2 = _Object$entries[_i5];\n _ref3 = _slicedToArray(_ref2, 2);\n var key = _ref3[0];\n var value = _ref3[1];\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get: function get() {\n return value;\n }\n });\n }\n };\n for (var _i5 = 0, _Object$entries = Object.entries(meta || {}); _i5 < _Object$entries.length; _i5++) {\n var _ref3;\n _loop();\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\nvar elementMap = new Map();\nvar Data = {\n set: function set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n var instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(\"Bootstrap doesn't allow more than one instance per element. Bound instance: \".concat(Array.from(instanceMap.keys())[0], \".\"));\n return;\n }\n instanceMap.set(key, instance);\n },\n get: function get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove: function remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n var instanceMap = elementMap.get(element);\n instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, function (chr) {\n return \"-\".concat(chr.toLowerCase());\n });\n}\nvar Manipulator = {\n setDataAttribute: function setDataAttribute(element, key, value) {\n element.setAttribute(\"data-bs-\".concat(normalizeDataKey(key)), value);\n },\n removeDataAttribute: function removeDataAttribute(element, key) {\n element.removeAttribute(\"data-bs-\".concat(normalizeDataKey(key)));\n },\n getDataAttributes: function getDataAttributes(element) {\n if (!element) {\n return {};\n }\n var attributes = {};\n var bsKeys = Object.keys(element.dataset).filter(function (key) {\n return key.startsWith('bs') && !key.startsWith('bsConfig');\n });\n var _iterator3 = _createForOfIteratorHelper(bsKeys),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var key = _step3.value;\n var pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return attributes;\n },\n getDataAttribute: function getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(\"data-bs-\".concat(normalizeDataKey(key))));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Class definition\n */\nvar Config = /*#__PURE__*/function () {\n function Config() {\n _classCallCheck(this, Config);\n }\n _createClass(Config, [{\n key: \"_getConfig\",\n value: function _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n }, {\n key: \"_configAfterMerge\",\n value: function _configAfterMerge(config) {\n return config;\n }\n }, {\n key: \"_mergeConfigObj\",\n value: function _mergeConfigObj(config, element) {\n var jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), _typeof(jsonConfig) === 'object' ? jsonConfig : {}), isElement(element) ? Manipulator.getDataAttributes(element) : {}), _typeof(config) === 'object' ? config : {});\n }\n }, {\n key: \"_typeCheckConfig\",\n value: function _typeCheckConfig(config) {\n var configTypes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.constructor.DefaultType;\n for (var _i6 = 0, _Object$keys4 = Object.keys(configTypes); _i6 < _Object$keys4.length; _i6++) {\n var property = _Object$keys4[_i6];\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\"\".concat(this.constructor.NAME.toUpperCase(), \": Option \\\"\").concat(property, \"\\\" provided type \\\"\").concat(valueType, \"\\\" but expected type \\\"\").concat(expectedTypes, \"\\\".\"));\n }\n }\n }\n }], [{\n key: \"Default\",\n get:\n // Getters\n function get() {\n return {};\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return {};\n }\n }, {\n key: \"NAME\",\n get: function get() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n }]);\n return Config;\n}();\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\nvar VERSION = '5.2.3';\n/**\n * Class definition\n */\nvar BaseComponent = /*#__PURE__*/function (_Config) {\n _inherits(BaseComponent, _Config);\n var _super = _createSuper(BaseComponent);\n function BaseComponent(element, config) {\n var _this;\n _classCallCheck(this, BaseComponent);\n _this = _super.call(this);\n element = getElement(element);\n if (!element) {\n return _possibleConstructorReturn(_this);\n }\n _this._element = element;\n _this._config = _this._getConfig(config);\n Data.set(_this._element, _this.constructor.DATA_KEY, _assertThisInitialized(_this));\n return _this;\n } // Public\n _createClass(BaseComponent, [{\n key: \"dispose\",\n value: function dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n var _iterator4 = _createForOfIteratorHelper(Object.getOwnPropertyNames(this)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var propertyName = _step4.value;\n this[propertyName] = null;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }, {\n key: \"_queueCallback\",\n value: function _queueCallback(callback, element) {\n var isAnimated = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n executeAfterTransition(callback, element, isAnimated);\n }\n }, {\n key: \"_getConfig\",\n value: function _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n } // Static\n }], [{\n key: \"getInstance\",\n value: function getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n }, {\n key: \"getOrCreateInstance\",\n value: function getOrCreateInstance(element) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.getInstance(element) || new this(element, _typeof(config) === 'object' ? config : null);\n }\n }, {\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return \"bs.\".concat(this.NAME);\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return \".\".concat(this.DATA_KEY);\n }\n }, {\n key: \"eventName\",\n value: function eventName(name) {\n return \"\".concat(name).concat(this.EVENT_KEY);\n }\n }]);\n return BaseComponent;\n}(Config);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nvar enableDismissTrigger = function enableDismissTrigger(component) {\n var method = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'hide';\n var clickEvent = \"click.dismiss\".concat(component.EVENT_KEY);\n var name = component.NAME;\n EventHandler.on(document, clickEvent, \"[data-bs-dismiss=\\\"\".concat(name, \"\\\"]\"), function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n var target = getElementFromSelector(this) || this.closest(\".\".concat(name));\n var instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$f = 'alert';\nvar DATA_KEY$a = 'bs.alert';\nvar EVENT_KEY$b = \".\".concat(DATA_KEY$a);\nvar EVENT_CLOSE = \"close\".concat(EVENT_KEY$b);\nvar EVENT_CLOSED = \"closed\".concat(EVENT_KEY$b);\nvar CLASS_NAME_FADE$5 = 'fade';\nvar CLASS_NAME_SHOW$8 = 'show';\n/**\n * Class definition\n */\nvar Alert = /*#__PURE__*/function (_BaseComponent) {\n _inherits(Alert, _BaseComponent);\n var _super2 = _createSuper(Alert);\n function Alert() {\n _classCallCheck(this, Alert);\n return _super2.apply(this, arguments);\n }\n _createClass(Alert, [{\n key: \"close\",\n value:\n // Public\n\n function close() {\n var _this2 = this;\n var closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n var isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(function () {\n return _this2._destroyElement();\n }, this._element, isAnimated);\n } // Private\n }, {\n key: \"_destroyElement\",\n value: function _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n } // Static\n }], [{\n key: \"NAME\",\n get:\n // Getters\n function get() {\n return NAME$f;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config](this);\n });\n }\n }]);\n return Alert;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nenableDismissTrigger(Alert, 'close');\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$e = 'button';\nvar DATA_KEY$9 = 'bs.button';\nvar EVENT_KEY$a = \".\".concat(DATA_KEY$9);\nvar DATA_API_KEY$6 = '.data-api';\nvar CLASS_NAME_ACTIVE$3 = 'active';\nvar SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nvar EVENT_CLICK_DATA_API$6 = \"click\".concat(EVENT_KEY$a).concat(DATA_API_KEY$6);\n/**\n * Class definition\n */\nvar Button = /*#__PURE__*/function (_BaseComponent2) {\n _inherits(Button, _BaseComponent2);\n var _super3 = _createSuper(Button);\n function Button() {\n _classCallCheck(this, Button);\n return _super3.apply(this, arguments);\n }\n _createClass(Button, [{\n key: \"toggle\",\n value:\n // Public\n\n function toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n } // Static\n }], [{\n key: \"NAME\",\n get:\n // Getters\n function get() {\n return NAME$e;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n }]);\n return Button;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, function (event) {\n event.preventDefault();\n var button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n var data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar SelectorEngine = {\n find: function find(selector) {\n var _ref4;\n var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n return (_ref4 = []).concat.apply(_ref4, _toConsumableArray(Element.prototype.querySelectorAll.call(element, selector)));\n },\n findOne: function findOne(selector) {\n var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n return Element.prototype.querySelector.call(element, selector);\n },\n children: function children(element, selector) {\n var _ref5;\n return (_ref5 = []).concat.apply(_ref5, _toConsumableArray(element.children)).filter(function (child) {\n return child.matches(selector);\n });\n },\n parents: function parents(element, selector) {\n var parents = [];\n var ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev: function prev(element, selector) {\n var previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next: function next(element, selector) {\n var next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren: function focusableChildren(element) {\n var focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(function (selector) {\n return \"\".concat(selector, \":not([tabindex^=\\\"-\\\"])\");\n }).join(',');\n return this.find(focusables, element).filter(function (el) {\n return !isDisabled(el) && isVisible(el);\n });\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$d = 'swipe';\nvar EVENT_KEY$9 = '.bs.swipe';\nvar EVENT_TOUCHSTART = \"touchstart\".concat(EVENT_KEY$9);\nvar EVENT_TOUCHMOVE = \"touchmove\".concat(EVENT_KEY$9);\nvar EVENT_TOUCHEND = \"touchend\".concat(EVENT_KEY$9);\nvar EVENT_POINTERDOWN = \"pointerdown\".concat(EVENT_KEY$9);\nvar EVENT_POINTERUP = \"pointerup\".concat(EVENT_KEY$9);\nvar POINTER_TYPE_TOUCH = 'touch';\nvar POINTER_TYPE_PEN = 'pen';\nvar CLASS_NAME_POINTER_EVENT = 'pointer-event';\nvar SWIPE_THRESHOLD = 40;\nvar Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nvar DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n/**\n * Class definition\n */\nvar Swipe = /*#__PURE__*/function (_Config2) {\n _inherits(Swipe, _Config2);\n var _super4 = _createSuper(Swipe);\n function Swipe(element, config) {\n var _this3;\n _classCallCheck(this, Swipe);\n _this3 = _super4.call(this);\n _this3._element = element;\n if (!element || !Swipe.isSupported()) {\n return _possibleConstructorReturn(_this3);\n }\n _this3._config = _this3._getConfig(config);\n _this3._deltaX = 0;\n _this3._supportPointerEvents = Boolean(window.PointerEvent);\n _this3._initEvents();\n return _this3;\n } // Getters\n _createClass(Swipe, [{\n key: \"dispose\",\n value:\n // Public\n\n function dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n } // Private\n }, {\n key: \"_start\",\n value: function _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n }, {\n key: \"_end\",\n value: function _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n }, {\n key: \"_move\",\n value: function _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n }, {\n key: \"_handleSwipe\",\n value: function _handleSwipe() {\n var absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n var direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n }, {\n key: \"_initEvents\",\n value: function _initEvents() {\n var _this4 = this;\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {\n return _this4._start(event);\n });\n EventHandler.on(this._element, EVENT_POINTERUP, function (event) {\n return _this4._end(event);\n });\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {\n return _this4._start(event);\n });\n EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {\n return _this4._move(event);\n });\n EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {\n return _this4._end(event);\n });\n }\n }\n }, {\n key: \"_eventIsPointerPenTouch\",\n value: function _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n } // Static\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$c;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$c;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$d;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n }]);\n return Swipe;\n}(Config);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\nvar NAME$c = 'carousel';\nvar DATA_KEY$8 = 'bs.carousel';\nvar EVENT_KEY$8 = \".\".concat(DATA_KEY$8);\nvar DATA_API_KEY$5 = '.data-api';\nvar ARROW_LEFT_KEY$1 = 'ArrowLeft';\nvar ARROW_RIGHT_KEY$1 = 'ArrowRight';\nvar TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nvar ORDER_NEXT = 'next';\nvar ORDER_PREV = 'prev';\nvar DIRECTION_LEFT = 'left';\nvar DIRECTION_RIGHT = 'right';\nvar EVENT_SLIDE = \"slide\".concat(EVENT_KEY$8);\nvar EVENT_SLID = \"slid\".concat(EVENT_KEY$8);\nvar EVENT_KEYDOWN$1 = \"keydown\".concat(EVENT_KEY$8);\nvar EVENT_MOUSEENTER$1 = \"mouseenter\".concat(EVENT_KEY$8);\nvar EVENT_MOUSELEAVE$1 = \"mouseleave\".concat(EVENT_KEY$8);\nvar EVENT_DRAG_START = \"dragstart\".concat(EVENT_KEY$8);\nvar EVENT_LOAD_DATA_API$3 = \"load\".concat(EVENT_KEY$8).concat(DATA_API_KEY$5);\nvar EVENT_CLICK_DATA_API$5 = \"click\".concat(EVENT_KEY$8).concat(DATA_API_KEY$5);\nvar CLASS_NAME_CAROUSEL = 'carousel';\nvar CLASS_NAME_ACTIVE$2 = 'active';\nvar CLASS_NAME_SLIDE = 'slide';\nvar CLASS_NAME_END = 'carousel-item-end';\nvar CLASS_NAME_START = 'carousel-item-start';\nvar CLASS_NAME_NEXT = 'carousel-item-next';\nvar CLASS_NAME_PREV = 'carousel-item-prev';\nvar SELECTOR_ACTIVE = '.active';\nvar SELECTOR_ITEM = '.carousel-item';\nvar SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nvar SELECTOR_ITEM_IMG = '.carousel-item img';\nvar SELECTOR_INDICATORS = '.carousel-indicators';\nvar SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nvar SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nvar KEY_TO_DIRECTION = (_KEY_TO_DIRECTION = {}, _defineProperty(_KEY_TO_DIRECTION, ARROW_LEFT_KEY$1, DIRECTION_RIGHT), _defineProperty(_KEY_TO_DIRECTION, ARROW_RIGHT_KEY$1, DIRECTION_LEFT), _KEY_TO_DIRECTION);\nvar Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nvar DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n/**\n * Class definition\n */\nvar Carousel = /*#__PURE__*/function (_BaseComponent3) {\n _inherits(Carousel, _BaseComponent3);\n var _super5 = _createSuper(Carousel);\n function Carousel(element, config) {\n var _this5;\n _classCallCheck(this, Carousel);\n _this5 = _super5.call(this, element, config);\n _this5._interval = null;\n _this5._activeElement = null;\n _this5._isSliding = false;\n _this5.touchTimeout = null;\n _this5._swipeHelper = null;\n _this5._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this5._element);\n _this5._addEventListeners();\n if (_this5._config.ride === CLASS_NAME_CAROUSEL) {\n _this5.cycle();\n }\n return _this5;\n } // Getters\n _createClass(Carousel, [{\n key: \"next\",\n value:\n // Public\n\n function next() {\n this._slide(ORDER_NEXT);\n }\n }, {\n key: \"nextWhenVisible\",\n value: function nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n }, {\n key: \"prev\",\n value: function prev() {\n this._slide(ORDER_PREV);\n }\n }, {\n key: \"pause\",\n value: function pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n }, {\n key: \"cycle\",\n value: function cycle() {\n var _this6 = this;\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(function () {\n return _this6.nextWhenVisible();\n }, this._config.interval);\n }\n }, {\n key: \"_maybeEnableCycle\",\n value: function _maybeEnableCycle() {\n var _this7 = this;\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, function () {\n return _this7.cycle();\n });\n return;\n }\n this.cycle();\n }\n }, {\n key: \"to\",\n value: function to(index) {\n var _this8 = this;\n var items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, function () {\n return _this8.to(index);\n });\n return;\n }\n var activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n var order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n _get(_getPrototypeOf(Carousel.prototype), \"dispose\", this).call(this);\n } // Private\n }, {\n key: \"_configAfterMerge\",\n value: function _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n }, {\n key: \"_addEventListeners\",\n value: function _addEventListeners() {\n var _this9 = this;\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, function (event) {\n return _this9._keydown(event);\n });\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, function () {\n return _this9.pause();\n });\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, function () {\n return _this9._maybeEnableCycle();\n });\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n }, {\n key: \"_addTouchEventListeners\",\n value: function _addTouchEventListeners() {\n var _this10 = this;\n var _iterator5 = _createForOfIteratorHelper(SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var img = _step5.value;\n EventHandler.on(img, EVENT_DRAG_START, function (event) {\n return event.preventDefault();\n });\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n var endCallBack = function endCallBack() {\n if (_this10._config.pause !== 'hover') {\n return;\n } // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n _this10.pause();\n if (_this10.touchTimeout) {\n clearTimeout(_this10.touchTimeout);\n }\n _this10.touchTimeout = setTimeout(function () {\n return _this10._maybeEnableCycle();\n }, TOUCHEVENT_COMPAT_WAIT + _this10._config.interval);\n };\n var swipeConfig = {\n leftCallback: function leftCallback() {\n return _this10._slide(_this10._directionToOrder(DIRECTION_LEFT));\n },\n rightCallback: function rightCallback() {\n return _this10._slide(_this10._directionToOrder(DIRECTION_RIGHT));\n },\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n }, {\n key: \"_keydown\",\n value: function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n var direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n }, {\n key: \"_getItemIndex\",\n value: function _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n }, {\n key: \"_setActiveIndicatorElement\",\n value: function _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n var activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n var newActiveIndicator = SelectorEngine.findOne(\"[data-bs-slide-to=\\\"\".concat(index, \"\\\"]\"), this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n }, {\n key: \"_updateInterval\",\n value: function _updateInterval() {\n var element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n }, {\n key: \"_slide\",\n value: function _slide(order) {\n var _this11 = this;\n var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (this._isSliding) {\n return;\n }\n var activeElement = this._getActive();\n var isNext = order === ORDER_NEXT;\n var nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n var nextElementIndex = this._getItemIndex(nextElement);\n var triggerEvent = function triggerEvent(eventName) {\n return EventHandler.trigger(_this11._element, eventName, {\n relatedTarget: nextElement,\n direction: _this11._orderToDirection(order),\n from: _this11._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n var slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return;\n }\n var isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n var directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n var orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n var completeCallBack = function completeCallBack() {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n _this11._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n }, {\n key: \"_isAnimated\",\n value: function _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n }, {\n key: \"_getActive\",\n value: function _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n }, {\n key: \"_getItems\",\n value: function _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n }, {\n key: \"_clearInterval\",\n value: function _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n }, {\n key: \"_directionToOrder\",\n value: function _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n }, {\n key: \"_orderToDirection\",\n value: function _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n } // Static\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$b;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$b;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$c;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config]();\n }\n });\n }\n }]);\n return Carousel;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n var target = getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n var carousel = Carousel.getOrCreateInstance(target);\n var slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, function () {\n var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n var _iterator6 = _createForOfIteratorHelper(carousels),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var carousel = _step6.value;\n Carousel.getOrCreateInstance(carousel);\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$b = 'collapse';\nvar DATA_KEY$7 = 'bs.collapse';\nvar EVENT_KEY$7 = \".\".concat(DATA_KEY$7);\nvar DATA_API_KEY$4 = '.data-api';\nvar EVENT_SHOW$6 = \"show\".concat(EVENT_KEY$7);\nvar EVENT_SHOWN$6 = \"shown\".concat(EVENT_KEY$7);\nvar EVENT_HIDE$6 = \"hide\".concat(EVENT_KEY$7);\nvar EVENT_HIDDEN$6 = \"hidden\".concat(EVENT_KEY$7);\nvar EVENT_CLICK_DATA_API$4 = \"click\".concat(EVENT_KEY$7).concat(DATA_API_KEY$4);\nvar CLASS_NAME_SHOW$7 = 'show';\nvar CLASS_NAME_COLLAPSE = 'collapse';\nvar CLASS_NAME_COLLAPSING = 'collapsing';\nvar CLASS_NAME_COLLAPSED = 'collapsed';\nvar CLASS_NAME_DEEPER_CHILDREN = \":scope .\".concat(CLASS_NAME_COLLAPSE, \" .\").concat(CLASS_NAME_COLLAPSE);\nvar CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nvar WIDTH = 'width';\nvar HEIGHT = 'height';\nvar SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nvar SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nvar Default$a = {\n parent: null,\n toggle: true\n};\nvar DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n/**\n * Class definition\n */\nvar Collapse = /*#__PURE__*/function (_BaseComponent4) {\n _inherits(Collapse, _BaseComponent4);\n var _super6 = _createSuper(Collapse);\n function Collapse(element, config) {\n var _this12;\n _classCallCheck(this, Collapse);\n _this12 = _super6.call(this, element, config);\n _this12._isTransitioning = false;\n _this12._triggerArray = [];\n var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n var _iterator7 = _createForOfIteratorHelper(toggleList),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var elem = _step7.value;\n var selector = getSelectorFromElement(elem);\n var filterElement = SelectorEngine.find(selector).filter(function (foundElement) {\n return foundElement === _this12._element;\n });\n if (selector !== null && filterElement.length) {\n _this12._triggerArray.push(elem);\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n _this12._initializeChildren();\n if (!_this12._config.parent) {\n _this12._addAriaAndCollapsedClass(_this12._triggerArray, _this12._isShown());\n }\n if (_this12._config.toggle) {\n _this12.toggle();\n }\n return _this12;\n } // Getters\n _createClass(Collapse, [{\n key: \"toggle\",\n value:\n // Public\n\n function toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n }, {\n key: \"show\",\n value: function show() {\n var _this13 = this;\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n var activeChildren = []; // find active children\n\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(function (element) {\n return element !== _this13._element;\n }).map(function (element) {\n return Collapse.getOrCreateInstance(element, {\n toggle: false\n });\n });\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n var startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n var _iterator8 = _createForOfIteratorHelper(activeChildren),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var activeInstance = _step8.value;\n activeInstance.hide();\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n var dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n var complete = function complete() {\n _this13._isTransitioning = false;\n _this13._element.classList.remove(CLASS_NAME_COLLAPSING);\n _this13._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n _this13._element.style[dimension] = '';\n EventHandler.trigger(_this13._element, EVENT_SHOWN$6);\n };\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\".concat(capitalizedDimension);\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = \"\".concat(this._element[scrollSize], \"px\");\n }\n }, {\n key: \"hide\",\n value: function hide() {\n var _this14 = this;\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n var startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n var dimension = this._getDimension();\n this._element.style[dimension] = \"\".concat(this._element.getBoundingClientRect()[dimension], \"px\");\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n var _iterator9 = _createForOfIteratorHelper(this._triggerArray),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var trigger = _step9.value;\n var element = getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n this._isTransitioning = true;\n var complete = function complete() {\n _this14._isTransitioning = false;\n _this14._element.classList.remove(CLASS_NAME_COLLAPSING);\n _this14._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(_this14._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n }, {\n key: \"_isShown\",\n value: function _isShown() {\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._element;\n return element.classList.contains(CLASS_NAME_SHOW$7);\n } // Private\n }, {\n key: \"_configAfterMerge\",\n value: function _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n config.parent = getElement(config.parent);\n return config;\n }\n }, {\n key: \"_getDimension\",\n value: function _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n }, {\n key: \"_initializeChildren\",\n value: function _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n var children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n var _iterator10 = _createForOfIteratorHelper(children),\n _step10;\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var element = _step10.value;\n var selected = getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n }\n }, {\n key: \"_getFirstLevelChildren\",\n value: function _getFirstLevelChildren(selector) {\n var children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth\n\n return SelectorEngine.find(selector, this._config.parent).filter(function (element) {\n return !children.includes(element);\n });\n }\n }, {\n key: \"_addAriaAndCollapsedClass\",\n value: function _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n var _iterator11 = _createForOfIteratorHelper(triggerArray),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var element = _step11.value;\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n } // Static\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$a;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$a;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$b;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n var _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n var data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config]();\n }\n });\n }\n }]);\n return Collapse;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n var selector = getSelectorFromElement(this);\n var selectorElements = SelectorEngine.find(selector);\n var _iterator12 = _createForOfIteratorHelper(selectorElements),\n _step12;\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var element = _step12.value;\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$a = 'dropdown';\nvar DATA_KEY$6 = 'bs.dropdown';\nvar EVENT_KEY$6 = \".\".concat(DATA_KEY$6);\nvar DATA_API_KEY$3 = '.data-api';\nvar ESCAPE_KEY$2 = 'Escape';\nvar TAB_KEY$1 = 'Tab';\nvar ARROW_UP_KEY$1 = 'ArrowUp';\nvar ARROW_DOWN_KEY$1 = 'ArrowDown';\nvar RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nvar EVENT_HIDE$5 = \"hide\".concat(EVENT_KEY$6);\nvar EVENT_HIDDEN$5 = \"hidden\".concat(EVENT_KEY$6);\nvar EVENT_SHOW$5 = \"show\".concat(EVENT_KEY$6);\nvar EVENT_SHOWN$5 = \"shown\".concat(EVENT_KEY$6);\nvar EVENT_CLICK_DATA_API$3 = \"click\".concat(EVENT_KEY$6).concat(DATA_API_KEY$3);\nvar EVENT_KEYDOWN_DATA_API = \"keydown\".concat(EVENT_KEY$6).concat(DATA_API_KEY$3);\nvar EVENT_KEYUP_DATA_API = \"keyup\".concat(EVENT_KEY$6).concat(DATA_API_KEY$3);\nvar CLASS_NAME_SHOW$6 = 'show';\nvar CLASS_NAME_DROPUP = 'dropup';\nvar CLASS_NAME_DROPEND = 'dropend';\nvar CLASS_NAME_DROPSTART = 'dropstart';\nvar CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nvar CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nvar SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nvar SELECTOR_DATA_TOGGLE_SHOWN = \"\".concat(SELECTOR_DATA_TOGGLE$3, \".\").concat(CLASS_NAME_SHOW$6);\nvar SELECTOR_MENU = '.dropdown-menu';\nvar SELECTOR_NAVBAR = '.navbar';\nvar SELECTOR_NAVBAR_NAV = '.navbar-nav';\nvar SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nvar PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nvar PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nvar PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nvar PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nvar PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nvar PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nvar PLACEMENT_TOPCENTER = 'top';\nvar PLACEMENT_BOTTOMCENTER = 'bottom';\nvar Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nvar DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n/**\n * Class definition\n */\nvar Dropdown = /*#__PURE__*/function (_BaseComponent5) {\n _inherits(Dropdown, _BaseComponent5);\n var _super7 = _createSuper(Dropdown);\n function Dropdown(element, config) {\n var _this15;\n _classCallCheck(this, Dropdown);\n _this15 = _super7.call(this, element, config);\n _this15._popper = null;\n _this15._parent = _this15._element.parentNode; // dropdown wrapper\n // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n _this15._menu = SelectorEngine.next(_this15._element, SELECTOR_MENU)[0] || SelectorEngine.prev(_this15._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, _this15._parent);\n _this15._inNavbar = _this15._detectNavbar();\n return _this15;\n } // Getters\n _createClass(Dropdown, [{\n key: \"toggle\",\n value:\n // Public\n\n function toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n }, {\n key: \"show\",\n value: function show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper(); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n var _ref6;\n var _iterator13 = _createForOfIteratorHelper((_ref6 = []).concat.apply(_ref6, _toConsumableArray(document.body.children))),\n _step13;\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var element = _step13.value;\n EventHandler.on(element, 'mouseover', noop);\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n }, {\n key: \"hide\",\n value: function hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n var relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n _get(_getPrototypeOf(Dropdown.prototype), \"dispose\", this).call(this);\n }\n }, {\n key: \"update\",\n value: function update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n } // Private\n }, {\n key: \"_completeHide\",\n value: function _completeHide(relatedTarget) {\n var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n var _ref7;\n var _iterator14 = _createForOfIteratorHelper((_ref7 = []).concat.apply(_ref7, _toConsumableArray(document.body.children))),\n _step14;\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var element = _step14.value;\n EventHandler.off(element, 'mouseover', noop);\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n }, {\n key: \"_getConfig\",\n value: function _getConfig(config) {\n config = _get(_getPrototypeOf(Dropdown.prototype), \"_getConfig\", this).call(this, config);\n if (_typeof(config.reference) === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(\"\".concat(NAME$a.toUpperCase(), \": Option \\\"reference\\\" provided type \\\"object\\\" without a required \\\"getBoundingClientRect\\\" method.\"));\n }\n return config;\n }\n }, {\n key: \"_createPopper\",\n value: function _createPopper() {\n if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n var referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (_typeof(this._config.reference) === 'object') {\n referenceElement = this._config.reference;\n }\n var popperConfig = this._getPopperConfig();\n this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(referenceElement, this._menu, popperConfig);\n }\n }, {\n key: \"_isShown\",\n value: function _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n }, {\n key: \"_getPlacement\",\n value: function _getPlacement() {\n var parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n } // We need to trim the value because custom properties can also include spaces\n\n var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n }, {\n key: \"_detectNavbar\",\n value: function _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n }, {\n key: \"_getOffset\",\n value: function _getOffset() {\n var _this16 = this;\n var offset = this._config.offset;\n if (typeof offset === 'string') {\n return offset.split(',').map(function (value) {\n return Number.parseInt(value, 10);\n });\n }\n if (typeof offset === 'function') {\n return function (popperData) {\n return offset(popperData, _this16._element);\n };\n }\n return offset;\n }\n }, {\n key: \"_getPopperConfig\",\n value: function _getPopperConfig() {\n var defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }; // Disable Popper if we have a static display or Dropdown is in Navbar\n\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove\n\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return _objectSpread(_objectSpread({}, defaultBsPopperConfig), typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig);\n }\n }, {\n key: \"_selectMenuItem\",\n value: function _selectMenuItem(_ref8) {\n var key = _ref8.key,\n target = _ref8.target;\n var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(function (element) {\n return isVisible(element);\n });\n if (!items.length) {\n return;\n } // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n } // Static\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$9;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$9;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$a;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config]();\n });\n }\n }, {\n key: \"clearMenus\",\n value: function clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n var openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n var _iterator15 = _createForOfIteratorHelper(openToggles),\n _step15;\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var toggle = _step15.value;\n var context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n var composedPath = event.composedPath();\n var isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n var relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n }\n }, {\n key: \"dataApiKeydownHandler\",\n value: function dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n var isInput = /input|textarea/i.test(event.target.tagName);\n var isEscapeEvent = event.key === ESCAPE_KEY$2;\n var isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n var getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n var instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n }]);\n return Dropdown;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nvar SELECTOR_STICKY_CONTENT = '.sticky-top';\nvar PROPERTY_PADDING = 'padding-right';\nvar PROPERTY_MARGIN = 'margin-right';\n/**\n * Class definition\n */\nvar ScrollBarHelper = /*#__PURE__*/function () {\n function ScrollBarHelper() {\n _classCallCheck(this, ScrollBarHelper);\n this._element = document.body;\n } // Public\n _createClass(ScrollBarHelper, [{\n key: \"getWidth\",\n value: function getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n var documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n }, {\n key: \"hide\",\n value: function hide() {\n var width = this.getWidth();\n this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n this._setElementAttributes(this._element, PROPERTY_PADDING, function (calculatedValue) {\n return calculatedValue + width;\n }); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, function (calculatedValue) {\n return calculatedValue + width;\n });\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, function (calculatedValue) {\n return calculatedValue - width;\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n }, {\n key: \"isOverflowing\",\n value: function isOverflowing() {\n return this.getWidth() > 0;\n } // Private\n }, {\n key: \"_disableOverFlow\",\n value: function _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n }, {\n key: \"_setElementAttributes\",\n value: function _setElementAttributes(selector, styleProperty, callback) {\n var _this17 = this;\n var scrollbarWidth = this.getWidth();\n var manipulationCallBack = function manipulationCallBack(element) {\n if (element !== _this17._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n _this17._saveInitialAttribute(element, styleProperty);\n var calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, \"\".concat(callback(Number.parseFloat(calculatedValue)), \"px\"));\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n }, {\n key: \"_saveInitialAttribute\",\n value: function _saveInitialAttribute(element, styleProperty) {\n var actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n }, {\n key: \"_resetElementAttributes\",\n value: function _resetElementAttributes(selector, styleProperty) {\n var manipulationCallBack = function manipulationCallBack(element) {\n var value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero\n\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n }, {\n key: \"_applyManipulationCallback\",\n value: function _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n var _iterator16 = _createForOfIteratorHelper(SelectorEngine.find(selector, this._element)),\n _step16;\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var sel = _step16.value;\n callBack(sel);\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n }\n }]);\n return ScrollBarHelper;\n}();\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\nvar NAME$9 = 'backdrop';\nvar CLASS_NAME_FADE$4 = 'fade';\nvar CLASS_NAME_SHOW$5 = 'show';\nvar EVENT_MOUSEDOWN = \"mousedown.bs.\".concat(NAME$9);\nvar Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\n\nvar DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n/**\n * Class definition\n */\nvar Backdrop = /*#__PURE__*/function (_Config3) {\n _inherits(Backdrop, _Config3);\n var _super8 = _createSuper(Backdrop);\n function Backdrop(config) {\n var _this18;\n _classCallCheck(this, Backdrop);\n _this18 = _super8.call(this);\n _this18._config = _this18._getConfig(config);\n _this18._isAppended = false;\n _this18._element = null;\n return _this18;\n } // Getters\n _createClass(Backdrop, [{\n key: \"show\",\n value:\n // Public\n\n function show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n var element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(function () {\n execute(callback);\n });\n }\n }, {\n key: \"hide\",\n value: function hide(callback) {\n var _this19 = this;\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(function () {\n _this19.dispose();\n execute(callback);\n });\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n } // Private\n }, {\n key: \"_getElement\",\n value: function _getElement() {\n if (!this._element) {\n var backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n }, {\n key: \"_configAfterMerge\",\n value: function _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n }, {\n key: \"_append\",\n value: function _append() {\n var _this20 = this;\n if (this._isAppended) {\n return;\n }\n var element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, function () {\n execute(_this20._config.clickCallback);\n });\n this._isAppended = true;\n }\n }, {\n key: \"_emulateAnimation\",\n value: function _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$8;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$8;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$9;\n }\n }]);\n return Backdrop;\n}(Config);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\nvar NAME$8 = 'focustrap';\nvar DATA_KEY$5 = 'bs.focustrap';\nvar EVENT_KEY$5 = \".\".concat(DATA_KEY$5);\nvar EVENT_FOCUSIN$2 = \"focusin\".concat(EVENT_KEY$5);\nvar EVENT_KEYDOWN_TAB = \"keydown.tab\".concat(EVENT_KEY$5);\nvar TAB_KEY = 'Tab';\nvar TAB_NAV_FORWARD = 'forward';\nvar TAB_NAV_BACKWARD = 'backward';\nvar Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\n\nvar DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n/**\n * Class definition\n */\nvar FocusTrap = /*#__PURE__*/function (_Config4) {\n _inherits(FocusTrap, _Config4);\n var _super9 = _createSuper(FocusTrap);\n function FocusTrap(config) {\n var _this21;\n _classCallCheck(this, FocusTrap);\n _this21 = _super9.call(this);\n _this21._config = _this21._getConfig(config);\n _this21._isActive = false;\n _this21._lastTabNavDirection = null;\n return _this21;\n } // Getters\n _createClass(FocusTrap, [{\n key: \"activate\",\n value:\n // Public\n\n function activate() {\n var _this22 = this;\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n\n EventHandler.on(document, EVENT_FOCUSIN$2, function (event) {\n return _this22._handleFocusin(event);\n });\n EventHandler.on(document, EVENT_KEYDOWN_TAB, function (event) {\n return _this22._handleKeydown(event);\n });\n this._isActive = true;\n }\n }, {\n key: \"deactivate\",\n value: function deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n } // Private\n }, {\n key: \"_handleFocusin\",\n value: function _handleFocusin(event) {\n var trapElement = this._config.trapElement;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n var elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n }, {\n key: \"_handleKeydown\",\n value: function _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$7;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$8;\n }\n }]);\n return FocusTrap;\n}(Config);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\nvar NAME$7 = 'modal';\nvar DATA_KEY$4 = 'bs.modal';\nvar EVENT_KEY$4 = \".\".concat(DATA_KEY$4);\nvar DATA_API_KEY$2 = '.data-api';\nvar ESCAPE_KEY$1 = 'Escape';\nvar EVENT_HIDE$4 = \"hide\".concat(EVENT_KEY$4);\nvar EVENT_HIDE_PREVENTED$1 = \"hidePrevented\".concat(EVENT_KEY$4);\nvar EVENT_HIDDEN$4 = \"hidden\".concat(EVENT_KEY$4);\nvar EVENT_SHOW$4 = \"show\".concat(EVENT_KEY$4);\nvar EVENT_SHOWN$4 = \"shown\".concat(EVENT_KEY$4);\nvar EVENT_RESIZE$1 = \"resize\".concat(EVENT_KEY$4);\nvar EVENT_CLICK_DISMISS = \"click.dismiss\".concat(EVENT_KEY$4);\nvar EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\".concat(EVENT_KEY$4);\nvar EVENT_KEYDOWN_DISMISS$1 = \"keydown.dismiss\".concat(EVENT_KEY$4);\nvar EVENT_CLICK_DATA_API$2 = \"click\".concat(EVENT_KEY$4).concat(DATA_API_KEY$2);\nvar CLASS_NAME_OPEN = 'modal-open';\nvar CLASS_NAME_FADE$3 = 'fade';\nvar CLASS_NAME_SHOW$4 = 'show';\nvar CLASS_NAME_STATIC = 'modal-static';\nvar OPEN_SELECTOR$1 = '.modal.show';\nvar SELECTOR_DIALOG = '.modal-dialog';\nvar SELECTOR_MODAL_BODY = '.modal-body';\nvar SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nvar Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nvar DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n/**\n * Class definition\n */\nvar Modal = /*#__PURE__*/function (_BaseComponent6) {\n _inherits(Modal, _BaseComponent6);\n var _super10 = _createSuper(Modal);\n function Modal(element, config) {\n var _this23;\n _classCallCheck(this, Modal);\n _this23 = _super10.call(this, element, config);\n _this23._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, _this23._element);\n _this23._backdrop = _this23._initializeBackDrop();\n _this23._focustrap = _this23._initializeFocusTrap();\n _this23._isShown = false;\n _this23._isTransitioning = false;\n _this23._scrollBar = new ScrollBarHelper();\n _this23._addEventListeners();\n return _this23;\n } // Getters\n _createClass(Modal, [{\n key: \"toggle\",\n value:\n // Public\n\n function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n }, {\n key: \"show\",\n value: function show(relatedTarget) {\n var _this24 = this;\n if (this._isShown || this._isTransitioning) {\n return;\n }\n var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget: relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(function () {\n return _this24._showElement(relatedTarget);\n });\n }\n }, {\n key: \"hide\",\n value: function hide() {\n var _this25 = this;\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(function () {\n return _this25._hideModal();\n }, this._element, this._isAnimated());\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n for (var _i7 = 0, _arr2 = [window, this._dialog]; _i7 < _arr2.length; _i7++) {\n var htmlElement = _arr2[_i7];\n EventHandler.off(htmlElement, EVENT_KEY$4);\n }\n this._backdrop.dispose();\n this._focustrap.deactivate();\n _get(_getPrototypeOf(Modal.prototype), \"dispose\", this).call(this);\n }\n }, {\n key: \"handleUpdate\",\n value: function handleUpdate() {\n this._adjustDialog();\n } // Private\n }, {\n key: \"_initializeBackDrop\",\n value: function _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n }, {\n key: \"_initializeFocusTrap\",\n value: function _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n }, {\n key: \"_showElement\",\n value: function _showElement(relatedTarget) {\n var _this26 = this;\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n var transitionComplete = function transitionComplete() {\n if (_this26._config.focus) {\n _this26._focustrap.activate();\n }\n _this26._isTransitioning = false;\n EventHandler.trigger(_this26._element, EVENT_SHOWN$4, {\n relatedTarget: relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n }, {\n key: \"_addEventListeners\",\n value: function _addEventListeners() {\n var _this27 = this;\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, function (event) {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (_this27._config.keyboard) {\n event.preventDefault();\n _this27.hide();\n return;\n }\n _this27._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, function () {\n if (_this27._isShown && !_this27._isTransitioning) {\n _this27._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, function (event) {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(_this27._element, EVENT_CLICK_DISMISS, function (event2) {\n if (_this27._element !== event.target || _this27._element !== event2.target) {\n return;\n }\n if (_this27._config.backdrop === 'static') {\n _this27._triggerBackdropTransition();\n return;\n }\n if (_this27._config.backdrop) {\n _this27.hide();\n }\n });\n });\n }\n }, {\n key: \"_hideModal\",\n value: function _hideModal() {\n var _this28 = this;\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(function () {\n document.body.classList.remove(CLASS_NAME_OPEN);\n _this28._resetAdjustments();\n _this28._scrollBar.reset();\n EventHandler.trigger(_this28._element, EVENT_HIDDEN$4);\n });\n }\n }, {\n key: \"_isAnimated\",\n value: function _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n }, {\n key: \"_triggerBackdropTransition\",\n value: function _triggerBackdropTransition() {\n var _this29 = this;\n var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n var initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed\n\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(function () {\n _this29._element.classList.remove(CLASS_NAME_STATIC);\n _this29._queueCallback(function () {\n _this29._element.style.overflowY = initialOverflowY;\n }, _this29._dialog);\n }, this._dialog);\n this._element.focus();\n }\n /**\n * The following methods are used to handle overflowing modals\n */\n }, {\n key: \"_adjustDialog\",\n value: function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n var scrollbarWidth = this._scrollBar.getWidth();\n var isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n var property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = \"\".concat(scrollbarWidth, \"px\");\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n var _property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[_property] = \"\".concat(scrollbarWidth, \"px\");\n }\n }\n }, {\n key: \"_resetAdjustments\",\n value: function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n } // Static\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$6;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config](relatedTarget);\n });\n }\n }]);\n return Modal;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n var _this30 = this;\n var target = getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, function (showEvent) {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, function () {\n if (isVisible(_this30)) {\n _this30.focus();\n }\n });\n }); // avoid conflict when clicking modal toggler while another one is open\n\n var alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n var data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$6 = 'offcanvas';\nvar DATA_KEY$3 = 'bs.offcanvas';\nvar EVENT_KEY$3 = \".\".concat(DATA_KEY$3);\nvar DATA_API_KEY$1 = '.data-api';\nvar EVENT_LOAD_DATA_API$2 = \"load\".concat(EVENT_KEY$3).concat(DATA_API_KEY$1);\nvar ESCAPE_KEY = 'Escape';\nvar CLASS_NAME_SHOW$3 = 'show';\nvar CLASS_NAME_SHOWING$1 = 'showing';\nvar CLASS_NAME_HIDING = 'hiding';\nvar CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nvar OPEN_SELECTOR = '.offcanvas.show';\nvar EVENT_SHOW$3 = \"show\".concat(EVENT_KEY$3);\nvar EVENT_SHOWN$3 = \"shown\".concat(EVENT_KEY$3);\nvar EVENT_HIDE$3 = \"hide\".concat(EVENT_KEY$3);\nvar EVENT_HIDE_PREVENTED = \"hidePrevented\".concat(EVENT_KEY$3);\nvar EVENT_HIDDEN$3 = \"hidden\".concat(EVENT_KEY$3);\nvar EVENT_RESIZE = \"resize\".concat(EVENT_KEY$3);\nvar EVENT_CLICK_DATA_API$1 = \"click\".concat(EVENT_KEY$3).concat(DATA_API_KEY$1);\nvar EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\".concat(EVENT_KEY$3);\nvar SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nvar Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nvar DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n/**\n * Class definition\n */\nvar Offcanvas = /*#__PURE__*/function (_BaseComponent7) {\n _inherits(Offcanvas, _BaseComponent7);\n var _super11 = _createSuper(Offcanvas);\n function Offcanvas(element, config) {\n var _this31;\n _classCallCheck(this, Offcanvas);\n _this31 = _super11.call(this, element, config);\n _this31._isShown = false;\n _this31._backdrop = _this31._initializeBackDrop();\n _this31._focustrap = _this31._initializeFocusTrap();\n _this31._addEventListeners();\n return _this31;\n } // Getters\n _createClass(Offcanvas, [{\n key: \"toggle\",\n value:\n // Public\n\n function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n }, {\n key: \"show\",\n value: function show(relatedTarget) {\n var _this32 = this;\n if (this._isShown) {\n return;\n }\n var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget: relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n var completeCallBack = function completeCallBack() {\n if (!_this32._config.scroll || _this32._config.backdrop) {\n _this32._focustrap.activate();\n }\n _this32._element.classList.add(CLASS_NAME_SHOW$3);\n _this32._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(_this32._element, EVENT_SHOWN$3, {\n relatedTarget: relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n }, {\n key: \"hide\",\n value: function hide() {\n var _this33 = this;\n if (!this._isShown) {\n return;\n }\n var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n var completeCallback = function completeCallback() {\n _this33._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n _this33._element.removeAttribute('aria-modal');\n _this33._element.removeAttribute('role');\n if (!_this33._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(_this33._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n _get(_getPrototypeOf(Offcanvas.prototype), \"dispose\", this).call(this);\n } // Private\n }, {\n key: \"_initializeBackDrop\",\n value: function _initializeBackDrop() {\n var _this34 = this;\n var clickCallback = function clickCallback() {\n if (_this34._config.backdrop === 'static') {\n EventHandler.trigger(_this34._element, EVENT_HIDE_PREVENTED);\n return;\n }\n _this34.hide();\n }; // 'static' option will be translated to true, and booleans will keep their value\n\n var isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n }, {\n key: \"_initializeFocusTrap\",\n value: function _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n }, {\n key: \"_addEventListeners\",\n value: function _addEventListeners() {\n var _this35 = this;\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (!_this35._config.keyboard) {\n EventHandler.trigger(_this35._element, EVENT_HIDE_PREVENTED);\n return;\n }\n _this35.hide();\n });\n } // Static\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config](this);\n });\n }\n }]);\n return Offcanvas;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n var _this36 = this;\n var target = getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, function () {\n // focus on trigger when it is closed\n if (isVisible(_this36)) {\n _this36.focus();\n }\n }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n var alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n var data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, function () {\n var _iterator17 = _createForOfIteratorHelper(SelectorEngine.find(OPEN_SELECTOR)),\n _step17;\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var selector = _step17.value;\n Offcanvas.getOrCreateInstance(selector).show();\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, function () {\n var _iterator18 = _createForOfIteratorHelper(SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')),\n _step18;\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var element = _step18.value;\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n});\nenableDismissTrigger(Offcanvas);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nvar uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\nvar ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nvar SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nvar DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\nvar allowedAttribute = function allowedAttribute(attribute, allowedAttributeList) {\n var attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n } // Check if a regular expression validates the attribute.\n\n return allowedAttributeList.filter(function (attributeRegex) {\n return attributeRegex instanceof RegExp;\n }).some(function (regex) {\n return regex.test(attributeName);\n });\n};\nvar DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n var _ref9;\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var elements = (_ref9 = []).concat.apply(_ref9, _toConsumableArray(createdDocument.body.querySelectorAll('*')));\n var _iterator19 = _createForOfIteratorHelper(elements),\n _step19;\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var _ref10;\n var element = _step19.value;\n var elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n var attributeList = (_ref10 = []).concat.apply(_ref10, _toConsumableArray(element.attributes));\n var allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n var _iterator20 = _createForOfIteratorHelper(attributeList),\n _step20;\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var attribute = _step20.value;\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n } catch (err) {\n _iterator20.e(err);\n } finally {\n _iterator20.f();\n }\n }\n } catch (err) {\n _iterator19.e(err);\n } finally {\n _iterator19.f();\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$5 = 'TemplateFactory';\nvar Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n};\nvar DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nvar DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n/**\n * Class definition\n */\nvar TemplateFactory = /*#__PURE__*/function (_Config5) {\n _inherits(TemplateFactory, _Config5);\n var _super12 = _createSuper(TemplateFactory);\n function TemplateFactory(config) {\n var _this37;\n _classCallCheck(this, TemplateFactory);\n _this37 = _super12.call(this);\n _this37._config = _this37._getConfig(config);\n return _this37;\n } // Getters\n _createClass(TemplateFactory, [{\n key: \"getContent\",\n value:\n // Public\n\n function getContent() {\n var _this38 = this;\n return Object.values(this._config.content).map(function (config) {\n return _this38._resolvePossibleFunction(config);\n }).filter(Boolean);\n }\n }, {\n key: \"hasContent\",\n value: function hasContent() {\n return this.getContent().length > 0;\n }\n }, {\n key: \"changeContent\",\n value: function changeContent(content) {\n this._checkContent(content);\n this._config.content = _objectSpread(_objectSpread({}, this._config.content), content);\n return this;\n }\n }, {\n key: \"toHtml\",\n value: function toHtml() {\n var templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (var _i8 = 0, _Object$entries2 = Object.entries(this._config.content); _i8 < _Object$entries2.length; _i8++) {\n var _ref13 = _Object$entries2[_i8];\n var _ref12 = _slicedToArray(_ref13, 2);\n var selector = _ref12[0];\n var text = _ref12[1];\n this._setContent(templateWrapper, text, selector);\n }\n var template = templateWrapper.children[0];\n var extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n var _template$classList;\n (_template$classList = template.classList).add.apply(_template$classList, _toConsumableArray(extraClass.split(' ')));\n }\n return template;\n } // Private\n }, {\n key: \"_typeCheckConfig\",\n value: function _typeCheckConfig(config) {\n _get(_getPrototypeOf(TemplateFactory.prototype), \"_typeCheckConfig\", this).call(this, config);\n this._checkContent(config.content);\n }\n }, {\n key: \"_checkContent\",\n value: function _checkContent(arg) {\n for (var _i9 = 0, _Object$entries3 = Object.entries(arg); _i9 < _Object$entries3.length; _i9++) {\n var _ref16 = _Object$entries3[_i9];\n var _ref15 = _slicedToArray(_ref16, 2);\n var selector = _ref15[0];\n var content = _ref15[1];\n _get(_getPrototypeOf(TemplateFactory.prototype), \"_typeCheckConfig\", this).call(this, {\n selector: selector,\n entry: content\n }, DefaultContentType);\n }\n }\n }, {\n key: \"_setContent\",\n value: function _setContent(template, content, selector) {\n var templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n }, {\n key: \"_maybeSanitize\",\n value: function _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n }, {\n key: \"_resolvePossibleFunction\",\n value: function _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg;\n }\n }, {\n key: \"_putElementInTemplate\",\n value: function _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$5;\n }\n }]);\n return TemplateFactory;\n}(Config);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\nvar NAME$4 = 'tooltip';\nvar DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nvar CLASS_NAME_FADE$2 = 'fade';\nvar CLASS_NAME_MODAL = 'modal';\nvar CLASS_NAME_SHOW$2 = 'show';\nvar SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nvar SELECTOR_MODAL = \".\".concat(CLASS_NAME_MODAL);\nvar EVENT_MODAL_HIDE = 'hide.bs.modal';\nvar TRIGGER_HOVER = 'hover';\nvar TRIGGER_FOCUS = 'focus';\nvar TRIGGER_CLICK = 'click';\nvar TRIGGER_MANUAL = 'manual';\nvar EVENT_HIDE$2 = 'hide';\nvar EVENT_HIDDEN$2 = 'hidden';\nvar EVENT_SHOW$2 = 'show';\nvar EVENT_SHOWN$2 = 'shown';\nvar EVENT_INSERTED = 'inserted';\nvar EVENT_CLICK$1 = 'click';\nvar EVENT_FOCUSIN$1 = 'focusin';\nvar EVENT_FOCUSOUT$1 = 'focusout';\nvar EVENT_MOUSEENTER = 'mouseenter';\nvar EVENT_MOUSELEAVE = 'mouseleave';\nvar AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nvar Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus'\n};\nvar DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n/**\n * Class definition\n */\nvar Tooltip = /*#__PURE__*/function (_BaseComponent8) {\n _inherits(Tooltip, _BaseComponent8);\n var _super13 = _createSuper(Tooltip);\n function Tooltip(element, config) {\n var _this39;\n _classCallCheck(this, Tooltip);\n if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n _this39 = _super13.call(this, element, config); // Private\n\n _this39._isEnabled = true;\n _this39._timeout = 0;\n _this39._isHovered = null;\n _this39._activeTrigger = {};\n _this39._popper = null;\n _this39._templateFactory = null;\n _this39._newContent = null; // Protected\n\n _this39.tip = null;\n _this39._setListeners();\n if (!_this39._config.selector) {\n _this39._fixTitle();\n }\n return _this39;\n } // Getters\n _createClass(Tooltip, [{\n key: \"enable\",\n value:\n // Public\n\n function enable() {\n this._isEnabled = true;\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this._isEnabled = false;\n }\n }, {\n key: \"toggleEnabled\",\n value: function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n }, {\n key: \"toggle\",\n value: function toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n _get(_getPrototypeOf(Tooltip.prototype), \"dispose\", this).call(this);\n }\n }, {\n key: \"show\",\n value: function show() {\n var _this40 = this;\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n var showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n var shadowRoot = findShadowRoot(this._element);\n var isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n } // todo v6 remove this OR make it optional\n\n this._disposePopper();\n var tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n var container = this._config.container;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n var _ref17;\n var _iterator21 = _createForOfIteratorHelper((_ref17 = []).concat.apply(_ref17, _toConsumableArray(document.body.children))),\n _step21;\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var element = _step21.value;\n EventHandler.on(element, 'mouseover', noop);\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.f();\n }\n }\n var complete = function complete() {\n EventHandler.trigger(_this40._element, _this40.constructor.eventName(EVENT_SHOWN$2));\n if (_this40._isHovered === false) {\n _this40._leave();\n }\n _this40._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n }, {\n key: \"hide\",\n value: function hide() {\n var _this41 = this;\n if (!this._isShown()) {\n return;\n }\n var hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n var tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n var _ref18;\n var _iterator22 = _createForOfIteratorHelper((_ref18 = []).concat.apply(_ref18, _toConsumableArray(document.body.children))),\n _step22;\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var element = _step22.value;\n EventHandler.off(element, 'mouseover', noop);\n }\n } catch (err) {\n _iterator22.e(err);\n } finally {\n _iterator22.f();\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n var complete = function complete() {\n if (_this41._isWithActiveTrigger()) {\n return;\n }\n if (!_this41._isHovered) {\n _this41._disposePopper();\n }\n _this41._element.removeAttribute('aria-describedby');\n EventHandler.trigger(_this41._element, _this41.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n }, {\n key: \"update\",\n value: function update() {\n if (this._popper) {\n this._popper.update();\n }\n } // Protected\n }, {\n key: \"_isWithContent\",\n value: function _isWithContent() {\n return Boolean(this._getTitle());\n }\n }, {\n key: \"_getTipElement\",\n value: function _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n }, {\n key: \"_createTipElement\",\n value: function _createTipElement(content) {\n var tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6\n\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only\n\n tip.classList.add(\"bs-\".concat(this.constructor.NAME, \"-auto\"));\n var tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n }, {\n key: \"setContent\",\n value: function setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n }, {\n key: \"_getTemplateFactory\",\n value: function _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory(_objectSpread(_objectSpread({}, this._config), {}, {\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content: content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n }));\n }\n return this._templateFactory;\n }\n }, {\n key: \"_getContentForTemplate\",\n value: function _getContentForTemplate() {\n return _defineProperty({}, SELECTOR_TOOLTIP_INNER, this._getTitle());\n }\n }, {\n key: \"_getTitle\",\n value: function _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n } // Private\n }, {\n key: \"_initializeOnDelegatedTarget\",\n value: function _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n }, {\n key: \"_isAnimated\",\n value: function _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n }, {\n key: \"_isShown\",\n value: function _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n }, {\n key: \"_createPopper\",\n value: function _createPopper(tip) {\n var placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n var attachment = AttachmentMap[placement.toUpperCase()];\n return _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n }, {\n key: \"_getOffset\",\n value: function _getOffset() {\n var _this42 = this;\n var offset = this._config.offset;\n if (typeof offset === 'string') {\n return offset.split(',').map(function (value) {\n return Number.parseInt(value, 10);\n });\n }\n if (typeof offset === 'function') {\n return function (popperData) {\n return offset(popperData, _this42._element);\n };\n }\n return offset;\n }\n }, {\n key: \"_resolvePossibleFunction\",\n value: function _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg.call(this._element) : arg;\n }\n }, {\n key: \"_getPopperConfig\",\n value: function _getPopperConfig(attachment) {\n var _this43 = this;\n var defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: \".\".concat(this.constructor.NAME, \"-arrow\")\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: function fn(data) {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n _this43._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return _objectSpread(_objectSpread({}, defaultBsPopperConfig), typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig);\n }\n }, {\n key: \"_setListeners\",\n value: function _setListeners() {\n var _this44 = this;\n var triggers = this._config.trigger.split(' ');\n var _iterator23 = _createForOfIteratorHelper(triggers),\n _step23;\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n var trigger = _step23.value;\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, function (event) {\n var context = _this44._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n var eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, function (event) {\n var context = _this44._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, function (event) {\n var context = _this44._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n } catch (err) {\n _iterator23.e(err);\n } finally {\n _iterator23.f();\n }\n this._hideModalHandler = function () {\n if (_this44._element) {\n _this44.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n }, {\n key: \"_fixTitle\",\n value: function _fixTitle() {\n var title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n\n this._element.removeAttribute('title');\n }\n }, {\n key: \"_enter\",\n value: function _enter() {\n var _this45 = this;\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(function () {\n if (_this45._isHovered) {\n _this45.show();\n }\n }, this._config.delay.show);\n }\n }, {\n key: \"_leave\",\n value: function _leave() {\n var _this46 = this;\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(function () {\n if (!_this46._isHovered) {\n _this46.hide();\n }\n }, this._config.delay.hide);\n }\n }, {\n key: \"_setTimeout\",\n value: function _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n }, {\n key: \"_isWithActiveTrigger\",\n value: function _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n }, {\n key: \"_getConfig\",\n value: function _getConfig(config) {\n var dataAttributes = Manipulator.getDataAttributes(this._element);\n for (var _i10 = 0, _Object$keys5 = Object.keys(dataAttributes); _i10 < _Object$keys5.length; _i10++) {\n var dataAttribute = _Object$keys5[_i10];\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = _objectSpread(_objectSpread({}, dataAttributes), _typeof(config) === 'object' && config ? config : {});\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n }, {\n key: \"_configAfterMerge\",\n value: function _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n }, {\n key: \"_getDelegateConfig\",\n value: function _getDelegateConfig() {\n var config = {};\n for (var key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key];\n }\n }\n config.selector = false;\n config.trigger = 'manual'; // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n\n return config;\n }\n }, {\n key: \"_disposePopper\",\n value: function _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n } // Static\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$3;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$4;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config]();\n });\n }\n }]);\n return Tooltip;\n}(BaseComponent);\n/**\n * jQuery\n */\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$3 = 'popover';\nvar SELECTOR_TITLE = '.popover-header';\nvar SELECTOR_CONTENT = '.popover-body';\nvar Default$2 = _objectSpread(_objectSpread({}, Tooltip.Default), {}, {\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click'\n});\nvar DefaultType$2 = _objectSpread(_objectSpread({}, Tooltip.DefaultType), {}, {\n content: '(null|string|element|function)'\n});\n/**\n * Class definition\n */\nvar Popover = /*#__PURE__*/function (_Tooltip) {\n _inherits(Popover, _Tooltip);\n var _super14 = _createSuper(Popover);\n function Popover() {\n _classCallCheck(this, Popover);\n return _super14.apply(this, arguments);\n }\n _createClass(Popover, [{\n key: \"_isWithContent\",\n value:\n // Overrides\n\n function _isWithContent() {\n return this._getTitle() || this._getContent();\n } // Private\n }, {\n key: \"_getContentForTemplate\",\n value: function _getContentForTemplate() {\n var _ref20;\n return _ref20 = {}, _defineProperty(_ref20, SELECTOR_TITLE, this._getTitle()), _defineProperty(_ref20, SELECTOR_CONTENT, this._getContent()), _ref20;\n }\n }, {\n key: \"_getContent\",\n value: function _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n } // Static\n }], [{\n key: \"Default\",\n get:\n // Getters\n function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$3;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config]();\n });\n }\n }]);\n return Popover;\n}(Tooltip);\n/**\n * jQuery\n */\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$2 = 'scrollspy';\nvar DATA_KEY$2 = 'bs.scrollspy';\nvar EVENT_KEY$2 = \".\".concat(DATA_KEY$2);\nvar DATA_API_KEY = '.data-api';\nvar EVENT_ACTIVATE = \"activate\".concat(EVENT_KEY$2);\nvar EVENT_CLICK = \"click\".concat(EVENT_KEY$2);\nvar EVENT_LOAD_DATA_API$1 = \"load\".concat(EVENT_KEY$2).concat(DATA_API_KEY);\nvar CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nvar CLASS_NAME_ACTIVE$1 = 'active';\nvar SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nvar SELECTOR_TARGET_LINKS = '[href]';\nvar SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nvar SELECTOR_NAV_LINKS = '.nav-link';\nvar SELECTOR_NAV_ITEMS = '.nav-item';\nvar SELECTOR_LIST_ITEMS = '.list-group-item';\nvar SELECTOR_LINK_ITEMS = \"\".concat(SELECTOR_NAV_LINKS, \", \").concat(SELECTOR_NAV_ITEMS, \" > \").concat(SELECTOR_NAV_LINKS, \", \").concat(SELECTOR_LIST_ITEMS);\nvar SELECTOR_DROPDOWN = '.dropdown';\nvar SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nvar Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nvar DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n/**\n * Class definition\n */\nvar ScrollSpy = /*#__PURE__*/function (_BaseComponent9) {\n _inherits(ScrollSpy, _BaseComponent9);\n var _super15 = _createSuper(ScrollSpy);\n function ScrollSpy(element, config) {\n var _this47;\n _classCallCheck(this, ScrollSpy);\n _this47 = _super15.call(this, element, config); // this._element is the observablesContainer and config.target the menu links wrapper\n\n _this47._targetLinks = new Map();\n _this47._observableSections = new Map();\n _this47._rootElement = getComputedStyle(_this47._element).overflowY === 'visible' ? null : _this47._element;\n _this47._activeTarget = null;\n _this47._observer = null;\n _this47._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n _this47.refresh(); // initialize\n return _this47;\n } // Getters\n _createClass(ScrollSpy, [{\n key: \"refresh\",\n value:\n // Public\n\n function refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n var _iterator24 = _createForOfIteratorHelper(this._observableSections.values()),\n _step24;\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n var section = _step24.value;\n this._observer.observe(section);\n }\n } catch (err) {\n _iterator24.e(err);\n } finally {\n _iterator24.f();\n }\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n this._observer.disconnect();\n _get(_getPrototypeOf(ScrollSpy.prototype), \"dispose\", this).call(this);\n } // Private\n }, {\n key: \"_configAfterMerge\",\n value: function _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n\n config.rootMargin = config.offset ? \"\".concat(config.offset, \"px 0px -30%\") : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(function (value) {\n return Number.parseFloat(value);\n });\n }\n return config;\n }\n }, {\n key: \"_maybeEnableSmoothScroll\",\n value: function _maybeEnableSmoothScroll() {\n var _this48 = this;\n if (!this._config.smoothScroll) {\n return;\n } // unregister any previous listeners\n\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, function (event) {\n var observableSection = _this48._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n var root = _this48._rootElement || window;\n var height = observableSection.offsetTop - _this48._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n } // Chrome 60 doesn't support `scrollTo`\n\n root.scrollTop = height;\n }\n });\n }\n }, {\n key: \"_getNewObserver\",\n value: function _getNewObserver() {\n var _this49 = this;\n var options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(function (entries) {\n return _this49._observerCallback(entries);\n }, options);\n } // The logic of selection\n }, {\n key: \"_observerCallback\",\n value: function _observerCallback(entries) {\n var _this50 = this;\n var targetElement = function targetElement(entry) {\n return _this50._targetLinks.get(\"#\".concat(entry.target.id));\n };\n var activate = function activate(entry) {\n _this50._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n _this50._process(targetElement(entry));\n };\n var parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n var userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n var _iterator25 = _createForOfIteratorHelper(entries),\n _step25;\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var entry = _step25.value;\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n var entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop\n\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n\n if (!parentScrollTop) {\n return;\n }\n continue;\n } // if we are scrolling up, pick the smallest offsetTop\n\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n } catch (err) {\n _iterator25.e(err);\n } finally {\n _iterator25.f();\n }\n }\n }, {\n key: \"_initializeTargetsAndObservables\",\n value: function _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n var targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n var _iterator26 = _createForOfIteratorHelper(targetLinks),\n _step26;\n try {\n for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {\n var anchor = _step26.value;\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n var observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible\n\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n } catch (err) {\n _iterator26.e(err);\n } finally {\n _iterator26.f();\n }\n }\n }, {\n key: \"_process\",\n value: function _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n }, {\n key: \"_activateParents\",\n value: function _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n var _iterator27 = _createForOfIteratorHelper(SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)),\n _step27;\n try {\n for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {\n var listGroup = _step27.value;\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n var _iterator28 = _createForOfIteratorHelper(SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)),\n _step28;\n try {\n for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {\n var item = _step28.value;\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n } catch (err) {\n _iterator28.e(err);\n } finally {\n _iterator28.f();\n }\n }\n } catch (err) {\n _iterator27.e(err);\n } finally {\n _iterator27.f();\n }\n }\n }, {\n key: \"_clearActiveClass\",\n value: function _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n var activeNodes = SelectorEngine.find(\"\".concat(SELECTOR_TARGET_LINKS, \".\").concat(CLASS_NAME_ACTIVE$1), parent);\n var _iterator29 = _createForOfIteratorHelper(activeNodes),\n _step29;\n try {\n for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {\n var node = _step29.value;\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n } catch (err) {\n _iterator29.e(err);\n } finally {\n _iterator29.f();\n }\n } // Static\n }], [{\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$1;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$2;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = ScrollSpy.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config]();\n });\n }\n }]);\n return ScrollSpy;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, function () {\n var _iterator30 = _createForOfIteratorHelper(SelectorEngine.find(SELECTOR_DATA_SPY)),\n _step30;\n try {\n for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {\n var spy = _step30.value;\n ScrollSpy.getOrCreateInstance(spy);\n }\n } catch (err) {\n _iterator30.e(err);\n } finally {\n _iterator30.f();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME$1 = 'tab';\nvar DATA_KEY$1 = 'bs.tab';\nvar EVENT_KEY$1 = \".\".concat(DATA_KEY$1);\nvar EVENT_HIDE$1 = \"hide\".concat(EVENT_KEY$1);\nvar EVENT_HIDDEN$1 = \"hidden\".concat(EVENT_KEY$1);\nvar EVENT_SHOW$1 = \"show\".concat(EVENT_KEY$1);\nvar EVENT_SHOWN$1 = \"shown\".concat(EVENT_KEY$1);\nvar EVENT_CLICK_DATA_API = \"click\".concat(EVENT_KEY$1);\nvar EVENT_KEYDOWN = \"keydown\".concat(EVENT_KEY$1);\nvar EVENT_LOAD_DATA_API = \"load\".concat(EVENT_KEY$1);\nvar ARROW_LEFT_KEY = 'ArrowLeft';\nvar ARROW_RIGHT_KEY = 'ArrowRight';\nvar ARROW_UP_KEY = 'ArrowUp';\nvar ARROW_DOWN_KEY = 'ArrowDown';\nvar CLASS_NAME_ACTIVE = 'active';\nvar CLASS_NAME_FADE$1 = 'fade';\nvar CLASS_NAME_SHOW$1 = 'show';\nvar CLASS_DROPDOWN = 'dropdown';\nvar SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nvar SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nvar NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';\nvar SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nvar SELECTOR_OUTER = '.nav-item, .list-group-item';\nvar SELECTOR_INNER = \".nav-link\".concat(NOT_SELECTOR_DROPDOWN_TOGGLE, \", .list-group-item\").concat(NOT_SELECTOR_DROPDOWN_TOGGLE, \", [role=\\\"tab\\\"]\").concat(NOT_SELECTOR_DROPDOWN_TOGGLE);\nvar SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // todo:v6: could be only `tab`\n\nvar SELECTOR_INNER_ELEM = \"\".concat(SELECTOR_INNER, \", \").concat(SELECTOR_DATA_TOGGLE);\nvar SELECTOR_DATA_TOGGLE_ACTIVE = \".\".concat(CLASS_NAME_ACTIVE, \"[data-bs-toggle=\\\"tab\\\"], .\").concat(CLASS_NAME_ACTIVE, \"[data-bs-toggle=\\\"pill\\\"], .\").concat(CLASS_NAME_ACTIVE, \"[data-bs-toggle=\\\"list\\\"]\");\n/**\n * Class definition\n */\nvar Tab = /*#__PURE__*/function (_BaseComponent10) {\n _inherits(Tab, _BaseComponent10);\n var _super16 = _createSuper(Tab);\n function Tab(element) {\n var _this51;\n _classCallCheck(this, Tab);\n _this51 = _super16.call(this, element);\n _this51._parent = _this51._element.closest(SELECTOR_TAB_PANEL);\n if (!_this51._parent) {\n return _possibleConstructorReturn(_this51); // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n } // Set up initial aria attributes\n\n _this51._setInitialAttributes(_this51._parent, _this51._getChildren());\n EventHandler.on(_this51._element, EVENT_KEYDOWN, function (event) {\n return _this51._keydown(event);\n });\n return _this51;\n } // Getters\n _createClass(Tab, [{\n key: \"show\",\n value:\n // Public\n\n function show() {\n // Shows this elem and deactivate the active sibling if exists\n var innerElem = this._element;\n if (this._elemIsActive(innerElem)) {\n return;\n } // Search for active tab on same parent to deactivate it\n\n var active = this._getActiveElem();\n var hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n var showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n this._deactivate(active, innerElem);\n this._activate(innerElem, active);\n } // Private\n }, {\n key: \"_activate\",\n value: function _activate(element, relatedElem) {\n var _this52 = this;\n if (!element) {\n return;\n }\n element.classList.add(CLASS_NAME_ACTIVE);\n this._activate(getElementFromSelector(element)); // Search and activate/show the proper section\n\n var complete = function complete() {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n _this52._toggleDropDown(element, true);\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n }, {\n key: \"_deactivate\",\n value: function _deactivate(element, relatedElem) {\n var _this53 = this;\n if (!element) {\n return;\n }\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n this._deactivate(getElementFromSelector(element)); // Search and deactivate the shown section too\n\n var complete = function complete() {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n _this53._toggleDropDown(element, false);\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n }, {\n key: \"_keydown\",\n value: function _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) {\n return;\n }\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n\n event.preventDefault();\n var isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n var nextActiveElement = getNextActiveElement(this._getChildren().filter(function (element) {\n return !isDisabled(element);\n }), event.target, isNext, true);\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n }, {\n key: \"_getChildren\",\n value: function _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n }, {\n key: \"_getActiveElem\",\n value: function _getActiveElem() {\n var _this54 = this;\n return this._getChildren().find(function (child) {\n return _this54._elemIsActive(child);\n }) || null;\n }\n }, {\n key: \"_setInitialAttributes\",\n value: function _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n var _iterator31 = _createForOfIteratorHelper(children),\n _step31;\n try {\n for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {\n var child = _step31.value;\n this._setInitialAttributesOnChild(child);\n }\n } catch (err) {\n _iterator31.e(err);\n } finally {\n _iterator31.f();\n }\n }\n }, {\n key: \"_setInitialAttributesOnChild\",\n value: function _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n var isActive = this._elemIsActive(child);\n var outerElem = this._getOuterElement(child);\n child.setAttribute('aria-selected', isActive);\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n this._setAttributeIfNotExists(child, 'role', 'tab'); // set attributes to the related panel too\n\n this._setInitialAttributesOnTargetPanel(child);\n }\n }, {\n key: \"_setInitialAttributesOnTargetPanel\",\n value: function _setInitialAttributesOnTargetPanel(child) {\n var target = getElementFromSelector(child);\n if (!target) {\n return;\n }\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', \"#\".concat(child.id));\n }\n }\n }, {\n key: \"_toggleDropDown\",\n value: function _toggleDropDown(element, open) {\n var outerElem = this._getOuterElement(element);\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n var toggle = function toggle(selector, className) {\n var element = SelectorEngine.findOne(selector, outerElem);\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n }, {\n key: \"_setAttributeIfNotExists\",\n value: function _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n }, {\n key: \"_elemIsActive\",\n value: function _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n } // Try to get the inner element (usually the .nav-link)\n }, {\n key: \"_getInnerElement\",\n value: function _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n } // Try to get the outer element (usually the .nav-item)\n }, {\n key: \"_getOuterElement\",\n value: function _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n } // Static\n }], [{\n key: \"NAME\",\n get: function get() {\n return NAME$1;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = Tab.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config]();\n });\n }\n }]);\n return Tab;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n Tab.getOrCreateInstance(this).show();\n});\n/**\n * Initialize on focus\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, function () {\n var _iterator32 = _createForOfIteratorHelper(SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)),\n _step32;\n try {\n for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {\n var element = _step32.value;\n Tab.getOrCreateInstance(element);\n }\n } catch (err) {\n _iterator32.e(err);\n } finally {\n _iterator32.f();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nvar NAME = 'toast';\nvar DATA_KEY = 'bs.toast';\nvar EVENT_KEY = \".\".concat(DATA_KEY);\nvar EVENT_MOUSEOVER = \"mouseover\".concat(EVENT_KEY);\nvar EVENT_MOUSEOUT = \"mouseout\".concat(EVENT_KEY);\nvar EVENT_FOCUSIN = \"focusin\".concat(EVENT_KEY);\nvar EVENT_FOCUSOUT = \"focusout\".concat(EVENT_KEY);\nvar EVENT_HIDE = \"hide\".concat(EVENT_KEY);\nvar EVENT_HIDDEN = \"hidden\".concat(EVENT_KEY);\nvar EVENT_SHOW = \"show\".concat(EVENT_KEY);\nvar EVENT_SHOWN = \"shown\".concat(EVENT_KEY);\nvar CLASS_NAME_FADE = 'fade';\nvar CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\n\nvar CLASS_NAME_SHOW = 'show';\nvar CLASS_NAME_SHOWING = 'showing';\nvar DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nvar Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n/**\n * Class definition\n */\nvar Toast = /*#__PURE__*/function (_BaseComponent11) {\n _inherits(Toast, _BaseComponent11);\n var _super17 = _createSuper(Toast);\n function Toast(element, config) {\n var _this55;\n _classCallCheck(this, Toast);\n _this55 = _super17.call(this, element, config);\n _this55._timeout = null;\n _this55._hasMouseInteraction = false;\n _this55._hasKeyboardInteraction = false;\n _this55._setListeners();\n return _this55;\n } // Getters\n _createClass(Toast, [{\n key: \"show\",\n value:\n // Public\n\n function show() {\n var _this56 = this;\n var showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._clearTimeout();\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n var complete = function complete() {\n _this56._element.classList.remove(CLASS_NAME_SHOWING);\n EventHandler.trigger(_this56._element, EVENT_SHOWN);\n _this56._maybeScheduleHide();\n };\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n }, {\n key: \"hide\",\n value: function hide() {\n var _this57 = this;\n if (!this.isShown()) {\n return;\n }\n var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (hideEvent.defaultPrevented) {\n return;\n }\n var complete = function complete() {\n _this57._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n\n _this57._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n EventHandler.trigger(_this57._element, EVENT_HIDDEN);\n };\n this._element.classList.add(CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n this._clearTimeout();\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n _get(_getPrototypeOf(Toast.prototype), \"dispose\", this).call(this);\n }\n }, {\n key: \"isShown\",\n value: function isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n } // Private\n }, {\n key: \"_maybeScheduleHide\",\n value: function _maybeScheduleHide() {\n var _this58 = this;\n if (!this._config.autohide) {\n return;\n }\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n this._timeout = setTimeout(function () {\n _this58.hide();\n }, this._config.delay);\n }\n }, {\n key: \"_onInteraction\",\n value: function _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n if (isInteracting) {\n this._clearTimeout();\n return;\n }\n var nextElement = event.relatedTarget;\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n this._maybeScheduleHide();\n }\n }, {\n key: \"_setListeners\",\n value: function _setListeners() {\n var _this59 = this;\n EventHandler.on(this._element, EVENT_MOUSEOVER, function (event) {\n return _this59._onInteraction(event, true);\n });\n EventHandler.on(this._element, EVENT_MOUSEOUT, function (event) {\n return _this59._onInteraction(event, false);\n });\n EventHandler.on(this._element, EVENT_FOCUSIN, function (event) {\n return _this59._onInteraction(event, true);\n });\n EventHandler.on(this._element, EVENT_FOCUSOUT, function (event) {\n return _this59._onInteraction(event, false);\n });\n }\n }, {\n key: \"_clearTimeout\",\n value: function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n }], [{\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME;\n }\n }, {\n key: \"jQueryInterface\",\n value: function jQueryInterface(config) {\n return this.each(function () {\n var data = Toast.getOrCreateInstance(this, config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\".concat(config, \"\\\"\"));\n }\n data[config](this);\n }\n });\n }\n }]);\n return Toast;\n}(BaseComponent);\n/**\n * Data API implementation\n */\nenableDismissTrigger(Toast);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL2Rpc3QvanMvYm9vdHN0cmFwLmVzbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsSUFBTUEsT0FBTyxHQUFHLE9BQWhCO0FBQ0EsSUFBTUMsdUJBQXVCLEdBQUcsSUFBaEM7QUFDQSxJQUFNQyxjQUFjLEdBQUcsZUFBdkI7O0FBR0EsSUFBTUMsTUFBTSxHQUFHQyxTQUFURCxNQUFNLENBQUdDLE1BQU0sRUFBSTtFQUN2QixJQUFJQSxNQUFNLEtBQUssSUFBWCxJQUFtQkEsTUFBTSxLQUFLQyxTQUFsQyxFQUE2QztJQUMzQyxpQkFBVUQsTUFBTztFQUNsQjtFQUVELE9BQU9FLE1BQU0sQ0FBQ0MsU0FBUCxDQUFpQkMsUUFBakIsQ0FBMEJDLElBQTFCLENBQStCTCxNQUEvQixFQUF1Q00sS0FBdkMsQ0FBNkMsYUFBN0MsRUFBNEQsQ0FBNUQsRUFBK0RDLFdBQS9ELEVBQVA7QUFDRCxDQU5EO0FBUUE7QUFDQTtBQUNBOztBQUVBLElBQU1DLE1BQU0sR0FBR0MsU0FBVEQsTUFBTSxDQUFHQyxNQUFNLEVBQUk7RUFDdkIsR0FBRztJQUNEQSxNQUFNLElBQUlDLElBQUksQ0FBQ0MsS0FBTCxDQUFXRCxJQUFJLENBQUNFLE1BQUwsRUFBZ0JoQixVQUEzQixDQUFWO0VBQ0QsQ0FGRCxRQUVTaUIsUUFBUSxDQUFDQyxjQUFULENBQXdCTCxNQUF4QixDQUZUO0VBSUEsT0FBT0EsTUFBUDtBQUNELENBTkQ7QUFRQSxJQUFNTSxXQUFXLEdBQUdDLFNBQWRELFdBQVcsQ0FBR0MsT0FBTyxFQUFJO0VBQzdCLElBQUlDLFFBQVEsR0FBR0QsT0FBTyxDQUFDRSxZQUFSLENBQXFCLGdCQUFyQixDQUFmO0VBRUEsSUFBSSxDQUFDRCxRQUFELElBQWFBLFFBQVEsS0FBSyxHQUE5QixFQUFtQztJQUNq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LFNBQUwsR0FBZ0IsSUFBaEI7SUFDRCxDQWhKK0I7RUFBQTtJQUFBO0lBQUEsS0FXZCxlQUFHO01BQ25CLE9BQU9oZixPQUFQO0lBQ0Q7RUFBQTtJQUFBO0lBQUEsS0FFcUIsZUFBRztNQUN2QixPQUFPRSxXQUFQO0lBQ0Q7RUFBQTtJQUFBO0lBQUEsS0FFYyxlQUFHO01BQ2hCLE9BQU9wSixJQUFQO0lBQ0Q7RUFyQitCO0lBQUE7SUFBQSxPQW1KVix5QkFBQzRJLE1BQUQsRUFBUztNQUM3QixPQUFPLEtBQUs0QyxJQUFMLENBQVUsWUFBWTtRQUMzQixJQUFNQyxJQUFJLEdBQUc0a0IsS0FBSyxDQUFDdGxCLG1CQUFOLENBQTBCLElBQTFCLEVBQWdDbkMsTUFBaEMsQ0FBYjtRQUVBLElBQUksT0FBT0EsTUFBUCxLQUFrQixRQUF0QixFQUFnQztVQUM5QixJQUFJLE9BQU82QyxJQUFJLENBQUM3QyxNQUFELENBQVgsS0FBd0IsV0FBNUIsRUFBeUM7WUFDdkMsTUFBTSxJQUFJYyxTQUFKLDZCQUFrQ2QsTUFBTyxRQUEvQztVQUNEO1VBRUQ2QyxJQUFJLENBQUM3QyxNQUFELENBQUosQ0FBYSxJQUFiO1FBQ0Q7TUFDRixDQVZNLENBQVA7SUFXRDtFQUFBO0VBQUE7QUFBQSxFQS9KaUJrQixhQUFwQjtBQWtLQTtBQUNBO0FBQ0E7QUFFQVksb0JBQW9CLENBQUMybEIsS0FBRCxDQUFwQjtBQUVBO0FBQ0E7QUFDQTs7QUFFQXp3QixrQkFBa0IsQ0FBQ3l3QixLQUFELENBQWxCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3V0aWwvaW5kZXguanM/MGE3ZiIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvZG9tL2V2ZW50LWhhbmRsZXIuanM/YmIyNyIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvZG9tL2RhdGEuanM/ZGJlMyIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvZG9tL21hbmlwdWxhdG9yLmpzPzVhZTIiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3V0aWwvY29uZmlnLmpzPzE4NTMiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL2Jhc2UtY29tcG9uZW50LmpzPzM2MDMiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3V0aWwvY29tcG9uZW50LWZ1bmN0aW9ucy5qcz83NjgwIiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy9hbGVydC5qcz84MDI0Iiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy9idXR0b24uanM/ZDg0OCIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvZG9tL3NlbGVjdG9yLWVuZ2luZS5qcz9mODdmIiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy91dGlsL3N3aXBlLmpzPzYzNzAiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL2Nhcm91c2VsLmpzP2Q4NTIiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL2NvbGxhcHNlLmpzPzRjNTgiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL2Ryb3Bkb3duLmpzP2VjMDQiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3V0aWwvc2Nyb2xsYmFyLmpzPzVjN2MiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3V0aWwvYmFja2Ryb3AuanM/NTg0MyIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvdXRpbC9mb2N1c3RyYXAuanM/MjJhMiIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvbW9kYWwuanM/ZTRjYiIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvb2ZmY2FudmFzLmpzPzMyMjQiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3V0aWwvc2FuaXRpemVyLmpzPzE1NjEiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3V0aWwvdGVtcGxhdGUtZmFjdG9yeS5qcz85MzQ4Iiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy90b29sdGlwLmpzP2IyNDkiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3BvcG92ZXIuanM/MjgzMiIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvc2Nyb2xsc3B5LmpzPzY5MDIiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3RhYi5qcz8yYzllIiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy90b2FzdC5qcz9lYTEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogdXRpbC9pbmRleC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmNvbnN0IE1BWF9VSUQgPSAxXzAwMF8wMDBcbmNvbnN0IE1JTExJU0VDT05EU19NVUxUSVBMSUVSID0gMTAwMFxuY29uc3QgVFJBTlNJVElPTl9FTkQgPSAndHJhbnNpdGlvbmVuZCdcblxuLy8gU2hvdXQtb3V0IEFuZ3VzIENyb2xsIChodHRwczovL2dvby5nbC9weHdRR3ApXG5jb25zdCB0b1R5cGUgPSBvYmplY3QgPT4ge1xuICBpZiAob2JqZWN0ID09PSBudWxsIHx8IG9iamVjdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGAke29iamVjdH1gXG4gIH1cblxuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkubWF0Y2goL1xccyhbYS16XSspL2kpWzFdLnRvTG93ZXJDYXNlKClcbn1cblxuLyoqXG4gKiBQdWJsaWMgVXRpbCBBUElcbiAqL1xuXG5jb25zdCBnZXRVSUQgPSBwcmVmaXggPT4ge1xuICBkbyB7XG4gICAgcHJlZml4ICs9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIE1BWF9VSUQpXG4gIH0gd2hpbGUgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByZWZpeCkpXG5cbiAgcmV0dXJuIHByZWZpeFxufVxuXG5jb25zdCBnZXRTZWxlY3RvciA9IGVsZW1lbnQgPT4ge1xuICBsZXQgc2VsZWN0b3IgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy10YXJnZXQnKVxuXG4gIGlmICghc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09ICcjJykge1xuICAgIGxldCBocmVmQXR0cmlidXRlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKVxuXG4gICAgLy8gVGhlIG9ubHkgdmFsaWQgY29udGVudCB0aGF0IGNvdWxkIGRvdWJsZSBhcyBhIHNlbGVjdG9yIGFyZSBJRHMgb3IgY2xhc3NlcyxcbiAgICAvLyBzbyBldmVyeXRoaW5nIHN0YXJ0aW5nIHdpdGggYCNgIG9yIGAuYC4gSWYgYSBcInJlYWxcIiBVUkwgaXMgdXNlZCBhcyB0aGUgc2VsZWN0b3IsXG4gICAgLy8gYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JgIHdpbGwgcmlnaHRmdWxseSBjb21wbGFpbiBpdCBpcyBpbnZhbGlkLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzMyMjczXG4gICAgaWYgKCFocmVmQXR0cmlidXRlIHx8ICghaHJlZkF0dHJpYnV0ZS5pbmNsdWRlcygnIycpICYmICFocmVmQXR0cmlidXRlLnN0YXJ0c1dpdGgoJy4nKSkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWUgQ01TIHB1dHMgb3V0IGEgZnVsbCBVUkwgd2l0aCB0aGUgYW5jaG9yIGFwcGVuZGVkXG4gICAgaWYgKGhyZWZBdHRyaWJ1dGUuaW5jbHVkZXMoJyMnKSAmJiAhaHJlZkF0dHJpYnV0ZS5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgIGhyZWZBdHRyaWJ1dGUgPSBgIyR7aHJlZkF0dHJpYnV0ZS5zcGxpdCgnIycpWzFdfWBcbiAgICB9XG5cbiAgICBzZWxlY3RvciA9IGhyZWZBdHRyaWJ1dGUgJiYgaHJlZkF0dHJpYnV0ZSAhPT0gJyMnID8gaHJlZkF0dHJpYnV0ZS50cmltKCkgOiBudWxsXG4gIH1cblxuICByZXR1cm4gc2VsZWN0b3Jcbn1cblxuY29uc3QgZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCA9IGVsZW1lbnQgPT4ge1xuICBjb25zdCBzZWxlY3RvciA9IGdldFNlbGVjdG9yKGVsZW1lbnQpXG5cbiAgaWYgKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpID8gc2VsZWN0b3IgOiBudWxsXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCBnZXRFbGVtZW50RnJvbVNlbGVjdG9yID0gZWxlbWVudCA9PiB7XG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3IoZWxlbWVudClcblxuICByZXR1cm4gc2VsZWN0b3IgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSA6IG51bGxcbn1cblxuY29uc3QgZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQgPSBlbGVtZW50ID0+IHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIC8vIEdldCB0cmFuc2l0aW9uLWR1cmF0aW9uIG9mIHRoZSBlbGVtZW50XG4gIGxldCB7IHRyYW5zaXRpb25EdXJhdGlvbiwgdHJhbnNpdGlvbkRlbGF5IH0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxuXG4gIGNvbnN0IGZsb2F0VHJhbnNpdGlvbkR1cmF0aW9uID0gTnVtYmVyLnBhcnNlRmxvYXQodHJhbnNpdGlvbkR1cmF0aW9uKVxuICBjb25zdCBmbG9hdFRyYW5zaXRpb25EZWxheSA9IE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EZWxheSlcblxuICAvLyBSZXR1cm4gMCBpZiBlbGVtZW50IG9yIHRyYW5zaXRpb24gZHVyYXRpb24gaXMgbm90IGZvdW5kXG4gIGlmICghZmxvYXRUcmFuc2l0aW9uRHVyYXRpb24gJiYgIWZsb2F0VHJhbnNpdGlvbkRlbGF5KSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIC8vIElmIG11bHRpcGxlIGR1cmF0aW9ucyBhcmUgZGVmaW5lZCwgdGFrZSB0aGUgZmlyc3RcbiAgdHJhbnNpdGlvbkR1cmF0aW9uID0gdHJhbnNpdGlvbkR1cmF0aW9uLnNwbGl0KCcsJylbMF1cbiAgdHJhbnNpdGlvbkRlbGF5ID0gdHJhbnNpdGlvbkRlbGF5LnNwbGl0KCcsJylbMF1cblxuICByZXR1cm4gKE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EdXJhdGlvbikgKyBOdW1iZXIucGFyc2VGbG9hdCh0cmFuc2l0aW9uRGVsYXkpKSAqIE1JTExJU0VDT05EU19NVUxUSVBMSUVSXG59XG5cbmNvbnN0IHRyaWdnZXJUcmFuc2l0aW9uRW5kID0gZWxlbWVudCA9PiB7XG4gIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoVFJBTlNJVElPTl9FTkQpKVxufVxuXG5jb25zdCBpc0VsZW1lbnQgPSBvYmplY3QgPT4ge1xuICBpZiAoIW9iamVjdCB8fCB0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmplY3QuanF1ZXJ5ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG9iamVjdCA9IG9iamVjdFswXVxuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiBvYmplY3Qubm9kZVR5cGUgIT09ICd1bmRlZmluZWQnXG59XG5cbmNvbnN0IGdldEVsZW1lbnQgPSBvYmplY3QgPT4ge1xuICAvLyBpdCdzIGEgalF1ZXJ5IG9iamVjdCBvciBhIG5vZGUgZWxlbWVudFxuICBpZiAoaXNFbGVtZW50KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0LmpxdWVyeSA/IG9iamVjdFswXSA6IG9iamVjdFxuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnICYmIG9iamVjdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob2JqZWN0KVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgaXNWaXNpYmxlID0gZWxlbWVudCA9PiB7XG4gIGlmICghaXNFbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGVsZW1lbnRJc1Zpc2libGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJ3Zpc2liaWxpdHknKSA9PT0gJ3Zpc2libGUnXG4gIC8vIEhhbmRsZSBgZGV0YWlsc2AgZWxlbWVudCBhcyBpdHMgY29udGVudCBtYXkgZmFsc2llIGFwcGVhciB2aXNpYmxlIHdoZW4gaXQgaXMgY2xvc2VkXG4gIGNvbnN0IGNsb3NlZERldGFpbHMgPSBlbGVtZW50LmNsb3Nlc3QoJ2RldGFpbHM6bm90KFtvcGVuXSknKVxuXG4gIGlmICghY2xvc2VkRGV0YWlscykge1xuICAgIHJldHVybiBlbGVtZW50SXNWaXNpYmxlXG4gIH1cblxuICBpZiAoY2xvc2VkRGV0YWlscyAhPT0gZWxlbWVudCkge1xuICAgIGNvbnN0IHN1bW1hcnkgPSBlbGVtZW50LmNsb3Nlc3QoJ3N1bW1hcnknKVxuICAgIGlmIChzdW1tYXJ5ICYmIHN1bW1hcnkucGFyZW50Tm9kZSAhPT0gY2xvc2VkRGV0YWlscykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKHN1bW1hcnkgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbGVtZW50SXNWaXNpYmxlXG59XG5cbmNvbnN0IGlzRGlzYWJsZWQgPSBlbGVtZW50ID0+IHtcbiAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZGlzYWJsZWQnKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodHlwZW9mIGVsZW1lbnQuZGlzYWJsZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZGlzYWJsZWRcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSAhPT0gJ2ZhbHNlJ1xufVxuXG5jb25zdCBmaW5kU2hhZG93Um9vdCA9IGVsZW1lbnQgPT4ge1xuICBpZiAoIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hdHRhY2hTaGFkb3cpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gQ2FuIGZpbmQgdGhlIHNoYWRvdyByb290IG90aGVyd2lzZSBpdCdsbCByZXR1cm4gdGhlIGRvY3VtZW50XG4gIGlmICh0eXBlb2YgZWxlbWVudC5nZXRSb290Tm9kZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHJvb3QgPSBlbGVtZW50LmdldFJvb3ROb2RlKClcbiAgICByZXR1cm4gcm9vdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgPyByb290IDogbnVsbFxuICB9XG5cbiAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBTaGFkb3dSb290KSB7XG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfVxuXG4gIC8vIHdoZW4gd2UgZG9uJ3QgZmluZCBhIHNoYWRvdyByb290XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBmaW5kU2hhZG93Um9vdChlbGVtZW50LnBhcmVudE5vZGUpXG59XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuXG4vKipcbiAqIFRyaWNrIHRvIHJlc3RhcnQgYW4gZWxlbWVudCdzIGFuaW1hdGlvblxuICpcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm4gdm9pZFxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cuY2hhcmlzdGhlby5pby9ibG9nLzIwMjEvMDIvcmVzdGFydC1hLWNzcy1hbmltYXRpb24td2l0aC1qYXZhc2NyaXB0LyNyZXN0YXJ0aW5nLWEtY3NzLWFuaW1hdGlvblxuICovXG5jb25zdCByZWZsb3cgPSBlbGVtZW50ID0+IHtcbiAgZWxlbWVudC5vZmZzZXRIZWlnaHQgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcbn1cblxuY29uc3QgZ2V0alF1ZXJ5ID0gKCkgPT4ge1xuICBpZiAod2luZG93LmpRdWVyeSAmJiAhZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoJ2RhdGEtYnMtbm8tanF1ZXJ5JykpIHtcbiAgICByZXR1cm4gd2luZG93LmpRdWVyeVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgRE9NQ29udGVudExvYWRlZENhbGxiYWNrcyA9IFtdXG5cbmNvbnN0IG9uRE9NQ29udGVudExvYWRlZCA9IGNhbGxiYWNrID0+IHtcbiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykge1xuICAgIC8vIGFkZCBsaXN0ZW5lciBvbiB0aGUgZmlyc3QgY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBpcyBpbiBsb2FkaW5nIHN0YXRlXG4gICAgaWYgKCFET01Db250ZW50TG9hZGVkQ2FsbGJhY2tzLmxlbmd0aCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBET01Db250ZW50TG9hZGVkQ2FsbGJhY2tzKSB7XG4gICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIERPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MucHVzaChjYWxsYmFjaylcbiAgfSBlbHNlIHtcbiAgICBjYWxsYmFjaygpXG4gIH1cbn1cblxuY29uc3QgaXNSVEwgPSAoKSA9PiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGlyID09PSAncnRsJ1xuXG5jb25zdCBkZWZpbmVKUXVlcnlQbHVnaW4gPSBwbHVnaW4gPT4ge1xuICBvbkRPTUNvbnRlbnRMb2FkZWQoKCkgPT4ge1xuICAgIGNvbnN0ICQgPSBnZXRqUXVlcnkoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICgkKSB7XG4gICAgICBjb25zdCBuYW1lID0gcGx1Z2luLk5BTUVcbiAgICAgIGNvbnN0IEpRVUVSWV9OT19DT05GTElDVCA9ICQuZm5bbmFtZV1cbiAgICAgICQuZm5bbmFtZV0gPSBwbHVnaW4ualF1ZXJ5SW50ZXJmYWNlXG4gICAgICAkLmZuW25hbWVdLkNvbnN0cnVjdG9yID0gcGx1Z2luXG4gICAgICAkLmZuW25hbWVdLm5vQ29uZmxpY3QgPSAoKSA9PiB7XG4gICAgICAgICQuZm5bbmFtZV0gPSBKUVVFUllfTk9fQ09ORkxJQ1RcbiAgICAgICAgcmV0dXJuIHBsdWdpbi5qUXVlcnlJbnRlcmZhY2VcbiAgICAgIH1cbiAgICB9XG4gIH0pXG59XG5cbmNvbnN0IGV4ZWN1dGUgPSBjYWxsYmFjayA9PiB7XG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjaygpXG4gIH1cbn1cblxuY29uc3QgZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbiA9IChjYWxsYmFjaywgdHJhbnNpdGlvbkVsZW1lbnQsIHdhaXRGb3JUcmFuc2l0aW9uID0gdHJ1ZSkgPT4ge1xuICBpZiAoIXdhaXRGb3JUcmFuc2l0aW9uKSB7XG4gICAgZXhlY3V0ZShjYWxsYmFjaylcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGR1cmF0aW9uUGFkZGluZyA9IDVcbiAgY29uc3QgZW11bGF0ZWREdXJhdGlvbiA9IGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRyYW5zaXRpb25FbGVtZW50KSArIGR1cmF0aW9uUGFkZGluZ1xuXG4gIGxldCBjYWxsZWQgPSBmYWxzZVxuXG4gIGNvbnN0IGhhbmRsZXIgPSAoeyB0YXJnZXQgfSkgPT4ge1xuICAgIGlmICh0YXJnZXQgIT09IHRyYW5zaXRpb25FbGVtZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjYWxsZWQgPSB0cnVlXG4gICAgdHJhbnNpdGlvbkVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihUUkFOU0lUSU9OX0VORCwgaGFuZGxlcilcbiAgICBleGVjdXRlKGNhbGxiYWNrKVxuICB9XG5cbiAgdHJhbnNpdGlvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihUUkFOU0lUSU9OX0VORCwgaGFuZGxlcilcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgIHRyaWdnZXJUcmFuc2l0aW9uRW5kKHRyYW5zaXRpb25FbGVtZW50KVxuICAgIH1cbiAgfSwgZW11bGF0ZWREdXJhdGlvbilcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIHByZXZpb3VzL25leHQgZWxlbWVudCBvZiBhIGxpc3QuXG4gKlxuICogQHBhcmFtIHthcnJheX0gbGlzdCAgICBUaGUgbGlzdCBvZiBlbGVtZW50c1xuICogQHBhcmFtIGFjdGl2ZUVsZW1lbnQgICBUaGUgYWN0aXZlIGVsZW1lbnRcbiAqIEBwYXJhbSBzaG91bGRHZXROZXh0ICAgQ2hvb3NlIHRvIGdldCBuZXh0IG9yIHByZXZpb3VzIGVsZW1lbnRcbiAqIEBwYXJhbSBpc0N5Y2xlQWxsb3dlZFxuICogQHJldHVybiB7RWxlbWVudHxlbGVtfSBUaGUgcHJvcGVyIGVsZW1lbnRcbiAqL1xuY29uc3QgZ2V0TmV4dEFjdGl2ZUVsZW1lbnQgPSAobGlzdCwgYWN0aXZlRWxlbWVudCwgc2hvdWxkR2V0TmV4dCwgaXNDeWNsZUFsbG93ZWQpID0+IHtcbiAgY29uc3QgbGlzdExlbmd0aCA9IGxpc3QubGVuZ3RoXG4gIGxldCBpbmRleCA9IGxpc3QuaW5kZXhPZihhY3RpdmVFbGVtZW50KVxuXG4gIC8vIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IHJldHVybiBhbiBlbGVtZW50XG4gIC8vIGRlcGVuZGluZyBvbiB0aGUgZGlyZWN0aW9uIGFuZCBpZiBjeWNsZSBpcyBhbGxvd2VkXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gIXNob3VsZEdldE5leHQgJiYgaXNDeWNsZUFsbG93ZWQgPyBsaXN0W2xpc3RMZW5ndGggLSAxXSA6IGxpc3RbMF1cbiAgfVxuXG4gIGluZGV4ICs9IHNob3VsZEdldE5leHQgPyAxIDogLTFcblxuICBpZiAoaXNDeWNsZUFsbG93ZWQpIHtcbiAgICBpbmRleCA9IChpbmRleCArIGxpc3RMZW5ndGgpICUgbGlzdExlbmd0aFxuICB9XG5cbiAgcmV0dXJuIGxpc3RbTWF0aC5tYXgoMCwgTWF0aC5taW4oaW5kZXgsIGxpc3RMZW5ndGggLSAxKSldXG59XG5cbmV4cG9ydCB7XG4gIGRlZmluZUpRdWVyeVBsdWdpbixcbiAgZXhlY3V0ZSxcbiAgZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbixcbiAgZmluZFNoYWRvd1Jvb3QsXG4gIGdldEVsZW1lbnQsXG4gIGdldEVsZW1lbnRGcm9tU2VsZWN0b3IsXG4gIGdldGpRdWVyeSxcbiAgZ2V0TmV4dEFjdGl2ZUVsZW1lbnQsXG4gIGdldFNlbGVjdG9yRnJvbUVsZW1lbnQsXG4gIGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50LFxuICBnZXRVSUQsXG4gIGlzRGlzYWJsZWQsXG4gIGlzRWxlbWVudCxcbiAgaXNSVEwsXG4gIGlzVmlzaWJsZSxcbiAgbm9vcCxcbiAgb25ET01Db250ZW50TG9hZGVkLFxuICByZWZsb3csXG4gIHRyaWdnZXJUcmFuc2l0aW9uRW5kLFxuICB0b1R5cGVcbn1cbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogZG9tL2V2ZW50LWhhbmRsZXIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgeyBnZXRqUXVlcnkgfSBmcm9tICcuLi91dGlsL2luZGV4J1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IG5hbWVzcGFjZVJlZ2V4ID0gL1teLl0qKD89XFwuLiopXFwufC4qL1xuY29uc3Qgc3RyaXBOYW1lUmVnZXggPSAvXFwuLiovXG5jb25zdCBzdHJpcFVpZFJlZ2V4ID0gLzo6XFxkKyQvXG5jb25zdCBldmVudFJlZ2lzdHJ5ID0ge30gLy8gRXZlbnRzIHN0b3JhZ2VcbmxldCB1aWRFdmVudCA9IDFcbmNvbnN0IGN1c3RvbUV2ZW50cyA9IHtcbiAgbW91c2VlbnRlcjogJ21vdXNlb3ZlcicsXG4gIG1vdXNlbGVhdmU6ICdtb3VzZW91dCdcbn1cblxuY29uc3QgbmF0aXZlRXZlbnRzID0gbmV3IFNldChbXG4gICdjbGljaycsXG4gICdkYmxjbGljaycsXG4gICdtb3VzZXVwJyxcbiAgJ21vdXNlZG93bicsXG4gICdjb250ZXh0bWVudScsXG4gICdtb3VzZXdoZWVsJyxcbiAgJ0RPTU1vdXNlU2Nyb2xsJyxcbiAgJ21vdXNlb3ZlcicsXG4gICdtb3VzZW91dCcsXG4gICdtb3VzZW1vdmUnLFxuICAnc2VsZWN0c3RhcnQnLFxuICAnc2VsZWN0ZW5kJyxcbiAgJ2tleWRvd24nLFxuICAna2V5cHJlc3MnLFxuICAna2V5dXAnLFxuICAnb3JpZW50YXRpb25jaGFuZ2UnLFxuICAndG91Y2hzdGFydCcsXG4gICd0b3VjaG1vdmUnLFxuICAndG91Y2hlbmQnLFxuICAndG91Y2hjYW5jZWwnLFxuICAncG9pbnRlcmRvd24nLFxuICAncG9pbnRlcm1vdmUnLFxuICAncG9pbnRlcnVwJyxcbiAgJ3BvaW50ZXJsZWF2ZScsXG4gICdwb2ludGVyY2FuY2VsJyxcbiAgJ2dlc3R1cmVzdGFydCcsXG4gICdnZXN0dXJlY2hhbmdlJyxcbiAgJ2dlc3R1cmVlbmQnLFxuICAnZm9jdXMnLFxuICAnYmx1cicsXG4gICdjaGFuZ2UnLFxuICAncmVzZXQnLFxuICAnc2VsZWN0JyxcbiAgJ3N1Ym1pdCcsXG4gICdmb2N1c2luJyxcbiAgJ2ZvY3Vzb3V0JyxcbiAgJ2xvYWQnLFxuICAndW5sb2FkJyxcbiAgJ2JlZm9yZXVubG9hZCcsXG4gICdyZXNpemUnLFxuICAnbW92ZScsXG4gICdET01Db250ZW50TG9hZGVkJyxcbiAgJ3JlYWR5c3RhdGVjaGFuZ2UnLFxuICAnZXJyb3InLFxuICAnYWJvcnQnLFxuICAnc2Nyb2xsJ1xuXSlcblxuLyoqXG4gKiBQcml2YXRlIG1ldGhvZHNcbiAqL1xuXG5mdW5jdGlvbiBtYWtlRXZlbnRVaWQoZWxlbWVudCwgdWlkKSB7XG4gIHJldHVybiAodWlkICYmIGAke3VpZH06OiR7dWlkRXZlbnQrK31gKSB8fCBlbGVtZW50LnVpZEV2ZW50IHx8IHVpZEV2ZW50Kytcbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudEV2ZW50cyhlbGVtZW50KSB7XG4gIGNvbnN0IHVpZCA9IG1ha2VFdmVudFVpZChlbGVtZW50KVxuXG4gIGVsZW1lbnQudWlkRXZlbnQgPSB1aWRcbiAgZXZlbnRSZWdpc3RyeVt1aWRdID0gZXZlbnRSZWdpc3RyeVt1aWRdIHx8IHt9XG5cbiAgcmV0dXJuIGV2ZW50UmVnaXN0cnlbdWlkXVxufVxuXG5mdW5jdGlvbiBib290c3RyYXBIYW5kbGVyKGVsZW1lbnQsIGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7XG4gICAgaHlkcmF0ZU9iaihldmVudCwgeyBkZWxlZ2F0ZVRhcmdldDogZWxlbWVudCB9KVxuXG4gICAgaWYgKGhhbmRsZXIub25lT2ZmKSB7XG4gICAgICBFdmVudEhhbmRsZXIub2ZmKGVsZW1lbnQsIGV2ZW50LnR5cGUsIGZuKVxuICAgIH1cblxuICAgIHJldHVybiBmbi5hcHBseShlbGVtZW50LCBbZXZlbnRdKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJvb3RzdHJhcERlbGVnYXRpb25IYW5kbGVyKGVsZW1lbnQsIHNlbGVjdG9yLCBmbikge1xuICByZXR1cm4gZnVuY3Rpb24gaGFuZGxlcihldmVudCkge1xuICAgIGNvbnN0IGRvbUVsZW1lbnRzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKVxuXG4gICAgZm9yIChsZXQgeyB0YXJnZXQgfSA9IGV2ZW50OyB0YXJnZXQgJiYgdGFyZ2V0ICE9PSB0aGlzOyB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZSkge1xuICAgICAgZm9yIChjb25zdCBkb21FbGVtZW50IG9mIGRvbUVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChkb21FbGVtZW50ICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgaHlkcmF0ZU9iaihldmVudCwgeyBkZWxlZ2F0ZVRhcmdldDogdGFyZ2V0IH0pXG5cbiAgICAgICAgaWYgKGhhbmRsZXIub25lT2ZmKSB7XG4gICAgICAgICAgRXZlbnRIYW5kbGVyLm9mZihlbGVtZW50LCBldmVudC50eXBlLCBzZWxlY3RvciwgZm4pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm4uYXBwbHkodGFyZ2V0LCBbZXZlbnRdKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kSGFuZGxlcihldmVudHMsIGNhbGxhYmxlLCBkZWxlZ2F0aW9uU2VsZWN0b3IgPSBudWxsKSB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGV2ZW50cylcbiAgICAuZmluZChldmVudCA9PiBldmVudC5jYWxsYWJsZSA9PT0gY2FsbGFibGUgJiYgZXZlbnQuZGVsZWdhdGlvblNlbGVjdG9yID09PSBkZWxlZ2F0aW9uU2VsZWN0b3IpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhcmFtZXRlcnMob3JpZ2luYWxUeXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbikge1xuICBjb25zdCBpc0RlbGVnYXRlZCA9IHR5cGVvZiBoYW5kbGVyID09PSAnc3RyaW5nJ1xuICAvLyB0b2RvOiB0b29sdGlwIHBhc3NlcyBgZmFsc2VgIGluc3RlYWQgb2Ygc2VsZWN0b3IsIHNvIHdlIG5lZWQgdG8gY2hlY2tcbiAgY29uc3QgY2FsbGFibGUgPSBpc0RlbGVnYXRlZCA/IGRlbGVnYXRpb25GdW5jdGlvbiA6IChoYW5kbGVyIHx8IGRlbGVnYXRpb25GdW5jdGlvbilcbiAgbGV0IHR5cGVFdmVudCA9IGdldFR5cGVFdmVudChvcmlnaW5hbFR5cGVFdmVudClcblxuICBpZiAoIW5hdGl2ZUV2ZW50cy5oYXModHlwZUV2ZW50KSkge1xuICAgIHR5cGVFdmVudCA9IG9yaWdpbmFsVHlwZUV2ZW50XG4gIH1cblxuICByZXR1cm4gW2lzRGVsZWdhdGVkLCBjYWxsYWJsZSwgdHlwZUV2ZW50XVxufVxuXG5mdW5jdGlvbiBhZGRIYW5kbGVyKGVsZW1lbnQsIG9yaWdpbmFsVHlwZUV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24sIG9uZU9mZikge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsVHlwZUV2ZW50ICE9PSAnc3RyaW5nJyB8fCAhZWxlbWVudCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGV0IFtpc0RlbGVnYXRlZCwgY2FsbGFibGUsIHR5cGVFdmVudF0gPSBub3JtYWxpemVQYXJhbWV0ZXJzKG9yaWdpbmFsVHlwZUV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pXG5cbiAgLy8gaW4gY2FzZSBvZiBtb3VzZWVudGVyIG9yIG1vdXNlbGVhdmUgd3JhcCB0aGUgaGFuZGxlciB3aXRoaW4gYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBmb3IgaXRzIERPTSBwb3NpdGlvblxuICAvLyB0aGlzIHByZXZlbnRzIHRoZSBoYW5kbGVyIGZyb20gYmVpbmcgZGlzcGF0Y2hlZCB0aGUgc2FtZSB3YXkgYXMgbW91c2VvdmVyIG9yIG1vdXNlb3V0IGRvZXNcbiAgaWYgKG9yaWdpbmFsVHlwZUV2ZW50IGluIGN1c3RvbUV2ZW50cykge1xuICAgIGNvbnN0IHdyYXBGdW5jdGlvbiA9IGZuID0+IHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFldmVudC5yZWxhdGVkVGFyZ2V0IHx8IChldmVudC5yZWxhdGVkVGFyZ2V0ICE9PSBldmVudC5kZWxlZ2F0ZVRhcmdldCAmJiAhZXZlbnQuZGVsZWdhdGVUYXJnZXQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgZXZlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYWJsZSA9IHdyYXBGdW5jdGlvbihjYWxsYWJsZSlcbiAgfVxuXG4gIGNvbnN0IGV2ZW50cyA9IGdldEVsZW1lbnRFdmVudHMoZWxlbWVudClcbiAgY29uc3QgaGFuZGxlcnMgPSBldmVudHNbdHlwZUV2ZW50XSB8fCAoZXZlbnRzW3R5cGVFdmVudF0gPSB7fSlcbiAgY29uc3QgcHJldmlvdXNGdW5jdGlvbiA9IGZpbmRIYW5kbGVyKGhhbmRsZXJzLCBjYWxsYWJsZSwgaXNEZWxlZ2F0ZWQgPyBoYW5kbGVyIDogbnVsbClcblxuICBpZiAocHJldmlvdXNGdW5jdGlvbikge1xuICAgIHByZXZpb3VzRnVuY3Rpb24ub25lT2ZmID0gcHJldmlvdXNGdW5jdGlvbi5vbmVPZmYgJiYgb25lT2ZmXG5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHVpZCA9IG1ha2VFdmVudFVpZChjYWxsYWJsZSwgb3JpZ2luYWxUeXBlRXZlbnQucmVwbGFjZShuYW1lc3BhY2VSZWdleCwgJycpKVxuICBjb25zdCBmbiA9IGlzRGVsZWdhdGVkID9cbiAgICBib290c3RyYXBEZWxlZ2F0aW9uSGFuZGxlcihlbGVtZW50LCBoYW5kbGVyLCBjYWxsYWJsZSkgOlxuICAgIGJvb3RzdHJhcEhhbmRsZXIoZWxlbWVudCwgY2FsbGFibGUpXG5cbiAgZm4uZGVsZWdhdGlvblNlbGVjdG9yID0gaXNEZWxlZ2F0ZWQgPyBoYW5kbGVyIDogbnVsbFxuICBmbi5jYWxsYWJsZSA9IGNhbGxhYmxlXG4gIGZuLm9uZU9mZiA9IG9uZU9mZlxuICBmbi51aWRFdmVudCA9IHVpZFxuICBoYW5kbGVyc1t1aWRdID0gZm5cblxuICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZUV2ZW50LCBmbiwgaXNEZWxlZ2F0ZWQpXG59XG5cbmZ1bmN0aW9uIHJlbW92ZUhhbmRsZXIoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25TZWxlY3Rvcikge1xuICBjb25zdCBmbiA9IGZpbmRIYW5kbGVyKGV2ZW50c1t0eXBlRXZlbnRdLCBoYW5kbGVyLCBkZWxlZ2F0aW9uU2VsZWN0b3IpXG5cbiAgaWYgKCFmbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVFdmVudCwgZm4sIEJvb2xlYW4oZGVsZWdhdGlvblNlbGVjdG9yKSlcbiAgZGVsZXRlIGV2ZW50c1t0eXBlRXZlbnRdW2ZuLnVpZEV2ZW50XVxufVxuXG5mdW5jdGlvbiByZW1vdmVOYW1lc3BhY2VkSGFuZGxlcnMoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIG5hbWVzcGFjZSkge1xuICBjb25zdCBzdG9yZUVsZW1lbnRFdmVudCA9IGV2ZW50c1t0eXBlRXZlbnRdIHx8IHt9XG5cbiAgZm9yIChjb25zdCBoYW5kbGVyS2V5IG9mIE9iamVjdC5rZXlzKHN0b3JlRWxlbWVudEV2ZW50KSkge1xuICAgIGlmIChoYW5kbGVyS2V5LmluY2x1ZGVzKG5hbWVzcGFjZSkpIHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gc3RvcmVFbGVtZW50RXZlbnRbaGFuZGxlcktleV1cbiAgICAgIHJlbW92ZUhhbmRsZXIoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIGV2ZW50LmNhbGxhYmxlLCBldmVudC5kZWxlZ2F0aW9uU2VsZWN0b3IpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFR5cGVFdmVudChldmVudCkge1xuICAvLyBhbGxvdyB0byBnZXQgdGhlIG5hdGl2ZSBldmVudHMgZnJvbSBuYW1lc3BhY2VkIGV2ZW50cyAoJ2NsaWNrLmJzLmJ1dHRvbicgLS0+ICdjbGljaycpXG4gIGV2ZW50ID0gZXZlbnQucmVwbGFjZShzdHJpcE5hbWVSZWdleCwgJycpXG4gIHJldHVybiBjdXN0b21FdmVudHNbZXZlbnRdIHx8IGV2ZW50XG59XG5cbmNvbnN0IEV2ZW50SGFuZGxlciA9IHtcbiAgb24oZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbikge1xuICAgIGFkZEhhbmRsZXIoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbiwgZmFsc2UpXG4gIH0sXG5cbiAgb25lKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pIHtcbiAgICBhZGRIYW5kbGVyKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24sIHRydWUpXG4gIH0sXG5cbiAgb2ZmKGVsZW1lbnQsIG9yaWdpbmFsVHlwZUV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pIHtcbiAgICBpZiAodHlwZW9mIG9yaWdpbmFsVHlwZUV2ZW50ICE9PSAnc3RyaW5nJyB8fCAhZWxlbWVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgW2lzRGVsZWdhdGVkLCBjYWxsYWJsZSwgdHlwZUV2ZW50XSA9IG5vcm1hbGl6ZVBhcmFtZXRlcnMob3JpZ2luYWxUeXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbilcbiAgICBjb25zdCBpbk5hbWVzcGFjZSA9IHR5cGVFdmVudCAhPT0gb3JpZ2luYWxUeXBlRXZlbnRcbiAgICBjb25zdCBldmVudHMgPSBnZXRFbGVtZW50RXZlbnRzKGVsZW1lbnQpXG4gICAgY29uc3Qgc3RvcmVFbGVtZW50RXZlbnQgPSBldmVudHNbdHlwZUV2ZW50XSB8fCB7fVxuICAgIGNvbnN0IGlzTmFtZXNwYWNlID0gb3JpZ2luYWxUeXBlRXZlbnQuc3RhcnRzV2l0aCgnLicpXG5cbiAgICBpZiAodHlwZW9mIGNhbGxhYmxlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gU2ltcGxlc3QgY2FzZTogaGFuZGxlciBpcyBwYXNzZWQsIHJlbW92ZSB0aGF0IGxpc3RlbmVyIE9OTFkuXG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHN0b3JlRWxlbWVudEV2ZW50KS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHJlbW92ZUhhbmRsZXIoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIGNhbGxhYmxlLCBpc0RlbGVnYXRlZCA/IGhhbmRsZXIgOiBudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGlzTmFtZXNwYWNlKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnRFdmVudCBvZiBPYmplY3Qua2V5cyhldmVudHMpKSB7XG4gICAgICAgIHJlbW92ZU5hbWVzcGFjZWRIYW5kbGVycyhlbGVtZW50LCBldmVudHMsIGVsZW1lbnRFdmVudCwgb3JpZ2luYWxUeXBlRXZlbnQuc2xpY2UoMSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXlIYW5kbGVycyBvZiBPYmplY3Qua2V5cyhzdG9yZUVsZW1lbnRFdmVudCkpIHtcbiAgICAgIGNvbnN0IGhhbmRsZXJLZXkgPSBrZXlIYW5kbGVycy5yZXBsYWNlKHN0cmlwVWlkUmVnZXgsICcnKVxuXG4gICAgICBpZiAoIWluTmFtZXNwYWNlIHx8IG9yaWdpbmFsVHlwZUV2ZW50LmluY2x1ZGVzKGhhbmRsZXJLZXkpKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gc3RvcmVFbGVtZW50RXZlbnRba2V5SGFuZGxlcnNdXG4gICAgICAgIHJlbW92ZUhhbmRsZXIoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIGV2ZW50LmNhbGxhYmxlLCBldmVudC5kZWxlZ2F0aW9uU2VsZWN0b3IpXG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHRyaWdnZXIoZWxlbWVudCwgZXZlbnQsIGFyZ3MpIHtcbiAgICBpZiAodHlwZW9mIGV2ZW50ICE9PSAnc3RyaW5nJyB8fCAhZWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCAkID0gZ2V0alF1ZXJ5KClcbiAgICBjb25zdCB0eXBlRXZlbnQgPSBnZXRUeXBlRXZlbnQoZXZlbnQpXG4gICAgY29uc3QgaW5OYW1lc3BhY2UgPSBldmVudCAhPT0gdHlwZUV2ZW50XG5cbiAgICBsZXQgalF1ZXJ5RXZlbnQgPSBudWxsXG4gICAgbGV0IGJ1YmJsZXMgPSB0cnVlXG4gICAgbGV0IG5hdGl2ZURpc3BhdGNoID0gdHJ1ZVxuICAgIGxldCBkZWZhdWx0UHJldmVudGVkID0gZmFsc2VcblxuICAgIGlmIChpbk5hbWVzcGFjZSAmJiAkKSB7XG4gICAgICBqUXVlcnlFdmVudCA9ICQuRXZlbnQoZXZlbnQsIGFyZ3MpXG5cbiAgICAgICQoZWxlbWVudCkudHJpZ2dlcihqUXVlcnlFdmVudClcbiAgICAgIGJ1YmJsZXMgPSAhalF1ZXJ5RXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKVxuICAgICAgbmF0aXZlRGlzcGF0Y2ggPSAhalF1ZXJ5RXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKVxuICAgICAgZGVmYXVsdFByZXZlbnRlZCA9IGpRdWVyeUV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpXG4gICAgfVxuXG4gICAgbGV0IGV2dCA9IG5ldyBFdmVudChldmVudCwgeyBidWJibGVzLCBjYW5jZWxhYmxlOiB0cnVlIH0pXG4gICAgZXZ0ID0gaHlkcmF0ZU9iaihldnQsIGFyZ3MpXG5cbiAgICBpZiAoZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KClcbiAgICB9XG5cbiAgICBpZiAobmF0aXZlRGlzcGF0Y2gpIHtcbiAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldnQpXG4gICAgfVxuXG4gICAgaWYgKGV2dC5kZWZhdWx0UHJldmVudGVkICYmIGpRdWVyeUV2ZW50KSB7XG4gICAgICBqUXVlcnlFdmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGV2dFxuICB9XG59XG5cbmZ1bmN0aW9uIGh5ZHJhdGVPYmoob2JqLCBtZXRhKSB7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1ldGEgfHwge30pKSB7XG4gICAgdHJ5IHtcbiAgICAgIG9ialtrZXldID0gdmFsdWVcbiAgICB9IGNhdGNoIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqXG59XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50SGFuZGxlclxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBkb20vZGF0YS5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgZWxlbWVudE1hcCA9IG5ldyBNYXAoKVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldChlbGVtZW50LCBrZXksIGluc3RhbmNlKSB7XG4gICAgaWYgKCFlbGVtZW50TWFwLmhhcyhlbGVtZW50KSkge1xuICAgICAgZWxlbWVudE1hcC5zZXQoZWxlbWVudCwgbmV3IE1hcCgpKVxuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTWFwID0gZWxlbWVudE1hcC5nZXQoZWxlbWVudClcblxuICAgIC8vIG1ha2UgaXQgY2xlYXIgd2Ugb25seSB3YW50IG9uZSBpbnN0YW5jZSBwZXIgZWxlbWVudFxuICAgIC8vIGNhbiBiZSByZW1vdmVkIGxhdGVyIHdoZW4gbXVsdGlwbGUga2V5L2luc3RhbmNlcyBhcmUgZmluZSB0byBiZSB1c2VkXG4gICAgaWYgKCFpbnN0YW5jZU1hcC5oYXMoa2V5KSAmJiBpbnN0YW5jZU1hcC5zaXplICE9PSAwKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihgQm9vdHN0cmFwIGRvZXNuJ3QgYWxsb3cgbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBwZXIgZWxlbWVudC4gQm91bmQgaW5zdGFuY2U6ICR7QXJyYXkuZnJvbShpbnN0YW5jZU1hcC5rZXlzKCkpWzBdfS5gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaW5zdGFuY2VNYXAuc2V0KGtleSwgaW5zdGFuY2UpXG4gIH0sXG5cbiAgZ2V0KGVsZW1lbnQsIGtleSkge1xuICAgIGlmIChlbGVtZW50TWFwLmhhcyhlbGVtZW50KSkge1xuICAgICAgcmV0dXJuIGVsZW1lbnRNYXAuZ2V0KGVsZW1lbnQpLmdldChrZXkpIHx8IG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LFxuXG4gIHJlbW92ZShlbGVtZW50LCBrZXkpIHtcbiAgICBpZiAoIWVsZW1lbnRNYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZU1hcCA9IGVsZW1lbnRNYXAuZ2V0KGVsZW1lbnQpXG5cbiAgICBpbnN0YW5jZU1hcC5kZWxldGUoa2V5KVxuXG4gICAgLy8gZnJlZSB1cCBlbGVtZW50IHJlZmVyZW5jZXMgaWYgdGhlcmUgYXJlIG5vIGluc3RhbmNlcyBsZWZ0IGZvciBhbiBlbGVtZW50XG4gICAgaWYgKGluc3RhbmNlTWFwLnNpemUgPT09IDApIHtcbiAgICAgIGVsZW1lbnRNYXAuZGVsZXRlKGVsZW1lbnQpXG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGRvbS9tYW5pcHVsYXRvci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSAndHJ1ZScpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAodmFsdWUgPT09IE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKSkge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUpXG4gIH1cblxuICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSAnbnVsbCcpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRGF0YUtleShrZXkpIHtcbiAgcmV0dXJuIGtleS5yZXBsYWNlKC9bQS1aXS9nLCBjaHIgPT4gYC0ke2Noci50b0xvd2VyQ2FzZSgpfWApXG59XG5cbmNvbnN0IE1hbmlwdWxhdG9yID0ge1xuICBzZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIGtleSwgdmFsdWUpIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShgZGF0YS1icy0ke25vcm1hbGl6ZURhdGFLZXkoa2V5KX1gLCB2YWx1ZSlcbiAgfSxcblxuICByZW1vdmVEYXRhQXR0cmlidXRlKGVsZW1lbnQsIGtleSkge1xuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGBkYXRhLWJzLSR7bm9ybWFsaXplRGF0YUtleShrZXkpfWApXG4gIH0sXG5cbiAgZ2V0RGF0YUF0dHJpYnV0ZXMoZWxlbWVudCkge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHt9XG4gICAgY29uc3QgYnNLZXlzID0gT2JqZWN0LmtleXMoZWxlbWVudC5kYXRhc2V0KS5maWx0ZXIoa2V5ID0+IGtleS5zdGFydHNXaXRoKCdicycpICYmICFrZXkuc3RhcnRzV2l0aCgnYnNDb25maWcnKSlcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGJzS2V5cykge1xuICAgICAgbGV0IHB1cmVLZXkgPSBrZXkucmVwbGFjZSgvXmJzLywgJycpXG4gICAgICBwdXJlS2V5ID0gcHVyZUtleS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHB1cmVLZXkuc2xpY2UoMSwgcHVyZUtleS5sZW5ndGgpXG4gICAgICBhdHRyaWJ1dGVzW3B1cmVLZXldID0gbm9ybWFsaXplRGF0YShlbGVtZW50LmRhdGFzZXRba2V5XSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0cmlidXRlc1xuICB9LFxuXG4gIGdldERhdGFBdHRyaWJ1dGUoZWxlbWVudCwga2V5KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZURhdGEoZWxlbWVudC5nZXRBdHRyaWJ1dGUoYGRhdGEtYnMtJHtub3JtYWxpemVEYXRhS2V5KGtleSl9YCkpXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFuaXB1bGF0b3JcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogdXRpbC9jb25maWcuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgeyBpc0VsZW1lbnQsIHRvVHlwZSB9IGZyb20gJy4vaW5kZXgnXG5pbXBvcnQgTWFuaXB1bGF0b3IgZnJvbSAnLi4vZG9tL21hbmlwdWxhdG9yJ1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBDb25maWcge1xuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIHt9XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlIHN0YXRpYyBtZXRob2QgXCJOQU1FXCIsIGZvciBlYWNoIGNvbXBvbmVudCEnKVxuICB9XG5cbiAgX2dldENvbmZpZyhjb25maWcpIHtcbiAgICBjb25maWcgPSB0aGlzLl9tZXJnZUNvbmZpZ09iaihjb25maWcpXG4gICAgY29uZmlnID0gdGhpcy5fY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpXG4gICAgdGhpcy5fdHlwZUNoZWNrQ29uZmlnKGNvbmZpZylcbiAgICByZXR1cm4gY29uZmlnXG4gIH1cblxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnXG4gIH1cblxuICBfbWVyZ2VDb25maWdPYmooY29uZmlnLCBlbGVtZW50KSB7XG4gICAgY29uc3QganNvbkNvbmZpZyA9IGlzRWxlbWVudChlbGVtZW50KSA/IE1hbmlwdWxhdG9yLmdldERhdGFBdHRyaWJ1dGUoZWxlbWVudCwgJ2NvbmZpZycpIDoge30gLy8gdHJ5IHRvIHBhcnNlXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0LFxuICAgICAgLi4uKHR5cGVvZiBqc29uQ29uZmlnID09PSAnb2JqZWN0JyA/IGpzb25Db25maWcgOiB7fSksXG4gICAgICAuLi4oaXNFbGVtZW50KGVsZW1lbnQpID8gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZXMoZWxlbWVudCkgOiB7fSksXG4gICAgICAuLi4odHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgPyBjb25maWcgOiB7fSlcbiAgICB9XG4gIH1cblxuICBfdHlwZUNoZWNrQ29uZmlnKGNvbmZpZywgY29uZmlnVHlwZXMgPSB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBPYmplY3Qua2V5cyhjb25maWdUeXBlcykpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVHlwZXMgPSBjb25maWdUeXBlc1twcm9wZXJ0eV1cbiAgICAgIGNvbnN0IHZhbHVlID0gY29uZmlnW3Byb3BlcnR5XVxuICAgICAgY29uc3QgdmFsdWVUeXBlID0gaXNFbGVtZW50KHZhbHVlKSA/ICdlbGVtZW50JyA6IHRvVHlwZSh2YWx1ZSlcblxuICAgICAgaWYgKCFuZXcgUmVnRXhwKGV4cGVjdGVkVHlwZXMpLnRlc3QodmFsdWVUeXBlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IuTkFNRS50b1VwcGVyQ2FzZSgpfTogT3B0aW9uIFwiJHtwcm9wZXJ0eX1cIiBwcm92aWRlZCB0eXBlIFwiJHt2YWx1ZVR5cGV9XCIgYnV0IGV4cGVjdGVkIHR5cGUgXCIke2V4cGVjdGVkVHlwZXN9XCIuYFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbmZpZ1xuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBiYXNlLWNvbXBvbmVudC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCBEYXRhIGZyb20gJy4vZG9tL2RhdGEnXG5pbXBvcnQgeyBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uLCBnZXRFbGVtZW50IH0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IENvbmZpZyBmcm9tICcuL3V0aWwvY29uZmlnJ1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IFZFUlNJT04gPSAnNS4yLjMnXG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEJhc2VDb21wb25lbnQgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcigpXG5cbiAgICBlbGVtZW50ID0gZ2V0RWxlbWVudChlbGVtZW50KVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnRcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKVxuXG4gICAgRGF0YS5zZXQodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSwgdGhpcylcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBkaXNwb3NlKCkge1xuICAgIERhdGEucmVtb3ZlKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuREFUQV9LRVkpXG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkVWRU5UX0tFWSlcblxuICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKSB7XG4gICAgICB0aGlzW3Byb3BlcnR5TmFtZV0gPSBudWxsXG4gICAgfVxuICB9XG5cbiAgX3F1ZXVlQ2FsbGJhY2soY2FsbGJhY2ssIGVsZW1lbnQsIGlzQW5pbWF0ZWQgPSB0cnVlKSB7XG4gICAgZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbihjYWxsYmFjaywgZWxlbWVudCwgaXNBbmltYXRlZClcbiAgfVxuXG4gIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgY29uZmlnID0gdGhpcy5fbWVyZ2VDb25maWdPYmooY29uZmlnLCB0aGlzLl9lbGVtZW50KVxuICAgIGNvbmZpZyA9IHRoaXMuX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKVxuICAgIHRoaXMuX3R5cGVDaGVja0NvbmZpZyhjb25maWcpXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBnZXRJbnN0YW5jZShlbGVtZW50KSB7XG4gICAgcmV0dXJuIERhdGEuZ2V0KGdldEVsZW1lbnQoZWxlbWVudCksIHRoaXMuREFUQV9LRVkpXG4gIH1cblxuICBzdGF0aWMgZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50LCBjb25maWcgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmdldEluc3RhbmNlKGVsZW1lbnQpIHx8IG5ldyB0aGlzKGVsZW1lbnQsIHR5cGVvZiBjb25maWcgPT09ICdvYmplY3QnID8gY29uZmlnIDogbnVsbClcbiAgfVxuXG4gIHN0YXRpYyBnZXQgVkVSU0lPTigpIHtcbiAgICByZXR1cm4gVkVSU0lPTlxuICB9XG5cbiAgc3RhdGljIGdldCBEQVRBX0tFWSgpIHtcbiAgICByZXR1cm4gYGJzLiR7dGhpcy5OQU1FfWBcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRVZFTlRfS0VZKCkge1xuICAgIHJldHVybiBgLiR7dGhpcy5EQVRBX0tFWX1gXG4gIH1cblxuICBzdGF0aWMgZXZlbnROYW1lKG5hbWUpIHtcbiAgICByZXR1cm4gYCR7bmFtZX0ke3RoaXMuRVZFTlRfS0VZfWBcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCYXNlQ29tcG9uZW50XG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvY29tcG9uZW50LWZ1bmN0aW9ucy5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCBFdmVudEhhbmRsZXIgZnJvbSAnLi4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgeyBnZXRFbGVtZW50RnJvbVNlbGVjdG9yLCBpc0Rpc2FibGVkIH0gZnJvbSAnLi9pbmRleCdcblxuY29uc3QgZW5hYmxlRGlzbWlzc1RyaWdnZXIgPSAoY29tcG9uZW50LCBtZXRob2QgPSAnaGlkZScpID0+IHtcbiAgY29uc3QgY2xpY2tFdmVudCA9IGBjbGljay5kaXNtaXNzJHtjb21wb25lbnQuRVZFTlRfS0VZfWBcbiAgY29uc3QgbmFtZSA9IGNvbXBvbmVudC5OQU1FXG5cbiAgRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBjbGlja0V2ZW50LCBgW2RhdGEtYnMtZGlzbWlzcz1cIiR7bmFtZX1cIl1gLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBpZiAoWydBJywgJ0FSRUEnXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfVxuXG4gICAgaWYgKGlzRGlzYWJsZWQodGhpcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcykgfHwgdGhpcy5jbG9zZXN0KGAuJHtuYW1lfWApXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnQuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpXG5cbiAgICAvLyBNZXRob2QgYXJndW1lbnQgaXMgbGVmdCwgZm9yIEFsZXJ0IGFuZCBvbmx5LCBhcyBpdCBkb2Vzbid0IGltcGxlbWVudCB0aGUgJ2hpZGUnIG1ldGhvZFxuICAgIGluc3RhbmNlW21ldGhvZF0oKVxuICB9KVxufVxuXG5leHBvcnQge1xuICBlbmFibGVEaXNtaXNzVHJpZ2dlclxufVxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBhbGVydC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7IGRlZmluZUpRdWVyeVBsdWdpbiB9IGZyb20gJy4vdXRpbC9pbmRleCdcbmltcG9ydCBFdmVudEhhbmRsZXIgZnJvbSAnLi9kb20vZXZlbnQtaGFuZGxlcidcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4vYmFzZS1jb21wb25lbnQnXG5pbXBvcnQgeyBlbmFibGVEaXNtaXNzVHJpZ2dlciB9IGZyb20gJy4vdXRpbC9jb21wb25lbnQtZnVuY3Rpb25zJ1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUgPSAnYWxlcnQnXG5jb25zdCBEQVRBX0tFWSA9ICdicy5hbGVydCdcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5cbmNvbnN0IEVWRU5UX0NMT1NFID0gYGNsb3NlJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfQ0xPU0VEID0gYGNsb3NlZCR7RVZFTlRfS0VZfWBcbmNvbnN0IENMQVNTX05BTUVfRkFERSA9ICdmYWRlJ1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XID0gJ3Nob3cnXG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEFsZXJ0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBQdWJsaWNcbiAgY2xvc2UoKSB7XG4gICAgY29uc3QgY2xvc2VFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0NMT1NFKVxuXG4gICAgaWYgKGNsb3NlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVylcblxuICAgIGNvbnN0IGlzQW5pbWF0ZWQgPSB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUpXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB0aGlzLl9kZXN0cm95RWxlbWVudCgpLCB0aGlzLl9lbGVtZW50LCBpc0FuaW1hdGVkKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfZGVzdHJveUVsZW1lbnQoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKVxuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0NMT1NFRClcbiAgICB0aGlzLmRpc3Bvc2UoKVxuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gQWxlcnQuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSh0aGlzKVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbmVuYWJsZURpc21pc3NUcmlnZ2VyKEFsZXJ0LCAnY2xvc2UnKVxuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihBbGVydClcblxuZXhwb3J0IGRlZmF1bHQgQWxlcnRcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogYnV0dG9uLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IHsgZGVmaW5lSlF1ZXJ5UGx1Z2luIH0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ2J1dHRvbidcbmNvbnN0IERBVEFfS0VZID0gJ2JzLmJ1dHRvbidcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5jb25zdCBEQVRBX0FQSV9LRVkgPSAnLmRhdGEtYXBpJ1xuXG5jb25zdCBDTEFTU19OQU1FX0FDVElWRSA9ICdhY3RpdmUnXG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSA9ICdbZGF0YS1icy10b2dnbGU9XCJidXR0b25cIl0nXG5jb25zdCBFVkVOVF9DTElDS19EQVRBX0FQSSA9IGBjbGljayR7RVZFTlRfS0VZfSR7REFUQV9BUElfS0VZfWBcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQnV0dG9uIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBQdWJsaWNcbiAgdG9nZ2xlKCkge1xuICAgIC8vIFRvZ2dsZSBjbGFzcyBhbmQgc3luYyB0aGUgYGFyaWEtcHJlc3NlZGAgYXR0cmlidXRlIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYC50b2dnbGUoKWAgbWV0aG9kXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShDTEFTU19OQU1FX0FDVElWRSkpXG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBCdXR0b24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKVxuXG4gICAgICBpZiAoY29uZmlnID09PSAndG9nZ2xlJykge1xuICAgICAgICBkYXRhW2NvbmZpZ10oKVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEksIFNFTEVDVE9SX0RBVEFfVE9HR0xFLCBldmVudCA9PiB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICBjb25zdCBidXR0b24gPSBldmVudC50YXJnZXQuY2xvc2VzdChTRUxFQ1RPUl9EQVRBX1RPR0dMRSlcbiAgY29uc3QgZGF0YSA9IEJ1dHRvbi5nZXRPckNyZWF0ZUluc3RhbmNlKGJ1dHRvbilcblxuICBkYXRhLnRvZ2dsZSgpXG59KVxuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihCdXR0b24pXG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvblxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBkb20vc2VsZWN0b3ItZW5naW5lLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IHsgaXNEaXNhYmxlZCwgaXNWaXNpYmxlIH0gZnJvbSAnLi4vdXRpbC9pbmRleCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBTZWxlY3RvckVuZ2luZSA9IHtcbiAgZmluZChzZWxlY3RvciwgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbC5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKSlcbiAgfSxcblxuICBmaW5kT25lKHNlbGVjdG9yLCBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgcmV0dXJuIEVsZW1lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3IuY2FsbChlbGVtZW50LCBzZWxlY3RvcilcbiAgfSxcblxuICBjaGlsZHJlbihlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uZWxlbWVudC5jaGlsZHJlbikuZmlsdGVyKGNoaWxkID0+IGNoaWxkLm1hdGNoZXMoc2VsZWN0b3IpKVxuICB9LFxuXG4gIHBhcmVudHMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICBjb25zdCBwYXJlbnRzID0gW11cbiAgICBsZXQgYW5jZXN0b3IgPSBlbGVtZW50LnBhcmVudE5vZGUuY2xvc2VzdChzZWxlY3RvcilcblxuICAgIHdoaWxlIChhbmNlc3Rvcikge1xuICAgICAgcGFyZW50cy5wdXNoKGFuY2VzdG9yKVxuICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnROb2RlLmNsb3Nlc3Qoc2VsZWN0b3IpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudHNcbiAgfSxcblxuICBwcmV2KGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgbGV0IHByZXZpb3VzID0gZWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nXG5cbiAgICB3aGlsZSAocHJldmlvdXMpIHtcbiAgICAgIGlmIChwcmV2aW91cy5tYXRjaGVzKHNlbGVjdG9yKSkge1xuICAgICAgICByZXR1cm4gW3ByZXZpb3VzXVxuICAgICAgfVxuXG4gICAgICBwcmV2aW91cyA9IHByZXZpb3VzLnByZXZpb3VzRWxlbWVudFNpYmxpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gW11cbiAgfSxcbiAgLy8gVE9ETzogdGhpcyBpcyBub3cgdW51c2VkOyByZW1vdmUgbGF0ZXIgYWxvbmcgd2l0aCBwcmV2KClcbiAgbmV4dChlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIGxldCBuZXh0ID0gZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmdcblxuICAgIHdoaWxlIChuZXh0KSB7XG4gICAgICBpZiAobmV4dC5tYXRjaGVzKHNlbGVjdG9yKSkge1xuICAgICAgICByZXR1cm4gW25leHRdXG4gICAgICB9XG5cbiAgICAgIG5leHQgPSBuZXh0Lm5leHRFbGVtZW50U2libGluZ1xuICAgIH1cblxuICAgIHJldHVybiBbXVxuICB9LFxuXG4gIGZvY3VzYWJsZUNoaWxkcmVuKGVsZW1lbnQpIHtcbiAgICBjb25zdCBmb2N1c2FibGVzID0gW1xuICAgICAgJ2EnLFxuICAgICAgJ2J1dHRvbicsXG4gICAgICAnaW5wdXQnLFxuICAgICAgJ3RleHRhcmVhJyxcbiAgICAgICdzZWxlY3QnLFxuICAgICAgJ2RldGFpbHMnLFxuICAgICAgJ1t0YWJpbmRleF0nLFxuICAgICAgJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJ1xuICAgIF0ubWFwKHNlbGVjdG9yID0+IGAke3NlbGVjdG9yfTpub3QoW3RhYmluZGV4Xj1cIi1cIl0pYCkuam9pbignLCcpXG5cbiAgICByZXR1cm4gdGhpcy5maW5kKGZvY3VzYWJsZXMsIGVsZW1lbnQpLmZpbHRlcihlbCA9PiAhaXNEaXNhYmxlZChlbCkgJiYgaXNWaXNpYmxlKGVsKSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3RvckVuZ2luZVxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB1dGlsL3N3aXBlLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IENvbmZpZyBmcm9tICcuL2NvbmZpZydcbmltcG9ydCBFdmVudEhhbmRsZXIgZnJvbSAnLi4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgeyBleGVjdXRlIH0gZnJvbSAnLi9pbmRleCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ3N3aXBlJ1xuY29uc3QgRVZFTlRfS0VZID0gJy5icy5zd2lwZSdcbmNvbnN0IEVWRU5UX1RPVUNIU1RBUlQgPSBgdG91Y2hzdGFydCR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1RPVUNITU9WRSA9IGB0b3VjaG1vdmUke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9UT1VDSEVORCA9IGB0b3VjaGVuZCR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1BPSU5URVJET1dOID0gYHBvaW50ZXJkb3duJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfUE9JTlRFUlVQID0gYHBvaW50ZXJ1cCR7RVZFTlRfS0VZfWBcbmNvbnN0IFBPSU5URVJfVFlQRV9UT1VDSCA9ICd0b3VjaCdcbmNvbnN0IFBPSU5URVJfVFlQRV9QRU4gPSAncGVuJ1xuY29uc3QgQ0xBU1NfTkFNRV9QT0lOVEVSX0VWRU5UID0gJ3BvaW50ZXItZXZlbnQnXG5jb25zdCBTV0lQRV9USFJFU0hPTEQgPSA0MFxuXG5jb25zdCBEZWZhdWx0ID0ge1xuICBlbmRDYWxsYmFjazogbnVsbCxcbiAgbGVmdENhbGxiYWNrOiBudWxsLFxuICByaWdodENhbGxiYWNrOiBudWxsXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBlbmRDYWxsYmFjazogJyhmdW5jdGlvbnxudWxsKScsXG4gIGxlZnRDYWxsYmFjazogJyhmdW5jdGlvbnxudWxsKScsXG4gIHJpZ2h0Q2FsbGJhY2s6ICcoZnVuY3Rpb258bnVsbCknXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFN3aXBlIGV4dGVuZHMgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIVN3aXBlLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpXG4gICAgdGhpcy5fZGVsdGFYID0gMFxuICAgIHRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzID0gQm9vbGVhbih3aW5kb3cuUG9pbnRlckV2ZW50KVxuICAgIHRoaXMuX2luaXRFdmVudHMoKVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBkaXNwb3NlKCkge1xuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfc3RhcnQoZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzKSB7XG4gICAgICB0aGlzLl9kZWx0YVggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFhcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50SXNQb2ludGVyUGVuVG91Y2goZXZlbnQpKSB7XG4gICAgICB0aGlzLl9kZWx0YVggPSBldmVudC5jbGllbnRYXG4gICAgfVxuICB9XG5cbiAgX2VuZChldmVudCkge1xuICAgIGlmICh0aGlzLl9ldmVudElzUG9pbnRlclBlblRvdWNoKGV2ZW50KSkge1xuICAgICAgdGhpcy5fZGVsdGFYID0gZXZlbnQuY2xpZW50WCAtIHRoaXMuX2RlbHRhWFxuICAgIH1cblxuICAgIHRoaXMuX2hhbmRsZVN3aXBlKClcbiAgICBleGVjdXRlKHRoaXMuX2NvbmZpZy5lbmRDYWxsYmFjaylcbiAgfVxuXG4gIF9tb3ZlKGV2ZW50KSB7XG4gICAgdGhpcy5fZGVsdGFYID0gZXZlbnQudG91Y2hlcyAmJiBldmVudC50b3VjaGVzLmxlbmd0aCA+IDEgP1xuICAgICAgMCA6XG4gICAgICBldmVudC50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLl9kZWx0YVhcbiAgfVxuXG4gIF9oYW5kbGVTd2lwZSgpIHtcbiAgICBjb25zdCBhYnNEZWx0YVggPSBNYXRoLmFicyh0aGlzLl9kZWx0YVgpXG5cbiAgICBpZiAoYWJzRGVsdGFYIDw9IFNXSVBFX1RIUkVTSE9MRCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gYWJzRGVsdGFYIC8gdGhpcy5fZGVsdGFYXG5cbiAgICB0aGlzLl9kZWx0YVggPSAwXG5cbiAgICBpZiAoIWRpcmVjdGlvbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZXhlY3V0ZShkaXJlY3Rpb24gPiAwID8gdGhpcy5fY29uZmlnLnJpZ2h0Q2FsbGJhY2sgOiB0aGlzLl9jb25maWcubGVmdENhbGxiYWNrKVxuICB9XG5cbiAgX2luaXRFdmVudHMoKSB7XG4gICAgaWYgKHRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzKSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfUE9JTlRFUkRPV04sIGV2ZW50ID0+IHRoaXMuX3N0YXJ0KGV2ZW50KSlcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9QT0lOVEVSVVAsIGV2ZW50ID0+IHRoaXMuX2VuZChldmVudCkpXG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1BPSU5URVJfRVZFTlQpXG4gICAgfSBlbHNlIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSFNUQVJULCBldmVudCA9PiB0aGlzLl9zdGFydChldmVudCkpXG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfVE9VQ0hNT1ZFLCBldmVudCA9PiB0aGlzLl9tb3ZlKGV2ZW50KSlcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSEVORCwgZXZlbnQgPT4gdGhpcy5fZW5kKGV2ZW50KSlcbiAgICB9XG4gIH1cblxuICBfZXZlbnRJc1BvaW50ZXJQZW5Ub3VjaChldmVudCkge1xuICAgIHJldHVybiB0aGlzLl9zdXBwb3J0UG9pbnRlckV2ZW50cyAmJiAoZXZlbnQucG9pbnRlclR5cGUgPT09IFBPSU5URVJfVFlQRV9QRU4gfHwgZXZlbnQucG9pbnRlclR5cGUgPT09IFBPSU5URVJfVFlQRV9UT1VDSClcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgaXNTdXBwb3J0ZWQoKSB7XG4gICAgcmV0dXJuICdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCB8fCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAwXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3dpcGVcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogY2Fyb3VzZWwuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQge1xuICBkZWZpbmVKUXVlcnlQbHVnaW4sXG4gIGdldEVsZW1lbnRGcm9tU2VsZWN0b3IsXG4gIGdldE5leHRBY3RpdmVFbGVtZW50LFxuICBpc1JUTCxcbiAgaXNWaXNpYmxlLFxuICByZWZsb3csXG4gIHRyaWdnZXJUcmFuc2l0aW9uRW5kXG59IGZyb20gJy4vdXRpbC9pbmRleCdcbmltcG9ydCBFdmVudEhhbmRsZXIgZnJvbSAnLi9kb20vZXZlbnQtaGFuZGxlcidcbmltcG9ydCBNYW5pcHVsYXRvciBmcm9tICcuL2RvbS9tYW5pcHVsYXRvcidcbmltcG9ydCBTZWxlY3RvckVuZ2luZSBmcm9tICcuL2RvbS9zZWxlY3Rvci1lbmdpbmUnXG5pbXBvcnQgU3dpcGUgZnJvbSAnLi91dGlsL3N3aXBlJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ2Nhcm91c2VsJ1xuY29uc3QgREFUQV9LRVkgPSAnYnMuY2Fyb3VzZWwnXG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YFxuY29uc3QgREFUQV9BUElfS0VZID0gJy5kYXRhLWFwaSdcblxuY29uc3QgQVJST1dfTEVGVF9LRVkgPSAnQXJyb3dMZWZ0J1xuY29uc3QgQVJST1dfUklHSFRfS0VZID0gJ0Fycm93UmlnaHQnXG5jb25zdCBUT1VDSEVWRU5UX0NPTVBBVF9XQUlUID0gNTAwIC8vIFRpbWUgZm9yIG1vdXNlIGNvbXBhdCBldmVudHMgdG8gZmlyZSBhZnRlciB0b3VjaFxuXG5jb25zdCBPUkRFUl9ORVhUID0gJ25leHQnXG5jb25zdCBPUkRFUl9QUkVWID0gJ3ByZXYnXG5jb25zdCBESVJFQ1RJT05fTEVGVCA9ICdsZWZ0J1xuY29uc3QgRElSRUNUSU9OX1JJR0hUID0gJ3JpZ2h0J1xuXG5jb25zdCBFVkVOVF9TTElERSA9IGBzbGlkZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1NMSUQgPSBgc2xpZCR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0tFWURPV04gPSBga2V5ZG93biR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX01PVVNFRU5URVIgPSBgbW91c2VlbnRlciR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX01PVVNFTEVBVkUgPSBgbW91c2VsZWF2ZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0RSQUdfU1RBUlQgPSBgZHJhZ3N0YXJ0JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSA9IGBsb2FkJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkgPSBgY2xpY2ske0VWRU5UX0tFWX0ke0RBVEFfQVBJX0tFWX1gXG5cbmNvbnN0IENMQVNTX05BTUVfQ0FST1VTRUwgPSAnY2Fyb3VzZWwnXG5jb25zdCBDTEFTU19OQU1FX0FDVElWRSA9ICdhY3RpdmUnXG5jb25zdCBDTEFTU19OQU1FX1NMSURFID0gJ3NsaWRlJ1xuY29uc3QgQ0xBU1NfTkFNRV9FTkQgPSAnY2Fyb3VzZWwtaXRlbS1lbmQnXG5jb25zdCBDTEFTU19OQU1FX1NUQVJUID0gJ2Nhcm91c2VsLWl0ZW0tc3RhcnQnXG5jb25zdCBDTEFTU19OQU1FX05FWFQgPSAnY2Fyb3VzZWwtaXRlbS1uZXh0J1xuY29uc3QgQ0xBU1NfTkFNRV9QUkVWID0gJ2Nhcm91c2VsLWl0ZW0tcHJldidcblxuY29uc3QgU0VMRUNUT1JfQUNUSVZFID0gJy5hY3RpdmUnXG5jb25zdCBTRUxFQ1RPUl9JVEVNID0gJy5jYXJvdXNlbC1pdGVtJ1xuY29uc3QgU0VMRUNUT1JfQUNUSVZFX0lURU0gPSBTRUxFQ1RPUl9BQ1RJVkUgKyBTRUxFQ1RPUl9JVEVNXG5jb25zdCBTRUxFQ1RPUl9JVEVNX0lNRyA9ICcuY2Fyb3VzZWwtaXRlbSBpbWcnXG5jb25zdCBTRUxFQ1RPUl9JTkRJQ0FUT1JTID0gJy5jYXJvdXNlbC1pbmRpY2F0b3JzJ1xuY29uc3QgU0VMRUNUT1JfREFUQV9TTElERSA9ICdbZGF0YS1icy1zbGlkZV0sIFtkYXRhLWJzLXNsaWRlLXRvXSdcbmNvbnN0IFNFTEVDVE9SX0RBVEFfUklERSA9ICdbZGF0YS1icy1yaWRlPVwiY2Fyb3VzZWxcIl0nXG5cbmNvbnN0IEtFWV9UT19ESVJFQ1RJT04gPSB7XG4gIFtBUlJPV19MRUZUX0tFWV06IERJUkVDVElPTl9SSUdIVCxcbiAgW0FSUk9XX1JJR0hUX0tFWV06IERJUkVDVElPTl9MRUZUXG59XG5cbmNvbnN0IERlZmF1bHQgPSB7XG4gIGludGVydmFsOiA1MDAwLFxuICBrZXlib2FyZDogdHJ1ZSxcbiAgcGF1c2U6ICdob3ZlcicsXG4gIHJpZGU6IGZhbHNlLFxuICB0b3VjaDogdHJ1ZSxcbiAgd3JhcDogdHJ1ZVxufVxuXG5jb25zdCBEZWZhdWx0VHlwZSA9IHtcbiAgaW50ZXJ2YWw6ICcobnVtYmVyfGJvb2xlYW4pJywgLy8gVE9ETzp2NiByZW1vdmUgYm9vbGVhbiBzdXBwb3J0XG4gIGtleWJvYXJkOiAnYm9vbGVhbicsXG4gIHBhdXNlOiAnKHN0cmluZ3xib29sZWFuKScsXG4gIHJpZGU6ICcoYm9vbGVhbnxzdHJpbmcpJyxcbiAgdG91Y2g6ICdib29sZWFuJyxcbiAgd3JhcDogJ2Jvb2xlYW4nXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIENhcm91c2VsIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZylcblxuICAgIHRoaXMuX2ludGVydmFsID0gbnVsbFxuICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSBudWxsXG4gICAgdGhpcy5faXNTbGlkaW5nID0gZmFsc2VcbiAgICB0aGlzLnRvdWNoVGltZW91dCA9IG51bGxcbiAgICB0aGlzLl9zd2lwZUhlbHBlciA9IG51bGxcblxuICAgIHRoaXMuX2luZGljYXRvcnNFbGVtZW50ID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9JTkRJQ0FUT1JTLCB0aGlzLl9lbGVtZW50KVxuICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKClcblxuICAgIGlmICh0aGlzLl9jb25maWcucmlkZSA9PT0gQ0xBU1NfTkFNRV9DQVJPVVNFTCkge1xuICAgICAgdGhpcy5jeWNsZSgpXG4gICAgfVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBuZXh0KCkge1xuICAgIHRoaXMuX3NsaWRlKE9SREVSX05FWFQpXG4gIH1cblxuICBuZXh0V2hlblZpc2libGUoKSB7XG4gICAgLy8gRklYTUUgVE9ETyB1c2UgYGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZWBcbiAgICAvLyBEb24ndCBjYWxsIG5leHQgd2hlbiB0aGUgcGFnZSBpc24ndCB2aXNpYmxlXG4gICAgLy8gb3IgdGhlIGNhcm91c2VsIG9yIGl0cyBwYXJlbnQgaXNuJ3QgdmlzaWJsZVxuICAgIGlmICghZG9jdW1lbnQuaGlkZGVuICYmIGlzVmlzaWJsZSh0aGlzLl9lbGVtZW50KSkge1xuICAgICAgdGhpcy5uZXh0KClcbiAgICB9XG4gIH1cblxuICBwcmV2KCkge1xuICAgIHRoaXMuX3NsaWRlKE9SREVSX1BSRVYpXG4gIH1cblxuICBwYXVzZSgpIHtcbiAgICBpZiAodGhpcy5faXNTbGlkaW5nKSB7XG4gICAgICB0cmlnZ2VyVHJhbnNpdGlvbkVuZCh0aGlzLl9lbGVtZW50KVxuICAgIH1cblxuICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKVxuICB9XG5cbiAgY3ljbGUoKSB7XG4gICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpXG4gICAgdGhpcy5fdXBkYXRlSW50ZXJ2YWwoKVxuXG4gICAgdGhpcy5faW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLm5leHRXaGVuVmlzaWJsZSgpLCB0aGlzLl9jb25maWcuaW50ZXJ2YWwpXG4gIH1cblxuICBfbWF5YmVFbmFibGVDeWNsZSgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5yaWRlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNTbGlkaW5nKSB7XG4gICAgICBFdmVudEhhbmRsZXIub25lKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NMSUQsICgpID0+IHRoaXMuY3ljbGUoKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuY3ljbGUoKVxuICB9XG5cbiAgdG8oaW5kZXgpIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuX2dldEl0ZW1zKClcbiAgICBpZiAoaW5kZXggPiBpdGVtcy5sZW5ndGggLSAxIHx8IGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzU2xpZGluZykge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uZSh0aGlzLl9lbGVtZW50LCBFVkVOVF9TTElELCAoKSA9PiB0aGlzLnRvKGluZGV4KSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5fZ2V0SXRlbUluZGV4KHRoaXMuX2dldEFjdGl2ZSgpKVxuICAgIGlmIChhY3RpdmVJbmRleCA9PT0gaW5kZXgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG9yZGVyID0gaW5kZXggPiBhY3RpdmVJbmRleCA/IE9SREVSX05FWFQgOiBPUkRFUl9QUkVWXG5cbiAgICB0aGlzLl9zbGlkZShvcmRlciwgaXRlbXNbaW5kZXhdKVxuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBpZiAodGhpcy5fc3dpcGVIZWxwZXIpIHtcbiAgICAgIHRoaXMuX3N3aXBlSGVscGVyLmRpc3Bvc2UoKVxuICAgIH1cblxuICAgIHN1cGVyLmRpc3Bvc2UoKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICBjb25maWcuZGVmYXVsdEludGVydmFsID0gY29uZmlnLmludGVydmFsXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG5cbiAgX2FkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIGlmICh0aGlzLl9jb25maWcua2V5Ym9hcmQpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVlET1dOLCBldmVudCA9PiB0aGlzLl9rZXlkb3duKGV2ZW50KSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnBhdXNlID09PSAnaG92ZXInKSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VFTlRFUiwgKCkgPT4gdGhpcy5wYXVzZSgpKVxuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFTEVBVkUsICgpID0+IHRoaXMuX21heWJlRW5hYmxlQ3ljbGUoKSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnRvdWNoICYmIFN3aXBlLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHRoaXMuX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnMoKVxuICAgIH1cbiAgfVxuXG4gIF9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIGZvciAoY29uc3QgaW1nIG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfSVRFTV9JTUcsIHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICBFdmVudEhhbmRsZXIub24oaW1nLCBFVkVOVF9EUkFHX1NUQVJULCBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKVxuICAgIH1cblxuICAgIGNvbnN0IGVuZENhbGxCYWNrID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5wYXVzZSAhPT0gJ2hvdmVyJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSWYgaXQncyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlLCBtb3VzZWVudGVyL2xlYXZlIGFyZSBmaXJlZCBhc1xuICAgICAgLy8gcGFydCBvZiB0aGUgbW91c2UgY29tcGF0aWJpbGl0eSBldmVudHMgb24gZmlyc3QgdGFwIC0gdGhlIGNhcm91c2VsXG4gICAgICAvLyB3b3VsZCBzdG9wIGN5Y2xpbmcgdW50aWwgdXNlciB0YXBwZWQgb3V0IG9mIGl0O1xuICAgICAgLy8gaGVyZSwgd2UgbGlzdGVuIGZvciB0b3VjaGVuZCwgZXhwbGljaXRseSBwYXVzZSB0aGUgY2Fyb3VzZWxcbiAgICAgIC8vIChhcyBpZiBpdCdzIHRoZSBzZWNvbmQgdGltZSB3ZSB0YXAgb24gaXQsIG1vdXNlZW50ZXIgY29tcGF0IGV2ZW50XG4gICAgICAvLyBpcyBOT1QgZmlyZWQpIGFuZCBhZnRlciBhIHRpbWVvdXQgKHRvIGFsbG93IGZvciBtb3VzZSBjb21wYXRpYmlsaXR5XG4gICAgICAvLyBldmVudHMgdG8gZmlyZSkgd2UgZXhwbGljaXRseSByZXN0YXJ0IGN5Y2xpbmdcblxuICAgICAgdGhpcy5wYXVzZSgpXG4gICAgICBpZiAodGhpcy50b3VjaFRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KVxuICAgICAgfVxuXG4gICAgICB0aGlzLnRvdWNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fbWF5YmVFbmFibGVDeWNsZSgpLCBUT1VDSEVWRU5UX0NPTVBBVF9XQUlUICsgdGhpcy5fY29uZmlnLmludGVydmFsKVxuICAgIH1cblxuICAgIGNvbnN0IHN3aXBlQ29uZmlnID0ge1xuICAgICAgbGVmdENhbGxiYWNrOiAoKSA9PiB0aGlzLl9zbGlkZSh0aGlzLl9kaXJlY3Rpb25Ub09yZGVyKERJUkVDVElPTl9MRUZUKSksXG4gICAgICByaWdodENhbGxiYWNrOiAoKSA9PiB0aGlzLl9zbGlkZSh0aGlzLl9kaXJlY3Rpb25Ub09yZGVyKERJUkVDVElPTl9SSUdIVCkpLFxuICAgICAgZW5kQ2FsbGJhY2s6IGVuZENhbGxCYWNrXG4gICAgfVxuXG4gICAgdGhpcy5fc3dpcGVIZWxwZXIgPSBuZXcgU3dpcGUodGhpcy5fZWxlbWVudCwgc3dpcGVDb25maWcpXG4gIH1cblxuICBfa2V5ZG93bihldmVudCkge1xuICAgIGlmICgvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGV2ZW50LnRhcmdldC50YWdOYW1lKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gS0VZX1RPX0RJUkVDVElPTltldmVudC5rZXldXG4gICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgdGhpcy5fc2xpZGUodGhpcy5fZGlyZWN0aW9uVG9PcmRlcihkaXJlY3Rpb24pKVxuICAgIH1cbiAgfVxuXG4gIF9nZXRJdGVtSW5kZXgoZWxlbWVudCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRJdGVtcygpLmluZGV4T2YoZWxlbWVudClcbiAgfVxuXG4gIF9zZXRBY3RpdmVJbmRpY2F0b3JFbGVtZW50KGluZGV4KSB7XG4gICAgaWYgKCF0aGlzLl9pbmRpY2F0b3JzRWxlbWVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlSW5kaWNhdG9yID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9BQ1RJVkUsIHRoaXMuX2luZGljYXRvcnNFbGVtZW50KVxuXG4gICAgYWN0aXZlSW5kaWNhdG9yLmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUpXG4gICAgYWN0aXZlSW5kaWNhdG9yLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50JylcblxuICAgIGNvbnN0IG5ld0FjdGl2ZUluZGljYXRvciA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoYFtkYXRhLWJzLXNsaWRlLXRvPVwiJHtpbmRleH1cIl1gLCB0aGlzLl9pbmRpY2F0b3JzRWxlbWVudClcblxuICAgIGlmIChuZXdBY3RpdmVJbmRpY2F0b3IpIHtcbiAgICAgIG5ld0FjdGl2ZUluZGljYXRvci5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFKVxuICAgICAgbmV3QWN0aXZlSW5kaWNhdG9yLnNldEF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50JywgJ3RydWUnKVxuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVJbnRlcnZhbCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fYWN0aXZlRWxlbWVudCB8fCB0aGlzLl9nZXRBY3RpdmUoKVxuXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50SW50ZXJ2YWwgPSBOdW1iZXIucGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtaW50ZXJ2YWwnKSwgMTApXG5cbiAgICB0aGlzLl9jb25maWcuaW50ZXJ2YWwgPSBlbGVtZW50SW50ZXJ2YWwgfHwgdGhpcy5fY29uZmlnLmRlZmF1bHRJbnRlcnZhbFxuICB9XG5cbiAgX3NsaWRlKG9yZGVyLCBlbGVtZW50ID0gbnVsbCkge1xuICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLl9nZXRBY3RpdmUoKVxuICAgIGNvbnN0IGlzTmV4dCA9IG9yZGVyID09PSBPUkRFUl9ORVhUXG4gICAgY29uc3QgbmV4dEVsZW1lbnQgPSBlbGVtZW50IHx8IGdldE5leHRBY3RpdmVFbGVtZW50KHRoaXMuX2dldEl0ZW1zKCksIGFjdGl2ZUVsZW1lbnQsIGlzTmV4dCwgdGhpcy5fY29uZmlnLndyYXApXG5cbiAgICBpZiAobmV4dEVsZW1lbnQgPT09IGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG5leHRFbGVtZW50SW5kZXggPSB0aGlzLl9nZXRJdGVtSW5kZXgobmV4dEVsZW1lbnQpXG5cbiAgICBjb25zdCB0cmlnZ2VyRXZlbnQgPSBldmVudE5hbWUgPT4ge1xuICAgICAgcmV0dXJuIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIGV2ZW50TmFtZSwge1xuICAgICAgICByZWxhdGVkVGFyZ2V0OiBuZXh0RWxlbWVudCxcbiAgICAgICAgZGlyZWN0aW9uOiB0aGlzLl9vcmRlclRvRGlyZWN0aW9uKG9yZGVyKSxcbiAgICAgICAgZnJvbTogdGhpcy5fZ2V0SXRlbUluZGV4KGFjdGl2ZUVsZW1lbnQpLFxuICAgICAgICB0bzogbmV4dEVsZW1lbnRJbmRleFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBzbGlkZUV2ZW50ID0gdHJpZ2dlckV2ZW50KEVWRU5UX1NMSURFKVxuXG4gICAgaWYgKHNsaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFhY3RpdmVFbGVtZW50IHx8ICFuZXh0RWxlbWVudCkge1xuICAgICAgLy8gU29tZSB3ZWlyZG5lc3MgaXMgaGFwcGVuaW5nLCBzbyB3ZSBiYWlsXG4gICAgICAvLyB0b2RvOiBjaGFuZ2UgdGVzdHMgdGhhdCB1c2UgZW1wdHkgZGl2cyB0byBhdm9pZCB0aGlzIGNoZWNrXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBpc0N5Y2xpbmcgPSBCb29sZWFuKHRoaXMuX2ludGVydmFsKVxuICAgIHRoaXMucGF1c2UoKVxuXG4gICAgdGhpcy5faXNTbGlkaW5nID0gdHJ1ZVxuXG4gICAgdGhpcy5fc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudChuZXh0RWxlbWVudEluZGV4KVxuICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSBuZXh0RWxlbWVudFxuXG4gICAgY29uc3QgZGlyZWN0aW9uYWxDbGFzc05hbWUgPSBpc05leHQgPyBDTEFTU19OQU1FX1NUQVJUIDogQ0xBU1NfTkFNRV9FTkRcbiAgICBjb25zdCBvcmRlckNsYXNzTmFtZSA9IGlzTmV4dCA/IENMQVNTX05BTUVfTkVYVCA6IENMQVNTX05BTUVfUFJFVlxuXG4gICAgbmV4dEVsZW1lbnQuY2xhc3NMaXN0LmFkZChvcmRlckNsYXNzTmFtZSlcblxuICAgIHJlZmxvdyhuZXh0RWxlbWVudClcblxuICAgIGFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChkaXJlY3Rpb25hbENsYXNzTmFtZSlcbiAgICBuZXh0RWxlbWVudC5jbGFzc0xpc3QuYWRkKGRpcmVjdGlvbmFsQ2xhc3NOYW1lKVxuXG4gICAgY29uc3QgY29tcGxldGVDYWxsQmFjayA9ICgpID0+IHtcbiAgICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZGlyZWN0aW9uYWxDbGFzc05hbWUsIG9yZGVyQ2xhc3NOYW1lKVxuICAgICAgbmV4dEVsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSlcblxuICAgICAgYWN0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQUNUSVZFLCBvcmRlckNsYXNzTmFtZSwgZGlyZWN0aW9uYWxDbGFzc05hbWUpXG5cbiAgICAgIHRoaXMuX2lzU2xpZGluZyA9IGZhbHNlXG5cbiAgICAgIHRyaWdnZXJFdmVudChFVkVOVF9TTElEKVxuICAgIH1cblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGVDYWxsQmFjaywgYWN0aXZlRWxlbWVudCwgdGhpcy5faXNBbmltYXRlZCgpKVxuXG4gICAgaWYgKGlzQ3ljbGluZykge1xuICAgICAgdGhpcy5jeWNsZSgpXG4gICAgfVxuICB9XG5cbiAgX2lzQW5pbWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0xJREUpXG4gIH1cblxuICBfZ2V0QWN0aXZlKCkge1xuICAgIHJldHVybiBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0FDVElWRV9JVEVNLCB0aGlzLl9lbGVtZW50KVxuICB9XG5cbiAgX2dldEl0ZW1zKCkge1xuICAgIHJldHVybiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0lURU0sIHRoaXMuX2VsZW1lbnQpXG4gIH1cblxuICBfY2xlYXJJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5faW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpXG4gICAgICB0aGlzLl9pbnRlcnZhbCA9IG51bGxcbiAgICB9XG4gIH1cblxuICBfZGlyZWN0aW9uVG9PcmRlcihkaXJlY3Rpb24pIHtcbiAgICBpZiAoaXNSVEwoKSkge1xuICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gRElSRUNUSU9OX0xFRlQgPyBPUkRFUl9QUkVWIDogT1JERVJfTkVYVFxuICAgIH1cblxuICAgIHJldHVybiBkaXJlY3Rpb24gPT09IERJUkVDVElPTl9MRUZUID8gT1JERVJfTkVYVCA6IE9SREVSX1BSRVZcbiAgfVxuXG4gIF9vcmRlclRvRGlyZWN0aW9uKG9yZGVyKSB7XG4gICAgaWYgKGlzUlRMKCkpIHtcbiAgICAgIHJldHVybiBvcmRlciA9PT0gT1JERVJfUFJFViA/IERJUkVDVElPTl9MRUZUIDogRElSRUNUSU9OX1JJR0hUXG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyID09PSBPUkRFUl9QUkVWID8gRElSRUNUSU9OX1JJR0hUIDogRElSRUNUSU9OX0xFRlRcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IENhcm91c2VsLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgZGF0YS50byhjb25maWcpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKVxuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVtjb25maWddKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJLCBTRUxFQ1RPUl9EQVRBX1NMSURFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKVxuXG4gIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfQ0FST1VTRUwpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgY29uc3QgY2Fyb3VzZWwgPSBDYXJvdXNlbC5nZXRPckNyZWF0ZUluc3RhbmNlKHRhcmdldClcbiAgY29uc3Qgc2xpZGVJbmRleCA9IHRoaXMuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLXNsaWRlLXRvJylcblxuICBpZiAoc2xpZGVJbmRleCkge1xuICAgIGNhcm91c2VsLnRvKHNsaWRlSW5kZXgpXG4gICAgY2Fyb3VzZWwuX21heWJlRW5hYmxlQ3ljbGUoKVxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKE1hbmlwdWxhdG9yLmdldERhdGFBdHRyaWJ1dGUodGhpcywgJ3NsaWRlJykgPT09ICduZXh0Jykge1xuICAgIGNhcm91c2VsLm5leHQoKVxuICAgIGNhcm91c2VsLl9tYXliZUVuYWJsZUN5Y2xlKClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNhcm91c2VsLnByZXYoKVxuICBjYXJvdXNlbC5fbWF5YmVFbmFibGVDeWNsZSgpXG59KVxuXG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJLCAoKSA9PiB7XG4gIGNvbnN0IGNhcm91c2VscyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfREFUQV9SSURFKVxuXG4gIGZvciAoY29uc3QgY2Fyb3VzZWwgb2YgY2Fyb3VzZWxzKSB7XG4gICAgQ2Fyb3VzZWwuZ2V0T3JDcmVhdGVJbnN0YW5jZShjYXJvdXNlbClcbiAgfVxufSlcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQ2Fyb3VzZWwpXG5cbmV4cG9ydCBkZWZhdWx0IENhcm91c2VsXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGNvbGxhcHNlLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IHtcbiAgZGVmaW5lSlF1ZXJ5UGx1Z2luLFxuICBnZXRFbGVtZW50LFxuICBnZXRFbGVtZW50RnJvbVNlbGVjdG9yLFxuICBnZXRTZWxlY3RvckZyb21FbGVtZW50LFxuICByZWZsb3dcbn0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IFNlbGVjdG9yRW5naW5lIGZyb20gJy4vZG9tL3NlbGVjdG9yLWVuZ2luZSdcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4vYmFzZS1jb21wb25lbnQnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICdjb2xsYXBzZSdcbmNvbnN0IERBVEFfS0VZID0gJ2JzLmNvbGxhcHNlJ1xuY29uc3QgRVZFTlRfS0VZID0gYC4ke0RBVEFfS0VZfWBcbmNvbnN0IERBVEFfQVBJX0tFWSA9ICcuZGF0YS1hcGknXG5cbmNvbnN0IEVWRU5UX1NIT1cgPSBgc2hvdyR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1NIT1dOID0gYHNob3duJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfSElERSA9IGBoaWRlJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfSElEREVOID0gYGhpZGRlbiR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJID0gYGNsaWNrJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuXG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdydcbmNvbnN0IENMQVNTX05BTUVfQ09MTEFQU0UgPSAnY29sbGFwc2UnXG5jb25zdCBDTEFTU19OQU1FX0NPTExBUFNJTkcgPSAnY29sbGFwc2luZydcbmNvbnN0IENMQVNTX05BTUVfQ09MTEFQU0VEID0gJ2NvbGxhcHNlZCdcbmNvbnN0IENMQVNTX05BTUVfREVFUEVSX0NISUxEUkVOID0gYDpzY29wZSAuJHtDTEFTU19OQU1FX0NPTExBUFNFfSAuJHtDTEFTU19OQU1FX0NPTExBUFNFfWBcbmNvbnN0IENMQVNTX05BTUVfSE9SSVpPTlRBTCA9ICdjb2xsYXBzZS1ob3Jpem9udGFsJ1xuXG5jb25zdCBXSURUSCA9ICd3aWR0aCdcbmNvbnN0IEhFSUdIVCA9ICdoZWlnaHQnXG5cbmNvbnN0IFNFTEVDVE9SX0FDVElWRVMgPSAnLmNvbGxhcHNlLnNob3csIC5jb2xsYXBzZS5jb2xsYXBzaW5nJ1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwiY29sbGFwc2VcIl0nXG5cbmNvbnN0IERlZmF1bHQgPSB7XG4gIHBhcmVudDogbnVsbCxcbiAgdG9nZ2xlOiB0cnVlXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBwYXJlbnQ6ICcobnVsbHxlbGVtZW50KScsXG4gIHRvZ2dsZTogJ2Jvb2xlYW4nXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIENvbGxhcHNlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZylcblxuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlXG4gICAgdGhpcy5fdHJpZ2dlckFycmF5ID0gW11cblxuICAgIGNvbnN0IHRvZ2dsZUxpc3QgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFKVxuXG4gICAgZm9yIChjb25zdCBlbGVtIG9mIHRvZ2dsZUxpc3QpIHtcbiAgICAgIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3JGcm9tRWxlbWVudChlbGVtKVxuICAgICAgY29uc3QgZmlsdGVyRWxlbWVudCA9IFNlbGVjdG9yRW5naW5lLmZpbmQoc2VsZWN0b3IpXG4gICAgICAgIC5maWx0ZXIoZm91bmRFbGVtZW50ID0+IGZvdW5kRWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudClcblxuICAgICAgaWYgKHNlbGVjdG9yICE9PSBudWxsICYmIGZpbHRlckVsZW1lbnQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJBcnJheS5wdXNoKGVsZW0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5faW5pdGlhbGl6ZUNoaWxkcmVuKClcblxuICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmVudCkge1xuICAgICAgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuX3RyaWdnZXJBcnJheSwgdGhpcy5faXNTaG93bigpKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25maWcudG9nZ2xlKSB7XG4gICAgICB0aGlzLnRvZ2dsZSgpXG4gICAgfVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgdGhpcy5oaWRlKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93KClcbiAgICB9XG4gIH1cblxuICBzaG93KCkge1xuICAgIGlmICh0aGlzLl9pc1RyYW5zaXRpb25pbmcgfHwgdGhpcy5faXNTaG93bigpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgYWN0aXZlQ2hpbGRyZW4gPSBbXVxuXG4gICAgLy8gZmluZCBhY3RpdmUgY2hpbGRyZW5cbiAgICBpZiAodGhpcy5fY29uZmlnLnBhcmVudCkge1xuICAgICAgYWN0aXZlQ2hpbGRyZW4gPSB0aGlzLl9nZXRGaXJzdExldmVsQ2hpbGRyZW4oU0VMRUNUT1JfQUNUSVZFUylcbiAgICAgICAgLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQgIT09IHRoaXMuX2VsZW1lbnQpXG4gICAgICAgIC5tYXAoZWxlbWVudCA9PiBDb2xsYXBzZS5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQsIHsgdG9nZ2xlOiBmYWxzZSB9KSlcbiAgICB9XG5cbiAgICBpZiAoYWN0aXZlQ2hpbGRyZW4ubGVuZ3RoICYmIGFjdGl2ZUNoaWxkcmVuWzBdLl9pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XKVxuICAgIGlmIChzdGFydEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYWN0aXZlSW5zdGFuY2Ugb2YgYWN0aXZlQ2hpbGRyZW4pIHtcbiAgICAgIGFjdGl2ZUluc3RhbmNlLmhpZGUoKVxuICAgIH1cblxuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMuX2dldERpbWVuc2lvbigpXG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9DT0xMQVBTRSlcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTSU5HKVxuXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gMFxuXG4gICAgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuX3RyaWdnZXJBcnJheSwgdHJ1ZSlcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSB0cnVlXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlXG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNJTkcpXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTRSwgQ0xBU1NfTkFNRV9TSE9XKVxuXG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSAnJ1xuXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTilcbiAgICB9XG5cbiAgICBjb25zdCBjYXBpdGFsaXplZERpbWVuc2lvbiA9IGRpbWVuc2lvblswXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKDEpXG4gICAgY29uc3Qgc2Nyb2xsU2l6ZSA9IGBzY3JvbGwke2NhcGl0YWxpemVkRGltZW5zaW9ufWBcblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIHRoaXMuX2VsZW1lbnQsIHRydWUpXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gYCR7dGhpcy5fZWxlbWVudFtzY3JvbGxTaXplXX1weGBcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCAhdGhpcy5faXNTaG93bigpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBzdGFydEV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSlcbiAgICBpZiAoc3RhcnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLl9nZXREaW1lbnNpb24oKVxuXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gYCR7dGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtkaW1lbnNpb25dfXB4YFxuXG4gICAgcmVmbG93KHRoaXMuX2VsZW1lbnQpXG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTSU5HKVxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNFLCBDTEFTU19OQU1FX1NIT1cpXG5cbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdGhpcy5fdHJpZ2dlckFycmF5KSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0cmlnZ2VyKVxuXG4gICAgICBpZiAoZWxlbWVudCAmJiAhdGhpcy5faXNTaG93bihlbGVtZW50KSkge1xuICAgICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW3RyaWdnZXJdLCBmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSB0cnVlXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9DT0xMQVBTSU5HKVxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQ09MTEFQU0UpXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4pXG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gJydcblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIHRoaXMuX2VsZW1lbnQsIHRydWUpXG4gIH1cblxuICBfaXNTaG93bihlbGVtZW50ID0gdGhpcy5fZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1cpXG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIGNvbmZpZy50b2dnbGUgPSBCb29sZWFuKGNvbmZpZy50b2dnbGUpIC8vIENvZXJjZSBzdHJpbmcgdmFsdWVzXG4gICAgY29uZmlnLnBhcmVudCA9IGdldEVsZW1lbnQoY29uZmlnLnBhcmVudClcbiAgICByZXR1cm4gY29uZmlnXG4gIH1cblxuICBfZ2V0RGltZW5zaW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0hPUklaT05UQUwpID8gV0lEVEggOiBIRUlHSFRcbiAgfVxuXG4gIF9pbml0aWFsaXplQ2hpbGRyZW4oKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcucGFyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuX2dldEZpcnN0TGV2ZWxDaGlsZHJlbihTRUxFQ1RPUl9EQVRBX1RPR0dMRSlcblxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBjaGlsZHJlbikge1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBnZXRFbGVtZW50RnJvbVNlbGVjdG9yKGVsZW1lbnQpXG5cbiAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW2VsZW1lbnRdLCB0aGlzLl9pc1Nob3duKHNlbGVjdGVkKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfZ2V0Rmlyc3RMZXZlbENoaWxkcmVuKHNlbGVjdG9yKSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBTZWxlY3RvckVuZ2luZS5maW5kKENMQVNTX05BTUVfREVFUEVSX0NISUxEUkVOLCB0aGlzLl9jb25maWcucGFyZW50KVxuICAgIC8vIHJlbW92ZSBjaGlsZHJlbiBpZiBncmVhdGVyIGRlcHRoXG4gICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmQoc2VsZWN0b3IsIHRoaXMuX2NvbmZpZy5wYXJlbnQpLmZpbHRlcihlbGVtZW50ID0+ICFjaGlsZHJlbi5pbmNsdWRlcyhlbGVtZW50KSlcbiAgfVxuXG4gIF9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModHJpZ2dlckFycmF5LCBpc09wZW4pIHtcbiAgICBpZiAoIXRyaWdnZXJBcnJheS5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0cmlnZ2VyQXJyYXkpIHtcbiAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShDTEFTU19OQU1FX0NPTExBUFNFRCwgIWlzT3BlbilcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgaXNPcGVuKVxuICAgIH1cbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIGNvbnN0IF9jb25maWcgPSB7fVxuICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJyAmJiAvc2hvd3xoaWRlLy50ZXN0KGNvbmZpZykpIHtcbiAgICAgIF9jb25maWcudG9nZ2xlID0gZmFsc2VcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBDb2xsYXBzZS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIF9jb25maWcpXG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICAgIH1cblxuICAgICAgICBkYXRhW2NvbmZpZ10oKVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEksIFNFTEVDVE9SX0RBVEFfVE9HR0xFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgLy8gcHJldmVudERlZmF1bHQgb25seSBmb3IgPGE+IGVsZW1lbnRzICh3aGljaCBjaGFuZ2UgdGhlIFVSTCkgbm90IGluc2lkZSB0aGUgY29sbGFwc2libGUgZWxlbWVudFxuICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgPT09ICdBJyB8fCAoZXZlbnQuZGVsZWdhdGVUYXJnZXQgJiYgZXZlbnQuZGVsZWdhdGVUYXJnZXQudGFnTmFtZSA9PT0gJ0EnKSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzKVxuICBjb25zdCBzZWxlY3RvckVsZW1lbnRzID0gU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvcilcblxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygc2VsZWN0b3JFbGVtZW50cykge1xuICAgIENvbGxhcHNlLmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCwgeyB0b2dnbGU6IGZhbHNlIH0pLnRvZ2dsZSgpXG4gIH1cbn0pXG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKENvbGxhcHNlKVxuXG5leHBvcnQgZGVmYXVsdCBDb2xsYXBzZVxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBkcm9wZG93bi5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCAqIGFzIFBvcHBlciBmcm9tICdAcG9wcGVyanMvY29yZSdcbmltcG9ydCB7XG4gIGRlZmluZUpRdWVyeVBsdWdpbixcbiAgZ2V0RWxlbWVudCxcbiAgZ2V0TmV4dEFjdGl2ZUVsZW1lbnQsXG4gIGlzRGlzYWJsZWQsXG4gIGlzRWxlbWVudCxcbiAgaXNSVEwsXG4gIGlzVmlzaWJsZSxcbiAgbm9vcFxufSBmcm9tICcuL3V0aWwvaW5kZXgnXG5pbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgTWFuaXB1bGF0b3IgZnJvbSAnLi9kb20vbWFuaXB1bGF0b3InXG5pbXBvcnQgU2VsZWN0b3JFbmdpbmUgZnJvbSAnLi9kb20vc2VsZWN0b3ItZW5naW5lJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ2Ryb3Bkb3duJ1xuY29uc3QgREFUQV9LRVkgPSAnYnMuZHJvcGRvd24nXG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YFxuY29uc3QgREFUQV9BUElfS0VZID0gJy5kYXRhLWFwaSdcblxuY29uc3QgRVNDQVBFX0tFWSA9ICdFc2NhcGUnXG5jb25zdCBUQUJfS0VZID0gJ1RhYidcbmNvbnN0IEFSUk9XX1VQX0tFWSA9ICdBcnJvd1VwJ1xuY29uc3QgQVJST1dfRE9XTl9LRVkgPSAnQXJyb3dEb3duJ1xuY29uc3QgUklHSFRfTU9VU0VfQlVUVE9OID0gMiAvLyBNb3VzZUV2ZW50LmJ1dHRvbiB2YWx1ZSBmb3IgdGhlIHNlY29uZGFyeSBidXR0b24sIHVzdWFsbHkgdGhlIHJpZ2h0IGJ1dHRvblxuXG5jb25zdCBFVkVOVF9ISURFID0gYGhpZGUke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURERU4gPSBgaGlkZGVuJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPVyA9IGBzaG93JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPV04gPSBgc2hvd24ke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9DTElDS19EQVRBX0FQSSA9IGBjbGljayR7RVZFTlRfS0VZfSR7REFUQV9BUElfS0VZfWBcbmNvbnN0IEVWRU5UX0tFWURPV05fREFUQV9BUEkgPSBga2V5ZG93biR7RVZFTlRfS0VZfSR7REFUQV9BUElfS0VZfWBcbmNvbnN0IEVWRU5UX0tFWVVQX0RBVEFfQVBJID0gYGtleXVwJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuXG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdydcbmNvbnN0IENMQVNTX05BTUVfRFJPUFVQID0gJ2Ryb3B1cCdcbmNvbnN0IENMQVNTX05BTUVfRFJPUEVORCA9ICdkcm9wZW5kJ1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QU1RBUlQgPSAnZHJvcHN0YXJ0J1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QVVBfQ0VOVEVSID0gJ2Ryb3B1cC1jZW50ZXInXG5jb25zdCBDTEFTU19OQU1FX0RST1BET1dOX0NFTlRFUiA9ICdkcm9wZG93bi1jZW50ZXInXG5cbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFID0gJ1tkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJdOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpJ1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEVfU0hPV04gPSBgJHtTRUxFQ1RPUl9EQVRBX1RPR0dMRX0uJHtDTEFTU19OQU1FX1NIT1d9YFxuY29uc3QgU0VMRUNUT1JfTUVOVSA9ICcuZHJvcGRvd24tbWVudSdcbmNvbnN0IFNFTEVDVE9SX05BVkJBUiA9ICcubmF2YmFyJ1xuY29uc3QgU0VMRUNUT1JfTkFWQkFSX05BViA9ICcubmF2YmFyLW5hdidcbmNvbnN0IFNFTEVDVE9SX1ZJU0lCTEVfSVRFTVMgPSAnLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCknXG5cbmNvbnN0IFBMQUNFTUVOVF9UT1AgPSBpc1JUTCgpID8gJ3RvcC1lbmQnIDogJ3RvcC1zdGFydCdcbmNvbnN0IFBMQUNFTUVOVF9UT1BFTkQgPSBpc1JUTCgpID8gJ3RvcC1zdGFydCcgOiAndG9wLWVuZCdcbmNvbnN0IFBMQUNFTUVOVF9CT1RUT00gPSBpc1JUTCgpID8gJ2JvdHRvbS1lbmQnIDogJ2JvdHRvbS1zdGFydCdcbmNvbnN0IFBMQUNFTUVOVF9CT1RUT01FTkQgPSBpc1JUTCgpID8gJ2JvdHRvbS1zdGFydCcgOiAnYm90dG9tLWVuZCdcbmNvbnN0IFBMQUNFTUVOVF9SSUdIVCA9IGlzUlRMKCkgPyAnbGVmdC1zdGFydCcgOiAncmlnaHQtc3RhcnQnXG5jb25zdCBQTEFDRU1FTlRfTEVGVCA9IGlzUlRMKCkgPyAncmlnaHQtc3RhcnQnIDogJ2xlZnQtc3RhcnQnXG5jb25zdCBQTEFDRU1FTlRfVE9QQ0VOVEVSID0gJ3RvcCdcbmNvbnN0IFBMQUNFTUVOVF9CT1RUT01DRU5URVIgPSAnYm90dG9tJ1xuXG5jb25zdCBEZWZhdWx0ID0ge1xuICBhdXRvQ2xvc2U6IHRydWUsXG4gIGJvdW5kYXJ5OiAnY2xpcHBpbmdQYXJlbnRzJyxcbiAgZGlzcGxheTogJ2R5bmFtaWMnLFxuICBvZmZzZXQ6IFswLCAyXSxcbiAgcG9wcGVyQ29uZmlnOiBudWxsLFxuICByZWZlcmVuY2U6ICd0b2dnbGUnXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBhdXRvQ2xvc2U6ICcoYm9vbGVhbnxzdHJpbmcpJyxcbiAgYm91bmRhcnk6ICcoc3RyaW5nfGVsZW1lbnQpJyxcbiAgZGlzcGxheTogJ3N0cmluZycsXG4gIG9mZnNldDogJyhhcnJheXxzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgcG9wcGVyQ29uZmlnOiAnKG51bGx8b2JqZWN0fGZ1bmN0aW9uKScsXG4gIHJlZmVyZW5jZTogJyhzdHJpbmd8ZWxlbWVudHxvYmplY3QpJ1xufVxuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBEcm9wZG93biBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpXG5cbiAgICB0aGlzLl9wb3BwZXIgPSBudWxsXG4gICAgdGhpcy5fcGFyZW50ID0gdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlIC8vIGRyb3Bkb3duIHdyYXBwZXJcbiAgICAvLyB0b2RvOiB2NiByZXZlcnQgIzM3MDExICYgY2hhbmdlIG1hcmt1cCBodHRwczovL2dldGJvb3RzdHJhcC5jb20vZG9jcy81LjIvZm9ybXMvaW5wdXQtZ3JvdXAvXG4gICAgdGhpcy5fbWVudSA9IFNlbGVjdG9yRW5naW5lLm5leHQodGhpcy5fZWxlbWVudCwgU0VMRUNUT1JfTUVOVSlbMF0gfHxcbiAgICAgIFNlbGVjdG9yRW5naW5lLnByZXYodGhpcy5fZWxlbWVudCwgU0VMRUNUT1JfTUVOVSlbMF0gfHxcbiAgICAgIFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfTUVOVSwgdGhpcy5fcGFyZW50KVxuICAgIHRoaXMuX2luTmF2YmFyID0gdGhpcy5fZGV0ZWN0TmF2YmFyKClcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZVxuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBQdWJsaWNcbiAgdG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Nob3duKCkgPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdygpXG4gIH1cblxuICBzaG93KCkge1xuICAgIGlmIChpc0Rpc2FibGVkKHRoaXMuX2VsZW1lbnQpIHx8IHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IHtcbiAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRoaXMuX2VsZW1lbnRcbiAgICB9XG5cbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XLCByZWxhdGVkVGFyZ2V0KVxuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9jcmVhdGVQb3BwZXIoKVxuXG4gICAgLy8gSWYgdGhpcyBpcyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlIHdlIGFkZCBleHRyYVxuICAgIC8vIGVtcHR5IG1vdXNlb3ZlciBsaXN0ZW5lcnMgdG8gdGhlIGJvZHkncyBpbW1lZGlhdGUgY2hpbGRyZW47XG4gICAgLy8gb25seSBuZWVkZWQgYmVjYXVzZSBvZiBicm9rZW4gZXZlbnQgZGVsZWdhdGlvbiBvbiBpT1NcbiAgICAvLyBodHRwczovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTQvMDIvbW91c2VfZXZlbnRfYnViLmh0bWxcbiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmICF0aGlzLl9wYXJlbnQuY2xvc2VzdChTRUxFQ1RPUl9OQVZCQVJfTkFWKSkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSkge1xuICAgICAgICBFdmVudEhhbmRsZXIub24oZWxlbWVudCwgJ21vdXNlb3ZlcicsIG5vb3ApXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5mb2N1cygpXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKVxuXG4gICAgdGhpcy5fbWVudS5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVylcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XKVxuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOLCByZWxhdGVkVGFyZ2V0KVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoaXNEaXNhYmxlZCh0aGlzLl9lbGVtZW50KSB8fCAhdGhpcy5faXNTaG93bigpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudFxuICAgIH1cblxuICAgIHRoaXMuX2NvbXBsZXRlSGlkZShyZWxhdGVkVGFyZ2V0KVxuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIuZGVzdHJveSgpXG4gICAgfVxuXG4gICAgc3VwZXIuZGlzcG9zZSgpXG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgdGhpcy5faW5OYXZiYXIgPSB0aGlzLl9kZXRlY3ROYXZiYXIoKVxuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlci51cGRhdGUoKVxuICAgIH1cbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2NvbXBsZXRlSGlkZShyZWxhdGVkVGFyZ2V0KSB7XG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSwgcmVsYXRlZFRhcmdldClcbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSByZW1vdmUgdGhlIGV4dHJhXG4gICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB3ZSBhZGRlZCBmb3IgaU9TIHN1cHBvcnRcbiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgJ21vdXNlb3ZlcicsIG5vb3ApXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLmRlc3Ryb3koKVxuICAgIH1cblxuICAgIHRoaXMuX21lbnUuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1cpXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVylcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpXG4gICAgTWFuaXB1bGF0b3IucmVtb3ZlRGF0YUF0dHJpYnV0ZSh0aGlzLl9tZW51LCAncG9wcGVyJylcbiAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4sIHJlbGF0ZWRUYXJnZXQpXG4gIH1cblxuICBfZ2V0Q29uZmlnKGNvbmZpZykge1xuICAgIGNvbmZpZyA9IHN1cGVyLl9nZXRDb25maWcoY29uZmlnKVxuXG4gICAgaWYgKHR5cGVvZiBjb25maWcucmVmZXJlbmNlID09PSAnb2JqZWN0JyAmJiAhaXNFbGVtZW50KGNvbmZpZy5yZWZlcmVuY2UpICYmXG4gICAgICB0eXBlb2YgY29uZmlnLnJlZmVyZW5jZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIC8vIFBvcHBlciB2aXJ0dWFsIGVsZW1lbnRzIHJlcXVpcmUgYSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgbWV0aG9kXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke05BTUUudG9VcHBlckNhc2UoKX06IE9wdGlvbiBcInJlZmVyZW5jZVwiIHByb3ZpZGVkIHR5cGUgXCJvYmplY3RcIiB3aXRob3V0IGEgcmVxdWlyZWQgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBtZXRob2QuYClcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cblxuICBfY3JlYXRlUG9wcGVyKCkge1xuICAgIGlmICh0eXBlb2YgUG9wcGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9vdHN0cmFwXFwncyBkcm9wZG93bnMgcmVxdWlyZSBQb3BwZXIgKGh0dHBzOi8vcG9wcGVyLmpzLm9yZyknKVxuICAgIH1cblxuICAgIGxldCByZWZlcmVuY2VFbGVtZW50ID0gdGhpcy5fZWxlbWVudFxuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UgPT09ICdwYXJlbnQnKSB7XG4gICAgICByZWZlcmVuY2VFbGVtZW50ID0gdGhpcy5fcGFyZW50XG4gICAgfSBlbHNlIGlmIChpc0VsZW1lbnQodGhpcy5fY29uZmlnLnJlZmVyZW5jZSkpIHtcbiAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSBnZXRFbGVtZW50KHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5fY29uZmlnLnJlZmVyZW5jZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSB0aGlzLl9jb25maWcucmVmZXJlbmNlXG4gICAgfVxuXG4gICAgY29uc3QgcG9wcGVyQ29uZmlnID0gdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKClcbiAgICB0aGlzLl9wb3BwZXIgPSBQb3BwZXIuY3JlYXRlUG9wcGVyKHJlZmVyZW5jZUVsZW1lbnQsIHRoaXMuX21lbnUsIHBvcHBlckNvbmZpZylcbiAgfVxuXG4gIF9pc1Nob3duKCkge1xuICAgIHJldHVybiB0aGlzLl9tZW51LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1cpXG4gIH1cblxuICBfZ2V0UGxhY2VtZW50KCkge1xuICAgIGNvbnN0IHBhcmVudERyb3Bkb3duID0gdGhpcy5fcGFyZW50XG5cbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUEVORCkpIHtcbiAgICAgIHJldHVybiBQTEFDRU1FTlRfUklHSFRcbiAgICB9XG5cbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUFNUQVJUKSkge1xuICAgICAgcmV0dXJuIFBMQUNFTUVOVF9MRUZUXG4gICAgfVxuXG4gICAgaWYgKHBhcmVudERyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BVUF9DRU5URVIpKSB7XG4gICAgICByZXR1cm4gUExBQ0VNRU5UX1RPUENFTlRFUlxuICAgIH1cblxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QRE9XTl9DRU5URVIpKSB7XG4gICAgICByZXR1cm4gUExBQ0VNRU5UX0JPVFRPTUNFTlRFUlxuICAgIH1cblxuICAgIC8vIFdlIG5lZWQgdG8gdHJpbSB0aGUgdmFsdWUgYmVjYXVzZSBjdXN0b20gcHJvcGVydGllcyBjYW4gYWxzbyBpbmNsdWRlIHNwYWNlc1xuICAgIGNvbnN0IGlzRW5kID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9tZW51KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJzLXBvc2l0aW9uJykudHJpbSgpID09PSAnZW5kJ1xuXG4gICAgaWYgKHBhcmVudERyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BVUCkpIHtcbiAgICAgIHJldHVybiBpc0VuZCA/IFBMQUNFTUVOVF9UT1BFTkQgOiBQTEFDRU1FTlRfVE9QXG4gICAgfVxuXG4gICAgcmV0dXJuIGlzRW5kID8gUExBQ0VNRU5UX0JPVFRPTUVORCA6IFBMQUNFTUVOVF9CT1RUT01cbiAgfVxuXG4gIF9kZXRlY3ROYXZiYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xvc2VzdChTRUxFQ1RPUl9OQVZCQVIpICE9PSBudWxsXG4gIH1cblxuICBfZ2V0T2Zmc2V0KCkge1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSB0aGlzLl9jb25maWdcblxuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9mZnNldC5zcGxpdCgnLCcpLm1hcCh2YWx1ZSA9PiBOdW1iZXIucGFyc2VJbnQodmFsdWUsIDEwKSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHBvcHBlckRhdGEgPT4gb2Zmc2V0KHBvcHBlckRhdGEsIHRoaXMuX2VsZW1lbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldFxuICB9XG5cbiAgX2dldFBvcHBlckNvbmZpZygpIHtcbiAgICBjb25zdCBkZWZhdWx0QnNQb3BwZXJDb25maWcgPSB7XG4gICAgICBwbGFjZW1lbnQ6IHRoaXMuX2dldFBsYWNlbWVudCgpLFxuICAgICAgbW9kaWZpZXJzOiBbe1xuICAgICAgICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGJvdW5kYXJ5OiB0aGlzLl9jb25maWcuYm91bmRhcnlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29mZnNldCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBvZmZzZXQ6IHRoaXMuX2dldE9mZnNldCgpXG4gICAgICAgIH1cbiAgICAgIH1dXG4gICAgfVxuXG4gICAgLy8gRGlzYWJsZSBQb3BwZXIgaWYgd2UgaGF2ZSBhIHN0YXRpYyBkaXNwbGF5IG9yIERyb3Bkb3duIGlzIGluIE5hdmJhclxuICAgIGlmICh0aGlzLl9pbk5hdmJhciB8fCB0aGlzLl9jb25maWcuZGlzcGxheSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIE1hbmlwdWxhdG9yLnNldERhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSwgJ3BvcHBlcicsICdzdGF0aWMnKSAvLyB0b2RvOnY2IHJlbW92ZVxuICAgICAgZGVmYXVsdEJzUG9wcGVyQ29uZmlnLm1vZGlmaWVycyA9IFt7XG4gICAgICAgIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICB9XVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0QnNQb3BwZXJDb25maWcsXG4gICAgICAuLi4odHlwZW9mIHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcgPT09ICdmdW5jdGlvbicgPyB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnKGRlZmF1bHRCc1BvcHBlckNvbmZpZykgOiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnKVxuICAgIH1cbiAgfVxuXG4gIF9zZWxlY3RNZW51SXRlbSh7IGtleSwgdGFyZ2V0IH0pIHtcbiAgICBjb25zdCBpdGVtcyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfVklTSUJMRV9JVEVNUywgdGhpcy5fbWVudSkuZmlsdGVyKGVsZW1lbnQgPT4gaXNWaXNpYmxlKGVsZW1lbnQpKVxuXG4gICAgaWYgKCFpdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIGlmIHRhcmdldCBpc24ndCBpbmNsdWRlZCBpbiBpdGVtcyAoZS5nLiB3aGVuIGV4cGFuZGluZyB0aGUgZHJvcGRvd24pXG4gICAgLy8gYWxsb3cgY3ljbGluZyB0byBnZXQgdGhlIGxhc3QgaXRlbSBpbiBjYXNlIGtleSBlcXVhbHMgQVJST1dfVVBfS0VZXG4gICAgZ2V0TmV4dEFjdGl2ZUVsZW1lbnQoaXRlbXMsIHRhcmdldCwga2V5ID09PSBBUlJPV19ET1dOX0tFWSwgIWl0ZW1zLmluY2x1ZGVzKHRhcmdldCkpLmZvY3VzKClcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IERyb3Bkb3duLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSgpXG4gICAgfSlcbiAgfVxuXG4gIHN0YXRpYyBjbGVhck1lbnVzKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gUklHSFRfTU9VU0VfQlVUVE9OIHx8IChldmVudC50eXBlID09PSAna2V5dXAnICYmIGV2ZW50LmtleSAhPT0gVEFCX0tFWSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG9wZW5Ub2dnbGVzID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9EQVRBX1RPR0dMRV9TSE9XTilcblxuICAgIGZvciAoY29uc3QgdG9nZ2xlIG9mIG9wZW5Ub2dnbGVzKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gRHJvcGRvd24uZ2V0SW5zdGFuY2UodG9nZ2xlKVxuICAgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQuX2NvbmZpZy5hdXRvQ2xvc2UgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbXBvc2VkUGF0aCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpXG4gICAgICBjb25zdCBpc01lbnVUYXJnZXQgPSBjb21wb3NlZFBhdGguaW5jbHVkZXMoY29udGV4dC5fbWVudSlcbiAgICAgIGlmIChcbiAgICAgICAgY29tcG9zZWRQYXRoLmluY2x1ZGVzKGNvbnRleHQuX2VsZW1lbnQpIHx8XG4gICAgICAgIChjb250ZXh0Ll9jb25maWcuYXV0b0Nsb3NlID09PSAnaW5zaWRlJyAmJiAhaXNNZW51VGFyZ2V0KSB8fFxuICAgICAgICAoY29udGV4dC5fY29uZmlnLmF1dG9DbG9zZSA9PT0gJ291dHNpZGUnICYmIGlzTWVudVRhcmdldClcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyBUYWIgbmF2aWdhdGlvbiB0aHJvdWdoIHRoZSBkcm9wZG93biBtZW51IG9yIGV2ZW50cyBmcm9tIGNvbnRhaW5lZCBpbnB1dHMgc2hvdWxkbid0IGNsb3NlIHRoZSBtZW51XG4gICAgICBpZiAoY29udGV4dC5fbWVudS5jb250YWlucyhldmVudC50YXJnZXQpICYmICgoZXZlbnQudHlwZSA9PT0gJ2tleXVwJyAmJiBldmVudC5rZXkgPT09IFRBQl9LRVkpIHx8IC9pbnB1dHxzZWxlY3R8b3B0aW9ufHRleHRhcmVhfGZvcm0vaS50ZXN0KGV2ZW50LnRhcmdldC50YWdOYW1lKSkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IHsgcmVsYXRlZFRhcmdldDogY29udGV4dC5fZWxlbWVudCB9XG5cbiAgICAgIGlmIChldmVudC50eXBlID09PSAnY2xpY2snKSB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXQuY2xpY2tFdmVudCA9IGV2ZW50XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQuX2NvbXBsZXRlSGlkZShyZWxhdGVkVGFyZ2V0KVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkYXRhQXBpS2V5ZG93bkhhbmRsZXIoZXZlbnQpIHtcbiAgICAvLyBJZiBub3QgYW4gVVAgfCBET1dOIHwgRVNDQVBFIGtleSA9PiBub3QgYSBkcm9wZG93biBjb21tYW5kXG4gICAgLy8gSWYgaW5wdXQvdGV4dGFyZWEgJiYgaWYga2V5IGlzIG90aGVyIHRoYW4gRVNDQVBFID0+IG5vdCBhIGRyb3Bkb3duIGNvbW1hbmRcblxuICAgIGNvbnN0IGlzSW5wdXQgPSAvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGV2ZW50LnRhcmdldC50YWdOYW1lKVxuICAgIGNvbnN0IGlzRXNjYXBlRXZlbnQgPSBldmVudC5rZXkgPT09IEVTQ0FQRV9LRVlcbiAgICBjb25zdCBpc1VwT3JEb3duRXZlbnQgPSBbQVJST1dfVVBfS0VZLCBBUlJPV19ET1dOX0tFWV0uaW5jbHVkZXMoZXZlbnQua2V5KVxuXG4gICAgaWYgKCFpc1VwT3JEb3duRXZlbnQgJiYgIWlzRXNjYXBlRXZlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc0lucHV0ICYmICFpc0VzY2FwZUV2ZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAvLyB0b2RvOiB2NiByZXZlcnQgIzM3MDExICYgY2hhbmdlIG1hcmt1cCBodHRwczovL2dldGJvb3RzdHJhcC5jb20vZG9jcy81LjIvZm9ybXMvaW5wdXQtZ3JvdXAvXG4gICAgY29uc3QgZ2V0VG9nZ2xlQnV0dG9uID0gdGhpcy5tYXRjaGVzKFNFTEVDVE9SX0RBVEFfVE9HR0xFKSA/XG4gICAgICB0aGlzIDpcbiAgICAgIChTZWxlY3RvckVuZ2luZS5wcmV2KHRoaXMsIFNFTEVDVE9SX0RBVEFfVE9HR0xFKVswXSB8fFxuICAgICAgICBTZWxlY3RvckVuZ2luZS5uZXh0KHRoaXMsIFNFTEVDVE9SX0RBVEFfVE9HR0xFKVswXSB8fFxuICAgICAgICBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0RBVEFfVE9HR0xFLCBldmVudC5kZWxlZ2F0ZVRhcmdldC5wYXJlbnROb2RlKSlcblxuICAgIGNvbnN0IGluc3RhbmNlID0gRHJvcGRvd24uZ2V0T3JDcmVhdGVJbnN0YW5jZShnZXRUb2dnbGVCdXR0b24pXG5cbiAgICBpZiAoaXNVcE9yRG93bkV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgaW5zdGFuY2Uuc2hvdygpXG4gICAgICBpbnN0YW5jZS5fc2VsZWN0TWVudUl0ZW0oZXZlbnQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UuX2lzU2hvd24oKSkgeyAvLyBlbHNlIGlzIGVzY2FwZSBhbmQgd2UgY2hlY2sgaWYgaXQgaXMgc2hvd25cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBpbnN0YW5jZS5oaWRlKClcbiAgICAgIGdldFRvZ2dsZUJ1dHRvbi5mb2N1cygpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0tFWURPV05fREFUQV9BUEksIFNFTEVDVE9SX0RBVEFfVE9HR0xFLCBEcm9wZG93bi5kYXRhQXBpS2V5ZG93bkhhbmRsZXIpXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0tFWURPV05fREFUQV9BUEksIFNFTEVDVE9SX01FTlUsIERyb3Bkb3duLmRhdGFBcGlLZXlkb3duSGFuZGxlcilcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEksIERyb3Bkb3duLmNsZWFyTWVudXMpXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0tFWVVQX0RBVEFfQVBJLCBEcm9wZG93bi5jbGVhck1lbnVzKVxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUsIGZ1bmN0aW9uIChldmVudCkge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gIERyb3Bkb3duLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcykudG9nZ2xlKClcbn0pXG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKERyb3Bkb3duKVxuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB1dGlsL3Njcm9sbEJhci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCBTZWxlY3RvckVuZ2luZSBmcm9tICcuLi9kb20vc2VsZWN0b3ItZW5naW5lJ1xuaW1wb3J0IE1hbmlwdWxhdG9yIGZyb20gJy4uL2RvbS9tYW5pcHVsYXRvcidcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gJy4vaW5kZXgnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgU0VMRUNUT1JfRklYRURfQ09OVEVOVCA9ICcuZml4ZWQtdG9wLCAuZml4ZWQtYm90dG9tLCAuaXMtZml4ZWQsIC5zdGlja3ktdG9wJ1xuY29uc3QgU0VMRUNUT1JfU1RJQ0tZX0NPTlRFTlQgPSAnLnN0aWNreS10b3AnXG5jb25zdCBQUk9QRVJUWV9QQURESU5HID0gJ3BhZGRpbmctcmlnaHQnXG5jb25zdCBQUk9QRVJUWV9NQVJHSU4gPSAnbWFyZ2luLXJpZ2h0J1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBTY3JvbGxCYXJIZWxwZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuYm9keVxuICB9XG5cbiAgLy8gUHVibGljXG4gIGdldFdpZHRoKCkge1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvaW5uZXJXaWR0aCN1c2FnZV9ub3Rlc1xuICAgIGNvbnN0IGRvY3VtZW50V2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGhcbiAgICByZXR1cm4gTWF0aC5hYnMod2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudFdpZHRoKVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuZ2V0V2lkdGgoKVxuICAgIHRoaXMuX2Rpc2FibGVPdmVyRmxvdygpXG4gICAgLy8gZ2l2ZSBwYWRkaW5nIHRvIGVsZW1lbnQgdG8gYmFsYW5jZSB0aGUgaGlkZGVuIHNjcm9sbGJhciB3aWR0aFxuICAgIHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsIFBST1BFUlRZX1BBRERJTkcsIGNhbGN1bGF0ZWRWYWx1ZSA9PiBjYWxjdWxhdGVkVmFsdWUgKyB3aWR0aClcbiAgICAvLyB0cmljazogV2UgYWRqdXN0IHBvc2l0aXZlIHBhZGRpbmdSaWdodCBhbmQgbmVnYXRpdmUgbWFyZ2luUmlnaHQgdG8gc3RpY2t5LXRvcCBlbGVtZW50cyB0byBrZWVwIHNob3dpbmcgZnVsbHdpZHRoXG4gICAgdGhpcy5fc2V0RWxlbWVudEF0dHJpYnV0ZXMoU0VMRUNUT1JfRklYRURfQ09OVEVOVCwgUFJPUEVSVFlfUEFERElORywgY2FsY3VsYXRlZFZhbHVlID0+IGNhbGN1bGF0ZWRWYWx1ZSArIHdpZHRoKVxuICAgIHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKFNFTEVDVE9SX1NUSUNLWV9DT05URU5ULCBQUk9QRVJUWV9NQVJHSU4sIGNhbGN1bGF0ZWRWYWx1ZSA9PiBjYWxjdWxhdGVkVmFsdWUgLSB3aWR0aClcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgJ292ZXJmbG93JylcbiAgICB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsIFBST1BFUlRZX1BBRERJTkcpXG4gICAgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9GSVhFRF9DT05URU5ULCBQUk9QRVJUWV9QQURESU5HKVxuICAgIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMoU0VMRUNUT1JfU1RJQ0tZX0NPTlRFTlQsIFBST1BFUlRZX01BUkdJTilcbiAgfVxuXG4gIGlzT3ZlcmZsb3dpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0V2lkdGgoKSA+IDBcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2Rpc2FibGVPdmVyRmxvdygpIHtcbiAgICB0aGlzLl9zYXZlSW5pdGlhbEF0dHJpYnV0ZSh0aGlzLl9lbGVtZW50LCAnb3ZlcmZsb3cnKVxuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xuICB9XG5cbiAgX3NldEVsZW1lbnRBdHRyaWJ1dGVzKHNlbGVjdG9yLCBzdHlsZVByb3BlcnR5LCBjYWxsYmFjaykge1xuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gdGhpcy5nZXRXaWR0aCgpXG4gICAgY29uc3QgbWFuaXB1bGF0aW9uQ2FsbEJhY2sgPSBlbGVtZW50ID0+IHtcbiAgICAgIGlmIChlbGVtZW50ICE9PSB0aGlzLl9lbGVtZW50ICYmIHdpbmRvdy5pbm5lcldpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aCArIHNjcm9sbGJhcldpZHRoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzLl9zYXZlSW5pdGlhbEF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZVByb3BlcnR5KVxuICAgICAgY29uc3QgY2FsY3VsYXRlZFZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3BlcnR5KVxuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShzdHlsZVByb3BlcnR5LCBgJHtjYWxsYmFjayhOdW1iZXIucGFyc2VGbG9hdChjYWxjdWxhdGVkVmFsdWUpKX1weGApXG4gICAgfVxuXG4gICAgdGhpcy5fYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayhzZWxlY3RvciwgbWFuaXB1bGF0aW9uQ2FsbEJhY2spXG4gIH1cblxuICBfc2F2ZUluaXRpYWxBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gZWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlUHJvcGVydHkpXG4gICAgaWYgKGFjdHVhbFZhbHVlKSB7XG4gICAgICBNYW5pcHVsYXRvci5zZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHksIGFjdHVhbFZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIF9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHNlbGVjdG9yLCBzdHlsZVByb3BlcnR5KSB7XG4gICAgY29uc3QgbWFuaXB1bGF0aW9uQ2FsbEJhY2sgPSBlbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZVByb3BlcnR5KVxuICAgICAgLy8gV2Ugb25seSB3YW50IHRvIHJlbW92ZSB0aGUgcHJvcGVydHkgaWYgdGhlIHZhbHVlIGlzIGBudWxsYDsgdGhlIHZhbHVlIGNhbiBhbHNvIGJlIHplcm9cbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBlbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KHN0eWxlUHJvcGVydHkpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBNYW5pcHVsYXRvci5yZW1vdmVEYXRhQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpXG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHN0eWxlUHJvcGVydHksIHZhbHVlKVxuICAgIH1cblxuICAgIHRoaXMuX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2soc2VsZWN0b3IsIG1hbmlwdWxhdGlvbkNhbGxCYWNrKVxuICB9XG5cbiAgX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2soc2VsZWN0b3IsIGNhbGxCYWNrKSB7XG4gICAgaWYgKGlzRWxlbWVudChzZWxlY3RvcikpIHtcbiAgICAgIGNhbGxCYWNrKHNlbGVjdG9yKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzZWwgb2YgU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvciwgdGhpcy5fZWxlbWVudCkpIHtcbiAgICAgIGNhbGxCYWNrKHNlbClcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2Nyb2xsQmFySGVscGVyXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvYmFja2Ryb3AuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4uL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IHsgZXhlY3V0ZSwgZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbiwgZ2V0RWxlbWVudCwgcmVmbG93IH0gZnJvbSAnLi9pbmRleCdcbmltcG9ydCBDb25maWcgZnJvbSAnLi9jb25maWcnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICdiYWNrZHJvcCdcbmNvbnN0IENMQVNTX05BTUVfRkFERSA9ICdmYWRlJ1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XID0gJ3Nob3cnXG5jb25zdCBFVkVOVF9NT1VTRURPV04gPSBgbW91c2Vkb3duLmJzLiR7TkFNRX1gXG5cbmNvbnN0IERlZmF1bHQgPSB7XG4gIGNsYXNzTmFtZTogJ21vZGFsLWJhY2tkcm9wJyxcbiAgY2xpY2tDYWxsYmFjazogbnVsbCxcbiAgaXNBbmltYXRlZDogZmFsc2UsXG4gIGlzVmlzaWJsZTogdHJ1ZSwgLy8gaWYgZmFsc2UsIHdlIHVzZSB0aGUgYmFja2Ryb3AgaGVscGVyIHdpdGhvdXQgYWRkaW5nIGFueSBlbGVtZW50IHRvIHRoZSBkb21cbiAgcm9vdEVsZW1lbnQ6ICdib2R5JyAvLyBnaXZlIHRoZSBjaG9pY2UgdG8gcGxhY2UgYmFja2Ryb3AgdW5kZXIgZGlmZmVyZW50IGVsZW1lbnRzXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICBjbGlja0NhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJyxcbiAgaXNBbmltYXRlZDogJ2Jvb2xlYW4nLFxuICBpc1Zpc2libGU6ICdib29sZWFuJyxcbiAgcm9vdEVsZW1lbnQ6ICcoZWxlbWVudHxzdHJpbmcpJ1xufVxuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBCYWNrZHJvcCBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKVxuICAgIHRoaXMuX2lzQXBwZW5kZWQgPSBmYWxzZVxuICAgIHRoaXMuX2VsZW1lbnQgPSBudWxsXG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gUHVibGljXG4gIHNob3coY2FsbGJhY2spIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5pc1Zpc2libGUpIHtcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9hcHBlbmQoKVxuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2dldEVsZW1lbnQoKVxuICAgIGlmICh0aGlzLl9jb25maWcuaXNBbmltYXRlZCkge1xuICAgICAgcmVmbG93KGVsZW1lbnQpXG4gICAgfVxuXG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVylcblxuICAgIHRoaXMuX2VtdWxhdGVBbmltYXRpb24oKCkgPT4ge1xuICAgICAgZXhlY3V0ZShjYWxsYmFjaylcbiAgICB9KVxuICB9XG5cbiAgaGlkZShjYWxsYmFjaykge1xuICAgIGlmICghdGhpcy5fY29uZmlnLmlzVmlzaWJsZSkge1xuICAgICAgZXhlY3V0ZShjYWxsYmFjaylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2dldEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVylcblxuICAgIHRoaXMuX2VtdWxhdGVBbmltYXRpb24oKCkgPT4ge1xuICAgICAgdGhpcy5kaXNwb3NlKClcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spXG4gICAgfSlcbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgaWYgKCF0aGlzLl9pc0FwcGVuZGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBFdmVudEhhbmRsZXIub2ZmKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFRE9XTilcblxuICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlKClcbiAgICB0aGlzLl9pc0FwcGVuZGVkID0gZmFsc2VcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2dldEVsZW1lbnQoKSB7XG4gICAgaWYgKCF0aGlzLl9lbGVtZW50KSB7XG4gICAgICBjb25zdCBiYWNrZHJvcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgICBiYWNrZHJvcC5jbGFzc05hbWUgPSB0aGlzLl9jb25maWcuY2xhc3NOYW1lXG4gICAgICBpZiAodGhpcy5fY29uZmlnLmlzQW5pbWF0ZWQpIHtcbiAgICAgICAgYmFja2Ryb3AuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0ZBREUpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQgPSBiYWNrZHJvcFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50XG4gIH1cblxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICAvLyB1c2UgZ2V0RWxlbWVudCgpIHdpdGggdGhlIGRlZmF1bHQgXCJib2R5XCIgdG8gZ2V0IGEgZnJlc2ggRWxlbWVudCBvbiBlYWNoIGluc3RhbnRpYXRpb25cbiAgICBjb25maWcucm9vdEVsZW1lbnQgPSBnZXRFbGVtZW50KGNvbmZpZy5yb290RWxlbWVudClcbiAgICByZXR1cm4gY29uZmlnXG4gIH1cblxuICBfYXBwZW5kKCkge1xuICAgIGlmICh0aGlzLl9pc0FwcGVuZGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZ2V0RWxlbWVudCgpXG4gICAgdGhpcy5fY29uZmlnLnJvb3RFbGVtZW50LmFwcGVuZChlbGVtZW50KVxuXG4gICAgRXZlbnRIYW5kbGVyLm9uKGVsZW1lbnQsIEVWRU5UX01PVVNFRE9XTiwgKCkgPT4ge1xuICAgICAgZXhlY3V0ZSh0aGlzLl9jb25maWcuY2xpY2tDYWxsYmFjaylcbiAgICB9KVxuXG4gICAgdGhpcy5faXNBcHBlbmRlZCA9IHRydWVcbiAgfVxuXG4gIF9lbXVsYXRlQW5pbWF0aW9uKGNhbGxiYWNrKSB7XG4gICAgZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbihjYWxsYmFjaywgdGhpcy5fZ2V0RWxlbWVudCgpLCB0aGlzLl9jb25maWcuaXNBbmltYXRlZClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCYWNrZHJvcFxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB1dGlsL2ZvY3VzdHJhcC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCBFdmVudEhhbmRsZXIgZnJvbSAnLi4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgU2VsZWN0b3JFbmdpbmUgZnJvbSAnLi4vZG9tL3NlbGVjdG9yLWVuZ2luZSdcbmltcG9ydCBDb25maWcgZnJvbSAnLi9jb25maWcnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICdmb2N1c3RyYXAnXG5jb25zdCBEQVRBX0tFWSA9ICdicy5mb2N1c3RyYXAnXG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YFxuY29uc3QgRVZFTlRfRk9DVVNJTiA9IGBmb2N1c2luJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfS0VZRE9XTl9UQUIgPSBga2V5ZG93bi50YWIke0VWRU5UX0tFWX1gXG5cbmNvbnN0IFRBQl9LRVkgPSAnVGFiJ1xuY29uc3QgVEFCX05BVl9GT1JXQVJEID0gJ2ZvcndhcmQnXG5jb25zdCBUQUJfTkFWX0JBQ0tXQVJEID0gJ2JhY2t3YXJkJ1xuXG5jb25zdCBEZWZhdWx0ID0ge1xuICBhdXRvZm9jdXM6IHRydWUsXG4gIHRyYXBFbGVtZW50OiBudWxsIC8vIFRoZSBlbGVtZW50IHRvIHRyYXAgZm9jdXMgaW5zaWRlIG9mXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBhdXRvZm9jdXM6ICdib29sZWFuJyxcbiAgdHJhcEVsZW1lbnQ6ICdlbGVtZW50J1xufVxuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBGb2N1c1RyYXAgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKGNvbmZpZylcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IGZhbHNlXG4gICAgdGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbiA9IG51bGxcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZVxuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBQdWJsaWNcbiAgYWN0aXZhdGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzQWN0aXZlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmF1dG9mb2N1cykge1xuICAgICAgdGhpcy5fY29uZmlnLnRyYXBFbGVtZW50LmZvY3VzKClcbiAgICB9XG5cbiAgICBFdmVudEhhbmRsZXIub2ZmKGRvY3VtZW50LCBFVkVOVF9LRVkpIC8vIGd1YXJkIGFnYWluc3QgaW5maW5pdGUgZm9jdXMgbG9vcFxuICAgIEV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfRk9DVVNJTiwgZXZlbnQgPT4gdGhpcy5faGFuZGxlRm9jdXNpbihldmVudCkpXG4gICAgRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9LRVlET1dOX1RBQiwgZXZlbnQgPT4gdGhpcy5faGFuZGxlS2V5ZG93bihldmVudCkpXG5cbiAgICB0aGlzLl9pc0FjdGl2ZSA9IHRydWVcbiAgfVxuXG4gIGRlYWN0aXZhdGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc0FjdGl2ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5faXNBY3RpdmUgPSBmYWxzZVxuICAgIEV2ZW50SGFuZGxlci5vZmYoZG9jdW1lbnQsIEVWRU5UX0tFWSlcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2hhbmRsZUZvY3VzaW4oZXZlbnQpIHtcbiAgICBjb25zdCB7IHRyYXBFbGVtZW50IH0gPSB0aGlzLl9jb25maWdcblxuICAgIGlmIChldmVudC50YXJnZXQgPT09IGRvY3VtZW50IHx8IGV2ZW50LnRhcmdldCA9PT0gdHJhcEVsZW1lbnQgfHwgdHJhcEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHMgPSBTZWxlY3RvckVuZ2luZS5mb2N1c2FibGVDaGlsZHJlbih0cmFwRWxlbWVudClcblxuICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRyYXBFbGVtZW50LmZvY3VzKClcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb24gPT09IFRBQl9OQVZfQkFDS1dBUkQpIHtcbiAgICAgIGVsZW1lbnRzW2VsZW1lbnRzLmxlbmd0aCAtIDFdLmZvY3VzKClcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudHNbMF0uZm9jdXMoKVxuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gVEFCX0tFWSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbiA9IGV2ZW50LnNoaWZ0S2V5ID8gVEFCX05BVl9CQUNLV0FSRCA6IFRBQl9OQVZfRk9SV0FSRFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZvY3VzVHJhcFxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBtb2RhbC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7IGRlZmluZUpRdWVyeVBsdWdpbiwgZ2V0RWxlbWVudEZyb21TZWxlY3RvciwgaXNSVEwsIGlzVmlzaWJsZSwgcmVmbG93IH0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IFNlbGVjdG9yRW5naW5lIGZyb20gJy4vZG9tL3NlbGVjdG9yLWVuZ2luZSdcbmltcG9ydCBTY3JvbGxCYXJIZWxwZXIgZnJvbSAnLi91dGlsL3Njcm9sbGJhcidcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4vYmFzZS1jb21wb25lbnQnXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAnLi91dGlsL2JhY2tkcm9wJ1xuaW1wb3J0IEZvY3VzVHJhcCBmcm9tICcuL3V0aWwvZm9jdXN0cmFwJ1xuaW1wb3J0IHsgZW5hYmxlRGlzbWlzc1RyaWdnZXIgfSBmcm9tICcuL3V0aWwvY29tcG9uZW50LWZ1bmN0aW9ucydcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ21vZGFsJ1xuY29uc3QgREFUQV9LRVkgPSAnYnMubW9kYWwnXG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YFxuY29uc3QgREFUQV9BUElfS0VZID0gJy5kYXRhLWFwaSdcbmNvbnN0IEVTQ0FQRV9LRVkgPSAnRXNjYXBlJ1xuXG5jb25zdCBFVkVOVF9ISURFID0gYGhpZGUke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURFX1BSRVZFTlRFRCA9IGBoaWRlUHJldmVudGVkJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfSElEREVOID0gYGhpZGRlbiR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1NIT1cgPSBgc2hvdyR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1NIT1dOID0gYHNob3duJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfUkVTSVpFID0gYHJlc2l6ZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0NMSUNLX0RJU01JU1MgPSBgY2xpY2suZGlzbWlzcyR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX01PVVNFRE9XTl9ESVNNSVNTID0gYG1vdXNlZG93bi5kaXNtaXNzJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfS0VZRE9XTl9ESVNNSVNTID0gYGtleWRvd24uZGlzbWlzcyR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJID0gYGNsaWNrJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuXG5jb25zdCBDTEFTU19OQU1FX09QRU4gPSAnbW9kYWwtb3BlbidcbmNvbnN0IENMQVNTX05BTUVfRkFERSA9ICdmYWRlJ1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XID0gJ3Nob3cnXG5jb25zdCBDTEFTU19OQU1FX1NUQVRJQyA9ICdtb2RhbC1zdGF0aWMnXG5cbmNvbnN0IE9QRU5fU0VMRUNUT1IgPSAnLm1vZGFsLnNob3cnXG5jb25zdCBTRUxFQ1RPUl9ESUFMT0cgPSAnLm1vZGFsLWRpYWxvZydcbmNvbnN0IFNFTEVDVE9SX01PREFMX0JPRFkgPSAnLm1vZGFsLWJvZHknXG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSA9ICdbZGF0YS1icy10b2dnbGU9XCJtb2RhbFwiXSdcblxuY29uc3QgRGVmYXVsdCA9IHtcbiAgYmFja2Ryb3A6IHRydWUsXG4gIGZvY3VzOiB0cnVlLFxuICBrZXlib2FyZDogdHJ1ZVxufVxuXG5jb25zdCBEZWZhdWx0VHlwZSA9IHtcbiAgYmFja2Ryb3A6ICcoYm9vbGVhbnxzdHJpbmcpJyxcbiAgZm9jdXM6ICdib29sZWFuJyxcbiAga2V5Ym9hcmQ6ICdib29sZWFuJ1xufVxuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBNb2RhbCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpXG5cbiAgICB0aGlzLl9kaWFsb2cgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0RJQUxPRywgdGhpcy5fZWxlbWVudClcbiAgICB0aGlzLl9iYWNrZHJvcCA9IHRoaXMuX2luaXRpYWxpemVCYWNrRHJvcCgpXG4gICAgdGhpcy5fZm9jdXN0cmFwID0gdGhpcy5faW5pdGlhbGl6ZUZvY3VzVHJhcCgpXG4gICAgdGhpcy5faXNTaG93biA9IGZhbHNlXG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2VcbiAgICB0aGlzLl9zY3JvbGxCYXIgPSBuZXcgU2Nyb2xsQmFySGVscGVyKClcblxuICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKClcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZVxuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBQdWJsaWNcbiAgdG9nZ2xlKHJlbGF0ZWRUYXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTaG93biA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KHJlbGF0ZWRUYXJnZXQpXG4gIH1cblxuICBzaG93KHJlbGF0ZWRUYXJnZXQpIHtcbiAgICBpZiAodGhpcy5faXNTaG93biB8fCB0aGlzLl9pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1csIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXRcbiAgICB9KVxuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9pc1Nob3duID0gdHJ1ZVxuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IHRydWVcblxuICAgIHRoaXMuX3Njcm9sbEJhci5oaWRlKClcblxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX09QRU4pXG5cbiAgICB0aGlzLl9hZGp1c3REaWFsb2coKVxuXG4gICAgdGhpcy5fYmFja2Ryb3Auc2hvdygoKSA9PiB0aGlzLl9zaG93RWxlbWVudChyZWxhdGVkVGFyZ2V0KSlcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1Nob3duIHx8IHRoaXMuX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSlcblxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5faXNTaG93biA9IGZhbHNlXG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZVxuICAgIHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKClcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1cpXG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHRoaXMuX2hpZGVNb2RhbCgpLCB0aGlzLl9lbGVtZW50LCB0aGlzLl9pc0FuaW1hdGVkKCkpXG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIGZvciAoY29uc3QgaHRtbEVsZW1lbnQgb2YgW3dpbmRvdywgdGhpcy5fZGlhbG9nXSkge1xuICAgICAgRXZlbnRIYW5kbGVyLm9mZihodG1sRWxlbWVudCwgRVZFTlRfS0VZKVxuICAgIH1cblxuICAgIHRoaXMuX2JhY2tkcm9wLmRpc3Bvc2UoKVxuICAgIHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKClcbiAgICBzdXBlci5kaXNwb3NlKClcbiAgfVxuXG4gIGhhbmRsZVVwZGF0ZSgpIHtcbiAgICB0aGlzLl9hZGp1c3REaWFsb2coKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfaW5pdGlhbGl6ZUJhY2tEcm9wKCkge1xuICAgIHJldHVybiBuZXcgQmFja2Ryb3Aoe1xuICAgICAgaXNWaXNpYmxlOiBCb29sZWFuKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCksIC8vICdzdGF0aWMnIG9wdGlvbiB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gdHJ1ZSwgYW5kIGJvb2xlYW5zIHdpbGwga2VlcCB0aGVpciB2YWx1ZSxcbiAgICAgIGlzQW5pbWF0ZWQ6IHRoaXMuX2lzQW5pbWF0ZWQoKVxuICAgIH0pXG4gIH1cblxuICBfaW5pdGlhbGl6ZUZvY3VzVHJhcCgpIHtcbiAgICByZXR1cm4gbmV3IEZvY3VzVHJhcCh7XG4gICAgICB0cmFwRWxlbWVudDogdGhpcy5fZWxlbWVudFxuICAgIH0pXG4gIH1cblxuICBfc2hvd0VsZW1lbnQocmVsYXRlZFRhcmdldCkge1xuICAgIC8vIHRyeSB0byBhcHBlbmQgZHluYW1pYyBtb2RhbFxuICAgIGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyh0aGlzLl9lbGVtZW50KSkge1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQodGhpcy5fZWxlbWVudClcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJylcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1tb2RhbCcsIHRydWUpXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZGlhbG9nJylcbiAgICB0aGlzLl9lbGVtZW50LnNjcm9sbFRvcCA9IDBcblxuICAgIGNvbnN0IG1vZGFsQm9keSA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfTU9EQUxfQk9EWSwgdGhpcy5fZGlhbG9nKVxuICAgIGlmIChtb2RhbEJvZHkpIHtcbiAgICAgIG1vZGFsQm9keS5zY3JvbGxUb3AgPSAwXG4gICAgfVxuXG4gICAgcmVmbG93KHRoaXMuX2VsZW1lbnQpXG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XKVxuXG4gICAgY29uc3QgdHJhbnNpdGlvbkNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5mb2N1cykge1xuICAgICAgICB0aGlzLl9mb2N1c3RyYXAuYWN0aXZhdGUoKVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSBmYWxzZVxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPV04sIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKHRyYW5zaXRpb25Db21wbGV0ZSwgdGhpcy5fZGlhbG9nLCB0aGlzLl9pc0FuaW1hdGVkKCkpXG4gIH1cblxuICBfYWRkRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0tFWURPV05fRElTTUlTUywgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gRVNDQVBFX0tFWSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5rZXlib2FyZCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzLl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKClcbiAgICB9KVxuXG4gICAgRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfUkVTSVpFLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5faXNTaG93biAmJiAhdGhpcy5faXNUcmFuc2l0aW9uaW5nKSB7XG4gICAgICAgIHRoaXMuX2FkanVzdERpYWxvZygpXG4gICAgICB9XG4gICAgfSlcblxuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9NT1VTRURPV05fRElTTUlTUywgZXZlbnQgPT4ge1xuICAgICAgLy8gYSBiYWQgdHJpY2sgdG8gc2VncmVnYXRlIGNsaWNrcyB0aGF0IG1heSBzdGFydCBpbnNpZGUgZGlhbG9nIGJ1dCBlbmQgb3V0c2lkZSwgYW5kIGF2b2lkIGxpc3RlbiB0byBzY3JvbGxiYXIgY2xpY2tzXG4gICAgICBFdmVudEhhbmRsZXIub25lKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0NMSUNLX0RJU01JU1MsIGV2ZW50MiA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9lbGVtZW50ICE9PSBldmVudC50YXJnZXQgfHwgdGhpcy5fZWxlbWVudCAhPT0gZXZlbnQyLnRhcmdldCkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgICB0aGlzLl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuYmFja2Ryb3ApIHtcbiAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBfaGlkZU1vZGFsKCkge1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHRydWUpXG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtbW9kYWwnKVxuICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdyb2xlJylcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSBmYWxzZVxuXG4gICAgdGhpcy5fYmFja2Ryb3AuaGlkZSgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9PUEVOKVxuICAgICAgdGhpcy5fcmVzZXRBZGp1c3RtZW50cygpXG4gICAgICB0aGlzLl9zY3JvbGxCYXIucmVzZXQoKVxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElEREVOKVxuICAgIH0pXG4gIH1cblxuICBfaXNBbmltYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9GQURFKVxuICB9XG5cbiAgX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24oKSB7XG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERV9QUkVWRU5URUQpXG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBpc01vZGFsT3ZlcmZsb3dpbmcgPSB0aGlzLl9lbGVtZW50LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHRcbiAgICBjb25zdCBpbml0aWFsT3ZlcmZsb3dZID0gdGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvd1lcbiAgICAvLyByZXR1cm4gaWYgdGhlIGZvbGxvd2luZyBiYWNrZ3JvdW5kIHRyYW5zaXRpb24gaGFzbid0IHlldCBjb21wbGV0ZWRcbiAgICBpZiAoaW5pdGlhbE92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TVEFUSUMpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWlzTW9kYWxPdmVyZmxvd2luZykge1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvd1kgPSAnaGlkZGVuJ1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NUQVRJQylcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NUQVRJQylcbiAgICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93WSA9IGluaXRpYWxPdmVyZmxvd1lcbiAgICAgIH0sIHRoaXMuX2RpYWxvZylcbiAgICB9LCB0aGlzLl9kaWFsb2cpXG5cbiAgICB0aGlzLl9lbGVtZW50LmZvY3VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gaGFuZGxlIG92ZXJmbG93aW5nIG1vZGFsc1xuICAgKi9cblxuICBfYWRqdXN0RGlhbG9nKCkge1xuICAgIGNvbnN0IGlzTW9kYWxPdmVyZmxvd2luZyA9IHRoaXMuX2VsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodFxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gdGhpcy5fc2Nyb2xsQmFyLmdldFdpZHRoKClcbiAgICBjb25zdCBpc0JvZHlPdmVyZmxvd2luZyA9IHNjcm9sbGJhcldpZHRoID4gMFxuXG4gICAgaWYgKGlzQm9keU92ZXJmbG93aW5nICYmICFpc01vZGFsT3ZlcmZsb3dpbmcpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gaXNSVEwoKSA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0J1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBgJHtzY3JvbGxiYXJXaWR0aH1weGBcbiAgICB9XG5cbiAgICBpZiAoIWlzQm9keU92ZXJmbG93aW5nICYmIGlzTW9kYWxPdmVyZmxvd2luZykge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBpc1JUTCgpID8gJ3BhZGRpbmdSaWdodCcgOiAncGFkZGluZ0xlZnQnXG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IGAke3Njcm9sbGJhcldpZHRofXB4YFxuICAgIH1cbiAgfVxuXG4gIF9yZXNldEFkanVzdG1lbnRzKCkge1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ0xlZnQgPSAnJ1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJydcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZywgcmVsYXRlZFRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IE1vZGFsLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXShyZWxhdGVkVGFyZ2V0KVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEksIFNFTEVDVE9SX0RBVEFfVE9HR0xFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKVxuXG4gIGlmIChbJ0EnLCAnQVJFQSddLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBFdmVudEhhbmRsZXIub25lKHRhcmdldCwgRVZFTlRfU0hPVywgc2hvd0V2ZW50ID0+IHtcbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIC8vIG9ubHkgcmVnaXN0ZXIgZm9jdXMgcmVzdG9yZXIgaWYgbW9kYWwgd2lsbCBhY3R1YWxseSBnZXQgc2hvd25cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIEV2ZW50SGFuZGxlci5vbmUodGFyZ2V0LCBFVkVOVF9ISURERU4sICgpID0+IHtcbiAgICAgIGlmIChpc1Zpc2libGUodGhpcykpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICAvLyBhdm9pZCBjb25mbGljdCB3aGVuIGNsaWNraW5nIG1vZGFsIHRvZ2dsZXIgd2hpbGUgYW5vdGhlciBvbmUgaXMgb3BlblxuICBjb25zdCBhbHJlYWR5T3BlbiA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoT1BFTl9TRUxFQ1RPUilcbiAgaWYgKGFscmVhZHlPcGVuKSB7XG4gICAgTW9kYWwuZ2V0SW5zdGFuY2UoYWxyZWFkeU9wZW4pLmhpZGUoKVxuICB9XG5cbiAgY29uc3QgZGF0YSA9IE1vZGFsLmdldE9yQ3JlYXRlSW5zdGFuY2UodGFyZ2V0KVxuXG4gIGRhdGEudG9nZ2xlKHRoaXMpXG59KVxuXG5lbmFibGVEaXNtaXNzVHJpZ2dlcihNb2RhbClcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oTW9kYWwpXG5cbmV4cG9ydCBkZWZhdWx0IE1vZGFsXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IG9mZmNhbnZhcy5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7XG4gIGRlZmluZUpRdWVyeVBsdWdpbixcbiAgZ2V0RWxlbWVudEZyb21TZWxlY3RvcixcbiAgaXNEaXNhYmxlZCxcbiAgaXNWaXNpYmxlXG59IGZyb20gJy4vdXRpbC9pbmRleCdcbmltcG9ydCBTY3JvbGxCYXJIZWxwZXIgZnJvbSAnLi91dGlsL3Njcm9sbGJhcidcbmltcG9ydCBFdmVudEhhbmRsZXIgZnJvbSAnLi9kb20vZXZlbnQtaGFuZGxlcidcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4vYmFzZS1jb21wb25lbnQnXG5pbXBvcnQgU2VsZWN0b3JFbmdpbmUgZnJvbSAnLi9kb20vc2VsZWN0b3ItZW5naW5lJ1xuaW1wb3J0IEJhY2tkcm9wIGZyb20gJy4vdXRpbC9iYWNrZHJvcCdcbmltcG9ydCBGb2N1c1RyYXAgZnJvbSAnLi91dGlsL2ZvY3VzdHJhcCdcbmltcG9ydCB7IGVuYWJsZURpc21pc3NUcmlnZ2VyIH0gZnJvbSAnLi91dGlsL2NvbXBvbmVudC1mdW5jdGlvbnMnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICdvZmZjYW52YXMnXG5jb25zdCBEQVRBX0tFWSA9ICdicy5vZmZjYW52YXMnXG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YFxuY29uc3QgREFUQV9BUElfS0VZID0gJy5kYXRhLWFwaSdcbmNvbnN0IEVWRU5UX0xPQURfREFUQV9BUEkgPSBgbG9hZCR7RVZFTlRfS0VZfSR7REFUQV9BUElfS0VZfWBcbmNvbnN0IEVTQ0FQRV9LRVkgPSAnRXNjYXBlJ1xuXG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdydcbmNvbnN0IENMQVNTX05BTUVfU0hPV0lORyA9ICdzaG93aW5nJ1xuY29uc3QgQ0xBU1NfTkFNRV9ISURJTkcgPSAnaGlkaW5nJ1xuY29uc3QgQ0xBU1NfTkFNRV9CQUNLRFJPUCA9ICdvZmZjYW52YXMtYmFja2Ryb3AnXG5jb25zdCBPUEVOX1NFTEVDVE9SID0gJy5vZmZjYW52YXMuc2hvdydcblxuY29uc3QgRVZFTlRfU0hPVyA9IGBzaG93JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPV04gPSBgc2hvd24ke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURFID0gYGhpZGUke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURFX1BSRVZFTlRFRCA9IGBoaWRlUHJldmVudGVkJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfSElEREVOID0gYGhpZGRlbiR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1JFU0laRSA9IGByZXNpemUke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9DTElDS19EQVRBX0FQSSA9IGBjbGljayR7RVZFTlRfS0VZfSR7REFUQV9BUElfS0VZfWBcbmNvbnN0IEVWRU5UX0tFWURPV05fRElTTUlTUyA9IGBrZXlkb3duLmRpc21pc3Mke0VWRU5UX0tFWX1gXG5cbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFID0gJ1tkYXRhLWJzLXRvZ2dsZT1cIm9mZmNhbnZhc1wiXSdcblxuY29uc3QgRGVmYXVsdCA9IHtcbiAgYmFja2Ryb3A6IHRydWUsXG4gIGtleWJvYXJkOiB0cnVlLFxuICBzY3JvbGw6IGZhbHNlXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBiYWNrZHJvcDogJyhib29sZWFufHN0cmluZyknLFxuICBrZXlib2FyZDogJ2Jvb2xlYW4nLFxuICBzY3JvbGw6ICdib29sZWFuJ1xufVxuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBPZmZjYW52YXMgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKVxuXG4gICAgdGhpcy5faXNTaG93biA9IGZhbHNlXG4gICAgdGhpcy5fYmFja2Ryb3AgPSB0aGlzLl9pbml0aWFsaXplQmFja0Ryb3AoKVxuICAgIHRoaXMuX2ZvY3VzdHJhcCA9IHRoaXMuX2luaXRpYWxpemVGb2N1c1RyYXAoKVxuICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKClcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZVxuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBQdWJsaWNcbiAgdG9nZ2xlKHJlbGF0ZWRUYXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTaG93biA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KHJlbGF0ZWRUYXJnZXQpXG4gIH1cblxuICBzaG93KHJlbGF0ZWRUYXJnZXQpIHtcbiAgICBpZiAodGhpcy5faXNTaG93bikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPVywgeyByZWxhdGVkVGFyZ2V0IH0pXG5cbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2lzU2hvd24gPSB0cnVlXG4gICAgdGhpcy5fYmFja2Ryb3Auc2hvdygpXG5cbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5zY3JvbGwpIHtcbiAgICAgIG5ldyBTY3JvbGxCYXJIZWxwZXIoKS5oaWRlKClcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1tb2RhbCcsIHRydWUpXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZGlhbG9nJylcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XSU5HKVxuXG4gICAgY29uc3QgY29tcGxldGVDYWxsQmFjayA9ICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5fY29uZmlnLnNjcm9sbCB8fCB0aGlzLl9jb25maWcuYmFja2Ryb3ApIHtcbiAgICAgICAgdGhpcy5fZm9jdXN0cmFwLmFjdGl2YXRlKClcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVylcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1dJTkcpXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTiwgeyByZWxhdGVkVGFyZ2V0IH0pXG4gICAgfVxuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZUNhbGxCYWNrLCB0aGlzLl9lbGVtZW50LCB0cnVlKVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU2hvd24pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGhpZGVFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREUpXG5cbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKClcbiAgICB0aGlzLl9lbGVtZW50LmJsdXIoKVxuICAgIHRoaXMuX2lzU2hvd24gPSBmYWxzZVxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0hJRElORylcbiAgICB0aGlzLl9iYWNrZHJvcC5oaWRlKClcblxuICAgIGNvbnN0IGNvbXBsZXRlQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XLCBDTEFTU19OQU1FX0hJRElORylcbiAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLW1vZGFsJylcbiAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdyb2xlJylcblxuICAgICAgaWYgKCF0aGlzLl9jb25maWcuc2Nyb2xsKSB7XG4gICAgICAgIG5ldyBTY3JvbGxCYXJIZWxwZXIoKS5yZXNldCgpXG4gICAgICB9XG5cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTilcbiAgICB9XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlQ2FsbGJhY2ssIHRoaXMuX2VsZW1lbnQsIHRydWUpXG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuX2JhY2tkcm9wLmRpc3Bvc2UoKVxuICAgIHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKClcbiAgICBzdXBlci5kaXNwb3NlKClcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2luaXRpYWxpemVCYWNrRHJvcCgpIHtcbiAgICBjb25zdCBjbGlja0NhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERV9QUkVWRU5URUQpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzLmhpZGUoKVxuICAgIH1cblxuICAgIC8vICdzdGF0aWMnIG9wdGlvbiB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gdHJ1ZSwgYW5kIGJvb2xlYW5zIHdpbGwga2VlcCB0aGVpciB2YWx1ZVxuICAgIGNvbnN0IGlzVmlzaWJsZSA9IEJvb2xlYW4odGhpcy5fY29uZmlnLmJhY2tkcm9wKVxuXG4gICAgcmV0dXJuIG5ldyBCYWNrZHJvcCh7XG4gICAgICBjbGFzc05hbWU6IENMQVNTX05BTUVfQkFDS0RST1AsXG4gICAgICBpc1Zpc2libGUsXG4gICAgICBpc0FuaW1hdGVkOiB0cnVlLFxuICAgICAgcm9vdEVsZW1lbnQ6IHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSxcbiAgICAgIGNsaWNrQ2FsbGJhY2s6IGlzVmlzaWJsZSA/IGNsaWNrQ2FsbGJhY2sgOiBudWxsXG4gICAgfSlcbiAgfVxuXG4gIF9pbml0aWFsaXplRm9jdXNUcmFwKCkge1xuICAgIHJldHVybiBuZXcgRm9jdXNUcmFwKHtcbiAgICAgIHRyYXBFbGVtZW50OiB0aGlzLl9lbGVtZW50XG4gICAgfSlcbiAgfVxuXG4gIF9hZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTl9ESVNNSVNTLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSBFU0NBUEVfS0VZKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX2NvbmZpZy5rZXlib2FyZCkge1xuICAgICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFX1BSRVZFTlRFRClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGlkZSgpXG4gICAgfSlcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZylcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtjb25maWddID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnN0YXJ0c1dpdGgoJ18nKSB8fCBjb25maWcgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKVxuICAgICAgfVxuXG4gICAgICBkYXRhW2NvbmZpZ10odGhpcylcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJLCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGNvbnN0IHRhcmdldCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcylcblxuICBpZiAoWydBJywgJ0FSRUEnXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgaWYgKGlzRGlzYWJsZWQodGhpcykpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIEV2ZW50SGFuZGxlci5vbmUodGFyZ2V0LCBFVkVOVF9ISURERU4sICgpID0+IHtcbiAgICAvLyBmb2N1cyBvbiB0cmlnZ2VyIHdoZW4gaXQgaXMgY2xvc2VkXG4gICAgaWYgKGlzVmlzaWJsZSh0aGlzKSkge1xuICAgICAgdGhpcy5mb2N1cygpXG4gICAgfVxuICB9KVxuXG4gIC8vIGF2b2lkIGNvbmZsaWN0IHdoZW4gY2xpY2tpbmcgYSB0b2dnbGVyIG9mIGFuIG9mZmNhbnZhcywgd2hpbGUgYW5vdGhlciBpcyBvcGVuXG4gIGNvbnN0IGFscmVhZHlPcGVuID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShPUEVOX1NFTEVDVE9SKVxuICBpZiAoYWxyZWFkeU9wZW4gJiYgYWxyZWFkeU9wZW4gIT09IHRhcmdldCkge1xuICAgIE9mZmNhbnZhcy5nZXRJbnN0YW5jZShhbHJlYWR5T3BlbikuaGlkZSgpXG4gIH1cblxuICBjb25zdCBkYXRhID0gT2ZmY2FudmFzLmdldE9yQ3JlYXRlSW5zdGFuY2UodGFyZ2V0KVxuICBkYXRhLnRvZ2dsZSh0aGlzKVxufSlcblxuRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfTE9BRF9EQVRBX0FQSSwgKCkgPT4ge1xuICBmb3IgKGNvbnN0IHNlbGVjdG9yIG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoT1BFTl9TRUxFQ1RPUikpIHtcbiAgICBPZmZjYW52YXMuZ2V0T3JDcmVhdGVJbnN0YW5jZShzZWxlY3Rvcikuc2hvdygpXG4gIH1cbn0pXG5cbkV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX1JFU0laRSwgKCkgPT4ge1xuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgU2VsZWN0b3JFbmdpbmUuZmluZCgnW2FyaWEtbW9kYWxdW2NsYXNzKj1zaG93XVtjbGFzcyo9b2ZmY2FudmFzLV0nKSkge1xuICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uICE9PSAnZml4ZWQnKSB7XG4gICAgICBPZmZjYW52YXMuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50KS5oaWRlKClcbiAgICB9XG4gIH1cbn0pXG5cbmVuYWJsZURpc21pc3NUcmlnZ2VyKE9mZmNhbnZhcylcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oT2ZmY2FudmFzKVxuXG5leHBvcnQgZGVmYXVsdCBPZmZjYW52YXNcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogdXRpbC9zYW5pdGl6ZXIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5jb25zdCB1cmlBdHRyaWJ1dGVzID0gbmV3IFNldChbXG4gICdiYWNrZ3JvdW5kJyxcbiAgJ2NpdGUnLFxuICAnaHJlZicsXG4gICdpdGVtdHlwZScsXG4gICdsb25nZGVzYycsXG4gICdwb3N0ZXInLFxuICAnc3JjJyxcbiAgJ3hsaW5rOmhyZWYnXG5dKVxuXG5jb25zdCBBUklBX0FUVFJJQlVURV9QQVRURVJOID0gL15hcmlhLVtcXHctXSokL2lcblxuLyoqXG4gKiBBIHBhdHRlcm4gdGhhdCByZWNvZ25pemVzIGEgY29tbW9ubHkgdXNlZnVsIHN1YnNldCBvZiBVUkxzIHRoYXQgYXJlIHNhZmUuXG4gKlxuICogU2hvdXQtb3V0IHRvIEFuZ3VsYXIgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzEyLjIueC9wYWNrYWdlcy9jb3JlL3NyYy9zYW5pdGl6YXRpb24vdXJsX3Nhbml0aXplci50c1xuICovXG5jb25zdCBTQUZFX1VSTF9QQVRURVJOID0gL14oPzooPzpodHRwcz98bWFpbHRvfGZ0cHx0ZWx8ZmlsZXxzbXMpOnxbXiMmLzo/XSooPzpbIy8/XXwkKSkvaVxuXG4vKipcbiAqIEEgcGF0dGVybiB0aGF0IG1hdGNoZXMgc2FmZSBkYXRhIFVSTHMuIE9ubHkgbWF0Y2hlcyBpbWFnZSwgdmlkZW8gYW5kIGF1ZGlvIHR5cGVzLlxuICpcbiAqIFNob3V0LW91dCB0byBBbmd1bGFyIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi8xMi4yLngvcGFja2FnZXMvY29yZS9zcmMvc2FuaXRpemF0aW9uL3VybF9zYW5pdGl6ZXIudHNcbiAqL1xuY29uc3QgREFUQV9VUkxfUEFUVEVSTiA9IC9eZGF0YTooPzppbWFnZVxcLyg/OmJtcHxnaWZ8anBlZ3xqcGd8cG5nfHRpZmZ8d2VicCl8dmlkZW9cXC8oPzptcGVnfG1wNHxvZ2d8d2VibSl8YXVkaW9cXC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFtcXGQrL2Etel0rPSokL2lcblxuY29uc3QgYWxsb3dlZEF0dHJpYnV0ZSA9IChhdHRyaWJ1dGUsIGFsbG93ZWRBdHRyaWJ1dGVMaXN0KSA9PiB7XG4gIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKVxuXG4gIGlmIChhbGxvd2VkQXR0cmlidXRlTGlzdC5pbmNsdWRlcyhhdHRyaWJ1dGVOYW1lKSkge1xuICAgIGlmICh1cmlBdHRyaWJ1dGVzLmhhcyhhdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgcmV0dXJuIEJvb2xlYW4oU0FGRV9VUkxfUEFUVEVSTi50ZXN0KGF0dHJpYnV0ZS5ub2RlVmFsdWUpIHx8IERBVEFfVVJMX1BBVFRFUk4udGVzdChhdHRyaWJ1dGUubm9kZVZhbHVlKSlcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYSByZWd1bGFyIGV4cHJlc3Npb24gdmFsaWRhdGVzIHRoZSBhdHRyaWJ1dGUuXG4gIHJldHVybiBhbGxvd2VkQXR0cmlidXRlTGlzdC5maWx0ZXIoYXR0cmlidXRlUmVnZXggPT4gYXR0cmlidXRlUmVnZXggaW5zdGFuY2VvZiBSZWdFeHApXG4gICAgLnNvbWUocmVnZXggPT4gcmVnZXgudGVzdChhdHRyaWJ1dGVOYW1lKSlcbn1cblxuZXhwb3J0IGNvbnN0IERlZmF1bHRBbGxvd2xpc3QgPSB7XG4gIC8vIEdsb2JhbCBhdHRyaWJ1dGVzIGFsbG93ZWQgb24gYW55IHN1cHBsaWVkIGVsZW1lbnQgYmVsb3cuXG4gICcqJzogWydjbGFzcycsICdkaXInLCAnaWQnLCAnbGFuZycsICdyb2xlJywgQVJJQV9BVFRSSUJVVEVfUEFUVEVSTl0sXG4gIGE6IFsndGFyZ2V0JywgJ2hyZWYnLCAndGl0bGUnLCAncmVsJ10sXG4gIGFyZWE6IFtdLFxuICBiOiBbXSxcbiAgYnI6IFtdLFxuICBjb2w6IFtdLFxuICBjb2RlOiBbXSxcbiAgZGl2OiBbXSxcbiAgZW06IFtdLFxuICBocjogW10sXG4gIGgxOiBbXSxcbiAgaDI6IFtdLFxuICBoMzogW10sXG4gIGg0OiBbXSxcbiAgaDU6IFtdLFxuICBoNjogW10sXG4gIGk6IFtdLFxuICBpbWc6IFsnc3JjJywgJ3NyY3NldCcsICdhbHQnLCAndGl0bGUnLCAnd2lkdGgnLCAnaGVpZ2h0J10sXG4gIGxpOiBbXSxcbiAgb2w6IFtdLFxuICBwOiBbXSxcbiAgcHJlOiBbXSxcbiAgczogW10sXG4gIHNtYWxsOiBbXSxcbiAgc3BhbjogW10sXG4gIHN1YjogW10sXG4gIHN1cDogW10sXG4gIHN0cm9uZzogW10sXG4gIHU6IFtdLFxuICB1bDogW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplSHRtbCh1bnNhZmVIdG1sLCBhbGxvd0xpc3QsIHNhbml0aXplRnVuY3Rpb24pIHtcbiAgaWYgKCF1bnNhZmVIdG1sLmxlbmd0aCkge1xuICAgIHJldHVybiB1bnNhZmVIdG1sXG4gIH1cblxuICBpZiAoc2FuaXRpemVGdW5jdGlvbiAmJiB0eXBlb2Ygc2FuaXRpemVGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBzYW5pdGl6ZUZ1bmN0aW9uKHVuc2FmZUh0bWwpXG4gIH1cblxuICBjb25zdCBkb21QYXJzZXIgPSBuZXcgd2luZG93LkRPTVBhcnNlcigpXG4gIGNvbnN0IGNyZWF0ZWREb2N1bWVudCA9IGRvbVBhcnNlci5wYXJzZUZyb21TdHJpbmcodW5zYWZlSHRtbCwgJ3RleHQvaHRtbCcpXG4gIGNvbnN0IGVsZW1lbnRzID0gW10uY29uY2F0KC4uLmNyZWF0ZWREb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKSlcblxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICBjb25zdCBlbGVtZW50TmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKVxuXG4gICAgaWYgKCFPYmplY3Qua2V5cyhhbGxvd0xpc3QpLmluY2x1ZGVzKGVsZW1lbnROYW1lKSkge1xuICAgICAgZWxlbWVudC5yZW1vdmUoKVxuXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZUxpc3QgPSBbXS5jb25jYXQoLi4uZWxlbWVudC5hdHRyaWJ1dGVzKVxuICAgIGNvbnN0IGFsbG93ZWRBdHRyaWJ1dGVzID0gW10uY29uY2F0KGFsbG93TGlzdFsnKiddIHx8IFtdLCBhbGxvd0xpc3RbZWxlbWVudE5hbWVdIHx8IFtdKVxuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlTGlzdCkge1xuICAgICAgaWYgKCFhbGxvd2VkQXR0cmlidXRlKGF0dHJpYnV0ZSwgYWxsb3dlZEF0dHJpYnV0ZXMpKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZS5ub2RlTmFtZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY3JlYXRlZERvY3VtZW50LmJvZHkuaW5uZXJIVE1MXG59XG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvdGVtcGxhdGUtZmFjdG9yeS5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7IERlZmF1bHRBbGxvd2xpc3QsIHNhbml0aXplSHRtbCB9IGZyb20gJy4vc2FuaXRpemVyJ1xuaW1wb3J0IHsgZ2V0RWxlbWVudCwgaXNFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9pbmRleCdcbmltcG9ydCBTZWxlY3RvckVuZ2luZSBmcm9tICcuLi9kb20vc2VsZWN0b3ItZW5naW5lJ1xuaW1wb3J0IENvbmZpZyBmcm9tICcuL2NvbmZpZydcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ1RlbXBsYXRlRmFjdG9yeSdcblxuY29uc3QgRGVmYXVsdCA9IHtcbiAgYWxsb3dMaXN0OiBEZWZhdWx0QWxsb3dsaXN0LFxuICBjb250ZW50OiB7fSwgLy8geyBzZWxlY3RvciA6IHRleHQgLCAgc2VsZWN0b3IyIDogdGV4dDIgLCB9XG4gIGV4dHJhQ2xhc3M6ICcnLFxuICBodG1sOiBmYWxzZSxcbiAgc2FuaXRpemU6IHRydWUsXG4gIHNhbml0aXplRm46IG51bGwsXG4gIHRlbXBsYXRlOiAnPGRpdj48L2Rpdj4nXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBhbGxvd0xpc3Q6ICdvYmplY3QnLFxuICBjb250ZW50OiAnb2JqZWN0JyxcbiAgZXh0cmFDbGFzczogJyhzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgaHRtbDogJ2Jvb2xlYW4nLFxuICBzYW5pdGl6ZTogJ2Jvb2xlYW4nLFxuICBzYW5pdGl6ZUZuOiAnKG51bGx8ZnVuY3Rpb24pJyxcbiAgdGVtcGxhdGU6ICdzdHJpbmcnXG59XG5cbmNvbnN0IERlZmF1bHRDb250ZW50VHlwZSA9IHtcbiAgZW50cnk6ICcoc3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb258bnVsbCknLFxuICBzZWxlY3RvcjogJyhzdHJpbmd8ZWxlbWVudCknXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFRlbXBsYXRlRmFjdG9yeSBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBnZXRDb250ZW50KCkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX2NvbmZpZy5jb250ZW50KVxuICAgICAgLm1hcChjb25maWcgPT4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24oY29uZmlnKSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgfVxuXG4gIGhhc0NvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29udGVudCgpLmxlbmd0aCA+IDBcbiAgfVxuXG4gIGNoYW5nZUNvbnRlbnQoY29udGVudCkge1xuICAgIHRoaXMuX2NoZWNrQ29udGVudChjb250ZW50KVxuICAgIHRoaXMuX2NvbmZpZy5jb250ZW50ID0geyAuLi50aGlzLl9jb25maWcuY29udGVudCwgLi4uY29udGVudCB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHRvSHRtbCgpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZVdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIHRlbXBsYXRlV3JhcHBlci5pbm5lckhUTUwgPSB0aGlzLl9tYXliZVNhbml0aXplKHRoaXMuX2NvbmZpZy50ZW1wbGF0ZSlcblxuICAgIGZvciAoY29uc3QgW3NlbGVjdG9yLCB0ZXh0XSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9jb25maWcuY29udGVudCkpIHtcbiAgICAgIHRoaXMuX3NldENvbnRlbnQodGVtcGxhdGVXcmFwcGVyLCB0ZXh0LCBzZWxlY3RvcilcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRlbXBsYXRlV3JhcHBlci5jaGlsZHJlblswXVxuICAgIGNvbnN0IGV4dHJhQ2xhc3MgPSB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0aGlzLl9jb25maWcuZXh0cmFDbGFzcylcblxuICAgIGlmIChleHRyYUNsYXNzKSB7XG4gICAgICB0ZW1wbGF0ZS5jbGFzc0xpc3QuYWRkKC4uLmV4dHJhQ2xhc3Muc3BsaXQoJyAnKSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGVtcGxhdGVcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX3R5cGVDaGVja0NvbmZpZyhjb25maWcpIHtcbiAgICBzdXBlci5fdHlwZUNoZWNrQ29uZmlnKGNvbmZpZylcbiAgICB0aGlzLl9jaGVja0NvbnRlbnQoY29uZmlnLmNvbnRlbnQpXG4gIH1cblxuICBfY2hlY2tDb250ZW50KGFyZykge1xuICAgIGZvciAoY29uc3QgW3NlbGVjdG9yLCBjb250ZW50XSBvZiBPYmplY3QuZW50cmllcyhhcmcpKSB7XG4gICAgICBzdXBlci5fdHlwZUNoZWNrQ29uZmlnKHsgc2VsZWN0b3IsIGVudHJ5OiBjb250ZW50IH0sIERlZmF1bHRDb250ZW50VHlwZSlcbiAgICB9XG4gIH1cblxuICBfc2V0Q29udGVudCh0ZW1wbGF0ZSwgY29udGVudCwgc2VsZWN0b3IpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZUVsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKHNlbGVjdG9yLCB0ZW1wbGF0ZSlcblxuICAgIGlmICghdGVtcGxhdGVFbGVtZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb250ZW50ID0gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24oY29udGVudClcblxuICAgIGlmICghY29udGVudCkge1xuICAgICAgdGVtcGxhdGVFbGVtZW50LnJlbW92ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaXNFbGVtZW50KGNvbnRlbnQpKSB7XG4gICAgICB0aGlzLl9wdXRFbGVtZW50SW5UZW1wbGF0ZShnZXRFbGVtZW50KGNvbnRlbnQpLCB0ZW1wbGF0ZUVsZW1lbnQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmh0bWwpIHtcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLl9tYXliZVNhbml0aXplKGNvbnRlbnQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0ZW1wbGF0ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBjb250ZW50XG4gIH1cblxuICBfbWF5YmVTYW5pdGl6ZShhcmcpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhbml0aXplID8gc2FuaXRpemVIdG1sKGFyZywgdGhpcy5fY29uZmlnLmFsbG93TGlzdCwgdGhpcy5fY29uZmlnLnNhbml0aXplRm4pIDogYXJnXG4gIH1cblxuICBfcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbicgPyBhcmcodGhpcykgOiBhcmdcbiAgfVxuXG4gIF9wdXRFbGVtZW50SW5UZW1wbGF0ZShlbGVtZW50LCB0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY29uZmlnLmh0bWwpIHtcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5pbm5lckhUTUwgPSAnJ1xuICAgICAgdGVtcGxhdGVFbGVtZW50LmFwcGVuZChlbGVtZW50KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGVtcGxhdGVFbGVtZW50LnRleHRDb250ZW50ID0gZWxlbWVudC50ZXh0Q29udGVudFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRlbXBsYXRlRmFjdG9yeVxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB0b29sdGlwLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0ICogYXMgUG9wcGVyIGZyb20gJ0Bwb3BwZXJqcy9jb3JlJ1xuaW1wb3J0IHsgZGVmaW5lSlF1ZXJ5UGx1Z2luLCBmaW5kU2hhZG93Um9vdCwgZ2V0RWxlbWVudCwgZ2V0VUlELCBpc1JUTCwgbm9vcCB9IGZyb20gJy4vdXRpbC9pbmRleCdcbmltcG9ydCB7IERlZmF1bHRBbGxvd2xpc3QgfSBmcm9tICcuL3V0aWwvc2FuaXRpemVyJ1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IE1hbmlwdWxhdG9yIGZyb20gJy4vZG9tL21hbmlwdWxhdG9yJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcbmltcG9ydCBUZW1wbGF0ZUZhY3RvcnkgZnJvbSAnLi91dGlsL3RlbXBsYXRlLWZhY3RvcnknXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICd0b29sdGlwJ1xuY29uc3QgRElTQUxMT1dFRF9BVFRSSUJVVEVTID0gbmV3IFNldChbJ3Nhbml0aXplJywgJ2FsbG93TGlzdCcsICdzYW5pdGl6ZUZuJ10pXG5cbmNvbnN0IENMQVNTX05BTUVfRkFERSA9ICdmYWRlJ1xuY29uc3QgQ0xBU1NfTkFNRV9NT0RBTCA9ICdtb2RhbCdcbmNvbnN0IENMQVNTX05BTUVfU0hPVyA9ICdzaG93J1xuXG5jb25zdCBTRUxFQ1RPUl9UT09MVElQX0lOTkVSID0gJy50b29sdGlwLWlubmVyJ1xuY29uc3QgU0VMRUNUT1JfTU9EQUwgPSBgLiR7Q0xBU1NfTkFNRV9NT0RBTH1gXG5cbmNvbnN0IEVWRU5UX01PREFMX0hJREUgPSAnaGlkZS5icy5tb2RhbCdcblxuY29uc3QgVFJJR0dFUl9IT1ZFUiA9ICdob3ZlcidcbmNvbnN0IFRSSUdHRVJfRk9DVVMgPSAnZm9jdXMnXG5jb25zdCBUUklHR0VSX0NMSUNLID0gJ2NsaWNrJ1xuY29uc3QgVFJJR0dFUl9NQU5VQUwgPSAnbWFudWFsJ1xuXG5jb25zdCBFVkVOVF9ISURFID0gJ2hpZGUnXG5jb25zdCBFVkVOVF9ISURERU4gPSAnaGlkZGVuJ1xuY29uc3QgRVZFTlRfU0hPVyA9ICdzaG93J1xuY29uc3QgRVZFTlRfU0hPV04gPSAnc2hvd24nXG5jb25zdCBFVkVOVF9JTlNFUlRFRCA9ICdpbnNlcnRlZCdcbmNvbnN0IEVWRU5UX0NMSUNLID0gJ2NsaWNrJ1xuY29uc3QgRVZFTlRfRk9DVVNJTiA9ICdmb2N1c2luJ1xuY29uc3QgRVZFTlRfRk9DVVNPVVQgPSAnZm9jdXNvdXQnXG5jb25zdCBFVkVOVF9NT1VTRUVOVEVSID0gJ21vdXNlZW50ZXInXG5jb25zdCBFVkVOVF9NT1VTRUxFQVZFID0gJ21vdXNlbGVhdmUnXG5cbmNvbnN0IEF0dGFjaG1lbnRNYXAgPSB7XG4gIEFVVE86ICdhdXRvJyxcbiAgVE9QOiAndG9wJyxcbiAgUklHSFQ6IGlzUlRMKCkgPyAnbGVmdCcgOiAncmlnaHQnLFxuICBCT1RUT006ICdib3R0b20nLFxuICBMRUZUOiBpc1JUTCgpID8gJ3JpZ2h0JyA6ICdsZWZ0J1xufVxuXG5jb25zdCBEZWZhdWx0ID0ge1xuICBhbGxvd0xpc3Q6IERlZmF1bHRBbGxvd2xpc3QsXG4gIGFuaW1hdGlvbjogdHJ1ZSxcbiAgYm91bmRhcnk6ICdjbGlwcGluZ1BhcmVudHMnLFxuICBjb250YWluZXI6IGZhbHNlLFxuICBjdXN0b21DbGFzczogJycsXG4gIGRlbGF5OiAwLFxuICBmYWxsYmFja1BsYWNlbWVudHM6IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10sXG4gIGh0bWw6IGZhbHNlLFxuICBvZmZzZXQ6IFswLCAwXSxcbiAgcGxhY2VtZW50OiAndG9wJyxcbiAgcG9wcGVyQ29uZmlnOiBudWxsLFxuICBzYW5pdGl6ZTogdHJ1ZSxcbiAgc2FuaXRpemVGbjogbnVsbCxcbiAgc2VsZWN0b3I6IGZhbHNlLFxuICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJ0b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj4nICtcbiAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PicgK1xuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+JyArXG4gICAgICAgICAgICAnPC9kaXY+JyxcbiAgdGl0bGU6ICcnLFxuICB0cmlnZ2VyOiAnaG92ZXIgZm9jdXMnXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBhbGxvd0xpc3Q6ICdvYmplY3QnLFxuICBhbmltYXRpb246ICdib29sZWFuJyxcbiAgYm91bmRhcnk6ICcoc3RyaW5nfGVsZW1lbnQpJyxcbiAgY29udGFpbmVyOiAnKHN0cmluZ3xlbGVtZW50fGJvb2xlYW4pJyxcbiAgY3VzdG9tQ2xhc3M6ICcoc3RyaW5nfGZ1bmN0aW9uKScsXG4gIGRlbGF5OiAnKG51bWJlcnxvYmplY3QpJyxcbiAgZmFsbGJhY2tQbGFjZW1lbnRzOiAnYXJyYXknLFxuICBodG1sOiAnYm9vbGVhbicsXG4gIG9mZnNldDogJyhhcnJheXxzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgcGxhY2VtZW50OiAnKHN0cmluZ3xmdW5jdGlvbiknLFxuICBwb3BwZXJDb25maWc6ICcobnVsbHxvYmplY3R8ZnVuY3Rpb24pJyxcbiAgc2FuaXRpemU6ICdib29sZWFuJyxcbiAgc2FuaXRpemVGbjogJyhudWxsfGZ1bmN0aW9uKScsXG4gIHNlbGVjdG9yOiAnKHN0cmluZ3xib29sZWFuKScsXG4gIHRlbXBsYXRlOiAnc3RyaW5nJyxcbiAgdGl0bGU6ICcoc3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb24pJyxcbiAgdHJpZ2dlcjogJ3N0cmluZydcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgVG9vbHRpcCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBpZiAodHlwZW9mIFBvcHBlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Jvb3RzdHJhcFxcJ3MgdG9vbHRpcHMgcmVxdWlyZSBQb3BwZXIgKGh0dHBzOi8vcG9wcGVyLmpzLm9yZyknKVxuICAgIH1cblxuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZylcblxuICAgIC8vIFByaXZhdGVcbiAgICB0aGlzLl9pc0VuYWJsZWQgPSB0cnVlXG4gICAgdGhpcy5fdGltZW91dCA9IDBcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSBudWxsXG4gICAgdGhpcy5fYWN0aXZlVHJpZ2dlciA9IHt9XG4gICAgdGhpcy5fcG9wcGVyID0gbnVsbFxuICAgIHRoaXMuX3RlbXBsYXRlRmFjdG9yeSA9IG51bGxcbiAgICB0aGlzLl9uZXdDb250ZW50ID0gbnVsbFxuXG4gICAgLy8gUHJvdGVjdGVkXG4gICAgdGhpcy50aXAgPSBudWxsXG5cbiAgICB0aGlzLl9zZXRMaXN0ZW5lcnMoKVxuXG4gICAgaWYgKCF0aGlzLl9jb25maWcuc2VsZWN0b3IpIHtcbiAgICAgIHRoaXMuX2ZpeFRpdGxlKClcbiAgICB9XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gUHVibGljXG4gIGVuYWJsZSgpIHtcbiAgICB0aGlzLl9pc0VuYWJsZWQgPSB0cnVlXG4gIH1cblxuICBkaXNhYmxlKCkge1xuICAgIHRoaXMuX2lzRW5hYmxlZCA9IGZhbHNlXG4gIH1cblxuICB0b2dnbGVFbmFibGVkKCkge1xuICAgIHRoaXMuX2lzRW5hYmxlZCA9ICF0aGlzLl9pc0VuYWJsZWRcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlVHJpZ2dlci5jbGljayA9ICF0aGlzLl9hY3RpdmVUcmlnZ2VyLmNsaWNrXG4gICAgaWYgKHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgdGhpcy5fbGVhdmUoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fZW50ZXIoKVxuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dClcblxuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX01PREFMKSwgRVZFTlRfTU9EQUxfSElERSwgdGhpcy5faGlkZU1vZGFsSGFuZGxlcilcblxuICAgIGlmICh0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy1vcmlnaW5hbC10aXRsZScpKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgndGl0bGUnLCB0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy1vcmlnaW5hbC10aXRsZScpKVxuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2VQb3BwZXIoKVxuICAgIHN1cGVyLmRpc3Bvc2UoKVxuICB9XG5cbiAgc2hvdygpIHtcbiAgICBpZiAodGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHVzZSBzaG93IG9uIHZpc2libGUgZWxlbWVudHMnKVxuICAgIH1cblxuICAgIGlmICghKHRoaXMuX2lzV2l0aENvbnRlbnQoKSAmJiB0aGlzLl9pc0VuYWJsZWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9TSE9XKSlcbiAgICBjb25zdCBzaGFkb3dSb290ID0gZmluZFNoYWRvd1Jvb3QodGhpcy5fZWxlbWVudClcbiAgICBjb25zdCBpc0luVGhlRG9tID0gKHNoYWRvd1Jvb3QgfHwgdGhpcy5fZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuY29udGFpbnModGhpcy5fZWxlbWVudClcblxuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCAhaXNJblRoZURvbSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gdG9kbyB2NiByZW1vdmUgdGhpcyBPUiBtYWtlIGl0IG9wdGlvbmFsXG4gICAgdGhpcy5fZGlzcG9zZVBvcHBlcigpXG5cbiAgICBjb25zdCB0aXAgPSB0aGlzLl9nZXRUaXBFbGVtZW50KClcblxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgdGlwLmdldEF0dHJpYnV0ZSgnaWQnKSlcblxuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSB0aGlzLl9jb25maWdcblxuICAgIGlmICghdGhpcy5fZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0aGlzLnRpcCkpIHtcbiAgICAgIGNvbnRhaW5lci5hcHBlbmQodGlwKVxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfSU5TRVJURUQpKVxuICAgIH1cblxuICAgIHRoaXMuX3BvcHBlciA9IHRoaXMuX2NyZWF0ZVBvcHBlcih0aXApXG5cbiAgICB0aXAuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1cpXG5cbiAgICAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgYWRkIGV4dHJhXG4gICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB0byB0aGUgYm9keSdzIGltbWVkaWF0ZSBjaGlsZHJlbjtcbiAgICAvLyBvbmx5IG5lZWRlZCBiZWNhdXNlIG9mIGJyb2tlbiBldmVudCBkZWxlZ2F0aW9uIG9uIGlPU1xuICAgIC8vIGh0dHBzOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxNC8wMi9tb3VzZV9ldmVudF9idWIuaHRtbFxuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9uKGVsZW1lbnQsICdtb3VzZW92ZXInLCBub29wKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfU0hPV04pKVxuXG4gICAgICBpZiAodGhpcy5faXNIb3ZlcmVkID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLl9sZWF2ZSgpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlXG4gICAgfVxuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy50aXAsIHRoaXMuX2lzQW5pbWF0ZWQoKSlcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGhpZGVFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX0hJREUpKVxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdGlwID0gdGhpcy5fZ2V0VGlwRWxlbWVudCgpXG4gICAgdGlwLmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XKVxuXG4gICAgLy8gSWYgdGhpcyBpcyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlIHdlIHJlbW92ZSB0aGUgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHdlIGFkZGVkIGZvciBpT1Mgc3VwcG9ydFxuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9mZihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfQ0xJQ0tdID0gZmFsc2VcbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfRk9DVVNdID0gZmFsc2VcbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfSE9WRVJdID0gZmFsc2VcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSBudWxsIC8vIGl0IGlzIGEgdHJpY2sgdG8gc3VwcG9ydCBtYW51YWwgdHJpZ2dlcmluZ1xuXG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5faXNXaXRoQWN0aXZlVHJpZ2dlcigpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgICB0aGlzLl9kaXNwb3NlUG9wcGVyKClcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKVxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfSElEREVOKSlcbiAgICB9XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLnRpcCwgdGhpcy5faXNBbmltYXRlZCgpKVxuICB9XG5cbiAgdXBkYXRlKCkge1xuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlci51cGRhdGUoKVxuICAgIH1cbiAgfVxuXG4gIC8vIFByb3RlY3RlZFxuICBfaXNXaXRoQ29udGVudCgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLl9nZXRUaXRsZSgpKVxuICB9XG5cbiAgX2dldFRpcEVsZW1lbnQoKSB7XG4gICAgaWYgKCF0aGlzLnRpcCkge1xuICAgICAgdGhpcy50aXAgPSB0aGlzLl9jcmVhdGVUaXBFbGVtZW50KHRoaXMuX25ld0NvbnRlbnQgfHwgdGhpcy5fZ2V0Q29udGVudEZvclRlbXBsYXRlKCkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGlwXG4gIH1cblxuICBfY3JlYXRlVGlwRWxlbWVudChjb250ZW50KSB7XG4gICAgY29uc3QgdGlwID0gdGhpcy5fZ2V0VGVtcGxhdGVGYWN0b3J5KGNvbnRlbnQpLnRvSHRtbCgpXG5cbiAgICAvLyB0b2RvOiByZW1vdmUgdGhpcyBjaGVjayBvbiB2NlxuICAgIGlmICghdGlwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHRpcC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfRkFERSwgQ0xBU1NfTkFNRV9TSE9XKVxuICAgIC8vIHRvZG86IG9uIHY2IHRoZSBmb2xsb3dpbmcgY2FuIGJlIGFjaGlldmVkIHdpdGggQ1NTIG9ubHlcbiAgICB0aXAuY2xhc3NMaXN0LmFkZChgYnMtJHt0aGlzLmNvbnN0cnVjdG9yLk5BTUV9LWF1dG9gKVxuXG4gICAgY29uc3QgdGlwSWQgPSBnZXRVSUQodGhpcy5jb25zdHJ1Y3Rvci5OQU1FKS50b1N0cmluZygpXG5cbiAgICB0aXAuc2V0QXR0cmlidXRlKCdpZCcsIHRpcElkKVxuXG4gICAgaWYgKHRoaXMuX2lzQW5pbWF0ZWQoKSkge1xuICAgICAgdGlwLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9GQURFKVxuICAgIH1cblxuICAgIHJldHVybiB0aXBcbiAgfVxuXG4gIHNldENvbnRlbnQoY29udGVudCkge1xuICAgIHRoaXMuX25ld0NvbnRlbnQgPSBjb250ZW50XG4gICAgaWYgKHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgdGhpcy5fZGlzcG9zZVBvcHBlcigpXG4gICAgICB0aGlzLnNob3coKVxuICAgIH1cbiAgfVxuXG4gIF9nZXRUZW1wbGF0ZUZhY3RvcnkoY29udGVudCkge1xuICAgIGlmICh0aGlzLl90ZW1wbGF0ZUZhY3RvcnkpIHtcbiAgICAgIHRoaXMuX3RlbXBsYXRlRmFjdG9yeS5jaGFuZ2VDb250ZW50KGNvbnRlbnQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3RlbXBsYXRlRmFjdG9yeSA9IG5ldyBUZW1wbGF0ZUZhY3Rvcnkoe1xuICAgICAgICAuLi50aGlzLl9jb25maWcsXG4gICAgICAgIC8vIHRoZSBgY29udGVudGAgdmFyIGhhcyB0byBiZSBhZnRlciBgdGhpcy5fY29uZmlnYFxuICAgICAgICAvLyB0byBvdmVycmlkZSBjb25maWcuY29udGVudCBpbiBjYXNlIG9mIHBvcG92ZXJcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgZXh0cmFDbGFzczogdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmN1c3RvbUNsYXNzKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVGYWN0b3J5XG4gIH1cblxuICBfZ2V0Q29udGVudEZvclRlbXBsYXRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbU0VMRUNUT1JfVE9PTFRJUF9JTk5FUl06IHRoaXMuX2dldFRpdGxlKClcbiAgICB9XG4gIH1cblxuICBfZ2V0VGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy50aXRsZSkgfHwgdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfaW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KGV2ZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuZ2V0T3JDcmVhdGVJbnN0YW5jZShldmVudC5kZWxlZ2F0ZVRhcmdldCwgdGhpcy5fZ2V0RGVsZWdhdGVDb25maWcoKSlcbiAgfVxuXG4gIF9pc0FuaW1hdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuYW5pbWF0aW9uIHx8ICh0aGlzLnRpcCAmJiB0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9GQURFKSlcbiAgfVxuXG4gIF9pc1Nob3duKCkge1xuICAgIHJldHVybiB0aGlzLnRpcCAmJiB0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TSE9XKVxuICB9XG5cbiAgX2NyZWF0ZVBvcHBlcih0aXApIHtcbiAgICBjb25zdCBwbGFjZW1lbnQgPSB0eXBlb2YgdGhpcy5fY29uZmlnLnBsYWNlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgICB0aGlzLl9jb25maWcucGxhY2VtZW50LmNhbGwodGhpcywgdGlwLCB0aGlzLl9lbGVtZW50KSA6XG4gICAgICB0aGlzLl9jb25maWcucGxhY2VtZW50XG4gICAgY29uc3QgYXR0YWNobWVudCA9IEF0dGFjaG1lbnRNYXBbcGxhY2VtZW50LnRvVXBwZXJDYXNlKCldXG4gICAgcmV0dXJuIFBvcHBlci5jcmVhdGVQb3BwZXIodGhpcy5fZWxlbWVudCwgdGlwLCB0aGlzLl9nZXRQb3BwZXJDb25maWcoYXR0YWNobWVudCkpXG4gIH1cblxuICBfZ2V0T2Zmc2V0KCkge1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSB0aGlzLl9jb25maWdcblxuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9mZnNldC5zcGxpdCgnLCcpLm1hcCh2YWx1ZSA9PiBOdW1iZXIucGFyc2VJbnQodmFsdWUsIDEwKSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHBvcHBlckRhdGEgPT4gb2Zmc2V0KHBvcHBlckRhdGEsIHRoaXMuX2VsZW1lbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldFxuICB9XG5cbiAgX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nID8gYXJnLmNhbGwodGhpcy5fZWxlbWVudCkgOiBhcmdcbiAgfVxuXG4gIF9nZXRQb3BwZXJDb25maWcoYXR0YWNobWVudCkge1xuICAgIGNvbnN0IGRlZmF1bHRCc1BvcHBlckNvbmZpZyA9IHtcbiAgICAgIHBsYWNlbWVudDogYXR0YWNobWVudCxcbiAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2ZsaXAnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogdGhpcy5fY29uZmlnLmZhbGxiYWNrUGxhY2VtZW50c1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5fZ2V0T2Zmc2V0KClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBib3VuZGFyeTogdGhpcy5fY29uZmlnLmJvdW5kYXJ5XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2Fycm93JyxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBlbGVtZW50OiBgLiR7dGhpcy5jb25zdHJ1Y3Rvci5OQU1FfS1hcnJvd2BcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAncHJlU2V0UGxhY2VtZW50JyxcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHBoYXNlOiAnYmVmb3JlTWFpbicsXG4gICAgICAgICAgZm46IGRhdGEgPT4ge1xuICAgICAgICAgICAgLy8gUHJlLXNldCBQb3BwZXIncyBwbGFjZW1lbnQgYXR0cmlidXRlIGluIG9yZGVyIHRvIHJlYWQgdGhlIGFycm93IHNpemVzIHByb3Blcmx5LlxuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBQb3BwZXIgbWl4ZXMgdXAgdGhlIHdpZHRoIGFuZCBoZWlnaHQgZGltZW5zaW9ucyBzaW5jZSB0aGUgaW5pdGlhbCBhcnJvdyBzdHlsZSBpcyBmb3IgdG9wIHBsYWNlbWVudFxuICAgICAgICAgICAgdGhpcy5fZ2V0VGlwRWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnZGF0YS1wb3BwZXItcGxhY2VtZW50JywgZGF0YS5zdGF0ZS5wbGFjZW1lbnQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRCc1BvcHBlckNvbmZpZyxcbiAgICAgIC4uLih0eXBlb2YgdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcoZGVmYXVsdEJzUG9wcGVyQ29uZmlnKSA6IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcpXG4gICAgfVxuICB9XG5cbiAgX3NldExpc3RlbmVycygpIHtcbiAgICBjb25zdCB0cmlnZ2VycyA9IHRoaXMuX2NvbmZpZy50cmlnZ2VyLnNwbGl0KCcgJylcblxuICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiB0cmlnZ2Vycykge1xuICAgICAgaWYgKHRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX0NMSUNLKSwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldChldmVudClcbiAgICAgICAgICBjb250ZXh0LnRvZ2dsZSgpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKHRyaWdnZXIgIT09IFRSSUdHRVJfTUFOVUFMKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50SW4gPSB0cmlnZ2VyID09PSBUUklHR0VSX0hPVkVSID9cbiAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9NT1VTRUVOVEVSKSA6XG4gICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfRk9DVVNJTilcbiAgICAgICAgY29uc3QgZXZlbnRPdXQgPSB0cmlnZ2VyID09PSBUUklHR0VSX0hPVkVSID9cbiAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9NT1VTRUxFQVZFKSA6XG4gICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfRk9DVVNPVVQpXG5cbiAgICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIGV2ZW50SW4sIHRoaXMuX2NvbmZpZy5zZWxlY3RvciwgZXZlbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpXG4gICAgICAgICAgY29udGV4dC5fYWN0aXZlVHJpZ2dlcltldmVudC50eXBlID09PSAnZm9jdXNpbicgPyBUUklHR0VSX0ZPQ1VTIDogVFJJR0dFUl9IT1ZFUl0gPSB0cnVlXG4gICAgICAgICAgY29udGV4dC5fZW50ZXIoKVxuICAgICAgICB9KVxuICAgICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgZXZlbnRPdXQsIHRoaXMuX2NvbmZpZy5zZWxlY3RvciwgZXZlbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpXG4gICAgICAgICAgY29udGV4dC5fYWN0aXZlVHJpZ2dlcltldmVudC50eXBlID09PSAnZm9jdXNvdXQnID8gVFJJR0dFUl9GT0NVUyA6IFRSSUdHRVJfSE9WRVJdID1cbiAgICAgICAgICAgIGNvbnRleHQuX2VsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldClcblxuICAgICAgICAgIGNvbnRleHQuX2xlYXZlKClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX01PREFMKSwgRVZFTlRfTU9EQUxfSElERSwgdGhpcy5faGlkZU1vZGFsSGFuZGxlcilcbiAgfVxuXG4gIF9maXhUaXRsZSgpIHtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCd0aXRsZScpXG5cbiAgICBpZiAoIXRpdGxlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiYgIXRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRpdGxlKVxuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJywgdGl0bGUpIC8vIERPIE5PVCBVU0UgSVQuIElzIG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3RpdGxlJylcbiAgfVxuXG4gIF9lbnRlcigpIHtcbiAgICBpZiAodGhpcy5faXNTaG93bigpIHx8IHRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgdGhpcy5faXNIb3ZlcmVkID0gdHJ1ZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5faXNIb3ZlcmVkID0gdHJ1ZVxuXG4gICAgdGhpcy5fc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICAgIHRoaXMuc2hvdygpXG4gICAgICB9XG4gICAgfSwgdGhpcy5fY29uZmlnLmRlbGF5LnNob3cpXG4gIH1cblxuICBfbGVhdmUoKSB7XG4gICAgaWYgKHRoaXMuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2VcblxuICAgIHRoaXMuX3NldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9pc0hvdmVyZWQpIHtcbiAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgIH1cbiAgICB9LCB0aGlzLl9jb25maWcuZGVsYXkuaGlkZSlcbiAgfVxuXG4gIF9zZXRUaW1lb3V0KGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dClcbiAgICB0aGlzLl90aW1lb3V0ID0gc2V0VGltZW91dChoYW5kbGVyLCB0aW1lb3V0KVxuICB9XG5cbiAgX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fYWN0aXZlVHJpZ2dlcikuaW5jbHVkZXModHJ1ZSlcbiAgfVxuXG4gIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgY29uc3QgZGF0YUF0dHJpYnV0ZXMgPSBNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlcyh0aGlzLl9lbGVtZW50KVxuXG4gICAgZm9yIChjb25zdCBkYXRhQXR0cmlidXRlIG9mIE9iamVjdC5rZXlzKGRhdGFBdHRyaWJ1dGVzKSkge1xuICAgICAgaWYgKERJU0FMTE9XRURfQVRUUklCVVRFUy5oYXMoZGF0YUF0dHJpYnV0ZSkpIHtcbiAgICAgICAgZGVsZXRlIGRhdGFBdHRyaWJ1dGVzW2RhdGFBdHRyaWJ1dGVdXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uZmlnID0ge1xuICAgICAgLi4uZGF0YUF0dHJpYnV0ZXMsXG4gICAgICAuLi4odHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgJiYgY29uZmlnID8gY29uZmlnIDoge30pXG4gICAgfVxuICAgIGNvbmZpZyA9IHRoaXMuX21lcmdlQ29uZmlnT2JqKGNvbmZpZylcbiAgICBjb25maWcgPSB0aGlzLl9jb25maWdBZnRlck1lcmdlKGNvbmZpZylcbiAgICB0aGlzLl90eXBlQ2hlY2tDb25maWcoY29uZmlnKVxuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIGNvbmZpZy5jb250YWluZXIgPSBjb25maWcuY29udGFpbmVyID09PSBmYWxzZSA/IGRvY3VtZW50LmJvZHkgOiBnZXRFbGVtZW50KGNvbmZpZy5jb250YWluZXIpXG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZy5kZWxheSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbmZpZy5kZWxheSA9IHtcbiAgICAgICAgc2hvdzogY29uZmlnLmRlbGF5LFxuICAgICAgICBoaWRlOiBjb25maWcuZGVsYXlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZy50aXRsZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbmZpZy50aXRsZSA9IGNvbmZpZy50aXRsZS50b1N0cmluZygpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25maWcuY29udGVudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbmZpZy5jb250ZW50ID0gY29uZmlnLmNvbnRlbnQudG9TdHJpbmcoKVxuICAgIH1cblxuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIF9nZXREZWxlZ2F0ZUNvbmZpZygpIHtcbiAgICBjb25zdCBjb25maWcgPSB7fVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5fY29uZmlnKSB7XG4gICAgICBpZiAodGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0W2tleV0gIT09IHRoaXMuX2NvbmZpZ1trZXldKSB7XG4gICAgICAgIGNvbmZpZ1trZXldID0gdGhpcy5fY29uZmlnW2tleV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25maWcuc2VsZWN0b3IgPSBmYWxzZVxuICAgIGNvbmZpZy50cmlnZ2VyID0gJ21hbnVhbCdcblxuICAgIC8vIEluIHRoZSBmdXR1cmUgY2FuIGJlIHJlcGxhY2VkIHdpdGg6XG4gICAgLy8gY29uc3Qga2V5c1dpdGhEaWZmZXJlbnRWYWx1ZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLl9jb25maWcpLmZpbHRlcihlbnRyeSA9PiB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRbZW50cnlbMF1dICE9PSB0aGlzLl9jb25maWdbZW50cnlbMF1dKVxuICAgIC8vIGBPYmplY3QuZnJvbUVudHJpZXMoa2V5c1dpdGhEaWZmZXJlbnRWYWx1ZXMpYFxuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIF9kaXNwb3NlUG9wcGVyKCkge1xuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlci5kZXN0cm95KClcbiAgICAgIHRoaXMuX3BvcHBlciA9IG51bGxcbiAgICB9XG5cbiAgICBpZiAodGhpcy50aXApIHtcbiAgICAgIHRoaXMudGlwLnJlbW92ZSgpXG4gICAgICB0aGlzLnRpcCA9IG51bGxcbiAgICB9XG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBUb29sdGlwLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSgpXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihUb29sdGlwKVxuXG5leHBvcnQgZGVmYXVsdCBUb29sdGlwXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHBvcG92ZXIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgeyBkZWZpbmVKUXVlcnlQbHVnaW4gfSBmcm9tICcuL3V0aWwvaW5kZXgnXG5pbXBvcnQgVG9vbHRpcCBmcm9tICcuL3Rvb2x0aXAnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICdwb3BvdmVyJ1xuXG5jb25zdCBTRUxFQ1RPUl9USVRMRSA9ICcucG9wb3Zlci1oZWFkZXInXG5jb25zdCBTRUxFQ1RPUl9DT05URU5UID0gJy5wb3BvdmVyLWJvZHknXG5cbmNvbnN0IERlZmF1bHQgPSB7XG4gIC4uLlRvb2x0aXAuRGVmYXVsdCxcbiAgY29udGVudDogJycsXG4gIG9mZnNldDogWzAsIDhdLFxuICBwbGFjZW1lbnQ6ICdyaWdodCcsXG4gIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cInBvcG92ZXJcIiByb2xlPVwidG9vbHRpcFwiPicgK1xuICAgICc8ZGl2IGNsYXNzPVwicG9wb3Zlci1hcnJvd1wiPjwvZGl2PicgK1xuICAgICc8aDMgY2xhc3M9XCJwb3BvdmVyLWhlYWRlclwiPjwvaDM+JyArXG4gICAgJzxkaXYgY2xhc3M9XCJwb3BvdmVyLWJvZHlcIj48L2Rpdj4nICtcbiAgICAnPC9kaXY+JyxcbiAgdHJpZ2dlcjogJ2NsaWNrJ1xufVxuXG5jb25zdCBEZWZhdWx0VHlwZSA9IHtcbiAgLi4uVG9vbHRpcC5EZWZhdWx0VHlwZSxcbiAgY29udGVudDogJyhudWxsfHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKSdcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgUG9wb3ZlciBleHRlbmRzIFRvb2x0aXAge1xuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gT3ZlcnJpZGVzXG4gIF9pc1dpdGhDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRUaXRsZSgpIHx8IHRoaXMuX2dldENvbnRlbnQoKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfZ2V0Q29udGVudEZvclRlbXBsYXRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbU0VMRUNUT1JfVElUTEVdOiB0aGlzLl9nZXRUaXRsZSgpLFxuICAgICAgW1NFTEVDVE9SX0NPTlRFTlRdOiB0aGlzLl9nZXRDb250ZW50KClcbiAgICB9XG4gIH1cblxuICBfZ2V0Q29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmNvbnRlbnQpXG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBQb3BvdmVyLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSgpXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihQb3BvdmVyKVxuXG5leHBvcnQgZGVmYXVsdCBQb3BvdmVyXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHNjcm9sbHNweS5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7IGRlZmluZUpRdWVyeVBsdWdpbiwgZ2V0RWxlbWVudCwgaXNEaXNhYmxlZCwgaXNWaXNpYmxlIH0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IFNlbGVjdG9yRW5naW5lIGZyb20gJy4vZG9tL3NlbGVjdG9yLWVuZ2luZSdcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4vYmFzZS1jb21wb25lbnQnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICdzY3JvbGxzcHknXG5jb25zdCBEQVRBX0tFWSA9ICdicy5zY3JvbGxzcHknXG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YFxuY29uc3QgREFUQV9BUElfS0VZID0gJy5kYXRhLWFwaSdcblxuY29uc3QgRVZFTlRfQUNUSVZBVEUgPSBgYWN0aXZhdGUke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9DTElDSyA9IGBjbGljayR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0xPQURfREFUQV9BUEkgPSBgbG9hZCR7RVZFTlRfS0VZfSR7REFUQV9BUElfS0VZfWBcblxuY29uc3QgQ0xBU1NfTkFNRV9EUk9QRE9XTl9JVEVNID0gJ2Ryb3Bkb3duLWl0ZW0nXG5jb25zdCBDTEFTU19OQU1FX0FDVElWRSA9ICdhY3RpdmUnXG5cbmNvbnN0IFNFTEVDVE9SX0RBVEFfU1BZID0gJ1tkYXRhLWJzLXNweT1cInNjcm9sbFwiXSdcbmNvbnN0IFNFTEVDVE9SX1RBUkdFVF9MSU5LUyA9ICdbaHJlZl0nXG5jb25zdCBTRUxFQ1RPUl9OQVZfTElTVF9HUk9VUCA9ICcubmF2LCAubGlzdC1ncm91cCdcbmNvbnN0IFNFTEVDVE9SX05BVl9MSU5LUyA9ICcubmF2LWxpbmsnXG5jb25zdCBTRUxFQ1RPUl9OQVZfSVRFTVMgPSAnLm5hdi1pdGVtJ1xuY29uc3QgU0VMRUNUT1JfTElTVF9JVEVNUyA9ICcubGlzdC1ncm91cC1pdGVtJ1xuY29uc3QgU0VMRUNUT1JfTElOS19JVEVNUyA9IGAke1NFTEVDVE9SX05BVl9MSU5LU30sICR7U0VMRUNUT1JfTkFWX0lURU1TfSA+ICR7U0VMRUNUT1JfTkFWX0xJTktTfSwgJHtTRUxFQ1RPUl9MSVNUX0lURU1TfWBcbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOID0gJy5kcm9wZG93bidcbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSA9ICcuZHJvcGRvd24tdG9nZ2xlJ1xuXG5jb25zdCBEZWZhdWx0ID0ge1xuICBvZmZzZXQ6IG51bGwsIC8vIFRPRE86IHY2IEBkZXByZWNhdGVkLCBrZWVwIGl0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zXG4gIHJvb3RNYXJnaW46ICcwcHggMHB4IC0yNSUnLFxuICBzbW9vdGhTY3JvbGw6IGZhbHNlLFxuICB0YXJnZXQ6IG51bGwsXG4gIHRocmVzaG9sZDogWzAuMSwgMC41LCAxXVxufVxuXG5jb25zdCBEZWZhdWx0VHlwZSA9IHtcbiAgb2Zmc2V0OiAnKG51bWJlcnxudWxsKScsIC8vIFRPRE8gdjYgQGRlcHJlY2F0ZWQsIGtlZXAgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnNcbiAgcm9vdE1hcmdpbjogJ3N0cmluZycsXG4gIHNtb290aFNjcm9sbDogJ2Jvb2xlYW4nLFxuICB0YXJnZXQ6ICdlbGVtZW50JyxcbiAgdGhyZXNob2xkOiAnYXJyYXknXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFNjcm9sbFNweSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpXG5cbiAgICAvLyB0aGlzLl9lbGVtZW50IGlzIHRoZSBvYnNlcnZhYmxlc0NvbnRhaW5lciBhbmQgY29uZmlnLnRhcmdldCB0aGUgbWVudSBsaW5rcyB3cmFwcGVyXG4gICAgdGhpcy5fdGFyZ2V0TGlua3MgPSBuZXcgTWFwKClcbiAgICB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMgPSBuZXcgTWFwKClcbiAgICB0aGlzLl9yb290RWxlbWVudCA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5fZWxlbWVudCkub3ZlcmZsb3dZID09PSAndmlzaWJsZScgPyBudWxsIDogdGhpcy5fZWxlbWVudFxuICAgIHRoaXMuX2FjdGl2ZVRhcmdldCA9IG51bGxcbiAgICB0aGlzLl9vYnNlcnZlciA9IG51bGxcbiAgICB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEgPSB7XG4gICAgICB2aXNpYmxlRW50cnlUb3A6IDAsXG4gICAgICBwYXJlbnRTY3JvbGxUb3A6IDBcbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoKCkgLy8gaW5pdGlhbGl6ZVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICByZWZyZXNoKCkge1xuICAgIHRoaXMuX2luaXRpYWxpemVUYXJnZXRzQW5kT2JzZXJ2YWJsZXMoKVxuICAgIHRoaXMuX21heWJlRW5hYmxlU21vb3RoU2Nyb2xsKClcblxuICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29ic2VydmVyID0gdGhpcy5fZ2V0TmV3T2JzZXJ2ZXIoKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoc2VjdGlvbilcbiAgICB9XG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgIHN1cGVyLmRpc3Bvc2UoKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICAvLyBUT0RPOiBvbiB2NiB0YXJnZXQgc2hvdWxkIGJlIGdpdmVuIGV4cGxpY2l0bHkgJiByZW1vdmUgdGhlIHt0YXJnZXQ6ICdzcy10YXJnZXQnfSBjYXNlXG4gICAgY29uZmlnLnRhcmdldCA9IGdldEVsZW1lbnQoY29uZmlnLnRhcmdldCkgfHwgZG9jdW1lbnQuYm9keVxuXG4gICAgLy8gVE9ETzogdjYgT25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gVXNlIHJvb3RNYXJnaW4gb25seVxuICAgIGNvbmZpZy5yb290TWFyZ2luID0gY29uZmlnLm9mZnNldCA/IGAke2NvbmZpZy5vZmZzZXR9cHggMHB4IC0zMCVgIDogY29uZmlnLnJvb3RNYXJnaW5cblxuICAgIGlmICh0eXBlb2YgY29uZmlnLnRocmVzaG9sZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbmZpZy50aHJlc2hvbGQgPSBjb25maWcudGhyZXNob2xkLnNwbGl0KCcsJykubWFwKHZhbHVlID0+IE51bWJlci5wYXJzZUZsb2F0KHZhbHVlKSlcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cblxuICBfbWF5YmVFbmFibGVTbW9vdGhTY3JvbGwoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuc21vb3RoU2Nyb2xsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB1bnJlZ2lzdGVyIGFueSBwcmV2aW91cyBsaXN0ZW5lcnNcbiAgICBFdmVudEhhbmRsZXIub2ZmKHRoaXMuX2NvbmZpZy50YXJnZXQsIEVWRU5UX0NMSUNLKVxuXG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2NvbmZpZy50YXJnZXQsIEVWRU5UX0NMSUNLLCBTRUxFQ1RPUl9UQVJHRVRfTElOS1MsIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IG9ic2VydmFibGVTZWN0aW9uID0gdGhpcy5fb2JzZXJ2YWJsZVNlY3Rpb25zLmdldChldmVudC50YXJnZXQuaGFzaClcbiAgICAgIGlmIChvYnNlcnZhYmxlU2VjdGlvbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9yb290RWxlbWVudCB8fCB3aW5kb3dcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gb2JzZXJ2YWJsZVNlY3Rpb24ub2Zmc2V0VG9wIC0gdGhpcy5fZWxlbWVudC5vZmZzZXRUb3BcbiAgICAgICAgaWYgKHJvb3Quc2Nyb2xsVG8pIHtcbiAgICAgICAgICByb290LnNjcm9sbFRvKHsgdG9wOiBoZWlnaHQsIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hyb21lIDYwIGRvZXNuJ3Qgc3VwcG9ydCBgc2Nyb2xsVG9gXG4gICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gaGVpZ2h0XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIF9nZXROZXdPYnNlcnZlcigpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdDogdGhpcy5fcm9vdEVsZW1lbnQsXG4gICAgICB0aHJlc2hvbGQ6IHRoaXMuX2NvbmZpZy50aHJlc2hvbGQsXG4gICAgICByb290TWFyZ2luOiB0aGlzLl9jb25maWcucm9vdE1hcmdpblxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZW50cmllcyA9PiB0aGlzLl9vYnNlcnZlckNhbGxiYWNrKGVudHJpZXMpLCBvcHRpb25zKVxuICB9XG5cbiAgLy8gVGhlIGxvZ2ljIG9mIHNlbGVjdGlvblxuICBfb2JzZXJ2ZXJDYWxsYmFjayhlbnRyaWVzKSB7XG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGVudHJ5ID0+IHRoaXMuX3RhcmdldExpbmtzLmdldChgIyR7ZW50cnkudGFyZ2V0LmlkfWApXG4gICAgY29uc3QgYWN0aXZhdGUgPSBlbnRyeSA9PiB7XG4gICAgICB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEudmlzaWJsZUVudHJ5VG9wID0gZW50cnkudGFyZ2V0Lm9mZnNldFRvcFxuICAgICAgdGhpcy5fcHJvY2Vzcyh0YXJnZXRFbGVtZW50KGVudHJ5KSlcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRTY3JvbGxUb3AgPSAodGhpcy5fcm9vdEVsZW1lbnQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxUb3BcbiAgICBjb25zdCB1c2VyU2Nyb2xsc0Rvd24gPSBwYXJlbnRTY3JvbGxUb3AgPj0gdGhpcy5fcHJldmlvdXNTY3JvbGxEYXRhLnBhcmVudFNjcm9sbFRvcFxuICAgIHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS5wYXJlbnRTY3JvbGxUb3AgPSBwYXJlbnRTY3JvbGxUb3BcblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgaWYgKCFlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICB0aGlzLl9hY3RpdmVUYXJnZXQgPSBudWxsXG4gICAgICAgIHRoaXMuX2NsZWFyQWN0aXZlQ2xhc3ModGFyZ2V0RWxlbWVudChlbnRyeSkpXG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50cnlJc0xvd2VyVGhhblByZXZpb3VzID0gZW50cnkudGFyZ2V0Lm9mZnNldFRvcCA+PSB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEudmlzaWJsZUVudHJ5VG9wXG4gICAgICAvLyBpZiB3ZSBhcmUgc2Nyb2xsaW5nIGRvd24sIHBpY2sgdGhlIGJpZ2dlciBvZmZzZXRUb3BcbiAgICAgIGlmICh1c2VyU2Nyb2xsc0Rvd24gJiYgZW50cnlJc0xvd2VyVGhhblByZXZpb3VzKSB7XG4gICAgICAgIGFjdGl2YXRlKGVudHJ5KVxuICAgICAgICAvLyBpZiBwYXJlbnQgaXNuJ3Qgc2Nyb2xsZWQsIGxldCdzIGtlZXAgdGhlIGZpcnN0IHZpc2libGUgaXRlbSwgYnJlYWtpbmcgdGhlIGl0ZXJhdGlvblxuICAgICAgICBpZiAoIXBhcmVudFNjcm9sbFRvcCkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gaWYgd2UgYXJlIHNjcm9sbGluZyB1cCwgcGljayB0aGUgc21hbGxlc3Qgb2Zmc2V0VG9wXG4gICAgICBpZiAoIXVzZXJTY3JvbGxzRG93biAmJiAhZW50cnlJc0xvd2VyVGhhblByZXZpb3VzKSB7XG4gICAgICAgIGFjdGl2YXRlKGVudHJ5KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9pbml0aWFsaXplVGFyZ2V0c0FuZE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuX3RhcmdldExpbmtzID0gbmV3IE1hcCgpXG4gICAgdGhpcy5fb2JzZXJ2YWJsZVNlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICBjb25zdCB0YXJnZXRMaW5rcyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfVEFSR0VUX0xJTktTLCB0aGlzLl9jb25maWcudGFyZ2V0KVxuXG4gICAgZm9yIChjb25zdCBhbmNob3Igb2YgdGFyZ2V0TGlua3MpIHtcbiAgICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBhbmNob3IgaGFzIGFuIGlkIGFuZCBpcyBub3QgZGlzYWJsZWRcbiAgICAgIGlmICghYW5jaG9yLmhhc2ggfHwgaXNEaXNhYmxlZChhbmNob3IpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9ic2VydmFibGVTZWN0aW9uID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShhbmNob3IuaGFzaCwgdGhpcy5fZWxlbWVudClcblxuICAgICAgLy8gZW5zdXJlIHRoYXQgdGhlIG9ic2VydmFibGVTZWN0aW9uIGV4aXN0cyAmIGlzIHZpc2libGVcbiAgICAgIGlmIChpc1Zpc2libGUob2JzZXJ2YWJsZVNlY3Rpb24pKSB7XG4gICAgICAgIHRoaXMuX3RhcmdldExpbmtzLnNldChhbmNob3IuaGFzaCwgYW5jaG9yKVxuICAgICAgICB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMuc2V0KGFuY2hvci5oYXNoLCBvYnNlcnZhYmxlU2VjdGlvbilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfcHJvY2Vzcyh0YXJnZXQpIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlVGFyZ2V0ID09PSB0YXJnZXQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2NsZWFyQWN0aXZlQ2xhc3ModGhpcy5fY29uZmlnLnRhcmdldClcbiAgICB0aGlzLl9hY3RpdmVUYXJnZXQgPSB0YXJnZXRcbiAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSlcbiAgICB0aGlzLl9hY3RpdmF0ZVBhcmVudHModGFyZ2V0KVxuXG4gICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfQUNUSVZBVEUsIHsgcmVsYXRlZFRhcmdldDogdGFyZ2V0IH0pXG4gIH1cblxuICBfYWN0aXZhdGVQYXJlbnRzKHRhcmdldCkge1xuICAgIC8vIEFjdGl2YXRlIGRyb3Bkb3duIHBhcmVudHNcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BET1dOX0lURU0pKSB7XG4gICAgICBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSwgdGFyZ2V0LmNsb3Nlc3QoU0VMRUNUT1JfRFJPUERPV04pKVxuICAgICAgICAuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbGlzdEdyb3VwIG9mIFNlbGVjdG9yRW5naW5lLnBhcmVudHModGFyZ2V0LCBTRUxFQ1RPUl9OQVZfTElTVF9HUk9VUCkpIHtcbiAgICAgIC8vIFNldCB0cmlnZ2VyZWQgbGlua3MgcGFyZW50cyBhcyBhY3RpdmVcbiAgICAgIC8vIFdpdGggYm90aCA8dWw+IGFuZCA8bmF2PiBtYXJrdXAgYSBwYXJlbnQgaXMgdGhlIHByZXZpb3VzIHNpYmxpbmcgb2YgYW55IG5hdiBhbmNlc3RvclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIFNlbGVjdG9yRW5naW5lLnByZXYobGlzdEdyb3VwLCBTRUxFQ1RPUl9MSU5LX0lURU1TKSkge1xuICAgICAgICBpdGVtLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2NsZWFyQWN0aXZlQ2xhc3MocGFyZW50KSB7XG4gICAgcGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUpXG5cbiAgICBjb25zdCBhY3RpdmVOb2RlcyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoYCR7U0VMRUNUT1JfVEFSR0VUX0xJTktTfS4ke0NMQVNTX05BTUVfQUNUSVZFfWAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYWN0aXZlTm9kZXMpIHtcbiAgICAgIG5vZGUuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSlcbiAgICB9XG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBTY3JvbGxTcHkuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpXG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYClcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKClcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJLCAoKSA9PiB7XG4gIGZvciAoY29uc3Qgc3B5IG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfREFUQV9TUFkpKSB7XG4gICAgU2Nyb2xsU3B5LmdldE9yQ3JlYXRlSW5zdGFuY2Uoc3B5KVxuICB9XG59KVxuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihTY3JvbGxTcHkpXG5cbmV4cG9ydCBkZWZhdWx0IFNjcm9sbFNweVxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB0YWIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgeyBkZWZpbmVKUXVlcnlQbHVnaW4sIGdldEVsZW1lbnRGcm9tU2VsZWN0b3IsIGdldE5leHRBY3RpdmVFbGVtZW50LCBpc0Rpc2FibGVkIH0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IFNlbGVjdG9yRW5naW5lIGZyb20gJy4vZG9tL3NlbGVjdG9yLWVuZ2luZSdcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4vYmFzZS1jb21wb25lbnQnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICd0YWInXG5jb25zdCBEQVRBX0tFWSA9ICdicy50YWInXG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YFxuXG5jb25zdCBFVkVOVF9ISURFID0gYGhpZGUke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURERU4gPSBgaGlkZGVuJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPVyA9IGBzaG93JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPV04gPSBgc2hvd24ke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9DTElDS19EQVRBX0FQSSA9IGBjbGljayR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0tFWURPV04gPSBga2V5ZG93biR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0xPQURfREFUQV9BUEkgPSBgbG9hZCR7RVZFTlRfS0VZfWBcblxuY29uc3QgQVJST1dfTEVGVF9LRVkgPSAnQXJyb3dMZWZ0J1xuY29uc3QgQVJST1dfUklHSFRfS0VZID0gJ0Fycm93UmlnaHQnXG5jb25zdCBBUlJPV19VUF9LRVkgPSAnQXJyb3dVcCdcbmNvbnN0IEFSUk9XX0RPV05fS0VZID0gJ0Fycm93RG93bidcblxuY29uc3QgQ0xBU1NfTkFNRV9BQ1RJVkUgPSAnYWN0aXZlJ1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFID0gJ2ZhZGUnXG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdydcbmNvbnN0IENMQVNTX0RST1BET1dOID0gJ2Ryb3Bkb3duJ1xuXG5jb25zdCBTRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEUgPSAnLmRyb3Bkb3duLXRvZ2dsZSdcbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOX01FTlUgPSAnLmRyb3Bkb3duLW1lbnUnXG5jb25zdCBOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFID0gJzpub3QoLmRyb3Bkb3duLXRvZ2dsZSknXG5cbmNvbnN0IFNFTEVDVE9SX1RBQl9QQU5FTCA9ICcubGlzdC1ncm91cCwgLm5hdiwgW3JvbGU9XCJ0YWJsaXN0XCJdJ1xuY29uc3QgU0VMRUNUT1JfT1VURVIgPSAnLm5hdi1pdGVtLCAubGlzdC1ncm91cC1pdGVtJ1xuY29uc3QgU0VMRUNUT1JfSU5ORVIgPSBgLm5hdi1saW5rJHtOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFfSwgLmxpc3QtZ3JvdXAtaXRlbSR7Tk9UX1NFTEVDVE9SX0RST1BET1dOX1RPR0dMRX0sIFtyb2xlPVwidGFiXCJdJHtOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFfWBcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFID0gJ1tkYXRhLWJzLXRvZ2dsZT1cInRhYlwiXSwgW2RhdGEtYnMtdG9nZ2xlPVwicGlsbFwiXSwgW2RhdGEtYnMtdG9nZ2xlPVwibGlzdFwiXScgLy8gdG9kbzp2NjogY291bGQgYmUgb25seSBgdGFiYFxuY29uc3QgU0VMRUNUT1JfSU5ORVJfRUxFTSA9IGAke1NFTEVDVE9SX0lOTkVSfSwgJHtTRUxFQ1RPUl9EQVRBX1RPR0dMRX1gXG5cbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFX0FDVElWRSA9IGAuJHtDTEFTU19OQU1FX0FDVElWRX1bZGF0YS1icy10b2dnbGU9XCJ0YWJcIl0sIC4ke0NMQVNTX05BTUVfQUNUSVZFfVtkYXRhLWJzLXRvZ2dsZT1cInBpbGxcIl0sIC4ke0NMQVNTX05BTUVfQUNUSVZFfVtkYXRhLWJzLXRvZ2dsZT1cImxpc3RcIl1gXG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFRhYiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudClcbiAgICB0aGlzLl9wYXJlbnQgPSB0aGlzLl9lbGVtZW50LmNsb3Nlc3QoU0VMRUNUT1JfVEFCX1BBTkVMKVxuXG4gICAgaWYgKCF0aGlzLl9wYXJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgICAgLy8gdG9kbzogc2hvdWxkIFRocm93IGV4Y2VwdGlvbiBvbiB2NlxuICAgICAgLy8gdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtlbGVtZW50Lm91dGVySFRNTH0gaGFzIG5vdCBhIHZhbGlkIHBhcmVudCAke1NFTEVDVE9SX0lOTkVSX0VMRU19YClcbiAgICB9XG5cbiAgICAvLyBTZXQgdXAgaW5pdGlhbCBhcmlhIGF0dHJpYnV0ZXNcbiAgICB0aGlzLl9zZXRJbml0aWFsQXR0cmlidXRlcyh0aGlzLl9wYXJlbnQsIHRoaXMuX2dldENoaWxkcmVuKCkpXG5cbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTiwgZXZlbnQgPT4gdGhpcy5fa2V5ZG93bihldmVudCkpXG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gUHVibGljXG4gIHNob3coKSB7IC8vIFNob3dzIHRoaXMgZWxlbSBhbmQgZGVhY3RpdmF0ZSB0aGUgYWN0aXZlIHNpYmxpbmcgaWYgZXhpc3RzXG4gICAgY29uc3QgaW5uZXJFbGVtID0gdGhpcy5fZWxlbWVudFxuICAgIGlmICh0aGlzLl9lbGVtSXNBY3RpdmUoaW5uZXJFbGVtKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gU2VhcmNoIGZvciBhY3RpdmUgdGFiIG9uIHNhbWUgcGFyZW50IHRvIGRlYWN0aXZhdGUgaXRcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLl9nZXRBY3RpdmVFbGVtKClcblxuICAgIGNvbnN0IGhpZGVFdmVudCA9IGFjdGl2ZSA/XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcihhY3RpdmUsIEVWRU5UX0hJREUsIHsgcmVsYXRlZFRhcmdldDogaW5uZXJFbGVtIH0pIDpcbiAgICAgIG51bGxcblxuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKGlubmVyRWxlbSwgRVZFTlRfU0hPVywgeyByZWxhdGVkVGFyZ2V0OiBhY3RpdmUgfSlcblxuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCAoaGlkZUV2ZW50ICYmIGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fZGVhY3RpdmF0ZShhY3RpdmUsIGlubmVyRWxlbSlcbiAgICB0aGlzLl9hY3RpdmF0ZShpbm5lckVsZW0sIGFjdGl2ZSlcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2FjdGl2YXRlKGVsZW1lbnQsIHJlbGF0ZWRFbGVtKSB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUpXG5cbiAgICB0aGlzLl9hY3RpdmF0ZShnZXRFbGVtZW50RnJvbVNlbGVjdG9yKGVsZW1lbnQpKSAvLyBTZWFyY2ggYW5kIGFjdGl2YXRlL3Nob3cgdGhlIHByb3BlciBzZWN0aW9uXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgncm9sZScpICE9PSAndGFiJykge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4JylcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgdHJ1ZSlcbiAgICAgIHRoaXMuX3RvZ2dsZURyb3BEb3duKGVsZW1lbnQsIHRydWUpXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcihlbGVtZW50LCBFVkVOVF9TSE9XTiwge1xuICAgICAgICByZWxhdGVkVGFyZ2V0OiByZWxhdGVkRWxlbVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCBlbGVtZW50LCBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUpKVxuICB9XG5cbiAgX2RlYWN0aXZhdGUoZWxlbWVudCwgcmVsYXRlZEVsZW0pIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSlcbiAgICBlbGVtZW50LmJsdXIoKVxuXG4gICAgdGhpcy5fZGVhY3RpdmF0ZShnZXRFbGVtZW50RnJvbVNlbGVjdG9yKGVsZW1lbnQpKSAvLyBTZWFyY2ggYW5kIGRlYWN0aXZhdGUgdGhlIHNob3duIHNlY3Rpb24gdG9vXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgncm9sZScpICE9PSAndGFiJykge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCBmYWxzZSlcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpXG4gICAgICB0aGlzLl90b2dnbGVEcm9wRG93bihlbGVtZW50LCBmYWxzZSlcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKGVsZW1lbnQsIEVWRU5UX0hJRERFTiwgeyByZWxhdGVkVGFyZ2V0OiByZWxhdGVkRWxlbSB9KVxuICAgIH1cblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIGVsZW1lbnQsIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRkFERSkpXG4gIH1cblxuICBfa2V5ZG93bihldmVudCkge1xuICAgIGlmICghKFtBUlJPV19MRUZUX0tFWSwgQVJST1dfUklHSFRfS0VZLCBBUlJPV19VUF9LRVksIEFSUk9XX0RPV05fS0VZXS5pbmNsdWRlcyhldmVudC5rZXkpKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkvLyBzdG9wUHJvcGFnYXRpb24vcHJldmVudERlZmF1bHQgYm90aCBhZGRlZCB0byBzdXBwb3J0IHVwL2Rvd24ga2V5cyB3aXRob3V0IHNjcm9sbGluZyB0aGUgcGFnZVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBjb25zdCBpc05leHQgPSBbQVJST1dfUklHSFRfS0VZLCBBUlJPV19ET1dOX0tFWV0uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgIGNvbnN0IG5leHRBY3RpdmVFbGVtZW50ID0gZ2V0TmV4dEFjdGl2ZUVsZW1lbnQodGhpcy5fZ2V0Q2hpbGRyZW4oKS5maWx0ZXIoZWxlbWVudCA9PiAhaXNEaXNhYmxlZChlbGVtZW50KSksIGV2ZW50LnRhcmdldCwgaXNOZXh0LCB0cnVlKVxuXG4gICAgaWYgKG5leHRBY3RpdmVFbGVtZW50KSB7XG4gICAgICBuZXh0QWN0aXZlRWxlbWVudC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSlcbiAgICAgIFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKG5leHRBY3RpdmVFbGVtZW50KS5zaG93KClcbiAgICB9XG4gIH1cblxuICBfZ2V0Q2hpbGRyZW4oKSB7IC8vIGNvbGxlY3Rpb24gb2YgaW5uZXIgZWxlbWVudHNcbiAgICByZXR1cm4gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9JTk5FUl9FTEVNLCB0aGlzLl9wYXJlbnQpXG4gIH1cblxuICBfZ2V0QWN0aXZlRWxlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q2hpbGRyZW4oKS5maW5kKGNoaWxkID0+IHRoaXMuX2VsZW1Jc0FjdGl2ZShjaGlsZCkpIHx8IG51bGxcbiAgfVxuXG4gIF9zZXRJbml0aWFsQXR0cmlidXRlcyhwYXJlbnQsIGNoaWxkcmVuKSB7XG4gICAgdGhpcy5fc2V0QXR0cmlidXRlSWZOb3RFeGlzdHMocGFyZW50LCAncm9sZScsICd0YWJsaXN0JylcblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIHRoaXMuX3NldEluaXRpYWxBdHRyaWJ1dGVzT25DaGlsZChjaGlsZClcbiAgICB9XG4gIH1cblxuICBfc2V0SW5pdGlhbEF0dHJpYnV0ZXNPbkNoaWxkKGNoaWxkKSB7XG4gICAgY2hpbGQgPSB0aGlzLl9nZXRJbm5lckVsZW1lbnQoY2hpbGQpXG4gICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLl9lbGVtSXNBY3RpdmUoY2hpbGQpXG4gICAgY29uc3Qgb3V0ZXJFbGVtID0gdGhpcy5fZ2V0T3V0ZXJFbGVtZW50KGNoaWxkKVxuICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIGlzQWN0aXZlKVxuXG4gICAgaWYgKG91dGVyRWxlbSAhPT0gY2hpbGQpIHtcbiAgICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKG91dGVyRWxlbSwgJ3JvbGUnLCAncHJlc2VudGF0aW9uJylcbiAgICB9XG5cbiAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJylcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhjaGlsZCwgJ3JvbGUnLCAndGFiJylcblxuICAgIC8vIHNldCBhdHRyaWJ1dGVzIHRvIHRoZSByZWxhdGVkIHBhbmVsIHRvb1xuICAgIHRoaXMuX3NldEluaXRpYWxBdHRyaWJ1dGVzT25UYXJnZXRQYW5lbChjaGlsZClcbiAgfVxuXG4gIF9zZXRJbml0aWFsQXR0cmlidXRlc09uVGFyZ2V0UGFuZWwoY2hpbGQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBnZXRFbGVtZW50RnJvbVNlbGVjdG9yKGNoaWxkKVxuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHRhcmdldCwgJ3JvbGUnLCAndGFicGFuZWwnKVxuXG4gICAgaWYgKGNoaWxkLmlkKSB7XG4gICAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyh0YXJnZXQsICdhcmlhLWxhYmVsbGVkYnknLCBgIyR7Y2hpbGQuaWR9YClcbiAgICB9XG4gIH1cblxuICBfdG9nZ2xlRHJvcERvd24oZWxlbWVudCwgb3Blbikge1xuICAgIGNvbnN0IG91dGVyRWxlbSA9IHRoaXMuX2dldE91dGVyRWxlbWVudChlbGVtZW50KVxuICAgIGlmICghb3V0ZXJFbGVtLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19EUk9QRE9XTikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHRvZ2dsZSA9IChzZWxlY3RvciwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShzZWxlY3Rvciwgb3V0ZXJFbGVtKVxuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKGNsYXNzTmFtZSwgb3BlbilcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGUoU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFLCBDTEFTU19OQU1FX0FDVElWRSlcbiAgICB0b2dnbGUoU0VMRUNUT1JfRFJPUERPV05fTUVOVSwgQ0xBU1NfTkFNRV9TSE9XKVxuICAgIG91dGVyRWxlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBvcGVuKVxuICB9XG5cbiAgX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKGVsZW1lbnQsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSkpIHtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUpXG4gICAgfVxuICB9XG5cbiAgX2VsZW1Jc0FjdGl2ZShlbGVtKSB7XG4gICAgcmV0dXJuIGVsZW0uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfQUNUSVZFKVxuICB9XG5cbiAgLy8gVHJ5IHRvIGdldCB0aGUgaW5uZXIgZWxlbWVudCAodXN1YWxseSB0aGUgLm5hdi1saW5rKVxuICBfZ2V0SW5uZXJFbGVtZW50KGVsZW0pIHtcbiAgICByZXR1cm4gZWxlbS5tYXRjaGVzKFNFTEVDVE9SX0lOTkVSX0VMRU0pID8gZWxlbSA6IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfSU5ORVJfRUxFTSwgZWxlbSlcbiAgfVxuXG4gIC8vIFRyeSB0byBnZXQgdGhlIG91dGVyIGVsZW1lbnQgKHVzdWFsbHkgdGhlIC5uYXYtaXRlbSlcbiAgX2dldE91dGVyRWxlbWVudChlbGVtKSB7XG4gICAgcmV0dXJuIGVsZW0uY2xvc2VzdChTRUxFQ1RPUl9PVVRFUikgfHwgZWxlbVxuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gVGFiLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcylcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtjb25maWddID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnN0YXJ0c1dpdGgoJ18nKSB8fCBjb25maWcgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKVxuICAgICAgfVxuXG4gICAgICBkYXRhW2NvbmZpZ10oKVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEksIFNFTEVDVE9SX0RBVEFfVE9HR0xFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgaWYgKFsnQScsICdBUkVBJ10uaW5jbHVkZXModGhpcy50YWdOYW1lKSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIGlmIChpc0Rpc2FibGVkKHRoaXMpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBUYWIuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKS5zaG93KClcbn0pXG5cbi8qKlxuICogSW5pdGlhbGl6ZSBvbiBmb2N1c1xuICovXG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJLCAoKSA9PiB7XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFX0FDVElWRSkpIHtcbiAgICBUYWIuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50KVxuICB9XG59KVxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oVGFiKVxuXG5leHBvcnQgZGVmYXVsdCBUYWJcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogdG9hc3QuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgeyBkZWZpbmVKUXVlcnlQbHVnaW4sIHJlZmxvdyB9IGZyb20gJy4vdXRpbC9pbmRleCdcbmltcG9ydCBFdmVudEhhbmRsZXIgZnJvbSAnLi9kb20vZXZlbnQtaGFuZGxlcidcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4vYmFzZS1jb21wb25lbnQnXG5pbXBvcnQgeyBlbmFibGVEaXNtaXNzVHJpZ2dlciB9IGZyb20gJy4vdXRpbC9jb21wb25lbnQtZnVuY3Rpb25zJ1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUgPSAndG9hc3QnXG5jb25zdCBEQVRBX0tFWSA9ICdicy50b2FzdCdcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5cbmNvbnN0IEVWRU5UX01PVVNFT1ZFUiA9IGBtb3VzZW92ZXIke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9NT1VTRU9VVCA9IGBtb3VzZW91dCR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0ZPQ1VTSU4gPSBgZm9jdXNpbiR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0ZPQ1VTT1VUID0gYGZvY3Vzb3V0JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfSElERSA9IGBoaWRlJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfSElEREVOID0gYGhpZGRlbiR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1NIT1cgPSBgc2hvdyR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1NIT1dOID0gYHNob3duJHtFVkVOVF9LRVl9YFxuXG5jb25zdCBDTEFTU19OQU1FX0ZBREUgPSAnZmFkZSdcbmNvbnN0IENMQVNTX05BTUVfSElERSA9ICdoaWRlJyAvLyBAZGVwcmVjYXRlZCAtIGtlcHQgaGVyZSBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuY29uc3QgQ0xBU1NfTkFNRV9TSE9XID0gJ3Nob3cnXG5jb25zdCBDTEFTU19OQU1FX1NIT1dJTkcgPSAnc2hvd2luZydcblxuY29uc3QgRGVmYXVsdFR5cGUgPSB7XG4gIGFuaW1hdGlvbjogJ2Jvb2xlYW4nLFxuICBhdXRvaGlkZTogJ2Jvb2xlYW4nLFxuICBkZWxheTogJ251bWJlcidcbn1cblxuY29uc3QgRGVmYXVsdCA9IHtcbiAgYW5pbWF0aW9uOiB0cnVlLFxuICBhdXRvaGlkZTogdHJ1ZSxcbiAgZGVsYXk6IDUwMDBcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgVG9hc3QgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKVxuXG4gICAgdGhpcy5fdGltZW91dCA9IG51bGxcbiAgICB0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uID0gZmFsc2VcbiAgICB0aGlzLl9oYXNLZXlib2FyZEludGVyYWN0aW9uID0gZmFsc2VcbiAgICB0aGlzLl9zZXRMaXN0ZW5lcnMoKVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBzaG93KCkge1xuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1cpXG5cbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2NsZWFyVGltZW91dCgpXG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmFuaW1hdGlvbikge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfRkFERSlcbiAgICB9XG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1dJTkcpXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTilcblxuICAgICAgdGhpcy5fbWF5YmVTY2hlZHVsZUhpZGUoKVxuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0hJREUpIC8vIEBkZXByZWNhdGVkXG4gICAgcmVmbG93KHRoaXMuX2VsZW1lbnQpXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVywgQ0xBU1NfTkFNRV9TSE9XSU5HKVxuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbilcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLmlzU2hvd24oKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSlcblxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9ISURFKSAvLyBAZGVwcmVjYXRlZFxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPV0lORywgQ0xBU1NfTkFNRV9TSE9XKVxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElEREVOKVxuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1dJTkcpXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbilcbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5fY2xlYXJUaW1lb3V0KClcblxuICAgIGlmICh0aGlzLmlzU2hvd24oKSkge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVylcbiAgICB9XG5cbiAgICBzdXBlci5kaXNwb3NlKClcbiAgfVxuXG4gIGlzU2hvd24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0hPVylcbiAgfVxuXG4gIC8vIFByaXZhdGVcblxuICBfbWF5YmVTY2hlZHVsZUhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuYXV0b2hpZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uIHx8IHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX3RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGlkZSgpXG4gICAgfSwgdGhpcy5fY29uZmlnLmRlbGF5KVxuICB9XG5cbiAgX29uSW50ZXJhY3Rpb24oZXZlbnQsIGlzSW50ZXJhY3RpbmcpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ21vdXNlb3Zlcic6XG4gICAgICBjYXNlICdtb3VzZW91dCc6IHtcbiAgICAgICAgdGhpcy5faGFzTW91c2VJbnRlcmFjdGlvbiA9IGlzSW50ZXJhY3RpbmdcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZm9jdXNpbic6XG4gICAgICBjYXNlICdmb2N1c291dCc6IHtcbiAgICAgICAgdGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IGlzSW50ZXJhY3RpbmdcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc0ludGVyYWN0aW5nKSB7XG4gICAgICB0aGlzLl9jbGVhclRpbWVvdXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgbmV4dEVsZW1lbnQgPSBldmVudC5yZWxhdGVkVGFyZ2V0XG4gICAgaWYgKHRoaXMuX2VsZW1lbnQgPT09IG5leHRFbGVtZW50IHx8IHRoaXMuX2VsZW1lbnQuY29udGFpbnMobmV4dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9tYXliZVNjaGVkdWxlSGlkZSgpXG4gIH1cblxuICBfc2V0TGlzdGVuZXJzKCkge1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9NT1VTRU9WRVIsIGV2ZW50ID0+IHRoaXMuX29uSW50ZXJhY3Rpb24oZXZlbnQsIHRydWUpKVxuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9NT1VTRU9VVCwgZXZlbnQgPT4gdGhpcy5fb25JbnRlcmFjdGlvbihldmVudCwgZmFsc2UpKVxuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9GT0NVU0lOLCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCB0cnVlKSlcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfRk9DVVNPVVQsIGV2ZW50ID0+IHRoaXMuX29uSW50ZXJhY3Rpb24oZXZlbnQsIGZhbHNlKSlcbiAgfVxuXG4gIF9jbGVhclRpbWVvdXQoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpXG4gICAgdGhpcy5fdGltZW91dCA9IG51bGxcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKVxuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVtjb25maWddKHRoaXMpXG4gICAgICB9XG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuZW5hYmxlRGlzbWlzc1RyaWdnZXIoVG9hc3QpXG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFRvYXN0KVxuXG5leHBvcnQgZGVmYXVsdCBUb2FzdFxuIl0sIm5hbWVzIjpbIk1BWF9VSUQiLCJNSUxMSVNFQ09ORFNfTVVMVElQTElFUiIsIlRSQU5TSVRJT05fRU5EIiwidG9UeXBlIiwib2JqZWN0IiwidW5kZWZpbmVkIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwibWF0Y2giLCJ0b0xvd2VyQ2FzZSIsImdldFVJRCIsInByZWZpeCIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRTZWxlY3RvciIsImVsZW1lbnQiLCJzZWxlY3RvciIsImdldEF0dHJpYnV0ZSIsImhyZWZBdHRyaWJ1dGUiLCJpbmNsdWRlcyIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInRyaW0iLCJnZXRTZWxlY3RvckZyb21FbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImdldEVsZW1lbnRGcm9tU2VsZWN0b3IiLCJnZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJ0cmFuc2l0aW9uRGVsYXkiLCJmbG9hdFRyYW5zaXRpb25EdXJhdGlvbiIsIk51bWJlciIsInBhcnNlRmxvYXQiLCJmbG9hdFRyYW5zaXRpb25EZWxheSIsInRyaWdnZXJUcmFuc2l0aW9uRW5kIiwiZGlzcGF0Y2hFdmVudCIsIkV2ZW50IiwiaXNFbGVtZW50IiwianF1ZXJ5Iiwibm9kZVR5cGUiLCJnZXRFbGVtZW50IiwibGVuZ3RoIiwiaXNWaXNpYmxlIiwiZ2V0Q2xpZW50UmVjdHMiLCJlbGVtZW50SXNWaXNpYmxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImNsb3NlZERldGFpbHMiLCJjbG9zZXN0Iiwic3VtbWFyeSIsInBhcmVudE5vZGUiLCJpc0Rpc2FibGVkIiwiTm9kZSIsIkVMRU1FTlRfTk9ERSIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwiZGlzYWJsZWQiLCJoYXNBdHRyaWJ1dGUiLCJmaW5kU2hhZG93Um9vdCIsImRvY3VtZW50RWxlbWVudCIsImF0dGFjaFNoYWRvdyIsImdldFJvb3ROb2RlIiwicm9vdCIsIlNoYWRvd1Jvb3QiLCJub29wIiwicmVmbG93Iiwib2Zmc2V0SGVpZ2h0IiwiZ2V0alF1ZXJ5IiwialF1ZXJ5IiwiYm9keSIsIkRPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MiLCJvbkRPTUNvbnRlbnRMb2FkZWQiLCJjYWxsYmFjayIsInJlYWR5U3RhdGUiLCJhZGRFdmVudExpc3RlbmVyIiwicHVzaCIsImlzUlRMIiwiZGlyIiwiZGVmaW5lSlF1ZXJ5UGx1Z2luIiwicGx1Z2luIiwiJCIsIm5hbWUiLCJOQU1FIiwiSlFVRVJZX05PX0NPTkZMSUNUIiwiZm4iLCJqUXVlcnlJbnRlcmZhY2UiLCJDb25zdHJ1Y3RvciIsIm5vQ29uZmxpY3QiLCJleGVjdXRlIiwiZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbiIsInRyYW5zaXRpb25FbGVtZW50Iiwid2FpdEZvclRyYW5zaXRpb24iLCJkdXJhdGlvblBhZGRpbmciLCJlbXVsYXRlZER1cmF0aW9uIiwiY2FsbGVkIiwiaGFuZGxlciIsInRhcmdldCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZXRUaW1lb3V0IiwiZ2V0TmV4dEFjdGl2ZUVsZW1lbnQiLCJsaXN0IiwiYWN0aXZlRWxlbWVudCIsInNob3VsZEdldE5leHQiLCJpc0N5Y2xlQWxsb3dlZCIsImxpc3RMZW5ndGgiLCJpbmRleCIsImluZGV4T2YiLCJtYXgiLCJtaW4iLCJuYW1lc3BhY2VSZWdleCIsInN0cmlwTmFtZVJlZ2V4Iiwic3RyaXBVaWRSZWdleCIsImV2ZW50UmVnaXN0cnkiLCJ1aWRFdmVudCIsImN1c3RvbUV2ZW50cyIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwibmF0aXZlRXZlbnRzIiwiU2V0IiwibWFrZUV2ZW50VWlkIiwidWlkIiwiZ2V0RWxlbWVudEV2ZW50cyIsImJvb3RzdHJhcEhhbmRsZXIiLCJldmVudCIsImh5ZHJhdGVPYmoiLCJkZWxlZ2F0ZVRhcmdldCIsIm9uZU9mZiIsIkV2ZW50SGFuZGxlciIsIm9mZiIsInR5cGUiLCJhcHBseSIsImJvb3RzdHJhcERlbGVnYXRpb25IYW5kbGVyIiwiZG9tRWxlbWVudHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZG9tRWxlbWVudCIsImZpbmRIYW5kbGVyIiwiZXZlbnRzIiwiY2FsbGFibGUiLCJkZWxlZ2F0aW9uU2VsZWN0b3IiLCJ2YWx1ZXMiLCJmaW5kIiwibm9ybWFsaXplUGFyYW1ldGVycyIsIm9yaWdpbmFsVHlwZUV2ZW50IiwiZGVsZWdhdGlvbkZ1bmN0aW9uIiwiaXNEZWxlZ2F0ZWQiLCJ0eXBlRXZlbnQiLCJnZXRUeXBlRXZlbnQiLCJoYXMiLCJhZGRIYW5kbGVyIiwid3JhcEZ1bmN0aW9uIiwicmVsYXRlZFRhcmdldCIsImhhbmRsZXJzIiwicHJldmlvdXNGdW5jdGlvbiIsInJlcGxhY2UiLCJyZW1vdmVIYW5kbGVyIiwiQm9vbGVhbiIsInJlbW92ZU5hbWVzcGFjZWRIYW5kbGVycyIsIm5hbWVzcGFjZSIsInN0b3JlRWxlbWVudEV2ZW50Iiwia2V5cyIsImhhbmRsZXJLZXkiLCJvbiIsIm9uZSIsImluTmFtZXNwYWNlIiwiaXNOYW1lc3BhY2UiLCJlbGVtZW50RXZlbnQiLCJzbGljZSIsImtleUhhbmRsZXJzIiwidHJpZ2dlciIsImFyZ3MiLCJqUXVlcnlFdmVudCIsImJ1YmJsZXMiLCJuYXRpdmVEaXNwYXRjaCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsImlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkIiwiaXNEZWZhdWx0UHJldmVudGVkIiwiZXZ0IiwiY2FuY2VsYWJsZSIsInByZXZlbnREZWZhdWx0Iiwib2JqIiwibWV0YSIsImtleSIsInZhbHVlIiwiX3VudXNlZCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZ2V0IiwiZW50cmllcyIsImVsZW1lbnRNYXAiLCJNYXAiLCJzZXQiLCJpbnN0YW5jZSIsImluc3RhbmNlTWFwIiwic2l6ZSIsImNvbnNvbGUiLCJlcnJvciIsIkFycmF5IiwiZnJvbSIsInJlbW92ZSIsImRlbGV0ZSIsIm5vcm1hbGl6ZURhdGEiLCJKU09OIiwicGFyc2UiLCJkZWNvZGVVUklDb21wb25lbnQiLCJub3JtYWxpemVEYXRhS2V5IiwiY2hyIiwiTWFuaXB1bGF0b3IiLCJzZXREYXRhQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwicmVtb3ZlRGF0YUF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsImdldERhdGFBdHRyaWJ1dGVzIiwiYXR0cmlidXRlcyIsImJzS2V5cyIsImRhdGFzZXQiLCJmaWx0ZXIiLCJwdXJlS2V5IiwiY2hhckF0IiwiZ2V0RGF0YUF0dHJpYnV0ZSIsIkNvbmZpZyIsIl9nZXRDb25maWciLCJjb25maWciLCJfbWVyZ2VDb25maWdPYmoiLCJfY29uZmlnQWZ0ZXJNZXJnZSIsIl90eXBlQ2hlY2tDb25maWciLCJqc29uQ29uZmlnIiwiY29uc3RydWN0b3IiLCJEZWZhdWx0IiwiY29uZmlnVHlwZXMiLCJEZWZhdWx0VHlwZSIsInByb3BlcnR5IiwiZXhwZWN0ZWRUeXBlcyIsInZhbHVlVHlwZSIsIlJlZ0V4cCIsInRlc3QiLCJUeXBlRXJyb3IiLCJ0b1VwcGVyQ2FzZSIsIkVycm9yIiwiVkVSU0lPTiIsIkJhc2VDb21wb25lbnQiLCJfZWxlbWVudCIsIl9jb25maWciLCJEYXRhIiwiREFUQV9LRVkiLCJkaXNwb3NlIiwiRVZFTlRfS0VZIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInByb3BlcnR5TmFtZSIsIl9xdWV1ZUNhbGxiYWNrIiwiaXNBbmltYXRlZCIsImdldEluc3RhbmNlIiwiZW5hYmxlRGlzbWlzc1RyaWdnZXIiLCJjb21wb25lbnQiLCJtZXRob2QiLCJjbGlja0V2ZW50IiwidGFnTmFtZSIsImdldE9yQ3JlYXRlSW5zdGFuY2UiLCJFVkVOVF9DTE9TRSIsIkVWRU5UX0NMT1NFRCIsIkNMQVNTX05BTUVfRkFERSIsIkNMQVNTX05BTUVfU0hPVyIsIkFsZXJ0IiwiY2xvc2UiLCJjbG9zZUV2ZW50IiwiX2Rlc3Ryb3lFbGVtZW50IiwiZWFjaCIsImRhdGEiLCJEQVRBX0FQSV9LRVkiLCJDTEFTU19OQU1FX0FDVElWRSIsIlNFTEVDVE9SX0RBVEFfVE9HR0xFIiwiRVZFTlRfQ0xJQ0tfREFUQV9BUEkiLCJCdXR0b24iLCJ0b2dnbGUiLCJidXR0b24iLCJTZWxlY3RvckVuZ2luZSIsImNvbmNhdCIsIkVsZW1lbnQiLCJmaW5kT25lIiwiY2hpbGRyZW4iLCJjaGlsZCIsIm1hdGNoZXMiLCJwYXJlbnRzIiwiYW5jZXN0b3IiLCJwcmV2IiwicHJldmlvdXMiLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwibmV4dCIsIm5leHRFbGVtZW50U2libGluZyIsImZvY3VzYWJsZUNoaWxkcmVuIiwiZm9jdXNhYmxlcyIsIm1hcCIsImpvaW4iLCJlbCIsIkVWRU5UX1RPVUNIU1RBUlQiLCJFVkVOVF9UT1VDSE1PVkUiLCJFVkVOVF9UT1VDSEVORCIsIkVWRU5UX1BPSU5URVJET1dOIiwiRVZFTlRfUE9JTlRFUlVQIiwiUE9JTlRFUl9UWVBFX1RPVUNIIiwiUE9JTlRFUl9UWVBFX1BFTiIsIkNMQVNTX05BTUVfUE9JTlRFUl9FVkVOVCIsIlNXSVBFX1RIUkVTSE9MRCIsImVuZENhbGxiYWNrIiwibGVmdENhbGxiYWNrIiwicmlnaHRDYWxsYmFjayIsIlN3aXBlIiwiaXNTdXBwb3J0ZWQiLCJfZGVsdGFYIiwiX3N1cHBvcnRQb2ludGVyRXZlbnRzIiwiUG9pbnRlckV2ZW50IiwiX2luaXRFdmVudHMiLCJfc3RhcnQiLCJ0b3VjaGVzIiwiY2xpZW50WCIsIl9ldmVudElzUG9pbnRlclBlblRvdWNoIiwiX2VuZCIsIl9oYW5kbGVTd2lwZSIsIl9tb3ZlIiwiYWJzRGVsdGFYIiwiYWJzIiwiZGlyZWN0aW9uIiwiYWRkIiwicG9pbnRlclR5cGUiLCJuYXZpZ2F0b3IiLCJtYXhUb3VjaFBvaW50cyIsIkFSUk9XX0xFRlRfS0VZIiwiQVJST1dfUklHSFRfS0VZIiwiVE9VQ0hFVkVOVF9DT01QQVRfV0FJVCIsIk9SREVSX05FWFQiLCJPUkRFUl9QUkVWIiwiRElSRUNUSU9OX0xFRlQiLCJESVJFQ1RJT05fUklHSFQiLCJFVkVOVF9TTElERSIsIkVWRU5UX1NMSUQiLCJFVkVOVF9LRVlET1dOIiwiRVZFTlRfTU9VU0VFTlRFUiIsIkVWRU5UX01PVVNFTEVBVkUiLCJFVkVOVF9EUkFHX1NUQVJUIiwiRVZFTlRfTE9BRF9EQVRBX0FQSSIsIkNMQVNTX05BTUVfQ0FST1VTRUwiLCJDTEFTU19OQU1FX1NMSURFIiwiQ0xBU1NfTkFNRV9FTkQiLCJDTEFTU19OQU1FX1NUQVJUIiwiQ0xBU1NfTkFNRV9ORVhUIiwiQ0xBU1NfTkFNRV9QUkVWIiwiU0VMRUNUT1JfQUNUSVZFIiwiU0VMRUNUT1JfSVRFTSIsIlNFTEVDVE9SX0FDVElWRV9JVEVNIiwiU0VMRUNUT1JfSVRFTV9JTUciLCJTRUxFQ1RPUl9JTkRJQ0FUT1JTIiwiU0VMRUNUT1JfREFUQV9TTElERSIsIlNFTEVDVE9SX0RBVEFfUklERSIsIktFWV9UT19ESVJFQ1RJT04iLCJpbnRlcnZhbCIsImtleWJvYXJkIiwicGF1c2UiLCJyaWRlIiwidG91Y2giLCJ3cmFwIiwiQ2Fyb3VzZWwiLCJfaW50ZXJ2YWwiLCJfYWN0aXZlRWxlbWVudCIsIl9pc1NsaWRpbmciLCJ0b3VjaFRpbWVvdXQiLCJfc3dpcGVIZWxwZXIiLCJfaW5kaWNhdG9yc0VsZW1lbnQiLCJfYWRkRXZlbnRMaXN0ZW5lcnMiLCJjeWNsZSIsIl9zbGlkZSIsIm5leHRXaGVuVmlzaWJsZSIsImhpZGRlbiIsIl9jbGVhckludGVydmFsIiwiX3VwZGF0ZUludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJfbWF5YmVFbmFibGVDeWNsZSIsInRvIiwiaXRlbXMiLCJfZ2V0SXRlbXMiLCJhY3RpdmVJbmRleCIsIl9nZXRJdGVtSW5kZXgiLCJfZ2V0QWN0aXZlIiwib3JkZXIiLCJkZWZhdWx0SW50ZXJ2YWwiLCJfa2V5ZG93biIsIl9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzIiwiaW1nIiwiZW5kQ2FsbEJhY2siLCJjbGVhclRpbWVvdXQiLCJzd2lwZUNvbmZpZyIsIl9kaXJlY3Rpb25Ub09yZGVyIiwiX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQiLCJhY3RpdmVJbmRpY2F0b3IiLCJuZXdBY3RpdmVJbmRpY2F0b3IiLCJlbGVtZW50SW50ZXJ2YWwiLCJwYXJzZUludCIsImlzTmV4dCIsIm5leHRFbGVtZW50IiwibmV4dEVsZW1lbnRJbmRleCIsInRyaWdnZXJFdmVudCIsImV2ZW50TmFtZSIsIl9vcmRlclRvRGlyZWN0aW9uIiwic2xpZGVFdmVudCIsImlzQ3ljbGluZyIsImRpcmVjdGlvbmFsQ2xhc3NOYW1lIiwib3JkZXJDbGFzc05hbWUiLCJjb21wbGV0ZUNhbGxCYWNrIiwiX2lzQW5pbWF0ZWQiLCJjbGVhckludGVydmFsIiwiY2Fyb3VzZWwiLCJzbGlkZUluZGV4IiwiY2Fyb3VzZWxzIiwiRVZFTlRfU0hPVyIsIkVWRU5UX1NIT1dOIiwiRVZFTlRfSElERSIsIkVWRU5UX0hJRERFTiIsIkNMQVNTX05BTUVfQ09MTEFQU0UiLCJDTEFTU19OQU1FX0NPTExBUFNJTkciLCJDTEFTU19OQU1FX0NPTExBUFNFRCIsIkNMQVNTX05BTUVfREVFUEVSX0NISUxEUkVOIiwiQ0xBU1NfTkFNRV9IT1JJWk9OVEFMIiwiV0lEVEgiLCJIRUlHSFQiLCJTRUxFQ1RPUl9BQ1RJVkVTIiwicGFyZW50IiwiQ29sbGFwc2UiLCJfaXNUcmFuc2l0aW9uaW5nIiwiX3RyaWdnZXJBcnJheSIsInRvZ2dsZUxpc3QiLCJlbGVtIiwiZmlsdGVyRWxlbWVudCIsImZvdW5kRWxlbWVudCIsIl9pbml0aWFsaXplQ2hpbGRyZW4iLCJfYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzIiwiX2lzU2hvd24iLCJoaWRlIiwic2hvdyIsImFjdGl2ZUNoaWxkcmVuIiwiX2dldEZpcnN0TGV2ZWxDaGlsZHJlbiIsInN0YXJ0RXZlbnQiLCJhY3RpdmVJbnN0YW5jZSIsImRpbWVuc2lvbiIsIl9nZXREaW1lbnNpb24iLCJzdHlsZSIsImNvbXBsZXRlIiwiY2FwaXRhbGl6ZWREaW1lbnNpb24iLCJzY3JvbGxTaXplIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwic2VsZWN0ZWQiLCJ0cmlnZ2VyQXJyYXkiLCJpc09wZW4iLCJzZWxlY3RvckVsZW1lbnRzIiwiRVNDQVBFX0tFWSIsIlRBQl9LRVkiLCJBUlJPV19VUF9LRVkiLCJBUlJPV19ET1dOX0tFWSIsIlJJR0hUX01PVVNFX0JVVFRPTiIsIkVWRU5UX0tFWURPV05fREFUQV9BUEkiLCJFVkVOVF9LRVlVUF9EQVRBX0FQSSIsIkNMQVNTX05BTUVfRFJPUFVQIiwiQ0xBU1NfTkFNRV9EUk9QRU5EIiwiQ0xBU1NfTkFNRV9EUk9QU1RBUlQiLCJDTEFTU19OQU1FX0RST1BVUF9DRU5URVIiLCJDTEFTU19OQU1FX0RST1BET1dOX0NFTlRFUiIsIlNFTEVDVE9SX0RBVEFfVE9HR0xFX1NIT1dOIiwiU0VMRUNUT1JfTUVOVSIsIlNFTEVDVE9SX05BVkJBUiIsIlNFTEVDVE9SX05BVkJBUl9OQVYiLCJTRUxFQ1RPUl9WSVNJQkxFX0lURU1TIiwiUExBQ0VNRU5UX1RPUCIsIlBMQUNFTUVOVF9UT1BFTkQiLCJQTEFDRU1FTlRfQk9UVE9NIiwiUExBQ0VNRU5UX0JPVFRPTUVORCIsIlBMQUNFTUVOVF9SSUdIVCIsIlBMQUNFTUVOVF9MRUZUIiwiUExBQ0VNRU5UX1RPUENFTlRFUiIsIlBMQUNFTUVOVF9CT1RUT01DRU5URVIiLCJhdXRvQ2xvc2UiLCJib3VuZGFyeSIsImRpc3BsYXkiLCJvZmZzZXQiLCJwb3BwZXJDb25maWciLCJyZWZlcmVuY2UiLCJEcm9wZG93biIsIl9wb3BwZXIiLCJfcGFyZW50IiwiX21lbnUiLCJfaW5OYXZiYXIiLCJfZGV0ZWN0TmF2YmFyIiwic2hvd0V2ZW50IiwiX2NyZWF0ZVBvcHBlciIsImZvY3VzIiwiX2NvbXBsZXRlSGlkZSIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJoaWRlRXZlbnQiLCJQb3BwZXIiLCJyZWZlcmVuY2VFbGVtZW50IiwiX2dldFBvcHBlckNvbmZpZyIsImNyZWF0ZVBvcHBlciIsIl9nZXRQbGFjZW1lbnQiLCJwYXJlbnREcm9wZG93biIsImlzRW5kIiwiX2dldE9mZnNldCIsInBvcHBlckRhdGEiLCJkZWZhdWx0QnNQb3BwZXJDb25maWciLCJwbGFjZW1lbnQiLCJtb2RpZmllcnMiLCJvcHRpb25zIiwiZW5hYmxlZCIsIl9zZWxlY3RNZW51SXRlbSIsIm9wZW5Ub2dnbGVzIiwiY29udGV4dCIsImNvbXBvc2VkUGF0aCIsImlzTWVudVRhcmdldCIsImlzSW5wdXQiLCJpc0VzY2FwZUV2ZW50IiwiaXNVcE9yRG93bkV2ZW50IiwiZ2V0VG9nZ2xlQnV0dG9uIiwic3RvcFByb3BhZ2F0aW9uIiwiZGF0YUFwaUtleWRvd25IYW5kbGVyIiwiY2xlYXJNZW51cyIsIlNFTEVDVE9SX0ZJWEVEX0NPTlRFTlQiLCJTRUxFQ1RPUl9TVElDS1lfQ09OVEVOVCIsIlBST1BFUlRZX1BBRERJTkciLCJQUk9QRVJUWV9NQVJHSU4iLCJTY3JvbGxCYXJIZWxwZXIiLCJnZXRXaWR0aCIsImRvY3VtZW50V2lkdGgiLCJjbGllbnRXaWR0aCIsImlubmVyV2lkdGgiLCJ3aWR0aCIsIl9kaXNhYmxlT3ZlckZsb3ciLCJfc2V0RWxlbWVudEF0dHJpYnV0ZXMiLCJjYWxjdWxhdGVkVmFsdWUiLCJyZXNldCIsIl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzIiwiaXNPdmVyZmxvd2luZyIsIl9zYXZlSW5pdGlhbEF0dHJpYnV0ZSIsIm92ZXJmbG93Iiwic3R5bGVQcm9wZXJ0eSIsInNjcm9sbGJhcldpZHRoIiwibWFuaXB1bGF0aW9uQ2FsbEJhY2siLCJzZXRQcm9wZXJ0eSIsIl9hcHBseU1hbmlwdWxhdGlvbkNhbGxiYWNrIiwiYWN0dWFsVmFsdWUiLCJyZW1vdmVQcm9wZXJ0eSIsImNhbGxCYWNrIiwic2VsIiwiRVZFTlRfTU9VU0VET1dOIiwiY2xhc3NOYW1lIiwiY2xpY2tDYWxsYmFjayIsInJvb3RFbGVtZW50IiwiQmFja2Ryb3AiLCJfaXNBcHBlbmRlZCIsIl9hcHBlbmQiLCJfZ2V0RWxlbWVudCIsIl9lbXVsYXRlQW5pbWF0aW9uIiwiYmFja2Ryb3AiLCJjcmVhdGVFbGVtZW50IiwiYXBwZW5kIiwiRVZFTlRfRk9DVVNJTiIsIkVWRU5UX0tFWURPV05fVEFCIiwiVEFCX05BVl9GT1JXQVJEIiwiVEFCX05BVl9CQUNLV0FSRCIsImF1dG9mb2N1cyIsInRyYXBFbGVtZW50IiwiRm9jdXNUcmFwIiwiX2lzQWN0aXZlIiwiX2xhc3RUYWJOYXZEaXJlY3Rpb24iLCJhY3RpdmF0ZSIsIl9oYW5kbGVGb2N1c2luIiwiX2hhbmRsZUtleWRvd24iLCJkZWFjdGl2YXRlIiwiZWxlbWVudHMiLCJzaGlmdEtleSIsIkVWRU5UX0hJREVfUFJFVkVOVEVEIiwiRVZFTlRfUkVTSVpFIiwiRVZFTlRfQ0xJQ0tfRElTTUlTUyIsIkVWRU5UX01PVVNFRE9XTl9ESVNNSVNTIiwiRVZFTlRfS0VZRE9XTl9ESVNNSVNTIiwiQ0xBU1NfTkFNRV9PUEVOIiwiQ0xBU1NfTkFNRV9TVEFUSUMiLCJPUEVOX1NFTEVDVE9SIiwiU0VMRUNUT1JfRElBTE9HIiwiU0VMRUNUT1JfTU9EQUxfQk9EWSIsIk1vZGFsIiwiX2RpYWxvZyIsIl9iYWNrZHJvcCIsIl9pbml0aWFsaXplQmFja0Ryb3AiLCJfZm9jdXN0cmFwIiwiX2luaXRpYWxpemVGb2N1c1RyYXAiLCJfc2Nyb2xsQmFyIiwiX2FkanVzdERpYWxvZyIsIl9zaG93RWxlbWVudCIsIl9oaWRlTW9kYWwiLCJodG1sRWxlbWVudCIsImhhbmRsZVVwZGF0ZSIsInNjcm9sbFRvcCIsIm1vZGFsQm9keSIsInRyYW5zaXRpb25Db21wbGV0ZSIsIl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uIiwiZXZlbnQyIiwiX3Jlc2V0QWRqdXN0bWVudHMiLCJpc01vZGFsT3ZlcmZsb3dpbmciLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJpbml0aWFsT3ZlcmZsb3dZIiwib3ZlcmZsb3dZIiwiaXNCb2R5T3ZlcmZsb3dpbmciLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsImFscmVhZHlPcGVuIiwiQ0xBU1NfTkFNRV9TSE9XSU5HIiwiQ0xBU1NfTkFNRV9ISURJTkciLCJDTEFTU19OQU1FX0JBQ0tEUk9QIiwic2Nyb2xsIiwiT2ZmY2FudmFzIiwiYmx1ciIsImNvbXBsZXRlQ2FsbGJhY2siLCJwb3NpdGlvbiIsInVyaUF0dHJpYnV0ZXMiLCJBUklBX0FUVFJJQlVURV9QQVRURVJOIiwiU0FGRV9VUkxfUEFUVEVSTiIsIkRBVEFfVVJMX1BBVFRFUk4iLCJhbGxvd2VkQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiYWxsb3dlZEF0dHJpYnV0ZUxpc3QiLCJhdHRyaWJ1dGVOYW1lIiwibm9kZU5hbWUiLCJub2RlVmFsdWUiLCJhdHRyaWJ1dGVSZWdleCIsInNvbWUiLCJyZWdleCIsIkRlZmF1bHRBbGxvd2xpc3QiLCJhIiwiYXJlYSIsImIiLCJiciIsImNvbCIsImNvZGUiLCJkaXYiLCJlbSIsImhyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaSIsImxpIiwib2wiLCJwIiwicHJlIiwicyIsInNtYWxsIiwic3BhbiIsInN1YiIsInN1cCIsInN0cm9uZyIsInUiLCJ1bCIsInNhbml0aXplSHRtbCIsInVuc2FmZUh0bWwiLCJhbGxvd0xpc3QiLCJzYW5pdGl6ZUZ1bmN0aW9uIiwiZG9tUGFyc2VyIiwiRE9NUGFyc2VyIiwiY3JlYXRlZERvY3VtZW50IiwicGFyc2VGcm9tU3RyaW5nIiwiZWxlbWVudE5hbWUiLCJhdHRyaWJ1dGVMaXN0IiwiYWxsb3dlZEF0dHJpYnV0ZXMiLCJpbm5lckhUTUwiLCJjb250ZW50IiwiZXh0cmFDbGFzcyIsImh0bWwiLCJzYW5pdGl6ZSIsInNhbml0aXplRm4iLCJ0ZW1wbGF0ZSIsIkRlZmF1bHRDb250ZW50VHlwZSIsImVudHJ5IiwiVGVtcGxhdGVGYWN0b3J5IiwiZ2V0Q29udGVudCIsIl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbiIsImhhc0NvbnRlbnQiLCJjaGFuZ2VDb250ZW50IiwiX2NoZWNrQ29udGVudCIsInRvSHRtbCIsInRlbXBsYXRlV3JhcHBlciIsIl9tYXliZVNhbml0aXplIiwidGV4dCIsIl9zZXRDb250ZW50IiwiYXJnIiwidGVtcGxhdGVFbGVtZW50IiwiX3B1dEVsZW1lbnRJblRlbXBsYXRlIiwidGV4dENvbnRlbnQiLCJESVNBTExPV0VEX0FUVFJJQlVURVMiLCJDTEFTU19OQU1FX01PREFMIiwiU0VMRUNUT1JfVE9PTFRJUF9JTk5FUiIsIlNFTEVDVE9SX01PREFMIiwiRVZFTlRfTU9EQUxfSElERSIsIlRSSUdHRVJfSE9WRVIiLCJUUklHR0VSX0ZPQ1VTIiwiVFJJR0dFUl9DTElDSyIsIlRSSUdHRVJfTUFOVUFMIiwiRVZFTlRfSU5TRVJURUQiLCJFVkVOVF9DTElDSyIsIkVWRU5UX0ZPQ1VTT1VUIiwiQXR0YWNobWVudE1hcCIsIkFVVE8iLCJUT1AiLCJSSUdIVCIsIkJPVFRPTSIsIkxFRlQiLCJhbmltYXRpb24iLCJjb250YWluZXIiLCJjdXN0b21DbGFzcyIsImRlbGF5IiwiZmFsbGJhY2tQbGFjZW1lbnRzIiwidGl0bGUiLCJUb29sdGlwIiwiX2lzRW5hYmxlZCIsIl90aW1lb3V0IiwiX2lzSG92ZXJlZCIsIl9hY3RpdmVUcmlnZ2VyIiwiX3RlbXBsYXRlRmFjdG9yeSIsIl9uZXdDb250ZW50IiwidGlwIiwiX3NldExpc3RlbmVycyIsIl9maXhUaXRsZSIsImVuYWJsZSIsImRpc2FibGUiLCJ0b2dnbGVFbmFibGVkIiwiY2xpY2siLCJfbGVhdmUiLCJfZW50ZXIiLCJfaGlkZU1vZGFsSGFuZGxlciIsIl9kaXNwb3NlUG9wcGVyIiwiX2lzV2l0aENvbnRlbnQiLCJzaGFkb3dSb290IiwiaXNJblRoZURvbSIsIm93bmVyRG9jdW1lbnQiLCJfZ2V0VGlwRWxlbWVudCIsIl9pc1dpdGhBY3RpdmVUcmlnZ2VyIiwiX2dldFRpdGxlIiwiX2NyZWF0ZVRpcEVsZW1lbnQiLCJfZ2V0Q29udGVudEZvclRlbXBsYXRlIiwiX2dldFRlbXBsYXRlRmFjdG9yeSIsInRpcElkIiwic2V0Q29udGVudCIsIl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQiLCJfZ2V0RGVsZWdhdGVDb25maWciLCJhdHRhY2htZW50IiwicGhhc2UiLCJzdGF0ZSIsInRyaWdnZXJzIiwiZXZlbnRJbiIsImV2ZW50T3V0IiwiX3NldFRpbWVvdXQiLCJ0aW1lb3V0IiwiZGF0YUF0dHJpYnV0ZXMiLCJkYXRhQXR0cmlidXRlIiwiU0VMRUNUT1JfVElUTEUiLCJTRUxFQ1RPUl9DT05URU5UIiwiUG9wb3ZlciIsIl9nZXRDb250ZW50IiwiRVZFTlRfQUNUSVZBVEUiLCJDTEFTU19OQU1FX0RST1BET1dOX0lURU0iLCJTRUxFQ1RPUl9EQVRBX1NQWSIsIlNFTEVDVE9SX1RBUkdFVF9MSU5LUyIsIlNFTEVDVE9SX05BVl9MSVNUX0dST1VQIiwiU0VMRUNUT1JfTkFWX0xJTktTIiwiU0VMRUNUT1JfTkFWX0lURU1TIiwiU0VMRUNUT1JfTElTVF9JVEVNUyIsIlNFTEVDVE9SX0xJTktfSVRFTVMiLCJTRUxFQ1RPUl9EUk9QRE9XTiIsIlNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSIsInJvb3RNYXJnaW4iLCJzbW9vdGhTY3JvbGwiLCJ0aHJlc2hvbGQiLCJTY3JvbGxTcHkiLCJfdGFyZ2V0TGlua3MiLCJfb2JzZXJ2YWJsZVNlY3Rpb25zIiwiX3Jvb3RFbGVtZW50IiwiX2FjdGl2ZVRhcmdldCIsIl9vYnNlcnZlciIsIl9wcmV2aW91c1Njcm9sbERhdGEiLCJ2aXNpYmxlRW50cnlUb3AiLCJwYXJlbnRTY3JvbGxUb3AiLCJyZWZyZXNoIiwiX2luaXRpYWxpemVUYXJnZXRzQW5kT2JzZXJ2YWJsZXMiLCJfbWF5YmVFbmFibGVTbW9vdGhTY3JvbGwiLCJkaXNjb25uZWN0IiwiX2dldE5ld09ic2VydmVyIiwic2VjdGlvbiIsIm9ic2VydmUiLCJvYnNlcnZhYmxlU2VjdGlvbiIsImhhc2giLCJoZWlnaHQiLCJvZmZzZXRUb3AiLCJzY3JvbGxUbyIsInRvcCIsImJlaGF2aW9yIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJfb2JzZXJ2ZXJDYWxsYmFjayIsInRhcmdldEVsZW1lbnQiLCJpZCIsIl9wcm9jZXNzIiwidXNlclNjcm9sbHNEb3duIiwiaXNJbnRlcnNlY3RpbmciLCJfY2xlYXJBY3RpdmVDbGFzcyIsImVudHJ5SXNMb3dlclRoYW5QcmV2aW91cyIsInRhcmdldExpbmtzIiwiYW5jaG9yIiwiX2FjdGl2YXRlUGFyZW50cyIsImxpc3RHcm91cCIsIml0ZW0iLCJhY3RpdmVOb2RlcyIsIm5vZGUiLCJzcHkiLCJDTEFTU19EUk9QRE9XTiIsIlNFTEVDVE9SX0RST1BET1dOX01FTlUiLCJOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFIiwiU0VMRUNUT1JfVEFCX1BBTkVMIiwiU0VMRUNUT1JfT1VURVIiLCJTRUxFQ1RPUl9JTk5FUiIsIlNFTEVDVE9SX0lOTkVSX0VMRU0iLCJTRUxFQ1RPUl9EQVRBX1RPR0dMRV9BQ1RJVkUiLCJUYWIiLCJfc2V0SW5pdGlhbEF0dHJpYnV0ZXMiLCJfZ2V0Q2hpbGRyZW4iLCJpbm5lckVsZW0iLCJfZWxlbUlzQWN0aXZlIiwiYWN0aXZlIiwiX2dldEFjdGl2ZUVsZW0iLCJfZGVhY3RpdmF0ZSIsIl9hY3RpdmF0ZSIsInJlbGF0ZWRFbGVtIiwiX3RvZ2dsZURyb3BEb3duIiwibmV4dEFjdGl2ZUVsZW1lbnQiLCJwcmV2ZW50U2Nyb2xsIiwiX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzIiwiX3NldEluaXRpYWxBdHRyaWJ1dGVzT25DaGlsZCIsIl9nZXRJbm5lckVsZW1lbnQiLCJpc0FjdGl2ZSIsIm91dGVyRWxlbSIsIl9nZXRPdXRlckVsZW1lbnQiLCJfc2V0SW5pdGlhbEF0dHJpYnV0ZXNPblRhcmdldFBhbmVsIiwib3BlbiIsIkVWRU5UX01PVVNFT1ZFUiIsIkVWRU5UX01PVVNFT1VUIiwiQ0xBU1NfTkFNRV9ISURFIiwiYXV0b2hpZGUiLCJUb2FzdCIsIl9oYXNNb3VzZUludGVyYWN0aW9uIiwiX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24iLCJfY2xlYXJUaW1lb3V0IiwiX21heWJlU2NoZWR1bGVIaWRlIiwiaXNTaG93biIsIl9vbkludGVyYWN0aW9uIiwiaXNJbnRlcmFjdGluZyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/bootstrap/dist/js/bootstrap.esm.js\n"); /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ !function() { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = function(exports, definition) { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ !function() { /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } /******/ }(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ !function() { /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ }(); /******/ /************************************************************************/ /******/ /******/ // startup /******/ // Load entry module and return exports /******/ // This entry module can't be inlined because the eval-source-map devtool is used. /******/ var __webpack_exports__ = __webpack_require__("./js/bootstrap.js"); /******/ var __webpack_export_target__ = window; /******/ for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i]; /******/ if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true }); /******/ /******/ })() ;
SIMPAN PERUBAHAN