@openmrs/esm-app-shell 4.3.2-pre.678 → 4.3.2-pre.680

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/openmrs.js CHANGED
@@ -2601,7 +2601,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2601
2601
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2602
2602
 
2603
2603
  "use strict";
2604
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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NkwseUJBQXlCLGVBQWV6SyxpRUFBYUE7QUFFNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3JlYWN0L2VzL2NvbXBvbmVudHMvVGlsZS9UaWxlLmpzPzBjYTYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMTYsIDIwMjJcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IHsgaW5oZXJpdHMgYXMgX2luaGVyaXRzLCBjcmVhdGVTdXBlciBhcyBfY3JlYXRlU3VwZXIsIGNsYXNzQ2FsbENoZWNrIGFzIF9jbGFzc0NhbGxDaGVjaywgY3JlYXRlQ2xhc3MgYXMgX2NyZWF0ZUNsYXNzLCBvYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIGRlZmluZVByb3BlcnR5IGFzIF9kZWZpbmVQcm9wZXJ0eSwgZXh0ZW5kcyBhcyBfZXh0ZW5kcywgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIHNsaWNlZFRvQXJyYXkgYXMgX3NsaWNlZFRvQXJyYXkgfSBmcm9tICcuLi8uLi9fdmlydHVhbC9fcm9sbHVwUGx1Z2luQmFiZWxIZWxwZXJzLmpzJztcbmltcG9ydCBSZWFjdF9fZGVmYXVsdCwgeyBDb21wb25lbnQsIHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgTGluayBmcm9tICcuLi9MaW5rL0xpbmsuanMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDaGVja2VkRmlsbGVkLCBDaGVja2JveCwgQ2hldnJvbkRvd24gfSBmcm9tICdAY2FyYm9uL2ljb25zLXJlYWN0JztcbmltcG9ydCBkZXByZWNhdGUgZnJvbSAnLi4vLi4vcHJvcC10eXBlcy9kZXByZWNhdGUuanMnO1xuaW1wb3J0IHsgY29tcG9zZUV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi8uLi90b29scy9ldmVudHMuanMnO1xuaW1wb3J0IHsgUHJlZml4Q29udGV4dCwgdXNlUHJlZml4IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvdXNlUHJlZml4LmpzJztcbmltcG9ydCB7IG1hdGNoZXMgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9tYXRjaC5qcyc7XG5pbXBvcnQgeyBFbnRlciwgU3BhY2UgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9rZXlzLmpzJztcblxudmFyIF9DaGVja2JveENoZWNrZWRGaWxsZSwgX0NoZWNrYm94LCBfQ2hldnJvbkRvd247XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDIgPSBbXCJjaGlsZHJlblwiLCBcImhyZWZcIiwgXCJjbGFzc05hbWVcIiwgXCJoYW5kbGVDbGlja1wiLCBcImhhbmRsZUtleURvd25cIiwgXCJvbkNsaWNrXCIsIFwib25LZXlEb3duXCIsIFwiY2xpY2tlZFwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDMgPSBbXCJjaGlsZHJlblwiLCBcImlkXCIsIFwidGFiSW5kZXhcIiwgXCJ2YWx1ZVwiLCBcIm5hbWVcIiwgXCJ0aXRsZVwiLCBcImljb25EZXNjcmlwdGlvblwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbkNoYW5nZVwiLCBcIm9uS2V5RG93blwiLCBcImxpZ2h0XCIsIFwiZGlzYWJsZWRcIiwgXCJzZWxlY3RlZFwiXSxcbiAgICBfZXhjbHVkZWQ0ID0gW1widGFiSW5kZXhcIiwgXCJjbGFzc05hbWVcIiwgXCJleHBhbmRlZFwiLCBcInRpbGVNYXhIZWlnaHRcIiwgXCJ0aWxlUGFkZGluZ1wiLCBcImhhbmRsZUNsaWNrXCIsIFwib25LZXlVcFwiLCBcInRpbGVDb2xsYXBzZWRJY29uVGV4dFwiLCBcInRpbGVFeHBhbmRlZEljb25UZXh0XCIsIFwidGlsZUNvbGxhcHNlZExhYmVsXCIsIFwidGlsZUV4cGFuZGVkTGFiZWxcIiwgXCJvbkJlZm9yZUNsaWNrXCIsIFwibGlnaHRcIl07XG52YXIgVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVGlsZSwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUaWxlKTtcblxuICBmdW5jdGlvbiBUaWxlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICBsaWdodCA9IF90aGlzJHByb3BzLmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgICAgIHZhciB0aWxlQ2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICAgIGNsYXNzTmFtZTogdGlsZUNsYXNzZXNcbiAgICAgIH0sIHJlc3QpLCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2xcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIENsaWNrYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQyKSB7XG4gIF9pbmhlcml0cyhDbGlja2FibGVUaWxlLCBfQ29tcG9uZW50Mik7XG5cbiAgdmFyIF9zdXBlcjIgPSBfY3JlYXRlU3VwZXIoQ2xpY2thYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gQ2xpY2thYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2xpY2thYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIyLmNhbGwuYXBwbHkoX3N1cGVyMiwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2xpY2tlZDogIV90aGlzLnN0YXRlLmNsaWNrZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUNsaSwgX3RoaXMkcHJvcHMyLCBfdGhpcyRwcm9wcyRvbkNsaWNrLCBfdGhpcyRwcm9wczM7XG5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUNsaWNrIHByb3Agd2hlbiBoYW5kbGVDbGljayBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID0gKF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVDbGkuY2FsbChfdGhpcyRwcm9wczIsIGV2dCkpIHx8ICgoX3RoaXMkcHJvcHMkb25DbGljayA9IChfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkb25DbGljay5jYWxsKF90aGlzJHByb3BzMywgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVLZXlEb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleSwgX3RoaXMkcHJvcHM0O1xuXG4gICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUtleURvd24gcHJvcCB3aGVuIGhhbmRsZUtleURvd24gaXMgZGVwcmVjYXRlZFxuICAgICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5ID0gKF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUtleS5jYWxsKF90aGlzJHByb3BzNCwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleTIsIF90aGlzJHByb3BzNTtcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9IChfdGhpcyRwcm9wczUgPSBfdGhpcy5wcm9wcykuaGFuZGxlS2V5RG93bikgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5Mi5jYWxsKF90aGlzJHByb3BzNSwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ2xpY2thYmxlVGlsZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY3gyO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNi5jaGlsZHJlbixcbiAgICAgICAgICBocmVmID0gX3RoaXMkcHJvcHM2LmhyZWYsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM2LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmhhbmRsZUtleURvd247XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuY2xpY2tlZDtcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczYubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczYsIF9leGNsdWRlZDIpO1xuXG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWNsaWNrYWJsZVwiKSwgKF9jeDIgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLWNsaWNrZWRcIiksIHRoaXMuc3RhdGUuY2xpY2tlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gyLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3gyKSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChMaW5rLCBfZXh0ZW5kcyh7XG4gICAgICAgIGhyZWY6IGhyZWYsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlc1xuICAgICAgfSwgcmVzdCwge1xuICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5RG93blxuICAgICAgfSksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoX3JlZiwgc3RhdGUpIHtcbiAgICAgIHZhciBjbGlja2VkID0gX3JlZi5jbGlja2VkO1xuICAgICAgdmFyIHByZXZDbGlja2VkID0gc3RhdGUucHJldkNsaWNrZWQ7XG4gICAgICByZXR1cm4gcHJldkNsaWNrZWQgPT09IGNsaWNrZWQgPyBudWxsIDoge1xuICAgICAgICBjbGlja2VkOiBjbGlja2VkLFxuICAgICAgICBwcmV2Q2xpY2tlZDogY2xpY2tlZFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2xpY2thYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVLZXlEb3duIHByb3AgZm9yIENsaWNrYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbktleURvd24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgaHJlZiBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgcmVsIHByb3BlcnR5IGZvciB0aGUgbGluay5cbiAgICovXG4gIHJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBjbGlja2VkOiBmYWxzZSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9LFxuICBsaWdodDogZmFsc2Vcbn0pO1xuXG5mdW5jdGlvbiBTZWxlY3RhYmxlVGlsZShwcm9wcykge1xuICB2YXIgX2N4MztcblxuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGlkID0gcHJvcHMuaWQsXG4gICAgICB0YWJJbmRleCA9IHByb3BzLnRhYkluZGV4LFxuICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgIG5hbWUgPSBwcm9wcy5uYW1lLFxuICAgICAgdGl0bGUgPSBwcm9wcy50aXRsZTtcbiAgICAgIHByb3BzLmljb25EZXNjcmlwdGlvbjtcbiAgICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBoYW5kbGVDbGljayA9IHByb3BzLmhhbmRsZUNsaWNrLFxuICAgICAgaGFuZGxlS2V5RG93biA9IHByb3BzLmhhbmRsZUtleURvd24sXG4gICAgICBvbkNsaWNrID0gcHJvcHMub25DbGljayxcbiAgICAgIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsXG4gICAgICBvbktleURvd24gPSBwcm9wcy5vbktleURvd24sXG4gICAgICBsaWdodCA9IHByb3BzLmxpZ2h0LFxuICAgICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIHNlbGVjdGVkID0gcHJvcHMuc2VsZWN0ZWQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQzKTtcblxuICB2YXIgcHJlZml4ID0gdXNlUHJlZml4KCk7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbkNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGNsaWNrSGFuZGxlciA9IGhhbmRsZUNsaWNrIHx8IG9uQ2xpY2s7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbktleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIHZhciBrZXlEb3duSGFuZGxlciA9IGhhbmRsZUtleURvd24gfHwgb25LZXlEb3duO1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShzZWxlY3RlZCksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIGlzU2VsZWN0ZWQgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGlucHV0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLXNlbGVjdGFibGVcIiksIChfY3gzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1zZWxlY3RlZFwiKSwgaXNTZWxlY3RlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tZGlzYWJsZWRcIiksIGRpc2FibGVkKSwgX2N4MyksIGNsYXNzTmFtZSk7XG4gIHZhciBpbnB1dENsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWlucHV0XCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXQtLWNoZWNrZWRcIiksIGlzU2VsZWN0ZWQpKTsgLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25DbGljayhldnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQucGVyc2lzdCgpO1xuICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgIGNsaWNrSGFuZGxlcihldnQpO1xuICAgIG9uQ2hhbmdlKGV2dCk7XG4gIH0gLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUtleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25LZXlEb3duKGV2dCkge1xuICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfVxuXG4gICAga2V5RG93bkhhbmRsZXIoZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldmVudCkge1xuICAgIHNldElzU2VsZWN0ZWQoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgIG9uQ2hhbmdlKGV2ZW50KTtcbiAgfVxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgc2V0SXNTZWxlY3RlZChzZWxlY3RlZCk7XG4gIH0sIFtzZWxlY3RlZF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoUmVhY3RfX2RlZmF1bHQuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgIHJlZjogaW5wdXQsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIGlkOiBpZCxcbiAgICBjbGFzc05hbWU6IGlucHV0Q2xhc3NlcyxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgb25DaGFuZ2U6ICFkaXNhYmxlZCA/IGhhbmRsZUNoYW5nZSA6IG51bGwsXG4gICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiB0aXRsZSxcbiAgICBjaGVja2VkOiBpc1NlbGVjdGVkXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIF9leHRlbmRzKHtcbiAgICBodG1sRm9yOiBpZCxcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLXRhYmluZGV4XG4gICAgLFxuICAgIHRhYkluZGV4OiAhZGlzYWJsZWQgPyB0YWJJbmRleCA6IG51bGxcbiAgfSwgcmVzdCwge1xuICAgIG9uQ2xpY2s6ICFkaXNhYmxlZCA/IGhhbmRsZU9uQ2xpY2sgOiBudWxsLFxuICAgIG9uS2V5RG93bjogIWRpc2FibGVkID8gaGFuZGxlT25LZXlEb3duIDogbnVsbFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyayBcIikuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyay0tcGVyc2lzdGVudFwiKVxuICB9LCBpc1NlbGVjdGVkID8gX0NoZWNrYm94Q2hlY2tlZEZpbGxlIHx8IChfQ2hlY2tib3hDaGVja2VkRmlsbGUgPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveENoZWNrZWRGaWxsZWQsIG51bGwpKSA6IF9DaGVja2JveCB8fCAoX0NoZWNrYm94ID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIG51bGwpKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgfSwgY2hpbGRyZW4pKSk7XG59XG5TZWxlY3RhYmxlVGlsZS5kZWZhdWx0UHJvcHMgPSB7XG4gIHZhbHVlOiAndmFsdWUnLFxuICB0aXRsZTogJ3RpdGxlJyxcbiAgc2VsZWN0ZWQ6IGZhbHNlLFxuICB0YWJJbmRleDogMCxcbiAgbGlnaHQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9XG59O1xuU2VsZWN0YWJsZVRpbGUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdGhlIFNlbGVjdGFibGVUaWxlIHNob3VsZCBiZSBkaXNhYmxlZFxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlQ2xpY2tgIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25DbGlja2AuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgYGhhbmRsZUtleURvd25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25LZXlEb3duYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY2hlY2ttYXJrIGljb24uXG4gICAqL1xuICBpY29uRGVzY3JpcHRpb246IGRlcHJlY2F0ZShQcm9wVHlwZXMuc3RyaW5nLCAnVGhlIGBpY29uRGVzY3JpcHRpb25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgaGFzICcgKyAnYmVlbiBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVGhlIGBuYW1lYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGVtcHR5IGhhbmRsZXIgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gc2VsZWN0IHRoaXMgdGlsZS5cbiAgICovXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgdGFiIGluZGV4IG9mIHRoZSB3cmFwcGVyIGVsZW1lbnRcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgYHRpdGxlYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKS5pc1JlcXVpcmVkXG59O1xudmFyIEV4cGFuZGFibGVUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50Mykge1xuICBfaW5oZXJpdHMoRXhwYW5kYWJsZVRpbGUsIF9Db21wb25lbnQzKTtcblxuICB2YXIgX3N1cGVyMyA9IF9jcmVhdGVTdXBlcihFeHBhbmRhYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gRXhwYW5kYWJsZVRpbGUoKSB7XG4gICAgdmFyIF90aGlzMjtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFeHBhbmRhYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICBfdGhpczIgPSBfc3VwZXIzLmNhbGwuYXBwbHkoX3N1cGVyMywgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInN0YXRlXCIsIHt9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwicmVzaXplT2JzZXJ2ZXJcIiwgbnVsbCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImNvbXBvbmVudERpZE1vdW50XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgICB2YXIgX2VudHJpZXMgPSBfc2xpY2VkVG9BcnJheShlbnRyaWVzLCAxKSxcbiAgICAgICAgICAgIGFib3ZlVGhlRm9sZCA9IF9lbnRyaWVzWzBdO1xuXG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogYWJvdmVUaGVGb2xkLmNvbnRlbnRSZWN0LmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoX3RoaXMyLnRpbGUpIHtcbiAgICAgICAgdmFyIGdldFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoX3RoaXMyLnRpbGUsIG51bGwpO1xuXG4gICAgICAgIGlmIChfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoX3RoaXMyLmFib3ZlVGhlRm9sZCk7XG5cbiAgICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLmFib3ZlVGhlRm9sZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgICAgICB0aWxlUGFkZGluZzogcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKSwgMTApICsgcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1ib3R0b20nKSwgMTApXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkVXBkYXRlXCIsIGZ1bmN0aW9uIChwcmV2UHJvcHMpIHtcbiAgICAgIGlmIChwcmV2UHJvcHMuZXhwYW5kZWQgIT09IF90aGlzMi5wcm9wcy5leHBhbmRlZCkge1xuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInNldE1heEhlaWdodFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50IDogX3RoaXMyLmFib3ZlVGhlRm9sZCkge1xuICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IF90aGlzMi5zdGF0ZS5leHBhbmRlZCA/IF90aGlzMi50aWxlQ29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgOiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKCFfdGhpczIucHJvcHMub25CZWZvcmVDbGljayhldnQpIHx8IGV2dC50YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgIGV4cGFuZGVkOiAhX3RoaXMyLnN0YXRlLmV4cGFuZGVkXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpczIkcHJvcHMkaGFuZGxlQ2wsIF90aGlzMiRwcm9wcywgX3RoaXMyJHByb3BzJG9uQ2xpY2ssIF90aGlzMiRwcm9wczI7XG5cbiAgICAgICAgX3RoaXMyLnNldE1heEhlaWdodCgpOyAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcblxuXG4gICAgICAgICgoX3RoaXMyJHByb3BzJGhhbmRsZUNsID0gKF90aGlzMiRwcm9wcyA9IF90aGlzMi5wcm9wcykuaGFuZGxlQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRoYW5kbGVDbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHByb3BzJGhhbmRsZUNsLmNhbGwoX3RoaXMyJHByb3BzLCBldnQpKSB8fCAoKF90aGlzMiRwcm9wcyRvbkNsaWNrID0gKF90aGlzMiRwcm9wczIgPSBfdGhpczIucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkb25DbGljay5jYWxsKF90aGlzMiRwcm9wczIsIGV2dCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImhhbmRsZUtleVVwXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmIChldnQudGFyZ2V0ICE9PSBfdGhpczIudGlsZSkge1xuICAgICAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImdldENoaWxkcmVuXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBSZWFjdF9fZGVmYXVsdC5DaGlsZHJlbi50b0FycmF5KF90aGlzMi5wcm9wcy5jaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXMyO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEV4cGFuZGFibGVUaWxlLCBbe1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDUsXG4gICAgICAgICAgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgdGFiSW5kZXggPSBfdGhpcyRwcm9wczcudGFiSW5kZXgsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM3LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczcuZXhwYW5kZWQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVNYXhIZWlnaHQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVQYWRkaW5nO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5oYW5kbGVDbGljaztcbiAgICAgICAgICB2YXIgb25LZXlVcCA9IF90aGlzJHByb3BzNy5vbktleVVwLFxuICAgICAgICAgIHRpbGVDb2xsYXBzZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlQ29sbGFwc2VkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUV4cGFuZGVkSWNvblRleHQgPSBfdGhpcyRwcm9wczcudGlsZUV4cGFuZGVkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRMYWJlbCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRMYWJlbCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRMYWJlbDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcub25CZWZvcmVDbGljaztcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczcubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczcsIF9leGNsdWRlZDQpO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGlzRXhwYW5kZWQgPSB0aGlzLnN0YXRlLmV4cGFuZGVkO1xuICAgICAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1leHBhbmRhYmxlXCIpLCAoX2N4NSA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtZXhwYW5kZWRcIiksIGlzRXhwYW5kZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2N4NSksIGNsYXNzTmFtZSk7XG4gICAgICB2YXIgdGlsZVN0eWxlID0ge1xuICAgICAgICBtYXhIZWlnaHQ6IGlzRXhwYW5kZWQgPyBudWxsIDogdGhpcy5zdGF0ZS50aWxlTWF4SGVpZ2h0ICsgdGhpcy5zdGF0ZS50aWxlUGFkZGluZ1xuICAgICAgfTtcbiAgICAgIHZhciBjaGlsZHJlbkFzQXJyYXkgPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIF9leHRlbmRzKHtcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGUpIHtcbiAgICAgICAgICAgIF90aGlzMy50aWxlID0gdGlsZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0eWxlOiB0aWxlU3R5bGUsXG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLFxuICAgICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBpc0V4cGFuZGVkLFxuICAgICAgICAgIHRpdGxlOiBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkSWNvblRleHQgOiB0aWxlQ29sbGFwc2VkSWNvblRleHRcbiAgICAgICAgfSwgcmVzdCwge1xuICAgICAgICAgIG9uS2V5VXA6IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtvbktleVVwLCB0aGlzLmhhbmRsZUtleVVwXSksXG4gICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgICB0YWJJbmRleDogdGFiSW5kZXhcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZih0aWxlQ29udGVudCkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGVDb250ZW50ID0gdGlsZUNvbnRlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYoYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgICBfdGhpczMuYWJvdmVUaGVGb2xkID0gYWJvdmVUaGVGb2xkO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzBdKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hldnJvblwiKVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgaXNFeHBhbmRlZCA/IHRpbGVFeHBhbmRlZExhYmVsIDogdGlsZUNvbGxhcHNlZExhYmVsKSwgX0NoZXZyb25Eb3duIHx8IChfQ2hldnJvbkRvd24gPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGV2cm9uRG93biwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gICAgICAgIH0sIGNoaWxkcmVuQXNBcnJheVsxXSkpKVxuICAgICAgKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIF9yZWYyLCBzdGF0ZSkge1xuICAgICAgdmFyIGV4cGFuZGVkID0gX3JlZjIuZXhwYW5kZWQsXG4gICAgICAgICAgdGlsZU1heEhlaWdodCA9IF9yZWYyLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgdGlsZVBhZGRpbmcgPSBfcmVmMi50aWxlUGFkZGluZztcbiAgICAgIHZhciBwcmV2RXhwYW5kZWQgPSBzdGF0ZS5wcmV2RXhwYW5kZWQsXG4gICAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQgPSBzdGF0ZS5wcmV2VGlsZU1heEhlaWdodCxcbiAgICAgICAgICBwcmV2VGlsZVBhZGRpbmcgPSBzdGF0ZS5wcmV2VGlsZVBhZGRpbmcsXG4gICAgICAgICAgY3VycmVudEV4cGFuZGVkID0gc3RhdGUuZXhwYW5kZWQsXG4gICAgICAgICAgY3VycmVudFRpbGVNYXhIZWlnaHQgPSBzdGF0ZS50aWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIGN1cnJlbnRUaWxlUGFkZGluZyA9IHN0YXRlLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIGV4cGFuZGVkQ2hhbmdlZCA9IHByZXZFeHBhbmRlZCAhPT0gZXhwYW5kZWQ7XG4gICAgICB2YXIgdGlsZU1heEhlaWdodENoYW5nZWQgPSBwcmV2VGlsZU1heEhlaWdodCAhPT0gdGlsZU1heEhlaWdodDtcbiAgICAgIHZhciB0aWxlUGFkZGluZ0NoYW5nZWQgPSBwcmV2VGlsZVBhZGRpbmcgIT09IHRpbGVQYWRkaW5nO1xuICAgICAgcmV0dXJuICFleHBhbmRlZENoYW5nZWQgJiYgIXRpbGVNYXhIZWlnaHRDaGFuZ2VkICYmICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBudWxsIDoge1xuICAgICAgICBleHBhbmRlZDogIWV4cGFuZGVkQ2hhbmdlZCA/IGN1cnJlbnRFeHBhbmRlZCA6IGV4cGFuZGVkLFxuICAgICAgICB0aWxlTWF4SGVpZ2h0OiAhdGlsZU1heEhlaWdodENoYW5nZWQgPyBjdXJyZW50VGlsZU1heEhlaWdodCA6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHRpbGVQYWRkaW5nOiAhdGlsZVBhZGRpbmdDaGFuZ2VkID8gY3VycmVudFRpbGVQYWRkaW5nIDogdGlsZVBhZGRpbmcsXG4gICAgICAgIHByZXZFeHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICAgIHByZXZUaWxlTWF4SGVpZ2h0OiB0aWxlTWF4SGVpZ2h0LFxuICAgICAgICBwcmV2VGlsZVBhZGRpbmc6IHRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBFeHBhbmRhYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCBpZiB0aGUgdGlsZSBpcyBleHBhbmRlZC5cbiAgICovXG4gIGV4cGFuZGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgRXhwYW5kYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbkNsaWNrLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogQW4gSUQgdGhhdCBjYW4gYmUgcHJvdmlkZWQgdG8gYXJpYS1sYWJlbGxlZGJ5XG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byBkZWNpZGUgd2hldGhlciB0byBpZ25vcmUgYSBjbGljay4gcmV0dXJucyBmYWxzZSBpZiBjbGljayBzaG91bGQgYmUgaWdub3JlZFxuICAgKi9cbiAgb25CZWZvcmVDbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBFeHBhbmRhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9wdGlvbmFsIGhhbmRsZXIgdG8gdHJpZ2dlciBhIGZ1bmN0aW9uIHdoZW4gYSBrZXkgaXMgcHJlc3NlZFxuICAgKi9cbiAgb25LZXlVcDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGFiaW5kZXhgIGF0dHJpYnV0ZS5cbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiY29sbGFwc2VkXCIgaWNvbiB0aGF0IGNhbiBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiY29sbGFwc2VkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBtb3JlXCIpLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiZXhwYW5kZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRJY29uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogV2hlbiBcImV4cGFuZGVkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBsZXNzXCIpLlxuICAgKi9cbiAgdGlsZUV4cGFuZGVkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmdcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICB0YWJJbmRleDogMCxcbiAgZXhwYW5kZWQ6IGZhbHNlLFxuICB0aWxlTWF4SGVpZ2h0OiAwLFxuICB0aWxlUGFkZGluZzogMCxcbiAgb25CZWZvcmVDbGljazogZnVuY3Rpb24gb25CZWZvcmVDbGljaygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBleHBhbmQgVGlsZScsXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiAnSW50ZXJhY3QgdG8gY29sbGFwc2UgVGlsZScsXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbnZhciBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDQpIHtcbiAgX2luaGVyaXRzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBfQ29tcG9uZW50NCk7XG5cbiAgdmFyIF9zdXBlcjQgPSBfY3JlYXRlU3VwZXIoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQpO1xuXG4gIGZ1bmN0aW9uIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgICByZXR1cm4gX3N1cGVyNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRfX2Fib3ZlLXRoZS1mb2xkXCIpXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxudmFyIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NSkge1xuICBfaW5oZXJpdHMoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ1KTtcblxuICB2YXIgX3N1cGVyNSA9IF9jcmVhdGVTdXBlcihUaWxlQmVsb3dUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI1LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYmVsb3ctdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5leHBvcnQgeyBDbGlja2FibGVUaWxlLCBFeHBhbmRhYmxlVGlsZSwgU2VsZWN0YWJsZVRpbGUsIFRpbGUsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCB9O1xuIl0sIm5hbWVzIjpbImluaGVyaXRzIiwiX2luaGVyaXRzIiwiY3JlYXRlU3VwZXIiLCJfY3JlYXRlU3VwZXIiLCJjbGFzc0NhbGxDaGVjayIsIl9jbGFzc0NhbGxDaGVjayIsImNyZWF0ZUNsYXNzIiwiX2NyZWF0ZUNsYXNzIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9kZWZpbmVQcm9wZXJ0eSIsImV4dGVuZHMiLCJfZXh0ZW5kcyIsImFzc2VydFRoaXNJbml0aWFsaXplZCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJzbGljZWRUb0FycmF5IiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdF9fZGVmYXVsdCIsIkNvbXBvbmVudCIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiUHJvcFR5cGVzIiwiY3giLCJMaW5rIiwiQ2hlY2tib3hDaGVja2VkRmlsbGVkIiwiQ2hlY2tib3giLCJDaGV2cm9uRG93biIsImRlcHJlY2F0ZSIsImNvbXBvc2VFdmVudEhhbmRsZXJzIiwiUHJlZml4Q29udGV4dCIsInVzZVByZWZpeCIsIm1hdGNoZXMiLCJFbnRlciIsIlNwYWNlIiwiX0NoZWNrYm94Q2hlY2tlZEZpbGxlIiwiX0NoZWNrYm94IiwiX0NoZXZyb25Eb3duIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9leGNsdWRlZDMiLCJfZXhjbHVkZWQ0IiwiVGlsZSIsIl9Db21wb25lbnQiLCJfc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsImtleSIsInZhbHVlIiwicmVuZGVyIiwicHJlZml4IiwiY29udGV4dCIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImxpZ2h0IiwicmVzdCIsInRpbGVDbGFzc2VzIiwiY29uY2F0IiwiY3JlYXRlRWxlbWVudCIsIm5vZGUiLCJzdHJpbmciLCJib29sIiwiQ2xpY2thYmxlVGlsZSIsIl9Db21wb25lbnQyIiwiX3N1cGVyMiIsIl90aGlzIiwiX2xlbiIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiZXZ0IiwicGVyc2lzdCIsInNldFN0YXRlIiwiY2xpY2tlZCIsInN0YXRlIiwiX3RoaXMkcHJvcHMkaGFuZGxlQ2xpIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMkb25DbGljayIsIl90aGlzJHByb3BzMyIsImhhbmRsZUNsaWNrIiwib25DbGljayIsIl90aGlzJHByb3BzJGhhbmRsZUtleSIsIl90aGlzJHByb3BzNCIsImhhbmRsZUtleURvd24iLCJvbktleURvd24iLCJfdGhpcyRwcm9wcyRoYW5kbGVLZXkyIiwiX3RoaXMkcHJvcHM1IiwiX2N4MiIsIl90aGlzJHByb3BzNiIsImhyZWYiLCJjbGFzc2VzIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiX3JlZiIsInByZXZDbGlja2VkIiwiZnVuYyIsInJlbCIsIlNlbGVjdGFibGVUaWxlIiwiaGFuZGxlT25DbGljayIsInByZXZlbnREZWZhdWx0Iiwic2V0SXNTZWxlY3RlZCIsImlzU2VsZWN0ZWQiLCJjbGlja0hhbmRsZXIiLCJvbkNoYW5nZSIsImhhbmRsZU9uS2V5RG93biIsImtleURvd25IYW5kbGVyIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjaGVja2VkIiwiX2N4MyIsImlkIiwidGFiSW5kZXgiLCJuYW1lIiwidGl0bGUiLCJpY29uRGVzY3JpcHRpb24iLCJkaXNhYmxlZCIsInNlbGVjdGVkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImlucHV0IiwiaW5wdXRDbGFzc2VzIiwiRnJhZ21lbnQiLCJyZWYiLCJ0eXBlIiwiaHRtbEZvciIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIm51bWJlciIsIm9uZU9mVHlwZSIsImlzUmVxdWlyZWQiLCJFeHBhbmRhYmxlVGlsZSIsIl9Db21wb25lbnQzIiwiX3N1cGVyMyIsIl90aGlzMiIsIl9sZW4yIiwiX2tleTIiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsIl9lbnRyaWVzIiwiYWJvdmVUaGVGb2xkIiwidGlsZU1heEhlaWdodCIsImNvbnRlbnRSZWN0IiwiaGVpZ2h0IiwidGlsZSIsImdldFN0eWxlIiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm9ic2VydmUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0aWxlUGFkZGluZyIsInBhcnNlSW50IiwiZ2V0UHJvcGVydHlWYWx1ZSIsInByZXZQcm9wcyIsImV4cGFuZGVkIiwic2V0TWF4SGVpZ2h0IiwidGlsZUNvbnRlbnQiLCJvbkJlZm9yZUNsaWNrIiwidGFnTmFtZSIsIl90aGlzMiRwcm9wcyRoYW5kbGVDbCIsIl90aGlzMiRwcm9wcyIsIl90aGlzMiRwcm9wcyRvbkNsaWNrIiwiX3RoaXMyJHByb3BzMiIsIkNoaWxkcmVuIiwidG9BcnJheSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiZGlzY29ubmVjdCIsIl9jeDUiLCJfdGhpczMiLCJfdGhpcyRwcm9wczciLCJvbktleVVwIiwidGlsZUNvbGxhcHNlZEljb25UZXh0IiwidGlsZUV4cGFuZGVkSWNvblRleHQiLCJ0aWxlQ29sbGFwc2VkTGFiZWwiLCJ0aWxlRXhwYW5kZWRMYWJlbCIsImlzRXhwYW5kZWQiLCJ0aWxlU3R5bGUiLCJtYXhIZWlnaHQiLCJjaGlsZHJlbkFzQXJyYXkiLCJnZXRDaGlsZHJlbiIsInN0eWxlIiwiaGFuZGxlS2V5VXAiLCJfcmVmMiIsInByZXZFeHBhbmRlZCIsInByZXZUaWxlTWF4SGVpZ2h0IiwicHJldlRpbGVQYWRkaW5nIiwiY3VycmVudEV4cGFuZGVkIiwiY3VycmVudFRpbGVNYXhIZWlnaHQiLCJjdXJyZW50VGlsZVBhZGRpbmciLCJleHBhbmRlZENoYW5nZWQiLCJ0aWxlTWF4SGVpZ2h0Q2hhbmdlZCIsInRpbGVQYWRkaW5nQ2hhbmdlZCIsIlRpbGVBYm92ZVRoZUZvbGRDb250ZW50IiwiX0NvbXBvbmVudDQiLCJfc3VwZXI0IiwiVGlsZUJlbG93VGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NSIsIl9zdXBlcjUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
2604
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n (// TODO: Remove handleClick prop when handleClick is deprecated\n (_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n (// TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n (_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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QUM2TCx5QkFBeUIsZUFBZXpLLGlFQUFhQTtBQUU0QyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanM/MGNhNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxNiwgMjAyMlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgeyBpbmhlcml0cyBhcyBfaW5oZXJpdHMsIGNyZWF0ZVN1cGVyIGFzIF9jcmVhdGVTdXBlciwgY2xhc3NDYWxsQ2hlY2sgYXMgX2NsYXNzQ2FsbENoZWNrLCBjcmVhdGVDbGFzcyBhcyBfY3JlYXRlQ2xhc3MsIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGFzIF9vYmplY3RXaXRob3V0UHJvcGVydGllcywgZGVmaW5lUHJvcGVydHkgYXMgX2RlZmluZVByb3BlcnR5LCBleHRlbmRzIGFzIF9leHRlbmRzLCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgYXMgX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgc2xpY2VkVG9BcnJheSBhcyBfc2xpY2VkVG9BcnJheSB9IGZyb20gJy4uLy4uL192aXJ0dWFsL19yb2xsdXBQbHVnaW5CYWJlbEhlbHBlcnMuanMnO1xuaW1wb3J0IFJlYWN0X19kZWZhdWx0LCB7IENvbXBvbmVudCwgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBMaW5rIGZyb20gJy4uL0xpbmsvTGluay5qcyc7XG5pbXBvcnQgeyBDaGVja2JveENoZWNrZWRGaWxsZWQsIENoZWNrYm94LCBDaGV2cm9uRG93biB9IGZyb20gJ0BjYXJib24vaWNvbnMtcmVhY3QnO1xuaW1wb3J0IGRlcHJlY2F0ZSBmcm9tICcuLi8uLi9wcm9wLXR5cGVzL2RlcHJlY2F0ZS5qcyc7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gJy4uLy4uL3Rvb2xzL2V2ZW50cy5qcyc7XG5pbXBvcnQgeyBQcmVmaXhDb250ZXh0LCB1c2VQcmVmaXggfSBmcm9tICcuLi8uLi9pbnRlcm5hbC91c2VQcmVmaXguanMnO1xuaW1wb3J0IHsgbWF0Y2hlcyB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL21hdGNoLmpzJztcbmltcG9ydCB7IEVudGVyLCBTcGFjZSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL2tleXMuanMnO1xuXG52YXIgX0NoZWNrYm94Q2hlY2tlZEZpbGxlLCBfQ2hlY2tib3gsIF9DaGV2cm9uRG93bjtcblxudmFyIF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMiA9IFtcImNoaWxkcmVuXCIsIFwiaHJlZlwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbktleURvd25cIiwgXCJjbGlja2VkXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMyA9IFtcImNoaWxkcmVuXCIsIFwiaWRcIiwgXCJ0YWJJbmRleFwiLCBcInZhbHVlXCIsIFwibmFtZVwiLCBcInRpdGxlXCIsIFwiaWNvbkRlc2NyaXB0aW9uXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJoYW5kbGVLZXlEb3duXCIsIFwib25DbGlja1wiLCBcIm9uQ2hhbmdlXCIsIFwib25LZXlEb3duXCIsIFwibGlnaHRcIiwgXCJkaXNhYmxlZFwiLCBcInNlbGVjdGVkXCJdLFxuICAgIF9leGNsdWRlZDQgPSBbXCJ0YWJJbmRleFwiLCBcImNsYXNzTmFtZVwiLCBcImV4cGFuZGVkXCIsIFwidGlsZU1heEhlaWdodFwiLCBcInRpbGVQYWRkaW5nXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJvbktleVVwXCIsIFwidGlsZUNvbGxhcHNlZEljb25UZXh0XCIsIFwidGlsZUV4cGFuZGVkSWNvblRleHRcIiwgXCJ0aWxlQ29sbGFwc2VkTGFiZWxcIiwgXCJ0aWxlRXhwYW5kZWRMYWJlbFwiLCBcIm9uQmVmb3JlQ2xpY2tcIiwgXCJsaWdodFwiXTtcbnZhciBUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhUaWxlLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFRpbGUpO1xuXG4gIGZ1bmN0aW9uIFRpbGUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGUpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIGxpZ2h0ID0gX3RoaXMkcHJvcHMubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wcywgX2V4Y2x1ZGVkKTtcblxuICAgICAgdmFyIHRpbGVDbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aWxlQ2xhc3Nlc1xuICAgICAgfSwgcmVzdCksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbFxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBsaWdodDogZmFsc2Vcbn0pO1xuXG52YXIgQ2xpY2thYmxlVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDIpIHtcbiAgX2luaGVyaXRzKENsaWNrYWJsZVRpbGUsIF9Db21wb25lbnQyKTtcblxuICB2YXIgX3N1cGVyMiA9IF9jcmVhdGVTdXBlcihDbGlja2FibGVUaWxlKTtcblxuICBmdW5jdGlvbiBDbGlja2FibGVUaWxlKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDbGlja2FibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlcjIuY2FsbC5hcHBseShfc3VwZXIyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpLCBfdGhpcyRwcm9wczIsIF90aGlzJHByb3BzJG9uQ2xpY2ssIF90aGlzJHByb3BzMztcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPSAoX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMpLmhhbmRsZUNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUNsaS5jYWxsKF90aGlzJHByb3BzMiwgZXZ0KSkgfHwgKChfdGhpcyRwcm9wcyRvbkNsaWNrID0gKF90aGlzJHByb3BzMyA9IF90aGlzLnByb3BzKS5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMkcHJvcHMzLCBldnQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUtleURvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGNsaWNrZWQ6ICFfdGhpcy5zdGF0ZS5jbGlja2VkXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5LCBfdGhpcyRwcm9wczQ7XG5cbiAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPSAoX3RoaXMkcHJvcHM0ID0gX3RoaXMucHJvcHMpLmhhbmRsZUtleURvd24pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUtleSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5LmNhbGwoX3RoaXMkcHJvcHM0LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiwgX3RoaXMkcHJvcHM1O1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVLZXlEb3duIHByb3Agd2hlbiBoYW5kbGVLZXlEb3duIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID0gKF90aGlzJHByb3BzNSA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyLmNhbGwoX3RoaXMkcHJvcHM1LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDbGlja2FibGVUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDI7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczYgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHM2LmNoaWxkcmVuLFxuICAgICAgICAgIGhyZWYgPSBfdGhpcyRwcm9wczYuaHJlZixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczYuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5oYW5kbGVDbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25DbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25LZXlEb3duO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5jbGlja2VkO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNi5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNiwgX2V4Y2x1ZGVkMik7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tY2xpY2thYmxlXCIpLCAoX2N4MiA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4MiwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtY2xpY2tlZFwiKSwgdGhpcy5zdGF0ZS5jbGlja2VkKSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9jeDIpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KExpbmssIF9leHRlbmRzKHtcbiAgICAgICAgaHJlZjogaHJlZixcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzXG4gICAgICB9LCByZXN0LCB7XG4gICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duXG4gICAgICB9KSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhfcmVmLCBzdGF0ZSkge1xuICAgICAgdmFyIGNsaWNrZWQgPSBfcmVmLmNsaWNrZWQ7XG4gICAgICB2YXIgcHJldkNsaWNrZWQgPSBzdGF0ZS5wcmV2Q2xpY2tlZDtcbiAgICAgIHJldHVybiBwcmV2Q2xpY2tlZCA9PT0gY2xpY2tlZCA/IG51bGwgOiB7XG4gICAgICAgIGNsaWNrZWQ6IGNsaWNrZWQsXG4gICAgICAgIHByZXZDbGlja2VkOiBjbGlja2VkXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDbGlja2FibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBDbGlja2FibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25DbGljay4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUtleURvd24gcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uS2V5RG93bi4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBocmVmIGZvciB0aGUgbGluay5cbiAgICovXG4gIGhyZWY6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSByZWwgcHJvcGVydHkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGNsaWNrZWQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge30sXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbmZ1bmN0aW9uIFNlbGVjdGFibGVUaWxlKHByb3BzKSB7XG4gIHZhciBfY3gzO1xuXG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgaWQgPSBwcm9wcy5pZCxcbiAgICAgIHRhYkluZGV4ID0gcHJvcHMudGFiSW5kZXgsXG4gICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlLFxuICAgICAgbmFtZSA9IHByb3BzLm5hbWUsXG4gICAgICB0aXRsZSA9IHByb3BzLnRpdGxlO1xuICAgICAgcHJvcHMuaWNvbkRlc2NyaXB0aW9uO1xuICAgICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIGhhbmRsZUNsaWNrID0gcHJvcHMuaGFuZGxlQ2xpY2ssXG4gICAgICBoYW5kbGVLZXlEb3duID0gcHJvcHMuaGFuZGxlS2V5RG93bixcbiAgICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLFxuICAgICAgb25DaGFuZ2UgPSBwcm9wcy5vbkNoYW5nZSxcbiAgICAgIG9uS2V5RG93biA9IHByb3BzLm9uS2V5RG93bixcbiAgICAgIGxpZ2h0ID0gcHJvcHMubGlnaHQsXG4gICAgICBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLFxuICAgICAgc2VsZWN0ZWQgPSBwcm9wcy5zZWxlY3RlZCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZDMpO1xuXG4gIHZhciBwcmVmaXggPSB1c2VQcmVmaXgoKTsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICB2YXIgY2xpY2tIYW5kbGVyID0gaGFuZGxlQ2xpY2sgfHwgb25DbGljazsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGtleURvd25IYW5kbGVyID0gaGFuZGxlS2V5RG93biB8fCBvbktleURvd247XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHNlbGVjdGVkKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgaXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRJc1NlbGVjdGVkID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgaW5wdXQgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tc2VsZWN0YWJsZVwiKSwgKF9jeDMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLXNlbGVjdGVkXCIpLCBpc1NlbGVjdGVkKSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1kaXNhYmxlZFwiKSwgZGlzYWJsZWQpLCBfY3gzKSwgY2xhc3NOYW1lKTtcbiAgdmFyIGlucHV0Q2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXRcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1pbnB1dC0tY2hlY2tlZFwiKSwgaXNTZWxlY3RlZCkpOyAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICBmdW5jdGlvbiBoYW5kbGVPbkNsaWNrKGV2dCkge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5wZXJzaXN0KCk7XG4gICAgc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCk7XG4gICAgY2xpY2tIYW5kbGVyKGV2dCk7XG4gICAgb25DaGFuZ2UoZXZ0KTtcbiAgfSAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cblxuICBmdW5jdGlvbiBoYW5kbGVPbktleURvd24oZXZ0KSB7XG4gICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9XG5cbiAgICBrZXlEb3duSGFuZGxlcihldnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgc2V0SXNTZWxlY3RlZChldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgb25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBzZXRJc1NlbGVjdGVkKHNlbGVjdGVkKTtcbiAgfSwgW3NlbGVjdGVkXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChSZWFjdF9fZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgcmVmOiBpbnB1dCxcbiAgICB0YWJJbmRleDogLTEsXG4gICAgaWQ6IGlkLFxuICAgIGNsYXNzTmFtZTogaW5wdXRDbGFzc2VzLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvbkNoYW5nZTogIWRpc2FibGVkID8gaGFuZGxlQ2hhbmdlIDogbnVsbCxcbiAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIGNoZWNrZWQ6IGlzU2VsZWN0ZWRcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGFiZWxcIiwgX2V4dGVuZHMoe1xuICAgIGh0bWxGb3I6IGlkLFxuICAgIGNsYXNzTmFtZTogY2xhc3NlcyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvbm8tbm9uaW50ZXJhY3RpdmUtdGFiaW5kZXhcbiAgICAsXG4gICAgdGFiSW5kZXg6ICFkaXNhYmxlZCA/IHRhYkluZGV4IDogbnVsbFxuICB9LCByZXN0LCB7XG4gICAgb25DbGljazogIWRpc2FibGVkID8gaGFuZGxlT25DbGljayA6IG51bGwsXG4gICAgb25LZXlEb3duOiAhZGlzYWJsZWQgPyBoYW5kbGVPbktleURvd24gOiBudWxsXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrIFwiKS5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrLS1wZXJzaXN0ZW50XCIpXG4gIH0sIGlzU2VsZWN0ZWQgPyBfQ2hlY2tib3hDaGVja2VkRmlsbGUgfHwgKF9DaGVja2JveENoZWNrZWRGaWxsZSA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZWNrYm94Q2hlY2tlZEZpbGxlZCwgbnVsbCkpIDogX0NoZWNrYm94IHx8IChfQ2hlY2tib3ggPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveCwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICB9LCBjaGlsZHJlbikpKTtcbn1cblNlbGVjdGFibGVUaWxlLmRlZmF1bHRQcm9wcyA9IHtcbiAgdmFsdWU6ICd2YWx1ZScsXG4gIHRpdGxlOiAndGl0bGUnLFxuICBzZWxlY3RlZDogZmFsc2UsXG4gIHRhYkluZGV4OiAwLFxuICBsaWdodDogZmFsc2UsXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge31cbn07XG5TZWxlY3RhYmxlVGlsZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0aGUgU2VsZWN0YWJsZVRpbGUgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGBoYW5kbGVDbGlja2AgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbkNsaWNrYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlS2V5RG93bmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbktleURvd25gLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjaGVja21hcmsgaWNvbi5cbiAgICovXG4gIGljb25EZXNjcmlwdGlvbjogZGVwcmVjYXRlKFByb3BUeXBlcy5zdHJpbmcsICdUaGUgYGljb25EZXNjcmlwdGlvbmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBpcyBubyBsb25nZXIgbmVlZGVkIGFuZCBoYXMgJyArICdiZWVuIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBUaGUgYG5hbWVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZW1wdHkgaGFuZGxlciBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byBzZWxlY3QgdGhpcyB0aWxlLlxuICAgKi9cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSB0YWIgaW5kZXggb2YgdGhlIHdyYXBwZXIgZWxlbWVudFxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGl0bGVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLmlzUmVxdWlyZWRcbn07XG52YXIgRXhwYW5kYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQzKSB7XG4gIF9pbmhlcml0cyhFeHBhbmRhYmxlVGlsZSwgX0NvbXBvbmVudDMpO1xuXG4gIHZhciBfc3VwZXIzID0gX2NyZWF0ZVN1cGVyKEV4cGFuZGFibGVUaWxlKTtcblxuICBmdW5jdGlvbiBFeHBhbmRhYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXMyO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEV4cGFuZGFibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIF90aGlzMiA9IF9zdXBlcjMuY2FsbC5hcHBseShfc3VwZXIzLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJyZXNpemVPYnNlcnZlclwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkTW91bnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICAgIHZhciBfZW50cmllcyA9IF9zbGljZWRUb0FycmF5KGVudHJpZXMsIDEpLFxuICAgICAgICAgICAgYWJvdmVUaGVGb2xkID0gX2VudHJpZXNbMF07XG5cbiAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBhYm92ZVRoZUZvbGQuY29udGVudFJlY3QuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChfdGhpczIudGlsZSkge1xuICAgICAgICB2YXIgZ2V0U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShfdGhpczIudGlsZSwgbnVsbCk7XG5cbiAgICAgICAgaWYgKF90aGlzMi5hYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICBfdGhpczIucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShfdGhpczIuYWJvdmVUaGVGb2xkKTtcblxuICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxcbiAgICAgICAgICAgIHRpbGVQYWRkaW5nOiBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpLCAxMCkgKyBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpLCAxMClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJjb21wb25lbnREaWRVcGRhdGVcIiwgZnVuY3Rpb24gKHByZXZQcm9wcykge1xuICAgICAgaWYgKHByZXZQcm9wcy5leHBhbmRlZCAhPT0gX3RoaXMyLnByb3BzLmV4cGFuZGVkKSB7XG4gICAgICAgIF90aGlzMi5zZXRNYXhIZWlnaHQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic2V0TWF4SGVpZ2h0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpczIuc3RhdGUuZXhwYW5kZWQgPyBfdGhpczIudGlsZUNvbnRlbnQgOiBfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IF90aGlzMi5hYm92ZVRoZUZvbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoIV90aGlzMi5wcm9wcy5vbkJlZm9yZUNsaWNrKGV2dCkgfHwgZXZ0LnRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgZXhwYW5kZWQ6ICFfdGhpczIuc3RhdGUuZXhwYW5kZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzMiRwcm9wcyRoYW5kbGVDbCwgX3RoaXMyJHByb3BzLCBfdGhpczIkcHJvcHMkb25DbGljaywgX3RoaXMyJHByb3BzMjtcblxuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7IC8vIFRPRE86IFJlbW92ZSBoYW5kbGVDbGljayBwcm9wIHdoZW4gaGFuZGxlQ2xpY2sgaXMgZGVwcmVjYXRlZFxuXG5cbiAgICAgICAgKChfdGhpczIkcHJvcHMkaGFuZGxlQ2wgPSAoX3RoaXMyJHByb3BzID0gX3RoaXMyLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJGhhbmRsZUNsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkaGFuZGxlQ2wuY2FsbChfdGhpczIkcHJvcHMsIGV2dCkpIHx8ICgoX3RoaXMyJHByb3BzJG9uQ2xpY2sgPSAoX3RoaXMyJHByb3BzMiA9IF90aGlzMi5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMyJHByb3BzMiwgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlS2V5VXBcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKGV2dC50YXJnZXQgIT09IF90aGlzMi50aWxlKSB7XG4gICAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiZ2V0Q2hpbGRyZW5cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFJlYWN0X19kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkoX3RoaXMyLnByb3BzLmNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRXhwYW5kYWJsZVRpbGUsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2N4NSxcbiAgICAgICAgICBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM3ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzNy50YWJJbmRleCxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczcuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5leHBhbmRlZDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZU1heEhlaWdodDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZVBhZGRpbmc7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LmhhbmRsZUNsaWNrO1xuICAgICAgICAgIHZhciBvbktleVVwID0gX3RoaXMkcHJvcHM3Lm9uS2V5VXAsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZEljb25UZXh0ID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlQ29sbGFwc2VkTGFiZWwgPSBfdGhpcyRwcm9wczcudGlsZUNvbGxhcHNlZExhYmVsLFxuICAgICAgICAgIHRpbGVFeHBhbmRlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVFeHBhbmRlZExhYmVsO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5vbkJlZm9yZUNsaWNrO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNy5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNywgX2V4Y2x1ZGVkNCk7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgaXNFeHBhbmRlZCA9IHRoaXMuc3RhdGUuZXhwYW5kZWQ7XG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWV4cGFuZGFibGVcIiksIChfY3g1ID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1leHBhbmRlZFwiKSwgaXNFeHBhbmRlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3g1KSwgY2xhc3NOYW1lKTtcbiAgICAgIHZhciB0aWxlU3R5bGUgPSB7XG4gICAgICAgIG1heEhlaWdodDogaXNFeHBhbmRlZCA/IG51bGwgOiB0aGlzLnN0YXRlLnRpbGVNYXhIZWlnaHQgKyB0aGlzLnN0YXRlLnRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgICAgdmFyIGNoaWxkcmVuQXNBcnJheSA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsanN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYodGlsZSkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGUgPSB0aWxlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3R5bGU6IHRpbGVTdHlsZSxcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMsXG4gICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGlzRXhwYW5kZWQsXG4gICAgICAgICAgdGl0bGU6IGlzRXhwYW5kZWQgPyB0aWxlRXhwYW5kZWRJY29uVGV4dCA6IHRpbGVDb2xsYXBzZWRJY29uVGV4dFxuICAgICAgICB9LCByZXN0LCB7XG4gICAgICAgICAgb25LZXlVcDogY29tcG9zZUV2ZW50SGFuZGxlcnMoW29uS2V5VXAsIHRoaXMuaGFuZGxlS2V5VXBdKSxcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICAgIHRhYkluZGV4OiB0YWJJbmRleFxuICAgICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGVDb250ZW50KSB7XG4gICAgICAgICAgICBfdGhpczMudGlsZUNvbnRlbnQgPSB0aWxlQ29udGVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihhYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICAgIF90aGlzMy5hYm92ZVRoZUZvbGQgPSBhYm92ZVRoZUZvbGQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICAgICAgICB9LCBjaGlsZHJlbkFzQXJyYXlbMF0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGV2cm9uXCIpXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkTGFiZWwgOiB0aWxlQ29sbGFwc2VkTGFiZWwpLCBfQ2hldnJvbkRvd24gfHwgKF9DaGV2cm9uRG93biA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZXZyb25Eb3duLCBudWxsKSkpLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzFdKSkpXG4gICAgICApO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgX3JlZjIsIHN0YXRlKSB7XG4gICAgICB2YXIgZXhwYW5kZWQgPSBfcmVmMi5leHBhbmRlZCxcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0ID0gX3JlZjIudGlsZU1heEhlaWdodCxcbiAgICAgICAgICB0aWxlUGFkZGluZyA9IF9yZWYyLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIHByZXZFeHBhbmRlZCA9IHN0YXRlLnByZXZFeHBhbmRlZCxcbiAgICAgICAgICBwcmV2VGlsZU1heEhlaWdodCA9IHN0YXRlLnByZXZUaWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIHByZXZUaWxlUGFkZGluZyA9IHN0YXRlLnByZXZUaWxlUGFkZGluZyxcbiAgICAgICAgICBjdXJyZW50RXhwYW5kZWQgPSBzdGF0ZS5leHBhbmRlZCxcbiAgICAgICAgICBjdXJyZW50VGlsZU1heEhlaWdodCA9IHN0YXRlLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgY3VycmVudFRpbGVQYWRkaW5nID0gc3RhdGUudGlsZVBhZGRpbmc7XG4gICAgICB2YXIgZXhwYW5kZWRDaGFuZ2VkID0gcHJldkV4cGFuZGVkICE9PSBleHBhbmRlZDtcbiAgICAgIHZhciB0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA9IHByZXZUaWxlTWF4SGVpZ2h0ICE9PSB0aWxlTWF4SGVpZ2h0O1xuICAgICAgdmFyIHRpbGVQYWRkaW5nQ2hhbmdlZCA9IHByZXZUaWxlUGFkZGluZyAhPT0gdGlsZVBhZGRpbmc7XG4gICAgICByZXR1cm4gIWV4cGFuZGVkQ2hhbmdlZCAmJiAhdGlsZU1heEhlaWdodENoYW5nZWQgJiYgIXRpbGVQYWRkaW5nQ2hhbmdlZCA/IG51bGwgOiB7XG4gICAgICAgIGV4cGFuZGVkOiAhZXhwYW5kZWRDaGFuZ2VkID8gY3VycmVudEV4cGFuZGVkIDogZXhwYW5kZWQsXG4gICAgICAgIHRpbGVNYXhIZWlnaHQ6ICF0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA/IGN1cnJlbnRUaWxlTWF4SGVpZ2h0IDogdGlsZU1heEhlaWdodCxcbiAgICAgICAgdGlsZVBhZGRpbmc6ICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBjdXJyZW50VGlsZVBhZGRpbmcgOiB0aWxlUGFkZGluZyxcbiAgICAgICAgcHJldkV4cGFuZGVkOiBleHBhbmRlZCxcbiAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQ6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHByZXZUaWxlUGFkZGluZzogdGlsZVBhZGRpbmdcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEV4cGFuZGFibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSB0aWxlIGlzIGV4cGFuZGVkLlxuICAgKi9cbiAgZXhwYW5kZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBFeHBhbmRhYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBBbiBJRCB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byBhcmlhLWxhYmVsbGVkYnlcbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBvcHRpb25hbCBoYW5kbGVyIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGlnbm9yZSBhIGNsaWNrLiByZXR1cm5zIGZhbHNlIGlmIGNsaWNrIHNob3VsZCBiZSBpZ25vcmVkXG4gICAqL1xuICBvbkJlZm9yZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIEV4cGFuZGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byB0cmlnZ2VyIGEgZnVuY3Rpb24gd2hlbiBhIGtleSBpcyBwcmVzc2VkXG4gICAqL1xuICBvbktleVVwOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogVGhlIGB0YWJpbmRleGAgYXR0cmlidXRlLlxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJjb2xsYXBzZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZW4gXCJjb2xsYXBzZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IG1vcmVcIikuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJleHBhbmRlZFwiIGljb24gdGhhdCBjYW4gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiZXhwYW5kZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IGxlc3NcIikuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHRhYkluZGV4OiAwLFxuICBleHBhbmRlZDogZmFsc2UsXG4gIHRpbGVNYXhIZWlnaHQ6IDAsXG4gIHRpbGVQYWRkaW5nOiAwLFxuICBvbkJlZm9yZUNsaWNrOiBmdW5jdGlvbiBvbkJlZm9yZUNsaWNrKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIHRpbGVDb2xsYXBzZWRJY29uVGV4dDogJ0ludGVyYWN0IHRvIGV4cGFuZCBUaWxlJyxcbiAgdGlsZUV4cGFuZGVkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBjb2xsYXBzZSBUaWxlJyxcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NCkge1xuICBfaW5oZXJpdHMoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ0KTtcblxuICB2YXIgX3N1cGVyNCA9IF9jcmVhdGVTdXBlcihUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYWJvdmUtdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG52YXIgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQ1KSB7XG4gIF9pbmhlcml0cyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgX0NvbXBvbmVudDUpO1xuXG4gIHZhciBfc3VwZXI1ID0gX2NyZWF0ZVN1cGVyKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICBmdW5jdGlvbiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9zdXBlcjUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50X19iZWxvdy10aGUtZm9sZFwiKVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudDtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbmV4cG9ydCB7IENsaWNrYWJsZVRpbGUsIEV4cGFuZGFibGVUaWxlLCBTZWxlY3RhYmxlVGlsZSwgVGlsZSwgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50IH07XG4iXSwibmFtZXMiOlsiaW5oZXJpdHMiLCJfaW5oZXJpdHMiLCJjcmVhdGVTdXBlciIsIl9jcmVhdGVTdXBlciIsImNsYXNzQ2FsbENoZWNrIiwiX2NsYXNzQ2FsbENoZWNrIiwiY3JlYXRlQ2xhc3MiLCJfY3JlYXRlQ2xhc3MiLCJvYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2RlZmluZVByb3BlcnR5IiwiZXh0ZW5kcyIsIl9leHRlbmRzIiwiYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsInNsaWNlZFRvQXJyYXkiLCJfc2xpY2VkVG9BcnJheSIsIlJlYWN0X19kZWZhdWx0IiwiQ29tcG9uZW50IiwidXNlU3RhdGUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJQcm9wVHlwZXMiLCJjeCIsIkxpbmsiLCJDaGVja2JveENoZWNrZWRGaWxsZWQiLCJDaGVja2JveCIsIkNoZXZyb25Eb3duIiwiZGVwcmVjYXRlIiwiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJQcmVmaXhDb250ZXh0IiwidXNlUHJlZml4IiwibWF0Y2hlcyIsIkVudGVyIiwiU3BhY2UiLCJfQ2hlY2tib3hDaGVja2VkRmlsbGUiLCJfQ2hlY2tib3giLCJfQ2hldnJvbkRvd24iLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX2V4Y2x1ZGVkMyIsIl9leGNsdWRlZDQiLCJUaWxlIiwiX0NvbXBvbmVudCIsIl9zdXBlciIsImFwcGx5IiwiYXJndW1lbnRzIiwia2V5IiwidmFsdWUiLCJyZW5kZXIiLCJwcmVmaXgiLCJjb250ZXh0IiwiX3RoaXMkcHJvcHMiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwibGlnaHQiLCJyZXN0IiwidGlsZUNsYXNzZXMiLCJjb25jYXQiLCJjcmVhdGVFbGVtZW50Iiwibm9kZSIsInN0cmluZyIsImJvb2wiLCJDbGlja2FibGVUaWxlIiwiX0NvbXBvbmVudDIiLCJfc3VwZXIyIiwiX3RoaXMiLCJfbGVuIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJldnQiLCJwZXJzaXN0Iiwic2V0U3RhdGUiLCJjbGlja2VkIiwic3RhdGUiLCJfdGhpcyRwcm9wcyRoYW5kbGVDbGkiLCJfdGhpcyRwcm9wczIiLCJfdGhpcyRwcm9wcyRvbkNsaWNrIiwiX3RoaXMkcHJvcHMzIiwiaGFuZGxlQ2xpY2siLCJvbkNsaWNrIiwiX3RoaXMkcHJvcHMkaGFuZGxlS2V5IiwiX3RoaXMkcHJvcHM0IiwiaGFuZGxlS2V5RG93biIsIm9uS2V5RG93biIsIl90aGlzJHByb3BzJGhhbmRsZUtleTIiLCJfdGhpcyRwcm9wczUiLCJfY3gyIiwiX3RoaXMkcHJvcHM2IiwiaHJlZiIsImNsYXNzZXMiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJfcmVmIiwicHJldkNsaWNrZWQiLCJmdW5jIiwicmVsIiwiU2VsZWN0YWJsZVRpbGUiLCJoYW5kbGVPbkNsaWNrIiwicHJldmVudERlZmF1bHQiLCJzZXRJc1NlbGVjdGVkIiwiaXNTZWxlY3RlZCIsImNsaWNrSGFuZGxlciIsIm9uQ2hhbmdlIiwiaGFuZGxlT25LZXlEb3duIiwia2V5RG93bkhhbmRsZXIiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsImNoZWNrZWQiLCJfY3gzIiwiaWQiLCJ0YWJJbmRleCIsIm5hbWUiLCJ0aXRsZSIsImljb25EZXNjcmlwdGlvbiIsImRpc2FibGVkIiwic2VsZWN0ZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiaW5wdXQiLCJpbnB1dENsYXNzZXMiLCJGcmFnbWVudCIsInJlZiIsInR5cGUiLCJodG1sRm9yIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwibnVtYmVyIiwib25lT2ZUeXBlIiwiaXNSZXF1aXJlZCIsIkV4cGFuZGFibGVUaWxlIiwiX0NvbXBvbmVudDMiLCJfc3VwZXIzIiwiX3RoaXMyIiwiX2xlbjIiLCJfa2V5MiIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiX2VudHJpZXMiLCJhYm92ZVRoZUZvbGQiLCJ0aWxlTWF4SGVpZ2h0IiwiY29udGVudFJlY3QiLCJoZWlnaHQiLCJ0aWxlIiwiZ2V0U3R5bGUiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwib2JzZXJ2ZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRpbGVQYWRkaW5nIiwicGFyc2VJbnQiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicHJldlByb3BzIiwiZXhwYW5kZWQiLCJzZXRNYXhIZWlnaHQiLCJ0aWxlQ29udGVudCIsIm9uQmVmb3JlQ2xpY2siLCJ0YWdOYW1lIiwiX3RoaXMyJHByb3BzJGhhbmRsZUNsIiwiX3RoaXMyJHByb3BzIiwiX3RoaXMyJHByb3BzJG9uQ2xpY2siLCJfdGhpczIkcHJvcHMyIiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkaXNjb25uZWN0IiwiX2N4NSIsIl90aGlzMyIsIl90aGlzJHByb3BzNyIsIm9uS2V5VXAiLCJ0aWxlQ29sbGFwc2VkSWNvblRleHQiLCJ0aWxlRXhwYW5kZWRJY29uVGV4dCIsInRpbGVDb2xsYXBzZWRMYWJlbCIsInRpbGVFeHBhbmRlZExhYmVsIiwiaXNFeHBhbmRlZCIsInRpbGVTdHlsZSIsIm1heEhlaWdodCIsImNoaWxkcmVuQXNBcnJheSIsImdldENoaWxkcmVuIiwic3R5bGUiLCJoYW5kbGVLZXlVcCIsIl9yZWYyIiwicHJldkV4cGFuZGVkIiwicHJldlRpbGVNYXhIZWlnaHQiLCJwcmV2VGlsZVBhZGRpbmciLCJjdXJyZW50RXhwYW5kZWQiLCJjdXJyZW50VGlsZU1heEhlaWdodCIsImN1cnJlbnRUaWxlUGFkZGluZyIsImV4cGFuZGVkQ2hhbmdlZCIsInRpbGVNYXhIZWlnaHRDaGFuZ2VkIiwidGlsZVBhZGRpbmdDaGFuZ2VkIiwiVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NCIsIl9zdXBlcjQiLCJUaWxlQmVsb3dUaGVGb2xkQ29udGVudCIsIl9Db21wb25lbnQ1IiwiX3N1cGVyNSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
2605
2605
 
2606
2606
  /***/ }),
