Files
torebki-fabiola.pl/wp-content/plugins/wordpress-seo-premium/assets/js/dist/wp-seo-premium-schema-blocks-1821.min.js
2026-03-05 13:07:40 +01:00

1 line
151 KiB
JavaScript

(window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[]).push([[13],{0:function(module,exports){eval("module.exports = window.wp.element;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5lbGVtZW50XCI/YTI5ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5lbGVtZW50OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n")},1:function(module,exports){eval("module.exports = window.wp.i18n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5pMThuXCI/Y2Q4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5pMThuOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},10:function(module,exports){eval("module.exports = window.yoast.schemaBlocks;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3aW5kb3cueW9hc3Quc2NoZW1hQmxvY2tzXCI/OTA0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy55b2FzdC5zY2hlbWFCbG9ja3M7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},153:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: external "window.yoast.schemaBlocks"\nvar external_window_yoast_schemaBlocks_ = __webpack_require__(10);\n\n// EXTERNAL MODULE: external "React"\nvar external_React_ = __webpack_require__(8);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/defineProperty.js\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i["return"] != null) _i["return"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === "string") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === "Object" && o.constructor) n = o.constructor.name;\n if (n === "Map" || n === "Set") return Array.from(o);\n if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: external "window.wp.element"\nvar external_window_wp_element_ = __webpack_require__(0);\n\n// EXTERNAL MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/classnames/index.js\nvar classnames = __webpack_require__(24);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: external "window.wp.i18n"\nvar external_window_wp_i18n_ = __webpack_require__(1);\n\n// EXTERNAL MODULE: external "window.wp.components"\nvar external_window_wp_components_ = __webpack_require__(5);\n\n// EXTERNAL MODULE: external "window.wp.blockEditor"\nvar external_window_wp_blockEditor_ = __webpack_require__(7);\n\n// EXTERNAL MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/build-module/index.js + 8 modules\nvar build_module = __webpack_require__(31);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/primitives/node_modules/@babel/runtime/helpers/esm/defineProperty.js\nfunction defineProperty_defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/primitives/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/primitives/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/primitives/build-module/svg/index.js\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { defineProperty_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n // Disable reason: JSDoc linter doesn\'t seem to parse the union (`&`) correctly.\n\n/* eslint-disable jsdoc/valid-types */\n\n/** @typedef {{isPressed?: boolean} & import(\'react\').ComponentPropsWithoutRef<\'svg\'>} SVGProps */\n\n/* eslint-enable jsdoc/valid-types */\n\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'circle\'>} props\n *\n * @return {JSX.Element} Circle component\n */\n\nvar svg_Circle = function Circle(props) {\n return Object(external_window_wp_element_["createElement"])(\'circle\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'g\'>} props\n *\n * @return {JSX.Element} G component\n */\n\nvar svg_G = function G(props) {\n return Object(external_window_wp_element_["createElement"])(\'g\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'path\'>} props\n *\n * @return {JSX.Element} Path component\n */\n\nvar svg_Path = function Path(props) {\n return Object(external_window_wp_element_["createElement"])(\'path\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'polygon\'>} props\n *\n * @return {JSX.Element} Polygon component\n */\n\nvar svg_Polygon = function Polygon(props) {\n return Object(external_window_wp_element_["createElement"])(\'polygon\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'rect\'>} props\n *\n * @return {JSX.Element} Rect component\n */\n\nvar svg_Rect = function Rect(props) {\n return Object(external_window_wp_element_["createElement"])(\'rect\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'defs\'>} props\n *\n * @return {JSX.Element} Defs component\n */\n\nvar svg_Defs = function Defs(props) {\n return Object(external_window_wp_element_["createElement"])(\'defs\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'radialGradient\'>} props\n *\n * @return {JSX.Element} RadialGradient component\n */\n\nvar svg_RadialGradient = function RadialGradient(props) {\n return Object(external_window_wp_element_["createElement"])(\'radialGradient\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'linearGradient\'>} props\n *\n * @return {JSX.Element} LinearGradient component\n */\n\nvar svg_LinearGradient = function LinearGradient(props) {\n return Object(external_window_wp_element_["createElement"])(\'linearGradient\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'stop\'>} props\n *\n * @return {JSX.Element} Stop component\n */\n\nvar svg_Stop = function Stop(props) {\n return Object(external_window_wp_element_["createElement"])(\'stop\', props);\n};\n/**\n *\n * @param {SVGProps} props isPressed indicates whether the SVG should appear as pressed.\n * Other props will be passed through to svg component.\n *\n * @return {JSX.Element} Stop component\n */\n\nvar svg_SVG = function SVG(_ref) {\n var className = _ref.className,\n isPressed = _ref.isPressed,\n props = _objectWithoutProperties(_ref, ["className", "isPressed"]);\n\n var appliedProps = _objectSpread({}, props, {\n className: classnames_default()(className, {\n \'is-pressed\': isPressed\n }) || undefined,\n role: \'img\',\n \'aria-hidden\': true,\n focusable: false\n }); // Disable reason: We need to have a way to render HTML tag for web.\n // eslint-disable-next-line react/forbid-elements\n\n\n return Object(external_window_wp_element_["createElement"])("svg", appliedProps);\n};\n//# sourceMappingURL=index.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@wordpress/icons/build-module/library/link.js\n\n\n/**\n * WordPress dependencies\n */\n\nvar link_link = Object(external_window_wp_element_["createElement"])(svg_SVG, {\n xmlns: "http://www.w3.org/2000/svg",\n viewBox: "0 0 24 24"\n}, Object(external_window_wp_element_["createElement"])(svg_Path, {\n d: "M15.6 7.2H14v1.5h1.6c2 0 3.7 1.7 3.7 3.7s-1.7 3.7-3.7 3.7H14v1.5h1.6c2.8 0 5.2-2.3 5.2-5.2 0-2.9-2.3-5.2-5.2-5.2zM4.7 12.4c0-2 1.7-3.7 3.7-3.7H10V7.2H8.4c-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2H10v-1.5H8.4c-2 0-3.7-1.7-3.7-3.7zm4.6.9h5.3v-1.5H9.3v1.5z"\n}));\n/* harmony default export */ var library_link = (link_link);\n//# sourceMappingURL=link.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@wordpress/icons/build-module/library/link-off.js\n\n\n/**\n * WordPress dependencies\n */\n\nvar linkOff = Object(external_window_wp_element_["createElement"])(svg_SVG, {\n xmlns: "http://www.w3.org/2000/svg",\n viewBox: "0 0 24 24"\n}, Object(external_window_wp_element_["createElement"])(svg_Path, {\n d: "M15.6 7.3h-.7l1.6-3.5-.9-.4-3.9 8.5H9v1.5h2l-1.3 2.8H8.4c-2 0-3.7-1.7-3.7-3.7s1.7-3.7 3.7-3.7H10V7.3H8.4c-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2H9l-1.4 3.2.9.4 5.7-12.5h1.4c2 0 3.7 1.7 3.7 3.7s-1.7 3.7-3.7 3.7H14v1.5h1.6c2.9 0 5.2-2.3 5.2-5.2 0-2.9-2.4-5.2-5.2-5.2z"\n}));\n/* harmony default export */ var link_off = (linkOff);\n//# sourceMappingURL=link-off.js.map\n// EXTERNAL MODULE: external "window.wp.blocks"\nvar external_window_wp_blocks_ = __webpack_require__(23);\n\n// EXTERNAL MODULE: external "window.wp.data"\nvar external_window_wp_data_ = __webpack_require__(4);\n\n// EXTERNAL MODULE: external "window.lodash"\nvar external_window_lodash_ = __webpack_require__(2);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/build-module/button/color-edit.js\n\n\n\n\nfunction color_edit_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction color_edit_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { color_edit_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { color_edit_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n\n\n\n/**\n * Internal dependencies\n */\n\n\nvar isWebPlatform = external_window_wp_element_["Platform"].OS === \'web\'; // The code in this file is copied entirely from the "color" and "style" support flags\n// The flag can\'t be used at the moment because of the extra wrapper around\n// the button block markup.\n\nfunction getBlockDOMNode(clientId) {\n return document.getElementById(\'block-\' + clientId);\n}\n/**\n * Removed undefined values from nested object.\n *\n * @param {*} object\n * @return {*} Object cleaned from undefined values\n */\n\n\nvar color_edit_cleanEmptyObject = function cleanEmptyObject(object) {\n if (!Object(external_window_lodash_["isObject"])(object)) {\n return object;\n }\n\n var cleanedNestedObjects = Object(external_window_lodash_["pickBy"])(Object(external_window_lodash_["mapValues"])(object, cleanEmptyObject), external_window_lodash_["identity"]);\n return Object(external_window_lodash_["isEqual"])(cleanedNestedObjects, {}) ? undefined : cleanedNestedObjects;\n};\n\nfunction ColorPanel(_ref) {\n var settings = _ref.settings,\n clientId = _ref.clientId,\n _ref$enableContrastCh = _ref.enableContrastChecking,\n enableContrastChecking = _ref$enableContrastCh === void 0 ? true : _ref$enableContrastCh;\n var _window = window,\n getComputedStyle = _window.getComputedStyle,\n Node = _window.Node;\n\n var _useState = Object(external_window_wp_element_["useState"])(),\n _useState2 = _slicedToArray(_useState, 2),\n detectedBackgroundColor = _useState2[0],\n setDetectedBackgroundColor = _useState2[1];\n\n var _useState3 = Object(external_window_wp_element_["useState"])(),\n _useState4 = _slicedToArray(_useState3, 2),\n detectedColor = _useState4[0],\n setDetectedColor = _useState4[1];\n\n var title = isWebPlatform ? Object(external_window_wp_i18n_["__"])(\'Color settings\') : Object(external_window_wp_i18n_["__"])(\'Color Settings\');\n Object(external_window_wp_element_["useEffect"])(function () {\n if (isWebPlatform && !enableContrastChecking) {\n return;\n }\n\n var colorsDetectionElement = getBlockDOMNode(clientId);\n\n if (!colorsDetectionElement) {\n return;\n }\n\n setDetectedColor(getComputedStyle(colorsDetectionElement).color);\n var backgroundColorNode = colorsDetectionElement;\n var backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor;\n\n while (backgroundColor === \'rgba(0, 0, 0, 0)\' && backgroundColorNode.parentNode && backgroundColorNode.parentNode.nodeType === Node.ELEMENT_NODE) {\n backgroundColorNode = backgroundColorNode.parentNode;\n backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor;\n }\n\n setDetectedBackgroundColor(backgroundColor);\n });\n return Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["InspectorControls"], null, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["__experimentalPanelColorGradientSettings"], {\n title: title,\n initialOpen: false,\n settings: settings\n }, isWebPlatform && enableContrastChecking && Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["ContrastChecker"], {\n backgroundColor: detectedBackgroundColor,\n textColor: detectedColor\n })));\n}\n/**\n * Inspector control panel containing the color related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Color edit element.\n */\n\n\nfunction ColorEdit(props) {\n var _style$color2, _style$color3, _style$color4;\n\n var attributes = props.attributes;\n\n var _useSelect = Object(external_window_wp_data_["useSelect"])(function (select) {\n return select(\'core/block-editor\').getSettings();\n }, []),\n colors = _useSelect.colors,\n gradients = _useSelect.gradients; // Shouldn\'t be needed but right now the ColorGradientsPanel\n // can trigger both onChangeColor and onChangeBackground\n // synchronously causing our two callbacks to override changes\n // from each other.\n\n\n var localAttributes = Object(external_window_wp_element_["useRef"])(attributes);\n Object(external_window_wp_element_["useEffect"])(function () {\n localAttributes.current = attributes;\n }, [attributes]);\n var style = attributes.style,\n textColor = attributes.textColor,\n backgroundColor = attributes.backgroundColor,\n gradient = attributes.gradient;\n var gradientValue;\n\n if (gradient) {\n gradientValue = Object(external_window_wp_blockEditor_["getGradientValueBySlug"])(gradients, gradient);\n } else {\n var _style$color;\n\n gradientValue = style === null || style === void 0 ? void 0 : (_style$color = style.color) === null || _style$color === void 0 ? void 0 : _style$color.gradient;\n }\n\n var onChangeColor = function onChangeColor(name) {\n return function (value) {\n var _localAttributes$curr, _localAttributes$curr2;\n\n var colorObject = Object(external_window_wp_blockEditor_["getColorObjectByColorValue"])(colors, value);\n var attributeName = name + \'Color\';\n\n var newStyle = color_edit_objectSpread({}, localAttributes.current.style, {\n color: color_edit_objectSpread({}, (_localAttributes$curr = localAttributes.current) === null || _localAttributes$curr === void 0 ? void 0 : (_localAttributes$curr2 = _localAttributes$curr.style) === null || _localAttributes$curr2 === void 0 ? void 0 : _localAttributes$curr2.color, _defineProperty({}, name, (colorObject === null || colorObject === void 0 ? void 0 : colorObject.slug) ? undefined : value))\n });\n\n var newNamedColor = (colorObject === null || colorObject === void 0 ? void 0 : colorObject.slug) ? colorObject.slug : undefined;\n\n var newAttributes = _defineProperty({\n style: color_edit_cleanEmptyObject(newStyle)\n }, attributeName, newNamedColor);\n\n props.setAttributes(newAttributes);\n localAttributes.current = color_edit_objectSpread({}, localAttributes.current, {}, newAttributes);\n };\n };\n\n var onChangeGradient = function onChangeGradient(value) {\n var slug = Object(external_window_wp_blockEditor_["getGradientSlugByValue"])(gradients, value);\n var newAttributes;\n\n if (slug) {\n var _localAttributes$curr3, _localAttributes$curr4, _localAttributes$curr5;\n\n var newStyle = color_edit_objectSpread({}, (_localAttributes$curr3 = localAttributes.current) === null || _localAttributes$curr3 === void 0 ? void 0 : _localAttributes$curr3.style, {\n color: color_edit_objectSpread({}, (_localAttributes$curr4 = localAttributes.current) === null || _localAttributes$curr4 === void 0 ? void 0 : (_localAttributes$curr5 = _localAttributes$curr4.style) === null || _localAttributes$curr5 === void 0 ? void 0 : _localAttributes$curr5.color, {\n gradient: undefined\n })\n });\n\n newAttributes = {\n style: color_edit_cleanEmptyObject(newStyle),\n gradient: slug\n };\n } else {\n var _localAttributes$curr6, _localAttributes$curr7, _localAttributes$curr8;\n\n var _newStyle = color_edit_objectSpread({}, (_localAttributes$curr6 = localAttributes.current) === null || _localAttributes$curr6 === void 0 ? void 0 : _localAttributes$curr6.style, {\n color: color_edit_objectSpread({}, (_localAttributes$curr7 = localAttributes.current) === null || _localAttributes$curr7 === void 0 ? void 0 : (_localAttributes$curr8 = _localAttributes$curr7.style) === null || _localAttributes$curr8 === void 0 ? void 0 : _localAttributes$curr8.color, {\n gradient: value\n })\n });\n\n newAttributes = {\n style: color_edit_cleanEmptyObject(_newStyle),\n gradient: undefined\n };\n }\n\n props.setAttributes(newAttributes);\n localAttributes.current = color_edit_objectSpread({}, localAttributes.current, {}, newAttributes);\n };\n\n return Object(external_window_wp_element_["createElement"])(ColorPanel, {\n enableContrastChecking: !gradient && !(style === null || style === void 0 ? void 0 : (_style$color2 = style.color) === null || _style$color2 === void 0 ? void 0 : _style$color2.gradient),\n clientId: props.clientId,\n settings: [{\n label: Object(external_window_wp_i18n_["__"])(\'Text Color\'),\n onColorChange: onChangeColor(\'text\'),\n colorValue: Object(external_window_wp_blockEditor_["getColorObjectByAttributeValues"])(colors, textColor, style === null || style === void 0 ? void 0 : (_style$color3 = style.color) === null || _style$color3 === void 0 ? void 0 : _style$color3.text).color\n }, {\n label: Object(external_window_wp_i18n_["__"])(\'Background Color\'),\n onColorChange: onChangeColor(\'background\'),\n colorValue: Object(external_window_wp_blockEditor_["getColorObjectByAttributeValues"])(colors, backgroundColor, style === null || style === void 0 ? void 0 : (_style$color4 = style.color) === null || _style$color4 === void 0 ? void 0 : _style$color4.background).color,\n gradientValue: gradientValue,\n onGradientChange: onChangeGradient\n }]\n });\n}\n\n/* harmony default export */ var color_edit = (ColorEdit);\n//# sourceMappingURL=color-edit.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/build-module/button/color-props.js\n\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n // The code in this file is copied entirely from the "color" and "style" support flags\n// The flag can\'t be used at the moment because of the extra wrapper around\n// the button block markup.\n\nfunction getColorAndStyleProps(attributes, colors) {\n var _style$color, _style$color2, _style$color3, _style$color4, _classnames, _style$color5, _style$color6, _style$color7, _style$color8, _style$color9, _style$color10;\n\n var isEdit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // I\'d have prefered to avoid the "style" attribute usage here\n var backgroundColor = attributes.backgroundColor,\n textColor = attributes.textColor,\n gradient = attributes.gradient,\n style = attributes.style;\n var backgroundClass = Object(external_window_wp_blockEditor_["getColorClassName"])(\'background-color\', backgroundColor);\n\n var gradientClass = Object(external_window_wp_blockEditor_["__experimentalGetGradientClass"])(gradient);\n\n var textClass = Object(external_window_wp_blockEditor_["getColorClassName"])(\'color\', textColor);\n var className = classnames_default()(textClass, gradientClass, (_classnames = {}, _defineProperty(_classnames, backgroundClass, !(style === null || style === void 0 ? void 0 : (_style$color = style.color) === null || _style$color === void 0 ? void 0 : _style$color.gradient) && !!backgroundClass), _defineProperty(_classnames, \'has-text-color\', textColor || (style === null || style === void 0 ? void 0 : (_style$color2 = style.color) === null || _style$color2 === void 0 ? void 0 : _style$color2.text)), _defineProperty(_classnames, \'has-background\', backgroundColor || (style === null || style === void 0 ? void 0 : (_style$color3 = style.color) === null || _style$color3 === void 0 ? void 0 : _style$color3.background) || gradient || (style === null || style === void 0 ? void 0 : (_style$color4 = style.color) === null || _style$color4 === void 0 ? void 0 : _style$color4.gradient)), _classnames));\n var styleProp = (style === null || style === void 0 ? void 0 : (_style$color5 = style.color) === null || _style$color5 === void 0 ? void 0 : _style$color5.background) || (style === null || style === void 0 ? void 0 : (_style$color6 = style.color) === null || _style$color6 === void 0 ? void 0 : _style$color6.text) || (style === null || style === void 0 ? void 0 : (_style$color7 = style.color) === null || _style$color7 === void 0 ? void 0 : _style$color7.gradient) ? {\n background: (style === null || style === void 0 ? void 0 : (_style$color8 = style.color) === null || _style$color8 === void 0 ? void 0 : _style$color8.gradient) ? style.color.gradient : undefined,\n backgroundColor: (style === null || style === void 0 ? void 0 : (_style$color9 = style.color) === null || _style$color9 === void 0 ? void 0 : _style$color9.background) ? style.color.background : undefined,\n color: (style === null || style === void 0 ? void 0 : (_style$color10 = style.color) === null || _style$color10 === void 0 ? void 0 : _style$color10.text) ? style.color.text : undefined\n } : {}; // This is needed only for themes that don\'t load their color stylesheets in the editor\n // We force an inline style to apply the color.\n\n if (isEdit) {\n if (backgroundColor) {\n var backgroundColorObject = Object(external_window_wp_blockEditor_["getColorObjectByAttributeValues"])(colors, backgroundColor);\n styleProp.backgroundColor = backgroundColorObject.color;\n }\n\n if (textColor) {\n var textColorObject = Object(external_window_wp_blockEditor_["getColorObjectByAttributeValues"])(colors, textColor);\n styleProp.color = textColorObject.color;\n }\n }\n\n return {\n className: !!className ? className : undefined,\n style: styleProp\n };\n}\n//# sourceMappingURL=color-props.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/build-module/button/edit.js\n\n\n\n\nfunction edit_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction edit_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { edit_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { edit_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n\n\n\n\n\n\n\n\n/**\n * Internal dependencies\n */\n\n\n\nvar NEW_TAB_REL = \'noreferrer noopener\';\nvar MIN_BORDER_RADIUS_VALUE = 0;\nvar MAX_BORDER_RADIUS_VALUE = 50;\nvar INITIAL_BORDER_RADIUS_POSITION = 5;\n\nfunction BorderPanel(_ref) {\n var _ref$borderRadius = _ref.borderRadius,\n borderRadius = _ref$borderRadius === void 0 ? \'\' : _ref$borderRadius,\n setAttributes = _ref.setAttributes;\n var initialBorderRadius = borderRadius;\n var setBorderRadius = Object(external_window_wp_element_["useCallback"])(function (newBorderRadius) {\n if (newBorderRadius === undefined) setAttributes({\n borderRadius: initialBorderRadius\n });else setAttributes({\n borderRadius: newBorderRadius\n });\n }, [setAttributes]);\n return Object(external_window_wp_element_["createElement"])(external_window_wp_components_["PanelBody"], {\n title: Object(external_window_wp_i18n_["__"])(\'Border settings\')\n }, Object(external_window_wp_element_["createElement"])(external_window_wp_components_["RangeControl"], {\n value: borderRadius,\n label: Object(external_window_wp_i18n_["__"])(\'Border radius\'),\n min: MIN_BORDER_RADIUS_VALUE,\n max: MAX_BORDER_RADIUS_VALUE,\n initialPosition: INITIAL_BORDER_RADIUS_POSITION,\n allowReset: true,\n onChange: setBorderRadius\n }));\n}\n\nfunction URLPicker(_ref2) {\n var _ref4;\n\n var isSelected = _ref2.isSelected,\n url = _ref2.url,\n setAttributes = _ref2.setAttributes,\n opensInNewTab = _ref2.opensInNewTab,\n onToggleOpenInNewTab = _ref2.onToggleOpenInNewTab;\n\n var _useState = Object(external_window_wp_element_["useState"])(false),\n _useState2 = _slicedToArray(_useState, 2),\n isURLPickerOpen = _useState2[0],\n setIsURLPickerOpen = _useState2[1];\n\n var urlIsSet = !!url;\n var urlIsSetandSelected = urlIsSet && isSelected;\n\n var openLinkControl = function openLinkControl() {\n setIsURLPickerOpen(true);\n return false; // prevents default behaviour for event\n };\n\n var unlinkButton = function unlinkButton() {\n setAttributes({\n url: undefined,\n linkTarget: undefined,\n rel: undefined\n });\n setIsURLPickerOpen(false);\n };\n\n var linkControl = (isURLPickerOpen || urlIsSetandSelected) && Object(external_window_wp_element_["createElement"])(external_window_wp_components_["Popover"], {\n position: "bottom center",\n onClose: function onClose() {\n return setIsURLPickerOpen(false);\n }\n }, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["__experimentalLinkControl"], {\n className: "wp-block-navigation-link__inline-link-input",\n value: {\n url: url,\n opensInNewTab: opensInNewTab\n },\n onChange: function onChange(_ref3) {\n var _ref3$url = _ref3.url,\n newURL = _ref3$url === void 0 ? \'\' : _ref3$url,\n newOpensInNewTab = _ref3.opensInNewTab;\n setAttributes({\n url: newURL\n });\n\n if (opensInNewTab !== newOpensInNewTab) {\n onToggleOpenInNewTab(newOpensInNewTab);\n }\n }\n }));\n return Object(external_window_wp_element_["createElement"])(external_window_wp_element_["Fragment"], null, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["BlockControls"], null, Object(external_window_wp_element_["createElement"])(external_window_wp_components_["ToolbarGroup"], null, !urlIsSet && Object(external_window_wp_element_["createElement"])(external_window_wp_components_["ToolbarButton"], {\n name: "link",\n icon: library_link,\n title: Object(external_window_wp_i18n_["__"])(\'Link\'),\n shortcut: build_module["displayShortcut"].primary(\'k\'),\n onClick: openLinkControl\n }), urlIsSetandSelected && Object(external_window_wp_element_["createElement"])(external_window_wp_components_["ToolbarButton"], {\n name: "link",\n icon: link_off,\n title: Object(external_window_wp_i18n_["__"])(\'Unlink\'),\n shortcut: build_module["displayShortcut"].primaryShift(\'k\'),\n onClick: unlinkButton,\n isActive: true\n }))), isSelected && Object(external_window_wp_element_["createElement"])(external_window_wp_components_["KeyboardShortcuts"], {\n bindGlobal: true,\n shortcuts: (_ref4 = {}, _defineProperty(_ref4, build_module["rawShortcut"].primary(\'k\'), openLinkControl), _defineProperty(_ref4, build_module["rawShortcut"].primaryShift(\'k\'), unlinkButton), _ref4)\n }), linkControl);\n}\n\nfunction ButtonEdit(props) {\n var attributes = props.attributes,\n setAttributes = props.setAttributes,\n className = props.className,\n isSelected = props.isSelected,\n onReplace = props.onReplace,\n mergeBlocks = props.mergeBlocks;\n var borderRadius = attributes.borderRadius,\n linkTarget = attributes.linkTarget,\n placeholder = attributes.placeholder,\n rel = attributes.rel,\n text = attributes.text,\n url = attributes.url;\n var onSetLinkRel = Object(external_window_wp_element_["useCallback"])(function (value) {\n setAttributes({\n rel: value\n });\n }, [setAttributes]);\n\n var _useSelect = Object(external_window_wp_data_["useSelect"])(function (select) {\n return select(\'core/block-editor\').getSettings();\n }, []),\n colors = _useSelect.colors;\n\n var onToggleOpenInNewTab = Object(external_window_wp_element_["useCallback"])(function (value) {\n var newLinkTarget = value ? \'_blank\' : undefined;\n var updatedRel = rel;\n\n if (newLinkTarget && !rel) {\n updatedRel = NEW_TAB_REL;\n } else if (!newLinkTarget && rel === NEW_TAB_REL) {\n updatedRel = undefined;\n }\n\n setAttributes({\n linkTarget: newLinkTarget,\n rel: updatedRel\n });\n }, [rel, setAttributes]);\n var colorProps = getColorAndStyleProps(attributes, colors, true);\n return Object(external_window_wp_element_["createElement"])(external_window_wp_element_["Fragment"], null, Object(external_window_wp_element_["createElement"])(color_edit, props), Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["__experimentalBlock"].div, null, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["RichText"], {\n placeholder: placeholder || Object(external_window_wp_i18n_["__"])(\'Add text…\'),\n value: text,\n onChange: function onChange(value) {\n return setAttributes({\n text: value\n });\n },\n withoutInteractiveFormatting: true,\n className: classnames_default()(className, \'wp-block-button__link\', colorProps.className, {\n \'no-border-radius\': borderRadius === 0\n }),\n style: edit_objectSpread({\n borderRadius: borderRadius ? borderRadius + \'px\' : undefined\n }, colorProps.style),\n onSplit: function onSplit(value) {\n return Object(external_window_wp_blocks_["createBlock"])(\'core/button\', edit_objectSpread({}, attributes, {\n text: value\n }));\n },\n onReplace: onReplace,\n onMerge: mergeBlocks,\n identifier: "text"\n })), Object(external_window_wp_element_["createElement"])(URLPicker, {\n url: url,\n setAttributes: setAttributes,\n isSelected: isSelected,\n opensInNewTab: linkTarget === \'_blank\',\n onToggleOpenInNewTab: onToggleOpenInNewTab\n }), Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["InspectorControls"], null, Object(external_window_wp_element_["createElement"])(BorderPanel, {\n borderRadius: borderRadius,\n setAttributes: setAttributes\n }), Object(external_window_wp_element_["createElement"])(external_window_wp_components_["PanelBody"], {\n title: Object(external_window_wp_i18n_["__"])(\'Link settings\')\n }, Object(external_window_wp_element_["createElement"])(external_window_wp_components_["ToggleControl"], {\n label: Object(external_window_wp_i18n_["__"])(\'Open in new tab\'),\n onChange: onToggleOpenInNewTab,\n checked: linkTarget === \'_blank\'\n }), Object(external_window_wp_element_["createElement"])(external_window_wp_components_["TextControl"], {\n label: Object(external_window_wp_i18n_["__"])(\'Link rel\'),\n value: rel || \'\',\n onChange: onSetLinkRel\n }))));\n}\n\n/* harmony default export */ var edit = (ButtonEdit);\n//# sourceMappingURL=edit.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/build-module/button/save.js\n\n\n\nfunction save_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction save_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { save_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { save_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n\n/**\n * Internal dependencies\n */\n\n\nfunction save(_ref) {\n var attributes = _ref.attributes;\n var borderRadius = attributes.borderRadius,\n linkTarget = attributes.linkTarget,\n rel = attributes.rel,\n text = attributes.text,\n title = attributes.title,\n url = attributes.url;\n var colorProps = getColorAndStyleProps(attributes);\n var buttonClasses = classnames_default()(\'wp-block-button__link\', colorProps.className, {\n \'no-border-radius\': borderRadius === 0\n });\n\n var buttonStyle = save_objectSpread({\n borderRadius: borderRadius ? borderRadius + \'px\' : undefined\n }, colorProps.style); // The use of a `title` attribute here is soft-deprecated, but still applied\n // if it had already been assigned, for the sake of backward-compatibility.\n // A title will no longer be assigned for new or updated button block links.\n\n\n return Object(external_window_wp_element_["createElement"])("div", null, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["RichText"].Content, {\n tagName: "a",\n className: buttonClasses,\n href: url,\n title: title,\n style: buttonStyle,\n value: text,\n target: linkTarget,\n rel: rel\n }));\n}\n//# sourceMappingURL=save.js.map\n// CONCATENATED MODULE: ./schema-blocks/instructions/blocks/LinkButton.tsx\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== "function" && b !== null)\n throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// @ts-ignore -- No typings exist for this class.\n\n// @ts-ignore -- No typings exist for this class.\n\n\n/**\n * Link button block instruction.\n */\nvar LinkButton_LinkButton = /** @class */ (function (_super) {\n __extends(LinkButton, _super);\n function LinkButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Renders saving the element.\n *\n * @param props The props.\n *\n * @returns {ReactElement} The element to render.\n */\n LinkButton.prototype.save = function (props) {\n return Object(external_React_["createElement"])(save, __assign({}, props));\n };\n /**\n * Renders editing the element.\n *\n * @param props The props.\n *\n * @returns {ReactElement} The element to render.\n */\n LinkButton.prototype.edit = function (props) {\n if (this.options.placeholder) {\n props.setAttributes({ placeholder: this.options.placeholder });\n }\n return Object(external_React_["createElement"])(edit, __assign({}, props));\n };\n /**\n * Configuration attributes to add to the block template\n * in which this instruction is used.\n */\n LinkButton.prototype.configuration = function () {\n return {\n attributes: {\n url: {\n type: "string",\n source: "attribute",\n selector: "a",\n attribute: "href"\n },\n title: {\n type: "string",\n source: "attribute",\n selector: "a",\n attribute: "title"\n },\n text: {\n type: "string",\n source: "html",\n selector: "a"\n },\n linkTarget: {\n type: "string",\n source: "attribute",\n selector: "a",\n attribute: "target"\n },\n rel: {\n type: "string",\n source: "attribute",\n selector: "a",\n attribute: "rel"\n },\n placeholder: {\n type: "string"\n },\n borderRadius: {\n type: "number"\n },\n style: {\n type: "object"\n },\n backgroundColor: {\n type: "string"\n },\n textColor: {\n type: "string"\n },\n gradient: {\n type: "string"\n }\n },\n supports: {\n anchor: true,\n alignWide: false,\n reusable: false,\n lightBlockWrapper: true\n }\n };\n };\n /**\n * Checks if the instruction block is valid.\n *\n * @param blockInstance The attributes from the block.\n *\n * @returns The validation result.\n */\n LinkButton.prototype.validate = function (blockInstance) {\n var presence = this.options.required === true ? external_window_yoast_schemaBlocks_["BlockPresence"].Required : external_window_yoast_schemaBlocks_["BlockPresence"].Recommended;\n // The linkbutton must have a Text, AND either a linktarget or a relative link set.\n if (Object(external_window_yoast_schemaBlocks_["attributeExists"])(blockInstance, "text") && Object(external_window_yoast_schemaBlocks_["attributeNotEmpty"])(blockInstance, "text") &&\n (Object(external_window_yoast_schemaBlocks_["attributeExists"])(blockInstance, "linkTarget") && Object(external_window_yoast_schemaBlocks_["attributeNotEmpty"])(blockInstance, "linkTarget") ||\n Object(external_window_yoast_schemaBlocks_["attributeExists"])(blockInstance, "rel") && Object(external_window_yoast_schemaBlocks_["attributeNotEmpty"])(blockInstance, "rel"))) {\n return external_window_yoast_schemaBlocks_["BlockValidationResult"].Valid(blockInstance, this.constructor.name, presence);\n }\n return external_window_yoast_schemaBlocks_["BlockValidationResult"].MissingAttribute(blockInstance, this.constructor.name, presence);\n };\n return LinkButton;\n}(external_window_yoast_schemaBlocks_["BlockInstruction"]));\n\n\n// CONCATENATED MODULE: ./schema-blocks/instructions/blocks/index.ts\n/* Add Schema Block Instruction imports here. */\n\n\n// CONCATENATED MODULE: ./schema-blocks.ts\n\n\nexternal_window_yoast_schemaBlocks_["BlockInstruction"].register("link-button", LinkButton_LinkButton);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanM/ODI2MCIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9ibG9jay1saWJyYXJ5L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcz9mOGUzIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzPzFmMmIiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlMaWtlVG9BcnJheS5qcz83MDZlIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzPzY3NDYiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzPzEzYjMiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcz85NjdhIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL3ByaW1pdGl2ZXMvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzPzJjMGQiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvcHJpbWl0aXZlcy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcz85ZDZiIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL3ByaW1pdGl2ZXMvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzP2NkNzMiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvcHJpbWl0aXZlcy9idWlsZC1tb2R1bGUvc3ZnL2luZGV4LmpzP2IyYzAiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9pY29ucy9idWlsZC1tb2R1bGUvbGlicmFyeS9saW5rLmpzPzNlYmMiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9pY29ucy9idWlsZC1tb2R1bGUvbGlicmFyeS9saW5rLW9mZi5qcz84OGQxIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvYnVpbGQtbW9kdWxlL2J1dHRvbi9jb2xvci1lZGl0LmpzP2JiZGMiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9idWlsZC1tb2R1bGUvYnV0dG9uL2NvbG9yLXByb3BzLmpzP2U2MWEiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9idWlsZC1tb2R1bGUvYnV0dG9uL2VkaXQuanM/YTc3NCIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9ibG9jay1saWJyYXJ5L2J1aWxkLW1vZHVsZS9idXR0b24vc2F2ZS5qcz8wMDE1Iiwid2VicGFjazovLy8uL3NjaGVtYS1ibG9ja3MvaW5zdHJ1Y3Rpb25zL2Jsb2Nrcy9MaW5rQnV0dG9uLnRzeD8yMzRjIiwid2VicGFjazovLy8uL3NjaGVtYS1ibG9ja3MvaW5zdHJ1Y3Rpb25zL2Jsb2Nrcy9pbmRleC50cz8xMzJhIiwid2VicGFjazovLy8uL3NjaGVtYS1ibG9ja3MudHM/NGUzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG4gIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykge1xuICAgIGFycjJbaV0gPSBhcnJbaV07XG4gIH1cblxuICByZXR1cm4gYXJyMjtcbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5XCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXRcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheVwiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3RcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gIHZhciBrZXksIGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTtcbiAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlO1xuICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufSIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50IH0gZnJvbSAnQHdvcmRwcmVzcy9lbGVtZW50JzsgLy8gRGlzYWJsZSByZWFzb246IEpTRG9jIGxpbnRlciBkb2Vzbid0IHNlZW0gdG8gcGFyc2UgdGhlIHVuaW9uIChgJmApIGNvcnJlY3RseS5cblxuLyogZXNsaW50LWRpc2FibGUganNkb2MvdmFsaWQtdHlwZXMgKi9cblxuLyoqIEB0eXBlZGVmIHt7aXNQcmVzc2VkPzogYm9vbGVhbn0gJiBpbXBvcnQoJ3JlYWN0JykuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdzdmcnPn0gU1ZHUHJvcHMgKi9cblxuLyogZXNsaW50LWVuYWJsZSBqc2RvYy92YWxpZC10eXBlcyAqL1xuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCdyZWFjdCcpLkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnY2lyY2xlJz59IHByb3BzXG4gKlxuICogQHJldHVybiB7SlNYLkVsZW1lbnR9IENpcmNsZSBjb21wb25lbnRcbiAqL1xuXG5leHBvcnQgdmFyIENpcmNsZSA9IGZ1bmN0aW9uIENpcmNsZShwcm9wcykge1xuICByZXR1cm4gY3JlYXRlRWxlbWVudCgnY2lyY2xlJywgcHJvcHMpO1xufTtcbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJ3JlYWN0JykuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdnJz59IHByb3BzXG4gKlxuICogQHJldHVybiB7SlNYLkVsZW1lbnR9IEcgY29tcG9uZW50XG4gKi9cblxuZXhwb3J0IHZhciBHID0gZnVuY3Rpb24gRyhwcm9wcykge1xuICByZXR1cm4gY3JlYXRlRWxlbWVudCgnZycsIHByb3BzKTtcbn07XG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCdyZWFjdCcpLkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwncGF0aCc+fSBwcm9wc1xuICpcbiAqIEByZXR1cm4ge0pTWC5FbGVtZW50fSBQYXRoIGNvbXBvbmVudFxuICovXG5cbmV4cG9ydCB2YXIgUGF0aCA9IGZ1bmN0aW9uIFBhdGgocHJvcHMpIHtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3BhdGgnLCBwcm9wcyk7XG59O1xuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgncmVhY3QnKS5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J3BvbHlnb24nPn0gcHJvcHNcbiAqXG4gKiBAcmV0dXJuIHtKU1guRWxlbWVudH0gUG9seWdvbiBjb21wb25lbnRcbiAqL1xuXG5leHBvcnQgdmFyIFBvbHlnb24gPSBmdW5jdGlvbiBQb2x5Z29uKHByb3BzKSB7XG4gIHJldHVybiBjcmVhdGVFbGVtZW50KCdwb2x5Z29uJywgcHJvcHMpO1xufTtcbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJ3JlYWN0JykuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdyZWN0Jz59IHByb3BzXG4gKlxuICogQHJldHVybiB7SlNYLkVsZW1lbnR9IFJlY3QgY29tcG9uZW50XG4gKi9cblxuZXhwb3J0IHZhciBSZWN0ID0gZnVuY3Rpb24gUmVjdChwcm9wcykge1xuICByZXR1cm4gY3JlYXRlRWxlbWVudCgncmVjdCcsIHByb3BzKTtcbn07XG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCdyZWFjdCcpLkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZGVmcyc+fSBwcm9wc1xuICpcbiAqIEByZXR1cm4ge0pTWC5FbGVtZW50fSBEZWZzIGNvbXBvbmVudFxuICovXG5cbmV4cG9ydCB2YXIgRGVmcyA9IGZ1bmN0aW9uIERlZnMocHJvcHMpIHtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ2RlZnMnLCBwcm9wcyk7XG59O1xuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgncmVhY3QnKS5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J3JhZGlhbEdyYWRpZW50Jz59IHByb3BzXG4gKlxuICogQHJldHVybiB7SlNYLkVsZW1lbnR9IFJhZGlhbEdyYWRpZW50IGNvbXBvbmVudFxuICovXG5cbmV4cG9ydCB2YXIgUmFkaWFsR3JhZGllbnQgPSBmdW5jdGlvbiBSYWRpYWxHcmFkaWVudChwcm9wcykge1xuICByZXR1cm4gY3JlYXRlRWxlbWVudCgncmFkaWFsR3JhZGllbnQnLCBwcm9wcyk7XG59O1xuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgncmVhY3QnKS5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2xpbmVhckdyYWRpZW50Jz59IHByb3BzXG4gKlxuICogQHJldHVybiB7SlNYLkVsZW1lbnR9IExpbmVhckdyYWRpZW50IGNvbXBvbmVudFxuICovXG5cbmV4cG9ydCB2YXIgTGluZWFyR3JhZGllbnQgPSBmdW5jdGlvbiBMaW5lYXJHcmFkaWVudChwcm9wcykge1xuICByZXR1cm4gY3JlYXRlRWxlbWVudCgnbGluZWFyR3JhZGllbnQnLCBwcm9wcyk7XG59O1xuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgncmVhY3QnKS5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J3N0b3AnPn0gcHJvcHNcbiAqXG4gKiBAcmV0dXJuIHtKU1guRWxlbWVudH0gU3RvcCBjb21wb25lbnRcbiAqL1xuXG5leHBvcnQgdmFyIFN0b3AgPSBmdW5jdGlvbiBTdG9wKHByb3BzKSB7XG4gIHJldHVybiBjcmVhdGVFbGVtZW50KCdzdG9wJywgcHJvcHMpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSB7U1ZHUHJvcHN9IHByb3BzIGlzUHJlc3NlZCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgU1ZHIHNob3VsZCBhcHBlYXIgYXMgcHJlc3NlZC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyIHByb3BzIHdpbGwgYmUgcGFzc2VkIHRocm91Z2ggdG8gc3ZnIGNvbXBvbmVudC5cbiAqXG4gKiBAcmV0dXJuIHtKU1guRWxlbWVudH0gU3RvcCBjb21wb25lbnRcbiAqL1xuXG5leHBvcnQgdmFyIFNWRyA9IGZ1bmN0aW9uIFNWRyhfcmVmKSB7XG4gIHZhciBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICAgIGlzUHJlc3NlZCA9IF9yZWYuaXNQcmVzc2VkLFxuICAgICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgW1wiY2xhc3NOYW1lXCIsIFwiaXNQcmVzc2VkXCJdKTtcblxuICB2YXIgYXBwbGllZFByb3BzID0gX29iamVjdFNwcmVhZCh7fSwgcHJvcHMsIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoY2xhc3NOYW1lLCB7XG4gICAgICAnaXMtcHJlc3NlZCc6IGlzUHJlc3NlZFxuICAgIH0pIHx8IHVuZGVmaW5lZCxcbiAgICByb2xlOiAnaW1nJyxcbiAgICAnYXJpYS1oaWRkZW4nOiB0cnVlLFxuICAgIGZvY3VzYWJsZTogZmFsc2VcbiAgfSk7IC8vIERpc2FibGUgcmVhc29uOiBXZSBuZWVkIHRvIGhhdmUgYSB3YXkgdG8gcmVuZGVyIEhUTUwgdGFnIGZvciB3ZWIuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9mb3JiaWQtZWxlbWVudHNcblxuXG4gIHJldHVybiBjcmVhdGVFbGVtZW50KFwic3ZnXCIsIGFwcGxpZWRQcm9wcyk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gXCJAd29yZHByZXNzL2VsZW1lbnRcIjtcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCB7IFNWRywgUGF0aCB9IGZyb20gJ0B3b3JkcHJlc3MvcHJpbWl0aXZlcyc7XG52YXIgbGluayA9IGNyZWF0ZUVsZW1lbnQoU1ZHLCB7XG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCJcbn0sIGNyZWF0ZUVsZW1lbnQoUGF0aCwge1xuICBkOiBcIk0xNS42IDcuMkgxNHYxLjVoMS42YzIgMCAzLjcgMS43IDMuNyAzLjdzLTEuNyAzLjctMy43IDMuN0gxNHYxLjVoMS42YzIuOCAwIDUuMi0yLjMgNS4yLTUuMiAwLTIuOS0yLjMtNS4yLTUuMi01LjJ6TTQuNyAxMi40YzAtMiAxLjctMy43IDMuNy0zLjdIMTBWNy4ySDguNGMtMi45IDAtNS4yIDIuMy01LjIgNS4yIDAgMi45IDIuMyA1LjIgNS4yIDUuMkgxMHYtMS41SDguNGMtMiAwLTMuNy0xLjctMy43LTMuN3ptNC42LjloNS4zdi0xLjVIOS4zdjEuNXpcIlxufSkpO1xuZXhwb3J0IGRlZmF1bHQgbGluaztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmsuanMubWFwIiwiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gXCJAd29yZHByZXNzL2VsZW1lbnRcIjtcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCB7IFNWRywgUGF0aCB9IGZyb20gJ0B3b3JkcHJlc3MvcHJpbWl0aXZlcyc7XG52YXIgbGlua09mZiA9IGNyZWF0ZUVsZW1lbnQoU1ZHLCB7XG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCJcbn0sIGNyZWF0ZUVsZW1lbnQoUGF0aCwge1xuICBkOiBcIk0xNS42IDcuM2gtLjdsMS42LTMuNS0uOS0uNC0zLjkgOC41SDl2MS41aDJsLTEuMyAyLjhIOC40Yy0yIDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcgMy43LTMuN0gxMFY3LjNIOC40Yy0yLjkgMC01LjIgMi4zLTUuMiA1LjIgMCAyLjkgMi4zIDUuMiA1LjIgNS4ySDlsLTEuNCAzLjIuOS40IDUuNy0xMi41aDEuNGMyIDAgMy43IDEuNyAzLjcgMy43cy0xLjcgMy43LTMuNyAzLjdIMTR2MS41aDEuNmMyLjkgMCA1LjItMi4zIDUuMi01LjIgMC0yLjktMi40LTUuMi01LjItNS4yelwiXG59KSk7XG5leHBvcnQgZGVmYXVsdCBsaW5rT2ZmO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluay1vZmYuanMubWFwIiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gXCJAd29yZHByZXNzL2VsZW1lbnRcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCB7IHBpY2tCeSwgaXNFcXVhbCwgaXNPYmplY3QsIGlkZW50aXR5LCBtYXBWYWx1ZXMgfSBmcm9tICdsb2Rhc2gnO1xuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IHsgX18gfSBmcm9tICdAd29yZHByZXNzL2kxOG4nO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmLCBQbGF0Zm9ybSB9IGZyb20gJ0B3b3JkcHJlc3MvZWxlbWVudCc7XG5pbXBvcnQgeyB1c2VTZWxlY3QgfSBmcm9tICdAd29yZHByZXNzL2RhdGEnO1xuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuXG5pbXBvcnQgeyBnZXRDb2xvck9iamVjdEJ5Q29sb3JWYWx1ZSwgZ2V0Q29sb3JPYmplY3RCeUF0dHJpYnV0ZVZhbHVlcywgZ2V0R3JhZGllbnRWYWx1ZUJ5U2x1ZywgZ2V0R3JhZGllbnRTbHVnQnlWYWx1ZSwgX19leHBlcmltZW50YWxQYW5lbENvbG9yR3JhZGllbnRTZXR0aW5ncyBhcyBQYW5lbENvbG9yR3JhZGllbnRTZXR0aW5ncywgQ29udHJhc3RDaGVja2VyLCBJbnNwZWN0b3JDb250cm9scyB9IGZyb20gJ0B3b3JkcHJlc3MvYmxvY2stZWRpdG9yJztcbnZhciBpc1dlYlBsYXRmb3JtID0gUGxhdGZvcm0uT1MgPT09ICd3ZWInOyAvLyBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgY29waWVkIGVudGlyZWx5IGZyb20gdGhlIFwiY29sb3JcIiBhbmQgXCJzdHlsZVwiIHN1cHBvcnQgZmxhZ3Ncbi8vIFRoZSBmbGFnIGNhbid0IGJlIHVzZWQgYXQgdGhlIG1vbWVudCBiZWNhdXNlIG9mIHRoZSBleHRyYSB3cmFwcGVyIGFyb3VuZFxuLy8gdGhlIGJ1dHRvbiBibG9jayBtYXJrdXAuXG5cbmZ1bmN0aW9uIGdldEJsb2NrRE9NTm9kZShjbGllbnRJZCkge1xuICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jsb2NrLScgKyBjbGllbnRJZCk7XG59XG4vKipcbiAqIFJlbW92ZWQgdW5kZWZpbmVkIHZhbHVlcyBmcm9tIG5lc3RlZCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHsqfSBvYmplY3RcbiAqIEByZXR1cm4geyp9IE9iamVjdCBjbGVhbmVkIGZyb20gdW5kZWZpbmVkIHZhbHVlc1xuICovXG5cblxudmFyIGNsZWFuRW1wdHlPYmplY3QgPSBmdW5jdGlvbiBjbGVhbkVtcHR5T2JqZWN0KG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgdmFyIGNsZWFuZWROZXN0ZWRPYmplY3RzID0gcGlja0J5KG1hcFZhbHVlcyhvYmplY3QsIGNsZWFuRW1wdHlPYmplY3QpLCBpZGVudGl0eSk7XG4gIHJldHVybiBpc0VxdWFsKGNsZWFuZWROZXN0ZWRPYmplY3RzLCB7fSkgPyB1bmRlZmluZWQgOiBjbGVhbmVkTmVzdGVkT2JqZWN0cztcbn07XG5cbmZ1bmN0aW9uIENvbG9yUGFuZWwoX3JlZikge1xuICB2YXIgc2V0dGluZ3MgPSBfcmVmLnNldHRpbmdzLFxuICAgICAgY2xpZW50SWQgPSBfcmVmLmNsaWVudElkLFxuICAgICAgX3JlZiRlbmFibGVDb250cmFzdENoID0gX3JlZi5lbmFibGVDb250cmFzdENoZWNraW5nLFxuICAgICAgZW5hYmxlQ29udHJhc3RDaGVja2luZyA9IF9yZWYkZW5hYmxlQ29udHJhc3RDaCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkZW5hYmxlQ29udHJhc3RDaDtcbiAgdmFyIF93aW5kb3cgPSB3aW5kb3csXG4gICAgICBnZXRDb21wdXRlZFN0eWxlID0gX3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlLFxuICAgICAgTm9kZSA9IF93aW5kb3cuTm9kZTtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgZGV0ZWN0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0RGV0ZWN0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUoKSxcbiAgICAgIF91c2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUzLCAyKSxcbiAgICAgIGRldGVjdGVkQ29sb3IgPSBfdXNlU3RhdGU0WzBdLFxuICAgICAgc2V0RGV0ZWN0ZWRDb2xvciA9IF91c2VTdGF0ZTRbMV07XG5cbiAgdmFyIHRpdGxlID0gaXNXZWJQbGF0Zm9ybSA/IF9fKCdDb2xvciBzZXR0aW5ncycpIDogX18oJ0NvbG9yIFNldHRpbmdzJyk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGlzV2ViUGxhdGZvcm0gJiYgIWVuYWJsZUNvbnRyYXN0Q2hlY2tpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sb3JzRGV0ZWN0aW9uRWxlbWVudCA9IGdldEJsb2NrRE9NTm9kZShjbGllbnRJZCk7XG5cbiAgICBpZiAoIWNvbG9yc0RldGVjdGlvbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXREZXRlY3RlZENvbG9yKGdldENvbXB1dGVkU3R5bGUoY29sb3JzRGV0ZWN0aW9uRWxlbWVudCkuY29sb3IpO1xuICAgIHZhciBiYWNrZ3JvdW5kQ29sb3JOb2RlID0gY29sb3JzRGV0ZWN0aW9uRWxlbWVudDtcbiAgICB2YXIgYmFja2dyb3VuZENvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShiYWNrZ3JvdW5kQ29sb3JOb2RlKS5iYWNrZ3JvdW5kQ29sb3I7XG5cbiAgICB3aGlsZSAoYmFja2dyb3VuZENvbG9yID09PSAncmdiYSgwLCAwLCAwLCAwKScgJiYgYmFja2dyb3VuZENvbG9yTm9kZS5wYXJlbnROb2RlICYmIGJhY2tncm91bmRDb2xvck5vZGUucGFyZW50Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgIGJhY2tncm91bmRDb2xvck5vZGUgPSBiYWNrZ3JvdW5kQ29sb3JOb2RlLnBhcmVudE5vZGU7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGJhY2tncm91bmRDb2xvck5vZGUpLmJhY2tncm91bmRDb2xvcjtcbiAgICB9XG5cbiAgICBzZXREZXRlY3RlZEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpO1xuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoSW5zcGVjdG9yQ29udHJvbHMsIG51bGwsIGNyZWF0ZUVsZW1lbnQoUGFuZWxDb2xvckdyYWRpZW50U2V0dGluZ3MsIHtcbiAgICB0aXRsZTogdGl0bGUsXG4gICAgaW5pdGlhbE9wZW46IGZhbHNlLFxuICAgIHNldHRpbmdzOiBzZXR0aW5nc1xuICB9LCBpc1dlYlBsYXRmb3JtICYmIGVuYWJsZUNvbnRyYXN0Q2hlY2tpbmcgJiYgY3JlYXRlRWxlbWVudChDb250cmFzdENoZWNrZXIsIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGRldGVjdGVkQmFja2dyb3VuZENvbG9yLFxuICAgIHRleHRDb2xvcjogZGV0ZWN0ZWRDb2xvclxuICB9KSkpO1xufVxuLyoqXG4gKiBJbnNwZWN0b3IgY29udHJvbCBwYW5lbCBjb250YWluaW5nIHRoZSBjb2xvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAqXG4gKiBAcmV0dXJuIHtXUEVsZW1lbnR9IENvbG9yIGVkaXQgZWxlbWVudC5cbiAqL1xuXG5cbmZ1bmN0aW9uIENvbG9yRWRpdChwcm9wcykge1xuICB2YXIgX3N0eWxlJGNvbG9yMiwgX3N0eWxlJGNvbG9yMywgX3N0eWxlJGNvbG9yNDtcblxuICB2YXIgYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgdmFyIF91c2VTZWxlY3QgPSB1c2VTZWxlY3QoZnVuY3Rpb24gKHNlbGVjdCkge1xuICAgIHJldHVybiBzZWxlY3QoJ2NvcmUvYmxvY2stZWRpdG9yJykuZ2V0U2V0dGluZ3MoKTtcbiAgfSwgW10pLFxuICAgICAgY29sb3JzID0gX3VzZVNlbGVjdC5jb2xvcnMsXG4gICAgICBncmFkaWVudHMgPSBfdXNlU2VsZWN0LmdyYWRpZW50czsgLy8gU2hvdWxkbid0IGJlIG5lZWRlZCBidXQgcmlnaHQgbm93IHRoZSBDb2xvckdyYWRpZW50c1BhbmVsXG4gIC8vIGNhbiB0cmlnZ2VyIGJvdGggb25DaGFuZ2VDb2xvciBhbmQgb25DaGFuZ2VCYWNrZ3JvdW5kXG4gIC8vIHN5bmNocm9ub3VzbHkgY2F1c2luZyBvdXIgdHdvIGNhbGxiYWNrcyB0byBvdmVycmlkZSBjaGFuZ2VzXG4gIC8vIGZyb20gZWFjaCBvdGhlci5cblxuXG4gIHZhciBsb2NhbEF0dHJpYnV0ZXMgPSB1c2VSZWYoYXR0cmlidXRlcyk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgbG9jYWxBdHRyaWJ1dGVzLmN1cnJlbnQgPSBhdHRyaWJ1dGVzO1xuICB9LCBbYXR0cmlidXRlc10pO1xuICB2YXIgc3R5bGUgPSBhdHRyaWJ1dGVzLnN0eWxlLFxuICAgICAgdGV4dENvbG9yID0gYXR0cmlidXRlcy50ZXh0Q29sb3IsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcixcbiAgICAgIGdyYWRpZW50ID0gYXR0cmlidXRlcy5ncmFkaWVudDtcbiAgdmFyIGdyYWRpZW50VmFsdWU7XG5cbiAgaWYgKGdyYWRpZW50KSB7XG4gICAgZ3JhZGllbnRWYWx1ZSA9IGdldEdyYWRpZW50VmFsdWVCeVNsdWcoZ3JhZGllbnRzLCBncmFkaWVudCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIF9zdHlsZSRjb2xvcjtcblxuICAgIGdyYWRpZW50VmFsdWUgPSBzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9zdHlsZSRjb2xvciA9IHN0eWxlLmNvbG9yKSA9PT0gbnVsbCB8fCBfc3R5bGUkY29sb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvci5ncmFkaWVudDtcbiAgfVxuXG4gIHZhciBvbkNoYW5nZUNvbG9yID0gZnVuY3Rpb24gb25DaGFuZ2VDb2xvcihuYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgdmFyIF9sb2NhbEF0dHJpYnV0ZXMkY3VyciwgX2xvY2FsQXR0cmlidXRlcyRjdXJyMjtcblxuICAgICAgdmFyIGNvbG9yT2JqZWN0ID0gZ2V0Q29sb3JPYmplY3RCeUNvbG9yVmFsdWUoY29sb3JzLCB2YWx1ZSk7XG4gICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IG5hbWUgKyAnQ29sb3InO1xuXG4gICAgICB2YXIgbmV3U3R5bGUgPSBfb2JqZWN0U3ByZWFkKHt9LCBsb2NhbEF0dHJpYnV0ZXMuY3VycmVudC5zdHlsZSwge1xuICAgICAgICBjb2xvcjogX29iamVjdFNwcmVhZCh7fSwgKF9sb2NhbEF0dHJpYnV0ZXMkY3VyciA9IGxvY2FsQXR0cmlidXRlcy5jdXJyZW50KSA9PT0gbnVsbCB8fCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfbG9jYWxBdHRyaWJ1dGVzJGN1cnIyID0gX2xvY2FsQXR0cmlidXRlcyRjdXJyLnN0eWxlKSA9PT0gbnVsbCB8fCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnIyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbG9jYWxBdHRyaWJ1dGVzJGN1cnIyLmNvbG9yLCBfZGVmaW5lUHJvcGVydHkoe30sIG5hbWUsIChjb2xvck9iamVjdCA9PT0gbnVsbCB8fCBjb2xvck9iamVjdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29sb3JPYmplY3Quc2x1ZykgPyB1bmRlZmluZWQgOiB2YWx1ZSkpXG4gICAgICB9KTtcblxuICAgICAgdmFyIG5ld05hbWVkQ29sb3IgPSAoY29sb3JPYmplY3QgPT09IG51bGwgfHwgY29sb3JPYmplY3QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbG9yT2JqZWN0LnNsdWcpID8gY29sb3JPYmplY3Quc2x1ZyA6IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIG5ld0F0dHJpYnV0ZXMgPSBfZGVmaW5lUHJvcGVydHkoe1xuICAgICAgICBzdHlsZTogY2xlYW5FbXB0eU9iamVjdChuZXdTdHlsZSlcbiAgICAgIH0sIGF0dHJpYnV0ZU5hbWUsIG5ld05hbWVkQ29sb3IpO1xuXG4gICAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKG5ld0F0dHJpYnV0ZXMpO1xuICAgICAgbG9jYWxBdHRyaWJ1dGVzLmN1cnJlbnQgPSBfb2JqZWN0U3ByZWFkKHt9LCBsb2NhbEF0dHJpYnV0ZXMuY3VycmVudCwge30sIG5ld0F0dHJpYnV0ZXMpO1xuICAgIH07XG4gIH07XG5cbiAgdmFyIG9uQ2hhbmdlR3JhZGllbnQgPSBmdW5jdGlvbiBvbkNoYW5nZUdyYWRpZW50KHZhbHVlKSB7XG4gICAgdmFyIHNsdWcgPSBnZXRHcmFkaWVudFNsdWdCeVZhbHVlKGdyYWRpZW50cywgdmFsdWUpO1xuICAgIHZhciBuZXdBdHRyaWJ1dGVzO1xuXG4gICAgaWYgKHNsdWcpIHtcbiAgICAgIHZhciBfbG9jYWxBdHRyaWJ1dGVzJGN1cnIzLCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI0LCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI1O1xuXG4gICAgICB2YXIgbmV3U3R5bGUgPSBfb2JqZWN0U3ByZWFkKHt9LCAoX2xvY2FsQXR0cmlidXRlcyRjdXJyMyA9IGxvY2FsQXR0cmlidXRlcy5jdXJyZW50KSA9PT0gbnVsbCB8fCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnIzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbG9jYWxBdHRyaWJ1dGVzJGN1cnIzLnN0eWxlLCB7XG4gICAgICAgIGNvbG9yOiBfb2JqZWN0U3ByZWFkKHt9LCAoX2xvY2FsQXR0cmlidXRlcyRjdXJyNCA9IGxvY2FsQXR0cmlidXRlcy5jdXJyZW50KSA9PT0gbnVsbCB8fCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2xvY2FsQXR0cmlidXRlcyRjdXJyNSA9IF9sb2NhbEF0dHJpYnV0ZXMkY3VycjQuc3R5bGUpID09PSBudWxsIHx8IF9sb2NhbEF0dHJpYnV0ZXMkY3VycjUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9sb2NhbEF0dHJpYnV0ZXMkY3VycjUuY29sb3IsIHtcbiAgICAgICAgICBncmFkaWVudDogdW5kZWZpbmVkXG4gICAgICAgIH0pXG4gICAgICB9KTtcblxuICAgICAgbmV3QXR0cmlidXRlcyA9IHtcbiAgICAgICAgc3R5bGU6IGNsZWFuRW1wdHlPYmplY3QobmV3U3R5bGUpLFxuICAgICAgICBncmFkaWVudDogc2x1Z1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9sb2NhbEF0dHJpYnV0ZXMkY3VycjYsIF9sb2NhbEF0dHJpYnV0ZXMkY3VycjcsIF9sb2NhbEF0dHJpYnV0ZXMkY3Vycjg7XG5cbiAgICAgIHZhciBfbmV3U3R5bGUgPSBfb2JqZWN0U3ByZWFkKHt9LCAoX2xvY2FsQXR0cmlidXRlcyRjdXJyNiA9IGxvY2FsQXR0cmlidXRlcy5jdXJyZW50KSA9PT0gbnVsbCB8fCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI2LnN0eWxlLCB7XG4gICAgICAgIGNvbG9yOiBfb2JqZWN0U3ByZWFkKHt9LCAoX2xvY2FsQXR0cmlidXRlcyRjdXJyNyA9IGxvY2FsQXR0cmlidXRlcy5jdXJyZW50KSA9PT0gbnVsbCB8fCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI3ID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2xvY2FsQXR0cmlidXRlcyRjdXJyOCA9IF9sb2NhbEF0dHJpYnV0ZXMkY3Vycjcuc3R5bGUpID09PSBudWxsIHx8IF9sb2NhbEF0dHJpYnV0ZXMkY3VycjggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9sb2NhbEF0dHJpYnV0ZXMkY3VycjguY29sb3IsIHtcbiAgICAgICAgICBncmFkaWVudDogdmFsdWVcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuXG4gICAgICBuZXdBdHRyaWJ1dGVzID0ge1xuICAgICAgICBzdHlsZTogY2xlYW5FbXB0eU9iamVjdChfbmV3U3R5bGUpLFxuICAgICAgICBncmFkaWVudDogdW5kZWZpbmVkXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLnNldEF0dHJpYnV0ZXMobmV3QXR0cmlidXRlcyk7XG4gICAgbG9jYWxBdHRyaWJ1dGVzLmN1cnJlbnQgPSBfb2JqZWN0U3ByZWFkKHt9LCBsb2NhbEF0dHJpYnV0ZXMuY3VycmVudCwge30sIG5ld0F0dHJpYnV0ZXMpO1xuICB9O1xuXG4gIHJldHVybiBjcmVhdGVFbGVtZW50KENvbG9yUGFuZWwsIHtcbiAgICBlbmFibGVDb250cmFzdENoZWNraW5nOiAhZ3JhZGllbnQgJiYgIShzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9zdHlsZSRjb2xvcjIgPSBzdHlsZS5jb2xvcikgPT09IG51bGwgfHwgX3N0eWxlJGNvbG9yMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3N0eWxlJGNvbG9yMi5ncmFkaWVudCksXG4gICAgY2xpZW50SWQ6IHByb3BzLmNsaWVudElkLFxuICAgIHNldHRpbmdzOiBbe1xuICAgICAgbGFiZWw6IF9fKCdUZXh0IENvbG9yJyksXG4gICAgICBvbkNvbG9yQ2hhbmdlOiBvbkNoYW5nZUNvbG9yKCd0ZXh0JyksXG4gICAgICBjb2xvclZhbHVlOiBnZXRDb2xvck9iamVjdEJ5QXR0cmlidXRlVmFsdWVzKGNvbG9ycywgdGV4dENvbG9yLCBzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9zdHlsZSRjb2xvcjMgPSBzdHlsZS5jb2xvcikgPT09IG51bGwgfHwgX3N0eWxlJGNvbG9yMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3N0eWxlJGNvbG9yMy50ZXh0KS5jb2xvclxuICAgIH0sIHtcbiAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicpLFxuICAgICAgb25Db2xvckNoYW5nZTogb25DaGFuZ2VDb2xvcignYmFja2dyb3VuZCcpLFxuICAgICAgY29sb3JWYWx1ZTogZ2V0Q29sb3JPYmplY3RCeUF0dHJpYnV0ZVZhbHVlcyhjb2xvcnMsIGJhY2tncm91bmRDb2xvciwgc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3I0ID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjQuYmFja2dyb3VuZCkuY29sb3IsXG4gICAgICBncmFkaWVudFZhbHVlOiBncmFkaWVudFZhbHVlLFxuICAgICAgb25HcmFkaWVudENoYW5nZTogb25DaGFuZ2VHcmFkaWVudFxuICAgIH1dXG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb2xvckVkaXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb2xvci1lZGl0LmpzLm1hcCIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5cbi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IHsgZ2V0Q29sb3JDbGFzc05hbWUsIGdldENvbG9yT2JqZWN0QnlBdHRyaWJ1dGVWYWx1ZXMsIF9fZXhwZXJpbWVudGFsR2V0R3JhZGllbnRDbGFzcyB9IGZyb20gJ0B3b3JkcHJlc3MvYmxvY2stZWRpdG9yJzsgLy8gVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBlbnRpcmVseSBmcm9tIHRoZSBcImNvbG9yXCIgYW5kIFwic3R5bGVcIiBzdXBwb3J0IGZsYWdzXG4vLyBUaGUgZmxhZyBjYW4ndCBiZSB1c2VkIGF0IHRoZSBtb21lbnQgYmVjYXVzZSBvZiB0aGUgZXh0cmEgd3JhcHBlciBhcm91bmRcbi8vIHRoZSBidXR0b24gYmxvY2sgbWFya3VwLlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb2xvckFuZFN0eWxlUHJvcHMoYXR0cmlidXRlcywgY29sb3JzKSB7XG4gIHZhciBfc3R5bGUkY29sb3IsIF9zdHlsZSRjb2xvcjIsIF9zdHlsZSRjb2xvcjMsIF9zdHlsZSRjb2xvcjQsIF9jbGFzc25hbWVzLCBfc3R5bGUkY29sb3I1LCBfc3R5bGUkY29sb3I2LCBfc3R5bGUkY29sb3I3LCBfc3R5bGUkY29sb3I4LCBfc3R5bGUkY29sb3I5LCBfc3R5bGUkY29sb3IxMDtcblxuICB2YXIgaXNFZGl0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTtcbiAgLy8gSSdkIGhhdmUgcHJlZmVyZWQgdG8gYXZvaWQgdGhlIFwic3R5bGVcIiBhdHRyaWJ1dGUgdXNhZ2UgaGVyZVxuICB2YXIgYmFja2dyb3VuZENvbG9yID0gYXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICB0ZXh0Q29sb3IgPSBhdHRyaWJ1dGVzLnRleHRDb2xvcixcbiAgICAgIGdyYWRpZW50ID0gYXR0cmlidXRlcy5ncmFkaWVudCxcbiAgICAgIHN0eWxlID0gYXR0cmlidXRlcy5zdHlsZTtcbiAgdmFyIGJhY2tncm91bmRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCdiYWNrZ3JvdW5kLWNvbG9yJywgYmFja2dyb3VuZENvbG9yKTtcblxuICB2YXIgZ3JhZGllbnRDbGFzcyA9IF9fZXhwZXJpbWVudGFsR2V0R3JhZGllbnRDbGFzcyhncmFkaWVudCk7XG5cbiAgdmFyIHRleHRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCdjb2xvcicsIHRleHRDb2xvcik7XG4gIHZhciBjbGFzc05hbWUgPSBjbGFzc25hbWVzKHRleHRDbGFzcywgZ3JhZGllbnRDbGFzcywgKF9jbGFzc25hbWVzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NuYW1lcywgYmFja2dyb3VuZENsYXNzLCAhKHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX3N0eWxlJGNvbG9yID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3N0eWxlJGNvbG9yLmdyYWRpZW50KSAmJiAhIWJhY2tncm91bmRDbGFzcyksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NuYW1lcywgJ2hhcy10ZXh0LWNvbG9yJywgdGV4dENvbG9yIHx8IChzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9zdHlsZSRjb2xvcjIgPSBzdHlsZS5jb2xvcikgPT09IG51bGwgfHwgX3N0eWxlJGNvbG9yMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3N0eWxlJGNvbG9yMi50ZXh0KSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NuYW1lcywgJ2hhcy1iYWNrZ3JvdW5kJywgYmFja2dyb3VuZENvbG9yIHx8IChzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9zdHlsZSRjb2xvcjMgPSBzdHlsZS5jb2xvcikgPT09IG51bGwgfHwgX3N0eWxlJGNvbG9yMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3N0eWxlJGNvbG9yMy5iYWNrZ3JvdW5kKSB8fCBncmFkaWVudCB8fCAoc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3I0ID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjQuZ3JhZGllbnQpKSwgX2NsYXNzbmFtZXMpKTtcbiAgdmFyIHN0eWxlUHJvcCA9IChzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9zdHlsZSRjb2xvcjUgPSBzdHlsZS5jb2xvcikgPT09IG51bGwgfHwgX3N0eWxlJGNvbG9yNSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3N0eWxlJGNvbG9yNS5iYWNrZ3JvdW5kKSB8fCAoc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3I2ID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjYudGV4dCkgfHwgKHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX3N0eWxlJGNvbG9yNyA9IHN0eWxlLmNvbG9yKSA9PT0gbnVsbCB8fCBfc3R5bGUkY29sb3I3ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc3R5bGUkY29sb3I3LmdyYWRpZW50KSA/IHtcbiAgICBiYWNrZ3JvdW5kOiAoc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3I4ID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjguZ3JhZGllbnQpID8gc3R5bGUuY29sb3IuZ3JhZGllbnQgOiB1bmRlZmluZWQsXG4gICAgYmFja2dyb3VuZENvbG9yOiAoc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3I5ID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjkuYmFja2dyb3VuZCkgPyBzdHlsZS5jb2xvci5iYWNrZ3JvdW5kIDogdW5kZWZpbmVkLFxuICAgIGNvbG9yOiAoc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3IxMCA9IHN0eWxlLmNvbG9yKSA9PT0gbnVsbCB8fCBfc3R5bGUkY29sb3IxMCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3N0eWxlJGNvbG9yMTAudGV4dCkgPyBzdHlsZS5jb2xvci50ZXh0IDogdW5kZWZpbmVkXG4gIH0gOiB7fTsgLy8gVGhpcyBpcyBuZWVkZWQgb25seSBmb3IgdGhlbWVzIHRoYXQgZG9uJ3QgbG9hZCB0aGVpciBjb2xvciBzdHlsZXNoZWV0cyBpbiB0aGUgZWRpdG9yXG4gIC8vIFdlIGZvcmNlIGFuIGlubGluZSBzdHlsZSB0byBhcHBseSB0aGUgY29sb3IuXG5cbiAgaWYgKGlzRWRpdCkge1xuICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIHZhciBiYWNrZ3JvdW5kQ29sb3JPYmplY3QgPSBnZXRDb2xvck9iamVjdEJ5QXR0cmlidXRlVmFsdWVzKGNvbG9ycywgYmFja2dyb3VuZENvbG9yKTtcbiAgICAgIHN0eWxlUHJvcC5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3JPYmplY3QuY29sb3I7XG4gICAgfVxuXG4gICAgaWYgKHRleHRDb2xvcikge1xuICAgICAgdmFyIHRleHRDb2xvck9iamVjdCA9IGdldENvbG9yT2JqZWN0QnlBdHRyaWJ1dGVWYWx1ZXMoY29sb3JzLCB0ZXh0Q29sb3IpO1xuICAgICAgc3R5bGVQcm9wLmNvbG9yID0gdGV4dENvbG9yT2JqZWN0LmNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2xhc3NOYW1lOiAhIWNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCxcbiAgICBzdHlsZTogc3R5bGVQcm9wXG4gIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb2xvci1wcm9wcy5qcy5tYXAiLCJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBGcmFnbWVudCB9IGZyb20gXCJAd29yZHByZXNzL2VsZW1lbnRcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IHsgX18gfSBmcm9tICdAd29yZHByZXNzL2kxOG4nO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSAnQHdvcmRwcmVzcy9lbGVtZW50JztcbmltcG9ydCB7IEtleWJvYXJkU2hvcnRjdXRzLCBQYW5lbEJvZHksIFJhbmdlQ29udHJvbCwgVGV4dENvbnRyb2wsIFRvZ2dsZUNvbnRyb2wsIFRvb2xiYXJCdXR0b24sIFRvb2xiYXJHcm91cCwgUG9wb3ZlciB9IGZyb20gJ0B3b3JkcHJlc3MvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCbG9ja0NvbnRyb2xzLCBJbnNwZWN0b3JDb250cm9scywgUmljaFRleHQsIF9fZXhwZXJpbWVudGFsQmxvY2sgYXMgQmxvY2ssIF9fZXhwZXJpbWVudGFsTGlua0NvbnRyb2wgYXMgTGlua0NvbnRyb2wgfSBmcm9tICdAd29yZHByZXNzL2Jsb2NrLWVkaXRvcic7XG5pbXBvcnQgeyByYXdTaG9ydGN1dCwgZGlzcGxheVNob3J0Y3V0IH0gZnJvbSAnQHdvcmRwcmVzcy9rZXljb2Rlcyc7XG5pbXBvcnQgeyBsaW5rLCBsaW5rT2ZmIH0gZnJvbSAnQHdvcmRwcmVzcy9pY29ucyc7XG5pbXBvcnQgeyBjcmVhdGVCbG9jayB9IGZyb20gJ0B3b3JkcHJlc3MvYmxvY2tzJztcbmltcG9ydCB7IHVzZVNlbGVjdCB9IGZyb20gJ0B3b3JkcHJlc3MvZGF0YSc7XG4vKipcbiAqIEludGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5cbmltcG9ydCBDb2xvckVkaXQgZnJvbSAnLi9jb2xvci1lZGl0JztcbmltcG9ydCBnZXRDb2xvckFuZFN0eWxlUHJvcHMgZnJvbSAnLi9jb2xvci1wcm9wcyc7XG52YXIgTkVXX1RBQl9SRUwgPSAnbm9yZWZlcnJlciBub29wZW5lcic7XG52YXIgTUlOX0JPUkRFUl9SQURJVVNfVkFMVUUgPSAwO1xudmFyIE1BWF9CT1JERVJfUkFESVVTX1ZBTFVFID0gNTA7XG52YXIgSU5JVElBTF9CT1JERVJfUkFESVVTX1BPU0lUSU9OID0gNTtcblxuZnVuY3Rpb24gQm9yZGVyUGFuZWwoX3JlZikge1xuICB2YXIgX3JlZiRib3JkZXJSYWRpdXMgPSBfcmVmLmJvcmRlclJhZGl1cyxcbiAgICAgIGJvcmRlclJhZGl1cyA9IF9yZWYkYm9yZGVyUmFkaXVzID09PSB2b2lkIDAgPyAnJyA6IF9yZWYkYm9yZGVyUmFkaXVzLFxuICAgICAgc2V0QXR0cmlidXRlcyA9IF9yZWYuc2V0QXR0cmlidXRlcztcbiAgdmFyIGluaXRpYWxCb3JkZXJSYWRpdXMgPSBib3JkZXJSYWRpdXM7XG4gIHZhciBzZXRCb3JkZXJSYWRpdXMgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAobmV3Qm9yZGVyUmFkaXVzKSB7XG4gICAgaWYgKG5ld0JvcmRlclJhZGl1cyA9PT0gdW5kZWZpbmVkKSBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgIGJvcmRlclJhZGl1czogaW5pdGlhbEJvcmRlclJhZGl1c1xuICAgIH0pO2Vsc2Ugc2V0QXR0cmlidXRlcyh7XG4gICAgICBib3JkZXJSYWRpdXM6IG5ld0JvcmRlclJhZGl1c1xuICAgIH0pO1xuICB9LCBbc2V0QXR0cmlidXRlc10pO1xuICByZXR1cm4gY3JlYXRlRWxlbWVudChQYW5lbEJvZHksIHtcbiAgICB0aXRsZTogX18oJ0JvcmRlciBzZXR0aW5ncycpXG4gIH0sIGNyZWF0ZUVsZW1lbnQoUmFuZ2VDb250cm9sLCB7XG4gICAgdmFsdWU6IGJvcmRlclJhZGl1cyxcbiAgICBsYWJlbDogX18oJ0JvcmRlciByYWRpdXMnKSxcbiAgICBtaW46IE1JTl9CT1JERVJfUkFESVVTX1ZBTFVFLFxuICAgIG1heDogTUFYX0JPUkRFUl9SQURJVVNfVkFMVUUsXG4gICAgaW5pdGlhbFBvc2l0aW9uOiBJTklUSUFMX0JPUkRFUl9SQURJVVNfUE9TSVRJT04sXG4gICAgYWxsb3dSZXNldDogdHJ1ZSxcbiAgICBvbkNoYW5nZTogc2V0Qm9yZGVyUmFkaXVzXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gVVJMUGlja2VyKF9yZWYyKSB7XG4gIHZhciBfcmVmNDtcblxuICB2YXIgaXNTZWxlY3RlZCA9IF9yZWYyLmlzU2VsZWN0ZWQsXG4gICAgICB1cmwgPSBfcmVmMi51cmwsXG4gICAgICBzZXRBdHRyaWJ1dGVzID0gX3JlZjIuc2V0QXR0cmlidXRlcyxcbiAgICAgIG9wZW5zSW5OZXdUYWIgPSBfcmVmMi5vcGVuc0luTmV3VGFiLFxuICAgICAgb25Ub2dnbGVPcGVuSW5OZXdUYWIgPSBfcmVmMi5vblRvZ2dsZU9wZW5Jbk5ld1RhYjtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoZmFsc2UpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBpc1VSTFBpY2tlck9wZW4gPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SXNVUkxQaWNrZXJPcGVuID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgdXJsSXNTZXQgPSAhIXVybDtcbiAgdmFyIHVybElzU2V0YW5kU2VsZWN0ZWQgPSB1cmxJc1NldCAmJiBpc1NlbGVjdGVkO1xuXG4gIHZhciBvcGVuTGlua0NvbnRyb2wgPSBmdW5jdGlvbiBvcGVuTGlua0NvbnRyb2woKSB7XG4gICAgc2V0SXNVUkxQaWNrZXJPcGVuKHRydWUpO1xuICAgIHJldHVybiBmYWxzZTsgLy8gcHJldmVudHMgZGVmYXVsdCBiZWhhdmlvdXIgZm9yIGV2ZW50XG4gIH07XG5cbiAgdmFyIHVubGlua0J1dHRvbiA9IGZ1bmN0aW9uIHVubGlua0J1dHRvbigpIHtcbiAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgIHVybDogdW5kZWZpbmVkLFxuICAgICAgbGlua1RhcmdldDogdW5kZWZpbmVkLFxuICAgICAgcmVsOiB1bmRlZmluZWRcbiAgICB9KTtcbiAgICBzZXRJc1VSTFBpY2tlck9wZW4oZmFsc2UpO1xuICB9O1xuXG4gIHZhciBsaW5rQ29udHJvbCA9IChpc1VSTFBpY2tlck9wZW4gfHwgdXJsSXNTZXRhbmRTZWxlY3RlZCkgJiYgY3JlYXRlRWxlbWVudChQb3BvdmVyLCB7XG4gICAgcG9zaXRpb246IFwiYm90dG9tIGNlbnRlclwiLFxuICAgIG9uQ2xvc2U6IGZ1bmN0aW9uIG9uQ2xvc2UoKSB7XG4gICAgICByZXR1cm4gc2V0SXNVUkxQaWNrZXJPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0sIGNyZWF0ZUVsZW1lbnQoTGlua0NvbnRyb2wsIHtcbiAgICBjbGFzc05hbWU6IFwid3AtYmxvY2stbmF2aWdhdGlvbi1saW5rX19pbmxpbmUtbGluay1pbnB1dFwiLFxuICAgIHZhbHVlOiB7XG4gICAgICB1cmw6IHVybCxcbiAgICAgIG9wZW5zSW5OZXdUYWI6IG9wZW5zSW5OZXdUYWJcbiAgICB9LFxuICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShfcmVmMykge1xuICAgICAgdmFyIF9yZWYzJHVybCA9IF9yZWYzLnVybCxcbiAgICAgICAgICBuZXdVUkwgPSBfcmVmMyR1cmwgPT09IHZvaWQgMCA/ICcnIDogX3JlZjMkdXJsLFxuICAgICAgICAgIG5ld09wZW5zSW5OZXdUYWIgPSBfcmVmMy5vcGVuc0luTmV3VGFiO1xuICAgICAgc2V0QXR0cmlidXRlcyh7XG4gICAgICAgIHVybDogbmV3VVJMXG4gICAgICB9KTtcblxuICAgICAgaWYgKG9wZW5zSW5OZXdUYWIgIT09IG5ld09wZW5zSW5OZXdUYWIpIHtcbiAgICAgICAgb25Ub2dnbGVPcGVuSW5OZXdUYWIobmV3T3BlbnNJbk5ld1RhYik7XG4gICAgICB9XG4gICAgfVxuICB9KSk7XG4gIHJldHVybiBjcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLCBjcmVhdGVFbGVtZW50KEJsb2NrQ29udHJvbHMsIG51bGwsIGNyZWF0ZUVsZW1lbnQoVG9vbGJhckdyb3VwLCBudWxsLCAhdXJsSXNTZXQgJiYgY3JlYXRlRWxlbWVudChUb29sYmFyQnV0dG9uLCB7XG4gICAgbmFtZTogXCJsaW5rXCIsXG4gICAgaWNvbjogbGluayxcbiAgICB0aXRsZTogX18oJ0xpbmsnKSxcbiAgICBzaG9ydGN1dDogZGlzcGxheVNob3J0Y3V0LnByaW1hcnkoJ2snKSxcbiAgICBvbkNsaWNrOiBvcGVuTGlua0NvbnRyb2xcbiAgfSksIHVybElzU2V0YW5kU2VsZWN0ZWQgJiYgY3JlYXRlRWxlbWVudChUb29sYmFyQnV0dG9uLCB7XG4gICAgbmFtZTogXCJsaW5rXCIsXG4gICAgaWNvbjogbGlua09mZixcbiAgICB0aXRsZTogX18oJ1VubGluaycpLFxuICAgIHNob3J0Y3V0OiBkaXNwbGF5U2hvcnRjdXQucHJpbWFyeVNoaWZ0KCdrJyksXG4gICAgb25DbGljazogdW5saW5rQnV0dG9uLFxuICAgIGlzQWN0aXZlOiB0cnVlXG4gIH0pKSksIGlzU2VsZWN0ZWQgJiYgY3JlYXRlRWxlbWVudChLZXlib2FyZFNob3J0Y3V0cywge1xuICAgIGJpbmRHbG9iYWw6IHRydWUsXG4gICAgc2hvcnRjdXRzOiAoX3JlZjQgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9yZWY0LCByYXdTaG9ydGN1dC5wcmltYXJ5KCdrJyksIG9wZW5MaW5rQ29udHJvbCksIF9kZWZpbmVQcm9wZXJ0eShfcmVmNCwgcmF3U2hvcnRjdXQucHJpbWFyeVNoaWZ0KCdrJyksIHVubGlua0J1dHRvbiksIF9yZWY0KVxuICB9KSwgbGlua0NvbnRyb2wpO1xufVxuXG5mdW5jdGlvbiBCdXR0b25FZGl0KHByb3BzKSB7XG4gIHZhciBhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzLFxuICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICBvblJlcGxhY2UgPSBwcm9wcy5vblJlcGxhY2UsXG4gICAgICBtZXJnZUJsb2NrcyA9IHByb3BzLm1lcmdlQmxvY2tzO1xuICB2YXIgYm9yZGVyUmFkaXVzID0gYXR0cmlidXRlcy5ib3JkZXJSYWRpdXMsXG4gICAgICBsaW5rVGFyZ2V0ID0gYXR0cmlidXRlcy5saW5rVGFyZ2V0LFxuICAgICAgcGxhY2Vob2xkZXIgPSBhdHRyaWJ1dGVzLnBsYWNlaG9sZGVyLFxuICAgICAgcmVsID0gYXR0cmlidXRlcy5yZWwsXG4gICAgICB0ZXh0ID0gYXR0cmlidXRlcy50ZXh0LFxuICAgICAgdXJsID0gYXR0cmlidXRlcy51cmw7XG4gIHZhciBvblNldExpbmtSZWwgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgIHJlbDogdmFsdWVcbiAgICB9KTtcbiAgfSwgW3NldEF0dHJpYnV0ZXNdKTtcblxuICB2YXIgX3VzZVNlbGVjdCA9IHVzZVNlbGVjdChmdW5jdGlvbiAoc2VsZWN0KSB7XG4gICAgcmV0dXJuIHNlbGVjdCgnY29yZS9ibG9jay1lZGl0b3InKS5nZXRTZXR0aW5ncygpO1xuICB9LCBbXSksXG4gICAgICBjb2xvcnMgPSBfdXNlU2VsZWN0LmNvbG9ycztcblxuICB2YXIgb25Ub2dnbGVPcGVuSW5OZXdUYWIgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgbmV3TGlua1RhcmdldCA9IHZhbHVlID8gJ19ibGFuaycgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHVwZGF0ZWRSZWwgPSByZWw7XG5cbiAgICBpZiAobmV3TGlua1RhcmdldCAmJiAhcmVsKSB7XG4gICAgICB1cGRhdGVkUmVsID0gTkVXX1RBQl9SRUw7XG4gICAgfSBlbHNlIGlmICghbmV3TGlua1RhcmdldCAmJiByZWwgPT09IE5FV19UQUJfUkVMKSB7XG4gICAgICB1cGRhdGVkUmVsID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgbGlua1RhcmdldDogbmV3TGlua1RhcmdldCxcbiAgICAgIHJlbDogdXBkYXRlZFJlbFxuICAgIH0pO1xuICB9LCBbcmVsLCBzZXRBdHRyaWJ1dGVzXSk7XG4gIHZhciBjb2xvclByb3BzID0gZ2V0Q29sb3JBbmRTdHlsZVByb3BzKGF0dHJpYnV0ZXMsIGNvbG9ycywgdHJ1ZSk7XG4gIHJldHVybiBjcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLCBjcmVhdGVFbGVtZW50KENvbG9yRWRpdCwgcHJvcHMpLCBjcmVhdGVFbGVtZW50KEJsb2NrLmRpdiwgbnVsbCwgY3JlYXRlRWxlbWVudChSaWNoVGV4dCwge1xuICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciB8fCBfXygnQWRkIHRleHTigKYnKSxcbiAgICB2YWx1ZTogdGV4dCxcbiAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcbiAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgdGV4dDogdmFsdWVcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgd2l0aG91dEludGVyYWN0aXZlRm9ybWF0dGluZzogdHJ1ZSxcbiAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoY2xhc3NOYW1lLCAnd3AtYmxvY2stYnV0dG9uX19saW5rJywgY29sb3JQcm9wcy5jbGFzc05hbWUsIHtcbiAgICAgICduby1ib3JkZXItcmFkaXVzJzogYm9yZGVyUmFkaXVzID09PSAwXG4gICAgfSksXG4gICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoe1xuICAgICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgPyBib3JkZXJSYWRpdXMgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgfSwgY29sb3JQcm9wcy5zdHlsZSksXG4gICAgb25TcGxpdDogZnVuY3Rpb24gb25TcGxpdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUJsb2NrKCdjb3JlL2J1dHRvbicsIF9vYmplY3RTcHJlYWQoe30sIGF0dHJpYnV0ZXMsIHtcbiAgICAgICAgdGV4dDogdmFsdWVcbiAgICAgIH0pKTtcbiAgICB9LFxuICAgIG9uUmVwbGFjZTogb25SZXBsYWNlLFxuICAgIG9uTWVyZ2U6IG1lcmdlQmxvY2tzLFxuICAgIGlkZW50aWZpZXI6IFwidGV4dFwiXG4gIH0pKSwgY3JlYXRlRWxlbWVudChVUkxQaWNrZXIsIHtcbiAgICB1cmw6IHVybCxcbiAgICBzZXRBdHRyaWJ1dGVzOiBzZXRBdHRyaWJ1dGVzLFxuICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgb3BlbnNJbk5ld1RhYjogbGlua1RhcmdldCA9PT0gJ19ibGFuaycsXG4gICAgb25Ub2dnbGVPcGVuSW5OZXdUYWI6IG9uVG9nZ2xlT3BlbkluTmV3VGFiXG4gIH0pLCBjcmVhdGVFbGVtZW50KEluc3BlY3RvckNvbnRyb2xzLCBudWxsLCBjcmVhdGVFbGVtZW50KEJvcmRlclBhbmVsLCB7XG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgc2V0QXR0cmlidXRlczogc2V0QXR0cmlidXRlc1xuICB9KSwgY3JlYXRlRWxlbWVudChQYW5lbEJvZHksIHtcbiAgICB0aXRsZTogX18oJ0xpbmsgc2V0dGluZ3MnKVxuICB9LCBjcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcbiAgICBsYWJlbDogX18oJ09wZW4gaW4gbmV3IHRhYicpLFxuICAgIG9uQ2hhbmdlOiBvblRvZ2dsZU9wZW5Jbk5ld1RhYixcbiAgICBjaGVja2VkOiBsaW5rVGFyZ2V0ID09PSAnX2JsYW5rJ1xuICB9KSwgY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgIGxhYmVsOiBfXygnTGluayByZWwnKSxcbiAgICB2YWx1ZTogcmVsIHx8ICcnLFxuICAgIG9uQ2hhbmdlOiBvblNldExpbmtSZWxcbiAgfSkpKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbkVkaXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lZGl0LmpzLm1hcCIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50IH0gZnJvbSBcIkB3b3JkcHJlc3MvZWxlbWVudFwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuXG5pbXBvcnQgeyBSaWNoVGV4dCB9IGZyb20gJ0B3b3JkcHJlc3MvYmxvY2stZWRpdG9yJztcbi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IGdldENvbG9yQW5kU3R5bGVQcm9wcyBmcm9tICcuL2NvbG9yLXByb3BzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNhdmUoX3JlZikge1xuICB2YXIgYXR0cmlidXRlcyA9IF9yZWYuYXR0cmlidXRlcztcbiAgdmFyIGJvcmRlclJhZGl1cyA9IGF0dHJpYnV0ZXMuYm9yZGVyUmFkaXVzLFxuICAgICAgbGlua1RhcmdldCA9IGF0dHJpYnV0ZXMubGlua1RhcmdldCxcbiAgICAgIHJlbCA9IGF0dHJpYnV0ZXMucmVsLFxuICAgICAgdGV4dCA9IGF0dHJpYnV0ZXMudGV4dCxcbiAgICAgIHRpdGxlID0gYXR0cmlidXRlcy50aXRsZSxcbiAgICAgIHVybCA9IGF0dHJpYnV0ZXMudXJsO1xuICB2YXIgY29sb3JQcm9wcyA9IGdldENvbG9yQW5kU3R5bGVQcm9wcyhhdHRyaWJ1dGVzKTtcbiAgdmFyIGJ1dHRvbkNsYXNzZXMgPSBjbGFzc25hbWVzKCd3cC1ibG9jay1idXR0b25fX2xpbmsnLCBjb2xvclByb3BzLmNsYXNzTmFtZSwge1xuICAgICduby1ib3JkZXItcmFkaXVzJzogYm9yZGVyUmFkaXVzID09PSAwXG4gIH0pO1xuXG4gIHZhciBidXR0b25TdHlsZSA9IF9vYmplY3RTcHJlYWQoe1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzID8gYm9yZGVyUmFkaXVzICsgJ3B4JyA6IHVuZGVmaW5lZFxuICB9LCBjb2xvclByb3BzLnN0eWxlKTsgLy8gVGhlIHVzZSBvZiBhIGB0aXRsZWAgYXR0cmlidXRlIGhlcmUgaXMgc29mdC1kZXByZWNhdGVkLCBidXQgc3RpbGwgYXBwbGllZFxuICAvLyBpZiBpdCBoYWQgYWxyZWFkeSBiZWVuIGFzc2lnbmVkLCBmb3IgdGhlIHNha2Ugb2YgYmFja3dhcmQtY29tcGF0aWJpbGl0eS5cbiAgLy8gQSB0aXRsZSB3aWxsIG5vIGxvbmdlciBiZSBhc3NpZ25lZCBmb3IgbmV3IG9yIHVwZGF0ZWQgYnV0dG9uIGJsb2NrIGxpbmtzLlxuXG5cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCwgY3JlYXRlRWxlbWVudChSaWNoVGV4dC5Db250ZW50LCB7XG4gICAgdGFnTmFtZTogXCJhXCIsXG4gICAgY2xhc3NOYW1lOiBidXR0b25DbGFzc2VzLFxuICAgIGhyZWY6IHVybCxcbiAgICB0aXRsZTogdGl0bGUsXG4gICAgc3R5bGU6IGJ1dHRvblN0eWxlLFxuICAgIHZhbHVlOiB0ZXh0LFxuICAgIHRhcmdldDogbGlua1RhcmdldCxcbiAgICByZWw6IHJlbFxuICB9KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zYXZlLmpzLm1hcCIsInZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gXCJyZWFjdFwiO1xuLy8gQHRzLWlnbm9yZSAtLSBObyB0eXBpbmdzIGV4aXN0IGZvciB0aGlzIGNsYXNzLlxuaW1wb3J0IEJ1dHRvbkVkaXQgZnJvbSBcIkB3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9idWlsZC1tb2R1bGUvYnV0dG9uL2VkaXRcIjtcbi8vIEB0cy1pZ25vcmUgLS0gTm8gdHlwaW5ncyBleGlzdCBmb3IgdGhpcyBjbGFzcy5cbmltcG9ydCBCdXR0b25TYXZlIGZyb20gXCJAd29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvYnVpbGQtbW9kdWxlL2J1dHRvbi9zYXZlXCI7XG5pbXBvcnQgeyBCbG9ja0luc3RydWN0aW9uLCBCbG9ja1ByZXNlbmNlLCBCbG9ja1ZhbGlkYXRpb25SZXN1bHQsIGF0dHJpYnV0ZUV4aXN0cywgYXR0cmlidXRlTm90RW1wdHksIH0gZnJvbSBcIkB5b2FzdC9zY2hlbWEtYmxvY2tzXCI7XG4vKipcbiAqIExpbmsgYnV0dG9uIGJsb2NrIGluc3RydWN0aW9uLlxuICovXG52YXIgTGlua0J1dHRvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTGlua0J1dHRvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBMaW5rQnV0dG9uKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgc2F2aW5nIHRoZSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtSZWFjdEVsZW1lbnR9IFRoZSBlbGVtZW50IHRvIHJlbmRlci5cbiAgICAgKi9cbiAgICBMaW5rQnV0dG9uLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KEJ1dHRvblNhdmUsIF9fYXNzaWduKHt9LCBwcm9wcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVuZGVycyBlZGl0aW5nIHRoZSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtSZWFjdEVsZW1lbnR9IFRoZSBlbGVtZW50IHRvIHJlbmRlci5cbiAgICAgKi9cbiAgICBMaW5rQnV0dG9uLnByb3RvdHlwZS5lZGl0ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHByb3BzLnNldEF0dHJpYnV0ZXMoeyBwbGFjZWhvbGRlcjogdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KEJ1dHRvbkVkaXQsIF9fYXNzaWduKHt9LCBwcm9wcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBhdHRyaWJ1dGVzIHRvIGFkZCB0byB0aGUgYmxvY2sgdGVtcGxhdGVcbiAgICAgKiBpbiB3aGljaCB0aGlzIGluc3RydWN0aW9uIGlzIHVzZWQuXG4gICAgICovXG4gICAgTGlua0J1dHRvbi5wcm90b3R5cGUuY29uZmlndXJhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB1cmw6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBcImF0dHJpYnV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjogXCJhXCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTogXCJocmVmXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogXCJhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6IFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwidGl0bGVcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IFwiaHRtbFwiLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjogXCJhXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxpbmtUYXJnZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBcImF0dHJpYnV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjogXCJhXCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTogXCJ0YXJnZXRcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVsOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogXCJhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6IFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwicmVsXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdyYWRpZW50OiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VwcG9ydHM6IHtcbiAgICAgICAgICAgICAgICBhbmNob3I6IHRydWUsXG4gICAgICAgICAgICAgICAgYWxpZ25XaWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXVzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGlnaHRCbG9ja1dyYXBwZXI6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgaW5zdHJ1Y3Rpb24gYmxvY2sgaXMgdmFsaWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYmxvY2tJbnN0YW5jZSBUaGUgYXR0cmlidXRlcyBmcm9tIHRoZSBibG9jay5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSB2YWxpZGF0aW9uIHJlc3VsdC5cbiAgICAgKi9cbiAgICBMaW5rQnV0dG9uLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIChibG9ja0luc3RhbmNlKSB7XG4gICAgICAgIHZhciBwcmVzZW5jZSA9IHRoaXMub3B0aW9ucy5yZXF1aXJlZCA9PT0gdHJ1ZSA/IEJsb2NrUHJlc2VuY2UuUmVxdWlyZWQgOiBCbG9ja1ByZXNlbmNlLlJlY29tbWVuZGVkO1xuICAgICAgICAvLyBUaGUgbGlua2J1dHRvbiBtdXN0IGhhdmUgYSBUZXh0LCBBTkQgZWl0aGVyIGEgbGlua3RhcmdldCBvciBhIHJlbGF0aXZlIGxpbmsgc2V0LlxuICAgICAgICBpZiAoYXR0cmlidXRlRXhpc3RzKGJsb2NrSW5zdGFuY2UsIFwidGV4dFwiKSAmJiBhdHRyaWJ1dGVOb3RFbXB0eShibG9ja0luc3RhbmNlLCBcInRleHRcIikgJiZcbiAgICAgICAgICAgIChhdHRyaWJ1dGVFeGlzdHMoYmxvY2tJbnN0YW5jZSwgXCJsaW5rVGFyZ2V0XCIpICYmIGF0dHJpYnV0ZU5vdEVtcHR5KGJsb2NrSW5zdGFuY2UsIFwibGlua1RhcmdldFwiKSB8fFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUV4aXN0cyhibG9ja0luc3RhbmNlLCBcInJlbFwiKSAmJiBhdHRyaWJ1dGVOb3RFbXB0eShibG9ja0luc3RhbmNlLCBcInJlbFwiKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBCbG9ja1ZhbGlkYXRpb25SZXN1bHQuVmFsaWQoYmxvY2tJbnN0YW5jZSwgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lLCBwcmVzZW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEJsb2NrVmFsaWRhdGlvblJlc3VsdC5NaXNzaW5nQXR0cmlidXRlKGJsb2NrSW5zdGFuY2UsIHRoaXMuY29uc3RydWN0b3IubmFtZSwgcHJlc2VuY2UpO1xuICAgIH07XG4gICAgcmV0dXJuIExpbmtCdXR0b247XG59KEJsb2NrSW5zdHJ1Y3Rpb24pKTtcbmV4cG9ydCB7IExpbmtCdXR0b24gfTtcbiIsIi8qIEFkZCBTY2hlbWEgQmxvY2sgSW5zdHJ1Y3Rpb24gaW1wb3J0cyBoZXJlLiAqL1xuZXhwb3J0IHsgTGlua0J1dHRvbiB9IGZyb20gXCIuL0xpbmtCdXR0b25cIjtcbiIsImltcG9ydCB7IEJsb2NrSW5zdHJ1Y3Rpb24gfSBmcm9tIFwiQHlvYXN0L3NjaGVtYS1ibG9ja3NcIjtcbmltcG9ydCB7IExpbmtCdXR0b24gfSBmcm9tIFwiLi9zY2hlbWEtYmxvY2tzL2luc3RydWN0aW9ucy9ibG9ja3NcIjtcbkJsb2NrSW5zdHJ1Y3Rpb24ucmVnaXN0ZXIoXCJsaW5rLWJ1dHRvblwiLCBMaW5rQnV0dG9uKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDek5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDakpBO0FBQ0E7OztBQ0RBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///153\n')},2:function(module,exports){eval("module.exports = window.lodash;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy5sb2Rhc2hcIj9hNjAxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gd2luZG93LmxvZGFzaDsiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2\n")},23:function(module,exports){eval("module.exports = window.wp.blocks;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3aW5kb3cud3AuYmxvY2tzXCI/NzljMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5ibG9ja3M7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///23\n")},24:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcz8zMmZmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTcgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCkge1xuXHRcdFx0XHR2YXIgaW5uZXIgPSBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChpbm5lcik7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdGNsYXNzTmFtZXMuZGVmYXVsdCA9IGNsYXNzTmFtZXM7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQSxVQUVBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///24\n")},31:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/node_modules/@babel/runtime/helpers/esm/defineProperty.js\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external \"window.lodash\"\nvar external_window_lodash_ = __webpack_require__(2);\n\n// EXTERNAL MODULE: external \"window.wp.i18n\"\nvar external_window_wp_i18n_ = __webpack_require__(1);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/build-module/platform.js\n/**\n * External dependencies\n */\n\n/**\n * Return true if platform is MacOS.\n *\n * @param {Object} _window window object by default; used for DI testing.\n *\n * @return {boolean} True if MacOS; false otherwise.\n */\n\nfunction isAppleOS() {\n var _window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n\n var platform = _window.navigator.platform;\n return platform.indexOf('Mac') !== -1 || Object(external_window_lodash_[\"includes\"])(['iPad', 'iPhone'], platform);\n}\n//# sourceMappingURL=platform.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/keycodes/build-module/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BACKSPACE\", function() { return BACKSPACE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TAB\", function() { return TAB; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ENTER\", function() { return ENTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ESCAPE\", function() { return ESCAPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SPACE\", function() { return SPACE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LEFT\", function() { return LEFT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UP\", function() { return UP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RIGHT\", function() { return RIGHT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DOWN\", function() { return DOWN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DELETE\", function() { return DELETE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"F10\", function() { return F10; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ALT\", function() { return ALT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CTRL\", function() { return CTRL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"COMMAND\", function() { return COMMAND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHIFT\", function() { return SHIFT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZERO\", function() { return ZERO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"modifiers\", function() { return modifiers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rawShortcut\", function() { return rawShortcut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"displayShortcutList\", function() { return displayShortcutList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"displayShortcut\", function() { return displayShortcut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shortcutAriaLabel\", function() { return shortcutAriaLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isKeyboardEvent\", function() { return isKeyboardEvent; });\n\n\n\n/**\n * Note: The order of the modifier keys in many of the [foo]Shortcut()\n * functions in this file are intentional and should not be changed. They're\n * designed to fit with the standard menu keyboard shortcuts shown in the\n * user's platform.\n *\n * For example, on MacOS menu shortcuts will place Shift before Command, but\n * on Windows Control will usually come first. So don't provide your own\n * shortcut combos directly to keyboardShortcut().\n */\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n\n/**\n * Internal dependencies\n */\n\n\n/**\n * @typedef {'primary'|'primaryShift'|'primaryAlt'|'secondary'|'access'|'ctrl'|'alt'|'ctrlShift'|'shift'|'shiftAlt'} WPKeycodeModifier\n */\n\n/**\n * An object of handler functions for each of the possible modifier\n * combinations. A handler will return a value for a given key.\n *\n * @typedef {Record<WPKeycodeModifier, (key:string)=>any>} WPKeycodeHandlerByModifier\n */\n\n/**\n * Keycode for BACKSPACE key.\n */\n\nvar BACKSPACE = 8;\n/**\n * Keycode for TAB key.\n */\n\nvar TAB = 9;\n/**\n * Keycode for ENTER key.\n */\n\nvar ENTER = 13;\n/**\n * Keycode for ESCAPE key.\n */\n\nvar ESCAPE = 27;\n/**\n * Keycode for SPACE key.\n */\n\nvar SPACE = 32;\n/**\n * Keycode for LEFT key.\n */\n\nvar LEFT = 37;\n/**\n * Keycode for UP key.\n */\n\nvar UP = 38;\n/**\n * Keycode for RIGHT key.\n */\n\nvar RIGHT = 39;\n/**\n * Keycode for DOWN key.\n */\n\nvar DOWN = 40;\n/**\n * Keycode for DELETE key.\n */\n\nvar DELETE = 46;\n/**\n * Keycode for F10 key.\n */\n\nvar F10 = 121;\n/**\n * Keycode for ALT key.\n */\n\nvar ALT = 'alt';\n/**\n * Keycode for CTRL key.\n */\n\nvar CTRL = 'ctrl';\n/**\n * Keycode for COMMAND/META key.\n */\n\nvar COMMAND = 'meta';\n/**\n * Keycode for SHIFT key.\n */\n\nvar SHIFT = 'shift';\n/**\n * Keycode for ZERO key.\n */\n\nvar ZERO = 48;\n/**\n * Object that contains functions that return the available modifier\n * depending on platform.\n *\n * - `primary`: takes a isApple function as a parameter.\n * - `primaryShift`: takes a isApple function as a parameter.\n * - `primaryAlt`: takes a isApple function as a parameter.\n * - `secondary`: takes a isApple function as a parameter.\n * - `access`: takes a isApple function as a parameter.\n * - `ctrl`\n * - `alt`\n * - `ctrlShift`\n * - `shift`\n * - `shiftAlt`\n */\n\nvar modifiers = {\n primary: function primary(_isApple) {\n return _isApple() ? [COMMAND] : [CTRL];\n },\n primaryShift: function primaryShift(_isApple) {\n return _isApple() ? [SHIFT, COMMAND] : [CTRL, SHIFT];\n },\n primaryAlt: function primaryAlt(_isApple) {\n return _isApple() ? [ALT, COMMAND] : [CTRL, ALT];\n },\n secondary: function secondary(_isApple) {\n return _isApple() ? [SHIFT, ALT, COMMAND] : [CTRL, SHIFT, ALT];\n },\n access: function access(_isApple) {\n return _isApple() ? [CTRL, ALT] : [SHIFT, ALT];\n },\n ctrl: function ctrl() {\n return [CTRL];\n },\n alt: function alt() {\n return [ALT];\n },\n ctrlShift: function ctrlShift() {\n return [CTRL, SHIFT];\n },\n shift: function shift() {\n return [SHIFT];\n },\n shiftAlt: function shiftAlt() {\n return [SHIFT, ALT];\n }\n};\n/**\n * An object that contains functions to get raw shortcuts.\n * E.g. rawShortcut.primary( 'm' ) will return 'meta+m' on Mac.\n * These are intended for user with the KeyboardShortcuts component or TinyMCE.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to raw shortcuts.\n */\n\nvar rawShortcut = Object(external_window_lodash_[\"mapValues\"])(modifiers, function (modifier) {\n return function (character) {\n var _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;\n\n return [].concat(_toConsumableArray(modifier(_isApple)), [character.toLowerCase()]).join('+');\n };\n});\n/**\n * Return an array of the parts of a keyboard shortcut chord for display\n * E.g displayShortcutList.primary( 'm' ) will return [ '⌘', 'M' ] on Mac.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to shortcut\n * sequences.\n */\n\nvar displayShortcutList = Object(external_window_lodash_[\"mapValues\"])(modifiers, function (modifier) {\n return function (character) {\n var _replacementKeyMap;\n\n var _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;\n\n var isApple = _isApple();\n\n var replacementKeyMap = (_replacementKeyMap = {}, _defineProperty(_replacementKeyMap, ALT, isApple ? '⌥' : 'Alt'), _defineProperty(_replacementKeyMap, CTRL, isApple ? '^' : 'Ctrl'), _defineProperty(_replacementKeyMap, COMMAND, '⌘'), _defineProperty(_replacementKeyMap, SHIFT, isApple ? '⇧' : 'Shift'), _replacementKeyMap);\n var modifierKeys = modifier(_isApple).reduce(function (accumulator, key) {\n var replacementKey = Object(external_window_lodash_[\"get\"])(replacementKeyMap, key, key); // If on the Mac, adhere to platform convention and don't show plus between keys.\n\n if (isApple) {\n return [].concat(_toConsumableArray(accumulator), [replacementKey]);\n }\n\n return [].concat(_toConsumableArray(accumulator), [replacementKey, '+']);\n }, []);\n var capitalizedCharacter = Object(external_window_lodash_[\"capitalize\"])(character);\n return [].concat(_toConsumableArray(modifierKeys), [capitalizedCharacter]);\n };\n});\n/**\n * An object that contains functions to display shortcuts.\n * E.g. displayShortcut.primary( 'm' ) will return '⌘M' on Mac.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to display\n * shortcuts.\n */\n\nvar displayShortcut = Object(external_window_lodash_[\"mapValues\"])(displayShortcutList, function (shortcutList) {\n return function (character) {\n var _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;\n\n return shortcutList(character, _isApple).join('');\n };\n});\n/**\n * An object that contains functions to return an aria label for a keyboard shortcut.\n * E.g. shortcutAriaLabel.primary( '.' ) will return 'Command + Period' on Mac.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to shortcut ARIA\n * labels.\n */\n\nvar shortcutAriaLabel = Object(external_window_lodash_[\"mapValues\"])(modifiers, function (modifier) {\n return function (character) {\n var _replacementKeyMap2;\n\n var _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;\n\n var isApple = _isApple();\n\n var replacementKeyMap = (_replacementKeyMap2 = {}, _defineProperty(_replacementKeyMap2, SHIFT, 'Shift'), _defineProperty(_replacementKeyMap2, COMMAND, isApple ? 'Command' : 'Control'), _defineProperty(_replacementKeyMap2, CTRL, 'Control'), _defineProperty(_replacementKeyMap2, ALT, isApple ? 'Option' : 'Alt'), _defineProperty(_replacementKeyMap2, ',', Object(external_window_wp_i18n_[\"__\"])('Comma')), _defineProperty(_replacementKeyMap2, '.', Object(external_window_wp_i18n_[\"__\"])('Period')), _defineProperty(_replacementKeyMap2, '`', Object(external_window_wp_i18n_[\"__\"])('Backtick')), _replacementKeyMap2);\n return [].concat(_toConsumableArray(modifier(_isApple)), [character]).map(function (key) {\n return Object(external_window_lodash_[\"capitalize\"])(Object(external_window_lodash_[\"get\"])(replacementKeyMap, key, key));\n }).join(isApple ? ' ' : ' + ');\n };\n});\n/**\n * From a given KeyboardEvent, returns an array of active modifier constants for\n * the event.\n *\n * @param {KeyboardEvent} event Keyboard event.\n *\n * @return {Array<ALT|CTRL|COMMAND|SHIFT>} Active modifier constants.\n */\n\nfunction getEventModifiers(event) {\n return [ALT, CTRL, COMMAND, SHIFT].filter(function (key) {\n return event[\"\".concat(key, \"Key\")];\n });\n}\n/**\n * An object that contains functions to check if a keyboard event matches a\n * predefined shortcut combination.\n * E.g. isKeyboardEvent.primary( event, 'm' ) will return true if the event\n * signals pressing ⌘M.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to match events.\n */\n\n\nvar isKeyboardEvent = Object(external_window_lodash_[\"mapValues\"])(modifiers, function (getModifiers) {\n return function (event, character) {\n var _isApple = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : isAppleOS;\n\n var mods = getModifiers(_isApple);\n var eventMods = getEventModifiers(event);\n\n if (Object(external_window_lodash_[\"xor\"])(mods, eventMods).length) {\n return false;\n }\n\n if (!character) {\n return Object(external_window_lodash_[\"includes\"])(mods, event.key.toLowerCase());\n }\n\n return event.key === character;\n };\n});\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9rZXljb2Rlcy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanM/OTA3NCIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9rZXljb2Rlcy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlMaWtlVG9BcnJheS5qcz8xMzE1Iiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2tleWNvZGVzL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhvdXRIb2xlcy5qcz8zMjZhIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2tleWNvZGVzL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXkuanM/ODU0NSIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9rZXljb2Rlcy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanM/NDk0NSIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9rZXljb2Rlcy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVTcHJlYWQuanM/YmUyOSIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9rZXljb2Rlcy9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanM/MGI0NCIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9rZXljb2Rlcy9idWlsZC1tb2R1bGUvcGxhdGZvcm0uanM/MDBiOSIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9rZXljb2Rlcy9idWlsZC1tb2R1bGUvaW5kZXguanM/MjA4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikge1xuICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcnIyW2ldID0gYXJyW2ldO1xuICB9XG5cbiAgcmV0dXJuIGFycjI7XG59IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShhcnIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikge1xuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5XCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiaW1wb3J0IGFycmF5V2l0aG91dEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aG91dEhvbGVzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheVwiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5XCI7XG5pbXBvcnQgbm9uSXRlcmFibGVTcHJlYWQgZnJvbSBcIi4vbm9uSXRlcmFibGVTcHJlYWRcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5KGFycikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufSIsIi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCB7IGluY2x1ZGVzIH0gZnJvbSAnbG9kYXNoJztcbi8qKlxuICogUmV0dXJuIHRydWUgaWYgcGxhdGZvcm0gaXMgTWFjT1MuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IF93aW5kb3cgICB3aW5kb3cgb2JqZWN0IGJ5IGRlZmF1bHQ7IHVzZWQgZm9yIERJIHRlc3RpbmcuXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn0gICAgICAgICBUcnVlIGlmIE1hY09TOyBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXBwbGVPUygpIHtcbiAgdmFyIF93aW5kb3cgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHdpbmRvdztcblxuICB2YXIgcGxhdGZvcm0gPSBfd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybTtcbiAgcmV0dXJuIHBsYXRmb3JtLmluZGV4T2YoJ01hYycpICE9PSAtMSB8fCBpbmNsdWRlcyhbJ2lQYWQnLCAnaVBob25lJ10sIHBsYXRmb3JtKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBsYXRmb3JtLmpzLm1hcCIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheVwiO1xuXG4vKipcbiAqIE5vdGU6IFRoZSBvcmRlciBvZiB0aGUgbW9kaWZpZXIga2V5cyBpbiBtYW55IG9mIHRoZSBbZm9vXVNob3J0Y3V0KClcbiAqIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGludGVudGlvbmFsIGFuZCBzaG91bGQgbm90IGJlIGNoYW5nZWQuIFRoZXkncmVcbiAqIGRlc2lnbmVkIHRvIGZpdCB3aXRoIHRoZSBzdGFuZGFyZCBtZW51IGtleWJvYXJkIHNob3J0Y3V0cyBzaG93biBpbiB0aGVcbiAqIHVzZXIncyBwbGF0Zm9ybS5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgb24gTWFjT1MgbWVudSBzaG9ydGN1dHMgd2lsbCBwbGFjZSBTaGlmdCBiZWZvcmUgQ29tbWFuZCwgYnV0XG4gKiBvbiBXaW5kb3dzIENvbnRyb2wgd2lsbCB1c3VhbGx5IGNvbWUgZmlyc3QuIFNvIGRvbid0IHByb3ZpZGUgeW91ciBvd25cbiAqIHNob3J0Y3V0IGNvbWJvcyBkaXJlY3RseSB0byBrZXlib2FyZFNob3J0Y3V0KCkuXG4gKi9cblxuLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IHsgZ2V0LCBtYXBWYWx1ZXMsIGluY2x1ZGVzLCBjYXBpdGFsaXplLCB4b3IgfSBmcm9tICdsb2Rhc2gnO1xuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IHsgX18gfSBmcm9tICdAd29yZHByZXNzL2kxOG4nO1xuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuXG5pbXBvcnQgeyBpc0FwcGxlT1MgfSBmcm9tICcuL3BsYXRmb3JtJztcbi8qKlxuICogQHR5cGVkZWYgeydwcmltYXJ5J3wncHJpbWFyeVNoaWZ0J3wncHJpbWFyeUFsdCd8J3NlY29uZGFyeSd8J2FjY2Vzcyd8J2N0cmwnfCdhbHQnfCdjdHJsU2hpZnQnfCdzaGlmdCd8J3NoaWZ0QWx0J30gV1BLZXljb2RlTW9kaWZpZXJcbiAqL1xuXG4vKipcbiAqIEFuIG9iamVjdCBvZiBoYW5kbGVyIGZ1bmN0aW9ucyBmb3IgZWFjaCBvZiB0aGUgcG9zc2libGUgbW9kaWZpZXJcbiAqIGNvbWJpbmF0aW9ucy4gQSBoYW5kbGVyIHdpbGwgcmV0dXJuIGEgdmFsdWUgZm9yIGEgZ2l2ZW4ga2V5LlxuICpcbiAqIEB0eXBlZGVmIHtSZWNvcmQ8V1BLZXljb2RlTW9kaWZpZXIsIChrZXk6c3RyaW5nKT0+YW55Pn0gV1BLZXljb2RlSGFuZGxlckJ5TW9kaWZpZXJcbiAqL1xuXG4vKipcbiAqIEtleWNvZGUgZm9yIEJBQ0tTUEFDRSBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBCQUNLU1BBQ0UgPSA4O1xuLyoqXG4gKiBLZXljb2RlIGZvciBUQUIga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgVEFCID0gOTtcbi8qKlxuICogS2V5Y29kZSBmb3IgRU5URVIga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgRU5URVIgPSAxMztcbi8qKlxuICogS2V5Y29kZSBmb3IgRVNDQVBFIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIEVTQ0FQRSA9IDI3O1xuLyoqXG4gKiBLZXljb2RlIGZvciBTUEFDRSBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBTUEFDRSA9IDMyO1xuLyoqXG4gKiBLZXljb2RlIGZvciBMRUZUIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIExFRlQgPSAzNztcbi8qKlxuICogS2V5Y29kZSBmb3IgVVAga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgVVAgPSAzODtcbi8qKlxuICogS2V5Y29kZSBmb3IgUklHSFQga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgUklHSFQgPSAzOTtcbi8qKlxuICogS2V5Y29kZSBmb3IgRE9XTiBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBET1dOID0gNDA7XG4vKipcbiAqIEtleWNvZGUgZm9yIERFTEVURSBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBERUxFVEUgPSA0Njtcbi8qKlxuICogS2V5Y29kZSBmb3IgRjEwIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIEYxMCA9IDEyMTtcbi8qKlxuICogS2V5Y29kZSBmb3IgQUxUIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIEFMVCA9ICdhbHQnO1xuLyoqXG4gKiBLZXljb2RlIGZvciBDVFJMIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIENUUkwgPSAnY3RybCc7XG4vKipcbiAqIEtleWNvZGUgZm9yIENPTU1BTkQvTUVUQSBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBDT01NQU5EID0gJ21ldGEnO1xuLyoqXG4gKiBLZXljb2RlIGZvciBTSElGVCBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBTSElGVCA9ICdzaGlmdCc7XG4vKipcbiAqIEtleWNvZGUgZm9yIFpFUk8ga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgWkVSTyA9IDQ4O1xuLyoqXG4gKiBPYmplY3QgdGhhdCBjb250YWlucyBmdW5jdGlvbnMgdGhhdCByZXR1cm4gdGhlIGF2YWlsYWJsZSBtb2RpZmllclxuICogZGVwZW5kaW5nIG9uIHBsYXRmb3JtLlxuICpcbiAqIC0gYHByaW1hcnlgOiB0YWtlcyBhIGlzQXBwbGUgZnVuY3Rpb24gYXMgYSBwYXJhbWV0ZXIuXG4gKiAtIGBwcmltYXJ5U2hpZnRgOiB0YWtlcyBhIGlzQXBwbGUgZnVuY3Rpb24gYXMgYSBwYXJhbWV0ZXIuXG4gKiAtIGBwcmltYXJ5QWx0YDogdGFrZXMgYSBpc0FwcGxlIGZ1bmN0aW9uIGFzIGEgcGFyYW1ldGVyLlxuICogLSBgc2Vjb25kYXJ5YDogdGFrZXMgYSBpc0FwcGxlIGZ1bmN0aW9uIGFzIGEgcGFyYW1ldGVyLlxuICogLSBgYWNjZXNzYDogdGFrZXMgYSBpc0FwcGxlIGZ1bmN0aW9uIGFzIGEgcGFyYW1ldGVyLlxuICogLSBgY3RybGBcbiAqIC0gYGFsdGBcbiAqIC0gYGN0cmxTaGlmdGBcbiAqIC0gYHNoaWZ0YFxuICogLSBgc2hpZnRBbHRgXG4gKi9cblxuZXhwb3J0IHZhciBtb2RpZmllcnMgPSB7XG4gIHByaW1hcnk6IGZ1bmN0aW9uIHByaW1hcnkoX2lzQXBwbGUpIHtcbiAgICByZXR1cm4gX2lzQXBwbGUoKSA/IFtDT01NQU5EXSA6IFtDVFJMXTtcbiAgfSxcbiAgcHJpbWFyeVNoaWZ0OiBmdW5jdGlvbiBwcmltYXJ5U2hpZnQoX2lzQXBwbGUpIHtcbiAgICByZXR1cm4gX2lzQXBwbGUoKSA/IFtTSElGVCwgQ09NTUFORF0gOiBbQ1RSTCwgU0hJRlRdO1xuICB9LFxuICBwcmltYXJ5QWx0OiBmdW5jdGlvbiBwcmltYXJ5QWx0KF9pc0FwcGxlKSB7XG4gICAgcmV0dXJuIF9pc0FwcGxlKCkgPyBbQUxULCBDT01NQU5EXSA6IFtDVFJMLCBBTFRdO1xuICB9LFxuICBzZWNvbmRhcnk6IGZ1bmN0aW9uIHNlY29uZGFyeShfaXNBcHBsZSkge1xuICAgIHJldHVybiBfaXNBcHBsZSgpID8gW1NISUZULCBBTFQsIENPTU1BTkRdIDogW0NUUkwsIFNISUZULCBBTFRdO1xuICB9LFxuICBhY2Nlc3M6IGZ1bmN0aW9uIGFjY2VzcyhfaXNBcHBsZSkge1xuICAgIHJldHVybiBfaXNBcHBsZSgpID8gW0NUUkwsIEFMVF0gOiBbU0hJRlQsIEFMVF07XG4gIH0sXG4gIGN0cmw6IGZ1bmN0aW9uIGN0cmwoKSB7XG4gICAgcmV0dXJuIFtDVFJMXTtcbiAgfSxcbiAgYWx0OiBmdW5jdGlvbiBhbHQoKSB7XG4gICAgcmV0dXJuIFtBTFRdO1xuICB9LFxuICBjdHJsU2hpZnQ6IGZ1bmN0aW9uIGN0cmxTaGlmdCgpIHtcbiAgICByZXR1cm4gW0NUUkwsIFNISUZUXTtcbiAgfSxcbiAgc2hpZnQ6IGZ1bmN0aW9uIHNoaWZ0KCkge1xuICAgIHJldHVybiBbU0hJRlRdO1xuICB9LFxuICBzaGlmdEFsdDogZnVuY3Rpb24gc2hpZnRBbHQoKSB7XG4gICAgcmV0dXJuIFtTSElGVCwgQUxUXTtcbiAgfVxufTtcbi8qKlxuICogQW4gb2JqZWN0IHRoYXQgY29udGFpbnMgZnVuY3Rpb25zIHRvIGdldCByYXcgc2hvcnRjdXRzLlxuICogRS5nLiByYXdTaG9ydGN1dC5wcmltYXJ5KCAnbScgKSB3aWxsIHJldHVybiAnbWV0YSttJyBvbiBNYWMuXG4gKiBUaGVzZSBhcmUgaW50ZW5kZWQgZm9yIHVzZXIgd2l0aCB0aGUgS2V5Ym9hcmRTaG9ydGN1dHMgY29tcG9uZW50IG9yIFRpbnlNQ0UuXG4gKlxuICogQHR5cGUge1dQS2V5Y29kZUhhbmRsZXJCeU1vZGlmaWVyfSBLZXllZCBtYXAgb2YgZnVuY3Rpb25zIHRvIHJhdyBzaG9ydGN1dHMuXG4gKi9cblxuZXhwb3J0IHZhciByYXdTaG9ydGN1dCA9IG1hcFZhbHVlcyhtb2RpZmllcnMsIGZ1bmN0aW9uIChtb2RpZmllcikge1xuICByZXR1cm4gZnVuY3Rpb24gKGNoYXJhY3Rlcikge1xuICAgIHZhciBfaXNBcHBsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogaXNBcHBsZU9TO1xuXG4gICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkobW9kaWZpZXIoX2lzQXBwbGUpKSwgW2NoYXJhY3Rlci50b0xvd2VyQ2FzZSgpXSkuam9pbignKycpO1xuICB9O1xufSk7XG4vKipcbiAqIFJldHVybiBhbiBhcnJheSBvZiB0aGUgcGFydHMgb2YgYSBrZXlib2FyZCBzaG9ydGN1dCBjaG9yZCBmb3IgZGlzcGxheVxuICogRS5nIGRpc3BsYXlTaG9ydGN1dExpc3QucHJpbWFyeSggJ20nICkgd2lsbCByZXR1cm4gWyAn4oyYJywgJ00nIF0gb24gTWFjLlxuICpcbiAqIEB0eXBlIHtXUEtleWNvZGVIYW5kbGVyQnlNb2RpZmllcn0gS2V5ZWQgbWFwIG9mIGZ1bmN0aW9ucyB0byBzaG9ydGN1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZXMuXG4gKi9cblxuZXhwb3J0IHZhciBkaXNwbGF5U2hvcnRjdXRMaXN0ID0gbWFwVmFsdWVzKG1vZGlmaWVycywgZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoY2hhcmFjdGVyKSB7XG4gICAgdmFyIF9yZXBsYWNlbWVudEtleU1hcDtcblxuICAgIHZhciBfaXNBcHBsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogaXNBcHBsZU9TO1xuXG4gICAgdmFyIGlzQXBwbGUgPSBfaXNBcHBsZSgpO1xuXG4gICAgdmFyIHJlcGxhY2VtZW50S2V5TWFwID0gKF9yZXBsYWNlbWVudEtleU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3JlcGxhY2VtZW50S2V5TWFwLCBBTFQsIGlzQXBwbGUgPyAn4oylJyA6ICdBbHQnKSwgX2RlZmluZVByb3BlcnR5KF9yZXBsYWNlbWVudEtleU1hcCwgQ1RSTCwgaXNBcHBsZSA/ICdeJyA6ICdDdHJsJyksIF9kZWZpbmVQcm9wZXJ0eShfcmVwbGFjZW1lbnRLZXlNYXAsIENPTU1BTkQsICfijJgnKSwgX2RlZmluZVByb3BlcnR5KF9yZXBsYWNlbWVudEtleU1hcCwgU0hJRlQsIGlzQXBwbGUgPyAn4oenJyA6ICdTaGlmdCcpLCBfcmVwbGFjZW1lbnRLZXlNYXApO1xuICAgIHZhciBtb2RpZmllcktleXMgPSBtb2RpZmllcihfaXNBcHBsZSkucmVkdWNlKGZ1bmN0aW9uIChhY2N1bXVsYXRvciwga2V5KSB7XG4gICAgICB2YXIgcmVwbGFjZW1lbnRLZXkgPSBnZXQocmVwbGFjZW1lbnRLZXlNYXAsIGtleSwga2V5KTsgLy8gSWYgb24gdGhlIE1hYywgYWRoZXJlIHRvIHBsYXRmb3JtIGNvbnZlbnRpb24gYW5kIGRvbid0IHNob3cgcGx1cyBiZXR3ZWVuIGtleXMuXG5cbiAgICAgIGlmIChpc0FwcGxlKSB7XG4gICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGFjY3VtdWxhdG9yKSwgW3JlcGxhY2VtZW50S2V5XSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGFjY3VtdWxhdG9yKSwgW3JlcGxhY2VtZW50S2V5LCAnKyddKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIGNhcGl0YWxpemVkQ2hhcmFjdGVyID0gY2FwaXRhbGl6ZShjaGFyYWN0ZXIpO1xuICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KG1vZGlmaWVyS2V5cyksIFtjYXBpdGFsaXplZENoYXJhY3Rlcl0pO1xuICB9O1xufSk7XG4vKipcbiAqIEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBkaXNwbGF5IHNob3J0Y3V0cy5cbiAqIEUuZy4gZGlzcGxheVNob3J0Y3V0LnByaW1hcnkoICdtJyApIHdpbGwgcmV0dXJuICfijJhNJyBvbiBNYWMuXG4gKlxuICogQHR5cGUge1dQS2V5Y29kZUhhbmRsZXJCeU1vZGlmaWVyfSBLZXllZCBtYXAgb2YgZnVuY3Rpb25zIHRvIGRpc3BsYXlcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRjdXRzLlxuICovXG5cbmV4cG9ydCB2YXIgZGlzcGxheVNob3J0Y3V0ID0gbWFwVmFsdWVzKGRpc3BsYXlTaG9ydGN1dExpc3QsIGZ1bmN0aW9uIChzaG9ydGN1dExpc3QpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjaGFyYWN0ZXIpIHtcbiAgICB2YXIgX2lzQXBwbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGlzQXBwbGVPUztcblxuICAgIHJldHVybiBzaG9ydGN1dExpc3QoY2hhcmFjdGVyLCBfaXNBcHBsZSkuam9pbignJyk7XG4gIH07XG59KTtcbi8qKlxuICogQW4gb2JqZWN0IHRoYXQgY29udGFpbnMgZnVuY3Rpb25zIHRvIHJldHVybiBhbiBhcmlhIGxhYmVsIGZvciBhIGtleWJvYXJkIHNob3J0Y3V0LlxuICogRS5nLiBzaG9ydGN1dEFyaWFMYWJlbC5wcmltYXJ5KCAnLicgKSB3aWxsIHJldHVybiAnQ29tbWFuZCArIFBlcmlvZCcgb24gTWFjLlxuICpcbiAqIEB0eXBlIHtXUEtleWNvZGVIYW5kbGVyQnlNb2RpZmllcn0gS2V5ZWQgbWFwIG9mIGZ1bmN0aW9ucyB0byBzaG9ydGN1dCBBUklBXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscy5cbiAqL1xuXG5leHBvcnQgdmFyIHNob3J0Y3V0QXJpYUxhYmVsID0gbWFwVmFsdWVzKG1vZGlmaWVycywgZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoY2hhcmFjdGVyKSB7XG4gICAgdmFyIF9yZXBsYWNlbWVudEtleU1hcDI7XG5cbiAgICB2YXIgX2lzQXBwbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGlzQXBwbGVPUztcblxuICAgIHZhciBpc0FwcGxlID0gX2lzQXBwbGUoKTtcblxuICAgIHZhciByZXBsYWNlbWVudEtleU1hcCA9IChfcmVwbGFjZW1lbnRLZXlNYXAyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfcmVwbGFjZW1lbnRLZXlNYXAyLCBTSElGVCwgJ1NoaWZ0JyksIF9kZWZpbmVQcm9wZXJ0eShfcmVwbGFjZW1lbnRLZXlNYXAyLCBDT01NQU5ELCBpc0FwcGxlID8gJ0NvbW1hbmQnIDogJ0NvbnRyb2wnKSwgX2RlZmluZVByb3BlcnR5KF9yZXBsYWNlbWVudEtleU1hcDIsIENUUkwsICdDb250cm9sJyksIF9kZWZpbmVQcm9wZXJ0eShfcmVwbGFjZW1lbnRLZXlNYXAyLCBBTFQsIGlzQXBwbGUgPyAnT3B0aW9uJyA6ICdBbHQnKSwgX2RlZmluZVByb3BlcnR5KF9yZXBsYWNlbWVudEtleU1hcDIsICcsJywgX18oJ0NvbW1hJykpLCBfZGVmaW5lUHJvcGVydHkoX3JlcGxhY2VtZW50S2V5TWFwMiwgJy4nLCBfXygnUGVyaW9kJykpLCBfZGVmaW5lUHJvcGVydHkoX3JlcGxhY2VtZW50S2V5TWFwMiwgJ2AnLCBfXygnQmFja3RpY2snKSksIF9yZXBsYWNlbWVudEtleU1hcDIpO1xuICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KG1vZGlmaWVyKF9pc0FwcGxlKSksIFtjaGFyYWN0ZXJdKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIGNhcGl0YWxpemUoZ2V0KHJlcGxhY2VtZW50S2V5TWFwLCBrZXksIGtleSkpO1xuICAgIH0pLmpvaW4oaXNBcHBsZSA/ICcgJyA6ICcgKyAnKTtcbiAgfTtcbn0pO1xuLyoqXG4gKiBGcm9tIGEgZ2l2ZW4gS2V5Ym9hcmRFdmVudCwgcmV0dXJucyBhbiBhcnJheSBvZiBhY3RpdmUgbW9kaWZpZXIgY29uc3RhbnRzIGZvclxuICogdGhlIGV2ZW50LlxuICpcbiAqIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gZXZlbnQgS2V5Ym9hcmQgZXZlbnQuXG4gKlxuICogQHJldHVybiB7QXJyYXk8QUxUfENUUkx8Q09NTUFORHxTSElGVD59IEFjdGl2ZSBtb2RpZmllciBjb25zdGFudHMuXG4gKi9cblxuZnVuY3Rpb24gZ2V0RXZlbnRNb2RpZmllcnMoZXZlbnQpIHtcbiAgcmV0dXJuIFtBTFQsIENUUkwsIENPTU1BTkQsIFNISUZUXS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBldmVudFtcIlwiLmNvbmNhdChrZXksIFwiS2V5XCIpXTtcbiAgfSk7XG59XG4vKipcbiAqIEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBjaGVjayBpZiBhIGtleWJvYXJkIGV2ZW50IG1hdGNoZXMgYVxuICogcHJlZGVmaW5lZCBzaG9ydGN1dCBjb21iaW5hdGlvbi5cbiAqIEUuZy4gaXNLZXlib2FyZEV2ZW50LnByaW1hcnkoIGV2ZW50LCAnbScgKSB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSBldmVudFxuICogc2lnbmFscyBwcmVzc2luZyDijJhNLlxuICpcbiAqIEB0eXBlIHtXUEtleWNvZGVIYW5kbGVyQnlNb2RpZmllcn0gS2V5ZWQgbWFwIG9mIGZ1bmN0aW9ucyB0byBtYXRjaCBldmVudHMuXG4gKi9cblxuXG5leHBvcnQgdmFyIGlzS2V5Ym9hcmRFdmVudCA9IG1hcFZhbHVlcyhtb2RpZmllcnMsIGZ1bmN0aW9uIChnZXRNb2RpZmllcnMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCwgY2hhcmFjdGVyKSB7XG4gICAgdmFyIF9pc0FwcGxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBpc0FwcGxlT1M7XG5cbiAgICB2YXIgbW9kcyA9IGdldE1vZGlmaWVycyhfaXNBcHBsZSk7XG4gICAgdmFyIGV2ZW50TW9kcyA9IGdldEV2ZW50TW9kaWZpZXJzKGV2ZW50KTtcblxuICAgIGlmICh4b3IobW9kcywgZXZlbnRNb2RzKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWNoYXJhY3Rlcikge1xuICAgICAgcmV0dXJuIGluY2x1ZGVzKG1vZHMsIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnQua2V5ID09PSBjaGFyYWN0ZXI7XG4gIH07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBOztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n")},4:function(module,exports){eval("module.exports = window.wp.data;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5kYXRhXCI/YzQyMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5kYXRhOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4\n")},5:function(module,exports){eval("module.exports = window.wp.components;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5jb21wb25lbnRzXCI/NTQ0MSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5jb21wb25lbnRzOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///5\n")},7:function(module,exports){eval("module.exports = window.wp.blockEditor;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5ibG9ja0VkaXRvclwiPzllOGEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3cud3AuYmxvY2tFZGl0b3I7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n")},8:function(module,exports){eval("module.exports = React;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIlJlYWN0XCI/YzQ4MSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFJlYWN0OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")}},[[153,0]]]);