1!function(Q){var U={};function I(F){if(U[F])return U[F].exports;var B=U[F]={i:F,l:!1,exports:{}};return Q[F].call(B.exports,B,B.exports,I),B.l=!0,B.exports}I.m=Q,I.c=U,I.d=function(Q,U,F){I.o(Q,U)||Object.defineProperty(Q,U,{enumerable:!0,get:F})},I.r=function(Q){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(Q,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(Q,"__esModule",{value:!0})},I.t=function(Q,U){if(1&U&&(Q=I(Q)),8&U)return Q;if(4&U&&"object"==typeof Q&&Q&&Q.__esModule)return Q;var F=Object.create(null);if(I.r(F),Object.defineProperty(F,"default",{enumerable:!0,value:Q}),2&U&&"string"!=typeof Q)for(var B in Q)I.d(F,B,function(U){return Q[U]}.bind(null,B));return F},I.n=function(Q){var U=Q&&Q.__esModule?function(){return Q.default}:function(){return Q};return I.d(U,"a",U),U},I.o=function(Q,U){return Object.prototype.hasOwnProperty.call(Q,U)},I.p="",I(I.s=4)}([function(module,exports){eval('(function() { module.exports = window["wc"]["wcBlocksRegistry"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgW1wid2NcIixcIndjQmxvY2tzUmVnaXN0cnlcIl0/MjUwNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1EQUFtRCxFQUFFIiwiZmlsZSI6IjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKSB7IG1vZHVsZS5leHBvcnRzID0gd2luZG93W1wid2NcIl1bXCJ3Y0Jsb2Nrc1JlZ2lzdHJ5XCJdOyB9KCkpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n')},function(module,exports){eval('(function() { module.exports = window["wp"]["htmlEntities"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgW1wid3BcIixcImh0bWxFbnRpdGllc1wiXT85MDIyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsK0NBQStDLEVBQUUiLCJmaWxlIjoiMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpIHsgbW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dbXCJ3cFwiXVtcImh0bWxFbnRpdGllc1wiXTsgfSgpKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n')},function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getSogecommerceServerData; });\n/* harmony import */ var _woocommerce_settings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);\n/* harmony import */ var _woocommerce_settings__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_woocommerce_settings__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * Copyright © Lyra Network and contributors.\n * This file is part of Sogecommerce plugin for WooCommerce. See COPYING.md for license details.\n *\n * @author Lyra Network (https://www.lyra.com/)\n * @author Geoffrey Crofte, Alsacréations (https://www.alsacreations.fr/)\n * @copyright Lyra Network and contributors\n * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License (GPL v2)\n */\n\n/**\n * External dependencies.\n */\n\n/**\n * Sogecommerce data comes form the server passed on a global object.\n */\n\nvar getSogecommerceServerData = function getSogecommerceServerData(name) {\n var sogecommerceServerData = Object(_woocommerce_settings__WEBPACK_IMPORTED_MODULE_0__["getSetting"])(name + \'_data\', null);\n\n if (!sogecommerceServerData) {\n return;\n }\n\n return sogecommerceServerData;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvYmxvY2tzL3NvZ2Vjb21tZXJjZS11dGlscy5qcz9lZjk2Il0sIm5hbWVzIjpbImdldFNvZ2Vjb21tZXJjZVNlcnZlckRhdGEiLCJuYW1lIiwic29nZWNvbW1lcmNlU2VydmVyRGF0YSIsImdldFNldHRpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFFTyxJQUFNQSx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQTRCLENBQUNDLElBQUQsRUFBVTtBQUMvQyxNQUFNQyxzQkFBc0IsR0FBR0Msd0VBQVUsQ0FBRUYsSUFBSSxHQUFHLE9BQVQsRUFBa0IsSUFBbEIsQ0FBekM7O0FBRUEsTUFBSSxDQUFFQyxzQkFBTixFQUE4QjtBQUMxQjtBQUNIOztBQUVELFNBQU9BLHNCQUFQO0FBQ0gsQ0FSTSIsImZpbGUiOiIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgTHlyYSBOZXR3b3JrIGFuZCBjb250cmlidXRvcnMuXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBTb2dlY29tbWVyY2UgcGx1Z2luIGZvciBXb29Db21tZXJjZS4gU2VlIENPUFlJTkcubWQgZm9yIGxpY2Vuc2UgZGV0YWlscy5cbiAqXG4gKiBAYXV0aG9yICAgIEx5cmEgTmV0d29yayAoaHR0cHM6Ly93d3cubHlyYS5jb20vKVxuICogQGF1dGhvciAgICBHZW9mZnJleSBDcm9mdGUsIEFsc2FjcsOpYXRpb25zIChodHRwczovL3d3dy5hbHNhY3JlYXRpb25zLmZyLylcbiAqIEBjb3B5cmlnaHQgTHlyYSBOZXR3b3JrIGFuZCBjb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaH
1R0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL29sZC1saWNlbnNlcy9ncGwtMi4wLmh0bWwgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCB2MilcbiAqL1xuXG4vKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiAqL1xuaW1wb3J0IHsgZ2V0U2V0dGluZyB9IGZyb20gJ0B3b29jb21tZXJjZS9zZXR0aW5ncyc7XG5cbi8qKlxuICogU29nZWNvbW1lcmNlIGRhdGEgY29tZXMgZm9ybSB0aGUgc2VydmVyIHBhc3NlZCBvbiBhIGdsb2JhbCBvYmplY3QuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFNvZ2Vjb21tZXJjZVNlcnZlckRhdGEgPSAobmFtZSkgPT4ge1xuICAgIGNvbnN0IHNvZ2Vjb21tZXJjZVNlcnZlckRhdGEgPSBnZXRTZXR0aW5nKCBuYW1lICsgJ19kYXRhJywgbnVsbCApO1xuXG4gICAgaWYgKCEgc29nZWNvbW1lcmNlU2VydmVyRGF0YSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvZ2Vjb21tZXJjZVNlcnZlckRhdGE7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n')},function(module,exports){eval('(function() { module.exports = window["wc"]["wcSettings"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgW1wid2NcIixcIndjU2V0dGluZ3NcIl0/YzFiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLDZDQUE2QyxFQUFFIiwiZmlsZSI6IjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKSB7IG1vZHVsZS5leHBvcnRzID0gd2luZG93W1wid2NcIl1bXCJ3Y1NldHRpbmdzXCJdOyB9KCkpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n')},function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _woocommerce_blocks_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var _woocommerce_blocks_registry__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_woocommerce_blocks_registry__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _wordpress_html_entities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);\n/* harmony import */ var _wordpress_html_entities__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_html_entities__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _sogecommerce_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);\nvar _sogecommerce_data$su;\n\n/**\n * Copyright © Lyra Network and contributors.\n * This file is part of Sogecommerce plugin for WooCommerce. See COPYING.md for license details.\n *\n * @author Lyra Network (https://www.lyra.com/)\n * @author Geoffrey Crofte, Alsacréations (https://www.alsacreations.fr/)\n * @copyright Lyra Network and contributors\n * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License (GPL v2)\n */\n\n/**\n * External dependencies.\n */\n\n\n/**\n * Internal dependencies.\n */\n\n\nvar PAYMENT_METHOD_NAME = 'sogecommercestd';\nvar sogecommerce_data = Object(_sogecommerce_utils__WEBPACK_IMPORTED_MODULE_2__[/* getSogecommerceServerData */ \"a\"])(PAYMENT_METHOD_NAME);\nvar submitButton = '.wc-block-components-checkout-place-order-button';\nvar smartbuttonMethod = '';\nvar smartbuttonAll = false;\nvar hideSmart = (sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.hide_smartbutton) && (sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.hide_smartbutton) === 'true';\nvar hideButton = false;\nvar savedData = false;\nvar newData = null;\n\nvar Content = function Content() {\n if (sogecommerce_data !== null && sogecommerce_data !== void 0 && sogecommerce_data.payment_fields) {\n var fields = /*#__PURE__*/React.createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.payment_fields\n }\n });\n return /*#__PURE__*/React.createElement(\"div\", null, fields);\n } else {\n return Object(_wordpress_html_entities__WEBPACK_IMPORTED_MODULE_1__[\"decodeEntities\"])(sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.description);\n }\n};\n\nvar Label = function Label() {\n var styles = {\n divWidth: {\n width: '95%'\n },\n imgFloat: {\n \"float\": 'right'\n }\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n style: styles.divWidth\n }, /*#__PURE__*/React.createElement(\"span\", null, sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.title), /*#__PURE__*/React.createElement(\"img\", {\n style: styles.imgFloat,\n src: sogec
1ommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.logo_url,\n alt: sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.title\n }));\n};\n\nObject(_woocommerce_blocks_registry__WEBPACK_IMPORTED_MODULE_0__[\"registerPaymentMethod\"])({\n name: PAYMENT_METHOD_NAME,\n label: /*#__PURE__*/React.createElement(Label, null),\n ariaLabel: 'Sogecommerce payment method',\n canMakePayment: function canMakePayment() {\n return true;\n },\n content: /*#__PURE__*/React.createElement(Content, null),\n edit: /*#__PURE__*/React.createElement(Content, null),\n supports: {\n features: (_sogecommerce_data$su = sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.supports) !== null && _sogecommerce_data$su !== void 0 ? _sogecommerce_data$su : []\n }\n});\n\nvar displayFields = function displayFields() {\n if (jQuery(submitButton).length == 0) {\n return;\n }\n\n if (!jQuery(\"#radio-control-wc-payment-method-options-sogecommercestd\").is(\":checked\")) {\n return;\n }\n\n switch (sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.payment_mode) {\n case 'REST':\n case 'SMARTFORM':\n case 'SMARTFORMEXT':\n case 'SMARTFORMEXTNOLOGOS':\n if (sogecommerce_data !== null && sogecommerce_data !== void 0 && sogecommerce_data.vars) {\n delete window.FORM_TOKEN;\n delete window.IDENTIFIER_FORM_TOKEN;\n delete window.SOGECOMMERCE_HIDE_SINGLE_BUTTON;\n window.SOGECOMMERCE_BUTTON_TEXT = jQuery(submitButton).text();\n eval(sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.vars);\n hideButton = window.SOGECOMMERCE_HIDE_SINGLE_BUTTON == true;\n KR.onFormReady(function () {\n if (hideSmart) {\n var element = jQuery(\".kr-smart-button\");\n\n if (element.length > 0) {\n smartbuttonMethod = element.attr(\"kr-payment-method\");\n element.hide();\n } else {\n element = jQuery(\".kr-smart-form-modal-button\");\n\n if (element.length > 0) {\n smartbuttonMethod = \"all\";\n element.hide();\n }\n }\n }\n });\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type == \"characterData\" && mutation.target.nodeName == \"#text\") {\n refreshTempToken();\n }\n });\n });\n var target = document.querySelector('.wc-block-components-totals-footer-item');\n observer.observe(target, {\n characterData: true,\n childList: true,\n subtree: true\n });\n }\n\n break;\n\n default:\n break;\n }\n\n sogecommerceUpdatePaymentBlock(true, PAYMENT_METHOD_NAME);\n};\n\nvar onButtonClick = function onButtonClick(e) {\n if (!jQuery(\"#radio-control-wc-payment-method-options-\" + PAYMENT_METHOD_NAME).is(\":checked\")) {\n return true;\n } // In case of form validation error, let WooCommerce deal with it.\n\n\n if (jQuery('div.wc-block-components-validation-error')[0]) {\n return true;\n }\n\n jQuery('.kr-form-error').html('');\n window.SOGECOMMERCE_BUTTON_TEXT = jQuery(submitButton).text();\n document.cookie = PAYMENT_METHOD_NAME + '_force_redir=; Max-Age=0; path=/; domain=' + location.host;\n document.cookie = 'sogecommerce_use_identifier=; Max-Age=0; path=/; domain=' + location.host;\n\n if (jQuery(\"#sogecommerce_use_identifier\")) {\n var use_identifier = jQuery(\"#sogecommerce_use_identifier\").val();\n document.cookie = 'sogecommerce_use_identifier=' + use_identifier + '; path=/';\n }\n\n switch (sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.payment_mode) {\n case 'MERCHANT':\n sogecommercestd_get_card();\n break;\n\n case 'IFRAME':\n window.IFRAME_LINK = sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.link;\n window.IFRAME_SRC = sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.src;\n sogecommercestd_show_iframe();\n break;\n\n case 'REST':\n case 'SMARTFORM':\n case 'SMARTFORMEXT':\n case 'SMARTFORMEXTNOLOGOS':\n if (typeof window.FORM_TOKEN == 'undefined') {\n document.cookie = PAYMENT_METHOD_NAME + '_force_redir=\"true\"; path=/; domain=' + location.host;\n break;\n }\n\n e.stopPropagation();\n block();\n var useIdentifier = jQuery(\"#sogecommerce_use_identifier\").length && jQuery(\"#sogecommerce_use_identifier\").val() === \"true\";\n var popin = jQuery(\".kr-smart-form-modal-button\").length > 0 || jQuery(\".kr-popin-button\").length > 0;\n\n if (!useIdentifier && !popin && !hideButton && !hideSmart) {\n return validateKR(KR);\n } else {\n submitForm(KR, popin, useIdentifier);\n break;\n }\n\n default:\n break;\n }\n};\n\nvar submitForm = function submitForm(KR) {\n var popin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var useIdentifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n jQuery.ajaxPrefilter(function (options, originalOptions, jqXHR) {\n newData = options.data;\n });\n var registerCard = jQuery('input[name=\"kr-do-register\"]').is(':checked');
1\n\n if (savedData && newData === savedData) {\n // Data in checkout page has not changed, no need to calculate token again.\n submitKR(KR, popin);\n } else {\n savedData = newData;\n jQuery.ajax({\n method: 'POST',\n url: sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.token_url,\n data: {\n 'use_identifier': useIdentifier\n },\n success: function success(data) {\n var parsed = JSON.parse(data);\n KR.setFormConfig({\n language: window.SOGECOMMERCE_LANGUAGE,\n formToken: parsed.formToken\n }).then(function (v) {\n KR = v.KR;\n\n if (registerCard) {\n jQuery('input[name=\"kr-do-register\"]').attr('checked', 'checked');\n }\n\n return submitKR(KR, popin);\n });\n }\n });\n return true;\n }\n};\n\nvar submitKR = function submitKR(KR, popin) {\n if (hideButton) {\n var element = jQuery('.kr-smart-button');\n\n if (element.length > 0) {\n smartbuttonMethod = element.attr('kr-payment-method');\n } else {\n element = jQuery('.kr-smart-form-modal-button');\n\n if (element.length > 0) {\n smartbuttonAll = true;\n }\n }\n }\n\n if (popin || smartbuttonAll) {\n KR.openPopin();\n unblock();\n } else if (hideButton) {\n KR.openSelectedPaymentMethod();\n unblock();\n } else if (smartbuttonMethod.length > 0) {\n KR.openPaymentMethod(smartbuttonMethod);\n unblock();\n } else {\n jQuery('#sogecommerce_rest_processing').css('display', 'block');\n jQuery('ul.' + PAYMENT_METHOD_NAME + '-view-top li.block').hide();\n jQuery('ul.' + PAYMENT_METHOD_NAME + '-view-bottom').hide();\n KR.submit();\n }\n\n return true;\n};\n\nvar block = function block() {\n jQuery('form.wc-block-components-form wc-block-checkout__form').block();\n jQuery(submitButton).prop(\"disabled\", true);\n};\n\nvar unblock = function unblock() {\n jQuery('form.wc-block-components-form wc-block-checkout__form').unblock();\n jQuery(submitButton).prop(\"disabled\", false);\n jQuery('.wc-block-components-button__text').text(\"\").text(window.SOGECOMMERCE_BUTTON_TEXT);\n};\n\nvar validateKR = function validateKR(KR) {\n KR.validateForm().then(function (v) {\n submitForm(v.KR);\n })[\"catch\"](function (v) {\n // Display error message.\n var result = v.result;\n return result.doOnError();\n });\n return true;\n};\n\nvar refreshTempToken = function refreshTempToken() {\n if (jQuery(\"#radio-control-wc-payment-method-options-\" + PAYMENT_METHOD_NAME).is(\":checked\")) {\n jQuery.ajax({\n method: 'POST',\n url: sogecommerce_data === null || sogecommerce_data === void 0 ? void 0 : sogecommerce_data.temporary_token_url,\n success: function success(data) {\n var parsed = JSON.parse(data);\n KR.setFormConfig({\n language: window.SOGECOMMERCE_LANGUAGE,\n formToken: parsed.formToken\n }).then(function (v) {\n KR = v.KR;\n });\n }\n });\n }\n};\n\nvar first = true;\n\nvar initFields = function initFields() {\n if (!first) {\n displayFields();\n jQuery(submitButton).on('click', onButtonClick);\n jQuery('input[type=radio][name=radio-control-wc-payment-method-options]').change(function (e) {\n if (this.value === PAYMENT_METHOD_NAME) {\n displayFields();\n }\n });\n }\n\n first = false;\n};\n\njQuery(document).on('ready', initFields);\njQuery(window).on('load', initFields);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvYmxvY2tzL3NvZ2Vjb21tZXJjZXN0ZC5qcz9jOTU0Il0sIm5hbWVzIjpbIlBBWU1FTlRfTUVUSE9EX05BTUUiLCJzb2dlY29tbWVyY2VfZGF0YSIsImdldFNvZ2Vjb21tZXJjZVNlcnZlckRhdGEiLCJzdWJtaXRCdXR0b24iLCJzbWFydGJ1dHRvbk1ldGhvZCIsInNtYXJ0YnV0dG9uQWxsIiwiaGlkZVNtYXJ0IiwiaGlkZV9zbWFydGJ1dHRvbiIsImhpZGVCdXR0b24iLCJzYXZlZERhdGEiLCJuZXdEYXRhIiwiQ29udGVudCIsInBheW1lbnRfZmllbGRzIiwiZmllbGRzIiwiX19odG1sIiwiZGVjb2RlRW50aXRpZXMiLCJkZXNjcmlwdGlvbiIsIkxhYmVsIiwic3R5bGVzIiwiZGl2V2lkdGgiLCJ3aWR0aCIsImltZ0Zsb2F0IiwidGl0bGUiLCJsb2dvX3VybCIsInJlZ2lzdGVyUGF5bWVudE1ldGhvZCIsIm5hbWUiLCJsYWJlbCIsImFyaWFMYWJlbCIsImNhbk1ha2VQYXltZW50IiwiY29udGVudCIsImVkaXQiLCJzdXBwb3J0cyIsImZlYXR1cmVzIiwiZGlzcGxheUZpZWxkcyIsImpRdWVyeSIsImxlbmd0aCIsImlzIiwicGF5bWVudF9tb2RlIiwidmFycyIsIndpbmRvdyIsIk
1ZPUk1fVE9LRU4iLCJJREVOVElGSUVSX0ZPUk1fVE9LRU4iLCJTT0dFQ09NTUVSQ0VfSElERV9TSU5HTEVfQlVUVE9OIiwiU09HRUNPTU1FUkNFX0JVVFRPTl9URVhUIiwidGV4dCIsImV2YWwiLCJLUiIsIm9uRm9ybVJlYWR5IiwiZWxlbWVudCIsImF0dHIiLCJoaWRlIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwiZm9yRWFjaCIsIm11dGF0aW9uIiwidHlwZSIsInRhcmdldCIsIm5vZGVOYW1lIiwicmVmcmVzaFRlbXBUb2tlbiIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIm9ic2VydmUiLCJjaGFyYWN0ZXJEYXRhIiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsInNvZ2Vjb21tZXJjZVVwZGF0ZVBheW1lbnRCbG9jayIsIm9uQnV0dG9uQ2xpY2siLCJlIiwiaHRtbCIsImNvb2tpZSIsImxvY2F0aW9uIiwiaG9zdCIsInVzZV9pZGVudGlmaWVyIiwidmFsIiwic29nZWNvbW1lcmNlc3RkX2dldF9jYXJkIiwiSUZSQU1FX0xJTksiLCJsaW5rIiwiSUZSQU1FX1NSQyIsInNyYyIsInNvZ2Vjb21tZXJjZXN0ZF9zaG93X2lmcmFtZSIsInN0b3BQcm9wYWdhdGlvbiIsImJsb2NrIiwidXNlSWRlbnRpZmllciIsInBvcGluIiwidmFsaWRhdGVLUiIsInN1Ym1pdEZvcm0iLCJhamF4UHJlZmlsdGVyIiwib3B0aW9ucyIsIm9yaWdpbmFsT3B0aW9ucyIsImpxWEhSIiwiZGF0YSIsInJlZ2lzdGVyQ2FyZCIsInN1Ym1pdEtSIiwiYWpheCIsIm1ldGhvZCIsInVybCIsInRva2VuX3VybCIsInN1Y2Nlc3MiLCJwYXJzZWQiLCJKU09OIiwicGFyc2UiLCJzZXRGb3JtQ29uZmlnIiwibGFuZ3VhZ2UiLCJTT0dFQ09NTUVSQ0VfTEFOR1VBR0UiLCJmb3JtVG9rZW4iLCJ0aGVuIiwidiIsIm9wZW5Qb3BpbiIsInVuYmxvY2siLCJvcGVuU2VsZWN0ZWRQYXltZW50TWV0aG9kIiwib3BlblBheW1lbnRNZXRob2QiLCJjc3MiLCJzdWJtaXQiLCJwcm9wIiwidmFsaWRhdGVGb3JtIiwicmVzdWx0IiwiZG9PbkVycm9yIiwidGVtcG9yYXJ5X3Rva2VuX3VybCIsImZpcnN0IiwiaW5pdEZpZWxkcyIsIm9uIiwiY2hhbmdlIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBQ0E7QUFFQSxJQUFNQSxtQkFBbUIsR0FBRyxpQkFBNUI7QUFDQSxJQUFJQyxpQkFBaUIsR0FBR0MsNkZBQXlCLENBQUNGLG1CQUFELENBQWpEO0FBRUEsSUFBSUcsWUFBWSxHQUFHLGtEQUFuQjtBQUNBLElBQUlDLGlCQUFpQixHQUFHLEVBQXhCO0FBQ0EsSUFBSUMsY0FBYyxHQUFHLEtBQXJCO0FBQ0EsSUFBSUMsU0FBUyxHQUFHLENBQUFMLGlCQUFpQixTQUFqQixJQUFBQSxpQkFBaUIsV0FBakIsWUFBQUEsaUJBQWlCLENBQUVNLGdCQUFuQixLQUF3QyxDQUFBTixpQkFBaUIsU0FBakIsSUFBQUEsaUJBQWlCLFdBQWpCLFlBQUFBLGlCQUFpQixDQUFFTSxnQkFBbkIsTUFBd0MsTUFBaEc7QUFDQSxJQUFJQyxVQUFVLEdBQUcsS0FBakI7QUFFQSxJQUFJQyxTQUFTLEdBQUcsS0FBaEI7QUFDQSxJQUFJQyxPQUFPLEdBQUcsSUFBZDs7QUFFQSxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxHQUFNO0FBQ2xCLE1BQUlWLGlCQUFKLGFBQUlBLGlCQUFKLGVBQUlBLGlCQUFpQixDQUFFVyxjQUF2QixFQUF1QztBQUNuQyxRQUFJQyxNQUFNLGdCQUFHO0FBQUssNkJBQXVCLEVBQUU7QUFBQ0MsY0FBTSxFQUFFYixpQkFBRixhQUFFQSxpQkFBRix1QkFBRUEsaUJBQWlCLENBQUVXO0FBQTVCO0FBQTlCLE1BQWI7QUFFQSx3QkFDSSxpQ0FDTUMsTUFETixDQ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UFOLENBQWlCNkQsRUFBakIsQ0FBb0IsT0FBcEIsRUFBNkJELFVBQTdCO0FBQ0F0RixNQUFNLENBQUNLLE1BQUQsQ0FBTixDQUFla0YsRUFBZixDQUFrQixNQUFsQixFQUEwQkQsVUFBMUIiLCJmaWxlIjoiNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIEx5cmEgTmV0d29yayBhbmQgY29udHJpYnV0b3JzLlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgU29nZWNvbW1lcmNlIHBsdWdpbiBmb3IgV29vQ29tbWVyY2UuIFNlZSBDT1BZSU5HLm1kIGZvciBsaWNlbnNlIGRldGFpbHMuXG4gKlxuICogQGF1dGhvciAgICBMeXJhIE5ldHdvcmsgKGh0dHBzOi8vd3d3Lmx5cmEuY29tLylcbiAqIEBhdXRob3IgICAgR2VvZmZyZXkgQ3JvZnRlLCBBbHNhY3LDqWF0aW9ucyAoaHR0cHM6Ly93d3cuYWxzYWNyZWF0aW9ucy5mci8pXG4gKiBAY29weXJpZ2h0IEx5cmEgTmV0d29yayBhbmQgY29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9vbGQtbGljZW5zZXMvZ3BsLTIuMC5odG1sIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwgdjIpXG4gKi9cblxuLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXMuXG4gKi9cbmltcG9ydCB7
1IHJlZ2lzdGVyUGF5bWVudE1ldGhvZCB9IGZyb20gJ0B3b29jb21tZXJjZS9ibG9ja3MtcmVnaXN0cnknO1xuaW1wb3J0IHsgZGVjb2RlRW50aXRpZXMgfSBmcm9tICdAd29yZHByZXNzL2h0bWwtZW50aXRpZXMnO1xuXG4vKipcbiAqIEludGVybmFsIGRlcGVuZGVuY2llcy5cbiAqL1xuaW1wb3J0IHsgZ2V0U29nZWNvbW1lcmNlU2VydmVyRGF0YSB9IGZyb20gJy4vc29nZWNvbW1lcmNlLXV0aWxzJztcblxuY29uc3QgUEFZTUVOVF9NRVRIT0RfTkFNRSA9ICdzb2dlY29tbWVyY2VzdGQnO1xudmFyIHNvZ2Vjb21tZXJjZV9kYXRhID0gZ2V0U29nZWNvbW1lcmNlU2VydmVyRGF0YShQQVlNRU5UX01FVEhPRF9OQU1FKTtcblxudmFyIHN1Ym1pdEJ1dHRvbiA9ICcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24nO1xudmFyIHNtYXJ0YnV0dG9uTWV0aG9kID0gJyc7XG52YXIgc21hcnRidXR0b25BbGwgPSBmYWxzZTtcbnZhciBoaWRlU21hcnQgPSBzb2dlY29tbWVyY2VfZGF0YT8uaGlkZV9zbWFydGJ1dHRvbiAmJiAoc29nZWNvbW1lcmNlX2RhdGE/LmhpZGVfc21hcnRidXR0b24gPT09ICd0cnVlJyk7XG52YXIgaGlkZUJ1dHRvbiA9IGZhbHNlO1xuXG52YXIgc2F2ZWREYXRhID0gZmFsc2U7XG52YXIgbmV3RGF0YSA9IG51bGw7XG5cbmNvbnN0IENvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKHNvZ2Vjb21tZXJjZV9kYXRhPy5wYXltZW50X2ZpZWxkcykge1xuICAgICAgICB2YXIgZmllbGRzID0gPGRpdiBkYW5nZXJvdXNseVNldElubmVySFRNTD17e19faHRtbDogc29nZWNvbW1lcmNlX2RhdGE/LnBheW1lbnRfZmllbGRzfX0gLz47XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgeyBmaWVsZHMgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlY29kZUVudGl0aWVzKHNvZ2Vjb21tZXJjZV9kYXRhPy5kZXNjcmlwdGlvbik7XG4gICAgfVxufTtcblxudmFyIExhYmVsID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgZGl2V2lkdGg6IHtcbiAgICAgICAgICAgIHdpZHRoOiAnOTUlJ1xuICAgICAgICB9LFxuICAgICAgICBpbWdGbG9hdDoge1xuICAgICAgICAgICAgZmxvYXQ6ICdyaWdodCdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgc3R5bGU9eyBzdHlsZXMuZGl2V2lkdGggfT5cbiAgICAgICAgICAgIDxzcGFuPnsgc29nZWNvbW1lcmNlX2RhdGE/LnRpdGxlfTwvc3Bhbj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzdHlsZT17IHN0eWxlcy5pbWdGbG9hdCB9XG4gICAgICAgICAgICAgICAgc3JjPXsgc29nZWNvbW1lcmNlX2RhdGE/LmxvZ29fdXJsIH1cbiAgICAgICAgICAgICAgICBhbHQ9eyBzb2dlY29tbWVyY2VfZGF0YT8udGl0bGUgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG5cbnJlZ2lzdGVyUGF5bWVudE1ldGhvZCh7XG4gICAgbmFtZTogUEFZTUVOVF9NRVRIT0RfTkFNRSxcbiAgICBsYWJlbDogPExhYmVsIC8+LFxuICAgIGFyaWFMYWJlbDogJ1NvZ2Vjb21tZXJjZSBwYXltZW50IG1ldGhvZCcsXG4gICAgY2FuTWFrZVBheW1lbnQ6ICgpID0+IHRydWUsXG4gICAgY29udGVudDogPENvbnRlbnQgLz4sXG4gICAgZWRpdDogPENvbnRlbnQgLz4sXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgZmVhdHVyZXM6IHNvZ2Vjb21tZXJjZV9kYXRhPy5zdXBwb3J0cyA/PyBbXSxcbiAgICB9LFxufSk7XG5cbnZhciBkaXNwbGF5RmllbGRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChqUXVlcnkoc3VibWl0QnV0dG9uKS5sZW5ndGggPT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEgalF1ZXJ5KFwiI3JhZGlvLWNvbnRyb2wtd2MtcGF5bWVudC1tZXRob2Qtb3B0aW9ucy1zb2dlY29tbWVyY2VzdGRcIikuaXMoXCI6Y2hlY2tlZFwiKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChzb2dlY29tbWVyY2VfZGF0YT8ucGF5bWVudF9tb2RlKSB7XG4gICAgICAgIGNhc2UgJ1JFU1QnOlxuICAgICAgICBjYXNlICdTTUFSVEZPUk0nOlxuICAgICAgICBjYXNlICdTTUFSVEZPUk1FWFQnOlxuICAgICAgICBjYXNlICdTTUFSVEZPUk1FWFROT0xPR09TJzpcbiAgICAgICAgICAgIGlmIChzb2dlY29tbWVyY2VfZGF0YT8udmFycykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSh3aW5kb3cuRk9STV9UT0tFTik7XG4gICAgICAgICAgICAgICAgZGVsZXRlKHdpbmRvdy5JREVOVElGSUVSX0ZPUk1fVE9LRU4pO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSh3aW5kb3cuU09HRUNPTU1FUkNFX0hJREVfU0lOR0xFX0JVVFRPTik7XG5cbiAgICAgICAgICAgICAgICB3aW5kb3cuU09HRUNPTU1FUkNFX0JVVFRPTl9URVhUID0galF1ZXJ5KHN1Ym1pdEJ1dHRvbikudGV4dCgpO1xuICAgICAgICAgICAgICAgIGV2YWwoc29nZWNvbW1lcmNlX2RhdGE/LnZhcnMpO1xuXG4gICAgICAgICAgICAgICAgaGlkZUJ1dHRvbiA9ICh3aW5kb3cuU09HRUNPTU1FUkNFX0hJREVfU0lOR0xFX0JVVFRPTiA9PSB0cnVlKTtcblxuICAgICAgICAgICAgICAgIEtSLm9uRm9ybVJlYWR5KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhpZGVTbWFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBqUXVlcnkoXCIua3Itc21hcnQtYnV0dG9uXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYXJ0YnV0dG9uTWV0aG9kID0gZWxlbWVudC5hdHRyKFwia3ItcGF5bWVudC1tZXRob2RcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBqUXVlcnkoXCIua3Itc21hcnQtZm9ybS1tb2RhbC1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFydGJ1dHRvbk1ldGhvZCA9IFwiYWxsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgI
1H1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtdXRhdGlvbi50eXBlID09IFwiY2hhcmFjdGVyRGF0YVwiKSAmJiAobXV0YXRpb24udGFyZ2V0Lm5vZGVOYW1lID09IFwiI3RleHRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVGVtcFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53Yy1ibG9jay1jb21wb25lbnRzLXRvdGFscy1mb290ZXItaXRlbScpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrOyBcblxuICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHNvZ2Vjb21tZXJjZVVwZGF0ZVBheW1lbnRCbG9jayh0cnVlLCBQQVlNRU5UX01FVEhPRF9OQU1FKTtcbn07XG5cbnZhciBvbkJ1dHRvbkNsaWNrID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoISBqUXVlcnkoXCIjcmFkaW8tY29udHJvbC13Yy1wYXltZW50LW1ldGhvZC1vcHRpb25zLVwiICsgUEFZTUVOVF9NRVRIT0RfTkFNRSkuaXMoXCI6Y2hlY2tlZFwiKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIG9mIGZvcm0gdmFsaWRhdGlvbiBlcnJvciwgbGV0IFdvb0NvbW1lcmNlIGRlYWwgd2l0aCBpdC5cbiAgICBpZiAoalF1ZXJ5KCdkaXYud2MtYmxvY2stY29tcG9uZW50cy12YWxpZGF0aW9uLWVycm9yJylbMF0pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgalF1ZXJ5KCcua3ItZm9ybS1lcnJvcicpLmh0bWwoJycpO1xuICAgIHdpbmRvdy5TT0dFQ09NTUVSQ0VfQlVUVE9OX1RFWFQgPSBqUXVlcnkoc3VibWl0QnV0dG9uKS50ZXh0KCk7XG5cbiAgICBkb2N1bWVudC5jb29raWUgPSBQQVlNRU5UX01FVEhPRF9OQU1FICsgJ19mb3JjZV9yZWRpcj07IE1heC1BZ2U9MDsgcGF0aD0vOyBkb21haW49JyArIGxvY2F0aW9uLmhvc3Q7XG4gICAgZG9jdW1lbnQuY29va2llID0gJ3NvZ2Vjb21tZXJjZV91c2VfaWRlbnRpZmllcj07IE1heC1BZ2U9MDsgcGF0aD0vOyBkb21haW49JyArIGxvY2F0aW9uLmhvc3Q7XG5cbiAgICBpZiAoalF1ZXJ5KFwiI3NvZ2Vjb21tZXJjZV91c2VfaWRlbnRpZmllclwiKSkge1xuICAgICAgICBsZXQgdXNlX2lkZW50aWZpZXIgPSBqUXVlcnkoXCIjc29nZWNvbW1lcmNlX3VzZV9pZGVudGlmaWVyXCIpLnZhbCgpO1xuICAgICAgICBkb2
1N1bWVudC5jb29raWUgPSAnc29nZWNvbW1lcmNlX3VzZV9pZGVudGlmaWVyPScgKyB1c2VfaWRlbnRpZmllciArICc7IHBhdGg9Lyc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChzb2dlY29tbWVyY2VfZGF0YT8ucGF5bWVudF9tb2RlKSB7XG4gICAgICAgIGNhc2UgJ01FUkNIQU5UJzpcbiAgICAgICAgICAgIHNvZ2Vjb21tZXJjZXN0ZF9nZXRfY2FyZCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnSUZSQU1FJzpcbiAgICAgICAgICAgICB3aW5kb3cuSUZSQU1FX0xJTksgPSBzb2dlY29tbWVyY2VfZGF0YT8ubGluaztcbiAgICAgICAgICAgICB3aW5kb3cuSUZSQU1FX1NSQyA9IHNvZ2Vjb21tZXJjZV9kYXRhPy5zcmM7XG4gICAgICAgICAgICAgc29nZWNvbW1lcmNlc3RkX3Nob3dfaWZyYW1lKCk7XG5cbiAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdSRVNUJzpcbiAgICAgICAgY2FzZSAnU01BUlRGT1JNJzpcbiAgICAgICAgY2FzZSAnU01BUlRGT1JNRVhUJzpcbiAgICAgICAgY2FzZSAnU01BUlRGT1JNRVhUTk9MT0dPUyc6XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5GT1JNX1RPS0VOID09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gUEFZTUVOVF9NRVRIT0RfTkFNRSArICdfZm9yY2VfcmVkaXI9XCJ0cnVlXCI7IHBhdGg9LzsgZG9tYWluPScgKyBsb2NhdGlvbi5ob3N0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgYmxvY2soKTtcblxuICAgICAgICAgICAgdmFyIHVzZUlkZW50aWZpZXIgPSBqUXVlcnkoXCIjc29nZWNvbW1lcmNlX3VzZV9pZGVudGlmaWVyXCIpLmxlbmd0aCAmJiBqUXVlcnkoXCIjc29nZWNvbW1lcmNlX3VzZV9pZGVudGlmaWVyXCIpLnZhbCgpID09PSBcInRydWVcIjtcbiAgICAgICAgICAgIHZhciBwb3BpbiA9IChqUXVlcnkoXCIua3Itc21hcnQtZm9ybS1tb2RhbC1idXR0b25cIikubGVuZ3RoID4gMCkgfHwgKGpRdWVyeShcIi5rci1wb3Bpbi1idXR0b25cIikubGVuZ3RoID4gMCk7XG5cbiAgICAgICAgICAgIGlmICghIHVzZUlkZW50aWZpZXIgJiYgISBwb3BpbiAmJiAhIGhpZGVCdXR0b24gJiYgISBoaWRlU21hcnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVLUihLUik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1Ym1pdEZvcm0oS1IsIHBvcGluLCB1c2VJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbn07XG5cbnZhciBzdWJtaXRGb3JtID0gZnVuY3Rpb24gKEtSLCBwb3BpbiA9IGZhbHNlLCB1c2VJZGVudGlmaWVyID0gZmFsc2UpIHtcbiAgICBqUXVlcnkuYWpheFByZWZpbHRlcihmdW5jdGlvbihvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSKSB7XG4gICAgICAgIG5ld0RhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgfSk7XG5cbiAgICB2YXIgcmVnaXN0ZXJDYXJkID0galF1ZXJ5KCdpbnB1dFtuYW1lPVwia3ItZG8tcmVnaXN0ZXJcIl0nKS5pcygnOmNoZWNrZWQnKTtcblxuICAgIGlmIChzYXZlZERhdGEgJiYgKG5ld0RhdGEgPT09IHNhdmVkRGF0YSkpIHtcbiAgICAgICAgLy8gRGF0YSBpbiBjaGVja291dCBwYWdlIGhhcyBub3QgY2hhbmdlZCwgbm8gbmVlZCB0byBjYWxjdWxhdGUgdG9rZW4gYWdhaW4uXG4gICAgICAgc3VibWl0S1IoS1IsIHBvcGluKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzYXZlZERhdGEgPSBuZXdEYXRhO1xuICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgIHVybDogc29nZWNvbW1lcmNlX2RhdGE/LnRva2VuX3VybCxcbiAgICAgICAgICAgIGRhdGE6IHsgJ3VzZV9pZGVudGlmaWVyJzogdXNlSWRlbnRpZmllciB9LFxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgIHZhciBwYXJzZWQgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAgIEtSLnNldEZvcm1Db25maWcoe1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogd2luZG93LlNPR0VDT01NRVJDRV9MQU5HVUFHRSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVRva2VuOiBwYXJzZWQuZm9ybVRva2VuXG4gICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbih2KSB7XG4gICAgICAgICAgICAgICAgICAgIEtSID0gdi5LUjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ2lzdGVyQ2FyZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCdpbnB1dFtuYW1lPVwia3ItZG8tcmVnaXN0ZXJcIl0nKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdEtSKEtSLCBwb3Bpbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn07XG5cbnZhciBzdWJtaXRLUiA9IGZ1bmN0aW9uIChLUiwgcG9waW4pIHtcbiAgICBpZiAoaGlkZUJ1dHRvbikge1xuICAgICAgICBsZXQgZWxlbWVudCA9IGpRdWVyeSgnLmtyLXNtYXJ0LWJ1dHRvbicpO1xuXG4gICAgICAgIGlmIChlbGVtZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICBzbWFydGJ1dHRvbk1ldGhvZCA9IGVsZW1lbnQuYXR0cigna3ItcGF5bWVudC1tZXRob2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBqUXVlcnkoJy5rci1zbWFydC1mb3JtLW1vZGFsLWJ1dHRvbicpO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgc21hcnRidXR0b25BbGwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgIH1cblxuICAgICBpZiAocG9waW4gfHwgc21hcnRidXR0b25BbGwpIHtcbiAgICAgICAgIEtSLm9wZW5Qb3BpbigpO1xuICAgICAgICAgdW5ibG9jaygpO1xuICAgICB9IGVsc2UgaWYgKGhpZGVCdXR0b24pIHtcbiAgICAgICAgICBLUi5vcGVuU2VsZWN0ZWRQYXltZW50TWV0aG9kKCk7XG4gICAgICAgICAgdW5ibG9jaygpO1xuICAgICB9IGVsc2UgaWYgKHNtYXJ0YnV0dG9uTWV0aG9kLmxlbmd0aCA+IDApIHtcbiAgICAgICAgIEtSLm9wZW5QYXltZW50TWV0aG9kKHNtYXJ0YnV0dG9uTWV0aG9kKTtcbiAgICAgICAgI
1HVuYmxvY2soKTtcbiAgICAgfSBlbHNlIHtcbiAgICAgICAgIGpRdWVyeSgnI3NvZ2Vjb21tZXJjZV9yZXN0X3Byb2Nlc3NpbmcnKS5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICAgICAgIGpRdWVyeSgndWwuJyArIFBBWU1FTlRfTUVUSE9EX05BTUUgKyAnLXZpZXctdG9wIGxpLmJsb2NrJykuaGlkZSgpO1xuICAgICAgICAgalF1ZXJ5KCd1bC4nICsgUEFZTUVOVF9NRVRIT0RfTkFNRSArICctdmlldy1ib3R0b20nKS5oaWRlKCk7XG5cbiAgICAgICAgIEtSLnN1Ym1pdCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciBibG9jayA9IGZ1bmN0aW9uKCkge1xuICAgIGpRdWVyeSgnZm9ybS53Yy1ibG9jay1jb21wb25lbnRzLWZvcm0gd2MtYmxvY2stY2hlY2tvdXRfX2Zvcm0nKS5ibG9jaygpO1xuICAgIGpRdWVyeShzdWJtaXRCdXR0b24pLnByb3AoXCJkaXNhYmxlZFwiLCB0cnVlKTtcbn07XG5cbnZhciB1bmJsb2NrID0gZnVuY3Rpb24oKSB7XG4gICAgalF1ZXJ5KCdmb3JtLndjLWJsb2NrLWNvbXBvbmVudHMtZm9ybSB3Yy1ibG9jay1jaGVja291dF9fZm9ybScpLnVuYmxvY2soKTtcbiAgICBqUXVlcnkoc3VibWl0QnV0dG9uKS5wcm9wKFwiZGlzYWJsZWRcIiwgZmFsc2UpO1xuICAgIGpRdWVyeSgnLndjLWJsb2NrLWNvbXBvbmVudHMtYnV0dG9uX190ZXh0JykudGV4dChcIlwiKS50ZXh0KHdpbmRvdy5TT0dFQ09NTUVSQ0VfQlVUVE9OX1RFWFQpO1xufTtcblxudmFyIHZhbGlkYXRlS1IgPSBmdW5jdGlvbihLUikge1xuICAgIEtSLnZhbGlkYXRlRm9ybSgpLnRoZW4oZnVuY3Rpb24odikge1xuICAgICAgICBzdWJtaXRGb3JtKHYuS1IpO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlLlxuICAgICAgICB2Y
1XIgcmVzdWx0ID0gdi5yZXN1bHQ7XG4gICAgICAgIHJldHVybiByZXN1bHQuZG9PbkVycm9yKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciByZWZyZXNoVGVtcFRva2VuID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChqUXVlcnkoXCIjcmFkaW8tY29udHJvbC13Yy1wYXltZW50LW1ldGhvZC1vcHRpb25zLVwiICsgUEFZTUVOVF9NRVRIT0RfTkFNRSkuaXMoXCI6Y2hlY2tlZFwiKSkge1xuICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgIHVybDogc29nZWNvbW1lcmNlX2RhdGE/LnRlbXBvcmFyeV90b2tlbl91cmwsXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBhcnNlZCA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgICAgICAgICAgS1Iuc2V0Rm9ybUNvbmZpZyh7XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiB3aW5kb3cuU09HRUNPTU1FUkNFX0xBTkdVQUdFLFxuICAgICAgICAgICAgICAgICAgICBmb3JtVG9rZW46IHBhcnNlZC5mb3JtVG9rZW5cbiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgS1IgPSB2LktSO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG52YXIgZmlyc3QgPSB0cnVlO1xudmFyIGluaXRGaWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAoISBmaXJzdCkge1xuICAgICAgICBkaXNwbGF5RmllbGRzKCk7XG5cbiAgICAgICAgalF1ZXJ5KHN1Ym1pdEJ1dHRvbikub24oJ2NsaWNrJywgb25CdXR0b25DbGljayk7XG4gICAgICAgIGpRdWVyeSgnaW5wdXRbdHlwZT1yYWRpb11bbmFtZT1yYWRpby1jb250cm9sLXdjLXBheW1lbnQtbWV0aG9kLW9wdGlvbnNdJykuY2hhbmdlKGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09PSBQQVlNRU5UX01FVEhPRF9OQU1FKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaXJzdCA9IGZhbHNlO1xufTtcblxualF1ZXJ5KGRvY3VtZW50KS5vbigncmVhZHknLCBpbml0RmllbGRzKTtcbmpRdWVyeSh3aW5kb3cpLm9uKCdsb2FkJywgaW5pdEZpZWxkcyk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n")}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.