2607
2607
 
@@ -6455,7 +6455,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
6455
6455
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6456
6456
 
6457
6457
  "use strict";
6458
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"OpenmrsFetchError\": () => (/* binding */ OpenmrsFetchError),\n/* harmony export */ \"fhirBaseUrl\": () => (/* binding */ fhirBaseUrl),\n/* harmony export */ \"makeUrl\": () => (/* binding */ makeUrl),\n/* harmony export */ \"openmrsFetch\": () => (/* binding */ openmrsFetch),\n/* harmony export */ \"openmrsObservableFetch\": () => (/* binding */ openmrsObservableFetch),\n/* harmony export */ \"restBaseUrl\": () => (/* binding */ restBaseUrl),\n/* harmony export */ \"sessionEndpoint\": () => (/* binding */ sessionEndpoint)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/isPlainObject */ \"../../../node_modules/lodash-es/isPlainObject.js\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/** @module @category API */ function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [\n null\n ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nvar _typeof = function(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\nvar restBaseUrl = \"/ws/rest/v1/\";\nvar fhirBaseUrl = \"/ws/fhir2/R4\";\nvar sessionEndpoint = \"\".concat(restBaseUrl, \"session\");\n/**\n * Append `path` to the OpenMRS SPA base.\n *\n * #### Example\n *\n * ```ts\n * makeUrl('/foo/bar');\n * // => '/openmrs/foo/bar'\n * ```\n */ function makeUrl(path) {\n return window.openmrsBase + path;\n}\n/**\n * The openmrsFetch function is a wrapper around the\n * [browser's built-in fetch function](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch),\n * with extra handling for OpenMRS-specific API behaviors, such as\n * request headers, authentication, authorization, and the API urls.\n *\n * @param path A string url to make the request to. Note that the\n * openmrs base url (by default `/openmrs`) will be automatically\n * prepended to the URL, so there is no need to include it.\n * @param fetchInit A [fetch init object](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax).\n * Note that the `body` property does not need to be `JSON.stringify()`ed\n * because openmrsFetch will do that for you.\n * @returns A [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)\n * that resolves with a [Response object](https://developer.mozilla.org/en-US/docs/Web/API/Response).\n * Note that the openmrs version of the Response object has already\n * downloaded the HTTP response body as json, and has an additional\n * `data` property with the HTTP response json as a javascript object.\n *\n * #### Example\n * ```js\n * import { openmrsFetch } from '@openmrs/esm-api'\n * const abortController = new AbortController();\n * openmrsFetch('/ws/rest/v1/session', {signal: abortController.signal})\n * .then(response => {\n * console.log(response.data.authenticated)\n * })\n * .catch(err => {\n * console.error(err.status);\n * })\n * abortController.abort();\n * openmrsFetch('/ws/rest/v1/session', {\n * method: 'POST',\n * body: {\n * username: 'hi',\n * password: 'there',\n * }\n * })\n * ```\n *\n * #### Cancellation\n *\n * To cancel a network request, use an\n * [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort).\n * It is best practice to cancel your network requests when the user\n * navigates away from a page while the request is pending request, to\n * free up memory and network resources and to prevent race conditions.\n *\n * @category API\n */ function openmrsFetch(path) {\n var fetchInit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (typeof path !== \"string\") {\n throw Error(\"The first argument to @openmrs/api's openmrsFetch function must be a url string\");\n }\n if (typeof fetchInit !== \"object\") {\n throw Error(\"The second argument to @openmrs/api's openmrsFetch function must be a plain object.\");\n }\n // @ts-ignore\n if (!window.openmrsBase) {\n throw Error(\"@openmrs/api is running in a browser that doesn't have window.openmrsBase, which is provided by openmrs-module-spa's HTML file.\");\n }\n // ensure path starts with /\n if (path[0] !== \"/\") {\n path = \"/\" + path;\n }\n // Prefix the url with the openmrs spa base\n var url = makeUrl(path);\n // We're going to need some headers\n if (!fetchInit.headers) {\n fetchInit.headers = {};\n }\n /* Automatically stringify javascript objects being sent in the\n * request body.\n */ if ((0,lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(fetchInit.body)) {\n fetchInit.body = JSON.stringify(fetchInit.body);\n }\n /* Add a request header to tell the server to respond with json,\n * since frontend code almost always wants json and the OpenMRS\n * server won't give you json unless you explicitly ask for it.\n * If a different Accept header is preferred, pass it into the fetchInit.\n * If no Accept header is desired, pass it in explicitly as null.\n */ if (typeof fetchInit.headers.Accept === \"undefined\") {\n fetchInit.headers.Accept = \"application/json\";\n }\n if (fetchInit.headers.Accept === null) {\n delete fetchInit.headers.Accept;\n }\n /* This tells the OpenMRS REST API not to return a WWW-Authenticate\n * header. Returning that header is useful when using the API, but\n * not from a UI.\n */ if (path.startsWith(restBaseUrl) && typeof fetchInit.headers[\"Disable-WWW-Authenticate\"] === \"undefined\") {\n fetchInit.headers[\"Disable-WWW-Authenticate\"] = \"true\";\n }\n if (path.startsWith(fhirBaseUrl)) {\n var urlUrl = new URL(url, window.location.toString());\n if (!urlUrl.searchParams.has(\"_summary\")) {\n urlUrl.searchParams.set(\"_summary\", \"data\");\n url = urlUrl.toString();\n }\n }\n /* We capture the stacktrace before making the request, so that if an error occurs we can\n * log a full stacktrace that includes the code that made the request and handled the response\n * Otherwise, we could run into situations where the stacktrace doesn't even show which code\n * called @openmrs/api.\n */ var requestStacktrace = Error();\n return window.fetch(url, fetchInit).then(function() {\n var _ref = _asyncToGenerator(function(r) {\n var response, redirectAuthFailure;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n response = r;\n if (!response.ok) return [\n 3,\n 1\n ];\n if (response.status === 204) {\n /* HTTP 204 - No Content\n * We should not try to download the empty response as json. Instead,\n * we return null since there is no response body.\n */ response.data = null;\n return [\n 2,\n response\n ];\n } else {\n // HTTP 200s - The request succeeded\n return [\n 2,\n response.text().then(function(responseText) {\n try {\n if (responseText) {\n response.data = JSON.parse(responseText);\n }\n } catch (err) {\n // Server didn't respond with json\n }\n return response;\n })\n ];\n }\n return [\n 3,\n 3\n ];\n case 1:\n return [\n 4,\n (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)(\"@openmrs/esm-api\")\n ];\n case 2:\n redirectAuthFailure = _state.sent().redirectAuthFailure;\n if (url === makeUrl(sessionEndpoint) && response.status === 403 || redirectAuthFailure.enabled && redirectAuthFailure.errors.includes(response.status)) {\n (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.navigate)({\n to: redirectAuthFailure.url\n });\n /* We sometimes don't really want this promise to resolve since there's no response data,\n * nor do we want it to reject because that would trigger error handling. We instead\n * want it to remain in pending status while the navigation occurs.\n */ return [\n 2,\n redirectAuthFailure.resolvePromise ? Promise.resolve() : new Promise(function() {})\n ];\n } else {\n // Attempt to download a response body, if it has one\n return [\n 2,\n response.text().then(function(responseText) {\n var responseBody = responseText;\n try {\n responseBody = JSON.parse(responseText);\n } catch (err) {\n // Server didn't respond with json, so just go with the response text string\n }\n /* Make the fetch promise go into \"rejected\" status, with the best\n * possible stacktrace and error message.\n */ throw new OpenmrsFetchError(url, response, responseBody, requestStacktrace);\n }, function(err) {\n /* We weren't able to download a response body for this error.\n * Time to just give the best possible stacktrace and error message.\n */ throw new OpenmrsFetchError(url, response, null, requestStacktrace);\n })\n ];\n }\n _state.label = 3;\n case 3:\n return [\n 2\n ];\n }\n });\n });\n return function(r) {\n return _ref.apply(this, arguments);\n };\n }());\n}\n/**\n * The openmrsObservableFetch function is a wrapper around openmrsFetch\n * that returns an [Observable](https://rxjs-dev.firebaseapp.com/guide/observable)\n * instead of a promise. It exists in case using an Observable is\n * preferred or more convenient than a promise.\n *\n * @param url See [[openmrsFetch]]\n * @param fetchInit See [[openmrsFetch]]\n * @returns An Observable that produces exactly one Response object.\n * The response object is exactly the same as for [[openmrsFetch]].\n *\n * #### Example\n *\n * ```js\n * import { openmrsObservableFetch } from '@openmrs/esm-api'\n * const subscription = openmrsObservableFetch('/ws/rest/v1/session').subscribe(\n * response => console.log(response.data),\n * err => {throw err},\n * () => console.log('finished')\n * )\n * subscription.unsubscribe()\n * ```\n *\n * #### Cancellation\n *\n * To cancel the network request, simply call `subscription.unsubscribe();`\n *\n * @category API\n */ function openmrsObservableFetch(url) {\n var fetchInit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (typeof fetchInit !== \"object\") {\n throw Error(\"The second argument to openmrsObservableFetch must be either omitted or an object\");\n }\n var abortController = new AbortController();\n fetchInit.signal = abortController.signal;\n return new rxjs__WEBPACK_IMPORTED_MODULE_0__.Observable(function(observer) {\n var hasResponse = false;\n openmrsFetch(url, fetchInit).then(function(response) {\n hasResponse = true;\n observer.next(response);\n observer.complete();\n }, function(err) {\n hasResponse = true;\n observer.error(err);\n });\n return function() {\n if (!hasResponse) {\n abortController.abort();\n }\n };\n });\n}\nvar OpenmrsFetchError = /*#__PURE__*/ function(Error1) {\n \"use strict\";\n _inherits(OpenmrsFetchError, Error1);\n var _super = _createSuper(OpenmrsFetchError);\n function OpenmrsFetchError(url, response, responseBody, requestStacktrace) {\n _classCallCheck(this, OpenmrsFetchError);\n var _this;\n _this = _super.call(this);\n _this.message = \"Server responded with \".concat(response.status, \" (\").concat(response.statusText, \") for url \").concat(url, \". Check err.responseBody or network tab in dev tools for more info\");\n requestStacktrace.message = _this.message;\n _this.responseBody = responseBody;\n _this.response = response;\n _this.stack = \"Stacktrace for outgoing request:\\n\".concat(requestStacktrace.stack, \"\\nStacktrace for incoming response:\\n\").concat(_this.stack);\n return _this;\n }\n return OpenmrsFetchError;\n}(_wrapNativeSuper(Error));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL29wZW5tcnMtZmV0Y2gudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEIsR0FDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFrQztBQUNrQjtBQUNNO0FBR25ELElBQU1JLGNBQWMsZUFBZTtBQUVuQyxJQUFNQyxjQUFjLGVBQWU7QUFFbkMsSUFBTUMsa0JBQWtCLEdBQWUsT0FBWkYsYUFBWSxXQUFTO0FBRXZEOzs7Ozs7Ozs7Q0FTQyxHQUNNLFNBQVNHLFFBQVFDLElBQVksRUFBRTtJQUNwQyxPQUFPQyxPQUFPQyxXQUFXLEdBQUdGO0FBQzlCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0RDLEdBQ00sU0FBU0csYUFDZEgsSUFBWSxFQUVlO1FBRDNCSSxZQUFBQSxpRUFBeUIsQ0FBQyxDQUFDO0lBRTNCLElBQUksT0FBT0osU0FBUyxVQUFVO1FBQzVCLE1BQU1LLE1BQ0osbUZBQ0E7SUFDSixDQUFDO0lBRUQsSUFBSSxPQUFPRCxjQUFjLFVBQVU7UUFDakMsTUFBTUMsTUFDSix1RkFDQTtJQUNKLENBQUM7SUFFRCxhQUFhO0lBQ2IsSUFBSSxDQUFDSixPQUFPQyxXQUFXLEVBQUU7UUFDdkIsTUFBTUcsTUFDSixtSUFDQTtJQUNKLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsSUFBSUwsSUFBSSxDQUFDLEVBQUUs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LEdBQUcseUJBQTZDNUIsT0FBcEJBLFNBQVNHLE1BQU0sRUFBQyxNQUFvQ3JCLE9BQWhDa0IsU0FBUzZCLFVBQVUsRUFBQyxjQUFnQixPQUFKL0MsS0FBSTtRQUNoR2Msa0JBQWtCZ0MsT0FBTyxHQUFHLE1BQUtBLE9BQU87UUFDeEMsTUFBS1osWUFBWSxHQUFHQTtRQUNwQixNQUFLaEIsUUFBUSxHQUFHQTtRQUNoQixNQUFLOEIsS0FBSyxHQUFHLHFDQUFvRyxPQUEvRGxDLGtCQUFrQmtDLEtBQUssRUFBQyx5Q0FBa0QsT0FBWCxNQUFLQSxLQUFLOzs7V0FabEhiO21CQUEwQnBDLFFBZ0J0QyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL29wZW5tcnMtZmV0Y2gudHM/ZGVhMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQVBJICovXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gXCJsb2Rhc2gtZXMvaXNQbGFpbk9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnLCBuYXZpZ2F0ZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBGZXRjaFJlc3BvbnNlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IHJlc3RCYXNlVXJsID0gXCIvd3MvcmVzdC92MS9cIjtcblxuZXhwb3J0IGNvbnN0IGZoaXJCYXNlVXJsID0gXCIvd3MvZmhpcjIvUjRcIjtcblxuZXhwb3J0IGNvbnN0IHNlc3Npb25FbmRwb2ludCA9IGAke3Jlc3RCYXNlVXJsfXNlc3Npb25gO1xuXG4vKipcbiAqIEFwcGVuZCBgcGF0aGAgdG8gdGhlIE9wZW5NUlMgU1BBIGJhc2UuXG4gKlxuICogIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHNcbiAqIG1ha2VVcmwoJy9mb28vYmFyJyk7XG4gKiAvLyA9PiAnL29wZW5tcnMvZm9vL2JhcidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVVybChwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHdpbmRvdy5vcGVubXJzQmFzZSArIHBhdGg7XG59XG5cbi8qKlxuICogVGhlIG9wZW5tcnNGZXRjaCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZVxuICogW2Jyb3dzZXIncyBidWlsdC1pbiBmZXRjaCBmdW5jdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaCksXG4gKiB3aXRoIGV4dHJhIGhhbmRsaW5nIGZvciBPcGVuTVJTLXNwZWNpZmljIEFQSSBiZWhhdmlvcnMsIHN1Y2ggYXNcbiAqIHJlcXVlc3QgaGVhZGVycywgYXV0aGVudGljYXRpb24sIGF1dGhvcml6YXRpb24sIGFuZCB0aGUgQVBJIHVybHMuXG4gKlxuICogQHBhcmFtIHBhdGggQSBzdHJpbmcgdXJsIHRvIG1ha2UgdGhlIHJlcXVlc3QgdG8uIE5vdGUgdGhhdCB0aGVcbiAqICAgb3Blbm1ycyBiYXNlIHVybCAoYnkgZGVmYXVsdCBgL29wZW5tcnNgKSB3aWxsIGJlIGF1dG9tYXRpY2FsbHlcbiAqICAgcHJlcGVuZGVkIHRvIHRoZSBVUkwsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW5jbHVkZSBpdC5cbiAqIEBwYXJhbSBmZXRjaEluaXQgQSBbZmV0Y2ggaW5pdCBvYmplY3RdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlL2ZldGNoI1N5bnRheCkuXG4gKiAgIE5vdGUgdGhhdCB0aGUgYGJvZHlgIHByb3BlcnR5IGRvZXMgbm90IG5lZWQgdG8gYmUgYEpTT04uc3RyaW5naWZ5KClgZWRcbiAqICAgYmVjYXVzZSBvcGVubXJzRmV0Y2ggd2lsbCBkbyB0aGF0IGZvciB5b3UuXG4gKiBAcmV0dXJucyBBIFtQcm9taXNlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9Qcm9taXNlKVxuICogICB0aGF0IHJlc29sdmVzIHdpdGggYSBbUmVzcG9uc2Ugb2JqZWN0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVzcG9uc2UpLlxuICogICBOb3RlIHRoYXQgdGhlIG9wZW5tcnMgdmVyc2lvbiBvZiB0aGUgUmVzcG9uc2Ugb2JqZWN0IGhhcyBhbHJlYWR5XG4gKiAgIGRvd25sb2FkZWQgdGhlIEhUVFAgcmVzcG9uc2UgYm9keSBhcyBqc29uLCBhbmQgaGFzIGFuIGFkZGl0aW9uYWxcbiAqICAgYGRhdGFgIHByb3BlcnR5IHdpdGggdGhlIEhUVFAgcmVzcG9uc2UganNvbiBhcyBhIGphdmFzY3JpcHQgb2JqZWN0LlxuICpcbiAqICMjIyMgRXhhbXBsZVxuICogYGBganNcbiAqIGltcG9ydCB7IG9wZW5tcnNGZXRjaCB9IGZyb20gJ0BvcGVubXJzL2VzbS1hcGknXG4gKiBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gKiBvcGVubXJzRmV0Y2goJy93cy9yZXN0L3YxL3Nlc3Npb24nLCB7c2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsfSlcbiAqICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEuYXV0aGVudGljYXRlZClcbiAqICAgfSlcbiAqICAgLmNhdGNoKGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhdHVzKTtcbiAqICAgfSlcbiAqIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICogb3Blbm1yc0ZldGNoKCcvd3MvcmVzdC92MS9zZXNzaW9uJywge1xuICogICBtZXRob2Q6ICdQT1NUJyxcbiAqICAgYm9keToge1xuICogICAgIHVzZXJuYW1lOiAnaGknLFxuICogICAgIHBhc3N3b3JkOiAndGhlcmUnLFxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogIyMjIyBDYW5jZWxsYXRpb25cbiAqXG4gKiBUbyBjYW5jZWwgYSBuZXR3b3JrIHJlcXVlc3QsIHVzZSBhblxuICogW0Fib3J0Q29udHJvbGxlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Fib3J0Q29udHJvbGxlci9hYm9ydCkuXG4gKiBJdCBpcyBiZXN0IHByYWN0aWNlIHRvIGNhbmNlbCB5b3VyIG5ldHdvcmsgcmVxdWVzdHMgd2hlbiB0aGUgdXNlclxuICogbmF2aWdhdGVzIGF3YXkgZnJvbSBhIHBhZ2Ugd2hpbGUgdGhlIHJlcXVlc3QgaXMgcGVuZGluZyByZXF1ZXN0LCB0b1xuICogZnJlZSB1cCBtZW1vcnkgYW5kIG5ldHdvcmsgcmVzb3VyY2VzIGFuZCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucy5cbiAqXG4gKiBAY2F0ZWdvcnkgQVBJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcGVubXJzRmV0Y2g8VCA9IGFueT4oXG4gIHBhdGg6IHN0cmluZyxcbiAgZmV0Y2hJbml0OiBGZXRjaENvbmZpZyA9IHt9XG4pOiBQcm9taXNlPEZldGNoUmVzcG9uc2U8VD4+IHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBcIlRoZSBmaXJzdCBhcmd1bWVudCB0byBAb3Blbm1ycy9hcGkncyBvcGVubXJzRmV0Y2ggZnVuY3Rpb24gbXVzdCBiZSBhIHVybCBzdHJpbmdcIlxuICAgICk7XG4gIH1cblxuICBpZiAodHlwZW9mIGZldGNoSW5pdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIEBvcGVubXJzL2FwaSdzIG9wZW5tcnNGZXRjaCBmdW5jdGlvbiBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0LlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgaWYgKCF3aW5kb3cub3Blbm1yc0Jhc2UpIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwiQG9wZW5tcnMvYXBpIGlzIHJ1bm5pbmcgaW4gYSBicm93c2VyIHRoYXQgZG9lc24ndCBoYXZlIHdpbmRvdy5vcGVubXJzQmFzZSwgd2hpY2ggaXMgcHJvdmlkZWQgYnkgb3Blbm1ycy1tb2R1bGUtc3BhJ3MgSFRNTCBmaWxlLlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIGVuc3VyZSBwYXRoIHN0YXJ0cyB3aXRoIC9cbiAgaWYgKHBhdGhbMF0gIT09IFwiL1wiKSB7XG4gICAgcGF0aCA9IFwiL1wiICsgcGF0aDtcbiAgfVxuXG4gIC8vIFByZWZpeCB0aGUgdXJsIHdpdGggdGhlIG9wZW5tcnMgc3BhIGJhc2VcbiAgbGV0IHVybDogc3RyaW5nID0gbWFrZVVybChwYXRoKTtcblxuICAvLyBXZSdyZSBnb2luZyB0byBuZWVkIHNvbWUgaGVhZGVyc1xuICBpZiAoIWZldGNoSW5pdC5oZWFkZXJzKSB7XG4gICAgZmV0Y2hJbml0LmhlYWRlcnMgPSB7fTtcbiAgfVxuXG4gIC8qIEF1dG9tYXRpY2FsbHkgc3RyaW5naWZ5IGphdmFzY3JpcHQgb2JqZWN0cyBiZWluZyBzZW50IGluIHRoZVxuICAgKiByZXF1ZXN0IGJvZHkuXG4gICAqL1xuICBpZiAoaXNQbGFpbk9iamVjdChmZXRjaEluaXQuYm9keSkpIHtcbiAgICBmZXRjaEluaXQuYm9keSA9IEpTT04uc3RyaW5naWZ5KGZldGNoSW5pdC5ib2R5KTtcbiAgfVxuXG4gIC8qIEFkZCBhIHJlcXVlc3QgaGVhZGVyIHRvIHRlbGwgdGhlIHNlcnZlciB0byByZXNwb25kIHdpdGgganNvbixcbiAgICogc2luY2UgZnJvbnRlbmQgY29kZSBhbG1vc3QgYWx3YXlzIHdhbnRzIGpzb24gYW5kIHRoZSBPcGVuTVJTXG4gICAqIHNlcnZlciB3b24ndCBnaXZlIHlvdSBqc29uIHVubGVzcyB5b3UgZXhwbGljaXRseSBhc2sgZm9yIGl0LlxuICAgKiBJZiBhIGRpZmZlcmVudCBBY2NlcHQgaGVhZGVyIGlzIHByZWZlcnJlZCwgcGFzcyBpdCBpbnRvIHRoZSBmZXRjaEluaXQuXG4gICAqIElmIG5vIEFjY2VwdCBoZWFkZXIgaXMgZGVzaXJlZCwgcGFzcyBpdCBpbiBleHBsaWNpdGx5IGFzIG51bGwuXG4gICAqL1xuICBpZiAodHlwZW9mIGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9IFwiYXBwbGljYXRpb24vanNvblwiO1xuICB9XG5cbiAgaWYgKGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9PT0gbnVsbCkge1xuICAgIGRlbGV0ZSBmZXRjaEluaXQuaGVhZGVycy5BY2NlcHQ7XG4gIH1cblxuICAvKiBUaGlzIHRlbGxzIHRoZSBPcGVuTVJTIFJFU1QgQVBJIG5vdCB0byByZXR1cm4gYSBXV1ctQXV0aGVudGljYXRlXG4gICAqIGhlYWRlci4gUmV0dXJuaW5nIHRoYXQgaGVhZGVyIGlzIHVzZWZ1bCB3aGVuIHVzaW5nIHRoZSBBUEksIGJ1dFxuICAgKiBub3QgZnJvbSBhIFVJLlxuICAgKi9cbiAgaWYgKFxuICAgIHBhdGguc3RhcnRzV2l0aChyZXN0QmFzZVVybCkgJiZcbiAgICB0eXBlb2YgZmV0Y2hJbml0LmhlYWRlcnNbXCJEaXNhYmxlLVdXVy1BdXRoZW50aWNhdGVcIl0gPT09IFwidW5kZWZpbmVkXCJcbiAgKSB7XG4gICAgZmV0Y2hJbml0LmhlYWRlcnNbXCJEaXNhYmxlLVdXVy1BdXRoZW50aWNhdGVcIl0gPSBcInRydWVcIjtcbiAgfVxuXG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoZmhpckJhc2VVcmwpKSB7XG4gICAgY29uc3QgdXJsVXJsID0gbmV3IFVSTCh1cmwsIHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpKTtcbiAgICBpZiAoIXVybFVybC5zZWFyY2hQYXJhbXMuaGFzKFwiX3N1bW1hcnlcIikpIHtcbiAgICAgIHVybFVybC5zZWFyY2hQYXJhbXMuc2V0KFwiX3N1bW1hcnlcIiwgXCJkYXRhXCIpO1xuICAgICAgdXJsID0gdXJsVXJsLnRvU3RyaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyogV2UgY2FwdHVyZSB0aGUgc3RhY2t0cmFjZSBiZWZvcmUgbWFraW5nIHRoZSByZXF1ZXN0LCBzbyB0aGF0IGlmIGFuIGVycm9yIG9jY3VycyB3ZSBjYW5cbiAgICogbG9nIGEgZnVsbCBzdGFja3RyYWNlIHRoYXQgaW5jbHVkZXMgdGhlIGNvZGUgdGhhdCBtYWRlIHRoZSByZXF1ZXN0IGFuZCBoYW5kbGVkIHRoZSByZXNwb25zZVxuICAgKiBPdGhlcndpc2UsIHdlIGNvdWxkIHJ1biBpbnRvIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHN0YWNrdHJhY2UgZG9lc24ndCBldmVuIHNob3cgd2hpY2ggY29kZVxuICAgKiBjYWxsZWQgQG9wZW5tcnMvYXBpLlxuICAgKi9cbiAgY29uc3QgcmVxdWVzdFN0YWNrdHJhY2UgPSBFcnJvcigpO1xuXG4gIHJldHVybiB3aW5kb3cuZmV0Y2godXJsLCBmZXRjaEluaXQgYXMgUmVxdWVzdEluaXQpLnRoZW4oYXN5bmMgKHIpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IHIgYXMgRmV0Y2hSZXNwb25zZTxUPjtcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICAvKiBIVFRQIDIwNCAtIE5vIENvbnRlbnRcbiAgICAgICAgICogV2Ugc2hvdWxkIG5vdCB0cnkgdG8gZG93bmxvYWQgdGhlIGVtcHR5IHJlc3BvbnNlIGFzIGpzb24uIEluc3RlYWQsXG4gICAgICAgICAqIHdlIHJldHVybiBudWxsIHNpbmNlIHRoZXJlIGlzIG5vIHJlc3BvbnNlIGJvZHkuXG4gICAgICAgICAqL1xuICAgICAgICByZXNwb25zZS5kYXRhID0gbnVsbCBhcyB1bmtub3duIGFzIFQ7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhUVFAgMjAwcyAtIFRoZSByZXF1ZXN0IHN1Y2NlZWRlZFxuICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpLnRoZW4oKHJlc3BvbnNlVGV4dCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2VUZXh0KSB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBTZXJ2ZXIgZGlkbid0IHJlc3BvbmQgd2l0aCBqc29uXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIEhUVFAgcmVzcG9uc2Ugc3RhdHVzIGlzIG5vdCBpbiAyMDBzLiBVc3VhbGx5IHRoaXMgd2lsbCBtZWFuXG4gICAgICAgKiBlaXRoZXIgSFRUUCA0MDBzIChiYWQgcmVxdWVzdCBmcm9tIGJyb3dzZXIpIG9yIEhUVFAgNTAwcyAoc2VydmVyIGVycm9yKVxuICAgICAgICogT3VyIGdvYWwgaXMgdG8gY29tZSB1cCB3aXRoIGJlc3QgcG9zc2libGUgc3RhY2t0cmFjZSBhbmQgZXJyb3IgbWVzc2FnZVxuICAgICAgICogdG8gaGVscCBkZXZlbG9wZXJzIHVuZGVyc3RhbmQgdGhlIHByb2JsZW0gYW5kIGRlYnVnXG4gICAgICAgKi9cblxuICAgICAgLypcbiAgICAgICAqUmVkaXJlY3QgdG8gZ2l2ZW4gdXJsIHdoZW4gcmVkaXJlY3Qgb24gYXV0aCBmYWlsdXJlIGlzIGVuYWJsZWRcbiAgICAgICAqL1xuICAgICAgY29uc3QgeyByZWRpcmVjdEF1dGhGYWlsdXJlIH0gPSBhd2FpdCBnZXRDb25maWcoXCJAb3Blbm1ycy9lc20tYXBpXCIpO1xuXG4gICAgICBpZiAoXG4gICAgICAgICh1cmwgPT09IG1ha2VVcmwoc2Vzc2lvbkVuZHBvaW50KSAmJiByZXNwb25zZS5zdGF0dXMgPT09IDQwMykgfHxcbiAgICAgICAgKHJlZGlyZWN0QXV0aEZhaWx1cmUuZW5hYmxlZCAmJlxuICAgICAgICAgIHJlZGlyZWN0QXV0aEZhaWx1cmUuZXJyb3JzLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cykpXG4gICAgICApIHtcbiAgICAgICAgbmF2aWdhdGUoeyB0bzogcmVkaXJlY3RBdXRoRmFpbHVyZS51cmwgfSk7XG5cbiAgICAgICAgLyogV2Ugc29tZXRpbWVzIGRvbid0IHJlYWxseSB3YW50IHRoaXMgcHJvbWlzZSB0byByZXNvbHZlIHNpbmNlIHRoZXJlJ3Mgbm8gcmVzcG9uc2UgZGF0YSxcbiAgICAgICAgICogbm9yIGRvIHdlIHdhbnQgaXQgdG8gcmVqZWN0IGJlY2F1c2UgdGhhdCB3b3VsZCB0cmlnZ2VyIGVycm9yIGhhbmRsaW5nLiBXZSBpbnN0ZWFkXG4gICAgICAgICAqIHdhbnQgaXQgdG8gcmVtYWluIGluIHBlbmRpbmcgc3RhdHVzIHdoaWxlIHRoZSBuYXZpZ2F0aW9uIG9jY3Vycy5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiByZWRpcmVjdEF1dGhGYWlsdXJlLnJlc29sdmVQcm9taXNlXG4gICAgICAgICAgPyAoUHJvbWlzZS5yZXNvbHZlKCkgYXMgdW5rbm93biBhcyBQcm9taXNlPEZldGNoUmVzcG9uc2U+KVxuICAgICAgICAgIDogbmV3IFByb21pc2U8RmV0Y2hSZXNwb25zZT4oKCkgPT4ge30pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXR0ZW1wdCB0byBkb3dubG9hZCBhIHJlc3BvbnNlIGJvZHksIGlmIGl0IGhhcyBvbmVcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKS50aGVuKFxuICAgICAgICAgIChyZXNwb25zZVRleHQpID0+IHtcbiAgICAgICAgICAgIGxldCByZXNwb25zZUJvZHkgPSByZXNwb25zZVRleHQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXNwb25zZUJvZHkgPSBKU09OLnBhcnNlKHJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgLy8gU2VydmVyIGRpZG4ndCByZXNwb25kIHdpdGgganNvbiwgc28ganVzdCBnbyB3aXRoIHRoZSByZXNwb25zZSB0ZXh0IHN0cmluZ1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBNYWtlIHRoZSBmZXRjaCBwcm9taXNlIGdvIGludG8gXCJyZWplY3RlZFwiIHN0YXR1cywgd2l0aCB0aGUgYmVzdFxuICAgICAgICAgICAgICogcG9zc2libGUgc3RhY2t0cmFjZSBhbmQgZXJyb3IgbWVzc2FnZS5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IE9wZW5tcnNGZXRjaEVycm9yKFxuICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICByZXNwb25zZUJvZHksXG4gICAgICAgICAgICAgIHJlcXVlc3RTdGFja3RyYWNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgLyogV2Ugd2VyZW4ndCBhYmxlIHRvIGRvd25sb2FkIGEgcmVzcG9uc2UgYm9keSBmb3IgdGhpcyBlcnJvci5cbiAgICAgICAgICAgICAqIFRpbWUgdG8ganVzdCBnaXZlIHRoZSBiZXN0IHBvc3NpYmxlIHN0YWNrdHJhY2UgYW5kIGVycm9yIG1lc3NhZ2UuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRocm93IG5ldyBPcGVubXJzRmV0Y2hFcnJvcih1cmwsIHJlc3BvbnNlLCBudWxsLCByZXF1ZXN0U3RhY2t0cmFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIG9wZW5tcnNPYnNlcnZhYmxlRmV0Y2ggZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBvcGVubXJzRmV0Y2hcbiAqIHRoYXQgcmV0dXJucyBhbiBbT2JzZXJ2YWJsZV0oaHR0cHM6Ly9yeGpzLWRldi5maXJlYmFzZWFwcC5jb20vZ3VpZGUvb2JzZXJ2YWJsZSlcbiAqIGluc3RlYWQgb2YgYSBwcm9taXNlLiBJdCBleGlzdHMgaW4gY2FzZSB1c2luZyBhbiBPYnNlcnZhYmxlIGlzXG4gKiBwcmVmZXJyZWQgb3IgbW9yZSBjb252ZW5pZW50IHRoYW4gYSBwcm9taXNlLlxuICpcbiAqIEBwYXJhbSB1cmwgU2VlIFtbb3Blbm1yc0ZldGNoXV1cbiAqIEBwYXJhbSBmZXRjaEluaXQgU2VlIFtbb3Blbm1yc0ZldGNoXV1cbiAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBwcm9kdWNlcyBleGFjdGx5IG9uZSBSZXNwb25zZSBvYmplY3QuXG4gKiBUaGUgcmVzcG9uc2Ugb2JqZWN0IGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgZm9yIFtbb3Blbm1yc0ZldGNoXV0uXG4gKlxuICogIyMjIyBFeGFtcGxlXG4gKlxuICogYGBganNcbiAqIGltcG9ydCB7IG9wZW5tcnNPYnNlcnZhYmxlRmV0Y2ggfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogY29uc3Qgc3Vic2NyaXB0aW9uID0gb3Blbm1yc09ic2VydmFibGVGZXRjaCgnL3dzL3Jlc3QvdjEvc2Vzc2lvbicpLnN1YnNjcmliZShcbiAqICAgcmVzcG9uc2UgPT4gY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YSksXG4gKiAgIGVyciA9PiB7dGhyb3cgZXJyfSxcbiAqICAgKCkgPT4gY29uc29sZS5sb2coJ2ZpbmlzaGVkJylcbiAqIClcbiAqIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gKiBgYGBcbiAqXG4gKiAjIyMjIENhbmNlbGxhdGlvblxuICpcbiAqIFRvIGNhbmNlbCB0aGUgbmV0d29yayByZXF1ZXN0LCBzaW1wbHkgY2FsbCBgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7YFxuICpcbiAqIEBjYXRlZ29yeSBBUElcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wZW5tcnNPYnNlcnZhYmxlRmV0Y2g8VD4oXG4gIHVybDogc3RyaW5nLFxuICBmZXRjaEluaXQ6IEZldGNoQ29uZmlnID0ge31cbikge1xuICBpZiAodHlwZW9mIGZldGNoSW5pdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG9wZW5tcnNPYnNlcnZhYmxlRmV0Y2ggbXVzdCBiZSBlaXRoZXIgb21pdHRlZCBvciBhbiBvYmplY3RcIlxuICAgICk7XG4gIH1cblxuICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgZmV0Y2hJbml0LnNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7XG5cbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEZldGNoUmVzcG9uc2U8VD4+KChvYnNlcnZlcikgPT4ge1xuICAgIGxldCBoYXNSZXNwb25zZSA9IGZhbHNlO1xuXG4gICAgb3Blbm1yc0ZldGNoKHVybCwgZmV0Y2hJbml0KS50aGVuKFxuICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGhhc1Jlc3BvbnNlID0gdHJ1ZTtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXNwb25zZSk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBoYXNSZXNwb25zZSA9IHRydWU7XG4gICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIWhhc1Jlc3BvbnNlKSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgT3Blbm1yc0ZldGNoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHVybDogc3RyaW5nLFxuICAgIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgICByZXNwb25zZUJvZHk6IFJlc3BvbnNlQm9keSB8IG51bGwsXG4gICAgcmVxdWVzdFN0YWNrdHJhY2U6IEVycm9yXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tZXNzYWdlID0gYFNlcnZlciByZXNwb25kZWQgd2l0aCAke3Jlc3BvbnNlLnN0YXR1c30gKCR7cmVzcG9uc2Uuc3RhdHVzVGV4dH0pIGZvciB1cmwgJHt1cmx9LiBDaGVjayBlcnIucmVzcG9uc2VCb2R5IG9yIG5ldHdvcmsgdGFiIGluIGRldiB0b29scyBmb3IgbW9yZSBpbmZvYDtcbiAgICByZXF1ZXN0U3RhY2t0cmFjZS5tZXNzYWdlID0gdGhpcy5tZXNzYWdlO1xuICAgIHRoaXMucmVzcG9uc2VCb2R5ID0gcmVzcG9uc2VCb2R5O1xuICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICB0aGlzLnN0YWNrID0gYFN0YWNrdHJhY2UgZm9yIG91dGdvaW5nIHJlcXVlc3Q6XFxuJHtyZXF1ZXN0U3RhY2t0cmFjZS5zdGFja31cXG5TdGFja3RyYWNlIGZvciBpbmNvbWluZyByZXNwb25zZTpcXG4ke3RoaXMuc3RhY2t9YDtcbiAgfVxuICByZXNwb25zZTogUmVzcG9uc2U7XG4gIHJlc3BvbnNlQm9keTogc3RyaW5nIHwgRmV0Y2hSZXNwb25zZUpzb24gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoQ29uZmlnIGV4dGVuZHMgT21pdDxSZXF1ZXN0SW5pdCwgXCJib2R5XCIgfCBcImhlYWRlcnNcIj4ge1xuICBoZWFkZXJzPzogRmV0Y2hIZWFkZXJzO1xuICBib2R5PzogRmV0Y2hCb2R5IHwgc3RyaW5nO1xufVxuXG50eXBlIFJlc3BvbnNlQm9keSA9IHN0cmluZyB8IEZldGNoUmVzcG9uc2VKc29uO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoSGVhZGVycyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bGw7XG59XG5cbmludGVyZmFjZSBGZXRjaEJvZHkge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hSZXNwb25zZUpzb24ge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG4iXSwibmFtZXMiOlsiT2JzZXJ2YWJsZSIsImlzUGxhaW5PYmplY3QiLCJnZXRDb25maWciLCJuYXZpZ2F0ZSIsInJlc3RCYXNlVXJsIiwiZmhpckJhc2VVcmwiLCJzZXNzaW9uRW5kcG9pbnQiLCJtYWtlVXJsIiwicGF0aCIsIndpbmRvdyIsIm9wZW5tcnNCYXNlIiwib3Blbm1yc0ZldGNoIiwiZmV0Y2hJbml0IiwiRXJyb3IiLCJ1cmwiLCJoZWFkZXJzIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJBY2NlcHQiLCJzdGFydHNXaXRoIiwidXJsVXJsIiwiVVJMIiwibG9jYXRpb24iLCJ0b1N0cmluZyIsInNlYXJjaFBhcmFtcyIsImhhcyIsInNldCIsInJlcXVlc3RTdGFja3RyYWNlIiwiZmV0Y2giLCJ0aGVuIiwiciIsInJlc3BvbnNlIiwicmVkaXJlY3RBdXRoRmFpbHVyZSIsIm9rIiwic3RhdHVzIiwiZGF0YSIsInRleHQiLCJyZXNwb25zZVRleHQiLCJwYXJzZSIsImVyciIsImVuYWJsZWQiLCJlcnJvcnMiLCJpbmNsdWRlcyIsInRvIiwicmVzb2x2ZVByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3BvbnNlQm9keSIsIk9wZW5tcnNGZXRjaEVycm9yIiwib3Blbm1yc09ic2VydmFibGVGZXRjaCIsImFib3J0Q29udHJvbGxlciIsIkFib3J0Q29udHJvbGxlciIsInNpZ25hbCIsIm9ic2VydmVyIiwiaGFzUmVzcG9uc2UiLCJuZXh0IiwiY29tcGxldGUiLCJlcnJvciIsImFib3J0IiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJzdGFjayJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-api/src/openmrs-fetch.ts\n");
6458
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"OpenmrsFetchError\": () => (/* binding */ OpenmrsFetchError),\n/* harmony export */ \"fhirBaseUrl\": () => (/* binding */ fhirBaseUrl),\n/* harmony export */ \"makeUrl\": () => (/* binding */ makeUrl),\n/* harmony export */ \"openmrsFetch\": () => (/* binding */ openmrsFetch),\n/* harmony export */ \"openmrsObservableFetch\": () => (/* binding */ openmrsObservableFetch),\n/* harmony export */ \"restBaseUrl\": () => (/* binding */ restBaseUrl),\n/* harmony export */ \"sessionEndpoint\": () => (/* binding */ sessionEndpoint)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/isPlainObject */ \"../../../node_modules/lodash-es/isPlainObject.js\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/** @module @category API */ function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [\n null\n ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nvar _typeof = function(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\nvar restBaseUrl = \"/ws/rest/v1/\";\nvar fhirBaseUrl = \"/ws/fhir2/R4\";\nvar sessionEndpoint = \"\".concat(restBaseUrl, \"session\");\n/**\n * Append `path` to the OpenMRS SPA base.\n *\n * #### Example\n *\n * ```ts\n * makeUrl('/foo/bar');\n * // => '/openmrs/foo/bar'\n * ```\n */ function makeUrl(path) {\n return window.openmrsBase + path;\n}\n/**\n * The openmrsFetch function is a wrapper around the\n * [browser's built-in fetch function](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch),\n * with extra handling for OpenMRS-specific API behaviors, such as\n * request headers, authentication, authorization, and the API urls.\n *\n * @param path A string url to make the request to. Note that the\n * openmrs base url (by default `/openmrs`) will be automatically\n * prepended to the URL, so there is no need to include it.\n * @param fetchInit A [fetch init object](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax).\n * Note that the `body` property does not need to be `JSON.stringify()`ed\n * because openmrsFetch will do that for you.\n * @returns A [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)\n * that resolves with a [Response object](https://developer.mozilla.org/en-US/docs/Web/API/Response).\n * Note that the openmrs version of the Response object has already\n * downloaded the HTTP response body as json, and has an additional\n * `data` property with the HTTP response json as a javascript object.\n *\n * #### Example\n * ```js\n * import { openmrsFetch } from '@openmrs/esm-api'\n * const abortController = new AbortController();\n * openmrsFetch('/ws/rest/v1/session', {signal: abortController.signal})\n * .then(response => {\n * console.log(response.data.authenticated)\n * })\n * .catch(err => {\n * console.error(err.status);\n * })\n * abortController.abort();\n * openmrsFetch('/ws/rest/v1/session', {\n * method: 'POST',\n * body: {\n * username: 'hi',\n * password: 'there',\n * }\n * })\n * ```\n *\n * #### Cancellation\n *\n * To cancel a network request, use an\n * [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort).\n * It is best practice to cancel your network requests when the user\n * navigates away from a page while the request is pending request, to\n * free up memory and network resources and to prevent race conditions.\n *\n * @category API\n */ function openmrsFetch(path) {\n var fetchInit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (typeof path !== \"string\") {\n throw Error(\"The first argument to @openmrs/api's openmrsFetch function must be a url string\");\n }\n if (typeof fetchInit !== \"object\") {\n throw Error(\"The second argument to @openmrs/api's openmrsFetch function must be a plain object.\");\n }\n // @ts-ignore\n if (!window.openmrsBase) {\n throw Error(\"@openmrs/api is running in a browser that doesn't have window.openmrsBase, which is provided by openmrs-module-spa's HTML file.\");\n }\n // ensure path starts with /\n if (path[0] !== \"/\") {\n path = \"/\" + path;\n }\n // Prefix the url with the openmrs spa base\n var url = makeUrl(path);\n // We're going to need some headers\n if (!fetchInit.headers) {\n fetchInit.headers = {};\n }\n /* Automatically stringify javascript objects being sent in the\n * request body.\n */ if ((0,lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(fetchInit.body)) {\n fetchInit.body = JSON.stringify(fetchInit.body);\n }\n /* Add a request header to tell the server to respond with json,\n * since frontend code almost always wants json and the OpenMRS\n * server won't give you json unless you explicitly ask for it.\n * If a different Accept header is preferred, pass it into the fetchInit.\n * If no Accept header is desired, pass it in explicitly as null.\n */ if (typeof fetchInit.headers.Accept === \"undefined\") {\n fetchInit.headers.Accept = \"application/json\";\n }\n if (fetchInit.headers.Accept === null) {\n delete fetchInit.headers.Accept;\n }\n /* This tells the OpenMRS REST API not to return a WWW-Authenticate\n * header. Returning that header is useful when using the API, but\n * not from a UI.\n */ if (path.startsWith(restBaseUrl) && typeof fetchInit.headers[\"Disable-WWW-Authenticate\"] === \"undefined\") {\n fetchInit.headers[\"Disable-WWW-Authenticate\"] = \"true\";\n }\n if (path.startsWith(fhirBaseUrl)) {\n var urlUrl = new URL(url, window.location.toString());\n if (!urlUrl.searchParams.has(\"_summary\")) {\n urlUrl.searchParams.set(\"_summary\", \"data\");\n url = urlUrl.toString();\n }\n }\n /* We capture the stacktrace before making the request, so that if an error occurs we can\n * log a full stacktrace that includes the code that made the request and handled the response\n * Otherwise, we could run into situations where the stacktrace doesn't even show which code\n * called @openmrs/api.\n */ var requestStacktrace = Error();\n return window.fetch(url, fetchInit).then(function() {\n var _ref = _asyncToGenerator(function(r) {\n var response, redirectAuthFailure;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n response = r;\n if (!response.ok) return [\n 3,\n 1\n ];\n if (response.status === 204) {\n /* HTTP 204 - No Content\n * We should not try to download the empty response as json. Instead,\n * we return null since there is no response body.\n */ response.data = null;\n return [\n 2,\n response\n ];\n } else {\n // HTTP 200s - The request succeeded\n return [\n 2,\n response.clone().text().then(function(responseText) {\n try {\n if (responseText) {\n response.data = JSON.parse(responseText);\n }\n } catch (err) {\n // Server didn't respond with json\n }\n return response;\n })\n ];\n }\n return [\n 3,\n 3\n ];\n case 1:\n return [\n 4,\n (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)(\"@openmrs/esm-api\")\n ];\n case 2:\n redirectAuthFailure = _state.sent().redirectAuthFailure;\n if (url === makeUrl(sessionEndpoint) && response.status === 403 || redirectAuthFailure.enabled && redirectAuthFailure.errors.includes(response.status)) {\n (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.navigate)({\n to: redirectAuthFailure.url\n });\n /* We sometimes don't really want this promise to resolve since there's no response data,\n * nor do we want it to reject because that would trigger error handling. We instead\n * want it to remain in pending status while the navigation occurs.\n */ return [\n 2,\n redirectAuthFailure.resolvePromise ? Promise.resolve() : new Promise(function() {})\n ];\n } else {\n // Attempt to download a response body, if it has one\n return [\n 2,\n response.clone().text().then(function(responseText) {\n var responseBody = responseText;\n try {\n responseBody = JSON.parse(responseText);\n } catch (err) {\n // Server didn't respond with json, so just go with the response text string\n }\n /* Make the fetch promise go into \"rejected\" status, with the best\n * possible stacktrace and error message.\n */ throw new OpenmrsFetchError(url, response, responseBody, requestStacktrace);\n }, function(err) {\n /* We weren't able to download a response body for this error.\n * Time to just give the best possible stacktrace and error message.\n */ throw new OpenmrsFetchError(url, response, null, requestStacktrace);\n })\n ];\n }\n _state.label = 3;\n case 3:\n return [\n 2\n ];\n }\n });\n });\n return function(r) {\n return _ref.apply(this, arguments);\n };\n }());\n}\n/**\n * The openmrsObservableFetch function is a wrapper around openmrsFetch\n * that returns an [Observable](https://rxjs-dev.firebaseapp.com/guide/observable)\n * instead of a promise. It exists in case using an Observable is\n * preferred or more convenient than a promise.\n *\n * @param url See [[openmrsFetch]]\n * @param fetchInit See [[openmrsFetch]]\n * @returns An Observable that produces exactly one Response object.\n * The response object is exactly the same as for [[openmrsFetch]].\n *\n * #### Example\n *\n * ```js\n * import { openmrsObservableFetch } from '@openmrs/esm-api'\n * const subscription = openmrsObservableFetch('/ws/rest/v1/session').subscribe(\n * response => console.log(response.data),\n * err => {throw err},\n * () => console.log('finished')\n * )\n * subscription.unsubscribe()\n * ```\n *\n * #### Cancellation\n *\n * To cancel the network request, simply call `subscription.unsubscribe();`\n *\n * @category API\n */ function openmrsObservableFetch(url) {\n var fetchInit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (typeof fetchInit !== \"object\") {\n throw Error(\"The second argument to openmrsObservableFetch must be either omitted or an object\");\n }\n var abortController = new AbortController();\n fetchInit.signal = abortController.signal;\n return new rxjs__WEBPACK_IMPORTED_MODULE_0__.Observable(function(observer) {\n var hasResponse = false;\n openmrsFetch(url, fetchInit).then(function(response) {\n hasResponse = true;\n observer.next(response);\n observer.complete();\n }, function(err) {\n hasResponse = true;\n observer.error(err);\n });\n return function() {\n if (!hasResponse) {\n abortController.abort();\n }\n };\n });\n}\nvar OpenmrsFetchError = /*#__PURE__*/ function(Error1) {\n \"use strict\";\n _inherits(OpenmrsFetchError, Error1);\n var _super = _createSuper(OpenmrsFetchError);\n function OpenmrsFetchError(url, response, responseBody, requestStacktrace) {\n _classCallCheck(this, OpenmrsFetchError);\n var _this;\n _this = _super.call(this);\n _this.message = \"Server responded with \".concat(response.status, \" (\").concat(response.statusText, \") for url \").concat(url, \". Check err.responseBody or network tab in dev tools for more info\");\n requestStacktrace.message = _this.message;\n _this.responseBody = responseBody;\n _this.response = response;\n _this.stack = \"Stacktrace for outgoing request:\\n\".concat(requestStacktrace.stack, \"\\nStacktrace for incoming response:\\n\").concat(_this.stack);\n return _this;\n }\n return OpenmrsFetchError;\n}(_wrapNativeSuper(Error));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL29wZW5tcnMtZmV0Y2gudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEIsR0FDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFrQztBQUNrQjtBQUNNO0FBR25ELElBQU1JLGNBQWMsZUFBZTtBQUVuQyxJQUFNQyxjQUFjLGVBQWU7QUFFbkMsSUFBTUMsa0JBQWtCLEdBQWUsT0FBWkYsYUFBWSxXQUFTO0FBRXZEOzs7Ozs7Ozs7Q0FTQyxHQUNNLFNBQVNHLFFBQVFDLElBQVksRUFBRTtJQUNwQyxPQUFPQyxPQUFPQyxXQUFXLEdBQUdGO0FBQzlCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0RDLEdBQ00sU0FBU0csYUFDZEgsSUFBWSxFQUVlO1FBRDNCSSxZQUFBQSxpRUFBeUIsQ0FBQyxDQUFDO0lBRTNCLElBQUksT0FBT0osU0FBUyxVQUFVO1FBQzVCLE1BQU1LLE1BQ0osbUZBQ0E7SUFDSixDQUFDO0lBRUQsSUFBSSxPQUFPRCxjQUFjLFVBQVU7UUFDakMsTUFBTUMsTUFDSix1RkFDQTtJQUNKLENBQUM7SUFFRCxhQUFhO0lBQ2IsSUFBSSxDQUFDSixPQUFPQyxXQUFXLEVBQUU7UUFDdkIsTUFBTUcsTUFDSixtSUFDQTtJQUNKLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsSUFBSUwsSUFBSSxDQUFDLEVBQUUs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Ozs7UUFRVCxNQUFLVyxPQUFPLEdBQUcseUJBQTZDN0IsT0FBcEJBLFNBQVNHLE1BQU0sRUFBQyxNQUFvQ3JCLE9BQWhDa0IsU0FBUzhCLFVBQVUsRUFBQyxjQUFnQixPQUFKaEQsS0FBSTtRQUNoR2Msa0JBQWtCaUMsT0FBTyxHQUFHLE1BQUtBLE9BQU87UUFDeEMsTUFBS1osWUFBWSxHQUFHQTtRQUNwQixNQUFLakIsUUFBUSxHQUFHQTtRQUNoQixNQUFLK0IsS0FBSyxHQUFHLHFDQUFvRyxPQUEvRG5DLGtCQUFrQm1DLEtBQUssRUFBQyx5Q0FBa0QsT0FBWCxNQUFLQSxLQUFLOzs7V0FabEhiO21CQUEwQnJDLFFBZ0J0QyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL29wZW5tcnMtZmV0Y2gudHM/ZGVhMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQVBJICovXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gXCJsb2Rhc2gtZXMvaXNQbGFpbk9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnLCBuYXZpZ2F0ZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBGZXRjaFJlc3BvbnNlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IHJlc3RCYXNlVXJsID0gXCIvd3MvcmVzdC92MS9cIjtcblxuZXhwb3J0IGNvbnN0IGZoaXJCYXNlVXJsID0gXCIvd3MvZmhpcjIvUjRcIjtcblxuZXhwb3J0IGNvbnN0IHNlc3Npb25FbmRwb2ludCA9IGAke3Jlc3RCYXNlVXJsfXNlc3Npb25gO1xuXG4vKipcbiAqIEFwcGVuZCBgcGF0aGAgdG8gdGhlIE9wZW5NUlMgU1BBIGJhc2UuXG4gKlxuICogIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHNcbiAqIG1ha2VVcmwoJy9mb28vYmFyJyk7XG4gKiAvLyA9PiAnL29wZW5tcnMvZm9vL2JhcidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVVybChwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHdpbmRvdy5vcGVubXJzQmFzZSArIHBhdGg7XG59XG5cbi8qKlxuICogVGhlIG9wZW5tcnNGZXRjaCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZVxuICogW2Jyb3dzZXIncyBidWlsdC1pbiBmZXRjaCBmdW5jdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaCksXG4gKiB3aXRoIGV4dHJhIGhhbmRsaW5nIGZvciBPcGVuTVJTLXNwZWNpZmljIEFQSSBiZWhhdmlvcnMsIHN1Y2ggYXNcbiAqIHJlcXVlc3QgaGVhZGVycywgYXV0aGVudGljYXRpb24sIGF1dGhvcml6YXRpb24sIGFuZCB0aGUgQVBJIHVybHMuXG4gKlxuICogQHBhcmFtIHBhdGggQSBzdHJpbmcgdXJsIHRvIG1ha2UgdGhlIHJlcXVlc3QgdG8uIE5vdGUgdGhhdCB0aGVcbiAqICAgb3Blbm1ycyBiYXNlIHVybCAoYnkgZGVmYXVsdCBgL29wZW5tcnNgKSB3aWxsIGJlIGF1dG9tYXRpY2FsbHlcbiAqICAgcHJlcGVuZGVkIHRvIHRoZSBVUkwsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW5jbHVkZSBpdC5cbiAqIEBwYXJhbSBmZXRjaEluaXQgQSBbZmV0Y2ggaW5pdCBvYmplY3RdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlL2ZldGNoI1N5bnRheCkuXG4gKiAgIE5vdGUgdGhhdCB0aGUgYGJvZHlgIHByb3BlcnR5IGRvZXMgbm90IG5lZWQgdG8gYmUgYEpTT04uc3RyaW5naWZ5KClgZWRcbiAqICAgYmVjYXVzZSBvcGVubXJzRmV0Y2ggd2lsbCBkbyB0aGF0IGZvciB5b3UuXG4gKiBAcmV0dXJucyBBIFtQcm9taXNlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9Qcm9taXNlKVxuICogICB0aGF0IHJlc29sdmVzIHdpdGggYSBbUmVzcG9uc2Ugb2JqZWN0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVzcG9uc2UpLlxuICogICBOb3RlIHRoYXQgdGhlIG9wZW5tcnMgdmVyc2lvbiBvZiB0aGUgUmVzcG9uc2Ugb2JqZWN0IGhhcyBhbHJlYWR5XG4gKiAgIGRvd25sb2FkZWQgdGhlIEhUVFAgcmVzcG9uc2UgYm9keSBhcyBqc29uLCBhbmQgaGFzIGFuIGFkZGl0aW9uYWxcbiAqICAgYGRhdGFgIHByb3BlcnR5IHdpdGggdGhlIEhUVFAgcmVzcG9uc2UganNvbiBhcyBhIGphdmFzY3JpcHQgb2JqZWN0LlxuICpcbiAqICMjIyMgRXhhbXBsZVxuICogYGBganNcbiAqIGltcG9ydCB7IG9wZW5tcnNGZXRjaCB9IGZyb20gJ0BvcGVubXJzL2VzbS1hcGknXG4gKiBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gKiBvcGVubXJzRmV0Y2goJy93cy9yZXN0L3YxL3Nlc3Npb24nLCB7c2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsfSlcbiAqICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEuYXV0aGVudGljYXRlZClcbiAqICAgfSlcbiAqICAgLmNhdGNoKGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhdHVzKTtcbiAqICAgfSlcbiAqIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICogb3Blbm1yc0ZldGNoKCcvd3MvcmVzdC92MS9zZXNzaW9uJywge1xuICogICBtZXRob2Q6ICdQT1NUJyxcbiAqICAgYm9keToge1xuICogICAgIHVzZXJuYW1lOiAnaGknLFxuICogICAgIHBhc3N3b3JkOiAndGhlcmUnLFxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogIyMjIyBDYW5jZWxsYXRpb25cbiAqXG4gKiBUbyBjYW5jZWwgYSBuZXR3b3JrIHJlcXVlc3QsIHVzZSBhblxuICogW0Fib3J0Q29udHJvbGxlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Fib3J0Q29udHJvbGxlci9hYm9ydCkuXG4gKiBJdCBpcyBiZXN0IHByYWN0aWNlIHRvIGNhbmNlbCB5b3VyIG5ldHdvcmsgcmVxdWVzdHMgd2hlbiB0aGUgdXNlclxuICogbmF2aWdhdGVzIGF3YXkgZnJvbSBhIHBhZ2Ugd2hpbGUgdGhlIHJlcXVlc3QgaXMgcGVuZGluZyByZXF1ZXN0LCB0b1xuICogZnJlZSB1cCBtZW1vcnkgYW5kIG5ldHdvcmsgcmVzb3VyY2VzIGFuZCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucy5cbiAqXG4gKiBAY2F0ZWdvcnkgQVBJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcGVubXJzRmV0Y2g8VCA9IGFueT4oXG4gIHBhdGg6IHN0cmluZyxcbiAgZmV0Y2hJbml0OiBGZXRjaENvbmZpZyA9IHt9XG4pOiBQcm9taXNlPEZldGNoUmVzcG9uc2U8VD4+IHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBcIlRoZSBmaXJzdCBhcmd1bWVudCB0byBAb3Blbm1ycy9hcGkncyBvcGVubXJzRmV0Y2ggZnVuY3Rpb24gbXVzdCBiZSBhIHVybCBzdHJpbmdcIlxuICAgICk7XG4gIH1cblxuICBpZiAodHlwZW9mIGZldGNoSW5pdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIEBvcGVubXJzL2FwaSdzIG9wZW5tcnNGZXRjaCBmdW5jdGlvbiBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0LlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgaWYgKCF3aW5kb3cub3Blbm1yc0Jhc2UpIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwiQG9wZW5tcnMvYXBpIGlzIHJ1bm5pbmcgaW4gYSBicm93c2VyIHRoYXQgZG9lc24ndCBoYXZlIHdpbmRvdy5vcGVubXJzQmFzZSwgd2hpY2ggaXMgcHJvdmlkZWQgYnkgb3Blbm1ycy1tb2R1bGUtc3BhJ3MgSFRNTCBmaWxlLlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIGVuc3VyZSBwYXRoIHN0YXJ0cyB3aXRoIC9cbiAgaWYgKHBhdGhbMF0gIT09IFwiL1wiKSB7XG4gICAgcGF0aCA9IFwiL1wiICsgcGF0aDtcbiAgfVxuXG4gIC8vIFByZWZpeCB0aGUgdXJsIHdpdGggdGhlIG9wZW5tcnMgc3BhIGJhc2VcbiAgbGV0IHVybDogc3RyaW5nID0gbWFrZVVybChwYXRoKTtcblxuICAvLyBXZSdyZSBnb2luZyB0byBuZWVkIHNvbWUgaGVhZGVyc1xuICBpZiAoIWZldGNoSW5pdC5oZWFkZXJzKSB7XG4gICAgZmV0Y2hJbml0LmhlYWRlcnMgPSB7fTtcbiAgfVxuXG4gIC8qIEF1dG9tYXRpY2FsbHkgc3RyaW5naWZ5IGphdmFzY3JpcHQgb2JqZWN0cyBiZWluZyBzZW50IGluIHRoZVxuICAgKiByZXF1ZXN0IGJvZHkuXG4gICAqL1xuICBpZiAoaXNQbGFpbk9iamVjdChmZXRjaEluaXQuYm9keSkpIHtcbiAgICBmZXRjaEluaXQuYm9keSA9IEpTT04uc3RyaW5naWZ5KGZldGNoSW5pdC5ib2R5KTtcbiAgfVxuXG4gIC8qIEFkZCBhIHJlcXVlc3QgaGVhZGVyIHRvIHRlbGwgdGhlIHNlcnZlciB0byByZXNwb25kIHdpdGgganNvbixcbiAgICogc2luY2UgZnJvbnRlbmQgY29kZSBhbG1vc3QgYWx3YXlzIHdhbnRzIGpzb24gYW5kIHRoZSBPcGVuTVJTXG4gICAqIHNlcnZlciB3b24ndCBnaXZlIHlvdSBqc29uIHVubGVzcyB5b3UgZXhwbGljaXRseSBhc2sgZm9yIGl0LlxuICAgKiBJZiBhIGRpZmZlcmVudCBBY2NlcHQgaGVhZGVyIGlzIHByZWZlcnJlZCwgcGFzcyBpdCBpbnRvIHRoZSBmZXRjaEluaXQuXG4gICAqIElmIG5vIEFjY2VwdCBoZWFkZXIgaXMgZGVzaXJlZCwgcGFzcyBpdCBpbiBleHBsaWNpdGx5IGFzIG51bGwuXG4gICAqL1xuICBpZiAodHlwZW9mIGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9IFwiYXBwbGljYXRpb24vanNvblwiO1xuICB9XG5cbiAgaWYgKGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9PT0gbnVsbCkge1xuICAgIGRlbGV0ZSBmZXRjaEluaXQuaGVhZGVycy5BY2NlcHQ7XG4gIH1cblxuICAvKiBUaGlzIHRlbGxzIHRoZSBPcGVuTVJTIFJFU1QgQVBJIG5vdCB0byByZXR1cm4gYSBXV1ctQXV0aGVudGljYXRlXG4gICAqIGhlYWRlci4gUmV0dXJuaW5nIHRoYXQgaGVhZGVyIGlzIHVzZWZ1bCB3aGVuIHVzaW5nIHRoZSBBUEksIGJ1dFxuICAgKiBub3QgZnJvbSBhIFVJLlxuICAgKi9cbiAgaWYgKFxuICAgIHBhdGguc3RhcnRzV2l0aChyZXN0QmFzZVVybCkgJiZcbiAgICB0eXBlb2YgZmV0Y2hJbml0LmhlYWRlcnNbXCJEaXNhYmxlLVdXVy1BdXRoZW50aWNhdGVcIl0gPT09IFwidW5kZWZpbmVkXCJcbiAgKSB7XG4gICAgZmV0Y2hJbml0LmhlYWRlcnNbXCJEaXNhYmxlLVdXVy1BdXRoZW50aWNhdGVcIl0gPSBcInRydWVcIjtcbiAgfVxuXG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoZmhpckJhc2VVcmwpKSB7XG4gICAgY29uc3QgdXJsVXJsID0gbmV3IFVSTCh1cmwsIHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpKTtcbiAgICBpZiAoIXVybFVybC5zZWFyY2hQYXJhbXMuaGFzKFwiX3N1bW1hcnlcIikpIHtcbiAgICAgIHVybFVybC5zZWFyY2hQYXJhbXMuc2V0KFwiX3N1bW1hcnlcIiwgXCJkYXRhXCIpO1xuICAgICAgdXJsID0gdXJsVXJsLnRvU3RyaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyogV2UgY2FwdHVyZSB0aGUgc3RhY2t0cmFjZSBiZWZvcmUgbWFraW5nIHRoZSByZXF1ZXN0LCBzbyB0aGF0IGlmIGFuIGVycm9yIG9jY3VycyB3ZSBjYW5cbiAgICogbG9nIGEgZnVsbCBzdGFja3RyYWNlIHRoYXQgaW5jbHVkZXMgdGhlIGNvZGUgdGhhdCBtYWRlIHRoZSByZXF1ZXN0IGFuZCBoYW5kbGVkIHRoZSByZXNwb25zZVxuICAgKiBPdGhlcndpc2UsIHdlIGNvdWxkIHJ1biBpbnRvIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHN0YWNrdHJhY2UgZG9lc24ndCBldmVuIHNob3cgd2hpY2ggY29kZVxuICAgKiBjYWxsZWQgQG9wZW5tcnMvYXBpLlxuICAgKi9cbiAgY29uc3QgcmVxdWVzdFN0YWNrdHJhY2UgPSBFcnJvcigpO1xuXG4gIHJldHVybiB3aW5kb3cuZmV0Y2godXJsLCBmZXRjaEluaXQgYXMgUmVxdWVzdEluaXQpLnRoZW4oYXN5bmMgKHIpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IHIgYXMgRmV0Y2hSZXNwb25zZTxUPjtcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICAvKiBIVFRQIDIwNCAtIE5vIENvbnRlbnRcbiAgICAgICAgICogV2Ugc2hvdWxkIG5vdCB0cnkgdG8gZG93bmxvYWQgdGhlIGVtcHR5IHJlc3BvbnNlIGFzIGpzb24uIEluc3RlYWQsXG4gICAgICAgICAqIHdlIHJldHVybiBudWxsIHNpbmNlIHRoZXJlIGlzIG5vIHJlc3BvbnNlIGJvZHkuXG4gICAgICAgICAqL1xuICAgICAgICByZXNwb25zZS5kYXRhID0gbnVsbCBhcyB1bmtub3duIGFzIFQ7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhUVFAgMjAwcyAtIFRoZSByZXF1ZXN0IHN1Y2NlZWRlZFxuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgIC50ZXh0KClcbiAgICAgICAgICAudGhlbigocmVzcG9uc2VUZXh0KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAocmVzcG9uc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIC8vIFNlcnZlciBkaWRuJ3QgcmVzcG9uZCB3aXRoIGpzb25cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyogSFRUUCByZXNwb25zZSBzdGF0dXMgaXMgbm90IGluIDIwMHMuIFVzdWFsbHkgdGhpcyB3aWxsIG1lYW5cbiAgICAgICAqIGVpdGhlciBIVFRQIDQwMHMgKGJhZCByZXF1ZXN0IGZyb20gYnJvd3Nlcikgb3IgSFRUUCA1MDBzIChzZXJ2ZXIgZXJyb3IpXG4gICAgICAgKiBPdXIgZ29hbCBpcyB0byBjb21lIHVwIHdpdGggYmVzdCBwb3NzaWJsZSBzdGFja3RyYWNlIGFuZCBlcnJvciBtZXNzYWdlXG4gICAgICAgKiB0byBoZWxwIGRldmVsb3BlcnMgdW5kZXJzdGFuZCB0aGUgcHJvYmxlbSBhbmQgZGVidWdcbiAgICAgICAqL1xuXG4gICAgICAvKlxuICAgICAgICpSZWRpcmVjdCB0byBnaXZlbiB1cmwgd2hlbiByZWRpcmVjdCBvbiBhdXRoIGZhaWx1cmUgaXMgZW5hYmxlZFxuICAgICAgICovXG4gICAgICBjb25zdCB7IHJlZGlyZWN0QXV0aEZhaWx1cmUgfSA9IGF3YWl0IGdldENvbmZpZyhcIkBvcGVubXJzL2VzbS1hcGlcIik7XG5cbiAgICAgIGlmIChcbiAgICAgICAgKHVybCA9PT0gbWFrZVVybChzZXNzaW9uRW5kcG9pbnQpICYmIHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAzKSB8fFxuICAgICAgICAocmVkaXJlY3RBdXRoRmFpbHVyZS5lbmFibGVkICYmXG4gICAgICAgICAgcmVkaXJlY3RBdXRoRmFpbHVyZS5lcnJvcnMuaW5jbHVkZXMocmVzcG9uc2Uuc3RhdHVzKSlcbiAgICAgICkge1xuICAgICAgICBuYXZpZ2F0ZSh7IHRvOiByZWRpcmVjdEF1dGhGYWlsdXJlLnVybCB9KTtcblxuICAgICAgICAvKiBXZSBzb21ldGltZXMgZG9uJ3QgcmVhbGx5IHdhbnQgdGhpcyBwcm9taXNlIHRvIHJlc29sdmUgc2luY2UgdGhlcmUncyBubyByZXNwb25zZSBkYXRhLFxuICAgICAgICAgKiBub3IgZG8gd2Ugd2FudCBpdCB0byByZWplY3QgYmVjYXVzZSB0aGF0IHdvdWxkIHRyaWdnZXIgZXJyb3IgaGFuZGxpbmcuIFdlIGluc3RlYWRcbiAgICAgICAgICogd2FudCBpdCB0byByZW1haW4gaW4gcGVuZGluZyBzdGF0dXMgd2hpbGUgdGhlIG5hdmlnYXRpb24gb2NjdXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIHJlZGlyZWN0QXV0aEZhaWx1cmUucmVzb2x2ZVByb21pc2VcbiAgICAgICAgICA/IChQcm9taXNlLnJlc29sdmUoKSBhcyB1bmtub3duIGFzIFByb21pc2U8RmV0Y2hSZXNwb25zZT4pXG4gICAgICAgICAgOiBuZXcgUHJvbWlzZTxGZXRjaFJlc3BvbnNlPigoKSA9PiB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBdHRlbXB0IHRvIGRvd25sb2FkIGEgcmVzcG9uc2UgYm9keSwgaWYgaXQgaGFzIG9uZVxuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgIC50ZXh0KClcbiAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgIChyZXNwb25zZVRleHQpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlQm9keSA9IHJlc3BvbnNlVGV4dDtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNwb25zZUJvZHkgPSBKU09OLnBhcnNlKHJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIFNlcnZlciBkaWRuJ3QgcmVzcG9uZCB3aXRoIGpzb24sIHNvIGp1c3QgZ28gd2l0aCB0aGUgcmVzcG9uc2UgdGV4dCBzdHJpbmdcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8qIE1ha2UgdGhlIGZldGNoIHByb21pc2UgZ28gaW50byBcInJlamVjdGVkXCIgc3RhdHVzLCB3aXRoIHRoZSBiZXN0XG4gICAgICAgICAgICAgICAqIHBvc3NpYmxlIHN0YWNrdHJhY2UgYW5kIGVycm9yIG1lc3NhZ2UuXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgT3Blbm1yc0ZldGNoRXJyb3IoXG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlQm9keSxcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhY2t0cmFjZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgLyogV2Ugd2VyZW4ndCBhYmxlIHRvIGRvd25sb2FkIGEgcmVzcG9uc2UgYm9keSBmb3IgdGhpcyBlcnJvci5cbiAgICAgICAgICAgICAgICogVGltZSB0byBqdXN0IGdpdmUgdGhlIGJlc3QgcG9zc2libGUgc3RhY2t0cmFjZSBhbmQgZXJyb3IgbWVzc2FnZS5cbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIHRocm93IG5ldyBPcGVubXJzRmV0Y2hFcnJvcihcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhY2t0cmFjZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBUaGUgb3Blbm1yc09ic2VydmFibGVGZXRjaCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIG9wZW5tcnNGZXRjaFxuICogdGhhdCByZXR1cm5zIGFuIFtPYnNlcnZhYmxlXShodHRwczovL3J4anMtZGV2LmZpcmViYXNlYXBwLmNvbS9ndWlkZS9vYnNlcnZhYmxlKVxuICogaW5zdGVhZCBvZiBhIHByb21pc2UuIEl0IGV4aXN0cyBpbiBjYXNlIHVzaW5nIGFuIE9ic2VydmFibGUgaXNcbiAqIHByZWZlcnJlZCBvciBtb3JlIGNvbnZlbmllbnQgdGhhbiBhIHByb21pc2UuXG4gKlxuICogQHBhcmFtIHVybCBTZWUgW1tvcGVubXJzRmV0Y2hdXVxuICogQHBhcmFtIGZldGNoSW5pdCBTZWUgW1tvcGVubXJzRmV0Y2hdXVxuICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB0aGF0IHByb2R1Y2VzIGV4YWN0bHkgb25lIFJlc3BvbnNlIG9iamVjdC5cbiAqIFRoZSByZXNwb25zZSBvYmplY3QgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyBmb3IgW1tvcGVubXJzRmV0Y2hdXS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IHsgb3Blbm1yc09ic2VydmFibGVGZXRjaCB9IGZyb20gJ0BvcGVubXJzL2VzbS1hcGknXG4gKiBjb25zdCBzdWJzY3JpcHRpb24gPSBvcGVubXJzT2JzZXJ2YWJsZUZldGNoKCcvd3MvcmVzdC92MS9zZXNzaW9uJykuc3Vic2NyaWJlKFxuICogICByZXNwb25zZSA9PiBjb25zb2xlLmxvZyhyZXNwb25zZS5kYXRhKSxcbiAqICAgZXJyID0+IHt0aHJvdyBlcnJ9LFxuICogICAoKSA9PiBjb25zb2xlLmxvZygnZmluaXNoZWQnKVxuICogKVxuICogc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAqIGBgYFxuICpcbiAqICMjIyMgQ2FuY2VsbGF0aW9uXG4gKlxuICogVG8gY2FuY2VsIHRoZSBuZXR3b3JrIHJlcXVlc3QsIHNpbXBseSBjYWxsIGBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtgXG4gKlxuICogQGNhdGVnb3J5IEFQSVxuICovXG5leHBvcnQgZnVuY3Rpb24gb3Blbm1yc09ic2VydmFibGVGZXRjaDxUPihcbiAgdXJsOiBzdHJpbmcsXG4gIGZldGNoSW5pdDogRmV0Y2hDb25maWcgPSB7fVxuKSB7XG4gIGlmICh0eXBlb2YgZmV0Y2hJbml0ICE9PSBcIm9iamVjdFwiKSB7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBcIlRoZSBzZWNvbmQgYXJndW1lbnQgdG8gb3Blbm1yc09ic2VydmFibGVGZXRjaCBtdXN0IGJlIGVpdGhlciBvbWl0dGVkIG9yIGFuIG9iamVjdFwiXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBmZXRjaEluaXQuc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDtcblxuICByZXR1cm4gbmV3IE9ic2VydmFibGU8RmV0Y2hSZXNwb25zZTxUPj4oKG9ic2VydmVyKSA9PiB7XG4gICAgbGV0IGhhc1Jlc3BvbnNlID0gZmFsc2U7XG5cbiAgICBvcGVubXJzRmV0Y2godXJsLCBmZXRjaEluaXQpLnRoZW4oXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaGFzUmVzcG9uc2UgPSB0cnVlO1xuICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3BvbnNlKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGhhc1Jlc3BvbnNlID0gdHJ1ZTtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghaGFzUmVzcG9uc2UpIHtcbiAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVubXJzRmV0Y2hFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICAgIHJlc3BvbnNlQm9keTogUmVzcG9uc2VCb2R5IHwgbnVsbCxcbiAgICByZXF1ZXN0U3RhY2t0cmFjZTogRXJyb3JcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBgU2VydmVyIHJlc3BvbmRlZCB3aXRoICR7cmVzcG9uc2Uuc3RhdHVzfSAoJHtyZXNwb25zZS5zdGF0dXNUZXh0fSkgZm9yIHVybCAke3VybH0uIENoZWNrIGVyci5yZXNwb25zZUJvZHkgb3IgbmV0d29yayB0YWIgaW4gZGV2IHRvb2xzIGZvciBtb3JlIGluZm9gO1xuICAgIHJlcXVlc3RTdGFja3RyYWNlLm1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2U7XG4gICAgdGhpcy5yZXNwb25zZUJvZHkgPSByZXNwb25zZUJvZHk7XG4gICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgIHRoaXMuc3RhY2sgPSBgU3RhY2t0cmFjZSBmb3Igb3V0Z29pbmcgcmVxdWVzdDpcXG4ke3JlcXVlc3RTdGFja3RyYWNlLnN0YWNrfVxcblN0YWNrdHJhY2UgZm9yIGluY29taW5nIHJlc3BvbnNlOlxcbiR7dGhpcy5zdGFja31gO1xuICB9XG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgcmVzcG9uc2VCb2R5OiBzdHJpbmcgfCBGZXRjaFJlc3BvbnNlSnNvbiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hDb25maWcgZXh0ZW5kcyBPbWl0PFJlcXVlc3RJbml0LCBcImJvZHlcIiB8IFwiaGVhZGVyc1wiPiB7XG4gIGhlYWRlcnM/OiBGZXRjaEhlYWRlcnM7XG4gIGJvZHk/OiBGZXRjaEJvZHkgfCBzdHJpbmc7XG59XG5cbnR5cGUgUmVzcG9uc2VCb2R5ID0gc3RyaW5nIHwgRmV0Y2hSZXNwb25zZUpzb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hIZWFkZXJzIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIEZldGNoQm9keSB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZXRjaFJlc3BvbnNlSnNvbiB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbiJdLCJuYW1lcyI6WyJPYnNlcnZhYmxlIiwiaXNQbGFpbk9iamVjdCIsImdldENvbmZpZyIsIm5hdmlnYXRlIiwicmVzdEJhc2VVcmwiLCJmaGlyQmFzZVVybCIsInNlc3Npb25FbmRwb2ludCIsIm1ha2VVcmwiLCJwYXRoIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJvcGVubXJzRmV0Y2giLCJmZXRjaEluaXQiLCJFcnJvciIsInVybCIsImhlYWRlcnMiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIkFjY2VwdCIsInN0YXJ0c1dpdGgiLCJ1cmxVcmwiLCJVUkwiLCJsb2NhdGlvbiIsInRvU3RyaW5nIiwic2VhcmNoUGFyYW1zIiwiaGFzIiwic2V0IiwicmVxdWVzdFN0YWNrdHJhY2UiLCJmZXRjaCIsInRoZW4iLCJyIiwicmVzcG9uc2UiLCJyZWRpcmVjdEF1dGhGYWlsdXJlIiwib2siLCJzdGF0dXMiLCJkYXRhIiwiY2xvbmUiLCJ0ZXh0IiwicmVzcG9uc2VUZXh0IiwicGFyc2UiLCJlcnIiLCJlbmFibGVkIiwiZXJyb3JzIiwiaW5jbHVkZXMiLCJ0byIsInJlc29sdmVQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXNwb25zZUJvZHkiLCJPcGVubXJzRmV0Y2hFcnJvciIsIm9wZW5tcnNPYnNlcnZhYmxlRmV0Y2giLCJhYm9ydENvbnRyb2xsZXIiLCJBYm9ydENvbnRyb2xsZXIiLCJzaWduYWwiLCJvYnNlcnZlciIsImhhc1Jlc3BvbnNlIiwibmV4dCIsImNvbXBsZXRlIiwiZXJyb3IiLCJhYm9ydCIsIm1lc3NhZ2UiLCJzdGF0dXNUZXh0Iiwic3RhY2siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-api/src/openmrs-fetch.ts\n");
6459
6459
 
