mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
708 lines
907 KiB
JavaScript
708 lines
907 KiB
JavaScript
/*
|
||
* 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 webpackUniversalModuleDefinition(root, factory) {
|
||
if(typeof exports === 'object' && typeof module === 'object')
|
||
module.exports = factory();
|
||
else if(typeof define === 'function' && define.amd)
|
||
define([], factory);
|
||
else {
|
||
var a = factory();
|
||
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
|
||
}
|
||
})(self, function() {
|
||
return /******/ (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, win) {\n var x = _ref.x,\n y = _ref.y;\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 }, (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(popper)) : {\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUE0RDtBQUNFO0FBQ1o7QUFDa0I7QUFDSjtBQUNKO0FBQ1I7QUFDWCxDQUFDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8scURBQUs7QUFDWixPQUFPLHFEQUFLO0FBQ1o7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsMkNBQUk7QUFDbEIsY0FBYywwQ0FBRztBQUNqQjs7QUFFQTtBQUNBLHVCQUF1Qix5RUFBZTtBQUN0QztBQUNBOztBQUVBLHlCQUF5QixtRUFBUztBQUNsQyxxQkFBcUIsNEVBQWtCOztBQUV2QyxVQUFVLDBFQUFnQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjs7QUFFQSxzQkFBc0IsMENBQUcsbUJBQW1CLDJDQUFJLGtCQUFrQiw0Q0FBSyxtQkFBbUIsMENBQUc7QUFDN0YsY0FBYyw2Q0FBTTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQiwyQ0FBSSxtQkFBbUIsMENBQUcsa0JBQWtCLDZDQUFNLG1CQUFtQiwwQ0FBRztBQUM5RixjQUFjLDRDQUFLO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUUsbUVBQVM7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDJCQUEyQixvQ0FBb0M7QUFDL0Q7O0FBRUEseUJBQXlCLHFDQUFxQztBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxJQUFxQztBQUMzQyw2QkFBNkIsMEVBQWdCOztBQUU3QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsc0VBQWdCO0FBQy9CLGVBQWUsa0VBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQyxtREFBbUQ7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSx5Q0FBeUMsa0RBQWtEO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLDRDQUE0QztBQUM1QztBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRiwrREFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzPzdjZGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZiwgd2luKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0sIGdldFdpbmRvdyhwb3BwZXIpKSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjQueDtcbiAgeSA9IF9yZWY0Lnk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDw9IDEgPyBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiIDogXCJ0cmFuc2xhdGUzZChcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4LCAwKVwiLCBfT2JqZWN0JGFzc2lnbikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduMiA9IHt9LCBfT2JqZWN0JGFzc2lnbjJbc2lkZVldID0gaGFzWSA/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 && Array.isArray(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/MTJkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVQVN0cmluZygpIHtcbiAgdmFyIHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuXG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEuYnJhbmRzICYmIEFycmF5LmlzQXJyYXkodWFEYXRhLmJyYW5kcykpIHtcbiAgICByZXR1cm4gdWFEYXRhLmJyYW5kcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtLmJyYW5kICsgXCIvXCIgKyBpdGVtLnZlcnNpb247XG4gICAgfSkuam9pbignICcpO1xuICB9XG5cbiAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQ7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\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\ntry {\n window.bootstrap = bootstrap__WEBPACK_IMPORTED_MODULE_0__;\n} catch (e) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9qcy9ib290c3RyYXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBc0M7QUFFdEMsSUFBSTtFQUNGQyxNQUFNLENBQUNELFNBQVMsR0FBR0Esc0NBQVM7QUFDOUIsQ0FBQyxDQUFDLE9BQU9FLENBQUMsRUFBRSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vVnVleHkvLi9qcy9ib290c3RyYXAuanM/OTQ1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBib290c3RyYXAgZnJvbSAnYm9vdHN0cmFwJ1xuXG50cnkge1xuICB3aW5kb3cuYm9vdHN0cmFwID0gYm9vdHN0cmFwXG59IGNhdGNoIChlKSB7fVxuXG5leHBvcnQgeyBib290c3RyYXAgfVxuIl0sIm5hbWVzIjpbImJvb3RzdHJhcCIsIndpbmRvdyIsImUiXSwic291cmNlUm9vdCI6IiJ9\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) { key = _toPropertyKey(key); 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, _toPropertyKey(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 _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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 = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\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 for (var _i = 0, _DOMContentLoadedCall = DOMContentLoadedCallbacks; _i < _DOMContentLoadedCall.length; _i++) {\n var _callback = _DOMContentLoadedCall[_i];\n _callback();\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 _iterator = _createForOfIteratorHelper(domElements),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var domElement = _step.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 _iterator.e(err);\n } finally {\n _iterator.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 _iterator2 = _createForOfIteratorHelper(bsKeys),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var key = _step2.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 _iterator2.e(err);\n } finally {\n _iterator2.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 _iterator3 = _createForOfIteratorHelper(Object.getOwnPropertyNames(this)),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var propertyName = _step3.value;\n this[propertyName] = null;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.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 _iterator4 = _createForOfIteratorHelper(SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var img = _step4.value;\n EventHandler.on(img, EVENT_DRAG_START, function (event) {\n return event.preventDefault();\n });\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.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 _iterator5 = _createForOfIteratorHelper(carousels),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var carousel = _step5.value;\n Carousel.getOrCreateInstance(carousel);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.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 _iterator6 = _createForOfIteratorHelper(toggleList),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var elem = _step6.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 _iterator6.e(err);\n } finally {\n _iterator6.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 _iterator7 = _createForOfIteratorHelper(activeChildren),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var activeInstance = _step7.value;\n activeInstance.hide();\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.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 _iterator8 = _createForOfIteratorHelper(this._triggerArray),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var trigger = _step8.value;\n var element = getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.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 _iterator9 = _createForOfIteratorHelper(children),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var element = _step9.value;\n var selected = getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.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 _iterator10 = _createForOfIteratorHelper(triggerArray),\n _step10;\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var element = _step10.value;\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.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 _iterator11 = _createForOfIteratorHelper(selectorElements),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var element = _step11.value;\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.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 _iterator12 = _createForOfIteratorHelper((_ref6 = []).concat.apply(_ref6, _toConsumableArray(document.body.children))),\n _step12;\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var element = _step12.value;\n EventHandler.on(element, 'mouseover', noop);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.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 _iterator13 = _createForOfIteratorHelper((_ref7 = []).concat.apply(_ref7, _toConsumableArray(document.body.children))),\n _step13;\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var element = _step13.value;\n EventHandler.off(element, 'mouseover', noop);\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.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 _iterator14 = _createForOfIteratorHelper(openToggles),\n _step14;\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var toggle = _step14.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 _iterator14.e(err);\n } finally {\n _iterator14.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 _iterator15 = _createForOfIteratorHelper(SelectorEngine.find(selector, this._element)),\n _step15;\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var sel = _step15.value;\n callBack(sel);\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.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 _iterator16 = _createForOfIteratorHelper(SelectorEngine.find(OPEN_SELECTOR)),\n _step16;\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var selector = _step16.value;\n Offcanvas.getOrCreateInstance(selector).show();\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, function () {\n var _iterator17 = _createForOfIteratorHelper(SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')),\n _step17;\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var element = _step17.value;\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.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 _iterator18 = _createForOfIteratorHelper(elements),\n _step18;\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var _ref10;\n var element = _step18.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 _iterator19 = _createForOfIteratorHelper(attributeList),\n _step19;\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var attribute = _step19.value;\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n } catch (err) {\n _iterator19.e(err);\n } finally {\n _iterator19.f();\n }\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.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 _ref11 = _Object$entries2[_i8];\n var _ref12 = _slicedToArray(_ref11, 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 _ref13 = _Object$entries3[_i9];\n var _ref14 = _slicedToArray(_ref13, 2);\n var selector = _ref14[0];\n var content = _ref14[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 _ref15;\n var _iterator20 = _createForOfIteratorHelper((_ref15 = []).concat.apply(_ref15, _toConsumableArray(document.body.children))),\n _step20;\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var element = _step20.value;\n EventHandler.on(element, 'mouseover', noop);\n }\n } catch (err) {\n _iterator20.e(err);\n } finally {\n _iterator20.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 _ref16;\n var _iterator21 = _createForOfIteratorHelper((_ref16 = []).concat.apply(_ref16, _toConsumableArray(document.body.children))),\n _step21;\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var element = _step21.value;\n EventHandler.off(element, 'mouseover', noop);\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.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 _iterator22 = _createForOfIteratorHelper(triggers),\n _step22;\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var trigger = _step22.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 _iterator22.e(err);\n } finally {\n _iterator22.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 _ref18;\n return _ref18 = {}, _defineProperty(_ref18, SELECTOR_TITLE, this._getTitle()), _defineProperty(_ref18, SELECTOR_CONTENT, this._getContent()), _ref18;\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 _iterator23 = _createForOfIteratorHelper(this._observableSections.values()),\n _step23;\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n var section = _step23.value;\n this._observer.observe(section);\n }\n } catch (err) {\n _iterator23.e(err);\n } finally {\n _iterator23.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 _iterator24 = _createForOfIteratorHelper(entries),\n _step24;\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n var entry = _step24.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 _iterator24.e(err);\n } finally {\n _iterator24.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 _iterator25 = _createForOfIteratorHelper(targetLinks),\n _step25;\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var anchor = _step25.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 _iterator25.e(err);\n } finally {\n _iterator25.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 _iterator26 = _createForOfIteratorHelper(SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)),\n _step26;\n try {\n for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {\n var listGroup = _step26.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 _iterator27 = _createForOfIteratorHelper(SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)),\n _step27;\n try {\n for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {\n var item = _step27.value;\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n } catch (err) {\n _iterator27.e(err);\n } finally {\n _iterator27.f();\n }\n }\n } catch (err) {\n _iterator26.e(err);\n } finally {\n _iterator26.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 _iterator28 = _createForOfIteratorHelper(activeNodes),\n _step28;\n try {\n for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {\n var node = _step28.value;\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n } catch (err) {\n _iterator28.e(err);\n } finally {\n _iterator28.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 _iterator29 = _createForOfIteratorHelper(SelectorEngine.find(SELECTOR_DATA_SPY)),\n _step29;\n try {\n for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {\n var spy = _step29.value;\n ScrollSpy.getOrCreateInstance(spy);\n }\n } catch (err) {\n _iterator29.e(err);\n } finally {\n _iterator29.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 _iterator30 = _createForOfIteratorHelper(children),\n _step30;\n try {\n for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {\n var child = _step30.value;\n this._setInitialAttributesOnChild(child);\n }\n } catch (err) {\n _iterator30.e(err);\n } finally {\n _iterator30.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 _iterator31 = _createForOfIteratorHelper(SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)),\n _step31;\n try {\n for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {\n var element = _step31.value;\n Tab.getOrCreateInstance(element);\n }\n } catch (err) {\n _iterator31.e(err);\n } finally {\n _iterator31.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL2Rpc3QvanMvYm9vdHN0cmFwLmVzbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFNQSxPQUFPLEdBQUcsT0FBaEI7QUFDQSxJQUFNQyx1QkFBdUIsR0FBRyxJQUFoQztBQUNBLElBQU1DLGNBQWMsR0FBRyxlQUF2Qjs7QUFHQSxJQUFNQyxNQUFNLEdBQUdDLFNBQVRELE1BQU1BLENBQUdDLE1BQU0sRUFBSTtFQUN2QixJQUFJQSxNQUFNLEtBQUssSUFBWCxJQUFtQkEsTUFBTSxLQUFLQyxTQUFsQyxFQUE2QztJQUMzQyxVQUFBQyxNQUFBLENBQVVGLE1BQU87RUFDbEI7RUFFRCxPQUFPRyxNQUFNLENBQUNDLFNBQVAsQ0FBaUJDLFFBQWpCLENBQTBCQyxJQUExQixDQUErQk4sTUFBL0IsRUFBdUNPLEtBQXZDLENBQTZDLGFBQTdDLEVBQTRELENBQTVELEVBQStEQyxXQUEvRCxFQUFQO0FBQ0QsQ0FORDtBQVFBO0FBQ0E7QUFDQTs7QUFFQSxJQUFNQyxNQUFNLEdBQUdDLFNBQVRELE1BQU1BLENBQUdDLE1BQU0sRUFBSTtFQUN2QixHQUFHO0lBQ0RBLE1BQU0sSUFBSUMsSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ0UsTUFBTCxFQUFnQmpCLFVBQTNCLENBQVY7RUFDRCxDQUZELFFBRVNrQixRQUFRLENBQUNDLGNBQVQsQ0FBd0JMLE1BQXhCLENBRlQ7RUFJQSxPQUFPQSxNQUFQO0FBQ0QsQ0FORDtBQVFBLElBQU1NLFdBQVcsR0FBR0MsU0FBZEQsV0FBV0EsQ0FBR0MsT0FBTyxFQUFJO0VBQzdCLElBQUlDLFFBQVEsR0FBR0QsT0FBTyxDQUFDRSxZQUFSLENBQXFCLGdCQUFyQixDQUFmO0VBRUEsSUFBSSxDQUFDRCxRQUFELElBQWFBLFFBQVEsS0FBSyxH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QixFQUFnQ3pDLE1BQWhDLENBQWI7UUFFQSxJQUFJLE9BQU9BLE1BQVAsS0FBa0IsUUFBdEIsRUFBZ0M7VUFDOUIsSUFBSSxPQUFPNEQsSUFBSSxDQUFDNUQsTUFBRCxDQUFYLEtBQXdCLFdBQTVCLEVBQXlDO1lBQ3ZDLE1BQU0sSUFBSWlCLFNBQUosc0JBQUFuUixNQUFBLENBQWtDa1EsTUFBTyxPQUF6QyxDQUFOO1VBQ0Q7VUFFRDRELElBQUksQ0FBQzVELE1BQUQsQ0FBSixDQUFhLElBQWI7UUFDRDtNQUNGLENBVk0sQ0FBUDtJQVdEO0VBQUE7RUFBQSxPQUFBeXlCLEtBQUE7QUFBQSxFQS9KaUJweEIsYUFBcEI7QUFrS0E7QUFDQTtBQUNBO0FBRUFzQixvQkFBb0IsQ0FBQzh2QixLQUFELENBQXBCO0FBRUE7QUFDQTtBQUNBOztBQUVBejlCLGtCQUFrQixDQUFDeTlCLEtBQUQsQ0FBbEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvdXRpbC9pbmRleC5qcz8wYTdmIiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy9kb20vZXZlbnQtaGFuZGxlci5qcz9iYjI3Iiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy9kb20vZGF0YS5qcz9kYmUzIiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy9kb20vbWFuaXB1bGF0b3IuanM/NWFlMiIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvdXRpbC9jb25maWcuanM/MTg1MyIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvYmFzZS1jb21wb25lbnQuanM/MzYwMyIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvdXRpbC9jb21wb25lbnQtZnVuY3Rpb25zLmpzPzc2ODAiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL2FsZXJ0LmpzPzgwMjQiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL2J1dHRvbi5qcz9kODQ4Iiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy9kb20vc2VsZWN0b3ItZW5naW5lLmpzP2Y4N2YiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3V0aWwvc3dpcGUuanM/NjM3MCIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvY2Fyb3VzZWwuanM/ZDg1MiIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvY29sbGFwc2UuanM/NGM1OCIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvZHJvcGRvd24uanM/ZWMwNCIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvdXRpbC9zY3JvbGxiYXIuanM/NWM3YyIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvdXRpbC9iYWNrZHJvcC5qcz81ODQzIiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy91dGlsL2ZvY3VzdHJhcC5qcz8yMmEyIiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy9tb2RhbC5qcz9lNGNiIiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy9vZmZjYW52YXMuanM/MzIyNCIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvdXRpbC9zYW5pdGl6ZXIuanM/MTU2MSIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvdXRpbC90ZW1wbGF0ZS1mYWN0b3J5LmpzPzkzNDgiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3Rvb2x0aXAuanM/YjI0OSIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvcG9wb3Zlci5qcz8yODMyIiwid2VicGFjazovL1Z1ZXh5Ly4uLy4uL2pzL3NyYy9zY3JvbGxzcHkuanM/NjkwMiIsIndlYnBhY2s6Ly9WdWV4eS8uLi8uLi9qcy9zcmMvdGFiLmpzPzJjOWUiLCJ3ZWJwYWNrOi8vVnVleHkvLi4vLi4vanMvc3JjL3RvYXN0LmpzP2VhMTAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB1dGlsL2luZGV4LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuY29uc3QgTUFYX1VJRCA9IDFfMDAwXzAwMFxuY29uc3QgTUlMTElTRUNPTkRTX01VTFRJUExJRVIgPSAxMDAwXG5jb25zdCBUUkFOU0lUSU9OX0VORCA9ICd0cmFuc2l0aW9uZW5kJ1xuXG4vLyBTaG91dC1vdXQgQW5ndXMgQ3JvbGwgKGh0dHBzOi8vZ29vLmdsL3B4d1FHcClcbmNvbnN0IHRvVHlwZSA9IG9iamVjdCA9PiB7XG4gIGlmIChvYmplY3QgPT09IG51bGwgfHwgb2JqZWN0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYCR7b2JqZWN0fWBcbiAgfVxuXG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KS5tYXRjaCgvXFxzKFthLXpdKykvaSlbMV0udG9Mb3dlckNhc2UoKVxufVxuXG4vKipcbiAqIFB1YmxpYyBVdGlsIEFQSVxuICovXG5cbmNvbnN0IGdldFVJRCA9IHByZWZpeCA9PiB7XG4gIGRvIHtcbiAgICBwcmVmaXggKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTUFYX1VJRClcbiAgfSB3aGlsZSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJlZml4KSlcblxuICByZXR1cm4gcHJlZml4XG59XG5cbmNvbnN0IGdldFNlbGVjdG9yID0gZWxlbWVudCA9PiB7XG4gIGxldCBzZWxlY3RvciA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLXRhcmdldCcpXG5cbiAgaWYgKCFzZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gJyMnKSB7XG4gICAgbGV0IGhyZWZBdHRyaWJ1dGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaHJlZicpXG5cbiAgICAvLyBUaGUgb25seSB2YWxpZCBjb250ZW50IHRoYXQgY291bGQgZG91YmxlIGFzIGEgc2VsZWN0b3IgYXJlIElEcyBvciBjbGFzc2VzLFxuICAgIC8vIHNvIGV2ZXJ5dGhpbmcgc3RhcnRpbmcgd2l0aCBgI2Agb3IgYC5gLiBJZiBhIFwicmVhbFwiIFVSTCBpcyB1c2VkIGFzIHRoZSBzZWxlY3RvcixcbiAgICAvLyBgZG9jdW1lbnQucXVlcnlTZWxlY3RvcmAgd2lsbCByaWdodGZ1bGx5IGNvbXBsYWluIGl0IGlzIGludmFsaWQuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMzIyNzNcbiAgICBpZiAoIWhyZWZBdHRyaWJ1dGUgfHwgKCFocmVmQXR0cmlidXRlLmluY2x1ZGVzKCcjJykgJiYgIWhyZWZBdHRyaWJ1dGUuc3RhcnRzV2l0aCgnLicpKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZSBDTVMgcHV0cyBvdXQgYSBmdWxsIFVSTCB3aXRoIHRoZSBhbmNob3IgYXBwZW5kZWRcbiAgICBpZiAoaHJlZkF0dHJpYnV0ZS5pbmNsdWRlcygnIycpICYmICFocmVmQXR0cmlidXRlLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgaHJlZkF0dHJpYnV0ZSA9IGAjJHtocmVmQXR0cmlidXRlLnNwbGl0KCcjJylbMV19YFxuICAgIH1cblxuICAgIHNlbGVjdG9yID0gaHJlZkF0dHJpYnV0ZSAmJiBocmVmQXR0cmlidXRlICE9PSAnIycgPyBocmVmQXR0cmlidXRlLnRyaW0oKSA6IG51bGxcbiAgfVxuXG4gIHJldHVybiBzZWxlY3RvclxufVxuXG5jb25zdCBnZXRTZWxlY3RvckZyb21FbGVtZW50ID0gZWxlbWVudCA9PiB7XG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3IoZWxlbWVudClcblxuICBpZiAoc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikgPyBzZWxlY3RvciA6IG51bGxcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmNvbnN0IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IgPSBlbGVtZW50ID0+IHtcbiAgY29uc3Qgc2VsZWN0b3IgPSBnZXRTZWxlY3RvcihlbGVtZW50KVxuXG4gIHJldHVybiBzZWxlY3RvciA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpIDogbnVsbFxufVxuXG5jb25zdCBnZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCA9IGVsZW1lbnQgPT4ge1xuICBpZiAoIWVsZW1lbnQpIHtcbiAgICByZXR1cm4gMFxuICB9XG5cbiAgLy8gR2V0IHRyYW5zaXRpb24tZHVyYXRpb24gb2YgdGhlIGVsZW1lbnRcbiAgbGV0IHsgdHJhbnNpdGlvbkR1cmF0aW9uLCB0cmFuc2l0aW9uRGVsYXkgfSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpXG5cbiAgY29uc3QgZmxvYXRUcmFuc2l0aW9uRHVyYXRpb24gPSBOdW1iZXIucGFyc2VGbG9hdCh0cmFuc2l0aW9uRHVyYXRpb24pXG4gIGNvbnN0IGZsb2F0VHJhbnNpdGlvbkRlbGF5ID0gTnVtYmVyLnBhcnNlRmxvYXQodHJhbnNpdGlvbkRlbGF5KVxuXG4gIC8vIFJldHVybiAwIGlmIGVsZW1lbnQgb3IgdHJhbnNpdGlvbiBkdXJhdGlvbiBpcyBub3QgZm91bmRcbiAgaWYgKCFmbG9hdFRyYW5zaXRpb25EdXJhdGlvbiAmJiAhZmxvYXRUcmFuc2l0aW9uRGVsYXkpIHtcbiAgICByZXR1cm4gMFxuICB9XG5cbiAgLy8gSWYgbXVsdGlwbGUgZHVyYXRpb25zIGFyZSBkZWZpbmVkLCB0YWtlIHRoZSBmaXJzdFxuICB0cmFuc2l0aW9uRHVyYXRpb24gPSB0cmFuc2l0aW9uRHVyYXRpb24uc3BsaXQoJywnKVswXVxuICB0cmFuc2l0aW9uRGVsYXkgPSB0cmFuc2l0aW9uRGVsYXkuc3BsaXQoJywnKVswXVxuXG4gIHJldHVybiAoTnVtYmVyLnBhcnNlRmxvYXQodHJhbnNpdGlvbkR1cmF0aW9uKSArIE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EZWxheSkpICogTUlMTElTRUNPTkRTX01VTFRJUExJRVJcbn1cblxuY29uc3QgdHJpZ2dlclRyYW5zaXRpb25FbmQgPSBlbGVtZW50ID0+IHtcbiAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChUUkFOU0lUSU9OX0VORCkpXG59XG5cbmNvbnN0IGlzRWxlbWVudCA9IG9iamVjdCA9PiB7XG4gIGlmICghb2JqZWN0IHx8IHR5cGVvZiBvYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAodHlwZW9mIG9iamVjdC5qcXVlcnkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgb2JqZWN0ID0gb2JqZWN0WzBdXG4gIH1cblxuICByZXR1cm4gdHlwZW9mIG9iamVjdC5ub2RlVHlwZSAhPT0gJ3VuZGVmaW5lZCdcbn1cblxuY29uc3QgZ2V0RWxlbWVudCA9IG9iamVjdCA9PiB7XG4gIC8vIGl0J3MgYSBqUXVlcnkgb2JqZWN0IG9yIGEgbm9kZSBlbGVtZW50XG4gIGlmIChpc0VsZW1lbnQob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3QuanF1ZXJ5ID8gb2JqZWN0WzBdIDogb2JqZWN0XG4gIH1cblxuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycgJiYgb2JqZWN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvYmplY3QpXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCBpc1Zpc2libGUgPSBlbGVtZW50ID0+IHtcbiAgaWYgKCFpc0VsZW1lbnQoZWxlbWVudCkgfHwgZWxlbWVudC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgZWxlbWVudElzVmlzaWJsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgndmlzaWJpbGl0eScpID09PSAndmlzaWJsZSdcbiAgLy8gSGFuZGxlIGBkZXRhaWxzYCBlbGVtZW50IGFzIGl0cyBjb250ZW50IG1heSBmYWxzaWUgYXBwZWFyIHZpc2libGUgd2hlbiBpdCBpcyBjbG9zZWRcbiAgY29uc3QgY2xvc2VkRGV0YWlscyA9IGVsZW1lbnQuY2xvc2VzdCgnZGV0YWlsczpub3QoW29wZW5dKScpXG5cbiAgaWYgKCFjbG9zZWREZXRhaWxzKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRJc1Zpc2libGVcbiAgfVxuXG4gIGlmIChjbG9zZWREZXRhaWxzICE9PSBlbGVtZW50KSB7XG4gICAgY29uc3Qgc3VtbWFyeSA9IGVsZW1lbnQuY2xvc2VzdCgnc3VtbWFyeScpXG4gICAgaWYgKHN1bW1hcnkgJiYgc3VtbWFyeS5wYXJlbnROb2RlICE9PSBjbG9zZWREZXRhaWxzKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoc3VtbWFyeSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRJc1Zpc2libGVcbn1cblxuY29uc3QgaXNEaXNhYmxlZCA9IGVsZW1lbnQgPT4ge1xuICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudC5ub2RlVHlwZSAhPT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkaXNhYmxlZCcpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmICh0eXBlb2YgZWxlbWVudC5kaXNhYmxlZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZWxlbWVudC5kaXNhYmxlZFxuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpICE9PSAnZmFsc2UnXG59XG5cbmNvbnN0IGZpbmRTaGFkb3dSb290ID0gZWxlbWVudCA9PiB7XG4gIGlmICghZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmF0dGFjaFNoYWRvdykge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBDYW4gZmluZCB0aGUgc2hhZG93IHJvb3Qgb3RoZXJ3aXNlIGl0J2xsIHJldHVybiB0aGUgZG9jdW1lbnRcbiAgaWYgKHR5cGVvZiBlbGVtZW50LmdldFJvb3ROb2RlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3Qgcm9vdCA9IGVsZW1lbnQuZ2V0Um9vdE5vZGUoKVxuICAgIHJldHVybiByb290IGluc3RhbmNlb2YgU2hhZG93Um9vdCA/IHJvb3QgOiBudWxsXG4gIH1cblxuICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpIHtcbiAgICByZXR1cm4gZWxlbWVudFxuICB9XG5cbiAgLy8gd2hlbiB3ZSBkb24ndCBmaW5kIGEgc2hhZG93IHJvb3RcbiAgaWYgKCFlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIGZpbmRTaGFkb3dSb290KGVsZW1lbnQucGFyZW50Tm9kZSlcbn1cblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbi8qKlxuICogVHJpY2sgdG8gcmVzdGFydCBhbiBlbGVtZW50J3MgYW5pbWF0aW9uXG4gKlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybiB2b2lkXG4gKlxuICogQHNlZSBodHRwczovL3d3dy5jaGFyaXN0aGVvLmlvL2Jsb2cvMjAyMS8wMi9yZXN0YXJ0LWEtY3NzLWFuaW1hdGlvbi13aXRoLWphdmFzY3JpcHQvI3Jlc3RhcnRpbmctYS1jc3MtYW5pbWF0aW9uXG4gKi9cbmNvbnN0IHJlZmxvdyA9IGVsZW1lbnQgPT4ge1xuICBlbGVtZW50Lm9mZnNldEhlaWdodCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xufVxuXG5jb25zdCBnZXRqUXVlcnkgPSAoKSA9PiB7XG4gIGlmICh3aW5kb3cualF1ZXJ5ICYmICFkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgnZGF0YS1icy1uby1qcXVlcnknKSkge1xuICAgIHJldHVybiB3aW5kb3cualF1ZXJ5XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCBET01Db250ZW50TG9hZGVkQ2FsbGJhY2tzID0gW11cblxuY29uc3Qgb25ET01Db250ZW50TG9hZGVkID0gY2FsbGJhY2sgPT4ge1xuICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgLy8gYWRkIGxpc3RlbmVyIG9uIHRoZSBmaXJzdCBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGluIGxvYWRpbmcgc3RhdGVcbiAgICBpZiAoIURPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIERPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MpIHtcbiAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgRE9NQ29udGVudExvYWRlZENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKVxuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKClcbiAgfVxufVxuXG5jb25zdCBpc1JUTCA9ICgpID0+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIgPT09ICdydGwnXG5cbmNvbnN0IGRlZmluZUpRdWVyeVBsdWdpbiA9IHBsdWdpbiA9PiB7XG4gIG9uRE9NQ29udGVudExvYWRlZCgoKSA9PiB7XG4gICAgY29uc3QgJCA9IGdldGpRdWVyeSgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCQpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBwbHVnaW4uTkFNRVxuICAgICAgY29uc3QgSlFVRVJZX05PX0NPTkZMSUNUID0gJC5mbltuYW1lXVxuICAgICAgJC5mbltuYW1lXSA9IHBsdWdpbi5qUXVlcnlJbnRlcmZhY2VcbiAgICAgICQuZm5bbmFtZV0uQ29uc3RydWN0b3IgPSBwbHVnaW5cbiAgICAgICQuZm5bbmFtZV0ubm9Db25mbGljdCA9ICgpID0+IHtcbiAgICAgICAgJC5mbltuYW1lXSA9IEpRVUVSWV9OT19DT05GTElDVFxuICAgICAgICByZXR1cm4gcGx1Z2luLmpRdWVyeUludGVyZmFjZVxuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cblxuY29uc3QgZXhlY3V0ZSA9IGNhbGxiYWNrID0+IHtcbiAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrKClcbiAgfVxufVxuXG5jb25zdCBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uID0gKGNhbGxiYWNrLCB0cmFuc2l0aW9uRWxlbWVudCwgd2FpdEZvclRyYW5zaXRpb24gPSB0cnVlKSA9PiB7XG4gIGlmICghd2FpdEZvclRyYW5zaXRpb24pIHtcbiAgICBleGVjdXRlKGNhbGxiYWNrKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgZHVyYXRpb25QYWRkaW5nID0gNVxuICBjb25zdCBlbXVsYXRlZER1cmF0aW9uID0gZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodHJhbnNpdGlvbkVsZW1lbnQpICsgZHVyYXRpb25QYWRkaW5nXG5cbiAgbGV0IGNhbGxlZCA9IGZhbHNlXG5cbiAgY29uc3QgaGFuZGxlciA9ICh7IHRhcmdldCB9KSA9PiB7XG4gICAgaWYgKHRhcmdldCAhPT0gdHJhbnNpdGlvbkVsZW1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNhbGxlZCA9IHRydWVcbiAgICB0cmFuc2l0aW9uRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFRSQU5TSVRJT05fRU5ELCBoYW5kbGVyKVxuICAgIGV4ZWN1dGUoY2FsbGJhY2spXG4gIH1cblxuICB0cmFuc2l0aW9uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFRSQU5TSVRJT05fRU5ELCBoYW5kbGVyKVxuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgdHJpZ2dlclRyYW5zaXRpb25FbmQodHJhbnNpdGlvbkVsZW1lbnQpXG4gICAgfVxuICB9LCBlbXVsYXRlZER1cmF0aW9uKVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgcHJldmlvdXMvbmV4dCBlbGVtZW50IG9mIGEgbGlzdC5cbiAqXG4gKiBAcGFyYW0ge2FycmF5fSBsaXN0ICAgIFRoZSBsaXN0IG9mIGVsZW1lbnRzXG4gKiBAcGFyYW0gYWN0aXZlRWxlbWVudCAgIFRoZSBhY3RpdmUgZWxlbWVudFxuICogQHBhcmFtIHNob3VsZEdldE5leHQgICBDaG9vc2UgdG8gZ2V0IG5leHQgb3IgcHJldmlvdXMgZWxlbWVudFxuICogQHBhcmFtIGlzQ3ljbGVBbGxvd2VkXG4gKiBAcmV0dXJuIHtFbGVtZW50fGVsZW19IFRoZSBwcm9wZXIgZWxlbWVudFxuICovXG5jb25zdCBnZXROZXh0QWN0aXZlRWxlbWVudCA9IChsaXN0LCBhY3RpdmVFbGVtZW50LCBzaG91bGRHZXROZXh0LCBpc0N5Y2xlQWxsb3dlZCkgPT4ge1xuICBjb25zdCBsaXN0TGVuZ3RoID0gbGlzdC5sZW5ndGhcbiAgbGV0IGluZGV4ID0gbGlzdC5pbmRleE9mKGFjdGl2ZUVsZW1lbnQpXG5cbiAgLy8gaWYgdGhlIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGxpc3QgcmV0dXJuIGFuIGVsZW1lbnRcbiAgLy8gZGVwZW5kaW5nIG9uIHRoZSBkaXJlY3Rpb24gYW5kIGlmIGN5Y2xlIGlzIGFsbG93ZWRcbiAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiAhc2hvdWxkR2V0TmV4dCAmJiBpc0N5Y2xlQWxsb3dlZCA/IGxpc3RbbGlzdExlbmd0aCAtIDFdIDogbGlzdFswXVxuICB9XG5cbiAgaW5kZXggKz0gc2hvdWxkR2V0TmV4dCA/IDEgOiAtMVxuXG4gIGlmIChpc0N5Y2xlQWxsb3dlZCkge1xuICAgIGluZGV4ID0gKGluZGV4ICsgbGlzdExlbmd0aCkgJSBsaXN0TGVuZ3RoXG4gIH1cblxuICByZXR1cm4gbGlzdFtNYXRoLm1heCgwLCBNYXRoLm1pbihpbmRleCwgbGlzdExlbmd0aCAtIDEpKV1cbn1cblxuZXhwb3J0IHtcbiAgZGVmaW5lSlF1ZXJ5UGx1Z2luLFxuICBleGVjdXRlLFxuICBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uLFxuICBmaW5kU2hhZG93Um9vdCxcbiAgZ2V0RWxlbWVudCxcbiAgZ2V0RWxlbWVudEZyb21TZWxlY3RvcixcbiAgZ2V0alF1ZXJ5LFxuICBnZXROZXh0QWN0aXZlRWxlbWVudCxcbiAgZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCxcbiAgZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQsXG4gIGdldFVJRCxcbiAgaXNEaXNhYmxlZCxcbiAgaXNFbGVtZW50LFxuICBpc1JUTCxcbiAgaXNWaXNpYmxlLFxuICBub29wLFxuICBvbkRPTUNvbnRlbnRMb2FkZWQsXG4gIHJlZmxvdyxcbiAgdHJpZ2dlclRyYW5zaXRpb25FbmQsXG4gIHRvVHlwZVxufVxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBkb20vZXZlbnQtaGFuZGxlci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7IGdldGpRdWVyeSB9IGZyb20gJy4uL3V0aWwvaW5kZXgnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgbmFtZXNwYWNlUmVnZXggPSAvW14uXSooPz1cXC4uKilcXC58LiovXG5jb25zdCBzdHJpcE5hbWVSZWdleCA9IC9cXC4uKi9cbmNvbnN0IHN0cmlwVWlkUmVnZXggPSAvOjpcXGQrJC9cbmNvbnN0IGV2ZW50UmVnaXN0cnkgPSB7fSAvLyBFdmVudHMgc3RvcmFnZVxubGV0IHVpZEV2ZW50ID0gMVxuY29uc3QgY3VzdG9tRXZlbnRzID0ge1xuICBtb3VzZWVudGVyOiAnbW91c2VvdmVyJyxcbiAgbW91c2VsZWF2ZTogJ21vdXNlb3V0J1xufVxuXG5jb25zdCBuYXRpdmVFdmVudHMgPSBuZXcgU2V0KFtcbiAgJ2NsaWNrJyxcbiAgJ2RibGNsaWNrJyxcbiAgJ21vdXNldXAnLFxuICAnbW91c2Vkb3duJyxcbiAgJ2NvbnRleHRtZW51JyxcbiAgJ21vdXNld2hlZWwnLFxuICAnRE9NTW91c2VTY3JvbGwnLFxuICAnbW91c2VvdmVyJyxcbiAgJ21vdXNlb3V0JyxcbiAgJ21vdXNlbW92ZScsXG4gICdzZWxlY3RzdGFydCcsXG4gICdzZWxlY3RlbmQnLFxuICAna2V5ZG93bicsXG4gICdrZXlwcmVzcycsXG4gICdrZXl1cCcsXG4gICdvcmllbnRhdGlvbmNoYW5nZScsXG4gICd0b3VjaHN0YXJ0JyxcbiAgJ3RvdWNobW92ZScsXG4gICd0b3VjaGVuZCcsXG4gICd0b3VjaGNhbmNlbCcsXG4gICdwb2ludGVyZG93bicsXG4gICdwb2ludGVybW92ZScsXG4gICdwb2ludGVydXAnLFxuICAncG9pbnRlcmxlYXZlJyxcbiAgJ3BvaW50ZXJjYW5jZWwnLFxuICAnZ2VzdHVyZXN0YXJ0JyxcbiAgJ2dlc3R1cmVjaGFuZ2UnLFxuICAnZ2VzdHVyZWVuZCcsXG4gICdmb2N1cycsXG4gICdibHVyJyxcbiAgJ2NoYW5nZScsXG4gICdyZXNldCcsXG4gICdzZWxlY3QnLFxuICAnc3VibWl0JyxcbiAgJ2ZvY3VzaW4nLFxuICAnZm9jdXNvdXQnLFxuICAnbG9hZCcsXG4gICd1bmxvYWQnLFxuICAnYmVmb3JldW5sb2FkJyxcbiAgJ3Jlc2l6ZScsXG4gICdtb3ZlJyxcbiAgJ0RPTUNvbnRlbnRMb2FkZWQnLFxuICAncmVhZHlzdGF0ZWNoYW5nZScsXG4gICdlcnJvcicsXG4gICdhYm9ydCcsXG4gICdzY3JvbGwnXG5dKVxuXG4vKipcbiAqIFByaXZhdGUgbWV0aG9kc1xuICovXG5cbmZ1bmN0aW9uIG1ha2VFdmVudFVpZChlbGVtZW50LCB1aWQpIHtcbiAgcmV0dXJuICh1aWQgJiYgYCR7dWlkfTo6JHt1aWRFdmVudCsrfWApIHx8IGVsZW1lbnQudWlkRXZlbnQgfHwgdWlkRXZlbnQrK1xufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50RXZlbnRzKGVsZW1lbnQpIHtcbiAgY29uc3QgdWlkID0gbWFrZUV2ZW50VWlkKGVsZW1lbnQpXG5cbiAgZWxlbWVudC51aWRFdmVudCA9IHVpZFxuICBldmVudFJlZ2lzdHJ5W3VpZF0gPSBldmVudFJlZ2lzdHJ5W3VpZF0gfHwge31cblxuICByZXR1cm4gZXZlbnRSZWdpc3RyeVt1aWRdXG59XG5cbmZ1bmN0aW9uIGJvb3RzdHJhcEhhbmRsZXIoZWxlbWVudCwgZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHtcbiAgICBoeWRyYXRlT2JqKGV2ZW50LCB7IGRlbGVnYXRlVGFyZ2V0OiBlbGVtZW50IH0pXG5cbiAgICBpZiAoaGFuZGxlci5vbmVPZmYpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgZXZlbnQudHlwZSwgZm4pXG4gICAgfVxuXG4gICAgcmV0dXJuIGZuLmFwcGx5KGVsZW1lbnQsIFtldmVudF0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYm9vdHN0cmFwRGVsZWdhdGlvbkhhbmRsZXIoZWxlbWVudCwgc2VsZWN0b3IsIGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7XG4gICAgY29uc3QgZG9tRWxlbWVudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpXG5cbiAgICBmb3IgKGxldCB7IHRhcmdldCB9ID0gZXZlbnQ7IHRhcmdldCAmJiB0YXJnZXQgIT09IHRoaXM7IHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlKSB7XG4gICAgICBmb3IgKGNvbnN0IGRvbUVsZW1lbnQgb2YgZG9tRWxlbWVudHMpIHtcbiAgICAgICAgaWYgKGRvbUVsZW1lbnQgIT09IHRhcmdldCkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBoeWRyYXRlT2JqKGV2ZW50LCB7IGRlbGVnYXRlVGFyZ2V0OiB0YXJnZXQgfSlcblxuICAgICAgICBpZiAoaGFuZGxlci5vbmVPZmYpIHtcbiAgICAgICAgICBFdmVudEhhbmRsZXIub2ZmKGVsZW1lbnQsIGV2ZW50LnR5cGUsIHNlbGVjdG9yLCBmbilcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0YXJnZXQsIFtldmVudF0pXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRIYW5kbGVyKGV2ZW50cywgY2FsbGFibGUsIGRlbGVnYXRpb25TZWxlY3RvciA9IG51bGwpIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZXZlbnRzKVxuICAgIC5maW5kKGV2ZW50ID0+IGV2ZW50LmNhbGxhYmxlID09PSBjYWxsYWJsZSAmJiBldmVudC5kZWxlZ2F0aW9uU2VsZWN0b3IgPT09IGRlbGVnYXRpb25TZWxlY3Rvcilcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplUGFyYW1ldGVycyhvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gdHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnXG4gIC8vIHRvZG86IHRvb2x0aXAgcGFzc2VzIGBmYWxzZWAgaW5zdGVhZCBvZiBzZWxlY3Rvciwgc28gd2UgbmVlZCB0byBjaGVja1xuICBjb25zdCBjYWxsYWJsZSA9IGlzRGVsZWdhdGVkID8gZGVsZWdhdGlvbkZ1bmN0aW9uIDogKGhhbmRsZXIgfHwgZGVsZWdhdGlvbkZ1bmN0aW9uKVxuICBsZXQgdHlwZUV2ZW50ID0gZ2V0VHlwZUV2ZW50KG9yaWdpbmFsVHlwZUV2ZW50KVxuXG4gIGlmICghbmF0aXZlRXZlbnRzLmhhcyh0eXBlRXZlbnQpKSB7XG4gICAgdHlwZUV2ZW50ID0gb3JpZ2luYWxUeXBlRXZlbnRcbiAgfVxuXG4gIHJldHVybiBbaXNEZWxlZ2F0ZWQsIGNhbGxhYmxlLCB0eXBlRXZlbnRdXG59XG5cbmZ1bmN0aW9uIGFkZEhhbmRsZXIoZWxlbWVudCwgb3JpZ2luYWxUeXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbiwgb25lT2ZmKSB7XG4gIGlmICh0eXBlb2Ygb3JpZ2luYWxUeXBlRXZlbnQgIT09ICdzdHJpbmcnIHx8ICFlbGVtZW50KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBsZXQgW2lzRGVsZWdhdGVkLCBjYWxsYWJsZSwgdHlwZUV2ZW50XSA9IG5vcm1hbGl6ZVBhcmFtZXRlcnMob3JpZ2luYWxUeXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbilcblxuICAvLyBpbiBjYXNlIG9mIG1vdXNlZW50ZXIgb3IgbW91c2VsZWF2ZSB3cmFwIHRoZSBoYW5kbGVyIHdpdGhpbiBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGZvciBpdHMgRE9NIHBvc2l0aW9uXG4gIC8vIHRoaXMgcHJldmVudHMgdGhlIGhhbmRsZXIgZnJvbSBiZWluZyBkaXNwYXRjaGVkIHRoZSBzYW1lIHdheSBhcyBtb3VzZW92ZXIgb3IgbW91c2VvdXQgZG9lc1xuICBpZiAob3JpZ2luYWxUeXBlRXZlbnQgaW4gY3VzdG9tRXZlbnRzKSB7XG4gICAgY29uc3Qgd3JhcEZ1bmN0aW9uID0gZm4gPT4ge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBpZiAoIWV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgKGV2ZW50LnJlbGF0ZWRUYXJnZXQgIT09IGV2ZW50LmRlbGVnYXRlVGFyZ2V0ICYmICFldmVudC5kZWxlZ2F0ZVRhcmdldC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkpIHtcbiAgICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNhbGxhYmxlID0gd3JhcEZ1bmN0aW9uKGNhbGxhYmxlKVxuICB9XG5cbiAgY29uc3QgZXZlbnRzID0gZ2V0RWxlbWVudEV2ZW50cyhlbGVtZW50KVxuICBjb25zdCBoYW5kbGVycyA9IGV2ZW50c1t0eXBlRXZlbnRdIHx8IChldmVudHNbdHlwZUV2ZW50XSA9IHt9KVxuICBjb25zdCBwcmV2aW91c0Z1bmN0aW9uID0gZmluZEhhbmRsZXIoaGFuZGxlcnMsIGNhbGxhYmxlLCBpc0RlbGVnYXRlZCA/IGhhbmRsZXIgOiBudWxsKVxuXG4gIGlmIChwcmV2aW91c0Z1bmN0aW9uKSB7XG4gICAgcHJldmlvdXNGdW5jdGlvbi5vbmVPZmYgPSBwcmV2aW91c0Z1bmN0aW9uLm9uZU9mZiAmJiBvbmVPZmZcblxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgdWlkID0gbWFrZUV2ZW50VWlkKGNhbGxhYmxlLCBvcmlnaW5hbFR5cGVFdmVudC5yZXBsYWNlKG5hbWVzcGFjZVJlZ2V4LCAnJykpXG4gIGNvbnN0IGZuID0gaXNEZWxlZ2F0ZWQgP1xuICAgIGJvb3RzdHJhcERlbGVnYXRpb25IYW5kbGVyKGVsZW1lbnQsIGhhbmRsZXIsIGNhbGxhYmxlKSA6XG4gICAgYm9vdHN0cmFwSGFuZGxlcihlbGVtZW50LCBjYWxsYWJsZSlcblxuICBmbi5kZWxlZ2F0aW9uU2VsZWN0b3IgPSBpc0RlbGVnYXRlZCA/IGhhbmRsZXIgOiBudWxsXG4gIGZuLmNhbGxhYmxlID0gY2FsbGFibGVcbiAgZm4ub25lT2ZmID0gb25lT2ZmXG4gIGZuLnVpZEV2ZW50ID0gdWlkXG4gIGhhbmRsZXJzW3VpZF0gPSBmblxuXG4gIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlRXZlbnQsIGZuLCBpc0RlbGVnYXRlZClcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvblNlbGVjdG9yKSB7XG4gIGNvbnN0IGZuID0gZmluZEhhbmRsZXIoZXZlbnRzW3R5cGVFdmVudF0sIGhhbmRsZXIsIGRlbGVnYXRpb25TZWxlY3RvcilcblxuICBpZiAoIWZuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZUV2ZW50LCBmbiwgQm9vbGVhbihkZWxlZ2F0aW9uU2VsZWN0b3IpKVxuICBkZWxldGUgZXZlbnRzW3R5cGVFdmVudF1bZm4udWlkRXZlbnRdXG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5hbWVzcGFjZWRIYW5kbGVycyhlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgbmFtZXNwYWNlKSB7XG4gIGNvbnN0IHN0b3JlRWxlbWVudEV2ZW50ID0gZXZlbnRzW3R5cGVFdmVudF0gfHwge31cblxuICBmb3IgKGNvbnN0IGhhbmRsZXJLZXkgb2YgT2JqZWN0LmtleXMoc3RvcmVFbGVtZW50RXZlbnQpKSB7XG4gICAgaWYgKGhhbmRsZXJLZXkuaW5jbHVkZXMobmFtZXNwYWNlKSkge1xuICAgICAgY29uc3QgZXZlbnQgPSBzdG9yZUVsZW1lbnRFdmVudFtoYW5kbGVyS2V5XVxuICAgICAgcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgZXZlbnQuY2FsbGFibGUsIGV2ZW50LmRlbGVnYXRpb25TZWxlY3RvcilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VHlwZUV2ZW50KGV2ZW50KSB7XG4gIC8vIGFsbG93IHRvIGdldCB0aGUgbmF0aXZlIGV2ZW50cyBmcm9tIG5hbWVzcGFjZWQgZXZlbnRzICgnY2xpY2suYnMuYnV0dG9uJyAtLT4gJ2NsaWNrJylcbiAgZXZlbnQgPSBldmVudC5yZXBsYWNlKHN0cmlwTmFtZVJlZ2V4LCAnJylcbiAgcmV0dXJuIGN1c3RvbUV2ZW50c1tldmVudF0gfHwgZXZlbnRcbn1cblxuY29uc3QgRXZlbnRIYW5kbGVyID0ge1xuICBvbihlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gICAgYWRkSGFuZGxlcihlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uLCBmYWxzZSlcbiAgfSxcblxuICBvbmUoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbikge1xuICAgIGFkZEhhbmRsZXIoZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbiwgdHJ1ZSlcbiAgfSxcblxuICBvZmYoZWxlbWVudCwgb3JpZ2luYWxUeXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbikge1xuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxUeXBlRXZlbnQgIT09ICdzdHJpbmcnIHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBbaXNEZWxlZ2F0ZWQsIGNhbGxhYmxlLCB0eXBlRXZlbnRdID0gbm9ybWFsaXplUGFyYW1ldGVycyhvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKVxuICAgIGNvbnN0IGluTmFtZXNwYWNlID0gdHlwZUV2ZW50ICE9PSBvcmlnaW5hbFR5cGVFdmVudFxuICAgIGNvbnN0IGV2ZW50cyA9IGdldEVsZW1lbnRFdmVudHMoZWxlbWVudClcbiAgICBjb25zdCBzdG9yZUVsZW1lbnRFdmVudCA9IGV2ZW50c1t0eXBlRXZlbnRdIHx8IHt9XG4gICAgY29uc3QgaXNOYW1lc3BhY2UgPSBvcmlnaW5hbFR5cGVFdmVudC5zdGFydHNXaXRoKCcuJylcblxuICAgIGlmICh0eXBlb2YgY2FsbGFibGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBTaW1wbGVzdCBjYXNlOiBoYW5kbGVyIGlzIHBhc3NlZCwgcmVtb3ZlIHRoYXQgbGlzdGVuZXIgT05MWS5cbiAgICAgIGlmICghT2JqZWN0LmtleXMoc3RvcmVFbGVtZW50RXZlbnQpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgY2FsbGFibGUsIGlzRGVsZWdhdGVkID8gaGFuZGxlciA6IG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaXNOYW1lc3BhY2UpIHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudEV2ZW50IG9mIE9iamVjdC5rZXlzKGV2ZW50cykpIHtcbiAgICAgICAgcmVtb3ZlTmFtZXNwYWNlZEhhbmRsZXJzKGVsZW1lbnQsIGV2ZW50cywgZWxlbWVudEV2ZW50LCBvcmlnaW5hbFR5cGVFdmVudC5zbGljZSgxKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleUhhbmRsZXJzIG9mIE9iamVjdC5rZXlzKHN0b3JlRWxlbWVudEV2ZW50KSkge1xuICAgICAgY29uc3QgaGFuZGxlcktleSA9IGtleUhhbmRsZXJzLnJlcGxhY2Uoc3RyaXBVaWRSZWdleCwgJycpXG5cbiAgICAgIGlmICghaW5OYW1lc3BhY2UgfHwgb3JpZ2luYWxUeXBlRXZlbnQuaW5jbHVkZXMoaGFuZGxlcktleSkpIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBzdG9yZUVsZW1lbnRFdmVudFtrZXlIYW5kbGVyc11cbiAgICAgICAgcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgZXZlbnQuY2FsbGFibGUsIGV2ZW50LmRlbGVnYXRpb25TZWxlY3RvcilcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgdHJpZ2dlcihlbGVtZW50LCBldmVudCwgYXJncykge1xuICAgIGlmICh0eXBlb2YgZXZlbnQgIT09ICdzdHJpbmcnIHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0ICQgPSBnZXRqUXVlcnkoKVxuICAgIGNvbnN0IHR5cGVFdmVudCA9IGdldFR5cGVFdmVudChldmVudClcbiAgICBjb25zdCBpbk5hbWVzcGFjZSA9IGV2ZW50ICE9PSB0eXBlRXZlbnRcblxuICAgIGxldCBqUXVlcnlFdmVudCA9IG51bGxcbiAgICBsZXQgYnViYmxlcyA9IHRydWVcbiAgICBsZXQgbmF0aXZlRGlzcGF0Y2ggPSB0cnVlXG4gICAgbGV0IGRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZVxuXG4gICAgaWYgKGluTmFtZXNwYWNlICYmICQpIHtcbiAgICAgIGpRdWVyeUV2ZW50ID0gJC5FdmVudChldmVudCwgYXJncylcblxuICAgICAgJChlbGVtZW50KS50cmlnZ2VyKGpRdWVyeUV2ZW50KVxuICAgICAgYnViYmxlcyA9ICFqUXVlcnlFdmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpXG4gICAgICBuYXRpdmVEaXNwYXRjaCA9ICFqUXVlcnlFdmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpXG4gICAgICBkZWZhdWx0UHJldmVudGVkID0galF1ZXJ5RXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKClcbiAgICB9XG5cbiAgICBsZXQgZXZ0ID0gbmV3IEV2ZW50KGV2ZW50LCB7IGJ1YmJsZXMsIGNhbmNlbGFibGU6IHRydWUgfSlcbiAgICBldnQgPSBoeWRyYXRlT2JqKGV2dCwgYXJncylcblxuICAgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgIH1cblxuICAgIGlmIChuYXRpdmVEaXNwYXRjaCkge1xuICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2dClcbiAgICB9XG5cbiAgICBpZiAoZXZ0LmRlZmF1bHRQcmV2ZW50ZWQgJiYgalF1ZXJ5RXZlbnQpIHtcbiAgICAgIGpRdWVyeUV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9XG5cbiAgICByZXR1cm4gZXZ0XG4gIH1cbn1cblxuZnVuY3Rpb24gaHlkcmF0ZU9iaihvYmosIG1ldGEpIHtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobWV0YSB8fCB7fSkpIHtcbiAgICB0cnkge1xuICAgICAgb2JqW2tleV0gPSB2YWx1ZVxuICAgIH0gY2F0Y2gge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmpcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXZlbnRIYW5kbGVyXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGRvbS9kYXRhLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBlbGVtZW50TWFwID0gbmV3IE1hcCgpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0KGVsZW1lbnQsIGtleSwgaW5zdGFuY2UpIHtcbiAgICBpZiAoIWVsZW1lbnRNYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICBlbGVtZW50TWFwLnNldChlbGVtZW50LCBuZXcgTWFwKCkpXG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2VNYXAgPSBlbGVtZW50TWFwLmdldChlbGVtZW50KVxuXG4gICAgLy8gbWFrZSBpdCBjbGVhciB3ZSBvbmx5IHdhbnQgb25lIGluc3RhbmNlIHBlciBlbGVtZW50XG4gICAgLy8gY2FuIGJlIHJlbW92ZWQgbGF0ZXIgd2hlbiBtdWx0aXBsZSBrZXkvaW5zdGFuY2VzIGFyZSBmaW5lIHRvIGJlIHVzZWRcbiAgICBpZiAoIWluc3RhbmNlTWFwLmhhcyhrZXkpICYmIGluc3RhbmNlTWFwLnNpemUgIT09IDApIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKGBCb290c3RyYXAgZG9lc24ndCBhbGxvdyBtb3JlIHRoYW4gb25lIGluc3RhbmNlIHBlciBlbGVtZW50LiBCb3VuZCBpbnN0YW5jZTogJHtBcnJheS5mcm9tKGluc3RhbmNlTWFwLmtleXMoKSlbMF19LmApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpbnN0YW5jZU1hcC5zZXQoa2V5LCBpbnN0YW5jZSlcbiAgfSxcblxuICBnZXQoZWxlbWVudCwga2V5KSB7XG4gICAgaWYgKGVsZW1lbnRNYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gZWxlbWVudE1hcC5nZXQoZWxlbWVudCkuZ2V0KGtleSkgfHwgbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sXG5cbiAgcmVtb3ZlKGVsZW1lbnQsIGtleSkge1xuICAgIGlmICghZWxlbWVudE1hcC5oYXMoZWxlbWVudCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTWFwID0gZWxlbWVudE1hcC5nZXQoZWxlbWVudClcblxuICAgIGluc3RhbmNlTWFwLmRlbGV0ZShrZXkpXG5cbiAgICAvLyBmcmVlIHVwIGVsZW1lbnQgcmVmZXJlbmNlcyBpZiB0aGVyZSBhcmUgbm8gaW5zdGFuY2VzIGxlZnQgZm9yIGFuIGVsZW1lbnRcbiAgICBpZiAoaW5zdGFuY2VNYXAuc2l6ZSA9PT0gMCkge1xuICAgICAgZWxlbWVudE1hcC5kZWxldGUoZWxlbWVudClcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogZG9tL21hbmlwdWxhdG9yLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuZnVuY3Rpb24gbm9ybWFsaXplRGF0YSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09ICd0cnVlJykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gTnVtYmVyKHZhbHVlKS50b1N0cmluZygpKSB7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSlcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09ICdudWxsJykge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVEYXRhS2V5KGtleSkge1xuICByZXR1cm4ga2V5LnJlcGxhY2UoL1tBLVpdL2csIGNociA9PiBgLSR7Y2hyLnRvTG93ZXJDYXNlKCl9YClcbn1cblxuY29uc3QgTWFuaXB1bGF0b3IgPSB7XG4gIHNldERhdGFBdHRyaWJ1dGUoZWxlbWVudCwga2V5LCB2YWx1ZSkge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGBkYXRhLWJzLSR7bm9ybWFsaXplRGF0YUtleShrZXkpfWAsIHZhbHVlKVxuICB9LFxuXG4gIHJlbW92ZURhdGFBdHRyaWJ1dGUoZWxlbWVudCwga2V5KSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYGRhdGEtYnMtJHtub3JtYWxpemVEYXRhS2V5KGtleSl9YClcbiAgfSxcblxuICBnZXREYXRhQXR0cmlidXRlcyhlbGVtZW50KSB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4ge31cbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge31cbiAgICBjb25zdCBic0tleXMgPSBPYmplY3Qua2V5cyhlbGVtZW50LmRhdGFzZXQpLmZpbHRlcihrZXkgPT4ga2V5LnN0YXJ0c1dpdGgoJ2JzJykgJiYgIWtleS5zdGFydHNXaXRoKCdic0NvbmZpZycpKVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgYnNLZXlzKSB7XG4gICAgICBsZXQgcHVyZUtleSA9IGtleS5yZXBsYWNlKC9eYnMvLCAnJylcbiAgICAgIHB1cmVLZXkgPSBwdXJlS2V5LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgcHVyZUtleS5zbGljZSgxLCBwdXJlS2V5Lmxlbmd0aClcbiAgICAgIGF0dHJpYnV0ZXNbcHVyZUtleV0gPSBub3JtYWxpemVEYXRhKGVsZW1lbnQuZGF0YXNldFtrZXldKVxuICAgIH1cblxuICAgIHJldHVybiBhdHRyaWJ1dGVzXG4gIH0sXG5cbiAgZ2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCBrZXkpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplRGF0YShlbGVtZW50LmdldEF0dHJpYnV0ZShgZGF0YS1icy0ke25vcm1hbGl6ZURhdGFLZXkoa2V5KX1gKSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNYW5pcHVsYXRvclxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB1dGlsL2NvbmZpZy5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7IGlzRWxlbWVudCwgdG9UeXBlIH0gZnJvbSAnLi9pbmRleCdcbmltcG9ydCBNYW5pcHVsYXRvciBmcm9tICcuLi9kb20vbWFuaXB1bGF0b3InXG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIENvbmZpZyB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiB7fVxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBoYXZlIHRvIGltcGxlbWVudCB0aGUgc3RhdGljIG1ldGhvZCBcIk5BTUVcIiwgZm9yIGVhY2ggY29tcG9uZW50IScpXG4gIH1cblxuICBfZ2V0Q29uZmlnKGNvbmZpZykge1xuICAgIGNvbmZpZyA9IHRoaXMuX21lcmdlQ29uZmlnT2JqKGNvbmZpZylcbiAgICBjb25maWcgPSB0aGlzLl9jb25maWdBZnRlck1lcmdlKGNvbmZpZylcbiAgICB0aGlzLl90eXBlQ2hlY2tDb25maWcoY29uZmlnKVxuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIF9tZXJnZUNvbmZpZ09iaihjb25maWcsIGVsZW1lbnQpIHtcbiAgICBjb25zdCBqc29uQ29uZmlnID0gaXNFbGVtZW50KGVsZW1lbnQpID8gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCAnY29uZmlnJykgOiB7fSAvLyB0cnkgdG8gcGFyc2VcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHQsXG4gICAgICAuLi4odHlwZW9mIGpzb25Db25maWcgPT09ICdvYmplY3QnID8ganNvbkNvbmZpZyA6IHt9KSxcbiAgICAgIC4uLihpc0VsZW1lbnQoZWxlbWVudCkgPyBNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlcyhlbGVtZW50KSA6IHt9KSxcbiAgICAgIC4uLih0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyA/IGNvbmZpZyA6IHt9KVxuICAgIH1cbiAgfVxuXG4gIF90eXBlQ2hlY2tDb25maWcoY29uZmlnLCBjb25maWdUeXBlcyA9IHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpIHtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIE9iamVjdC5rZXlzKGNvbmZpZ1R5cGVzKSkge1xuICAgICAgY29uc3QgZXhwZWN0ZWRUeXBlcyA9IGNvbmZpZ1R5cGVzW3Byb3BlcnR5XVxuICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdbcHJvcGVydHldXG4gICAgICBjb25zdCB2YWx1ZVR5cGUgPSBpc0VsZW1lbnQodmFsdWUpID8gJ2VsZW1lbnQnIDogdG9UeXBlKHZhbHVlKVxuXG4gICAgICBpZiAoIW5ldyBSZWdFeHAoZXhwZWN0ZWRUeXBlcykudGVzdCh2YWx1ZVR5cGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5OQU1FLnRvVXBwZXJDYXNlKCl9OiBPcHRpb24gXCIke3Byb3BlcnR5fVwiIHByb3ZpZGVkIHR5cGUgXCIke3ZhbHVlVHlwZX1cIiBidXQgZXhwZWN0ZWQgdHlwZSBcIiR7ZXhwZWN0ZWRUeXBlc31cIi5gXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29uZmlnXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGJhc2UtY29tcG9uZW50LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IERhdGEgZnJvbSAnLi9kb20vZGF0YSdcbmltcG9ydCB7IGV4ZWN1dGVBZnRlclRyYW5zaXRpb24sIGdldEVsZW1lbnQgfSBmcm9tICcuL3V0aWwvaW5kZXgnXG5pbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgQ29uZmlnIGZyb20gJy4vdXRpbC9jb25maWcnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgVkVSU0lPTiA9ICc1LjIuMydcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQmFzZUNvbXBvbmVudCBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKClcblxuICAgIGVsZW1lbnQgPSBnZXRFbGVtZW50KGVsZW1lbnQpXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudFxuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpXG5cbiAgICBEYXRhLnNldCh0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZLCB0aGlzKVxuICB9XG5cbiAgLy8gUHVibGljXG4gIGRpc3Bvc2UoKSB7XG4gICAgRGF0YS5yZW1vdmUodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSlcbiAgICBFdmVudEhhbmRsZXIub2ZmKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuRVZFTlRfS0VZKVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpIHtcbiAgICAgIHRoaXNbcHJvcGVydHlOYW1lXSA9IG51bGxcbiAgICB9XG4gIH1cblxuICBfcXVldWVDYWxsYmFjayhjYWxsYmFjaywgZWxlbWVudCwgaXNBbmltYXRlZCA9IHRydWUpIHtcbiAgICBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uKGNhbGxiYWNrLCBlbGVtZW50LCBpc0FuaW1hdGVkKVxuICB9XG5cbiAgX2dldENvbmZpZyhjb25maWcpIHtcbiAgICBjb25maWcgPSB0aGlzLl9tZXJnZUNvbmZpZ09iaihjb25maWcsIHRoaXMuX2VsZW1lbnQpXG4gICAgY29uZmlnID0gdGhpcy5fY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpXG4gICAgdGhpcy5fdHlwZUNoZWNrQ29uZmlnKGNvbmZpZylcbiAgICByZXR1cm4gY29uZmlnXG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGdldEluc3RhbmNlKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gRGF0YS5nZXQoZ2V0RWxlbWVudChlbGVtZW50KSwgdGhpcy5EQVRBX0tFWSlcbiAgfVxuXG4gIHN0YXRpYyBnZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQsIGNvbmZpZyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW5zdGFuY2UoZWxlbWVudCkgfHwgbmV3IHRoaXMoZWxlbWVudCwgdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgPyBjb25maWcgOiBudWxsKVxuICB9XG5cbiAgc3RhdGljIGdldCBWRVJTSU9OKCkge1xuICAgIHJldHVybiBWRVJTSU9OXG4gIH1cblxuICBzdGF0aWMgZ2V0IERBVEFfS0VZKCkge1xuICAgIHJldHVybiBgYnMuJHt0aGlzLk5BTUV9YFxuICB9XG5cbiAgc3RhdGljIGdldCBFVkVOVF9LRVkoKSB7XG4gICAgcmV0dXJuIGAuJHt0aGlzLkRBVEFfS0VZfWBcbiAgfVxuXG4gIHN0YXRpYyBldmVudE5hbWUobmFtZSkge1xuICAgIHJldHVybiBgJHtuYW1lfSR7dGhpcy5FVkVOVF9LRVl9YFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJhc2VDb21wb25lbnRcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogdXRpbC9jb21wb25lbnQtZnVuY3Rpb25zLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuLi9kb20vZXZlbnQtaGFuZGxlcidcbmltcG9ydCB7IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IsIGlzRGlzYWJsZWQgfSBmcm9tICcuL2luZGV4J1xuXG5jb25zdCBlbmFibGVEaXNtaXNzVHJpZ2dlciA9IChjb21wb25lbnQsIG1ldGhvZCA9ICdoaWRlJykgPT4ge1xuICBjb25zdCBjbGlja0V2ZW50ID0gYGNsaWNrLmRpc21pc3Mke2NvbXBvbmVudC5FVkVOVF9LRVl9YFxuICBjb25zdCBuYW1lID0gY29tcG9uZW50Lk5BTUVcblxuICBFdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIGNsaWNrRXZlbnQsIGBbZGF0YS1icy1kaXNtaXNzPVwiJHtuYW1lfVwiXWAsIGZ1bmN0aW9uIChldmVudCkge1xuICAgIGlmIChbJ0EnLCAnQVJFQSddLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9XG5cbiAgICBpZiAoaXNEaXNhYmxlZCh0aGlzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKSB8fCB0aGlzLmNsb3Nlc3QoYC4ke25hbWV9YClcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudC5nZXRPckNyZWF0ZUluc3RhbmNlKHRhcmdldClcblxuICAgIC8vIE1ldGhvZCBhcmd1bWVudCBpcyBsZWZ0LCBmb3IgQWxlcnQgYW5kIG9ubHksIGFzIGl0IGRvZXNuJ3QgaW1wbGVtZW50IHRoZSAnaGlkZScgbWV0aG9kXG4gICAgaW5zdGFuY2VbbWV0aG9kXSgpXG4gIH0pXG59XG5cbmV4cG9ydCB7XG4gIGVuYWJsZURpc21pc3NUcmlnZ2VyXG59XG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGFsZXJ0LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IHsgZGVmaW5lSlF1ZXJ5UGx1Z2luIH0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcbmltcG9ydCB7IGVuYWJsZURpc21pc3NUcmlnZ2VyIH0gZnJvbSAnLi91dGlsL2NvbXBvbmVudC1mdW5jdGlvbnMnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICdhbGVydCdcbmNvbnN0IERBVEFfS0VZID0gJ2JzLmFsZXJ0J1xuY29uc3QgRVZFTlRfS0VZID0gYC4ke0RBVEFfS0VZfWBcblxuY29uc3QgRVZFTlRfQ0xPU0UgPSBgY2xvc2Uke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9DTE9TRUQgPSBgY2xvc2VkJHtFVkVOVF9LRVl9YFxuY29uc3QgQ0xBU1NfTkFNRV9GQURFID0gJ2ZhZGUnXG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdydcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQWxlcnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBjbG9zZSgpIHtcbiAgICBjb25zdCBjbG9zZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfQ0xPU0UpXG5cbiAgICBpZiAoY2xvc2VFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XKVxuXG4gICAgY29uc3QgaXNBbmltYXRlZCA9IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRkFERSlcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHRoaXMuX2Rlc3Ryb3lFbGVtZW50KCksIHRoaXMuX2VsZW1lbnQsIGlzQW5pbWF0ZWQpXG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9kZXN0cm95RWxlbWVudCgpIHtcbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZSgpXG4gICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfQ0xPU0VEKVxuICAgIHRoaXMuZGlzcG9zZSgpXG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBBbGVydC5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpXG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYClcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKHRoaXMpXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuZW5hYmxlRGlzbWlzc1RyaWdnZXIoQWxlcnQsICdjbG9zZScpXG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKEFsZXJ0KVxuXG5leHBvcnQgZGVmYXVsdCBBbGVydFxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBidXR0b24uanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgeyBkZWZpbmVKUXVlcnlQbHVnaW4gfSBmcm9tICcuL3V0aWwvaW5kZXgnXG5pbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tICcuL2Jhc2UtY29tcG9uZW50J1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUgPSAnYnV0dG9uJ1xuY29uc3QgREFUQV9LRVkgPSAnYnMuYnV0dG9uJ1xuY29uc3QgRVZFTlRfS0VZID0gYC4ke0RBVEFfS0VZfWBcbmNvbnN0IERBVEFfQVBJX0tFWSA9ICcuZGF0YS1hcGknXG5cbmNvbnN0IENMQVNTX05BTUVfQUNUSVZFID0gJ2FjdGl2ZSdcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFID0gJ1tkYXRhLWJzLXRvZ2dsZT1cImJ1dHRvblwiXSdcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJID0gYGNsaWNrJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBCdXR0b24gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICB0b2dnbGUoKSB7XG4gICAgLy8gVG9nZ2xlIGNsYXNzIGFuZCBzeW5jIHRoZSBgYXJpYS1wcmVzc2VkYCBhdHRyaWJ1dGUgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBgLnRvZ2dsZSgpYCBtZXRob2RcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJywgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKENMQVNTX05BTUVfQUNUSVZFKSlcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IEJ1dHRvbi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpXG5cbiAgICAgIGlmIChjb25maWcgPT09ICd0b2dnbGUnKSB7XG4gICAgICAgIGRhdGFbY29uZmlnXSgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUsIGV2ZW50ID0+IHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gIGNvbnN0IGJ1dHRvbiA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KFNFTEVDVE9SX0RBVEFfVE9HR0xFKVxuICBjb25zdCBkYXRhID0gQnV0dG9uLmdldE9yQ3JlYXRlSW5zdGFuY2UoYnV0dG9uKVxuXG4gIGRhdGEudG9nZ2xlKClcbn0pXG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKEJ1dHRvbilcblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGRvbS9zZWxlY3Rvci1lbmdpbmUuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgeyBpc0Rpc2FibGVkLCBpc1Zpc2libGUgfSBmcm9tICcuLi91dGlsL2luZGV4J1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IFNlbGVjdG9yRW5naW5lID0ge1xuICBmaW5kKHNlbGVjdG9yLCBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCguLi5FbGVtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsLmNhbGwoZWxlbWVudCwgc2VsZWN0b3IpKVxuICB9LFxuXG4gIGZpbmRPbmUoc2VsZWN0b3IsIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICByZXR1cm4gRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3Rvci5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKVxuICB9LFxuXG4gIGNoaWxkcmVuKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCguLi5lbGVtZW50LmNoaWxkcmVuKS5maWx0ZXIoY2hpbGQgPT4gY2hpbGQubWF0Y2hlcyhzZWxlY3RvcikpXG4gIH0sXG5cbiAgcGFyZW50cyhlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIGNvbnN0IHBhcmVudHMgPSBbXVxuICAgIGxldCBhbmNlc3RvciA9IGVsZW1lbnQucGFyZW50Tm9kZS5jbG9zZXN0KHNlbGVjdG9yKVxuXG4gICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICBwYXJlbnRzLnB1c2goYW5jZXN0b3IpXG4gICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudE5vZGUuY2xvc2VzdChzZWxlY3RvcilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50c1xuICB9LFxuXG4gIHByZXYoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICBsZXQgcHJldmlvdXMgPSBlbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmdcblxuICAgIHdoaWxlIChwcmV2aW91cykge1xuICAgICAgaWYgKHByZXZpb3VzLm1hdGNoZXMoc2VsZWN0b3IpKSB7XG4gICAgICAgIHJldHVybiBbcHJldmlvdXNdXG4gICAgICB9XG5cbiAgICAgIHByZXZpb3VzID0gcHJldmlvdXMucHJldmlvdXNFbGVtZW50U2libGluZ1xuICAgIH1cblxuICAgIHJldHVybiBbXVxuICB9LFxuICAvLyBUT0RPOiB0aGlzIGlzIG5vdyB1bnVzZWQ7IHJlbW92ZSBsYXRlciBhbG9uZyB3aXRoIHByZXYoKVxuICBuZXh0KGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgbGV0IG5leHQgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZ1xuXG4gICAgd2hpbGUgKG5leHQpIHtcbiAgICAgIGlmIChuZXh0Lm1hdGNoZXMoc2VsZWN0b3IpKSB7XG4gICAgICAgIHJldHVybiBbbmV4dF1cbiAgICAgIH1cblxuICAgICAgbmV4dCA9IG5leHQubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIFtdXG4gIH0sXG5cbiAgZm9jdXNhYmxlQ2hpbGRyZW4oZWxlbWVudCkge1xuICAgIGNvbnN0IGZvY3VzYWJsZXMgPSBbXG4gICAgICAnYScsXG4gICAgICAnYnV0dG9uJyxcbiAgICAgICdpbnB1dCcsXG4gICAgICAndGV4dGFyZWEnLFxuICAgICAgJ3NlbGVjdCcsXG4gICAgICAnZGV0YWlscycsXG4gICAgICAnW3RhYmluZGV4XScsXG4gICAgICAnW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nXG4gICAgXS5tYXAoc2VsZWN0b3IgPT4gYCR7c2VsZWN0b3J9Om5vdChbdGFiaW5kZXhePVwiLVwiXSlgKS5qb2luKCcsJylcblxuICAgIHJldHVybiB0aGlzLmZpbmQoZm9jdXNhYmxlcywgZWxlbWVudCkuZmlsdGVyKGVsID0+ICFpc0Rpc2FibGVkKGVsKSAmJiBpc1Zpc2libGUoZWwpKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlbGVjdG9yRW5naW5lXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvc3dpcGUuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgQ29uZmlnIGZyb20gJy4vY29uZmlnJ1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuLi9kb20vZXZlbnQtaGFuZGxlcidcbmltcG9ydCB7IGV4ZWN1dGUgfSBmcm9tICcuL2luZGV4J1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUgPSAnc3dpcGUnXG5jb25zdCBFVkVOVF9LRVkgPSAnLmJzLnN3aXBlJ1xuY29uc3QgRVZFTlRfVE9VQ0hTVEFSVCA9IGB0b3VjaHN0YXJ0JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfVE9VQ0hNT1ZFID0gYHRvdWNobW92ZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX1RPVUNIRU5EID0gYHRvdWNoZW5kJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfUE9JTlRFUkRPV04gPSBgcG9pbnRlcmRvd24ke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9QT0lOVEVSVVAgPSBgcG9pbnRlcnVwJHtFVkVOVF9LRVl9YFxuY29uc3QgUE9JTlRFUl9UWVBFX1RPVUNIID0gJ3RvdWNoJ1xuY29uc3QgUE9JTlRFUl9UWVBFX1BFTiA9ICdwZW4nXG5jb25zdCBDTEFTU19OQU1FX1BPSU5URVJfRVZFTlQgPSAncG9pbnRlci1ldmVudCdcbmNvbnN0IFNXSVBFX1RIUkVTSE9MRCA9IDQwXG5cbmNvbnN0IERlZmF1bHQgPSB7XG4gIGVuZENhbGxiYWNrOiBudWxsLFxuICBsZWZ0Q2FsbGJhY2s6IG51bGwsXG4gIHJpZ2h0Q2FsbGJhY2s6IG51bGxcbn1cblxuY29uc3QgRGVmYXVsdFR5cGUgPSB7XG4gIGVuZENhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJyxcbiAgbGVmdENhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJyxcbiAgcmlnaHRDYWxsYmFjazogJyhmdW5jdGlvbnxudWxsKSdcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgU3dpcGUgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnRcblxuICAgIGlmICghZWxlbWVudCB8fCAhU3dpcGUuaXNTdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKGNvbmZpZylcbiAgICB0aGlzLl9kZWx0YVggPSAwXG4gICAgdGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHMgPSBCb29sZWFuKHdpbmRvdy5Qb2ludGVyRXZlbnQpXG4gICAgdGhpcy5faW5pdEV2ZW50cygpXG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gUHVibGljXG4gIGRpc3Bvc2UoKSB7XG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVkpXG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9zdGFydChldmVudCkge1xuICAgIGlmICghdGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHMpIHtcbiAgICAgIHRoaXMuX2RlbHRhWCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WFxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXZlbnRJc1BvaW50ZXJQZW5Ub3VjaChldmVudCkpIHtcbiAgICAgIHRoaXMuX2RlbHRhWCA9IGV2ZW50LmNsaWVudFhcbiAgICB9XG4gIH1cblxuICBfZW5kKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX2V2ZW50SXNQb2ludGVyUGVuVG91Y2goZXZlbnQpKSB7XG4gICAgICB0aGlzLl9kZWx0YVggPSBldmVudC5jbGllbnRYIC0gdGhpcy5fZGVsdGFYXG4gICAgfVxuXG4gICAgdGhpcy5faGFuZGxlU3dpcGUoKVxuICAgIGV4ZWN1dGUodGhpcy5fY29uZmlnLmVuZENhbGxiYWNrKVxuICB9XG5cbiAgX21vdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9kZWx0YVggPSBldmVudC50b3VjaGVzICYmIGV2ZW50LnRvdWNoZXMubGVuZ3RoID4gMSA/XG4gICAgICAwIDpcbiAgICAgIGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCAtIHRoaXMuX2RlbHRhWFxuICB9XG5cbiAgX2hhbmRsZVN3aXBlKCkge1xuICAgIGNvbnN0IGFic0RlbHRhWCA9IE1hdGguYWJzKHRoaXMuX2RlbHRhWClcblxuICAgIGlmIChhYnNEZWx0YVggPD0gU1dJUEVfVEhSRVNIT0xEKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBhYnNEZWx0YVggLyB0aGlzLl9kZWx0YVhcblxuICAgIHRoaXMuX2RlbHRhWCA9IDBcblxuICAgIGlmICghZGlyZWN0aW9uKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBleGVjdXRlKGRpcmVjdGlvbiA+IDAgPyB0aGlzLl9jb25maWcucmlnaHRDYWxsYmFjayA6IHRoaXMuX2NvbmZpZy5sZWZ0Q2FsbGJhY2spXG4gIH1cblxuICBfaW5pdEV2ZW50cygpIHtcbiAgICBpZiAodGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHMpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9QT0lOVEVSRE9XTiwgZXZlbnQgPT4gdGhpcy5fc3RhcnQoZXZlbnQpKVxuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1BPSU5URVJVUCwgZXZlbnQgPT4gdGhpcy5fZW5kKGV2ZW50KSlcblxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfUE9JTlRFUl9FVkVOVClcbiAgICB9IGVsc2Uge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1RPVUNIU1RBUlQsIGV2ZW50ID0+IHRoaXMuX3N0YXJ0KGV2ZW50KSlcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSE1PVkUsIGV2ZW50ID0+IHRoaXMuX21vdmUoZXZlbnQpKVxuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1RPVUNIRU5ELCBldmVudCA9PiB0aGlzLl9lbmQoZXZlbnQpKVxuICAgIH1cbiAgfVxuXG4gIF9ldmVudElzUG9pbnRlclBlblRvdWNoKGV2ZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzICYmIChldmVudC5wb2ludGVyVHlwZSA9PT0gUE9JTlRFUl9UWVBFX1BFTiB8fCBldmVudC5wb2ludGVyVHlwZSA9PT0gUE9JTlRFUl9UWVBFX1RPVUNIKVxuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBpc1N1cHBvcnRlZCgpIHtcbiAgICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDBcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTd2lwZVxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBjYXJvdXNlbC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7XG4gIGRlZmluZUpRdWVyeVBsdWdpbixcbiAgZ2V0RWxlbWVudEZyb21TZWxlY3RvcixcbiAgZ2V0TmV4dEFjdGl2ZUVsZW1lbnQsXG4gIGlzUlRMLFxuICBpc1Zpc2libGUsXG4gIHJlZmxvdyxcbiAgdHJpZ2dlclRyYW5zaXRpb25FbmRcbn0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IE1hbmlwdWxhdG9yIGZyb20gJy4vZG9tL21hbmlwdWxhdG9yJ1xuaW1wb3J0IFNlbGVjdG9yRW5naW5lIGZyb20gJy4vZG9tL3NlbGVjdG9yLWVuZ2luZSdcbmltcG9ydCBTd2lwZSBmcm9tICcuL3V0aWwvc3dpcGUnXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tICcuL2Jhc2UtY29tcG9uZW50J1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUgPSAnY2Fyb3VzZWwnXG5jb25zdCBEQVRBX0tFWSA9ICdicy5jYXJvdXNlbCdcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5jb25zdCBEQVRBX0FQSV9LRVkgPSAnLmRhdGEtYXBpJ1xuXG5jb25zdCBBUlJPV19MRUZUX0tFWSA9ICdBcnJvd0xlZnQnXG5jb25zdCBBUlJPV19SSUdIVF9LRVkgPSAnQXJyb3dSaWdodCdcbmNvbnN0IFRPVUNIRVZFTlRfQ09NUEFUX1dBSVQgPSA1MDAgLy8gVGltZSBmb3IgbW91c2UgY29tcGF0IGV2ZW50cyB0byBmaXJlIGFmdGVyIHRvdWNoXG5cbmNvbnN0IE9SREVSX05FWFQgPSAnbmV4dCdcbmNvbnN0IE9SREVSX1BSRVYgPSAncHJldidcbmNvbnN0IERJUkVDVElPTl9MRUZUID0gJ2xlZnQnXG5jb25zdCBESVJFQ1RJT05fUklHSFQgPSAncmlnaHQnXG5cbmNvbnN0IEVWRU5UX1NMSURFID0gYHNsaWRlJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0xJRCA9IGBzbGlkJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfS0VZRE9XTiA9IGBrZXlkb3duJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfTU9VU0VFTlRFUiA9IGBtb3VzZWVudGVyJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfTU9VU0VMRUFWRSA9IGBtb3VzZWxlYXZlJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfRFJBR19TVEFSVCA9IGBkcmFnc3RhcnQke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9MT0FEX0RBVEFfQVBJID0gYGxvYWQke0VWRU5UX0tFWX0ke0RBVEFfQVBJX0tFWX1gXG5jb25zdCBFVkVOVF9DTElDS19EQVRBX0FQSSA9IGBjbGljayR7RVZFTlRfS0VZfSR7REFUQV9BUElfS0VZfWBcblxuY29uc3QgQ0xBU1NfTkFNRV9DQVJPVVNFTCA9ICdjYXJvdXNlbCdcbmNvbnN0IENMQVNTX05BTUVfQUNUSVZFID0gJ2FjdGl2ZSdcbmNvbnN0IENMQVNTX05BTUVfU0xJREUgPSAnc2xpZGUnXG5jb25zdCBDTEFTU19OQU1FX0VORCA9ICdjYXJvdXNlbC1pdGVtLWVuZCdcbmNvbnN0IENMQVNTX05BTUVfU1RBUlQgPSAnY2Fyb3VzZWwtaXRlbS1zdGFydCdcbmNvbnN0IENMQVNTX05BTUVfTkVYVCA9ICdjYXJvdXNlbC1pdGVtLW5leHQnXG5jb25zdCBDTEFTU19OQU1FX1BSRVYgPSAnY2Fyb3VzZWwtaXRlbS1wcmV2J1xuXG5jb25zdCBTRUxFQ1RPUl9BQ1RJVkUgPSAnLmFjdGl2ZSdcbmNvbnN0IFNFTEVDVE9SX0lURU0gPSAnLmNhcm91c2VsLWl0ZW0nXG5jb25zdCBTRUxFQ1RPUl9BQ1RJVkVfSVRFTSA9IFNFTEVDVE9SX0FDVElWRSArIFNFTEVDVE9SX0lURU1cbmNvbnN0IFNFTEVDVE9SX0lURU1fSU1HID0gJy5jYXJvdXNlbC1pdGVtIGltZydcbmNvbnN0IFNFTEVDVE9SX0lORElDQVRPUlMgPSAnLmNhcm91c2VsLWluZGljYXRvcnMnXG5jb25zdCBTRUxFQ1RPUl9EQVRBX1NMSURFID0gJ1tkYXRhLWJzLXNsaWRlXSwgW2RhdGEtYnMtc2xpZGUtdG9dJ1xuY29uc3QgU0VMRUNUT1JfREFUQV9SSURFID0gJ1tkYXRhLWJzLXJpZGU9XCJjYXJvdXNlbFwiXSdcblxuY29uc3QgS0VZX1RPX0RJUkVDVElPTiA9IHtcbiAgW0FSUk9XX0xFRlRfS0VZXTogRElSRUNUSU9OX1JJR0hULFxuICBbQVJST1dfUklHSFRfS0VZXTogRElSRUNUSU9OX0xFRlRcbn1cblxuY29uc3QgRGVmYXVsdCA9IHtcbiAgaW50ZXJ2YWw6IDUwMDAsXG4gIGtleWJvYXJkOiB0cnVlLFxuICBwYXVzZTogJ2hvdmVyJyxcbiAgcmlkZTogZmFsc2UsXG4gIHRvdWNoOiB0cnVlLFxuICB3cmFwOiB0cnVlXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBpbnRlcnZhbDogJyhudW1iZXJ8Ym9vbGVhbiknLCAvLyBUT0RPOnY2IHJlbW92ZSBib29sZWFuIHN1cHBvcnRcbiAga2V5Ym9hcmQ6ICdib29sZWFuJyxcbiAgcGF1c2U6ICcoc3RyaW5nfGJvb2xlYW4pJyxcbiAgcmlkZTogJyhib29sZWFufHN0cmluZyknLFxuICB0b3VjaDogJ2Jvb2xlYW4nLFxuICB3cmFwOiAnYm9vbGVhbidcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQ2Fyb3VzZWwgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKVxuXG4gICAgdGhpcy5faW50ZXJ2YWwgPSBudWxsXG4gICAgdGhpcy5fYWN0aXZlRWxlbWVudCA9IG51bGxcbiAgICB0aGlzLl9pc1NsaWRpbmcgPSBmYWxzZVxuICAgIHRoaXMudG91Y2hUaW1lb3V0ID0gbnVsbFxuICAgIHRoaXMuX3N3aXBlSGVscGVyID0gbnVsbFxuXG4gICAgdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0lORElDQVRPUlMsIHRoaXMuX2VsZW1lbnQpXG4gICAgdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKVxuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yaWRlID09PSBDTEFTU19OQU1FX0NBUk9VU0VMKSB7XG4gICAgICB0aGlzLmN5Y2xlKClcbiAgICB9XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gUHVibGljXG4gIG5leHQoKSB7XG4gICAgdGhpcy5fc2xpZGUoT1JERVJfTkVYVClcbiAgfVxuXG4gIG5leHRXaGVuVmlzaWJsZSgpIHtcbiAgICAvLyBGSVhNRSBUT0RPIHVzZSBgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlYFxuICAgIC8vIERvbid0IGNhbGwgbmV4dCB3aGVuIHRoZSBwYWdlIGlzbid0IHZpc2libGVcbiAgICAvLyBvciB0aGUgY2Fyb3VzZWwgb3IgaXRzIHBhcmVudCBpc24ndCB2aXNpYmxlXG4gICAgaWYgKCFkb2N1bWVudC5oaWRkZW4gJiYgaXNWaXNpYmxlKHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICB0aGlzLm5leHQoKVxuICAgIH1cbiAgfVxuXG4gIHByZXYoKSB7XG4gICAgdGhpcy5fc2xpZGUoT1JERVJfUFJFVilcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHtcbiAgICAgIHRyaWdnZXJUcmFuc2l0aW9uRW5kKHRoaXMuX2VsZW1lbnQpXG4gICAgfVxuXG4gICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpXG4gIH1cblxuICBjeWNsZSgpIHtcbiAgICB0aGlzLl9jbGVhckludGVydmFsKClcbiAgICB0aGlzLl91cGRhdGVJbnRlcnZhbCgpXG5cbiAgICB0aGlzLl9pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHRoaXMubmV4dFdoZW5WaXNpYmxlKCksIHRoaXMuX2NvbmZpZy5pbnRlcnZhbClcbiAgfVxuXG4gIF9tYXliZUVuYWJsZUN5Y2xlKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnJpZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbmUodGhpcy5fZWxlbWVudCwgRVZFTlRfU0xJRCwgKCkgPT4gdGhpcy5jeWNsZSgpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5jeWNsZSgpXG4gIH1cblxuICB0byhpbmRleCkge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5fZ2V0SXRlbXMoKVxuICAgIGlmIChpbmRleCA+IGl0ZW1zLmxlbmd0aCAtIDEgfHwgaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNTbGlkaW5nKSB7XG4gICAgICBFdmVudEhhbmRsZXIub25lKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NMSUQsICgpID0+IHRoaXMudG8oaW5kZXgpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLl9nZXRJdGVtSW5kZXgodGhpcy5fZ2V0QWN0aXZlKCkpXG4gICAgaWYgKGFjdGl2ZUluZGV4ID09PSBpbmRleCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXIgPSBpbmRleCA+IGFjdGl2ZUluZGV4ID8gT1JERVJfTkVYVCA6IE9SREVSX1BSRVZcblxuICAgIHRoaXMuX3NsaWRlKG9yZGVyLCBpdGVtc1tpbmRleF0pXG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIGlmICh0aGlzLl9zd2lwZUhlbHBlcikge1xuICAgICAgdGhpcy5fc3dpcGVIZWxwZXIuZGlzcG9zZSgpXG4gICAgfVxuXG4gICAgc3VwZXIuZGlzcG9zZSgpXG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIGNvbmZpZy5kZWZhdWx0SW50ZXJ2YWwgPSBjb25maWcuaW50ZXJ2YWxcbiAgICByZXR1cm4gY29uZmlnXG4gIH1cblxuICBfYWRkRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5rZXlib2FyZCkge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0tFWURPV04sIGV2ZW50ID0+IHRoaXMuX2tleWRvd24oZXZlbnQpKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25maWcucGF1c2UgPT09ICdob3ZlcicpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9NT1VTRUVOVEVSLCAoKSA9PiB0aGlzLnBhdXNlKCkpXG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VMRUFWRSwgKCkgPT4gdGhpcy5fbWF5YmVFbmFibGVDeWNsZSgpKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25maWcudG91Y2ggJiYgU3dpcGUuaXNTdXBwb3J0ZWQoKSkge1xuICAgICAgdGhpcy5fYWRkVG91Y2hFdmVudExpc3RlbmVycygpXG4gICAgfVxuICB9XG5cbiAgX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZm9yIChjb25zdCBpbWcgb2YgU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9JVEVNX0lNRywgdGhpcy5fZWxlbWVudCkpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbihpbWcsIEVWRU5UX0RSQUdfU1RBUlQsIGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpXG4gICAgfVxuXG4gICAgY29uc3QgZW5kQ2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY29uZmlnLnBhdXNlICE9PSAnaG92ZXInKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBJZiBpdCdzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2UsIG1vdXNlZW50ZXIvbGVhdmUgYXJlIGZpcmVkIGFzXG4gICAgICAvLyBwYXJ0IG9mIHRoZSBtb3VzZSBjb21wYXRpYmlsaXR5IGV2ZW50cyBvbiBmaXJzdCB0YXAgLSB0aGUgY2Fyb3VzZWxcbiAgICAgIC8vIHdvdWxkIHN0b3AgY3ljbGluZyB1bnRpbCB1c2VyIHRhcHBlZCBvdXQgb2YgaXQ7XG4gICAgICAvLyBoZXJlLCB3ZSBsaXN0ZW4gZm9yIHRvdWNoZW5kLCBleHBsaWNpdGx5IHBhdXNlIHRoZSBjYXJvdXNlbFxuICAgICAgLy8gKGFzIGlmIGl0J3MgdGhlIHNlY29uZCB0aW1lIHdlIHRhcCBvbiBpdCwgbW91c2VlbnRlciBjb21wYXQgZXZlbnRcbiAgICAgIC8vIGlzIE5PVCBmaXJlZCkgYW5kIGFmdGVyIGEgdGltZW91dCAodG8gYWxsb3cgZm9yIG1vdXNlIGNvbXBhdGliaWxpdHlcbiAgICAgIC8vIGV2ZW50cyB0byBmaXJlKSB3ZSBleHBsaWNpdGx5IHJlc3RhcnQgY3ljbGluZ1xuXG4gICAgICB0aGlzLnBhdXNlKClcbiAgICAgIGlmICh0aGlzLnRvdWNoVGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpXG4gICAgICB9XG5cbiAgICAgIHRoaXMudG91Y2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLl9tYXliZUVuYWJsZUN5Y2xlKCksIFRPVUNIRVZFTlRfQ09NUEFUX1dBSVQgKyB0aGlzLl9jb25maWcuaW50ZXJ2YWwpXG4gICAgfVxuXG4gICAgY29uc3Qgc3dpcGVDb25maWcgPSB7XG4gICAgICBsZWZ0Q2FsbGJhY2s6ICgpID0+IHRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoRElSRUNUSU9OX0xFRlQpKSxcbiAgICAgIHJpZ2h0Q2FsbGJhY2s6ICgpID0+IHRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoRElSRUNUSU9OX1JJR0hUKSksXG4gICAgICBlbmRDYWxsYmFjazogZW5kQ2FsbEJhY2tcbiAgICB9XG5cbiAgICB0aGlzLl9zd2lwZUhlbHBlciA9IG5ldyBTd2lwZSh0aGlzLl9lbGVtZW50LCBzd2lwZUNvbmZpZylcbiAgfVxuXG4gIF9rZXlkb3duKGV2ZW50KSB7XG4gICAgaWYgKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZXZlbnQudGFyZ2V0LnRhZ05hbWUpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBLRVlfVE9fRElSRUNUSU9OW2V2ZW50LmtleV1cbiAgICBpZiAoZGlyZWN0aW9uKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB0aGlzLl9zbGlkZSh0aGlzLl9kaXJlY3Rpb25Ub09yZGVyKGRpcmVjdGlvbikpXG4gICAgfVxuICB9XG5cbiAgX2dldEl0ZW1JbmRleChlbGVtZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEl0ZW1zKCkuaW5kZXhPZihlbGVtZW50KVxuICB9XG5cbiAgX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQoaW5kZXgpIHtcbiAgICBpZiAoIXRoaXMuX2luZGljYXRvcnNFbGVtZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVJbmRpY2F0b3IgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0FDVElWRSwgdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpXG5cbiAgICBhY3RpdmVJbmRpY2F0b3IuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSlcbiAgICBhY3RpdmVJbmRpY2F0b3IucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnKVxuXG4gICAgY29uc3QgbmV3QWN0aXZlSW5kaWNhdG9yID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShgW2RhdGEtYnMtc2xpZGUtdG89XCIke2luZGV4fVwiXWAsIHRoaXMuX2luZGljYXRvcnNFbGVtZW50KVxuXG4gICAgaWYgKG5ld0FjdGl2ZUluZGljYXRvcikge1xuICAgICAgbmV3QWN0aXZlSW5kaWNhdG9yLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUpXG4gICAgICBuZXdBY3RpdmVJbmRpY2F0b3Iuc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLCAndHJ1ZScpXG4gICAgfVxuICB9XG5cbiAgX3VwZGF0ZUludGVydmFsKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9hY3RpdmVFbGVtZW50IHx8IHRoaXMuX2dldEFjdGl2ZSgpXG5cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRJbnRlcnZhbCA9IE51bWJlci5wYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy1pbnRlcnZhbCcpLCAxMClcblxuICAgIHRoaXMuX2NvbmZpZy5pbnRlcnZhbCA9IGVsZW1lbnRJbnRlcnZhbCB8fCB0aGlzLl9jb25maWcuZGVmYXVsdEludGVydmFsXG4gIH1cblxuICBfc2xpZGUob3JkZXIsIGVsZW1lbnQgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuX2lzU2xpZGluZykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHRoaXMuX2dldEFjdGl2ZSgpXG4gICAgY29uc3QgaXNOZXh0ID0gb3JkZXIgPT09IE9SREVSX05FWFRcbiAgICBjb25zdCBuZXh0RWxlbWVudCA9IGVsZW1lbnQgfHwgZ2V0TmV4dEFjdGl2ZUVsZW1lbnQodGhpcy5fZ2V0SXRlbXMoKSwgYWN0aXZlRWxlbWVudCwgaXNOZXh0LCB0aGlzLl9jb25maWcud3JhcClcblxuICAgIGlmIChuZXh0RWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgbmV4dEVsZW1lbnRJbmRleCA9IHRoaXMuX2dldEl0ZW1JbmRleChuZXh0RWxlbWVudClcblxuICAgIGNvbnN0IHRyaWdnZXJFdmVudCA9IGV2ZW50TmFtZSA9PiB7XG4gICAgICByZXR1cm4gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgZXZlbnROYW1lLCB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IG5leHRFbGVtZW50LFxuICAgICAgICBkaXJlY3Rpb246IHRoaXMuX29yZGVyVG9EaXJlY3Rpb24ob3JkZXIpLFxuICAgICAgICBmcm9tOiB0aGlzLl9nZXRJdGVtSW5kZXgoYWN0aXZlRWxlbWVudCksXG4gICAgICAgIHRvOiBuZXh0RWxlbWVudEluZGV4XG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHNsaWRlRXZlbnQgPSB0cmlnZ2VyRXZlbnQoRVZFTlRfU0xJREUpXG5cbiAgICBpZiAoc2xpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWFjdGl2ZUVsZW1lbnQgfHwgIW5leHRFbGVtZW50KSB7XG4gICAgICAvLyBTb21lIHdlaXJkbmVzcyBpcyBoYXBwZW5pbmcsIHNvIHdlIGJhaWxcbiAgICAgIC8vIHRvZG86IGNoYW5nZSB0ZXN0cyB0aGF0IHVzZSBlbXB0eSBkaXZzIHRvIGF2b2lkIHRoaXMgY2hlY2tcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGlzQ3ljbGluZyA9IEJvb2xlYW4odGhpcy5faW50ZXJ2YWwpXG4gICAgdGhpcy5wYXVzZSgpXG5cbiAgICB0aGlzLl9pc1NsaWRpbmcgPSB0cnVlXG5cbiAgICB0aGlzLl9zZXRBY3RpdmVJbmRpY2F0b3JFbGVtZW50KG5leHRFbGVtZW50SW5kZXgpXG4gICAgdGhpcy5fYWN0aXZlRWxlbWVudCA9IG5leHRFbGVtZW50XG5cbiAgICBjb25zdCBkaXJlY3Rpb25hbENsYXNzTmFtZSA9IGlzTmV4dCA/IENMQVNTX05BTUVfU1RBUlQgOiBDTEFTU19OQU1FX0VORFxuICAgIGNvbnN0IG9yZGVyQ2xhc3NOYW1lID0gaXNOZXh0ID8gQ0xBU1NfTkFNRV9ORVhUIDogQ0xBU1NfTkFNRV9QUkVWXG5cbiAgICBuZXh0RWxlbWVudC5jbGFzc0xpc3QuYWRkKG9yZGVyQ2xhc3NOYW1lKVxuXG4gICAgcmVmbG93KG5leHRFbGVtZW50KVxuXG4gICAgYWN0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGRpcmVjdGlvbmFsQ2xhc3NOYW1lKVxuICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5hZGQoZGlyZWN0aW9uYWxDbGFzc05hbWUpXG5cbiAgICBjb25zdCBjb21wbGV0ZUNhbGxCYWNrID0gKCkgPT4ge1xuICAgICAgbmV4dEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShkaXJlY3Rpb25hbENsYXNzTmFtZSwgb3JkZXJDbGFzc05hbWUpXG4gICAgICBuZXh0RWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFKVxuXG4gICAgICBhY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUsIG9yZGVyQ2xhc3NOYW1lLCBkaXJlY3Rpb25hbENsYXNzTmFtZSlcblxuICAgICAgdGhpcy5faXNTbGlkaW5nID0gZmFsc2VcblxuICAgICAgdHJpZ2dlckV2ZW50KEVWRU5UX1NMSUQpXG4gICAgfVxuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZUNhbGxCYWNrLCBhY3RpdmVFbGVtZW50LCB0aGlzLl9pc0FuaW1hdGVkKCkpXG5cbiAgICBpZiAoaXNDeWNsaW5nKSB7XG4gICAgICB0aGlzLmN5Y2xlKClcbiAgICB9XG4gIH1cblxuICBfaXNBbmltYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TTElERSlcbiAgfVxuXG4gIF9nZXRBY3RpdmUoKSB7XG4gICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfQUNUSVZFX0lURU0sIHRoaXMuX2VsZW1lbnQpXG4gIH1cblxuICBfZ2V0SXRlbXMoKSB7XG4gICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfSVRFTSwgdGhpcy5fZWxlbWVudClcbiAgfVxuXG4gIF9jbGVhckludGVydmFsKCkge1xuICAgIGlmICh0aGlzLl9pbnRlcnZhbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbClcbiAgICAgIHRoaXMuX2ludGVydmFsID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIF9kaXJlY3Rpb25Ub09yZGVyKGRpcmVjdGlvbikge1xuICAgIGlmIChpc1JUTCgpKSB7XG4gICAgICByZXR1cm4gZGlyZWN0aW9uID09PSBESVJFQ1RJT05fTEVGVCA/IE9SREVSX1BSRVYgOiBPUkRFUl9ORVhUXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gRElSRUNUSU9OX0xFRlQgPyBPUkRFUl9ORVhUIDogT1JERVJfUFJFVlxuICB9XG5cbiAgX29yZGVyVG9EaXJlY3Rpb24ob3JkZXIpIHtcbiAgICBpZiAoaXNSVEwoKSkge1xuICAgICAgcmV0dXJuIG9yZGVyID09PSBPUkRFUl9QUkVWID8gRElSRUNUSU9OX0xFRlQgOiBESVJFQ1RJT05fUklHSFRcbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXIgPT09IE9SREVSX1BSRVYgPyBESVJFQ1RJT05fUklHSFQgOiBESVJFQ1RJT05fTEVGVFxuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gQ2Fyb3VzZWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpXG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnbnVtYmVyJykge1xuICAgICAgICBkYXRhLnRvKGNvbmZpZylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoZGF0YVtjb25maWddID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnN0YXJ0c1dpdGgoJ18nKSB8fCBjb25maWcgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICAgIH1cblxuICAgICAgICBkYXRhW2NvbmZpZ10oKVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEksIFNFTEVDVE9SX0RBVEFfU0xJREUsIGZ1bmN0aW9uIChldmVudCkge1xuICBjb25zdCB0YXJnZXQgPSBnZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRoaXMpXG5cbiAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9DQVJPVVNFTCkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICBjb25zdCBjYXJvdXNlbCA9IENhcm91c2VsLmdldE9yQ3JlYXRlSW5zdGFuY2UodGFyZ2V0KVxuICBjb25zdCBzbGlkZUluZGV4ID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtc2xpZGUtdG8nKVxuXG4gIGlmIChzbGlkZUluZGV4KSB7XG4gICAgY2Fyb3VzZWwudG8oc2xpZGVJbmRleClcbiAgICBjYXJvdXNlbC5fbWF5YmVFbmFibGVDeWNsZSgpXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZSh0aGlzLCAnc2xpZGUnKSA9PT0gJ25leHQnKSB7XG4gICAgY2Fyb3VzZWwubmV4dCgpXG4gICAgY2Fyb3VzZWwuX21heWJlRW5hYmxlQ3ljbGUoKVxuICAgIHJldHVyblxuICB9XG5cbiAgY2Fyb3VzZWwucHJldigpXG4gIGNhcm91c2VsLl9tYXliZUVuYWJsZUN5Y2xlKClcbn0pXG5cbkV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX0xPQURfREFUQV9BUEksICgpID0+IHtcbiAgY29uc3QgY2Fyb3VzZWxzID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9EQVRBX1JJREUpXG5cbiAgZm9yIChjb25zdCBjYXJvdXNlbCBvZiBjYXJvdXNlbHMpIHtcbiAgICBDYXJvdXNlbC5nZXRPckNyZWF0ZUluc3RhbmNlKGNhcm91c2VsKVxuICB9XG59KVxuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihDYXJvdXNlbClcblxuZXhwb3J0IGRlZmF1bHQgQ2Fyb3VzZWxcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogY29sbGFwc2UuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQge1xuICBkZWZpbmVKUXVlcnlQbHVnaW4sXG4gIGdldEVsZW1lbnQsXG4gIGdldEVsZW1lbnRGcm9tU2VsZWN0b3IsXG4gIGdldFNlbGVjdG9yRnJvbUVsZW1lbnQsXG4gIHJlZmxvd1xufSBmcm9tICcuL3V0aWwvaW5kZXgnXG5pbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgU2VsZWN0b3JFbmdpbmUgZnJvbSAnLi9kb20vc2VsZWN0b3ItZW5naW5lJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ2NvbGxhcHNlJ1xuY29uc3QgREFUQV9LRVkgPSAnYnMuY29sbGFwc2UnXG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YFxuY29uc3QgREFUQV9BUElfS0VZID0gJy5kYXRhLWFwaSdcblxuY29uc3QgRVZFTlRfU0hPVyA9IGBzaG93JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPV04gPSBgc2hvd24ke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURFID0gYGhpZGUke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURERU4gPSBgaGlkZGVuJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkgPSBgY2xpY2ske0VWRU5UX0tFWX0ke0RBVEFfQVBJX0tFWX1gXG5cbmNvbnN0IENMQVNTX05BTUVfU0hPVyA9ICdzaG93J1xuY29uc3QgQ0xBU1NfTkFNRV9DT0xMQVBTRSA9ICdjb2xsYXBzZSdcbmNvbnN0IENMQVNTX05BTUVfQ09MTEFQU0lORyA9ICdjb2xsYXBzaW5nJ1xuY29uc3QgQ0xBU1NfTkFNRV9DT0xMQVBTRUQgPSAnY29sbGFwc2VkJ1xuY29uc3QgQ0xBU1NfTkFNRV9ERUVQRVJfQ0hJTERSRU4gPSBgOnNjb3BlIC4ke0NMQVNTX05BTUVfQ09MTEFQU0V9IC4ke0NMQVNTX05BTUVfQ09MTEFQU0V9YFxuY29uc3QgQ0xBU1NfTkFNRV9IT1JJWk9OVEFMID0gJ2NvbGxhcHNlLWhvcml6b250YWwnXG5cbmNvbnN0IFdJRFRIID0gJ3dpZHRoJ1xuY29uc3QgSEVJR0hUID0gJ2hlaWdodCdcblxuY29uc3QgU0VMRUNUT1JfQUNUSVZFUyA9ICcuY29sbGFwc2Uuc2hvdywgLmNvbGxhcHNlLmNvbGxhcHNpbmcnXG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSA9ICdbZGF0YS1icy10b2dnbGU9XCJjb2xsYXBzZVwiXSdcblxuY29uc3QgRGVmYXVsdCA9IHtcbiAgcGFyZW50OiBudWxsLFxuICB0b2dnbGU6IHRydWVcbn1cblxuY29uc3QgRGVmYXVsdFR5cGUgPSB7XG4gIHBhcmVudDogJyhudWxsfGVsZW1lbnQpJyxcbiAgdG9nZ2xlOiAnYm9vbGVhbidcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQ29sbGFwc2UgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKVxuXG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2VcbiAgICB0aGlzLl90cmlnZ2VyQXJyYXkgPSBbXVxuXG4gICAgY29uc3QgdG9nZ2xlTGlzdCA9IFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfREFUQV9UT0dHTEUpXG5cbiAgICBmb3IgKGNvbnN0IGVsZW0gb2YgdG9nZ2xlTGlzdCkge1xuICAgICAgY29uc3Qgc2VsZWN0b3IgPSBnZXRTZWxlY3RvckZyb21FbGVtZW50KGVsZW0pXG4gICAgICBjb25zdCBmaWx0ZXJFbGVtZW50ID0gU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvcilcbiAgICAgICAgLmZpbHRlcihmb3VuZEVsZW1lbnQgPT4gZm91bmRFbGVtZW50ID09PSB0aGlzLl9lbGVtZW50KVxuXG4gICAgICBpZiAoc2VsZWN0b3IgIT09IG51bGwgJiYgZmlsdGVyRWxlbWVudC5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlckFycmF5LnB1c2goZWxlbSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9pbml0aWFsaXplQ2hpbGRyZW4oKVxuXG4gICAgaWYgKCF0aGlzLl9jb25maWcucGFyZW50KSB7XG4gICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy5fdHJpZ2dlckFycmF5LCB0aGlzLl9pc1Nob3duKCkpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy50b2dnbGUpIHtcbiAgICAgIHRoaXMudG9nZ2xlKClcbiAgICB9XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gUHVibGljXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5faXNTaG93bigpKSB7XG4gICAgICB0aGlzLmhpZGUoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3coKVxuICAgIH1cbiAgfVxuXG4gIHNob3coKSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCB0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGxldCBhY3RpdmVDaGlsZHJlbiA9IFtdXG5cbiAgICAvLyBmaW5kIGFjdGl2ZSBjaGlsZHJlblxuICAgIGlmICh0aGlzLl9jb25maWcucGFyZW50KSB7XG4gICAgICBhY3RpdmVDaGlsZHJlbiA9IHRoaXMuX2dldEZpcnN0TGV2ZWxDaGlsZHJlbihTRUxFQ1RPUl9BQ1RJVkVTKVxuICAgICAgICAuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudCAhPT0gdGhpcy5fZWxlbWVudClcbiAgICAgICAgLm1hcChlbGVtZW50ID0+IENvbGxhcHNlLmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCwgeyB0b2dnbGU6IGZhbHNlIH0pKVxuICAgIH1cblxuICAgIGlmIChhY3RpdmVDaGlsZHJlbi5sZW5ndGggJiYgYWN0aXZlQ2hpbGRyZW5bMF0uX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1cpXG4gICAgaWYgKHN0YXJ0RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBhY3RpdmVJbnN0YW5jZSBvZiBhY3RpdmVDaGlsZHJlbikge1xuICAgICAgYWN0aXZlSW5zdGFuY2UuaGlkZSgpXG4gICAgfVxuXG4gICAgY29uc3QgZGltZW5zaW9uID0gdGhpcy5fZ2V0RGltZW5zaW9uKClcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNFKVxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNJTkcpXG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSAwXG5cbiAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy5fdHJpZ2dlckFycmF5LCB0cnVlKVxuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IHRydWVcblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2VcblxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQ09MTEFQU0lORylcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNFLCBDTEFTU19OQU1FX1NIT1cpXG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGVbZGltZW5zaW9uXSA9ICcnXG5cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOKVxuICAgIH1cblxuICAgIGNvbnN0IGNhcGl0YWxpemVkRGltZW5zaW9uID0gZGltZW5zaW9uWzBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoMSlcbiAgICBjb25zdCBzY3JvbGxTaXplID0gYHNjcm9sbCR7Y2FwaXRhbGl6ZWREaW1lbnNpb259YFxuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdHJ1ZSlcbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSBgJHt0aGlzLl9lbGVtZW50W3Njcm9sbFNpemVdfXB4YFxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAodGhpcy5faXNUcmFuc2l0aW9uaW5nIHx8ICF0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFKVxuICAgIGlmIChzdGFydEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMuX2dldERpbWVuc2lvbigpXG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSBgJHt0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2RpbWVuc2lvbl19cHhgXG5cbiAgICByZWZsb3codGhpcy5fZWxlbWVudClcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNJTkcpXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQ09MTEFQU0UsIENMQVNTX05BTUVfU0hPVylcblxuICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiB0aGlzLl90cmlnZ2VyQXJyYXkpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRyaWdnZXIpXG5cbiAgICAgIGlmIChlbGVtZW50ICYmICF0aGlzLl9pc1Nob3duKGVsZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhbdHJpZ2dlcl0sIGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IHRydWVcblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNJTkcpXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTRSlcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTilcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSAnJ1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdHJ1ZSlcbiAgfVxuXG4gIF9pc1Nob3duKGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0hPVylcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgY29uZmlnLnRvZ2dsZSA9IEJvb2xlYW4oY29uZmlnLnRvZ2dsZSkgLy8gQ29lcmNlIHN0cmluZyB2YWx1ZXNcbiAgICBjb25maWcucGFyZW50ID0gZ2V0RWxlbWVudChjb25maWcucGFyZW50KVxuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIF9nZXREaW1lbnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfSE9SSVpPTlRBTCkgPyBXSURUSCA6IEhFSUdIVFxuICB9XG5cbiAgX2luaXRpYWxpemVDaGlsZHJlbigpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5wYXJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5fZ2V0Rmlyc3RMZXZlbENoaWxkcmVuKFNFTEVDVE9SX0RBVEFfVE9HR0xFKVxuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IoZWxlbWVudClcblxuICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhbZWxlbWVudF0sIHRoaXMuX2lzU2hvd24oc2VsZWN0ZWQpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9nZXRGaXJzdExldmVsQ2hpbGRyZW4oc2VsZWN0b3IpIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFNlbGVjdG9yRW5naW5lLmZpbmQoQ0xBU1NfTkFNRV9ERUVQRVJfQ0hJTERSRU4sIHRoaXMuX2NvbmZpZy5wYXJlbnQpXG4gICAgLy8gcmVtb3ZlIGNoaWxkcmVuIGlmIGdyZWF0ZXIgZGVwdGhcbiAgICByZXR1cm4gU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvciwgdGhpcy5fY29uZmlnLnBhcmVudCkuZmlsdGVyKGVsZW1lbnQgPT4gIWNoaWxkcmVuLmluY2x1ZGVzKGVsZW1lbnQpKVxuICB9XG5cbiAgX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0cmlnZ2VyQXJyYXksIGlzT3Blbikge1xuICAgIGlmICghdHJpZ2dlckFycmF5Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRyaWdnZXJBcnJheSkge1xuICAgICAgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKENMQVNTX05BTUVfQ09MTEFQU0VELCAhaXNPcGVuKVxuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBpc09wZW4pXG4gICAgfVxuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgY29uc3QgX2NvbmZpZyA9IHt9XG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnICYmIC9zaG93fGhpZGUvLnRlc3QoY29uZmlnKSkge1xuICAgICAgX2NvbmZpZy50b2dnbGUgPSBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IENvbGxhcHNlLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgX2NvbmZpZylcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYClcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFbY29uZmlnXSgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUsIGZ1bmN0aW9uIChldmVudCkge1xuICAvLyBwcmV2ZW50RGVmYXVsdCBvbmx5IGZvciA8YT4gZWxlbWVudHMgKHdoaWNoIGNoYW5nZSB0aGUgVVJMKSBub3QgaW5zaWRlIHRoZSBjb2xsYXBzaWJsZSBlbGVtZW50XG4gIGlmIChldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0EnIHx8IChldmVudC5kZWxlZ2F0ZVRhcmdldCAmJiBldmVudC5kZWxlZ2F0ZVRhcmdldC50YWdOYW1lID09PSAnQScpKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBnZXRTZWxlY3RvckZyb21FbGVtZW50KHRoaXMpXG4gIGNvbnN0IHNlbGVjdG9yRWxlbWVudHMgPSBTZWxlY3RvckVuZ2luZS5maW5kKHNlbGVjdG9yKVxuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBzZWxlY3RvckVsZW1lbnRzKSB7XG4gICAgQ29sbGFwc2UuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50LCB7IHRvZ2dsZTogZmFsc2UgfSkudG9nZ2xlKClcbiAgfVxufSlcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQ29sbGFwc2UpXG5cbmV4cG9ydCBkZWZhdWx0IENvbGxhcHNlXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGRyb3Bkb3duLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0ICogYXMgUG9wcGVyIGZyb20gJ0Bwb3BwZXJqcy9jb3JlJ1xuaW1wb3J0IHtcbiAgZGVmaW5lSlF1ZXJ5UGx1Z2luLFxuICBnZXRFbGVtZW50LFxuICBnZXROZXh0QWN0aXZlRWxlbWVudCxcbiAgaXNEaXNhYmxlZCxcbiAgaXNFbGVtZW50LFxuICBpc1JUTCxcbiAgaXNWaXNpYmxlLFxuICBub29wXG59IGZyb20gJy4vdXRpbC9pbmRleCdcbmltcG9ydCBFdmVudEhhbmRsZXIgZnJvbSAnLi9kb20vZXZlbnQtaGFuZGxlcidcbmltcG9ydCBNYW5pcHVsYXRvciBmcm9tICcuL2RvbS9tYW5pcHVsYXRvcidcbmltcG9ydCBTZWxlY3RvckVuZ2luZSBmcm9tICcuL2RvbS9zZWxlY3Rvci1lbmdpbmUnXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tICcuL2Jhc2UtY29tcG9uZW50J1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUgPSAnZHJvcGRvd24nXG5jb25zdCBEQVRBX0tFWSA9ICdicy5kcm9wZG93bidcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5jb25zdCBEQVRBX0FQSV9LRVkgPSAnLmRhdGEtYXBpJ1xuXG5jb25zdCBFU0NBUEVfS0VZID0gJ0VzY2FwZSdcbmNvbnN0IFRBQl9LRVkgPSAnVGFiJ1xuY29uc3QgQVJST1dfVVBfS0VZID0gJ0Fycm93VXAnXG5jb25zdCBBUlJPV19ET1dOX0tFWSA9ICdBcnJvd0Rvd24nXG5jb25zdCBSSUdIVF9NT1VTRV9CVVRUT04gPSAyIC8vIE1vdXNlRXZlbnQuYnV0dG9uIHZhbHVlIGZvciB0aGUgc2Vjb25kYXJ5IGJ1dHRvbiwgdXN1YWxseSB0aGUgcmlnaHQgYnV0dG9uXG5cbmNvbnN0IEVWRU5UX0hJREUgPSBgaGlkZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0hJRERFTiA9IGBoaWRkZW4ke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9TSE9XID0gYHNob3cke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9TSE9XTiA9IGBzaG93biR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJID0gYGNsaWNrJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuY29uc3QgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSA9IGBrZXlkb3duJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuY29uc3QgRVZFTlRfS0VZVVBfREFUQV9BUEkgPSBga2V5dXAke0VWRU5UX0tFWX0ke0RBVEFfQVBJX0tFWX1gXG5cbmNvbnN0IENMQVNTX05BTUVfU0hPVyA9ICdzaG93J1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QVVAgPSAnZHJvcHVwJ1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QRU5EID0gJ2Ryb3BlbmQnXG5jb25zdCBDTEFTU19OQU1FX0RST1BTVEFSVCA9ICdkcm9wc3RhcnQnXG5jb25zdCBDTEFTU19OQU1FX0RST1BVUF9DRU5URVIgPSAnZHJvcHVwLWNlbnRlcidcbmNvbnN0IENMQVNTX05BTUVfRFJPUERPV05fQ0VOVEVSID0gJ2Ryb3Bkb3duLWNlbnRlcidcblxuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIl06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCknXG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRV9TSE9XTiA9IGAke1NFTEVDVE9SX0RBVEFfVE9HR0xFfS4ke0NMQVNTX05BTUVfU0hPV31gXG5jb25zdCBTRUxFQ1RPUl9NRU5VID0gJy5kcm9wZG93bi1tZW51J1xuY29uc3QgU0VMRUNUT1JfTkFWQkFSID0gJy5uYXZiYXInXG5jb25zdCBTRUxFQ1RPUl9OQVZCQVJfTkFWID0gJy5uYXZiYXItbmF2J1xuY29uc3QgU0VMRUNUT1JfVklTSUJMRV9JVEVNUyA9ICcuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpub3QoLmRpc2FibGVkKTpub3QoOmRpc2FibGVkKSdcblxuY29uc3QgUExBQ0VNRU5UX1RPUCA9IGlzUlRMKCkgPyAndG9wLWVuZCcgOiAndG9wLXN0YXJ0J1xuY29uc3QgUExBQ0VNRU5UX1RPUEVORCA9IGlzUlRMKCkgPyAndG9wLXN0YXJ0JyA6ICd0b3AtZW5kJ1xuY29uc3QgUExBQ0VNRU5UX0JPVFRPTSA9IGlzUlRMKCkgPyAnYm90dG9tLWVuZCcgOiAnYm90dG9tLXN0YXJ0J1xuY29uc3QgUExBQ0VNRU5UX0JPVFRPTUVORCA9IGlzUlRMKCkgPyAnYm90dG9tLXN0YXJ0JyA6ICdib3R0b20tZW5kJ1xuY29uc3QgUExBQ0VNRU5UX1JJR0hUID0gaXNSVEwoKSA/ICdsZWZ0LXN0YXJ0JyA6ICdyaWdodC1zdGFydCdcbmNvbnN0IFBMQUNFTUVOVF9MRUZUID0gaXNSVEwoKSA/ICdyaWdodC1zdGFydCcgOiAnbGVmdC1zdGFydCdcbmNvbnN0IFBMQUNFTUVOVF9UT1BDRU5URVIgPSAndG9wJ1xuY29uc3QgUExBQ0VNRU5UX0JPVFRPTUNFTlRFUiA9ICdib3R0b20nXG5cbmNvbnN0IERlZmF1bHQgPSB7XG4gIGF1dG9DbG9zZTogdHJ1ZSxcbiAgYm91bmRhcnk6ICdjbGlwcGluZ1BhcmVudHMnLFxuICBkaXNwbGF5OiAnZHluYW1pYycsXG4gIG9mZnNldDogWzAsIDJdLFxuICBwb3BwZXJDb25maWc6IG51bGwsXG4gIHJlZmVyZW5jZTogJ3RvZ2dsZSdcbn1cblxuY29uc3QgRGVmYXVsdFR5cGUgPSB7XG4gIGF1dG9DbG9zZTogJyhib29sZWFufHN0cmluZyknLFxuICBib3VuZGFyeTogJyhzdHJpbmd8ZWxlbWVudCknLFxuICBkaXNwbGF5OiAnc3RyaW5nJyxcbiAgb2Zmc2V0OiAnKGFycmF5fHN0cmluZ3xmdW5jdGlvbiknLFxuICBwb3BwZXJDb25maWc6ICcobnVsbHxvYmplY3R8ZnVuY3Rpb24pJyxcbiAgcmVmZXJlbmNlOiAnKHN0cmluZ3xlbGVtZW50fG9iamVjdCknXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIERyb3Bkb3duIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZylcblxuICAgIHRoaXMuX3BvcHBlciA9IG51bGxcbiAgICB0aGlzLl9wYXJlbnQgPSB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgLy8gZHJvcGRvd24gd3JhcHBlclxuICAgIC8vIHRvZG86IHY2IHJldmVydCAjMzcwMTEgJiBjaGFuZ2UgbWFya3VwIGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS9kb2NzLzUuMi9mb3Jtcy9pbnB1dC1ncm91cC9cbiAgICB0aGlzLl9tZW51ID0gU2VsZWN0b3JFbmdpbmUubmV4dCh0aGlzLl9lbGVtZW50LCBTRUxFQ1RPUl9NRU5VKVswXSB8fFxuICAgICAgU2VsZWN0b3JFbmdpbmUucHJldih0aGlzLl9lbGVtZW50LCBTRUxFQ1RPUl9NRU5VKVswXSB8fFxuICAgICAgU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9NRU5VLCB0aGlzLl9wYXJlbnQpXG4gICAgdGhpcy5faW5OYXZiYXIgPSB0aGlzLl9kZXRlY3ROYXZiYXIoKVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICB0b2dnbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU2hvd24oKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KClcbiAgfVxuXG4gIHNob3coKSB7XG4gICAgaWYgKGlzRGlzYWJsZWQodGhpcy5fZWxlbWVudCkgfHwgdGhpcy5faXNTaG93bigpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudFxuICAgIH1cblxuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1csIHJlbGF0ZWRUYXJnZXQpXG5cbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2NyZWF0ZVBvcHBlcigpXG5cbiAgICAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgYWRkIGV4dHJhXG4gICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB0byB0aGUgYm9keSdzIGltbWVkaWF0ZSBjaGlsZHJlbjtcbiAgICAvLyBvbmx5IG5lZWRlZCBiZWNhdXNlIG9mIGJyb2tlbiBldmVudCBkZWxlZ2F0aW9uIG9uIGlPU1xuICAgIC8vIGh0dHBzOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxNC8wMi9tb3VzZV9ldmVudF9idWIuaHRtbFxuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgIXRoaXMuX3BhcmVudC5jbG9zZXN0KFNFTEVDVE9SX05BVkJBUl9OQVYpKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LmZvY3VzKClcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIHRydWUpXG5cbiAgICB0aGlzLl9tZW51LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XKVxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1cpXG4gICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPV04sIHJlbGF0ZWRUYXJnZXQpXG4gIH1cblxuICBoaWRlKCkge1xuICAgIGlmIChpc0Rpc2FibGVkKHRoaXMuX2VsZW1lbnQpIHx8ICF0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiB0aGlzLl9lbGVtZW50XG4gICAgfVxuXG4gICAgdGhpcy5fY29tcGxldGVIaWRlKHJlbGF0ZWRUYXJnZXQpXG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlci5kZXN0cm95KClcbiAgICB9XG5cbiAgICBzdXBlci5kaXNwb3NlKClcbiAgfVxuXG4gIHVwZGF0ZSgpIHtcbiAgICB0aGlzLl9pbk5hdmJhciA9IHRoaXMuX2RldGVjdE5hdmJhcigpXG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLnVwZGF0ZSgpXG4gICAgfVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfY29tcGxldGVIaWRlKHJlbGF0ZWRUYXJnZXQpIHtcbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFLCByZWxhdGVkVGFyZ2V0KVxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgdGhpcyBpcyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlIHdlIHJlbW92ZSB0aGUgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHdlIGFkZGVkIGZvciBpT1Mgc3VwcG9ydFxuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9mZihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIuZGVzdHJveSgpXG4gICAgfVxuXG4gICAgdGhpcy5fbWVudS5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVylcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XKVxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJylcbiAgICBNYW5pcHVsYXRvci5yZW1vdmVEYXRhQXR0cmlidXRlKHRoaXMuX21lbnUsICdwb3BwZXInKVxuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTiwgcmVsYXRlZFRhcmdldClcbiAgfVxuXG4gIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgY29uZmlnID0gc3VwZXIuX2dldENvbmZpZyhjb25maWcpXG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZy5yZWZlcmVuY2UgPT09ICdvYmplY3QnICYmICFpc0VsZW1lbnQoY29uZmlnLnJlZmVyZW5jZSkgJiZcbiAgICAgIHR5cGVvZiBjb25maWcucmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCAhPT0gJ2Z1bmN0aW9uJ1xuICAgICkge1xuICAgICAgLy8gUG9wcGVyIHZpcnR1YWwgZWxlbWVudHMgcmVxdWlyZSBhIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBtZXRob2RcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7TkFNRS50b1VwcGVyQ2FzZSgpfTogT3B0aW9uIFwicmVmZXJlbmNlXCIgcHJvdmlkZWQgdHlwZSBcIm9iamVjdFwiIHdpdGhvdXQgYSByZXF1aXJlZCBcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiIG1ldGhvZC5gKVxuICAgIH1cblxuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIF9jcmVhdGVQb3BwZXIoKSB7XG4gICAgaWYgKHR5cGVvZiBQb3BwZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb290c3RyYXBcXCdzIGRyb3Bkb3ducyByZXF1aXJlIFBvcHBlciAoaHR0cHM6Ly9wb3BwZXIuanMub3JnKScpXG4gICAgfVxuXG4gICAgbGV0IHJlZmVyZW5jZUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnJlZmVyZW5jZSA9PT0gJ3BhcmVudCcpIHtcbiAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSB0aGlzLl9wYXJlbnRcbiAgICB9IGVsc2UgaWYgKGlzRWxlbWVudCh0aGlzLl9jb25maWcucmVmZXJlbmNlKSkge1xuICAgICAgcmVmZXJlbmNlRWxlbWVudCA9IGdldEVsZW1lbnQodGhpcy5fY29uZmlnLnJlZmVyZW5jZSlcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9jb25maWcucmVmZXJlbmNlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2NvbmZpZy5yZWZlcmVuY2VcbiAgICB9XG5cbiAgICBjb25zdCBwb3BwZXJDb25maWcgPSB0aGlzLl9nZXRQb3BwZXJDb25maWcoKVxuICAgIHRoaXMuX3BvcHBlciA9IFBvcHBlci5jcmVhdGVQb3BwZXIocmVmZXJlbmNlRWxlbWVudCwgdGhpcy5fbWVudSwgcG9wcGVyQ29uZmlnKVxuICB9XG5cbiAgX2lzU2hvd24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lbnUuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0hPVylcbiAgfVxuXG4gIF9nZXRQbGFjZW1lbnQoKSB7XG4gICAgY29uc3QgcGFyZW50RHJvcGRvd24gPSB0aGlzLl9wYXJlbnRcblxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QRU5EKSkge1xuICAgICAgcmV0dXJuIFBMQUNFTUVOVF9SSUdIVFxuICAgIH1cblxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QU1RBUlQpKSB7XG4gICAgICByZXR1cm4gUExBQ0VNRU5UX0xFRlRcbiAgICB9XG5cbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUFVQX0NFTlRFUikpIHtcbiAgICAgIHJldHVybiBQTEFDRU1FTlRfVE9QQ0VOVEVSXG4gICAgfVxuXG4gICAgaWYgKHBhcmVudERyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BET1dOX0NFTlRFUikpIHtcbiAgICAgIHJldHVybiBQTEFDRU1FTlRfQk9UVE9NQ0VOVEVSXG4gICAgfVxuXG4gICAgLy8gV2UgbmVlZCB0byB0cmltIHRoZSB2YWx1ZSBiZWNhdXNlIGN1c3RvbSBwcm9wZXJ0aWVzIGNhbiBhbHNvIGluY2x1ZGUgc3BhY2VzXG4gICAgY29uc3QgaXNFbmQgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX21lbnUpLmdldFByb3BlcnR5VmFsdWUoJy0tYnMtcG9zaXRpb24nKS50cmltKCkgPT09ICdlbmQnXG5cbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUFVQKSkge1xuICAgICAgcmV0dXJuIGlzRW5kID8gUExBQ0VNRU5UX1RPUEVORCA6IFBMQUNFTUVOVF9UT1BcbiAgICB9XG5cbiAgICByZXR1cm4gaXNFbmQgPyBQTEFDRU1FTlRfQk9UVE9NRU5EIDogUExBQ0VNRU5UX0JPVFRPTVxuICB9XG5cbiAgX2RldGVjdE5hdmJhcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX05BVkJBUikgIT09IG51bGxcbiAgfVxuXG4gIF9nZXRPZmZzZXQoKSB7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IHRoaXMuX2NvbmZpZ1xuXG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2Zmc2V0LnNwbGl0KCcsJykubWFwKHZhbHVlID0+IE51bWJlci5wYXJzZUludCh2YWx1ZSwgMTApKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gcG9wcGVyRGF0YSA9PiBvZmZzZXQocG9wcGVyRGF0YSwgdGhpcy5fZWxlbWVudClcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0XG4gIH1cblxuICBfZ2V0UG9wcGVyQ29uZmlnKCkge1xuICAgIGNvbnN0IGRlZmF1bHRCc1BvcHBlckNvbmZpZyA9IHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5fZ2V0UGxhY2VtZW50KCksXG4gICAgICBtb2RpZmllcnM6IFt7XG4gICAgICAgIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgYm91bmRhcnk6IHRoaXMuX2NvbmZpZy5ib3VuZGFyeVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG9mZnNldDogdGhpcy5fZ2V0T2Zmc2V0KClcbiAgICAgICAgfVxuICAgICAgfV1cbiAgICB9XG5cbiAgICAvLyBEaXNhYmxlIFBvcHBlciBpZiB3ZSBoYXZlIGEgc3RhdGljIGRpc3BsYXkgb3IgRHJvcGRvd24gaXMgaW4gTmF2YmFyXG4gICAgaWYgKHRoaXMuX2luTmF2YmFyIHx8IHRoaXMuX2NvbmZpZy5kaXNwbGF5ID09PSAnc3RhdGljJykge1xuICAgICAgTWFuaXB1bGF0b3Iuc2V0RGF0YUF0dHJpYnV0ZSh0aGlzLl9tZW51LCAncG9wcGVyJywgJ3N0YXRpYycpIC8vIHRvZG86djYgcmVtb3ZlXG4gICAgICBkZWZhdWx0QnNQb3BwZXJDb25maWcubW9kaWZpZXJzID0gW3tcbiAgICAgICAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgIH1dXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRCc1BvcHBlckNvbmZpZyxcbiAgICAgIC4uLih0eXBlb2YgdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcoZGVmYXVsdEJzUG9wcGVyQ29uZmlnKSA6IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcpXG4gICAgfVxuICB9XG5cbiAgX3NlbGVjdE1lbnVJdGVtKHsga2V5LCB0YXJnZXQgfSkge1xuICAgIGNvbnN0IGl0ZW1zID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9WSVNJQkxFX0lURU1TLCB0aGlzLl9tZW51KS5maWx0ZXIoZWxlbWVudCA9PiBpc1Zpc2libGUoZWxlbWVudCkpXG5cbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gaWYgdGFyZ2V0IGlzbid0IGluY2x1ZGVkIGluIGl0ZW1zIChlLmcuIHdoZW4gZXhwYW5kaW5nIHRoZSBkcm9wZG93bilcbiAgICAvLyBhbGxvdyBjeWNsaW5nIHRvIGdldCB0aGUgbGFzdCBpdGVtIGluIGNhc2Uga2V5IGVxdWFscyBBUlJPV19VUF9LRVlcbiAgICBnZXROZXh0QWN0aXZlRWxlbWVudChpdGVtcywgdGFyZ2V0LCBrZXkgPT09IEFSUk9XX0RPV05fS0VZLCAhaXRlbXMuaW5jbHVkZXModGFyZ2V0KSkuZm9jdXMoKVxuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gRHJvcGRvd24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpXG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYClcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKClcbiAgICB9KVxuICB9XG5cbiAgc3RhdGljIGNsZWFyTWVudXMoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuYnV0dG9uID09PSBSSUdIVF9NT1VTRV9CVVRUT04gfHwgKGV2ZW50LnR5cGUgPT09ICdrZXl1cCcgJiYgZXZlbnQua2V5ICE9PSBUQUJfS0VZKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgb3BlblRvZ2dsZXMgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFX1NIT1dOKVxuXG4gICAgZm9yIChjb25zdCB0b2dnbGUgb2Ygb3BlblRvZ2dsZXMpIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBEcm9wZG93bi5nZXRJbnN0YW5jZSh0b2dnbGUpXG4gICAgICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC5fY29uZmlnLmF1dG9DbG9zZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29tcG9zZWRQYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKClcbiAgICAgIGNvbnN0IGlzTWVudVRhcmdldCA9IGNvbXBvc2VkUGF0aC5pbmNsdWRlcyhjb250ZXh0Ll9tZW51KVxuICAgICAgaWYgKFxuICAgICAgICBjb21wb3NlZFBhdGguaW5jbHVkZXMoY29udGV4dC5fZWxlbWVudCkgfHxcbiAgICAgICAgKGNvbnRleHQuX2NvbmZpZy5hdXRvQ2xvc2UgPT09ICdpbnNpZGUnICYmICFpc01lbnVUYXJnZXQpIHx8XG4gICAgICAgIChjb250ZXh0Ll9jb25maWcuYXV0b0Nsb3NlID09PSAnb3V0c2lkZScgJiYgaXNNZW51VGFyZ2V0KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFRhYiBuYXZpZ2F0aW9uIHRocm91Z2ggdGhlIGRyb3Bkb3duIG1lbnUgb3IgZXZlbnRzIGZyb20gY29udGFpbmVkIGlucHV0cyBzaG91bGRuJ3QgY2xvc2UgdGhlIG1lbnVcbiAgICAgIGlmIChjb250ZXh0Ll9tZW51LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgKChldmVudC50eXBlID09PSAna2V5dXAnICYmIGV2ZW50LmtleSA9PT0gVEFCX0tFWSkgfHwgL2lucHV0fHNlbGVjdHxvcHRpb258dGV4dGFyZWF8Zm9ybS9pLnRlc3QoZXZlbnQudGFyZ2V0LnRhZ05hbWUpKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0geyByZWxhdGVkVGFyZ2V0OiBjb250ZXh0Ll9lbGVtZW50IH1cblxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldC5jbGlja0V2ZW50ID0gZXZlbnRcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5fY29tcGxldGVIaWRlKHJlbGF0ZWRUYXJnZXQpXG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRhdGFBcGlLZXlkb3duSGFuZGxlcihldmVudCkge1xuICAgIC8vIElmIG5vdCBhbiBVUCB8IERPV04gfCBFU0NBUEUga2V5ID0+IG5vdCBhIGRyb3Bkb3duIGNvbW1hbmRcbiAgICAvLyBJZiBpbnB1dC90ZXh0YXJlYSAmJiBpZiBrZXkgaXMgb3RoZXIgdGhhbiBFU0NBUEUgPT4gbm90IGEgZHJvcGRvd24gY29tbWFuZFxuXG4gICAgY29uc3QgaXNJbnB1dCA9IC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZXZlbnQudGFyZ2V0LnRhZ05hbWUpXG4gICAgY29uc3QgaXNFc2NhcGVFdmVudCA9IGV2ZW50LmtleSA9PT0gRVNDQVBFX0tFWVxuICAgIGNvbnN0IGlzVXBPckRvd25FdmVudCA9IFtBUlJPV19VUF9LRVksIEFSUk9XX0RPV05fS0VZXS5pbmNsdWRlcyhldmVudC5rZXkpXG5cbiAgICBpZiAoIWlzVXBPckRvd25FdmVudCAmJiAhaXNFc2NhcGVFdmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGlzSW5wdXQgJiYgIWlzRXNjYXBlRXZlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgIC8vIHRvZG86IHY2IHJldmVydCAjMzcwMTEgJiBjaGFuZ2UgbWFya3VwIGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS9kb2NzLzUuMi9mb3Jtcy9pbnB1dC1ncm91cC9cbiAgICBjb25zdCBnZXRUb2dnbGVCdXR0b24gPSB0aGlzLm1hdGNoZXMoU0VMRUNUT1JfREFUQV9UT0dHTEUpID9cbiAgICAgIHRoaXMgOlxuICAgICAgKFNlbGVjdG9yRW5naW5lLnByZXYodGhpcywgU0VMRUNUT1JfREFUQV9UT0dHTEUpWzBdIHx8XG4gICAgICAgIFNlbGVjdG9yRW5naW5lLm5leHQodGhpcywgU0VMRUNUT1JfREFUQV9UT0dHTEUpWzBdIHx8XG4gICAgICAgIFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfREFUQV9UT0dHTEUsIGV2ZW50LmRlbGVnYXRlVGFyZ2V0LnBhcmVudE5vZGUpKVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSBEcm9wZG93bi5nZXRPckNyZWF0ZUluc3RhbmNlKGdldFRvZ2dsZUJ1dHRvbilcblxuICAgIGlmIChpc1VwT3JEb3duRXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBpbnN0YW5jZS5zaG93KClcbiAgICAgIGluc3RhbmNlLl9zZWxlY3RNZW51SXRlbShldmVudClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5faXNTaG93bigpKSB7IC8vIGVsc2UgaXMgZXNjYXBlIGFuZCB3ZSBjaGVjayBpZiBpdCBpcyBzaG93blxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGluc3RhbmNlLmhpZGUoKVxuICAgICAgZ2V0VG9nZ2xlQnV0dG9uLmZvY3VzKClcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUsIERyb3Bkb3duLmRhdGFBcGlLZXlkb3duSGFuZGxlcilcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSwgU0VMRUNUT1JfTUVOVSwgRHJvcGRvd24uZGF0YUFwaUtleWRvd25IYW5kbGVyKVxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSwgRHJvcGRvd24uY2xlYXJNZW51cylcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZVVBfREFUQV9BUEksIERyb3Bkb3duLmNsZWFyTWVudXMpXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJLCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgRHJvcGRvd24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKS50b2dnbGUoKVxufSlcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oRHJvcGRvd24pXG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvc2Nyb2xsQmFyLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IFNlbGVjdG9yRW5naW5lIGZyb20gJy4uL2RvbS9zZWxlY3Rvci1lbmdpbmUnXG5pbXBvcnQgTWFuaXB1bGF0b3IgZnJvbSAnLi4vZG9tL21hbmlwdWxhdG9yJ1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSAnLi9pbmRleCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBTRUxFQ1RPUl9GSVhFRF9DT05URU5UID0gJy5maXhlZC10b3AsIC5maXhlZC1ib3R0b20sIC5pcy1maXhlZCwgLnN0aWNreS10b3AnXG5jb25zdCBTRUxFQ1RPUl9TVElDS1lfQ09OVEVOVCA9ICcuc3RpY2t5LXRvcCdcbmNvbnN0IFBST1BFUlRZX1BBRERJTkcgPSAncGFkZGluZy1yaWdodCdcbmNvbnN0IFBST1BFUlRZX01BUkdJTiA9ICdtYXJnaW4tcmlnaHQnXG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFNjcm9sbEJhckhlbHBlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5ib2R5XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgZ2V0V2lkdGgoKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9pbm5lcldpZHRoI3VzYWdlX25vdGVzXG4gICAgY29uc3QgZG9jdW1lbnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aFxuICAgIHJldHVybiBNYXRoLmFicyh3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50V2lkdGgpXG4gIH1cblxuICBoaWRlKCkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpXG4gICAgdGhpcy5fZGlzYWJsZU92ZXJGbG93KClcbiAgICAvLyBnaXZlIHBhZGRpbmcgdG8gZWxlbWVudCB0byBiYWxhbmNlIHRoZSBoaWRkZW4gc2Nyb2xsYmFyIHdpZHRoXG4gICAgdGhpcy5fc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgUFJPUEVSVFlfUEFERElORywgY2FsY3VsYXRlZFZhbHVlID0+IGNhbGN1bGF0ZWRWYWx1ZSArIHdpZHRoKVxuICAgIC8vIHRyaWNrOiBXZSBhZGp1c3QgcG9zaXRpdmUgcGFkZGluZ1JpZ2h0IGFuZCBuZWdhdGl2ZSBtYXJnaW5SaWdodCB0byBzdGlja3ktdG9wIGVsZW1lbnRzIHRvIGtlZXAgc2hvd2luZyBmdWxsd2lkdGhcbiAgICB0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9GSVhFRF9DT05URU5ULCBQUk9QRVJUWV9QQURESU5HLCBjYWxjdWxhdGVkVmFsdWUgPT4gY2FsY3VsYXRlZFZhbHVlICsgd2lkdGgpXG4gICAgdGhpcy5fc2V0RWxlbWVudEF0dHJpYnV0ZXMoU0VMRUNUT1JfU1RJQ0tZX0NPTlRFTlQsIFBST1BFUlRZX01BUkdJTiwgY2FsY3VsYXRlZFZhbHVlID0+IGNhbGN1bGF0ZWRWYWx1ZSAtIHdpZHRoKVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyh0aGlzLl9lbGVtZW50LCAnb3ZlcmZsb3cnKVxuICAgIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgUFJPUEVSVFlfUEFERElORylcbiAgICB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKFNFTEVDVE9SX0ZJWEVEX0NPTlRFTlQsIFBST1BFUlRZX1BBRERJTkcpXG4gICAgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9TVElDS1lfQ09OVEVOVCwgUFJPUEVSVFlfTUFSR0lOKVxuICB9XG5cbiAgaXNPdmVyZmxvd2luZygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRXaWR0aCgpID4gMFxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfZGlzYWJsZU92ZXJGbG93KCkge1xuICAgIHRoaXMuX3NhdmVJbml0aWFsQXR0cmlidXRlKHRoaXMuX2VsZW1lbnQsICdvdmVyZmxvdycpXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nXG4gIH1cblxuICBfc2V0RWxlbWVudEF0dHJpYnV0ZXMoc2VsZWN0b3IsIHN0eWxlUHJvcGVydHksIGNhbGxiYWNrKSB7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB0aGlzLmdldFdpZHRoKClcbiAgICBjb25zdCBtYW5pcHVsYXRpb25DYWxsQmFjayA9IGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQgIT09IHRoaXMuX2VsZW1lbnQgJiYgd2luZG93LmlubmVyV2lkdGggPiBlbGVtZW50LmNsaWVudFdpZHRoICsgc2Nyb2xsYmFyV2lkdGgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3NhdmVJbml0aWFsQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpXG4gICAgICBjb25zdCBjYWxjdWxhdGVkVmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlUHJvcGVydHkpXG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHN0eWxlUHJvcGVydHksIGAke2NhbGxiYWNrKE51bWJlci5wYXJzZUZsb2F0KGNhbGN1bGF0ZWRWYWx1ZSkpfXB4YClcbiAgICB9XG5cbiAgICB0aGlzLl9hcHBseU1hbmlwdWxhdGlvbkNhbGxiYWNrKHNlbGVjdG9yLCBtYW5pcHVsYXRpb25DYWxsQmFjaylcbiAgfVxuXG4gIF9zYXZlSW5pdGlhbEF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZVByb3BlcnR5KSB7XG4gICAgY29uc3QgYWN0dWFsVmFsdWUgPSBlbGVtZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoc3R5bGVQcm9wZXJ0eSlcbiAgICBpZiAoYWN0dWFsVmFsdWUpIHtcbiAgICAgIE1hbmlwdWxhdG9yLnNldERhdGFBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVQcm9wZXJ0eSwgYWN0dWFsVmFsdWUpXG4gICAgfVxuICB9XG5cbiAgX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMoc2VsZWN0b3IsIHN0eWxlUHJvcGVydHkpIHtcbiAgICBjb25zdCBtYW5pcHVsYXRpb25DYWxsQmFjayA9IGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpXG4gICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gcmVtb3ZlIHRoZSBwcm9wZXJ0eSBpZiB0aGUgdmFsdWUgaXMgYG51bGxgOyB0aGUgdmFsdWUgY2FuIGFsc28gYmUgemVyb1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoc3R5bGVQcm9wZXJ0eSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIE1hbmlwdWxhdG9yLnJlbW92ZURhdGFBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVQcm9wZXJ0eSlcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoc3R5bGVQcm9wZXJ0eSwgdmFsdWUpXG4gICAgfVxuXG4gICAgdGhpcy5fYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayhzZWxlY3RvciwgbWFuaXB1bGF0aW9uQ2FsbEJhY2spXG4gIH1cblxuICBfYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayhzZWxlY3RvciwgY2FsbEJhY2spIHtcbiAgICBpZiAoaXNFbGVtZW50KHNlbGVjdG9yKSkge1xuICAgICAgY2FsbEJhY2soc2VsZWN0b3IpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHNlbCBvZiBTZWxlY3RvckVuZ2luZS5maW5kKHNlbGVjdG9yLCB0aGlzLl9lbGVtZW50KSkge1xuICAgICAgY2FsbEJhY2soc2VsKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTY3JvbGxCYXJIZWxwZXJcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogdXRpbC9iYWNrZHJvcC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCBFdmVudEhhbmRsZXIgZnJvbSAnLi4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgeyBleGVjdXRlLCBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uLCBnZXRFbGVtZW50LCByZWZsb3cgfSBmcm9tICcuL2luZGV4J1xuaW1wb3J0IENvbmZpZyBmcm9tICcuL2NvbmZpZydcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ2JhY2tkcm9wJ1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFID0gJ2ZhZGUnXG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdydcbmNvbnN0IEVWRU5UX01PVVNFRE9XTiA9IGBtb3VzZWRvd24uYnMuJHtOQU1FfWBcblxuY29uc3QgRGVmYXVsdCA9IHtcbiAgY2xhc3NOYW1lOiAnbW9kYWwtYmFja2Ryb3AnLFxuICBjbGlja0NhbGxiYWNrOiBudWxsLFxuICBpc0FuaW1hdGVkOiBmYWxzZSxcbiAgaXNWaXNpYmxlOiB0cnVlLCAvLyBpZiBmYWxzZSwgd2UgdXNlIHRoZSBiYWNrZHJvcCBoZWxwZXIgd2l0aG91dCBhZGRpbmcgYW55IGVsZW1lbnQgdG8gdGhlIGRvbVxuICByb290RWxlbWVudDogJ2JvZHknIC8vIGdpdmUgdGhlIGNob2ljZSB0byBwbGFjZSBiYWNrZHJvcCB1bmRlciBkaWZmZXJlbnQgZWxlbWVudHNcbn1cblxuY29uc3QgRGVmYXVsdFR5cGUgPSB7XG4gIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gIGNsaWNrQ2FsbGJhY2s6ICcoZnVuY3Rpb258bnVsbCknLFxuICBpc0FuaW1hdGVkOiAnYm9vbGVhbicsXG4gIGlzVmlzaWJsZTogJ2Jvb2xlYW4nLFxuICByb290RWxlbWVudDogJyhlbGVtZW50fHN0cmluZyknXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEJhY2tkcm9wIGV4dGVuZHMgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpXG4gICAgdGhpcy5faXNBcHBlbmRlZCA9IGZhbHNlXG4gICAgdGhpcy5fZWxlbWVudCA9IG51bGxcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZVxuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBQdWJsaWNcbiAgc2hvdyhjYWxsYmFjaykge1xuICAgIGlmICghdGhpcy5fY29uZmlnLmlzVmlzaWJsZSkge1xuICAgICAgZXhlY3V0ZShjYWxsYmFjaylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2FwcGVuZCgpXG5cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZ2V0RWxlbWVudCgpXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkKSB7XG4gICAgICByZWZsb3coZWxlbWVudClcbiAgICB9XG5cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XKVxuXG4gICAgdGhpcy5fZW11bGF0ZUFuaW1hdGlvbigoKSA9PiB7XG4gICAgICBleGVjdXRlKGNhbGxiYWNrKVxuICAgIH0pXG4gIH1cblxuICBoaWRlKGNhbGxiYWNrKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuaXNWaXNpYmxlKSB7XG4gICAgICBleGVjdXRlKGNhbGxiYWNrKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fZ2V0RWxlbWVudCgpLmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XKVxuXG4gICAgdGhpcy5fZW11bGF0ZUFuaW1hdGlvbigoKSA9PiB7XG4gICAgICB0aGlzLmRpc3Bvc2UoKVxuICAgICAgZXhlY3V0ZShjYWxsYmFjaylcbiAgICB9KVxuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzQXBwZW5kZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VET1dOKVxuXG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKVxuICAgIHRoaXMuX2lzQXBwZW5kZWQgPSBmYWxzZVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfZ2V0RWxlbWVudCgpIHtcbiAgICBpZiAoIXRoaXMuX2VsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGJhY2tkcm9wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICAgIGJhY2tkcm9wLmNsYXNzTmFtZSA9IHRoaXMuX2NvbmZpZy5jbGFzc05hbWVcbiAgICAgIGlmICh0aGlzLl9jb25maWcuaXNBbmltYXRlZCkge1xuICAgICAgICBiYWNrZHJvcC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfRkFERSlcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZWxlbWVudCA9IGJhY2tkcm9wXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRcbiAgfVxuXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIC8vIHVzZSBnZXRFbGVtZW50KCkgd2l0aCB0aGUgZGVmYXVsdCBcImJvZHlcIiB0byBnZXQgYSBmcmVzaCBFbGVtZW50IG9uIGVhY2ggaW5zdGFudGlhdGlvblxuICAgIGNvbmZpZy5yb290RWxlbWVudCA9IGdldEVsZW1lbnQoY29uZmlnLnJvb3RFbGVtZW50KVxuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIF9hcHBlbmQoKSB7XG4gICAgaWYgKHRoaXMuX2lzQXBwZW5kZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9nZXRFbGVtZW50KClcbiAgICB0aGlzLl9jb25maWcucm9vdEVsZW1lbnQuYXBwZW5kKGVsZW1lbnQpXG5cbiAgICBFdmVudEhhbmRsZXIub24oZWxlbWVudCwgRVZFTlRfTU9VU0VET1dOLCAoKSA9PiB7XG4gICAgICBleGVjdXRlKHRoaXMuX2NvbmZpZy5jbGlja0NhbGxiYWNrKVxuICAgIH0pXG5cbiAgICB0aGlzLl9pc0FwcGVuZGVkID0gdHJ1ZVxuICB9XG5cbiAgX2VtdWxhdGVBbmltYXRpb24oY2FsbGJhY2spIHtcbiAgICBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uKGNhbGxiYWNrLCB0aGlzLl9nZXRFbGVtZW50KCksIHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJhY2tkcm9wXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvZm9jdXN0cmFwLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuLi9kb20vZXZlbnQtaGFuZGxlcidcbmltcG9ydCBTZWxlY3RvckVuZ2luZSBmcm9tICcuLi9kb20vc2VsZWN0b3ItZW5naW5lJ1xuaW1wb3J0IENvbmZpZyBmcm9tICcuL2NvbmZpZydcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ2ZvY3VzdHJhcCdcbmNvbnN0IERBVEFfS0VZID0gJ2JzLmZvY3VzdHJhcCdcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5jb25zdCBFVkVOVF9GT0NVU0lOID0gYGZvY3VzaW4ke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9LRVlET1dOX1RBQiA9IGBrZXlkb3duLnRhYiR7RVZFTlRfS0VZfWBcblxuY29uc3QgVEFCX0tFWSA9ICdUYWInXG5jb25zdCBUQUJfTkFWX0ZPUldBUkQgPSAnZm9yd2FyZCdcbmNvbnN0IFRBQl9OQVZfQkFDS1dBUkQgPSAnYmFja3dhcmQnXG5cbmNvbnN0IERlZmF1bHQgPSB7XG4gIGF1dG9mb2N1czogdHJ1ZSxcbiAgdHJhcEVsZW1lbnQ6IG51bGwgLy8gVGhlIGVsZW1lbnQgdG8gdHJhcCBmb2N1cyBpbnNpZGUgb2Zcbn1cblxuY29uc3QgRGVmYXVsdFR5cGUgPSB7XG4gIGF1dG9mb2N1czogJ2Jvb2xlYW4nLFxuICB0cmFwRWxlbWVudDogJ2VsZW1lbnQnXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEZvY3VzVHJhcCBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKVxuICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2VcbiAgICB0aGlzLl9sYXN0VGFiTmF2RGlyZWN0aW9uID0gbnVsbFxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBhY3RpdmF0ZSgpIHtcbiAgICBpZiAodGhpcy5faXNBY3RpdmUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25maWcuYXV0b2ZvY3VzKSB7XG4gICAgICB0aGlzLl9jb25maWcudHJhcEVsZW1lbnQuZm9jdXMoKVxuICAgIH1cblxuICAgIEV2ZW50SGFuZGxlci5vZmYoZG9jdW1lbnQsIEVWRU5UX0tFWSkgLy8gZ3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBmb2N1cyBsb29wXG4gICAgRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9GT0NVU0lOLCBldmVudCA9PiB0aGlzLl9oYW5kbGVGb2N1c2luKGV2ZW50KSlcbiAgICBFdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0tFWURPV05fVEFCLCBldmVudCA9PiB0aGlzLl9oYW5kbGVLZXlkb3duKGV2ZW50KSlcblxuICAgIHRoaXMuX2lzQWN0aXZlID0gdHJ1ZVxuICB9XG5cbiAgZGVhY3RpdmF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzQWN0aXZlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9pc0FjdGl2ZSA9IGZhbHNlXG4gICAgRXZlbnRIYW5kbGVyLm9mZihkb2N1bWVudCwgRVZFTlRfS0VZKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfaGFuZGxlRm9jdXNpbihldmVudCkge1xuICAgIGNvbnN0IHsgdHJhcEVsZW1lbnQgfSA9IHRoaXMuX2NvbmZpZ1xuXG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZG9jdW1lbnQgfHwgZXZlbnQudGFyZ2V0ID09PSB0cmFwRWxlbWVudCB8fCB0cmFwRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50cyA9IFNlbGVjdG9yRW5naW5lLmZvY3VzYWJsZUNoaWxkcmVuKHRyYXBFbGVtZW50KVxuXG4gICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdHJhcEVsZW1lbnQuZm9jdXMoKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbiA9PT0gVEFCX05BVl9CQUNLV0FSRCkge1xuICAgICAgZWxlbWVudHNbZWxlbWVudHMubGVuZ3RoIC0gMV0uZm9jdXMoKVxuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50c1swXS5mb2N1cygpXG4gICAgfVxuICB9XG5cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSBUQUJfS0VZKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9sYXN0VGFiTmF2RGlyZWN0aW9uID0gZXZlbnQuc2hpZnRLZXkgPyBUQUJfTkFWX0JBQ0tXQVJEIDogVEFCX05BVl9GT1JXQVJEXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRm9jdXNUcmFwXG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IG1vZGFsLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IHsgZGVmaW5lSlF1ZXJ5UGx1Z2luLCBnZXRFbGVtZW50RnJvbVNlbGVjdG9yLCBpc1JUTCwgaXNWaXNpYmxlLCByZWZsb3cgfSBmcm9tICcuL3V0aWwvaW5kZXgnXG5pbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgU2VsZWN0b3JFbmdpbmUgZnJvbSAnLi9kb20vc2VsZWN0b3ItZW5naW5lJ1xuaW1wb3J0IFNjcm9sbEJhckhlbHBlciBmcm9tICcuL3V0aWwvc2Nyb2xsYmFyJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcbmltcG9ydCBCYWNrZHJvcCBmcm9tICcuL3V0aWwvYmFja2Ryb3AnXG5pbXBvcnQgRm9jdXNUcmFwIGZyb20gJy4vdXRpbC9mb2N1c3RyYXAnXG5pbXBvcnQgeyBlbmFibGVEaXNtaXNzVHJpZ2dlciB9IGZyb20gJy4vdXRpbC9jb21wb25lbnQtZnVuY3Rpb25zJ1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUgPSAnbW9kYWwnXG5jb25zdCBEQVRBX0tFWSA9ICdicy5tb2RhbCdcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5jb25zdCBEQVRBX0FQSV9LRVkgPSAnLmRhdGEtYXBpJ1xuY29uc3QgRVNDQVBFX0tFWSA9ICdFc2NhcGUnXG5cbmNvbnN0IEVWRU5UX0hJREUgPSBgaGlkZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0hJREVfUFJFVkVOVEVEID0gYGhpZGVQcmV2ZW50ZWQke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURERU4gPSBgaGlkZGVuJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPVyA9IGBzaG93JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPV04gPSBgc2hvd24ke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9SRVNJWkUgPSBgcmVzaXplJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfQ0xJQ0tfRElTTUlTUyA9IGBjbGljay5kaXNtaXNzJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfTU9VU0VET1dOX0RJU01JU1MgPSBgbW91c2Vkb3duLmRpc21pc3Mke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9LRVlET1dOX0RJU01JU1MgPSBga2V5ZG93bi5kaXNtaXNzJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkgPSBgY2xpY2ske0VWRU5UX0tFWX0ke0RBVEFfQVBJX0tFWX1gXG5cbmNvbnN0IENMQVNTX05BTUVfT1BFTiA9ICdtb2RhbC1vcGVuJ1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFID0gJ2ZhZGUnXG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdydcbmNvbnN0IENMQVNTX05BTUVfU1RBVElDID0gJ21vZGFsLXN0YXRpYydcblxuY29uc3QgT1BFTl9TRUxFQ1RPUiA9ICcubW9kYWwuc2hvdydcbmNvbnN0IFNFTEVDVE9SX0RJQUxPRyA9ICcubW9kYWwtZGlhbG9nJ1xuY29uc3QgU0VMRUNUT1JfTU9EQUxfQk9EWSA9ICcubW9kYWwtYm9keSdcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFID0gJ1tkYXRhLWJzLXRvZ2dsZT1cIm1vZGFsXCJdJ1xuXG5jb25zdCBEZWZhdWx0ID0ge1xuICBiYWNrZHJvcDogdHJ1ZSxcbiAgZm9jdXM6IHRydWUsXG4gIGtleWJvYXJkOiB0cnVlXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBiYWNrZHJvcDogJyhib29sZWFufHN0cmluZyknLFxuICBmb2N1czogJ2Jvb2xlYW4nLFxuICBrZXlib2FyZDogJ2Jvb2xlYW4nXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIE1vZGFsIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZylcblxuICAgIHRoaXMuX2RpYWxvZyA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfRElBTE9HLCB0aGlzLl9lbGVtZW50KVxuICAgIHRoaXMuX2JhY2tkcm9wID0gdGhpcy5faW5pdGlhbGl6ZUJhY2tEcm9wKClcbiAgICB0aGlzLl9mb2N1c3RyYXAgPSB0aGlzLl9pbml0aWFsaXplRm9jdXNUcmFwKClcbiAgICB0aGlzLl9pc1Nob3duID0gZmFsc2VcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSBmYWxzZVxuICAgIHRoaXMuX3Njcm9sbEJhciA9IG5ldyBTY3JvbGxCYXJIZWxwZXIoKVxuXG4gICAgdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICB0b2dnbGUocmVsYXRlZFRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Nob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3cocmVsYXRlZFRhcmdldClcbiAgfVxuXG4gIHNob3cocmVsYXRlZFRhcmdldCkge1xuICAgIGlmICh0aGlzLl9pc1Nob3duIHx8IHRoaXMuX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPVywge1xuICAgICAgcmVsYXRlZFRhcmdldFxuICAgIH0pXG5cbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2lzU2hvd24gPSB0cnVlXG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZVxuXG4gICAgdGhpcy5fc2Nyb2xsQmFyLmhpZGUoKVxuXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfT1BFTilcblxuICAgIHRoaXMuX2FkanVzdERpYWxvZygpXG5cbiAgICB0aGlzLl9iYWNrZHJvcC5zaG93KCgpID0+IHRoaXMuX3Nob3dFbGVtZW50KHJlbGF0ZWRUYXJnZXQpKVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU2hvd24gfHwgdGhpcy5faXNUcmFuc2l0aW9uaW5nKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFKVxuXG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9pc1Nob3duID0gZmFsc2VcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSB0cnVlXG4gICAgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKVxuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVylcblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gdGhpcy5faGlkZU1vZGFsKCksIHRoaXMuX2VsZW1lbnQsIHRoaXMuX2lzQW5pbWF0ZWQoKSlcbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgZm9yIChjb25zdCBodG1sRWxlbWVudCBvZiBbd2luZG93LCB0aGlzLl9kaWFsb2ddKSB7XG4gICAgICBFdmVudEhhbmRsZXIub2ZmKGh0bWxFbGVtZW50LCBFVkVOVF9LRVkpXG4gICAgfVxuXG4gICAgdGhpcy5fYmFja2Ryb3AuZGlzcG9zZSgpXG4gICAgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKVxuICAgIHN1cGVyLmRpc3Bvc2UoKVxuICB9XG5cbiAgaGFuZGxlVXBkYXRlKCkge1xuICAgIHRoaXMuX2FkanVzdERpYWxvZygpXG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9pbml0aWFsaXplQmFja0Ryb3AoKSB7XG4gICAgcmV0dXJuIG5ldyBCYWNrZHJvcCh7XG4gICAgICBpc1Zpc2libGU6IEJvb2xlYW4odGhpcy5fY29uZmlnLmJhY2tkcm9wKSwgLy8gJ3N0YXRpYycgb3B0aW9uIHdpbGwgYmUgdHJhbnNsYXRlZCB0byB0cnVlLCBhbmQgYm9vbGVhbnMgd2lsbCBrZWVwIHRoZWlyIHZhbHVlLFxuICAgICAgaXNBbmltYXRlZDogdGhpcy5faXNBbmltYXRlZCgpXG4gICAgfSlcbiAgfVxuXG4gIF9pbml0aWFsaXplRm9jdXNUcmFwKCkge1xuICAgIHJldHVybiBuZXcgRm9jdXNUcmFwKHtcbiAgICAgIHRyYXBFbGVtZW50OiB0aGlzLl9lbGVtZW50XG4gICAgfSlcbiAgfVxuXG4gIF9zaG93RWxlbWVudChyZWxhdGVkVGFyZ2V0KSB7XG4gICAgLy8gdHJ5IHRvIGFwcGVuZCBkeW5hbWljIG1vZGFsXG4gICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZCh0aGlzLl9lbGVtZW50KVxuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jaydcbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKVxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgdHJ1ZSlcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgncm9sZScsICdkaWFsb2cnKVxuICAgIHRoaXMuX2VsZW1lbnQuc2Nyb2xsVG9wID0gMFxuXG4gICAgY29uc3QgbW9kYWxCb2R5ID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9NT0RBTF9CT0RZLCB0aGlzLl9kaWFsb2cpXG4gICAgaWYgKG1vZGFsQm9keSkge1xuICAgICAgbW9kYWxCb2R5LnNjcm9sbFRvcCA9IDBcbiAgICB9XG5cbiAgICByZWZsb3codGhpcy5fZWxlbWVudClcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1cpXG5cbiAgICBjb25zdCB0cmFuc2l0aW9uQ29tcGxldGUgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY29uZmlnLmZvY3VzKSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzdHJhcC5hY3RpdmF0ZSgpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTiwge1xuICAgICAgICByZWxhdGVkVGFyZ2V0XG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2sodHJhbnNpdGlvbkNvbXBsZXRlLCB0aGlzLl9kaWFsb2csIHRoaXMuX2lzQW5pbWF0ZWQoKSlcbiAgfVxuXG4gIF9hZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTl9ESVNNSVNTLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSBFU0NBUEVfS0VZKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fY29uZmlnLmtleWJvYXJkKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24oKVxuICAgIH0pXG5cbiAgICBFdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9SRVNJWkUsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc1Nob3duICYmICF0aGlzLl9pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgICAgdGhpcy5fYWRqdXN0RGlhbG9nKClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFRE9XTl9ESVNNSVNTLCBldmVudCA9PiB7XG4gICAgICAvLyBhIGJhZCB0cmljayB0byBzZWdyZWdhdGUgY2xpY2tzIHRoYXQgbWF5IHN0YXJ0IGluc2lkZSBkaWFsb2cgYnV0IGVuZCBvdXRzaWRlLCBhbmQgYXZvaWQgbGlzdGVuIHRvIHNjcm9sbGJhciBjbGlja3NcbiAgICAgIEV2ZW50SGFuZGxlci5vbmUodGhpcy5fZWxlbWVudCwgRVZFTlRfQ0xJQ0tfRElTTUlTUywgZXZlbnQyID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQgIT09IGV2ZW50LnRhcmdldCB8fCB0aGlzLl9lbGVtZW50ICE9PSBldmVudDIudGFyZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmJhY2tkcm9wID09PSAnc3RhdGljJykge1xuICAgICAgICAgIHRoaXMuX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24oKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCkge1xuICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIF9oaWRlTW9kYWwoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgdHJ1ZSlcbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1tb2RhbCcpXG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKVxuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlXG5cbiAgICB0aGlzLl9iYWNrZHJvcC5oaWRlKCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX09QRU4pXG4gICAgICB0aGlzLl9yZXNldEFkanVzdG1lbnRzKClcbiAgICAgIHRoaXMuX3Njcm9sbEJhci5yZXNldCgpXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4pXG4gICAgfSlcbiAgfVxuXG4gIF9pc0FuaW1hdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUpXG4gIH1cblxuICBfdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpIHtcbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFX1BSRVZFTlRFRClcbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGlzTW9kYWxPdmVyZmxvd2luZyA9IHRoaXMuX2VsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodFxuICAgIGNvbnN0IGluaXRpYWxPdmVyZmxvd1kgPSB0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93WVxuICAgIC8vIHJldHVybiBpZiB0aGUgZm9sbG93aW5nIGJhY2tncm91bmQgdHJhbnNpdGlvbiBoYXNuJ3QgeWV0IGNvbXBsZXRlZFxuICAgIGlmIChpbml0aWFsT3ZlcmZsb3dZID09PSAnaGlkZGVuJyB8fCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NUQVRJQykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNNb2RhbE92ZXJmbG93aW5nKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93WSA9ICdoaWRkZW4nXG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU1RBVElDKVxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU1RBVElDKVxuICAgICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gaW5pdGlhbE92ZXJmbG93WVxuICAgICAgfSwgdGhpcy5fZGlhbG9nKVxuICAgIH0sIHRoaXMuX2RpYWxvZylcblxuICAgIHRoaXMuX2VsZW1lbnQuZm9jdXMoKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCB0byBoYW5kbGUgb3ZlcmZsb3dpbmcgbW9kYWxzXG4gICAqL1xuXG4gIF9hZGp1c3REaWFsb2coKSB7XG4gICAgY29uc3QgaXNNb2RhbE92ZXJmbG93aW5nID0gdGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB0aGlzLl9zY3JvbGxCYXIuZ2V0V2lkdGgoKVxuICAgIGNvbnN0IGlzQm9keU92ZXJmbG93aW5nID0gc2Nyb2xsYmFyV2lkdGggPiAwXG5cbiAgICBpZiAoaXNCb2R5T3ZlcmZsb3dpbmcgJiYgIWlzTW9kYWxPdmVyZmxvd2luZykge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBpc1JUTCgpID8gJ3BhZGRpbmdMZWZ0JyA6ICdwYWRkaW5nUmlnaHQnXG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IGAke3Njcm9sbGJhcldpZHRofXB4YFxuICAgIH1cblxuICAgIGlmICghaXNCb2R5T3ZlcmZsb3dpbmcgJiYgaXNNb2RhbE92ZXJmbG93aW5nKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGlzUlRMKCkgPyAncGFkZGluZ1JpZ2h0JyA6ICdwYWRkaW5nTGVmdCdcbiAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGVbcHJvcGVydHldID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgXG4gICAgfVxuICB9XG5cbiAgX3Jlc2V0QWRqdXN0bWVudHMoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdCA9ICcnXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnJ1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnLCByZWxhdGVkVGFyZ2V0KSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gTW9kYWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpXG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYClcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKHJlbGF0ZWRUYXJnZXQpXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUsIGZ1bmN0aW9uIChldmVudCkge1xuICBjb25zdCB0YXJnZXQgPSBnZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRoaXMpXG5cbiAgaWYgKFsnQScsICdBUkVBJ10uaW5jbHVkZXModGhpcy50YWdOYW1lKSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIEV2ZW50SGFuZGxlci5vbmUodGFyZ2V0LCBFVkVOVF9TSE9XLCBzaG93RXZlbnQgPT4ge1xuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgLy8gb25seSByZWdpc3RlciBmb2N1cyByZXN0b3JlciBpZiBtb2RhbCB3aWxsIGFjdHVhbGx5IGdldCBzaG93blxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgRXZlbnRIYW5kbGVyLm9uZSh0YXJnZXQsIEVWRU5UX0hJRERFTiwgKCkgPT4ge1xuICAgICAgaWYgKGlzVmlzaWJsZSh0aGlzKSkge1xuICAgICAgICB0aGlzLmZvY3VzKClcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuXG4gIC8vIGF2b2lkIGNvbmZsaWN0IHdoZW4gY2xpY2tpbmcgbW9kYWwgdG9nZ2xlciB3aGlsZSBhbm90aGVyIG9uZSBpcyBvcGVuXG4gIGNvbnN0IGFscmVhZHlPcGVuID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShPUEVOX1NFTEVDVE9SKVxuICBpZiAoYWxyZWFkeU9wZW4pIHtcbiAgICBNb2RhbC5nZXRJbnN0YW5jZShhbHJlYWR5T3BlbikuaGlkZSgpXG4gIH1cblxuICBjb25zdCBkYXRhID0gTW9kYWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpXG5cbiAgZGF0YS50b2dnbGUodGhpcylcbn0pXG5cbmVuYWJsZURpc21pc3NUcmlnZ2VyKE1vZGFsKVxuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihNb2RhbClcblxuZXhwb3J0IGRlZmF1bHQgTW9kYWxcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogb2ZmY2FudmFzLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IHtcbiAgZGVmaW5lSlF1ZXJ5UGx1Z2luLFxuICBnZXRFbGVtZW50RnJvbVNlbGVjdG9yLFxuICBpc0Rpc2FibGVkLFxuICBpc1Zpc2libGVcbn0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IFNjcm9sbEJhckhlbHBlciBmcm9tICcuL3V0aWwvc2Nyb2xsYmFyJ1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcbmltcG9ydCBTZWxlY3RvckVuZ2luZSBmcm9tICcuL2RvbS9zZWxlY3Rvci1lbmdpbmUnXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAnLi91dGlsL2JhY2tkcm9wJ1xuaW1wb3J0IEZvY3VzVHJhcCBmcm9tICcuL3V0aWwvZm9jdXN0cmFwJ1xuaW1wb3J0IHsgZW5hYmxlRGlzbWlzc1RyaWdnZXIgfSBmcm9tICcuL3V0aWwvY29tcG9uZW50LWZ1bmN0aW9ucydcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ29mZmNhbnZhcydcbmNvbnN0IERBVEFfS0VZID0gJ2JzLm9mZmNhbnZhcydcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5jb25zdCBEQVRBX0FQSV9LRVkgPSAnLmRhdGEtYXBpJ1xuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSA9IGBsb2FkJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuY29uc3QgRVNDQVBFX0tFWSA9ICdFc2NhcGUnXG5cbmNvbnN0IENMQVNTX05BTUVfU0hPVyA9ICdzaG93J1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XSU5HID0gJ3Nob3dpbmcnXG5jb25zdCBDTEFTU19OQU1FX0hJRElORyA9ICdoaWRpbmcnXG5jb25zdCBDTEFTU19OQU1FX0JBQ0tEUk9QID0gJ29mZmNhbnZhcy1iYWNrZHJvcCdcbmNvbnN0IE9QRU5fU0VMRUNUT1IgPSAnLm9mZmNhbnZhcy5zaG93J1xuXG5jb25zdCBFVkVOVF9TSE9XID0gYHNob3cke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9TSE9XTiA9IGBzaG93biR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0hJREUgPSBgaGlkZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0hJREVfUFJFVkVOVEVEID0gYGhpZGVQcmV2ZW50ZWQke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURERU4gPSBgaGlkZGVuJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfUkVTSVpFID0gYHJlc2l6ZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJID0gYGNsaWNrJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuY29uc3QgRVZFTlRfS0VZRE9XTl9ESVNNSVNTID0gYGtleWRvd24uZGlzbWlzcyR7RVZFTlRfS0VZfWBcblxuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwib2ZmY2FudmFzXCJdJ1xuXG5jb25zdCBEZWZhdWx0ID0ge1xuICBiYWNrZHJvcDogdHJ1ZSxcbiAga2V5Ym9hcmQ6IHRydWUsXG4gIHNjcm9sbDogZmFsc2Vcbn1cblxuY29uc3QgRGVmYXVsdFR5cGUgPSB7XG4gIGJhY2tkcm9wOiAnKGJvb2xlYW58c3RyaW5nKScsXG4gIGtleWJvYXJkOiAnYm9vbGVhbicsXG4gIHNjcm9sbDogJ2Jvb2xlYW4nXG59XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIE9mZmNhbnZhcyBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpXG5cbiAgICB0aGlzLl9pc1Nob3duID0gZmFsc2VcbiAgICB0aGlzLl9iYWNrZHJvcCA9IHRoaXMuX2luaXRpYWxpemVCYWNrRHJvcCgpXG4gICAgdGhpcy5fZm9jdXN0cmFwID0gdGhpcy5faW5pdGlhbGl6ZUZvY3VzVHJhcCgpXG4gICAgdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlXG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUVcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICB0b2dnbGUocmVsYXRlZFRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Nob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3cocmVsYXRlZFRhcmdldClcbiAgfVxuXG4gIHNob3cocmVsYXRlZFRhcmdldCkge1xuICAgIGlmICh0aGlzLl9pc1Nob3duKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XLCB7IHJlbGF0ZWRUYXJnZXQgfSlcblxuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5faXNTaG93biA9IHRydWVcbiAgICB0aGlzLl9iYWNrZHJvcC5zaG93KClcblxuICAgIGlmICghdGhpcy5fY29uZmlnLnNjcm9sbCkge1xuICAgICAgbmV3IFNjcm9sbEJhckhlbHBlcigpLmhpZGUoKVxuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgdHJ1ZSlcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgncm9sZScsICdkaWFsb2cnKVxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1dJTkcpXG5cbiAgICBjb25zdCBjb21wbGV0ZUNhbGxCYWNrID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9jb25maWcuc2Nyb2xsIHx8IHRoaXMuX2NvbmZpZy5iYWNrZHJvcCkge1xuICAgICAgICB0aGlzLl9mb2N1c3RyYXAuYWN0aXZhdGUoKVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XKVxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPV0lORylcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOLCB7IHJlbGF0ZWRUYXJnZXQgfSlcbiAgICB9XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlQ2FsbEJhY2ssIHRoaXMuX2VsZW1lbnQsIHRydWUpXG4gIH1cblxuICBoaWRlKCkge1xuICAgIGlmICghdGhpcy5faXNTaG93bikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSlcblxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKVxuICAgIHRoaXMuX2VsZW1lbnQuYmx1cigpXG4gICAgdGhpcy5faXNTaG93biA9IGZhbHNlXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfSElESU5HKVxuICAgIHRoaXMuX2JhY2tkcm9wLmhpZGUoKVxuXG4gICAgY29uc3QgY29tcGxldGVDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1csIENMQVNTX05BTUVfSElESU5HKVxuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtbW9kYWwnKVxuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKVxuXG4gICAgICBpZiAoIXRoaXMuX2NvbmZpZy5zY3JvbGwpIHtcbiAgICAgICAgbmV3IFNjcm9sbEJhckhlbHBlcigpLnJlc2V0KClcbiAgICAgIH1cblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElEREVOKVxuICAgIH1cblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGVDYWxsYmFjaywgdGhpcy5fZWxlbWVudCwgdHJ1ZSlcbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5fYmFja2Ryb3AuZGlzcG9zZSgpXG4gICAgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKVxuICAgIHN1cGVyLmRpc3Bvc2UoKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfaW5pdGlhbGl6ZUJhY2tEcm9wKCkge1xuICAgIGNvbnN0IGNsaWNrQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY29uZmlnLmJhY2tkcm9wID09PSAnc3RhdGljJykge1xuICAgICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFX1BSRVZFTlRFRClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGlkZSgpXG4gICAgfVxuXG4gICAgLy8gJ3N0YXRpYycgb3B0aW9uIHdpbGwgYmUgdHJhbnNsYXRlZCB0byB0cnVlLCBhbmQgYm9vbGVhbnMgd2lsbCBrZWVwIHRoZWlyIHZhbHVlXG4gICAgY29uc3QgaXNWaXNpYmxlID0gQm9vbGVhbih0aGlzLl9jb25maWcuYmFja2Ryb3ApXG5cbiAgICByZXR1cm4gbmV3IEJhY2tkcm9wKHtcbiAgICAgIGNsYXNzTmFtZTogQ0xBU1NfTkFNRV9CQUNLRFJPUCxcbiAgICAgIGlzVmlzaWJsZSxcbiAgICAgIGlzQW5pbWF0ZWQ6IHRydWUsXG4gICAgICByb290RWxlbWVudDogdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLFxuICAgICAgY2xpY2tDYWxsYmFjazogaXNWaXNpYmxlID8gY2xpY2tDYWxsYmFjayA6IG51bGxcbiAgICB9KVxuICB9XG5cbiAgX2luaXRpYWxpemVGb2N1c1RyYXAoKSB7XG4gICAgcmV0dXJuIG5ldyBGb2N1c1RyYXAoe1xuICAgICAgdHJhcEVsZW1lbnQ6IHRoaXMuX2VsZW1lbnRcbiAgICB9KVxuICB9XG5cbiAgX2FkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVlET1dOX0RJU01JU1MsIGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgIT09IEVTQ0FQRV9LRVkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fY29uZmlnLmtleWJvYXJkKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREVfUFJFVkVOVEVEKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGhpcy5oaWRlKClcbiAgICB9KVxuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gT2ZmY2FudmFzLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSh0aGlzKVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEksIFNFTEVDVE9SX0RBVEFfVE9HR0xFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKVxuXG4gIGlmIChbJ0EnLCAnQVJFQSddLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBpZiAoaXNEaXNhYmxlZCh0aGlzKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgRXZlbnRIYW5kbGVyLm9uZSh0YXJnZXQsIEVWRU5UX0hJRERFTiwgKCkgPT4ge1xuICAgIC8vIGZvY3VzIG9uIHRyaWdnZXIgd2hlbiBpdCBpcyBjbG9zZWRcbiAgICBpZiAoaXNWaXNpYmxlKHRoaXMpKSB7XG4gICAgICB0aGlzLmZvY3VzKClcbiAgICB9XG4gIH0pXG5cbiAgLy8gYXZvaWQgY29uZmxpY3Qgd2hlbiBjbGlja2luZyBhIHRvZ2dsZXIgb2YgYW4gb2ZmY2FudmFzLCB3aGlsZSBhbm90aGVyIGlzIG9wZW5cbiAgY29uc3QgYWxyZWFkeU9wZW4gPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKE9QRU5fU0VMRUNUT1IpXG4gIGlmIChhbHJlYWR5T3BlbiAmJiBhbHJlYWR5T3BlbiAhPT0gdGFyZ2V0KSB7XG4gICAgT2ZmY2FudmFzLmdldEluc3RhbmNlKGFscmVhZHlPcGVuKS5oaWRlKClcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBPZmZjYW52YXMuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpXG4gIGRhdGEudG9nZ2xlKHRoaXMpXG59KVxuXG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJLCAoKSA9PiB7XG4gIGZvciAoY29uc3Qgc2VsZWN0b3Igb2YgU2VsZWN0b3JFbmdpbmUuZmluZChPUEVOX1NFTEVDVE9SKSkge1xuICAgIE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKHNlbGVjdG9yKS5zaG93KClcbiAgfVxufSlcblxuRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfUkVTSVpFLCAoKSA9PiB7XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBTZWxlY3RvckVuZ2luZS5maW5kKCdbYXJpYS1tb2RhbF1bY2xhc3MqPXNob3ddW2NsYXNzKj1vZmZjYW52YXMtXScpKSB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gIT09ICdmaXhlZCcpIHtcbiAgICAgIE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQpLmhpZGUoKVxuICAgIH1cbiAgfVxufSlcblxuZW5hYmxlRGlzbWlzc1RyaWdnZXIoT2ZmY2FudmFzKVxuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihPZmZjYW52YXMpXG5cbmV4cG9ydCBkZWZhdWx0IE9mZmNhbnZhc1xuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB1dGlsL3Nhbml0aXplci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmNvbnN0IHVyaUF0dHJpYnV0ZXMgPSBuZXcgU2V0KFtcbiAgJ2JhY2tncm91bmQnLFxuICAnY2l0ZScsXG4gICdocmVmJyxcbiAgJ2l0ZW10eXBlJyxcbiAgJ2xvbmdkZXNjJyxcbiAgJ3Bvc3RlcicsXG4gICdzcmMnLFxuICAneGxpbms6aHJlZidcbl0pXG5cbmNvbnN0IEFSSUFfQVRUUklCVVRFX1BBVFRFUk4gPSAvXmFyaWEtW1xcdy1dKiQvaVxuXG4vKipcbiAqIEEgcGF0dGVybiB0aGF0IHJlY29nbml6ZXMgYSBjb21tb25seSB1c2VmdWwgc3Vic2V0IG9mIFVSTHMgdGhhdCBhcmUgc2FmZS5cbiAqXG4gKiBTaG91dC1vdXQgdG8gQW5ndWxhciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvMTIuMi54L3BhY2thZ2VzL2NvcmUvc3JjL3Nhbml0aXphdGlvbi91cmxfc2FuaXRpemVyLnRzXG4gKi9cbmNvbnN0IFNBRkVfVVJMX1BBVFRFUk4gPSAvXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlfHNtcyk6fFteIyYvOj9dKig/OlsjLz9dfCQpKS9pXG5cbi8qKlxuICogQSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBzYWZlIGRhdGEgVVJMcy4gT25seSBtYXRjaGVzIGltYWdlLCB2aWRlbyBhbmQgYXVkaW8gdHlwZXMuXG4gKlxuICogU2hvdXQtb3V0IHRvIEFuZ3VsYXIgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzEyLjIueC9wYWNrYWdlcy9jb3JlL3NyYy9zYW5pdGl6YXRpb24vdXJsX3Nhbml0aXplci50c1xuICovXG5jb25zdCBEQVRBX1VSTF9QQVRURVJOID0gL15kYXRhOig/OmltYWdlXFwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1xcLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtKXxhdWRpb1xcLyg/Om1wM3xvZ2F8b2dnfG9wdXMpKTtiYXNlNjQsW1xcZCsvYS16XSs9KiQvaVxuXG5jb25zdCBhbGxvd2VkQXR0cmlidXRlID0gKGF0dHJpYnV0ZSwgYWxsb3dlZEF0dHJpYnV0ZUxpc3QpID0+IHtcbiAgY29uc3QgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXG5cbiAgaWYgKGFsbG93ZWRBdHRyaWJ1dGVMaXN0LmluY2x1ZGVzKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgaWYgKHVyaUF0dHJpYnV0ZXMuaGFzKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihTQUZFX1VSTF9QQVRURVJOLnRlc3QoYXR0cmlidXRlLm5vZGVWYWx1ZSkgfHwgREFUQV9VUkxfUEFUVEVSTi50ZXN0KGF0dHJpYnV0ZS5ub2RlVmFsdWUpKVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBDaGVjayBpZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB2YWxpZGF0ZXMgdGhlIGF0dHJpYnV0ZS5cbiAgcmV0dXJuIGFsbG93ZWRBdHRyaWJ1dGVMaXN0LmZpbHRlcihhdHRyaWJ1dGVSZWdleCA9PiBhdHRyaWJ1dGVSZWdleCBpbnN0YW5jZW9mIFJlZ0V4cClcbiAgICAuc29tZShyZWdleCA9PiByZWdleC50ZXN0KGF0dHJpYnV0ZU5hbWUpKVxufVxuXG5leHBvcnQgY29uc3QgRGVmYXVsdEFsbG93bGlzdCA9IHtcbiAgLy8gR2xvYmFsIGF0dHJpYnV0ZXMgYWxsb3dlZCBvbiBhbnkgc3VwcGxpZWQgZWxlbWVudCBiZWxvdy5cbiAgJyonOiBbJ2NsYXNzJywgJ2RpcicsICdpZCcsICdsYW5nJywgJ3JvbGUnLCBBUklBX0FUVFJJQlVURV9QQVRURVJOXSxcbiAgYTogWyd0YXJnZXQnLCAnaHJlZicsICd0aXRsZScsICdyZWwnXSxcbiAgYXJlYTogW10sXG4gIGI6IFtdLFxuICBicjogW10sXG4gIGNvbDogW10sXG4gIGNvZGU6IFtdLFxuICBkaXY6IFtdLFxuICBlbTogW10sXG4gIGhyOiBbXSxcbiAgaDE6IFtdLFxuICBoMjogW10sXG4gIGgzOiBbXSxcbiAgaDQ6IFtdLFxuICBoNTogW10sXG4gIGg2OiBbXSxcbiAgaTogW10sXG4gIGltZzogWydzcmMnLCAnc3Jjc2V0JywgJ2FsdCcsICd0aXRsZScsICd3aWR0aCcsICdoZWlnaHQnXSxcbiAgbGk6IFtdLFxuICBvbDogW10sXG4gIHA6IFtdLFxuICBwcmU6IFtdLFxuICBzOiBbXSxcbiAgc21hbGw6IFtdLFxuICBzcGFuOiBbXSxcbiAgc3ViOiBbXSxcbiAgc3VwOiBbXSxcbiAgc3Ryb25nOiBbXSxcbiAgdTogW10sXG4gIHVsOiBbXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVIdG1sKHVuc2FmZUh0bWwsIGFsbG93TGlzdCwgc2FuaXRpemVGdW5jdGlvbikge1xuICBpZiAoIXVuc2FmZUh0bWwubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHVuc2FmZUh0bWxcbiAgfVxuXG4gIGlmIChzYW5pdGl6ZUZ1bmN0aW9uICYmIHR5cGVvZiBzYW5pdGl6ZUZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHNhbml0aXplRnVuY3Rpb24odW5zYWZlSHRtbClcbiAgfVxuXG4gIGNvbnN0IGRvbVBhcnNlciA9IG5ldyB3aW5kb3cuRE9NUGFyc2VyKClcbiAgY29uc3QgY3JlYXRlZERvY3VtZW50ID0gZG9tUGFyc2VyLnBhcnNlRnJvbVN0cmluZyh1bnNhZmVIdG1sLCAndGV4dC9odG1sJylcbiAgY29uc3QgZWxlbWVudHMgPSBbXS5jb25jYXQoLi4uY3JlYXRlZERvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnKicpKVxuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgIGNvbnN0IGVsZW1lbnROYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXG5cbiAgICBpZiAoIU9iamVjdC5rZXlzKGFsbG93TGlzdCkuaW5jbHVkZXMoZWxlbWVudE5hbWUpKSB7XG4gICAgICBlbGVtZW50LnJlbW92ZSgpXG5cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgYXR0cmlidXRlTGlzdCA9IFtdLmNvbmNhdCguLi5lbGVtZW50LmF0dHJpYnV0ZXMpXG4gICAgY29uc3QgYWxsb3dlZEF0dHJpYnV0ZXMgPSBbXS5jb25jYXQoYWxsb3dMaXN0WycqJ10gfHwgW10sIGFsbG93TGlzdFtlbGVtZW50TmFtZV0gfHwgW10pXG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVMaXN0KSB7XG4gICAgICBpZiAoIWFsbG93ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLCBhbGxvd2VkQXR0cmlidXRlcykpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlLm5vZGVOYW1lKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjcmVhdGVkRG9jdW1lbnQuYm9keS5pbm5lckhUTUxcbn1cbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogdXRpbC90ZW1wbGF0ZS1mYWN0b3J5LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IHsgRGVmYXVsdEFsbG93bGlzdCwgc2FuaXRpemVIdG1sIH0gZnJvbSAnLi9zYW5pdGl6ZXInXG5pbXBvcnQgeyBnZXRFbGVtZW50LCBpc0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2luZGV4J1xuaW1wb3J0IFNlbGVjdG9yRW5naW5lIGZyb20gJy4uL2RvbS9zZWxlY3Rvci1lbmdpbmUnXG5pbXBvcnQgQ29uZmlnIGZyb20gJy4vY29uZmlnJ1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUgPSAnVGVtcGxhdGVGYWN0b3J5J1xuXG5jb25zdCBEZWZhdWx0ID0ge1xuICBhbGxvd0xpc3Q6IERlZmF1bHRBbGxvd2xpc3QsXG4gIGNvbnRlbnQ6IHt9LCAvLyB7IHNlbGVjdG9yIDogdGV4dCAsICBzZWxlY3RvcjIgOiB0ZXh0MiAsIH1cbiAgZXh0cmFDbGFzczogJycsXG4gIGh0bWw6IGZhbHNlLFxuICBzYW5pdGl6ZTogdHJ1ZSxcbiAgc2FuaXRpemVGbjogbnVsbCxcbiAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2Pidcbn1cblxuY29uc3QgRGVmYXVsdFR5cGUgPSB7XG4gIGFsbG93TGlzdDogJ29iamVjdCcsXG4gIGNvbnRlbnQ6ICdvYmplY3QnLFxuICBleHRyYUNsYXNzOiAnKHN0cmluZ3xmdW5jdGlvbiknLFxuICBodG1sOiAnYm9vbGVhbicsXG4gIHNhbml0aXplOiAnYm9vbGVhbicsXG4gIHNhbml0aXplRm46ICcobnVsbHxmdW5jdGlvbiknLFxuICB0ZW1wbGF0ZTogJ3N0cmluZydcbn1cblxuY29uc3QgRGVmYXVsdENvbnRlbnRUeXBlID0ge1xuICBlbnRyeTogJyhzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbnxudWxsKScsXG4gIHNlbGVjdG9yOiAnKHN0cmluZ3xlbGVtZW50KSdcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgVGVtcGxhdGVGYWN0b3J5IGV4dGVuZHMgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpXG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gUHVibGljXG4gIGdldENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fY29uZmlnLmNvbnRlbnQpXG4gICAgICAubWFwKGNvbmZpZyA9PiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihjb25maWcpKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICB9XG5cbiAgaGFzQ29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDb250ZW50KCkubGVuZ3RoID4gMFxuICB9XG5cbiAgY2hhbmdlQ29udGVudChjb250ZW50KSB7XG4gICAgdGhpcy5fY2hlY2tDb250ZW50KGNvbnRlbnQpXG4gICAgdGhpcy5fY29uZmlnLmNvbnRlbnQgPSB7IC4uLnRoaXMuX2NvbmZpZy5jb250ZW50LCAuLi5jb250ZW50IH1cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdG9IdG1sKCkge1xuICAgIGNvbnN0IHRlbXBsYXRlV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgdGVtcGxhdGVXcmFwcGVyLmlubmVySFRNTCA9IHRoaXMuX21heWJlU2FuaXRpemUodGhpcy5fY29uZmlnLnRlbXBsYXRlKVxuXG4gICAgZm9yIChjb25zdCBbc2VsZWN0b3IsIHRleHRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2NvbmZpZy5jb250ZW50KSkge1xuICAgICAgdGhpcy5fc2V0Q29udGVudCh0ZW1wbGF0ZVdyYXBwZXIsIHRleHQsIHNlbGVjdG9yKVxuICAgIH1cblxuICAgIGNvbnN0IHRlbXBsYXRlID0gdGVtcGxhdGVXcmFwcGVyLmNoaWxkcmVuWzBdXG4gICAgY29uc3QgZXh0cmFDbGFzcyA9IHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5leHRyYUNsYXNzKVxuXG4gICAgaWYgKGV4dHJhQ2xhc3MpIHtcbiAgICAgIHRlbXBsYXRlLmNsYXNzTGlzdC5hZGQoLi4uZXh0cmFDbGFzcy5zcGxpdCgnICcpKVxuICAgIH1cblxuICAgIHJldHVybiB0ZW1wbGF0ZVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfdHlwZUNoZWNrQ29uZmlnKGNvbmZpZykge1xuICAgIHN1cGVyLl90eXBlQ2hlY2tDb25maWcoY29uZmlnKVxuICAgIHRoaXMuX2NoZWNrQ29udGVudChjb25maWcuY29udGVudClcbiAgfVxuXG4gIF9jaGVja0NvbnRlbnQoYXJnKSB7XG4gICAgZm9yIChjb25zdCBbc2VsZWN0b3IsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKGFyZykpIHtcbiAgICAgIHN1cGVyLl90eXBlQ2hlY2tDb25maWcoeyBzZWxlY3RvciwgZW50cnk6IGNvbnRlbnQgfSwgRGVmYXVsdENvbnRlbnRUeXBlKVxuICAgIH1cbiAgfVxuXG4gIF9zZXRDb250ZW50KHRlbXBsYXRlLCBjb250ZW50LCBzZWxlY3Rvcikge1xuICAgIGNvbnN0IHRlbXBsYXRlRWxlbWVudCA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoc2VsZWN0b3IsIHRlbXBsYXRlKVxuXG4gICAgaWYgKCF0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnRlbnQgPSB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihjb250ZW50KVxuXG4gICAgaWYgKCFjb250ZW50KSB7XG4gICAgICB0ZW1wbGF0ZUVsZW1lbnQucmVtb3ZlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc0VsZW1lbnQoY29udGVudCkpIHtcbiAgICAgIHRoaXMuX3B1dEVsZW1lbnRJblRlbXBsYXRlKGdldEVsZW1lbnQoY29udGVudCksIHRlbXBsYXRlRWxlbWVudClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25maWcuaHRtbCkge1xuICAgICAgdGVtcGxhdGVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuX21heWJlU2FuaXRpemUoY29udGVudClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRlbXBsYXRlRWxlbWVudC50ZXh0Q29udGVudCA9IGNvbnRlbnRcbiAgfVxuXG4gIF9tYXliZVNhbml0aXplKGFyZykge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuc2FuaXRpemUgPyBzYW5pdGl6ZUh0bWwoYXJnLCB0aGlzLl9jb25maWcuYWxsb3dMaXN0LCB0aGlzLl9jb25maWcuc2FuaXRpemVGbikgOiBhcmdcbiAgfVxuXG4gIF9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJyA/IGFyZyh0aGlzKSA6IGFyZ1xuICB9XG5cbiAgX3B1dEVsZW1lbnRJblRlbXBsYXRlKGVsZW1lbnQsIHRlbXBsYXRlRWxlbWVudCkge1xuICAgIGlmICh0aGlzLl9jb25maWcuaHRtbCkge1xuICAgICAgdGVtcGxhdGVFbGVtZW50LmlubmVySFRNTCA9ICcnXG4gICAgICB0ZW1wbGF0ZUVsZW1lbnQuYXBwZW5kKGVsZW1lbnQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0ZW1wbGF0ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBlbGVtZW50LnRleHRDb250ZW50XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVGYWN0b3J5XG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHRvb2x0aXAuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5pbXBvcnQgKiBhcyBQb3BwZXIgZnJvbSAnQHBvcHBlcmpzL2NvcmUnXG5pbXBvcnQgeyBkZWZpbmVKUXVlcnlQbHVnaW4sIGZpbmRTaGFkb3dSb290LCBnZXRFbGVtZW50LCBnZXRVSUQsIGlzUlRMLCBub29wIH0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IHsgRGVmYXVsdEFsbG93bGlzdCB9IGZyb20gJy4vdXRpbC9zYW5pdGl6ZXInXG5pbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgTWFuaXB1bGF0b3IgZnJvbSAnLi9kb20vbWFuaXB1bGF0b3InXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tICcuL2Jhc2UtY29tcG9uZW50J1xuaW1wb3J0IFRlbXBsYXRlRmFjdG9yeSBmcm9tICcuL3V0aWwvdGVtcGxhdGUtZmFjdG9yeSdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ3Rvb2x0aXAnXG5jb25zdCBESVNBTExPV0VEX0FUVFJJQlVURVMgPSBuZXcgU2V0KFsnc2FuaXRpemUnLCAnYWxsb3dMaXN0JywgJ3Nhbml0aXplRm4nXSlcblxuY29uc3QgQ0xBU1NfTkFNRV9GQURFID0gJ2ZhZGUnXG5jb25zdCBDTEFTU19OQU1FX01PREFMID0gJ21vZGFsJ1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XID0gJ3Nob3cnXG5cbmNvbnN0IFNFTEVDVE9SX1RPT0xUSVBfSU5ORVIgPSAnLnRvb2x0aXAtaW5uZXInXG5jb25zdCBTRUxFQ1RPUl9NT0RBTCA9IGAuJHtDTEFTU19OQU1FX01PREFMfWBcblxuY29uc3QgRVZFTlRfTU9EQUxfSElERSA9ICdoaWRlLmJzLm1vZGFsJ1xuXG5jb25zdCBUUklHR0VSX0hPVkVSID0gJ2hvdmVyJ1xuY29uc3QgVFJJR0dFUl9GT0NVUyA9ICdmb2N1cydcbmNvbnN0IFRSSUdHRVJfQ0xJQ0sgPSAnY2xpY2snXG5jb25zdCBUUklHR0VSX01BTlVBTCA9ICdtYW51YWwnXG5cbmNvbnN0IEVWRU5UX0hJREUgPSAnaGlkZSdcbmNvbnN0IEVWRU5UX0hJRERFTiA9ICdoaWRkZW4nXG5jb25zdCBFVkVOVF9TSE9XID0gJ3Nob3cnXG5jb25zdCBFVkVOVF9TSE9XTiA9ICdzaG93bidcbmNvbnN0IEVWRU5UX0lOU0VSVEVEID0gJ2luc2VydGVkJ1xuY29uc3QgRVZFTlRfQ0xJQ0sgPSAnY2xpY2snXG5jb25zdCBFVkVOVF9GT0NVU0lOID0gJ2ZvY3VzaW4nXG5jb25zdCBFVkVOVF9GT0NVU09VVCA9ICdmb2N1c291dCdcbmNvbnN0IEVWRU5UX01PVVNFRU5URVIgPSAnbW91c2VlbnRlcidcbmNvbnN0IEVWRU5UX01PVVNFTEVBVkUgPSAnbW91c2VsZWF2ZSdcblxuY29uc3QgQXR0YWNobWVudE1hcCA9IHtcbiAgQVVUTzogJ2F1dG8nLFxuICBUT1A6ICd0b3AnLFxuICBSSUdIVDogaXNSVEwoKSA/ICdsZWZ0JyA6ICdyaWdodCcsXG4gIEJPVFRPTTogJ2JvdHRvbScsXG4gIExFRlQ6IGlzUlRMKCkgPyAncmlnaHQnIDogJ2xlZnQnXG59XG5cbmNvbnN0IERlZmF1bHQgPSB7XG4gIGFsbG93TGlzdDogRGVmYXVsdEFsbG93bGlzdCxcbiAgYW5pbWF0aW9uOiB0cnVlLFxuICBib3VuZGFyeTogJ2NsaXBwaW5nUGFyZW50cycsXG4gIGNvbnRhaW5lcjogZmFsc2UsXG4gIGN1c3RvbUNsYXNzOiAnJyxcbiAgZGVsYXk6IDAsXG4gIGZhbGxiYWNrUGxhY2VtZW50czogWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgaHRtbDogZmFsc2UsXG4gIG9mZnNldDogWzAsIDBdLFxuICBwbGFjZW1lbnQ6ICd0b3AnLFxuICBwb3BwZXJDb25maWc6IG51bGwsXG4gIHNhbml0aXplOiB0cnVlLFxuICBzYW5pdGl6ZUZuOiBudWxsLFxuICBzZWxlY3RvcjogZmFsc2UsXG4gIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cInRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPicgK1xuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJ0b29sdGlwLWFycm93XCI+PC9kaXY+JyArXG4gICAgICAgICAgICAnPGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48L2Rpdj4nICtcbiAgICAgICAgICAgICc8L2Rpdj4nLFxuICB0aXRsZTogJycsXG4gIHRyaWdnZXI6ICdob3ZlciBmb2N1cydcbn1cblxuY29uc3QgRGVmYXVsdFR5cGUgPSB7XG4gIGFsbG93TGlzdDogJ29iamVjdCcsXG4gIGFuaW1hdGlvbjogJ2Jvb2xlYW4nLFxuICBib3VuZGFyeTogJyhzdHJpbmd8ZWxlbWVudCknLFxuICBjb250YWluZXI6ICcoc3RyaW5nfGVsZW1lbnR8Ym9vbGVhbiknLFxuICBjdXN0b21DbGFzczogJyhzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgZGVsYXk6ICcobnVtYmVyfG9iamVjdCknLFxuICBmYWxsYmFja1BsYWNlbWVudHM6ICdhcnJheScsXG4gIGh0bWw6ICdib29sZWFuJyxcbiAgb2Zmc2V0OiAnKGFycmF5fHN0cmluZ3xmdW5jdGlvbiknLFxuICBwbGFjZW1lbnQ6ICcoc3RyaW5nfGZ1bmN0aW9uKScsXG4gIHBvcHBlckNvbmZpZzogJyhudWxsfG9iamVjdHxmdW5jdGlvbiknLFxuICBzYW5pdGl6ZTogJ2Jvb2xlYW4nLFxuICBzYW5pdGl6ZUZuOiAnKG51bGx8ZnVuY3Rpb24pJyxcbiAgc2VsZWN0b3I6ICcoc3RyaW5nfGJvb2xlYW4pJyxcbiAgdGVtcGxhdGU6ICdzdHJpbmcnLFxuICB0aXRsZTogJyhzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbiknLFxuICB0cmlnZ2VyOiAnc3RyaW5nJ1xufVxuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBUb29sdGlwIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIGlmICh0eXBlb2YgUG9wcGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9vdHN0cmFwXFwncyB0b29sdGlwcyByZXF1aXJlIFBvcHBlciAoaHR0cHM6Ly9wb3BwZXIuanMub3JnKScpXG4gICAgfVxuXG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKVxuXG4gICAgLy8gUHJpdmF0ZVxuICAgIHRoaXMuX2lzRW5hYmxlZCA9IHRydWVcbiAgICB0aGlzLl90aW1lb3V0ID0gMFxuICAgIHRoaXMuX2lzSG92ZXJlZCA9IG51bGxcbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyID0ge31cbiAgICB0aGlzLl9wb3BwZXIgPSBudWxsXG4gICAgdGhpcy5fdGVtcGxhdGVGYWN0b3J5ID0gbnVsbFxuICAgIHRoaXMuX25ld0NvbnRlbnQgPSBudWxsXG5cbiAgICAvLyBQcm90ZWN0ZWRcbiAgICB0aGlzLnRpcCA9IG51bGxcblxuICAgIHRoaXMuX3NldExpc3RlbmVycygpXG5cbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5zZWxlY3Rvcikge1xuICAgICAgdGhpcy5fZml4VGl0bGUoKVxuICAgIH1cbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZVxuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBQdWJsaWNcbiAgZW5hYmxlKCkge1xuICAgIHRoaXMuX2lzRW5hYmxlZCA9IHRydWVcbiAgfVxuXG4gIGRpc2FibGUoKSB7XG4gICAgdGhpcy5faXNFbmFibGVkID0gZmFsc2VcbiAgfVxuXG4gIHRvZ2dsZUVuYWJsZWQoKSB7XG4gICAgdGhpcy5faXNFbmFibGVkID0gIXRoaXMuX2lzRW5hYmxlZFxuICB9XG5cbiAgdG9nZ2xlKCkge1xuICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyLmNsaWNrID0gIXRoaXMuX2FjdGl2ZVRyaWdnZXIuY2xpY2tcbiAgICBpZiAodGhpcy5faXNTaG93bigpKSB7XG4gICAgICB0aGlzLl9sZWF2ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9lbnRlcigpXG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KVxuXG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LmNsb3Nlc3QoU0VMRUNUT1JfTU9EQUwpLCBFVkVOVF9NT0RBTF9ISURFLCB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyKVxuXG4gICAgaWYgKHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJykpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCd0aXRsZScsIHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJykpXG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zZVBvcHBlcigpXG4gICAgc3VwZXIuZGlzcG9zZSgpXG4gIH1cblxuICBzaG93KCkge1xuICAgIGlmICh0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPT09ICdub25lJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgdXNlIHNob3cgb24gdmlzaWJsZSBlbGVtZW50cycpXG4gICAgfVxuXG4gICAgaWYgKCEodGhpcy5faXNXaXRoQ29udGVudCgpICYmIHRoaXMuX2lzRW5hYmxlZCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX1NIT1cpKVxuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSBmaW5kU2hhZG93Um9vdCh0aGlzLl9lbGVtZW50KVxuICAgIGNvbnN0IGlzSW5UaGVEb20gPSAoc2hhZG93Um9vdCB8fCB0aGlzLl9lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5jb250YWlucyh0aGlzLl9lbGVtZW50KVxuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkIHx8ICFpc0luVGhlRG9tKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB0b2RvIHY2IHJlbW92ZSB0aGlzIE9SIG1ha2UgaXQgb3B0aW9uYWxcbiAgICB0aGlzLl9kaXNwb3NlUG9wcGVyKClcblxuICAgIGNvbnN0IHRpcCA9IHRoaXMuX2dldFRpcEVsZW1lbnQoKVxuXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCB0aXAuZ2V0QXR0cmlidXRlKCdpZCcpKVxuXG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHRoaXMuX2NvbmZpZ1xuXG4gICAgaWYgKCF0aGlzLl9lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHRoaXMudGlwKSkge1xuICAgICAgY29udGFpbmVyLmFwcGVuZCh0aXApXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9JTlNFUlRFRCkpXG4gICAgfVxuXG4gICAgdGhpcy5fcG9wcGVyID0gdGhpcy5fY3JlYXRlUG9wcGVyKHRpcClcblxuICAgIHRpcC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVylcblxuICAgIC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSBhZGQgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHRvIHRoZSBib2R5J3MgaW1tZWRpYXRlIGNoaWxkcmVuO1xuICAgIC8vIG9ubHkgbmVlZGVkIGJlY2F1c2Ugb2YgYnJva2VuIGV2ZW50IGRlbGVnYXRpb24gb24gaU9TXG4gICAgLy8gaHR0cHM6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDE0LzAyL21vdXNlX2V2ZW50X2J1Yi5odG1sXG4gICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSkge1xuICAgICAgICBFdmVudEhhbmRsZXIub24oZWxlbWVudCwgJ21vdXNlb3ZlcicsIG5vb3ApXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9TSE9XTikpXG5cbiAgICAgIGlmICh0aGlzLl9pc0hvdmVyZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX2xlYXZlKClcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2VcbiAgICB9XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLnRpcCwgdGhpcy5faXNBbmltYXRlZCgpKVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfSElERSkpXG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0aXAgPSB0aGlzLl9nZXRUaXBFbGVtZW50KClcbiAgICB0aXAuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1cpXG5cbiAgICAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgcmVtb3ZlIHRoZSBleHRyYVxuICAgIC8vIGVtcHR5IG1vdXNlb3ZlciBsaXN0ZW5lcnMgd2UgYWRkZWQgZm9yIGlPUyBzdXBwb3J0XG4gICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSkge1xuICAgICAgICBFdmVudEhhbmRsZXIub2ZmKGVsZW1lbnQsICdtb3VzZW92ZXInLCBub29wKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2FjdGl2ZVRyaWdnZXJbVFJJR0dFUl9DTElDS10gPSBmYWxzZVxuICAgIHRoaXMuX2FjdGl2ZVRyaWdnZXJbVFJJR0dFUl9GT0NVU10gPSBmYWxzZVxuICAgIHRoaXMuX2FjdGl2ZVRyaWdnZXJbVFJJR0dFUl9IT1ZFUl0gPSBmYWxzZVxuICAgIHRoaXMuX2lzSG92ZXJlZCA9IG51bGwgLy8gaXQgaXMgYSB0cmljayB0byBzdXBwb3J0IG1hbnVhbCB0cmlnZ2VyaW5nXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICAgIHRoaXMuX2Rpc3Bvc2VQb3BwZXIoKVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9ISURERU4pKVxuICAgIH1cblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIHRoaXMudGlwLCB0aGlzLl9pc0FuaW1hdGVkKCkpXG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLnVwZGF0ZSgpXG4gICAgfVxuICB9XG5cbiAgLy8gUHJvdGVjdGVkXG4gIF9pc1dpdGhDb250ZW50KCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuX2dldFRpdGxlKCkpXG4gIH1cblxuICBfZ2V0VGlwRWxlbWVudCgpIHtcbiAgICBpZiAoIXRoaXMudGlwKSB7XG4gICAgICB0aGlzLnRpcCA9IHRoaXMuX2NyZWF0ZVRpcEVsZW1lbnQodGhpcy5fbmV3Q29udGVudCB8fCB0aGlzLl9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50aXBcbiAgfVxuXG4gIF9jcmVhdGVUaXBFbGVtZW50KGNvbnRlbnQpIHtcbiAgICBjb25zdCB0aXAgPSB0aGlzLl9nZXRUZW1wbGF0ZUZhY3RvcnkoY29udGVudCkudG9IdG1sKClcblxuICAgIC8vIHRvZG86IHJlbW92ZSB0aGlzIGNoZWNrIG9uIHY2XG4gICAgaWYgKCF0aXApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgdGlwLmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9GQURFLCBDTEFTU19OQU1FX1NIT1cpXG4gICAgLy8gdG9kbzogb24gdjYgdGhlIGZvbGxvd2luZyBjYW4gYmUgYWNoaWV2ZWQgd2l0aCBDU1Mgb25seVxuICAgIHRpcC5jbGFzc0xpc3QuYWRkKGBicy0ke3RoaXMuY29uc3RydWN0b3IuTkFNRX0tYXV0b2ApXG5cbiAgICBjb25zdCB0aXBJZCA9IGdldFVJRCh0aGlzLmNvbnN0cnVjdG9yLk5BTUUpLnRvU3RyaW5nKClcblxuICAgIHRpcC5zZXRBdHRyaWJ1dGUoJ2lkJywgdGlwSWQpXG5cbiAgICBpZiAodGhpcy5faXNBbmltYXRlZCgpKSB7XG4gICAgICB0aXAuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0ZBREUpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRpcFxuICB9XG5cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgdGhpcy5fbmV3Q29udGVudCA9IGNvbnRlbnRcbiAgICBpZiAodGhpcy5faXNTaG93bigpKSB7XG4gICAgICB0aGlzLl9kaXNwb3NlUG9wcGVyKClcbiAgICAgIHRoaXMuc2hvdygpXG4gICAgfVxuICB9XG5cbiAgX2dldFRlbXBsYXRlRmFjdG9yeShjb250ZW50KSB7XG4gICAgaWYgKHRoaXMuX3RlbXBsYXRlRmFjdG9yeSkge1xuICAgICAgdGhpcy5fdGVtcGxhdGVGYWN0b3J5LmNoYW5nZUNvbnRlbnQoY29udGVudClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdGVtcGxhdGVGYWN0b3J5ID0gbmV3IFRlbXBsYXRlRmFjdG9yeSh7XG4gICAgICAgIC4uLnRoaXMuX2NvbmZpZyxcbiAgICAgICAgLy8gdGhlIGBjb250ZW50YCB2YXIgaGFzIHRvIGJlIGFmdGVyIGB0aGlzLl9jb25maWdgXG4gICAgICAgIC8vIHRvIG92ZXJyaWRlIGNvbmZpZy5jb250ZW50IGluIGNhc2Ugb2YgcG9wb3ZlclxuICAgICAgICBjb250ZW50LFxuICAgICAgICBleHRyYUNsYXNzOiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0aGlzLl9jb25maWcuY3VzdG9tQ2xhc3MpXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZUZhY3RvcnlcbiAgfVxuXG4gIF9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtTRUxFQ1RPUl9UT09MVElQX0lOTkVSXTogdGhpcy5fZ2V0VGl0bGUoKVxuICAgIH1cbiAgfVxuXG4gIF9nZXRUaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLnRpdGxlKSB8fCB0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy1vcmlnaW5hbC10aXRsZScpXG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5nZXRPckNyZWF0ZUluc3RhbmNlKGV2ZW50LmRlbGVnYXRlVGFyZ2V0LCB0aGlzLl9nZXREZWxlZ2F0ZUNvbmZpZygpKVxuICB9XG5cbiAgX2lzQW5pbWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5hbmltYXRpb24gfHwgKHRoaXMudGlwICYmIHRoaXMudGlwLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUpKVxuICB9XG5cbiAgX2lzU2hvd24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGlwICYmIHRoaXMudGlwLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1cpXG4gIH1cblxuICBfY3JlYXRlUG9wcGVyKHRpcCkge1xuICAgIGNvbnN0IHBsYWNlbWVudCA9IHR5cGVvZiB0aGlzLl9jb25maWcucGxhY2VtZW50ID09PSAnZnVuY3Rpb24nID9cbiAgICAgIHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQuY2FsbCh0aGlzLCB0aXAsIHRoaXMuX2VsZW1lbnQpIDpcbiAgICAgIHRoaXMuX2NvbmZpZy5wbGFjZW1lbnRcbiAgICBjb25zdCBhdHRhY2htZW50ID0gQXR0YWNobWVudE1hcFtwbGFjZW1lbnQudG9VcHBlckNhc2UoKV1cbiAgICByZXR1cm4gUG9wcGVyLmNyZWF0ZVBvcHBlcih0aGlzLl9lbGVtZW50LCB0aXAsIHRoaXMuX2dldFBvcHBlckNvbmZpZyhhdHRhY2htZW50KSlcbiAgfVxuXG4gIF9nZXRPZmZzZXQoKSB7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IHRoaXMuX2NvbmZpZ1xuXG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2Zmc2V0LnNwbGl0KCcsJykubWFwKHZhbHVlID0+IE51bWJlci5wYXJzZUludCh2YWx1ZSwgMTApKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gcG9wcGVyRGF0YSA9PiBvZmZzZXQocG9wcGVyRGF0YSwgdGhpcy5fZWxlbWVudClcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0XG4gIH1cblxuICBfcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbicgPyBhcmcuY2FsbCh0aGlzLl9lbGVtZW50KSA6IGFyZ1xuICB9XG5cbiAgX2dldFBvcHBlckNvbmZpZyhhdHRhY2htZW50KSB7XG4gICAgY29uc3QgZGVmYXVsdEJzUG9wcGVyQ29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50OiBhdHRhY2htZW50LFxuICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnZmxpcCcsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiB0aGlzLl9jb25maWcuZmFsbGJhY2tQbGFjZW1lbnRzXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ29mZnNldCcsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLl9nZXRPZmZzZXQoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGJvdW5kYXJ5OiB0aGlzLl9jb25maWcuYm91bmRhcnlcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnYXJyb3cnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGAuJHt0aGlzLmNvbnN0cnVjdG9yLk5BTUV9LWFycm93YFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdwcmVTZXRQbGFjZW1lbnQnLFxuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgcGhhc2U6ICdiZWZvcmVNYWluJyxcbiAgICAgICAgICBmbjogZGF0YSA9PiB7XG4gICAgICAgICAgICAvLyBQcmUtc2V0IFBvcHBlcidzIHBsYWNlbWVudCBhdHRyaWJ1dGUgaW4gb3JkZXIgdG8gcmVhZCB0aGUgYXJyb3cgc2l6ZXMgcHJvcGVybHkuXG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIFBvcHBlciBtaXhlcyB1cCB0aGUgd2lkdGggYW5kIGhlaWdodCBkaW1lbnNpb25zIHNpbmNlIHRoZSBpbml0aWFsIGFycm93IHN0eWxlIGlzIGZvciB0b3AgcGxhY2VtZW50XG4gICAgICAgICAgICB0aGlzLl9nZXRUaXBFbGVtZW50KCkuc2V0QXR0cmlidXRlKCdkYXRhLXBvcHBlci1wbGFjZW1lbnQnLCBkYXRhLnN0YXRlLnBsYWNlbWVudClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdEJzUG9wcGVyQ29uZmlnLFxuICAgICAgLi4uKHR5cGVvZiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnID09PSAnZnVuY3Rpb24nID8gdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyhkZWZhdWx0QnNQb3BwZXJDb25maWcpIDogdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZylcbiAgICB9XG4gIH1cblxuICBfc2V0TGlzdGVuZXJzKCkge1xuICAgIGNvbnN0IHRyaWdnZXJzID0gdGhpcy5fY29uZmlnLnRyaWdnZXIuc3BsaXQoJyAnKVxuXG4gICAgZm9yIChjb25zdCB0cmlnZ2VyIG9mIHRyaWdnZXJzKSB7XG4gICAgICBpZiAodHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfQ0xJQ0spLCB0aGlzLl9jb25maWcuc2VsZWN0b3IsIGV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KGV2ZW50KVxuICAgICAgICAgIGNvbnRleHQudG9nZ2xlKClcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAodHJpZ2dlciAhPT0gVFJJR0dFUl9NQU5VQUwpIHtcbiAgICAgICAgY29uc3QgZXZlbnRJbiA9IHRyaWdnZXIgPT09IFRSSUdHRVJfSE9WRVIgP1xuICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX01PVVNFRU5URVIpIDpcbiAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9GT0NVU0lOKVxuICAgICAgICBjb25zdCBldmVudE91dCA9IHRyaWdnZXIgPT09IFRSSUdHRVJfSE9WRVIgP1xuICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX01PVVNFTEVBVkUpIDpcbiAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9GT0NVU09VVClcblxuICAgICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgZXZlbnRJbiwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldChldmVudClcbiAgICAgICAgICBjb250ZXh0Ll9hY3RpdmVUcmlnZ2VyW2V2ZW50LnR5cGUgPT09ICdmb2N1c2luJyA/IFRSSUdHRVJfRk9DVVMgOiBUUklHR0VSX0hPVkVSXSA9IHRydWVcbiAgICAgICAgICBjb250ZXh0Ll9lbnRlcigpXG4gICAgICAgIH0pXG4gICAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBldmVudE91dCwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldChldmVudClcbiAgICAgICAgICBjb250ZXh0Ll9hY3RpdmVUcmlnZ2VyW2V2ZW50LnR5cGUgPT09ICdmb2N1c291dCcgPyBUUklHR0VSX0ZPQ1VTIDogVFJJR0dFUl9IT1ZFUl0gPVxuICAgICAgICAgICAgY29udGV4dC5fZWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KVxuXG4gICAgICAgICAgY29udGV4dC5fbGVhdmUoKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fZWxlbWVudCkge1xuICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgfVxuICAgIH1cblxuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LmNsb3Nlc3QoU0VMRUNUT1JfTU9EQUwpLCBFVkVOVF9NT0RBTF9ISURFLCB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyKVxuICB9XG5cbiAgX2ZpeFRpdGxlKCkge1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RpdGxlJylcblxuICAgIGlmICghdGl0bGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSAmJiAhdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudC50cmltKCkpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGl0bGUpXG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnLCB0aXRsZSkgLy8gRE8gTk9UIFVTRSBJVC4gSXMgb25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKVxuICB9XG5cbiAgX2VudGVyKCkge1xuICAgIGlmICh0aGlzLl9pc1Nob3duKCkgfHwgdGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlXG5cbiAgICB0aGlzLl9zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc0hvdmVyZWQpIHtcbiAgICAgICAgdGhpcy5zaG93KClcbiAgICAgIH1cbiAgICB9LCB0aGlzLl9jb25maWcuZGVsYXkuc2hvdylcbiAgfVxuXG4gIF9sZWF2ZSgpIHtcbiAgICBpZiAodGhpcy5faXNXaXRoQWN0aXZlVHJpZ2dlcigpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9pc0hvdmVyZWQgPSBmYWxzZVxuXG4gICAgdGhpcy5fc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgfVxuICAgIH0sIHRoaXMuX2NvbmZpZy5kZWxheS5oaWRlKVxuICB9XG5cbiAgX3NldFRpbWVvdXQoaGFuZGxlciwgdGltZW91dCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KVxuICAgIHRoaXMuX3RpbWVvdXQgPSBzZXRUaW1lb3V0KGhhbmRsZXIsIHRpbWVvdXQpXG4gIH1cblxuICBfaXNXaXRoQWN0aXZlVHJpZ2dlcigpIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9hY3RpdmVUcmlnZ2VyKS5pbmNsdWRlcyh0cnVlKVxuICB9XG5cbiAgX2dldENvbmZpZyhjb25maWcpIHtcbiAgICBjb25zdCBkYXRhQXR0cmlidXRlcyA9IE1hbmlwdWxhdG9yLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpXG5cbiAgICBmb3IgKGNvbnN0IGRhdGFBdHRyaWJ1dGUgb2YgT2JqZWN0LmtleXMoZGF0YUF0dHJpYnV0ZXMpKSB7XG4gICAgICBpZiAoRElTQUxMT1dFRF9BVFRSSUJVVEVTLmhhcyhkYXRhQXR0cmlidXRlKSkge1xuICAgICAgICBkZWxldGUgZGF0YUF0dHJpYnV0ZXNbZGF0YUF0dHJpYnV0ZV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25maWcgPSB7XG4gICAgICAuLi5kYXRhQXR0cmlidXRlcyxcbiAgICAgIC4uLih0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyAmJiBjb25maWcgPyBjb25maWcgOiB7fSlcbiAgICB9XG4gICAgY29uZmlnID0gdGhpcy5fbWVyZ2VDb25maWdPYmooY29uZmlnKVxuICAgIGNvbmZpZyA9IHRoaXMuX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKVxuICAgIHRoaXMuX3R5cGVDaGVja0NvbmZpZyhjb25maWcpXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG5cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgY29uZmlnLmNvbnRhaW5lciA9IGNvbmZpZy5jb250YWluZXIgPT09IGZhbHNlID8gZG9jdW1lbnQuYm9keSA6IGdldEVsZW1lbnQoY29uZmlnLmNvbnRhaW5lcilcblxuICAgIGlmICh0eXBlb2YgY29uZmlnLmRlbGF5ID09PSAnbnVtYmVyJykge1xuICAgICAgY29uZmlnLmRlbGF5ID0ge1xuICAgICAgICBzaG93OiBjb25maWcuZGVsYXksXG4gICAgICAgIGhpZGU6IGNvbmZpZy5kZWxheVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlnLnRpdGxlID09PSAnbnVtYmVyJykge1xuICAgICAgY29uZmlnLnRpdGxlID0gY29uZmlnLnRpdGxlLnRvU3RyaW5nKClcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZy5jb250ZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgY29uZmlnLmNvbnRlbnQgPSBjb25maWcuY29udGVudC50b1N0cmluZygpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG5cbiAgX2dldERlbGVnYXRlQ29uZmlnKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLl9jb25maWcpIHtcbiAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRba2V5XSAhPT0gdGhpcy5fY29uZmlnW2tleV0pIHtcbiAgICAgICAgY29uZmlnW2tleV0gPSB0aGlzLl9jb25maWdba2V5XVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbmZpZy5zZWxlY3RvciA9IGZhbHNlXG4gICAgY29uZmlnLnRyaWdnZXIgPSAnbWFudWFsJ1xuXG4gICAgLy8gSW4gdGhlIGZ1dHVyZSBjYW4gYmUgcmVwbGFjZWQgd2l0aDpcbiAgICAvLyBjb25zdCBrZXlzV2l0aERpZmZlcmVudFZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuX2NvbmZpZykuZmlsdGVyKGVudHJ5ID0+IHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFtlbnRyeVswXV0gIT09IHRoaXMuX2NvbmZpZ1tlbnRyeVswXV0pXG4gICAgLy8gYE9iamVjdC5mcm9tRW50cmllcyhrZXlzV2l0aERpZmZlcmVudFZhbHVlcylgXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG5cbiAgX2Rpc3Bvc2VQb3BwZXIoKSB7XG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLmRlc3Ryb3koKVxuICAgICAgdGhpcy5fcG9wcGVyID0gbnVsbFxuICAgIH1cblxuICAgIGlmICh0aGlzLnRpcCkge1xuICAgICAgdGhpcy50aXAucmVtb3ZlKClcbiAgICAgIHRoaXMudGlwID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFRvb2x0aXAuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpXG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYClcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKClcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFRvb2x0aXApXG5cbmV4cG9ydCBkZWZhdWx0IFRvb2x0aXBcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogcG9wb3Zlci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7IGRlZmluZUpRdWVyeVBsdWdpbiB9IGZyb20gJy4vdXRpbC9pbmRleCdcbmltcG9ydCBUb29sdGlwIGZyb20gJy4vdG9vbHRpcCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ3BvcG92ZXInXG5cbmNvbnN0IFNFTEVDVE9SX1RJVExFID0gJy5wb3BvdmVyLWhlYWRlcidcbmNvbnN0IFNFTEVDVE9SX0NPTlRFTlQgPSAnLnBvcG92ZXItYm9keSdcblxuY29uc3QgRGVmYXVsdCA9IHtcbiAgLi4uVG9vbHRpcC5EZWZhdWx0LFxuICBjb250ZW50OiAnJyxcbiAgb2Zmc2V0OiBbMCwgOF0sXG4gIHBsYWNlbWVudDogJ3JpZ2h0JyxcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwicG9wb3ZlclwiIHJvbGU9XCJ0b29sdGlwXCI+JyArXG4gICAgJzxkaXYgY2xhc3M9XCJwb3BvdmVyLWFycm93XCI+PC9kaXY+JyArXG4gICAgJzxoMyBjbGFzcz1cInBvcG92ZXItaGVhZGVyXCI+PC9oMz4nICtcbiAgICAnPGRpdiBjbGFzcz1cInBvcG92ZXItYm9keVwiPjwvZGl2PicgK1xuICAgICc8L2Rpdj4nLFxuICB0cmlnZ2VyOiAnY2xpY2snXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICAuLi5Ub29sdGlwLkRlZmF1bHRUeXBlLFxuICBjb250ZW50OiAnKG51bGx8c3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb24pJ1xufVxuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBQb3BvdmVyIGV4dGVuZHMgVG9vbHRpcCB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZVxuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBPdmVycmlkZXNcbiAgX2lzV2l0aENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFRpdGxlKCkgfHwgdGhpcy5fZ2V0Q29udGVudCgpXG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtTRUxFQ1RPUl9USVRMRV06IHRoaXMuX2dldFRpdGxlKCksXG4gICAgICBbU0VMRUNUT1JfQ09OVEVOVF06IHRoaXMuX2dldENvbnRlbnQoKVxuICAgIH1cbiAgfVxuXG4gIF9nZXRDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0aGlzLl9jb25maWcuY29udGVudClcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFBvcG92ZXIuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpXG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYClcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKClcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFBvcG92ZXIpXG5cbmV4cG9ydCBkZWZhdWx0IFBvcG92ZXJcbiIsIi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogc2Nyb2xsc3B5LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuaW1wb3J0IHsgZGVmaW5lSlF1ZXJ5UGx1Z2luLCBnZXRFbGVtZW50LCBpc0Rpc2FibGVkLCBpc1Zpc2libGUgfSBmcm9tICcuL3V0aWwvaW5kZXgnXG5pbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgU2VsZWN0b3JFbmdpbmUgZnJvbSAnLi9kb20vc2VsZWN0b3ItZW5naW5lJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ3Njcm9sbHNweSdcbmNvbnN0IERBVEFfS0VZID0gJ2JzLnNjcm9sbHNweSdcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5jb25zdCBEQVRBX0FQSV9LRVkgPSAnLmRhdGEtYXBpJ1xuXG5jb25zdCBFVkVOVF9BQ1RJVkFURSA9IGBhY3RpdmF0ZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0NMSUNLID0gYGNsaWNrJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSA9IGBsb2FkJHtFVkVOVF9LRVl9JHtEQVRBX0FQSV9LRVl9YFxuXG5jb25zdCBDTEFTU19OQU1FX0RST1BET1dOX0lURU0gPSAnZHJvcGRvd24taXRlbSdcbmNvbnN0IENMQVNTX05BTUVfQUNUSVZFID0gJ2FjdGl2ZSdcblxuY29uc3QgU0VMRUNUT1JfREFUQV9TUFkgPSAnW2RhdGEtYnMtc3B5PVwic2Nyb2xsXCJdJ1xuY29uc3QgU0VMRUNUT1JfVEFSR0VUX0xJTktTID0gJ1tocmVmXSdcbmNvbnN0IFNFTEVDVE9SX05BVl9MSVNUX0dST1VQID0gJy5uYXYsIC5saXN0LWdyb3VwJ1xuY29uc3QgU0VMRUNUT1JfTkFWX0xJTktTID0gJy5uYXYtbGluaydcbmNvbnN0IFNFTEVDVE9SX05BVl9JVEVNUyA9ICcubmF2LWl0ZW0nXG5jb25zdCBTRUxFQ1RPUl9MSVNUX0lURU1TID0gJy5saXN0LWdyb3VwLWl0ZW0nXG5jb25zdCBTRUxFQ1RPUl9MSU5LX0lURU1TID0gYCR7U0VMRUNUT1JfTkFWX0xJTktTfSwgJHtTRUxFQ1RPUl9OQVZfSVRFTVN9ID4gJHtTRUxFQ1RPUl9OQVZfTElOS1N9LCAke1NFTEVDVE9SX0xJU1RfSVRFTVN9YFxuY29uc3QgU0VMRUNUT1JfRFJPUERPV04gPSAnLmRyb3Bkb3duJ1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFID0gJy5kcm9wZG93bi10b2dnbGUnXG5cbmNvbnN0IERlZmF1bHQgPSB7XG4gIG9mZnNldDogbnVsbCwgLy8gVE9ETzogdjYgQGRlcHJlY2F0ZWQsIGtlZXAgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnNcbiAgcm9vdE1hcmdpbjogJzBweCAwcHggLTI1JScsXG4gIHNtb290aFNjcm9sbDogZmFsc2UsXG4gIHRhcmdldDogbnVsbCxcbiAgdGhyZXNob2xkOiBbMC4xLCAwLjUsIDFdXG59XG5cbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBvZmZzZXQ6ICcobnVtYmVyfG51bGwpJywgLy8gVE9ETyB2NiBAZGVwcmVjYXRlZCwga2VlcCBpdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29uc1xuICByb290TWFyZ2luOiAnc3RyaW5nJyxcbiAgc21vb3RoU2Nyb2xsOiAnYm9vbGVhbicsXG4gIHRhcmdldDogJ2VsZW1lbnQnLFxuICB0aHJlc2hvbGQ6ICdhcnJheSdcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgU2Nyb2xsU3B5IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZylcblxuICAgIC8vIHRoaXMuX2VsZW1lbnQgaXMgdGhlIG9ic2VydmFibGVzQ29udGFpbmVyIGFuZCBjb25maWcudGFyZ2V0IHRoZSBtZW51IGxpbmtzIHdyYXBwZXJcbiAgICB0aGlzLl90YXJnZXRMaW5rcyA9IG5ldyBNYXAoKVxuICAgIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucyA9IG5ldyBNYXAoKVxuICAgIHRoaXMuX3Jvb3RFbGVtZW50ID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9lbGVtZW50KS5vdmVyZmxvd1kgPT09ICd2aXNpYmxlJyA/IG51bGwgOiB0aGlzLl9lbGVtZW50XG4gICAgdGhpcy5fYWN0aXZlVGFyZ2V0ID0gbnVsbFxuICAgIHRoaXMuX29ic2VydmVyID0gbnVsbFxuICAgIHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YSA9IHtcbiAgICAgIHZpc2libGVFbnRyeVRvcDogMCxcbiAgICAgIHBhcmVudFNjcm9sbFRvcDogMFxuICAgIH1cbiAgICB0aGlzLnJlZnJlc2goKSAvLyBpbml0aWFsaXplXG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gUHVibGljXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5faW5pdGlhbGl6ZVRhcmdldHNBbmRPYnNlcnZhYmxlcygpXG4gICAgdGhpcy5fbWF5YmVFbmFibGVTbW9vdGhTY3JvbGwoKVxuXG4gICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSB0aGlzLl9nZXROZXdPYnNlcnZlcigpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZShzZWN0aW9uKVxuICAgIH1cbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gICAgc3VwZXIuZGlzcG9zZSgpXG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIC8vIFRPRE86IG9uIHY2IHRhcmdldCBzaG91bGQgYmUgZ2l2ZW4gZXhwbGljaXRseSAmIHJlbW92ZSB0aGUge3RhcmdldDogJ3NzLXRhcmdldCd9IGNhc2VcbiAgICBjb25maWcudGFyZ2V0ID0gZ2V0RWxlbWVudChjb25maWcudGFyZ2V0KSB8fCBkb2N1bWVudC5ib2R5XG5cbiAgICAvLyBUT0RPOiB2NiBPbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLiBVc2Ugcm9vdE1hcmdpbiBvbmx5XG4gICAgY29uZmlnLnJvb3RNYXJnaW4gPSBjb25maWcub2Zmc2V0ID8gYCR7Y29uZmlnLm9mZnNldH1weCAwcHggLTMwJWAgOiBjb25maWcucm9vdE1hcmdpblxuXG4gICAgaWYgKHR5cGVvZiBjb25maWcudGhyZXNob2xkID09PSAnc3RyaW5nJykge1xuICAgICAgY29uZmlnLnRocmVzaG9sZCA9IGNvbmZpZy50aHJlc2hvbGQuc3BsaXQoJywnKS5tYXAodmFsdWUgPT4gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUpKVxuICAgIH1cblxuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIF9tYXliZUVuYWJsZVNtb290aFNjcm9sbCgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5zbW9vdGhTY3JvbGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHVucmVnaXN0ZXIgYW55IHByZXZpb3VzIGxpc3RlbmVyc1xuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fY29uZmlnLnRhcmdldCwgRVZFTlRfQ0xJQ0spXG5cbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fY29uZmlnLnRhcmdldCwgRVZFTlRfQ0xJQ0ssIFNFTEVDVE9SX1RBUkdFVF9MSU5LUywgZXZlbnQgPT4ge1xuICAgICAgY29uc3Qgb2JzZXJ2YWJsZVNlY3Rpb24gPSB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMuZ2V0KGV2ZW50LnRhcmdldC5oYXNoKVxuICAgICAgaWYgKG9ic2VydmFibGVTZWN0aW9uKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuX3Jvb3RFbGVtZW50IHx8IHdpbmRvd1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBvYnNlcnZhYmxlU2VjdGlvbi5vZmZzZXRUb3AgLSB0aGlzLl9lbGVtZW50Lm9mZnNldFRvcFxuICAgICAgICBpZiAocm9vdC5zY3JvbGxUbykge1xuICAgICAgICAgIHJvb3Quc2Nyb2xsVG8oeyB0b3A6IGhlaWdodCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaHJvbWUgNjAgZG9lc24ndCBzdXBwb3J0IGBzY3JvbGxUb2BcbiAgICAgICAgcm9vdC5zY3JvbGxUb3AgPSBoZWlnaHRcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgX2dldE5ld09ic2VydmVyKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290OiB0aGlzLl9yb290RWxlbWVudCxcbiAgICAgIHRocmVzaG9sZDogdGhpcy5fY29uZmlnLnRocmVzaG9sZCxcbiAgICAgIHJvb3RNYXJnaW46IHRoaXMuX2NvbmZpZy5yb290TWFyZ2luXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlbnRyaWVzID0+IHRoaXMuX29ic2VydmVyQ2FsbGJhY2soZW50cmllcyksIG9wdGlvbnMpXG4gIH1cblxuICAvLyBUaGUgbG9naWMgb2Ygc2VsZWN0aW9uXG4gIF9vYnNlcnZlckNhbGxiYWNrKGVudHJpZXMpIHtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZW50cnkgPT4gdGhpcy5fdGFyZ2V0TGlua3MuZ2V0KGAjJHtlbnRyeS50YXJnZXQuaWR9YClcbiAgICBjb25zdCBhY3RpdmF0ZSA9IGVudHJ5ID0+IHtcbiAgICAgIHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS52aXNpYmxlRW50cnlUb3AgPSBlbnRyeS50YXJnZXQub2Zmc2V0VG9wXG4gICAgICB0aGlzLl9wcm9jZXNzKHRhcmdldEVsZW1lbnQoZW50cnkpKVxuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudFNjcm9sbFRvcCA9ICh0aGlzLl9yb290RWxlbWVudCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLnNjcm9sbFRvcFxuICAgIGNvbnN0IHVzZXJTY3JvbGxzRG93biA9IHBhcmVudFNjcm9sbFRvcCA+PSB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEucGFyZW50U2Nyb2xsVG9wXG4gICAgdGhpcy5fcHJldmlvdXNTY3JvbGxEYXRhLnBhcmVudFNjcm9sbFRvcCA9IHBhcmVudFNjcm9sbFRvcFxuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBpZiAoIWVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVRhcmdldCA9IG51bGxcbiAgICAgICAgdGhpcy5fY2xlYXJBY3RpdmVDbGFzcyh0YXJnZXRFbGVtZW50KGVudHJ5KSlcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMgPSBlbnRyeS50YXJnZXQub2Zmc2V0VG9wID49IHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS52aXNpYmxlRW50cnlUb3BcbiAgICAgIC8vIGlmIHdlIGFyZSBzY3JvbGxpbmcgZG93biwgcGljayB0aGUgYmlnZ2VyIG9mZnNldFRvcFxuICAgICAgaWYgKHVzZXJTY3JvbGxzRG93biAmJiBlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMpIHtcbiAgICAgICAgYWN0aXZhdGUoZW50cnkpXG4gICAgICAgIC8vIGlmIHBhcmVudCBpc24ndCBzY3JvbGxlZCwgbGV0J3Mga2VlcCB0aGUgZmlyc3QgdmlzaWJsZSBpdGVtLCBicmVha2luZyB0aGUgaXRlcmF0aW9uXG4gICAgICAgIGlmICghcGFyZW50U2Nyb2xsVG9wKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyBpZiB3ZSBhcmUgc2Nyb2xsaW5nIHVwLCBwaWNrIHRoZSBzbWFsbGVzdCBvZmZzZXRUb3BcbiAgICAgIGlmICghdXNlclNjcm9sbHNEb3duICYmICFlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMpIHtcbiAgICAgICAgYWN0aXZhdGUoZW50cnkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2luaXRpYWxpemVUYXJnZXRzQW5kT2JzZXJ2YWJsZXMoKSB7XG4gICAgdGhpcy5fdGFyZ2V0TGlua3MgPSBuZXcgTWFwKClcbiAgICB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgIGNvbnN0IHRhcmdldExpbmtzID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9UQVJHRVRfTElOS1MsIHRoaXMuX2NvbmZpZy50YXJnZXQpXG5cbiAgICBmb3IgKGNvbnN0IGFuY2hvciBvZiB0YXJnZXRMaW5rcykge1xuICAgICAgLy8gZW5zdXJlIHRoYXQgdGhlIGFuY2hvciBoYXMgYW4gaWQgYW5kIGlzIG5vdCBkaXNhYmxlZFxuICAgICAgaWYgKCFhbmNob3IuaGFzaCB8fCBpc0Rpc2FibGVkKGFuY2hvcikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2JzZXJ2YWJsZVNlY3Rpb24gPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKGFuY2hvci5oYXNoLCB0aGlzLl9lbGVtZW50KVxuXG4gICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgb2JzZXJ2YWJsZVNlY3Rpb24gZXhpc3RzICYgaXMgdmlzaWJsZVxuICAgICAgaWYgKGlzVmlzaWJsZShvYnNlcnZhYmxlU2VjdGlvbikpIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0TGlua3Muc2V0KGFuY2hvci5oYXNoLCBhbmNob3IpXG4gICAgICAgIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucy5zZXQoYW5jaG9yLmhhc2gsIG9ic2VydmFibGVTZWN0aW9uKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9wcm9jZXNzKHRhcmdldCkge1xuICAgIGlmICh0aGlzLl9hY3RpdmVUYXJnZXQgPT09IHRhcmdldCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fY2xlYXJBY3RpdmVDbGFzcyh0aGlzLl9jb25maWcudGFyZ2V0KVxuICAgIHRoaXMuX2FjdGl2ZVRhcmdldCA9IHRhcmdldFxuICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFKVxuICAgIHRoaXMuX2FjdGl2YXRlUGFyZW50cyh0YXJnZXQpXG5cbiAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9BQ1RJVkFURSwgeyByZWxhdGVkVGFyZ2V0OiB0YXJnZXQgfSlcbiAgfVxuXG4gIF9hY3RpdmF0ZVBhcmVudHModGFyZ2V0KSB7XG4gICAgLy8gQWN0aXZhdGUgZHJvcGRvd24gcGFyZW50c1xuICAgIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUERPV05fSVRFTSkpIHtcbiAgICAgIFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFLCB0YXJnZXQuY2xvc2VzdChTRUxFQ1RPUl9EUk9QRE9XTikpXG4gICAgICAgIC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBsaXN0R3JvdXAgb2YgU2VsZWN0b3JFbmdpbmUucGFyZW50cyh0YXJnZXQsIFNFTEVDVE9SX05BVl9MSVNUX0dST1VQKSkge1xuICAgICAgLy8gU2V0IHRyaWdnZXJlZCBsaW5rcyBwYXJlbnRzIGFzIGFjdGl2ZVxuICAgICAgLy8gV2l0aCBib3RoIDx1bD4gYW5kIDxuYXY+IG1hcmt1cCBhIHBhcmVudCBpcyB0aGUgcHJldmlvdXMgc2libGluZyBvZiBhbnkgbmF2IGFuY2VzdG9yXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgU2VsZWN0b3JFbmdpbmUucHJldihsaXN0R3JvdXAsIFNFTEVDVE9SX0xJTktfSVRFTVMpKSB7XG4gICAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfY2xlYXJBY3RpdmVDbGFzcyhwYXJlbnQpIHtcbiAgICBwYXJlbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSlcblxuICAgIGNvbnN0IGFjdGl2ZU5vZGVzID0gU2VsZWN0b3JFbmdpbmUuZmluZChgJHtTRUxFQ1RPUl9UQVJHRVRfTElOS1N9LiR7Q0xBU1NfTkFNRV9BQ1RJVkV9YCwgcGFyZW50KVxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBhY3RpdmVOb2Rlcykge1xuICAgICAgbm9kZS5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQUNUSVZFKVxuICAgIH1cbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFNjcm9sbFNweS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZylcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtjb25maWddID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnN0YXJ0c1dpdGgoJ18nKSB8fCBjb25maWcgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKVxuICAgICAgfVxuXG4gICAgICBkYXRhW2NvbmZpZ10oKVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX0xPQURfREFUQV9BUEksICgpID0+IHtcbiAgZm9yIChjb25zdCBzcHkgb2YgU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9EQVRBX1NQWSkpIHtcbiAgICBTY3JvbGxTcHkuZ2V0T3JDcmVhdGVJbnN0YW5jZShzcHkpXG4gIH1cbn0pXG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFNjcm9sbFNweSlcblxuZXhwb3J0IGRlZmF1bHQgU2Nyb2xsU3B5XG4iLCIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHRhYi5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7IGRlZmluZUpRdWVyeVBsdWdpbiwgZ2V0RWxlbWVudEZyb21TZWxlY3RvciwgZ2V0TmV4dEFjdGl2ZUVsZW1lbnQsIGlzRGlzYWJsZWQgfSBmcm9tICcuL3V0aWwvaW5kZXgnXG5pbXBvcnQgRXZlbnRIYW5kbGVyIGZyb20gJy4vZG9tL2V2ZW50LWhhbmRsZXInXG5pbXBvcnQgU2VsZWN0b3JFbmdpbmUgZnJvbSAnLi9kb20vc2VsZWN0b3ItZW5naW5lJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FID0gJ3RhYidcbmNvbnN0IERBVEFfS0VZID0gJ2JzLnRhYidcbmNvbnN0IEVWRU5UX0tFWSA9IGAuJHtEQVRBX0tFWX1gXG5cbmNvbnN0IEVWRU5UX0hJREUgPSBgaGlkZSR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0hJRERFTiA9IGBoaWRkZW4ke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9TSE9XID0gYHNob3cke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9TSE9XTiA9IGBzaG93biR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJID0gYGNsaWNrJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfS0VZRE9XTiA9IGBrZXlkb3duJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSA9IGBsb2FkJHtFVkVOVF9LRVl9YFxuXG5jb25zdCBBUlJPV19MRUZUX0tFWSA9ICdBcnJvd0xlZnQnXG5jb25zdCBBUlJPV19SSUdIVF9LRVkgPSAnQXJyb3dSaWdodCdcbmNvbnN0IEFSUk9XX1VQX0tFWSA9ICdBcnJvd1VwJ1xuY29uc3QgQVJST1dfRE9XTl9LRVkgPSAnQXJyb3dEb3duJ1xuXG5jb25zdCBDTEFTU19OQU1FX0FDVElWRSA9ICdhY3RpdmUnXG5jb25zdCBDTEFTU19OQU1FX0ZBREUgPSAnZmFkZSdcbmNvbnN0IENMQVNTX05BTUVfU0hPVyA9ICdzaG93J1xuY29uc3QgQ0xBU1NfRFJPUERPV04gPSAnZHJvcGRvd24nXG5cbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSA9ICcuZHJvcGRvd24tdG9nZ2xlJ1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV05fTUVOVSA9ICcuZHJvcGRvd24tbWVudSdcbmNvbnN0IE5PVF9TRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEUgPSAnOm5vdCguZHJvcGRvd24tdG9nZ2xlKSdcblxuY29uc3QgU0VMRUNUT1JfVEFCX1BBTkVMID0gJy5saXN0LWdyb3VwLCAubmF2LCBbcm9sZT1cInRhYmxpc3RcIl0nXG5jb25zdCBTRUxFQ1RPUl9PVVRFUiA9ICcubmF2LWl0ZW0sIC5saXN0LWdyb3VwLWl0ZW0nXG5jb25zdCBTRUxFQ1RPUl9JTk5FUiA9IGAubmF2LWxpbmske05PVF9TRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEV9LCAubGlzdC1ncm91cC1pdGVtJHtOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFfSwgW3JvbGU9XCJ0YWJcIl0ke05PVF9TRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEV9YFxuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwidGFiXCJdLCBbZGF0YS1icy10b2dnbGU9XCJwaWxsXCJdLCBbZGF0YS1icy10b2dnbGU9XCJsaXN0XCJdJyAvLyB0b2RvOnY2OiBjb3VsZCBiZSBvbmx5IGB0YWJgXG5jb25zdCBTRUxFQ1RPUl9JTk5FUl9FTEVNID0gYCR7U0VMRUNUT1JfSU5ORVJ9LCAke1NFTEVDVE9SX0RBVEFfVE9HR0xFfWBcblxuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEVfQUNUSVZFID0gYC4ke0NMQVNTX05BTUVfQUNUSVZFfVtkYXRhLWJzLXRvZ2dsZT1cInRhYlwiXSwgLiR7Q0xBU1NfTkFNRV9BQ1RJVkV9W2RhdGEtYnMtdG9nZ2xlPVwicGlsbFwiXSwgLiR7Q0xBU1NfTkFNRV9BQ1RJVkV9W2RhdGEtYnMtdG9nZ2xlPVwibGlzdFwiXWBcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgVGFiIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQpIHtcbiAgICBzdXBlcihlbGVtZW50KVxuICAgIHRoaXMuX3BhcmVudCA9IHRoaXMuX2VsZW1lbnQuY2xvc2VzdChTRUxFQ1RPUl9UQUJfUEFORUwpXG5cbiAgICBpZiAoIXRoaXMuX3BhcmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgICAvLyB0b2RvOiBzaG91bGQgVGhyb3cgZXhjZXB0aW9uIG9uIHY2XG4gICAgICAvLyB0aHJvdyBuZXcgVHlwZUVycm9yKGAke2VsZW1lbnQub3V0ZXJIVE1MfSBoYXMgbm90IGEgdmFsaWQgcGFyZW50ICR7U0VMRUNUT1JfSU5ORVJfRUxFTX1gKVxuICAgIH1cblxuICAgIC8vIFNldCB1cCBpbml0aWFsIGFyaWEgYXR0cmlidXRlc1xuICAgIHRoaXMuX3NldEluaXRpYWxBdHRyaWJ1dGVzKHRoaXMuX3BhcmVudCwgdGhpcy5fZ2V0Q2hpbGRyZW4oKSlcblxuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVlET1dOLCBldmVudCA9PiB0aGlzLl9rZXlkb3duKGV2ZW50KSlcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FXG4gIH1cblxuICAvLyBQdWJsaWNcbiAgc2hvdygpIHsgLy8gU2hvd3MgdGhpcyBlbGVtIGFuZCBkZWFjdGl2YXRlIHRoZSBhY3RpdmUgc2libGluZyBpZiBleGlzdHNcbiAgICBjb25zdCBpbm5lckVsZW0gPSB0aGlzLl9lbGVtZW50XG4gICAgaWYgKHRoaXMuX2VsZW1Jc0FjdGl2ZShpbm5lckVsZW0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBTZWFyY2ggZm9yIGFjdGl2ZSB0YWIgb24gc2FtZSBwYXJlbnQgdG8gZGVhY3RpdmF0ZSBpdFxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuX2dldEFjdGl2ZUVsZW0oKVxuXG4gICAgY29uc3QgaGlkZUV2ZW50ID0gYWN0aXZlID9cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKGFjdGl2ZSwgRVZFTlRfSElERSwgeyByZWxhdGVkVGFyZ2V0OiBpbm5lckVsZW0gfSkgOlxuICAgICAgbnVsbFxuXG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIoaW5uZXJFbGVtLCBFVkVOVF9TSE9XLCB7IHJlbGF0ZWRUYXJnZXQ6IGFjdGl2ZSB9KVxuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkIHx8IChoaWRlRXZlbnQgJiYgaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9kZWFjdGl2YXRlKGFjdGl2ZSwgaW5uZXJFbGVtKVxuICAgIHRoaXMuX2FjdGl2YXRlKGlubmVyRWxlbSwgYWN0aXZlKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfYWN0aXZhdGUoZWxlbWVudCwgcmVsYXRlZEVsZW0pIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSlcblxuICAgIHRoaXMuX2FjdGl2YXRlKGdldEVsZW1lbnRGcm9tU2VsZWN0b3IoZWxlbWVudCkpIC8vIFNlYXJjaCBhbmQgYWN0aXZhdGUvc2hvdyB0aGUgcHJvcGVyIHNlY3Rpb25cblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdyb2xlJykgIT09ICd0YWInKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1cpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKVxuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCB0cnVlKVxuICAgICAgdGhpcy5fdG9nZ2xlRHJvcERvd24oZWxlbWVudCwgdHJ1ZSlcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKGVsZW1lbnQsIEVWRU5UX1NIT1dOLCB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHJlbGF0ZWRFbGVtXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIGVsZW1lbnQsIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRkFERSkpXG4gIH1cblxuICBfZGVhY3RpdmF0ZShlbGVtZW50LCByZWxhdGVkRWxlbSkge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQUNUSVZFKVxuICAgIGVsZW1lbnQuYmx1cigpXG5cbiAgICB0aGlzLl9kZWFjdGl2YXRlKGdldEVsZW1lbnRGcm9tU2VsZWN0b3IoZWxlbWVudCkpIC8vIFNlYXJjaCBhbmQgZGVhY3RpdmF0ZSB0aGUgc2hvd24gc2VjdGlvbiB0b29cblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdyb2xlJykgIT09ICd0YWInKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1cpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIGZhbHNlKVxuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJylcbiAgICAgIHRoaXMuX3RvZ2dsZURyb3BEb3duKGVsZW1lbnQsIGZhbHNlKVxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIoZWxlbWVudCwgRVZFTlRfSElEREVOLCB7IHJlbGF0ZWRUYXJnZXQ6IHJlbGF0ZWRFbGVtIH0pXG4gICAgfVxuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgZWxlbWVudCwgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9GQURFKSlcbiAgfVxuXG4gIF9rZXlkb3duKGV2ZW50KSB7XG4gICAgaWYgKCEoW0FSUk9XX0xFRlRfS0VZLCBBUlJPV19SSUdIVF9LRVksIEFSUk9XX1VQX0tFWSwgQVJST1dfRE9XTl9LRVldLmluY2x1ZGVzKGV2ZW50LmtleSkpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKS8vIHN0b3BQcm9wYWdhdGlvbi9wcmV2ZW50RGVmYXVsdCBib3RoIGFkZGVkIHRvIHN1cHBvcnQgdXAvZG93biBrZXlzIHdpdGhvdXQgc2Nyb2xsaW5nIHRoZSBwYWdlXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIGNvbnN0IGlzTmV4dCA9IFtBUlJPV19SSUdIVF9LRVksIEFSUk9XX0RPV05fS0VZXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgY29uc3QgbmV4dEFjdGl2ZUVsZW1lbnQgPSBnZXROZXh0QWN0aXZlRWxlbWVudCh0aGlzLl9nZXRDaGlsZHJlbigpLmZpbHRlcihlbGVtZW50ID0+ICFpc0Rpc2FibGVkKGVsZW1lbnQpKSwgZXZlbnQudGFyZ2V0LCBpc05leHQsIHRydWUpXG5cbiAgICBpZiAobmV4dEFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIG5leHRBY3RpdmVFbGVtZW50LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KVxuICAgICAgVGFiLmdldE9yQ3JlYXRlSW5zdGFuY2UobmV4dEFjdGl2ZUVsZW1lbnQpLnNob3coKVxuICAgIH1cbiAgfVxuXG4gIF9nZXRDaGlsZHJlbigpIHsgLy8gY29sbGVjdGlvbiBvZiBpbm5lciBlbGVtZW50c1xuICAgIHJldHVybiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0lOTkVSX0VMRU0sIHRoaXMuX3BhcmVudClcbiAgfVxuXG4gIF9nZXRBY3RpdmVFbGVtKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRDaGlsZHJlbigpLmZpbmQoY2hpbGQgPT4gdGhpcy5fZWxlbUlzQWN0aXZlKGNoaWxkKSkgfHwgbnVsbFxuICB9XG5cbiAgX3NldEluaXRpYWxBdHRyaWJ1dGVzKHBhcmVudCwgY2hpbGRyZW4pIHtcbiAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhwYXJlbnQsICdyb2xlJywgJ3RhYmxpc3QnKVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgdGhpcy5fc2V0SW5pdGlhbEF0dHJpYnV0ZXNPbkNoaWxkKGNoaWxkKVxuICAgIH1cbiAgfVxuXG4gIF9zZXRJbml0aWFsQXR0cmlidXRlc09uQ2hpbGQoY2hpbGQpIHtcbiAgICBjaGlsZCA9IHRoaXMuX2dldElubmVyRWxlbWVudChjaGlsZClcbiAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuX2VsZW1Jc0FjdGl2ZShjaGlsZClcbiAgICBjb25zdCBvdXRlckVsZW0gPSB0aGlzLl9nZXRPdXRlckVsZW1lbnQoY2hpbGQpXG4gICAgY2hpbGQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgaXNBY3RpdmUpXG5cbiAgICBpZiAob3V0ZXJFbGVtICE9PSBjaGlsZCkge1xuICAgICAgdGhpcy5fc2V0QXR0cmlidXRlSWZOb3RFeGlzdHMob3V0ZXJFbGVtLCAncm9sZScsICdwcmVzZW50YXRpb24nKVxuICAgIH1cblxuICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKVxuICAgIH1cblxuICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKGNoaWxkLCAncm9sZScsICd0YWInKVxuXG4gICAgLy8gc2V0IGF0dHJpYnV0ZXMgdG8gdGhlIHJlbGF0ZWQgcGFuZWwgdG9vXG4gICAgdGhpcy5fc2V0SW5pdGlhbEF0dHJpYnV0ZXNPblRhcmdldFBhbmVsKGNoaWxkKVxuICB9XG5cbiAgX3NldEluaXRpYWxBdHRyaWJ1dGVzT25UYXJnZXRQYW5lbChjaGlsZCkge1xuICAgIGNvbnN0IHRhcmdldCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IoY2hpbGQpXG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fc2V0QXR0cmlidXRlSWZOb3RFeGlzdHModGFyZ2V0LCAncm9sZScsICd0YWJwYW5lbCcpXG5cbiAgICBpZiAoY2hpbGQuaWQpIHtcbiAgICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHRhcmdldCwgJ2FyaWEtbGFiZWxsZWRieScsIGAjJHtjaGlsZC5pZH1gKVxuICAgIH1cbiAgfVxuXG4gIF90b2dnbGVEcm9wRG93bihlbGVtZW50LCBvcGVuKSB7XG4gICAgY29uc3Qgb3V0ZXJFbGVtID0gdGhpcy5fZ2V0T3V0ZXJFbGVtZW50KGVsZW1lbnQpXG4gICAgaWYgKCFvdXRlckVsZW0uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX0RST1BET1dOKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdG9nZ2xlID0gKHNlbGVjdG9yLCBjbGFzc05hbWUpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKHNlbGVjdG9yLCBvdXRlckVsZW0pXG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoY2xhc3NOYW1lLCBvcGVuKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZShTRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEUsIENMQVNTX05BTUVfQUNUSVZFKVxuICAgIHRvZ2dsZShTRUxFQ1RPUl9EUk9QRE9XTl9NRU5VLCBDTEFTU19OQU1FX1NIT1cpXG4gICAgb3V0ZXJFbGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIG9wZW4pXG4gIH1cblxuICBfc2V0QXR0cmlidXRlSWZOb3RFeGlzdHMoZWxlbWVudCwgYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSkge1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSlcbiAgICB9XG4gIH1cblxuICBfZWxlbUlzQWN0aXZlKGVsZW0pIHtcbiAgICByZXR1cm4gZWxlbS5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9BQ1RJVkUpXG4gIH1cblxuICAvLyBUcnkgdG8gZ2V0IHRoZSBpbm5lciBlbGVtZW50ICh1c3VhbGx5IHRoZSAubmF2LWxpbmspXG4gIF9nZXRJbm5lckVsZW1lbnQoZWxlbSkge1xuICAgIHJldHVybiBlbGVtLm1hdGNoZXMoU0VMRUNUT1JfSU5ORVJfRUxFTSkgPyBlbGVtIDogU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9JTk5FUl9FTEVNLCBlbGVtKVxuICB9XG5cbiAgLy8gVHJ5IHRvIGdldCB0aGUgb3V0ZXIgZWxlbWVudCAodXN1YWxseSB0aGUgLm5hdi1pdGVtKVxuICBfZ2V0T3V0ZXJFbGVtZW50KGVsZW0pIHtcbiAgICByZXR1cm4gZWxlbS5jbG9zZXN0KFNFTEVDVE9SX09VVEVSKSB8fCBlbGVtXG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBUYWIuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKVxuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSgpXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUsIGZ1bmN0aW9uIChldmVudCkge1xuICBpZiAoWydBJywgJ0FSRUEnXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgaWYgKGlzRGlzYWJsZWQodGhpcykpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpLnNob3coKVxufSlcblxuLyoqXG4gKiBJbml0aWFsaXplIG9uIGZvY3VzXG4gKi9cbkV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX0xPQURfREFUQV9BUEksICgpID0+IHtcbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfREFUQV9UT0dHTEVfQUNUSVZFKSkge1xuICAgIFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQpXG4gIH1cbn0pXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihUYWIpXG5cbmV4cG9ydCBkZWZhdWx0IFRhYlxuIiwiLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB0b2FzdC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmltcG9ydCB7IGRlZmluZUpRdWVyeVBsdWdpbiwgcmVmbG93IH0gZnJvbSAnLi91dGlsL2luZGV4J1xuaW1wb3J0IEV2ZW50SGFuZGxlciBmcm9tICcuL2RvbS9ldmVudC1oYW5kbGVyJ1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi9iYXNlLWNvbXBvbmVudCdcbmltcG9ydCB7IGVuYWJsZURpc21pc3NUcmlnZ2VyIH0gZnJvbSAnLi91dGlsL2NvbXBvbmVudC1mdW5jdGlvbnMnXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICd0b2FzdCdcbmNvbnN0IERBVEFfS0VZID0gJ2JzLnRvYXN0J1xuY29uc3QgRVZFTlRfS0VZID0gYC4ke0RBVEFfS0VZfWBcblxuY29uc3QgRVZFTlRfTU9VU0VPVkVSID0gYG1vdXNlb3ZlciR7RVZFTlRfS0VZfWBcbmNvbnN0IEVWRU5UX01PVVNFT1VUID0gYG1vdXNlb3V0JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfRk9DVVNJTiA9IGBmb2N1c2luJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfRk9DVVNPVVQgPSBgZm9jdXNvdXQke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURFID0gYGhpZGUke0VWRU5UX0tFWX1gXG5jb25zdCBFVkVOVF9ISURERU4gPSBgaGlkZGVuJHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPVyA9IGBzaG93JHtFVkVOVF9LRVl9YFxuY29uc3QgRVZFTlRfU0hPV04gPSBgc2hvd24ke0VWRU5UX0tFWX1gXG5cbmNvbnN0IENMQVNTX05BTUVfRkFERSA9ICdmYWRlJ1xuY29uc3QgQ0xBU1NfTkFNRV9ISURFID0gJ2hpZGUnIC8vIEBkZXByZWNhdGVkIC0ga2VwdCBoZXJlIG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdydcbmNvbnN0IENMQVNTX05BTUVfU0hPV0lORyA9ICdzaG93aW5nJ1xuXG5jb25zdCBEZWZhdWx0VHlwZSA9IHtcbiAgYW5pbWF0aW9uOiAnYm9vbGVhbicsXG4gIGF1dG9oaWRlOiAnYm9vbGVhbicsXG4gIGRlbGF5OiAnbnVtYmVyJ1xufVxuXG5jb25zdCBEZWZhdWx0ID0ge1xuICBhbmltYXRpb246IHRydWUsXG4gIGF1dG9oaWRlOiB0cnVlLFxuICBkZWxheTogNTAwMFxufVxuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBUb2FzdCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpXG5cbiAgICB0aGlzLl90aW1lb3V0ID0gbnVsbFxuICAgIHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gPSBmYWxzZVxuICAgIHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24gPSBmYWxzZVxuICAgIHRoaXMuX3NldExpc3RlbmVycygpXG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFxuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRVxuICB9XG5cbiAgLy8gUHVibGljXG4gIHNob3coKSB7XG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPVylcblxuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fY2xlYXJUaW1lb3V0KClcblxuICAgIGlmICh0aGlzLl9jb25maWcuYW5pbWF0aW9uKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9GQURFKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPV0lORylcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOKVxuXG4gICAgICB0aGlzLl9tYXliZVNjaGVkdWxlSGlkZSgpXG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfSElERSkgLy8gQGRlcHJlY2F0ZWRcbiAgICByZWZsb3codGhpcy5fZWxlbWVudClcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XLCBDTEFTU19OQU1FX1NIT1dJTkcpXG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLl9lbGVtZW50LCB0aGlzLl9jb25maWcuYW5pbWF0aW9uKVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNTaG93bigpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFKVxuXG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0hJREUpIC8vIEBkZXByZWNhdGVkXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XSU5HLCBDTEFTU19OQU1FX1NIT1cpXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4pXG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPV0lORylcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLl9lbGVtZW50LCB0aGlzLl9jb25maWcuYW5pbWF0aW9uKVxuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICB0aGlzLl9jbGVhclRpbWVvdXQoKVxuXG4gICAgaWYgKHRoaXMuaXNTaG93bigpKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XKVxuICAgIH1cblxuICAgIHN1cGVyLmRpc3Bvc2UoKVxuICB9XG5cbiAgaXNTaG93bigpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TSE9XKVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuXG4gIF9tYXliZVNjaGVkdWxlSGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5hdXRvaGlkZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gfHwgdGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oaWRlKClcbiAgICB9LCB0aGlzLl9jb25maWcuZGVsYXkpXG4gIH1cblxuICBfb25JbnRlcmFjdGlvbihldmVudCwgaXNJbnRlcmFjdGluZykge1xuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnbW91c2VvdmVyJzpcbiAgICAgIGNhc2UgJ21vdXNlb3V0Jzoge1xuICAgICAgICB0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uID0gaXNJbnRlcmFjdGluZ1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdmb2N1c2luJzpcbiAgICAgIGNhc2UgJ2ZvY3Vzb3V0Jzoge1xuICAgICAgICB0aGlzLl9oYXNLZXlib2FyZEludGVyYWN0aW9uID0gaXNJbnRlcmFjdGluZ1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzSW50ZXJhY3RpbmcpIHtcbiAgICAgIHRoaXMuX2NsZWFyVGltZW91dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBuZXh0RWxlbWVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXRcbiAgICBpZiAodGhpcy5fZWxlbWVudCA9PT0gbmV4dEVsZW1lbnQgfHwgdGhpcy5fZWxlbWVudC5jb250YWlucyhuZXh0RWxlbWVudCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX21heWJlU2NoZWR1bGVIaWRlKClcbiAgfVxuXG4gIF9zZXRMaXN0ZW5lcnMoKSB7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFT1ZFUiwgZXZlbnQgPT4gdGhpcy5fb25JbnRlcmFjdGlvbihldmVudCwgdHJ1ZSkpXG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFT1VULCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCBmYWxzZSkpXG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0ZPQ1VTSU4sIGV2ZW50ID0+IHRoaXMuX29uSW50ZXJhY3Rpb24oZXZlbnQsIHRydWUpKVxuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9GT0NVU09VVCwgZXZlbnQgPT4gdGhpcy5fb25JbnRlcmFjdGlvbihldmVudCwgZmFsc2UpKVxuICB9XG5cbiAgX2NsZWFyVGltZW91dCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dClcbiAgICB0aGlzLl90aW1lb3V0ID0gbnVsbFxuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gVG9hc3QuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpXG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApXG4gICAgICAgIH1cblxuICAgICAgICBkYXRhW2NvbmZpZ10odGhpcylcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5lbmFibGVEaXNtaXNzVHJpZ2dlcihUb2FzdClcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oVG9hc3QpXG5cbmV4cG9ydCBkZWZhdWx0IFRvYXN0XG4iXSwibmFtZXMiOlsiTUFYX1VJRCIsIk1JTExJU0VDT05EU19NVUxUSVBMSUVSIiwiVFJBTlNJVElPTl9FTkQiLCJ0b1R5cGUiLCJvYmplY3QiLCJ1bmRlZmluZWQiLCJjb25jYXQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJtYXRjaCIsInRvTG93ZXJDYXNlIiwiZ2V0VUlEIiwicHJlZml4IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImdldFNlbGVjdG9yIiwiZWxlbWVudCIsInNlbGVjdG9yIiwiZ2V0QXR0cmlidXRlIiwiaHJlZkF0dHJpYnV0ZSIsImluY2x1ZGVzIiwic3RhcnRzV2l0aCIsInNwbGl0IiwidHJpbSIsImdldFNlbGVjdG9yRnJvbUVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZ2V0RWxlbWVudEZyb21TZWxlY3RvciIsImdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50IiwiX3dpbmRvdyRnZXRDb21wdXRlZFN0Iiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsInRyYW5zaXRpb25EdXJhdGlvbiIsInRyYW5zaXRpb25EZWxheSIsImZsb2F0VHJhbnNpdGlvbkR1cmF0aW9uIiwiTnVtYmVyIiwicGFyc2VGbG9hdCIsImZsb2F0VHJhbnNpdGlvbkRlbGF5IiwidHJpZ2dlclRyYW5zaXRpb25FbmQiLCJkaXNwYXRjaEV2ZW50IiwiRXZlbnQiLCJpc0VsZW1lbnQiLCJfdHlwZW9mIiwianF1ZXJ5Iiwibm9kZVR5cGUiLCJnZXRFbGVtZW50IiwibGVuZ3RoIiwiaXNWaXNpYmxlIiwiZ2V0Q2xpZW50UmVjdHMiLCJlbGVtZW50SXNWaXNpYmxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImNsb3NlZERldGFpbHMiLCJjbG9zZXN0Iiwic3VtbWFyeSIsInBhcmVudE5vZGUiLCJpc0Rpc2FibGVkIiwiTm9kZSIsIkVMRU1FTlRfTk9ERSIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwiZGlzYWJsZWQiLCJoYXNBdHRyaWJ1dGUiLCJmaW5kU2hhZG93Um9vdCIsImRvY3VtZW50RWxlbWVudCIsImF0dGFjaFNoYWRvdyIsImdldFJvb3ROb2RlIiwicm9vdCIsIlNoYWRvd1Jvb3QiLCJub29wIiwicmVmbG93Iiwib2Zmc2V0SGVpZ2h0IiwiZ2V0alF1ZXJ5IiwialF1ZXJ5IiwiYm9keSIsIkRPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MiLCJvbkRPTUNvbnRlbnRMb2FkZWQiLCJjYWxsYmFjayIsInJlYWR5U3RhdGUiLCJhZGRFdmVudExpc3RlbmVyIiwiX2kiLCJfRE9NQ29udGVudExvYWRlZENhbGwiLCJwdXNoIiwiaXNSVEwiLCJkaXIiLCJkZWZpbmVKUXVlcnlQbHVnaW4iLCJwbHVnaW4iLCIkIiwibmFtZSIsIk5BTUUiLCJKUVVFUllfTk9fQ09ORkxJQ1QiLCJmbiIsImpRdWVyeUludGVyZmFjZSIsIkNvbnN0cnVjdG9yIiwibm9Db25mbGljdCIsImV4ZWN1dGUiLCJleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uIiwidHJhbnNpdGlvbkVsZW1lbnQiLCJ3YWl0Rm9yVHJhbnNpdGlvbiIsImFyZ3VtZW50cyIsImR1cmF0aW9uUGFkZGluZyIsImVtdWxhdGVkRHVyYXRpb24iLCJjYWxsZWQiLCJoYW5kbGVyIiwiX3JlZiIsInRhcmdldCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZXRUaW1lb3V0IiwiZ2V0TmV4dEFjdGl2ZUVsZW1lbnQiLCJsaXN0IiwiYWN0aXZlRWxlbWVudCIsInNob3VsZEdldE5leHQiLCJpc0N5Y2xlQWxsb3dlZCIsImxpc3RMZW5ndGgiLCJpbmRleCIsImluZGV4T2YiLCJtYXgiLCJtaW4iLCJuYW1lc3BhY2VSZWdleCIsInN0cmlwTmFtZVJlZ2V4Iiwic3RyaXBVaWRSZWdleCIsImV2ZW50UmVnaXN0cnkiLCJ1aWRFdmVudCIsImN1c3RvbUV2ZW50cyIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwibmF0aXZlRXZlbnRzIiwiU2V0IiwibWFrZUV2ZW50VWlkIiwidWlkIiwiZ2V0RWxlbWVudEV2ZW50cyIsImJvb3RzdHJhcEhhbmRsZXIiLCJldmVudCIsImh5ZHJhdGVPYmoiLCJkZWxlZ2F0ZVRhcmdldCIsIm9uZU9mZiIsIkV2ZW50SGFuZGxlciIsIm9mZiIsInR5cGUiLCJhcHBseSIsImJvb3RzdHJhcERlbGVnYXRpb25IYW5kbGVyIiwiZG9tRWxlbWVudHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsImRvbUVsZW1lbnQiLCJ2YWx1ZSIsImVyciIsImUiLCJmIiwiZmluZEhhbmRsZXIiLCJldmVudHMiLCJjYWxsYWJsZSIsImRlbGVnYXRpb25TZWxlY3RvciIsInZhbHVlcyIsImZpbmQiLCJub3JtYWxpemVQYXJhbWV0ZXJzIiwib3JpZ2luYWxUeXBlRXZlbnQiLCJkZWxlZ2F0aW9uRnVuY3Rpb24iLCJpc0RlbGVnYXRlZCIsInR5cGVFdmVudCIsImdldFR5cGVFdmVudCIsImhhcyIsImFkZEhhbmRsZXIiLCJfbm9ybWFsaXplUGFyYW1ldGVycyIsIl9ub3JtYWxpemVQYXJhbWV0ZXJzMiIsIl9zbGljZWRUb0FycmF5Iiwid3JhcEZ1bmN0aW9uIiwicmVsYXRlZFRhcmdldCIsImhhbmRsZXJzIiwicHJldmlvdXNGdW5jdGlvbiIsInJlcGxhY2UiLCJyZW1vdmVIYW5kbGVyIiwiQm9vbGVhbiIsInJlbW92ZU5hbWVzcGFjZWRIYW5kbGVycyIsIm5hbWVzcGFjZSIsInN0b3JlRWxlbWVudEV2ZW50IiwiX2kyIiwiX09iamVjdCRrZXlzIiwia2V5cyIsImhhbmRsZXJLZXkiLCJvbiIsIm9uZSIsIl9ub3JtYWxpemVQYXJhbWV0ZXJzMyIsIl9ub3JtYWxpemVQYXJhbWV0ZXJzNCIsImluTmFtZXNwYWNlIiwiaXNOYW1lc3BhY2UiLCJfaTMiLCJfT2JqZWN0JGtleXMyIiwiZWxlbWVudEV2ZW50Iiwic2xpY2UiLCJfaTQiLCJfT2JqZWN0JGtleXMzIiwia2V5SGFuZGxlcnMiLCJ0cmlnZ2VyIiwiYXJncyIsImpRdWVyeUV2ZW50IiwiYnViYmxlcyIsIm5hdGl2ZURpc3BhdGNoIiwiZGVmYXVsdFByZXZlbnRlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJldnQiLCJjYW5jZWxhYmxlIiwicHJldmVudERlZmF1bHQiLCJvYmoiLCJtZXRhIiwiX2xvb3AiLCJfcmVmMiIsIl9PYmplY3QkZW50cmllcyIsIl9pNSIsIl9yZWYzIiwia2V5IiwiX3VudXNlZCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZ2V0IiwiZW50cmllcyIsImVsZW1lbnRNYXAiLCJNYXAiLCJEYXRhIiwic2V0IiwiaW5zdGFuY2UiLCJpbnN0YW5jZU1hcCIsInNpemUiLCJjb25zb2xlIiwiZXJyb3IiLCJBcnJheSIsImZyb20iLCJyZW1vdmUiLCJkZWxldGUiLCJub3JtYWxpemVEYXRhIiwiSlNPTiIsInBhcnNlIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwibm9ybWFsaXplRGF0YUtleSIsImNociIsIk1hbmlwdWxhdG9yIiwic2V0RGF0YUF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZURhdGFBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJnZXREYXRhQXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJic0tleXMiLCJkYXRhc2V0IiwiZmlsdGVyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInB1cmVLZXkiLCJjaGFyQXQiLCJnZXREYXRhQXR0cmlidXRlIiwiQ29uZmlnIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NyZWF0ZUNsYXNzIiwiX2dldENvbmZpZyIsImNvbmZpZyIsIl9tZXJnZUNvbmZpZ09iaiIsIl9jb25maWdBZnRlck1lcmdlIiwiX3R5cGVDaGVja0NvbmZpZyIsImpzb25Db25maWciLCJfb2JqZWN0U3ByZWFkIiwiY29uc3RydWN0b3IiLCJEZWZhdWx0IiwiY29uZmlnVHlwZXMiLCJEZWZhdWx0VHlwZSIsIl9pNiIsIl9PYmplY3Qka2V5czQiLCJwcm9wZXJ0eSIsImV4cGVjdGVkVHlwZXMiLCJ2YWx1ZVR5cGUiLCJSZWdFeHAiLCJ0ZXN0IiwiVHlwZUVycm9yIiwidG9VcHBlckNhc2UiLCJFcnJvciIsIlZFUlNJT04iLCJCYXNlQ29tcG9uZW50IiwiX0NvbmZpZyIsIl9pbmhlcml0cyIsIl9zdXBlciIsIl9jcmVhdGVTdXBlciIsIl90aGlzIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfZWxlbWVudCIsIl9jb25maWciLCJEQVRBX0tFWSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJkaXNwb3NlIiwiRVZFTlRfS0VZIiwiX2l0ZXJhdG9yMyIsImdldE93blByb3BlcnR5TmFtZXMiLCJfc3RlcDMiLCJwcm9wZXJ0eU5hbWUiLCJfcXVldWVDYWxsYmFjayIsImlzQW5pbWF0ZWQiLCJnZXRJbnN0YW5jZSIsImdldE9yQ3JlYXRlSW5zdGFuY2UiLCJldmVudE5hbWUiLCJlbmFibGVEaXNtaXNzVHJpZ2dlciIsImNvbXBvbmVudCIsIm1ldGhvZCIsImNsaWNrRXZlbnQiLCJ0YWdOYW1lIiwiRVZFTlRfQ0xPU0UiLCJFVkVOVF9DTE9TRUQiLCJDTEFTU19OQU1FX0ZBREUiLCJDTEFTU19OQU1FX1NIT1ciLCJBbGVydCIsIl9CYXNlQ29tcG9uZW50IiwiX3N1cGVyMiIsImNsb3NlIiwiX3RoaXMyIiwiY2xvc2VFdmVudCIsIl9kZXN0cm95RWxlbWVudCIsImVhY2giLCJkYXRhIiwiREFUQV9BUElfS0VZIiwiQ0xBU1NfTkFNRV9BQ1RJVkUiLCJTRUxFQ1RPUl9EQVRBX1RPR0dMRSIsIkVWRU5UX0NMSUNLX0RBVEFfQVBJIiwiQnV0dG9uIiwiX0Jhc2VDb21wb25lbnQyIiwiX3N1cGVyMyIsInRvZ2dsZSIsImJ1dHRvbiIsIlNlbGVjdG9yRW5naW5lIiwiX3JlZjQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJFbGVtZW50IiwiZmluZE9uZSIsImNoaWxkcmVuIiwiX3JlZjUiLCJjaGlsZCIsIm1hdGNoZXMiLCJwYXJlbnRzIiwiYW5jZXN0b3IiLCJwcmV2IiwicHJldmlvdXMiLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwibmV4dCIsIm5leHRFbGVtZW50U2libGluZyIsImZvY3VzYWJsZUNoaWxkcmVuIiwiZm9jdXNhYmxlcyIsIm1hcCIsImpvaW4iLCJlbCIsIkVWRU5UX1RPVUNIU1RBUlQiLCJFVkVOVF9UT1VDSE1PVkUiLCJFVkVOVF9UT1VDSEVORCIsIkVWRU5UX1BPSU5URVJET1dOIiwiRVZFTlRfUE9JTlRFUlVQIiwiUE9JTlRFUl9UWVBFX1RPVUNIIiwiUE9JTlRFUl9UWVBFX1BFTiIsIkNMQVNTX05BTUVfUE9JTlRFUl9FVkVOVCIsIlNXSVBFX1RIUkVTSE9MRCIsImVuZENhbGxiYWNrIiwibGVmdENhbGxiYWNrIiwicmlnaHRDYWxsYmFjayIsIlN3aXBlIiwiX0NvbmZpZzIiLCJfc3VwZXI0IiwiX3RoaXMzIiwiaXNTdXBwb3J0ZWQiLCJfZGVsdGFYIiwiX3N1cHBvcnRQb2ludGVyRXZlbnRzIiwiUG9pbnRlckV2ZW50IiwiX2luaXRFdmVudHMiLCJfc3RhcnQiLCJ0b3VjaGVzIiwiY2xpZW50WCIsIl9ldmVudElzUG9pbnRlclBlblRvdWNoIiwiX2VuZCIsIl9oYW5kbGVTd2lwZSIsIl9tb3ZlIiwiYWJzRGVsdGFYIiwiYWJzIiwiZGlyZWN0aW9uIiwiX3RoaXM0IiwiYWRkIiwicG9pbnRlclR5cGUiLCJuYXZpZ2F0b3IiLCJtYXhUb3VjaFBvaW50cyIsIkFSUk9XX0xFRlRfS0VZIiwiQVJST1dfUklHSFRfS0VZIiwiVE9VQ0hFVkVOVF9DT01QQVRfV0FJVCIsIk9SREVSX05FWFQiLCJPUkRFUl9QUkVWIiwiRElSRUNUSU9OX0xFRlQiLCJESVJFQ1RJT05fUklHSFQiLCJFVkVOVF9TTElERSIsIkVWRU5UX1NMSUQiLCJFVkVOVF9LRVlET1dOIiwiRVZFTlRfTU9VU0VFTlRFUiIsIkVWRU5UX01PVVNFTEVBVkUiLCJFVkVOVF9EUkFHX1NUQVJUIiwiRVZFTlRfTE9BRF9EQVRBX0FQSSIsIkNMQVNTX05BTUVfQ0FST1VTRUwiLCJDTEFTU19OQU1FX1NMSURFIiwiQ0xBU1NfTkFNRV9FTkQiLCJDTEFTU19OQU1FX1NUQVJUIiwiQ0xBU1NfTkFNRV9ORVhUIiwiQ0xBU1NfTkFNRV9QUkVWIiwiU0VMRUNUT1JfQUNUSVZFIiwiU0VMRUNUT1JfSVRFTSIsIlNFTEVDVE9SX0FDVElWRV9JVEVNIiwiU0VMRUNUT1JfSVRFTV9JTUciLCJTRUxFQ1RPUl9JTkRJQ0FUT1JTIiwiU0VMRUNUT1JfREFUQV9TTElERSIsIlNFTEVDVE9SX0RBVEFfUklERSIsIktFWV9UT19ESVJFQ1RJT04iLCJfS0VZX1RPX0RJUkVDVElPTiIsIl9kZWZpbmVQcm9wZXJ0eSIsImludGVydmFsIiwia2V5Ym9hcmQiLCJwYXVzZSIsInJpZGUiLCJ0b3VjaCIsIndyYXAiLCJDYXJvdXNlbCIsIl9CYXNlQ29tcG9uZW50MyIsIl9zdXBlcjUiLCJfdGhpczUiLCJfaW50ZXJ2YWwiLCJfYWN0aXZlRWxlbWVudCIsIl9pc1NsaWRpbmciLCJ0b3VjaFRpbWVvdXQiLCJfc3dpcGVIZWxwZXIiLCJfaW5kaWNhdG9yc0VsZW1lbnQiLCJfYWRkRXZlbnRMaXN0ZW5lcnMiLCJjeWNsZSIsIl9zbGlkZSIsIm5leHRXaGVuVmlzaWJsZSIsImhpZGRlbiIsIl9jbGVhckludGVydmFsIiwiX3RoaXM2IiwiX3VwZGF0ZUludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJfbWF5YmVFbmFibGVDeWNsZSIsIl90aGlzNyIsInRvIiwiX3RoaXM4IiwiaXRlbXMiLCJfZ2V0SXRlbXMiLCJhY3RpdmVJbmRleCIsIl9nZXRJdGVtSW5kZXgiLCJfZ2V0QWN0aXZlIiwib3JkZXIiLCJfZ2V0IiwiX2dldFByb3RvdHlwZU9mIiwiZGVmYXVsdEludGVydmFsIiwiX3RoaXM5IiwiX2tleWRvd24iLCJfYWRkVG91Y2hFdmVudExpc3RlbmVycyIsIl90aGlzMTAiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwiaW1nIiwiZW5kQ2FsbEJhY2siLCJjbGVhclRpbWVvdXQiLCJzd2lwZUNvbmZpZyIsIl9kaXJlY3Rpb25Ub09yZGVyIiwiX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQiLCJhY3RpdmVJbmRpY2F0b3IiLCJuZXdBY3RpdmVJbmRpY2F0b3IiLCJlbGVtZW50SW50ZXJ2YWwiLCJwYXJzZUludCIsIl90aGlzMTEiLCJpc05leHQiLCJuZXh0RWxlbWVudCIsIm5leHRFbGVtZW50SW5kZXgiLCJ0cmlnZ2VyRXZlbnQiLCJfb3JkZXJUb0RpcmVjdGlvbiIsInNsaWRlRXZlbnQiLCJpc0N5Y2xpbmciLCJkaXJlY3Rpb25hbENsYXNzTmFtZSIsIm9yZGVyQ2xhc3NOYW1lIiwiY29tcGxldGVDYWxsQmFjayIsIl9pc0FuaW1hdGVkIiwiY2xlYXJJbnRlcnZhbCIsImNhcm91c2VsIiwic2xpZGVJbmRleCIsImNhcm91c2VscyIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJFVkVOVF9TSE9XIiwiRVZFTlRfU0hPV04iLCJFVkVOVF9ISURFIiwiRVZFTlRfSElEREVOIiwiQ0xBU1NfTkFNRV9DT0xMQVBTRSIsIkNMQVNTX05BTUVfQ09MTEFQU0lORyIsIkNMQVNTX05BTUVfQ09MTEFQU0VEIiwiQ0xBU1NfTkFNRV9ERUVQRVJfQ0hJTERSRU4iLCJDTEFTU19OQU1FX0hPUklaT05UQUwiLCJXSURUSCIsIkhFSUdIVCIsIlNFTEVDVE9SX0FDVElWRVMiLCJwYXJlbnQiLCJDb2xsYXBzZSIsIl9CYXNlQ29tcG9uZW50NCIsIl9zdXBlcjYiLCJfdGhpczEyIiwiX2lzVHJhbnNpdGlvbmluZyIsIl90cmlnZ2VyQXJyYXkiLCJ0b2dnbGVMaXN0IiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsImVsZW0iLCJmaWx0ZXJFbGVtZW50IiwiZm91bmRFbGVtZW50IiwiX2luaXRpYWxpemVDaGlsZHJlbiIsIl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MiLCJfaXNTaG93biIsImhpZGUiLCJzaG93IiwiX3RoaXMxMyIsImFjdGl2ZUNoaWxkcmVuIiwiX2dldEZpcnN0TGV2ZWxDaGlsZHJlbiIsInN0YXJ0RXZlbnQiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3IiwiYWN0aXZlSW5zdGFuY2UiLCJkaW1lbnNpb24iLCJfZ2V0RGltZW5zaW9uIiwic3R5bGUiLCJjb21wbGV0ZSIsImNhcGl0YWxpemVkRGltZW5zaW9uIiwic2Nyb2xsU2l6ZSIsIl90aGlzMTQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJfaXRlcmF0b3I4IiwiX3N0ZXA4IiwiX2l0ZXJhdG9yOSIsIl9zdGVwOSIsInNlbGVjdGVkIiwidHJpZ2dlckFycmF5IiwiaXNPcGVuIiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwic2VsZWN0b3JFbGVtZW50cyIsIl9pdGVyYXRvcjExIiwiX3N0ZXAxMSIsIkVTQ0FQRV9LRVkiLCJUQUJfS0VZIiwiQVJST1dfVVBfS0VZIiwiQVJST1dfRE9XTl9LRVkiLCJSSUdIVF9NT1VTRV9CVVRUT04iLCJFVkVOVF9LRVlET1dOX0RBVEFfQVBJIiwiRVZFTlRfS0VZVVBfREFUQV9BUEkiLCJDTEFTU19OQU1FX0RST1BVUCIsIkNMQVNTX05BTUVfRFJPUEVORCIsIkNMQVNTX05BTUVfRFJPUFNUQVJUIiwiQ0xBU1NfTkFNRV9EUk9QVVBfQ0VOVEVSIiwiQ0xBU1NfTkFNRV9EUk9QRE9XTl9DRU5URVIiLCJTRUxFQ1RPUl9EQVRBX1RPR0dMRV9TSE9XTiIsIlNFTEVDVE9SX01FTlUiLCJTRUxFQ1RPUl9OQVZCQVIiLCJTRUxFQ1RPUl9OQVZCQVJfTkFWIiwiU0VMRUNUT1JfVklTSUJMRV9JVEVNUyIsIlBMQUNFTUVOVF9UT1AiLCJQTEFDRU1FTlRfVE9QRU5EIiwiUExBQ0VNRU5UX0JPVFRPTSIsIlBMQUNFTUVOVF9CT1RUT01FTkQiLCJQTEFDRU1FTlRfUklHSFQiLCJQTEFDRU1FTlRfTEVGVCIsIlBMQUNFTUVOVF9UT1BDRU5URVIiLCJQTEFDRU1FTlRfQk9UVE9NQ0VOVEVSIiwiYXV0b0Nsb3NlIiwiYm91bmRhcnkiLCJkaXNwbGF5Iiwib2Zmc2V0IiwicG9wcGVyQ29uZmlnIiwicmVmZXJlbmNlIiwiRHJvcGRvd24iLCJfQmFzZUNvbXBvbmVudDUiLCJfc3VwZXI3IiwiX3RoaXMxNSIsIl9wb3BwZXIiLCJfcGFyZW50IiwiX21lbnUiLCJfaW5OYXZiYXIiLCJfZGV0ZWN0TmF2YmFyIiwic2hvd0V2ZW50IiwiX2NyZWF0ZVBvcHBlciIsIl9yZWY2IiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwiZm9jdXMiLCJfY29tcGxldGVIaWRlIiwiZGVzdHJveSIsInVwZGF0ZSIsImhpZGVFdmVudCIsIl9yZWY3IiwiX2l0ZXJhdG9yMTMiLCJfc3RlcDEzIiwiUG9wcGVyIiwicmVmZXJlbmNlRWxlbWVudCIsIl9nZXRQb3BwZXJDb25maWciLCJjcmVhdGVQb3BwZXIiLCJfZ2V0UGxhY2VtZW50IiwicGFyZW50RHJvcGRvd24iLCJpc0VuZCIsIl9nZXRPZmZzZXQiLCJfdGhpczE2IiwicG9wcGVyRGF0YSIsImRlZmF1bHRCc1BvcHBlckNvbmZpZyIsInBsYWNlbWVudCIsIm1vZGlmaWVycyIsIm9wdGlvbnMiLCJlbmFibGVkIiwiX3NlbGVjdE1lbnVJdGVtIiwiX3JlZjgiLCJjbGVhck1lbnVzIiwib3BlblRvZ2dsZXMiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJjb250ZXh0IiwiY29tcG9zZWRQYXRoIiwiaXNNZW51VGFyZ2V0IiwiZGF0YUFwaUtleWRvd25IYW5kbGVyIiwiaXNJbnB1dCIsImlzRXNjYXBlRXZlbnQiLCJpc1VwT3JEb3duRXZlbnQiLCJnZXRUb2dnbGVCdXR0b24iLCJzdG9wUHJvcGFnYXRpb24iLCJTRUxFQ1RPUl9GSVhFRF9DT05URU5UIiwiU0VMRUNUT1JfU1RJQ0tZX0NPTlRFTlQiLCJQUk9QRVJUWV9QQURESU5HIiwiUFJPUEVSVFlfTUFSR0lOIiwiU2Nyb2xsQmFySGVscGVyIiwiZ2V0V2lkdGgiLCJkb2N1bWVudFdpZHRoIiwiY2xpZW50V2lkdGgiLCJpbm5lcldpZHRoIiwid2lkdGgiLCJfZGlzYWJsZU92ZXJGbG93IiwiX3NldEVsZW1lbnRBdHRyaWJ1dGVzIiwiY2FsY3VsYXRlZFZhbHVlIiwicmVzZXQiLCJfcmVzZXRFbGVtZW50QXR0cmlidXRlcyIsImlzT3ZlcmZsb3dpbmciLCJfc2F2ZUluaXRpYWxBdHRyaWJ1dGUiLCJvdmVyZmxvdyIsInN0eWxlUHJvcGVydHkiLCJfdGhpczE3Iiwic2Nyb2xsYmFyV2lkdGgiLCJtYW5pcHVsYXRpb25DYWxsQmFjayIsInNldFByb3BlcnR5IiwiX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2siLCJhY3R1YWxWYWx1ZSIsInJlbW92ZVByb3BlcnR5IiwiY2FsbEJhY2siLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJzZWwiLCJFVkVOVF9NT1VTRURPV04iLCJjbGFzc05hbWUiLCJjbGlja0NhbGxiYWNrIiwicm9vdEVsZW1lbnQiLCJCYWNrZHJvcCIsIl9Db25maWczIiwiX3N1cGVyOCIsIl90aGlzMTgiLCJfaXNBcHBlbmRlZCIsIl9hcHBlbmQiLCJfZ2V0RWxlbWVudCIsIl9lbXVsYXRlQW5pbWF0aW9uIiwiX3RoaXMxOSIsImJhY2tkcm9wIiwiY3JlYXRlRWxlbWVudCIsIl90aGlzMjAiLCJhcHBlbmQiLCJFVkVOVF9GT0NVU0lOIiwiRVZFTlRfS0VZRE9XTl9UQUIiLCJUQUJfTkFWX0ZPUldBUkQiLCJUQUJfTkFWX0JBQ0tXQVJEIiwiYXV0b2ZvY3VzIiwidHJhcEVsZW1lbnQiLCJGb2N1c1RyYXAiLCJfQ29uZmlnNCIsIl9zdXBlcjkiLCJfdGhpczIxIiwiX2lzQWN0aXZlIiwiX2xhc3RUYWJOYXZEaXJlY3Rpb24iLCJhY3RpdmF0ZSIsIl90aGlzMjIiLCJfaGFuZGxlRm9jdXNpbiIsIl9oYW5kbGVLZXlkb3duIiwiZGVhY3RpdmF0ZSIsImVsZW1lbnRzIiwic2hpZnRLZXkiLCJFVkVOVF9ISURFX1BSRVZFTlRFRCIsIkVWRU5UX1JFU0laRSIsIkVWRU5UX0NMSUNLX0RJU01JU1MiLCJFVkVOVF9NT1VTRURPV05fRElTTUlTUyIsIkVWRU5UX0tFWURPV05fRElTTUlTUyIsIkNMQVNTX05BTUVfT1BFTiIsIkNMQVNTX05BTUVfU1RBVElDIiwiT1BFTl9TRUxFQ1RPUiIsIlNFTEVDVE9SX0RJQUxPRyIsIlNFTEVDVE9SX01PREFMX0JPRFkiLCJNb2RhbCIsIl9CYXNlQ29tcG9uZW50NiIsIl9zdXBlcjEwIiwiX3RoaXMyMyIsIl9kaWFsb2ciLCJfYmFja2Ryb3AiLCJfaW5pdGlhbGl6ZUJhY2tEcm9wIiwiX2ZvY3VzdHJhcCIsIl9pbml0aWFsaXplRm9jdXNUcmFwIiwiX3Njcm9sbEJhciIsIl90aGlzMjQiLCJfYWRqdXN0RGlhbG9nIiwiX3Nob3dFbGVtZW50IiwiX3RoaXMyNSIsIl9oaWRlTW9kYWwiLCJfaTciLCJfYXJyMiIsImh0bWxFbGVtZW50IiwiaGFuZGxlVXBkYXRlIiwiX3RoaXMyNiIsInNjcm9sbFRvcCIsIm1vZGFsQm9keSIsInRyYW5zaXRpb25Db21wbGV0ZSIsIl90aGlzMjciLCJfdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbiIsImV2ZW50MiIsIl90aGlzMjgiLCJfcmVzZXRBZGp1c3RtZW50cyIsIl90aGlzMjkiLCJpc01vZGFsT3ZlcmZsb3dpbmciLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJpbml0aWFsT3ZlcmZsb3dZIiwib3ZlcmZsb3dZIiwiaXNCb2R5T3ZlcmZsb3dpbmciLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIl90aGlzMzAiLCJhbHJlYWR5T3BlbiIsIkNMQVNTX05BTUVfU0hPV0lORyIsIkNMQVNTX05BTUVfSElESU5HIiwiQ0xBU1NfTkFNRV9CQUNLRFJPUCIsInNjcm9sbCIsIk9mZmNhbnZhcyIsIl9CYXNlQ29tcG9uZW50NyIsIl9zdXBlcjExIiwiX3RoaXMzMSIsIl90aGlzMzIiLCJfdGhpczMzIiwiYmx1ciIsImNvbXBsZXRlQ2FsbGJhY2siLCJfdGhpczM0IiwiX3RoaXMzNSIsIl90aGlzMzYiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJfaXRlcmF0b3IxNyIsIl9zdGVwMTciLCJwb3NpdGlvbiIsInVyaUF0dHJpYnV0ZXMiLCJBUklBX0FUVFJJQlVURV9QQVRURVJOIiwiU0FGRV9VUkxfUEFUVEVSTiIsIkRBVEFfVVJMX1BBVFRFUk4iLCJhbGxvd2VkQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiYWxsb3dlZEF0dHJpYnV0ZUxpc3QiLCJhdHRyaWJ1dGVOYW1lIiwibm9kZU5hbWUiLCJub2RlVmFsdWUiLCJhdHRyaWJ1dGVSZWdleCIsInNvbWUiLCJyZWdleCIsIkRlZmF1bHRBbGxvd2xpc3QiLCJhIiwiYXJlYSIsImIiLCJiciIsImNvbCIsImNvZGUiLCJkaXYiLCJlbSIsImhyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaSIsImxpIiwib2wiLCJwIiwicHJlIiwic21hbGwiLCJzcGFuIiwic3ViIiwic3VwIiwic3Ryb25nIiwidSIsInVsIiwic2FuaXRpemVIdG1sIiwidW5zYWZlSHRtbCIsImFsbG93TGlzdCIsInNhbml0aXplRnVuY3Rpb24iLCJfcmVmOSIsImRvbVBhcnNlciIsIkRPTVBhcnNlciIsImNyZWF0ZWREb2N1bWVudCIsInBhcnNlRnJvbVN0cmluZyIsIl9pdGVyYXRvcjE4IiwiX3N0ZXAxOCIsIl9yZWYxMCIsImVsZW1lbnROYW1lIiwiYXR0cmlidXRlTGlzdCIsImFsbG93ZWRBdHRyaWJ1dGVzIiwiX2l0ZXJhdG9yMTkiLCJfc3RlcDE5IiwiaW5uZXJIVE1MIiwiY29udGVudCIsImV4dHJhQ2xhc3MiLCJodG1sIiwic2FuaXRpemUiLCJzYW5pdGl6ZUZuIiwidGVtcGxhdGUiLCJEZWZhdWx0Q29udGVudFR5cGUiLCJlbnRyeSIsIlRlbXBsYXRlRmFjdG9yeSIsIl9Db25maWc1IiwiX3N1cGVyMTIiLCJfdGhpczM3IiwiZ2V0Q29udGVudCIsIl90aGlzMzgiLCJfcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24iLCJoYXNDb250ZW50IiwiY2hhbmdlQ29udGVudCIsIl9jaGVja0NvbnRlbnQiLCJ0b0h0bWwiLCJ0ZW1wbGF0ZVdyYXBwZXIiLCJfbWF5YmVTYW5pdGl6ZSIsIl9pOCIsIl9PYmplY3QkZW50cmllczIiLCJfcmVmMTEiLCJfcmVmMTIiLCJ0ZXh0IiwiX3NldENvbnRlbnQiLCJfdGVtcGxhdGUkY2xhc3NMaXN0IiwiYXJnIiwiX2k5IiwiX09iamVjdCRlbnRyaWVzMyIsIl9yZWYxMyIsIl9yZWYxNCIsInRlbXBsYXRlRWxlbWVudCIsIl9wdXRFbGVtZW50SW5UZW1wbGF0ZSIsInRleHRDb250ZW50IiwiRElTQUxMT1dFRF9BVFRSSUJVVEVTIiwiQ0xBU1NfTkFNRV9NT0RBTCIsIlNFTEVDVE9SX1RPT0xUSVBfSU5ORVIiLCJTRUxFQ1RPUl9NT0RBTCIsIkVWRU5UX01PREFMX0hJREUiLCJUUklHR0VSX0hPVkVSIiwiVFJJR0dFUl9GT0NVUyIsIlRSSUdHRVJfQ0xJQ0siLCJUUklHR0VSX01BTlVBTCIsIkVWRU5UX0lOU0VSVEVEIiwiRVZFTlRfQ0xJQ0siLCJFVkVOVF9GT0NVU09VVCIsIkF0dGFjaG1lbnRNYXAiLCJBVVRPIiwiVE9QIiwiUklHSFQiLCJCT1RUT00iLCJMRUZUIiwiYW5pbWF0aW9uIiwiY29udGFpbmVyIiwiY3VzdG9tQ2xhc3MiLCJkZWxheSIsImZhbGxiYWNrUGxhY2VtZW50cyIsInRpdGxlIiwiVG9vbHRpcCIsIl9CYXNlQ29tcG9uZW50OCIsIl9zdXBlcjEzIiwiX3RoaXMzOSIsIl9pc0VuYWJsZWQiLCJfdGltZW91dCIsIl9pc0hvdmVyZWQiLCJfYWN0aXZlVHJpZ2dlciIsIl90ZW1wbGF0ZUZhY3RvcnkiLCJfbmV3Q29udGVudCIsInRpcCIsIl9zZXRMaXN0ZW5lcnMiLCJfZml4VGl0bGUiLCJlbmFibGUiLCJkaXNhYmxlIiwidG9nZ2xlRW5hYmxlZCIsImNsaWNrIiwiX2xlYXZlIiwiX2VudGVyIiwiX2hpZGVNb2RhbEhhbmRsZXIiLCJfZGlzcG9zZVBvcHBlciIsIl90aGlzNDAiLCJfaXNXaXRoQ29udGVudCIsInNoYWRvd1Jvb3QiLCJpc0luVGhlRG9tIiwib3duZXJEb2N1bWVudCIsIl9nZXRUaXBFbGVtZW50IiwiX3JlZjE1IiwiX2l0ZXJhdG9yMjAiLCJfc3RlcDIwIiwiX3RoaXM0MSIsIl9yZWYxNiIsIl9pdGVyYXRvcjIxIiwiX3N0ZXAyMSIsIl9pc1dpdGhBY3RpdmVUcmlnZ2VyIiwiX2dldFRpdGxlIiwiX2NyZWF0ZVRpcEVsZW1lbnQiLCJfZ2V0Q29udGVudEZvclRlbXBsYXRlIiwiX2dldFRlbXBsYXRlRmFjdG9yeSIsInRpcElkIiwic2V0Q29udGVudCIsIl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQiLCJfZ2V0RGVsZWdhdGVDb25maWciLCJhdHRhY2htZW50IiwiX3RoaXM0MiIsIl90aGlzNDMiLCJwaGFzZSIsInN0YXRlIiwiX3RoaXM0NCIsInRyaWdnZXJzIiwiX2l0ZXJhdG9yMjIiLCJfc3RlcDIyIiwiZXZlbnRJbiIsImV2ZW50T3V0IiwiX3RoaXM0NSIsIl9zZXRUaW1lb3V0IiwiX3RoaXM0NiIsInRpbWVvdXQiLCJkYXRhQXR0cmlidXRlcyIsIl9pMTAiLCJfT2JqZWN0JGtleXM1IiwiZGF0YUF0dHJpYnV0ZSIsIlNFTEVDVE9SX1RJVExFIiwiU0VMRUNUT1JfQ09OVEVOVCIsIlBvcG92ZXIiLCJfVG9vbHRpcCIsIl9zdXBlcjE0IiwiX2dldENvbnRlbnQiLCJfcmVmMTgiLCJFVkVOVF9BQ1RJVkFURSIsIkNMQVNTX05BTUVfRFJPUERPV05fSVRFTSIsIlNFTEVDVE9SX0RBVEFfU1BZIiwiU0VMRUNUT1JfVEFSR0VUX0xJTktTIiwiU0VMRUNUT1JfTkFWX0xJU1RfR1JPVVAiLCJTRUxFQ1RPUl9OQVZfTElOS1MiLCJTRUxFQ1RPUl9OQVZfSVRFTVMiLCJTRUxFQ1RPUl9MSVNUX0lURU1TIiwiU0VMRUNUT1JfTElOS19JVEVNUyIsIlNFTEVDVE9SX0RST1BET1dOIiwiU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFIiwicm9vdE1hcmdpbiIsInNtb290aFNjcm9sbCIsInRocmVzaG9sZCIsIlNjcm9sbFNweSIsIl9CYXNlQ29tcG9uZW50OSIsIl9zdXBlcjE1IiwiX3RoaXM0NyIsIl90YXJnZXRMaW5rcyIsIl9vYnNlcnZhYmxlU2VjdGlvbnMiLCJfcm9vdEVsZW1lbnQiLCJfYWN0aXZlVGFyZ2V0IiwiX29ic2VydmVyIiwiX3ByZXZpb3VzU2Nyb2xsRGF0YSIsInZpc2libGVFbnRyeVRvcCIsInBhcmVudFNjcm9sbFRvcCIsInJlZnJlc2giLCJfaW5pdGlhbGl6ZVRhcmdldHNBbmRPYnNlcnZhYmxlcyIsIl9tYXliZUVuYWJsZVNtb290aFNjcm9sbCIsImRpc2Nvbm5lY3QiLCJfZ2V0TmV3T2JzZXJ2ZXIiLCJfaXRlcmF0b3IyMyIsIl9zdGVwMjMiLCJzZWN0aW9uIiwib2JzZXJ2ZSIsIl90aGlzNDgiLCJvYnNlcnZhYmxlU2VjdGlvbiIsImhhc2giLCJoZWlnaHQiLCJvZmZzZXRUb3AiLCJzY3JvbGxUbyIsInRvcCIsImJlaGF2aW9yIiwiX3RoaXM0OSIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwiX29ic2VydmVyQ2FsbGJhY2siLCJfdGhpczUwIiwidGFyZ2V0RWxlbWVudCIsImlkIiwiX3Byb2Nlc3MiLCJ1c2VyU2Nyb2xsc0Rvd24iLCJfaXRlcmF0b3IyNCIsIl9zdGVwMjQiLCJpc0ludGVyc2VjdGluZyIsIl9jbGVhckFjdGl2ZUNsYXNzIiwiZW50cnlJc0xvd2VyVGhhblByZXZpb3VzIiwidGFyZ2V0TGlua3MiLCJfaXRlcmF0b3IyNSIsIl9zdGVwMjUiLCJhbmNob3IiLCJfYWN0aXZhdGVQYXJlbnRzIiwiX2l0ZXJhdG9yMjYiLCJfc3RlcDI2IiwibGlzdEdyb3VwIiwiX2l0ZXJhdG9yMjciLCJfc3RlcDI3IiwiaXRlbSIsImFjdGl2ZU5vZGVzIiwiX2l0ZXJhdG9yMjgiLCJfc3RlcDI4Iiwibm9kZSIsIl9pdGVyYXRvcjI5IiwiX3N0ZXAyOSIsInNweSIsIkNMQVNTX0RST1BET1dOIiwiU0VMRUNUT1JfRFJPUERPV05fTUVOVSIsIk5PVF9TRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEUiLCJTRUxFQ1RPUl9UQUJfUEFORUwiLCJTRUxFQ1RPUl9PVVRFUiIsIlNFTEVDVE9SX0lOTkVSIiwiU0VMRUNUT1JfSU5ORVJfRUxFTSIsIlNFTEVDVE9SX0RBVEFfVE9HR0xFX0FDVElWRSIsIlRhYiIsIl9CYXNlQ29tcG9uZW50MTAiLCJfc3VwZXIxNiIsIl90aGlzNTEiLCJfc2V0SW5pdGlhbEF0dHJpYnV0ZXMiLCJfZ2V0Q2hpbGRyZW4iLCJpbm5lckVsZW0iLCJfZWxlbUlzQWN0aXZlIiwiYWN0aXZlIiwiX2dldEFjdGl2ZUVsZW0iLCJfZGVhY3RpdmF0ZSIsIl9hY3RpdmF0ZSIsInJlbGF0ZWRFbGVtIiwiX3RoaXM1MiIsIl90b2dnbGVEcm9wRG93biIsIl90aGlzNTMiLCJuZXh0QWN0aXZlRWxlbWVudCIsInByZXZlbnRTY3JvbGwiLCJfdGhpczU0IiwiX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzIiwiX2l0ZXJhdG9yMzAiLCJfc3RlcDMwIiwiX3NldEluaXRpYWxBdHRyaWJ1dGVzT25DaGlsZCIsIl9nZXRJbm5lckVsZW1lbnQiLCJpc0FjdGl2ZSIsIm91dGVyRWxlbSIsIl9nZXRPdXRlckVsZW1lbnQiLCJfc2V0SW5pdGlhbEF0dHJpYnV0ZXNPblRhcmdldFBhbmVsIiwib3BlbiIsIl9pdGVyYXRvcjMxIiwiX3N0ZXAzMSIsIkVWRU5UX01PVVNFT1ZFUiIsIkVWRU5UX01PVVNFT1VUIiwiQ0xBU1NfTkFNRV9ISURFIiwiYXV0b2hpZGUiLCJUb2FzdCIsIl9CYXNlQ29tcG9uZW50MTEiLCJfc3VwZXIxNyIsIl90aGlzNTUiLCJfaGFzTW91c2VJbnRlcmFjdGlvbiIsIl9oYXNLZXlib2FyZEludGVyYWN0aW9uIiwiX3RoaXM1NiIsIl9jbGVhclRpbWVvdXQiLCJfbWF5YmVTY2hlZHVsZUhpZGUiLCJfdGhpczU3IiwiaXNTaG93biIsIl90aGlzNTgiLCJfb25JbnRlcmFjdGlvbiIsImlzSW50ZXJhY3RpbmciLCJfdGhpczU5Il0sInNvdXJjZVJvb3QiOiIifQ==\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");
|
||
/******/
|
||
/******/ return __webpack_exports__;
|
||
/******/ })()
|
||
;
|
||
}); |