(self["webpackChunk"] = self["webpackChunk"] || []).push([["adminlte-common"],{ /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/app.common.js": /*!*************************************************************************************!*\ !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/app.common.js ***! \*************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/src/jquery.js"); /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var adminlte_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! adminlte-js */ "./node_modules/admin-lte/dist/js/adminlte.min.js"); /* harmony import */ var adminlte_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(adminlte_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var adminlte_plugin_bootstrap_js_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! adminlte-plugin/bootstrap/js/bootstrap.min.js */ "./node_modules/admin-lte/plugins/bootstrap/js/bootstrap.min.js"); /* harmony import */ var adminlte_plugin_bootstrap_js_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(adminlte_plugin_bootstrap_js_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var adminlte_plugin_select2_js_select2_min_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! adminlte-plugin/select2/js/select2.min.js */ "./node_modules/admin-lte/plugins/select2/js/select2.min.js"); /* harmony import */ var adminlte_plugin_select2_js_select2_min_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(adminlte_plugin_select2_js_select2_min_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var adminlte_plugin_select2_js_i18n_fr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! adminlte-plugin/select2/js/i18n/fr.js */ "./node_modules/admin-lte/plugins/select2/js/i18n/fr.js"); /* harmony import */ var adminlte_plugin_select2_js_i18n_fr_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(adminlte_plugin_select2_js_i18n_fr_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var adminlte_plugin_select2_css_select2_min_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! adminlte-plugin/select2/css/select2.min.css */ "./node_modules/admin-lte/plugins/select2/css/select2.min.css"); /* harmony import */ var adminlte_plugin_select2_bootstrap4_theme_select2_bootstrap4_min_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! adminlte-plugin/select2-bootstrap4-theme/select2-bootstrap4.min.css */ "./node_modules/admin-lte/plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css"); /* harmony import */ var toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! toastr/toastr.js */ "./node_modules/toastr/toastr.js"); /* harmony import */ var toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7__); /* harmony import */ var toastr_toastr_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! toastr/toastr.scss */ "./node_modules/toastr/toastr.scss"); /* harmony import */ var _tools_tools_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../tools/tools.js */ "../LaclicBundles/SovBundle/Resources/assets/tools/tools.js"); /* harmony import */ var _js_notification_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./js/notification.js */ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/js/notification.js"); /* harmony import */ var _common_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./common.scss */ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.scss"); /* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./common.js */ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.js"); /* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_common_js__WEBPACK_IMPORTED_MODULE_12__); // JQuery __webpack_require__.g.$ = __webpack_require__.g.jQuery = $; // Adminlte // Bootstrap // Select2 // Toastr __webpack_require__.g.toastr = (toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7___default()); // Tools __webpack_require__.g.Tools = _tools_tools_js__WEBPACK_IMPORTED_MODULE_9__.Tools; __webpack_require__.g.Notification = _js_notification_js__WEBPACK_IMPORTED_MODULE_10__.Notification; _js_notification_js__WEBPACK_IMPORTED_MODULE_10__.Notification.init(); // Common /***/ }), /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.js": /*!*********************************************************************************!*\ !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.js ***! \*********************************************************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js"); /* Notifications */ //Notification.init() ; /* Tooltip */ $('[data-toggle="tooltip"]').tooltip(); /* Select2 */ if ($('.select2, select.form-control').length) { $('form .form-widget>select.form-control, .select2').each(function (i, elm) { if (!$(this).hasClass('disable-select2')) { setSelect2($(elm)); } }); $('form select.form-control').each(function (i, elm) { if (!$(this).hasClass('disable-select2')) { setSelect2($(elm)); } }); } function setSelect2($select) { if (typeof $select.data('select2-id') === 'undefined') { $select.data('init', 'set'); var options = { width: "100%", theme: "bootstrap4", dropdownAutoWidth: false, allowClear: true, minimumResultsForSearch: 8 }; if ($select.data('allow-clear') == 'false') { options.allowClear = false; } if ($select.data('width')) { options.width = 'auto'; } if ($select.find('option[value=""]')) { options.placeholder = $select.find('option[value=""]').html(); } /*if($select.is(':required') == false) { options.allowclear = true }*/ var myselect = $select.select2(options); myselect.on('select2:select', function (e) { var event = new Event('change'); e.target.dispatchEvent(event); }); myselect.on('select2:unselect', function (e) { var event = new Event('change'); e.target.dispatchEvent(event); }); return myselect; } } $('.action-delete').on('click', function (e) { e.preventDefault(); var formAction = $(this).attr('formaction'); $('#modal-delete').modal({ backdrop: true, keyboard: true }).off('click', '#modal-delete-button').on('click', '#modal-delete-button', function () { var deleteForm = $('#delete-form'); deleteForm.attr('action', formAction); deleteForm.submit(); }); }); /***/ }), /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/js/notification.js": /*!******************************************************************************************!*\ !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/js/notification.js ***! \******************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Notification": () => (/* binding */ Notification) /* harmony export */ }); /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js"); /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ "./node_modules/core-js/modules/es.string.includes.js"); /* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js"); /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js"); /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3__); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var Notification = /*#__PURE__*/function () { function Notification() { _classCallCheck(this, Notification); } _createClass(Notification, null, [{ key: "init", value: function init() { toastr.options.timeOut = 3000; toastr.options.positionClass = 'toast-bottom-right'; toastr.options.onHidden = function () { if ($('#toast-container .toast').length == 1) { $('#toast-close-all').remove(); } }; } }, { key: "set", value: function set(notifications) { var currentNotifications = new Array(); for (var type in notifications) { for (var key in notifications[type]) { if (!currentNotifications.includes(notifications[type][key])) { currentNotifications.push(notifications[type][key]); self.add(type, notifications[type][key]); } } } } }, { key: "add", value: function add(type, text) { toastr[type](text); var $container = $('#toast-container'); var selectorButtonCloseAll = '#toast-close-all'; var countMessages = $container.find('.toast').length; if ($(selectorButtonCloseAll).length == 0 && countMessages > 2) { $container.prepend(''); } $(selectorButtonCloseAll).off('click').on('click', function () { toastr.remove(); if (countMessages == 0) { $('#toast-close-all').remove(); } }); } }]); return Notification; }(); /***/ }), /***/ "../LaclicBundles/SovBundle/Resources/assets/tools/tools.js": /*!******************************************************************!*\ !*** ../LaclicBundles/SovBundle/Resources/assets/tools/tools.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Tools": () => (/* binding */ Tools) /* harmony export */ }); /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js"); /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js"); /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ "./node_modules/core-js/modules/es.string.search.js"); /* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js"); /* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js"); /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5__); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var Tools = /*#__PURE__*/function () { function Tools() { _classCallCheck(this, Tools); } _createClass(Tools, null, [{ key: "log", value: function log(value) { try { console.log(value); } catch (_unused) {} } }, { key: "arrayRemove", value: function arrayRemove(arr, value) { return arr.filter(function (ele) { return ele != value; }); } }, { key: "toPlainText", value: function toPlainText(html) { var scratchDiv = document.createElement('div'); scratchDiv.innerHTML = html; return scratchDiv.textContent; } }, { key: "getDateFormatted", value: function getDateFormatted(date, separator) { if (date) { var date = new Date(date); var _d = date.getDate(), d = _d > 9 ? _d : '0' + _d, _m = date.getMonth() + 1, m = _m > 9 ? _m : '0' + _m, formatted = d + separator + m + separator + date.getFullYear(); return formatted; } else { return ''; } } }, { key: "getUrlParameter", value: function getUrlParameter(sParam) { var sPageURL = window.location.search.substring(1), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); } } } }, { key: "indexOfFirstDigit", value: function indexOfFirstDigit(input) { var i = 0; for (; input[i] < '0' || input[i] > '9'; i++) { ; } return i == input.length ? -1 : i; } }, { key: "indexOfLastDigit", value: function indexOfLastDigit(input) { var i = input.length - 1; for (; input[i] < '0' || input[i] > '9'; i--) { ; } return i == input.length ? -1 : i; } }]); return Tools; }(); /***/ }), /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.scss": /*!***********************************************************************************!*\ !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.scss ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin /***/ }) }, /******/ __webpack_require__ => { // webpackRuntimeModules /******/ "use strict"; /******/ /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_internals_a-function_js-node_modules_core-js_internals_export_js","vendors-node_modules_core-js_modules_es_array_find_js","vendors-node_modules_core-js_internals_advance-string-index_js-node_modules_core-js_internals-bed4a0","vendors-node_modules_jquery_src_jquery_js","vendors-node_modules_admin-lte_dist_js_adminlte_min_js-node_modules_admin-lte_plugins_bootstr-9c1f64"], () => (__webpack_exec__("../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/app.common.js"))); /******/ var __webpack_exports__ = __webpack_require__.O(); /******/ } ]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vTGFjbGljQnVuZGxlcy9Tb3ZCdW5kbGUvUmVzb3VyY2VzL2Fzc2V0cy9hcHAvYWRtaW5sdGUvY29tbW9uL2FwcC5jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL0xhY2xpY0J1bmRsZXMvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL2NvbW1vbi9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL0xhY2xpY0J1bmRsZXMvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL2NvbW1vbi9qcy9ub3RpZmljYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL0xhY2xpY0J1bmRsZXMvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvdG9vbHMvdG9vbHMuanMiLCJ3ZWJwYWNrOi8vLy4uL0xhY2xpY0J1bmRsZXMvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL2NvbW1vbi9jb21tb24uc2NzcyJdLCJuYW1lcyI6WyJnbG9iYWwiLCIkIiwialF1ZXJ5IiwidG9hc3RyIiwiVG9vbHMiLCJOb3RpZmljYXRpb24iLCJ0b29sdGlwIiwibGVuZ3RoIiwiZWFjaCIsImkiLCJlbG0iLCJoYXNDbGFzcyIsInNldFNlbGVjdDIiLCIkc2VsZWN0IiwiZGF0YSIsIm9wdGlvbnMiLCJ3aWR0aCIsInRoZW1lIiwiZHJvcGRvd25BdXRvV2lkdGgiLCJhbGxvd0NsZWFyIiwibWluaW11bVJlc3VsdHNGb3JTZWFyY2giLCJmaW5kIiwicGxhY2Vob2xkZXIiLCJodG1sIiwibXlzZWxlY3QiLCJzZWxlY3QyIiwib24iLCJlIiwiZXZlbnQiLCJFdmVudCIsInRhcmdldCIsImRpc3BhdGNoRXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsImZvcm1BY3Rpb24iLCJhdHRyIiwibW9kYWwiLCJiYWNrZHJvcCIsImtleWJvYXJkIiwib2ZmIiwiZGVsZXRlRm9ybSIsInN1Ym1pdCIsInRpbWVPdXQiLCJwb3NpdGlvbkNsYXNzIiwib25IaWRkZW4iLCJyZW1vdmUiLCJub3RpZmljYXRpb25zIiwiY3VycmVudE5vdGlmaWNhdGlvbnMiLCJBcnJheSIsInR5cGUiLCJrZXkiLCJpbmNsdWRlcyIsInB1c2giLCJzZWxmIiwiYWRkIiwidGV4dCIsIiRjb250YWluZXIiLCJzZWxlY3RvckJ1dHRvbkNsb3NlQWxsIiwiY291bnRNZXNzYWdlcyIsInByZXBlbmQiLCJ2YWx1ZSIsImNvbnNvbGUiLCJsb2ciLCJhcnIiLCJmaWx0ZXIiLCJlbGUiLCJzY3JhdGNoRGl2IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaW5uZXJIVE1MIiwidGV4dENvbnRlbnQiLCJkYXRlIiwic2VwYXJhdG9yIiwiRGF0ZSIsIl9kIiwiZ2V0RGF0ZSIsImQiLCJfbSIsImdldE1vbnRoIiwibSIsImZvcm1hdHRlZCIsImdldEZ1bGxZZWFyIiwic1BhcmFtIiwic1BhZ2VVUkwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsInN1YnN0cmluZyIsInNVUkxWYXJpYWJsZXMiLCJzcGxpdCIsInNQYXJhbWV0ZXJOYW1lIiwidW5kZWZpbmVkIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaW5wdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQUEscUJBQU0sQ0FBQ0MsQ0FBUCxHQUFXRCxxQkFBTSxDQUFDRSxNQUFQLEdBQWdCRCxDQUEzQixDLENBRUE7O0NBR0E7O0NBR0E7O0FBQ0E7QUFDQTtBQUNBO0NBR0E7O0FBQ0E7QUFDQTtBQUNBRCxxQkFBTSxDQUFDRyxNQUFQLEdBQWdCQSx5REFBaEIsQyxDQUVBOztBQUNBO0FBQ0FILHFCQUFNLENBQUNJLEtBQVAsR0FBZUEsa0RBQWY7QUFFQTtBQUNBSixxQkFBTSxDQUFDSyxZQUFQLEdBQXNCQSw4REFBdEI7QUFDQUEsbUVBQUEsRyxDQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7O0FDOUJBO0FBQ0E7O0FBRUE7QUFDQUosQ0FBQyxDQUFDLHlCQUFELENB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QztBQUE4QztBQUE5Qzs7QUFDQSxhQUFPQSxDQUFDLElBQUltRixLQUFLLENBQUNyRixNQUFYLEdBQW9CLENBQUMsQ0FBckIsR0FBeUJFLENBQWhDO0FBQ1A7QUEzRFQ7O0FBQUE7QUFBQSxJOzs7Ozs7Ozs7Ozs7QUNEQSIsImZpbGUiOiJhZG1pbmx0ZS1jb21tb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIEpRdWVyeVxuaW1wb3J0ICdqcXVlcnknO1xuZ2xvYmFsLiQgPSBnbG9iYWwualF1ZXJ5ID0gJDtcblxuLy8gQWRtaW5sdGVcbmltcG9ydCAnYWRtaW5sdGUtanMnIDtcblxuLy8gQm9vdHN0cmFwXG5pbXBvcnQgJ2FkbWlubHRlLXBsdWdpbi9ib290c3RyYXAvanMvYm9vdHN0cmFwLm1pbi5qcyc7XG5cbi8vIFNlbGVjdDJcbmltcG9ydCAnYWRtaW5sdGUtcGx1Z2luL3NlbGVjdDIvanMvc2VsZWN0Mi5taW4uanMnO1xuaW1wb3J0ICdhZG1pbmx0ZS1wbHVnaW4vc2VsZWN0Mi9qcy9pMThuL2ZyLmpzJztcbmltcG9ydCAnYWRtaW5sdGUtcGx1Z2luL3NlbGVjdDIvY3NzL3NlbGVjdDIubWluLmNzcyc7XG5pbXBvcnQgJ2FkbWlubHRlLXBsdWdpbi9zZWxlY3QyLWJvb3RzdHJhcDQtdGhlbWUvc2VsZWN0Mi1ib290c3RyYXA0Lm1pbi5jc3MnO1xuXG4vLyBUb2FzdHJcbmltcG9ydCB0b2FzdHIgZnJvbSAndG9hc3RyL3RvYXN0ci5qcycgO1xuaW1wb3J0ICd0b2FzdHIvdG9hc3RyLnNjc3MnIDtcbmdsb2JhbC50b2FzdHIgPSB0b2FzdHIgO1xuXG4vLyBUb29sc1xuaW1wb3J0IHsgVG9vbHMgfSBmcm9tICcuLi8uLi8uLi90b29scy90b29scy5qcyc7XG5nbG9iYWwuVG9vbHMgPSBUb29scztcblxuaW1wb3J0IHsgTm90aWZpY2F0aW9uIH0gZnJvbSAnLi9qcy9ub3RpZmljYXRpb24uanMnO1xuZ2xvYmFsLk5vdGlmaWNhdGlvbiA9IE5vdGlmaWNhdGlvbjtcbk5vdGlmaWNhdGlvbi5pbml0KCkgO1xuXG4vLyBDb21tb25cbmltcG9ydCAnLi9jb21tb24uc2Nzcyc7XG5pbXBvcnQgJy4vY29tbW9uLmpzJyA7XG5cblxuXG5cbiIsIlxuLyogTm90aWZpY2F0aW9ucyAqL1xuLy9Ob3RpZmljYXRpb24uaW5pdCgpIDtcblxuLyogVG9vbHRpcCAqL1xuJCgnW2RhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXScpLnRvb2x0aXAoKTtcblxuLyogU2VsZWN0MiAqL1xuaWYgKCQoJy5zZWxlY3QyLCBzZWxlY3QuZm9ybS1jb250cm9sJykubGVuZ3RoKSB7XG5cbiAgICAkKCdmb3JtIC5mb3JtLXdpZGdldD5zZWxlY3QuZm9ybS1jb250cm9sLCAuc2VsZWN0MicpLmVhY2goZnVuY3Rpb24gKGksIGVsbSkge1xuICAgICAgICBpZiAoISQodGhpcykuaGFzQ2xhc3MoJ2Rpc2FibGUtc2VsZWN0MicpKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3QyKCQoZWxtKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgICQoJ2Zvcm0gc2VsZWN0LmZvcm0tY29udHJvbCcpLmVhY2goZnVuY3Rpb24gKGksIGVsbSkge1xuICAgICAgICBpZiAoISQodGhpcykuaGFzQ2xhc3MoJ2Rpc2FibGUtc2VsZWN0MicpKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3QyKCQoZWxtKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0U2VsZWN0Migkc2VsZWN0KSB7XG4gICAgaWYgKHR5cGVvZiAkc2VsZWN0LmRhdGEoJ3NlbGVjdDItaWQnKSA9PT0gJ3VuZGVmaW5lZCcpIHtcblxuICAgICAgICAkc2VsZWN0LmRhdGEoJ2luaXQnLCAnc2V0JylcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICB0aGVtZTogXCJib290c3RyYXA0XCIsXG4gICAgICAgICAgICBkcm9wZG93bkF1dG9XaWR0aDogZmFsc2UsXG4gICAgICAgICAgICBhbGxvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6IDhcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoJHNlbGVjdC5kYXRhKCdhbGxvdy1jbGVhcicpID09ICdmYWxzZScpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dDbGVhciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkc2VsZWN0LmRhdGEoJ3dpZHRoJykpIHtcbiAgICAgICAgICAgIG9wdGlvbnMud2lkdGggPSAnYXV0bydcbiAgICAgICAgfVxuICAgICAgICBpZiAoJHNlbGVjdC5maW5kKCdvcHRpb25bdmFsdWU9XCJcIl0nKSkge1xuICAgICAgICAgICAgb3B0aW9ucy5wbGFjZWhvbGRlciA9ICRzZWxlY3QuZmluZCgnb3B0aW9uW3ZhbHVlPVwiXCJdJykuaHRtbCgpXG4gICAgICAgIH1cbiAgICAgICAgLyppZigkc2VsZWN0LmlzKCc6cmVxdWlyZWQnKSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3B0aW9ucy5hbGxvd2NsZWFyID0gdHJ1ZVxuICAgICAgICB9Ki9cbiAgICAgICAgdmFyIG15c2VsZWN0ID0gJHNlbGVjdC5zZWxlY3QyKG9wdGlvbnMpO1xuXG4gICAgICAgIG15c2VsZWN0Lm9uKCdzZWxlY3QyOnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScpO1xuICAgICAgICAgICAgZS50YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICBteXNlbGVjdC5vbignc2VsZWN0Mjp1bnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScpO1xuICAgICAgICAgICAgZS50YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBteXNlbGVjdDtcbiAgICB9XG59XG5cblxuJCgnLmFjdGlvbi1kZWxldGUnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBmb3JtQWN0aW9uID0gJCh0aGlzKS5hdHRyKCdmb3JtYWN0aW9uJyk7XG5cbiAgICAkKCcjbW9kYWwtZGVsZXRlJykubW9kYWwoe2JhY2tkcm9wOiB0cnVlLCBrZXlib2FyZDogdHJ1ZX0pXG4gICAgICAgIC5vZmYoJ2NsaWNrJywgJyNtb2RhbC1kZWxldGUtYnV0dG9uJylcbiAgICAgICAgLm9uKCdjbGljaycsICcjbW9kYWwtZGVsZXRlLWJ1dHRvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxldCBkZWxldGVGb3JtID0gJCgnI2RlbGV0ZS1mb3JtJyk7XG4gICAgICAgICAgICBkZWxldGVGb3JtLmF0dHIoJ2FjdGlvbicsIGZvcm1BY3Rpb24pO1xuICAgICAgICAgICAgZGVsZXRlRm9ybS5zdWJtaXQoKTtcbiAgICAgICAgfSk7XG59KTtcblxuIiwiXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uIHtcblxuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICB0b2FzdHIub3B0aW9ucy50aW1lT3V0ID0gMzAwMDtcbiAgICAgICAgdG9hc3RyLm9wdGlvbnMucG9zaXRpb25DbGFzcyA9ICd0b2FzdC1ib3R0b20tcmlnaHQnO1xuICAgICAgICB0b2FzdHIub3B0aW9ucy5vbkhpZGRlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICgkKCcjdG9hc3QtY29udGFpbmVyIC50b2FzdCcpLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgJCgnI3RvYXN0LWNsb3NlLWFsbCcpLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHN0YXRpYyBzZXQobm90aWZpY2F0aW9ucykge1xuICAgICAgICB2YXIgY3VycmVudE5vdGlmaWNhdGlvbnMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBub3RpZmljYXRpb25zKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbm90aWZpY2F0aW9uc1t0eXBlXSkge1xuICAgICAgICAgICAgICAgIGlmICghY3VycmVudE5vdGlmaWNhdGlvbnMuaW5jbHVkZXMobm90aWZpY2F0aW9uc1t0eXBlXVtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm90aWZpY2F0aW9ucy5wdXNoKG5vdGlmaWNhdGlvbnNbdHlwZV1ba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKHR5cGUsIG5vdGlmaWNhdGlvbnNbdHlwZV1ba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGFkZCh0eXBlLCB0ZXh0KSB7XG5cbiAgICAgICAgdG9hc3RyW3R5cGVdKHRleHQpO1xuXG4gICAgICAgIGxldCAkY29udGFpbmVyID0gJCgnI3RvYXN0LWNvbnRhaW5lcicpIDtcbiAgICAgICAgbGV0IHNlbGVjdG9yQnV0dG9uQ2xvc2VBbGwgPSAnI3RvYXN0LWNsb3NlLWFsbCcgO1xuICAgICAgICBsZXQgY291bnRNZXNzYWdlcyA9ICRjb250YWluZXIuZmluZCgnLnRvYXN0JykubGVuZ3RoIDtcblxuICAgICAgICBpZiAoJChzZWxlY3RvckJ1dHRvbkNsb3NlQWxsKS5sZW5ndGggPT0gMCAmJiBjb3VudE1lc3NhZ2VzID4gMikge1xuICAgICAgICAgICAgJGNvbnRhaW5lci5wcmVwZW5kKCc8YnV0dG9uIGlkPVwidG9hc3QtY2xvc2UtYWxsXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2J1dHRvbj4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgICQoc2VsZWN0b3JCdXR0b25DbG9zZUFsbCkub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRvYXN0ci5yZW1vdmUoKTtcbiAgICAgICAgICAgIGlmIChjb3VudE1lc3NhZ2VzID09IDApIHtcbiAgICAgICAgICAgICAgICAkKCcjdG9hc3QtY2xvc2UtYWxsJykucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxufSIsIlxuZXhwb3J0IGNsYXNzIFRvb2xzIHtcblxuICAgICAgICBzdGF0aWMgbG9nKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbHVlKSA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIHt9XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0aWMgYXJyYXlSZW1vdmUoYXJyLCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uKGVsZSl7IHJldHVybiBlbGUgIT0gdmFsdWU7IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGljIHRvUGxhaW5UZXh0KGh0bWwpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2NyYXRjaERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIHNjcmF0Y2hEaXYuaW5uZXJIVE1MID0gaHRtbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NyYXRjaERpdi50ZXh0Q29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRpYyBnZXREYXRlRm9ybWF0dGVkKGRhdGUsIHNlcGFyYXRvcikge1xuICAgICAgICAgICAgICAgIGlmKGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2QgPSBkYXRlLmdldERhdGUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gX2QgPiA5ID8gX2QgOiAnMCcgKyBfZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbSA9IGRhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IF9tID4gOSA/IF9tIDogJzAnICsgX20sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkID0gZCArIHNlcGFyYXRvciArIG0gKyBzZXBhcmF0b3IgKyBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0aWMgZ2V0VXJsUGFyYW1ldGVyKHNQYXJhbSkge1xuICAgICAgICAgICAgICAgIHZhciBzUGFnZVVSTCA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLFxuICAgICAgICAgICAgICAgICAgICBzVVJMVmFyaWFibGVzID0gc1BhZ2VVUkwuc3BsaXQoJyYnKSxcbiAgICAgICAgICAgICAgICAgICAgc1BhcmFtZXRlck5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc1VSTFZhcmlhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc1BhcmFtZXRlck5hbWUgPSBzVVJMVmFyaWFibGVzW2ldLnNwbGl0KCc9Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzUGFyYW1ldGVyTmFtZVswXSA9PT0gc1BhcmFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzUGFyYW1ldGVyTmFtZVsxXSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGRlY29kZVVSSUNvbXBvbmVudChzUGFyYW1ldGVyTmFtZVsxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGljIGluZGV4T2ZGaXJzdERpZ2l0KGlucHV0KSB7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoOyBpbnB1dFtpXSA8ICcwJyB8fCBpbnB1dFtpXSA+ICc5JzsgaSsrKSA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgPT0gaW5wdXQubGVuZ3RoID8gLTEgOiBpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGljIGluZGV4T2ZMYXN0RGlnaXQoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBsZXQgaSA9IGlucHV0Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgZm9yICg7IGlucHV0W2ldIDwgJzAnIHx8IGlucHV0W2ldID4gJzknOyBpLS0pIDtcbiAgICAgICAgICAgICAgICByZXR1cm4gaSA9PSBpbnB1dC5sZW5ndGggPyAtMSA6IGk7XG4gICAgICAgIH1cbn1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyJdLCJzb3VyY2VSb290IjoiIn0=