6460
6460
  /***/ }),
6461
6461
 
@@ -6873,7 +6873,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
6873
6873
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6874
6874
 
6875
6875
  "use strict";
6876
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.3.2-pre.678-20230425\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
6876
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.3.2-pre.680-20230427\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
6877
6877
 
6878
6878
  /***/ }),
6879
6879
 
@@ -11919,8 +11919,8 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
11919
11919
  /******/ var promises = [];
11920
11920
  /******/ switch(name) {
11921
11921
  /******/ case "default": {
11922
- /******/ register("@openmrs/esm-framework/src/internal", "4.3.2-pre.678", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
11923
- /******/ register("@openmrs/esm-framework", "4.3.2-pre.678", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
11922
+ /******/ register("@openmrs/esm-framework/src/internal", "4.3.2-pre.680", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
11923
+ /******/ register("@openmrs/esm-framework", "4.3.2-pre.680", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
11924
11924
  /******/ register("dayjs", "1.11.5", () => (() => (__webpack_require__(/*! ../../../node_modules/dayjs/dayjs.min.js */ "../../../node_modules/dayjs/dayjs.min.js"))), 1);
11925
11925
  /******/ register("i18next", "19.9.2", () => (() => (__webpack_require__(/*! ../../../node_modules/i18next/dist/esm/i18next.js */ "../../../node_modules/i18next/dist/esm/i18next.js"))), 1);
11926
11926
  /******/ register("react-dom", "18.2.0", () => (() => (__webpack_require__(/*! ../../../node_modules/react-dom/index.js */ "../../../node_modules/react-dom/index.js"))), 1);
@@ -12082,7 +12082,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
12082
12082
  /******/ "webpack/sharing/consume/default/i18next/i18next": () => (loadSingletonVersionCheckFallback("default", "i18next", [1,19,6,0], () => (() => (__webpack_require__(/*! i18next */ "../../../node_modules/i18next/dist/esm/i18next.js"))))),
12083
12083
  /******/ "webpack/sharing/consume/default/react-i18next/react-i18next": () => (loadSingletonVersionCheckFallback("default", "react-i18next", [1,11,7,0], () => (() => (__webpack_require__(/*! react-i18next */ "../../../node_modules/react-i18next/dist/es/index.js"))))),
12084
12084
  /******/ "webpack/sharing/consume/default/dayjs/dayjs": () => (loadSingletonVersionCheckFallback("default", "dayjs", [1,1,10,4], () => (() => (__webpack_require__(/*! dayjs */ "../../../node_modules/dayjs/dayjs.min.js"))))),
12085
- /******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,3,2,,"pre",678], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
12085
+ /******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,3,2,,"pre",680], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
12086
12086
  /******/ };
12087
12087
  /******/ var initialConsumes = ["webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal","webpack/sharing/consume/default/rxjs/rxjs","webpack/sharing/consume/default/react/react","webpack/sharing/consume/default/react-dom/react-dom","webpack/sharing/consume/default/i18next/i18next","webpack/sharing/consume/default/react-i18next/react-i18next","webpack/sharing/consume/default/dayjs/dayjs","webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework"];
12088
12088
  /******/ initialConsumes.forEach((id) => {