3182 lines
7.1 MiB
Plaintext
3182 lines
7.1 MiB
Plaintext
/*
|
||
* ATTENTION: An "eval-source-map" devtool has been used.
|
||
* This devtool is neither made for production nor for readable output files.
|
||
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
||
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
||
* or disable the default devtool with "devtool: false".
|
||
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
||
*/
|
||
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["app/dashboard/profile/page"],{
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22E%3A%5C%5CGIT%5C%5Cmvp%5C%5Cnashel-frontend%5C%5Csrc%5C%5Capp%5C%5Cdashboard%5C%5Cprofile%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!":
|
||
/*!************************************************************************************************************************************************************************************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22E%3A%5C%5CGIT%5C%5Cmvp%5C%5Cnashel-frontend%5C%5Csrc%5C%5Capp%5C%5Cdashboard%5C%5Cprofile%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false! ***!
|
||
\************************************************************************************************************************************************************************************************************************************************************************/
|
||
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/dashboard/profile/page.tsx */ \"(app-pages-browser)/./src/app/dashboard/profile/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyRSUzQSU1QyU1Q0dJVCU1QyU1Q212cCU1QyU1Q25hc2hlbC1mcm9udGVuZCU1QyU1Q3NyYyU1QyU1Q2FwcCU1QyU1Q2Rhc2hib2FyZCU1QyU1Q3Byb2ZpbGUlNUMlNUNwYWdlLnRzeCUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9ZmFsc2UhIiwibWFwcGluZ3MiOiJBQUFBLGtNQUEwRyIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiRTpcXFxcR0lUXFxcXG12cFxcXFxuYXNoZWwtZnJvbnRlbmRcXFxcc3JjXFxcXGFwcFxcXFxkYXNoYm9hcmRcXFxccHJvZmlsZVxcXFxwYWdlLnRzeFwiKTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22E%3A%5C%5CGIT%5C%5Cmvp%5C%5Cnashel-frontend%5C%5Csrc%5C%5Capp%5C%5Cdashboard%5C%5Cprofile%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-compose-refs/dist/index.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// packages/react/compose-refs/src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n composeRefs: () => composeRefs,\n useComposedRefs: () => useComposedRefs\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// packages/react/compose-refs/src/compose-refs.tsx\nvar React = __toESM(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\n//# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtDQUFrQztBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDRGQUE0RjtBQUN6SDtBQUNBO0FBQ0E7QUFDQSxtR0FBbUc7QUFDbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RUFBeUUsOEJBQThCO0FBQ3ZHO0FBQ0E7QUFDQSxvREFBb0Qsa0JBQWtCLGFBQWE7O0FBRW5GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUE7QUFDQSxvQkFBb0IsbUJBQU8sQ0FBQyxtRkFBTztBQUNuQztBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAcmFkaXgtdWlcXHJlYWN0LWNvbXBvc2UtcmVmc1xcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9fZ2V0UHJvdG9PZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7XG4gIGZvciAodmFyIG5hbWUgaW4gYWxsKVxuICAgIF9fZGVmUHJvcCh0YXJnZXQsIG5hbWUsIHsgZ2V0OiBhbGxbbmFtZV0sIGVudW1lcmFibGU6IHRydWUgfSk7XG59O1xudmFyIF9fY29weVByb3BzID0gKHRvLCBmcm9tLCBleGNlcHQsIGRlc2MpID0+IHtcbiAgaWYgKGZyb20gJiYgdHlwZW9mIGZyb20gPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGZyb20gPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGZvciAobGV0IGtleSBvZiBfX2dldE93blByb3BOYW1lcyhmcm9tKSlcbiAgICAgIGlmICghX19oYXNPd25Qcm9wLmNhbGwodG8sIGtleSkgJiYga2V5ICE9PSBleGNlcHQpXG4gICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7IGdldDogKCkgPT4gZnJvbVtrZXldLCBlbnVtZXJhYmxlOiAhKGRlc2MgPSBfX2dldE93blByb3BEZXNjKGZyb20sIGtleSkpIHx8IGRlc2MuZW51bWVyYWJsZSB9KTtcbiAgfVxuICByZXR1cm4gdG87XG59O1xudmFyIF9fdG9FU00gPSAobW9kLCBpc05vZGVNb2RlLCB0YXJnZXQpID0+ICh0YXJnZXQgPSBtb2QgIT0gbnVsbCA/IF9fY3JlYXRlKF9fZ2V0UHJvdG9PZihtb2QpKSA6IHt9LCBfX2NvcHlQcm9wcyhcbiAgLy8gSWYgdGhlIGltcG9ydGVyIGlzIGluIG5vZGUgY29tcGF0aWJpbGl0eSBtb2RlIG9yIHRoaXMgaXMgbm90IGFuIEVTTVxuICAvLyBmaWxlIHRoYXQgaGFzIGJlZW4gY29udmVydGVkIHRvIGEgQ29tbW9uSlMgZmlsZSB1c2luZyBhIEJhYmVsLVxuICAvLyBjb21wYXRpYmxlIHRyYW5zZm9ybSAoaS5lLiBcIl9fZXNNb2R1bGVcIiBoYXMgbm90IGJlZW4gc2V0KSwgdGhlbiBzZXRcbiAgLy8gXCJkZWZhdWx0XCIgdG8gdGhlIENvbW1vbkpTIFwibW9kdWxlLmV4cG9ydHNcIiBmb3Igbm9kZSBjb21wYXRpYmlsaXR5LlxuICBpc05vZGVNb2RlIHx8ICFtb2QgfHwgIW1vZC5fX2VzTW9kdWxlID8gX19kZWZQcm9wKHRhcmdldCwgXCJkZWZhdWx0XCIsIHsgdmFsdWU6IG1vZCwgZW51bWVyYWJsZTogdHJ1ZSB9KSA6IHRhcmdldCxcbiAgbW9kXG4pKTtcbnZhciBfX3RvQ29tbW9uSlMgPSAobW9kKSA9PiBfX2NvcHlQcm9wcyhfX2RlZlByb3Aoe30sIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pLCBtb2QpO1xuXG4vLyBwYWNrYWdlcy9yZWFjdC9jb21wb3NlLXJlZnMvc3JjL2luZGV4LnRzXG52YXIgaW5kZXhfZXhwb3J0cyA9IHt9O1xuX19leHBvcnQoaW5kZXhfZXhwb3J0cywge1xuICBjb21wb3NlUmVmczogKCkgPT4gY29tcG9zZVJlZnMsXG4gIHVzZUNvbXBvc2VkUmVmczogKCkgPT4gdXNlQ29tcG9zZWRSZWZzXG59KTtcbm1vZHVsZS5leHBvcnRzID0gX190b0NvbW1vbkpTKGluZGV4X2V4cG9ydHMpO1xuXG4vLyBwYWNrYWdlcy9yZWFjdC9jb21wb3NlLXJlZnMvc3JjL2NvbXBvc2UtcmVmcy50c3hcbnZhciBSZWFjdCA9IF9fdG9FU00ocmVxdWlyZShcInJlYWN0XCIpKTtcbmZ1bmN0aW9uIHNldFJlZihyZWYsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gcmVmKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChyZWYgIT09IG51bGwgJiYgcmVmICE9PSB2b2lkIDApIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9XG59XG5mdW5jdGlvbiBjb21wb3NlUmVmcyguLi5yZWZzKSB7XG4gIHJldHVybiAobm9kZSkgPT4ge1xuICAgIGxldCBoYXNDbGVhbnVwID0gZmFsc2U7XG4gICAgY29uc3QgY2xlYW51cHMgPSByZWZzLm1hcCgocmVmKSA9PiB7XG4gICAgICBjb25zdCBjbGVhbnVwID0gc2V0UmVmKHJlZiwgbm9kZSk7XG4gICAgICBpZiAoIWhhc0NsZWFudXAgJiYgdHlwZW9mIGNsZWFudXAgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGhhc0NsZWFudXAgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsZWFudXA7XG4gICAgfSk7XG4gICAgaWYgKGhhc0NsZWFudXApIHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2xlYW51cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBjbGVhbnVwID0gY2xlYW51cHNbaV07XG4gICAgICAgICAgaWYgKHR5cGVvZiBjbGVhbnVwID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRSZWYocmVmc1tpXSwgbnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIHVzZUNvbXBvc2VkUmVmcyguLi5yZWZzKSB7XG4gIHJldHVybiBSZWFjdC51c2VDYWxsYmFjayhjb21wb3NlUmVmcyguLi5yZWZzKSwgcmVmcyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-slot/dist/index.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-slot/dist/index.js ***!
|
||
\*********************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n Root: () => Slot,\n Slot: () => Slot,\n Slottable: () => Slottable,\n createSlot: () => createSlot,\n createSlottable: () => createSlottable\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/slot.tsx\nvar React = __toESM(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nvar import_react_compose_refs = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.js\");\nvar import_jsx_runtime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? (0, import_react_compose_refs.composeRefs)(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\n//# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc2xvdC9kaXN0L2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrQ0FBa0M7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw0RkFBNEY7QUFDekg7QUFDQTtBQUNBO0FBQ0EsbUdBQW1HO0FBQ25HO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUVBQXlFLDhCQUE4QjtBQUN2RztBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQixhQUFhOztBQUVuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0Esb0JBQW9CLG1CQUFPLENBQUMsbUZBQU87QUFDbkMsZ0NBQWdDLG1CQUFPLENBQUMsbUhBQThCO0FBQ3RFLHlCQUF5QixtQkFBTyxDQUFDLHFHQUFtQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLHlCQUF5QjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asc0VBQXNFLDBJQUEwSTtBQUNoTjtBQUNBLG9FQUFvRSwyQ0FBMkM7QUFDL0csR0FBRztBQUNILHlCQUF5QixVQUFVO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUseUJBQXlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCw2QkFBNkIsVUFBVTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFVBQVU7QUFDbEMsc0ZBQXNGLFVBQVU7QUFDaEc7QUFDQSw4QkFBOEIsVUFBVTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTixrQ0FBa0M7QUFDbEMsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEByYWRpeC11aVxccmVhY3Qtc2xvdFxcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9fZ2V0UHJvdG9PZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7XG4gIGZvciAodmFyIG5hbWUgaW4gYWxsKVxuICAgIF9fZGVmUHJvcCh0YXJnZXQsIG5hbWUsIHsgZ2V0OiBhbGxbbmFtZV0sIGVudW1lcmFibGU6IHRydWUgfSk7XG59O1xudmFyIF9fY29weVByb3BzID0gKHRvLCBmcm9tLCBleGNlcHQsIGRlc2MpID0+IHtcbiAgaWYgKGZyb20gJiYgdHlwZW9mIGZyb20gPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGZyb20gPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGZvciAobGV0IGtleSBvZiBfX2dldE93blByb3BOYW1lcyhmcm9tKSlcbiAgICAgIGlmICghX19oYXNPd25Qcm9wLmNhbGwodG8sIGtleSkgJiYga2V5ICE9PSBleGNlcHQpXG4gICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7IGdldDogKCkgPT4gZnJvbVtrZXldLCBlbnVtZXJhYmxlOiAhKGRlc2MgPSBfX2dldE93blByb3BEZXNjKGZyb20sIGtleSkpIHx8IGRlc2MuZW51bWVyYWJsZSB9KTtcbiAgfVxuICByZXR1cm4gdG87XG59O1xudmFyIF9fdG9FU00gPSAobW9kLCBpc05vZGVNb2RlLCB0YXJnZXQpID0+ICh0YXJnZXQgPSBtb2QgIT0gbnVsbCA/IF9fY3JlYXRlKF9fZ2V0UHJvdG9PZihtb2QpKSA6IHt9LCBfX2NvcHlQcm9wcyhcbiAgLy8gSWYgdGhlIGltcG9ydGVyIGlzIGluIG5vZGUgY29tcGF0aWJpbGl0eSBtb2RlIG9yIHRoaXMgaXMgbm90IGFuIEVTTVxuICAvLyBmaWxlIHRoYXQgaGFzIGJlZW4gY29udmVydGVkIHRvIGEgQ29tbW9uSlMgZmlsZSB1c2luZyBhIEJhYmVsLVxuICAvLyBjb21wYXRpYmxlIHRyYW5zZm9ybSAoaS5lLiBcIl9fZXNNb2R1bGVcIiBoYXMgbm90IGJlZW4gc2V0KSwgdGhlbiBzZXRcbiAgLy8gXCJkZWZhdWx0XCIgdG8gdGhlIENvbW1vbkpTIFwibW9kdWxlLmV4cG9ydHNcIiBmb3Igbm9kZSBjb21wYXRpYmlsaXR5LlxuICBpc05vZGVNb2RlIHx8ICFtb2QgfHwgIW1vZC5fX2VzTW9kdWxlID8gX19kZWZQcm9wKHRhcmdldCwgXCJkZWZhdWx0XCIsIHsgdmFsdWU6IG1vZCwgZW51bWVyYWJsZTogdHJ1ZSB9KSA6IHRhcmdldCxcbiAgbW9kXG4pKTtcbnZhciBfX3RvQ29tbW9uSlMgPSAobW9kKSA9PiBfX2NvcHlQcm9wcyhfX2RlZlByb3Aoe30sIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pLCBtb2QpO1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBpbmRleF9leHBvcnRzID0ge307XG5fX2V4cG9ydChpbmRleF9leHBvcnRzLCB7XG4gIFJvb3Q6ICgpID0+IFNsb3QsXG4gIFNsb3Q6ICgpID0+IFNsb3QsXG4gIFNsb3R0YWJsZTogKCkgPT4gU2xvdHRhYmxlLFxuICBjcmVhdGVTbG90OiAoKSA9PiBjcmVhdGVTbG90LFxuICBjcmVhdGVTbG90dGFibGU6ICgpID0+IGNyZWF0ZVNsb3R0YWJsZVxufSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhpbmRleF9leHBvcnRzKTtcblxuLy8gc3JjL3Nsb3QudHN4XG52YXIgUmVhY3QgPSBfX3RvRVNNKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgaW1wb3J0X3JlYWN0X2NvbXBvc2VfcmVmcyA9IHJlcXVpcmUoXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCIpO1xudmFyIGltcG9ydF9qc3hfcnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTtcbnZhciB1c2UgPSBSZWFjdFtcIiB1c2UgXCIudHJpbSgpLnRvU3RyaW5nKCldO1xuZnVuY3Rpb24gaXNQcm9taXNlTGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmIFwidGhlblwiIGluIHZhbHVlO1xufVxuZnVuY3Rpb24gaXNMYXp5Q29tcG9uZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgIT0gbnVsbCAmJiB0eXBlb2YgZWxlbWVudCA9PT0gXCJvYmplY3RcIiAmJiBcIiQkdHlwZW9mXCIgaW4gZWxlbWVudCAmJiBlbGVtZW50LiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEUgJiYgXCJfcGF5bG9hZFwiIGluIGVsZW1lbnQgJiYgaXNQcm9taXNlTGlrZShlbGVtZW50Ll9wYXlsb2FkKTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5mdW5jdGlvbiBjcmVhdGVTbG90KG93bmVyTmFtZSkge1xuICBjb25zdCBTbG90Q2xvbmUgPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlU2xvdENsb25lKG93bmVyTmFtZSk7XG4gIGNvbnN0IFNsb3QyID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGxldCB7IGNoaWxkcmVuLCAuLi5zbG90UHJvcHMgfSA9IHByb3BzO1xuICAgIGlmIChpc0xhenlDb21wb25lbnQoY2hpbGRyZW4pICYmIHR5cGVvZiB1c2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY2hpbGRyZW4gPSB1c2UoY2hpbGRyZW4uX3BheWxvYWQpO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbkFycmF5ID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7XG4gICAgY29uc3Qgc2xvdHRhYmxlID0gY2hpbGRyZW5BcnJheS5maW5kKGlzU2xvdHRhYmxlKTtcbiAgICBpZiAoc2xvdHRhYmxlKSB7XG4gICAgICBjb25zdCBuZXdFbGVtZW50ID0gc2xvdHRhYmxlLnByb3BzLmNoaWxkcmVuO1xuICAgICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBjaGlsZHJlbkFycmF5Lm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkID09PSBzbG90dGFibGUpIHtcbiAgICAgICAgICBpZiAoUmVhY3QuQ2hpbGRyZW4uY291bnQobmV3RWxlbWVudCkgPiAxKSByZXR1cm4gUmVhY3QuQ2hpbGRyZW4ub25seShudWxsKTtcbiAgICAgICAgICByZXR1cm4gUmVhY3QuaXNWYWxpZEVsZW1lbnQobmV3RWxlbWVudCkgPyBuZXdFbGVtZW50LnByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyAoMCwgaW1wb3J0X2pzeF9ydW50aW1lLmpzeCkoU2xvdENsb25lLCB7IC4uLnNsb3RQcm9wcywgcmVmOiBmb3J3YXJkZWRSZWYsIGNoaWxkcmVuOiBSZWFjdC5pc1ZhbGlkRWxlbWVudChuZXdFbGVtZW50KSA/IFJlYWN0LmNsb25lRWxlbWVudChuZXdFbGVtZW50LCB2b2lkIDAsIG5ld0NoaWxkcmVuKSA6IG51bGwgfSk7XG4gICAgfVxuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gKDAsIGltcG9ydF9qc3hfcnVudGltZS5qc3gpKFNsb3RDbG9uZSwgeyAuLi5zbG90UHJvcHMsIHJlZjogZm9yd2FyZGVkUmVmLCBjaGlsZHJlbiB9KTtcbiAgfSk7XG4gIFNsb3QyLmRpc3BsYXlOYW1lID0gYCR7b3duZXJOYW1lfS5TbG90YDtcbiAgcmV0dXJuIFNsb3QyO1xufVxudmFyIFNsb3QgPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlU2xvdChcIlNsb3RcIik7XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZnVuY3Rpb24gY3JlYXRlU2xvdENsb25lKG93bmVyTmFtZSkge1xuICBjb25zdCBTbG90Q2xvbmUgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgbGV0IHsgY2hpbGRyZW4sIC4uLnNsb3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgaWYgKGlzTGF6eUNvbXBvbmVudChjaGlsZHJlbikgJiYgdHlwZW9mIHVzZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjaGlsZHJlbiA9IHVzZShjaGlsZHJlbi5fcGF5bG9hZCk7XG4gICAgfVxuICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcbiAgICAgIGNvbnN0IGNoaWxkcmVuUmVmID0gZ2V0RWxlbWVudFJlZihjaGlsZHJlbik7XG4gICAgICBjb25zdCBwcm9wczIgPSBtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRyZW4ucHJvcHMpO1xuICAgICAgaWYgKGNoaWxkcmVuLnR5cGUgIT09IFJlYWN0LkZyYWdtZW50KSB7XG4gICAgICAgIHByb3BzMi5yZWYgPSBmb3J3YXJkZWRSZWYgPyAoMCwgaW1wb3J0X3JlYWN0X2NvbXBvc2VfcmVmcy5jb21wb3NlUmVmcykoZm9yd2FyZGVkUmVmLCBjaGlsZHJlblJlZikgOiBjaGlsZHJlblJlZjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHByb3BzMik7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5DaGlsZHJlbi5jb3VudChjaGlsZHJlbikgPiAxID8gUmVhY3QuQ2hpbGRyZW4ub25seShudWxsKSA6IG51bGw7XG4gIH0pO1xuICBTbG90Q2xvbmUuZGlzcGxheU5hbWUgPSBgJHtvd25lck5hbWV9LlNsb3RDbG9uZWA7XG4gIHJldHVybiBTbG90Q2xvbmU7XG59XG52YXIgU0xPVFRBQkxFX0lERU5USUZJRVIgPSBTeW1ib2woXCJyYWRpeC5zbG90dGFibGVcIik7XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZnVuY3Rpb24gY3JlYXRlU2xvdHRhYmxlKG93bmVyTmFtZSkge1xuICBjb25zdCBTbG90dGFibGUyID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gKDAsIGltcG9ydF9qc3hfcnVudGltZS5qc3gpKGltcG9ydF9qc3hfcnVudGltZS5GcmFnbWVudCwgeyBjaGlsZHJlbiB9KTtcbiAgfTtcbiAgU2xvdHRhYmxlMi5kaXNwbGF5TmFtZSA9IGAke293bmVyTmFtZX0uU2xvdHRhYmxlYDtcbiAgU2xvdHRhYmxlMi5fX3JhZGl4SWQgPSBTTE9UVEFCTEVfSURFTlRJRklFUjtcbiAgcmV0dXJuIFNsb3R0YWJsZTI7XG59XG52YXIgU2xvdHRhYmxlID0gLyogQF9fUFVSRV9fICovIGNyZWF0ZVNsb3R0YWJsZShcIlNsb3R0YWJsZVwiKTtcbmZ1bmN0aW9uIGlzU2xvdHRhYmxlKGNoaWxkKSB7XG4gIHJldHVybiBSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgdHlwZW9mIGNoaWxkLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBcIl9fcmFkaXhJZFwiIGluIGNoaWxkLnR5cGUgJiYgY2hpbGQudHlwZS5fX3JhZGl4SWQgPT09IFNMT1RUQUJMRV9JREVOVElGSUVSO1xufVxuZnVuY3Rpb24gbWVyZ2VQcm9wcyhzbG90UHJvcHMsIGNoaWxkUHJvcHMpIHtcbiAgY29uc3Qgb3ZlcnJpZGVQcm9wcyA9IHsgLi4uY2hpbGRQcm9wcyB9O1xuICBmb3IgKGNvbnN0IHByb3BOYW1lIGluIGNoaWxkUHJvcHMpIHtcbiAgICBjb25zdCBzbG90UHJvcFZhbHVlID0gc2xvdFByb3BzW3Byb3BOYW1lXTtcbiAgICBjb25zdCBjaGlsZFByb3BWYWx1ZSA9IGNoaWxkUHJvcHNbcHJvcE5hbWVdO1xuICAgIGNvbnN0IGlzSGFuZGxlciA9IC9eb25bQS1aXS8udGVzdChwcm9wTmFtZSk7XG4gICAgaWYgKGlzSGFuZGxlcikge1xuICAgICAgaWYgKHNsb3RQcm9wVmFsdWUgJiYgY2hpbGRQcm9wVmFsdWUpIHtcbiAgICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSAoLi4uYXJncykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNoaWxkUHJvcFZhbHVlKC4uLmFyZ3MpO1xuICAgICAgICAgIHNsb3RQcm9wVmFsdWUoLi4uYXJncyk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoc2xvdFByb3BWYWx1ZSkge1xuICAgICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IHNsb3RQcm9wVmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IHsgLi4uc2xvdFByb3BWYWx1ZSwgLi4uY2hpbGRQcm9wVmFsdWUgfTtcbiAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcImNsYXNzTmFtZVwiKSB7XG4gICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IFtzbG90UHJvcFZhbHVlLCBjaGlsZFByb3BWYWx1ZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyAuLi5zbG90UHJvcHMsIC4uLm92ZXJyaWRlUHJvcHMgfTtcbn1cbmZ1bmN0aW9uIGdldEVsZW1lbnRSZWYoZWxlbWVudCkge1xuICBsZXQgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlbGVtZW50LnByb3BzLCBcInJlZlwiKT8uZ2V0O1xuICBsZXQgbWF5V2FybiA9IGdldHRlciAmJiBcImlzUmVhY3RXYXJuaW5nXCIgaW4gZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZztcbiAgaWYgKG1heVdhcm4pIHtcbiAgICByZXR1cm4gZWxlbWVudC5yZWY7XG4gIH1cbiAgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlbGVtZW50LCBcInJlZlwiKT8uZ2V0O1xuICBtYXlXYXJuID0gZ2V0dGVyICYmIFwiaXNSZWFjdFdhcm5pbmdcIiBpbiBnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nO1xuICBpZiAobWF5V2Fybikge1xuICAgIHJldHVybiBlbGVtZW50LnByb3BzLnJlZjtcbiAgfVxuICByZXR1cm4gZWxlbWVudC5wcm9wcy5yZWYgfHwgZWxlbWVudC5yZWY7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-slot/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/cookie/dist/index.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/cookie/dist/index.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.parseCookie = parseCookie;\nexports.parse = parseCookie;\nexports.stringifyCookie = stringifyCookie;\nexports.stringifySetCookie = stringifySetCookie;\nexports.serialize = stringifySetCookie;\nexports.parseSetCookie = parseSetCookie;\nexports.stringifySetCookie = stringifySetCookie;\nexports.serialize = stringifySetCookie;\n/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name = token\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n * \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n * \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n *\n * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n * Allow same range as cookie value, except `=`, which delimits end of name.\n */\nconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n * ; US-ASCII characters excluding CTLs,\n * ; whitespace DQUOTE, comma, semicolon,\n * ; and backslash\n *\n * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n */\nconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value = <subdomain>\n * ; defined in [RFC1034], Section 3.5, as\n * ; enhanced by [RFC1123], Section 2.1\n * <subdomain> = <label> | <subdomain> \".\" <label>\n * <label> = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n * Labels must be 63 characters or less.\n * 'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str> = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp> = <let-dig> | \"-\"\n * <let-dig> = <letter> | <digit>\n * <letter> = any one of the 52 alphabetic characters A through Z in\n * upper case and a through z in lower case\n * <digit> = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\nconst domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value = <any CHAR except CTLs or \";\">\n * CHAR = %x01-7F\n * ; defined in RFC 5234 appendix B.1\n */\nconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n/**\n * RegExp to match max-age-value in RFC 6265 sec 5.6.2\n */\nconst maxAgeRegExp = /^-?\\d+$/;\nconst __toString = Object.prototype.toString;\nconst NullObject = /* @__PURE__ */ (() => {\n const C = function () { };\n C.prototype = Object.create(null);\n return C;\n})();\n/**\n * Parse a `Cookie` header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nfunction parseCookie(str, options) {\n const obj = new NullObject();\n const len = str.length;\n // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n if (len < 2)\n return obj;\n const dec = options?.decode || decode;\n let index = 0;\n do {\n const eqIdx = eqIndex(str, index, len);\n if (eqIdx === -1)\n break; // No more cookie pairs.\n const endIdx = endIndex(str, index, len);\n if (eqIdx > endIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n continue;\n }\n const key = valueSlice(str, index, eqIdx);\n // only assign once\n if (obj[key] === undefined) {\n obj[key] = dec(valueSlice(str, eqIdx + 1, endIdx));\n }\n index = endIdx + 1;\n } while (index < len);\n return obj;\n}\n/**\n * Stringifies an object into an HTTP `Cookie` header.\n */\nfunction stringifyCookie(cookie, options) {\n const enc = options?.encode || encodeURIComponent;\n const cookieStrings = [];\n for (const name of Object.keys(cookie)) {\n const val = cookie[name];\n if (val === undefined)\n continue;\n if (!cookieNameRegExp.test(name)) {\n throw new TypeError(`cookie name is invalid: ${name}`);\n }\n const value = enc(val);\n if (!cookieValueRegExp.test(value)) {\n throw new TypeError(`cookie val is invalid: ${val}`);\n }\n cookieStrings.push(`${name}=${value}`);\n }\n return cookieStrings.join(\"; \");\n}\nfunction stringifySetCookie(_name, _val, _opts) {\n const cookie = typeof _name === \"object\"\n ? _name\n : { ..._opts, name: _name, value: String(_val) };\n const options = typeof _val === \"object\" ? _val : _opts;\n const enc = options?.encode || encodeURIComponent;\n if (!cookieNameRegExp.test(cookie.name)) {\n throw new TypeError(`argument name is invalid: ${cookie.name}`);\n }\n const value = cookie.value ? enc(cookie.value) : \"\";\n if (!cookieValueRegExp.test(value)) {\n throw new TypeError(`argument val is invalid: ${cookie.value}`);\n }\n let str = cookie.name + \"=\" + value;\n if (cookie.maxAge !== undefined) {\n if (!Number.isInteger(cookie.maxAge)) {\n throw new TypeError(`option maxAge is invalid: ${cookie.maxAge}`);\n }\n str += \"; Max-Age=\" + cookie.maxAge;\n }\n if (cookie.domain) {\n if (!domainValueRegExp.test(cookie.domain)) {\n throw new TypeError(`option domain is invalid: ${cookie.domain}`);\n }\n str += \"; Domain=\" + cookie.domain;\n }\n if (cookie.path) {\n if (!pathValueRegExp.test(cookie.path)) {\n throw new TypeError(`option path is invalid: ${cookie.path}`);\n }\n str += \"; Path=\" + cookie.path;\n }\n if (cookie.expires) {\n if (!isDate(cookie.expires) || !Number.isFinite(cookie.expires.valueOf())) {\n throw new TypeError(`option expires is invalid: ${cookie.expires}`);\n }\n str += \"; Expires=\" + cookie.expires.toUTCString();\n }\n if (cookie.httpOnly) {\n str += \"; HttpOnly\";\n }\n if (cookie.secure) {\n str += \"; Secure\";\n }\n if (cookie.partitioned) {\n str += \"; Partitioned\";\n }\n if (cookie.priority) {\n const priority = typeof cookie.priority === \"string\"\n ? cookie.priority.toLowerCase()\n : undefined;\n switch (priority) {\n case \"low\":\n str += \"; Priority=Low\";\n break;\n case \"medium\":\n str += \"; Priority=Medium\";\n break;\n case \"high\":\n str += \"; Priority=High\";\n break;\n default:\n throw new TypeError(`option priority is invalid: ${cookie.priority}`);\n }\n }\n if (cookie.sameSite) {\n const sameSite = typeof cookie.sameSite === \"string\"\n ? cookie.sameSite.toLowerCase()\n : cookie.sameSite;\n switch (sameSite) {\n case true:\n case \"strict\":\n str += \"; SameSite=Strict\";\n break;\n case \"lax\":\n str += \"; SameSite=Lax\";\n break;\n case \"none\":\n str += \"; SameSite=None\";\n break;\n default:\n throw new TypeError(`option sameSite is invalid: ${cookie.sameSite}`);\n }\n }\n return str;\n}\n/**\n * Deserialize a `Set-Cookie` header into an object.\n *\n * deserialize('foo=bar; httpOnly')\n * => { name: 'foo', value: 'bar', httpOnly: true }\n */\nfunction parseSetCookie(str, options) {\n const dec = options?.decode || decode;\n const len = str.length;\n const endIdx = endIndex(str, 0, len);\n const eqIdx = eqIndex(str, 0, endIdx);\n const setCookie = eqIdx === -1\n ? { name: \"\", value: dec(valueSlice(str, 0, endIdx)) }\n : {\n name: valueSlice(str, 0, eqIdx),\n value: dec(valueSlice(str, eqIdx + 1, endIdx)),\n };\n let index = endIdx + 1;\n while (index < len) {\n const endIdx = endIndex(str, index, len);\n const eqIdx = eqIndex(str, index, endIdx);\n const attr = eqIdx === -1\n ? valueSlice(str, index, endIdx)\n : valueSlice(str, index, eqIdx);\n const val = eqIdx === -1 ? undefined : valueSlice(str, eqIdx + 1, endIdx);\n switch (attr.toLowerCase()) {\n case \"httponly\":\n setCookie.httpOnly = true;\n break;\n case \"secure\":\n setCookie.secure = true;\n break;\n case \"partitioned\":\n setCookie.partitioned = true;\n break;\n case \"domain\":\n setCookie.domain = val;\n break;\n case \"path\":\n setCookie.path = val;\n break;\n case \"max-age\":\n if (val && maxAgeRegExp.test(val))\n setCookie.maxAge = Number(val);\n break;\n case \"expires\":\n if (!val)\n break;\n const date = new Date(val);\n if (Number.isFinite(date.valueOf()))\n setCookie.expires = date;\n break;\n case \"priority\":\n if (!val)\n break;\n const priority = val.toLowerCase();\n if (priority === \"low\" ||\n priority === \"medium\" ||\n priority === \"high\") {\n setCookie.priority = priority;\n }\n break;\n case \"samesite\":\n if (!val)\n break;\n const sameSite = val.toLowerCase();\n if (sameSite === \"lax\" ||\n sameSite === \"strict\" ||\n sameSite === \"none\") {\n setCookie.sameSite = sameSite;\n }\n break;\n }\n index = endIdx + 1;\n }\n return setCookie;\n}\n/**\n * Find the `;` character between `min` and `len` in str.\n */\nfunction endIndex(str, min, len) {\n const index = str.indexOf(\";\", min);\n return index === -1 ? len : index;\n}\n/**\n * Find the `=` character between `min` and `max` in str.\n */\nfunction eqIndex(str, min, max) {\n const index = str.indexOf(\"=\", min);\n return index < max ? index : -1;\n}\n/**\n * Slice out a value between startPod to max.\n */\nfunction valueSlice(str, min, max) {\n let start = min;\n let end = max;\n do {\n const code = str.charCodeAt(start);\n if (code !== 0x20 /* */ && code !== 0x09 /* \\t */)\n break;\n } while (++start < end);\n while (end > start) {\n const code = str.charCodeAt(end - 1);\n if (code !== 0x20 /* */ && code !== 0x09 /* \\t */)\n break;\n end--;\n }\n return str.slice(start, end);\n}\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n */\nfunction decode(str) {\n if (str.indexOf(\"%\") === -1)\n return str;\n try {\n return decodeURIComponent(str);\n }\n catch (e) {\n return str;\n }\n}\n/**\n * Determine if value is a Date.\n */\nfunction isDate(val) {\n return __toString.call(val) === \"[object Date]\";\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jb29raWUvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxtQkFBbUI7QUFDbkIsYUFBYTtBQUNiLHVCQUF1QjtBQUN2QiwwQkFBMEI7QUFDMUIsaUJBQWlCO0FBQ2pCLHNCQUFzQjtBQUN0QiwwQkFBMEI7QUFDMUIsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsS0FBSyxrQ0FBa0MsS0FBSztBQUNoRztBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQ7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELEtBQUs7QUFDaEU7QUFDQTtBQUNBO0FBQ0EsMERBQTBELElBQUk7QUFDOUQ7QUFDQSw4QkFBOEIsS0FBSyxHQUFHLE1BQU07QUFDNUM7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EseURBQXlELFlBQVk7QUFDckU7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELGFBQWE7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsY0FBYztBQUMzRTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsY0FBYztBQUMzRTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsWUFBWTtBQUN2RTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsZUFBZTtBQUM3RTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLG1FQUFtRSxnQkFBZ0I7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EsbUVBQW1FLGdCQUFnQjtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxjb29raWVcXGRpc3RcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZUNvb2tpZSA9IHBhcnNlQ29va2llO1xuZXhwb3J0cy5wYXJzZSA9IHBhcnNlQ29va2llO1xuZXhwb3J0cy5zdHJpbmdpZnlDb29raWUgPSBzdHJpbmdpZnlDb29raWU7XG5leHBvcnRzLnN0cmluZ2lmeVNldENvb2tpZSA9IHN0cmluZ2lmeVNldENvb2tpZTtcbmV4cG9ydHMuc2VyaWFsaXplID0gc3RyaW5naWZ5U2V0Q29va2llO1xuZXhwb3J0cy5wYXJzZVNldENvb2tpZSA9IHBhcnNlU2V0Q29va2llO1xuZXhwb3J0cy5zdHJpbmdpZnlTZXRDb29raWUgPSBzdHJpbmdpZnlTZXRDb29raWU7XG5leHBvcnRzLnNlcmlhbGl6ZSA9IHN0cmluZ2lmeVNldENvb2tpZTtcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGNvb2tpZS1uYW1lIGluIFJGQyA2MjY1IHNlYyA0LjEuMVxuICogVGhpcyByZWZlcnMgb3V0IHRvIHRoZSBvYnNvbGV0ZWQgZGVmaW5pdGlvbiBvZiB0b2tlbiBpbiBSRkMgMjYxNiBzZWMgMi4yXG4gKiB3aGljaCBoYXMgYmVlbiByZXBsYWNlZCBieSB0aGUgdG9rZW4gZGVmaW5pdGlvbiBpbiBSRkMgNzIzMCBhcHBlbmRpeCBCLlxuICpcbiAqIGNvb2tpZS1uYW1lICAgICAgID0gdG9rZW5cbiAqIHRva2VuICAgICAgICAgICAgID0gMSp0Y2hhclxuICogdGNoYXIgICAgICAgICAgICAgPSBcIiFcIiAvIFwiI1wiIC8gXCIkXCIgLyBcIiVcIiAvIFwiJlwiIC8gXCInXCIgL1xuICogICAgICAgICAgICAgICAgICAgICBcIipcIiAvIFwiK1wiIC8gXCItXCIgLyBcIi5cIiAvIFwiXlwiIC8gXCJfXCIgL1xuICogICAgICAgICAgICAgICAgICAgICBcImBcIiAvIFwifFwiIC8gXCJ+XCIgLyBESUdJVCAvIEFMUEhBXG4gKlxuICogTm90ZTogQWxsb3dpbmcgbW9yZSBjaGFyYWN0ZXJzIC0gaHR0cHM6Ly9naXRodWIuY29tL2pzaHR0cC9jb29raWUvaXNzdWVzLzE5MVxuICogQWxsb3cgc2FtZSByYW5nZSBhcyBjb29raWUgdmFsdWUsIGV4Y2VwdCBgPWAsIHdoaWNoIGRlbGltaXRzIGVuZCBvZiBuYW1lLlxuICovXG5jb25zdCBjb29raWVOYW1lUmVnRXhwID0gL15bXFx1MDAyMS1cXHUwMDNBXFx1MDAzQ1xcdTAwM0UtXFx1MDA3RV0rJC87XG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCBjb29raWUtdmFsdWUgaW4gUkZDIDYyNjUgc2VjIDQuMS4xXG4gKlxuICogY29va2llLXZhbHVlICAgICAgPSAqY29va2llLW9jdGV0IC8gKCBEUVVPVEUgKmNvb2tpZS1vY3RldCBEUVVPVEUgKVxuICogY29va2llLW9jdGV0ICAgICAgPSAleDIxIC8gJXgyMy0yQiAvICV4MkQtM0EgLyAleDNDLTVCIC8gJXg1RC03RVxuICogICAgICAgICAgICAgICAgICAgICA7IFVTLUFTQ0lJIGNoYXJhY3RlcnMgZXhjbHVkaW5nIENUTHMsXG4gKiAgICAgICAgICAgICAgICAgICAgIDsgd2hpdGVzcGFjZSBEUVVPVEUsIGNvbW1hLCBzZW1pY29sb24sXG4gKiAgICAgICAgICAgICAgICAgICAgIDsgYW5kIGJhY2tzbGFzaFxuICpcbiAqIEFsbG93aW5nIG1vcmUgY2hhcmFjdGVyczogaHR0cHM6Ly9naXRodWIuY29tL2pzaHR0cC9jb29raWUvaXNzdWVzLzE5MVxuICogQ29tbWEsIGJhY2tzbGFzaCwgYW5kIERRVU9URSBhcmUgbm90IHBhcnQgb2YgdGhlIHBhcnNpbmcgYWxnb3JpdGhtLlxuICovXG5jb25zdCBjb29raWVWYWx1ZVJlZ0V4cCA9IC9eW1xcdTAwMjEtXFx1MDAzQVxcdTAwM0MtXFx1MDA3RV0qJC87XG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCBkb21haW4tdmFsdWUgaW4gUkZDIDYyNjUgc2VjIDQuMS4xXG4gKlxuICogZG9tYWluLXZhbHVlICAgICAgPSA8c3ViZG9tYWluPlxuICogICAgICAgICAgICAgICAgICAgICA7IGRlZmluZWQgaW4gW1JGQzEwMzRdLCBTZWN0aW9uIDMuNSwgYXNcbiAqICAgICAgICAgICAgICAgICAgICAgOyBlbmhhbmNlZCBieSBbUkZDMTEyM10sIFNlY3Rpb24gMi4xXG4gKiA8c3ViZG9tYWluPiAgICAgICA9IDxsYWJlbD4gfCA8c3ViZG9tYWluPiBcIi5cIiA8bGFiZWw+XG4gKiA8bGFiZWw+ICAgICAgICAgICA9IDxsZXQtZGlnPiBbIFsgPGxkaC1zdHI+IF0gPGxldC1kaWc+IF1cbiAqICAgICAgICAgICAgICAgICAgICAgTGFiZWxzIG11c3QgYmUgNjMgY2hhcmFjdGVycyBvciBsZXNzLlxuICogICAgICAgICAgICAgICAgICAgICAnbGV0LWRpZycgbm90ICdsZXR0ZXInIGluIHRoZSBmaXJzdCBjaGFyLCBwZXIgUkZDMTEyM1xuICogPGxkaC1zdHI+ICAgICAgICAgPSA8bGV0LWRpZy1oeXA+IHwgPGxldC1kaWctaHlwPiA8bGRoLXN0cj5cbiAqIDxsZXQtZGlnLWh5cD4gICAgID0gPGxldC1kaWc+IHwgXCItXCJcbiAqIDxsZXQtZGlnPiAgICAgICAgID0gPGxldHRlcj4gfCA8ZGlnaXQ+XG4gKiA8bGV0dGVyPiAgICAgICAgICA9IGFueSBvbmUgb2YgdGhlIDUyIGFscGhhYmV0aWMgY2hhcmFjdGVycyBBIHRocm91Z2ggWiBpblxuICogICAgICAgICAgICAgICAgICAgICB1cHBlciBjYXNlIGFuZCBhIHRocm91Z2ggeiBpbiBsb3dlciBjYXNlXG4gKiA8ZGlnaXQ+ICAgICAgICAgICA9IGFueSBvbmUgb2YgdGhlIHRlbiBkaWdpdHMgMCB0aHJvdWdoIDlcbiAqXG4gKiBLZWVwIHN1cHBvcnQgZm9yIGxlYWRpbmcgZG90OiBodHRwczovL2dpdGh1Yi5jb20vanNodHRwL2Nvb2tpZS9pc3N1ZXMvMTczXG4gKlxuICogPiAoTm90ZSB0aGF0IGEgbGVhZGluZyAleDJFIChcIi5cIiksIGlmIHByZXNlbnQsIGlzIGlnbm9yZWQgZXZlbiB0aG91Z2ggdGhhdFxuICogY2hhcmFjdGVyIGlzIG5vdCBwZXJtaXR0ZWQsIGJ1dCBhIHRyYWlsaW5nICV4MkUgKFwiLlwiKSwgaWYgcHJlc2VudCwgd2lsbFxuICogY2F1c2UgdGhlIHVzZXIgYWdlbnQgdG8gaWdub3JlIHRoZSBhdHRyaWJ1dGUuKVxuICovXG5jb25zdCBkb21haW5WYWx1ZVJlZ0V4cCA9IC9eKFsuXT9bYS16MC05XShbYS16MC05LV17MCw2MX1bYS16MC05XSk/KShbLl1bYS16MC05XShbYS16MC05LV17MCw2MX1bYS16MC05XSk/KSokL2k7XG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCBwYXRoLXZhbHVlIGluIFJGQyA2MjY1IHNlYyA0LjEuMVxuICpcbiAqIHBhdGgtdmFsdWUgICAgICAgID0gPGFueSBDSEFSIGV4Y2VwdCBDVExzIG9yIFwiO1wiPlxuICogQ0hBUiAgICAgICAgICAgICAgPSAleDAxLTdGXG4gKiAgICAgICAgICAgICAgICAgICAgIDsgZGVmaW5lZCBpbiBSRkMgNTIzNCBhcHBlbmRpeCBCLjFcbiAqL1xuY29uc3QgcGF0aFZhbHVlUmVnRXhwID0gL15bXFx1MDAyMC1cXHUwMDNBXFx1MDAzRC1cXHUwMDdFXSokLztcbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIG1heC1hZ2UtdmFsdWUgaW4gUkZDIDYyNjUgc2VjIDUuNi4yXG4gKi9cbmNvbnN0IG1heEFnZVJlZ0V4cCA9IC9eLT9cXGQrJC87XG5jb25zdCBfX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbmNvbnN0IE51bGxPYmplY3QgPSAvKiBAX19QVVJFX18gKi8gKCgpID0+IHtcbiAgICBjb25zdCBDID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIEMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICByZXR1cm4gQztcbn0pKCk7XG4vKipcbiAqIFBhcnNlIGEgYENvb2tpZWAgaGVhZGVyLlxuICpcbiAqIFBhcnNlIHRoZSBnaXZlbiBjb29raWUgaGVhZGVyIHN0cmluZyBpbnRvIGFuIG9iamVjdFxuICogVGhlIG9iamVjdCBoYXMgdGhlIHZhcmlvdXMgY29va2llcyBhcyBrZXlzKG5hbWVzKSA9PiB2YWx1ZXNcbiAqL1xuZnVuY3Rpb24gcGFyc2VDb29raWUoc3RyLCBvcHRpb25zKSB7XG4gICAgY29uc3Qgb2JqID0gbmV3IE51bGxPYmplY3QoKTtcbiAgICBjb25zdCBsZW4gPSBzdHIubGVuZ3RoO1xuICAgIC8vIFJGQyA2MjY1IHNlYyA0LjEuMSwgUkZDIDI2MTYgMi4yIGRlZmluZXMgYSBjb29raWUgbmFtZSBjb25zaXN0cyBvZiBvbmUgY2hhciBtaW5pbXVtLCBwbHVzICc9Jy5cbiAgICBpZiAobGVuIDwgMilcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICBjb25zdCBkZWMgPSBvcHRpb25zPy5kZWNvZGUgfHwgZGVjb2RlO1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgZG8ge1xuICAgICAgICBjb25zdCBlcUlkeCA9IGVxSW5kZXgoc3RyLCBpbmRleCwgbGVuKTtcbiAgICAgICAgaWYgKGVxSWR4ID09PSAtMSlcbiAgICAgICAgICAgIGJyZWFrOyAvLyBObyBtb3JlIGNvb2tpZSBwYWlycy5cbiAgICAgICAgY29uc3QgZW5kSWR4ID0gZW5kSW5kZXgoc3RyLCBpbmRleCwgbGVuKTtcbiAgICAgICAgaWYgKGVxSWR4ID4gZW5kSWR4KSB7XG4gICAgICAgICAgICAvLyBiYWNrdHJhY2sgb24gcHJpb3Igc2VtaWNvbG9uXG4gICAgICAgICAgICBpbmRleCA9IHN0ci5sYXN0SW5kZXhPZihcIjtcIiwgZXFJZHggLSAxKSArIDE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSB2YWx1ZVNsaWNlKHN0ciwgaW5kZXgsIGVxSWR4KTtcbiAgICAgICAgLy8gb25seSBhc3NpZ24gb25jZVxuICAgICAgICBpZiAob2JqW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSBkZWModmFsdWVTbGljZShzdHIsIGVxSWR4ICsgMSwgZW5kSWR4KSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSBlbmRJZHggKyAxO1xuICAgIH0gd2hpbGUgKGluZGV4IDwgbGVuKTtcbiAgICByZXR1cm4gb2JqO1xufVxuLyoqXG4gKiBTdHJpbmdpZmllcyBhbiBvYmplY3QgaW50byBhbiBIVFRQIGBDb29raWVgIGhlYWRlci5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5Q29va2llKGNvb2tpZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IGVuYyA9IG9wdGlvbnM/LmVuY29kZSB8fCBlbmNvZGVVUklDb21wb25lbnQ7XG4gICAgY29uc3QgY29va2llU3RyaW5ncyA9IFtdO1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhjb29raWUpKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGNvb2tpZVtuYW1lXTtcbiAgICAgICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmICghY29va2llTmFtZVJlZ0V4cC50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBjb29raWUgbmFtZSBpcyBpbnZhbGlkOiAke25hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWUgPSBlbmModmFsKTtcbiAgICAgICAgaWYgKCFjb29raWVWYWx1ZVJlZ0V4cC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgY29va2llIHZhbCBpcyBpbnZhbGlkOiAke3ZhbH1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb29raWVTdHJpbmdzLnB1c2goYCR7bmFtZX09JHt2YWx1ZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvb2tpZVN0cmluZ3Muam9pbihcIjsgXCIpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5U2V0Q29va2llKF9uYW1lLCBfdmFsLCBfb3B0cykge1xuICAgIGNvbnN0IGNvb2tpZSA9IHR5cGVvZiBfbmFtZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IF9uYW1lXG4gICAgICAgIDogeyAuLi5fb3B0cywgbmFtZTogX25hbWUsIHZhbHVlOiBTdHJpbmcoX3ZhbCkgfTtcbiAgICBjb25zdCBvcHRpb25zID0gdHlwZW9mIF92YWwgPT09IFwib2JqZWN0XCIgPyBfdmFsIDogX29wdHM7XG4gICAgY29uc3QgZW5jID0gb3B0aW9ucz8uZW5jb2RlIHx8IGVuY29kZVVSSUNvbXBvbmVudDtcbiAgICBpZiAoIWNvb2tpZU5hbWVSZWdFeHAudGVzdChjb29raWUubmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgYXJndW1lbnQgbmFtZSBpcyBpbnZhbGlkOiAke2Nvb2tpZS5uYW1lfWApO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGNvb2tpZS52YWx1ZSA/IGVuYyhjb29raWUudmFsdWUpIDogXCJcIjtcbiAgICBpZiAoIWNvb2tpZVZhbHVlUmVnRXhwLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGFyZ3VtZW50IHZhbCBpcyBpbnZhbGlkOiAke2Nvb2tpZS52YWx1ZX1gKTtcbiAgICB9XG4gICAgbGV0IHN0ciA9IGNvb2tpZS5uYW1lICsgXCI9XCIgKyB2YWx1ZTtcbiAgICBpZiAoY29va2llLm1heEFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihjb29raWUubWF4QWdlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgb3B0aW9uIG1heEFnZSBpcyBpbnZhbGlkOiAke2Nvb2tpZS5tYXhBZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiOyBNYXgtQWdlPVwiICsgY29va2llLm1heEFnZTtcbiAgICB9XG4gICAgaWYgKGNvb2tpZS5kb21haW4pIHtcbiAgICAgICAgaWYgKCFkb21haW5WYWx1ZVJlZ0V4cC50ZXN0KGNvb2tpZS5kb21haW4pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gZG9tYWluIGlzIGludmFsaWQ6ICR7Y29va2llLmRvbWFpbn1gKTtcbiAgICAgICAgfVxuICAgICAgICBzdHIgKz0gXCI7IERvbWFpbj1cIiArIGNvb2tpZS5kb21haW47XG4gICAgfVxuICAgIGlmIChjb29raWUucGF0aCkge1xuICAgICAgICBpZiAoIXBhdGhWYWx1ZVJlZ0V4cC50ZXN0KGNvb2tpZS5wYXRoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgb3B0aW9uIHBhdGggaXMgaW52YWxpZDogJHtjb29raWUucGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBzdHIgKz0gXCI7IFBhdGg9XCIgKyBjb29raWUucGF0aDtcbiAgICB9XG4gICAgaWYgKGNvb2tpZS5leHBpcmVzKSB7XG4gICAgICAgIGlmICghaXNEYXRlKGNvb2tpZS5leHBpcmVzKSB8fCAhTnVtYmVyLmlzRmluaXRlKGNvb2tpZS5leHBpcmVzLnZhbHVlT2YoKSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYG9wdGlvbiBleHBpcmVzIGlzIGludmFsaWQ6ICR7Y29va2llLmV4cGlyZXN9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyICs9IFwiOyBFeHBpcmVzPVwiICsgY29va2llLmV4cGlyZXMudG9VVENTdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKGNvb2tpZS5odHRwT25seSkge1xuICAgICAgICBzdHIgKz0gXCI7IEh0dHBPbmx5XCI7XG4gICAgfVxuICAgIGlmIChjb29raWUuc2VjdXJlKSB7XG4gICAgICAgIHN0ciArPSBcIjsgU2VjdXJlXCI7XG4gICAgfVxuICAgIGlmIChjb29raWUucGFydGl0aW9uZWQpIHtcbiAgICAgICAgc3RyICs9IFwiOyBQYXJ0aXRpb25lZFwiO1xuICAgIH1cbiAgICBpZiAoY29va2llLnByaW9yaXR5KSB7XG4gICAgICAgIGNvbnN0IHByaW9yaXR5ID0gdHlwZW9mIGNvb2tpZS5wcmlvcml0eSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgICAgPyBjb29raWUucHJpb3JpdHkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHN3aXRjaCAocHJpb3JpdHkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJsb3dcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCI7IFByaW9yaXR5PUxvd1wiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1lZGl1bVwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgUHJpb3JpdHk9TWVkaXVtXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiaGlnaFwiOlxuICAgICAgICAgICAgICAgIHN0ciArPSBcIjsgUHJpb3JpdHk9SGlnaFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBvcHRpb24gcHJpb3JpdHkgaXMgaW52YWxpZDogJHtjb29raWUucHJpb3JpdHl9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvb2tpZS5zYW1lU2l0ZSkge1xuICAgICAgICBjb25zdCBzYW1lU2l0ZSA9IHR5cGVvZiBjb29raWUuc2FtZVNpdGUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gY29va2llLnNhbWVTaXRlLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIDogY29va2llLnNhbWVTaXRlO1xuICAgICAgICBzd2l0Y2ggKHNhbWVTaXRlKSB7XG4gICAgICAgICAgICBjYXNlIHRydWU6XG4gICAgICAgICAgICBjYXNlIFwic3RyaWN0XCI6XG4gICAgICAgICAgICAgICAgc3RyICs9IFwiOyBTYW1lU2l0ZT1TdHJpY3RcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJsYXhcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCI7IFNhbWVTaXRlPUxheFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm5vbmVcIjpcbiAgICAgICAgICAgICAgICBzdHIgKz0gXCI7IFNhbWVTaXRlPU5vbmVcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgb3B0aW9uIHNhbWVTaXRlIGlzIGludmFsaWQ6ICR7Y29va2llLnNhbWVTaXRlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG4vKipcbiAqIERlc2VyaWFsaXplIGEgYFNldC1Db29raWVgIGhlYWRlciBpbnRvIGFuIG9iamVjdC5cbiAqXG4gKiBkZXNlcmlhbGl6ZSgnZm9vPWJhcjsgaHR0cE9ubHknKVxuICogICA9PiB7IG5hbWU6ICdmb28nLCB2YWx1ZTogJ2JhcicsIGh0dHBPbmx5OiB0cnVlIH1cbiAqL1xuZnVuY3Rpb24gcGFyc2VTZXRDb29raWUoc3RyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgZGVjID0gb3B0aW9ucz8uZGVjb2RlIHx8IGRlY29kZTtcbiAgICBjb25zdCBsZW4gPSBzdHIubGVuZ3RoO1xuICAgIGNvbnN0IGVuZElkeCA9IGVuZEluZGV4KHN0ciwgMCwgbGVuKTtcbiAgICBjb25zdCBlcUlkeCA9IGVxSW5kZXgoc3RyLCAwLCBlbmRJZHgpO1xuICAgIGNvbnN0IHNldENvb2tpZSA9IGVxSWR4ID09PSAtMVxuICAgICAgICA/IHsgbmFtZTogXCJcIiwgdmFsdWU6IGRlYyh2YWx1ZVNsaWNlKHN0ciwgMCwgZW5kSWR4KSkgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIG5hbWU6IHZhbHVlU2xpY2Uoc3RyLCAwLCBlcUlkeCksXG4gICAgICAgICAgICB2YWx1ZTogZGVjKHZhbHVlU2xpY2Uoc3RyLCBlcUlkeCArIDEsIGVuZElkeCkpLFxuICAgICAgICB9O1xuICAgIGxldCBpbmRleCA9IGVuZElkeCArIDE7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuKSB7XG4gICAgICAgIGNvbnN0IGVuZElkeCA9IGVuZEluZGV4KHN0ciwgaW5kZXgsIGxlbik7XG4gICAgICAgIGNvbnN0IGVxSWR4ID0gZXFJbmRleChzdHIsIGluZGV4LCBlbmRJZHgpO1xuICAgICAgICBjb25zdCBhdHRyID0gZXFJZHggPT09IC0xXG4gICAgICAgICAgICA/IHZhbHVlU2xpY2Uoc3RyLCBpbmRleCwgZW5kSWR4KVxuICAgICAgICAgICAgOiB2YWx1ZVNsaWNlKHN0ciwgaW5kZXgsIGVxSWR4KTtcbiAgICAgICAgY29uc3QgdmFsID0gZXFJZHggPT09IC0xID8gdW5kZWZpbmVkIDogdmFsdWVTbGljZShzdHIsIGVxSWR4ICsgMSwgZW5kSWR4KTtcbiAgICAgICAgc3dpdGNoIChhdHRyLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJodHRwb25seVwiOlxuICAgICAgICAgICAgICAgIHNldENvb2tpZS5odHRwT25seSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwic2VjdXJlXCI6XG4gICAgICAgICAgICAgICAgc2V0Q29va2llLnNlY3VyZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwicGFydGl0aW9uZWRcIjpcbiAgICAgICAgICAgICAgICBzZXRDb29raWUucGFydGl0aW9uZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImRvbWFpblwiOlxuICAgICAgICAgICAgICAgIHNldENvb2tpZS5kb21haW4gPSB2YWw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwicGF0aFwiOlxuICAgICAgICAgICAgICAgIHNldENvb2tpZS5wYXRoID0gdmFsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1heC1hZ2VcIjpcbiAgICAgICAgICAgICAgICBpZiAodmFsICYmIG1heEFnZVJlZ0V4cC50ZXN0KHZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHNldENvb2tpZS5tYXhBZ2UgPSBOdW1iZXIodmFsKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJleHBpcmVzXCI6XG4gICAgICAgICAgICAgICAgaWYgKCF2YWwpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgICAgICAgICAgIGlmIChOdW1iZXIuaXNGaW5pdGUoZGF0ZS52YWx1ZU9mKCkpKVxuICAgICAgICAgICAgICAgICAgICBzZXRDb29raWUuZXhwaXJlcyA9IGRhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwicHJpb3JpdHlcIjpcbiAgICAgICAgICAgICAgICBpZiAoIXZhbClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJpb3JpdHkgPSB2YWwudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAocHJpb3JpdHkgPT09IFwibG93XCIgfHxcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHkgPT09IFwibWVkaXVtXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHkgPT09IFwiaGlnaFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldENvb2tpZS5wcmlvcml0eSA9IHByaW9yaXR5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJzYW1lc2l0ZVwiOlxuICAgICAgICAgICAgICAgIGlmICghdmFsKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjb25zdCBzYW1lU2l0ZSA9IHZhbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChzYW1lU2l0ZSA9PT0gXCJsYXhcIiB8fFxuICAgICAgICAgICAgICAgICAgICBzYW1lU2l0ZSA9PT0gXCJzdHJpY3RcIiB8fFxuICAgICAgICAgICAgICAgICAgICBzYW1lU2l0ZSA9PT0gXCJub25lXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29va2llLnNhbWVTaXRlID0gc2FtZVNpdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gZW5kSWR4ICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIHNldENvb2tpZTtcbn1cbi8qKlxuICogRmluZCB0aGUgYDtgIGNoYXJhY3RlciBiZXR3ZWVuIGBtaW5gIGFuZCBgbGVuYCBpbiBzdHIuXG4gKi9cbmZ1bmN0aW9uIGVuZEluZGV4KHN0ciwgbWluLCBsZW4pIHtcbiAgICBjb25zdCBpbmRleCA9IHN0ci5pbmRleE9mKFwiO1wiLCBtaW4pO1xuICAgIHJldHVybiBpbmRleCA9PT0gLTEgPyBsZW4gOiBpbmRleDtcbn1cbi8qKlxuICogRmluZCB0aGUgYD1gIGNoYXJhY3RlciBiZXR3ZWVuIGBtaW5gIGFuZCBgbWF4YCBpbiBzdHIuXG4gKi9cbmZ1bmN0aW9uIGVxSW5kZXgoc3RyLCBtaW4sIG1heCkge1xuICAgIGNvbnN0IGluZGV4ID0gc3RyLmluZGV4T2YoXCI9XCIsIG1pbik7XG4gICAgcmV0dXJuIGluZGV4IDwgbWF4ID8gaW5kZXggOiAtMTtcbn1cbi8qKlxuICogU2xpY2Ugb3V0IGEgdmFsdWUgYmV0d2VlbiBzdGFydFBvZCB0byBtYXguXG4gKi9cbmZ1bmN0aW9uIHZhbHVlU2xpY2Uoc3RyLCBtaW4sIG1heCkge1xuICAgIGxldCBzdGFydCA9IG1pbjtcbiAgICBsZXQgZW5kID0gbWF4O1xuICAgIGRvIHtcbiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KHN0YXJ0KTtcbiAgICAgICAgaWYgKGNvZGUgIT09IDB4MjAgLyogICAqLyAmJiBjb2RlICE9PSAweDA5IC8qIFxcdCAqLylcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH0gd2hpbGUgKCsrc3RhcnQgPCBlbmQpO1xuICAgIHdoaWxlIChlbmQgPiBzdGFydCkge1xuICAgICAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoZW5kIC0gMSk7XG4gICAgICAgIGlmIChjb2RlICE9PSAweDIwIC8qICAgKi8gJiYgY29kZSAhPT0gMHgwOSAvKiBcXHQgKi8pXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZW5kLS07XG4gICAgfVxuICAgIHJldHVybiBzdHIuc2xpY2Uoc3RhcnQsIGVuZCk7XG59XG4vKipcbiAqIFVSTC1kZWNvZGUgc3RyaW5nIHZhbHVlLiBPcHRpbWl6ZWQgdG8gc2tpcCBuYXRpdmUgY2FsbCB3aGVuIG5vICUuXG4gKi9cbmZ1bmN0aW9uIGRlY29kZShzdHIpIHtcbiAgICBpZiAoc3RyLmluZGV4T2YoXCIlXCIpID09PSAtMSlcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHN0cik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdmFsdWUgaXMgYSBEYXRlLlxuICovXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gICAgcmV0dXJuIF9fdG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgRGF0ZV1cIjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/cookie/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/cookies-next/lib/client/context.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/cookies-next/lib/client/context.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nvar __assign = (void 0) && (void 0).__assign || function() {\n __assign = Object.assign || function(t) {\n for(var s, i = 1, n = arguments.length; i < n; i++){\n s = arguments[i];\n for(var p in s)if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (void 0) && (void 0).__createBinding || (Object.create ? function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function() {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = (void 0) && (void 0).__setModuleDefault || (Object.create ? function(o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (void 0) && (void 0).__importStar || function(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) {\n for(var k in mod)if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.CookieProvider = exports.CookieContext = void 0;\nvar react_1 = __importStar(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nvar _1 = __webpack_require__(/*! . */ \"(app-pages-browser)/./node_modules/cookies-next/lib/client/index.js\");\nvar utils_1 = __webpack_require__(/*! ../common/utils */ \"(app-pages-browser)/./node_modules/cookies-next/lib/common/utils.js\");\nexports.CookieContext = (0, react_1.createContext)(null);\nfunction CookieProvider(_a) {\n var children = _a.children, pollingOptions = _a.pollingOptions;\n var _b = (0, react_1.useState)({}), cookies = _b[0], setCookies = _b[1];\n (0, react_1.useEffect)(function() {\n var initialCookies = (0, _1.getCookies)();\n if (!initialCookies) {\n return;\n }\n setCookies(initialCookies);\n }, []);\n (0, _1.useCookiesPolling)(function(newCookies) {\n if (newCookies) {\n setCookies(newCookies);\n }\n }, pollingOptions);\n var value = (0, react_1.useMemo)(function() {\n return {\n cookies: cookies,\n set: function(key, data) {\n setCookies(function(prev) {\n var _a;\n return __assign(__assign({}, prev), (_a = {}, _a[key] = encodeURIComponent((0, utils_1.stringify)(data)), _a));\n });\n },\n get: function(key) {\n var cookieValue = cookies === null || cookies === void 0 ? void 0 : cookies[key];\n return cookieValue;\n },\n getAll: function() {\n return cookies;\n },\n has: function(key) {\n return cookies.hasOwnProperty(key);\n },\n delete: function(key) {\n if (!cookies.hasOwnProperty(key)) {\n return;\n }\n setCookies(function(prev) {\n var newCookies = __assign({}, prev);\n delete newCookies[key];\n return newCookies;\n });\n },\n revalidateCookiesState: function() {\n (0, _1.revalidateCookies)(function(newCookies) {\n if (!newCookies) {\n return;\n }\n setCookies(newCookies);\n }, cookies);\n }\n };\n }, [\n cookies\n ]);\n return react_1.default.createElement(exports.CookieContext.Provider, {\n value: value\n }, children);\n}\n_c = CookieProvider;\nexports.CookieProvider = CookieProvider;\nvar _c;\n$RefreshReg$(_c, \"CookieProvider\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jb29raWVzLW5leHQvbGliL2NsaWVudC9jb250ZXh0LmpzIiwibWFwcGluZ3MiOiJxREFBYTtBQUViLElBQUlBLFdBQVcsQ0FBQyxNQUFHLEtBQUssT0FBRyxFQUFFQSxRQUFRLElBQUs7SUFDdENBLFdBQVdDLE9BQU9DLE1BQU0sSUFBSSxTQUFTQyxDQUFDO1FBQ2xDLElBQUssSUFBSUMsR0FBR0MsSUFBSSxHQUFHQyxJQUFJQyxVQUFVQyxNQUFNLEVBQUVILElBQUlDLEdBQUdELElBQUs7WUFDakRELElBQUlHLFNBQVMsQ0FBQ0YsRUFBRTtZQUNoQixJQUFLLElBQUlJLEtBQUtMLEVBQUcsSUFBSUgsT0FBT1MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1IsR0FBR0ssSUFDekROLENBQUMsQ0FBQ00sRUFBRSxHQUFHTCxDQUFDLENBQUNLLEVBQUU7UUFDbkI7UUFDQSxPQUFPTjtJQUNYO0lBQ0EsT0FBT0gsU0FBU2EsS0FBSyxDQUFDLElBQUksRUFBRU47QUFDaEM7QUFDQSxJQUFJTyxrQkFBa0IsQ0FBQyxNQUFHLEtBQUssT0FBRyxFQUFFQSxlQUFlLElBQU1iLENBQUFBLE9BQU9jLE1BQU0sR0FBSSxTQUFTQyxDQUFDLEVBQUVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxFQUFFO0lBQzFGLElBQUlBLE9BQU9DLFdBQVdELEtBQUtEO0lBQzNCLElBQUlHLE9BQU9wQixPQUFPcUIsd0JBQXdCLENBQUNMLEdBQUdDO0lBQzlDLElBQUksQ0FBQ0csUUFBUyxVQUFTQSxPQUFPLENBQUNKLEVBQUVNLFVBQVUsR0FBR0YsS0FBS0csUUFBUSxJQUFJSCxLQUFLSSxZQUFZLEdBQUc7UUFDakZKLE9BQU87WUFBRUssWUFBWTtZQUFNQyxLQUFLO2dCQUFhLE9BQU9WLENBQUMsQ0FBQ0MsRUFBRTtZQUFFO1FBQUU7SUFDOUQ7SUFDQWpCLE9BQU8yQixjQUFjLENBQUNaLEdBQUdHLElBQUlFO0FBQ2pD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USxRQUFRLFNBQVVSLEdBQUc7Z0JBQ2pCLElBQUksQ0FBQ1QsUUFBUXJDLGNBQWMsQ0FBQzhDLE1BQU07b0JBQzlCO2dCQUNKO2dCQUNBUixXQUFXLFNBQVVVLElBQUk7b0JBQ3JCLElBQUlMLGFBQWF0RCxTQUFTLENBQUMsR0FBRzJEO29CQUM5QixPQUFPTCxVQUFVLENBQUNHLElBQUk7b0JBQ3RCLE9BQU9IO2dCQUNYO1lBQ0o7WUFDQVksd0JBQXdCO2dCQUNuQixJQUFHMUIsR0FBRzJCLGlCQUFpQixFQUFFLFNBQVViLFVBQVU7b0JBQzFDLElBQUksQ0FBQ0EsWUFBWTt3QkFDYjtvQkFDSjtvQkFDQUwsV0FBV0s7Z0JBQ2YsR0FBR047WUFDUDtRQUNKO0lBQ0osR0FBRztRQUFDQTtLQUFRO0lBQ1osT0FBT1YsUUFBUThCLE9BQU8sQ0FBQ0MsYUFBYSxDQUFDbEMsUUFBUUUsYUFBYSxDQUFDaUMsUUFBUSxFQUFFO1FBQUV2QyxPQUFPQTtJQUFNLEdBQUdhO0FBQzNGO0tBdkRTUjtBQXdEVEQsc0JBQXNCLEdBQUdDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxjb29raWVzLW5leHRcXGxpYlxcY2xpZW50XFxjb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuJ3VzZSBjbGllbnQnO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX3NldE1vZHVsZURlZmF1bHQpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XG59KTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db29raWVQcm92aWRlciA9IGV4cG9ydHMuQ29va2llQ29udGV4dCA9IHZvaWQgMDtcbnZhciByZWFjdF8xID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgXzEgPSByZXF1aXJlKFwiLlwiKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi91dGlsc1wiKTtcbmV4cG9ydHMuQ29va2llQ29udGV4dCA9ICgwLCByZWFjdF8xLmNyZWF0ZUNvbnRleHQpKG51bGwpO1xuZnVuY3Rpb24gQ29va2llUHJvdmlkZXIoX2EpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBfYS5jaGlsZHJlbiwgcG9sbGluZ09wdGlvbnMgPSBfYS5wb2xsaW5nT3B0aW9ucztcbiAgICB2YXIgX2IgPSAoMCwgcmVhY3RfMS51c2VTdGF0ZSkoe30pLCBjb29raWVzID0gX2JbMF0sIHNldENvb2tpZXMgPSBfYlsxXTtcbiAgICAoMCwgcmVhY3RfMS51c2VFZmZlY3QpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGluaXRpYWxDb29raWVzID0gKDAsIF8xLmdldENvb2tpZXMpKCk7XG4gICAgICAgIGlmICghaW5pdGlhbENvb2tpZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRDb29raWVzKGluaXRpYWxDb29raWVzKTtcbiAgICB9LCBbXSk7XG4gICAgKDAsIF8xLnVzZUNvb2tpZXNQb2xsaW5nKShmdW5jdGlvbiAobmV3Q29va2llcykge1xuICAgICAgICBpZiAobmV3Q29va2llcykge1xuICAgICAgICAgICAgc2V0Q29va2llcyhuZXdDb29raWVzKTtcbiAgICAgICAgfVxuICAgIH0sIHBvbGxpbmdPcHRpb25zKTtcbiAgICB2YXIgdmFsdWUgPSAoMCwgcmVhY3RfMS51c2VNZW1vKShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb29raWVzOiBjb29raWVzLFxuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAoa2V5LCBkYXRhKSB7XG4gICAgICAgICAgICAgICAgc2V0Q29va2llcyhmdW5jdGlvbiAocHJldikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX19hc3NpZ24oX19hc3NpZ24oe30sIHByZXYpLCAoX2EgPSB7fSwgX2Fba2V5XSA9IGVuY29kZVVSSUNvbXBvbmVudCgoMCwgdXRpbHNfMS5zdHJpbmdpZnkpKGRhdGEpKSwgX2EpKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvb2tpZVZhbHVlID0gY29va2llcyA9PT0gbnVsbCB8fCBjb29raWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb29raWVzW2tleV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvb2tpZVZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldEFsbDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb29raWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb29raWVzLmhhc093blByb3BlcnR5KGtleSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjb29raWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRDb29raWVzKGZ1bmN0aW9uIChwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdDb29raWVzID0gX19hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3Q29va2llc1trZXldO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3Q29va2llcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXZhbGlkYXRlQ29va2llc1N0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgKDAsIF8xLnJldmFsaWRhdGVDb29raWVzKShmdW5jdGlvbiAobmV3Q29va2llcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld0Nvb2tpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZXRDb29raWVzKG5ld0Nvb2tpZXMpO1xuICAgICAgICAgICAgICAgIH0sIGNvb2tpZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9LCBbY29va2llc10pO1xuICAgIHJldHVybiByZWFjdF8xLmRlZmF1bHQuY3JlYXRlRWxlbWVudChleHBvcnRzLkNvb2tpZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHZhbHVlIH0sIGNoaWxkcmVuKTtcbn1cbmV4cG9ydHMuQ29va2llUHJvdmlkZXIgPSBDb29raWVQcm92aWRlcjtcbiJdLCJuYW1lcyI6WyJfX2Fzc2lnbiIsIk9iamVjdCIsImFzc2lnbiIsInQiLCJzIiwiaSIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJwIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfX2NyZWF0ZUJpbmRpbmciLCJjcmVhdGUiLCJvIiwibSIsImsiLCJrMiIsInVuZGVmaW5lZCIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfX2VzTW9kdWxlIiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZGVmaW5lUHJvcGVydHkiLCJfX3NldE1vZHVsZURlZmF1bHQiLCJ2IiwidmFsdWUiLCJfX2ltcG9ydFN0YXIiLCJtb2QiLCJyZXN1bHQiLCJleHBvcnRzIiwiQ29va2llUHJvdmlkZXIiLCJDb29raWVDb250ZXh0IiwicmVhY3RfMSIsInJlcXVpcmUiLCJfMSIsInV0aWxzXzEiLCJjcmVhdGVDb250ZXh0IiwiX2EiLCJjaGlsZHJlbiIsInBvbGxpbmdPcHRpb25zIiwiX2IiLCJ1c2VTdGF0ZSIsImNvb2tpZXMiLCJzZXRDb29raWVzIiwidXNlRWZmZWN0IiwiaW5pdGlhbENvb2tpZXMiLCJnZXRDb29raWVzIiwidXNlQ29va2llc1BvbGxpbmciLCJuZXdDb29raWVzIiwidXNlTWVtbyIsInNldCIsImtleSIsImRhdGEiLCJwcmV2IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwic3RyaW5naWZ5IiwiY29va2llVmFsdWUiLCJnZXRBbGwiLCJoYXMiLCJkZWxldGUiLCJyZXZhbGlkYXRlQ29va2llc1N0YXRlIiwicmV2YWxpZGF0ZUNvb2tpZXMiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/cookies-next/lib/client/context.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/cookies-next/lib/client/cookie-functions.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/cookies-next/lib/client/cookie-functions.js ***!
|
||
\******************************************************************/
|
||
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.revalidateCookies = exports.hasCookie = exports.deleteCookie = exports.setCookie = exports.getCookie = exports.getCookies = void 0;\nvar cookie_1 = __webpack_require__(/*! cookie */ \"(app-pages-browser)/./node_modules/cookie/dist/index.js\");\nvar utils_1 = __webpack_require__(/*! ../common/utils */ \"(app-pages-browser)/./node_modules/cookies-next/lib/common/utils.js\");\nvar ensureClientSide = function (options) {\n if (!(0, utils_1.isClientSide)(options)) {\n throw new Error('You are trying to access cookies on the server side. Please, use the server-side import with `cookies-next/server` instead.');\n }\n};\nvar getCookies = function (_options) {\n ensureClientSide(_options);\n if ((0, utils_1.getRenderPhase)() === 'server') {\n return;\n }\n var cookies = {};\n var documentCookies = document.cookie ? document.cookie.split('; ') : [];\n for (var i = 0, len = documentCookies.length; i < len; i++) {\n var cookieParts = documentCookies[i].split('=');\n var cookie = cookieParts.slice(1).join('=');\n var name_1 = cookieParts[0];\n cookies[name_1] = cookie;\n }\n return cookies;\n};\nexports.getCookies = getCookies;\nvar getCookie = function (key, options) {\n ensureClientSide(options);\n var _cookies = getCookies(options);\n var value = _cookies === null || _cookies === void 0 ? void 0 : _cookies[key];\n if (value === undefined)\n return undefined;\n return (0, utils_1.decode)(value);\n};\nexports.getCookie = getCookie;\nvar setCookie = function (key, data, options) {\n ensureClientSide(options);\n if ((0, utils_1.getRenderPhase)() === 'server') {\n return;\n }\n var _cookieOptions = options || {};\n var cookieStr = (0, cookie_1.serialize)(key, (0, utils_1.stringify)(data), __assign({ path: '/' }, _cookieOptions));\n document.cookie = cookieStr;\n};\nexports.setCookie = setCookie;\nvar deleteCookie = function (key, options) {\n ensureClientSide(options);\n setCookie(key, '', __assign(__assign({}, options), { maxAge: -1 }));\n};\nexports.deleteCookie = deleteCookie;\nvar hasCookie = function (key, options) {\n ensureClientSide(options);\n if (!key)\n return false;\n var cookies = getCookies(options);\n if (!cookies) {\n return false;\n }\n return Object.prototype.hasOwnProperty.call(cookies, key);\n};\nexports.hasCookie = hasCookie;\nvar revalidateCookies = function (onChange, previousCookies) {\n ensureClientSide();\n if ((0, utils_1.getRenderPhase)() === 'server') {\n return;\n }\n var currentCookies = getCookies();\n var hasChanged = Object.keys(__assign(__assign({}, currentCookies), previousCookies)).some(function (key) { return (currentCookies === null || currentCookies === void 0 ? void 0 : currentCookies[key]) !== (previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies[key]); });\n if (hasChanged) {\n onChange(currentCookies);\n previousCookies = currentCookies;\n }\n};\nexports.revalidateCookies = revalidateCookies;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jb29raWVzLW5leHQvbGliL2NsaWVudC9jb29raWUtZnVuY3Rpb25zLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBLGlEQUFpRCxPQUFPO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QseUJBQXlCLEdBQUcsaUJBQWlCLEdBQUcsb0JBQW9CLEdBQUcsaUJBQWlCLEdBQUcsaUJBQWlCLEdBQUcsa0JBQWtCO0FBQ2pJLGVBQWUsbUJBQU8sQ0FBQyx1RUFBUTtBQUMvQixjQUFjLG1CQUFPLENBQUMsNEZBQWlCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxRUFBcUU7QUFDckUsa0RBQWtELFNBQVM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRkFBMEYsV0FBVztBQUNyRztBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSwyQ0FBMkMsY0FBYyxZQUFZO0FBQ3JFO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCwyREFBMkQsNExBQTRMO0FBQzVTO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGNvb2tpZXMtbmV4dFxcbGliXFxjbGllbnRcXGNvb2tpZS1mdW5jdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5yZXZhbGlkYXRlQ29va2llcyA9IGV4cG9ydHMuaGFzQ29va2llID0gZXhwb3J0cy5kZWxldGVDb29raWUgPSBleHBvcnRzLnNldENvb2tpZSA9IGV4cG9ydHMuZ2V0Q29va2llID0gZXhwb3J0cy5nZXRDb29raWVzID0gdm9pZCAwO1xudmFyIGNvb2tpZV8xID0gcmVxdWlyZShcImNvb2tpZVwiKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi91dGlsc1wiKTtcbnZhciBlbnN1cmVDbGllbnRTaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICBpZiAoISgwLCB1dGlsc18xLmlzQ2xpZW50U2lkZSkob3B0aW9ucykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgYXJlIHRyeWluZyB0byBhY2Nlc3MgY29va2llcyBvbiB0aGUgc2VydmVyIHNpZGUuIFBsZWFzZSwgdXNlIHRoZSBzZXJ2ZXItc2lkZSBpbXBvcnQgd2l0aCBgY29va2llcy1uZXh0L3NlcnZlcmAgaW5zdGVhZC4nKTtcbiAgICB9XG59O1xudmFyIGdldENvb2tpZXMgPSBmdW5jdGlvbiAoX29wdGlvbnMpIHtcbiAgICBlbnN1cmVDbGllbnRTaWRlKF9vcHRpb25zKTtcbiAgICBpZiAoKDAsIHV0aWxzXzEuZ2V0UmVuZGVyUGhhc2UpKCkgPT09ICdzZXJ2ZXInKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGNvb2tpZXMgPSB7fTtcbiAgICB2YXIgZG9jdW1lbnRDb29raWVzID0gZG9jdW1lbnQuY29va2llID8gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7ICcpIDogW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGRvY3VtZW50Q29va2llcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgY29va2llUGFydHMgPSBkb2N1bWVudENvb2tpZXNbaV0uc3BsaXQoJz0nKTtcbiAgICAgICAgdmFyIGNvb2tpZSA9IGNvb2tpZVBhcnRzLnNsaWNlKDEpLmpvaW4oJz0nKTtcbiAgICAgICAgdmFyIG5hbWVfMSA9IGNvb2tpZVBhcnRzWzBdO1xuICAgICAgICBjb29raWVzW25hbWVfMV0gPSBjb29raWU7XG4gICAgfVxuICAgIHJldHVybiBjb29raWVzO1xufTtcbmV4cG9ydHMuZ2V0Q29va2llcyA9IGdldENvb2tpZXM7XG52YXIgZ2V0Q29va2llID0gZnVuY3Rpb24gKGtleSwgb3B0aW9ucykge1xuICAgIGVuc3VyZUNsaWVudFNpZGUob3B0aW9ucyk7XG4gICAgdmFyIF9jb29raWVzID0gZ2V0Q29va2llcyhvcHRpb25zKTtcbiAgICB2YXIgdmFsdWUgPSBfY29va2llcyA9PT0gbnVsbCB8fCBfY29va2llcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Nvb2tpZXNba2V5XTtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKDAsIHV0aWxzXzEuZGVjb2RlKSh2YWx1ZSk7XG59O1xuZXhwb3J0cy5nZXRDb29raWUgPSBnZXRDb29raWU7XG52YXIgc2V0Q29va2llID0gZnVuY3Rpb24gKGtleSwgZGF0YSwgb3B0aW9ucykge1xuICAgIGVuc3VyZUNsaWVudFNpZGUob3B0aW9ucyk7XG4gICAgaWYgKCgwLCB1dGlsc18xLmdldFJlbmRlclBoYXNlKSgpID09PSAnc2VydmVyJykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBfY29va2llT3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgdmFyIGNvb2tpZVN0ciA9ICgwLCBjb29raWVfMS5zZXJpYWxpemUpKGtleSwgKDAsIHV0aWxzXzEuc3RyaW5naWZ5KShkYXRhKSwgX19hc3NpZ24oeyBwYXRoOiAnLycgfSwgX2Nvb2tpZU9wdGlvbnMpKTtcbiAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWVTdHI7XG59O1xuZXhwb3J0cy5zZXRDb29raWUgPSBzZXRDb29raWU7XG52YXIgZGVsZXRlQ29va2llID0gZnVuY3Rpb24gKGtleSwgb3B0aW9ucykge1xuICAgIGVuc3VyZUNsaWVudFNpZGUob3B0aW9ucyk7XG4gICAgc2V0Q29va2llKGtleSwgJycsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBtYXhBZ2U6IC0xIH0pKTtcbn07XG5leHBvcnRzLmRlbGV0ZUNvb2tpZSA9IGRlbGV0ZUNvb2tpZTtcbnZhciBoYXNDb29raWUgPSBmdW5jdGlvbiAoa2V5LCBvcHRpb25zKSB7XG4gICAgZW5zdXJlQ2xpZW50U2lkZShvcHRpb25zKTtcbiAgICBpZiAoIWtleSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHZhciBjb29raWVzID0gZ2V0Q29va2llcyhvcHRpb25zKTtcbiAgICBpZiAoIWNvb2tpZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvb2tpZXMsIGtleSk7XG59O1xuZXhwb3J0cy5oYXNDb29raWUgPSBoYXNDb29raWU7XG52YXIgcmV2YWxpZGF0ZUNvb2tpZXMgPSBmdW5jdGlvbiAob25DaGFuZ2UsIHByZXZpb3VzQ29va2llcykge1xuICAgIGVuc3VyZUNsaWVudFNpZGUoKTtcbiAgICBpZiAoKDAsIHV0aWxzXzEuZ2V0UmVuZGVyUGhhc2UpKCkgPT09ICdzZXJ2ZXInKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGN1cnJlbnRDb29raWVzID0gZ2V0Q29va2llcygpO1xuICAgIHZhciBoYXNDaGFuZ2VkID0gT2JqZWN0LmtleXMoX19hc3NpZ24oX19hc3NpZ24oe30sIGN1cnJlbnRDb29raWVzKSwgcHJldmlvdXNDb29raWVzKSkuc29tZShmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoY3VycmVudENvb2tpZXMgPT09IG51bGwgfHwgY3VycmVudENvb2tpZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1cnJlbnRDb29raWVzW2tleV0pICE9PSAocHJldmlvdXNDb29raWVzID09PSBudWxsIHx8IHByZXZpb3VzQ29va2llcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJldmlvdXNDb29raWVzW2tleV0pOyB9KTtcbiAgICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgICAgICBvbkNoYW5nZShjdXJyZW50Q29va2llcyk7XG4gICAgICAgIHByZXZpb3VzQ29va2llcyA9IGN1cnJlbnRDb29raWVzO1xuICAgIH1cbn07XG5leHBvcnRzLnJldmFsaWRhdGVDb29raWVzID0gcmV2YWxpZGF0ZUNvb2tpZXM7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/cookies-next/lib/client/cookie-functions.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/cookies-next/lib/client/hooks.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/cookies-next/lib/client/hooks.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.useRevalidateCookiesState = exports.useReactiveHasCookie = exports.useReactiveDeleteCookie = exports.useReactiveSetCookie = exports.useReactiveGetCookie = exports.useReactiveGetCookies = exports.useReactiveCookiesNext = exports.useCookiesNext = exports.useHasCookie = exports.useDeleteCookie = exports.useSetCookie = exports.useGetCookie = exports.useGetCookies = exports.useCookiesPolling = void 0;\nvar context_1 = __webpack_require__(/*! ./context */ \"(app-pages-browser)/./node_modules/cookies-next/lib/client/context.js\");\nvar react_1 = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nvar cookie_functions_1 = __webpack_require__(/*! ./cookie-functions */ \"(app-pages-browser)/./node_modules/cookies-next/lib/client/cookie-functions.js\");\nvar useWrappedCookieFn = function (cookieFnCb) {\n var _a = (0, react_1.useState)(false), isMounted = _a[0], setIsMounted = _a[1];\n (0, react_1.useEffect)(function () {\n setIsMounted(true);\n }, []);\n return isMounted ? cookieFnCb : (function () { });\n};\nvar useCookieContext = function () {\n var context = (0, react_1.useContext)(context_1.CookieContext);\n if (!context) {\n throw new Error('useCookieContext must be used within a CookieProvider');\n }\n return context;\n};\nvar useCookiesPolling = function (onChange, pollingOptions) {\n var _a = pollingOptions || {}, _b = _a.intervalMs, intervalMs = _b === void 0 ? 1000 : _b, _c = _a.enabled, enabled = _c === void 0 ? false : _c;\n (0, react_1.useEffect)(function () {\n if (!enabled) {\n return;\n }\n var previousCookies = (0, cookie_functions_1.getCookies)();\n var interval = setInterval(function () {\n (0, cookie_functions_1.revalidateCookies)(onChange, previousCookies);\n }, intervalMs);\n return function () { return clearInterval(interval); };\n }, [onChange, intervalMs]);\n};\nexports.useCookiesPolling = useCookiesPolling;\nvar useGetCookies = function () { return useWrappedCookieFn(cookie_functions_1.getCookies); };\nexports.useGetCookies = useGetCookies;\nvar useGetCookie = function () { return useWrappedCookieFn(cookie_functions_1.getCookie); };\nexports.useGetCookie = useGetCookie;\nvar useHasCookie = function () { return useWrappedCookieFn(cookie_functions_1.hasCookie); };\nexports.useHasCookie = useHasCookie;\nvar useSetCookie = function () { return useWrappedCookieFn(cookie_functions_1.setCookie); };\nexports.useSetCookie = useSetCookie;\nvar useDeleteCookie = function () { return useWrappedCookieFn(cookie_functions_1.deleteCookie); };\nexports.useDeleteCookie = useDeleteCookie;\nvar useCookiesNext = function () {\n return {\n getCookies: useGetCookies(),\n getCookie: useGetCookie(),\n hasCookie: useHasCookie(),\n setCookie: useSetCookie(),\n deleteCookie: useDeleteCookie(),\n };\n};\nexports.useCookiesNext = useCookiesNext;\nvar useReactiveGetCookies = function () {\n var context = useCookieContext();\n return function () { return context === null || context === void 0 ? void 0 : context.getAll(); };\n};\nexports.useReactiveGetCookies = useReactiveGetCookies;\nvar useReactiveGetCookie = function () {\n var context = useCookieContext();\n return function (key) {\n return context === null || context === void 0 ? void 0 : context.get(key);\n };\n};\nexports.useReactiveGetCookie = useReactiveGetCookie;\nvar useReactiveSetCookie = function () {\n var context = useCookieContext();\n return function (key, data, options) {\n context === null || context === void 0 ? void 0 : context.set(key, data);\n return (0, cookie_functions_1.setCookie)(key, data, options);\n };\n};\nexports.useReactiveSetCookie = useReactiveSetCookie;\nvar useReactiveDeleteCookie = function () {\n var context = useCookieContext();\n return function (key, options) {\n context === null || context === void 0 ? void 0 : context.delete(key);\n return (0, cookie_functions_1.deleteCookie)(key, options);\n };\n};\nexports.useReactiveDeleteCookie = useReactiveDeleteCookie;\nvar useReactiveHasCookie = function () {\n var context = useCookieContext();\n return function (key) {\n return context === null || context === void 0 ? void 0 : context.has(key);\n };\n};\nexports.useReactiveHasCookie = useReactiveHasCookie;\nvar useRevalidateCookiesState = function () {\n var context = useCookieContext();\n return function () {\n context === null || context === void 0 ? void 0 : context.revalidateCookiesState();\n };\n};\nexports.useRevalidateCookiesState = useRevalidateCookiesState;\nvar useReactiveCookiesNext = function () {\n return {\n getCookies: useReactiveGetCookies(),\n getCookie: useReactiveGetCookie(),\n hasCookie: useReactiveHasCookie(),\n setCookie: useReactiveSetCookie(),\n deleteCookie: useReactiveDeleteCookie(),\n revalidateCookiesState: useRevalidateCookiesState(),\n };\n};\nexports.useReactiveCookiesNext = useReactiveCookiesNext;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jb29raWVzLW5leHQvbGliL2NsaWVudC9ob29rcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxpQ0FBaUMsR0FBRyw0QkFBNEIsR0FBRywrQkFBK0IsR0FBRyw0QkFBNEIsR0FBRyw0QkFBNEIsR0FBRyw2QkFBNkIsR0FBRyw4QkFBOEIsR0FBRyxzQkFBc0IsR0FBRyxvQkFBb0IsR0FBRyx1QkFBdUIsR0FBRyxvQkFBb0IsR0FBRyxvQkFBb0IsR0FBRyxxQkFBcUIsR0FBRyx5QkFBeUI7QUFDN1ksZ0JBQWdCLG1CQUFPLENBQUMsd0ZBQVc7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLG1GQUFPO0FBQzdCLHlCQUF5QixtQkFBTyxDQUFDLDBHQUFvQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULDZCQUE2QjtBQUM3QixLQUFLO0FBQ0w7QUFDQSx5QkFBeUI7QUFDekIsa0NBQWtDO0FBQ2xDLHFCQUFxQjtBQUNyQixpQ0FBaUM7QUFDakMsb0JBQW9CO0FBQ3BCLGlDQUFpQztBQUNqQyxvQkFBb0I7QUFDcEIsaUNBQWlDO0FBQ2pDLG9CQUFvQjtBQUNwQixvQ0FBb0M7QUFDcEMsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxjb29raWVzLW5leHRcXGxpYlxcY2xpZW50XFxob29rcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudXNlUmV2YWxpZGF0ZUNvb2tpZXNTdGF0ZSA9IGV4cG9ydHMudXNlUmVhY3RpdmVIYXNDb29raWUgPSBleHBvcnRzLnVzZVJlYWN0aXZlRGVsZXRlQ29va2llID0gZXhwb3J0cy51c2VSZWFjdGl2ZVNldENvb2tpZSA9IGV4cG9ydHMudXNlUmVhY3RpdmVHZXRDb29raWUgPSBleHBvcnRzLnVzZVJlYWN0aXZlR2V0Q29va2llcyA9IGV4cG9ydHMudXNlUmVhY3RpdmVDb29raWVzTmV4dCA9IGV4cG9ydHMudXNlQ29va2llc05leHQgPSBleHBvcnRzLnVzZUhhc0Nvb2tpZSA9IGV4cG9ydHMudXNlRGVsZXRlQ29va2llID0gZXhwb3J0cy51c2VTZXRDb29raWUgPSBleHBvcnRzLnVzZUdldENvb2tpZSA9IGV4cG9ydHMudXNlR2V0Q29va2llcyA9IGV4cG9ydHMudXNlQ29va2llc1BvbGxpbmcgPSB2b2lkIDA7XG52YXIgY29udGV4dF8xID0gcmVxdWlyZShcIi4vY29udGV4dFwiKTtcbnZhciByZWFjdF8xID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIGNvb2tpZV9mdW5jdGlvbnNfMSA9IHJlcXVpcmUoXCIuL2Nvb2tpZS1mdW5jdGlvbnNcIik7XG52YXIgdXNlV3JhcHBlZENvb2tpZUZuID0gZnVuY3Rpb24gKGNvb2tpZUZuQ2IpIHtcbiAgICB2YXIgX2EgPSAoMCwgcmVhY3RfMS51c2VTdGF0ZSkoZmFsc2UpLCBpc01vdW50ZWQgPSBfYVswXSwgc2V0SXNNb3VudGVkID0gX2FbMV07XG4gICAgKDAsIHJlYWN0XzEudXNlRWZmZWN0KShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldElzTW91bnRlZCh0cnVlKTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIGlzTW91bnRlZCA/IGNvb2tpZUZuQ2IgOiAoZnVuY3Rpb24gKCkgeyB9KTtcbn07XG52YXIgdXNlQ29va2llQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY29udGV4dCA9ICgwLCByZWFjdF8xLnVzZUNvbnRleHQpKGNvbnRleHRfMS5Db29raWVDb250ZXh0KTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1c2VDb29raWVDb250ZXh0IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBDb29raWVQcm92aWRlcicpO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dDtcbn07XG52YXIgdXNlQ29va2llc1BvbGxpbmcgPSBmdW5jdGlvbiAob25DaGFuZ2UsIHBvbGxpbmdPcHRpb25zKSB7XG4gICAgdmFyIF9hID0gcG9sbGluZ09wdGlvbnMgfHwge30sIF9iID0gX2EuaW50ZXJ2YWxNcywgaW50ZXJ2YWxNcyA9IF9iID09PSB2b2lkIDAgPyAxMDAwIDogX2IsIF9jID0gX2EuZW5hYmxlZCwgZW5hYmxlZCA9IF9jID09PSB2b2lkIDAgPyBmYWxzZSA6IF9jO1xuICAgICgwLCByZWFjdF8xLnVzZUVmZmVjdCkoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldmlvdXNDb29raWVzID0gKDAsIGNvb2tpZV9mdW5jdGlvbnNfMS5nZXRDb29raWVzKSgpO1xuICAgICAgICB2YXIgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAoMCwgY29va2llX2Z1bmN0aW9uc18xLnJldmFsaWRhdGVDb29raWVzKShvbkNoYW5nZSwgcHJldmlvdXNDb29raWVzKTtcbiAgICAgICAgfSwgaW50ZXJ2YWxNcyk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBjbGVhckludGVydmFsKGludGVydmFsKTsgfTtcbiAgICB9LCBbb25DaGFuZ2UsIGludGVydmFsTXNdKTtcbn07XG5leHBvcnRzLnVzZUNvb2tpZXNQb2xsaW5nID0gdXNlQ29va2llc1BvbGxpbmc7XG52YXIgdXNlR2V0Q29va2llcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVzZVdyYXBwZWRDb29raWVGbihjb29raWVfZnVuY3Rpb25zXzEuZ2V0Q29va2llcyk7IH07XG5leHBvcnRzLnVzZUdldENvb2tpZXMgPSB1c2VHZXRDb29raWVzO1xudmFyIHVzZUdldENvb2tpZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVzZVdyYXBwZWRDb29raWVGbihjb29raWVfZnVuY3Rpb25zXzEuZ2V0Q29va2llKTsgfTtcbmV4cG9ydHMudXNlR2V0Q29va2llID0gdXNlR2V0Q29va2llO1xudmFyIHVzZUhhc0Nvb2tpZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVzZVdyYXBwZWRDb29raWVGbihjb29raWVfZnVuY3Rpb25zXzEuaGFzQ29va2llKTsgfTtcbmV4cG9ydHMudXNlSGFzQ29va2llID0gdXNlSGFzQ29va2llO1xudmFyIHVzZVNldENvb2tpZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVzZVdyYXBwZWRDb29raWVGbihjb29raWVfZnVuY3Rpb25zXzEuc2V0Q29va2llKTsgfTtcbmV4cG9ydHMudXNlU2V0Q29va2llID0gdXNlU2V0Q29va2llO1xudmFyIHVzZURlbGV0ZUNvb2tpZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVzZVdyYXBwZWRDb29raWVGbihjb29raWVfZnVuY3Rpb25zXzEuZGVsZXRlQ29va2llKTsgfTtcbmV4cG9ydHMudXNlRGVsZXRlQ29va2llID0gdXNlRGVsZXRlQ29va2llO1xudmFyIHVzZUNvb2tpZXNOZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldENvb2tpZXM6IHVzZUdldENvb2tpZXMoKSxcbiAgICAgICAgZ2V0Q29va2llOiB1c2VHZXRDb29raWUoKSxcbiAgICAgICAgaGFzQ29va2llOiB1c2VIYXNDb29raWUoKSxcbiAgICAgICAgc2V0Q29va2llOiB1c2VTZXRDb29raWUoKSxcbiAgICAgICAgZGVsZXRlQ29va2llOiB1c2VEZWxldGVDb29raWUoKSxcbiAgICB9O1xufTtcbmV4cG9ydHMudXNlQ29va2llc05leHQgPSB1c2VDb29raWVzTmV4dDtcbnZhciB1c2VSZWFjdGl2ZUdldENvb2tpZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvbnRleHQgPSB1c2VDb29raWVDb250ZXh0KCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbnRleHQgPT09IG51bGwgfHwgY29udGV4dCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGV4dC5nZXRBbGwoKTsgfTtcbn07XG5leHBvcnRzLnVzZVJlYWN0aXZlR2V0Q29va2llcyA9IHVzZVJlYWN0aXZlR2V0Q29va2llcztcbnZhciB1c2VSZWFjdGl2ZUdldENvb2tpZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY29udGV4dCA9IHVzZUNvb2tpZUNvbnRleHQoKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gY29udGV4dCA9PT0gbnVsbCB8fCBjb250ZXh0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZXh0LmdldChrZXkpO1xuICAgIH07XG59O1xuZXhwb3J0cy51c2VSZWFjdGl2ZUdldENvb2tpZSA9IHVzZVJlYWN0aXZlR2V0Q29va2llO1xudmFyIHVzZVJlYWN0aXZlU2V0Q29va2llID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb250ZXh0ID0gdXNlQ29va2llQ29udGV4dCgpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoa2V5LCBkYXRhLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnRleHQgPT09IG51bGwgfHwgY29udGV4dCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGV4dC5zZXQoa2V5LCBkYXRhKTtcbiAgICAgICAgcmV0dXJuICgwLCBjb29raWVfZnVuY3Rpb25zXzEuc2V0Q29va2llKShrZXksIGRhdGEsIG9wdGlvbnMpO1xuICAgIH07XG59O1xuZXhwb3J0cy51c2VSZWFjdGl2ZVNldENvb2tpZSA9IHVzZVJlYWN0aXZlU2V0Q29va2llO1xudmFyIHVzZVJlYWN0aXZlRGVsZXRlQ29va2llID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb250ZXh0ID0gdXNlQ29va2llQ29udGV4dCgpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoa2V5LCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnRleHQgPT09IG51bGwgfHwgY29udGV4dCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGV4dC5kZWxldGUoa2V5KTtcbiAgICAgICAgcmV0dXJuICgwLCBjb29raWVfZnVuY3Rpb25zXzEuZGVsZXRlQ29va2llKShrZXksIG9wdGlvbnMpO1xuICAgIH07XG59O1xuZXhwb3J0cy51c2VSZWFjdGl2ZURlbGV0ZUNvb2tpZSA9IHVzZVJlYWN0aXZlRGVsZXRlQ29va2llO1xudmFyIHVzZVJlYWN0aXZlSGFzQ29va2llID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb250ZXh0ID0gdXNlQ29va2llQ29udGV4dCgpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0ID09PSBudWxsIHx8IGNvbnRleHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRleHQuaGFzKGtleSk7XG4gICAgfTtcbn07XG5leHBvcnRzLnVzZVJlYWN0aXZlSGFzQ29va2llID0gdXNlUmVhY3RpdmVIYXNDb29raWU7XG52YXIgdXNlUmV2YWxpZGF0ZUNvb2tpZXNTdGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY29udGV4dCA9IHVzZUNvb2tpZUNvbnRleHQoKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBjb250ZXh0ID09PSBudWxsIHx8IGNvbnRleHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRleHQucmV2YWxpZGF0ZUNvb2tpZXNTdGF0ZSgpO1xuICAgIH07XG59O1xuZXhwb3J0cy51c2VSZXZhbGlkYXRlQ29va2llc1N0YXRlID0gdXNlUmV2YWxpZGF0ZUNvb2tpZXNTdGF0ZTtcbnZhciB1c2VSZWFjdGl2ZUNvb2tpZXNOZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldENvb2tpZXM6IHVzZVJlYWN0aXZlR2V0Q29va2llcygpLFxuICAgICAgICBnZXRDb29raWU6IHVzZVJlYWN0aXZlR2V0Q29va2llKCksXG4gICAgICAgIGhhc0Nvb2tpZTogdXNlUmVhY3RpdmVIYXNDb29raWUoKSxcbiAgICAgICAgc2V0Q29va2llOiB1c2VSZWFjdGl2ZVNldENvb2tpZSgpLFxuICAgICAgICBkZWxldGVDb29raWU6IHVzZVJlYWN0aXZlRGVsZXRlQ29va2llKCksXG4gICAgICAgIHJldmFsaWRhdGVDb29raWVzU3RhdGU6IHVzZVJldmFsaWRhdGVDb29raWVzU3RhdGUoKSxcbiAgICB9O1xufTtcbmV4cG9ydHMudXNlUmVhY3RpdmVDb29raWVzTmV4dCA9IHVzZVJlYWN0aXZlQ29va2llc05leHQ7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/cookies-next/lib/client/hooks.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/cookies-next/lib/client/index.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/cookies-next/lib/client/index.js ***!
|
||
\*******************************************************/
|
||
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CookiesNextProvider = void 0;\n__exportStar(__webpack_require__(/*! ../common/types */ \"(app-pages-browser)/./node_modules/cookies-next/lib/common/types.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cookie-functions */ \"(app-pages-browser)/./node_modules/cookies-next/lib/client/cookie-functions.js\"), exports);\nvar context_1 = __webpack_require__(/*! ./context */ \"(app-pages-browser)/./node_modules/cookies-next/lib/client/context.js\");\nObject.defineProperty(exports, \"CookiesNextProvider\", ({ enumerable: true, get: function () { return context_1.CookieProvider; } }));\n__exportStar(__webpack_require__(/*! ./hooks */ \"(app-pages-browser)/./node_modules/cookies-next/lib/client/hooks.js\"), exports);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jb29raWVzLW5leHQvbGliL2NsaWVudC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxvQ0FBb0M7QUFDbkQ7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCwyQkFBMkI7QUFDM0IsYUFBYSxtQkFBTyxDQUFDLDRGQUFpQjtBQUN0QyxhQUFhLG1CQUFPLENBQUMsMEdBQW9CO0FBQ3pDLGdCQUFnQixtQkFBTyxDQUFDLHdGQUFXO0FBQ25DLHVEQUFzRCxFQUFFLHFDQUFxQyxvQ0FBb0MsRUFBQztBQUNsSSxhQUFhLG1CQUFPLENBQUMsb0ZBQVMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGNvb2tpZXMtbmV4dFxcbGliXFxjbGllbnRcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNvb2tpZXNOZXh0UHJvdmlkZXIgPSB2b2lkIDA7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4uL2NvbW1vbi90eXBlc1wiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vY29va2llLWZ1bmN0aW9uc1wiKSwgZXhwb3J0cyk7XG52YXIgY29udGV4dF8xID0gcmVxdWlyZShcIi4vY29udGV4dFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvb2tpZXNOZXh0UHJvdmlkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbnRleHRfMS5Db29raWVQcm92aWRlcjsgfSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9ob29rc1wiKSwgZXhwb3J0cyk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/cookies-next/lib/client/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/cookies-next/lib/common/types.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/cookies-next/lib/common/types.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jb29raWVzLW5leHQvbGliL2NvbW1vbi90eXBlcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QyxFQUFFLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcY29va2llcy1uZXh0XFxsaWJcXGNvbW1vblxcdHlwZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/cookies-next/lib/common/types.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/cookies-next/lib/common/utils.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/cookies-next/lib/common/utils.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getRenderPhase = exports.isClientSide = exports.decode = exports.stringify = void 0;\nvar stringify = function (value) {\n try {\n if (typeof value === 'string') {\n return value;\n }\n var stringifiedValue = JSON.stringify(value);\n return stringifiedValue;\n }\n catch (e) {\n return value;\n }\n};\nexports.stringify = stringify;\nvar decode = function (str) {\n if (!str)\n return str;\n return str.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n};\nexports.decode = decode;\nvar isClientSide = function (options) {\n return !(options === null || options === void 0 ? void 0 : options.req) && !(options === null || options === void 0 ? void 0 : options.res) && !(options && 'cookies' in options && (options === null || options === void 0 ? void 0 : options.cookies));\n};\nexports.isClientSide = isClientSide;\nvar getRenderPhase = function () { return (typeof window === 'undefined' ? 'server' : 'client'); };\nexports.getRenderPhase = getRenderPhase;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jb29raWVzLW5leHQvbGliL2NvbW1vbi91dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxzQkFBc0IsR0FBRyxvQkFBb0IsR0FBRyxjQUFjLEdBQUcsaUJBQWlCO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsRUFBRTtBQUNyQztBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsbUNBQW1DO0FBQ25DLHNCQUFzQiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcY29va2llcy1uZXh0XFxsaWJcXGNvbW1vblxcdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdldFJlbmRlclBoYXNlID0gZXhwb3J0cy5pc0NsaWVudFNpZGUgPSBleHBvcnRzLmRlY29kZSA9IGV4cG9ydHMuc3RyaW5naWZ5ID0gdm9pZCAwO1xudmFyIHN0cmluZ2lmeSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmluZ2lmaWVkVmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBzdHJpbmdpZmllZFZhbHVlO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufTtcbmV4cG9ydHMuc3RyaW5naWZ5ID0gc3RyaW5naWZ5O1xudmFyIGRlY29kZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICBpZiAoIXN0cilcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyglWzAtOUEtWl17Mn0pKy9nLCBkZWNvZGVVUklDb21wb25lbnQpO1xufTtcbmV4cG9ydHMuZGVjb2RlID0gZGVjb2RlO1xudmFyIGlzQ2xpZW50U2lkZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgcmV0dXJuICEob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJlcSkgJiYgIShvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucmVzKSAmJiAhKG9wdGlvbnMgJiYgJ2Nvb2tpZXMnIGluIG9wdGlvbnMgJiYgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jb29raWVzKSk7XG59O1xuZXhwb3J0cy5pc0NsaWVudFNpZGUgPSBpc0NsaWVudFNpZGU7XG52YXIgZ2V0UmVuZGVyUGhhc2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyAnc2VydmVyJyA6ICdjbGllbnQnKTsgfTtcbmV4cG9ydHMuZ2V0UmVuZGVyUGhhc2UgPSBnZXRSZW5kZXJQaGFzZTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/cookies-next/lib/common/utils.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/cookies-next/lib/index.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/cookies-next/lib/index.js ***!
|
||
\************************************************/
|
||
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CookiesNextProvider = exports.useReactiveCookiesNext = exports.useReactiveHasCookie = exports.useReactiveDeleteCookie = exports.useReactiveSetCookie = exports.useReactiveGetCookie = exports.useReactiveGetCookies = exports.useCookiesNext = exports.useDeleteCookie = exports.useGetCookie = exports.useSetCookie = exports.useHasCookie = exports.useGetCookies = exports.hasCookie = exports.deleteCookie = exports.setCookie = exports.getCookie = exports.getCookies = void 0;\nvar clientCookies = __importStar(__webpack_require__(/*! ./client */ \"(app-pages-browser)/./node_modules/cookies-next/lib/client/index.js\"));\nvar serverCookies = __importStar(__webpack_require__(/*! ./server */ \"(app-pages-browser)/./node_modules/cookies-next/lib/server/index.js\"));\n__exportStar(__webpack_require__(/*! ./common/types */ \"(app-pages-browser)/./node_modules/cookies-next/lib/common/types.js\"), exports);\nvar utils_1 = __webpack_require__(/*! ./common/utils */ \"(app-pages-browser)/./node_modules/cookies-next/lib/common/utils.js\");\nvar getCookies = function (options) {\n return (0, utils_1.isClientSide)(options) ? clientCookies.getCookies(options) : serverCookies.getCookies(options);\n};\nexports.getCookies = getCookies;\nvar getCookie = function (key, options) {\n return (0, utils_1.isClientSide)(options) ? clientCookies.getCookie(key, options) : serverCookies.getCookie(key, options);\n};\nexports.getCookie = getCookie;\nvar setCookie = function (key, data, options) {\n return (0, utils_1.isClientSide)(options) ? clientCookies.setCookie(key, data, options) : serverCookies.setCookie(key, data, options);\n};\nexports.setCookie = setCookie;\nvar deleteCookie = function (key, options) {\n return (0, utils_1.isClientSide)(options) ? clientCookies.deleteCookie(key, options) : serverCookies.deleteCookie(key, options);\n};\nexports.deleteCookie = deleteCookie;\nvar hasCookie = function (key, options) {\n return (0, utils_1.isClientSide)(options) ? clientCookies.hasCookie(key, options) : serverCookies.hasCookie(key, options);\n};\nexports.hasCookie = hasCookie;\nvar client_1 = __webpack_require__(/*! ./client */ \"(app-pages-browser)/./node_modules/cookies-next/lib/client/index.js\");\nObject.defineProperty(exports, \"useGetCookies\", ({ enumerable: true, get: function () { return client_1.useGetCookies; } }));\nObject.defineProperty(exports, \"useHasCookie\", ({ enumerable: true, get: function () { return client_1.useHasCookie; } }));\nObject.defineProperty(exports, \"useSetCookie\", ({ enumerable: true, get: function () { return client_1.useSetCookie; } }));\nObject.defineProperty(exports, \"useGetCookie\", ({ enumerable: true, get: function () { return client_1.useGetCookie; } }));\nObject.defineProperty(exports, \"useDeleteCookie\", ({ enumerable: true, get: function () { return client_1.useDeleteCookie; } }));\nObject.defineProperty(exports, \"useCookiesNext\", ({ enumerable: true, get: function () { return client_1.useCookiesNext; } }));\nObject.defineProperty(exports, \"useReactiveGetCookies\", ({ enumerable: true, get: function () { return client_1.useReactiveGetCookies; } }));\nObject.defineProperty(exports, \"useReactiveGetCookie\", ({ enumerable: true, get: function () { return client_1.useReactiveGetCookie; } }));\nObject.defineProperty(exports, \"useReactiveSetCookie\", ({ enumerable: true, get: function () { return client_1.useReactiveSetCookie; } }));\nObject.defineProperty(exports, \"useReactiveDeleteCookie\", ({ enumerable: true, get: function () { return client_1.useReactiveDeleteCookie; } }));\nObject.defineProperty(exports, \"useReactiveHasCookie\", ({ enumerable: true, get: function () { return client_1.useReactiveHasCookie; } }));\nObject.defineProperty(exports, \"useReactiveCookiesNext\", ({ enumerable: true, get: function () { return client_1.useReactiveCookiesNext; } }));\nObject.defineProperty(exports, \"CookiesNextProvider\", ({ enumerable: true, get: function () { return client_1.CookiesNextProvider; } }));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jb29raWVzLW5leHQvbGliL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG9DQUFvQztBQUNuRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSwwQ0FBMEMsNEJBQTRCO0FBQ3RFLENBQUM7QUFDRDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCwyQkFBMkIsR0FBRyw4QkFBOEIsR0FBRyw0QkFBNEIsR0FBRywrQkFBK0IsR0FBRyw0QkFBNEIsR0FBRyw0QkFBNEIsR0FBRyw2QkFBNkIsR0FBRyxzQkFBc0IsR0FBRyx1QkFBdUIsR0FBRyxvQkFBb0IsR0FBRyxvQkFBb0IsR0FBRyxvQkFBb0IsR0FBRyxxQkFBcUIsR0FBRyxpQkFBaUIsR0FBRyxvQkFBb0IsR0FBRyxpQkFBaUIsR0FBRyxpQkFBaUIsR0FBRyxrQkFBa0I7QUFDbmQsaUNBQWlDLG1CQUFPLENBQUMscUZBQVU7QUFDbkQsaUNBQWlDLG1CQUFPLENBQUMscUZBQVU7QUFDbkQsYUFBYSxtQkFBTyxDQUFDLDJGQUFnQjtBQUNyQyxjQUFjLG1CQUFPLENBQUMsMkZBQWdCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsZUFBZSxtQkFBTyxDQUFDLHFGQUFVO0FBQ2pDLGlEQUFnRCxFQUFFLHFDQUFxQyxrQ0FBa0MsRUFBQztBQUMxSCxnREFBK0MsRUFBRSxxQ0FBcUMsaUNBQWlDLEVBQUM7QUFDeEgsZ0RBQStDLEVBQUUscUNBQXFDLGlDQUFpQyxFQUFDO0FBQ3hILGdEQUErQyxFQUFFLHFDQUFxQyxpQ0FBaUMsRUFBQztBQUN4SCxtREFBa0QsRUFBRSxxQ0FBcUMsb0NBQW9DLEVBQUM7QUFDOUgsa0RBQWlELEVBQUUscUNBQXFDLG1DQUFtQyxFQUFDO0FBQzVILHlEQUF3RCxFQUFFLHFDQUFxQywwQ0FBMEMsRUFBQztBQUMxSSx3REFBdUQsRUFBRSxxQ0FBcUMseUNBQXlDLEVBQUM7QUFDeEksd0RBQXVELEVBQUUscUNBQXFDLHlDQUF5QyxFQUFDO0FBQ3hJLDJEQUEwRCxFQUFFLHFDQUFxQyw0Q0FBNEMsRUFBQztBQUM5SSx3REFBdUQsRUFBRSxxQ0FBcUMseUNBQXlDLEVBQUM7QUFDeEksMERBQXlELEVBQUUscUNBQXFDLDJDQUEyQyxFQUFDO0FBQzVJLHVEQUFzRCxFQUFFLHFDQUFxQyx3Q0FBd0MsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcY29va2llcy1uZXh0XFxsaWJcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdCkgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcbn0pIDogZnVuY3Rpb24obywgdikge1xuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcbn0pO1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgX19leHBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4cG9ydHMsIHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db29raWVzTmV4dFByb3ZpZGVyID0gZXhwb3J0cy51c2VSZWFjdGl2ZUNvb2tpZXNOZXh0ID0gZXhwb3J0cy51c2VSZWFjdGl2ZUhhc0Nvb2tpZSA9IGV4cG9ydHMudXNlUmVhY3RpdmVEZWxldGVDb29raWUgPSBleHBvcnRzLnVzZVJlYWN0aXZlU2V0Q29va2llID0gZXhwb3J0cy51c2VSZWFjdGl2ZUdldENvb2tpZSA9IGV4cG9ydHMudXNlUmVhY3RpdmVHZXRDb29raWVzID0gZXhwb3J0cy51c2VDb29raWVzTmV4dCA9IGV4cG9ydHMudXNlRGVsZXRlQ29va2llID0gZXhwb3J0cy51c2VHZXRDb29raWUgPSBleHBvcnRzLnVzZVNldENvb2tpZSA9IGV4cG9ydHMudXNlSGFzQ29va2llID0gZXhwb3J0cy51c2VHZXRDb29raWVzID0gZXhwb3J0cy5oYXNDb29raWUgPSBleHBvcnRzLmRlbGV0ZUNvb2tpZSA9IGV4cG9ydHMuc2V0Q29va2llID0gZXhwb3J0cy5nZXRDb29raWUgPSBleHBvcnRzLmdldENvb2tpZXMgPSB2b2lkIDA7XG52YXIgY2xpZW50Q29va2llcyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9jbGllbnRcIikpO1xudmFyIHNlcnZlckNvb2tpZXMgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc2VydmVyXCIpKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9jb21tb24vdHlwZXNcIiksIGV4cG9ydHMpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi9jb21tb24vdXRpbHNcIik7XG52YXIgZ2V0Q29va2llcyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgcmV0dXJuICgwLCB1dGlsc18xLmlzQ2xpZW50U2lkZSkob3B0aW9ucykgPyBjbGllbnRDb29raWVzLmdldENvb2tpZXMob3B0aW9ucykgOiBzZXJ2ZXJDb29raWVzLmdldENvb2tpZXMob3B0aW9ucyk7XG59O1xuZXhwb3J0cy5nZXRDb29raWVzID0gZ2V0Q29va2llcztcbnZhciBnZXRDb29raWUgPSBmdW5jdGlvbiAoa2V5LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuICgwLCB1dGlsc18xLmlzQ2xpZW50U2lkZSkob3B0aW9ucykgPyBjbGllbnRDb29raWVzLmdldENvb2tpZShrZXksIG9wdGlvbnMpIDogc2VydmVyQ29va2llcy5nZXRDb29raWUoa2V5LCBvcHRpb25zKTtcbn07XG5leHBvcnRzLmdldENvb2tpZSA9IGdldENvb2tpZTtcbnZhciBzZXRDb29raWUgPSBmdW5jdGlvbiAoa2V5LCBkYXRhLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuICgwLCB1dGlsc18xLmlzQ2xpZW50U2lkZSkob3B0aW9ucykgPyBjbGllbnRDb29raWVzLnNldENvb2tpZShrZXksIGRhdGEsIG9wdGlvbnMpIDogc2VydmVyQ29va2llcy5zZXRDb29raWUoa2V5LCBkYXRhLCBvcHRpb25zKTtcbn07XG5leHBvcnRzLnNldENvb2tpZSA9IHNldENvb2tpZTtcbnZhciBkZWxldGVDb29raWUgPSBmdW5jdGlvbiAoa2V5LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuICgwLCB1dGlsc18xLmlzQ2xpZW50U2lkZSkob3B0aW9ucykgPyBjbGllbnRDb29raWVzLmRlbGV0ZUNvb2tpZShrZXksIG9wdGlvbnMpIDogc2VydmVyQ29va2llcy5kZWxldGVDb29raWUoa2V5LCBvcHRpb25zKTtcbn07XG5leHBvcnRzLmRlbGV0ZUNvb2tpZSA9IGRlbGV0ZUNvb2tpZTtcbnZhciBoYXNDb29raWUgPSBmdW5jdGlvbiAoa2V5LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuICgwLCB1dGlsc18xLmlzQ2xpZW50U2lkZSkob3B0aW9ucykgPyBjbGllbnRDb29raWVzLmhhc0Nvb2tpZShrZXksIG9wdGlvbnMpIDogc2VydmVyQ29va2llcy5oYXNDb29raWUoa2V5LCBvcHRpb25zKTtcbn07XG5leHBvcnRzLmhhc0Nvb2tpZSA9IGhhc0Nvb2tpZTtcbnZhciBjbGllbnRfMSA9IHJlcXVpcmUoXCIuL2NsaWVudFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInVzZUdldENvb2tpZXNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsaWVudF8xLnVzZUdldENvb2tpZXM7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ1c2VIYXNDb29raWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsaWVudF8xLnVzZUhhc0Nvb2tpZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInVzZVNldENvb2tpZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xpZW50XzEudXNlU2V0Q29va2llOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidXNlR2V0Q29va2llXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjbGllbnRfMS51c2VHZXRDb29raWU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ1c2VEZWxldGVDb29raWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsaWVudF8xLnVzZURlbGV0ZUNvb2tpZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInVzZUNvb2tpZXNOZXh0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjbGllbnRfMS51c2VDb29raWVzTmV4dDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInVzZVJlYWN0aXZlR2V0Q29va2llc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xpZW50XzEudXNlUmVhY3RpdmVHZXRDb29raWVzOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidXNlUmVhY3RpdmVHZXRDb29raWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsaWVudF8xLnVzZVJlYWN0aXZlR2V0Q29va2llOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidXNlUmVhY3RpdmVTZXRDb29raWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsaWVudF8xLnVzZVJlYWN0aXZlU2V0Q29va2llOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidXNlUmVhY3RpdmVEZWxldGVDb29raWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsaWVudF8xLnVzZVJlYWN0aXZlRGVsZXRlQ29va2llOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidXNlUmVhY3RpdmVIYXNDb29raWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsaWVudF8xLnVzZVJlYWN0aXZlSGFzQ29va2llOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidXNlUmVhY3RpdmVDb29raWVzTmV4dFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xpZW50XzEudXNlUmVhY3RpdmVDb29raWVzTmV4dDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNvb2tpZXNOZXh0UHJvdmlkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsaWVudF8xLkNvb2tpZXNOZXh0UHJvdmlkZXI7IH0gfSk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/cookies-next/lib/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/cookies-next/lib/server/index.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/cookies-next/lib/server/index.js ***!
|
||
\*******************************************************/
|
||
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) 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 = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.hasCookie = exports.deleteCookie = exports.setCookie = exports.getCookie = exports.getCookies = void 0;\nvar cookie_1 = __webpack_require__(/*! cookie */ \"(app-pages-browser)/./node_modules/cookie/dist/index.js\");\nvar utils_1 = __webpack_require__(/*! ../common/utils */ \"(app-pages-browser)/./node_modules/cookies-next/lib/common/utils.js\");\nvar ensureServerSide = function (context) {\n if ((0, utils_1.isClientSide)(context)) {\n throw new Error('You are trying to access cookies on the client side. Please, use the client-side import with `cookies-next/client` instead.');\n }\n};\nvar isCookiesFromNext = function (cookieStore) {\n if (!cookieStore)\n return false;\n return ('getAll' in cookieStore &&\n 'set' in cookieStore &&\n typeof cookieStore.getAll === 'function' &&\n typeof cookieStore.set === 'function');\n};\nvar isContextFromNext = function (context) {\n return ((!!(context === null || context === void 0 ? void 0 : context.req) && 'cookies' in context.req && isCookiesFromNext(context.req.cookies)) ||\n (!!(context === null || context === void 0 ? void 0 : context.res) && 'cookies' in context.res && isCookiesFromNext(context.res.cookies)) ||\n (!!context && 'cookies' in context && typeof context.cookies === 'function'));\n};\nvar transformAppRouterCookies = function (cookies) {\n var _cookies = {};\n cookies.getAll().forEach(function (_a) {\n var name = _a.name, value = _a.value;\n _cookies[name] = value;\n });\n return _cookies;\n};\nvar getCookies = function (options) { return __awaiter(void 0, void 0, void 0, function () {\n var _a, httpRequest;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n ensureServerSide(options);\n if (!isContextFromNext(options)) return [3 /*break*/, 2];\n if (options.req) {\n return [2 /*return*/, transformAppRouterCookies(options.req.cookies)];\n }\n if (options.res) {\n return [2 /*return*/, transformAppRouterCookies(options.res.cookies)];\n }\n if (!options.cookies) return [3 /*break*/, 2];\n _a = transformAppRouterCookies;\n return [4 /*yield*/, options.cookies()];\n case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];\n case 2:\n if (options === null || options === void 0 ? void 0 : options.req) {\n httpRequest = options.req;\n }\n if (httpRequest === null || httpRequest === void 0 ? void 0 : httpRequest.cookies) {\n return [2 /*return*/, httpRequest.cookies];\n }\n if (httpRequest === null || httpRequest === void 0 ? void 0 : httpRequest.headers.cookie) {\n return [2 /*return*/, (0, cookie_1.parse)(httpRequest.headers.cookie)];\n }\n return [2 /*return*/, {}];\n }\n });\n}); };\nexports.getCookies = getCookies;\nvar getCookie = function (key, options) { return __awaiter(void 0, void 0, void 0, function () {\n var cookies, value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n ensureServerSide(options);\n return [4 /*yield*/, getCookies(options)];\n case 1:\n cookies = _a.sent();\n value = cookies[key];\n if (value === undefined)\n return [2 /*return*/, undefined];\n return [2 /*return*/, (0, utils_1.decode)(value)];\n }\n });\n}); };\nexports.getCookie = getCookie;\nvar setCookie = function (key, data, options) { return __awaiter(void 0, void 0, void 0, function () {\n var req_1, res_1, cookiesFn, restOptions, payload, cookieOptions, req, res, _a, _req, _res, rest, cookieStore, currentCookies, cookies, cookies;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n ensureServerSide(options);\n if (!isContextFromNext(options)) return [3 /*break*/, 3];\n req_1 = options.req, res_1 = options.res, cookiesFn = options.cookies, restOptions = __rest(options, [\"req\", \"res\", \"cookies\"]);\n payload = __assign({ name: key, value: (0, utils_1.stringify)(data) }, restOptions);\n if (req_1) {\n req_1.cookies.set(payload);\n }\n if (res_1) {\n res_1.cookies.set(payload);\n }\n if (!cookiesFn) return [3 /*break*/, 2];\n return [4 /*yield*/, cookiesFn()];\n case 1:\n (_b.sent()).set(payload);\n _b.label = 2;\n case 2: return [2 /*return*/];\n case 3:\n cookieOptions = {};\n if (options) {\n _a = options, _req = _a.req, _res = _a.res, rest = __rest(_a, [\"req\", \"res\"]);\n req = _req;\n res = _res;\n cookieOptions = rest;\n }\n cookieStore = (0, cookie_1.serialize)(key, (0, utils_1.stringify)(data), __assign({ path: '/' }, cookieOptions));\n if (res && req) {\n currentCookies = res.getHeader('Set-Cookie');\n if (!Array.isArray(currentCookies)) {\n currentCookies = !currentCookies ? [] : [String(currentCookies)];\n }\n res.setHeader('Set-Cookie', currentCookies.concat(cookieStore));\n if (req && req.cookies) {\n cookies = req.cookies;\n data === '' ? delete cookies[key] : (cookies[key] = (0, utils_1.stringify)(data));\n }\n if (req && req.headers && req.headers.cookie) {\n cookies = (0, cookie_1.parse)(req.headers.cookie);\n data === '' ? delete cookies[key] : (cookies[key] = (0, utils_1.stringify)(data));\n req.headers.cookie = Object.entries(cookies).reduce(function (accum, item) {\n return accum.concat(\"\".concat(item[0], \"=\").concat(item[1], \";\"));\n }, '');\n }\n }\n return [2 /*return*/];\n }\n });\n}); };\nexports.setCookie = setCookie;\nvar deleteCookie = function (key, options) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n ensureServerSide(options);\n return [2 /*return*/, setCookie(key, '', __assign(__assign({}, options), { maxAge: -1 }))];\n });\n}); };\nexports.deleteCookie = deleteCookie;\nvar hasCookie = function (key, options) { return __awaiter(void 0, void 0, void 0, function () {\n var cookie;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n ensureServerSide(options);\n if (!key)\n return [2 /*return*/, false];\n return [4 /*yield*/, getCookies(options)];\n case 1:\n cookie = _a.sent();\n return [2 /*return*/, cookie.hasOwnProperty(key)];\n }\n });\n}); };\nexports.hasCookie = hasCookie;\n__exportStar(__webpack_require__(/*! ../common/types */ \"(app-pages-browser)/./node_modules/cookies-next/lib/common/types.js\"), exports);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jb29raWVzLW5leHQvbGliL3NlcnZlci9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQSxpREFBaUQsT0FBTztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG9DQUFvQztBQUNuRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsK0RBQStELGlCQUFpQjtBQUM1RztBQUNBLG9DQUFvQyxNQUFNLCtCQUErQixZQUFZO0FBQ3JGLG1DQUFtQyxNQUFNLG1DQUFtQyxZQUFZO0FBQ3hGLGdDQUFnQztBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyw2QkFBNkIsMEJBQTBCLGNBQWMscUJBQXFCO0FBQ3hHLGlCQUFpQixvREFBb0QscUVBQXFFLGNBQWM7QUFDeEosdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEMsbUNBQW1DLFNBQVM7QUFDNUMsbUNBQW1DLFdBQVcsVUFBVTtBQUN4RCwwQ0FBMEMsY0FBYztBQUN4RDtBQUNBLDhHQUE4RyxPQUFPO0FBQ3JILGlGQUFpRixpQkFBaUI7QUFDbEcseURBQXlELGdCQUFnQixRQUFRO0FBQ2pGLCtDQUErQyxnQkFBZ0IsZ0JBQWdCO0FBQy9FO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSxVQUFVLFlBQVksYUFBYSxTQUFTLFVBQVU7QUFDdEQsb0NBQW9DLFNBQVM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsY0FBYztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELGlCQUFpQixHQUFHLG9CQUFvQixHQUFHLGlCQUFpQixHQUFHLGlCQUFpQixHQUFHLGtCQUFrQjtBQUNyRyxlQUFlLG1CQUFPLENBQUMsdUVBQVE7QUFDL0IsY0FBYyxtQkFBTyxDQUFDLDRGQUFpQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBLEtBQUs7QUFDTCxDQUFDO0FBQ0Qsa0JBQWtCO0FBQ2xCLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxDQUFDO0FBQ0QsaUJBQWlCO0FBQ2pCLGdEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxnREFBZ0Q7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9HQUFvRyxXQUFXO0FBQy9HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRkFBMEY7QUFDMUYseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLENBQUM7QUFDRCxpQkFBaUI7QUFDakIsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQSxxRUFBcUUsY0FBYyxZQUFZO0FBQy9GLEtBQUs7QUFDTCxDQUFDO0FBQ0Qsb0JBQW9CO0FBQ3BCLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQztBQUNELGlCQUFpQjtBQUNqQixhQUFhLG1CQUFPLENBQUMsNEZBQWlCIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxjb29raWVzLW5leHRcXGxpYlxcc2VydmVyXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaGFzQ29va2llID0gZXhwb3J0cy5kZWxldGVDb29raWUgPSBleHBvcnRzLnNldENvb2tpZSA9IGV4cG9ydHMuZ2V0Q29va2llID0gZXhwb3J0cy5nZXRDb29raWVzID0gdm9pZCAwO1xudmFyIGNvb2tpZV8xID0gcmVxdWlyZShcImNvb2tpZVwiKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi91dGlsc1wiKTtcbnZhciBlbnN1cmVTZXJ2ZXJTaWRlID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBpZiAoKDAsIHV0aWxzXzEuaXNDbGllbnRTaWRlKShjb250ZXh0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBhcmUgdHJ5aW5nIHRvIGFjY2VzcyBjb29raWVzIG9uIHRoZSBjbGllbnQgc2lkZS4gUGxlYXNlLCB1c2UgdGhlIGNsaWVudC1zaWRlIGltcG9ydCB3aXRoIGBjb29raWVzLW5leHQvY2xpZW50YCBpbnN0ZWFkLicpO1xuICAgIH1cbn07XG52YXIgaXNDb29raWVzRnJvbU5leHQgPSBmdW5jdGlvbiAoY29va2llU3RvcmUpIHtcbiAgICBpZiAoIWNvb2tpZVN0b3JlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICgnZ2V0QWxsJyBpbiBjb29raWVTdG9yZSAmJlxuICAgICAgICAnc2V0JyBpbiBjb29raWVTdG9yZSAmJlxuICAgICAgICB0eXBlb2YgY29va2llU3RvcmUuZ2V0QWxsID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIHR5cGVvZiBjb29raWVTdG9yZS5zZXQgPT09ICdmdW5jdGlvbicpO1xufTtcbnZhciBpc0NvbnRleHRGcm9tTmV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgcmV0dXJuICgoISEoY29udGV4dCA9PT0gbnVsbCB8fCBjb250ZXh0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZXh0LnJlcSkgJiYgJ2Nvb2tpZXMnIGluIGNvbnRleHQucmVxICYmIGlzQ29va2llc0Zyb21OZXh0KGNvbnRleHQucmVxLmNvb2tpZXMpKSB8fFxuICAgICAgICAoISEoY29udGV4dCA9PT0gbnVsbCB8fCBjb250ZXh0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZXh0LnJlcykgJiYgJ2Nvb2tpZXMnIGluIGNvbnRleHQucmVzICYmIGlzQ29va2llc0Zyb21OZXh0KGNvbnRleHQucmVzLmNvb2tpZXMpKSB8fFxuICAgICAgICAoISFjb250ZXh0ICYmICdjb29raWVzJyBpbiBjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0LmNvb2tpZXMgPT09ICdmdW5jdGlvbicpKTtcbn07XG52YXIgdHJhbnNmb3JtQXBwUm91dGVyQ29va2llcyA9IGZ1bmN0aW9uIChjb29raWVzKSB7XG4gICAgdmFyIF9jb29raWVzID0ge307XG4gICAgY29va2llcy5nZXRBbGwoKS5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgbmFtZSA9IF9hLm5hbWUsIHZhbHVlID0gX2EudmFsdWU7XG4gICAgICAgIF9jb29raWVzW25hbWVdID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIF9jb29raWVzO1xufTtcbnZhciBnZXRDb29raWVzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hLCBodHRwUmVxdWVzdDtcbiAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBlbnN1cmVTZXJ2ZXJTaWRlKG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGlmICghaXNDb250ZXh0RnJvbU5leHQob3B0aW9ucykpIHJldHVybiBbMyAvKmJyZWFrKi8sIDJdO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnJlcSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgdHJhbnNmb3JtQXBwUm91dGVyQ29va2llcyhvcHRpb25zLnJlcS5jb29raWVzKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnJlcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgdHJhbnNmb3JtQXBwUm91dGVyQ29va2llcyhvcHRpb25zLnJlcy5jb29raWVzKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5jb29raWVzKSByZXR1cm4gWzMgLypicmVhayovLCAyXTtcbiAgICAgICAgICAgICAgICBfYSA9IHRyYW5zZm9ybUFwcFJvdXRlckNvb2tpZXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgb3B0aW9ucy5jb29raWVzKCldO1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gWzIgLypyZXR1cm4qLywgX2EuYXBwbHkodm9pZCAwLCBbX2Iuc2VudCgpXSldO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucmVxKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0dHBSZXF1ZXN0ID0gb3B0aW9ucy5yZXE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChodHRwUmVxdWVzdCA9PT0gbnVsbCB8fCBodHRwUmVxdWVzdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaHR0cFJlcXVlc3QuY29va2llcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgaHR0cFJlcXVlc3QuY29va2llc107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChodHRwUmVxdWVzdCA9PT0gbnVsbCB8fCBodHRwUmVxdWVzdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaHR0cFJlcXVlc3QuaGVhZGVycy5jb29raWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sICgwLCBjb29raWVfMS5wYXJzZSkoaHR0cFJlcXVlc3QuaGVhZGVycy5jb29raWUpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHt9XTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7IH07XG5leHBvcnRzLmdldENvb2tpZXMgPSBnZXRDb29raWVzO1xudmFyIGdldENvb2tpZSA9IGZ1bmN0aW9uIChrZXksIG9wdGlvbnMpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvb2tpZXMsIHZhbHVlO1xuICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGVuc3VyZVNlcnZlclNpZGUob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZ2V0Q29va2llcyhvcHRpb25zKV07XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgY29va2llcyA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGNvb2tpZXNba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHVuZGVmaW5lZF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sICgwLCB1dGlsc18xLmRlY29kZSkodmFsdWUpXTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7IH07XG5leHBvcnRzLmdldENvb2tpZSA9IGdldENvb2tpZTtcbnZhciBzZXRDb29raWUgPSBmdW5jdGlvbiAoa2V5LCBkYXRhLCBvcHRpb25zKSB7IHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXFfMSwgcmVzXzEsIGNvb2tpZXNGbiwgcmVzdE9wdGlvbnMsIHBheWxvYWQsIGNvb2tpZU9wdGlvbnMsIHJlcSwgcmVzLCBfYSwgX3JlcSwgX3JlcywgcmVzdCwgY29va2llU3RvcmUsIGN1cnJlbnRDb29raWVzLCBjb29raWVzLCBjb29raWVzO1xuICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgc3dpdGNoIChfYi5sYWJlbCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGVuc3VyZVNlcnZlclNpZGUob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0NvbnRleHRGcm9tTmV4dChvcHRpb25zKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgcmVxXzEgPSBvcHRpb25zLnJlcSwgcmVzXzEgPSBvcHRpb25zLnJlcywgY29va2llc0ZuID0gb3B0aW9ucy5jb29raWVzLCByZXN0T3B0aW9ucyA9IF9fcmVzdChvcHRpb25zLCBbXCJyZXFcIiwgXCJyZXNcIiwgXCJjb29raWVzXCJdKTtcbiAgICAgICAgICAgICAgICBwYXlsb2FkID0gX19hc3NpZ24oeyBuYW1lOiBrZXksIHZhbHVlOiAoMCwgdXRpbHNfMS5zdHJpbmdpZnkpKGRhdGEpIH0sIHJlc3RPcHRpb25zKTtcbiAgICAgICAgICAgICAgICBpZiAocmVxXzEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxXzEuY29va2llcy5zZXQocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXNfMSkge1xuICAgICAgICAgICAgICAgICAgICByZXNfMS5jb29raWVzLnNldChwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFjb29raWVzRm4pIHJldHVybiBbMyAvKmJyZWFrKi8sIDJdO1xuICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGNvb2tpZXNGbigpXTtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAoX2Iuc2VudCgpKS5zZXQocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgX2IubGFiZWwgPSAyO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgY29va2llT3B0aW9ucyA9IHt9O1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIF9hID0gb3B0aW9ucywgX3JlcSA9IF9hLnJlcSwgX3JlcyA9IF9hLnJlcywgcmVzdCA9IF9fcmVzdChfYSwgW1wicmVxXCIsIFwicmVzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgcmVxID0gX3JlcTtcbiAgICAgICAgICAgICAgICAgICAgcmVzID0gX3JlcztcbiAgICAgICAgICAgICAgICAgICAgY29va2llT3B0aW9ucyA9IHJlc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvb2tpZVN0b3JlID0gKDAsIGNvb2tpZV8xLnNlcmlhbGl6ZSkoa2V5LCAoMCwgdXRpbHNfMS5zdHJpbmdpZnkpKGRhdGEpLCBfX2Fzc2lnbih7IHBhdGg6ICcvJyB9LCBjb29raWVPcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXEpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvb2tpZXMgPSByZXMuZ2V0SGVhZGVyKCdTZXQtQ29va2llJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50Q29va2llcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb29raWVzID0gIWN1cnJlbnRDb29raWVzID8gW10gOiBbU3RyaW5nKGN1cnJlbnRDb29raWVzKV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignU2V0LUNvb2tpZScsIGN1cnJlbnRDb29raWVzLmNvbmNhdChjb29raWVTdG9yZSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVxICYmIHJlcS5jb29raWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb29raWVzID0gcmVxLmNvb2tpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID09PSAnJyA/IGRlbGV0ZSBjb29raWVzW2tleV0gOiAoY29va2llc1trZXldID0gKDAsIHV0aWxzXzEuc3RyaW5naWZ5KShkYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcSAmJiByZXEuaGVhZGVycyAmJiByZXEuaGVhZGVycy5jb29raWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZXMgPSAoMCwgY29va2llXzEucGFyc2UpKHJlcS5oZWFkZXJzLmNvb2tpZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID09PSAnJyA/IGRlbGV0ZSBjb29raWVzW2tleV0gOiAoY29va2llc1trZXldID0gKDAsIHV0aWxzXzEuc3RyaW5naWZ5KShkYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXEuaGVhZGVycy5jb29raWUgPSBPYmplY3QuZW50cmllcyhjb29raWVzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjY3VtLCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtLmNvbmNhdChcIlwiLmNvbmNhdChpdGVtWzBdLCBcIj1cIikuY29uY2F0KGl0ZW1bMV0sIFwiO1wiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICB9XG4gICAgfSk7XG59KTsgfTtcbmV4cG9ydHMuc2V0Q29va2llID0gc2V0Q29va2llO1xudmFyIGRlbGV0ZUNvb2tpZSA9IGZ1bmN0aW9uIChrZXksIG9wdGlvbnMpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICBlbnN1cmVTZXJ2ZXJTaWRlKG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgc2V0Q29va2llKGtleSwgJycsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBtYXhBZ2U6IC0xIH0pKV07XG4gICAgfSk7XG59KTsgfTtcbmV4cG9ydHMuZGVsZXRlQ29va2llID0gZGVsZXRlQ29va2llO1xudmFyIGhhc0Nvb2tpZSA9IGZ1bmN0aW9uIChrZXksIG9wdGlvbnMpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvb2tpZTtcbiAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBlbnN1cmVTZXJ2ZXJTaWRlKG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGlmICgha2V5KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgZmFsc2VdO1xuICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGdldENvb2tpZXMob3B0aW9ucyldO1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIGNvb2tpZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgY29va2llLmhhc093blByb3BlcnR5KGtleSldO1xuICAgICAgICB9XG4gICAgfSk7XG59KTsgfTtcbmV4cG9ydHMuaGFzQ29va2llID0gaGFzQ29va2llO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuLi9jb21tb24vdHlwZXNcIiksIGV4cG9ydHMpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/cookies-next/lib/server/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/Icon.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/Icon.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Icon)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _defaultAttributes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultAttributes.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/defaultAttributes.js\");\n/* harmony import */ var _shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shared/src/utils.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/shared/src/utils.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \n\n\nconst Icon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(_c = (param, ref)=>{\n let { color = \"currentColor\", size = 24, strokeWidth = 2, absoluteStrokeWidth, className = \"\", children, iconNode, ...rest } = param;\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(\"svg\", {\n ref,\n ..._defaultAttributes_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: (0,_shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__.mergeClasses)(\"lucide\", className),\n ...rest\n }, [\n ...iconNode.map((param)=>{\n let [tag, attrs] = param;\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(tag, attrs);\n }),\n ...Array.isArray(children) ? children : [\n children\n ]\n ]);\n});\n_c1 = Icon;\n //# sourceMappingURL=Icon.js.map\nvar _c, _c1;\n$RefreshReg$(_c, \"Icon$forwardRef\");\n$RefreshReg$(_c1, \"Icon\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vSWNvbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBLENBQU0sU0FBTyx3RUFDWCxRQVdFLEdBQ0c7UUFYSCxFQUNFLEtBQVEsbUJBQ1IsSUFBTyxPQUNQLFdBQWMsTUFDZCxxQkFDQSxTQUFZLE9BQ1osVUFDQSxVQUNBLEdBQUc7SUFJRSwyRUFDTCxNQUNBO1FBQ0U7UUFDQSxHQUFHO1FBQ0gsS0FBTztRQUNQLE1BQVE7UUFDUixNQUFRO1FBQ1IsWUFBYSxxQkFBdUIsUUFBTyxFQUFXLFlBQUksSUFBTSxVQUFPLENBQUksSUFBSTtRQUMvRSxVQUFXLG1FQUFhLFdBQVUsU0FBUztRQUMzQyxHQUFHO0lBQ0wsR0FDQTtXQUNLLENBQVMsWUFBSTtnQkFBQyxDQUFDLENBQUssS0FBSyxLQUFNO2lDQUFBLHFEQUFjLEdBQUssT0FBSyxDQUFDOztXQUN2RCxLQUFNLFNBQVEsUUFBUSxDQUFJLGNBQVc7WUFBQyxRQUFRO1NBQUE7S0FDcEQ7QUFFSiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcc3JjXFxJY29uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVmYXVsdEF0dHJpYnV0ZXMgZnJvbSAnLi9kZWZhdWx0QXR0cmlidXRlcyc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcyB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcblxuaW50ZXJmYWNlIEljb25Db21wb25lbnRQcm9wcyBleHRlbmRzIEx1Y2lkZVByb3BzIHtcbiAgaWNvbk5vZGU6IEljb25Ob2RlO1xufVxuXG4vKipcbiAqIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICpcbiAqIEBjb21wb25lbnQgSWNvblxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY29sb3IgLSBUaGUgY29sb3Igb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zaXplIC0gVGhlIHNpemUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zdHJva2VXaWR0aCAtIFRoZSBzdHJva2Ugd2lkdGggb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuYWJzb2x1dGVTdHJva2VXaWR0aCAtIFdoZXRoZXIgdG8gdXNlIGFic29sdXRlIHN0cm9rZSB3aWR0aFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNsYXNzTmFtZSAtIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5jaGlsZHJlbiAtIFRoZSBjaGlsZHJlbiBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuaWNvbk5vZGUgLSBUaGUgaWNvbiBub2RlIG9mIHRoZSBpY29uXG4gKlxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgSWNvbiA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvbkNvbXBvbmVudFByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzaXplID0gMjQsXG4gICAgICBzdHJva2VXaWR0aCA9IDIsXG4gICAgICBhYnNvbHV0ZVN0cm9rZVdpZHRoLFxuICAgICAgY2xhc3NOYW1lID0gJycsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgLi4ucmVzdFxuICAgIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAgICdzdmcnLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIC4uLmRlZmF1bHRBdHRyaWJ1dGVzLFxuICAgICAgICB3aWR0aDogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLFxuICAgICAgICBzdHJva2U6IGNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aDogYWJzb2x1dGVTdHJva2VXaWR0aCA/IChOdW1iZXIoc3Ryb2tlV2lkdGgpICogMjQpIC8gTnVtYmVyKHNpemUpIDogc3Ryb2tlV2lkdGgsXG4gICAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKCdsdWNpZGUnLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgLi4uaWNvbk5vZGUubWFwKChbdGFnLCBhdHRyc10pID0+IGNyZWF0ZUVsZW1lbnQodGFnLCBhdHRycykpLFxuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pLFxuICAgICAgXSxcbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/Icon.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/createLucideIcon.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ createLucideIcon)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shared/src/utils.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/shared/src/utils.js\");\n/* harmony import */ var _Icon_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Icon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/Icon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \n\n\nconst createLucideIcon = (iconName, iconNode)=>{\n const Component = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)((param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Icon_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref,\n iconNode,\n className: (0,_shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__.mergeClasses)(\"lucide-\".concat((0,_shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__.toKebabCase)(iconName)), className),\n ...props\n });\n });\n Component.displayName = \"\".concat(iconName);\n return Component;\n};\n //# sourceMappingURL=createLucideIcon.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vY3JlYXRlTHVjaWRlSWNvbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBV00sdUJBQW1CLEdBQUMsVUFBa0IsUUFBdUI7SUFDakUsTUFBTSxDQUFZLG1GQUFpRTtZQUF6QixFQUFFLENBQVcsV0FBRyxRQUFTOzZCQUNqRixvREFBYSxDQUFDLGdEQUFNO1lBQ2xCO1lBQ0E7WUFDQSxXQUFXLGtFQUFhLFdBQStCLE9BQXJCLGlFQUFXLENBQUMsUUFBUSxDQUFDLEdBQUksU0FBUztZQUNwRSxHQUFHO1FBQUEsQ0FDSjs7SUFHTyx3QkFBYyxDQUFHLEVBQVEsT0FBUixRQUFRO0lBRTVCO0FBQ1QiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXHNyY1xcY3JlYXRlTHVjaWRlSWNvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzLCB0b0tlYmFiQ2FzZSB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcblxuLyoqXG4gKiBDcmVhdGUgYSBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpY29uTmFtZVxuICogQHBhcmFtIHthcnJheX0gaWNvbk5vZGVcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IGNyZWF0ZUx1Y2lkZUljb24gPSAoaWNvbk5hbWU6IHN0cmluZywgaWNvbk5vZGU6IEljb25Ob2RlKSA9PiB7XG4gIGNvbnN0IENvbXBvbmVudCA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgTHVjaWRlUHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PlxuICAgIGNyZWF0ZUVsZW1lbnQoSWNvbiwge1xuICAgICAgcmVmLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcyhgbHVjaWRlLSR7dG9LZWJhYkNhc2UoaWNvbk5hbWUpfWAsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KSxcbiAgKTtcblxuICBDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgJHtpY29uTmFtZX1gO1xuXG4gIHJldHVybiBDb21wb25lbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVMdWNpZGVJY29uO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/defaultAttributes.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/defaultAttributes.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ defaultAttributes)\n/* harmony export */ });\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ var defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n //# sourceMappingURL=defaultAttributes.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vZGVmYXVsdEF0dHJpYnV0ZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0lBQUEsQ0FBZTtJQUNiLEtBQU87SUFDUCxLQUFPO0lBQ1AsTUFBUTtJQUNSLE9BQVM7SUFDVCxJQUFNO0lBQ04sTUFBUTtJQUNSLFdBQWE7SUFDYixhQUFlO0lBQ2YsY0FBZ0I7QUFDbEIiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXHNyY1xcZGVmYXVsdEF0dHJpYnV0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICB4bWxuczogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgd2lkdGg6IDI0LFxuICBoZWlnaHQ6IDI0LFxuICB2aWV3Qm94OiAnMCAwIDI0IDI0JyxcbiAgZmlsbDogJ25vbmUnLFxuICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICBzdHJva2VXaWR0aDogMixcbiAgc3Ryb2tlTGluZWNhcDogJ3JvdW5kJyxcbiAgc3Ryb2tlTGluZWpvaW46ICdyb3VuZCcsXG59O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/defaultAttributes.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/award.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/award.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Award)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Award = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Award\", [\n [\n \"path\",\n {\n d: \"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526\",\n key: \"1yiouv\"\n }\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"8\",\n r: \"6\",\n key: \"1vp47v\"\n }\n ]\n]);\n //# sourceMappingURL=award.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvYXdhcmQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFhTSxjQUFRLGdFQUFnQixDQUFDLE9BQVM7SUFDdEM7UUFDRTtRQUNBO1lBQ0UsQ0FBRztZQUNILEdBQUs7UUFDUDtLQUNGO0lBQ0E7UUFBQyxRQUFVO1FBQUE7WUFBRSxFQUFJO1lBQU0sQ0FBSSxPQUFLO1lBQUEsQ0FBRztZQUFLLEdBQUs7UUFBQSxDQUFVO0tBQUE7Q0FDeEQiLCJzb3VyY2VzIjpbIkU6XFxzcmNcXGljb25zXFxhd2FyZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEF3YXJkXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFV1TkRjM0lERXlMamc1SURFdU5URTFJRGd1TlRJMllTNDFMalVnTUNBd0lERXRMamd4TGpRM2JDMHpMalU0TFRJdU5qZzNZVEVnTVNBd0lEQWdNQzB4TGpFNU55QXdiQzB6TGpVNE5pQXlMalk0Tm1FdU5TNDFJREFnTUNBeExTNDRNUzB1TkRZNWJERXVOVEUwTFRndU5USTJJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakV5SWlCamVUMGlPQ0lnY2owaU5pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hd2FyZFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEF3YXJkID0gY3JlYXRlTHVjaWRlSWNvbignQXdhcmQnLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ20xNS40NzcgMTIuODkgMS41MTUgOC41MjZhLjUuNSAwIDAgMS0uODEuNDdsLTMuNTgtMi42ODdhMSAxIDAgMCAwLTEuMTk3IDBsLTMuNTg2IDIuNjg2YS41LjUgMCAwIDEtLjgxLS40NjlsMS41MTQtOC41MjYnLFxuICAgICAga2V5OiAnMXlpb3V2JyxcbiAgICB9LFxuICBdLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnOCcsIHI6ICc2Jywga2V5OiAnMXZwNDd2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBd2FyZDtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/award.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/bold.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/bold.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Bold)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Bold = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Bold\", [\n [\n \"path\",\n {\n d: \"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\",\n key: \"mg9rjx\"\n }\n ]\n]);\n //# sourceMappingURL=bold.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvYm9sZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGFBQU8sZ0VBQWdCLENBQUMsTUFBUTtJQUNwQztRQUNFO1FBQ0E7WUFBRSxFQUFHLHdFQUF5RTtZQUFBLEtBQUssUUFBUztRQUFBO0tBQzlGO0NBQ0QiLCJzb3VyY2VzIjpbIkU6XFxzcmNcXGljb25zXFxib2xkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQm9sZFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTmlBeE1tZzVZVFFnTkNBd0lEQWdNU0F3SURoSU4yRXhJREVnTUNBd0lERXRNUzB4VmpWaE1TQXhJREFnTUNBeElERXRNV2czWVRRZ05DQXdJREFnTVNBd0lEZ2lJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9ib2xkXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQm9sZCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0JvbGQnLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAgeyBkOiAnTTYgMTJoOWE0IDQgMCAwIDEgMCA4SDdhMSAxIDAgMCAxLTEtMVY1YTEgMSAwIDAgMSAxLTFoN2E0IDQgMCAwIDEgMCA4Jywga2V5OiAnbWc5cmp4JyB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEJvbGQ7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/bold.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/check.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/check.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Check)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Check = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Check\", [\n [\n \"path\",\n {\n d: \"M20 6 9 17l-5-5\",\n key: \"1gmf2c\"\n }\n ]\n]);\n //# sourceMappingURL=check.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvY2hlY2suanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFhQSxDQUFNLFVBQVEsb0VBQWlCLE9BQVM7SUFBQztRQUFDO1FBQVE7WUFBRSxHQUFHLGlCQUFtQjtZQUFBLEtBQUssQ0FBUztRQUFBLENBQUM7S0FBQztDQUFDIiwic291cmNlcyI6WyJFOlxcc3JjXFxpY29uc1xcY2hlY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGVja1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05pQTVJREUzYkMwMUxUVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGVja1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZWNrID0gY3JlYXRlTHVjaWRlSWNvbignQ2hlY2snLCBbWydwYXRoJywgeyBkOiAnTTIwIDYgOSAxN2wtNS01Jywga2V5OiAnMWdtZjJjJyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGVjaztcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/check.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-down.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/chevron-down.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ChevronDown)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst ChevronDown = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"ChevronDown\", [\n [\n \"path\",\n {\n d: \"m6 9 6 6 6-6\",\n key: \"qrunsl\"\n }\n ]\n]);\n //# sourceMappingURL=chevron-down.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvY2hldnJvbi1kb3duLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBYU0sb0JBQWMsZ0VBQWdCLENBQUMsYUFBZTtJQUNsRDtRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBZ0I7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0NBQzlDIiwic291cmNlcyI6WyJFOlxcc3JjXFxpY29uc1xcY2hldnJvbi1kb3duLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkRvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQTVJRFlnTmlBMkxUWWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25Eb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtNiA5IDYgNiA2LTYnLCBrZXk6ICdxcnVuc2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25Eb3duO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-down.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-up.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/chevron-up.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ChevronUp)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst ChevronUp = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"ChevronUp\", [\n [\n \"path\",\n {\n d: \"m18 15-6-6-6 6\",\n key: \"153udz\"\n }\n ]\n]);\n //# sourceMappingURL=chevron-up.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvY2hldnJvbi11cC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFBLENBQU0sY0FBWSxvRUFBaUIsV0FBYTtJQUFDO1FBQUM7UUFBUTtZQUFFLEdBQUcsZ0JBQWtCO1lBQUEsS0FBSyxDQUFTO1FBQUEsQ0FBQztLQUFDO0NBQUMiLCJzb3VyY2VzIjpbIkU6XFxzcmNcXGljb25zXFxjaGV2cm9uLXVwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblVwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRVdE5pMDJMVFlnTmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uVXAnLCBbWydwYXRoJywgeyBkOiAnbTE4IDE1LTYtNi02IDYnLCBrZXk6ICcxNTN1ZHonIH1dXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25VcDtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-up.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/clock.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/clock.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Clock)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Clock = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Clock\", [\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"10\",\n key: \"1mglay\"\n }\n ],\n [\n \"polyline\",\n {\n points: \"12 6 12 12 16 14\",\n key: \"68esgv\"\n }\n ]\n]);\n //# sourceMappingURL=clock.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvY2xvY2suanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFhTSxjQUFRLGdFQUFnQixDQUFDLE9BQVM7SUFDdEM7UUFBQyxRQUFVO1FBQUE7WUFBRSxFQUFJO1lBQU0sQ0FBSSxRQUFNO1lBQUEsQ0FBRztZQUFNLEdBQUs7UUFBQSxDQUFVO0tBQUE7SUFDekQ7UUFBQyxVQUFZO1FBQUE7WUFBRSxRQUFRLENBQW9CO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtDQUMzRCIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXGNsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2xvY2tcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNJeE1pQTJJREV5SURFeUlERTJJREUwSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2xvY2tcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDbG9jayA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Nsb2NrJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnLCBrZXk6ICcxbWdsYXknIH1dLFxuICBbJ3BvbHlsaW5lJywgeyBwb2ludHM6ICcxMiA2IDEyIDEyIDE2IDE0Jywga2V5OiAnNjhlc2d2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDbG9jaztcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/clock.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/eye-off.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/eye-off.js ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EyeOff)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst EyeOff = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"EyeOff\", [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n key: \"ct8e1f\"\n }\n ],\n [\n \"path\",\n {\n d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\",\n key: \"151rxh\"\n }\n ],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n key: \"13bj9a\"\n }\n ],\n [\n \"path\",\n {\n d: \"m2 2 20 20\",\n key: \"1ooewy\"\n }\n ]\n]);\n //# sourceMappingURL=eye-off.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvZXllLW9mZi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGVBQVMsZ0VBQWdCLENBQUMsUUFBVTtJQUN4QztRQUNFO1FBQ0E7WUFDRSxDQUFHO1lBQ0gsR0FBSztRQUNQO0tBQ0Y7SUFDQTtRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBd0M7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQ3JFO1FBQ0U7UUFDQTtZQUNFLENBQUc7WUFDSCxHQUFLO1FBQ1A7S0FDRjtJQUNBO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUFjO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtDQUM1QyIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXGV5ZS1vZmYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBFeWVPZmZcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1UQXVOek16SURVdU1EYzJZVEV3TGpjME5DQXhNQzQzTkRRZ01DQXdJREVnTVRFdU1qQTFJRFl1TlRjMUlERWdNU0F3SURBZ01TQXdJQzQyT1RZZ01UQXVOelEzSURFd0xqYzBOeUF3SURBZ01TMHhMalEwTkNBeUxqUTVJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHhOQzR3T0RRZ01UUXVNVFU0WVRNZ015QXdJREFnTVMwMExqSTBNaTAwTGpJME1pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UY3VORGM1SURFM0xqUTVPV0V4TUM0M05TQXhNQzQzTlNBd0lEQWdNUzB4TlM0ME1UY3ROUzR4TlRFZ01TQXhJREFnTUNBeElEQXRMalk1TmlBeE1DNDNOU0F4TUM0M05TQXdJREFnTVNBMExqUTBOaTAxTGpFME15SWdMejRLSUNBOGNHRjBhQ0JrUFNKdE1pQXlJREl3SURJd0lpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2V5ZS1vZmZcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBFeWVPZmYgPSBjcmVhdGVMdWNpZGVJY29uKCdFeWVPZmYnLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ00xMC43MzMgNS4wNzZhMTAuNzQ0IDEwLjc0NCAwIDAgMSAxMS4yMDUgNi41NzUgMSAxIDAgMCAxIDAgLjY5NiAxMC43NDcgMTAuNzQ3IDAgMCAxLTEuNDQ0IDIuNDknLFxuICAgICAga2V5OiAnY3Q4ZTFmJyxcbiAgICB9LFxuICBdLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTQuMDg0IDE0LjE1OGEzIDMgMCAwIDEtNC4yNDItNC4yNDInLCBrZXk6ICcxNTFyeGgnIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNMTcuNDc5IDE3LjQ5OWExMC43NSAxMC43NSAwIDAgMS0xNS40MTctNS4xNTEgMSAxIDAgMCAxIDAtLjY5NiAxMC43NSAxMC43NSAwIDAgMSA0LjQ0Ni01LjE0MycsXG4gICAgICBrZXk6ICcxM2JqOWEnLFxuICAgIH0sXG4gIF0sXG4gIFsncGF0aCcsIHsgZDogJ20yIDIgMjAgMjAnLCBrZXk6ICcxb29ld3knIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEV5ZU9mZjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/eye-off.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/eye.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/eye.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Eye)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Eye = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Eye\", [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"12\",\n r: \"3\",\n key: \"1v7zrd\"\n }\n ]\n]);\n //# sourceMappingURL=eye.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvZXllLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBYU0sWUFBTSxnRUFBZ0IsQ0FBQyxLQUFPO0lBQ2xDO1FBQ0U7UUFDQTtZQUNFLENBQUc7WUFDSCxHQUFLO1FBQ1A7S0FDRjtJQUNBO1FBQUMsUUFBVTtRQUFBO1lBQUUsRUFBSTtZQUFNLENBQUksUUFBTTtZQUFBLENBQUc7WUFBSyxHQUFLO1FBQUEsQ0FBVTtLQUFBO0NBQ3pEIiwic291cmNlcyI6WyJFOlxcc3JjXFxpY29uc1xcZXllLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgRXllXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaTR3TmpJZ01USXVNelE0WVRFZ01TQXdJREFnTVNBd0xTNDJPVFlnTVRBdU56VWdNVEF1TnpVZ01DQXdJREVnTVRrdU9EYzJJREFnTVNBeElEQWdNQ0F4SURBZ0xqWTVOaUF4TUM0M05TQXhNQzQzTlNBd0lEQWdNUzB4T1M0NE56WWdNQ0lnTHo0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJakV5SWlCeVBTSXpJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9leWVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBFeWUgPSBjcmVhdGVMdWNpZGVJY29uKCdFeWUnLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ00yLjA2MiAxMi4zNDhhMSAxIDAgMCAxIDAtLjY5NiAxMC43NSAxMC43NSAwIDAgMSAxOS44NzYgMCAxIDEgMCAwIDEgMCAuNjk2IDEwLjc1IDEwLjc1IDAgMCAxLTE5Ljg3NiAwJyxcbiAgICAgIGtleTogJzFuY2xjMCcsXG4gICAgfSxcbiAgXSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzMnLCBrZXk6ICcxdjd6cmQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEV5ZTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/eye.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/hammer.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/hammer.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Hammer)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Hammer = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Hammer\", [\n [\n \"path\",\n {\n d: \"m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9\",\n key: \"eefl8a\"\n }\n ],\n [\n \"path\",\n {\n d: \"m18 15 4-4\",\n key: \"16gjal\"\n }\n ],\n [\n \"path\",\n {\n d: \"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5\",\n key: \"b7pghm\"\n }\n ]\n]);\n //# sourceMappingURL=hammer.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvaGFtbWVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBYU0sZUFBUyxnRUFBZ0IsQ0FBQyxRQUFVO0lBQ3hDO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUF5QztZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDdEU7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQWM7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQzNDO1FBQ0U7UUFDQTtZQUNFLENBQUc7WUFDSCxHQUFLO1FBQ1A7S0FDRjtDQUNEIiwic291cmNlcyI6WyJFOlxcc3JjXFxpY29uc1xcaGFtbWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgSGFtbWVyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFVnTVRJdE9DNHpOek1nT0M0ek56TmhNU0F4SURBZ01TQXhMVE10TTB3eE1pQTVJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHhPQ0F4TlNBMExUUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJUSXhMalVnTVRFdU5TMHhMamt4TkMweExqa3hORUV5SURJZ01DQXdJREVnTVRrZ09DNHhOekpXTjJ3dE1pNHlOaTB5TGpJMllUWWdOaUF3SURBZ01DMDBMakl3TWkweExqYzFOa3c1SURJdU9UWnNMamt5TGpneVFUWXVNVGdnTmk0eE9DQXdJREFnTVNBeE1pQTRMalJXTVRCc01pQXlhREV1TVRjeVlUSWdNaUF3SURBZ01TQXhMalF4TkM0MU9EWk1NVGd1TlNBeE5DNDFJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9oYW1tZXJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBIYW1tZXIgPSBjcmVhdGVMdWNpZGVJY29uKCdIYW1tZXInLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNSAxMi04LjM3MyA4LjM3M2ExIDEgMCAxIDEtMy0zTDEyIDknLCBrZXk6ICdlZWZsOGEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTggMTUgNC00Jywga2V5OiAnMTZnamFsJyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnbTIxLjUgMTEuNS0xLjkxNC0xLjkxNEEyIDIgMCAwIDEgMTkgOC4xNzJWN2wtMi4yNi0yLjI2YTYgNiAwIDAgMC00LjIwMi0xLjc1Nkw5IDIuOTZsLjkyLjgyQTYuMTggNi4xOCAwIDAgMSAxMiA4LjRWMTBsMiAyaDEuMTcyYTIgMiAwIDAgMSAxLjQxNC41ODZMMTguNSAxNC41JyxcbiAgICAgIGtleTogJ2I3cGdobScsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBIYW1tZXI7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/hammer.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/italic.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/italic.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Italic)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Italic = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Italic\", [\n [\n \"line\",\n {\n x1: \"19\",\n x2: \"10\",\n y1: \"4\",\n y2: \"4\",\n key: \"15jd3p\"\n }\n ],\n [\n \"line\",\n {\n x1: \"14\",\n x2: \"5\",\n y1: \"20\",\n y2: \"20\",\n key: \"bu0au3\"\n }\n ],\n [\n \"line\",\n {\n x1: \"15\",\n x2: \"9\",\n y1: \"4\",\n y2: \"20\",\n key: \"uljnxc\"\n }\n ]\n]);\n //# sourceMappingURL=italic.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvaXRhbGljLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBYU0sZUFBUyxnRUFBZ0IsQ0FBQyxRQUFVO0lBQ3hDO1FBQUM7UUFBUSxDQUFFO1lBQUEsSUFBSSxDQUFNO1lBQUEsSUFBSSxDQUFNO1lBQUEsR0FBSSxJQUFLO1lBQUEsR0FBSSxJQUFLO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtJQUNoRTtRQUFDO1FBQVEsQ0FBRTtZQUFBLElBQUksQ0FBTTtZQUFBLElBQUksQ0FBSztZQUFBLEdBQUksS0FBTTtZQUFBLEdBQUksS0FBTTtZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDakU7UUFBQztRQUFRLENBQUU7WUFBQSxJQUFJLENBQU07WUFBQSxJQUFJLENBQUs7WUFBQSxHQUFJLElBQUs7WUFBQSxHQUFJLEtBQU07WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0NBQ2pFIiwic291cmNlcyI6WyJFOlxcc3JjXFxpY29uc1xcaXRhbGljLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgSXRhbGljXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThiR2x1WlNCNE1UMGlNVGtpSUhneVBTSXhNQ0lnZVRFOUlqUWlJSGt5UFNJMElpQXZQZ29nSUR4c2FXNWxJSGd4UFNJeE5DSWdlREk5SWpVaUlIa3hQU0l5TUNJZ2VUSTlJakl3SWlBdlBnb2dJRHhzYVc1bElIZ3hQU0l4TlNJZ2VESTlJamtpSUhreFBTSTBJaUI1TWowaU1qQWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9pdGFsaWNcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBJdGFsaWMgPSBjcmVhdGVMdWNpZGVJY29uKCdJdGFsaWMnLCBbXG4gIFsnbGluZScsIHsgeDE6ICcxOScsIHgyOiAnMTAnLCB5MTogJzQnLCB5MjogJzQnLCBrZXk6ICcxNWpkM3AnIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnMTQnLCB4MjogJzUnLCB5MTogJzIwJywgeTI6ICcyMCcsIGtleTogJ2J1MGF1MycgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxNScsIHgyOiAnOScsIHkxOiAnNCcsIHkyOiAnMjAnLCBrZXk6ICd1bGpueGMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEl0YWxpYztcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/italic.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/key.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/key.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Key)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Key = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Key\", [\n [\n \"path\",\n {\n d: \"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4\",\n key: \"g0fldk\"\n }\n ],\n [\n \"path\",\n {\n d: \"m21 2-9.6 9.6\",\n key: \"1j0ho8\"\n }\n ],\n [\n \"circle\",\n {\n cx: \"7.5\",\n cy: \"15.5\",\n r: \"5.5\",\n key: \"yqb3hr\"\n }\n ]\n]);\n //# sourceMappingURL=key.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMva2V5LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBYU0sWUFBTSxnRUFBZ0IsQ0FBQyxLQUFPO0lBQ2xDO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUFrRTtZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDL0Y7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQWlCO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtJQUM5QztRQUFDLFFBQVU7UUFBQTtZQUFFLEVBQUk7WUFBTyxDQUFJLFVBQVE7WUFBQSxDQUFHO1lBQU8sR0FBSztRQUFBLENBQVU7S0FBQTtDQUM5RCIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXGtleS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVdU5TQTNMalVnTWk0eklESXVNMkV4SURFZ01DQXdJREFnTVM0MElEQnNNaTR4TFRJdU1XRXhJREVnTUNBd0lEQWdNQzB4TGpSTU1Ua2dOQ0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNakVnTWkwNUxqWWdPUzQySWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpjdU5TSWdZM2s5SWpFMUxqVWlJSEk5SWpVdU5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXkgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXknLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNS41IDcuNSAyLjMgMi4zYTEgMSAwIDAgMCAxLjQgMGwyLjEtMi4xYTEgMSAwIDAgMCAwLTEuNEwxOSA0Jywga2V5OiAnZzBmbGRrJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTIxIDItOS42IDkuNicsIGtleTogJzFqMGhvOCcgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzcuNScsIGN5OiAnMTUuNScsIHI6ICc1LjUnLCBrZXk6ICd5cWIzaHInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/key.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/link.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/link.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Link)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Link = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Link\", [\n [\n \"path\",\n {\n d: \"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\",\n key: \"1cjeqo\"\n }\n ],\n [\n \"path\",\n {\n d: \"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\",\n key: \"19qd67\"\n }\n ]\n]);\n //# sourceMappingURL=link.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvbGluay5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGFBQU8sZ0VBQWdCLENBQUMsTUFBUTtJQUNwQztRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBK0Q7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQzVGO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUFnRTtZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7Q0FDOUYiLCJzb3VyY2VzIjpbIkU6XFxzcmNcXGljb25zXFxsaW5rLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTGlua1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRBZ01UTmhOU0ExSURBZ01DQXdJRGN1TlRRdU5UUnNNeTB6WVRVZ05TQXdJREFnTUMwM0xqQTNMVGN1TURkc0xURXVOeklnTVM0M01TSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UUWdNVEZoTlNBMUlEQWdNQ0F3TFRjdU5UUXRMalUwYkMweklETmhOU0ExSURBZ01DQXdJRGN1TURjZ055NHdOMnd4TGpjeExURXVOekVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbGlua1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IExpbmsgPSBjcmVhdGVMdWNpZGVJY29uKCdMaW5rJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTAgMTNhNSA1IDAgMCAwIDcuNTQuNTRsMy0zYTUgNSAwIDAgMC03LjA3LTcuMDdsLTEuNzIgMS43MScsIGtleTogJzFjamVxbycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNCAxMWE1IDUgMCAwIDAtNy41NC0uNTRsLTMgM2E1IDUgMCAwIDAgNy4wNyA3LjA3bDEuNzEtMS43MScsIGtleTogJzE5cWQ2NycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTGluaztcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/link.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/list-ordered.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/list-ordered.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ListOrdered)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst ListOrdered = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"ListOrdered\", [\n [\n \"path\",\n {\n d: \"M10 12h11\",\n key: \"6m4ad9\"\n }\n ],\n [\n \"path\",\n {\n d: \"M10 18h11\",\n key: \"11hvi2\"\n }\n ],\n [\n \"path\",\n {\n d: \"M10 6h11\",\n key: \"c7qv1k\"\n }\n ],\n [\n \"path\",\n {\n d: \"M4 10h2\",\n key: \"16xx2s\"\n }\n ],\n [\n \"path\",\n {\n d: \"M4 6h1v4\",\n key: \"cnovpq\"\n }\n ],\n [\n \"path\",\n {\n d: \"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\",\n key: \"m9a95d\"\n }\n ]\n]);\n //# sourceMappingURL=list-ordered.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvbGlzdC1vcmRlcmVkLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBYU0sb0JBQWMsZ0VBQWdCLENBQUMsYUFBZTtJQUNsRDtRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBYTtZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDMUM7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQWE7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQzFDO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUFZO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtJQUN6QztRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBVztZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDeEM7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQVk7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQ3pDO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUFrQztZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7Q0FDaEUiLCJzb3VyY2VzIjpbIkU6XFxzcmNcXGljb25zXFxsaXN0LW9yZGVyZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBMaXN0T3JkZXJlZFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRBZ01USm9NVEVpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV3SURFNGFERXhJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHhNQ0EyYURFeElpQXZQZ29nSUR4d1lYUm9JR1E5SWswMElERXdhRElpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVFFnTm1neGRqUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUWWdNVGhJTkdNd0xURWdNaTB5SURJdE0zTXRNUzB4TGpVdE1pMHhJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9saXN0LW9yZGVyZWRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBMaXN0T3JkZXJlZCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0xpc3RPcmRlcmVkJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTAgMTJoMTEnLCBrZXk6ICc2bTRhZDknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTAgMThoMTEnLCBrZXk6ICcxMWh2aTInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTAgNmgxMScsIGtleTogJ2M3cXYxaycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ000IDEwaDInLCBrZXk6ICcxNnh4MnMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNCA2aDF2NCcsIGtleTogJ2Nub3ZwcScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ002IDE4SDRjMC0xIDItMiAyLTNzLTEtMS41LTItMScsIGtleTogJ205YTk1ZCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTGlzdE9yZGVyZWQ7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/list-ordered.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/list.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/list.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ List)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst List = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"List\", [\n [\n \"path\",\n {\n d: \"M3 12h.01\",\n key: \"nlz23k\"\n }\n ],\n [\n \"path\",\n {\n d: \"M3 18h.01\",\n key: \"1tta3j\"\n }\n ],\n [\n \"path\",\n {\n d: \"M3 6h.01\",\n key: \"1rqtza\"\n }\n ],\n [\n \"path\",\n {\n d: \"M8 12h13\",\n key: \"1za7za\"\n }\n ],\n [\n \"path\",\n {\n d: \"M8 18h13\",\n key: \"1lx6n3\"\n }\n ],\n [\n \"path\",\n {\n d: \"M8 6h13\",\n key: \"ik3vkj\"\n }\n ]\n]);\n //# sourceMappingURL=list.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvbGlzdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGFBQU8sZ0VBQWdCLENBQUMsTUFBUTtJQUNwQztRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBYTtZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDMUM7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQWE7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQzFDO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUFZO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtJQUN6QztRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBWTtZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDekM7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQVk7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQ3pDO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUFXO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtDQUN6QyIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXGxpc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBMaXN0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NeUF4TW1ndU1ERWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUTWdNVGhvTGpBeElpQXZQZ29nSUR4d1lYUm9JR1E5SWsweklEWm9MakF4SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA0SURFeWFERXpJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDRJREU0YURFeklpQXZQZ29nSUR4d1lYUm9JR1E5SWswNElEWm9NVE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbGlzdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IExpc3QgPSBjcmVhdGVMdWNpZGVJY29uKCdMaXN0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxMmguMDEnLCBrZXk6ICdubHoyM2snIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxOGguMDEnLCBrZXk6ICcxdHRhM2onIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyA2aC4wMScsIGtleTogJzFycXR6YScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ004IDEyaDEzJywga2V5OiAnMXphN3phJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTggMThoMTMnLCBrZXk6ICcxbHg2bjMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOCA2aDEzJywga2V5OiAnaWszdmtqJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBMaXN0O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/list.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/loader-circle.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/loader-circle.js ***!
|
||
\*******************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ LoaderCircle)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst LoaderCircle = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"LoaderCircle\", [\n [\n \"path\",\n {\n d: \"M21 12a9 9 0 1 1-6.219-8.56\",\n key: \"13zald\"\n }\n ]\n]);\n //# sourceMappingURL=loader-circle.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvbG9hZGVyLWNpcmNsZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLHFCQUFlLGdFQUFnQixDQUFDLGNBQWdCO0lBQ3BEO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUErQjtZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7Q0FDN0QiLCJzb3VyY2VzIjpbIkU6XFxzcmNcXGljb25zXFxsb2FkZXItY2lyY2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTG9hZGVyQ2lyY2xlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NakVnTVRKaE9TQTVJREFnTVNBeExUWXVNakU1TFRndU5UWWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9sb2FkZXItY2lyY2xlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTG9hZGVyQ2lyY2xlID0gY3JlYXRlTHVjaWRlSWNvbignTG9hZGVyQ2lyY2xlJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYnLCBrZXk6ICcxM3phbGQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlckNpcmNsZTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/loader-circle.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/lock.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/lock.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Lock)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Lock = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Lock\", [\n [\n \"rect\",\n {\n width: \"18\",\n height: \"11\",\n x: \"3\",\n y: \"11\",\n rx: \"2\",\n ry: \"2\",\n key: \"1w4ew1\"\n }\n ],\n [\n \"path\",\n {\n d: \"M7 11V7a5 5 0 0 1 10 0v4\",\n key: \"fwvmzm\"\n }\n ]\n]);\n //# sourceMappingURL=lock.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvbG9jay5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGFBQU8sZ0VBQWdCLENBQUMsTUFBUTtJQUNwQztRQUFDLE1BQVE7UUFBQTtZQUFFLEtBQU8sT0FBTTtZQUFBLE9BQVEsS0FBTTtZQUFBLEdBQUcsQ0FBSztZQUFBLEdBQUc7WUFBTSxDQUFJLE9BQUs7WUFBQSxHQUFJLElBQUs7WUFBQSxJQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQ3hGO1FBQUMsTUFBUTtRQUFBO1lBQUUsR0FBRyxDQUE0QjtZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7Q0FDMUQiLCJzb3VyY2VzIjpbIkU6XFxzcmNcXGljb25zXFxsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTG9ja1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVEVpSUhnOUlqTWlJSGs5SWpFeElpQnllRDBpTWlJZ2NuazlJaklpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVGNnTVRGV04yRTFJRFVnTUNBd0lERWdNVEFnTUhZMElpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2xvY2tcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBMb2NrID0gY3JlYXRlTHVjaWRlSWNvbignTG9jaycsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTEnLCB4OiAnMycsIHk6ICcxMScsIHJ4OiAnMicsIHJ5OiAnMicsIGtleTogJzF3NGV3MScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ003IDExVjdhNSA1IDAgMCAxIDEwIDB2NCcsIGtleTogJ2Z3dm16bScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTG9jaztcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/lock.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/map-pin.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/map-pin.js ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ MapPin)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst MapPin = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"MapPin\", [\n [\n \"path\",\n {\n d: \"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\",\n key: \"1r0f0z\"\n }\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"10\",\n r: \"3\",\n key: \"ilqhr7\"\n }\n ]\n]);\n //# sourceMappingURL=map-pin.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvbWFwLXBpbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGVBQVMsZ0VBQWdCLENBQUMsUUFBVTtJQUN4QztRQUNFO1FBQ0E7WUFDRSxDQUFHO1lBQ0gsR0FBSztRQUNQO0tBQ0Y7SUFDQTtRQUFDLFFBQVU7UUFBQTtZQUFFLEVBQUk7WUFBTSxDQUFJLFFBQU07WUFBQSxDQUFHO1lBQUssR0FBSztRQUFBLENBQVU7S0FBQTtDQUN6RCIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXG1hcC1waW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNYXBQaW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdNVEJqTUNBMExqazVNeTAxTGpVek9TQXhNQzR4T1RNdE55NHpPVGtnTVRFdU56azVZVEVnTVNBd0lEQWdNUzB4TGpJd01pQXdRemt1TlRNNUlESXdMakU1TXlBMElERTBMams1TXlBMElERXdZVGdnT0NBd0lEQWdNU0F4TmlBd0lpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRXlJaUJqZVQwaU1UQWlJSEk5SWpNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21hcC1waW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNYXBQaW4gPSBjcmVhdGVMdWNpZGVJY29uKCdNYXBQaW4nLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ00yMCAxMGMwIDQuOTkzLTUuNTM5IDEwLjE5My03LjM5OSAxMS43OTlhMSAxIDAgMCAxLTEuMjAyIDBDOS41MzkgMjAuMTkzIDQgMTQuOTkzIDQgMTBhOCA4IDAgMCAxIDE2IDAnLFxuICAgICAga2V5OiAnMXIwZjB6JyxcbiAgICB9LFxuICBdLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTAnLCByOiAnMycsIGtleTogJ2lscWhyNycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWFwUGluO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/map-pin.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/pen.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/pen.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Pen)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Pen = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Pen\", [\n [\n \"path\",\n {\n d: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n key: \"1a8usu\"\n }\n ]\n]);\n //# sourceMappingURL=pen.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvcGVuLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBYU0sWUFBTSxnRUFBZ0IsQ0FBQyxLQUFPO0lBQ2xDO1FBQ0U7UUFDQTtZQUNFLENBQUc7WUFDSCxHQUFLO1FBQ1A7S0FDRjtDQUNEIiwic291cmNlcyI6WyJFOlxcc3JjXFxpY29uc1xccGVuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGVuXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NakV1TVRjMElEWXVPREV5WVRFZ01TQXdJREFnTUMwekxqazROaTB6TGprNE4wd3pMamcwTWlBeE5pNHhOelJoTWlBeUlEQWdNQ0F3TFM0MUxqZ3piQzB4TGpNeU1TQTBMak0xTW1FdU5TNDFJREFnTUNBd0lDNDJNak11TmpJeWJEUXVNelV6TFRFdU16SmhNaUF5SURBZ01DQXdJQzQ0TXkwdU5EazNlaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGVuXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGVuID0gY3JlYXRlTHVjaWRlSWNvbignUGVuJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eicsXG4gICAgICBrZXk6ICcxYTh1c3UnLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGVuO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/pen.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/phone.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/phone.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Phone)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Phone = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Phone\", [\n [\n \"path\",\n {\n d: \"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\",\n key: \"foiqr5\"\n }\n ]\n]);\n //# sourceMappingURL=phone.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvcGhvbmUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFhTSxjQUFRLGdFQUFnQixDQUFDLE9BQVM7SUFDdEM7UUFDRTtRQUNBO1lBQ0UsQ0FBRztZQUNILEdBQUs7UUFDUDtLQUNGO0NBQ0QiLCJzb3VyY2VzIjpbIkU6XFxzcmNcXGljb25zXFxwaG9uZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBob25lXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaklnTVRZdU9USjJNMkV5SURJZ01DQXdJREV0TWk0eE9DQXlJREU1TGpjNUlERTVMamM1SURBZ01DQXhMVGd1TmpNdE15NHdOeUF4T1M0MUlERTVMalVnTUNBd0lERXROaTAySURFNUxqYzVJREU1TGpjNUlEQWdNQ0F4TFRNdU1EY3RPQzQyTjBFeUlESWdNQ0F3SURFZ05DNHhNU0F5YUROaE1pQXlJREFnTUNBeElESWdNUzQzTWlBeE1pNDROQ0F4TWk0NE5DQXdJREFnTUNBdU55QXlMamd4SURJZ01pQXdJREFnTVMwdU5EVWdNaTR4TVV3NExqQTVJRGt1T1RGaE1UWWdNVFlnTUNBd0lEQWdOaUEyYkRFdU1qY3RNUzR5TjJFeUlESWdNQ0F3SURFZ01pNHhNUzB1TkRVZ01USXVPRFFnTVRJdU9EUWdNQ0F3SURBZ01pNDRNUzQzUVRJZ01pQXdJREFnTVNBeU1pQXhOaTQ1TW5vaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bob25lXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGhvbmUgPSBjcmVhdGVMdWNpZGVJY29uKCdQaG9uZScsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6JyxcbiAgICAgIGtleTogJ2ZvaXFyNScsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaG9uZTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/phone.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/redo.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/redo.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Redo)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Redo = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Redo\", [\n [\n \"path\",\n {\n d: \"M21 7v6h-6\",\n key: \"3ptur4\"\n }\n ],\n [\n \"path\",\n {\n d: \"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\",\n key: \"1kgawr\"\n }\n ]\n]);\n //# sourceMappingURL=redo.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvcmVkby5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGFBQU8sZ0VBQWdCLENBQUMsTUFBUTtJQUNwQztRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBYztZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDM0M7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQTZDO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtDQUMzRSIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXHJlZG8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBSZWRvXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NakVnTjNZMmFDMDJJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHpJREUzWVRrZ09TQXdJREFnTVNBNUxUa2dPU0E1SURBZ01DQXhJRFlnTWk0emJETWdNaTQzSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcmVkb1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFJlZG8gPSBjcmVhdGVMdWNpZGVJY29uKCdSZWRvJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgN3Y2aC02Jywga2V5OiAnM3B0dXI0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTdhOSA5IDAgMCAxIDktOSA5IDkgMCAwIDEgNiAyLjNsMyAyLjcnLCBrZXk6ICcxa2dhd3InIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFJlZG87XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/redo.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/shield-check.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/shield-check.js ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ShieldCheck)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst ShieldCheck = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"ShieldCheck\", [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ],\n [\n \"path\",\n {\n d: \"m9 12 2 2 4-4\",\n key: \"dzmm74\"\n }\n ]\n]);\n //# sourceMappingURL=shield-check.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvc2hpZWxkLWNoZWNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBYU0sb0JBQWMsZ0VBQWdCLENBQUMsYUFBZTtJQUNsRDtRQUNFO1FBQ0E7WUFDRSxDQUFHO1lBQ0gsR0FBSztRQUNQO0tBQ0Y7SUFDQTtRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBaUI7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0NBQy9DIiwic291cmNlcyI6WyJFOlxcc3JjXFxpY29uc1xcc2hpZWxkLWNoZWNrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgU2hpZWxkQ2hlY2tcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdNVE5qTUNBMUxUTXVOU0EzTGpVdE55NDJOaUE0TGprMVlURWdNU0F3SURBZ01TMHVOamN0TGpBeFF6Y3VOU0F5TUM0MUlEUWdNVGdnTkNBeE0xWTJZVEVnTVNBd0lEQWdNU0F4TFRGak1pQXdJRFF1TlMweExqSWdOaTR5TkMweUxqY3lZVEV1TVRjZ01TNHhOeUF3SURBZ01TQXhMalV5SURCRE1UUXVOVEVnTXk0NE1TQXhOeUExSURFNUlEVmhNU0F4SURBZ01DQXhJREVnTVhvaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRrZ01USWdNaUF5SURRdE5DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9zaGllbGQtY2hlY2tcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBTaGllbGRDaGVjayA9IGNyZWF0ZUx1Y2lkZUljb24oJ1NoaWVsZENoZWNrJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXonLFxuICAgICAga2V5OiAnb2VsNDF5JyxcbiAgICB9LFxuICBdLFxuICBbJ3BhdGgnLCB7IGQ6ICdtOSAxMiAyIDIgNC00Jywga2V5OiAnZHptbTc0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBTaGllbGRDaGVjaztcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/shield-check.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/square-pen.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/square-pen.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SquarePen)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst SquarePen = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"SquarePen\", [\n [\n \"path\",\n {\n d: \"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\",\n key: \"1m0v6g\"\n }\n ],\n [\n \"path\",\n {\n d: \"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\",\n key: \"ohrbg2\"\n }\n ]\n]);\n //# sourceMappingURL=square-pen.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvc3F1YXJlLXBlbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGtCQUFZLGdFQUFnQixDQUFDLFdBQWE7SUFDOUM7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQThEO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtJQUMzRjtRQUNFO1FBQ0E7WUFDRSxDQUFHO1lBQ0gsR0FBSztRQUNQO0tBQ0Y7Q0FDRCIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXHNxdWFyZS1wZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBTcXVhcmVQZW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNMGcxWVRJZ01pQXdJREFnTUMweUlESjJNVFJoTWlBeUlEQWdNQ0F3SURJZ01tZ3hOR0V5SURJZ01DQXdJREFnTWkweWRpMDNJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHhPQzR6TnpVZ01pNDJNalZoTVNBeElEQWdNQ0F4SURNZ00yd3RPUzR3TVRNZ09TNHdNVFJoTWlBeUlEQWdNQ0F4TFM0NE5UTXVOVEExYkMweUxqZzNNeTQ0TkdFdU5TNDFJREFnTUNBeExTNDJNaTB1TmpKc0xqZzBMVEl1T0RjellUSWdNaUF3SURBZ01TQXVOVEEyTFM0NE5USjZJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9zcXVhcmUtcGVuXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgU3F1YXJlUGVuID0gY3JlYXRlTHVjaWRlSWNvbignU3F1YXJlUGVuJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi03Jywga2V5OiAnMW0wdjZnJyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTE4LjM3NSAyLjYyNWExIDEgMCAwIDEgMyAzbC05LjAxMyA5LjAxNGEyIDIgMCAwIDEtLjg1My41MDVsLTIuODczLjg0YS41LjUgMCAwIDEtLjYyLS42MmwuODQtMi44NzNhMiAyIDAgMCAxIC41MDYtLjg1MnonLFxuICAgICAga2V5OiAnb2hyYmcyJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFNxdWFyZVBlbjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/square-pen.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/star.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/star.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Star)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Star = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Star\", [\n [\n \"path\",\n {\n d: \"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\",\n key: \"r04s7s\"\n }\n ]\n]);\n //# sourceMappingURL=star.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvc3Rhci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGFBQU8sZ0VBQWdCLENBQUMsTUFBUTtJQUNwQztRQUNFO1FBQ0E7WUFDRSxDQUFHO1lBQ0gsR0FBSztRQUNQO0tBQ0Y7Q0FDRCIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXHN0YXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBTdGFyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVEV1TlRJMUlESXVNamsxWVM0MU15NDFNeUF3SURBZ01TQXVPVFVnTUd3eUxqTXhJRFF1TmpjNVlUSXVNVEl6SURJdU1USXpJREFnTUNBd0lERXVOVGsxSURFdU1UWnNOUzR4TmpZdU56VTJZUzQxTXk0MU15QXdJREFnTVNBdU1qazBMamt3Tkd3dE15NDNNellnTXk0Mk16aGhNaTR4TWpNZ01pNHhNak1nTUNBd0lEQXRMall4TVNBeExqZzNPR3d1T0RneUlEVXVNVFJoTGpVekxqVXpJREFnTUNBeExTNDNOekV1TlRac0xUUXVOakU0TFRJdU5ESTRZVEl1TVRJeUlESXVNVEl5SURBZ01DQXdMVEV1T1RjeklEQk1OaTR6T1RZZ01qRXVNREZoTGpVekxqVXpJREFnTUNBeExTNDNOeTB1TlRac0xqZzRNUzAxTGpFek9XRXlMakV5TWlBeUxqRXlNaUF3SURBZ01DMHVOakV4TFRFdU9EYzVUREl1TVRZZ09TNDNPVFZoTGpVekxqVXpJREFnTUNBeElDNHlPVFF0TGprd05tdzFMakUyTlMwdU56VTFZVEl1TVRJeUlESXVNVEl5SURBZ01DQXdJREV1TlRrM0xURXVNVFo2SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvc3RhclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFN0YXIgPSBjcmVhdGVMdWNpZGVJY29uKCdTdGFyJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNMTEuNTI1IDIuMjk1YS41My41MyAwIDAgMSAuOTUgMGwyLjMxIDQuNjc5YTIuMTIzIDIuMTIzIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy43MzYgMy42MzhhMi4xMjMgMi4xMjMgMCAwIDAtLjYxMSAxLjg3OGwuODgyIDUuMTRhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIyIDIuMTIyIDAgMCAwLTEuOTczIDBMNi4zOTYgMjEuMDFhLjUzLjUzIDAgMCAxLS43Ny0uNTZsLjg4MS01LjEzOWEyLjEyMiAyLjEyMiAwIDAgMC0uNjExLTEuODc5TDIuMTYgOS43OTVhLjUzLjUzIDAgMCAxIC4yOTQtLjkwNmw1LjE2NS0uNzU1YTIuMTIyIDIuMTIyIDAgMCAwIDEuNTk3LTEuMTZ6JyxcbiAgICAgIGtleTogJ3IwNHM3cycsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBTdGFyO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/star.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/trash-2.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/trash-2.js ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Trash2)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Trash2 = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Trash2\", [\n [\n \"path\",\n {\n d: \"M3 6h18\",\n key: \"d0wm0j\"\n }\n ],\n [\n \"path\",\n {\n d: \"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\",\n key: \"4alrt4\"\n }\n ],\n [\n \"path\",\n {\n d: \"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\",\n key: \"v07s0e\"\n }\n ],\n [\n \"line\",\n {\n x1: \"10\",\n x2: \"10\",\n y1: \"11\",\n y2: \"17\",\n key: \"1uufr5\"\n }\n ],\n [\n \"line\",\n {\n x1: \"14\",\n x2: \"14\",\n y1: \"11\",\n y2: \"17\",\n key: \"xtxkd\"\n }\n ]\n]);\n //# sourceMappingURL=trash-2.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvdHJhc2gtMi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGVBQVMsZ0VBQWdCLENBQUMsUUFBVTtJQUN4QztRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBVztZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDeEM7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQXlDO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtJQUN0RTtRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBc0M7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQ25FO1FBQUM7UUFBUSxDQUFFO1lBQUEsSUFBSSxDQUFNO1lBQUEsSUFBSSxDQUFNO1lBQUEsR0FBSSxLQUFNO1lBQUEsR0FBSSxLQUFNO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtJQUNsRTtRQUFDO1FBQVEsQ0FBRTtZQUFBLElBQUksQ0FBTTtZQUFBLElBQUksQ0FBTTtZQUFBLEdBQUksS0FBTTtZQUFBLEdBQUksS0FBTTtZQUFBLEtBQUs7UUFBQSxDQUFTO0tBQUE7Q0FDbEUiLCJzb3VyY2VzIjpbIkU6XFxzcmNcXGljb25zXFx0cmFzaC0yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgVHJhc2gyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NeUEyYURFNElpQXZQZ29nSUR4d1lYUm9JR1E5SWsweE9TQTJkakUwWXpBZ01TMHhJREl0TWlBeVNEZGpMVEVnTUMweUxURXRNaTB5VmpZaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRnZ05sWTBZekF0TVNBeExUSWdNaTB5YURSak1TQXdJRElnTVNBeUlESjJNaUlnTHo0S0lDQThiR2x1WlNCNE1UMGlNVEFpSUhneVBTSXhNQ0lnZVRFOUlqRXhJaUI1TWowaU1UY2lJQzgrQ2lBZ1BHeHBibVVnZURFOUlqRTBJaUI0TWowaU1UUWlJSGt4UFNJeE1TSWdlVEk5SWpFM0lpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3RyYXNoLTJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBUcmFzaDIgPSBjcmVhdGVMdWNpZGVJY29uKCdUcmFzaDInLCBbXG4gIFsncGF0aCcsIHsgZDogJ00zIDZoMTgnLCBrZXk6ICdkMHdtMGonIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTkgNnYxNGMwIDEtMSAyLTIgMkg3Yy0xIDAtMi0xLTItMlY2Jywga2V5OiAnNGFscnQ0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTggNlY0YzAtMSAxLTIgMi0yaDRjMSAwIDIgMSAyIDJ2MicsIGtleTogJ3YwN3MwZScgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxMCcsIHgyOiAnMTAnLCB5MTogJzExJywgeTI6ICcxNycsIGtleTogJzF1dWZyNScgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxNCcsIHgyOiAnMTQnLCB5MTogJzExJywgeTI6ICcxNycsIGtleTogJ3h0eGtkJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBUcmFzaDI7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/trash-2.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/undo.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/undo.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Undo)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Undo = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Undo\", [\n [\n \"path\",\n {\n d: \"M3 7v6h6\",\n key: \"1v2h90\"\n }\n ],\n [\n \"path\",\n {\n d: \"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\",\n key: \"1r6uu6\"\n }\n ]\n]);\n //# sourceMappingURL=undo.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvdW5kby5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGFBQU8sZ0VBQWdCLENBQUMsTUFBUTtJQUNwQztRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBWTtZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDekM7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQTZDO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtDQUMzRSIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXHVuZG8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBVbmRvXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NeUEzZGpab05pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qRWdNVGRoT1NBNUlEQWdNQ0F3TFRrdE9TQTVJRGtnTUNBd0lEQXROaUF5TGpOTU15QXhNeUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvdW5kb1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFVuZG8gPSBjcmVhdGVMdWNpZGVJY29uKCdVbmRvJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMyA3djZoNicsIGtleTogJzF2Mmg5MCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAxN2E5IDkgMCAwIDAtOS05IDkgOSAwIDAgMC02IDIuM0wzIDEzJywga2V5OiAnMXI2dXU2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBVbmRvO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/undo.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/unlink.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/unlink.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Unlink)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst Unlink = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Unlink\", [\n [\n \"path\",\n {\n d: \"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71\",\n key: \"yqzxt4\"\n }\n ],\n [\n \"path\",\n {\n d: \"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71\",\n key: \"4qinb0\"\n }\n ],\n [\n \"line\",\n {\n x1: \"8\",\n x2: \"8\",\n y1: \"2\",\n y2: \"5\",\n key: \"1041cp\"\n }\n ],\n [\n \"line\",\n {\n x1: \"2\",\n x2: \"5\",\n y1: \"8\",\n y2: \"8\",\n key: \"14m1p5\"\n }\n ],\n [\n \"line\",\n {\n x1: \"16\",\n x2: \"16\",\n y1: \"19\",\n y2: \"22\",\n key: \"rzdirn\"\n }\n ],\n [\n \"line\",\n {\n x1: \"19\",\n x2: \"22\",\n y1: \"16\",\n y2: \"16\",\n key: \"ox905f\"\n }\n ]\n]);\n //# sourceMappingURL=unlink.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvdW5saW5rLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBYU0sZUFBUyxnRUFBZ0IsQ0FBQyxRQUFVO0lBQ3hDO1FBQ0U7UUFDQTtZQUNFLENBQUc7WUFDSCxHQUFLO1FBQ1A7S0FDRjtJQUNBO1FBQ0U7UUFDQTtZQUNFLENBQUc7WUFDSCxHQUFLO1FBQ1A7S0FDRjtJQUNBO1FBQUM7UUFBUSxDQUFFO1lBQUEsSUFBSSxDQUFLO1lBQUEsSUFBSSxDQUFLO1lBQUEsR0FBSSxJQUFLO1lBQUEsR0FBSSxJQUFLO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtJQUM5RDtRQUFDO1FBQVEsQ0FBRTtZQUFBLElBQUksQ0FBSztZQUFBLElBQUksQ0FBSztZQUFBLEdBQUksSUFBSztZQUFBLEdBQUksSUFBSztZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDOUQ7UUFBQztRQUFRLENBQUU7WUFBQSxJQUFJLENBQU07WUFBQSxJQUFJLENBQU07WUFBQSxHQUFJLEtBQU07WUFBQSxHQUFJLEtBQU07WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQ2xFO1FBQUM7UUFBUSxDQUFFO1lBQUEsSUFBSSxDQUFNO1lBQUEsSUFBSSxDQUFNO1lBQUEsR0FBSSxLQUFNO1lBQUEsR0FBSSxLQUFNO1lBQUEsS0FBSztRQUFBLENBQVU7S0FBQTtDQUNuRSIsInNvdXJjZXMiOlsiRTpcXHNyY1xcaWNvbnNcXHVubGluay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFVubGlua1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRndU9EUWdNVEl1TWpVZ01TNDNNaTB4TGpjeGFDMHVNREpoTlM0d01EUWdOUzR3TURRZ01DQXdJREF0TGpFeUxUY3VNRGNnTlM0d01EWWdOUzR3TURZZ01DQXdJREF0Tmk0NU5TQXdiQzB4TGpjeUlERXVOekVpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVFV1TVRjZ01URXVOelV0TVM0M01TQXhMamN4WVRVdU1EQTBJRFV1TURBMElEQWdNQ0F3SUM0eE1pQTNMakEzSURVdU1EQTJJRFV1TURBMklEQWdNQ0F3SURZdU9UVWdNR3d4TGpjeExURXVOekVpSUM4K0NpQWdQR3hwYm1VZ2VERTlJamdpSUhneVBTSTRJaUI1TVQwaU1pSWdlVEk5SWpVaUlDOCtDaUFnUEd4cGJtVWdlREU5SWpJaUlIZ3lQU0kxSWlCNU1UMGlPQ0lnZVRJOUlqZ2lJQzgrQ2lBZ1BHeHBibVVnZURFOUlqRTJJaUI0TWowaU1UWWlJSGt4UFNJeE9TSWdlVEk5SWpJeUlpQXZQZ29nSUR4c2FXNWxJSGd4UFNJeE9TSWdlREk5SWpJeUlpQjVNVDBpTVRZaUlIa3lQU0l4TmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3VubGlua1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFVubGluayA9IGNyZWF0ZUx1Y2lkZUljb24oJ1VubGluaycsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnbTE4Ljg0IDEyLjI1IDEuNzItMS43MWgtLjAyYTUuMDA0IDUuMDA0IDAgMCAwLS4xMi03LjA3IDUuMDA2IDUuMDA2IDAgMCAwLTYuOTUgMGwtMS43MiAxLjcxJyxcbiAgICAgIGtleTogJ3lxenh0NCcsXG4gICAgfSxcbiAgXSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnbTUuMTcgMTEuNzUtMS43MSAxLjcxYTUuMDA0IDUuMDA0IDAgMCAwIC4xMiA3LjA3IDUuMDA2IDUuMDA2IDAgMCAwIDYuOTUgMGwxLjcxLTEuNzEnLFxuICAgICAga2V5OiAnNHFpbmIwJyxcbiAgICB9LFxuICBdLFxuICBbJ2xpbmUnLCB7IHgxOiAnOCcsIHgyOiAnOCcsIHkxOiAnMicsIHkyOiAnNScsIGtleTogJzEwNDFjcCcgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcyJywgeDI6ICc1JywgeTE6ICc4JywgeTI6ICc4Jywga2V5OiAnMTRtMXA1JyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzE2JywgeDI6ICcxNicsIHkxOiAnMTknLCB5MjogJzIyJywga2V5OiAncnpkaXJuJyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzE5JywgeDI6ICcyMicsIHkxOiAnMTYnLCB5MjogJzE2Jywga2V5OiAnb3g5MDVmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBVbmxpbms7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/unlink.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/user.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/user.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ User)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst User = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"User\", [\n [\n \"path\",\n {\n d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\",\n key: \"975kel\"\n }\n ],\n [\n \"circle\",\n {\n cx: \"12\",\n cy: \"7\",\n r: \"4\",\n key: \"17ys0d\"\n }\n ]\n]);\n //# sourceMappingURL=user.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvdXNlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLGFBQU8sZ0VBQWdCLENBQUMsTUFBUTtJQUNwQztRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBNkM7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0lBQzFFO1FBQUMsUUFBVTtRQUFBO1lBQUUsRUFBSTtZQUFNLENBQUksT0FBSztZQUFBLENBQUc7WUFBSyxHQUFLO1FBQUEsQ0FBVTtLQUFBO0NBQ3hEIiwic291cmNlcyI6WyJFOlxcc3JjXFxpY29uc1xcdXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFVzZXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1Ua2dNakYyTFRKaE5DQTBJREFnTUNBd0xUUXRORWc1WVRRZ05DQXdJREFnTUMwMElEUjJNaUlnTHo0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJamNpSUhJOUlqUWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy91c2VyXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgVXNlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ1VzZXInLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyJywga2V5OiAnOTc1a2VsJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzcnLCByOiAnNCcsIGtleTogJzE3eXMwZCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgVXNlcjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/user.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/x.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/icons/x.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ X)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst X = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"X\", [\n [\n \"path\",\n {\n d: \"M18 6 6 18\",\n key: \"1bl5f8\"\n }\n ],\n [\n \"path\",\n {\n d: \"m6 6 12 12\",\n key: \"d8bk6v\"\n }\n ]\n]);\n //# sourceMappingURL=x.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMveC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWFNLFVBQUksZ0VBQWdCLENBQUMsR0FBSztJQUM5QjtRQUFDLE1BQVE7UUFBQTtZQUFFLEdBQUcsQ0FBYztZQUFBLEtBQUs7UUFBQSxDQUFVO0tBQUE7SUFDM0M7UUFBQyxNQUFRO1FBQUE7WUFBRSxHQUFHLENBQWM7WUFBQSxLQUFLO1FBQUEsQ0FBVTtLQUFBO0NBQzVDIiwic291cmNlcyI6WyJFOlxcc3JjXFxpY29uc1xceC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFhcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1UZ2dOaUEySURFNElpQXZQZ29nSUR4d1lYUm9JR1E5SW0wMklEWWdNVElnTVRJaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3hcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBYID0gY3JlYXRlTHVjaWRlSWNvbignWCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTE4IDYgNiAxOCcsIGtleTogJzFibDVmOCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ202IDYgMTIgMTInLCBrZXk6ICdkOGJrNnYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFg7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/x.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/shared/src/utils.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/lucide-react/dist/esm/shared/src/utils.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mergeClasses: () => (/* binding */ mergeClasses),\n/* harmony export */ toKebabCase: () => (/* binding */ toKebabCase)\n/* harmony export */ });\n/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ const toKebabCase = (string)=>string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst mergeClasses = function() {\n for(var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++){\n classes[_key] = arguments[_key];\n }\n return classes.filter((className, index, array)=>{\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n }).join(\" \").trim();\n};\n //# sourceMappingURL=utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vc2hhcmVkL3NyYy91dGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0lBUWEsb0JBQWMsQ0FBQyxNQUMxQixVQUFPLFFBQVEsb0JBQXNCLFNBQU8sRUFBRSxXQUFZO0FBK0IvQyxtQkFBZSxJQUEyQzs7UUFBQSxPQUNyRTs7V0FBQSxRQUNHLE9BQU8sQ0FBQyxXQUFXLE9BQU8sS0FBVTtRQUVqQyxlQUFRLFNBQVMsRUFDaEIsWUFBcUIsWUFBVyxDQUNqQyxXQUFNLE9BQVEsRUFBUyxTQUFNO0lBRWpDLENBQUMsQ0FDQSxNQUFLLENBQUcsSUFDUixDQUFLIiwic291cmNlcyI6WyJFOlxcc2hhcmVkXFxzcmNcXHV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbWVsVG9QYXNjYWwgfSBmcm9tICcuL3V0aWxpdHktdHlwZXMnO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBrZWJhYiBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBrZWJhYml6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0tlYmFiQ2FzZSA9IChzdHJpbmc6IHN0cmluZykgPT5cbiAgc3RyaW5nLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGNhbWVsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGNhbWVsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvQ2FtZWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCkgPT5cbiAgc3RyaW5nLnJlcGxhY2UoL14oW0EtWl0pfFtcXHMtX10rKFxcdykvZywgKG1hdGNoLCBwMSwgcDIpID0+XG4gICAgcDIgPyBwMi50b1VwcGVyQ2FzZSgpIDogcDEudG9Mb3dlckNhc2UoKSxcbiAgKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gcGFzY2FsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHBhc2NhbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b1Bhc2NhbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKTogQ2FtZWxUb1Bhc2NhbDxUPiA9PiB7XG4gIGNvbnN0IGNhbWVsQ2FzZSA9IHRvQ2FtZWxDYXNlKHN0cmluZyk7XG5cbiAgcmV0dXJuIChjYW1lbENhc2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjYW1lbENhc2Uuc2xpY2UoMSkpIGFzIENhbWVsVG9QYXNjYWw8VD47XG59O1xuXG4vKipcbiAqIE1lcmdlcyBjbGFzc2VzIGludG8gYSBzaW5nbGUgc3RyaW5nXG4gKlxuICogQHBhcmFtIHthcnJheX0gY2xhc3Nlc1xuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmcgb2YgY2xhc3Nlc1xuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc2VzID0gPENsYXNzVHlwZSA9IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KC4uLmNsYXNzZXM6IENsYXNzVHlwZVtdKSA9PlxuICBjbGFzc2VzXG4gICAgLmZpbHRlcigoY2xhc3NOYW1lLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIEJvb2xlYW4oY2xhc3NOYW1lKSAmJlxuICAgICAgICAoY2xhc3NOYW1lIGFzIHN0cmluZykudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICBhcnJheS5pbmRleE9mKGNsYXNzTmFtZSkgPT09IGluZGV4XG4gICAgICApO1xuICAgIH0pXG4gICAgLmpvaW4oJyAnKVxuICAgIC50cmltKCk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/shared/src/utils.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/next/dist/api/navigation.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/next/dist/api/navigation.js ***!
|
||
\**************************************************/
|
||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../client/components/navigation */ \"(app-pages-browser)/./node_modules/next/dist/client/components/navigation.js\");\n/* harmony import */ var _client_components_navigation__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_client_components_navigation__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceMappingURL=navigation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYXBpL25hdmlnYXRpb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWdEOztBQUVoRCIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcYXBpXFxuYXZpZ2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4uL2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24nO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1uYXZpZ2F0aW9uLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/api/navigation.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/buffer/index.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/buffer/index.js ***!
|
||
\*********************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){var e={675:function(e,r){\"use strict\";r.byteLength=byteLength;r.toByteArray=toByteArray;r.fromByteArray=fromByteArray;var t=[];var f=[];var n=typeof Uint8Array!==\"undefined\"?Uint8Array:Array;var i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";for(var o=0,u=i.length;o<u;++o){t[o]=i[o];f[i.charCodeAt(o)]=o}f[\"-\".charCodeAt(0)]=62;f[\"_\".charCodeAt(0)]=63;function getLens(e){var r=e.length;if(r%4>0){throw new Error(\"Invalid string. Length must be a multiple of 4\")}var t=e.indexOf(\"=\");if(t===-1)t=r;var f=t===r?0:4-t%4;return[t,f]}function byteLength(e){var r=getLens(e);var t=r[0];var f=r[1];return(t+f)*3/4-f}function _byteLength(e,r,t){return(r+t)*3/4-t}function toByteArray(e){var r;var t=getLens(e);var i=t[0];var o=t[1];var u=new n(_byteLength(e,i,o));var a=0;var s=o>0?i-4:i;var h;for(h=0;h<s;h+=4){r=f[e.charCodeAt(h)]<<18|f[e.charCodeAt(h+1)]<<12|f[e.charCodeAt(h+2)]<<6|f[e.charCodeAt(h+3)];u[a++]=r>>16&255;u[a++]=r>>8&255;u[a++]=r&255}if(o===2){r=f[e.charCodeAt(h)]<<2|f[e.charCodeAt(h+1)]>>4;u[a++]=r&255}if(o===1){r=f[e.charCodeAt(h)]<<10|f[e.charCodeAt(h+1)]<<4|f[e.charCodeAt(h+2)]>>2;u[a++]=r>>8&255;u[a++]=r&255}return u}function tripletToBase64(e){return t[e>>18&63]+t[e>>12&63]+t[e>>6&63]+t[e&63]}function encodeChunk(e,r,t){var f;var n=[];for(var i=r;i<t;i+=3){f=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(e[i+2]&255);n.push(tripletToBase64(f))}return n.join(\"\")}function fromByteArray(e){var r;var f=e.length;var n=f%3;var i=[];var o=16383;for(var u=0,a=f-n;u<a;u+=o){i.push(encodeChunk(e,u,u+o>a?a:u+o))}if(n===1){r=e[f-1];i.push(t[r>>2]+t[r<<4&63]+\"==\")}else if(n===2){r=(e[f-2]<<8)+e[f-1];i.push(t[r>>10]+t[r>>4&63]+t[r<<2&63]+\"=\")}return i.join(\"\")}},72:function(e,r,t){\"use strict\";\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */var f=t(675);var n=t(783);var i=typeof Symbol===\"function\"&&typeof Symbol.for===\"function\"?Symbol.for(\"nodejs.util.inspect.custom\"):null;r.Buffer=Buffer;r.SlowBuffer=SlowBuffer;r.INSPECT_MAX_BYTES=50;var o=2147483647;r.kMaxLength=o;Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport();if(!Buffer.TYPED_ARRAY_SUPPORT&&typeof console!==\"undefined\"&&typeof console.error===\"function\"){console.error(\"This browser lacks typed array (Uint8Array) support which is required by \"+\"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\")}function typedArraySupport(){try{var e=new Uint8Array(1);var r={foo:function(){return 42}};Object.setPrototypeOf(r,Uint8Array.prototype);Object.setPrototypeOf(e,r);return e.foo()===42}catch(e){return false}}Object.defineProperty(Buffer.prototype,\"parent\",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.buffer}});Object.defineProperty(Buffer.prototype,\"offset\",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.byteOffset}});function createBuffer(e){if(e>o){throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}var r=new Uint8Array(e);Object.setPrototypeOf(r,Buffer.prototype);return r}function Buffer(e,r,t){if(typeof e===\"number\"){if(typeof r===\"string\"){throw new TypeError('The \"string\" argument must be of type string. Received type number')}return allocUnsafe(e)}return from(e,r,t)}Buffer.poolSize=8192;function from(e,r,t){if(typeof e===\"string\"){return fromString(e,r)}if(ArrayBuffer.isView(e)){return fromArrayLike(e)}if(e==null){throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \"+\"or Array-like Object. Received type \"+typeof e)}if(isInstance(e,ArrayBuffer)||e&&isInstance(e.buffer,ArrayBuffer)){return fromArrayBuffer(e,r,t)}if(typeof SharedArrayBuffer!==\"undefined\"&&(isInstance(e,SharedArrayBuffer)||e&&isInstance(e.buffer,SharedArrayBuffer))){return fromArrayBuffer(e,r,t)}if(typeof e===\"number\"){throw new TypeError('The \"value\" argument must not be of type number. Received type number')}var f=e.valueOf&&e.valueOf();if(f!=null&&f!==e){return Buffer.from(f,r,t)}var n=fromObject(e);if(n)return n;if(typeof Symbol!==\"undefined\"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]===\"function\"){return Buffer.from(e[Symbol.toPrimitive](\"string\"),r,t)}throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \"+\"or Array-like Object. Received type \"+typeof e)}Buffer.from=function(e,r,t){return from(e,r,t)};Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype);Object.setPrototypeOf(Buffer,Uint8Array);function assertSize(e){if(typeof e!==\"number\"){throw new TypeError('\"size\" argument must be of type number')}else if(e<0){throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}}function alloc(e,r,t){assertSize(e);if(e<=0){return createBuffer(e)}if(r!==undefined){return typeof t===\"string\"?createBuffer(e).fill(r,t):createBuffer(e).fill(r)}return createBuffer(e)}Buffer.alloc=function(e,r,t){return alloc(e,r,t)};function allocUnsafe(e){assertSize(e);return createBuffer(e<0?0:checked(e)|0)}Buffer.allocUnsafe=function(e){return allocUnsafe(e)};Buffer.allocUnsafeSlow=function(e){return allocUnsafe(e)};function fromString(e,r){if(typeof r!==\"string\"||r===\"\"){r=\"utf8\"}if(!Buffer.isEncoding(r)){throw new TypeError(\"Unknown encoding: \"+r)}var t=byteLength(e,r)|0;var f=createBuffer(t);var n=f.write(e,r);if(n!==t){f=f.slice(0,n)}return f}function fromArrayLike(e){var r=e.length<0?0:checked(e.length)|0;var t=createBuffer(r);for(var f=0;f<r;f+=1){t[f]=e[f]&255}return t}function fromArrayBuffer(e,r,t){if(r<0||e.byteLength<r){throw new RangeError('\"offset\" is outside of buffer bounds')}if(e.byteLength<r+(t||0)){throw new RangeError('\"length\" is outside of buffer bounds')}var f;if(r===undefined&&t===undefined){f=new Uint8Array(e)}else if(t===undefined){f=new Uint8Array(e,r)}else{f=new Uint8Array(e,r,t)}Object.setPrototypeOf(f,Buffer.prototype);return f}function fromObject(e){if(Buffer.isBuffer(e)){var r=checked(e.length)|0;var t=createBuffer(r);if(t.length===0){return t}e.copy(t,0,0,r);return t}if(e.length!==undefined){if(typeof e.length!==\"number\"||numberIsNaN(e.length)){return createBuffer(0)}return fromArrayLike(e)}if(e.type===\"Buffer\"&&Array.isArray(e.data)){return fromArrayLike(e.data)}}function checked(e){if(e>=o){throw new RangeError(\"Attempt to allocate Buffer larger than maximum \"+\"size: 0x\"+o.toString(16)+\" bytes\")}return e|0}function SlowBuffer(e){if(+e!=e){e=0}return Buffer.alloc(+e)}Buffer.isBuffer=function isBuffer(e){return e!=null&&e._isBuffer===true&&e!==Buffer.prototype};Buffer.compare=function compare(e,r){if(isInstance(e,Uint8Array))e=Buffer.from(e,e.offset,e.byteLength);if(isInstance(r,Uint8Array))r=Buffer.from(r,r.offset,r.byteLength);if(!Buffer.isBuffer(e)||!Buffer.isBuffer(r)){throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array')}if(e===r)return 0;var t=e.length;var f=r.length;for(var n=0,i=Math.min(t,f);n<i;++n){if(e[n]!==r[n]){t=e[n];f=r[n];break}}if(t<f)return-1;if(f<t)return 1;return 0};Buffer.isEncoding=function isEncoding(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return true;default:return false}};Buffer.concat=function concat(e,r){if(!Array.isArray(e)){throw new TypeError('\"list\" argument must be an Array of Buffers')}if(e.length===0){return Buffer.alloc(0)}var t;if(r===undefined){r=0;for(t=0;t<e.length;++t){r+=e[t].length}}var f=Buffer.allocUnsafe(r);var n=0;for(t=0;t<e.length;++t){var i=e[t];if(isInstance(i,Uint8Array)){i=Buffer.from(i)}if(!Buffer.isBuffer(i)){throw new TypeError('\"list\" argument must be an Array of Buffers')}i.copy(f,n);n+=i.length}return f};function byteLength(e,r){if(Buffer.isBuffer(e)){return e.length}if(ArrayBuffer.isView(e)||isInstance(e,ArrayBuffer)){return e.byteLength}if(typeof e!==\"string\"){throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. '+\"Received type \"+typeof e)}var t=e.length;var f=arguments.length>2&&arguments[2]===true;if(!f&&t===0)return 0;var n=false;for(;;){switch(r){case\"ascii\":case\"latin1\":case\"binary\":return t;case\"utf8\":case\"utf-8\":return utf8ToBytes(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return t*2;case\"hex\":return t>>>1;case\"base64\":return base64ToBytes(e).length;default:if(n){return f?-1:utf8ToBytes(e).length}r=(\"\"+r).toLowerCase();n=true}}}Buffer.byteLength=byteLength;function slowToString(e,r,t){var f=false;if(r===undefined||r<0){r=0}if(r>this.length){return\"\"}if(t===undefined||t>this.length){t=this.length}if(t<=0){return\"\"}t>>>=0;r>>>=0;if(t<=r){return\"\"}if(!e)e=\"utf8\";while(true){switch(e){case\"hex\":return hexSlice(this,r,t);case\"utf8\":case\"utf-8\":return utf8Slice(this,r,t);case\"ascii\":return asciiSlice(this,r,t);case\"latin1\":case\"binary\":return latin1Slice(this,r,t);case\"base64\":return base64Slice(this,r,t);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return utf16leSlice(this,r,t);default:if(f)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase();f=true}}}Buffer.prototype._isBuffer=true;function swap(e,r,t){var f=e[r];e[r]=e[t];e[t]=f}Buffer.prototype.swap16=function swap16(){var e=this.length;if(e%2!==0){throw new RangeError(\"Buffer size must be a multiple of 16-bits\")}for(var r=0;r<e;r+=2){swap(this,r,r+1)}return this};Buffer.prototype.swap32=function swap32(){var e=this.length;if(e%4!==0){throw new RangeError(\"Buffer size must be a multiple of 32-bits\")}for(var r=0;r<e;r+=4){swap(this,r,r+3);swap(this,r+1,r+2)}return this};Buffer.prototype.swap64=function swap64(){var e=this.length;if(e%8!==0){throw new RangeError(\"Buffer size must be a multiple of 64-bits\")}for(var r=0;r<e;r+=8){swap(this,r,r+7);swap(this,r+1,r+6);swap(this,r+2,r+5);swap(this,r+3,r+4)}return this};Buffer.prototype.toString=function toString(){var e=this.length;if(e===0)return\"\";if(arguments.length===0)return utf8Slice(this,0,e);return slowToString.apply(this,arguments)};Buffer.prototype.toLocaleString=Buffer.prototype.toString;Buffer.prototype.equals=function equals(e){if(!Buffer.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(this===e)return true;return Buffer.compare(this,e)===0};Buffer.prototype.inspect=function inspect(){var e=\"\";var t=r.INSPECT_MAX_BYTES;e=this.toString(\"hex\",0,t).replace(/(.{2})/g,\"$1 \").trim();if(this.length>t)e+=\" ... \";return\"<Buffer \"+e+\">\"};if(i){Buffer.prototype[i]=Buffer.prototype.inspect}Buffer.prototype.compare=function compare(e,r,t,f,n){if(isInstance(e,Uint8Array)){e=Buffer.from(e,e.offset,e.byteLength)}if(!Buffer.isBuffer(e)){throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. '+\"Received type \"+typeof e)}if(r===undefined){r=0}if(t===undefined){t=e?e.length:0}if(f===undefined){f=0}if(n===undefined){n=this.length}if(r<0||t>e.length||f<0||n>this.length){throw new RangeError(\"out of range index\")}if(f>=n&&r>=t){return 0}if(f>=n){return-1}if(r>=t){return 1}r>>>=0;t>>>=0;f>>>=0;n>>>=0;if(this===e)return 0;var i=n-f;var o=t-r;var u=Math.min(i,o);var a=this.slice(f,n);var s=e.slice(r,t);for(var h=0;h<u;++h){if(a[h]!==s[h]){i=a[h];o=s[h];break}}if(i<o)return-1;if(o<i)return 1;return 0};function bidirectionalIndexOf(e,r,t,f,n){if(e.length===0)return-1;if(typeof t===\"string\"){f=t;t=0}else if(t>2147483647){t=2147483647}else if(t<-2147483648){t=-2147483648}t=+t;if(numberIsNaN(t)){t=n?0:e.length-1}if(t<0)t=e.length+t;if(t>=e.length){if(n)return-1;else t=e.length-1}else if(t<0){if(n)t=0;else return-1}if(typeof r===\"string\"){r=Buffer.from(r,f)}if(Buffer.isBuffer(r)){if(r.length===0){return-1}return arrayIndexOf(e,r,t,f,n)}else if(typeof r===\"number\"){r=r&255;if(typeof Uint8Array.prototype.indexOf===\"function\"){if(n){return Uint8Array.prototype.indexOf.call(e,r,t)}else{return Uint8Array.prototype.lastIndexOf.call(e,r,t)}}return arrayIndexOf(e,[r],t,f,n)}throw new TypeError(\"val must be string, number or Buffer\")}function arrayIndexOf(e,r,t,f,n){var i=1;var o=e.length;var u=r.length;if(f!==undefined){f=String(f).toLowerCase();if(f===\"ucs2\"||f===\"ucs-2\"||f===\"utf16le\"||f===\"utf-16le\"){if(e.length<2||r.length<2){return-1}i=2;o/=2;u/=2;t/=2}}function read(e,r){if(i===1){return e[r]}else{return e.readUInt16BE(r*i)}}var a;if(n){var s=-1;for(a=t;a<o;a++){if(read(e,a)===read(r,s===-1?0:a-s)){if(s===-1)s=a;if(a-s+1===u)return s*i}else{if(s!==-1)a-=a-s;s=-1}}}else{if(t+u>o)t=o-u;for(a=t;a>=0;a--){var h=true;for(var c=0;c<u;c++){if(read(e,a+c)!==read(r,c)){h=false;break}}if(h)return a}}return-1}Buffer.prototype.includes=function includes(e,r,t){return this.indexOf(e,r,t)!==-1};Buffer.prototype.indexOf=function indexOf(e,r,t){return bidirectionalIndexOf(this,e,r,t,true)};Buffer.prototype.lastIndexOf=function lastIndexOf(e,r,t){return bidirectionalIndexOf(this,e,r,t,false)};function hexWrite(e,r,t,f){t=Number(t)||0;var n=e.length-t;if(!f){f=n}else{f=Number(f);if(f>n){f=n}}var i=r.length;if(f>i/2){f=i/2}for(var o=0;o<f;++o){var u=parseInt(r.substr(o*2,2),16);if(numberIsNaN(u))return o;e[t+o]=u}return o}function utf8Write(e,r,t,f){return blitBuffer(utf8ToBytes(r,e.length-t),e,t,f)}function asciiWrite(e,r,t,f){return blitBuffer(asciiToBytes(r),e,t,f)}function latin1Write(e,r,t,f){return asciiWrite(e,r,t,f)}function base64Write(e,r,t,f){return blitBuffer(base64ToBytes(r),e,t,f)}function ucs2Write(e,r,t,f){return blitBuffer(utf16leToBytes(r,e.length-t),e,t,f)}Buffer.prototype.write=function write(e,r,t,f){if(r===undefined){f=\"utf8\";t=this.length;r=0}else if(t===undefined&&typeof r===\"string\"){f=r;t=this.length;r=0}else if(isFinite(r)){r=r>>>0;if(isFinite(t)){t=t>>>0;if(f===undefined)f=\"utf8\"}else{f=t;t=undefined}}else{throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\")}var n=this.length-r;if(t===undefined||t>n)t=n;if(e.length>0&&(t<0||r<0)||r>this.length){throw new RangeError(\"Attempt to write outside buffer bounds\")}if(!f)f=\"utf8\";var i=false;for(;;){switch(f){case\"hex\":return hexWrite(this,e,r,t);case\"utf8\":case\"utf-8\":return utf8Write(this,e,r,t);case\"ascii\":return asciiWrite(this,e,r,t);case\"latin1\":case\"binary\":return latin1Write(this,e,r,t);case\"base64\":return base64Write(this,e,r,t);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return ucs2Write(this,e,r,t);default:if(i)throw new TypeError(\"Unknown encoding: \"+f);f=(\"\"+f).toLowerCase();i=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(e,r,t){if(r===0&&t===e.length){return f.fromByteArray(e)}else{return f.fromByteArray(e.slice(r,t))}}function utf8Slice(e,r,t){t=Math.min(e.length,t);var f=[];var n=r;while(n<t){var i=e[n];var o=null;var u=i>239?4:i>223?3:i>191?2:1;if(n+u<=t){var a,s,h,c;switch(u){case 1:if(i<128){o=i}break;case 2:a=e[n+1];if((a&192)===128){c=(i&31)<<6|a&63;if(c>127){o=c}}break;case 3:a=e[n+1];s=e[n+2];if((a&192)===128&&(s&192)===128){c=(i&15)<<12|(a&63)<<6|s&63;if(c>2047&&(c<55296||c>57343)){o=c}}break;case 4:a=e[n+1];s=e[n+2];h=e[n+3];if((a&192)===128&&(s&192)===128&&(h&192)===128){c=(i&15)<<18|(a&63)<<12|(s&63)<<6|h&63;if(c>65535&&c<1114112){o=c}}}}if(o===null){o=65533;u=1}else if(o>65535){o-=65536;f.push(o>>>10&1023|55296);o=56320|o&1023}f.push(o);n+=u}return decodeCodePointsArray(f)}var u=4096;function decodeCodePointsArray(e){var r=e.length;if(r<=u){return String.fromCharCode.apply(String,e)}var t=\"\";var f=0;while(f<r){t+=String.fromCharCode.apply(String,e.slice(f,f+=u))}return t}function asciiSlice(e,r,t){var f=\"\";t=Math.min(e.length,t);for(var n=r;n<t;++n){f+=String.fromCharCode(e[n]&127)}return f}function latin1Slice(e,r,t){var f=\"\";t=Math.min(e.length,t);for(var n=r;n<t;++n){f+=String.fromCharCode(e[n])}return f}function hexSlice(e,r,t){var f=e.length;if(!r||r<0)r=0;if(!t||t<0||t>f)t=f;var n=\"\";for(var i=r;i<t;++i){n+=s[e[i]]}return n}function utf16leSlice(e,r,t){var f=e.slice(r,t);var n=\"\";for(var i=0;i<f.length;i+=2){n+=String.fromCharCode(f[i]+f[i+1]*256)}return n}Buffer.prototype.slice=function slice(e,r){var t=this.length;e=~~e;r=r===undefined?t:~~r;if(e<0){e+=t;if(e<0)e=0}else if(e>t){e=t}if(r<0){r+=t;if(r<0)r=0}else if(r>t){r=t}if(r<e)r=e;var f=this.subarray(e,r);Object.setPrototypeOf(f,Buffer.prototype);return f};function checkOffset(e,r,t){if(e%1!==0||e<0)throw new RangeError(\"offset is not uint\");if(e+r>t)throw new RangeError(\"Trying to access beyond buffer length\")}Buffer.prototype.readUIntLE=function readUIntLE(e,r,t){e=e>>>0;r=r>>>0;if(!t)checkOffset(e,r,this.length);var f=this[e];var n=1;var i=0;while(++i<r&&(n*=256)){f+=this[e+i]*n}return f};Buffer.prototype.readUIntBE=function readUIntBE(e,r,t){e=e>>>0;r=r>>>0;if(!t){checkOffset(e,r,this.length)}var f=this[e+--r];var n=1;while(r>0&&(n*=256)){f+=this[e+--r]*n}return f};Buffer.prototype.readUInt8=function readUInt8(e,r){e=e>>>0;if(!r)checkOffset(e,1,this.length);return this[e]};Buffer.prototype.readUInt16LE=function readUInt16LE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);return this[e]|this[e+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);return this[e]<<8|this[e+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};Buffer.prototype.readIntLE=function readIntLE(e,r,t){e=e>>>0;r=r>>>0;if(!t)checkOffset(e,r,this.length);var f=this[e];var n=1;var i=0;while(++i<r&&(n*=256)){f+=this[e+i]*n}n*=128;if(f>=n)f-=Math.pow(2,8*r);return f};Buffer.prototype.readIntBE=function readIntBE(e,r,t){e=e>>>0;r=r>>>0;if(!t)checkOffset(e,r,this.length);var f=r;var n=1;var i=this[e+--f];while(f>0&&(n*=256)){i+=this[e+--f]*n}n*=128;if(i>=n)i-=Math.pow(2,8*r);return i};Buffer.prototype.readInt8=function readInt8(e,r){e=e>>>0;if(!r)checkOffset(e,1,this.length);if(!(this[e]&128))return this[e];return(255-this[e]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);var t=this[e]|this[e+1]<<8;return t&32768?t|4294901760:t};Buffer.prototype.readInt16BE=function readInt16BE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);var t=this[e+1]|this[e]<<8;return t&32768?t|4294901760:t};Buffer.prototype.readInt32LE=function readInt32LE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};Buffer.prototype.readFloatLE=function readFloatLE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return n.read(this,e,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return n.read(this,e,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(e,r){e=e>>>0;if(!r)checkOffset(e,8,this.length);return n.read(this,e,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(e,r){e=e>>>0;if(!r)checkOffset(e,8,this.length);return n.read(this,e,false,52,8)};function checkInt(e,r,t,f,n,i){if(!Buffer.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(r>n||r<i)throw new RangeError('\"value\" argument is out of bounds');if(t+f>e.length)throw new RangeError(\"Index out of range\")}Buffer.prototype.writeUIntLE=function writeUIntLE(e,r,t,f){e=+e;r=r>>>0;t=t>>>0;if(!f){var n=Math.pow(2,8*t)-1;checkInt(this,e,r,t,n,0)}var i=1;var o=0;this[r]=e&255;while(++o<t&&(i*=256)){this[r+o]=e/i&255}return r+t};Buffer.prototype.writeUIntBE=function writeUIntBE(e,r,t,f){e=+e;r=r>>>0;t=t>>>0;if(!f){var n=Math.pow(2,8*t)-1;checkInt(this,e,r,t,n,0)}var i=t-1;var o=1;this[r+i]=e&255;while(--i>=0&&(o*=256)){this[r+i]=e/o&255}return r+t};Buffer.prototype.writeUInt8=function writeUInt8(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,1,255,0);this[r]=e&255;return r+1};Buffer.prototype.writeUInt16LE=function writeUInt16LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,65535,0);this[r]=e&255;this[r+1]=e>>>8;return r+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,65535,0);this[r]=e>>>8;this[r+1]=e&255;return r+2};Buffer.prototype.writeUInt32LE=function writeUInt32LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,4294967295,0);this[r+3]=e>>>24;this[r+2]=e>>>16;this[r+1]=e>>>8;this[r]=e&255;return r+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,4294967295,0);this[r]=e>>>24;this[r+1]=e>>>16;this[r+2]=e>>>8;this[r+3]=e&255;return r+4};Buffer.prototype.writeIntLE=function writeIntLE(e,r,t,f){e=+e;r=r>>>0;if(!f){var n=Math.pow(2,8*t-1);checkInt(this,e,r,t,n-1,-n)}var i=0;var o=1;var u=0;this[r]=e&255;while(++i<t&&(o*=256)){if(e<0&&u===0&&this[r+i-1]!==0){u=1}this[r+i]=(e/o>>0)-u&255}return r+t};Buffer.prototype.writeIntBE=function writeIntBE(e,r,t,f){e=+e;r=r>>>0;if(!f){var n=Math.pow(2,8*t-1);checkInt(this,e,r,t,n-1,-n)}var i=t-1;var o=1;var u=0;this[r+i]=e&255;while(--i>=0&&(o*=256)){if(e<0&&u===0&&this[r+i+1]!==0){u=1}this[r+i]=(e/o>>0)-u&255}return r+t};Buffer.prototype.writeInt8=function writeInt8(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,1,127,-128);if(e<0)e=255+e+1;this[r]=e&255;return r+1};Buffer.prototype.writeInt16LE=function writeInt16LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,32767,-32768);this[r]=e&255;this[r+1]=e>>>8;return r+2};Buffer.prototype.writeInt16BE=function writeInt16BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,32767,-32768);this[r]=e>>>8;this[r+1]=e&255;return r+2};Buffer.prototype.writeInt32LE=function writeInt32LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,2147483647,-2147483648);this[r]=e&255;this[r+1]=e>>>8;this[r+2]=e>>>16;this[r+3]=e>>>24;return r+4};Buffer.prototype.writeInt32BE=function writeInt32BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,2147483647,-2147483648);if(e<0)e=4294967295+e+1;this[r]=e>>>24;this[r+1]=e>>>16;this[r+2]=e>>>8;this[r+3]=e&255;return r+4};function checkIEEE754(e,r,t,f,n,i){if(t+f>e.length)throw new RangeError(\"Index out of range\");if(t<0)throw new RangeError(\"Index out of range\")}function writeFloat(e,r,t,f,i){r=+r;t=t>>>0;if(!i){checkIEEE754(e,r,t,4,34028234663852886e22,-34028234663852886e22)}n.write(e,r,t,f,23,4);return t+4}Buffer.prototype.writeFloatLE=function writeFloatLE(e,r,t){return writeFloat(this,e,r,true,t)};Buffer.prototype.writeFloatBE=function writeFloatBE(e,r,t){return writeFloat(this,e,r,false,t)};function writeDouble(e,r,t,f,i){r=+r;t=t>>>0;if(!i){checkIEEE754(e,r,t,8,17976931348623157e292,-17976931348623157e292)}n.write(e,r,t,f,52,8);return t+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(e,r,t){return writeDouble(this,e,r,true,t)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(e,r,t){return writeDouble(this,e,r,false,t)};Buffer.prototype.copy=function copy(e,r,t,f){if(!Buffer.isBuffer(e))throw new TypeError(\"argument should be a Buffer\");if(!t)t=0;if(!f&&f!==0)f=this.length;if(r>=e.length)r=e.length;if(!r)r=0;if(f>0&&f<t)f=t;if(f===t)return 0;if(e.length===0||this.length===0)return 0;if(r<0){throw new RangeError(\"targetStart out of bounds\")}if(t<0||t>=this.length)throw new RangeError(\"Index out of range\");if(f<0)throw new RangeError(\"sourceEnd out of bounds\");if(f>this.length)f=this.length;if(e.length-r<f-t){f=e.length-r+t}var n=f-t;if(this===e&&typeof Uint8Array.prototype.copyWithin===\"function\"){this.copyWithin(r,t,f)}else if(this===e&&t<r&&r<f){for(var i=n-1;i>=0;--i){e[i+r]=this[i+t]}}else{Uint8Array.prototype.set.call(e,this.subarray(t,f),r)}return n};Buffer.prototype.fill=function fill(e,r,t,f){if(typeof e===\"string\"){if(typeof r===\"string\"){f=r;r=0;t=this.length}else if(typeof t===\"string\"){f=t;t=this.length}if(f!==undefined&&typeof f!==\"string\"){throw new TypeError(\"encoding must be a string\")}if(typeof f===\"string\"&&!Buffer.isEncoding(f)){throw new TypeError(\"Unknown encoding: \"+f)}if(e.length===1){var n=e.charCodeAt(0);if(f===\"utf8\"&&n<128||f===\"latin1\"){e=n}}}else if(typeof e===\"number\"){e=e&255}else if(typeof e===\"boolean\"){e=Number(e)}if(r<0||this.length<r||this.length<t){throw new RangeError(\"Out of range index\")}if(t<=r){return this}r=r>>>0;t=t===undefined?this.length:t>>>0;if(!e)e=0;var i;if(typeof e===\"number\"){for(i=r;i<t;++i){this[i]=e}}else{var o=Buffer.isBuffer(e)?e:Buffer.from(e,f);var u=o.length;if(u===0){throw new TypeError('The value \"'+e+'\" is invalid for argument \"value\"')}for(i=0;i<t-r;++i){this[i+r]=o[i%u]}}return this};var a=/[^+/0-9A-Za-z-_]/g;function base64clean(e){e=e.split(\"=\")[0];e=e.trim().replace(a,\"\");if(e.length<2)return\"\";while(e.length%4!==0){e=e+\"=\"}return e}function utf8ToBytes(e,r){r=r||Infinity;var t;var f=e.length;var n=null;var i=[];for(var o=0;o<f;++o){t=e.charCodeAt(o);if(t>55295&&t<57344){if(!n){if(t>56319){if((r-=3)>-1)i.push(239,191,189);continue}else if(o+1===f){if((r-=3)>-1)i.push(239,191,189);continue}n=t;continue}if(t<56320){if((r-=3)>-1)i.push(239,191,189);n=t;continue}t=(n-55296<<10|t-56320)+65536}else if(n){if((r-=3)>-1)i.push(239,191,189)}n=null;if(t<128){if((r-=1)<0)break;i.push(t)}else if(t<2048){if((r-=2)<0)break;i.push(t>>6|192,t&63|128)}else if(t<65536){if((r-=3)<0)break;i.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((r-=4)<0)break;i.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else{throw new Error(\"Invalid code point\")}}return i}function asciiToBytes(e){var r=[];for(var t=0;t<e.length;++t){r.push(e.charCodeAt(t)&255)}return r}function utf16leToBytes(e,r){var t,f,n;var i=[];for(var o=0;o<e.length;++o){if((r-=2)<0)break;t=e.charCodeAt(o);f=t>>8;n=t%256;i.push(n);i.push(f)}return i}function base64ToBytes(e){return f.toByteArray(base64clean(e))}function blitBuffer(e,r,t,f){for(var n=0;n<f;++n){if(n+t>=r.length||n>=e.length)break;r[n+t]=e[n]}return n}function isInstance(e,r){return e instanceof r||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===r.name}function numberIsNaN(e){return e!==e}var s=function(){var e=\"0123456789abcdef\";var r=new Array(256);for(var t=0;t<16;++t){var f=t*16;for(var n=0;n<16;++n){r[f+n]=e[t]+e[n]}}return r}()},783:function(e,r){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nr.read=function(e,r,t,f,n){var i,o;var u=n*8-f-1;var a=(1<<u)-1;var s=a>>1;var h=-7;var c=t?n-1:0;var l=t?-1:1;var p=e[r+c];c+=l;i=p&(1<<-h)-1;p>>=-h;h+=u;for(;h>0;i=i*256+e[r+c],c+=l,h-=8){}o=i&(1<<-h)-1;i>>=-h;h+=f;for(;h>0;o=o*256+e[r+c],c+=l,h-=8){}if(i===0){i=1-s}else if(i===a){return o?NaN:(p?-1:1)*Infinity}else{o=o+Math.pow(2,f);i=i-s}return(p?-1:1)*o*Math.pow(2,i-f)};r.write=function(e,r,t,f,n,i){var o,u,a;var s=i*8-n-1;var h=(1<<s)-1;var c=h>>1;var l=n===23?Math.pow(2,-24)-Math.pow(2,-77):0;var p=f?0:i-1;var y=f?1:-1;var g=r<0||r===0&&1/r<0?1:0;r=Math.abs(r);if(isNaN(r)||r===Infinity){u=isNaN(r)?1:0;o=h}else{o=Math.floor(Math.log(r)/Math.LN2);if(r*(a=Math.pow(2,-o))<1){o--;a*=2}if(o+c>=1){r+=l/a}else{r+=l*Math.pow(2,1-c)}if(r*a>=2){o++;a/=2}if(o+c>=h){u=0;o=h}else if(o+c>=1){u=(r*a-1)*Math.pow(2,n);o=o+c}else{u=r*Math.pow(2,c-1)*Math.pow(2,n);o=0}}for(;n>=8;e[t+p]=u&255,p+=y,u/=256,n-=8){}o=o<<n|u;s+=n;for(;s>0;e[t+p]=o&255,p+=y,o/=256,s-=8){}e[t+p-y]|=g*128}}};var r={};function __nccwpck_require__(t){var f=r[t];if(f!==undefined){return f.exports}var n=r[t]={exports:{}};var i=true;try{e[t](n,n.exports,__nccwpck_require__);i=false}finally{if(i)delete r[t]}return n.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var t=__nccwpck_require__(72);module.exports=t})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvYnVmZmVyL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7QUFBQSxZQUFZLE9BQU8sa0JBQWtCLGFBQWEsd0JBQXdCLDBCQUEwQiw4QkFBOEIsU0FBUyxTQUFTLHVEQUF1RCx5RUFBeUUsdUJBQXVCLElBQUksS0FBSyxVQUFVLHFCQUFxQix3QkFBd0Isd0JBQXdCLG9CQUFvQixlQUFlLFVBQVUsa0VBQWtFLHFCQUFxQixjQUFjLG9CQUFvQixZQUFZLHVCQUF1QixpQkFBaUIsV0FBVyxXQUFXLGtCQUFrQiw0QkFBNEIsa0JBQWtCLHdCQUF3QixNQUFNLGlCQUFpQixXQUFXLFdBQVcsZ0NBQWdDLFFBQVEsZ0JBQWdCLE1BQU0sUUFBUSxJQUFJLE1BQU0sK0ZBQStGLGlCQUFpQixnQkFBZ0IsYUFBYSxVQUFVLGdEQUFnRCxhQUFhLFVBQVUseUVBQXlFLGdCQUFnQixhQUFhLFNBQVMsNEJBQTRCLGtEQUFrRCw0QkFBNEIsTUFBTSxTQUFTLFlBQVksSUFBSSxNQUFNLHFEQUFxRCwyQkFBMkIsa0JBQWtCLDBCQUEwQixNQUFNLGVBQWUsVUFBVSxTQUFTLFlBQVksa0JBQWtCLElBQUksTUFBTSxxQ0FBcUMsVUFBVSxTQUFTLGdDQUFnQyxlQUFlLHFCQUFxQiwyQ0FBMkMsbUJBQW1CLG9CQUFvQjtBQUM5ckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixhQUFhLCtHQUErRyxnQkFBZ0Isd0JBQXdCLHVCQUF1QixpQkFBaUIsZUFBZSwrQ0FBK0MsaUdBQWlHLGtLQUFrSyw2QkFBNkIsSUFBSSx3QkFBd0IsT0FBTyxlQUFlLFlBQVksOENBQThDLDJCQUEyQixvQkFBb0IsU0FBUyxjQUFjLGlEQUFpRCwrQkFBK0IsMkNBQTJDLG9CQUFvQixFQUFFLGlEQUFpRCwrQkFBK0IsMkNBQTJDLHdCQUF3QixFQUFFLHlCQUF5QixRQUFRLHVFQUF1RSx3QkFBd0IsMENBQTBDLFNBQVMs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Q0FBK0MsY0FBYyxhQUFhLDRCQUE0QixjQUFjLDJCQUEyQixlQUFlLElBQUksS0FBSyxtQ0FBbUMsMkJBQTJCLElBQUksS0FBSyxXQUFXLE9BQU8sS0FBSyxxQkFBcUIsV0FBVyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksZ0JBQWdCLHdCQUF3QixNQUFNLEtBQUssa0NBQWtDLEtBQUssS0FBSyxLQUFLLGdDQUFnQyxTQUFTLEtBQUssS0FBSyxJQUFJLGdDQUFnQyxtQkFBbUIsU0FBUyxnQ0FBZ0MsV0FBVyxrQkFBa0IsaUJBQWlCLFlBQVksWUFBWSxXQUFXLElBQUksc0NBQXNDLFFBQVEsUUFBUSxpQkFBaUIsaUJBQWlCLG1FQUFtRSxTQUFTLEtBQUssOEJBQThCLGlCQUFpQiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcY29tcGlsZWRcXGJ1ZmZlclxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7dmFyIGU9ezY3NTpmdW5jdGlvbihlLHIpe1widXNlIHN0cmljdFwiO3IuYnl0ZUxlbmd0aD1ieXRlTGVuZ3RoO3IudG9CeXRlQXJyYXk9dG9CeXRlQXJyYXk7ci5mcm9tQnl0ZUFycmF5PWZyb21CeXRlQXJyYXk7dmFyIHQ9W107dmFyIGY9W107dmFyIG49dHlwZW9mIFVpbnQ4QXJyYXkhPT1cInVuZGVmaW5lZFwiP1VpbnQ4QXJyYXk6QXJyYXk7dmFyIGk9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCI7Zm9yKHZhciBvPTAsdT1pLmxlbmd0aDtvPHU7KytvKXt0W29dPWlbb107ZltpLmNoYXJDb2RlQXQobyldPW99ZltcIi1cIi5jaGFyQ29kZUF0KDApXT02MjtmW1wiX1wiLmNoYXJDb2RlQXQoMCldPTYzO2Z1bmN0aW9uIGdldExlbnMoZSl7dmFyIHI9ZS5sZW5ndGg7aWYociU0PjApe3Rocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDRcIil9dmFyIHQ9ZS5pbmRleE9mKFwiPVwiKTtpZih0PT09LTEpdD1yO3ZhciBmPXQ9PT1yPzA6NC10JTQ7cmV0dXJuW3QsZl19ZnVuY3Rpb24gYnl0ZUxlbmd0aChlKXt2YXIgcj1nZXRMZW5zKGUpO3ZhciB0PXJbMF07dmFyIGY9clsxXTtyZXR1cm4odCtmKSozLzQtZn1mdW5jdGlvbiBfYnl0ZUxlbmd0aChlLHIsdCl7cmV0dXJuKHIrdCkqMy80LXR9ZnVuY3Rpb24gdG9CeXRlQXJyYXkoZSl7dmFyIHI7dmFyIHQ9Z2V0TGVucyhlKTt2YXIgaT10WzBdO3ZhciBvPXRbMV07dmFyIHU9bmV3IG4oX2J5dGVMZW5ndGgoZSxpLG8pKTt2YXIgYT0wO3ZhciBzPW8+MD9pLTQ6aTt2YXIgaDtmb3IoaD0wO2g8cztoKz00KXtyPWZbZS5jaGFyQ29kZUF0KGgpXTw8MTh8ZltlLmNoYXJDb2RlQXQoaCsxKV08PDEyfGZbZS5jaGFyQ29kZUF0KGgrMildPDw2fGZbZS5jaGFyQ29kZUF0KGgrMyldO3VbYSsrXT1yPj4xNiYyNTU7dVthKytdPXI+PjgmMjU1O3VbYSsrXT1yJjI1NX1pZihvPT09Mil7cj1mW2UuY2hhckNvZGVBdChoKV08PDJ8ZltlLmNoYXJDb2RlQXQoaCsxKV0+PjQ7dVthKytdPXImMjU1fWlmKG89PT0xKXtyPWZbZS5jaGFyQ29kZUF0KGgpXTw8MTB8ZltlLmNoYXJDb2RlQXQoaCsxKV08PDR8ZltlLmNoYXJDb2RlQXQoaCsyKV0+PjI7dVthKytdPXI+PjgmMjU1O3VbYSsrXT1yJjI1NX1yZXR1cm4gdX1mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQoZSl7cmV0dXJuIHRbZT4+MTgmNjNdK3RbZT4+MTImNjNdK3RbZT4+NiY2M10rdFtlJjYzXX1mdW5jdGlvbiBlbmNvZGVDaHVuayhlLHIsdCl7dmFyIGY7dmFyIG49W107Zm9yKHZhciBpPXI7aTx0O2krPTMpe2Y9KGVbaV08PDE2JjE2NzExNjgwKSsoZVtpKzFdPDw4JjY1MjgwKSsoZVtpKzJdJjI1NSk7bi5wdXNoKHRyaXBsZXRUb0Jhc2U2NChmKSl9cmV0dXJuIG4uam9pbihcIlwiKX1mdW5jdGlvbiBmcm9tQnl0ZUFycmF5KGUpe3ZhciByO3ZhciBmPWUubGVuZ3RoO3ZhciBuPWYlMzt2YXIgaT1bXTt2YXIgbz0xNjM4Mztmb3IodmFyIHU9MCxhPWYtbjt1PGE7dSs9byl7aS5wdXNoKGVuY29kZUNodW5rKGUsdSx1K28+YT9hOnUrbykpfWlmKG49PT0xKXtyPWVbZi0xXTtpLnB1c2godFtyPj4yXSt0W3I8PDQmNjNdK1wiPT1cIil9ZWxzZSBpZihuPT09Mil7cj0oZVtmLTJdPDw4KStlW2YtMV07aS5wdXNoKHRbcj4+MTBdK3Rbcj4+NCY2M10rdFtyPDwyJjYzXStcIj1cIil9cmV0dXJuIGkuam9pbihcIlwiKX19LDcyOmZ1bmN0aW9uKGUscix0KXtcInVzZSBzdHJpY3RcIjtcbi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL3ZhciBmPXQoNjc1KTt2YXIgbj10KDc4Myk7dmFyIGk9dHlwZW9mIFN5bWJvbD09PVwiZnVuY3Rpb25cIiYmdHlwZW9mIFN5bWJvbC5mb3I9PT1cImZ1bmN0aW9uXCI/U3ltYm9sLmZvcihcIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tXCIpOm51bGw7ci5CdWZmZXI9QnVmZmVyO3IuU2xvd0J1ZmZlcj1TbG93QnVmZmVyO3IuSU5TUEVDVF9NQVhfQllURVM9NTA7dmFyIG89MjE0NzQ4MzY0NztyLmtNYXhMZW5ndGg9bztCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVD10eXBlZEFycmF5U3VwcG9ydCgpO2lmKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCYmdHlwZW9mIGNvbnNvbGUhPT1cInVuZGVmaW5lZFwiJiZ0eXBlb2YgY29uc29sZS5lcnJvcj09PVwiZnVuY3Rpb25cIil7Y29uc29sZS5lcnJvcihcIlRoaXMgYnJvd3NlciBsYWNrcyB0eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGljaCBpcyByZXF1aXJlZCBieSBcIitcImBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuXCIpfWZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0KCl7dHJ5e3ZhciBlPW5ldyBVaW50OEFycmF5KDEpO3ZhciByPXtmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fTtPYmplY3Quc2V0UHJvdG90eXBlT2YocixVaW50OEFycmF5LnByb3RvdHlwZSk7T2JqZWN0LnNldFByb3RvdHlwZU9mKGUscik7cmV0dXJuIGUuZm9vKCk9PT00Mn1jYXRjaChlKXtyZXR1cm4gZmFsc2V9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLFwicGFyZW50XCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtpZighQnVmZmVyLmlzQnVmZmVyKHRoaXMpKXJldHVybiB1bmRlZmluZWQ7cmV0dXJuIHRoaXMuYnVmZmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLFwib2Zmc2V0XCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtpZighQnVmZmVyLmlzQnVmZmVyKHRoaXMpKXJldHVybiB1bmRlZmluZWQ7cmV0dXJuIHRoaXMuYnl0ZU9mZnNldH19KTtmdW5jdGlvbiBjcmVhdGVCdWZmZXIoZSl7aWYoZT5vKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJytlKydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKX12YXIgcj1uZXcgVWludDhBcnJheShlKTtPYmplY3Quc2V0UHJvdG90eXBlT2YocixCdWZmZXIucHJvdG90eXBlKTtyZXR1cm4gcn1mdW5jdGlvbiBCdWZmZXIoZSxyLHQpe2lmKHR5cGVvZiBlPT09XCJudW1iZXJcIil7aWYodHlwZW9mIHI9PT1cInN0cmluZ1wiKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpfXJldHVybiBhbGxvY1Vuc2FmZShlKX1yZXR1cm4gZnJvbShlLHIsdCl9QnVmZmVyLnBvb2xTaXplPTgxOTI7ZnVuY3Rpb24gZnJvbShlLHIsdCl7aWYodHlwZW9mIGU9PT1cInN0cmluZ1wiKXtyZXR1cm4gZnJvbVN0cmluZyhlLHIpfWlmKEFycmF5QnVmZmVyLmlzVmlldyhlKSl7cmV0dXJuIGZyb21BcnJheUxpa2UoZSl9aWYoZT09bnVsbCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIFwiK1wib3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgXCIrdHlwZW9mIGUpfWlmKGlzSW5zdGFuY2UoZSxBcnJheUJ1ZmZlcil8fGUmJmlzSW5zdGFuY2UoZS5idWZmZXIsQXJyYXlCdWZmZXIpKXtyZXR1cm4gZnJvbUFycmF5QnVmZmVyKGUscix0KX1pZih0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXIhPT1cInVuZGVmaW5lZFwiJiYoaXNJbnN0YW5jZShlLFNoYXJlZEFycmF5QnVmZmVyKXx8ZSYmaXNJbnN0YW5jZShlLmJ1ZmZlcixTaGFyZWRBcnJheUJ1ZmZlcikpKXtyZXR1cm4gZnJvbUFycmF5QnVmZmVyKGUscix0KX1pZih0eXBlb2YgZT09PVwibnVtYmVyXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyl9dmFyIGY9ZS52YWx1ZU9mJiZlLnZhbHVlT2YoKTtpZihmIT1udWxsJiZmIT09ZSl7cmV0dXJuIEJ1ZmZlci5mcm9tKGYscix0KX12YXIgbj1mcm9tT2JqZWN0KGUpO2lmKG4pcmV0dXJuIG47aWYodHlwZW9mIFN5bWJvbCE9PVwidW5kZWZpbmVkXCImJlN5bWJvbC50b1ByaW1pdGl2ZSE9bnVsbCYmdHlwZW9mIGVbU3ltYm9sLnRvUHJpbWl0aXZlXT09PVwiZnVuY3Rpb25cIil7cmV0dXJuIEJ1ZmZlci5mcm9tKGVbU3ltYm9sLnRvUHJpbWl0aXZlXShcInN0cmluZ1wiKSxyLHQpfXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBcIitcIm9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlIFwiK3R5cGVvZiBlKX1CdWZmZXIuZnJvbT1mdW5jdGlvbihlLHIsdCl7cmV0dXJuIGZyb20oZSxyLHQpfTtPYmplY3Quc2V0UHJvdG90eXBlT2YoQnVmZmVyLnByb3RvdHlwZSxVaW50OEFycmF5LnByb3RvdHlwZSk7T2JqZWN0LnNldFByb3RvdHlwZU9mKEJ1ZmZlcixVaW50OEFycmF5KTtmdW5jdGlvbiBhc3NlcnRTaXplKGUpe2lmKHR5cGVvZiBlIT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlcicpfWVsc2UgaWYoZTwwKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJytlKydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKX19ZnVuY3Rpb24gYWxsb2MoZSxyLHQpe2Fzc2VydFNpemUoZSk7aWYoZTw9MCl7cmV0dXJuIGNyZWF0ZUJ1ZmZlcihlKX1pZihyIT09dW5kZWZpbmVkKXtyZXR1cm4gdHlwZW9mIHQ9PT1cInN0cmluZ1wiP2NyZWF0ZUJ1ZmZlcihlKS5maWxsKHIsdCk6Y3JlYXRlQnVmZmVyKGUpLmZpbGwocil9cmV0dXJuIGNyZWF0ZUJ1ZmZlcihlKX1CdWZmZXIuYWxsb2M9ZnVuY3Rpb24oZSxyLHQpe3JldHVybiBhbGxvYyhlLHIsdCl9O2Z1bmN0aW9uIGFsbG9jVW5zYWZlKGUpe2Fzc2VydFNpemUoZSk7cmV0dXJuIGNyZWF0ZUJ1ZmZlcihlPDA/MDpjaGVja2VkKGUpfDApfUJ1ZmZlci5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gYWxsb2NVbnNhZmUoZSl9O0J1ZmZlci5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIGFsbG9jVW5zYWZlKGUpfTtmdW5jdGlvbiBmcm9tU3RyaW5nKGUscil7aWYodHlwZW9mIHIhPT1cInN0cmluZ1wifHxyPT09XCJcIil7cj1cInV0ZjhcIn1pZighQnVmZmVyLmlzRW5jb2Rpbmcocikpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIityKX12YXIgdD1ieXRlTGVuZ3RoKGUscil8MDt2YXIgZj1jcmVhdGVCdWZmZXIodCk7dmFyIG49Zi53cml0ZShlLHIpO2lmKG4hPT10KXtmPWYuc2xpY2UoMCxuKX1yZXR1cm4gZn1mdW5jdGlvbiBmcm9tQXJyYXlMaWtlKGUpe3ZhciByPWUubGVuZ3RoPDA/MDpjaGVja2VkKGUubGVuZ3RoKXwwO3ZhciB0PWNyZWF0ZUJ1ZmZlcihyKTtmb3IodmFyIGY9MDtmPHI7Zis9MSl7dFtmXT1lW2ZdJjI1NX1yZXR1cm4gdH1mdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIoZSxyLHQpe2lmKHI8MHx8ZS5ieXRlTGVuZ3RoPHIpe3Rocm93IG5ldyBSYW5nZUVycm9yKCdcIm9mZnNldFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpfWlmKGUuYnl0ZUxlbmd0aDxyKyh0fHwwKSl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wibGVuZ3RoXCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyl9dmFyIGY7aWYocj09PXVuZGVmaW5lZCYmdD09PXVuZGVmaW5lZCl7Zj1uZXcgVWludDhBcnJheShlKX1lbHNlIGlmKHQ9PT11bmRlZmluZWQpe2Y9bmV3IFVpbnQ4QXJyYXkoZSxyKX1lbHNle2Y9bmV3IFVpbnQ4QXJyYXkoZSxyLHQpfU9iamVjdC5zZXRQcm90b3R5cGVPZihmLEJ1ZmZlci5wcm90b3R5cGUpO3JldHVybiBmfWZ1bmN0aW9uIGZyb21PYmplY3QoZSl7aWYoQnVmZmVyLmlzQnVmZmVyKGUpKXt2YXIgcj1jaGVja2VkKGUubGVuZ3RoKXwwO3ZhciB0PWNyZWF0ZUJ1ZmZlcihyKTtpZih0Lmxlbmd0aD09PTApe3JldHVybiB0fWUuY29weSh0LDAsMCxyKTtyZXR1cm4gdH1pZihlLmxlbmd0aCE9PXVuZGVmaW5lZCl7aWYodHlwZW9mIGUubGVuZ3RoIT09XCJudW1iZXJcInx8bnVtYmVySXNOYU4oZS5sZW5ndGgpKXtyZXR1cm4gY3JlYXRlQnVmZmVyKDApfXJldHVybiBmcm9tQXJyYXlMaWtlKGUpfWlmKGUudHlwZT09PVwiQnVmZmVyXCImJkFycmF5LmlzQXJyYXkoZS5kYXRhKSl7cmV0dXJuIGZyb21BcnJheUxpa2UoZS5kYXRhKX19ZnVuY3Rpb24gY2hlY2tlZChlKXtpZihlPj1vKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gXCIrXCJzaXplOiAweFwiK28udG9TdHJpbmcoMTYpK1wiIGJ5dGVzXCIpfXJldHVybiBlfDB9ZnVuY3Rpb24gU2xvd0J1ZmZlcihlKXtpZigrZSE9ZSl7ZT0wfXJldHVybiBCdWZmZXIuYWxsb2MoK2UpfUJ1ZmZlci5pc0J1ZmZlcj1mdW5jdGlvbiBpc0J1ZmZlcihlKXtyZXR1cm4gZSE9bnVsbCYmZS5faXNCdWZmZXI9PT10cnVlJiZlIT09QnVmZmVyLnByb3RvdHlwZX07QnVmZmVyLmNvbXBhcmU9ZnVuY3Rpb24gY29tcGFyZShlLHIpe2lmKGlzSW5zdGFuY2UoZSxVaW50OEFycmF5KSllPUJ1ZmZlci5mcm9tKGUsZS5vZmZzZXQsZS5ieXRlTGVuZ3RoKTtpZihpc0luc3RhbmNlKHIsVWludDhBcnJheSkpcj1CdWZmZXIuZnJvbShyLHIub2Zmc2V0LHIuYnl0ZUxlbmd0aCk7aWYoIUJ1ZmZlci5pc0J1ZmZlcihlKXx8IUJ1ZmZlci5pc0J1ZmZlcihyKSl7dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiYnVmMVwiLCBcImJ1ZjJcIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheScpfWlmKGU9PT1yKXJldHVybiAwO3ZhciB0PWUubGVuZ3RoO3ZhciBmPXIubGVuZ3RoO2Zvcih2YXIgbj0wLGk9TWF0aC5taW4odCxmKTtuPGk7KytuKXtpZihlW25dIT09cltuXSl7dD1lW25dO2Y9cltuXTticmVha319aWYodDxmKXJldHVybi0xO2lmKGY8dClyZXR1cm4gMTtyZXR1cm4gMH07QnVmZmVyLmlzRW5jb2Rpbmc9ZnVuY3Rpb24gaXNFbmNvZGluZyhlKXtzd2l0Y2goU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2VcImhleFwiOmNhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOmNhc2VcImFzY2lpXCI6Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6Y2FzZVwiYmFzZTY0XCI6Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuIHRydWU7ZGVmYXVsdDpyZXR1cm4gZmFsc2V9fTtCdWZmZXIuY29uY2F0PWZ1bmN0aW9uIGNvbmNhdChlLHIpe2lmKCFBcnJheS5pc0FycmF5KGUpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKX1pZihlLmxlbmd0aD09PTApe3JldHVybiBCdWZmZXIuYWxsb2MoMCl9dmFyIHQ7aWYocj09PXVuZGVmaW5lZCl7cj0wO2Zvcih0PTA7dDxlLmxlbmd0aDsrK3Qpe3IrPWVbdF0ubGVuZ3RofX12YXIgZj1CdWZmZXIuYWxsb2NVbnNhZmUocik7dmFyIG49MDtmb3IodD0wO3Q8ZS5sZW5ndGg7Kyt0KXt2YXIgaT1lW3RdO2lmKGlzSW5zdGFuY2UoaSxVaW50OEFycmF5KSl7aT1CdWZmZXIuZnJvbShpKX1pZighQnVmZmVyLmlzQnVmZmVyKGkpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKX1pLmNvcHkoZixuKTtuKz1pLmxlbmd0aH1yZXR1cm4gZn07ZnVuY3Rpb24gYnl0ZUxlbmd0aChlLHIpe2lmKEJ1ZmZlci5pc0J1ZmZlcihlKSl7cmV0dXJuIGUubGVuZ3RofWlmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8aXNJbnN0YW5jZShlLEFycmF5QnVmZmVyKSl7cmV0dXJuIGUuYnl0ZUxlbmd0aH1pZih0eXBlb2YgZSE9PVwic3RyaW5nXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiAnK1wiUmVjZWl2ZWQgdHlwZSBcIit0eXBlb2YgZSl9dmFyIHQ9ZS5sZW5ndGg7dmFyIGY9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl09PT10cnVlO2lmKCFmJiZ0PT09MClyZXR1cm4gMDt2YXIgbj1mYWxzZTtmb3IoOzspe3N3aXRjaChyKXtjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVybiB0O2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiB1dGY4VG9CeXRlcyhlKS5sZW5ndGg7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuIHQqMjtjYXNlXCJoZXhcIjpyZXR1cm4gdD4+PjE7Y2FzZVwiYmFzZTY0XCI6cmV0dXJuIGJhc2U2NFRvQnl0ZXMoZSkubGVuZ3RoO2RlZmF1bHQ6aWYobil7cmV0dXJuIGY/LTE6dXRmOFRvQnl0ZXMoZSkubGVuZ3RofXI9KFwiXCIrcikudG9Mb3dlckNhc2UoKTtuPXRydWV9fX1CdWZmZXIuYnl0ZUxlbmd0aD1ieXRlTGVuZ3RoO2Z1bmN0aW9uIHNsb3dUb1N0cmluZyhlLHIsdCl7dmFyIGY9ZmFsc2U7aWYocj09PXVuZGVmaW5lZHx8cjwwKXtyPTB9aWYocj50aGlzLmxlbmd0aCl7cmV0dXJuXCJcIn1pZih0PT09dW5kZWZpbmVkfHx0PnRoaXMubGVuZ3RoKXt0PXRoaXMubGVuZ3RofWlmKHQ8PTApe3JldHVyblwiXCJ9dD4+Pj0wO3I+Pj49MDtpZih0PD1yKXtyZXR1cm5cIlwifWlmKCFlKWU9XCJ1dGY4XCI7d2hpbGUodHJ1ZSl7c3dpdGNoKGUpe2Nhc2VcImhleFwiOnJldHVybiBoZXhTbGljZSh0aGlzLHIsdCk7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIHV0ZjhTbGljZSh0aGlzLHIsdCk7Y2FzZVwiYXNjaWlcIjpyZXR1cm4gYXNjaWlTbGljZSh0aGlzLHIsdCk7Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIGxhdGluMVNsaWNlKHRoaXMscix0KTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gYmFzZTY0U2xpY2UodGhpcyxyLHQpO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiB1dGYxNmxlU2xpY2UodGhpcyxyLHQpO2RlZmF1bHQ6aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrZSk7ZT0oZStcIlwiKS50b0xvd2VyQ2FzZSgpO2Y9dHJ1ZX19fUJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyPXRydWU7ZnVuY3Rpb24gc3dhcChlLHIsdCl7dmFyIGY9ZVtyXTtlW3JdPWVbdF07ZVt0XT1mfUJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uIHN3YXAxNigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9PTApe3Rocm93IG5ldyBSYW5nZUVycm9yKFwiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHNcIil9Zm9yKHZhciByPTA7cjxlO3IrPTIpe3N3YXAodGhpcyxyLHIrMSl9cmV0dXJuIHRoaXN9O0J1ZmZlci5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uIHN3YXAzMigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlNCE9PTApe3Rocm93IG5ldyBSYW5nZUVycm9yKFwiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHNcIil9Zm9yKHZhciByPTA7cjxlO3IrPTQpe3N3YXAodGhpcyxyLHIrMyk7c3dhcCh0aGlzLHIrMSxyKzIpfXJldHVybiB0aGlzfTtCdWZmZXIucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbiBzd2FwNjQoKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTghPT0wKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzXCIpfWZvcih2YXIgcj0wO3I8ZTtyKz04KXtzd2FwKHRoaXMscixyKzcpO3N3YXAodGhpcyxyKzEscis2KTtzd2FwKHRoaXMscisyLHIrNSk7c3dhcCh0aGlzLHIrMyxyKzQpfXJldHVybiB0aGlzfTtCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uIHRvU3RyaW5nKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZT09PTApcmV0dXJuXCJcIjtpZihhcmd1bWVudHMubGVuZ3RoPT09MClyZXR1cm4gdXRmOFNsaWNlKHRoaXMsMCxlKTtyZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07QnVmZmVyLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZz1CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nO0J1ZmZlci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uIGVxdWFscyhlKXtpZighQnVmZmVyLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyXCIpO2lmKHRoaXM9PT1lKXJldHVybiB0cnVlO3JldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLGUpPT09MH07QnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uIGluc3BlY3QoKXt2YXIgZT1cIlwiO3ZhciB0PXIuSU5TUEVDVF9NQVhfQllURVM7ZT10aGlzLnRvU3RyaW5nKFwiaGV4XCIsMCx0KS5yZXBsYWNlKC8oLnsyfSkvZyxcIiQxIFwiKS50cmltKCk7aWYodGhpcy5sZW5ndGg+dCllKz1cIiAuLi4gXCI7cmV0dXJuXCI8QnVmZmVyIFwiK2UrXCI+XCJ9O2lmKGkpe0J1ZmZlci5wcm90b3R5cGVbaV09QnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0fUJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbiBjb21wYXJlKGUscix0LGYsbil7aWYoaXNJbnN0YW5jZShlLFVpbnQ4QXJyYXkpKXtlPUJ1ZmZlci5mcm9tKGUsZS5vZmZzZXQsZS5ieXRlTGVuZ3RoKX1pZighQnVmZmVyLmlzQnVmZmVyKGUpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ0YXJnZXRcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5LiAnK1wiUmVjZWl2ZWQgdHlwZSBcIit0eXBlb2YgZSl9aWYocj09PXVuZGVmaW5lZCl7cj0wfWlmKHQ9PT11bmRlZmluZWQpe3Q9ZT9lLmxlbmd0aDowfWlmKGY9PT11bmRlZmluZWQpe2Y9MH1pZihuPT09dW5kZWZpbmVkKXtuPXRoaXMubGVuZ3RofWlmKHI8MHx8dD5lLmxlbmd0aHx8ZjwwfHxuPnRoaXMubGVuZ3RoKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm91dCBvZiByYW5nZSBpbmRleFwiKX1pZihmPj1uJiZyPj10KXtyZXR1cm4gMH1pZihmPj1uKXtyZXR1cm4tMX1pZihyPj10KXtyZXR1cm4gMX1yPj4+PTA7dD4+Pj0wO2Y+Pj49MDtuPj4+PTA7aWYodGhpcz09PWUpcmV0dXJuIDA7dmFyIGk9bi1mO3ZhciBvPXQtcjt2YXIgdT1NYXRoLm1pbihpLG8pO3ZhciBhPXRoaXMuc2xpY2UoZixuKTt2YXIgcz1lLnNsaWNlKHIsdCk7Zm9yKHZhciBoPTA7aDx1OysraCl7aWYoYVtoXSE9PXNbaF0pe2k9YVtoXTtvPXNbaF07YnJlYWt9fWlmKGk8bylyZXR1cm4tMTtpZihvPGkpcmV0dXJuIDE7cmV0dXJuIDB9O2Z1bmN0aW9uIGJpZGlyZWN0aW9uYWxJbmRleE9mKGUscix0LGYsbil7aWYoZS5sZW5ndGg9PT0wKXJldHVybi0xO2lmKHR5cGVvZiB0PT09XCJzdHJpbmdcIil7Zj10O3Q9MH1lbHNlIGlmKHQ+MjE0NzQ4MzY0Nyl7dD0yMTQ3NDgzNjQ3fWVsc2UgaWYodDwtMjE0NzQ4MzY0OCl7dD0tMjE0NzQ4MzY0OH10PSt0O2lmKG51bWJlcklzTmFOKHQpKXt0PW4/MDplLmxlbmd0aC0xfWlmKHQ8MCl0PWUubGVuZ3RoK3Q7aWYodD49ZS5sZW5ndGgpe2lmKG4pcmV0dXJuLTE7ZWxzZSB0PWUubGVuZ3RoLTF9ZWxzZSBpZih0PDApe2lmKG4pdD0wO2Vsc2UgcmV0dXJuLTF9aWYodHlwZW9mIHI9PT1cInN0cmluZ1wiKXtyPUJ1ZmZlci5mcm9tKHIsZil9aWYoQnVmZmVyLmlzQnVmZmVyKHIpKXtpZihyLmxlbmd0aD09PTApe3JldHVybi0xfXJldHVybiBhcnJheUluZGV4T2YoZSxyLHQsZixuKX1lbHNlIGlmKHR5cGVvZiByPT09XCJudW1iZXJcIil7cj1yJjI1NTtpZih0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj09PVwiZnVuY3Rpb25cIil7aWYobil7cmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHIsdCl9ZWxzZXtyZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChlLHIsdCl9fXJldHVybiBhcnJheUluZGV4T2YoZSxbcl0sdCxmLG4pfXRocm93IG5ldyBUeXBlRXJyb3IoXCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXJcIil9ZnVuY3Rpb24gYXJyYXlJbmRleE9mKGUscix0LGYsbil7dmFyIGk9MTt2YXIgbz1lLmxlbmd0aDt2YXIgdT1yLmxlbmd0aDtpZihmIT09dW5kZWZpbmVkKXtmPVN0cmluZyhmKS50b0xvd2VyQ2FzZSgpO2lmKGY9PT1cInVjczJcInx8Zj09PVwidWNzLTJcInx8Zj09PVwidXRmMTZsZVwifHxmPT09XCJ1dGYtMTZsZVwiKXtpZihlLmxlbmd0aDwyfHxyLmxlbmd0aDwyKXtyZXR1cm4tMX1pPTI7by89Mjt1Lz0yO3QvPTJ9fWZ1bmN0aW9uIHJlYWQoZSxyKXtpZihpPT09MSl7cmV0dXJuIGVbcl19ZWxzZXtyZXR1cm4gZS5yZWFkVUludDE2QkUocippKX19dmFyIGE7aWYobil7dmFyIHM9LTE7Zm9yKGE9dDthPG87YSsrKXtpZihyZWFkKGUsYSk9PT1yZWFkKHIscz09PS0xPzA6YS1zKSl7aWYocz09PS0xKXM9YTtpZihhLXMrMT09PXUpcmV0dXJuIHMqaX1lbHNle2lmKHMhPT0tMSlhLT1hLXM7cz0tMX19fWVsc2V7aWYodCt1Pm8pdD1vLXU7Zm9yKGE9dDthPj0wO2EtLSl7dmFyIGg9dHJ1ZTtmb3IodmFyIGM9MDtjPHU7YysrKXtpZihyZWFkKGUsYStjKSE9PXJlYWQocixjKSl7aD1mYWxzZTticmVha319aWYoaClyZXR1cm4gYX19cmV0dXJuLTF9QnVmZmVyLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbiBpbmNsdWRlcyhlLHIsdCl7cmV0dXJuIHRoaXMuaW5kZXhPZihlLHIsdCkhPT0tMX07QnVmZmVyLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uIGluZGV4T2YoZSxyLHQpe3JldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLGUscix0LHRydWUpfTtCdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uIGxhc3RJbmRleE9mKGUscix0KXtyZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcyxlLHIsdCxmYWxzZSl9O2Z1bmN0aW9uIGhleFdyaXRlKGUscix0LGYpe3Q9TnVtYmVyKHQpfHwwO3ZhciBuPWUubGVuZ3RoLXQ7aWYoIWYpe2Y9bn1lbHNle2Y9TnVtYmVyKGYpO2lmKGY+bil7Zj1ufX12YXIgaT1yLmxlbmd0aDtpZihmPmkvMil7Zj1pLzJ9Zm9yKHZhciBvPTA7bzxmOysrbyl7dmFyIHU9cGFyc2VJbnQoci5zdWJzdHIobyoyLDIpLDE2KTtpZihudW1iZXJJc05hTih1KSlyZXR1cm4gbztlW3Qrb109dX1yZXR1cm4gb31mdW5jdGlvbiB1dGY4V3JpdGUoZSxyLHQsZil7cmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMocixlLmxlbmd0aC10KSxlLHQsZil9ZnVuY3Rpb24gYXNjaWlXcml0ZShlLHIsdCxmKXtyZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMociksZSx0LGYpfWZ1bmN0aW9uIGxhdGluMVdyaXRlKGUscix0LGYpe3JldHVybiBhc2NpaVdyaXRlKGUscix0LGYpfWZ1bmN0aW9uIGJhc2U2NFdyaXRlKGUscix0LGYpe3JldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMociksZSx0LGYpfWZ1bmN0aW9uIHVjczJXcml0ZShlLHIsdCxmKXtyZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhyLGUubGVuZ3RoLXQpLGUsdCxmKX1CdWZmZXIucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uIHdyaXRlKGUscix0LGYpe2lmKHI9PT11bmRlZmluZWQpe2Y9XCJ1dGY4XCI7dD10aGlzLmxlbmd0aDtyPTB9ZWxzZSBpZih0PT09dW5kZWZpbmVkJiZ0eXBlb2Ygcj09PVwic3RyaW5nXCIpe2Y9cjt0PXRoaXMubGVuZ3RoO3I9MH1lbHNlIGlmKGlzRmluaXRlKHIpKXtyPXI+Pj4wO2lmKGlzRmluaXRlKHQpKXt0PXQ+Pj4wO2lmKGY9PT11bmRlZmluZWQpZj1cInV0ZjhcIn1lbHNle2Y9dDt0PXVuZGVmaW5lZH19ZWxzZXt0aHJvdyBuZXcgRXJyb3IoXCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZFwiKX12YXIgbj10aGlzLmxlbmd0aC1yO2lmKHQ9PT11bmRlZmluZWR8fHQ+bil0PW47aWYoZS5sZW5ndGg+MCYmKHQ8MHx8cjwwKXx8cj50aGlzLmxlbmd0aCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kc1wiKX1pZighZilmPVwidXRmOFwiO3ZhciBpPWZhbHNlO2Zvcig7Oyl7c3dpdGNoKGYpe2Nhc2VcImhleFwiOnJldHVybiBoZXhXcml0ZSh0aGlzLGUscix0KTtjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpyZXR1cm4gdXRmOFdyaXRlKHRoaXMsZSxyLHQpO2Nhc2VcImFzY2lpXCI6cmV0dXJuIGFzY2lpV3JpdGUodGhpcyxlLHIsdCk7Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIGxhdGluMVdyaXRlKHRoaXMsZSxyLHQpO2Nhc2VcImJhc2U2NFwiOnJldHVybiBiYXNlNjRXcml0ZSh0aGlzLGUscix0KTtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gdWNzMldyaXRlKHRoaXMsZSxyLHQpO2RlZmF1bHQ6aWYoaSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrZik7Zj0oXCJcIitmKS50b0xvd2VyQ2FzZSgpO2k9dHJ1ZX19fTtCdWZmZXIucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbiB0b0pTT04oKXtyZXR1cm57dHlwZTpcIkJ1ZmZlclwiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07ZnVuY3Rpb24gYmFzZTY0U2xpY2UoZSxyLHQpe2lmKHI9PT0wJiZ0PT09ZS5sZW5ndGgpe3JldHVybiBmLmZyb21CeXRlQXJyYXkoZSl9ZWxzZXtyZXR1cm4gZi5mcm9tQnl0ZUFycmF5KGUuc2xpY2Uocix0KSl9fWZ1bmN0aW9uIHV0ZjhTbGljZShlLHIsdCl7dD1NYXRoLm1pbihlLmxlbmd0aCx0KTt2YXIgZj1bXTt2YXIgbj1yO3doaWxlKG48dCl7dmFyIGk9ZVtuXTt2YXIgbz1udWxsO3ZhciB1PWk+MjM5PzQ6aT4yMjM/MzppPjE5MT8yOjE7aWYobit1PD10KXt2YXIgYSxzLGgsYztzd2l0Y2godSl7Y2FzZSAxOmlmKGk8MTI4KXtvPWl9YnJlYWs7Y2FzZSAyOmE9ZVtuKzFdO2lmKChhJjE5Mik9PT0xMjgpe2M9KGkmMzEpPDw2fGEmNjM7aWYoYz4xMjcpe289Y319YnJlYWs7Y2FzZSAzOmE9ZVtuKzFdO3M9ZVtuKzJdO2lmKChhJjE5Mik9PT0xMjgmJihzJjE5Mik9PT0xMjgpe2M9KGkmMTUpPDwxMnwoYSY2Myk8PDZ8cyY2MztpZihjPjIwNDcmJihjPDU1Mjk2fHxjPjU3MzQzKSl7bz1jfX1icmVhaztjYXNlIDQ6YT1lW24rMV07cz1lW24rMl07aD1lW24rM107aWYoKGEmMTkyKT09PTEyOCYmKHMmMTkyKT09PTEyOCYmKGgmMTkyKT09PTEyOCl7Yz0oaSYxNSk8PDE4fChhJjYzKTw8MTJ8KHMmNjMpPDw2fGgmNjM7aWYoYz42NTUzNSYmYzwxMTE0MTEyKXtvPWN9fX19aWYobz09PW51bGwpe289NjU1MzM7dT0xfWVsc2UgaWYobz42NTUzNSl7by09NjU1MzY7Zi5wdXNoKG8+Pj4xMCYxMDIzfDU1Mjk2KTtvPTU2MzIwfG8mMTAyM31mLnB1c2gobyk7bis9dX1yZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KGYpfXZhciB1PTQwOTY7ZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5KGUpe3ZhciByPWUubGVuZ3RoO2lmKHI8PXUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKX12YXIgdD1cIlwiO3ZhciBmPTA7d2hpbGUoZjxyKXt0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlLnNsaWNlKGYsZis9dSkpfXJldHVybiB0fWZ1bmN0aW9uIGFzY2lpU2xpY2UoZSxyLHQpe3ZhciBmPVwiXCI7dD1NYXRoLm1pbihlLmxlbmd0aCx0KTtmb3IodmFyIG49cjtuPHQ7KytuKXtmKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbbl0mMTI3KX1yZXR1cm4gZn1mdW5jdGlvbiBsYXRpbjFTbGljZShlLHIsdCl7dmFyIGY9XCJcIjt0PU1hdGgubWluKGUubGVuZ3RoLHQpO2Zvcih2YXIgbj1yO248dDsrK24pe2YrPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtuXSl9cmV0dXJuIGZ9ZnVuY3Rpb24gaGV4U2xpY2UoZSxyLHQpe3ZhciBmPWUubGVuZ3RoO2lmKCFyfHxyPDApcj0wO2lmKCF0fHx0PDB8fHQ+Zil0PWY7dmFyIG49XCJcIjtmb3IodmFyIGk9cjtpPHQ7KytpKXtuKz1zW2VbaV1dfXJldHVybiBufWZ1bmN0aW9uIHV0ZjE2bGVTbGljZShlLHIsdCl7dmFyIGY9ZS5zbGljZShyLHQpO3ZhciBuPVwiXCI7Zm9yKHZhciBpPTA7aTxmLmxlbmd0aDtpKz0yKXtuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGZbaV0rZltpKzFdKjI1Nil9cmV0dXJuIG59QnVmZmVyLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbiBzbGljZShlLHIpe3ZhciB0PXRoaXMubGVuZ3RoO2U9fn5lO3I9cj09PXVuZGVmaW5lZD90On5+cjtpZihlPDApe2UrPXQ7aWYoZTwwKWU9MH1lbHNlIGlmKGU+dCl7ZT10fWlmKHI8MCl7cis9dDtpZihyPDApcj0wfWVsc2UgaWYocj50KXtyPXR9aWYocjxlKXI9ZTt2YXIgZj10aGlzLnN1YmFycmF5KGUscik7T2JqZWN0LnNldFByb3RvdHlwZU9mKGYsQnVmZmVyLnByb3RvdHlwZSk7cmV0dXJuIGZ9O2Z1bmN0aW9uIGNoZWNrT2Zmc2V0KGUscix0KXtpZihlJTEhPT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvZmZzZXQgaXMgbm90IHVpbnRcIik7aWYoZStyPnQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoXCIpfUJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbiByZWFkVUludExFKGUscix0KXtlPWU+Pj4wO3I9cj4+PjA7aWYoIXQpY2hlY2tPZmZzZXQoZSxyLHRoaXMubGVuZ3RoKTt2YXIgZj10aGlzW2VdO3ZhciBuPTE7dmFyIGk9MDt3aGlsZSgrK2k8ciYmKG4qPTI1Nikpe2YrPXRoaXNbZStpXSpufXJldHVybiBmfTtCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24gcmVhZFVJbnRCRShlLHIsdCl7ZT1lPj4+MDtyPXI+Pj4wO2lmKCF0KXtjaGVja09mZnNldChlLHIsdGhpcy5sZW5ndGgpfXZhciBmPXRoaXNbZSstLXJdO3ZhciBuPTE7d2hpbGUocj4wJiYobio9MjU2KSl7Zis9dGhpc1tlKy0tcl0qbn1yZXR1cm4gZn07QnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24gcmVhZFVJbnQ4KGUscil7ZT1lPj4+MDtpZighciljaGVja09mZnNldChlLDEsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2VdfTtCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbiByZWFkVUludDE2TEUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsMix0aGlzLmxlbmd0aCk7cmV0dXJuIHRoaXNbZV18dGhpc1tlKzFdPDw4fTtCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbiByZWFkVUludDE2QkUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsMix0aGlzLmxlbmd0aCk7cmV0dXJuIHRoaXNbZV08PDh8dGhpc1tlKzFdfTtCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbiByZWFkVUludDMyTEUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsNCx0aGlzLmxlbmd0aCk7cmV0dXJuKHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTYpK3RoaXNbZSszXSoxNjc3NzIxNn07QnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGUscil7ZT1lPj4+MDtpZighciljaGVja09mZnNldChlLDQsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2VdKjE2Nzc3MjE2Kyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfTtCdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbiByZWFkSW50TEUoZSxyLHQpe2U9ZT4+PjA7cj1yPj4+MDtpZighdCljaGVja09mZnNldChlLHIsdGhpcy5sZW5ndGgpO3ZhciBmPXRoaXNbZV07dmFyIG49MTt2YXIgaT0wO3doaWxlKCsraTxyJiYobio9MjU2KSl7Zis9dGhpc1tlK2ldKm59bio9MTI4O2lmKGY+PW4pZi09TWF0aC5wb3coMiw4KnIpO3JldHVybiBmfTtCdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbiByZWFkSW50QkUoZSxyLHQpe2U9ZT4+PjA7cj1yPj4+MDtpZighdCljaGVja09mZnNldChlLHIsdGhpcy5sZW5ndGgpO3ZhciBmPXI7dmFyIG49MTt2YXIgaT10aGlzW2UrLS1mXTt3aGlsZShmPjAmJihuKj0yNTYpKXtpKz10aGlzW2UrLS1mXSpufW4qPTEyODtpZihpPj1uKWktPU1hdGgucG93KDIsOCpyKTtyZXR1cm4gaX07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbiByZWFkSW50OChlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSwxLHRoaXMubGVuZ3RoKTtpZighKHRoaXNbZV0mMTI4KSlyZXR1cm4gdGhpc1tlXTtyZXR1cm4oMjU1LXRoaXNbZV0rMSkqLTF9O0J1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24gcmVhZEludDE2TEUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsMix0aGlzLmxlbmd0aCk7dmFyIHQ9dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIHQmMzI3Njg/dHw0Mjk0OTAxNzYwOnR9O0J1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24gcmVhZEludDE2QkUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsMix0aGlzLmxlbmd0aCk7dmFyIHQ9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIHQmMzI3Njg/dHw0Mjk0OTAxNzYwOnR9O0J1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24gcmVhZEludDMyTEUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsNCx0aGlzLmxlbmd0aCk7cmV0dXJuIHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbiByZWFkSW50MzJCRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSw0LHRoaXMubGVuZ3RoKTtyZXR1cm4gdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfTtCdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uIHJlYWRGbG9hdExFKGUscil7ZT1lPj4+MDtpZighciljaGVja09mZnNldChlLDQsdGhpcy5sZW5ndGgpO3JldHVybiBuLnJlYWQodGhpcyxlLHRydWUsMjMsNCl9O0J1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24gcmVhZEZsb2F0QkUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsNCx0aGlzLmxlbmd0aCk7cmV0dXJuIG4ucmVhZCh0aGlzLGUsZmFsc2UsMjMsNCl9O0J1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uIHJlYWREb3VibGVMRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSw4LHRoaXMubGVuZ3RoKTtyZXR1cm4gbi5yZWFkKHRoaXMsZSx0cnVlLDUyLDgpfTtCdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbiByZWFkRG91YmxlQkUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsOCx0aGlzLmxlbmd0aCk7cmV0dXJuIG4ucmVhZCh0aGlzLGUsZmFsc2UsNTIsOCl9O2Z1bmN0aW9uIGNoZWNrSW50KGUscix0LGYsbixpKXtpZighQnVmZmVyLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKHI+bnx8cjxpKXRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHQrZj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKX1CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uIHdyaXRlVUludExFKGUscix0LGYpe2U9K2U7cj1yPj4+MDt0PXQ+Pj4wO2lmKCFmKXt2YXIgbj1NYXRoLnBvdygyLDgqdCktMTtjaGVja0ludCh0aGlzLGUscix0LG4sMCl9dmFyIGk9MTt2YXIgbz0wO3RoaXNbcl09ZSYyNTU7d2hpbGUoKytvPHQmJihpKj0yNTYpKXt0aGlzW3Irb109ZS9pJjI1NX1yZXR1cm4gcit0fTtCdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uIHdyaXRlVUludEJFKGUscix0LGYpe2U9K2U7cj1yPj4+MDt0PXQ+Pj4wO2lmKCFmKXt2YXIgbj1NYXRoLnBvdygyLDgqdCktMTtjaGVja0ludCh0aGlzLGUscix0LG4sMCl9dmFyIGk9dC0xO3ZhciBvPTE7dGhpc1tyK2ldPWUmMjU1O3doaWxlKC0taT49MCYmKG8qPTI1Nikpe3RoaXNbcitpXT1lL28mMjU1fXJldHVybiByK3R9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbiB3cml0ZVVJbnQ4KGUscix0KXtlPStlO3I9cj4+PjA7aWYoIXQpY2hlY2tJbnQodGhpcyxlLHIsMSwyNTUsMCk7dGhpc1tyXT1lJjI1NTtyZXR1cm4gcisxfTtCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24gd3JpdGVVSW50MTZMRShlLHIsdCl7ZT0rZTtyPXI+Pj4wO2lmKCF0KWNoZWNrSW50KHRoaXMsZSxyLDIsNjU1MzUsMCk7dGhpc1tyXT1lJjI1NTt0aGlzW3IrMV09ZT4+Pjg7cmV0dXJuIHIrMn07QnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uIHdyaXRlVUludDE2QkUoZSxyLHQpe2U9K2U7cj1yPj4+MDtpZighdCljaGVja0ludCh0aGlzLGUsciwyLDY1NTM1LDApO3RoaXNbcl09ZT4+Pjg7dGhpc1tyKzFdPWUmMjU1O3JldHVybiByKzJ9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbiB3cml0ZVVJbnQzMkxFKGUscix0KXtlPStlO3I9cj4+PjA7aWYoIXQpY2hlY2tJbnQodGhpcyxlLHIsNCw0Mjk0OTY3Mjk1LDApO3RoaXNbciszXT1lPj4+MjQ7dGhpc1tyKzJdPWU+Pj4xNjt0aGlzW3IrMV09ZT4+Pjg7dGhpc1tyXT1lJjI1NTtyZXR1cm4gcis0fTtCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24gd3JpdGVVSW50MzJCRShlLHIsdCl7ZT0rZTtyPXI+Pj4wO2lmKCF0KWNoZWNrSW50KHRoaXMsZSxyLDQsNDI5NDk2NzI5NSwwKTt0aGlzW3JdPWU+Pj4yNDt0aGlzW3IrMV09ZT4+PjE2O3RoaXNbcisyXT1lPj4+ODt0aGlzW3IrM109ZSYyNTU7cmV0dXJuIHIrNH07QnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uIHdyaXRlSW50TEUoZSxyLHQsZil7ZT0rZTtyPXI+Pj4wO2lmKCFmKXt2YXIgbj1NYXRoLnBvdygyLDgqdC0xKTtjaGVja0ludCh0aGlzLGUscix0LG4tMSwtbil9dmFyIGk9MDt2YXIgbz0xO3ZhciB1PTA7dGhpc1tyXT1lJjI1NTt3aGlsZSgrK2k8dCYmKG8qPTI1Nikpe2lmKGU8MCYmdT09PTAmJnRoaXNbcitpLTFdIT09MCl7dT0xfXRoaXNbcitpXT0oZS9vPj4wKS11JjI1NX1yZXR1cm4gcit0fTtCdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24gd3JpdGVJbnRCRShlLHIsdCxmKXtlPStlO3I9cj4+PjA7aWYoIWYpe3ZhciBuPU1hdGgucG93KDIsOCp0LTEpO2NoZWNrSW50KHRoaXMsZSxyLHQsbi0xLC1uKX12YXIgaT10LTE7dmFyIG89MTt2YXIgdT0wO3RoaXNbcitpXT1lJjI1NTt3aGlsZSgtLWk+PTAmJihvKj0yNTYpKXtpZihlPDAmJnU9PT0wJiZ0aGlzW3IraSsxXSE9PTApe3U9MX10aGlzW3IraV09KGUvbz4+MCktdSYyNTV9cmV0dXJuIHIrdH07QnVmZmVyLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24gd3JpdGVJbnQ4KGUscix0KXtlPStlO3I9cj4+PjA7aWYoIXQpY2hlY2tJbnQodGhpcyxlLHIsMSwxMjcsLTEyOCk7aWYoZTwwKWU9MjU1K2UrMTt0aGlzW3JdPWUmMjU1O3JldHVybiByKzF9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uIHdyaXRlSW50MTZMRShlLHIsdCl7ZT0rZTtyPXI+Pj4wO2lmKCF0KWNoZWNrSW50KHRoaXMsZSxyLDIsMzI3NjcsLTMyNzY4KTt0aGlzW3JdPWUmMjU1O3RoaXNbcisxXT1lPj4+ODtyZXR1cm4gcisyfTtCdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbiB3cml0ZUludDE2QkUoZSxyLHQpe2U9K2U7cj1yPj4+MDtpZighdCljaGVja0ludCh0aGlzLGUsciwyLDMyNzY3LC0zMjc2OCk7dGhpc1tyXT1lPj4+ODt0aGlzW3IrMV09ZSYyNTU7cmV0dXJuIHIrMn07QnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEU9ZnVuY3Rpb24gd3JpdGVJbnQzMkxFKGUscix0KXtlPStlO3I9cj4+PjA7aWYoIXQpY2hlY2tJbnQodGhpcyxlLHIsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KTt0aGlzW3JdPWUmMjU1O3RoaXNbcisxXT1lPj4+ODt0aGlzW3IrMl09ZT4+PjE2O3RoaXNbciszXT1lPj4+MjQ7cmV0dXJuIHIrNH07QnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24gd3JpdGVJbnQzMkJFKGUscix0KXtlPStlO3I9cj4+PjA7aWYoIXQpY2hlY2tJbnQodGhpcyxlLHIsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KTtpZihlPDApZT00Mjk0OTY3Mjk1K2UrMTt0aGlzW3JdPWU+Pj4yNDt0aGlzW3IrMV09ZT4+PjE2O3RoaXNbcisyXT1lPj4+ODt0aGlzW3IrM109ZSYyNTU7cmV0dXJuIHIrNH07ZnVuY3Rpb24gY2hlY2tJRUVFNzU0KGUscix0LGYsbixpKXtpZih0K2Y+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIik7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW5kZXggb3V0IG9mIHJhbmdlXCIpfWZ1bmN0aW9uIHdyaXRlRmxvYXQoZSxyLHQsZixpKXtyPStyO3Q9dD4+PjA7aWYoIWkpe2NoZWNrSUVFRTc1NChlLHIsdCw0LDM0MDI4MjM0NjYzODUyODg2ZTIyLC0zNDAyODIzNDY2Mzg1Mjg4NmUyMil9bi53cml0ZShlLHIsdCxmLDIzLDQpO3JldHVybiB0KzR9QnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24gd3JpdGVGbG9hdExFKGUscix0KXtyZXR1cm4gd3JpdGVGbG9hdCh0aGlzLGUscix0cnVlLHQpfTtCdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbiB3cml0ZUZsb2F0QkUoZSxyLHQpe3JldHVybiB3cml0ZUZsb2F0KHRoaXMsZSxyLGZhbHNlLHQpfTtmdW5jdGlvbiB3cml0ZURvdWJsZShlLHIsdCxmLGkpe3I9K3I7dD10Pj4+MDtpZighaSl7Y2hlY2tJRUVFNzU0KGUscix0LDgsMTc5NzY5MzEzNDg2MjMxNTdlMjkyLC0xNzk3NjkzMTM0ODYyMzE1N2UyOTIpfW4ud3JpdGUoZSxyLHQsZiw1Miw4KTtyZXR1cm4gdCs4fUJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbiB3cml0ZURvdWJsZUxFKGUscix0KXtyZXR1cm4gd3JpdGVEb3VibGUodGhpcyxlLHIsdHJ1ZSx0KX07QnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uIHdyaXRlRG91YmxlQkUoZSxyLHQpe3JldHVybiB3cml0ZURvdWJsZSh0aGlzLGUscixmYWxzZSx0KX07QnVmZmVyLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uIGNvcHkoZSxyLHQsZil7aWYoIUJ1ZmZlci5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVmZmVyXCIpO2lmKCF0KXQ9MDtpZighZiYmZiE9PTApZj10aGlzLmxlbmd0aDtpZihyPj1lLmxlbmd0aClyPWUubGVuZ3RoO2lmKCFyKXI9MDtpZihmPjAmJmY8dClmPXQ7aWYoZj09PXQpcmV0dXJuIDA7aWYoZS5sZW5ndGg9PT0wfHx0aGlzLmxlbmd0aD09PTApcmV0dXJuIDA7aWYocjwwKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHNcIil9aWYodDwwfHx0Pj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKTtpZihmPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kc1wiKTtpZihmPnRoaXMubGVuZ3RoKWY9dGhpcy5sZW5ndGg7aWYoZS5sZW5ndGgtcjxmLXQpe2Y9ZS5sZW5ndGgtcit0fXZhciBuPWYtdDtpZih0aGlzPT09ZSYmdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW49PT1cImZ1bmN0aW9uXCIpe3RoaXMuY29weVdpdGhpbihyLHQsZil9ZWxzZSBpZih0aGlzPT09ZSYmdDxyJiZyPGYpe2Zvcih2YXIgaT1uLTE7aT49MDstLWkpe2VbaStyXT10aGlzW2krdF19fWVsc2V7VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KHQsZikscil9cmV0dXJuIG59O0J1ZmZlci5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbiBmaWxsKGUscix0LGYpe2lmKHR5cGVvZiBlPT09XCJzdHJpbmdcIil7aWYodHlwZW9mIHI9PT1cInN0cmluZ1wiKXtmPXI7cj0wO3Q9dGhpcy5sZW5ndGh9ZWxzZSBpZih0eXBlb2YgdD09PVwic3RyaW5nXCIpe2Y9dDt0PXRoaXMubGVuZ3RofWlmKGYhPT11bmRlZmluZWQmJnR5cGVvZiBmIT09XCJzdHJpbmdcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmdcIil9aWYodHlwZW9mIGY9PT1cInN0cmluZ1wiJiYhQnVmZmVyLmlzRW5jb2RpbmcoZikpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIitmKX1pZihlLmxlbmd0aD09PTEpe3ZhciBuPWUuY2hhckNvZGVBdCgwKTtpZihmPT09XCJ1dGY4XCImJm48MTI4fHxmPT09XCJsYXRpbjFcIil7ZT1ufX19ZWxzZSBpZih0eXBlb2YgZT09PVwibnVtYmVyXCIpe2U9ZSYyNTV9ZWxzZSBpZih0eXBlb2YgZT09PVwiYm9vbGVhblwiKXtlPU51bWJlcihlKX1pZihyPDB8fHRoaXMubGVuZ3RoPHJ8fHRoaXMubGVuZ3RoPHQpe3Rocm93IG5ldyBSYW5nZUVycm9yKFwiT3V0IG9mIHJhbmdlIGluZGV4XCIpfWlmKHQ8PXIpe3JldHVybiB0aGlzfXI9cj4+PjA7dD10PT09dW5kZWZpbmVkP3RoaXMubGVuZ3RoOnQ+Pj4wO2lmKCFlKWU9MDt2YXIgaTtpZih0eXBlb2YgZT09PVwibnVtYmVyXCIpe2ZvcihpPXI7aTx0OysraSl7dGhpc1tpXT1lfX1lbHNle3ZhciBvPUJ1ZmZlci5pc0J1ZmZlcihlKT9lOkJ1ZmZlci5mcm9tKGUsZik7dmFyIHU9by5sZW5ndGg7aWYodT09PTApe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSBcIicrZSsnXCIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgXCJ2YWx1ZVwiJyl9Zm9yKGk9MDtpPHQtcjsrK2kpe3RoaXNbaStyXT1vW2kldV19fXJldHVybiB0aGlzfTt2YXIgYT0vW14rLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIGJhc2U2NGNsZWFuKGUpe2U9ZS5zcGxpdChcIj1cIilbMF07ZT1lLnRyaW0oKS5yZXBsYWNlKGEsXCJcIik7aWYoZS5sZW5ndGg8MilyZXR1cm5cIlwiO3doaWxlKGUubGVuZ3RoJTQhPT0wKXtlPWUrXCI9XCJ9cmV0dXJuIGV9ZnVuY3Rpb24gdXRmOFRvQnl0ZXMoZSxyKXtyPXJ8fEluZmluaXR5O3ZhciB0O3ZhciBmPWUubGVuZ3RoO3ZhciBuPW51bGw7dmFyIGk9W107Zm9yKHZhciBvPTA7bzxmOysrbyl7dD1lLmNoYXJDb2RlQXQobyk7aWYodD41NTI5NSYmdDw1NzM0NCl7aWYoIW4pe2lmKHQ+NTYzMTkpe2lmKChyLT0zKT4tMSlpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWVsc2UgaWYobysxPT09Zil7aWYoKHItPTMpPi0xKWkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9bj10O2NvbnRpbnVlfWlmKHQ8NTYzMjApe2lmKChyLT0zKT4tMSlpLnB1c2goMjM5LDE5MSwxODkpO249dDtjb250aW51ZX10PShuLTU1Mjk2PDwxMHx0LTU2MzIwKSs2NTUzNn1lbHNlIGlmKG4pe2lmKChyLT0zKT4tMSlpLnB1c2goMjM5LDE5MSwxODkpfW49bnVsbDtpZih0PDEyOCl7aWYoKHItPTEpPDApYnJlYWs7aS5wdXNoKHQpfWVsc2UgaWYodDwyMDQ4KXtpZigoci09Mik8MClicmVhaztpLnB1c2godD4+NnwxOTIsdCY2M3wxMjgpfWVsc2UgaWYodDw2NTUzNil7aWYoKHItPTMpPDApYnJlYWs7aS5wdXNoKHQ+PjEyfDIyNCx0Pj42JjYzfDEyOCx0JjYzfDEyOCl9ZWxzZSBpZih0PDExMTQxMTIpe2lmKChyLT00KTwwKWJyZWFrO2kucHVzaCh0Pj4xOHwyNDAsdD4+MTImNjN8MTI4LHQ+PjYmNjN8MTI4LHQmNjN8MTI4KX1lbHNle3Rocm93IG5ldyBFcnJvcihcIkludmFsaWQgY29kZSBwb2ludFwiKX19cmV0dXJuIGl9ZnVuY3Rpb24gYXNjaWlUb0J5dGVzKGUpe3ZhciByPVtdO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7Kyt0KXtyLnB1c2goZS5jaGFyQ29kZUF0KHQpJjI1NSl9cmV0dXJuIHJ9ZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMoZSxyKXt2YXIgdCxmLG47dmFyIGk9W107Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDsrK28pe2lmKChyLT0yKTwwKWJyZWFrO3Q9ZS5jaGFyQ29kZUF0KG8pO2Y9dD4+ODtuPXQlMjU2O2kucHVzaChuKTtpLnB1c2goZil9cmV0dXJuIGl9ZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyhlKXtyZXR1cm4gZi50b0J5dGVBcnJheShiYXNlNjRjbGVhbihlKSl9ZnVuY3Rpb24gYmxpdEJ1ZmZlcihlLHIsdCxmKXtmb3IodmFyIG49MDtuPGY7KytuKXtpZihuK3Q+PXIubGVuZ3RofHxuPj1lLmxlbmd0aClicmVhaztyW24rdF09ZVtuXX1yZXR1cm4gbn1mdW5jdGlvbiBpc0luc3RhbmNlKGUscil7cmV0dXJuIGUgaW5zdGFuY2VvZiByfHxlIT1udWxsJiZlLmNvbnN0cnVjdG9yIT1udWxsJiZlLmNvbnN0cnVjdG9yLm5hbWUhPW51bGwmJmUuY29uc3RydWN0b3IubmFtZT09PXIubmFtZX1mdW5jdGlvbiBudW1iZXJJc05hTihlKXtyZXR1cm4gZSE9PWV9dmFyIHM9ZnVuY3Rpb24oKXt2YXIgZT1cIjAxMjM0NTY3ODlhYmNkZWZcIjt2YXIgcj1uZXcgQXJyYXkoMjU2KTtmb3IodmFyIHQ9MDt0PDE2OysrdCl7dmFyIGY9dCoxNjtmb3IodmFyIG49MDtuPDE2Oysrbil7cltmK25dPWVbdF0rZVtuXX19cmV0dXJuIHJ9KCl9LDc4MzpmdW5jdGlvbihlLHIpe1xuLyohIGllZWU3NTQuIEJTRC0zLUNsYXVzZSBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi9cbnIucmVhZD1mdW5jdGlvbihlLHIsdCxmLG4pe3ZhciBpLG87dmFyIHU9bio4LWYtMTt2YXIgYT0oMTw8dSktMTt2YXIgcz1hPj4xO3ZhciBoPS03O3ZhciBjPXQ/bi0xOjA7dmFyIGw9dD8tMToxO3ZhciBwPWVbcitjXTtjKz1sO2k9cCYoMTw8LWgpLTE7cD4+PS1oO2grPXU7Zm9yKDtoPjA7aT1pKjI1NitlW3IrY10sYys9bCxoLT04KXt9bz1pJigxPDwtaCktMTtpPj49LWg7aCs9Zjtmb3IoO2g+MDtvPW8qMjU2K2VbcitjXSxjKz1sLGgtPTgpe31pZihpPT09MCl7aT0xLXN9ZWxzZSBpZihpPT09YSl7cmV0dXJuIG8/TmFOOihwPy0xOjEpKkluZmluaXR5fWVsc2V7bz1vK01hdGgucG93KDIsZik7aT1pLXN9cmV0dXJuKHA/LTE6MSkqbypNYXRoLnBvdygyLGktZil9O3Iud3JpdGU9ZnVuY3Rpb24oZSxyLHQsZixuLGkpe3ZhciBvLHUsYTt2YXIgcz1pKjgtbi0xO3ZhciBoPSgxPDxzKS0xO3ZhciBjPWg+PjE7dmFyIGw9bj09PTIzP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MDt2YXIgcD1mPzA6aS0xO3ZhciB5PWY/MTotMTt2YXIgZz1yPDB8fHI9PT0wJiYxL3I8MD8xOjA7cj1NYXRoLmFicyhyKTtpZihpc05hTihyKXx8cj09PUluZmluaXR5KXt1PWlzTmFOKHIpPzE6MDtvPWh9ZWxzZXtvPU1hdGguZmxvb3IoTWF0aC5sb2cocikvTWF0aC5MTjIpO2lmKHIqKGE9TWF0aC5wb3coMiwtbykpPDEpe28tLTthKj0yfWlmKG8rYz49MSl7cis9bC9hfWVsc2V7cis9bCpNYXRoLnBvdygyLDEtYyl9aWYociphPj0yKXtvKys7YS89Mn1pZihvK2M+PWgpe3U9MDtvPWh9ZWxzZSBpZihvK2M+PTEpe3U9KHIqYS0xKSpNYXRoLnBvdygyLG4pO289bytjfWVsc2V7dT1yKk1hdGgucG93KDIsYy0xKSpNYXRoLnBvdygyLG4pO289MH19Zm9yKDtuPj04O2VbdCtwXT11JjI1NSxwKz15LHUvPTI1NixuLT04KXt9bz1vPDxufHU7cys9bjtmb3IoO3M+MDtlW3QrcF09byYyNTUscCs9eSxvLz0yNTYscy09OCl7fWVbdCtwLXldfD1nKjEyOH19fTt2YXIgcj17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKHQpe3ZhciBmPXJbdF07aWYoZiE9PXVuZGVmaW5lZCl7cmV0dXJuIGYuZXhwb3J0c312YXIgbj1yW3RdPXtleHBvcnRzOnt9fTt2YXIgaT10cnVlO3RyeXtlW3RdKG4sbi5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO2k9ZmFsc2V9ZmluYWxseXtpZihpKWRlbGV0ZSByW3RdfXJldHVybiBuLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciB0PV9fbmNjd3Bja19yZXF1aXJlX18oNzIpO21vZHVsZS5leHBvcnRzPXR9KSgpOyJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/buffer/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/normalize-wheel/index.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/normalize-wheel/index.js ***!
|
||
\***********************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval(__webpack_require__.ts("module.exports = __webpack_require__(/*! ./src/normalizeWheel.js */ \"(app-pages-browser)/./node_modules/normalize-wheel/src/normalizeWheel.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUtd2hlZWwvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUEsK0lBQW1EIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxub3JtYWxpemUtd2hlZWxcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9zcmMvbm9ybWFsaXplV2hlZWwuanMnKTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/normalize-wheel/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/normalize-wheel/src/ExecutionEnvironment.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/normalize-wheel/src/ExecutionEnvironment.js ***!
|
||
\******************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n/*jslint evil: true */\n\n\n\nvar canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUtd2hlZWwvc3JjL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbm9ybWFsaXplLXdoZWVsXFxzcmNcXEV4ZWN1dGlvbkVudmlyb25tZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIEV4ZWN1dGlvbkVudmlyb25tZW50XG4gKi9cblxuLypqc2xpbnQgZXZpbDogdHJ1ZSAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYW5Vc2VET00gPSAhIShcbiAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgd2luZG93LmRvY3VtZW50ICYmXG4gIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50XG4pO1xuXG4vKipcbiAqIFNpbXBsZSwgbGlnaHR3ZWlnaHQgbW9kdWxlIGFzc2lzdGluZyB3aXRoIHRoZSBkZXRlY3Rpb24gYW5kIGNvbnRleHQgb2ZcbiAqIFdvcmtlci4gSGVscHMgYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGFuZCBhbGxvd3MgY29kZSB0byByZWFzb24gYWJvdXRcbiAqIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGluIGEgV29ya2VyLCBldmVuIGlmIHRoZXkgbmV2ZXIgaW5jbHVkZSB0aGUgbWFpblxuICogYFJlYWN0V29ya2VyYCBkZXBlbmRlbmN5LlxuICovXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSB7XG5cbiAgY2FuVXNlRE9NOiBjYW5Vc2VET00sXG5cbiAgY2FuVXNlV29ya2VyczogdHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcsXG5cbiAgY2FuVXNlRXZlbnRMaXN0ZW5lcnM6XG4gICAgY2FuVXNlRE9NICYmICEhKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIHx8IHdpbmRvdy5hdHRhY2hFdmVudCksXG5cbiAgY2FuVXNlVmlld3BvcnQ6IGNhblVzZURPTSAmJiAhIXdpbmRvdy5zY3JlZW4sXG5cbiAgaXNJbldvcmtlcjogIWNhblVzZURPTSAvLyBGb3Igbm93LCB0aGlzIGlzIHRydWUgLSBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudDtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/normalize-wheel/src/ExecutionEnvironment.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js ***!
|
||
\******************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval(__webpack_require__.ts("/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule UserAgent_DEPRECATED\n */\n\n/**\n * Provides entirely client-side User Agent and OS detection. You should prefer\n * the non-deprecated UserAgent module when possible, which exposes our\n * authoritative server-side PHP-based detection to the client.\n *\n * Usage is straightforward:\n *\n * if (UserAgent_DEPRECATED.ie()) {\n * // IE\n * }\n *\n * You can also do version checks:\n *\n * if (UserAgent_DEPRECATED.ie() >= 7) {\n * // IE7 or better\n * }\n *\n * The browser functions will return NaN if the browser does not match, so\n * you can also do version compares the other way:\n *\n * if (UserAgent_DEPRECATED.ie() < 7) {\n * // IE6 or worse\n * }\n *\n * Note that the version is a float and may include a minor version number,\n * so you should always use range operators to perform comparisons, not\n * strict equality.\n *\n * **Note:** You should **strongly** prefer capability detection to browser\n * version detection where it's reasonable:\n *\n * http://www.quirksmode.org/js/support.html\n *\n * Further, we have a large number of mature wrapper functions and classes\n * which abstract away many browser irregularities. Check the documentation,\n * grep for things, or ask on javascript@lists.facebook.com before writing yet\n * another copy of \"event || window.event\".\n *\n */\n\nvar _populated = false;\n\n// Browsers\nvar _ie, _firefox, _opera, _webkit, _chrome;\n\n// Actual IE browser for compatibility mode\nvar _ie_real_version;\n\n// Platforms\nvar _osx, _windows, _linux, _android;\n\n// Architectures\nvar _win64;\n\n// Devices\nvar _iphone, _ipad, _native;\n\nvar _mobile;\n\nfunction _populate() {\n if (_populated) {\n return;\n }\n\n _populated = true;\n\n // To work around buggy JS libraries that can't handle multi-digit\n // version numbers, Opera 10's user agent string claims it's Opera\n // 9, then later includes a Version/X.Y field:\n //\n // Opera/9.80 (foo) Presto/2.2.15 Version/10.10\n var uas = navigator.userAgent;\n var agent = /(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(uas);\n var os = /(Mac OS X)|(Windows)|(Linux)/.exec(uas);\n\n _iphone = /\\b(iPhone|iP[ao]d)/.exec(uas);\n _ipad = /\\b(iP[ao]d)/.exec(uas);\n _android = /Android/i.exec(uas);\n _native = /FBAN\\/\\w+;/i.exec(uas);\n _mobile = /Mobile/i.exec(uas);\n\n // Note that the IE team blog would have you believe you should be checking\n // for 'Win64; x64'. But MSDN then reveals that you can actually be coming\n // from either x64 or ia64; so ultimately, you should just check for Win64\n // as in indicator of whether you're in 64-bit IE. 32-bit IE on 64-bit\n // Windows will send 'WOW64' instead.\n _win64 = !!(/Win64/.exec(uas));\n\n if (agent) {\n _ie = agent[1] ? parseFloat(agent[1]) : (\n agent[5] ? parseFloat(agent[5]) : NaN);\n // IE compatibility mode\n if (_ie && document && document.documentMode) {\n _ie = document.documentMode;\n }\n // grab the \"true\" ie version from the trident token if available\n var trident = /(?:Trident\\/(\\d+.\\d+))/.exec(uas);\n _ie_real_version = trident ? parseFloat(trident[1]) + 4 : _ie;\n\n _firefox = agent[2] ? parseFloat(agent[2]) : NaN;\n _opera = agent[3] ? parseFloat(agent[3]) : NaN;\n _webkit = agent[4] ? parseFloat(agent[4]) : NaN;\n if (_webkit) {\n // We do not add the regexp to the above test, because it will always\n // match 'safari' only since 'AppleWebKit' appears before 'Chrome' in\n // the userAgent string.\n agent = /(?:Chrome\\/(\\d+\\.\\d+))/.exec(uas);\n _chrome = agent && agent[1] ? parseFloat(agent[1]) : NaN;\n } else {\n _chrome = NaN;\n }\n } else {\n _ie = _firefox = _opera = _chrome = _webkit = NaN;\n }\n\n if (os) {\n if (os[1]) {\n // Detect OS X version. If no version number matches, set _osx to true.\n // Version examples: 10, 10_6_1, 10.7\n // Parses version number as a float, taking only first two sets of\n // digits. If only one set of digits is found, returns just the major\n // version number.\n var ver = /(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(uas);\n\n _osx = ver ? parseFloat(ver[1].replace('_', '.')) : true;\n } else {\n _osx = false;\n }\n _windows = !!os[2];\n _linux = !!os[3];\n } else {\n _osx = _windows = _linux = false;\n }\n}\n\nvar UserAgent_DEPRECATED = {\n\n /**\n * Check if the UA is Internet Explorer.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n ie: function() {\n return _populate() || _ie;\n },\n\n /**\n * Check if we're in Internet Explorer compatibility mode.\n *\n * @return bool true if in compatibility mode, false if\n * not compatibility mode or not ie\n */\n ieCompatibilityMode: function() {\n return _populate() || (_ie_real_version > _ie);\n },\n\n\n /**\n * Whether the browser is 64-bit IE. Really, this is kind of weak sauce; we\n * only need this because Skype can't handle 64-bit IE yet. We need to remove\n * this when we don't need it -- tracked by #601957.\n */\n ie64: function() {\n return UserAgent_DEPRECATED.ie() && _win64;\n },\n\n /**\n * Check if the UA is Firefox.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n firefox: function() {\n return _populate() || _firefox;\n },\n\n\n /**\n * Check if the UA is Opera.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n opera: function() {\n return _populate() || _opera;\n },\n\n\n /**\n * Check if the UA is WebKit.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n webkit: function() {\n return _populate() || _webkit;\n },\n\n /**\n * For Push\n * WILL BE REMOVED VERY SOON. Use UserAgent_DEPRECATED.webkit\n */\n safari: function() {\n return UserAgent_DEPRECATED.webkit();\n },\n\n /**\n * Check if the UA is a Chrome browser.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n chrome : function() {\n return _populate() || _chrome;\n },\n\n\n /**\n * Check if the user is running Windows.\n *\n * @return bool `true' if the user's OS is Windows.\n */\n windows: function() {\n return _populate() || _windows;\n },\n\n\n /**\n * Check if the user is running Mac OS X.\n *\n * @return float|bool Returns a float if a version number is detected,\n * otherwise true/false.\n */\n osx: function() {\n return _populate() || _osx;\n },\n\n /**\n * Check if the user is running Linux.\n *\n * @return bool `true' if the user's OS is some flavor of Linux.\n */\n linux: function() {\n return _populate() || _linux;\n },\n\n /**\n * Check if the user is running on an iPhone or iPod platform.\n *\n * @return bool `true' if the user is running some flavor of the\n * iPhone OS.\n */\n iphone: function() {\n return _populate() || _iphone;\n },\n\n mobile: function() {\n return _populate() || (_iphone || _ipad || _android || _mobile);\n },\n\n nativeApp: function() {\n // webviews inside of the native apps\n return _populate() || _native;\n },\n\n android: function() {\n return _populate() || _android;\n },\n\n ipad: function() {\n return _populate() || _ipad;\n }\n};\n\nmodule.exports = UserAgent_DEPRECATED;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUtd2hlZWwvc3JjL1VzZXJBZ2VudF9ERVBSRUNBVEVELmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBLGlCQUFpQjtBQUNqQiwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0EsNkVBQTZFO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbm9ybWFsaXplLXdoZWVsXFxzcmNcXFVzZXJBZ2VudF9ERVBSRUNBVEVELmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IDIwMDQtcHJlc2VudCBGYWNlYm9vay4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBAcHJvdmlkZXNNb2R1bGUgVXNlckFnZW50X0RFUFJFQ0FURURcbiAqL1xuXG4vKipcbiAqICBQcm92aWRlcyBlbnRpcmVseSBjbGllbnQtc2lkZSBVc2VyIEFnZW50IGFuZCBPUyBkZXRlY3Rpb24uIFlvdSBzaG91bGQgcHJlZmVyXG4gKiAgdGhlIG5vbi1kZXByZWNhdGVkIFVzZXJBZ2VudCBtb2R1bGUgd2hlbiBwb3NzaWJsZSwgd2hpY2ggZXhwb3NlcyBvdXJcbiAqICBhdXRob3JpdGF0aXZlIHNlcnZlci1zaWRlIFBIUC1iYXNlZCBkZXRlY3Rpb24gdG8gdGhlIGNsaWVudC5cbiAqXG4gKiAgVXNhZ2UgaXMgc3RyYWlnaHRmb3J3YXJkOlxuICpcbiAqICAgIGlmIChVc2VyQWdlbnRfREVQUkVDQVRFRC5pZSgpKSB7XG4gKiAgICAgIC8vICBJRVxuICogICAgfVxuICpcbiAqICBZb3UgY2FuIGFsc28gZG8gdmVyc2lvbiBjaGVja3M6XG4gKlxuICogICAgaWYgKFVzZXJBZ2VudF9ERVBSRUNBVEVELmllKCkgPj0gNykge1xuICogICAgICAvLyAgSUU3IG9yIGJldHRlclxuICogICAgfVxuICpcbiAqICBUaGUgYnJvd3NlciBmdW5jdGlvbnMgd2lsbCByZXR1cm4gTmFOIGlmIHRoZSBicm93c2VyIGRvZXMgbm90IG1hdGNoLCBzb1xuICogIHlvdSBjYW4gYWxzbyBkbyB2ZXJzaW9uIGNvbXBhcmVzIHRoZSBvdGhlciB3YXk6XG4gKlxuICogICAgaWYgKFVzZXJBZ2VudF9ERVBSRUNBVEVELmllKCkgPCA3KSB7XG4gKiAgICAgIC8vICBJRTYgb3Igd29yc2VcbiAqICAgIH1cbiAqXG4gKiAgTm90ZSB0aGF0IHRoZSB2ZXJzaW9uIGlzIGEgZmxvYXQgYW5kIG1heSBpbmNsdWRlIGEgbWlub3IgdmVyc2lvbiBudW1iZXIsXG4gKiAgc28geW91IHNob3VsZCBhbHdheXMgdXNlIHJhbmdlIG9wZXJhdG9ycyB0byBwZXJmb3JtIGNvbXBhcmlzb25zLCBub3RcbiAqICBzdHJpY3QgZXF1YWxpdHkuXG4gKlxuICogICoqTm90ZToqKiBZb3Ugc2hvdWxkICoqc3Ryb25nbHkqKiBwcmVmZXIgY2FwYWJpbGl0eSBkZXRlY3Rpb24gdG8gYnJvd3NlclxuICogIHZlcnNpb24gZGV0ZWN0aW9uIHdoZXJlIGl0J3MgcmVhc29uYWJsZTpcbiAqXG4gKiAgICBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2pzL3N1cHBvcnQuaHRtbFxuICpcbiAqICBGdXJ0aGVyLCB3ZSBoYXZlIGEgbGFyZ2UgbnVtYmVyIG9mIG1hdHVyZSB3cmFwcGVyIGZ1bmN0aW9ucyBhbmQgY2xhc3Nlc1xuICogIHdoaWNoIGFic3RyYWN0IGF3YXkgbWFueSBicm93c2VyIGlycmVndWxhcml0aWVzLiBDaGVjayB0aGUgZG9jdW1lbnRhdGlvbixcbiAqICBncmVwIGZvciB0aGluZ3MsIG9yIGFzayBvbiBqYXZhc2NyaXB0QGxpc3RzLmZhY2Vib29rLmNvbSBiZWZvcmUgd3JpdGluZyB5ZXRcbiAqICBhbm90aGVyIGNvcHkgb2YgXCJldmVudCB8fCB3aW5kb3cuZXZlbnRcIi5cbiAqXG4gKi9cblxudmFyIF9wb3B1bGF0ZWQgPSBmYWxzZTtcblxuLy8gQnJvd3NlcnNcbnZhciBfaWUsIF9maXJlZm94LCBfb3BlcmEsIF93ZWJraXQsIF9jaHJvbWU7XG5cbi8vIEFjdHVhbCBJRSBicm93c2VyIGZvciBjb21wYXRpYmlsaXR5IG1vZGVcbnZhciBfaWVfcmVhbF92ZXJzaW9uO1xuXG4vLyBQbGF0Zm9ybXNcbnZhciBfb3N4LCBfd2luZG93cywgX2xpbnV4LCBfYW5kcm9pZDtcblxuLy8gQXJjaGl0ZWN0dXJlc1xudmFyIF93aW42NDtcblxuLy8gRGV2aWNlc1xudmFyIF9pcGhvbmUsIF9pcGFkLCBfbmF0aXZlO1xuXG52YXIgX21vYmlsZTtcblxuZnVuY3Rpb24gX3BvcHVsYXRlKCkge1xuICBpZiAoX3BvcHVsYXRlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIF9wb3B1bGF0ZWQgPSB0cnVlO1xuXG4gIC8vIFRvIHdvcmsgYXJvdW5kIGJ1Z2d5IEpTIGxpYnJhcmllcyB0aGF0IGNhbid0IGhhbmRsZSBtdWx0aS1kaWdpdFxuICAvLyB2ZXJzaW9uIG51bWJlcnMsIE9wZXJhIDEwJ3MgdXNlciBhZ2VudCBzdHJpbmcgY2xhaW1zIGl0J3MgT3BlcmFcbiAgLy8gOSwgdGhlbiBsYXRlciBpbmNsdWRlcyBhIFZlcnNpb24vWC5ZIGZpZWxkOlxuICAvL1xuICAvLyBPcGVyYS85LjgwIChmb28pIFByZXN0by8yLjIuMTUgVmVyc2lvbi8xMC4xMFxuICB2YXIgdWFzID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgdmFyIGFnZW50ID0gLyg/Ok1TSUUuKFxcZCtcXC5cXGQrKSl8KD86KD86RmlyZWZveHxHcmFuUGFyYWRpc298SWNld2Vhc2VsKS4oXFxkK1xcLlxcZCspKXwoPzpPcGVyYSg/Oi4rVmVyc2lvbi58LikoXFxkK1xcLlxcZCspKXwoPzpBcHBsZVdlYktpdC4oXFxkKyg/OlxcLlxcZCspPykpfCg/OlRyaWRlbnRcXC9cXGQrXFwuXFxkKy4qcnY6KFxcZCtcXC5cXGQrKSkvLmV4ZWModWFzKTtcbiAgdmFyIG9zICAgID0gLyhNYWMgT1MgWCl8KFdpbmRvd3MpfChMaW51eCkvLmV4ZWModWFzKTtcblxuICBfaXBob25lID0gL1xcYihpUGhvbmV8aVBbYW9dZCkvLmV4ZWModWFzKTtcbiAgX2lwYWQgPSAvXFxiKGlQW2FvXWQpLy5leGVjKHVhcyk7XG4gIF9hbmRyb2lkID0gL0FuZHJvaWQvaS5leGVjKHVhcyk7XG4gIF9uYXRpdmUgPSAvRkJBTlxcL1xcdys7L2kuZXhlYyh1YXMpO1xuICBfbW9iaWxlID0gL01vYmlsZS9pLmV4ZWModWFzKTtcblxuICAvLyBOb3RlIHRoYXQgdGhlIElFIHRlYW0gYmxvZyB3b3VsZCBoYXZlIHlvdSBiZWxpZXZlIHlvdSBzaG91bGQgYmUgY2hlY2tpbmdcbiAgLy8gZm9yICdXaW42NDsgeDY0Jy4gIEJ1dCBNU0ROIHRoZW4gcmV2ZWFscyB0aGF0IHlvdSBjYW4gYWN0dWFsbHkgYmUgY29taW5nXG4gIC8vIGZyb20gZWl0aGVyIHg2NCBvciBpYTY0OyAgc28gdWx0aW1hdGVseSwgeW91IHNob3VsZCBqdXN0IGNoZWNrIGZvciBXaW42NFxuICAvLyBhcyBpbiBpbmRpY2F0b3Igb2Ygd2hldGhlciB5b3UncmUgaW4gNjQtYml0IElFLiAgMzItYml0IElFIG9uIDY0LWJpdFxuICAvLyBXaW5kb3dzIHdpbGwgc2VuZCAnV09XNjQnIGluc3RlYWQuXG4gIF93aW42NCA9ICEhKC9XaW42NC8uZXhlYyh1YXMpKTtcblxuICBpZiAoYWdlbnQpIHtcbiAgICBfaWUgPSBhZ2VudFsxXSA/IHBhcnNlRmxvYXQoYWdlbnRbMV0pIDogKFxuICAgICAgICAgIGFnZW50WzVdID8gcGFyc2VGbG9hdChhZ2VudFs1XSkgOiBOYU4pO1xuICAgIC8vIElFIGNvbXBhdGliaWxpdHkgbW9kZVxuICAgIGlmIChfaWUgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSB7XG4gICAgICBfaWUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7XG4gICAgfVxuICAgIC8vIGdyYWIgdGhlIFwidHJ1ZVwiIGllIHZlcnNpb24gZnJvbSB0aGUgdHJpZGVudCB0b2tlbiBpZiBhdmFpbGFibGVcbiAgICB2YXIgdHJpZGVudCA9IC8oPzpUcmlkZW50XFwvKFxcZCsuXFxkKykpLy5leGVjKHVhcyk7XG4gICAgX2llX3JlYWxfdmVyc2lvbiA9IHRyaWRlbnQgPyBwYXJzZUZsb2F0KHRyaWRlbnRbMV0pICsgNCA6IF9pZTtcblxuICAgIF9maXJlZm94ID0gYWdlbnRbMl0gPyBwYXJzZUZsb2F0KGFnZW50WzJdKSA6IE5hTjtcbiAgICBfb3BlcmEgICA9IGFnZW50WzNdID8gcGFyc2VGbG9hdChhZ2VudFszXSkgOiBOYU47XG4gICAgX3dlYmtpdCAgPSBhZ2VudFs0XSA/IHBhcnNlRmxvYXQoYWdlbnRbNF0pIDogTmFOO1xuICAgIGlmIChfd2Via2l0KSB7XG4gICAgICAvLyBXZSBkbyBub3QgYWRkIHRoZSByZWdleHAgdG8gdGhlIGFib3ZlIHRlc3QsIGJlY2F1c2UgaXQgd2lsbCBhbHdheXNcbiAgICAgIC8vIG1hdGNoICdzYWZhcmknIG9ubHkgc2luY2UgJ0FwcGxlV2ViS2l0JyBhcHBlYXJzIGJlZm9yZSAnQ2hyb21lJyBpblxuICAgICAgLy8gdGhlIHVzZXJBZ2VudCBzdHJpbmcuXG4gICAgICBhZ2VudCA9IC8oPzpDaHJvbWVcXC8oXFxkK1xcLlxcZCspKS8uZXhlYyh1YXMpO1xuICAgICAgX2Nocm9tZSA9IGFnZW50ICYmIGFnZW50WzFdID8gcGFyc2VGbG9hdChhZ2VudFsxXSkgOiBOYU47XG4gICAgfSBlbHNlIHtcbiAgICAgIF9jaHJvbWUgPSBOYU47XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIF9pZSA9IF9maXJlZm94ID0gX29wZXJhID0gX2Nocm9tZSA9IF93ZWJraXQgPSBOYU47XG4gIH1cblxuICBpZiAob3MpIHtcbiAgICBpZiAob3NbMV0pIHtcbiAgICAgIC8vIERldGVjdCBPUyBYIHZlcnNpb24uICBJZiBubyB2ZXJzaW9uIG51bWJlciBtYXRjaGVzLCBzZXQgX29zeCB0byB0cnVlLlxuICAgICAgLy8gVmVyc2lvbiBleGFtcGxlczogIDEwLCAxMF82XzEsIDEwLjdcbiAgICAgIC8vIFBhcnNlcyB2ZXJzaW9uIG51bWJlciBhcyBhIGZsb2F0LCB0YWtpbmcgb25seSBmaXJzdCB0d28gc2V0cyBvZlxuICAgICAgLy8gZGlnaXRzLiAgSWYgb25seSBvbmUgc2V0IG9mIGRpZ2l0cyBpcyBmb3VuZCwgcmV0dXJucyBqdXN0IHRoZSBtYWpvclxuICAgICAgLy8gdmVyc2lvbiBudW1iZXIuXG4gICAgICB2YXIgdmVyID0gLyg/Ok1hYyBPUyBYIChcXGQrKD86Wy5fXVxcZCspPykpLy5leGVjKHVhcyk7XG5cbiAgICAgIF9vc3ggPSB2ZXIgPyBwYXJzZUZsb2F0KHZlclsxXS5yZXBsYWNlKCdfJywgJy4nKSkgOiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBfb3N4ID0gZmFsc2U7XG4gICAgfVxuICAgIF93aW5kb3dzID0gISFvc1syXTtcbiAgICBfbGludXggICA9ICEhb3NbM107XG4gIH0gZWxzZSB7XG4gICAgX29zeCA9IF93aW5kb3dzID0gX2xpbnV4ID0gZmFsc2U7XG4gIH1cbn1cblxudmFyIFVzZXJBZ2VudF9ERVBSRUNBVEVEID0ge1xuXG4gIC8qKlxuICAgKiAgQ2hlY2sgaWYgdGhlIFVBIGlzIEludGVybmV0IEV4cGxvcmVyLlxuICAgKlxuICAgKlxuICAgKiAgQHJldHVybiBmbG9hdHxOYU4gVmVyc2lvbiBudW1iZXIgKGlmIG1hdGNoKSBvciBOYU4uXG4gICAqL1xuICBpZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIF9wb3B1bGF0ZSgpIHx8IF9pZTtcbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgd2UncmUgaW4gSW50ZXJuZXQgRXhwbG9yZXIgY29tcGF0aWJpbGl0eSBtb2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIGJvb2wgdHJ1ZSBpZiBpbiBjb21wYXRpYmlsaXR5IG1vZGUsIGZhbHNlIGlmXG4gICAqIG5vdCBjb21wYXRpYmlsaXR5IG1vZGUgb3Igbm90IGllXG4gICAqL1xuICBpZUNvbXBhdGliaWxpdHlNb2RlOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gX3BvcHVsYXRlKCkgfHwgKF9pZV9yZWFsX3ZlcnNpb24gPiBfaWUpO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGJyb3dzZXIgaXMgNjQtYml0IElFLiAgUmVhbGx5LCB0aGlzIGlzIGtpbmQgb2Ygd2VhayBzYXVjZTsgIHdlXG4gICAqIG9ubHkgbmVlZCB0aGlzIGJlY2F1c2UgU2t5cGUgY2FuJ3QgaGFuZGxlIDY0LWJpdCBJRSB5ZXQuICBXZSBuZWVkIHRvIHJlbW92ZVxuICAgKiB0aGlzIHdoZW4gd2UgZG9uJ3QgbmVlZCBpdCAtLSB0cmFja2VkIGJ5ICM2MDE5NTcuXG4gICAqL1xuICBpZTY0OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gVXNlckFnZW50X0RFUFJFQ0FURUQuaWUoKSAmJiBfd2luNjQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqICBDaGVjayBpZiB0aGUgVUEgaXMgRmlyZWZveC5cbiAgICpcbiAgICpcbiAgICogIEByZXR1cm4gZmxvYXR8TmFOIFZlcnNpb24gbnVtYmVyIChpZiBtYXRjaCkgb3IgTmFOLlxuICAgKi9cbiAgZmlyZWZveDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIF9wb3B1bGF0ZSgpIHx8IF9maXJlZm94O1xuICB9LFxuXG5cbiAgLyoqXG4gICAqICBDaGVjayBpZiB0aGUgVUEgaXMgT3BlcmEuXG4gICAqXG4gICAqXG4gICAqICBAcmV0dXJuIGZsb2F0fE5hTiBWZXJzaW9uIG51bWJlciAoaWYgbWF0Y2gpIG9yIE5hTi5cbiAgICovXG4gIG9wZXJhOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gX3BvcHVsYXRlKCkgfHwgX29wZXJhO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqICBDaGVjayBpZiB0aGUgVUEgaXMgV2ViS2l0LlxuICAgKlxuICAgKlxuICAgKiAgQHJldHVybiBmbG9hdHxOYU4gVmVyc2lvbiBudW1iZXIgKGlmIG1hdGNoKSBvciBOYU4uXG4gICAqL1xuICB3ZWJraXQ6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBfcG9wdWxhdGUoKSB8fCBfd2Via2l0O1xuICB9LFxuXG4gIC8qKlxuICAgKiAgRm9yIFB1c2hcbiAgICogIFdJTEwgQkUgUkVNT1ZFRCBWRVJZIFNPT04uIFVzZSBVc2VyQWdlbnRfREVQUkVDQVRFRC53ZWJraXRcbiAgICovXG4gIHNhZmFyaTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFVzZXJBZ2VudF9ERVBSRUNBVEVELndlYmtpdCgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiAgQ2hlY2sgaWYgdGhlIFVBIGlzIGEgQ2hyb21lIGJyb3dzZXIuXG4gICAqXG4gICAqXG4gICAqICBAcmV0dXJuIGZsb2F0fE5hTiBWZXJzaW9uIG51bWJlciAoaWYgbWF0Y2gpIG9yIE5hTi5cbiAgICovXG4gIGNocm9tZSA6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBfcG9wdWxhdGUoKSB8fCBfY2hyb21lO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqICBDaGVjayBpZiB0aGUgdXNlciBpcyBydW5uaW5nIFdpbmRvd3MuXG4gICAqXG4gICAqICBAcmV0dXJuIGJvb2wgYHRydWUnIGlmIHRoZSB1c2VyJ3MgT1MgaXMgV2luZG93cy5cbiAgICovXG4gIHdpbmRvd3M6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBfcG9wdWxhdGUoKSB8fCBfd2luZG93cztcbiAgfSxcblxuXG4gIC8qKlxuICAgKiAgQ2hlY2sgaWYgdGhlIHVzZXIgaXMgcnVubmluZyBNYWMgT1MgWC5cbiAgICpcbiAgICogIEByZXR1cm4gZmxvYXR8Ym9vbCAgIFJldHVybnMgYSBmbG9hdCBpZiBhIHZlcnNpb24gbnVtYmVyIGlzIGRldGVjdGVkLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlIHRydWUvZmFsc2UuXG4gICAqL1xuICBvc3g6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBfcG9wdWxhdGUoKSB8fCBfb3N4O1xuICB9LFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgdXNlciBpcyBydW5uaW5nIExpbnV4LlxuICAgKlxuICAgKiBAcmV0dXJuIGJvb2wgYHRydWUnIGlmIHRoZSB1c2VyJ3MgT1MgaXMgc29tZSBmbGF2b3Igb2YgTGludXguXG4gICAqL1xuICBsaW51eDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIF9wb3B1bGF0ZSgpIHx8IF9saW51eDtcbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIHVzZXIgaXMgcnVubmluZyBvbiBhbiBpUGhvbmUgb3IgaVBvZCBwbGF0Zm9ybS5cbiAgICpcbiAgICogQHJldHVybiBib29sIGB0cnVlJyBpZiB0aGUgdXNlciBpcyBydW5uaW5nIHNvbWUgZmxhdm9yIG9mIHRoZVxuICAgKiAgICBpUGhvbmUgT1MuXG4gICAqL1xuICBpcGhvbmU6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBfcG9wdWxhdGUoKSB8fCBfaXBob25lO1xuICB9LFxuXG4gIG1vYmlsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIF9wb3B1bGF0ZSgpIHx8IChfaXBob25lIHx8IF9pcGFkIHx8IF9hbmRyb2lkIHx8IF9tb2JpbGUpO1xuICB9LFxuXG4gIG5hdGl2ZUFwcDogZnVuY3Rpb24oKSB7XG4gICAgLy8gd2Vidmlld3MgaW5zaWRlIG9mIHRoZSBuYXRpdmUgYXBwc1xuICAgIHJldHVybiBfcG9wdWxhdGUoKSB8fCBfbmF0aXZlO1xuICB9LFxuXG4gIGFuZHJvaWQ6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBfcG9wdWxhdGUoKSB8fCBfYW5kcm9pZDtcbiAgfSxcblxuICBpcGFkOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gX3BvcHVsYXRlKCkgfHwgX2lwYWQ7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVXNlckFnZW50X0RFUFJFQ0FURUQ7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/normalize-wheel/src/isEventSupported.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/normalize-wheel/src/isEventSupported.js ***!
|
||
\**************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(/*! ./ExecutionEnvironment */ \"(app-pages-browser)/./node_modules/normalize-wheel/src/ExecutionEnvironment.js\");\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature =\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM ||\n capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUtd2hlZWwvc3JjL2lzRXZlbnRTdXBwb3J0ZWQuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsMkJBQTJCLG1CQUFPLENBQUMsOEdBQXdCOztBQUUzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckIsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbm9ybWFsaXplLXdoZWVsXFxzcmNcXGlzRXZlbnRTdXBwb3J0ZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIGlzRXZlbnRTdXBwb3J0ZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIHVzZUhhc0ZlYXR1cmU7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHVzZUhhc0ZlYXR1cmUgPVxuICAgIGRvY3VtZW50LmltcGxlbWVudGF0aW9uICYmXG4gICAgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAmJlxuICAgIC8vIGFsd2F5cyByZXR1cm5zIHRydWUgaW4gbmV3ZXIgYnJvd3NlcnMgYXMgcGVyIHRoZSBzdGFuZGFyZC5cbiAgICAvLyBAc2VlIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9taW1wbGVtZW50YXRpb24taGFzZmVhdHVyZVxuICAgIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYW4gZXZlbnQgaXMgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC5cbiAqXG4gKiBOT1RFOiBUaGlzIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5IGZvciBub24tZ2VuZXJpYyBldmVudHMgc3VjaCBhcyBgY2hhbmdlYCxcbiAqIGByZXNldGAsIGBsb2FkYCwgYGVycm9yYCwgYW5kIGBzZWxlY3RgLlxuICpcbiAqIEJvcnJvd3MgZnJvbSBNb2Rlcm5penIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVN1ZmZpeCBFdmVudCBuYW1lLCBlLmcuIFwiY2xpY2tcIi5cbiAqIEBwYXJhbSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNhcHR1cmUgcGhhc2UgaXMgc3VwcG9ydGVkLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgc3VwcG9ydGVkLlxuICogQGludGVybmFsXG4gKiBAbGljZW5zZSBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiAqL1xuZnVuY3Rpb24gaXNFdmVudFN1cHBvcnRlZChldmVudE5hbWVTdWZmaXgsIGNhcHR1cmUpIHtcbiAgaWYgKCFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gfHxcbiAgICAgIGNhcHR1cmUgJiYgISgnYWRkRXZlbnRMaXN0ZW5lcicgaW4gZG9jdW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGV2ZW50TmFtZSA9ICdvbicgKyBldmVudE5hbWVTdWZmaXg7XG4gIHZhciBpc1N1cHBvcnRlZCA9IGV2ZW50TmFtZSBpbiBkb2N1bWVudDtcblxuICBpZiAoIWlzU3VwcG9ydGVkKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShldmVudE5hbWUsICdyZXR1cm47Jyk7XG4gICAgaXNTdXBwb3J0ZWQgPSB0eXBlb2YgZWxlbWVudFtldmVudE5hbWVdID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgaWYgKCFpc1N1cHBvcnRlZCAmJiB1c2VIYXNGZWF0dXJlICYmIGV2ZW50TmFtZVN1ZmZpeCA9PT0gJ3doZWVsJykge1xuICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHRlc3Qgc3VwcG9ydCBmb3IgdGhlIGB3aGVlbGAgZXZlbnQgaW4gSUU5Ky5cbiAgICBpc1N1cHBvcnRlZCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJ0V2ZW50cy53aGVlbCcsICczLjAnKTtcbiAgfVxuXG4gIHJldHVybiBpc1N1cHBvcnRlZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0V2ZW50U3VwcG9ydGVkO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/normalize-wheel/src/isEventSupported.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/normalize-wheel/src/normalizeWheel.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/normalize-wheel/src/normalizeWheel.js ***!
|
||
\************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule normalizeWheel\n * @typechecks\n */\n\n\n\nvar UserAgent_DEPRECATED = __webpack_require__(/*! ./UserAgent_DEPRECATED */ \"(app-pages-browser)/./node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js\");\n\nvar isEventSupported = __webpack_require__(/*! ./isEventSupported */ \"(app-pages-browser)/./node_modules/normalize-wheel/src/isEventSupported.js\");\n\n\n// Reasonable defaults\nvar PIXEL_STEP = 10;\nvar LINE_HEIGHT = 40;\nvar PAGE_HEIGHT = 800;\n\n/**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\nfunction normalizeWheel(/*object*/ event) /*object*/ {\n var sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in event) { sY = event.detail; }\n if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; }\n if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; }\n if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; }\n\n // side scrolling on FF with DOMMouseScroll\n if ( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in event) { pY = event.deltaY; }\n if ('deltaX' in event) { pX = event.deltaX; }\n\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) { sX = (pX < 1) ? -1 : 1; }\n if (pY && !sY) { sY = (pY < 1) ? -1 : 1; }\n\n return { spinX : sX,\n spinY : sY,\n pixelX : pX,\n pixelY : pY };\n}\n\n\n/**\n * The best combination if you prefer spinX + spinY normalization. It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\nnormalizeWheel.getEventType = function() /*string*/ {\n return (UserAgent_DEPRECATED.firefox())\n ? 'DOMMouseScroll'\n : (isEventSupported('wheel'))\n ? 'wheel'\n : 'mousewheel';\n};\n\nmodule.exports = normalizeWheel;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUtd2hlZWwvc3JjL25vcm1hbGl6ZVdoZWVsLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsMkJBQTJCLG1CQUFPLENBQUMsOEdBQXdCOztBQUUzRCx1QkFBdUIsbUJBQU8sQ0FBQyxzR0FBb0I7OztBQUduRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0EsZ0NBQWdDO0FBQ2hDLGdDQUFnQztBQUNoQyxnQ0FBZ0M7QUFDaEMsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCO0FBQzNCLDJCQUEyQjs7QUFFM0I7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBLE1BQU0sbUNBQW1DO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25CLG1CQUFtQjs7QUFFbkIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5vcm1hbGl6ZS13aGVlbFxcc3JjXFxub3JtYWxpemVXaGVlbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBub3JtYWxpemVXaGVlbFxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBVc2VyQWdlbnRfREVQUkVDQVRFRCA9IHJlcXVpcmUoJy4vVXNlckFnZW50X0RFUFJFQ0FURUQnKTtcblxudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcblxuXG4vLyBSZWFzb25hYmxlIGRlZmF1bHRzXG52YXIgUElYRUxfU1RFUCAgPSAxMDtcbnZhciBMSU5FX0hFSUdIVCA9IDQwO1xudmFyIFBBR0VfSEVJR0hUID0gODAwO1xuXG4vKipcbiAqIE1vdXNlIHdoZWVsIChhbmQgMi1maW5nZXIgdHJhY2twYWQpIHN1cHBvcnQgb24gdGhlIHdlYiBzdWNrcy4gIEl0IGlzXG4gKiBjb21wbGljYXRlZCwgdGh1cyB0aGlzIGRvYyBpcyBsb25nIGFuZCAoaG9wZWZ1bGx5KSBkZXRhaWxlZCBlbm91Z2ggdG8gYW5zd2VyXG4gKiB5b3VyIHF1ZXN0aW9ucy5cbiAqXG4gKiBJZiB5b3UgbmVlZCB0byByZWFjdCB0byB0aGUgbW91c2Ugd2hlZWwgaW4gYSBwcmVkaWN0YWJsZSB3YXksIHRoaXMgY29kZSBpc1xuICogbGlrZSB5b3VyIGJlc3Rlc3QgZnJpZW5kLiAqIGh1Z3MgKlxuICpcbiAqIEFzIG9mIHRvZGF5LCB0aGVyZSBhcmUgNCBET00gZXZlbnQgdHlwZXMgeW91IGNhbiBsaXN0ZW4gdG86XG4gKlxuICogICAnd2hlZWwnICAgICAgICAgICAgICAgIC0tIENocm9tZSgzMSspLCBGRigxNyspLCBJRSg5KylcbiAqICAgJ21vdXNld2hlZWwnICAgICAgICAgICAtLSBDaHJvbWUsIElFKDYrKSwgT3BlcmEsIFNhZmFyaVxuICogICAnTW96TW91c2VQaXhlbFNjcm9sbCcgIC0tIEZGKDMuNSBvbmx5ISkgKDIwMTAtMjAxMykgLS0gZG9uJ3QgYm90aGVyIVxuICogICAnRE9NTW91c2VTY3JvbGwnICAgICAgIC0tIEZGKDAuOS43Kykgc2luY2UgMjAwM1xuICpcbiAqIFNvIHdoYXQgdG8gZG8/ICBUaGUgaXMgdGhlIGJlc3Q6XG4gKlxuICogICBub3JtYWxpemVXaGVlbC5nZXRFdmVudFR5cGUoKTtcbiAqXG4gKiBJbiB5b3VyIGV2ZW50IGNhbGxiYWNrLCB1c2UgdGhpcyBjb2RlIHRvIGdldCBzYW5lIGludGVycHJldGF0aW9uIG9mIHRoZVxuICogZGVsdGFzLiAgVGhpcyBjb2RlIHdpbGwgcmV0dXJuIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXM6XG4gKlxuICogICBzcGluWCAgIC0tIG5vcm1hbGl6ZWQgc3BpbiBzcGVlZCAodXNlIGZvciB6b29tKSAtIHggcGxhbmVcbiAqICAgc3BpblkgICAtLSBcIiAtIHkgcGxhbmVcbiAqICAgcGl4ZWxYICAtLSBub3JtYWxpemVkIGRpc3RhbmNlICh0byBwaXhlbHMpIC0geCBwbGFuZVxuICogICBwaXhlbFkgIC0tIFwiIC0geSBwbGFuZVxuICpcbiAqIFdoZWVsIHZhbHVlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIGJyb3dzZXIgYXNzdW1pbmcgeW91IGFyZSB1c2luZyB0aGUgd2hlZWwgdG9cbiAqIHNjcm9sbCBhIHdlYiBwYWdlIGJ5IGEgbnVtYmVyIG9mIGxpbmVzIG9yIHBpeGVscyAob3IgcGFnZXMpLiAgVmFsdWVzIGNhbiB2YXJ5XG4gKiBzaWduaWZpY2FudGx5IG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMgYW5kIGJyb3dzZXJzLCBmb3JnZXR0aW5nIHRoYXQgeW91IGNhblxuICogc2Nyb2xsIGF0IGRpZmZlcmVudCBzcGVlZHMuICBTb21lIGRldmljZXMgKGxpa2UgdHJhY2twYWRzKSBlbWl0IG1vcmUgZXZlbnRzXG4gKiBhdCBzbWFsbGVyIGluY3JlbWVudHMgd2l0aCBmaW5lIGdyYW51bGFyaXR5LCBhbmQgc29tZSBlbWl0IG1hc3NpdmUganVtcHMgd2l0aFxuICogbGluZWFyIHNwZWVkIG9yIGFjY2VsZXJhdGlvbi5cbiAqXG4gKiBUaGlzIGNvZGUgZG9lcyBpdHMgYmVzdCB0byBub3JtYWxpemUgdGhlIGRlbHRhcyBmb3IgeW91OlxuICpcbiAqICAgLSBzcGluIGlzIHRyeWluZyB0byBub3JtYWxpemUgaG93IGZhciB0aGUgd2hlZWwgd2FzIHNwdW4gKG9yIHRyYWNrcGFkXG4gKiAgICAgZHJhZ2dlZCkuICBUaGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igem9vbSBzdXBwb3J0IHdoZXJlIHlvdSB3YW50IHRvXG4gKiAgICAgdGhyb3cgYXdheSB0aGUgY2h1bmt5IHNjcm9sbCBzdGVwcyBvbiB0aGUgUEMgYW5kIG1ha2UgdGhvc2UgZXF1YWwgdG9cbiAqICAgICB0aGUgc2xvdyBhbmQgc21vb3RoIHRpbnkgc3RlcHMgb24gdGhlIE1hYy4gS2V5IGRhdGE6IFRoaXMgY29kZSB0cmllcyB0b1xuICogICAgIHJlc29sdmUgYSBzaW5nbGUgc2xvdyBzdGVwIG9uIGEgd2hlZWwgdG8gMS5cbiAqXG4gKiAgIC0gcGl4ZWwgaXMgbm9ybWFsaXppbmcgdGhlIGRlc2lyZWQgc2Nyb2xsIGRlbHRhIGluIHBpeGVsIHVuaXRzLiAgWW91J2xsXG4gKiAgICAgZ2V0IHRoZSBjcmF6eSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJyb3dzZXJzLCBidXQgYXQgbGVhc3QgaXQnbGwgYmUgaW5cbiAqICAgICBwaXhlbHMhXG4gKlxuICogICAtIHBvc2l0aXZlIHZhbHVlIGluZGljYXRlcyBzY3JvbGxpbmcgRE9XTi9SSUdIVCwgbmVnYXRpdmUgVVAvTEVGVC4gIFRoaXNcbiAqICAgICBzaG91bGQgdHJhbnNsYXRlIHRvIHBvc2l0aXZlIHZhbHVlIHpvb21pbmcgSU4sIG5lZ2F0aXZlIHpvb21pbmcgT1VULlxuICogICAgIFRoaXMgbWF0Y2hlcyB0aGUgbmV3ZXIgJ3doZWVsJyBldmVudC5cbiAqXG4gKiBXaHkgYXJlIHRoZXJlIHNwaW5YLCBzcGluWSAob3IgcGl4ZWxzKT9cbiAqXG4gKiAgIC0gc3BpblggaXMgYSAyLWZpbmdlciBzaWRlIGRyYWcgb24gdGhlIHRyYWNrcGFkLCBhbmQgYSBzaGlmdCArIHdoZWVsIHR1cm5cbiAqICAgICB3aXRoIGEgbW91c2UuICBJdCByZXN1bHRzIGluIHNpZGUtc2Nyb2xsaW5nIGluIHRoZSBicm93c2VyIGJ5IGRlZmF1bHQuXG4gKlxuICogICAtIHNwaW5ZIGlzIHdoYXQgeW91IGV4cGVjdCAtLSBpdCdzIHRoZSBjbGFzc2ljIGF4aXMgb2YgYSBtb3VzZSB3aGVlbC5cbiAqXG4gKiAgIC0gSSBkcm9wcGVkIHNwaW5aL3BpeGVsWi4gIEl0IGlzIHN1cHBvcnRlZCBieSB0aGUgRE9NIDMgJ3doZWVsJyBldmVudCBhbmRcbiAqICAgICBwcm9iYWJseSBpcyBieSBicm93c2VycyBpbiBjb25qdW5jdGlvbiB3aXRoIGZhbmN5IDNEIGNvbnRyb2xsZXJzIC4uIGJ1dFxuICogICAgIHlvdSBrbm93LlxuICpcbiAqIEltcGxlbWVudGF0aW9uIGluZm86XG4gKlxuICogRXhhbXBsZXMgb2YgJ3doZWVsJyBldmVudCBpZiB5b3Ugc2Nyb2xsIHNsb3dseSAoZG93bikgYnkgb25lIHN0ZXAgd2l0aCBhblxuICogYXZlcmFnZSBtb3VzZTpcbiAqXG4gKiAgIE9TIFggKyBDaHJvbWUgIChtb3VzZSkgICAgIC0gICAgNCAgIHBpeGVsIGRlbHRhICAod2hlZWxEZWx0YSAtMTIwKVxuICogICBPUyBYICsgU2FmYXJpICAobW91c2UpICAgICAtICBOL0EgICBwaXhlbCBkZWx0YSAgKHdoZWVsRGVsdGEgIC0xMilcbiAqICAgT1MgWCArIEZpcmVmb3ggKG1vdXNlKSAgICAgLSAgICAwLjEgbGluZSAgZGVsdGEgICh3aGVlbERlbHRhICBOL0EpXG4gKiAgIFdpbjggKyBDaHJvbWUgIChtb3VzZSkgICAgIC0gIDEwMCAgIHBpeGVsIGRlbHRhICAod2hlZWxEZWx0YSAtMTIwKVxuICogICBXaW44ICsgRmlyZWZveCAobW91c2UpICAgICAtICAgIDMgICBsaW5lICBkZWx0YSAgKHdoZWVsRGVsdGEgLTEyMClcbiAqXG4gKiBPbiB0aGUgdHJhY2twYWQ6XG4gKlxuICogICBPUyBYICsgQ2hyb21lICAodHJhY2twYWQpICAtICAgIDIgICBwaXhlbCBkZWx0YSAgKHdoZWVsRGVsdGEgICAtNilcbiAqICAgT1MgWCArIEZpcmVmb3ggKHRyYWNrcGFkKSAgLSAgICAxICAgcGl4ZWwgZGVsdGEgICh3aGVlbERlbHRhICBOL0EpXG4gKlxuICogT24gb3RoZXIvb2xkZXIgYnJvd3NlcnMuLiBpdCdzIG1vcmUgY29tcGxpY2F0ZWQgYXMgdGhlcmUgY2FuIGJlIG11bHRpcGxlIGFuZFxuICogYWxzbyBtaXNzaW5nIGRlbHRhIHZhbHVlcy5cbiAqXG4gKiBUaGUgJ3doZWVsJyBldmVudCBpcyBtb3JlIHN0YW5kYXJkOlxuICpcbiAqIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLXdoZWVsZXZlbnRzXG4gKlxuICogVGhlIGJhc2ljcyBpcyB0aGF0IGl0IGluY2x1ZGVzIGEgdW5pdCwgZGVsdGFNb2RlIChwaXhlbHMsIGxpbmVzLCBwYWdlcyksIGFuZFxuICogZGVsdGFYLCBkZWx0YVkgYW5kIGRlbHRhWi4gIFNvbWUgYnJvd3NlcnMgcHJvdmlkZSBvdGhlciB2YWx1ZXMgdG8gbWFpbnRhaW5cbiAqIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBldmVudHMuICBUaG9zZSBvdGhlciB2YWx1ZXMgaGVscCB1c1xuICogYmV0dGVyIG5vcm1hbGl6ZSBzcGluIHNwZWVkLiAgRXhhbXBsZSBvZiB3aGF0IHRoZSBicm93c2VycyBwcm92aWRlOlxuICpcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICB8IGV2ZW50LndoZWVsRGVsdGEgfCBldmVudC5kZXRhaWxcbiAqICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tXG4gKiAgICAgICAgICBTYWZhcmkgdjUvT1MgWCAgfCAgICAgICAtMTIwICAgICAgIHwgICAgICAgMFxuICogICAgICAgICAgU2FmYXJpIHY1L1dpbjcgIHwgICAgICAgLTEyMCAgICAgICB8ICAgICAgIDBcbiAqICAgICAgICAgQ2hyb21lIHYxNy9PUyBYICB8ICAgICAgIC0xMjAgICAgICAgfCAgICAgICAwXG4gKiAgICAgICAgIENocm9tZSB2MTcvV2luNyAgfCAgICAgICAtMTIwICAgICAgIHwgICAgICAgMFxuICogICAgICAgICAgICAgICAgSUU5L1dpbjcgIHwgICAgICAgLTEyMCAgICAgICB8ICAgdW5kZWZpbmVkXG4gKiAgICAgICAgIEZpcmVmb3ggdjQvT1MgWCAgfCAgICAgdW5kZWZpbmVkICAgIHwgICAgICAgMVxuICogICAgICAgICBGaXJlZm94IHY0L1dpbjcgIHwgICAgIHVuZGVmaW5lZCAgICB8ICAgICAgIDNcbiAqXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVdoZWVsKC8qb2JqZWN0Ki8gZXZlbnQpIC8qb2JqZWN0Ki8ge1xuICB2YXIgc1ggPSAwLCBzWSA9IDAsICAgICAgIC8vIHNwaW5YLCBzcGluWVxuICAgICAgcFggPSAwLCBwWSA9IDA7ICAgICAgIC8vIHBpeGVsWCwgcGl4ZWxZXG5cbiAgLy8gTGVnYWN5XG4gIGlmICgnZGV0YWlsJyAgICAgIGluIGV2ZW50KSB7IHNZID0gZXZlbnQuZGV0YWlsOyB9XG4gIGlmICgnd2hlZWxEZWx0YScgIGluIGV2ZW50KSB7IHNZID0gLWV2ZW50LndoZWVsRGVsdGEgLyAxMjA7IH1cbiAgaWYgKCd3aGVlbERlbHRhWScgaW4gZXZlbnQpIHsgc1kgPSAtZXZlbnQud2hlZWxEZWx0YVkgLyAxMjA7IH1cbiAgaWYgKCd3aGVlbERlbHRhWCcgaW4gZXZlbnQpIHsgc1ggPSAtZXZlbnQud2hlZWxEZWx0YVggLyAxMjA7IH1cblxuICAvLyBzaWRlIHNjcm9sbGluZyBvbiBGRiB3aXRoIERPTU1vdXNlU2Nyb2xsXG4gIGlmICggJ2F4aXMnIGluIGV2ZW50ICYmIGV2ZW50LmF4aXMgPT09IGV2ZW50LkhPUklaT05UQUxfQVhJUyApIHtcbiAgICBzWCA9IHNZO1xuICAgIHNZID0gMDtcbiAgfVxuXG4gIHBYID0gc1ggKiBQSVhFTF9TVEVQO1xuICBwWSA9IHNZICogUElYRUxfU1RFUDtcblxuICBpZiAoJ2RlbHRhWScgaW4gZXZlbnQpIHsgcFkgPSBldmVudC5kZWx0YVk7IH1cbiAgaWYgKCdkZWx0YVgnIGluIGV2ZW50KSB7IHBYID0gZXZlbnQuZGVsdGFYOyB9XG5cbiAgaWYgKChwWCB8fCBwWSkgJiYgZXZlbnQuZGVsdGFNb2RlKSB7XG4gICAgaWYgKGV2ZW50LmRlbHRhTW9kZSA9PSAxKSB7ICAgICAgICAgIC8vIGRlbHRhIGluIExJTkUgdW5pdHNcbiAgICAgIHBYICo9IExJTkVfSEVJR0hUO1xuICAgICAgcFkgKj0gTElORV9IRUlHSFQ7XG4gICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlbHRhIGluIFBBR0UgdW5pdHNcbiAgICAgIHBYICo9IFBBR0VfSEVJR0hUO1xuICAgICAgcFkgKj0gUEFHRV9IRUlHSFQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbC1iYWNrIGlmIHNwaW4gY2Fubm90IGJlIGRldGVybWluZWRcbiAgaWYgKHBYICYmICFzWCkgeyBzWCA9IChwWCA8IDEpID8gLTEgOiAxOyB9XG4gIGlmIChwWSAmJiAhc1kpIHsgc1kgPSAocFkgPCAxKSA/IC0xIDogMTsgfVxuXG4gIHJldHVybiB7IHNwaW5YICA6IHNYLFxuICAgICAgICAgICBzcGluWSAgOiBzWSxcbiAgICAgICAgICAgcGl4ZWxYIDogcFgsXG4gICAgICAgICAgIHBpeGVsWSA6IHBZIH07XG59XG5cblxuLyoqXG4gKiBUaGUgYmVzdCBjb21iaW5hdGlvbiBpZiB5b3UgcHJlZmVyIHNwaW5YICsgc3Bpblkgbm9ybWFsaXphdGlvbi4gIEl0IGZhdm9yc1xuICogdGhlIG9sZGVyIERPTU1vdXNlU2Nyb2xsIGZvciBGaXJlZm94LCBhcyBGRiBkb2VzIG5vdCBpbmNsdWRlIHdoZWVsRGVsdGEgd2l0aFxuICogJ3doZWVsJyBldmVudCwgbWFraW5nIHNwaW4gc3BlZWQgZGV0ZXJtaW5hdGlvbiBpbXBvc3NpYmxlLlxuICovXG5ub3JtYWxpemVXaGVlbC5nZXRFdmVudFR5cGUgPSBmdW5jdGlvbigpIC8qc3RyaW5nKi8ge1xuICByZXR1cm4gKFVzZXJBZ2VudF9ERVBSRUNBVEVELmZpcmVmb3goKSlcbiAgICAgICAgICAgPyAnRE9NTW91c2VTY3JvbGwnXG4gICAgICAgICAgIDogKGlzRXZlbnRTdXBwb3J0ZWQoJ3doZWVsJykpXG4gICAgICAgICAgICAgICA/ICd3aGVlbCdcbiAgICAgICAgICAgICAgIDogJ21vdXNld2hlZWwnO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBub3JtYWxpemVXaGVlbDtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/normalize-wheel/src/normalizeWheel.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js":
|
||
/*!**********************************************************************************************!*\
|
||
!*** ./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***!
|
||
\**********************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n true &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7QUFDYixLQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxZQUFZO0FBQ3BFLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxZQUFZO0FBQ3BFO0FBQ0EsMERBQTBELFlBQVk7QUFDdEUsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsbUZBQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDRCQUE0QjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmVcXGNqc1xcdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS5kZXZlbG9wbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiB1c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblwicHJvZHVjdGlvblwiICE9PSBwcm9jZXNzLmVudi5OT0RFX0VOViAmJlxuICAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgICAgIHJldHVybiAoeCA9PT0geSAmJiAoMCAhPT0geCB8fCAxIC8geCA9PT0gMSAvIHkpKSB8fCAoeCAhPT0geCAmJiB5ICE9PSB5KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdXNlU3luY0V4dGVybmFsU3RvcmUkMihzdWJzY3JpYmUsIGdldFNuYXBzaG90KSB7XG4gICAgICBkaWRXYXJuT2xkMThBbHBoYSB8fFxuICAgICAgICB2b2lkIDAgPT09IFJlYWN0LnN0YXJ0VHJhbnNpdGlvbiB8fFxuICAgICAgICAoKGRpZFdhcm5PbGQxOEFscGhhID0gITApLFxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiWW91IGFyZSB1c2luZyBhbiBvdXRkYXRlZCwgcHJlLXJlbGVhc2UgYWxwaGEgb2YgUmVhY3QgMTggdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHVzZVN5bmNFeHRlcm5hbFN0b3JlLiBUaGUgdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUgc2hpbSB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseS4gVXBncmFkZSB0byBhIG5ld2VyIHByZS1yZWxlYXNlLlwiXG4gICAgICAgICkpO1xuICAgICAgdmFyIHZhbHVlID0gZ2V0U25hcHNob3QoKTtcbiAgICAgIGlmICghZGlkV2FyblVuY2FjaGVkR2V0U25hcHNob3QpIHtcbiAgICAgICAgdmFyIGNhY2hlZFZhbHVlID0gZ2V0U25hcHNob3QoKTtcbiAgICAgICAgb2JqZWN0SXModmFsdWUsIGNhY2hlZFZhbHVlKSB8fFxuICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJUaGUgcmVzdWx0IG9mIGdldFNuYXBzaG90IHNob3VsZCBiZSBjYWNoZWQgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcFwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICAoZGlkV2FyblVuY2FjaGVkR2V0U25hcHNob3QgPSAhMCkpO1xuICAgICAgfVxuICAgICAgY2FjaGVkVmFsdWUgPSB1c2VTdGF0ZSh7XG4gICAgICAgIGluc3Q6IHsgdmFsdWU6IHZhbHVlLCBnZXRTbmFwc2hvdDogZ2V0U25hcHNob3QgfVxuICAgICAgfSk7XG4gICAgICB2YXIgaW5zdCA9IGNhY2hlZFZhbHVlWzBdLmluc3QsXG4gICAgICAgIGZvcmNlVXBkYXRlID0gY2FjaGVkVmFsdWVbMV07XG4gICAgICB1c2VMYXlvdXRFZmZlY3QoXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpbnN0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgaW5zdC5nZXRTbmFwc2hvdCA9IGdldFNuYXBzaG90O1xuICAgICAgICAgIGNoZWNrSWZTbmFwc2hvdENoYW5nZWQoaW5zdCkgJiYgZm9yY2VVcGRhdGUoeyBpbnN0OiBpbnN0IH0pO1xuICAgICAgICB9LFxuICAgICAgICBbc3Vic2NyaWJlLCB2YWx1ZSwgZ2V0U25hcHNob3RdXG4gICAgICApO1xuICAgICAgdXNlRWZmZWN0KFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY2hlY2tJZlNuYXBzaG90Q2hhbmdlZChpbnN0KSAmJiBmb3JjZVVwZGF0ZSh7IGluc3Q6IGluc3QgfSk7XG4gICAgICAgICAgcmV0dXJuIHN1YnNjcmliZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGVja0lmU25hcHNob3RDaGFuZ2VkKGluc3QpICYmIGZvcmNlVXBkYXRlKHsgaW5zdDogaW5zdCB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgW3N1YnNjcmliZV1cbiAgICAgICk7XG4gICAgICB1c2VEZWJ1Z1ZhbHVlKHZhbHVlKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tJZlNuYXBzaG90Q2hhbmdlZChpbnN0KSB7XG4gICAgICB2YXIgbGF0ZXN0R2V0U25hcHNob3QgPSBpbnN0LmdldFNuYXBzaG90O1xuICAgICAgaW5zdCA9IGluc3QudmFsdWU7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbmV4dFZhbHVlID0gbGF0ZXN0R2V0U25hcHNob3QoKTtcbiAgICAgICAgcmV0dXJuICFvYmplY3RJcyhpbnN0LCBuZXh0VmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuICEwO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB1c2VTeW5jRXh0ZXJuYWxTdG9yZSQxKHN1YnNjcmliZSwgZ2V0U25hcHNob3QpIHtcbiAgICAgIHJldHVybiBnZXRTbmFwc2hvdCgpO1xuICAgIH1cbiAgICBcInVuZGVmaW5lZFwiICE9PSB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICYmXG4gICAgICBcImZ1bmN0aW9uXCIgPT09XG4gICAgICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0YXJ0ICYmXG4gICAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0YXJ0KEVycm9yKCkpO1xuICAgIHZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKSxcbiAgICAgIG9iamVjdElzID0gXCJmdW5jdGlvblwiID09PSB0eXBlb2YgT2JqZWN0LmlzID8gT2JqZWN0LmlzIDogaXMsXG4gICAgICB1c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlLFxuICAgICAgdXNlRWZmZWN0ID0gUmVhY3QudXNlRWZmZWN0LFxuICAgICAgdXNlTGF5b3V0RWZmZWN0ID0gUmVhY3QudXNlTGF5b3V0RWZmZWN0LFxuICAgICAgdXNlRGVidWdWYWx1ZSA9IFJlYWN0LnVzZURlYnVnVmFsdWUsXG4gICAgICBkaWRXYXJuT2xkMThBbHBoYSA9ICExLFxuICAgICAgZGlkV2FyblVuY2FjaGVkR2V0U25hcHNob3QgPSAhMSxcbiAgICAgIHNoaW0gPVxuICAgICAgICBcInVuZGVmaW5lZFwiID09PSB0eXBlb2Ygd2luZG93IHx8XG4gICAgICAgIFwidW5kZWZpbmVkXCIgPT09IHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQgfHxcbiAgICAgICAgXCJ1bmRlZmluZWRcIiA9PT0gdHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50XG4gICAgICAgICAgPyB1c2VTeW5jRXh0ZXJuYWxTdG9yZSQxXG4gICAgICAgICAgOiB1c2VTeW5jRXh0ZXJuYWxTdG9yZSQyO1xuICAgIGV4cG9ydHMudXNlU3luY0V4dGVybmFsU3RvcmUgPVxuICAgICAgdm9pZCAwICE9PSBSZWFjdC51c2VTeW5jRXh0ZXJuYWxTdG9yZSA/IFJlYWN0LnVzZVN5bmNFeHRlcm5hbFN0b3JlIDogc2hpbTtcbiAgICBcInVuZGVmaW5lZFwiICE9PSB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICYmXG4gICAgICBcImZ1bmN0aW9uXCIgPT09XG4gICAgICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0b3AgJiZcbiAgICAgIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5yZWdpc3RlckludGVybmFsTW9kdWxlU3RvcChFcnJvcigpKTtcbiAgfSkoKTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js":
|
||
/*!************************************************************************************************************!*\
|
||
!*** ./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js ***!
|
||
\************************************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n true &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"),\n shim = __webpack_require__(/*! use-sync-external-store/shim */ \"(app-pages-browser)/./node_modules/use-sync-external-store/shim/index.js\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS93aXRoLXNlbGVjdG9yLmRldmVsb3BtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFYTtBQUNiLEtBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbUJBQU8sQ0FBQyxtRkFBTztBQUMvQixhQUFhLG1CQUFPLENBQUMsOEdBQThCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksd0NBQXdDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUciLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHVzZS1zeW5jLWV4dGVybmFsLXN0b3JlXFxjanNcXHVzZS1zeW5jLWV4dGVybmFsLXN0b3JlLXNoaW1cXHdpdGgtc2VsZWN0b3IuZGV2ZWxvcG1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS93aXRoLXNlbGVjdG9yLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblwicHJvZHVjdGlvblwiICE9PSBwcm9jZXNzLmVudi5OT0RFX0VOViAmJlxuICAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgICAgIHJldHVybiAoeCA9PT0geSAmJiAoMCAhPT0geCB8fCAxIC8geCA9PT0gMSAvIHkpKSB8fCAoeCAhPT0geCAmJiB5ICE9PSB5KTtcbiAgICB9XG4gICAgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAmJlxuICAgICAgXCJmdW5jdGlvblwiID09PVxuICAgICAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdGFydCAmJlxuICAgICAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdGFydChFcnJvcigpKTtcbiAgICB2YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIiksXG4gICAgICBzaGltID0gcmVxdWlyZShcInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW1cIiksXG4gICAgICBvYmplY3RJcyA9IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIE9iamVjdC5pcyA/IE9iamVjdC5pcyA6IGlzLFxuICAgICAgdXNlU3luY0V4dGVybmFsU3RvcmUgPSBzaGltLnVzZVN5bmNFeHRlcm5hbFN0b3JlLFxuICAgICAgdXNlUmVmID0gUmVhY3QudXNlUmVmLFxuICAgICAgdXNlRWZmZWN0ID0gUmVhY3QudXNlRWZmZWN0LFxuICAgICAgdXNlTWVtbyA9IFJlYWN0LnVzZU1lbW8sXG4gICAgICB1c2VEZWJ1Z1ZhbHVlID0gUmVhY3QudXNlRGVidWdWYWx1ZTtcbiAgICBleHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yID0gZnVuY3Rpb24gKFxuICAgICAgc3Vic2NyaWJlLFxuICAgICAgZ2V0U25hcHNob3QsXG4gICAgICBnZXRTZXJ2ZXJTbmFwc2hvdCxcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgaXNFcXVhbFxuICAgICkge1xuICAgICAgdmFyIGluc3RSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgICBpZiAobnVsbCA9PT0gaW5zdFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHZhciBpbnN0ID0geyBoYXNWYWx1ZTogITEsIHZhbHVlOiBudWxsIH07XG4gICAgICAgIGluc3RSZWYuY3VycmVudCA9IGluc3Q7XG4gICAgICB9IGVsc2UgaW5zdCA9IGluc3RSZWYuY3VycmVudDtcbiAgICAgIGluc3RSZWYgPSB1c2VNZW1vKFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZnVuY3Rpb24gbWVtb2l6ZWRTZWxlY3RvcihuZXh0U25hcHNob3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzTWVtbykge1xuICAgICAgICAgICAgICBoYXNNZW1vID0gITA7XG4gICAgICAgICAgICAgIG1lbW9pemVkU25hcHNob3QgPSBuZXh0U25hcHNob3Q7XG4gICAgICAgICAgICAgIG5leHRTbmFwc2hvdCA9IHNlbGVjdG9yKG5leHRTbmFwc2hvdCk7XG4gICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGlzRXF1YWwgJiYgaW5zdC5oYXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50U2VsZWN0aW9uID0gaW5zdC52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoaXNFcXVhbChjdXJyZW50U2VsZWN0aW9uLCBuZXh0U25hcHNob3QpKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChtZW1vaXplZFNlbGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAobWVtb2l6ZWRTZWxlY3Rpb24gPSBuZXh0U25hcHNob3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudFNlbGVjdGlvbiA9IG1lbW9pemVkU2VsZWN0aW9uO1xuICAgICAgICAgICAgaWYgKG9iamVjdElzKG1lbW9pemVkU25hcHNob3QsIG5leHRTbmFwc2hvdCkpXG4gICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2VsZWN0aW9uO1xuICAgICAgICAgICAgdmFyIG5leHRTZWxlY3Rpb24gPSBzZWxlY3RvcihuZXh0U25hcHNob3QpO1xuICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gaXNFcXVhbCAmJiBpc0VxdWFsKGN1cnJlbnRTZWxlY3Rpb24sIG5leHRTZWxlY3Rpb24pKVxuICAgICAgICAgICAgICByZXR1cm4gKG1lbW9pemVkU25hcHNob3QgPSBuZXh0U25hcHNob3QpLCBjdXJyZW50U2VsZWN0aW9uO1xuICAgICAgICAgICAgbWVtb2l6ZWRTbmFwc2hvdCA9IG5leHRTbmFwc2hvdDtcbiAgICAgICAgICAgIHJldHVybiAobWVtb2l6ZWRTZWxlY3Rpb24gPSBuZXh0U2VsZWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGhhc01lbW8gPSAhMSxcbiAgICAgICAgICAgIG1lbW9pemVkU25hcHNob3QsXG4gICAgICAgICAgICBtZW1vaXplZFNlbGVjdGlvbixcbiAgICAgICAgICAgIG1heWJlR2V0U2VydmVyU25hcHNob3QgPVxuICAgICAgICAgICAgICB2b2lkIDAgPT09IGdldFNlcnZlclNuYXBzaG90ID8gbnVsbCA6IGdldFNlcnZlclNuYXBzaG90O1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBtZW1vaXplZFNlbGVjdG9yKGdldFNuYXBzaG90KCkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG51bGwgPT09IG1heWJlR2V0U2VydmVyU25hcHNob3RcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb2l6ZWRTZWxlY3RvcihtYXliZUdldFNlcnZlclNuYXBzaG90KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgICAgICBbZ2V0U25hcHNob3QsIGdldFNlcnZlclNuYXBzaG90LCBzZWxlY3RvciwgaXNFcXVhbF1cbiAgICAgICk7XG4gICAgICB2YXIgdmFsdWUgPSB1c2VTeW5jRXh0ZXJuYWxTdG9yZShzdWJzY3JpYmUsIGluc3RSZWZbMF0sIGluc3RSZWZbMV0pO1xuICAgICAgdXNlRWZmZWN0KFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaW5zdC5oYXNWYWx1ZSA9ICEwO1xuICAgICAgICAgIGluc3QudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgW3ZhbHVlXVxuICAgICAgKTtcbiAgICAgIHVzZURlYnVnVmFsdWUodmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAmJlxuICAgICAgXCJmdW5jdGlvblwiID09PVxuICAgICAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdG9wICYmXG4gICAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0b3AoRXJyb3IoKSk7XG4gIH0pKCk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/use-sync-external-store/shim/index.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/use-sync-external-store/shim/index.js ***!
|
||
\************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim.development.js */ \"(app-pages-browser)/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS9zaGltL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSw0TUFBOEU7QUFDaEYiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHVzZS1zeW5jLWV4dGVybmFsLXN0b3JlXFxzaGltXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vY2pzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlLXNoaW0ucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/use-sync-external-store/shim/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/use-sync-external-store/shim/with-selector.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/use-sync-external-store/shim/with-selector.js ***!
|
||
\********************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim/with-selector.development.js */ \"(app-pages-browser)/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS9zaGltL3dpdGgtc2VsZWN0b3IuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsSUFBSSxLQUFxQyxFQUFFLEVBRTFDLENBQUM7QUFDRixFQUFFLHdPQUE0RjtBQUM5RiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmVcXHNoaW1cXHdpdGgtc2VsZWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL2Nqcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltL3dpdGgtc2VsZWN0b3IucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS93aXRoLXNlbGVjdG9yLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/use-sync-external-store/shim/with-selector.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/app/dashboard/profile/page.tsx":
|
||
/*!********************************************!*\
|
||
!*** ./src/app/dashboard/profile/page.tsx ***!
|
||
\********************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ProfilePage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _entities_session_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/entities/session/store */ \"(app-pages-browser)/./src/entities/session/store.ts\");\n/* harmony import */ var _components_ui_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ui/button */ \"(app-pages-browser)/./src/components/ui/button.tsx\");\n/* harmony import */ var _components_ui_card__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/ui/card */ \"(app-pages-browser)/./src/components/ui/card.tsx\");\n/* harmony import */ var _components_ui_badge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/ui/badge */ \"(app-pages-browser)/./src/components/ui/badge.tsx\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/loader-circle.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/user.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/phone.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/award.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/map-pin.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/shield-check.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/hammer.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/square-pen.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/key.js\");\n/* harmony import */ var _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! __barrel_optimize__?names=Award,Clock,Edit,Hammer,Key,Loader2,MapPin,Phone,ShieldCheck,Trash2,User!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/trash-2.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var react_hook_form__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! react-hook-form */ \"(app-pages-browser)/./node_modules/react-hook-form/dist/index.esm.mjs\");\n/* harmony import */ var _hookform_resolvers_zod__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @hookform/resolvers/zod */ \"(app-pages-browser)/./node_modules/@hookform/resolvers/zod/dist/zod.mjs\");\n/* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! zod */ \"(app-pages-browser)/./node_modules/zod/v4/classic/external.js\");\n/* harmony import */ var sonner__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! sonner */ \"(app-pages-browser)/./node_modules/sonner/dist/index.mjs\");\n/* harmony import */ var _components_ui_input__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/components/ui/input */ \"(app-pages-browser)/./src/components/ui/input.tsx\");\n/* harmony import */ var _components_ui_rich_text_editor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/ui/rich-text-editor */ \"(app-pages-browser)/./src/components/ui/rich-text-editor.tsx\");\n/* harmony import */ var _components_ui_form__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/components/ui/form */ \"(app-pages-browser)/./src/components/ui/form.tsx\");\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n/* harmony import */ var _components_ui_avatar_uploader__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/components/ui/avatar-uploader */ \"(app-pages-browser)/./src/components/ui/avatar-uploader.tsx\");\n/* harmony import */ var _components_ui_tag_input__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/components/ui/tag-input */ \"(app-pages-browser)/./src/components/ui/tag-input.tsx\");\n/* harmony import */ var _components_ui_rating__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/components/ui/rating */ \"(app-pages-browser)/./src/components/ui/rating.tsx\");\n/* harmony import */ var _components_ui_description_viewer__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/components/ui/description-viewer */ \"(app-pages-browser)/./src/components/ui/description-viewer.tsx\");\n/* harmony import */ var _components_ui_schedule_viewer__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/components/ui/schedule-viewer */ \"(app-pages-browser)/./src/components/ui/schedule-viewer.tsx\");\n/* harmony import */ var _components_ui_change_password_modal__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/components/ui/change-password-modal */ \"(app-pages-browser)/./src/components/ui/change-password-modal.tsx\");\n/* harmony import */ var _components_ui_location_modal__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @/components/ui/location-modal */ \"(app-pages-browser)/./src/components/ui/location-modal.tsx\");\n/* harmony import */ var _components_ui_schedule_modal__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @/components/ui/schedule-modal */ \"(app-pages-browser)/./src/components/ui/schedule-modal.tsx\");\n/* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @/lib/utils */ \"(app-pages-browser)/./src/lib/utils.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst profileSchema = zod__WEBPACK_IMPORTED_MODULE_22__.object({\n firstName: zod__WEBPACK_IMPORTED_MODULE_22__.string().min(2, \"Имя должно содержать минимум 2 символа\").regex(/^[^0-9]*$/, \"Имя не должно содержать цифры\"),\n lastName: zod__WEBPACK_IMPORTED_MODULE_22__.string().min(2, \"Фамилия должна содержать минимум 2 символа\").regex(/^[^0-9]*$/, \"Фамилия не должна содержать цифры\"),\n patronymic: zod__WEBPACK_IMPORTED_MODULE_22__.string().optional().refine((val)=>!val || /^[^0-9]*$/.test(val), {\n message: \"Отчество не должно содержать цифры\"\n }),\n companyName: zod__WEBPACK_IMPORTED_MODULE_22__.string().optional(),\n inn: zod__WEBPACK_IMPORTED_MODULE_22__.string().optional(),\n description: zod__WEBPACK_IMPORTED_MODULE_22__.string().max(2048, \"Описание не может превышать 2048 символов\").optional()\n});\nconst phoneSchema = zod__WEBPACK_IMPORTED_MODULE_22__.object({\n newPhone: zod__WEBPACK_IMPORTED_MODULE_22__.string().min(10, \"Номер телефона должен содержать минимум 10 цифр\")\n});\nfunction ProfilePage() {\n var _user_workSchedule, _user_workSchedule1;\n _s();\n const { user, isAuth, isLoading, isInitialized, getProfile, updateProfile, changePhone, logout, updateCompetencies } = (0,_entities_session_store__WEBPACK_IMPORTED_MODULE_2__.useSessionStore)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_6__.useRouter)();\n const [activeTab, setActiveTab] = react__WEBPACK_IMPORTED_MODULE_1__.useState(\"personal\");\n const [isEditingProfile, setIsEditingProfile] = react__WEBPACK_IMPORTED_MODULE_1__.useState(false);\n const [isChangingPhone, setIsChangingPhone] = react__WEBPACK_IMPORTED_MODULE_1__.useState(false);\n // Модалки\n const [isPasswordModalOpen, setIsPasswordModalOpen] = react__WEBPACK_IMPORTED_MODULE_1__.useState(false);\n const [isLocationModalOpen, setIsLocationModalOpen] = react__WEBPACK_IMPORTED_MODULE_1__.useState(false);\n const [isScheduleModalOpen, setIsScheduleModalOpen] = react__WEBPACK_IMPORTED_MODULE_1__.useState(false);\n const rating = (0,_components_ui_rating__WEBPACK_IMPORTED_MODULE_15__.useRandomRating)();\n react__WEBPACK_IMPORTED_MODULE_1__.useEffect({\n \"ProfilePage.useEffect\": ()=>{\n if (!isInitialized) return;\n if (!isLoading && !isAuth) {\n router.push(\"/auth/login\");\n } else if (isAuth && !user) {\n getProfile();\n }\n }\n }[\"ProfilePage.useEffect\"], [\n isAuth,\n isLoading,\n user,\n router,\n isInitialized\n ]);\n const profileForm = (0,react_hook_form__WEBPACK_IMPORTED_MODULE_23__.useForm)({\n resolver: (0,_hookform_resolvers_zod__WEBPACK_IMPORTED_MODULE_7__.zodResolver)(profileSchema),\n values: {\n firstName: (user === null || user === void 0 ? void 0 : user.firstName) || \"\",\n lastName: (user === null || user === void 0 ? void 0 : user.lastName) || \"\",\n patronymic: (user === null || user === void 0 ? void 0 : user.patronymic) || \"\",\n companyName: (user === null || user === void 0 ? void 0 : user.companyName) || \"\",\n inn: (user === null || user === void 0 ? void 0 : user.inn) || \"\",\n description: (user === null || user === void 0 ? void 0 : user.description) || \"\"\n }\n });\n const phoneForm = (0,react_hook_form__WEBPACK_IMPORTED_MODULE_23__.useForm)({\n resolver: (0,_hookform_resolvers_zod__WEBPACK_IMPORTED_MODULE_7__.zodResolver)(phoneSchema),\n defaultValues: {\n newPhone: (user === null || user === void 0 ? void 0 : user.phone) || \"\"\n }\n });\n react__WEBPACK_IMPORTED_MODULE_1__.useEffect({\n \"ProfilePage.useEffect\": ()=>{\n if (user === null || user === void 0 ? void 0 : user.phone) {\n phoneForm.reset({\n newPhone: user.phone\n });\n }\n }\n }[\"ProfilePage.useEffect\"], [\n user === null || user === void 0 ? void 0 : user.phone,\n phoneForm\n ]);\n async function onProfileSubmit(values) {\n try {\n await updateProfile(values);\n setIsEditingProfile(false);\n sonner__WEBPACK_IMPORTED_MODULE_8__.toast.success(\"Профиль успешно обновлен\");\n } catch (error) {\n sonner__WEBPACK_IMPORTED_MODULE_8__.toast.error(\"Ошибка при обновлении профиля\");\n }\n }\n async function onPhoneSubmit(values) {\n try {\n await changePhone(values.newPhone);\n setIsChangingPhone(false);\n sonner__WEBPACK_IMPORTED_MODULE_8__.toast.success(\"Номер телефона успешно изменен\");\n } catch (error) {\n sonner__WEBPACK_IMPORTED_MODULE_8__.toast.error(\"Ошибка при смене номера телефона\");\n }\n }\n if (isLoading && !user) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex h-[50vh] items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n className: \"h-8 w-8 animate-spin text-blue-600\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 130,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 129,\n columnNumber: 13\n }, this);\n }\n if (!user) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"container py-10 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-bold mb-4\",\n children: \"Пожалуйста, войдите в систему\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 138,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n asChild: true,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"/auth/login\",\n children: \"Войти\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 140,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 139,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 137,\n columnNumber: 13\n }, this);\n }\n const isMaster = user.roles.includes(\"Master\") || user.roles.includes(\"Candidate\");\n const isCompany = user.roles.includes(\"Company\");\n const isCandidate = user.roles.includes(\"Candidate\");\n const showBecomePerformer = !isMaster && !isCandidate && !isCompany;\n const translateRole = (role)=>{\n const roleTranslations = {\n \"Client\": \"Клиент\",\n \"Master\": \"Мастер\",\n \"Candidate\": \"Кандидат в мастера\",\n \"Company\": \"Компания\",\n \"Admin\": \"Администратор\",\n \"User\": \"Пользователь\"\n };\n return roleTranslations[role] || role;\n };\n const getHighestRole = (roles)=>{\n if (!roles || roles.length === 0) return \"User\";\n const rolePriority = [\n \"Admin\",\n \"Company\",\n \"Master\",\n \"Candidate\",\n \"Client\",\n \"User\"\n ];\n for (const role of rolePriority){\n if (roles.includes(role)) {\n return role;\n }\n }\n return roles[0];\n };\n const tabs = [\n {\n id: \"personal\",\n label: isCompany ? \"Данные компании\" : \"Личные данные\",\n icon: _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_25__[\"default\"]\n },\n {\n id: \"communication\",\n label: \"Связь\",\n icon: _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_26__[\"default\"]\n },\n (isMaster || isCompany) && {\n id: \"competencies\",\n label: \"Компетенции\",\n icon: _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_27__[\"default\"]\n },\n (isMaster || isCompany) && user.location && {\n id: \"location\",\n label: \"Локация\",\n icon: _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_28__[\"default\"]\n },\n (isMaster || isCompany) && {\n id: \"schedule\",\n label: \"График работы\",\n icon: _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_29__[\"default\"]\n },\n {\n id: \"account\",\n label: \"Управление аккаунтом\",\n icon: _barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_30__[\"default\"]\n }\n ].filter(Boolean);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"container max-w-5xl py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col md:flex-row md:items-center justify-between gap-4 mb-8 bg-card p-6 rounded-2xl shadow-sm border\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-shrink-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_avatar_uploader__WEBPACK_IMPORTED_MODULE_13__.AvatarUploader, {\n currentAvatarUrl: user.avatarUrl,\n onUploadSuccess: ()=>getProfile()\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 197,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 196,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-3xl font-bold mb-1\",\n children: isCompany ? user.companyName : user.fullName\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 203,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap items-center gap-3 mt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_badge__WEBPACK_IMPORTED_MODULE_5__.Badge, {\n variant: \"secondary\",\n className: \"text-sm font-medium px-3 py-0.5 whitespace-nowrap bg-muted hover:bg-muted text-muted-foreground border-transparent\",\n children: translateRole(getHighestRole(user.roles))\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 207,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_rating__WEBPACK_IMPORTED_MODULE_15__.Rating, {\n value: rating,\n size: \"sm\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 210,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 206,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 202,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 195,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 194,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col md:flex-row gap-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full md:w-64 flex flex-col gap-2 flex-shrink-0\",\n children: [\n showBecomePerformer && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.Card, {\n className: \"border-blue-200 bg-blue-50/30 dark:bg-blue-900/10 dark:border-blue-800/50 shadow-sm overflow-hidden relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardHeader, {\n className: \"pb-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardTitle, {\n className: \"text-base text-blue-700 dark:text-blue-400 flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_31__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 224,\n columnNumber: 41\n }, this),\n \"Стать исполнителем\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 223,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 222,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardContent, {\n className: \"pb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-muted-foreground mb-4\",\n children: \"Начните получать заказы и зарабатывать прямо сейчас.\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 229,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n className: \"w-full bg-blue-600 hover:bg-blue-700 text-white shadow-md shadow-blue-500/20\",\n onClick: ()=>router.push(\"/dashboard/become-performer\"),\n disabled: isLoading,\n size: \"sm\",\n children: isLoading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n className: \"mr-2 h-4 w-4 animate-spin\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 236,\n columnNumber: 54\n }, this) : \"Перейти\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 230,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 228,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 221,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 220,\n columnNumber: 25\n }, this),\n tabs.map((tab)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: (0,_lib_utils__WEBPACK_IMPORTED_MODULE_21__.cn)(\"flex items-center gap-3 px-4 py-3 rounded-xl transition-all text-sm font-medium\", activeTab === tab.id ? \"bg-primary/10 text-primary\" : \"text-muted-foreground hover:bg-muted hover:text-foreground\"),\n onClick: ()=>setActiveTab(tab.id),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(tab.icon, {\n className: (0,_lib_utils__WEBPACK_IMPORTED_MODULE_21__.cn)(\"w-5 h-5\", activeTab === tab.id ? \"text-primary\" : \"text-muted-foreground\")\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 253,\n columnNumber: 29\n }, this),\n tab.label\n ]\n }, tab.id, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 243,\n columnNumber: 25\n }, this))\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 218,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: [\n activeTab === \"personal\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardHeader, {\n className: \"flex flex-row items-center justify-between space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardTitle, {\n className: \"text-xl\",\n children: isCompany ? \"Данные компании\" : \"Личные данные\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 265,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardDescription, {\n children: \"Основная информация вашего профиля\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 268,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 264,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n variant: \"ghost\",\n size: \"sm\",\n onClick: ()=>{\n if (!isEditingProfile && user) {\n profileForm.reset({\n firstName: user.firstName,\n lastName: user.lastName,\n patronymic: user.patronymic || \"\",\n companyName: user.companyName || \"\",\n inn: user.inn || \"\",\n description: user.description || \"\"\n });\n }\n setIsEditingProfile(!isEditingProfile);\n },\n children: isEditingProfile ? \"Отмена\" : \"Редактировать\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 270,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 263,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardContent, {\n children: isEditingProfile ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.Form, {\n ...profileForm,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: profileForm.handleSubmit(onProfileSubmit),\n className: \"space-y-4\",\n children: [\n isCompany ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormField, {\n control: profileForm.control,\n name: \"companyName\",\n render: (param)=>{\n let { field } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormItem, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormLabel, {\n children: \"Название компании\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 301,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormControl, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_9__.Input, {\n value: field.value || \"\",\n onChange: field.onChange\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 303,\n columnNumber: 69\n }, void 0)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 302,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormMessage, {}, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 305,\n columnNumber: 65\n }, void 0)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 300,\n columnNumber: 61\n }, void 0);\n }\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 296,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormField, {\n control: profileForm.control,\n name: \"inn\",\n render: (param)=>{\n let { field } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormItem, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormLabel, {\n children: \"ИНН\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 314,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormControl, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_9__.Input, {\n placeholder: \"1234567890\",\n maxLength: 10,\n value: field.value || \"\",\n onChange: field.onChange\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 316,\n columnNumber: 69\n }, void 0)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 315,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormMessage, {}, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 318,\n columnNumber: 65\n }, void 0)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 313,\n columnNumber: 61\n }, void 0);\n }\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 309,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 295,\n columnNumber: 49\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormField, {\n control: profileForm.control,\n name: \"firstName\",\n render: (param)=>{\n let { field } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormItem, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormLabel, {\n children: \"Имя\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 330,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormControl, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_9__.Input, {\n value: field.value || \"\",\n onChange: field.onChange\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 332,\n columnNumber: 69\n }, void 0)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 331,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormMessage, {}, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 334,\n columnNumber: 65\n }, void 0)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 329,\n columnNumber: 61\n }, void 0);\n }\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 325,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormField, {\n control: profileForm.control,\n name: \"lastName\",\n render: (param)=>{\n let { field } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormItem, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormLabel, {\n children: \"Фамилия\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 343,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormControl, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_9__.Input, {\n value: field.value || \"\",\n onChange: field.onChange\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 345,\n columnNumber: 69\n }, void 0)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 344,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormMessage, {}, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 347,\n columnNumber: 65\n }, void 0)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 342,\n columnNumber: 61\n }, void 0);\n }\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 338,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormField, {\n control: profileForm.control,\n name: \"patronymic\",\n render: (param)=>{\n let { field } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormItem, {\n className: \"md:col-span-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormLabel, {\n children: \"Отчество\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 356,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormControl, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_9__.Input, {\n placeholder: \"При наличии\",\n value: field.value || \"\",\n onChange: field.onChange\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 358,\n columnNumber: 69\n }, void 0)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 357,\n columnNumber: 65\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormMessage, {}, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 360,\n columnNumber: 65\n }, void 0)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 355,\n columnNumber: 61\n }, void 0);\n }\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 351,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 324,\n columnNumber: 49\n }, this),\n (isMaster || isCompany) && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormField, {\n control: profileForm.control,\n name: \"description\",\n render: (param)=>{\n let { field } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormItem, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormLabel, {\n children: \"Описание\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 372,\n columnNumber: 61\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormControl, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_rich_text_editor__WEBPACK_IMPORTED_MODULE_10__.RichTextEditor, {\n content: field.value || \"\",\n onChange: field.onChange,\n placeholder: isCompany ? \"Расскажите о вашей компании...\" : \"Расскажите о себе и вашем опыте...\",\n maxLength: 2048\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 374,\n columnNumber: 65\n }, void 0)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 373,\n columnNumber: 61\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormMessage, {}, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 384,\n columnNumber: 61\n }, void 0)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 371,\n columnNumber: 57\n }, void 0);\n }\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 367,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pt-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n type: \"submit\",\n disabled: isLoading,\n children: [\n isLoading && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n className: \"mr-2 h-4 w-4 animate-spin\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 391,\n columnNumber: 67\n }, this),\n \"Сохранить изменения\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 390,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 389,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 293,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 292,\n columnNumber: 37\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"divide-y divide-border text-sm\",\n children: isCompany ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex py-3 justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground\",\n children: \"Название компании\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 402,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: user.companyName\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 403,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 401,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex py-3 justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground\",\n children: \"ИНН\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 406,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: user.inn || \"—\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 407,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 405,\n columnNumber: 49\n }, this),\n (isMaster || isCompany) && user.description && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"py-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_description_viewer__WEBPACK_IMPORTED_MODULE_16__.DescriptionViewer, {\n description: user.description,\n maxLines: 10\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 411,\n columnNumber: 57\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 410,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex py-3 justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground\",\n children: \"Имя\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 418,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: user.firstName\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 419,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 417,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex py-3 justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground\",\n children: \"Фамилия\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 422,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: user.lastName\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 423,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 421,\n columnNumber: 49\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex py-3 justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground\",\n children: \"Отчество\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 426,\n columnNumber: 53\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: user.patronymic || \"—\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 427,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 425,\n columnNumber: 49\n }, this),\n (isMaster || isCompany) && user.description && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"py-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_description_viewer__WEBPACK_IMPORTED_MODULE_16__.DescriptionViewer, {\n description: user.description,\n maxLines: 10\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 431,\n columnNumber: 57\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 430,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 398,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 290,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 262,\n columnNumber: 25\n }, this),\n activeTab === \"communication\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardHeader, {\n className: \"flex flex-row items-center justify-between space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardTitle, {\n className: \"text-xl\",\n children: \"Связь\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 446,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardDescription, {\n children: \"Контактные данные\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 447,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 445,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n variant: \"ghost\",\n size: \"sm\",\n onClick: ()=>setIsChangingPhone(!isChangingPhone),\n children: isChangingPhone ? \"Отмена\" : \"Изменить\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 449,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 444,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardContent, {\n children: isChangingPhone ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.Form, {\n ...phoneForm,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: phoneForm.handleSubmit(onPhoneSubmit),\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormField, {\n control: phoneForm.control,\n name: \"newPhone\",\n render: (param)=>{\n let { field } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormItem, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormLabel, {\n children: \"Новый номер телефона\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 462,\n columnNumber: 57\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormControl, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_9__.Input, {\n placeholder: \"+7\",\n value: field.value || \"\",\n onChange: field.onChange\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 464,\n columnNumber: 61\n }, void 0)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 463,\n columnNumber: 57\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_form__WEBPACK_IMPORTED_MODULE_11__.FormMessage, {}, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 470,\n columnNumber: 57\n }, void 0)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 461,\n columnNumber: 53\n }, void 0);\n }\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 457,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n type: \"submit\",\n disabled: isLoading,\n children: [\n isLoading && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n className: \"mr-2 h-4 w-4 animate-spin\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 475,\n columnNumber: 63\n }, this),\n \"Подтвердить\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 474,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 456,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 455,\n columnNumber: 37\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex py-2 justify-between items-center text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground\",\n children: \"Телефон\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 482,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_12__.formatPhoneNumber)(user.phone)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 483,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 481,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 453,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 443,\n columnNumber: 25\n }, this),\n activeTab === \"competencies\" && (isMaster || isCompany) && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardHeader, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardTitle, {\n className: \"text-xl\",\n children: \"Компетенции\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 493,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardDescription, {\n children: \"Укажите навыки и специализации для быстрого поиска вас клиентами.\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 494,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 492,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardContent, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_tag_input__WEBPACK_IMPORTED_MODULE_14__.TagInput, {\n value: user.competencies || [],\n onChange: updateCompetencies,\n placeholder: \"Например: Сантехник, Электрик...\",\n maxTags: 50\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 497,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 496,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 491,\n columnNumber: 25\n }, this),\n activeTab === \"location\" && (isMaster || isCompany) && user.location && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardHeader, {\n className: \"flex flex-row items-center justify-between space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardTitle, {\n className: \"text-xl\",\n children: \"Локация\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 511,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardDescription, {\n children: \"Где вы сейчас находитесь и работаете\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 512,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 510,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n variant: \"ghost\",\n size: \"sm\",\n onClick: ()=>setIsLocationModalOpen(true),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_32__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 519,\n columnNumber: 37\n }, this),\n \"Изменить\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 514,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 509,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardContent, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-muted/30 rounded-lg border\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-muted-foreground mb-1\",\n children: \"Базовая локация (домашний регион):\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 526,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-base font-medium flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_28__[\"default\"], {\n className: \"h-4 w-4 text-primary\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 528,\n columnNumber: 45\n }, this),\n user.location\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 527,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 525,\n columnNumber: 37\n }, this),\n user.currentLocation && user.currentLocation !== user.location && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-blue-50/50 dark:bg-blue-900/10 rounded-lg border border-blue-100 dark:border-blue-900\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-muted-foreground mb-1\",\n children: \"Фактическое местоположение сейчас:\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 534,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-base font-medium text-blue-700 dark:text-blue-400 flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_28__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 536,\n columnNumber: 49\n }, this),\n user.currentLocation\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 535,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 533,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 524,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 523,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 508,\n columnNumber: 25\n }, this),\n activeTab === \"schedule\" && (isMaster || isCompany) && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardHeader, {\n className: \"flex flex-row items-center justify-between space-y-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardTitle, {\n className: \"text-xl\",\n children: \"График работы\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 550,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardDescription, {\n children: \"Укажите, в какие дни и часы вы доступны для заказов\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 551,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 549,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n variant: \"ghost\",\n size: \"sm\",\n onClick: ()=>setIsScheduleModalOpen(true),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_32__[\"default\"], {\n className: \"h-4 w-4 mr-1\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 558,\n columnNumber: 37\n }, this),\n \"Изменить\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 553,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 548,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardContent, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_schedule_viewer__WEBPACK_IMPORTED_MODULE_17__.ScheduleViewer, {\n workSchedule: user.workSchedule\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 563,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 562,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 547,\n columnNumber: 25\n }, this),\n activeTab === \"account\" && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardHeader, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardTitle, {\n className: \"text-xl\",\n children: \"Управление аккаунтом\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 571,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardDescription, {\n children: \"Настройки безопасности и удаление данных профиля.\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 574,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 570,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_4__.CardContent, {\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-muted/30 rounded-lg border border-border\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-medium mb-2 flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_33__[\"default\"], {\n className: \"h-4 w-4 text-muted-foreground\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 581,\n columnNumber: 41\n }, this),\n \"Сменить пароль\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 580,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-muted-foreground mb-4\",\n children: \"Регулярная смена пароля помогает защитить ваш аккаунт от несанкционированного доступа.\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 584,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n variant: \"outline\",\n onClick: ()=>setIsPasswordModalOpen(true),\n children: \"Изменить пароль\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 587,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 579,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 rounded-lg border border-destructive/30 bg-destructive/10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-medium text-destructive mb-2 flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Award_Clock_Edit_Hammer_Key_Loader2_MapPin_Phone_ShieldCheck_Trash2_User_lucide_react__WEBPACK_IMPORTED_MODULE_34__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 597,\n columnNumber: 41\n }, this),\n \"Удаление профиля\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 596,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-muted-foreground mb-4\",\n children: \"Удаление аккаунта необратимо. При удалении будут стерты все ваши данные, услуги и история работ.\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 600,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n variant: \"destructive\",\n onClick: ()=>{\n if (confirm(\"Вы полностью уверены, что хотите удалить аккаунт? Это действие необратимо и приведет к потере всех данных.\")) {\n logout();\n router.push(\"/\");\n }\n },\n children: \"Безвозвратно удалить аккаунт\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 603,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 595,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 578,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 569,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 260,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 216,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_change_password_modal__WEBPACK_IMPORTED_MODULE_18__.ChangePasswordModal, {\n open: isPasswordModalOpen,\n onOpenChange: setIsPasswordModalOpen\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 621,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_location_modal__WEBPACK_IMPORTED_MODULE_19__.LocationModal, {\n open: isLocationModalOpen,\n onOpenChange: setIsLocationModalOpen,\n initialLocation: user.location,\n initialCurrentLocation: user.currentLocation\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 626,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_schedule_modal__WEBPACK_IMPORTED_MODULE_20__.ScheduleModal, {\n open: isScheduleModalOpen,\n onOpenChange: setIsScheduleModalOpen,\n initialIsAlwaysReady: (_user_workSchedule = user.workSchedule) === null || _user_workSchedule === void 0 ? void 0 : _user_workSchedule.isAlwaysReady,\n initialSchedulePerDay: (_user_workSchedule1 = user.workSchedule) === null || _user_workSchedule1 === void 0 ? void 0 : _user_workSchedule1.schedulePerDay\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 633,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\app\\\\dashboard\\\\profile\\\\page.tsx\",\n lineNumber: 193,\n columnNumber: 9\n }, this);\n}\n_s(ProfilePage, \"+3pPlGI7R0dnMRI7S1kvVbeCNbw=\", false, function() {\n return [\n _entities_session_store__WEBPACK_IMPORTED_MODULE_2__.useSessionStore,\n next_navigation__WEBPACK_IMPORTED_MODULE_6__.useRouter,\n _components_ui_rating__WEBPACK_IMPORTED_MODULE_15__.useRandomRating,\n react_hook_form__WEBPACK_IMPORTED_MODULE_23__.useForm,\n react_hook_form__WEBPACK_IMPORTED_MODULE_23__.useForm\n ];\n});\n_c = ProfilePage;\nvar _c;\n$RefreshReg$(_c, \"ProfilePage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9hcHAvZGFzaGJvYXJkL3Byb2ZpbGUvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRThCO0FBQzRCO0FBQ1g7QUFDaUQ7QUFDbkQ7QUFDNEU7QUFFOUU7QUFDRjtBQUNZO0FBQzdCO0FBQ007QUFFZTtBQUNvQjtBQUNvQztBQUMvQztBQUNVO0FBQ1o7QUFDWTtBQUNNO0FBQ047QUFDVztBQUNiO0FBQ0E7QUFDOUI7QUFFaEMsTUFBTTRDLGdCQUFnQnJCLHdDQUFRLENBQUM7SUFDM0J1QixXQUFXdkIsd0NBQVEsR0FDZHlCLEdBQUcsQ0FBQyxHQUFHLDBDQUNQQyxLQUFLLENBQUMsYUFBYTtJQUN4QkMsVUFBVTNCLHdDQUFRLEdBQ2J5QixHQUFHLENBQUMsR0FBRyw4Q0FDUEMsS0FBSyxDQUFDLGFBQWE7SUFDeEJFLFlBQVk1Qix3Q0FBUSxHQUNmNkIsUUFBUSxHQUNSQyxNQUFNLENBQUMsQ0FBQ0MsTUFBUSxDQUFDQSxPQUFPLFlBQVlDLElBQUksQ0FBQ0QsTUFBTTtRQUM1Q0UsU0FBUztJQUNiO0lBQ0pDLGFBQWFsQyx3Q0FBUSxHQUFHNkIsUUFBUTtJQUNoQ00sS0FBS25DLHdDQUFRLEdBQUc2QixRQUFRO0lBQ3hCTyxhQUFhcEMsd0NBQVEsR0FDaEJxQyxHQUFHLENBQUMsTUFBTSw2Q0FDVlIsUUFBUTtBQUNqQjtBQUVBLE1BQU1TLGNBQWN0Qyx3Q0FBUSxDQUFDO0lBQ3pCdUMsVUFBVXZDLHdDQUFRLEdBQUd5QixHQUFHLENBQUMsSUFBSTtBQUNqQztBQUtlLFNBQVNlO1FBb2tCY0Msb0JBQ0NBOztJQXBrQm5DLE1BQU0sRUFBRUEsSUFBSSxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsYUFBYSxFQUFFQyxVQUFVLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLGtCQUFrQixFQUFFLEdBQUd2RSx3RUFBZUE7SUFD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T0E7UUFZVEEscURBQU9BOzs7S0F0Q0wwQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXHNyY1xcYXBwXFxkYXNoYm9hcmRcXHByb2ZpbGVcXHBhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiXHJcblxyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxyXG5pbXBvcnQgeyB1c2VTZXNzaW9uU3RvcmUgfSBmcm9tIFwiQC9lbnRpdGllcy9zZXNzaW9uL3N0b3JlXCJcclxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9idXR0b25cIlxyXG5pbXBvcnQgeyBDYXJkLCBDYXJkQ29udGVudCwgQ2FyZERlc2NyaXB0aW9uLCBDYXJkSGVhZGVyLCBDYXJkVGl0bGUgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2NhcmRcIlxyXG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvYmFkZ2VcIlxyXG5pbXBvcnQgeyBMb2FkZXIyLCBVc2VyLCBQaG9uZSwgU2hpZWxkQ2hlY2ssIEhhbW1lciwgQXdhcmQsIENsb2NrLCBNYXBQaW4sIFRyYXNoMiwgRWRpdCwgS2V5LCBMb2dPdXQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcclxuXHJcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIlxyXG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSBcInJlYWN0LWhvb2stZm9ybVwiXHJcbmltcG9ydCB7IHpvZFJlc29sdmVyIH0gZnJvbSBcIkBob29rZm9ybS9yZXNvbHZlcnMvem9kXCJcclxuaW1wb3J0ICogYXMgeiBmcm9tIFwiem9kXCJcclxuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCJcclxuXHJcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9pbnB1dFwiXHJcbmltcG9ydCB7IFJpY2hUZXh0RWRpdG9yIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9yaWNoLXRleHQtZWRpdG9yXCJcclxuaW1wb3J0IHsgRm9ybSwgRm9ybUNvbnRyb2wsIEZvcm1GaWVsZCwgRm9ybUl0ZW0sIEZvcm1MYWJlbCwgRm9ybU1lc3NhZ2UgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2Zvcm1cIlxyXG5pbXBvcnQgeyBmb3JtYXRQaG9uZU51bWJlciB9IGZyb20gXCJAL3NoYXJlZC9saWIvdXRpbHNcIlxyXG5pbXBvcnQgeyBBdmF0YXJVcGxvYWRlciB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvYXZhdGFyLXVwbG9hZGVyXCJcclxuaW1wb3J0IHsgVGFnSW5wdXQgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL3RhZy1pbnB1dFwiXHJcbmltcG9ydCB7IFJhdGluZywgdXNlUmFuZG9tUmF0aW5nIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9yYXRpbmdcIlxyXG5pbXBvcnQgeyBEZXNjcmlwdGlvblZpZXdlciB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvZGVzY3JpcHRpb24tdmlld2VyXCJcclxuaW1wb3J0IHsgU2NoZWR1bGVWaWV3ZXIgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL3NjaGVkdWxlLXZpZXdlclwiXHJcbmltcG9ydCB7IENoYW5nZVBhc3N3b3JkTW9kYWwgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2NoYW5nZS1wYXNzd29yZC1tb2RhbFwiXHJcbmltcG9ydCB7IExvY2F0aW9uTW9kYWwgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2xvY2F0aW9uLW1vZGFsXCJcclxuaW1wb3J0IHsgU2NoZWR1bGVNb2RhbCB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvc2NoZWR1bGUtbW9kYWxcIlxyXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXHJcblxyXG5jb25zdCBwcm9maWxlU2NoZW1hID0gei5vYmplY3Qoe1xyXG4gICAgZmlyc3ROYW1lOiB6LnN0cmluZygpXHJcbiAgICAgICAgLm1pbigyLCBcItCY0LzRjyDQtNC+0LvQttC90L4g0YHQvtC00LXRgNC20LDRgtGMINC80LjQvdC40LzRg9C8IDIg0YHQuNC80LLQvtC70LBcIilcclxuICAgICAgICAucmVnZXgoL15bXjAtOV0qJC8sIFwi0JjQvNGPINC90LUg0LTQvtC70LbQvdC+INGB0L7QtNC10YDQttCw0YLRjCDRhtC40YTRgNGLXCIpLFxyXG4gICAgbGFzdE5hbWU6IHouc3RyaW5nKClcclxuICAgICAgICAubWluKDIsIFwi0KTQsNC80LjQu9C40Y8g0LTQvtC70LbQvdCwINGB0L7QtNC10YDQttCw0YLRjCDQvNC40L3QuNC80YPQvCAyINGB0LjQvNCy0L7Qu9CwXCIpXHJcbiAgICAgICAgLnJlZ2V4KC9eW14wLTldKiQvLCBcItCk0LDQvNC40LvQuNGPINC90LUg0LTQvtC70LbQvdCwINGB0L7QtNC10YDQttCw0YLRjCDRhtC40YTRgNGLXCIpLFxyXG4gICAgcGF0cm9ueW1pYzogei5zdHJpbmcoKVxyXG4gICAgICAgIC5vcHRpb25hbCgpXHJcbiAgICAgICAgLnJlZmluZSgodmFsKSA9PiAhdmFsIHx8IC9eW14wLTldKiQvLnRlc3QodmFsKSwge1xyXG4gICAgICAgICAgICBtZXNzYWdlOiBcItCe0YLRh9C10YHRgtCy0L4g0L3QtSDQtNC+0LvQttC90L4g0YHQvtC00LXRgNC20LDRgtGMINGG0LjRhNGA0YtcIlxyXG4gICAgICAgIH0pLFxyXG4gICAgY29tcGFueU5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcclxuICAgIGlubjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxyXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKClcclxuICAgICAgICAubWF4KDIwNDgsIFwi0J7Qv9C40YHQsNC90LjQtSDQvdC1INC80L7QttC10YIg0L/RgNC10LLRi9GI0LDRgtGMIDIwNDgg0YHQuNC80LLQvtC70L7QslwiKVxyXG4gICAgICAgIC5vcHRpb25hbCgpLFxyXG59KVxyXG5cclxuY29uc3QgcGhvbmVTY2hlbWEgPSB6Lm9iamVjdCh7XHJcbiAgICBuZXdQaG9uZTogei5zdHJpbmcoKS5taW4oMTAsIFwi0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwINC00L7Qu9C20LXQvSDRgdC+0LTQtdGA0LbQsNGC0Ywg0LzQuNC90LjQvNGD0LwgMTAg0YbQuNGE0YBcIiksXHJcbn0pXHJcblxyXG50eXBlIFByb2ZpbGVWYWx1ZXMgPSB6LmluZmVyPHR5cGVvZiBwcm9maWxlU2NoZW1hPlxyXG50eXBlIFBob25lVmFsdWVzID0gei5pbmZlcjx0eXBlb2YgcGhvbmVTY2hlbWE+XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQcm9maWxlUGFnZSgpIHtcclxuICAgIGNvbnN0IHsgdXNlciwgaXNBdXRoLCBpc0xvYWRpbmcsIGlzSW5pdGlhbGl6ZWQsIGdldFByb2ZpbGUsIHVwZGF0ZVByb2ZpbGUsIGNoYW5nZVBob25lLCBsb2dvdXQsIHVwZGF0ZUNvbXBldGVuY2llcyB9ID0gdXNlU2Vzc2lvblN0b3JlKClcclxuICAgIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXHJcblxyXG4gICAgY29uc3QgW2FjdGl2ZVRhYiwgc2V0QWN0aXZlVGFiXSA9IFJlYWN0LnVzZVN0YXRlKFwicGVyc29uYWxcIilcclxuXHJcbiAgICBjb25zdCBbaXNFZGl0aW5nUHJvZmlsZSwgc2V0SXNFZGl0aW5nUHJvZmlsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcclxuICAgIGNvbnN0IFtpc0NoYW5naW5nUGhvbmUsIHNldElzQ2hhbmdpbmdQaG9uZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcclxuXHJcbiAgICAvLyDQnNC+0LTQsNC70LrQuFxyXG4gICAgY29uc3QgW2lzUGFzc3dvcmRNb2RhbE9wZW4sIHNldElzUGFzc3dvcmRNb2RhbE9wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpXHJcbiAgICBjb25zdCBbaXNMb2NhdGlvbk1vZGFsT3Blbiwgc2V0SXNMb2NhdGlvbk1vZGFsT3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcclxuICAgIGNvbnN0IFtpc1NjaGVkdWxlTW9kYWxPcGVuLCBzZXRJc1NjaGVkdWxlTW9kYWxPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKVxyXG5cclxuICAgIGNvbnN0IHJhdGluZyA9IHVzZVJhbmRvbVJhdGluZygpXHJcblxyXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoIWlzSW5pdGlhbGl6ZWQpIHJldHVyblxyXG5cclxuICAgICAgICBpZiAoIWlzTG9hZGluZyAmJiAhaXNBdXRoKSB7XHJcbiAgICAgICAgICAgIHJvdXRlci5wdXNoKFwiL2F1dGgvbG9naW5cIilcclxuICAgICAgICB9IGVsc2UgaWYgKGlzQXV0aCAmJiAhdXNlcikge1xyXG4gICAgICAgICAgICBnZXRQcm9maWxlKClcclxuICAgICAgICB9XHJcbiAgICB9LCBbaXNBdXRoLCBpc0xvYWRpbmcsIHVzZXIsIHJvdXRlciwgaXNJbml0aWFsaXplZF0pXHJcblxyXG4gICAgY29uc3QgcHJvZmlsZUZvcm0gPSB1c2VGb3JtPFByb2ZpbGVWYWx1ZXM+KHtcclxuICAgICAgICByZXNvbHZlcjogem9kUmVzb2x2ZXIocHJvZmlsZVNjaGVtYSksXHJcbiAgICAgICAgdmFsdWVzOiB7XHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogdXNlcj8uZmlyc3ROYW1lIHx8IFwiXCIsXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiB1c2VyPy5sYXN0TmFtZSB8fCBcIlwiLFxyXG4gICAgICAgICAgICBwYXRyb255bWljOiB1c2VyPy5wYXRyb255bWljIHx8IFwiXCIsXHJcbiAgICAgICAgICAgIGNvbXBhbnlOYW1lOiB1c2VyPy5jb21wYW55TmFtZSB8fCBcIlwiLFxyXG4gICAgICAgICAgICBpbm46IHVzZXI/LmlubiB8fCBcIlwiLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdXNlcj8uZGVzY3JpcHRpb24gfHwgXCJcIixcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IHBob25lRm9ybSA9IHVzZUZvcm08UGhvbmVWYWx1ZXM+KHtcclxuICAgICAgICByZXNvbHZlcjogem9kUmVzb2x2ZXIocGhvbmVTY2hlbWEpLFxyXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6IHtcclxuICAgICAgICAgICAgbmV3UGhvbmU6IHVzZXI/LnBob25lIHx8IFwiXCIsXHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICh1c2VyPy5waG9uZSkge1xyXG4gICAgICAgICAgICBwaG9uZUZvcm0ucmVzZXQoeyBuZXdQaG9uZTogdXNlci5waG9uZSB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sIFt1c2VyPy5waG9uZSwgcGhvbmVGb3JtXSlcclxuXHJcbiAgICBhc3luYyBmdW5jdGlvbiBvblByb2ZpbGVTdWJtaXQodmFsdWVzOiBQcm9maWxlVmFsdWVzKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdXBkYXRlUHJvZmlsZSh2YWx1ZXMpXHJcbiAgICAgICAgICAgIHNldElzRWRpdGluZ1Byb2ZpbGUoZmFsc2UpXHJcbiAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCLQn9GA0L7RhNC40LvRjCDRg9GB0L/QtdGI0L3QviDQvtCx0L3QvtCy0LvQtdC9XCIpXHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdG9hc3QuZXJyb3IoXCLQntGI0LjQsdC60LAg0L/RgNC4INC+0LHQvdC+0LLQu9C10L3QuNC4INC/0YDQvtGE0LjQu9GPXCIpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIG9uUGhvbmVTdWJtaXQodmFsdWVzOiBQaG9uZVZhbHVlcykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNoYW5nZVBob25lKHZhbHVlcy5uZXdQaG9uZSlcclxuICAgICAgICAgICAgc2V0SXNDaGFuZ2luZ1Bob25lKGZhbHNlKVxyXG4gICAgICAgICAgICB0b2FzdC5zdWNjZXNzKFwi0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwINGD0YHQv9C10YjQvdC+INC40LfQvNC10L3QtdC9XCIpXHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdG9hc3QuZXJyb3IoXCLQntGI0LjQsdC60LAg0L/RgNC4INGB0LzQtdC90LUg0L3QvtC80LXRgNCwINGC0LXQu9C10YTQvtC90LBcIilcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzTG9hZGluZyAmJiAhdXNlcikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLVs1MHZoXSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxMb2FkZXIyIGNsYXNzTmFtZT1cImgtOCB3LTggYW5pbWF0ZS1zcGluIHRleHQtYmx1ZS02MDBcIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF1c2VyKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgcHktMTAgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbWItNFwiPtCf0L7QttCw0LvRg9C50YHRgtCwLCDQstC+0LnQtNC40YLQtSDQsiDRgdC40YHRgtC10LzRgzwvaDE+XHJcbiAgICAgICAgICAgICAgICA8QnV0dG9uIGFzQ2hpbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIi9hdXRoL2xvZ2luXCI+0JLQvtC50YLQuDwvYT5cclxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXNNYXN0ZXIgPSB1c2VyLnJvbGVzLmluY2x1ZGVzKFwiTWFzdGVyXCIpIHx8IHVzZXIucm9sZXMuaW5jbHVkZXMoXCJDYW5kaWRhdGVcIilcclxuICAgIGNvbnN0IGlzQ29tcGFueSA9IHVzZXIucm9sZXMuaW5jbHVkZXMoXCJDb21wYW55XCIpXHJcbiAgICBjb25zdCBpc0NhbmRpZGF0ZSA9IHVzZXIucm9sZXMuaW5jbHVkZXMoXCJDYW5kaWRhdGVcIilcclxuICAgIGNvbnN0IHNob3dCZWNvbWVQZXJmb3JtZXIgPSAhaXNNYXN0ZXIgJiYgIWlzQ2FuZGlkYXRlICYmICFpc0NvbXBhbnlcclxuXHJcbiAgICBjb25zdCB0cmFuc2xhdGVSb2xlID0gKHJvbGU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgY29uc3Qgcm9sZVRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgICAgICAgXCJDbGllbnRcIjogXCLQmtC70LjQtdC90YJcIixcclxuICAgICAgICAgICAgXCJNYXN0ZXJcIjogXCLQnNCw0YHRgtC10YBcIixcclxuICAgICAgICAgICAgXCJDYW5kaWRhdGVcIjogXCLQmtCw0L3QtNC40LTQsNGCINCyINC80LDRgdGC0LXRgNCwXCIsXHJcbiAgICAgICAgICAgIFwiQ29tcGFueVwiOiBcItCa0L7QvNC/0LDQvdC40Y9cIixcclxuICAgICAgICAgICAgXCJBZG1pblwiOiBcItCQ0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGAXCIsXHJcbiAgICAgICAgICAgIFwiVXNlclwiOiBcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjFwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByb2xlVHJhbnNsYXRpb25zW3JvbGVdIHx8IHJvbGVcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBnZXRIaWdoZXN0Um9sZSA9IChyb2xlczogc3RyaW5nW10pOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGlmICghcm9sZXMgfHwgcm9sZXMubGVuZ3RoID09PSAwKSByZXR1cm4gXCJVc2VyXCJcclxuXHJcbiAgICAgICAgY29uc3Qgcm9sZVByaW9yaXR5ID0gW1xyXG4gICAgICAgICAgICBcIkFkbWluXCIsXHJcbiAgICAgICAgICAgIFwiQ29tcGFueVwiLFxyXG4gICAgICAgICAgICBcIk1hc3RlclwiLFxyXG4gICAgICAgICAgICBcIkNhbmRpZGF0ZVwiLFxyXG4gICAgICAgICAgICBcIkNsaWVudFwiLFxyXG4gICAgICAgICAgICBcIlVzZXJcIlxyXG4gICAgICAgIF1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCByb2xlIG9mIHJvbGVQcmlvcml0eSkge1xyXG4gICAgICAgICAgICBpZiAocm9sZXMuaW5jbHVkZXMocm9sZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByb2xlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJvbGVzWzBdXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFicyA9IFtcclxuICAgICAgICB7IGlkOiBcInBlcnNvbmFsXCIsIGxhYmVsOiBpc0NvbXBhbnkgPyBcItCU0LDQvdC90YvQtSDQutC+0LzQv9Cw0L3QuNC4XCIgOiBcItCb0LjRh9C90YvQtSDQtNCw0L3QvdGL0LVcIiwgaWNvbjogVXNlciB9LFxyXG4gICAgICAgIHsgaWQ6IFwiY29tbXVuaWNhdGlvblwiLCBsYWJlbDogXCLQodCy0Y/Qt9GMXCIsIGljb246IFBob25lIH0sXHJcbiAgICAgICAgKGlzTWFzdGVyIHx8IGlzQ29tcGFueSkgJiYgeyBpZDogXCJjb21wZXRlbmNpZXNcIiwgbGFiZWw6IFwi0JrQvtC80L/QtdGC0LXQvdGG0LjQuFwiLCBpY29uOiBBd2FyZCB9LFxyXG4gICAgICAgIChpc01hc3RlciB8fCBpc0NvbXBhbnkpICYmIHVzZXIubG9jYXRpb24gJiYgeyBpZDogXCJsb2NhdGlvblwiLCBsYWJlbDogXCLQm9C+0LrQsNGG0LjRj1wiLCBpY29uOiBNYXBQaW4gfSxcclxuICAgICAgICAoaXNNYXN0ZXIgfHwgaXNDb21wYW55KSAmJiB7IGlkOiBcInNjaGVkdWxlXCIsIGxhYmVsOiBcItCT0YDQsNGE0LjQuiDRgNCw0LHQvtGC0YtcIiwgaWNvbjogQ2xvY2sgfSxcclxuICAgICAgICB7IGlkOiBcImFjY291bnRcIiwgbGFiZWw6IFwi0KPQv9GA0LDQstC70LXQvdC40LUg0LDQutC60LDRg9C90YLQvtC8XCIsIGljb246IFNoaWVsZENoZWNrIH0sXHJcbiAgICBdLmZpbHRlcihCb29sZWFuKSBhcyB7IGlkOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcsIGljb246IGFueSB9W11cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyIG1heC13LTV4bCBweS0xMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNCBtYi04IGJnLWNhcmQgcC02IHJvdW5kZWQtMnhsIHNoYWRvdy1zbSBib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhclVwbG9hZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QXZhdGFyVXJsPXt1c2VyLmF2YXRhclVybH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVXBsb2FkU3VjY2Vzcz17KCkgPT4gZ2V0UHJvZmlsZSgpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzQ29tcGFueSA/IHVzZXIuY29tcGFueU5hbWUgOiB1c2VyLmZ1bGxOYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2UgdmFyaWFudD1cInNlY29uZGFyeVwiIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gcHgtMyBweS0wLjUgd2hpdGVzcGFjZS1ub3dyYXAgYmctbXV0ZWQgaG92ZXI6YmctbXV0ZWQgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGJvcmRlci10cmFuc3BhcmVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2xhdGVSb2xlKGdldEhpZ2hlc3RSb2xlKHVzZXIucm9sZXMpKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmF0aW5nIHZhbHVlPXtyYXRpbmd9IHNpemU9XCJzbVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGdhcC04XCI+XHJcbiAgICAgICAgICAgICAgICB7LyogU2lkZWJhciBUYWJzICovfVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgbWQ6dy02NCBmbGV4IGZsZXgtY29sIGdhcC0yIGZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7c2hvd0JlY29tZVBlcmZvcm1lciAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQgY2xhc3NOYW1lPVwiYm9yZGVyLWJsdWUtMjAwIGJnLWJsdWUtNTAvMzAgZGFyazpiZy1ibHVlLTkwMC8xMCBkYXJrOmJvcmRlci1ibHVlLTgwMC81MCBzaGFkb3ctc20gb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmRIZWFkZXIgY2xhc3NOYW1lPVwicGItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZFRpdGxlIGNsYXNzTmFtZT1cInRleHQtYmFzZSB0ZXh0LWJsdWUtNzAwIGRhcms6dGV4dC1ibHVlLTQwMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhbW1lciBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCh0YLQsNGC0Ywg0LjRgdC/0L7Qu9C90LjRgtC10LvQtdC8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZFRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZEhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZENvbnRlbnQgY2xhc3NOYW1lPVwicGItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtYi00XCI+0J3QsNGH0L3QuNGC0LUg0L/QvtC70YPRh9Cw0YLRjCDQt9Cw0LrQsNC30Ysg0Lgg0LfQsNGA0LDQsdCw0YLRi9Cy0LDRgtGMINC/0YDRj9C80L4g0YHQtdC50YfQsNGBLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLWJsdWUtNjAwIGhvdmVyOmJnLWJsdWUtNzAwIHRleHQtd2hpdGUgc2hhZG93LW1kIHNoYWRvdy1ibHVlLTUwMC8yMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiByb3V0ZXIucHVzaChcIi9kYXNoYm9hcmQvYmVjb21lLXBlcmZvcm1lclwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nID8gPExvYWRlcjIgY2xhc3NOYW1lPVwibXItMiBoLTQgdy00IGFuaW1hdGUtc3BpblwiIC8+IDogXCLQn9C10YDQtdC50YLQuFwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIHt0YWJzLm1hcCh0YWIgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3RhYi5pZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweC00IHB5LTMgcm91bmRlZC14bCB0cmFuc2l0aW9uLWFsbCB0ZXh0LXNtIGZvbnQtbWVkaXVtXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSB0YWIuaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImJnLXByaW1hcnkvMTAgdGV4dC1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcInRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3ZlcjpiZy1tdXRlZCBob3Zlcjp0ZXh0LWZvcmVncm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYih0YWIuaWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFiLmljb24gY2xhc3NOYW1lPXtjbihcInctNSBoLTVcIiwgYWN0aXZlVGFiID09PSB0YWIuaWQgPyBcInRleHQtcHJpbWFyeVwiIDogXCJ0ZXh0LW11dGVkLWZvcmVncm91bmRcIil9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFiLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIHsvKiBNYWluIENvbnRlbnQgQXJlYSAqL31cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi13LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7YWN0aXZlVGFiID09PSBcInBlcnNvbmFsXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkSGVhZGVyIGNsYXNzTmFtZT1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZFRpdGxlIGNsYXNzTmFtZT1cInRleHQteGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0NvbXBhbnkgPyBcItCU0LDQvdC90YvQtSDQutC+0LzQv9Cw0L3QuNC4XCIgOiBcItCb0LjRh9C90YvQtSDQtNCw0L3QvdGL0LVcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkVGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkRGVzY3JpcHRpb24+0J7RgdC90L7QstC90LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjyDQstCw0YjQtdCz0L4g0L/RgNC+0YTQuNC70Y88L0NhcmREZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNFZGl0aW5nUHJvZmlsZSAmJiB1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZUZvcm0ucmVzZXQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHVzZXIuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogdXNlci5sYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0cm9ueW1pYzogdXNlci5wYXRyb255bWljIHx8IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbnlOYW1lOiB1c2VyLmNvbXBhbnlOYW1lIHx8IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubjogdXNlci5pbm4gfHwgXCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHVzZXIuZGVzY3JpcHRpb24gfHwgXCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRWRpdGluZ1Byb2ZpbGUoIWlzRWRpdGluZ1Byb2ZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzRWRpdGluZ1Byb2ZpbGUgPyBcItCe0YLQvNC10L3QsFwiIDogXCLQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjFwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmRDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0VkaXRpbmdQcm9maWxlID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybSB7Li4ucHJvZmlsZUZvcm19PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gb25TdWJtaXQ9e3Byb2ZpbGVGb3JtLmhhbmRsZVN1Ym1pdChvblByb2ZpbGVTdWJtaXQpfSBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNDb21wYW55ID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtwcm9maWxlRm9ybS5jb250cm9sfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjb21wYW55TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoeyBmaWVsZCB9KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtTGFiZWw+0J3QsNC30LLQsNC90LjQtSDQutC+0LzQv9Cw0L3QuNC4PC9Gb3JtTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPElucHV0IHZhbHVlPXtmaWVsZC52YWx1ZSB8fCBcIlwifSBvbkNoYW5nZT17ZmllbGQub25DaGFuZ2V9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm1Db250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1NZXNzYWdlIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybUl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17cHJvZmlsZUZvcm0uY29udHJvbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyh7IGZpZWxkIH0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1JdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1MYWJlbD7QmNCd0J08L0Zvcm1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXQgcGxhY2Vob2xkZXI9XCIxMjM0NTY3ODkwXCIgbWF4TGVuZ3RoPXsxMH0gdmFsdWU9e2ZpZWxkLnZhbHVlIHx8IFwiXCJ9IG9uQ2hhbmdlPXtmaWVsZC5vbkNoYW5nZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybU1lc3NhZ2UgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17cHJvZmlsZUZvcm0uY29udHJvbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlyc3ROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyh7IGZpZWxkIH0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1JdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1MYWJlbD7QmNC80Y88L0Zvcm1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXQgdmFsdWU9e2ZpZWxkLnZhbHVlIHx8IFwiXCJ9IG9uQ2hhbmdlPXtmaWVsZC5vbkNoYW5nZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybU1lc3NhZ2UgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtwcm9maWxlRm9ybS5jb250cm9sfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXN0TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoeyBmaWVsZCB9KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtTGFiZWw+0KTQsNC80LjQu9C40Y88L0Zvcm1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXQgdmFsdWU9e2ZpZWxkLnZhbHVlIHx8IFwiXCJ9IG9uQ2hhbmdlPXtmaWVsZC5vbkNoYW5nZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybU1lc3NhZ2UgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtwcm9maWxlRm9ybS5jb250cm9sfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwYXRyb255bWljXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyh7IGZpZWxkIH0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1JdGVtIGNsYXNzTmFtZT1cIm1kOmNvbC1zcGFuLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtTGFiZWw+0J7RgtGH0LXRgdGC0LLQvjwvRm9ybUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1Db250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnB1dCBwbGFjZWhvbGRlcj1cItCf0YDQuCDQvdCw0LvQuNGH0LjQuFwiIHZhbHVlPXtmaWVsZC52YWx1ZSB8fCBcIlwifSBvbkNoYW5nZT17ZmllbGQub25DaGFuZ2V9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm1Db250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1NZXNzYWdlIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybUl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhpc01hc3RlciB8fCBpc0NvbXBhbnkpICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1GaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17cHJvZmlsZUZvcm0uY29udHJvbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyh7IGZpZWxkIH0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtTGFiZWw+0J7Qv9C40YHQsNC90LjQtTwvRm9ybUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRFZGl0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50PXtmaWVsZC52YWx1ZSB8fCBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtmaWVsZC5vbkNoYW5nZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17aXNDb21wYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCLQoNCw0YHRgdC60LDQttC40YLQtSDQviDQstCw0YjQtdC5INC60L7QvNC/0LDQvdC40LguLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwi0KDQsNGB0YHQutCw0LbQuNGC0LUg0L4g0YHQtdCx0LUg0Lgg0LLQsNGI0LXQvCDQvtC/0YvRgtC1Li4uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsyMDQ4fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Gb3JtQ29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1NZXNzYWdlIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB0LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwic3VibWl0XCIgZGlzYWJsZWQ9e2lzTG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIDxMb2FkZXIyIGNsYXNzTmFtZT1cIm1yLTIgaC00IHctNCBhbmltYXRlLXNwaW5cIiAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCh0L7RhdGA0LDQvdC40YLRjCDQuNC30LzQtdC90LXQvdC40Y9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpdmlkZS15IGRpdmlkZS1ib3JkZXIgdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzQ29tcGFueSA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggcHktMyBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkLWZvcmVncm91bmRcIj7QndCw0LfQstCw0L3QuNC1INC60L7QvNC/0LDQvdC40Lg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bVwiPnt1c2VyLmNvbXBhbnlOYW1lfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBweS0zIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPtCY0J3QnTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtXCI+e3VzZXIuaW5uIHx8IFwi4oCUXCJ9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhpc01hc3RlciB8fCBpc0NvbXBhbnkpICYmIHVzZXIuZGVzY3JpcHRpb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJweS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uVmlld2VyIGRlc2NyaXB0aW9uPXt1c2VyLmRlc2NyaXB0aW9ufSBtYXhMaW5lcz17MTB9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHB5LTMganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+0JjQvNGPPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW1cIj57dXNlci5maXJzdE5hbWV9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHB5LTMganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+0KTQsNC80LjQu9C40Y88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bVwiPnt1c2VyLmxhc3ROYW1lfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBweS0zIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPtCe0YLRh9C10YHRgtCy0L48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bVwiPnt1c2VyLnBhdHJvbnltaWMgfHwgXCLigJRcIn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGlzTWFzdGVyIHx8IGlzQ29tcGFueSkgJiYgdXNlci5kZXNjcmlwdGlvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB5LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb25WaWV3ZXIgZGVzY3JpcHRpb249e3VzZXIuZGVzY3JpcHRpb259IG1heExpbmVzPXsxMH0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZENvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB7YWN0aXZlVGFiID09PSBcImNvbW11bmljYXRpb25cIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmRIZWFkZXIgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHNwYWNlLXktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkVGl0bGUgY2xhc3NOYW1lPVwidGV4dC14bFwiPtCh0LLRj9C30Yw8L0NhcmRUaXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmREZXNjcmlwdGlvbj7QmtC+0L3RgtCw0LrRgtC90YvQtSDQtNCw0L3QvdGL0LU8L0NhcmREZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9eygpID0+IHNldElzQ2hhbmdpbmdQaG9uZSghaXNDaGFuZ2luZ1Bob25lKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0NoYW5naW5nUGhvbmUgPyBcItCe0YLQvNC10L3QsFwiIDogXCLQmNC30LzQtdC90LjRgtGMXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRIZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZENvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzQ2hhbmdpbmdQaG9uZSA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm0gey4uLnBob25lRm9ybX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17cGhvbmVGb3JtLmhhbmRsZVN1Ym1pdChvblBob25lU3VibWl0KX0gY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1GaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtwaG9uZUZvcm0uY29udHJvbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5ld1Bob25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoeyBmaWVsZCB9KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1MYWJlbD7QndC+0LLRi9C5INC90L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsDwvRm9ybUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIis3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtmaWVsZC52YWx1ZSB8fCBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2ZpZWxkLm9uQ2hhbmdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1NZXNzYWdlIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm1JdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwic3VibWl0XCIgZGlzYWJsZWQ9e2lzTG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmcgJiYgPExvYWRlcjIgY2xhc3NOYW1lPVwibXItMiBoLTQgdy00IGFuaW1hdGUtc3BpblwiIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQn9C+0LTRgtCy0LXRgNC00LjRgtGMXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggcHktMiBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPtCi0LXQu9C10YTQvtC9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW1cIj57Zm9ybWF0UGhvbmVOdW1iZXIodXNlci5waG9uZSl9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkQ29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHthY3RpdmVUYWIgPT09IFwiY29tcGV0ZW5jaWVzXCIgJiYgKGlzTWFzdGVyIHx8IGlzQ29tcGFueSkgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkVGl0bGUgY2xhc3NOYW1lPVwidGV4dC14bFwiPtCa0L7QvNC/0LXRgtC10L3RhtC40Lg8L0NhcmRUaXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZERlc2NyaXB0aW9uPtCj0LrQsNC20LjRgtC1INC90LDQstGL0LrQuCDQuCDRgdC/0LXRhtC40LDQu9C40LfQsNGG0LjQuCDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LLQsNGBINC60LvQuNC10L3RgtCw0LzQuC48L0NhcmREZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZEhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkQ29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFnSW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3VzZXIuY29tcGV0ZW5jaWVzIHx8IFtdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dXBkYXRlQ29tcGV0ZW5jaWVzfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCd0LDQv9GA0LjQvNC10YA6INCh0LDQvdGC0LXRhdC90LjQuiwg0K3Qu9C10LrRgtGA0LjQui4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFRhZ3M9ezUwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAge2FjdGl2ZVRhYiA9PT0gXCJsb2NhdGlvblwiICYmIChpc01hc3RlciB8fCBpc0NvbXBhbnkpICYmIHVzZXIubG9jYXRpb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkSGVhZGVyIGNsYXNzTmFtZT1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZFRpdGxlIGNsYXNzTmFtZT1cInRleHQteGxcIj7Qm9C+0LrQsNGG0LjRjzwvQ2FyZFRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZERlc2NyaXB0aW9uPtCT0LTQtSDQstGLINGB0LXQudGH0LDRgSDQvdCw0YXQvtC00LjRgtC10YHRjCDQuCDRgNCw0LHQvtGC0LDQtdGC0LU8L0NhcmREZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzTG9jYXRpb25Nb2RhbE9wZW4odHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RWRpdCBjbGFzc05hbWU9XCJoLTQgdy00IG1yLTFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQmNC30LzQtdC90LjRgtGMXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRIZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZENvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTQgYmctbXV0ZWQvMzAgcm91bmRlZC1sZyBib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG1iLTFcIj7QkdCw0LfQvtCy0LDRjyDQu9C+0LrQsNGG0LjRjyAo0LTQvtC80LDRiNC90LjQuSDRgNC10LPQuNC+0L0pOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtYmFzZSBmb250LW1lZGl1bSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNYXBQaW4gY2xhc3NOYW1lPVwiaC00IHctNCB0ZXh0LXByaW1hcnlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt1c2VyLmxvY2F0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3VzZXIuY3VycmVudExvY2F0aW9uICYmIHVzZXIuY3VycmVudExvY2F0aW9uICE9PSB1c2VyLmxvY2F0aW9uICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00IGJnLWJsdWUtNTAvNTAgZGFyazpiZy1ibHVlLTkwMC8xMCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS0xMDAgZGFyazpib3JkZXItYmx1ZS05MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtYi0xXCI+0KTQsNC60YLQuNGH0LXRgdC60L7QtSDQvNC10YHRgtC+0L/QvtC70L7QttC10L3QuNC1INGB0LXQudGH0LDRgTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1iYXNlIGZvbnQtbWVkaXVtIHRleHQtYmx1ZS03MDAgZGFyazp0ZXh0LWJsdWUtNDAwIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNYXBQaW4gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt1c2VyLmN1cnJlbnRMb2NhdGlvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZENvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB7YWN0aXZlVGFiID09PSBcInNjaGVkdWxlXCIgJiYgKGlzTWFzdGVyIHx8IGlzQ29tcGFueSkgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkSGVhZGVyIGNsYXNzTmFtZT1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBzcGFjZS15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZFRpdGxlIGNsYXNzTmFtZT1cInRleHQteGxcIj7Qk9GA0LDRhNC40Log0YDQsNCx0L7RgtGLPC9DYXJkVGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkRGVzY3JpcHRpb24+0KPQutCw0LbQuNGC0LUsINCyINC60LDQutC40LUg0LTQvdC4INC4INGH0LDRgdGLINCy0Ysg0LTQvtGB0YLRg9C/0L3RiyDQtNC70Y8g0LfQsNC60LDQt9C+0LI8L0NhcmREZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzU2NoZWR1bGVNb2RhbE9wZW4odHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RWRpdCBjbGFzc05hbWU9XCJoLTQgdy00IG1yLTFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQmNC30LzQtdC90LjRgtGMXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRIZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZENvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNjaGVkdWxlVmlld2VyIHdvcmtTY2hlZHVsZT17dXNlci53b3JrU2NoZWR1bGV9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRDb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAge2FjdGl2ZVRhYiA9PT0gXCJhY2NvdW50XCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkVGl0bGUgY2xhc3NOYW1lPVwidGV4dC14bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQo9C/0YDQsNCy0LvQtdC90LjQtSDQsNC60LrQsNGD0L3RgtC+0LxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRUaXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZERlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQndCw0YHRgtGA0L7QudC60Lgg0LHQtdC30L7Qv9Cw0YHQvdC+0YHRgtC4INC4INGD0LTQsNC70LXQvdC40LUg0LTQsNC90L3Ri9GFINC/0YDQvtGE0LjQu9GPLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZERlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmRDb250ZW50IGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00IGJnLW11dGVkLzMwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIG1iLTIgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxLZXkgY2xhc3NOYW1lPVwiaC00IHctNCB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0KHQvNC10L3QuNGC0Ywg0L/QsNGA0L7Qu9GMXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCg0LXQs9GD0LvRj9GA0L3QsNGPINGB0LzQtdC90LAg0L/QsNGA0L7Qu9GPINC/0L7QvNC+0LPQsNC10YIg0LfQsNGJ0LjRgtC40YLRjCDQstCw0Ygg0LDQutC60LDRg9C90YIg0L7RgiDQvdC10YHQsNC90LrRhtC40L7QvdC40YDQvtCy0LDQvdC90L7Qs9C+INC00L7RgdGC0YPQv9CwLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzUGFzc3dvcmRNb2RhbE9wZW4odHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCY0LfQvNC10L3QuNGC0Ywg0L/QsNGA0L7Qu9GMXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZGVzdHJ1Y3RpdmUvMzAgYmctZGVzdHJ1Y3RpdmUvMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtZGVzdHJ1Y3RpdmUgbWItMiBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRyYXNoMiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCj0LTQsNC70LXQvdC40LUg0L/RgNC+0YTQuNC70Y9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0KPQtNCw0LvQtdC90LjQtSDQsNC60LrQsNGD0L3RgtCwINC90LXQvtCx0YDQsNGC0LjQvNC+LiDQn9GA0Lgg0YPQtNCw0LvQtdC90LjQuCDQsdGD0LTRg9GCINGB0YLQtdGA0YLRiyDQstGB0LUg0LLQsNGI0Lgg0LTQsNC90L3Ri9C1LCDRg9GB0LvRg9Cz0Lgg0Lgg0LjRgdGC0L7RgNC40Y8g0YDQsNCx0L7Rgi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiZGVzdHJ1Y3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maXJtKFwi0JLRiyDQv9C+0LvQvdC+0YHRgtGM0Y4g0YPQstC10YDQtdC90YssINGH0YLQviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0LDQutC60LDRg9C90YI/INCt0YLQviDQtNC10LnRgdGC0LLQuNC1INC90LXQvtCx0YDQsNGC0LjQvNC+INC4INC/0YDQuNCy0LXQtNC10YIg0Log0L/QvtGC0LXRgNC1INCy0YHQtdGFINC00LDQvdC90YvRhS5cIikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nb3V0KClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyLnB1c2goXCIvXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0JHQtdC30LLQvtC30LLRgNCw0YLQvdC+INGD0LTQsNC70LjRgtGMINCw0LrQutCw0YPQvdGCXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkQ29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8Q2hhbmdlUGFzc3dvcmRNb2RhbFxyXG4gICAgICAgICAgICAgICAgb3Blbj17aXNQYXNzd29yZE1vZGFsT3Blbn1cclxuICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17c2V0SXNQYXNzd29yZE1vZGFsT3Blbn1cclxuICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgIDxMb2NhdGlvbk1vZGFsXHJcbiAgICAgICAgICAgICAgICBvcGVuPXtpc0xvY2F0aW9uTW9kYWxPcGVufVxyXG4gICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXtzZXRJc0xvY2F0aW9uTW9kYWxPcGVufVxyXG4gICAgICAgICAgICAgICAgaW5pdGlhbExvY2F0aW9uPXt1c2VyLmxvY2F0aW9ufVxyXG4gICAgICAgICAgICAgICAgaW5pdGlhbEN1cnJlbnRMb2NhdGlvbj17dXNlci5jdXJyZW50TG9jYXRpb259XHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICA8U2NoZWR1bGVNb2RhbFxyXG4gICAgICAgICAgICAgICAgb3Blbj17aXNTY2hlZHVsZU1vZGFsT3Blbn1cclxuICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17c2V0SXNTY2hlZHVsZU1vZGFsT3Blbn1cclxuICAgICAgICAgICAgICAgIGluaXRpYWxJc0Fsd2F5c1JlYWR5PXt1c2VyLndvcmtTY2hlZHVsZT8uaXNBbHdheXNSZWFkeX1cclxuICAgICAgICAgICAgICAgIGluaXRpYWxTY2hlZHVsZVBlckRheT17dXNlci53b3JrU2NoZWR1bGU/LnNjaGVkdWxlUGVyRGF5fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKVxyXG59XHJcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVNlc3Npb25TdG9yZSIsIkJ1dHRvbiIsIkNhcmQiLCJDYXJkQ29udGVudCIsIkNhcmREZXNjcmlwdGlvbiIsIkNhcmRIZWFkZXIiLCJDYXJkVGl0bGUiLCJCYWRnZSIsIkxvYWRlcjIiLCJVc2VyIiwiUGhvbmUiLCJTaGllbGRDaGVjayIsIkhhbW1lciIsIkF3YXJkIiwiQ2xvY2siLCJNYXBQaW4iLCJUcmFzaDIiLCJFZGl0IiwiS2V5IiwidXNlUm91dGVyIiwidXNlRm9ybSIsInpvZFJlc29sdmVyIiwieiIsInRvYXN0IiwiSW5wdXQiLCJSaWNoVGV4dEVkaXRvciIsIkZvcm0iLCJGb3JtQ29udHJvbCIsIkZvcm1GaWVsZCIsIkZvcm1JdGVtIiwiRm9ybUxhYmVsIiwiRm9ybU1lc3NhZ2UiLCJmb3JtYXRQaG9uZU51bWJlciIsIkF2YXRhclVwbG9hZGVyIiwiVGFnSW5wdXQiLCJSYXRpbmciLCJ1c2VSYW5kb21SYXRpbmciLCJEZXNjcmlwdGlvblZpZXdlciIsIlNjaGVkdWxlVmlld2VyIiwiQ2hhbmdlUGFzc3dvcmRNb2RhbCIsIkxvY2F0aW9uTW9kYWwiLCJTY2hlZHVsZU1vZGFsIiwiY24iLCJwcm9maWxlU2NoZW1hIiwib2JqZWN0IiwiZmlyc3ROYW1lIiwic3RyaW5nIiwibWluIiwicmVnZXgiLCJsYXN0TmFtZSIsInBhdHJvbnltaWMiLCJvcHRpb25hbCIsInJlZmluZSIsInZhbCIsInRlc3QiLCJtZXNzYWdlIiwiY29tcGFueU5hbWUiLCJpbm4iLCJkZXNjcmlwdGlvbiIsIm1heCIsInBob25lU2NoZW1hIiwibmV3UGhvbmUiLCJQcm9maWxlUGFnZSIsInVzZXIiLCJpc0F1dGgiLCJpc0xvYWRpbmciLCJpc0luaXRpYWxpemVkIiwiZ2V0UHJvZmlsZSIsInVwZGF0ZVByb2ZpbGUiLCJjaGFuZ2VQaG9uZSIsImxvZ291dCIsInVwZGF0ZUNvbXBldGVuY2llcyIsInJvdXRlciIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsInVzZVN0YXRlIiwiaXNFZGl0aW5nUHJvZmlsZSIsInNldElzRWRpdGluZ1Byb2ZpbGUiLCJpc0NoYW5naW5nUGhvbmUiLCJzZXRJc0NoYW5naW5nUGhvbmUiLCJpc1Bhc3N3b3JkTW9kYWxPcGVuIiwic2V0SXNQYXNzd29yZE1vZGFsT3BlbiIsImlzTG9jYXRpb25Nb2RhbE9wZW4iLCJzZXRJc0xvY2F0aW9uTW9kYWxPcGVuIiwiaXNTY2hlZHVsZU1vZGFsT3BlbiIsInNldElzU2NoZWR1bGVNb2RhbE9wZW4iLCJyYXRpbmciLCJ1c2VFZmZlY3QiLCJwdXNoIiwicHJvZmlsZUZvcm0iLCJyZXNvbHZlciIsInZhbHVlcyIsInBob25lRm9ybSIsImRlZmF1bHRWYWx1ZXMiLCJwaG9uZSIsInJlc2V0Iiwib25Qcm9maWxlU3VibWl0Iiwic3VjY2VzcyIsImVycm9yIiwib25QaG9uZVN1Ym1pdCIsImRpdiIsImNsYXNzTmFtZSIsImgxIiwiYXNDaGlsZCIsImEiLCJocmVmIiwiaXNNYXN0ZXIiLCJyb2xlcyIsImluY2x1ZGVzIiwiaXNDb21wYW55IiwiaXNDYW5kaWRhdGUiLCJzaG93QmVjb21lUGVyZm9ybWVyIiwidHJhbnNsYXRlUm9sZSIsInJvbGUiLCJyb2xlVHJhbnNsYXRpb25zIiwiZ2V0SGlnaGVzdFJvbGUiLCJsZW5ndGgiLCJyb2xlUHJpb3JpdHkiLCJ0YWJzIiwiaWQiLCJsYWJlbCIsImljb24iLCJsb2NhdGlvbiIsImZpbHRlciIsIkJvb2xlYW4iLCJjdXJyZW50QXZhdGFyVXJsIiwiYXZhdGFyVXJsIiwib25VcGxvYWRTdWNjZXNzIiwiZnVsbE5hbWUiLCJ2YXJpYW50IiwidmFsdWUiLCJzaXplIiwicCIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsIm1hcCIsInRhYiIsImJ1dHRvbiIsImZvcm0iLCJvblN1Ym1pdCIsImhhbmRsZVN1Ym1pdCIsImNvbnRyb2wiLCJuYW1lIiwicmVuZGVyIiwiZmllbGQiLCJvbkNoYW5nZSIsInBsYWNlaG9sZGVyIiwibWF4TGVuZ3RoIiwiY29udGVudCIsInR5cGUiLCJzcGFuIiwibWF4TGluZXMiLCJjb21wZXRlbmNpZXMiLCJtYXhUYWdzIiwiY3VycmVudExvY2F0aW9uIiwid29ya1NjaGVkdWxlIiwiaDMiLCJjb25maXJtIiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsImluaXRpYWxMb2NhdGlvbiIsImluaXRpYWxDdXJyZW50TG9jYXRpb24iLCJpbml0aWFsSXNBbHdheXNSZWFkeSIsImlzQWx3YXlzUmVhZHkiLCJpbml0aWFsU2NoZWR1bGVQZXJEYXkiLCJzY2hlZHVsZVBlckRheSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/dashboard/profile/page.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/avatar-uploader.tsx":
|
||
/*!***********************************************!*\
|
||
!*** ./src/components/ui/avatar-uploader.tsx ***!
|
||
\***********************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AvatarUploader: () => (/* binding */ AvatarUploader)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_Check_Edit2_User_X_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Check,Edit2,User,X!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/check.js\");\n/* harmony import */ var _barrel_optimize_names_Check_Edit2_User_X_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=Check,Edit2,User,X!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/x.js\");\n/* harmony import */ var _barrel_optimize_names_Check_Edit2_User_X_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Check,Edit2,User,X!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/pen.js\");\n/* harmony import */ var _barrel_optimize_names_Check_Edit2_User_X_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Check,Edit2,User,X!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/user.js\");\n/* harmony import */ var react_easy_crop__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-easy-crop */ \"(app-pages-browser)/./node_modules/react-easy-crop/index.module.mjs\");\n/* harmony import */ var _shared_api_axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/api/axios */ \"(app-pages-browser)/./src/shared/api/axios.ts\");\n/* harmony import */ var sonner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! sonner */ \"(app-pages-browser)/./node_modules/sonner/dist/index.mjs\");\n/* harmony import */ var _components_ui_button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/ui/button */ \"(app-pages-browser)/./src/components/ui/button.tsx\");\n/* harmony import */ var _components_ui_slider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/ui/slider */ \"(app-pages-browser)/./src/components/ui/slider.tsx\");\n/* harmony import */ var _lib_imageUrl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/lib/imageUrl */ \"(app-pages-browser)/./src/lib/imageUrl.ts\");\n/* __next_internal_client_entry_do_not_use__ AvatarUploader auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\n\nfunction AvatarUploader(param) {\n let { currentAvatarUrl, onUploadSuccess } = param;\n _s();\n const [preview, setPreview] = react__WEBPACK_IMPORTED_MODULE_1__.useState(currentAvatarUrl);\n const [isUploading, setIsUploading] = react__WEBPACK_IMPORTED_MODULE_1__.useState(false);\n const [selectedImage, setSelectedImage] = react__WEBPACK_IMPORTED_MODULE_1__.useState(null);\n const [crop, setCrop] = react__WEBPACK_IMPORTED_MODULE_1__.useState({\n x: 0,\n y: 0\n });\n const [zoom, setZoom] = react__WEBPACK_IMPORTED_MODULE_1__.useState(1);\n const [croppedAreaPixels, setCroppedAreaPixels] = react__WEBPACK_IMPORTED_MODULE_1__.useState(null);\n const fileInputRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null);\n // Получаем полный URL для отображения\n const fullPreviewUrl = (0,_lib_imageUrl__WEBPACK_IMPORTED_MODULE_6__.getImageUrl)(preview);\n // Обновляем preview при изменении currentAvatarUrl\n react__WEBPACK_IMPORTED_MODULE_1__.useEffect({\n \"AvatarUploader.useEffect\": ()=>{\n setPreview(currentAvatarUrl);\n }\n }[\"AvatarUploader.useEffect\"], [\n currentAvatarUrl\n ]);\n const onCropComplete = react__WEBPACK_IMPORTED_MODULE_1__.useCallback({\n \"AvatarUploader.useCallback[onCropComplete]\": (_, croppedAreaPixels)=>{\n setCroppedAreaPixels(croppedAreaPixels);\n }\n }[\"AvatarUploader.useCallback[onCropComplete]\"], []);\n const handleFileSelect = (e)=>{\n var _e_target_files;\n const file = (_e_target_files = e.target.files) === null || _e_target_files === void 0 ? void 0 : _e_target_files[0];\n if (!file) return;\n // Валидация размера (5MB)\n if (file.size > 5 * 1024 * 1024) {\n sonner__WEBPACK_IMPORTED_MODULE_3__.toast.error(\"Размер файла не должен превышать 5 МБ\");\n return;\n }\n // Валидация формата\n if (![\n \"image/jpeg\",\n \"image/jpg\",\n \"image/png\"\n ].includes(file.type)) {\n sonner__WEBPACK_IMPORTED_MODULE_3__.toast.error(\"Допустимые форматы: JPG, PNG\");\n return;\n }\n // Показываем изображение для обрезки\n const reader = new FileReader();\n reader.onloadend = ()=>{\n setSelectedImage(reader.result);\n };\n reader.readAsDataURL(file);\n };\n const createCroppedImage = async (imageSrc, cropArea)=>{\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to get canvas context\");\n }\n canvas.width = cropArea.width;\n canvas.height = cropArea.height;\n ctx.drawImage(image, cropArea.x, cropArea.y, cropArea.width, cropArea.height, 0, 0, cropArea.width, cropArea.height);\n return new Promise((resolve)=>{\n canvas.toBlob((blob)=>{\n if (blob) {\n resolve(blob);\n }\n }, \"image/jpeg\", 0.95);\n });\n };\n const createImage = (url)=>{\n return new Promise((resolve, reject)=>{\n const image = new Image();\n image.addEventListener(\"load\", ()=>resolve(image));\n image.addEventListener(\"error\", (error)=>reject(error));\n image.src = url;\n });\n };\n const handleCropConfirm = async ()=>{\n if (!selectedImage || !croppedAreaPixels) return;\n setIsUploading(true);\n try {\n const croppedBlob = await createCroppedImage(selectedImage, croppedAreaPixels);\n const file = new File([\n croppedBlob\n ], \"avatar.jpg\", {\n type: \"image/jpeg\"\n });\n const formData = new FormData();\n formData.append(\"file\", file);\n const response = await _shared_api_axios__WEBPACK_IMPORTED_MODULE_2__.api.post(\"/profile/avatar\", formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n const avatarUrl = response.data.avatarUrl;\n setPreview(avatarUrl);\n setSelectedImage(null);\n onUploadSuccess === null || onUploadSuccess === void 0 ? void 0 : onUploadSuccess(avatarUrl);\n sonner__WEBPACK_IMPORTED_MODULE_3__.toast.success(\"Аватар успешно загружен\");\n } catch (error) {\n console.error(\"Error uploading avatar:\", error);\n sonner__WEBPACK_IMPORTED_MODULE_3__.toast.error(\"Ошибка при загрузке аватара\");\n } finally{\n setIsUploading(false);\n }\n };\n const handleCropCancel = ()=>{\n setSelectedImage(null);\n setCrop({\n x: 0,\n y: 0\n });\n setZoom(1);\n };\n if (selectedImage) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-64 bg-muted rounded-lg overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_easy_crop__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n image: selectedImage,\n crop: crop,\n zoom: zoom,\n aspect: 1,\n cropShape: \"round\",\n showGrid: false,\n onCropChange: setCrop,\n onZoomChange: setZoom,\n onCropComplete: onCropComplete\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 151,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 150,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"text-sm font-medium\",\n children: \"Масштаб\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 165,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_slider__WEBPACK_IMPORTED_MODULE_5__.Slider, {\n value: [\n zoom\n ],\n min: 1,\n max: 3,\n step: 0.1,\n onValueChange: (value)=>setZoom(value[0])\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 166,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 164,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n onClick: handleCropConfirm,\n disabled: isUploading,\n className: \"flex-1 bg-blue-600 hover:bg-blue-700\",\n children: isUploading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 182,\n columnNumber: 29\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Edit2_User_X_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-4 h-4 mr-2\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 185,\n columnNumber: 33\n }, this),\n \"Сохранить\"\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 176,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n onClick: handleCropCancel,\n variant: \"outline\",\n disabled: isUploading,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Edit2_User_X_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"w-4 h-4 mr-2\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 195,\n columnNumber: 25\n }, this),\n \"Отмена\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 190,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 175,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-40 h-40 rounded-full overflow-hidden bg-muted cursor-pointer group\",\n onClick: ()=>{\n var _fileInputRef_current;\n return (_fileInputRef_current = fileInputRef.current) === null || _fileInputRef_current === void 0 ? void 0 : _fileInputRef_current.click();\n },\n children: [\n fullPreviewUrl ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: fullPreviewUrl,\n alt: \"Avatar\",\n className: \"w-full h-full object-cover\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 211,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/50 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 text-white\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Edit2_User_X_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-6 h-6\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 219,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: \"Изменить\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 220,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 218,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 217,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Edit2_User_X_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-20 h-20 text-muted-foreground\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 227,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 226,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/50 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity p-4 text-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white text-xs space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: \"Нажмите, чтобы загрузить\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 232,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: \"JPG или PNG, до 5 МБ\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 233,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 231,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 230,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n ref: fileInputRef,\n type: \"file\",\n accept: \"image/jpeg,image/jpg,image/png\",\n onChange: handleFileSelect,\n className: \"hidden\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 239,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 205,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\avatar-uploader.tsx\",\n lineNumber: 204,\n columnNumber: 9\n }, this);\n}\n_s(AvatarUploader, \"6CKI3jgXQXcymYO842FuZQ2O3CQ=\");\n_c = AvatarUploader;\nvar _c;\n$RefreshReg$(_c, \"AvatarUploader\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2F2YXRhci11cGxvYWRlci50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU4QjtBQUM4QjtBQUN2QjtBQUNHO0FBQ1Y7QUFDaUI7QUFDQTtBQUNIO0FBY3JDLFNBQVNXLGVBQWUsS0FBMEQ7UUFBMUQsRUFBRUMsZ0JBQWdCLEVBQUVDLGVBQWUsRUFBdUIsR0FBMUQ7O0lBQzNCLE1BQU0sQ0FBQ0MsU0FBU0MsV0FBVyxHQUFHZiwyQ0FBYyxDQUFxQlk7SUFDakUsTUFBTSxDQUFDSyxhQUFhQyxlQUFlLEdBQUdsQiwyQ0FBYyxDQUFDO0lBQ3JELE1BQU0sQ0FBQ21CLGVBQWVDLGlCQUFpQixHQUFHcEIsMkNBQWMsQ0FBZ0I7SUFDeEUsTUFBTSxDQUFDcUIsTUFBTUMsUUFBUSxHQUFHdEIsMkNBQWMsQ0FBQztRQUFFdUIsR0FBRztRQUFHQyxHQUFHO0lBQUU7SUFDcEQsTUFBTSxDQUFDQyxNQUFNQyxRQUFRLEdBQUcxQiwyQ0FBYyxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQzJCLG1CQUFtQkMscUJBQXFCLEdBQUc1QiwyQ0FBYyxDQUFrQjtJQUNsRixNQUFNNkIsZUFBZTdCLHlDQUFZLENBQW1CO0lBRXBELHNDQUFzQztJQUN0QyxNQUFNK0IsaUJBQWlCckIsMERBQVdBLENBQUNJO0lBRW5DLG1EQUFtRDtJQUNuRGQsNENBQWU7b0NBQUM7WUFDWmUsV0FBV0g7UUFDZjttQ0FBRztRQUFDQTtLQUFpQjtJQUVyQixNQUFNcUIsaUJBQWlCakMsOENBQWlCO3NEQUFDLENBQUNtQyxHQUFRUjtZQUM5Q0MscUJBQXFCRDtRQUN6QjtxREFBRyxFQUFFO0lBRUwsTUFBTVMsbUJBQW1CLENBQUNDO1lBQ1RBO1FBQWIsTUFBTUMsUUFBT0Qsa0JBQUFBLEVBQUVFLE1BQU0sQ0FBQ0MsS0FBSyxjQUFkSCxzQ0FBQUEsZUFBZ0IsQ0FBQyxFQUFFO1FBQ2hDLElBQUksQ0FBQ0MsTUFBTTtRQUVYLDBC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REFBQ0Q7NEJBQUlDLFdBQVU7c0NBQ1gsNEVBQUNEO2dDQUFJQyxXQUFVOztrREFDWCw4REFBQ3BGLCtGQUFLQTt3Q0FBQ29GLFdBQVU7Ozs7OztrREFDakIsOERBQUNtQjt3Q0FBS25CLFdBQVU7a0RBQXNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7aURBS2xEOztzQ0FDSSw4REFBQ0Q7NEJBQUlDLFdBQVU7c0NBQ1gsNEVBQUN2RiwrRkFBSUE7Z0NBQUN1RixXQUFVOzs7Ozs7Ozs7OztzQ0FHcEIsOERBQUNEOzRCQUFJQyxXQUFVO3NDQUNYLDRFQUFDRDtnQ0FBSUMsV0FBVTs7a0RBQ1gsOERBQUNvQjtrREFBRTs7Ozs7O2tEQUNILDhEQUFDQTtrREFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFNbkIsOERBQUNDO29CQUNHQyxLQUFLakY7b0JBQ0xlLE1BQUs7b0JBQ0xtRSxRQUFPO29CQUNQQyxVQUFVNUU7b0JBQ1ZvRCxXQUFVOzs7Ozs7Ozs7Ozs7Ozs7OztBQUs5QjtHQWpPZ0I3RTtLQUFBQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXHNyY1xcY29tcG9uZW50c1xcdWlcXGF2YXRhci11cGxvYWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCJcclxuXHJcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXHJcbmltcG9ydCB7IFVwbG9hZCwgVXNlciwgQ2hlY2ssIFgsIEVkaXQyIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXHJcbmltcG9ydCBDcm9wcGVyIGZyb20gXCJyZWFjdC1lYXN5LWNyb3BcIlxyXG5pbXBvcnQgeyBhcGkgfSBmcm9tIFwiQC9zaGFyZWQvYXBpL2F4aW9zXCJcclxuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCJcclxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9idXR0b25cIlxyXG5pbXBvcnQgeyBTbGlkZXIgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL3NsaWRlclwiXHJcbmltcG9ydCB7IGdldEltYWdlVXJsIH0gZnJvbSBcIkAvbGliL2ltYWdlVXJsXCJcclxuXHJcbmludGVyZmFjZSBBdmF0YXJVcGxvYWRlclByb3BzIHtcclxuICAgIGN1cnJlbnRBdmF0YXJVcmw/OiBzdHJpbmdcclxuICAgIG9uVXBsb2FkU3VjY2Vzcz86ICh1cmw6IHN0cmluZykgPT4gdm9pZFxyXG59XHJcblxyXG5pbnRlcmZhY2UgQ3JvcEFyZWEge1xyXG4gICAgeDogbnVtYmVyXHJcbiAgICB5OiBudW1iZXJcclxuICAgIHdpZHRoOiBudW1iZXJcclxuICAgIGhlaWdodDogbnVtYmVyXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBBdmF0YXJVcGxvYWRlcih7IGN1cnJlbnRBdmF0YXJVcmwsIG9uVXBsb2FkU3VjY2VzcyB9OiBBdmF0YXJVcGxvYWRlclByb3BzKSB7XHJcbiAgICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBSZWFjdC51c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KGN1cnJlbnRBdmF0YXJVcmwpXHJcbiAgICBjb25zdCBbaXNVcGxvYWRpbmcsIHNldElzVXBsb2FkaW5nXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKVxyXG4gICAgY29uc3QgW3NlbGVjdGVkSW1hZ2UsIHNldFNlbGVjdGVkSW1hZ2VdID0gUmVhY3QudXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcclxuICAgIGNvbnN0IFtjcm9wLCBzZXRDcm9wXSA9IFJlYWN0LnVzZVN0YXRlKHsgeDogMCwgeTogMCB9KVxyXG4gICAgY29uc3QgW3pvb20sIHNldFpvb21dID0gUmVhY3QudXNlU3RhdGUoMSlcclxuICAgIGNvbnN0IFtjcm9wcGVkQXJlYVBpeGVscywgc2V0Q3JvcHBlZEFyZWFQaXhlbHNdID0gUmVhY3QudXNlU3RhdGU8Q3JvcEFyZWEgfCBudWxsPihudWxsKVxyXG4gICAgY29uc3QgZmlsZUlucHV0UmVmID0gUmVhY3QudXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXHJcblxyXG4gICAgLy8g0J/QvtC70YPRh9Cw0LXQvCDQv9C+0LvQvdGL0LkgVVJMINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPXHJcbiAgICBjb25zdCBmdWxsUHJldmlld1VybCA9IGdldEltYWdlVXJsKHByZXZpZXcpXHJcblxyXG4gICAgLy8g0J7QsdC90L7QstC70Y/QtdC8IHByZXZpZXcg0L/RgNC4INC40LfQvNC10L3QtdC90LjQuCBjdXJyZW50QXZhdGFyVXJsXHJcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFByZXZpZXcoY3VycmVudEF2YXRhclVybClcclxuICAgIH0sIFtjdXJyZW50QXZhdGFyVXJsXSlcclxuXHJcbiAgICBjb25zdCBvbkNyb3BDb21wbGV0ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKChfOiBhbnksIGNyb3BwZWRBcmVhUGl4ZWxzOiBDcm9wQXJlYSkgPT4ge1xyXG4gICAgICAgIHNldENyb3BwZWRBcmVhUGl4ZWxzKGNyb3BwZWRBcmVhUGl4ZWxzKVxyXG4gICAgfSwgW10pXHJcblxyXG4gICAgY29uc3QgaGFuZGxlRmlsZVNlbGVjdCA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBlLnRhcmdldC5maWxlcz8uWzBdXHJcbiAgICAgICAgaWYgKCFmaWxlKSByZXR1cm5cclxuXHJcbiAgICAgICAgLy8g0JLQsNC70LjQtNCw0YbQuNGPINGA0LDQt9C80LXRgNCwICg1TUIpXHJcbiAgICAgICAgaWYgKGZpbGUuc2l6ZSA+IDUgKiAxMDI0ICogMTAyNCkge1xyXG4gICAgICAgICAgICB0b2FzdC5lcnJvcihcItCg0LDQt9C80LXRgCDRhNCw0LnQu9CwINC90LUg0LTQvtC70LbQtdC9INC/0YDQtdCy0YvRiNCw0YLRjCA1INCc0JFcIilcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDQktCw0LvQuNC00LDRhtC40Y8g0YTQvtGA0LzQsNGC0LBcclxuICAgICAgICBpZiAoIVtcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9wbmdcIl0uaW5jbHVkZXMoZmlsZS50eXBlKSkge1xyXG4gICAgICAgICAgICB0b2FzdC5lcnJvcihcItCU0L7Qv9GD0YHRgtC40LzRi9C1INGE0L7RgNC80LDRgtGLOiBKUEcsIFBOR1wiKVxyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vINCf0L7QutCw0LfRi9Cy0LDQtdC8INC40LfQvtCx0YDQsNC20LXQvdC40LUg0LTQu9GPINC+0LHRgNC10LfQutC4XHJcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxyXG4gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkSW1hZ2UocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3JlYXRlQ3JvcHBlZEltYWdlID0gYXN5bmMgKGltYWdlU3JjOiBzdHJpbmcsIGNyb3BBcmVhOiBDcm9wQXJlYSk6IFByb21pc2U8QmxvYj4gPT4ge1xyXG4gICAgICAgIGNvbnN0IGltYWdlID0gYXdhaXQgY3JlYXRlSW1hZ2UoaW1hZ2VTcmMpXHJcbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKVxyXG4gICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIilcclxuXHJcbiAgICAgICAgaWYgKCFjdHgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGdldCBjYW52YXMgY29udGV4dFwiKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gY3JvcEFyZWEud2lkdGhcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gY3JvcEFyZWEuaGVpZ2h0XHJcblxyXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoXHJcbiAgICAgICAgICAgIGltYWdlLFxyXG4gICAgICAgICAgICBjcm9wQXJlYS54LFxyXG4gICAgICAgICAgICBjcm9wQXJlYS55LFxyXG4gICAgICAgICAgICBjcm9wQXJlYS53aWR0aCxcclxuICAgICAgICAgICAgY3JvcEFyZWEuaGVpZ2h0LFxyXG4gICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICBjcm9wQXJlYS53aWR0aCxcclxuICAgICAgICAgICAgY3JvcEFyZWEuaGVpZ2h0XHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgY2FudmFzLnRvQmxvYigoYmxvYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGJsb2IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGJsb2IpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIFwiaW1hZ2UvanBlZ1wiLCAwLjk1KVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3JlYXRlSW1hZ2UgPSAodXJsOiBzdHJpbmcpOiBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpXHJcbiAgICAgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpID0+IHJlc29sdmUoaW1hZ2UpKVxyXG4gICAgICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgKGVycm9yKSA9PiByZWplY3QoZXJyb3IpKVxyXG4gICAgICAgICAgICBpbWFnZS5zcmMgPSB1cmxcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhhbmRsZUNyb3BDb25maXJtID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmICghc2VsZWN0ZWRJbWFnZSB8fCAhY3JvcHBlZEFyZWFQaXhlbHMpIHJldHVyblxyXG5cclxuICAgICAgICBzZXRJc1VwbG9hZGluZyh0cnVlKVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNyb3BwZWRCbG9iID0gYXdhaXQgY3JlYXRlQ3JvcHBlZEltYWdlKHNlbGVjdGVkSW1hZ2UsIGNyb3BwZWRBcmVhUGl4ZWxzKVxyXG4gICAgICAgICAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Nyb3BwZWRCbG9iXSwgXCJhdmF0YXIuanBnXCIsIHsgdHlwZTogXCJpbWFnZS9qcGVnXCIgfSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKClcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZVwiLCBmaWxlKVxyXG5cclxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGkucG9zdChcIi9wcm9maWxlL2F2YXRhclwiLCBmb3JtRGF0YSwge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGF2YXRhclVybCA9IHJlc3BvbnNlLmRhdGEuYXZhdGFyVXJsXHJcbiAgICAgICAgICAgIHNldFByZXZpZXcoYXZhdGFyVXJsKVxyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZEltYWdlKG51bGwpXHJcbiAgICAgICAgICAgIG9uVXBsb2FkU3VjY2Vzcz8uKGF2YXRhclVybClcclxuICAgICAgICAgICAgdG9hc3Quc3VjY2VzcyhcItCQ0LLQsNGC0LDRgCDRg9GB0L/QtdGI0L3QviDQt9Cw0LPRgNGD0LbQtdC9XCIpXHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHVwbG9hZGluZyBhdmF0YXI6XCIsIGVycm9yKVxyXG4gICAgICAgICAgICB0b2FzdC5lcnJvcihcItCe0YjQuNCx0LrQsCDQv9GA0Lgg0LfQsNCz0YDRg9C30LrQtSDQsNCy0LDRgtCw0YDQsFwiKVxyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoYW5kbGVDcm9wQ2FuY2VsID0gKCkgPT4ge1xyXG4gICAgICAgIHNldFNlbGVjdGVkSW1hZ2UobnVsbClcclxuICAgICAgICBzZXRDcm9wKHsgeDogMCwgeTogMCB9KVxyXG4gICAgICAgIHNldFpvb20oMSlcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VsZWN0ZWRJbWFnZSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LWZ1bGwgaC02NCBiZy1tdXRlZCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxDcm9wcGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlPXtzZWxlY3RlZEltYWdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjcm9wPXtjcm9wfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b29tPXt6b29tfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3BlY3Q9ezF9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyb3BTaGFwZT1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0dyaWQ9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNyb3BDaGFuZ2U9e3NldENyb3B9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uWm9vbUNoYW5nZT17c2V0Wm9vbX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25Dcm9wQ29tcGxldGU9e29uQ3JvcENvbXBsZXRlfVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+0JzQsNGB0YjRgtCw0LE8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxTbGlkZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e1t6b29tXX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsxfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9ezAuMX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17KHZhbHVlKSA9PiBzZXRab29tKHZhbHVlWzBdKX1cclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDcm9wQ29uZmlybX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzVXBsb2FkaW5nfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgYmctYmx1ZS02MDAgaG92ZXI6YmctYmx1ZS03MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge2lzVXBsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTQgaC00IGJvcmRlci0yIGJvcmRlci13aGl0ZSBib3JkZXItdC10cmFuc3BhcmVudCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1zcGluXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInctNCBoLTQgbXItMlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0KHQvtGF0YDQsNC90LjRgtGMXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNyb3BDYW5jZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzVXBsb2FkaW5nfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFggY2xhc3NOYW1lPVwidy00IGgtNCBtci0yXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAg0J7RgtC80LXQvdCwXHJcbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LTQwIGgtNDAgcm91bmRlZC1mdWxsIG92ZXJmbG93LWhpZGRlbiBiZy1tdXRlZCBjdXJzb3ItcG9pbnRlciBncm91cFwiXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBmaWxlSW5wdXRSZWYuY3VycmVudD8uY2xpY2soKX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2Z1bGxQcmV2aWV3VXJsID8gKFxyXG4gICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17ZnVsbFByZXZpZXdVcmx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJBdmF0YXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7LyogT3ZlcmxheSDQv9GA0Lgg0L3QsNCy0LXQtNC10L3QuNC4IC0g0LXRgdC70Lgg0LDQstCw0YLQsNGAINC10YHRgtGMICovfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYmctYmxhY2svNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVkaXQyIGNsYXNzTmFtZT1cInctNiBoLTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW1cIj7QmNC30LzQtdC90LjRgtGMPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVc2VyIGNsYXNzTmFtZT1cInctMjAgaC0yMCB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIE92ZXJsYXkg0L/RgNC4INC90LDQstC10LTQtdC90LjQuCAtINC10YHQu9C4INCw0LLQsNGC0LDRgNCwINC90LXRgiAqL31cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWJsYWNrLzUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG9wYWNpdHktMCBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHkgcC00IHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC14cyBzcGFjZS15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7QndCw0LbQvNC40YLQtSwg0YfRgtC+0LHRiyDQt9Cw0LPRgNGD0LfQuNGC0Yw8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+SlBHINC40LvQuCBQTkcsINC00L4gNSDQnNCRPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICByZWY9e2ZpbGVJbnB1dFJlZn1cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvanBlZyxpbWFnZS9qcGcsaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZVNlbGVjdH1cclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApXHJcbn1cclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiVXNlciIsIkNoZWNrIiwiWCIsIkVkaXQyIiwiQ3JvcHBlciIsImFwaSIsInRvYXN0IiwiQnV0dG9uIiwiU2xpZGVyIiwiZ2V0SW1hZ2VVcmwiLCJBdmF0YXJVcGxvYWRlciIsImN1cnJlbnRBdmF0YXJVcmwiLCJvblVwbG9hZFN1Y2Nlc3MiLCJwcmV2aWV3Iiwic2V0UHJldmlldyIsInVzZVN0YXRlIiwiaXNVcGxvYWRpbmciLCJzZXRJc1VwbG9hZGluZyIsInNlbGVjdGVkSW1hZ2UiLCJzZXRTZWxlY3RlZEltYWdlIiwiY3JvcCIsInNldENyb3AiLCJ4IiwieSIsInpvb20iLCJzZXRab29tIiwiY3JvcHBlZEFyZWFQaXhlbHMiLCJzZXRDcm9wcGVkQXJlYVBpeGVscyIsImZpbGVJbnB1dFJlZiIsInVzZVJlZiIsImZ1bGxQcmV2aWV3VXJsIiwidXNlRWZmZWN0Iiwib25Dcm9wQ29tcGxldGUiLCJ1c2VDYWxsYmFjayIsIl8iLCJoYW5kbGVGaWxlU2VsZWN0IiwiZSIsImZpbGUiLCJ0YXJnZXQiLCJmaWxlcyIsInNpemUiLCJlcnJvciIsImluY2x1ZGVzIiwidHlwZSIsInJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWRlbmQiLCJyZXN1bHQiLCJyZWFkQXNEYXRhVVJMIiwiY3JlYXRlQ3JvcHBlZEltYWdlIiwiaW1hZ2VTcmMiLCJjcm9wQXJlYSIsImltYWdlIiwiY3JlYXRlSW1hZ2UiLCJjYW52YXMiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjdHgiLCJnZXRDb250ZXh0IiwiRXJyb3IiLCJ3aWR0aCIsImhlaWdodCIsImRyYXdJbWFnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwidG9CbG9iIiwiYmxvYiIsInVybCIsInJlamVjdCIsIkltYWdlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNyYyIsImhhbmRsZUNyb3BDb25maXJtIiwiY3JvcHBlZEJsb2IiLCJGaWxlIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImFwcGVuZCIsInJlc3BvbnNlIiwicG9zdCIsImhlYWRlcnMiLCJhdmF0YXJVcmwiLCJkYXRhIiwic3VjY2VzcyIsImNvbnNvbGUiLCJoYW5kbGVDcm9wQ2FuY2VsIiwiZGl2IiwiY2xhc3NOYW1lIiwiYXNwZWN0IiwiY3JvcFNoYXBlIiwic2hvd0dyaWQiLCJvbkNyb3BDaGFuZ2UiLCJvblpvb21DaGFuZ2UiLCJsYWJlbCIsInZhbHVlIiwibWluIiwibWF4Iiwic3RlcCIsIm9uVmFsdWVDaGFuZ2UiLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJ2YXJpYW50IiwiY3VycmVudCIsImNsaWNrIiwiaW1nIiwiYWx0Iiwic3BhbiIsInAiLCJpbnB1dCIsInJlZiIsImFjY2VwdCIsIm9uQ2hhbmdlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/avatar-uploader.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/badge.tsx":
|
||
/*!*************************************!*\
|
||
!*** ./src/components/ui/badge.tsx ***!
|
||
\*************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Badge: () => (/* binding */ Badge)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n\n\n\nconst Badge = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c = (param, ref)=>{\n let { className, variant = \"default\", ...props } = param;\n const variants = {\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive: \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\", variants[variant], className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\badge.tsx\",\n lineNumber: 16,\n columnNumber: 9\n }, undefined);\n});\n_c1 = Badge;\nBadge.displayName = \"Badge\";\n\nvar _c, _c1;\n$RefreshReg$(_c, \"Badge$React.forwardRef\");\n$RefreshReg$(_c1, \"Badge\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBOEI7QUFDUztBQUV2QyxNQUFNRSxzQkFBUUYsNkNBQWdCLE1BRzVCLFFBQStDSTtRQUE5QyxFQUFFQyxTQUFTLEVBQUVDLFVBQVUsU0FBUyxFQUFFLEdBQUdDLE9BQU87SUFDM0MsTUFBTUMsV0FBVztRQUNiQyxTQUFTO1FBQ1RDLFdBQVc7UUFDWEMsYUFBYTtRQUNiQyxTQUFTO0lBQ2I7SUFFQSxxQkFDSSw4REFBQ0M7UUFDR1QsS0FBS0E7UUFDTEMsV0FBV0oscURBQUVBLENBQ1QsMEtBQ0FPLFFBQVEsQ0FBQ0YsUUFBUSxFQUNqQkQ7UUFFSCxHQUFHRSxLQUFLOzs7Ozs7QUFHckI7O0FBQ0FMLE1BQU1ZLFdBQVcsR0FBRztBQUVKIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcc3JjXFxjb21wb25lbnRzXFx1aVxcYmFkZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXHJcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvc2hhcmVkL2xpYi91dGlsc1wiXHJcblxyXG5jb25zdCBCYWRnZSA9IFJlYWN0LmZvcndhcmRSZWY8XHJcbiAgICBIVE1MRGl2RWxlbWVudCxcclxuICAgIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHsgdmFyaWFudD86IFwiZGVmYXVsdFwiIHwgXCJzZWNvbmRhcnlcIiB8IFwiZGVzdHJ1Y3RpdmVcIiB8IFwib3V0bGluZVwiIH1cclxuPigoeyBjbGFzc05hbWUsIHZhcmlhbnQgPSBcImRlZmF1bHRcIiwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XHJcbiAgICBjb25zdCB2YXJpYW50cyA9IHtcclxuICAgICAgICBkZWZhdWx0OiBcImJvcmRlci10cmFuc3BhcmVudCBiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGhvdmVyOmJnLXByaW1hcnkvODBcIixcclxuICAgICAgICBzZWNvbmRhcnk6IFwiYm9yZGVyLXRyYW5zcGFyZW50IGJnLXNlY29uZGFyeSB0ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIGhvdmVyOmJnLXNlY29uZGFyeS84MFwiLFxyXG4gICAgICAgIGRlc3RydWN0aXZlOiBcImJvcmRlci10cmFuc3BhcmVudCBiZy1kZXN0cnVjdGl2ZSB0ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgaG92ZXI6YmctZGVzdHJ1Y3RpdmUvODBcIixcclxuICAgICAgICBvdXRsaW5lOiBcInRleHQtZm9yZWdyb3VuZFwiLFxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcclxuICAgICAgICAgICAgICAgIFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgcHgtMi41IHB5LTAuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXJpbmcgZm9jdXM6cmluZy1vZmZzZXQtMlwiLFxyXG4gICAgICAgICAgICAgICAgdmFyaWFudHNbdmFyaWFudF0sXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWVcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgIC8+XHJcbiAgICApXHJcbn0pXHJcbkJhZGdlLmRpc3BsYXlOYW1lID0gXCJCYWRnZVwiXHJcblxyXG5leHBvcnQgeyBCYWRnZSB9XHJcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImNuIiwiQmFkZ2UiLCJmb3J3YXJkUmVmIiwicmVmIiwiY2xhc3NOYW1lIiwidmFyaWFudCIsInByb3BzIiwidmFyaWFudHMiLCJkZWZhdWx0Iiwic2Vjb25kYXJ5IiwiZGVzdHJ1Y3RpdmUiLCJvdXRsaW5lIiwiZGl2IiwiZGlzcGxheU5hbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/badge.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/button.tsx":
|
||
/*!**************************************!*\
|
||
!*** ./src/components/ui/button.tsx ***!
|
||
\**************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Button: () => (/* binding */ Button),\n/* harmony export */ buttonVariants: () => (/* binding */ buttonVariants)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-slot */ \"(app-pages-browser)/./node_modules/@radix-ui/react-slot/dist/index.mjs\");\n/* harmony import */ var class_variance_authority__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! class-variance-authority */ \"(app-pages-browser)/./node_modules/class-variance-authority/dist/index.mjs\");\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n\n\n\n\n\nconst buttonVariants = (0,class_variance_authority__WEBPACK_IMPORTED_MODULE_2__.cva)(\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\", {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\"\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n});\nconst Button = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c = (param, ref)=>{\n let { className, variant, size, asChild = false, ...props } = param;\n const Comp = asChild ? _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_4__.Slot : \"button\";\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Comp, {\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_3__.cn)(buttonVariants({\n variant,\n size,\n className\n })),\n ref: ref,\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\button.tsx\",\n lineNumber: 46,\n columnNumber: 13\n }, undefined);\n});\n_c1 = Button;\nButton.displayName = \"Button\";\n\nvar _c, _c1;\n$RefreshReg$(_c, \"Button$React.forwardRef\");\n$RefreshReg$(_c1, \"Button\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQThCO0FBQ2E7QUFDc0I7QUFFMUI7QUFFdkMsTUFBTUksaUJBQWlCRiw2REFBR0EsQ0FDdEIsNFZBQ0E7SUFDSUcsVUFBVTtRQUNOQyxTQUFTO1lBQ0xDLFNBQVM7WUFDVEMsYUFDSTtZQUNKQyxTQUNJO1lBQ0pDLFdBQ0k7WUFDSkMsT0FBTztZQUNQQyxNQUFNO1FBQ1Y7UUFDQUMsTUFBTTtZQUNGTixTQUFTO1lBQ1RPLElBQUk7WUFDSkMsSUFBSTtZQUNKQyxNQUFNO1FBQ1Y7SUFDSjtJQUNBQyxpQkFBaUI7UUFDYlgsU0FBUztRQUNUTyxNQUFNO0lBQ1Y7QUFDSjtBQVNKLE1BQU1LLHVCQUFTbEIsNkNBQWdCLE1BQzNCLFFBQTBEb0I7UUFBekQsRUFBRUMsU0FBUyxFQUFFZixPQUFPLEVBQUVPLElBQUksRUFBRVMsVUFBVSxLQUFLLEVBQUUsR0FBR0MsT0FBTztJQUNwRCxNQUFNQyxPQUFPRixVQUFVckIsc0RBQUlBLEdBQUc7SUFDOUIscUJBQ0ksOERBQUN1QjtRQUNHSCxXQUFXbEIscURBQUVBLENBQUNDLGVBQWU7WUFBRUU7WUFBU087WUFBTVE7UUFBVTtRQUN4REQsS0FBS0E7UUFDSixHQUFHRyxLQUFLOzs7Ozs7QUFHckI7O0FBRUpMLE9BQU9PLFdBQVcsR0FBRztBQUVZIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcc3JjXFxjb21wb25lbnRzXFx1aVxcYnV0dG9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxyXG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCJcclxuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIlxyXG5cclxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9zaGFyZWQvbGliL3V0aWxzXCJcclxuXHJcbmNvbnN0IGJ1dHRvblZhcmlhbnRzID0gY3ZhKFxyXG4gICAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCBbJl9zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpzaXplLTQgWyZfc3ZnXTpzaHJpbmstMFwiLFxyXG4gICAge1xyXG4gICAgICAgIHZhcmlhbnRzOiB7XHJcbiAgICAgICAgICAgIHZhcmlhbnQ6IHtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFwiYmctcHJpbWFyeSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBob3ZlcjpiZy1wcmltYXJ5LzkwXCIsXHJcbiAgICAgICAgICAgICAgICBkZXN0cnVjdGl2ZTpcclxuICAgICAgICAgICAgICAgICAgICBcImJnLWRlc3RydWN0aXZlIHRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBob3ZlcjpiZy1kZXN0cnVjdGl2ZS85MFwiLFxyXG4gICAgICAgICAgICAgICAgb3V0bGluZTpcclxuICAgICAgICAgICAgICAgICAgICBcImJvcmRlciBib3JkZXItaW5wdXQgYmctYmFja2dyb3VuZCBob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxyXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5OlxyXG4gICAgICAgICAgICAgICAgICAgIFwiYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwXCIsXHJcbiAgICAgICAgICAgICAgICBnaG9zdDogXCJob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxyXG4gICAgICAgICAgICAgICAgbGluazogXCJ0ZXh0LXByaW1hcnkgdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnVuZGVybGluZVwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaXplOiB7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBcImgtMTAgcHgtNCBweS0yXCIsXHJcbiAgICAgICAgICAgICAgICBzbTogXCJoLTkgcm91bmRlZC1tZCBweC0zXCIsXHJcbiAgICAgICAgICAgICAgICBsZzogXCJoLTExIHJvdW5kZWQtbWQgcHgtOFwiLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogXCJoLTEwIHctMTBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRlZmF1bHRWYXJpYW50czoge1xyXG4gICAgICAgICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcclxuICAgICAgICAgICAgc2l6ZTogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgfSxcclxuICAgIH1cclxuKVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xyXG4gICAgZXh0ZW5kcyBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXHJcbiAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XHJcbiAgICBhc0NoaWxkPzogYm9vbGVhblxyXG59XHJcblxyXG5jb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBCdXR0b25Qcm9wcz4oXHJcbiAgICAoeyBjbGFzc05hbWUsIHZhcmlhbnQsIHNpemUsIGFzQ2hpbGQgPSBmYWxzZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XHJcbiAgICAgICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIlxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxDb21wXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX1cclxuICAgICAgICAgICAgICAgIHJlZj17cmVmfVxyXG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIClcclxuICAgIH1cclxuKVxyXG5CdXR0b24uZGlzcGxheU5hbWUgPSBcIkJ1dHRvblwiXHJcblxyXG5leHBvcnQgeyBCdXR0b24sIGJ1dHRvblZhcmlhbnRzIH1cclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiU2xvdCIsImN2YSIsImNuIiwiYnV0dG9uVmFyaWFudHMiLCJ2YXJpYW50cyIsInZhcmlhbnQiLCJkZWZhdWx0IiwiZGVzdHJ1Y3RpdmUiLCJvdXRsaW5lIiwic2Vjb25kYXJ5IiwiZ2hvc3QiLCJsaW5rIiwic2l6ZSIsInNtIiwibGciLCJpY29uIiwiZGVmYXVsdFZhcmlhbnRzIiwiQnV0dG9uIiwiZm9yd2FyZFJlZiIsInJlZiIsImNsYXNzTmFtZSIsImFzQ2hpbGQiLCJwcm9wcyIsIkNvbXAiLCJkaXNwbGF5TmFtZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/button.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/card.tsx":
|
||
/*!************************************!*\
|
||
!*** ./src/components/ui/card.tsx ***!
|
||
\************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Card: () => (/* binding */ Card),\n/* harmony export */ CardContent: () => (/* binding */ CardContent),\n/* harmony export */ CardDescription: () => (/* binding */ CardDescription),\n/* harmony export */ CardFooter: () => (/* binding */ CardFooter),\n/* harmony export */ CardHeader: () => (/* binding */ CardHeader),\n/* harmony export */ CardTitle: () => (/* binding */ CardTitle)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n\n\n\nconst Card = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c = (param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"rounded-lg border bg-card text-card-foreground shadow-sm\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\card.tsx\",\n lineNumber: 8,\n columnNumber: 5\n }, undefined);\n});\n_c1 = Card;\nCard.displayName = \"Card\";\nconst CardHeader = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c2 = (param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"flex flex-col space-y-1.5 p-6\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\card.tsx\",\n lineNumber: 23,\n columnNumber: 5\n }, undefined);\n});\n_c3 = CardHeader;\nCardHeader.displayName = \"CardHeader\";\nconst CardTitle = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c4 = (param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"text-2xl font-semibold leading-none tracking-tight\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\card.tsx\",\n lineNumber: 35,\n columnNumber: 5\n }, undefined);\n});\n_c5 = CardTitle;\nCardTitle.displayName = \"CardTitle\";\nconst CardDescription = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c6 = (param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"text-sm text-muted-foreground\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\card.tsx\",\n lineNumber: 50,\n columnNumber: 5\n }, undefined);\n});\n_c7 = CardDescription;\nCardDescription.displayName = \"CardDescription\";\nconst CardContent = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c8 = (param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"p-6 pt-0\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\card.tsx\",\n lineNumber: 62,\n columnNumber: 5\n }, undefined);\n});\n_c9 = CardContent;\nCardContent.displayName = \"CardContent\";\nconst CardFooter = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c10 = (param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"flex items-center p-6 pt-0\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\card.tsx\",\n lineNumber: 70,\n columnNumber: 5\n }, undefined);\n});\n_c11 = CardFooter;\nCardFooter.displayName = \"CardFooter\";\n\nvar _c, _c1, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9, _c10, _c11;\n$RefreshReg$(_c, \"Card$React.forwardRef\");\n$RefreshReg$(_c1, \"Card\");\n$RefreshReg$(_c2, \"CardHeader$React.forwardRef\");\n$RefreshReg$(_c3, \"CardHeader\");\n$RefreshReg$(_c4, \"CardTitle$React.forwardRef\");\n$RefreshReg$(_c5, \"CardTitle\");\n$RefreshReg$(_c6, \"CardDescription$React.forwardRef\");\n$RefreshReg$(_c7, \"CardDescription\");\n$RefreshReg$(_c8, \"CardContent$React.forwardRef\");\n$RefreshReg$(_c9, \"CardContent\");\n$RefreshReg$(_c10, \"CardFooter$React.forwardRef\");\n$RefreshReg$(_c11, \"CardFooter\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2NhcmQudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQThCO0FBQ1M7QUFFdkMsTUFBTUUscUJBQU9GLDZDQUFnQixNQUczQixRQUEwQkk7UUFBekIsRUFBRUMsU0FBUyxFQUFFLEdBQUdDLE9BQU87eUJBQ3RCLDhEQUFDQztRQUNHSCxLQUFLQTtRQUNMQyxXQUFXSixxREFBRUEsQ0FDVCw0REFDQUk7UUFFSCxHQUFHQyxLQUFLOzs7Ozs7OztBQUdqQkosS0FBS00sV0FBVyxHQUFHO0FBRW5CLE1BQU1DLDJCQUFhVCw2Q0FBZ0IsT0FHakMsUUFBMEJJO1FBQXpCLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxPQUFPO3lCQUN0Qiw4REFBQ0M7UUFDR0gsS0FBS0E7UUFDTEMsV0FBV0oscURBQUVBLENBQUMsaUNBQWlDSTtRQUM5QyxHQUFHQyxLQUFLOzs7Ozs7OztBQUdqQkcsV0FBV0QsV0FBVyxHQUFHO0FBRXpCLE1BQU1FLDBCQUFZViw2Q0FBZ0IsT0FHaEMsUUFBMEJJO1FBQXpCLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxPQUFPO3lCQUN0Qiw4REFBQ0s7UUFDR1AsS0FBS0E7UUFDTEMsV0FBV0oscURBQUVBLENBQ1Qsc0RBQ0FJO1FBRUgsR0FBR0MsS0FBSzs7Ozs7Ozs7QUFHakJJLFVBQVVGLFdBQVcsR0FBRztBQUV4QixNQUFNSSxnQ0FBa0JaLDZDQUFnQixPQUd0QyxRQUEwQkk7UUFBekIsRUFBRUMsU0FBUyxFQUFFLEdBQUdDLE9BQU87eUJBQ3RCLDhEQUFDTztRQUNHVCxLQUFLQTtRQUNMQyxXQUFXSixxREFBRUEsQ0FBQyxpQ0FBaUNJO1FBQzlDLEdBQUdDLEtBQUs7Ozs7Ozs7O0FBR2pCTSxnQkFBZ0JKLFdBQVcsR0FBRztBQUU5QixNQUFNTSw0QkFBY2QsNkNBQWdCLE9BR2xDLFFBQTBCSTtRQUF6QixFQUFFQyxTQUFTLEVBQUUsR0FBR0MsT0FBTzt5QkFDdEIsOERBQUNDO1FBQUlILEtBQUtBO1FBQUtDLFdBQVdKLHFEQUFFQSxDQUFDLFlBQVlJO1FBQWEsR0FBR0MsS0FBSzs7Ozs7Ozs7QUFFbEVRLFlBQVlOLFdBQVcsR0FBRztBQUUxQixNQUFNTywyQkFBYWYsNkNBQWdCLFFBR2pDLFFBQTBCSTtRQUF6QixFQUFFQyxTQUFTLEVBQUUsR0FBR0MsT0FBTzt5QkFDdEIsOERBQUNDO1FBQ0dILEtBQUtBO1FBQ0xDLFdBQVdKLHFEQUFFQSxDQUFDLDhCQUE4Qkk7UUFDM0MsR0FBR0MsS0FBSzs7Ozs7Ozs7QUFHakJTLFdBQVdQLFdBQVcsR0FBRztBQUV1RCIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXHNyY1xcY29tcG9uZW50c1xcdWlcXGNhcmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXHJcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvc2hhcmVkL2xpYi91dGlsc1wiXHJcblxyXG5jb25zdCBDYXJkID0gUmVhY3QuZm9yd2FyZFJlZjxcclxuICAgIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XHJcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcclxuICAgIDxkaXZcclxuICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICBjbGFzc05hbWU9e2NuKFxyXG4gICAgICAgICAgICBcInJvdW5kZWQtbGcgYm9yZGVyIGJnLWNhcmQgdGV4dC1jYXJkLWZvcmVncm91bmQgc2hhZG93LXNtXCIsXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZVxyXG4gICAgICAgICl9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgLz5cclxuKSlcclxuQ2FyZC5kaXNwbGF5TmFtZSA9IFwiQ2FyZFwiXHJcblxyXG5jb25zdCBDYXJkSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcclxuICAgIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XHJcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcclxuICAgIDxkaXZcclxuICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICBjbGFzc05hbWU9e2NuKFwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTEuNSBwLTZcIiwgY2xhc3NOYW1lKX1cclxuICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAvPlxyXG4pKVxyXG5DYXJkSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJDYXJkSGVhZGVyXCJcclxuXHJcbmNvbnN0IENhcmRUaXRsZSA9IFJlYWN0LmZvcndhcmRSZWY8XHJcbiAgICBIVE1MUGFyYWdyYXBoRWxlbWVudCxcclxuICAgIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD5cclxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxyXG4gICAgPGgzXHJcbiAgICAgICAgcmVmPXtyZWZ9XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcclxuICAgICAgICAgICAgXCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodFwiLFxyXG4gICAgICAgICAgICBjbGFzc05hbWVcclxuICAgICAgICApfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgIC8+XHJcbikpXHJcbkNhcmRUaXRsZS5kaXNwbGF5TmFtZSA9IFwiQ2FyZFRpdGxlXCJcclxuXHJcbmNvbnN0IENhcmREZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XHJcbiAgICBIVE1MUGFyYWdyYXBoRWxlbWVudCxcclxuICAgIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxQYXJhZ3JhcGhFbGVtZW50PlxyXG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXHJcbiAgICA8cFxyXG4gICAgICAgIHJlZj17cmVmfVxyXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgIC8+XHJcbikpXHJcbkNhcmREZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9IFwiQ2FyZERlc2NyaXB0aW9uXCJcclxuXHJcbmNvbnN0IENhcmRDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcclxuICAgIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XHJcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcclxuICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwLTYgcHQtMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XHJcbikpXHJcbkNhcmRDb250ZW50LmRpc3BsYXlOYW1lID0gXCJDYXJkQ29udGVudFwiXHJcblxyXG5jb25zdCBDYXJkRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcclxuICAgIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XHJcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcclxuICAgIDxkaXZcclxuICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICBjbGFzc05hbWU9e2NuKFwiZmxleCBpdGVtcy1jZW50ZXIgcC02IHB0LTBcIiwgY2xhc3NOYW1lKX1cclxuICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAvPlxyXG4pKVxyXG5DYXJkRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJDYXJkRm9vdGVyXCJcclxuXHJcbmV4cG9ydCB7IENhcmQsIENhcmRIZWFkZXIsIENhcmRGb290ZXIsIENhcmRUaXRsZSwgQ2FyZERlc2NyaXB0aW9uLCBDYXJkQ29udGVudCB9XHJcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImNuIiwiQ2FyZCIsImZvcndhcmRSZWYiLCJyZWYiLCJjbGFzc05hbWUiLCJwcm9wcyIsImRpdiIsImRpc3BsYXlOYW1lIiwiQ2FyZEhlYWRlciIsIkNhcmRUaXRsZSIsImgzIiwiQ2FyZERlc2NyaXB0aW9uIiwicCIsIkNhcmRDb250ZW50IiwiQ2FyZEZvb3RlciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/card.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/change-password-modal.tsx":
|
||
/*!*****************************************************!*\
|
||
!*** ./src/components/ui/change-password-modal.tsx ***!
|
||
\*****************************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ChangePasswordModal: () => (/* binding */ ChangePasswordModal)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_hook_form__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-hook-form */ \"(app-pages-browser)/./node_modules/react-hook-form/dist/index.esm.mjs\");\n/* harmony import */ var _hookform_resolvers_zod__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @hookform/resolvers/zod */ \"(app-pages-browser)/./node_modules/@hookform/resolvers/zod/dist/zod.mjs\");\n/* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! zod */ \"(app-pages-browser)/./node_modules/zod/v4/classic/external.js\");\n/* harmony import */ var sonner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! sonner */ \"(app-pages-browser)/./node_modules/sonner/dist/index.mjs\");\n/* harmony import */ var _components_ui_button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/ui/button */ \"(app-pages-browser)/./src/components/ui/button.tsx\");\n/* harmony import */ var _components_ui_input__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/ui/input */ \"(app-pages-browser)/./src/components/ui/input.tsx\");\n/* harmony import */ var _components_ui_label__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/ui/label */ \"(app-pages-browser)/./src/components/ui/label.tsx\");\n/* harmony import */ var _components_ui_dialog__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/ui/dialog */ \"(app-pages-browser)/./src/components/ui/dialog.tsx\");\n/* harmony import */ var _entities_session_store__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/entities/session/store */ \"(app-pages-browser)/./src/entities/session/store.ts\");\n/* harmony import */ var _barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Eye,EyeOff,Lock!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/lock.js\");\n/* harmony import */ var _barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Eye,EyeOff,Lock!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/eye-off.js\");\n/* harmony import */ var _barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Eye,EyeOff,Lock!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/eye.js\");\n/* __next_internal_client_entry_do_not_use__ ChangePasswordModal auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\n\n\n\n\nconst passwordSchema = zod__WEBPACK_IMPORTED_MODULE_9__.object({\n oldPassword: zod__WEBPACK_IMPORTED_MODULE_9__.string().min(1, \"Введите текущий пароль\"),\n newPassword: zod__WEBPACK_IMPORTED_MODULE_9__.string().min(6, \"Новый пароль должен содержать минимум 6 символов\"),\n confirmPassword: zod__WEBPACK_IMPORTED_MODULE_9__.string().min(1, \"Подтвердите пароль\")\n}).refine((data)=>data.newPassword === data.confirmPassword, {\n message: \"Пароли не совпадают\",\n path: [\n \"confirmPassword\"\n ]\n});\nfunction ChangePasswordModal(param) {\n let { open, onOpenChange } = param;\n _s();\n const [showOldPassword, setShowOldPassword] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [showNewPassword, setShowNewPassword] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [showConfirmPassword, setShowConfirmPassword] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const { changePassword, isLoading } = (0,_entities_session_store__WEBPACK_IMPORTED_MODULE_8__.useSessionStore)();\n const { register, handleSubmit, reset, formState: { errors } } = (0,react_hook_form__WEBPACK_IMPORTED_MODULE_10__.useForm)({\n resolver: (0,_hookform_resolvers_zod__WEBPACK_IMPORTED_MODULE_2__.zodResolver)(passwordSchema)\n });\n const onSubmit = async (data)=>{\n try {\n await changePassword(data.oldPassword, data.newPassword);\n sonner__WEBPACK_IMPORTED_MODULE_3__.toast.success(\"Пароль успешно изменён\");\n reset();\n onOpenChange(false);\n } catch (error) {\n var _error_response_data, _error_response;\n sonner__WEBPACK_IMPORTED_MODULE_3__.toast.error((error === null || error === void 0 ? void 0 : (_error_response = error.response) === null || _error_response === void 0 ? void 0 : (_error_response_data = _error_response.data) === null || _error_response_data === void 0 ? void 0 : _error_response_data.message) || \"Ошибка при смене пароля\");\n }\n };\n const handleClose = ()=>{\n reset();\n onOpenChange(false);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_7__.Dialog, {\n open: open,\n onOpenChange: handleClose,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_7__.DialogContent, {\n className: \"sm:max-w-[425px]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_7__.DialogHeader, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_7__.DialogTitle, {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 75,\n columnNumber: 25\n }, this),\n \"Смена пароля\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 74,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_7__.DialogDescription, {\n children: \"Введите текущий пароль и придумайте новый\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 78,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 73,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit(onSubmit),\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_label__WEBPACK_IMPORTED_MODULE_6__.Label, {\n htmlFor: \"oldPassword\",\n children: \"Текущий пароль\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 85,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_5__.Input, {\n id: \"oldPassword\",\n type: showOldPassword ? \"text\" : \"password\",\n placeholder: \"Введите текущий пароль\",\n ...register(\"oldPassword\")\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 87,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowOldPassword(!showOldPassword),\n className: \"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\",\n children: showOldPassword ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 98,\n columnNumber: 52\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 98,\n columnNumber: 85\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 93,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 86,\n columnNumber: 25\n }, this),\n errors.oldPassword && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-red-500\",\n children: errors.oldPassword.message\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 102,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 84,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_label__WEBPACK_IMPORTED_MODULE_6__.Label, {\n htmlFor: \"newPassword\",\n children: \"Новый пароль\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 107,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_5__.Input, {\n id: \"newPassword\",\n type: showNewPassword ? \"text\" : \"password\",\n placeholder: \"Введите новый пароль\",\n ...register(\"newPassword\")\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 109,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowNewPassword(!showNewPassword),\n className: \"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\",\n children: showNewPassword ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 120,\n columnNumber: 52\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 120,\n columnNumber: 85\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 115,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 108,\n columnNumber: 25\n }, this),\n errors.newPassword && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-red-500\",\n children: errors.newPassword.message\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 124,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 106,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_label__WEBPACK_IMPORTED_MODULE_6__.Label, {\n htmlFor: \"confirmPassword\",\n children: \"Подтвердите пароль\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 129,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_5__.Input, {\n id: \"confirmPassword\",\n type: showConfirmPassword ? \"text\" : \"password\",\n placeholder: \"Повторите новый пароль\",\n ...register(\"confirmPassword\")\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 131,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowConfirmPassword(!showConfirmPassword),\n className: \"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\",\n children: showConfirmPassword ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 142,\n columnNumber: 56\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Eye_EyeOff_Lock_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 142,\n columnNumber: 89\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 137,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 130,\n columnNumber: 25\n }, this),\n errors.confirmPassword && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-red-500\",\n children: errors.confirmPassword.message\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 146,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 128,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_7__.DialogFooter, {\n className: \"gap-2 sm:gap-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_7__.DialogClose, {\n asChild: true,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"button\",\n variant: \"outline\",\n children: \"Отмена\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 152,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 151,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"submit\",\n disabled: isLoading,\n children: isLoading ? \"Сохранение...\" : \"Сохранить\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 156,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 150,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 83,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\change-password-modal.tsx\",\n lineNumber: 71,\n columnNumber: 9\n }, this);\n}\n_s(ChangePasswordModal, \"FN4MKM1HqKApaJDLgZRw7d8nyKc=\", false, function() {\n return [\n _entities_session_store__WEBPACK_IMPORTED_MODULE_8__.useSessionStore,\n react_hook_form__WEBPACK_IMPORTED_MODULE_10__.useForm\n ];\n});\n_c = ChangePasswordModal;\nvar _c;\n$RefreshReg$(_c, \"ChangePasswordModal\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2NoYW5nZS1wYXNzd29yZC1tb2RhbC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWdDO0FBQ1M7QUFDWTtBQUM5QjtBQUNPO0FBQ2lCO0FBQ0Y7QUFDQTtBQVNkO0FBQzJCO0FBQ1Y7QUFFaEQsTUFBTW1CLGlCQUFpQmhCLHVDQUFRLENBQUM7SUFDNUJrQixhQUFhbEIsdUNBQVEsR0FBR29CLEdBQUcsQ0FBQyxHQUFHO0lBQy9CQyxhQUFhckIsdUNBQVEsR0FBR29CLEdBQUcsQ0FBQyxHQUFHO0lBQy9CRSxpQkFBaUJ0Qix1Q0FBUSxHQUFHb0IsR0FBRyxDQUFDLEdBQUc7QUFDdkMsR0FBR0csTUFBTSxDQUFDQyxDQUFBQSxPQUFRQSxLQUFLSCxXQUFXLEtBQUtHLEtBQUtGLGVBQWUsRUFBRTtJQUN6REcsU0FBUztJQUNUQyxNQUFNO1FBQUM7S0FBa0I7QUFDN0I7QUFTTyxTQUFTQyxvQkFBb0IsS0FBZ0Q7UUFBaEQsRUFBRUMsSUFBSSxFQUFFQyxZQUFZLEVBQTRCLEdBQWhEOztJQUNoQyxNQUFNLENBQUNDLGlCQUFpQkMsbUJBQW1CLEdBQUdsQywrQ0FBUUEsQ0FBQztJQUN2RCxNQUFNLENBQUNtQyxpQkFBaUJDLG1CQUFtQixHQUFHcEMsK0NBQVFBLENBQUM7SUFDdkQsTUFBTSxDQUFDcUMscUJBQXFCQyx1QkFBdUIsR0FBR3RDLCtDQUFRQSxDQUFDO0lBQy9ELE1BQU0sRUFBRXVDLGNBQWMsRUFBRUMsU0FBUyxFQUFFLEdBQUd6Qix3RUFBZUE7SUFFckQsTUFBTSxFQUNGMEIsUUFBUSxFQUNSQyxZQUFZLEVBQ1pDLEtBQUssRUFDTEMsV0FBVyxFQUFFQyxNQUFNLEVBQUUsRUFDeEIsR0FBRzVDLHlEQUFPQSxDQUFtQjtRQUMxQjZDLFVBQVU1QyxvRUFBV0EsQ0FBQ2lCO0lBQzFCO0lBRUEsTUFBTTRCLFdBQVcsT0FBT3BCO1FBQ3BCLElBQUk7WUFDQSxNQUFN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QUFzQiw4REFBQ3BCLDRGQUFNQTtnREFBQ21DLFdBQVU7Ozs7O3FFQUFlLDhEQUFDcEMsNEZBQUdBO2dEQUFDb0MsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0NBRzlFUCxPQUFPcEIsZUFBZSxrQkFDbkIsOERBQUNvQztvQ0FBRVQsV0FBVTs4Q0FBd0JQLE9BQU9wQixlQUFlLENBQUNHLE9BQU87Ozs7Ozs7Ozs7OztzQ0FJM0UsOERBQUNqQiwrREFBWUE7NEJBQUN5QyxXQUFVOzs4Q0FDcEIsOERBQUN0Qyw4REFBV0E7b0NBQUNnRCxPQUFPOzhDQUNoQiw0RUFBQ3pELHlEQUFNQTt3Q0FBQ29ELE1BQUs7d0NBQVNNLFNBQVE7a0RBQVU7Ozs7Ozs7Ozs7OzhDQUk1Qyw4REFBQzFELHlEQUFNQTtvQ0FBQ29ELE1BQUs7b0NBQVNPLFVBQVV4Qjs4Q0FDM0JBLFlBQVksa0JBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU8zRDtHQTdIZ0JWOztRQUkwQmYsb0VBQWVBO1FBT2pEZCxxREFBT0E7OztLQVhDNkIiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXHVpXFxjaGFuZ2UtcGFzc3dvcmQtbW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSBcInJlYWN0LWhvb2stZm9ybVwiXG5pbXBvcnQgeyB6b2RSZXNvbHZlciB9IGZyb20gXCJAaG9va2Zvcm0vcmVzb2x2ZXJzL3pvZFwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIlxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9idXR0b25cIlxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2lucHV0XCJcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9sYWJlbFwiXG5pbXBvcnQgeyBcbiAgICBEaWFsb2csIFxuICAgIERpYWxvZ0NvbnRlbnQsIFxuICAgIERpYWxvZ0Rlc2NyaXB0aW9uLCBcbiAgICBEaWFsb2dGb290ZXIsIFxuICAgIERpYWxvZ0hlYWRlciwgXG4gICAgRGlhbG9nVGl0bGUsIFxuICAgIERpYWxvZ0Nsb3NlIFxufSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2RpYWxvZ1wiXG5pbXBvcnQgeyB1c2VTZXNzaW9uU3RvcmUgfSBmcm9tIFwiQC9lbnRpdGllcy9zZXNzaW9uL3N0b3JlXCJcbmltcG9ydCB7IEV5ZSwgRXllT2ZmLCBMb2NrIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5cbmNvbnN0IHBhc3N3b3JkU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIG9sZFBhc3N3b3JkOiB6LnN0cmluZygpLm1pbigxLCBcItCS0LLQtdC00LjRgtC1INGC0LXQutGD0YnQuNC5INC/0LDRgNC+0LvRjFwiKSxcbiAgICBuZXdQYXNzd29yZDogei5zdHJpbmcoKS5taW4oNiwgXCLQndC+0LLRi9C5INC/0LDRgNC+0LvRjCDQtNC+0LvQttC10L0g0YHQvtC00LXRgNC20LDRgtGMINC80LjQvdC40LzRg9C8IDYg0YHQuNC80LLQvtC70L7QslwiKSxcbiAgICBjb25maXJtUGFzc3dvcmQ6IHouc3RyaW5nKCkubWluKDEsIFwi0J/QvtC00YLQstC10YDQtNC40YLQtSDQv9Cw0YDQvtC70YxcIiksXG59KS5yZWZpbmUoZGF0YSA9PiBkYXRhLm5ld1Bhc3N3b3JkID09PSBkYXRhLmNvbmZpcm1QYXNzd29yZCwge1xuICAgIG1lc3NhZ2U6IFwi0J/QsNGA0L7Qu9C4INC90LUg0YHQvtCy0L/QsNC00LDRjtGCXCIsXG4gICAgcGF0aDogW1wiY29uZmlybVBhc3N3b3JkXCJdLFxufSlcblxudHlwZSBQYXNzd29yZEZvcm1EYXRhID0gei5pbmZlcjx0eXBlb2YgcGFzc3dvcmRTY2hlbWE+XG5cbmludGVyZmFjZSBDaGFuZ2VQYXNzd29yZE1vZGFsUHJvcHMge1xuICAgIG9wZW46IGJvb2xlYW5cbiAgICBvbk9wZW5DaGFuZ2U6IChvcGVuOiBib29sZWFuKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGFuZ2VQYXNzd29yZE1vZGFsKHsgb3Blbiwgb25PcGVuQ2hhbmdlIH06IENoYW5nZVBhc3N3b3JkTW9kYWxQcm9wcykge1xuICAgIGNvbnN0IFtzaG93T2xkUGFzc3dvcmQsIHNldFNob3dPbGRQYXNzd29yZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgICBjb25zdCBbc2hvd05ld1Bhc3N3b3JkLCBzZXRTaG93TmV3UGFzc3dvcmRdID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW3Nob3dDb25maXJtUGFzc3dvcmQsIHNldFNob3dDb25maXJtUGFzc3dvcmRdID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgeyBjaGFuZ2VQYXNzd29yZCwgaXNMb2FkaW5nIH0gPSB1c2VTZXNzaW9uU3RvcmUoKVxuXG4gICAgY29uc3Qge1xuICAgICAgICByZWdpc3RlcixcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICByZXNldCxcbiAgICAgICAgZm9ybVN0YXRlOiB7IGVycm9ycyB9LFxuICAgIH0gPSB1c2VGb3JtPFBhc3N3b3JkRm9ybURhdGE+KHtcbiAgICAgICAgcmVzb2x2ZXI6IHpvZFJlc29sdmVyKHBhc3N3b3JkU2NoZW1hKSxcbiAgICB9KVxuXG4gICAgY29uc3Qgb25TdWJtaXQgPSBhc3luYyAoZGF0YTogUGFzc3dvcmRGb3JtRGF0YSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgY2hhbmdlUGFzc3dvcmQoZGF0YS5vbGRQYXNzd29yZCwgZGF0YS5uZXdQYXNzd29yZClcbiAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCLQn9Cw0YDQvtC70Ywg0YPRgdC/0LXRiNC90L4g0LjQt9C80LXQvdGR0L1cIilcbiAgICAgICAgICAgIHJlc2V0KClcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoZXJyb3I/LnJlc3BvbnNlPy5kYXRhPy5tZXNzYWdlIHx8IFwi0J7RiNC40LHQutCwINC/0YDQuCDRgdC80LXQvdC1INC/0LDRgNC+0LvRj1wiKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIHJlc2V0KClcbiAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxEaWFsb2cgb3Blbj17b3Blbn0gb25PcGVuQ2hhbmdlPXtoYW5kbGVDbG9zZX0+XG4gICAgICAgICAgICA8RGlhbG9nQ29udGVudCBjbGFzc05hbWU9XCJzbTptYXgtdy1bNDI1cHhdXCI+XG4gICAgICAgICAgICAgICAgPERpYWxvZ0hlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPERpYWxvZ1RpdGxlIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TG9jayBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgINCh0LzQtdC90LAg0L/QsNGA0L7Qu9GPXG4gICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxEaWFsb2dEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgINCS0LLQtdC00LjRgtC1INGC0LXQutGD0YnQuNC5INC/0LDRgNC+0LvRjCDQuCDQv9GA0LjQtNGD0LzQsNC50YLQtSDQvdC+0LLRi9C5XG4gICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nRGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dIZWFkZXI+XG5cbiAgICAgICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0KG9uU3VibWl0KX0gY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm9sZFBhc3N3b3JkXCI+0KLQtdC60YPRidC40Lkg0L/QsNGA0L7Qu9GMPC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvbGRQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e3Nob3dPbGRQYXNzd29yZCA/IFwidGV4dFwiIDogXCJwYXNzd29yZFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCS0LLQtdC00LjRgtC1INGC0LXQutGD0YnQuNC5INC/0LDRgNC+0LvRjFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5yZWdpc3RlcihcIm9sZFBhc3N3b3JkXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd09sZFBhc3N3b3JkKCFzaG93T2xkUGFzc3dvcmQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0zIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93T2xkUGFzc3dvcmQgPyA8RXllT2ZmIGNsYXNzTmFtZT1cInctNCBoLTRcIiAvPiA6IDxFeWUgY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZXJyb3JzLm9sZFBhc3N3b3JkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtcmVkLTUwMFwiPntlcnJvcnMub2xkUGFzc3dvcmQubWVzc2FnZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPExhYmVsIGh0bWxGb3I9XCJuZXdQYXNzd29yZFwiPtCd0L7QstGL0Lkg0L/QsNGA0L7Qu9GMPC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJuZXdQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e3Nob3dOZXdQYXNzd29yZCA/IFwidGV4dFwiIDogXCJwYXNzd29yZFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCS0LLQtdC00LjRgtC1INC90L7QstGL0Lkg0L/QsNGA0L7Qu9GMXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLnJlZ2lzdGVyKFwibmV3UGFzc3dvcmRcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93TmV3UGFzc3dvcmQoIXNob3dOZXdQYXNzd29yZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dOZXdQYXNzd29yZCA/IDxFeWVPZmYgY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+IDogPEV5ZSBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtlcnJvcnMubmV3UGFzc3dvcmQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1yZWQtNTAwXCI+e2Vycm9ycy5uZXdQYXNzd29yZC5tZXNzYWdlfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TGFiZWwgaHRtbEZvcj1cImNvbmZpcm1QYXNzd29yZFwiPtCf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0L/QsNGA0L7Qu9GMPC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb25maXJtUGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtzaG93Q29uZmlybVBhc3N3b3JkID8gXCJ0ZXh0XCIgOiBcInBhc3N3b3JkXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0J/QvtCy0YLQvtGA0LjRgtC1INC90L7QstGL0Lkg0L/QsNGA0L7Qu9GMXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLnJlZ2lzdGVyKFwiY29uZmlybVBhc3N3b3JkXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0NvbmZpcm1QYXNzd29yZCghc2hvd0NvbmZpcm1QYXNzd29yZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dDb25maXJtUGFzc3dvcmQgPyA8RXllT2ZmIGNsYXNzTmFtZT1cInctNCBoLTRcIiAvPiA6IDxFeWUgY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZXJyb3JzLmNvbmZpcm1QYXNzd29yZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXJlZC01MDBcIj57ZXJyb3JzLmNvbmZpcm1QYXNzd29yZC5tZXNzYWdlfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxEaWFsb2dGb290ZXIgY2xhc3NOYW1lPVwiZ2FwLTIgc206Z2FwLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaWFsb2dDbG9zZSBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cImJ1dHRvblwiIHZhcmlhbnQ9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCe0YLQvNC10L3QsFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9EaWFsb2dDbG9zZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInN1Ym1pdFwiIGRpc2FibGVkPXtpc0xvYWRpbmd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmcgPyBcItCh0L7RhdGA0LDQvdC10L3QuNC1Li4uXCIgOiBcItCh0L7RhdGA0LDQvdC40YLRjFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nRm9vdGVyPlxuICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgICAgPC9EaWFsb2c+XG4gICAgKVxufVxuIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRm9ybSIsInpvZFJlc29sdmVyIiwieiIsInRvYXN0IiwiQnV0dG9uIiwiSW5wdXQiLCJMYWJlbCIsIkRpYWxvZyIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dEZXNjcmlwdGlvbiIsIkRpYWxvZ0Zvb3RlciIsIkRpYWxvZ0hlYWRlciIsIkRpYWxvZ1RpdGxlIiwiRGlhbG9nQ2xvc2UiLCJ1c2VTZXNzaW9uU3RvcmUiLCJFeWUiLCJFeWVPZmYiLCJMb2NrIiwicGFzc3dvcmRTY2hlbWEiLCJvYmplY3QiLCJvbGRQYXNzd29yZCIsInN0cmluZyIsIm1pbiIsIm5ld1Bhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwicmVmaW5lIiwiZGF0YSIsIm1lc3NhZ2UiLCJwYXRoIiwiQ2hhbmdlUGFzc3dvcmRNb2RhbCIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJzaG93T2xkUGFzc3dvcmQiLCJzZXRTaG93T2xkUGFzc3dvcmQiLCJzaG93TmV3UGFzc3dvcmQiLCJzZXRTaG93TmV3UGFzc3dvcmQiLCJzaG93Q29uZmlybVBhc3N3b3JkIiwic2V0U2hvd0NvbmZpcm1QYXNzd29yZCIsImNoYW5nZVBhc3N3b3JkIiwiaXNMb2FkaW5nIiwicmVnaXN0ZXIiLCJoYW5kbGVTdWJtaXQiLCJyZXNldCIsImZvcm1TdGF0ZSIsImVycm9ycyIsInJlc29sdmVyIiwib25TdWJtaXQiLCJzdWNjZXNzIiwiZXJyb3IiLCJyZXNwb25zZSIsImhhbmRsZUNsb3NlIiwiY2xhc3NOYW1lIiwiZm9ybSIsImRpdiIsImh0bWxGb3IiLCJpZCIsInR5cGUiLCJwbGFjZWhvbGRlciIsImJ1dHRvbiIsIm9uQ2xpY2siLCJwIiwiYXNDaGlsZCIsInZhcmlhbnQiLCJkaXNhYmxlZCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/change-password-modal.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/checkbox.tsx":
|
||
/*!****************************************!*\
|
||
!*** ./src/components/ui/checkbox.tsx ***!
|
||
\****************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Checkbox: () => (/* binding */ Checkbox)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _radix_ui_react_checkbox__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-checkbox */ \"(app-pages-browser)/./node_modules/@radix-ui/react-checkbox/dist/index.mjs\");\n/* harmony import */ var _barrel_optimize_names_Check_lucide_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Check!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/check.js\");\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n/* __next_internal_client_entry_do_not_use__ Checkbox auto */ \n\n\n\n\nconst Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c = (param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_radix_ui_react_checkbox__WEBPACK_IMPORTED_MODULE_3__.Root, {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\", className),\n ...props,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_radix_ui_react_checkbox__WEBPACK_IMPORTED_MODULE_3__.Indicator, {\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"flex items-center justify-center text-current\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\checkbox.tsx\",\n lineNumber: 24,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\checkbox.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\checkbox.tsx\",\n lineNumber: 13,\n columnNumber: 5\n }, undefined);\n});\n_c1 = Checkbox;\nCheckbox.displayName = _radix_ui_react_checkbox__WEBPACK_IMPORTED_MODULE_3__.Root.displayName;\n\nvar _c, _c1;\n$RefreshReg$(_c, \"Checkbox$React.forwardRef\");\n$RefreshReg$(_c1, \"Checkbox\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2NoZWNrYm94LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUU4QjtBQUMrQjtBQUN6QjtBQUVHO0FBRXZDLE1BQU1JLHlCQUFXSiw2Q0FBZ0IsTUFHL0IsUUFBMEJNO1FBQXpCLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxPQUFPO3lCQUN0Qiw4REFBQ1AsMERBQXNCO1FBQ25CSyxLQUFLQTtRQUNMQyxXQUFXSixxREFBRUEsQ0FDVCxrVEFDQUk7UUFFSCxHQUFHQyxLQUFLO2tCQUVULDRFQUFDUCwrREFBMkI7WUFDeEJNLFdBQVdKLHFEQUFFQSxDQUFDO3NCQUVkLDRFQUFDRCxpRkFBS0E7Z0JBQUNLLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUk3QkgsU0FBU08sV0FBVyxHQUFHViwwREFBc0IsQ0FBQ1UsV0FBVztBQUV0QyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXHNyY1xcY29tcG9uZW50c1xcdWlcXGNoZWNrYm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIlxyXG5cclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0ICogYXMgQ2hlY2tib3hQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jaGVja2JveFwiXHJcbmltcG9ydCB7IENoZWNrIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXHJcblxyXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3NoYXJlZC9saWIvdXRpbHNcIlxyXG5cclxuY29uc3QgQ2hlY2tib3ggPSBSZWFjdC5mb3J3YXJkUmVmPFxyXG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXHJcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XHJcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcclxuICAgIDxDaGVja2JveFByaW1pdGl2ZS5Sb290XHJcbiAgICAgICAgcmVmPXtyZWZ9XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcclxuICAgICAgICAgICAgXCJwZWVyIGgtNCB3LTQgc2hyaW5rLTAgcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLXByaW1hcnkgcmluZy1vZmZzZXQtYmFja2dyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06YmctcHJpbWFyeSBkYXRhLVtzdGF0ZT1jaGVja2VkXTp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxyXG4gICAgICAgICAgICBjbGFzc05hbWVcclxuICAgICAgICApfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgID5cclxuICAgICAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWN1cnJlbnRcIil9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XHJcbiAgICAgICAgPC9DaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3I+XHJcbiAgICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XHJcbikpXHJcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gQ2hlY2tib3hQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZVxyXG5cclxuZXhwb3J0IHsgQ2hlY2tib3ggfVxyXG4iXSwibmFtZXMiOlsiUmVhY3QiLCJDaGVja2JveFByaW1pdGl2ZSIsIkNoZWNrIiwiY24iLCJDaGVja2JveCIsImZvcndhcmRSZWYiLCJyZWYiLCJjbGFzc05hbWUiLCJwcm9wcyIsIlJvb3QiLCJJbmRpY2F0b3IiLCJkaXNwbGF5TmFtZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/checkbox.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/description-viewer.tsx":
|
||
/*!**************************************************!*\
|
||
!*** ./src/components/ui/description-viewer.tsx ***!
|
||
\**************************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DescriptionViewer: () => (/* binding */ DescriptionViewer)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_ChevronDown_ChevronUp_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=ChevronDown,ChevronUp!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-up.js\");\n/* harmony import */ var _barrel_optimize_names_ChevronDown_ChevronUp_lucide_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=ChevronDown,ChevronUp!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-down.js\");\n/* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./button */ \"(app-pages-browser)/./src/components/ui/button.tsx\");\n\nvar _s = $RefreshSig$();\n\n\n\nfunction DescriptionViewer(param) {\n let { description, maxLines = 10 } = param;\n _s();\n const [isExpanded, setIsExpanded] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [isOverflowing, setIsOverflowing] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const contentRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n // Проверяем, превышает ли контент лимит строк\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"DescriptionViewer.useEffect\": ()=>{\n if (contentRef.current) {\n const lineHeight = 20; // примерно 20px на строку\n const maxHeight = lineHeight * maxLines;\n const isOver = contentRef.current.scrollHeight > maxHeight;\n setIsOverflowing(isOver);\n }\n }\n }[\"DescriptionViewer.useEffect\"], [\n description,\n maxLines\n ]);\n // Обработчик кликов по ссылкам с предупреждением для внешних ресурсов\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"DescriptionViewer.useEffect\": ()=>{\n const handleLinkClick = {\n \"DescriptionViewer.useEffect.handleLinkClick\": (e)=>{\n const target = e.target;\n const link = target.closest(\"a\");\n if (link) {\n e.preventDefault();\n const href = link.getAttribute(\"href\");\n if (!href) return;\n // Проверяем, является ли ссылка внешней\n const isExternal = href.startsWith(\"http://\") || href.startsWith(\"https://\");\n if (isExternal) {\n try {\n const domain = new URL(href).hostname;\n const confirmed = confirm(\"Вы переходите на внешний ресурс: \".concat(domain, \"\\n\\n\") + \"Ссылка: \".concat(href, \"\\n\\n\") + \"Вы уверены, что хотите перейти?\");\n if (confirmed) {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n }\n } catch (e) {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n }\n } else {\n window.open(href, \"_blank\");\n }\n }\n }\n }[\"DescriptionViewer.useEffect.handleLinkClick\"];\n const content = contentRef.current;\n if (content) {\n content.addEventListener(\"click\", handleLinkClick);\n return ({\n \"DescriptionViewer.useEffect\": ()=>content.removeEventListener(\"click\", handleLinkClick)\n })[\"DescriptionViewer.useEffect\"];\n }\n }\n }[\"DescriptionViewer.useEffect\"], []);\n if (!description) return null;\n // Если описание содержит HTML теги (от Tiptap), рендерим как HTML\n const isHtml = description.includes(\"<\");\n if (isHtml) {\n const lineHeight = 20;\n const maxHeight = lineHeight * maxLines;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex py-3 justify-start items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground mr-4 whitespace-nowrap\",\n children: \"Описание\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 77,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: contentRef,\n className: \"text-left text-sm leading-relaxed prose prose-sm max-w-none dark:prose-invert overflow-hidden transition-all duration-200 \".concat(isExpanded ? \"max-h-none\" : \"\"),\n style: {\n maxHeight: isExpanded ? \"none\" : \"\".concat(maxHeight, \"px\")\n },\n dangerouslySetInnerHTML: {\n __html: description\n }\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 79,\n columnNumber: 21\n }, this),\n isOverflowing && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_2__.Button, {\n variant: \"link\",\n size: \"sm\",\n onClick: ()=>setIsExpanded(!isExpanded),\n className: \"mt-2 h-auto p-0 text-blue-600 hover:text-blue-700\",\n children: isExpanded ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n \"Свернуть\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ChevronDown_ChevronUp_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"ml-1 h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 100,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n \"Показать полностью\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ChevronDown_ChevronUp_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"ml-1 h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 105,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 91,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 78,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 76,\n columnNumber: 13\n }, this);\n }\n // Для старых описаний без HTML (простой текст)\n const lines = description.split('\\n');\n const shouldShowSpoiler = lines.length > maxLines;\n const displayLines = isExpanded ? lines : lines.slice(0, maxLines);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex py-3 justify-start items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground mr-4 whitespace-nowrap\",\n children: \"Описание\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 122,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-left text-sm leading-relaxed whitespace-pre-wrap break-words\",\n children: displayLines.join('\\n')\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 124,\n columnNumber: 17\n }, this),\n shouldShowSpoiler && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_2__.Button, {\n variant: \"link\",\n size: \"sm\",\n onClick: ()=>setIsExpanded(!isExpanded),\n className: \"mt-2 h-auto p-0 text-blue-600 hover:text-blue-700\",\n children: isExpanded ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n \"Свернуть\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ChevronDown_ChevronUp_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"ml-1 h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 137,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n \"Показать полностью\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ChevronDown_ChevronUp_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"ml-1 h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 142,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 128,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 123,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\description-viewer.tsx\",\n lineNumber: 121,\n columnNumber: 9\n }, this);\n}\n_s(DescriptionViewer, \"8WZjEmqg/a1zB2jFEnYXIcS08SU=\");\n_c = DescriptionViewer;\nvar _c;\n$RefreshReg$(_c, \"DescriptionViewer\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2Rlc2NyaXB0aW9uLXZpZXdlci50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQW9EO0FBQ0U7QUFDcEI7QUFPM0IsU0FBU00sa0JBQWtCLEtBQXNEO1FBQXRELEVBQUVDLFdBQVcsRUFBRUMsV0FBVyxFQUFFLEVBQTBCLEdBQXREOztJQUM5QixNQUFNLENBQUNDLFlBQVlDLGNBQWMsR0FBR1YsK0NBQVFBLENBQUM7SUFDN0MsTUFBTSxDQUFDVyxlQUFlQyxpQkFBaUIsR0FBR1osK0NBQVFBLENBQUM7SUFDbkQsTUFBTWEsYUFBYVgsNkNBQU1BLENBQWlCO0lBRTFDLDhDQUE4QztJQUM5Q0QsZ0RBQVNBO3VDQUFDO1lBQ04sSUFBSVksV0FBV0MsT0FBTyxFQUFFO2dCQUNwQixNQUFNQyxhQUFhLElBQUksMEJBQTBCO2dCQUNqRCxNQUFNQyxZQUFZRCxhQUFhUDtnQkFDL0IsTUFBTVMsU0FBU0osV0FBV0MsT0FBTyxDQUFDSSxZQUFZLEdBQUdGO2dCQUNqREosaUJBQWlCSztZQUNyQjtRQUNKO3NDQUFHO1FBQUNWO1FBQWFDO0tBQVM7SUFFMUIsc0VBQXNFO0lBQ3RFUCxnREFBU0E7dUNBQUM7WUFDTixNQUFNa0I7K0RBQWtCLENBQUNDO29CQUNyQixNQUFNQyxTQUFTRCxFQUFFQyxNQUFNO29CQUN2QixNQUFNQyxPQUFPRCxPQUFPRSxPQUFPLENBQUM7b0JBRTVCLElBQUlELE1BQU07d0JBQ05GLEVBQUVJLGNBQWM7d0JBQ2hCLE1BQU1DLE9BQU9ILEtBQUtJLFlBQVksQ0FBQzt3QkFDL0IsSUFBSSxDQUFDRCxNQUFNO3dCQUVYLHdDQUF3Qzt3QkFDeEMsTUFBTUUsYUFBYUYsS0FBS0csVUFBVSxDQUFDLGNBQWNILEtBQUtHLFVBQVUsQ0FBQzt3QkFFakUsSUFBSUQsWUFBWTs0QkFDWixJQUFJO2dDQUNBLE1BQU1FLFNBQVMsSUFBSUMsSUFBSUwsTUFBTU0sUUFBUTtnQ0FDckMsTUFBTUMsWUFBWUMsUUFDZCxvQ0FBMkMsT0FBUEosUUFBTyxVQUMzQyxXQUFnQixPQUFMSixNQUFLLFVBQ2Y7Z0NBRUwsSUFBSU8sV0FBVztvQ0FDWEUsT0FBT0MsSUFBSSxDQUFDVixNQUFNLFVBQVU7Z0NBQ2hDOzRCQUNKLEVBQUUsVUFBTTtnQ0FDSlMsT0FBT0MsSUFBSSxDQUFDVixNQUFNLFVBQVU7NEJBQ2hDO3dCQUNKLE9BQU87NEJBQ0hTLE9BQU9DLElBQUksQ0FBQ1YsTUFBTTt3QkFDdEI7b0JBQ0o7Z0JBQ0o7O1lBRUEsTUFBTVcsVUFBVXZCLFdBQVdDLE9BQU87WUFDbEMsSUFBSXNCLFNBQVM7Z0JBQ1RBLFFBQVFDLGdCQUFnQixDQUFDLFNBQVNsQjtnQkFDbEM7bURBQU8sSUFBTWlCLFFBQVFFLG1CQUFtQixDQUFDLFNBQVNuQjs7WUFDdEQ7UUFDSjtzQ0FBRyxFQUFFO0lBRUwsSUFBSSxDQUFDWixhQUFhLE9BQU87SUFFekIsa0VBQWtFO0lBQ2xFLE1BQU1nQyxTQUFTaEMsWUFBWWlDLFFBQVEsQ0FBQztJQUVwQyxJQUFJRCxRQUFRO1FBQ1IsTUFBTXhCLGFBQWE7UUFDbkIsTUFBTUMsWUFBWUQsYUFBYVA7UUFFL0IscUJBQ0ksOERBQUNpQztZQUFJQyxXQUFVOzs4QkFDWCw4REFBQ0M7b0JBQUtELFdBQVU7OEJBQStDOzs7Ozs7OEJBQy9ELDhEQUFDRDtvQkFBSUMsV0FBVTs7c0NBQ1gsOERBQUNEOzRCQUNHRyxLQUFLL0I7NEJBQ0w2QixXQUFXLDZIQUNOLE9BRG1JakMsYUFBYSxlQUFlOzRCQUVwS29DLE9BQU87Z0NBQ0g3QixXQUFXUCxhQUFhLFNBQVMsR0FBYSxPQUFWTyxXQUFVOzRCQUNsRDs0QkFDQThCLHlCQUF5QjtnQ0FDckJDLFFBQVF4Qzs0QkFDWjs7Ozs7O3dCQUVISSwrQkFDRyw4REFBQ04sMkNBQU1BOzRCQUNIMkMsU0FBUTs0QkFDUkMsTUFBSzs0QkFDTEMsU0FBUyxJQUFNeEMsY0FBYyxDQUFDRDs0QkFDOUJpQyxXQUFVO3NDQUVUakMsMkJBQ0c7O29DQUFFO2tEQUVFLDhEQUFDTCxpR0FBU0E7d0NBQUNzQyxXQUFVOzs7Ozs7OzZEQUd6Qjs7b0NBQUU7a0RBRUUsOERBQUN2QyxpR0FBV0E7d0NBQUN1QyxXQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBUXZEO0lBRUEsK0NBQStDO0lBQy9DLE1BQU1TLFFBQVE1QyxZQUFZNkMsS0FBSyxDQUFDO0lBQ2hDLE1BQU1DLG9CQUFvQkYsTUFBTUcsTUFBTSxHQUFHOUM7SUFDekMsTUFBTStDLGVBQWU5QyxhQUFhMEMsUUFBUUEsTUFBTUssS0FBSyxDQUFDLEdBQUdoRDtJQUV6RCxxQkFDSSw4REFBQ2lDO1FBQUlDLFdBQVU7OzBCQUNYLDhEQUFDQztnQkFBS0QsV0FBVTswQkFBK0M7Ozs7OzswQkFDL0QsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FDWCw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQ1ZhLGFBQWFFLElBQUksQ0FBQzs7Ozs7O29CQUV0QkosbUNBQ0csOERBQUNoRCwyQ0FBTUE7d0JBQ0gyQyxTQUFRO3dCQUNSQyxNQUFLO3dCQUNMQyxTQUFTLElBQU14QyxjQUFjLENBQUNEO3dCQUM5QmlDLFdBQVU7a0NBRVRqQywyQkFDRzs7Z0NBQUU7OENBRUUsOERBQUNMLGlHQUFTQTtvQ0FBQ3NDLFdBQVU7Ozs7Ozs7eURBR3pCOztnQ0FBRTs4Q0FFRSw4REFBQ3ZDLGlHQUFXQTtvQ0FBQ3VDLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRdkQ7R0E1SWdCcEM7S0FBQUEiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXHVpXFxkZXNjcmlwdGlvbi12aWV3ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25VcCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuL2J1dHRvblwiO1xuXG5pbnRlcmZhY2UgRGVzY3JpcHRpb25WaWV3ZXJQcm9wcyB7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBtYXhMaW5lcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERlc2NyaXB0aW9uVmlld2VyKHsgZGVzY3JpcHRpb24sIG1heExpbmVzID0gMTAgfTogRGVzY3JpcHRpb25WaWV3ZXJQcm9wcykge1xuICAgIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNPdmVyZmxvd2luZywgc2V0SXNPdmVyZmxvd2luZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29udGVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgICAvLyDQn9GA0L7QstC10YDRj9C10LwsINC/0YDQtdCy0YvRiNCw0LXRgiDQu9C4INC60L7QvdGC0LXQvdGCINC70LjQvNC40YIg0YHRgtGA0L7QulxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250ZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSAyMDsgLy8g0L/RgNC40LzQtdGA0L3QviAyMHB4INC90LAg0YHRgtGA0L7QutGDXG4gICAgICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBsaW5lSGVpZ2h0ICogbWF4TGluZXM7XG4gICAgICAgICAgICBjb25zdCBpc092ZXIgPSBjb250ZW50UmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0ID4gbWF4SGVpZ2h0O1xuICAgICAgICAgICAgc2V0SXNPdmVyZmxvd2luZyhpc092ZXIpO1xuICAgICAgICB9XG4gICAgfSwgW2Rlc2NyaXB0aW9uLCBtYXhMaW5lc10pO1xuXG4gICAgLy8g0J7QsdGA0LDQsdC+0YLRh9C40Log0LrQu9C40LrQvtCyINC/0L4g0YHRgdGL0LvQutCw0Lwg0YEg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtdC8INC00LvRjyDQstC90LXRiNC90LjRhSDRgNC10YHRg9GA0YHQvtCyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlTGlua0NsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgbGluayA9IHRhcmdldC5jbG9zZXN0KFwiYVwiKTtcblxuICAgICAgICAgICAgaWYgKGxpbmspIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaHJlZiA9IGxpbmsuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKTtcbiAgICAgICAgICAgICAgICBpZiAoIWhyZWYpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIC8vINCf0YDQvtCy0LXRgNGP0LXQvCwg0Y/QstC70Y/QtdGC0YHRjyDQu9C4INGB0YHRi9C70LrQsCDQstC90LXRiNC90LXQuVxuICAgICAgICAgICAgICAgIGNvbnN0IGlzRXh0ZXJuYWwgPSBocmVmLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpIHx8IGhyZWYuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzRXh0ZXJuYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbiA9IG5ldyBVUkwoaHJlZikuaG9zdG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25maXJtZWQgPSBjb25maXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGDQktGLINC/0LXRgNC10YXQvtC00LjRgtC1INC90LAg0LLQvdC10YjQvdC40Lkg0YDQtdGB0YPRgNGBOiAke2RvbWFpbn1cXG5cXG5gICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBg0KHRgdGL0LvQutCwOiAke2hyZWZ9XFxuXFxuYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYNCS0Ysg0YPQstC10YDQtdC90YssINGH0YLQviDRhdC+0YLQuNGC0LUg0L/QtdGA0LXQudGC0Lg/YFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihocmVmLCBcIl9ibGFua1wiLCBcIm5vb3BlbmVyLG5vcmVmZXJyZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oaHJlZiwgXCJfYmxhbmtcIiwgXCJub29wZW5lcixub3JlZmVycmVyXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oaHJlZiwgXCJfYmxhbmtcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICBjb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVMaW5rQ2xpY2spO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IGNvbnRlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUxpbmtDbGljayk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICBpZiAoIWRlc2NyaXB0aW9uKSByZXR1cm4gbnVsbDtcblxuICAgIC8vINCV0YHQu9C4INC+0L/QuNGB0LDQvdC40LUg0YHQvtC00LXRgNC20LjRgiBIVE1MINGC0LXQs9C4ICjQvtGCIFRpcHRhcCksINGA0LXQvdC00LXRgNC40Lwg0LrQsNC6IEhUTUxcbiAgICBjb25zdCBpc0h0bWwgPSBkZXNjcmlwdGlvbi5pbmNsdWRlcyhcIjxcIik7XG5cbiAgICBpZiAoaXNIdG1sKSB7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSAyMDtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gbGluZUhlaWdodCAqIG1heExpbmVzO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggcHktMyBqdXN0aWZ5LXN0YXJ0IGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG1yLTQgd2hpdGVzcGFjZS1ub3dyYXBcIj7QntC/0LjRgdCw0L3QuNC1PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtjb250ZW50UmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgdGV4dC1sZWZ0IHRleHQtc20gbGVhZGluZy1yZWxheGVkIHByb3NlIHByb3NlLXNtIG1heC13LW5vbmUgZGFyazpwcm9zZS1pbnZlcnQgb3ZlcmZsb3ctaGlkZGVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCAke2lzRXhwYW5kZWQgPyBcIm1heC1oLW5vbmVcIiA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBpc0V4cGFuZGVkID8gXCJub25lXCIgOiBgJHttYXhIZWlnaHR9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19odG1sOiBkZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAge2lzT3ZlcmZsb3dpbmcgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm10LTIgaC1hdXRvIHAtMCB0ZXh0LWJsdWUtNjAwIGhvdmVyOnRleHQtYmx1ZS03MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0KHQstC10YDQvdGD0YLRjFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25VcCBjbGFzc05hbWU9XCJtbC0xIGgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0J/QvtC60LDQt9Cw0YLRjCDQv9C+0LvQvdC+0YHRgtGM0Y5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJtbC0xIGgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyDQlNC70Y8g0YHRgtCw0YDRi9GFINC+0L/QuNGB0LDQvdC40Lkg0LHQtdC3IEhUTUwgKNC/0YDQvtGB0YLQvtC5INGC0LXQutGB0YIpXG4gICAgY29uc3QgbGluZXMgPSBkZXNjcmlwdGlvbi5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3Qgc2hvdWxkU2hvd1Nwb2lsZXIgPSBsaW5lcy5sZW5ndGggPiBtYXhMaW5lcztcbiAgICBjb25zdCBkaXNwbGF5TGluZXMgPSBpc0V4cGFuZGVkID8gbGluZXMgOiBsaW5lcy5zbGljZSgwLCBtYXhMaW5lcyk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggcHktMyBqdXN0aWZ5LXN0YXJ0IGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgbXItNCB3aGl0ZXNwYWNlLW5vd3JhcFwiPtCe0L/QuNGB0LDQvdC40LU8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBtaW4tdy0wXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxlZnQgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgd2hpdGVzcGFjZS1wcmUtd3JhcCBicmVhay13b3Jkc1wiPlxuICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheUxpbmVzLmpvaW4oJ1xcbicpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHtzaG91bGRTaG93U3BvaWxlciAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm10LTIgaC1hdXRvIHAtMCB0ZXh0LWJsdWUtNjAwIGhvdmVyOnRleHQtYmx1ZS03MDBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNFeHBhbmRlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQodCy0LXRgNC90YPRgtGMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwibWwtMSBoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0J/QvtC60LDQt9Cw0YLRjCDQv9C+0LvQvdC+0YHRgtGM0Y5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cIm1sLTEgaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJDaGV2cm9uRG93biIsIkNoZXZyb25VcCIsIkJ1dHRvbiIsIkRlc2NyaXB0aW9uVmlld2VyIiwiZGVzY3JpcHRpb24iLCJtYXhMaW5lcyIsImlzRXhwYW5kZWQiLCJzZXRJc0V4cGFuZGVkIiwiaXNPdmVyZmxvd2luZyIsInNldElzT3ZlcmZsb3dpbmciLCJjb250ZW50UmVmIiwiY3VycmVudCIsImxpbmVIZWlnaHQiLCJtYXhIZWlnaHQiLCJpc092ZXIiLCJzY3JvbGxIZWlnaHQiLCJoYW5kbGVMaW5rQ2xpY2siLCJlIiwidGFyZ2V0IiwibGluayIsImNsb3Nlc3QiLCJwcmV2ZW50RGVmYXVsdCIsImhyZWYiLCJnZXRBdHRyaWJ1dGUiLCJpc0V4dGVybmFsIiwic3RhcnRzV2l0aCIsImRvbWFpbiIsIlVSTCIsImhvc3RuYW1lIiwiY29uZmlybWVkIiwiY29uZmlybSIsIndpbmRvdyIsIm9wZW4iLCJjb250ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpc0h0bWwiLCJpbmNsdWRlcyIsImRpdiIsImNsYXNzTmFtZSIsInNwYW4iLCJyZWYiLCJzdHlsZSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwidmFyaWFudCIsInNpemUiLCJvbkNsaWNrIiwibGluZXMiLCJzcGxpdCIsInNob3VsZFNob3dTcG9pbGVyIiwibGVuZ3RoIiwiZGlzcGxheUxpbmVzIiwic2xpY2UiLCJqb2luIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/description-viewer.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/dialog.tsx":
|
||
/*!**************************************!*\
|
||
!*** ./src/components/ui/dialog.tsx ***!
|
||
\**************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Dialog: () => (/* binding */ Dialog),\n/* harmony export */ DialogClose: () => (/* binding */ DialogClose),\n/* harmony export */ DialogContent: () => (/* binding */ DialogContent),\n/* harmony export */ DialogDescription: () => (/* binding */ DialogDescription),\n/* harmony export */ DialogFooter: () => (/* binding */ DialogFooter),\n/* harmony export */ DialogHeader: () => (/* binding */ DialogHeader),\n/* harmony export */ DialogTitle: () => (/* binding */ DialogTitle)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_X_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=X!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/x.js\");\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n/* __next_internal_client_entry_do_not_use__ Dialog,DialogContent,DialogHeader,DialogFooter,DialogTitle,DialogDescription,DialogClose auto */ \n\n\n\nfunction Dialog(param) {\n let { open, onOpenChange, children } = param;\n if (!open) return null;\n // Передаем onOpenChange через контекст или рендерим children с пропсами\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: children\n }, void 0, false);\n}\n_c = Dialog;\nfunction DialogContent(param) {\n let { children, className, onClose, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 z-50 flex items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/50 backdrop-blur-sm\",\n onClick: onClose\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 29,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"relative z-50 w-full max-w-lg mx-4 bg-white dark:bg-zinc-900 rounded-lg shadow-lg\", className),\n ...props,\n children: [\n onClose && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\",\n onClick: onClose,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_X_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 48,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"sr-only\",\n children: \"Закрыть\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 49,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 44,\n columnNumber: 21\n }, this),\n children\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 35,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, this);\n}\n_c1 = DialogContent;\nfunction DialogHeader(param) {\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"flex flex-col space-y-1.5 text-center sm:text-left\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 62,\n columnNumber: 9\n }, this);\n}\n_c2 = DialogHeader;\nfunction DialogFooter(param) {\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 73,\n columnNumber: 9\n }, this);\n}\n_c3 = DialogFooter;\nfunction DialogTitle(param) {\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"text-lg font-semibold leading-none tracking-tight\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this);\n}\n_c4 = DialogTitle;\nfunction DialogDescription(param) {\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"text-sm text-muted-foreground\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 98,\n columnNumber: 9\n }, this);\n}\n_c5 = DialogDescription;\nfunction DialogClose(param) {\n let { className, asChild, ...props } = param;\n // Если asChild=true, нужно использовать Slot из radix-ui\n if (asChild) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const { Slot } = __webpack_require__(/*! @radix-ui/react-slot */ \"(app-pages-browser)/./node_modules/@radix-ui/react-slot/dist/index.js\");\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Slot, {\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 115,\n columnNumber: 13\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\", className),\n ...props,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_X_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 133,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"sr-only\",\n children: \"Закрыть\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 134,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\dialog.tsx\",\n lineNumber: 126,\n columnNumber: 9\n }, this);\n}\n_c6 = DialogClose;\nvar _c, _c1, _c2, _c3, _c4, _c5, _c6;\n$RefreshReg$(_c, \"Dialog\");\n$RefreshReg$(_c1, \"DialogContent\");\n$RefreshReg$(_c2, \"DialogHeader\");\n$RefreshReg$(_c3, \"DialogFooter\");\n$RefreshReg$(_c4, \"DialogTitle\");\n$RefreshReg$(_c5, \"DialogDescription\");\n$RefreshReg$(_c6, \"DialogClose\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2RpYWxvZy50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUU4QjtBQUNFO0FBQ087QUFRaEMsU0FBU0csT0FBTyxLQUE2QztRQUE3QyxFQUFFQyxJQUFJLEVBQUVDLFlBQVksRUFBRUMsUUFBUSxFQUFlLEdBQTdDO0lBQ25CLElBQUksQ0FBQ0YsTUFBTSxPQUFPO0lBRWxCLHdFQUF3RTtJQUN4RSxxQkFBTztrQkFBR0U7O0FBQ2Q7S0FMZ0JIO0FBWVQsU0FBU0ksY0FBYyxLQUE4RDtRQUE5RCxFQUFFRCxRQUFRLEVBQUVFLFNBQVMsRUFBRUMsT0FBTyxFQUFFLEdBQUdDLE9BQTJCLEdBQTlEO0lBQzFCLHFCQUNJLDhEQUFDQztRQUFJSCxXQUFVOzswQkFFWCw4REFBQ0c7Z0JBQ0dILFdBQVU7Z0JBQ1ZJLFNBQVNIOzs7Ozs7MEJBSWIsOERBQUNFO2dCQUNHSCxXQUFXTixxREFBRUEsQ0FDVCxxRkFDQU07Z0JBRUgsR0FBR0UsS0FBSzs7b0JBR1JELHlCQUNHLDhEQUFDSTt3QkFDR0wsV0FBVTt3QkFDVkksU0FBU0g7OzBDQUVULDhEQUFDUiw2RUFBQ0E7Z0NBQUNPLFdBQVU7Ozs7OzswQ0FDYiw4REFBQ007Z0NBQUtOLFdBQVU7MENBQVU7Ozs7Ozs7Ozs7OztvQkFHakNGOzs7Ozs7Ozs7Ozs7O0FBSWpCO01BL0JnQkM7QUFtQ1QsU0FBU1EsYUFBYSxLQUEwQztRQUExQyxFQUFFUCxTQUFTLEVBQUUsR0FBR0UsT0FBMEIsR0FBMUM7SUFDekIscUJBQ0ksOERBQUNDO1FBQ0dILFdBQVdOLHFEQUFFQSxDQUFDLHNEQUFzRE07UUFDbkUsR0FBR0UsS0FBSzs7Ozs7O0FBR3JCO01BUGdCSztBQVdULFNBQVNDLGFBQWEsS0FBMEM7UUFBMUMsRUFBRVIsU0FBUyxFQUFFLEdBQUdFLE9BQTBCLEdBQTFDO0lBQ3pCLHFCQUNJLDhEQUFDQztRQUNHSCxXQUFXTixxREFBRUEsQ0FDVCxpRUFDQU07UUFFSCxHQUFHRSxLQUFLOzs7Ozs7QUFHckI7TUFWZ0JNO0FBY1QsU0FBU0MsWUFBWSxLQUF5QztRQUF6QyxFQUFFVCxTQUFTLEVBQUUsR0FBR0UsT0FBeUIsR0FBekM7SUFDeEIscUJBQ0ksOERBQUNRO1FBQ0dWLFdBQVdOLHFEQUFFQSxDQUFDLHFEQUFxRE07UUFDbEUsR0FBR0UsS0FBSzs7Ozs7O0FBR3JCO01BUGdCTztBQVdULFNBQVNFLGtCQUFrQixLQUErQztRQUEvQyxFQUFFWCxTQUFTLEVBQUUsR0FBR0UsT0FBK0IsR0FBL0M7SUFDOUIscUJBQ0ksOERBQUNVO1FBQ0daLFdBQVdOLHFEQUFFQSxDQUFDLGlDQUFpQ007UUFDOUMsR0FBR0UsS0FBSzs7Ozs7O0FBR3JCO01BUGdCUztBQWFULFNBQVNFLFlBQVksS0FBa0Q7UUFBbEQsRUFBRWIsU0FBUyxFQUFFYyxPQUFPLEVBQUUsR0FBR1osT0FBeUIsR0FBbEQ7SUFDeEIseURBQXlEO0lBQ3pELElBQUlZLFNBQVM7UUFDVCxpRUFBaUU7UUFDakUsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsbUJBQU9BLENBQUMsbUdBQXNCO1FBQy9DLHFCQUNJLDhEQUFDRDtZQUNHZixXQUFXTixxREFBRUEsQ0FDVCxpUkFDQU07WUFFSCxHQUFHRSxLQUFLOzs7Ozs7SUFHckI7SUFFQSxxQkFDSSw4REFBQ0c7UUFDR0wsV0FBV04scURBQUVBLENBQ1QsaVJBQ0FNO1FBRUgsR0FBR0UsS0FBSzs7MEJBRVQsOERBQUNULDZFQUFDQTtnQkFBQ08sV0FBVTs7Ozs7OzBCQUNiLDhEQUFDTTtnQkFBS04sV0FBVTswQkFBVTs7Ozs7Ozs7Ozs7O0FBR3RDO01BNUJnQmEiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXHVpXFxkaWFsb2cudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIlxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9zaGFyZWQvbGliL3V0aWxzXCJcblxuaW50ZXJmYWNlIERpYWxvZ1Byb3BzIHtcbiAgICBvcGVuPzogYm9vbGVhblxuICAgIG9uT3BlbkNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkXG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRGlhbG9nKHsgb3Blbiwgb25PcGVuQ2hhbmdlLCBjaGlsZHJlbiB9OiBEaWFsb2dQcm9wcykge1xuICAgIGlmICghb3BlbikgcmV0dXJuIG51bGxcblxuICAgIC8vINCf0LXRgNC10LTQsNC10Lwgb25PcGVuQ2hhbmdlINGH0LXRgNC10Lcg0LrQvtC90YLQtdC60YHRgiDQuNC70Lgg0YDQtdC90LTQtdGA0LjQvCBjaGlsZHJlbiDRgSDQv9GA0L7Qv9GB0LDQvNC4XG4gICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPlxufVxuXG5pbnRlcmZhY2UgRGlhbG9nQ29udGVudFByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+IHtcbiAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gICAgb25DbG9zZT86ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERpYWxvZ0NvbnRlbnQoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBvbkNsb3NlLCAuLi5wcm9wcyB9OiBEaWFsb2dDb250ZW50UHJvcHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgei01MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgey8qIEJhY2tkcm9wICovfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYmctYmxhY2svNTAgYmFja2Ryb3AtYmx1ci1zbVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIHsvKiBDb250ZW50ICovfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgIFwicmVsYXRpdmUgei01MCB3LWZ1bGwgbWF4LXctbGcgbXgtNCBiZy13aGl0ZSBkYXJrOmJnLXppbmMtOTAwIHJvdW5kZWQtbGcgc2hhZG93LWxnXCIsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHsvKiDQmtC90L7Qv9C60LAg0LfQsNC60YDRi9GC0LjRjyAoWCkgKi99XG4gICAgICAgICAgICAgICAge29uQ2xvc2UgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC00IHRvcC00IHJvdW5kZWQtc20gb3BhY2l0eS03MCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tb3BhY2l0eSBob3ZlcjpvcGFjaXR5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFggY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+0JfQsNC60YDRi9GC0Yw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuaW50ZXJmYWNlIERpYWxvZ0hlYWRlclByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+IHsgfVxuXG5leHBvcnQgZnVuY3Rpb24gRGlhbG9nSGVhZGVyKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBEaWFsb2dIZWFkZXJQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJmbGV4IGZsZXgtY29sIHNwYWNlLXktMS41IHRleHQtY2VudGVyIHNtOnRleHQtbGVmdFwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgIClcbn1cblxuaW50ZXJmYWNlIERpYWxvZ0Zvb3RlclByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+IHsgfVxuXG5leHBvcnQgZnVuY3Rpb24gRGlhbG9nRm9vdGVyKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBEaWFsb2dGb290ZXJQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgXCJmbGV4IGZsZXgtY29sLXJldmVyc2Ugc206ZmxleC1yb3cgc206anVzdGlmeS1lbmQgc206c3BhY2UteC0yXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgIClcbn1cblxuaW50ZXJmYWNlIERpYWxvZ1RpdGxlUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+IHsgfVxuXG5leHBvcnQgZnVuY3Rpb24gRGlhbG9nVGl0bGUoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IERpYWxvZ1RpdGxlUHJvcHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8aDJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0XCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgKVxufVxuXG5pbnRlcmZhY2UgRGlhbG9nRGVzY3JpcHRpb25Qcm9wcyBleHRlbmRzIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiB7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIERpYWxvZ0Rlc2NyaXB0aW9uKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBEaWFsb2dEZXNjcmlwdGlvblByb3BzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPHBcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgIClcbn1cblxuaW50ZXJmYWNlIERpYWxvZ0Nsb3NlUHJvcHMgZXh0ZW5kcyBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4ge1xuICAgIGFzQ2hpbGQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEaWFsb2dDbG9zZSh7IGNsYXNzTmFtZSwgYXNDaGlsZCwgLi4ucHJvcHMgfTogRGlhbG9nQ2xvc2VQcm9wcykge1xuICAgIC8vINCV0YHQu9C4IGFzQ2hpbGQ9dHJ1ZSwg0L3Rg9C20L3QviDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgU2xvdCDQuNC3IHJhZGl4LXVpXG4gICAgaWYgKGFzQ2hpbGQpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgY29uc3QgeyBTbG90IH0gPSByZXF1aXJlKFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIikgYXMgeyBTbG90OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT4gfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNsb3RcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICBcImFic29sdXRlIHJpZ2h0LTQgdG9wLTQgcm91bmRlZC1zbSBvcGFjaXR5LTcwIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yaW5nIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpiZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgXCJhYnNvbHV0ZSByaWdodC00IHRvcC00IHJvdW5kZWQtc20gb3BhY2l0eS03MCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tb3BhY2l0eSBob3ZlcjpvcGFjaXR5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgICAgPFggY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+0JfQsNC60YDRi9GC0Yw8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIClcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsIlgiLCJjbiIsIkRpYWxvZyIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJjaGlsZHJlbiIsIkRpYWxvZ0NvbnRlbnQiLCJjbGFzc05hbWUiLCJvbkNsb3NlIiwicHJvcHMiLCJkaXYiLCJvbkNsaWNrIiwiYnV0dG9uIiwic3BhbiIsIkRpYWxvZ0hlYWRlciIsIkRpYWxvZ0Zvb3RlciIsIkRpYWxvZ1RpdGxlIiwiaDIiLCJEaWFsb2dEZXNjcmlwdGlvbiIsInAiLCJEaWFsb2dDbG9zZSIsImFzQ2hpbGQiLCJTbG90IiwicmVxdWlyZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/dialog.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/form.tsx":
|
||
/*!************************************!*\
|
||
!*** ./src/components/ui/form.tsx ***!
|
||
\************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Form: () => (/* binding */ Form),\n/* harmony export */ FormControl: () => (/* binding */ FormControl),\n/* harmony export */ FormDescription: () => (/* binding */ FormDescription),\n/* harmony export */ FormField: () => (/* binding */ FormField),\n/* harmony export */ FormItem: () => (/* binding */ FormItem),\n/* harmony export */ FormLabel: () => (/* binding */ FormLabel),\n/* harmony export */ FormMessage: () => (/* binding */ FormMessage),\n/* harmony export */ useFormField: () => (/* binding */ useFormField)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-slot */ \"(app-pages-browser)/./node_modules/@radix-ui/react-slot/dist/index.mjs\");\n/* harmony import */ var react_hook_form__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-hook-form */ \"(app-pages-browser)/./node_modules/react-hook-form/dist/index.esm.mjs\");\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n/* harmony import */ var _components_ui_label__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ui/label */ \"(app-pages-browser)/./src/components/ui/label.tsx\");\n/* __next_internal_client_entry_do_not_use__ useFormField,Form,FormItem,FormLabel,FormControl,FormDescription,FormMessage,FormField auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $RefreshSig$(), _s4 = $RefreshSig$(), _s5 = $RefreshSig$();\n\n\n\n\n\nconst Form = react_hook_form__WEBPACK_IMPORTED_MODULE_4__.FormProvider;\nconst FormFieldContext = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.createContext({});\nconst FormField = (param)=>{\n let { ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FormFieldContext.Provider, {\n value: {\n name: props.name\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_hook_form__WEBPACK_IMPORTED_MODULE_4__.Controller, {\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\form.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\form.tsx\",\n lineNumber: 37,\n columnNumber: 9\n }, undefined);\n};\n_c = FormField;\nconst useFormField = ()=>{\n _s();\n const fieldContext = react__WEBPACK_IMPORTED_MODULE_1__.useContext(FormFieldContext);\n const itemContext = react__WEBPACK_IMPORTED_MODULE_1__.useContext(FormItemContext);\n const { getFieldState, formState } = (0,react_hook_form__WEBPACK_IMPORTED_MODULE_4__.useFormContext)();\n const fieldState = getFieldState(fieldContext.name, formState);\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n const { id } = itemContext;\n return {\n id,\n name: fieldContext.name,\n formItemId: \"\".concat(id, \"-form-item\"),\n formDescriptionId: \"\".concat(id, \"-form-item-description\"),\n formMessageId: \"\".concat(id, \"-form-item-message\"),\n ...fieldState\n };\n};\n_s(useFormField, \"eRzki+X5SldVDcAh3BokmSZW9NU=\", false, function() {\n return [\n react_hook_form__WEBPACK_IMPORTED_MODULE_4__.useFormContext\n ];\n});\nconst FormItemContext = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.createContext({});\nconst FormItem = /*#__PURE__*/ _s1(react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c1 = _s1((param, ref)=>{\n let { className, ...props } = param;\n _s1();\n const id = react__WEBPACK_IMPORTED_MODULE_1__.useId();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FormItemContext.Provider, {\n value: {\n id\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"space-y-2\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\form.tsx\",\n lineNumber: 82,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\form.tsx\",\n lineNumber: 81,\n columnNumber: 9\n }, undefined);\n}, \"WhsuKpSQZEWeFcB7gWlfDRQktoQ=\")), \"WhsuKpSQZEWeFcB7gWlfDRQktoQ=\");\n_c2 = FormItem;\nFormItem.displayName = \"FormItem\";\nconst FormLabel = /*#__PURE__*/ _s2(react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c3 = _s2((param, ref)=>{\n let { className, ...props } = param;\n _s2();\n const { error, formItemId } = useFormField();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_label__WEBPACK_IMPORTED_MODULE_3__.Label, {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(error && \"text-destructive\", className),\n htmlFor: formItemId,\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\form.tsx\",\n lineNumber: 95,\n columnNumber: 9\n }, undefined);\n}, \"Z4R+rKjylfAcqmbRnqWEg1TfTcg=\", false, function() {\n return [\n useFormField\n ];\n})), \"Z4R+rKjylfAcqmbRnqWEg1TfTcg=\", false, function() {\n return [\n useFormField\n ];\n});\n_c4 = FormLabel;\nFormLabel.displayName = \"FormLabel\";\nconst FormControl = /*#__PURE__*/ _s3(react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c5 = _s3((param, ref)=>{\n let { ...props } = param;\n _s3();\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_5__.Slot, {\n ref: ref,\n id: formItemId,\n \"aria-describedby\": !error ? \"\".concat(formDescriptionId) : \"\".concat(formDescriptionId, \" \").concat(formMessageId),\n \"aria-invalid\": !!error,\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\form.tsx\",\n lineNumber: 112,\n columnNumber: 9\n }, undefined);\n}, \"mI3rlmONcPPBVtOc6UefMrXAJ6w=\", false, function() {\n return [\n useFormField\n ];\n})), \"mI3rlmONcPPBVtOc6UefMrXAJ6w=\", false, function() {\n return [\n useFormField\n ];\n});\n_c6 = FormControl;\nFormControl.displayName = \"FormControl\";\nconst FormDescription = /*#__PURE__*/ _s4(react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c7 = _s4((param, ref)=>{\n let { className, ...props } = param;\n _s4();\n const { formDescriptionId } = useFormField();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n ref: ref,\n id: formDescriptionId,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"text-sm text-muted-foreground\", className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\form.tsx\",\n lineNumber: 134,\n columnNumber: 9\n }, undefined);\n}, \"573aRXA8dloSrMaQM9SdAF4A9NI=\", false, function() {\n return [\n useFormField\n ];\n})), \"573aRXA8dloSrMaQM9SdAF4A9NI=\", false, function() {\n return [\n useFormField\n ];\n});\n_c8 = FormDescription;\nFormDescription.displayName = \"FormDescription\";\nconst FormMessage = /*#__PURE__*/ _s5(react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c9 = _s5((param, ref)=>{\n let { className, children, ...props } = param;\n _s5();\n const { error, formMessageId } = useFormField();\n const body = error ? String(error === null || error === void 0 ? void 0 : error.message) : children;\n if (!body) {\n return null;\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n ref: ref,\n id: formMessageId,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"text-sm font-medium text-destructive\", className),\n ...props,\n children: body\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\form.tsx\",\n lineNumber: 156,\n columnNumber: 9\n }, undefined);\n}, \"WONNS8VCMr8LShuUovb8QgOmMVY=\", false, function() {\n return [\n useFormField\n ];\n})), \"WONNS8VCMr8LShuUovb8QgOmMVY=\", false, function() {\n return [\n useFormField\n ];\n});\n_c10 = FormMessage;\nFormMessage.displayName = \"FormMessage\";\n\nvar _c, _c1, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9, _c10;\n$RefreshReg$(_c, \"FormField\");\n$RefreshReg$(_c1, \"FormItem$React.forwardRef\");\n$RefreshReg$(_c2, \"FormItem\");\n$RefreshReg$(_c3, \"FormLabel$React.forwardRef\");\n$RefreshReg$(_c4, \"FormLabel\");\n$RefreshReg$(_c5, \"FormControl$React.forwardRef\");\n$RefreshReg$(_c6, \"FormControl\");\n$RefreshReg$(_c7, \"FormDescription$React.forwardRef\");\n$RefreshReg$(_c8, \"FormDescription\");\n$RefreshReg$(_c9, \"FormMessage$React.forwardRef\");\n$RefreshReg$(_c10, \"FormMessage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2Zvcm0udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRThCO0FBQ2E7QUFRbkI7QUFFZTtBQUNNO0FBRTdDLE1BQU1PLE9BQU9KLHlEQUFZQTtBQVN6QixNQUFNSyxpQ0FBbUJSLGdEQUFtQixDQUN4QyxDQUFDO0FBR0wsTUFBTVUsWUFBWTtRQUdoQixFQUNFLEdBQUdDLE9BQ2dDO0lBQ25DLHFCQUNJLDhEQUFDSCxpQkFBaUJJLFFBQVE7UUFBQ0MsT0FBTztZQUFFQyxNQUFNSCxNQUFNRyxJQUFJO1FBQUM7a0JBQ2pELDRFQUFDWix1REFBVUE7WUFBRSxHQUFHUyxLQUFLOzs7Ozs7Ozs7OztBQUdqQztLQVhNRDtBQWFOLE1BQU1LLGVBQWU7O0lBQ2pCLE1BQU1DLGVBQWVoQiw2Q0FBZ0IsQ0FBQ1E7SUFDdEMsTUFBTVUsY0FBY2xCLDZDQUFnQixDQUFDbUI7SUFDckMsTUFBTSxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsRUFBRSxHQUFHakIsK0RBQWNBO0lBRW5ELE1BQU1rQixhQUFhRixjQUFjSixhQUFhRixJQUFJLEVBQUVPO0lBRXBELElBQUksQ0FBQ0wsY0FBYztRQUNmLE1BQU0sSUFBSU8sTUFBTTtJQUNwQjtJQUVBLE1BQU0sRUFBRUMsRUFBRSxFQUFFLEdBQUdOO0lBRWYsT0FBTztRQUNITTtRQUNBVixNQUFNRSxhQUFhRixJQUFJO1FBQ3ZCVyxZQUFZLEdBQU0sT0FBSEQsSUFBRztRQUNsQkUsbUJBQW1CLEdBQU0sT0FBSEYsSUFBRztRQUN6QkcsZUFBZSxHQUFNLE9BQUhILElBQUc7UUFDckIsR0FBR0YsVUFBVTtJQUNqQjtBQUNKO0dBckJNUDs7UUFHbUNYLDJEQUFjQTs7O0FBd0J2RCxNQUFNZSxnQ0FBa0JuQixnREFBbUIsQ0FDdkMsQ0FBQztBQUdMLE1BQU00Qix5QkFBVzVCLElBQUFBLDZDQUFnQixXQUcvQixRQUEwQjhCO1FBQXpCLEVBQUVDLFNBQVMsRUFBRSxHQUFHcEIsT0FBTzs7SUFDdEIsTUFBTWEsS0FBS3hCLHdDQUFXO0lBRXRCLHFCQUNJLDhEQUFDbUIsZ0JBQWdCUCxRQUFRO1FBQUNDLE9BQU87WUFBRVc7UUFBRztrQkFDbEMsNEVBQUNTO1lBQUlILEtBQUtBO1lBQUtDLFdBQVcxQixxREFBRUEsQ0FBQyxhQUFhMEI7WUFBYSxHQUFHcEIsS0FBSzs7Ozs7Ozs7Ozs7QUFHM0U7O0FBQ0FpQixTQUFTTSxXQUFXLEdBQUc7QUFFdkIsTUFBTUMsMEJBQVluQyxJQUFBQSw2Q0FBZ0IsV0FHaEMsUUFBMEI4QjtRQUF6QixFQUFFQyxTQUFTLEVBQUUsR0FBR3BCLE9BQU87O0lBQ3RCLE1BQU0sRUFBRXlCLEtBQUssRUFBRVgsVUFBVSxFQUFFLEdBQUdWO0lBRTlCLHFCQUNJLDhEQUFDVCx1REFBS0E7UUFDRndCLEtBQUtBO1FBQ0xDLFdBQVcxQixxREFBRUEsQ0FBQytCLFNBQVMsb0JBQW9CTDtRQUMzQ00sU0FBU1o7UUFDUixHQUFHZCxLQUFLOzs7Ozs7QUFHckI7O1FBVmtDSTs7OztRQUFBQTs7OztBQVdsQ29CLFVBQVVELFdBQVcsR0FBRztBQUV4QixNQUFNSSw0QkFBY3RDLElBQUFBLDZDQUFnQixXQUdsQyxRQUFlOEI7UUFBZCxFQUFFLEdBQUduQixPQUFPOztJQUNYLE1BQU0sRUFBRXlCLEtBQUssRUFBRVgsVUFBVSxFQUFFQyxpQkFBaUIsRUFBRUMsYUFBYSxFQUFFLEdBQUdaO0lBRWhFLHFCQUNJLDhEQUFDZCxzREFBSUE7UUFDRDZCLEtBQUtBO1FBQ0xOLElBQUlDO1FBQ0pjLG9CQUNJLENBQUNILFFBQ0ssR0FBcUIsT0FBbEJWLHFCQUNILEdBQXdCQyxPQUFyQkQsbUJBQWtCLEtBQWlCLE9BQWRDO1FBRWxDYSxnQkFBYyxDQUFDLENBQUNKO1FBQ2YsR0FBR3pCLEtBQUs7Ozs7OztBQUdyQjs7UUFmb0VJOzs7O1FBQUFBOzs7O0FBZ0JwRXVCLFlBQVlKLFdBQVcsR0FBRztBQUUxQixNQUFNTyxnQ0FBa0J6QyxJQUFBQSw2Q0FBZ0IsV0FHdEMsUUFBMEI4QjtRQUF6QixFQUFFQyxTQUFTLEVBQUUsR0FBR3BCLE9BQU87O0lBQ3RCLE1BQU0sRUFBRWUsaUJBQWlCLEVBQUUsR0FBR1g7SUFFOUIscUJBQ0ksOERBQUMyQjtRQUNHWixLQUFLQTtRQUNMTixJQUFJRTtRQUNKSyxXQUFXMUIscURBQUVBLENBQUMsaUNBQWlDMEI7UUFDOUMsR0FBR3BCLEtBQUs7Ozs7OztBQUdyQjs7UUFWa0NJOzs7O1FBQUFBOzs7O0FBV2xDMEIsZ0JBQWdCUCxXQUFXLEdBQUc7QUFFOUIsTUFBTVMsNEJBQWMzQyxJQUFBQSw2Q0FBZ0IsV0FHbEMsUUFBb0M4QjtRQUFuQyxFQUFFQyxTQUFTLEVBQUVhLFFBQVEsRUFBRSxHQUFHakMsT0FBTzs7SUFDaEMsTUFBTSxFQUFFeUIsS0FBSyxFQUFFVCxhQUFhLEVBQUUsR0FBR1o7SUFDakMsTUFBTThCLE9BQU9ULFFBQVFVLE9BQU9WLGtCQUFBQSw0QkFBQUEsTUFBT1csT0FBTyxJQUFJSDtJQUU5QyxJQUFJLENBQUNDLE1BQU07UUFDUCxPQUFPO0lBQ1g7SUFFQSxxQkFDSSw4REFBQ0g7UUFDR1osS0FBS0E7UUFDTE4sSUFBSUc7UUFDSkksV0FBVzFCLHFEQUFFQSxDQUFDLHdDQUF3QzBCO1FBQ3JELEdBQUdwQixLQUFLO2tCQUVSa0M7Ozs7OztBQUdiOztRQWpCcUM5Qjs7OztRQUFBQTs7OztBQWtCckM0QixZQUFZVCxXQUFXLEdBQUc7QUFXekIiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXHVpXFxmb3JtLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIlxyXG5cclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiXHJcbmltcG9ydCB7XHJcbiAgICBDb250cm9sbGVyLFxyXG4gICAgQ29udHJvbGxlclByb3BzLFxyXG4gICAgRmllbGRQYXRoLFxyXG4gICAgRmllbGRWYWx1ZXMsXHJcbiAgICBGb3JtUHJvdmlkZXIsXHJcbiAgICB1c2VGb3JtQ29udGV4dCxcclxufSBmcm9tIFwicmVhY3QtaG9vay1mb3JtXCJcclxuXHJcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvc2hhcmVkL2xpYi91dGlsc1wiXHJcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9sYWJlbFwiXHJcblxyXG5jb25zdCBGb3JtID0gRm9ybVByb3ZpZGVyXHJcblxyXG50eXBlIEZvcm1GaWVsZENvbnRleHRWYWx1ZTxcclxuICAgIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXHJcbiAgICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz5cclxuPiA9IHtcclxuICAgIG5hbWU6IFROYW1lXHJcbn1cclxuXHJcbmNvbnN0IEZvcm1GaWVsZENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PEZvcm1GaWVsZENvbnRleHRWYWx1ZT4oXHJcbiAgICB7fSBhcyBGb3JtRmllbGRDb250ZXh0VmFsdWVcclxuKVxyXG5cclxuY29uc3QgRm9ybUZpZWxkID0gPFxyXG4gICAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcclxuICAgIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPlxyXG4+KHtcclxuICAgIC4uLnByb3BzXHJcbn06IENvbnRyb2xsZXJQcm9wczxURmllbGRWYWx1ZXMsIFROYW1lPikgPT4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8Rm9ybUZpZWxkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBuYW1lOiBwcm9wcy5uYW1lIH19PlxyXG4gICAgICAgICAgICA8Q29udHJvbGxlciB7Li4ucHJvcHN9IC8+XHJcbiAgICAgICAgPC9Gb3JtRmllbGRDb250ZXh0LlByb3ZpZGVyPlxyXG4gICAgKVxyXG59XHJcblxyXG5jb25zdCB1c2VGb3JtRmllbGQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBmaWVsZENvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZvcm1GaWVsZENvbnRleHQpXHJcbiAgICBjb25zdCBpdGVtQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRm9ybUl0ZW1Db250ZXh0KVxyXG4gICAgY29uc3QgeyBnZXRGaWVsZFN0YXRlLCBmb3JtU3RhdGUgfSA9IHVzZUZvcm1Db250ZXh0KClcclxuXHJcbiAgICBjb25zdCBmaWVsZFN0YXRlID0gZ2V0RmllbGRTdGF0ZShmaWVsZENvbnRleHQubmFtZSwgZm9ybVN0YXRlKVxyXG5cclxuICAgIGlmICghZmllbGRDb250ZXh0KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXNlRm9ybUZpZWxkIHNob3VsZCBiZSB1c2VkIHdpdGhpbiA8Rm9ybUZpZWxkPlwiKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHsgaWQgfSA9IGl0ZW1Db250ZXh0XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBpZCxcclxuICAgICAgICBuYW1lOiBmaWVsZENvbnRleHQubmFtZSxcclxuICAgICAgICBmb3JtSXRlbUlkOiBgJHtpZH0tZm9ybS1pdGVtYCxcclxuICAgICAgICBmb3JtRGVzY3JpcHRpb25JZDogYCR7aWR9LWZvcm0taXRlbS1kZXNjcmlwdGlvbmAsXHJcbiAgICAgICAgZm9ybU1lc3NhZ2VJZDogYCR7aWR9LWZvcm0taXRlbS1tZXNzYWdlYCxcclxuICAgICAgICAuLi5maWVsZFN0YXRlLFxyXG4gICAgfVxyXG59XHJcblxyXG50eXBlIEZvcm1JdGVtQ29udGV4dFZhbHVlID0ge1xyXG4gICAgaWQ6IHN0cmluZ1xyXG59XHJcblxyXG5jb25zdCBGb3JtSXRlbUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PEZvcm1JdGVtQ29udGV4dFZhbHVlPihcclxuICAgIHt9IGFzIEZvcm1JdGVtQ29udGV4dFZhbHVlXHJcbilcclxuXHJcbmNvbnN0IEZvcm1JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcclxuICAgIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XHJcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcclxuICAgIGNvbnN0IGlkID0gUmVhY3QudXNlSWQoKVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPEZvcm1JdGVtQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBpZCB9fT5cclxuICAgICAgICAgICAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInNwYWNlLXktMlwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XHJcbiAgICAgICAgPC9Gb3JtSXRlbUNvbnRleHQuUHJvdmlkZXI+XHJcbiAgICApXHJcbn0pXHJcbkZvcm1JdGVtLmRpc3BsYXlOYW1lID0gXCJGb3JtSXRlbVwiXHJcblxyXG5jb25zdCBGb3JtTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxyXG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWw+LFxyXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbD5cclxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBlcnJvciwgZm9ybUl0ZW1JZCB9ID0gdXNlRm9ybUZpZWxkKClcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxMYWJlbFxyXG4gICAgICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihlcnJvciAmJiBcInRleHQtZGVzdHJ1Y3RpdmVcIiwgY2xhc3NOYW1lKX1cclxuICAgICAgICAgICAgaHRtbEZvcj17Zm9ybUl0ZW1JZH1cclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgIC8+XHJcbiAgICApXHJcbn0pXHJcbkZvcm1MYWJlbC5kaXNwbGF5TmFtZSA9IFwiRm9ybUxhYmVsXCJcclxuXHJcbmNvbnN0IEZvcm1Db250cm9sID0gUmVhY3QuZm9yd2FyZFJlZjxcclxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNsb3Q+LFxyXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTbG90PlxyXG4+KCh7IC4uLnByb3BzIH0sIHJlZikgPT4ge1xyXG4gICAgY29uc3QgeyBlcnJvciwgZm9ybUl0ZW1JZCwgZm9ybURlc2NyaXB0aW9uSWQsIGZvcm1NZXNzYWdlSWQgfSA9IHVzZUZvcm1GaWVsZCgpXHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8U2xvdFxyXG4gICAgICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICAgICAgaWQ9e2Zvcm1JdGVtSWR9XHJcbiAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e1xyXG4gICAgICAgICAgICAgICAgIWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgPyBgJHtmb3JtRGVzY3JpcHRpb25JZH1gXHJcbiAgICAgICAgICAgICAgICAgICAgOiBgJHtmb3JtRGVzY3JpcHRpb25JZH0gJHtmb3JtTWVzc2FnZUlkfWBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhcmlhLWludmFsaWQ9eyEhZXJyb3J9XHJcbiAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAvPlxyXG4gICAgKVxyXG59KVxyXG5Gb3JtQ29udHJvbC5kaXNwbGF5TmFtZSA9IFwiRm9ybUNvbnRyb2xcIlxyXG5cclxuY29uc3QgRm9ybURlc2NyaXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxcclxuICAgIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxyXG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+XHJcbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcclxuICAgIGNvbnN0IHsgZm9ybURlc2NyaXB0aW9uSWQgfSA9IHVzZUZvcm1GaWVsZCgpXHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8cFxyXG4gICAgICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICAgICAgaWQ9e2Zvcm1EZXNjcmlwdGlvbklkfVxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgIC8+XHJcbiAgICApXHJcbn0pXHJcbkZvcm1EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9IFwiRm9ybURlc2NyaXB0aW9uXCJcclxuXHJcbmNvbnN0IEZvcm1NZXNzYWdlID0gUmVhY3QuZm9yd2FyZFJlZjxcclxuICAgIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxyXG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+XHJcbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGVycm9yLCBmb3JtTWVzc2FnZUlkIH0gPSB1c2VGb3JtRmllbGQoKVxyXG4gICAgY29uc3QgYm9keSA9IGVycm9yID8gU3RyaW5nKGVycm9yPy5tZXNzYWdlKSA6IGNoaWxkcmVuXHJcblxyXG4gICAgaWYgKCFib2R5KSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGxcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICAgIHJlZj17cmVmfVxyXG4gICAgICAgICAgICBpZD17Zm9ybU1lc3NhZ2VJZH1cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1kZXN0cnVjdGl2ZVwiLCBjbGFzc05hbWUpfVxyXG4gICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICB7Ym9keX1cclxuICAgICAgICA8L3A+XHJcbiAgICApXHJcbn0pXHJcbkZvcm1NZXNzYWdlLmRpc3BsYXlOYW1lID0gXCJGb3JtTWVzc2FnZVwiXHJcblxyXG5leHBvcnQge1xyXG4gICAgdXNlRm9ybUZpZWxkLFxyXG4gICAgRm9ybSxcclxuICAgIEZvcm1JdGVtLFxyXG4gICAgRm9ybUxhYmVsLFxyXG4gICAgRm9ybUNvbnRyb2wsXHJcbiAgICBGb3JtRGVzY3JpcHRpb24sXHJcbiAgICBGb3JtTWVzc2FnZSxcclxuICAgIEZvcm1GaWVsZCxcclxufVxyXG4iXSwibmFtZXMiOlsiUmVhY3QiLCJTbG90IiwiQ29udHJvbGxlciIsIkZvcm1Qcm92aWRlciIsInVzZUZvcm1Db250ZXh0IiwiY24iLCJMYWJlbCIsIkZvcm0iLCJGb3JtRmllbGRDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIkZvcm1GaWVsZCIsInByb3BzIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIm5hbWUiLCJ1c2VGb3JtRmllbGQiLCJmaWVsZENvbnRleHQiLCJ1c2VDb250ZXh0IiwiaXRlbUNvbnRleHQiLCJGb3JtSXRlbUNvbnRleHQiLCJnZXRGaWVsZFN0YXRlIiwiZm9ybVN0YXRlIiwiZmllbGRTdGF0ZSIsIkVycm9yIiwiaWQiLCJmb3JtSXRlbUlkIiwiZm9ybURlc2NyaXB0aW9uSWQiLCJmb3JtTWVzc2FnZUlkIiwiRm9ybUl0ZW0iLCJmb3J3YXJkUmVmIiwicmVmIiwiY2xhc3NOYW1lIiwidXNlSWQiLCJkaXYiLCJkaXNwbGF5TmFtZSIsIkZvcm1MYWJlbCIsImVycm9yIiwiaHRtbEZvciIsIkZvcm1Db250cm9sIiwiYXJpYS1kZXNjcmliZWRieSIsImFyaWEtaW52YWxpZCIsIkZvcm1EZXNjcmlwdGlvbiIsInAiLCJGb3JtTWVzc2FnZSIsImNoaWxkcmVuIiwiYm9keSIsIlN0cmluZyIsIm1lc3NhZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/form.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/input.tsx":
|
||
/*!*************************************!*\
|
||
!*** ./src/components/ui/input.tsx ***!
|
||
\*************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Input: () => (/* binding */ Input)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n\n\n\nconst Input = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c = (param, ref)=>{\n let { className, type, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: type,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\", className),\n ref: ref,\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\input.tsx\",\n lineNumber: 8,\n columnNumber: 13\n }, undefined);\n});\n_c1 = Input;\nInput.displayName = \"Input\";\n\nvar _c, _c1;\n$RefreshReg$(_c, \"Input$React.forwardRef\");\n$RefreshReg$(_c1, \"Input\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2lucHV0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBOEI7QUFFUztBQUV2QyxNQUFNRSxzQkFBUUYsNkNBQWdCLE1BQzFCLFFBQWdDSTtRQUEvQixFQUFFQyxTQUFTLEVBQUVDLElBQUksRUFBRSxHQUFHQyxPQUFPO0lBQzFCLHFCQUNJLDhEQUFDQztRQUNHRixNQUFNQTtRQUNORCxXQUFXSixxREFBRUEsQ0FDVCxrWUFDQUk7UUFFSkQsS0FBS0E7UUFDSixHQUFHRyxLQUFLOzs7Ozs7QUFHckI7O0FBRUpMLE1BQU1PLFdBQVcsR0FBRztBQUVKIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcc3JjXFxjb21wb25lbnRzXFx1aVxcaW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXHJcblxyXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3NoYXJlZC9saWIvdXRpbHNcIlxyXG5cclxuY29uc3QgSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzPFwiaW5wdXRcIj4+KFxyXG4gICAgKHsgY2xhc3NOYW1lLCB0eXBlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9e3R5cGV9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZmxleCBoLTEwIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItaW5wdXQgYmctYmFja2dyb3VuZCBweC0zIHB5LTIgdGV4dC1iYXNlIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgZmlsZTpib3JkZXItMCBmaWxlOmJnLXRyYW5zcGFyZW50IGZpbGU6dGV4dC1zbSBmaWxlOmZvbnQtbWVkaXVtIGZpbGU6dGV4dC1mb3JlZ3JvdW5kIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAgbWQ6dGV4dC1zbVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHJlZj17cmVmfVxyXG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIClcclxuICAgIH1cclxuKVxyXG5JbnB1dC5kaXNwbGF5TmFtZSA9IFwiSW5wdXRcIlxyXG5cclxuZXhwb3J0IHsgSW5wdXQgfVxyXG4iXSwibmFtZXMiOlsiUmVhY3QiLCJjbiIsIklucHV0IiwiZm9yd2FyZFJlZiIsInJlZiIsImNsYXNzTmFtZSIsInR5cGUiLCJwcm9wcyIsImlucHV0IiwiZGlzcGxheU5hbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/input.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/label.tsx":
|
||
/*!*************************************!*\
|
||
!*** ./src/components/ui/label.tsx ***!
|
||
\*************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Label: () => (/* binding */ Label)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _radix_ui_react_label__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-label */ \"(app-pages-browser)/./node_modules/@radix-ui/react-label/dist/index.mjs\");\n/* harmony import */ var class_variance_authority__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! class-variance-authority */ \"(app-pages-browser)/./node_modules/class-variance-authority/dist/index.mjs\");\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n\n\n\n\n\nconst labelVariants = (0,class_variance_authority__WEBPACK_IMPORTED_MODULE_2__.cva)(\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\");\nconst Label = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c = (param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_radix_ui_react_label__WEBPACK_IMPORTED_MODULE_4__.Root, {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_3__.cn)(labelVariants(), className),\n ...props\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\label.tsx\",\n lineNumber: 16,\n columnNumber: 5\n }, undefined);\n});\n_c1 = Label;\nLabel.displayName = _radix_ui_react_label__WEBPACK_IMPORTED_MODULE_4__.Root.displayName;\n\nvar _c, _c1;\n$RefreshReg$(_c, \"Label$React.forwardRef\");\n$RefreshReg$(_c1, \"Label\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2xhYmVsLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUE4QjtBQUN5QjtBQUNVO0FBRTFCO0FBRXZDLE1BQU1JLGdCQUFnQkYsNkRBQUdBLENBQ3JCO0FBR0osTUFBTUcsc0JBQVFMLDZDQUFnQixNQUk1QixRQUEwQk87UUFBekIsRUFBRUMsU0FBUyxFQUFFLEdBQUdDLE9BQU87eUJBQ3RCLDhEQUFDUix1REFBbUI7UUFDaEJNLEtBQUtBO1FBQ0xDLFdBQVdMLHFEQUFFQSxDQUFDQyxpQkFBaUJJO1FBQzlCLEdBQUdDLEtBQUs7Ozs7Ozs7O0FBR2pCSixNQUFNTSxXQUFXLEdBQUdWLHVEQUFtQixDQUFDVSxXQUFXO0FBRW5DIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcc3JjXFxjb21wb25lbnRzXFx1aVxcbGFiZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXHJcbmltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIlxyXG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiXHJcblxyXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3NoYXJlZC9saWIvdXRpbHNcIlxyXG5cclxuY29uc3QgbGFiZWxWYXJpYW50cyA9IGN2YShcclxuICAgIFwidGV4dC1zbSBmb250LW1lZGl1bSBsZWFkaW5nLW5vbmUgcGVlci1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgcGVlci1kaXNhYmxlZDpvcGFjaXR5LTcwXCJcclxuKVxyXG5cclxuY29uc3QgTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxyXG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXHJcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+ICZcclxuICAgIFZhcmlhbnRQcm9wczx0eXBlb2YgbGFiZWxWYXJpYW50cz5cclxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxyXG4gICAgPExhYmVsUHJpbWl0aXZlLlJvb3RcclxuICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAvPlxyXG4pKVxyXG5MYWJlbC5kaXNwbGF5TmFtZSA9IExhYmVsUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWVcclxuXHJcbmV4cG9ydCB7IExhYmVsIH1cclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiTGFiZWxQcmltaXRpdmUiLCJjdmEiLCJjbiIsImxhYmVsVmFyaWFudHMiLCJMYWJlbCIsImZvcndhcmRSZWYiLCJyZWYiLCJjbGFzc05hbWUiLCJwcm9wcyIsIlJvb3QiLCJkaXNwbGF5TmFtZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/label.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/location-modal.tsx":
|
||
/*!**********************************************!*\
|
||
!*** ./src/components/ui/location-modal.tsx ***!
|
||
\**********************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LocationModal: () => (/* binding */ LocationModal)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_hook_form__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-hook-form */ \"(app-pages-browser)/./node_modules/react-hook-form/dist/index.esm.mjs\");\n/* harmony import */ var _hookform_resolvers_zod__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @hookform/resolvers/zod */ \"(app-pages-browser)/./node_modules/@hookform/resolvers/zod/dist/zod.mjs\");\n/* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! zod */ \"(app-pages-browser)/./node_modules/zod/v4/classic/external.js\");\n/* harmony import */ var sonner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! sonner */ \"(app-pages-browser)/./node_modules/sonner/dist/index.mjs\");\n/* harmony import */ var _components_ui_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ui/button */ \"(app-pages-browser)/./src/components/ui/button.tsx\");\n/* harmony import */ var _components_ui_input__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/ui/input */ \"(app-pages-browser)/./src/components/ui/input.tsx\");\n/* harmony import */ var _components_ui_label__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/ui/label */ \"(app-pages-browser)/./src/components/ui/label.tsx\");\n/* harmony import */ var _components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/ui/dialog */ \"(app-pages-browser)/./src/components/ui/dialog.tsx\");\n/* harmony import */ var _entities_session_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/entities/session/store */ \"(app-pages-browser)/./src/entities/session/store.ts\");\n/* harmony import */ var _barrel_optimize_names_MapPin_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=MapPin!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/map-pin.js\");\n/* __next_internal_client_entry_do_not_use__ LocationModal auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\n\n\n\nconst locationSchema = zod__WEBPACK_IMPORTED_MODULE_8__.object({\n location: zod__WEBPACK_IMPORTED_MODULE_8__.string().optional(),\n currentLocation: zod__WEBPACK_IMPORTED_MODULE_8__.string().optional()\n});\nfunction LocationModal(param) {\n let { open, onOpenChange, initialLocation = \"\", initialCurrentLocation = \"\" } = param;\n _s();\n const { updateLocation, isLoading } = (0,_entities_session_store__WEBPACK_IMPORTED_MODULE_7__.useSessionStore)();\n const { register, handleSubmit, reset, formState: { errors } } = (0,react_hook_form__WEBPACK_IMPORTED_MODULE_9__.useForm)({\n resolver: (0,_hookform_resolvers_zod__WEBPACK_IMPORTED_MODULE_1__.zodResolver)(locationSchema),\n defaultValues: {\n location: initialLocation,\n currentLocation: initialCurrentLocation\n }\n });\n const onSubmit = async (data)=>{\n try {\n await updateLocation(data.location || \"\", data.currentLocation || \"\");\n sonner__WEBPACK_IMPORTED_MODULE_2__.toast.success(\"Локация успешно обновлена\");\n onOpenChange(false);\n } catch (error) {\n var _error_response_data, _error_response;\n sonner__WEBPACK_IMPORTED_MODULE_2__.toast.error((error === null || error === void 0 ? void 0 : (_error_response = error.response) === null || _error_response === void 0 ? void 0 : (_error_response_data = _error_response.data) === null || _error_response_data === void 0 ? void 0 : _error_response_data.message) || \"Ошибка при обновлении локации\");\n }\n };\n const handleClose = ()=>{\n reset();\n onOpenChange(false);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.Dialog, {\n open: open,\n onOpenChange: handleClose,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogContent, {\n className: \"sm:max-w-[425px]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogHeader, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogTitle, {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_MapPin_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 78,\n columnNumber: 25\n }, this),\n \"Изменить локацию\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 77,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogDescription, {\n children: \"Укажите вашу локацию для поиска заказов\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 81,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 76,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit(onSubmit),\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_label__WEBPACK_IMPORTED_MODULE_5__.Label, {\n htmlFor: \"location\",\n children: \"Город / Район\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 88,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_4__.Input, {\n id: \"location\",\n placeholder: \"Например: Москва, ЮАО\",\n ...register(\"location\")\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 89,\n columnNumber: 25\n }, this),\n errors.location && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-red-500\",\n children: errors.location.message\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 95,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 87,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_label__WEBPACK_IMPORTED_MODULE_5__.Label, {\n htmlFor: \"currentLocation\",\n children: \"Текущее местоположение\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 100,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_4__.Input, {\n id: \"currentLocation\",\n placeholder: \"Координаты или адрес\",\n ...register(\"currentLocation\")\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 101,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-muted-foreground\",\n children: \"Можно оставить пустым, если не хотите показывать точное местоположение\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 106,\n columnNumber: 25\n }, this),\n errors.currentLocation && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-red-500\",\n children: errors.currentLocation.message\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 110,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogFooter, {\n className: \"gap-2 sm:gap-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogClose, {\n asChild: true,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n type: \"button\",\n variant: \"outline\",\n children: \"Отмена\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 116,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 115,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n type: \"submit\",\n disabled: isLoading,\n children: isLoading ? \"Сохранение...\" : \"Сохранить\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 120,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 114,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 86,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 75,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\location-modal.tsx\",\n lineNumber: 74,\n columnNumber: 9\n }, this);\n}\n_s(LocationModal, \"6O9Q3sMioPMgHpaeBhEUYEhiFaQ=\", false, function() {\n return [\n _entities_session_store__WEBPACK_IMPORTED_MODULE_7__.useSessionStore,\n react_hook_form__WEBPACK_IMPORTED_MODULE_9__.useForm\n ];\n});\n_c = LocationModal;\nvar _c;\n$RefreshReg$(_c, \"LocationModal\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL2xvY2F0aW9uLW1vZGFsLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUd5QztBQUNZO0FBQzlCO0FBQ087QUFDaUI7QUFDRjtBQUNBO0FBU2Q7QUFDMkI7QUFDckI7QUFFckMsTUFBTWdCLGlCQUFpQmQsdUNBQVEsQ0FBQztJQUM1QmdCLFVBQVVoQix1Q0FBUSxHQUFHa0IsUUFBUTtJQUM3QkMsaUJBQWlCbkIsdUNBQVEsR0FBR2tCLFFBQVE7QUFDeEM7QUFXTyxTQUFTRSxjQUFjLEtBS1Q7UUFMUyxFQUMxQkMsSUFBSSxFQUNKQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUFFLEVBQ3BCQyx5QkFBeUIsRUFBRSxFQUNWLEdBTFM7O0lBTTFCLE1BQU0sRUFBRUMsY0FBYyxFQUFFQyxTQUFTLEVBQUUsR0FBR2Qsd0VBQWVBO0lBRXJELE1BQU0sRUFDRmUsUUFBUSxFQUNSQyxZQUFZLEVBQ1pDLEtBQUssRUFDTEMsV0FBVyxFQUFFQyxNQUFNLEVBQUUsRUFDeEIsR0FBR2pDLHdEQUFPQSxDQUFtQjtRQUMxQmtDLFVBQVVqQyxvRUFBV0EsQ0FBQ2U7UUFDdEJtQixlQUFlO1lBQ1hqQixVQUFVTztZQUNWSixpQkFBaUJLO1FBQ3JCO0lBQ0o7SUFFQSxNQUFNVSxXQUFXLE9BQU9DO1FBQ3BCLElBQUk7WUFDQSxNQUFNVixlQUFlVSxLQUFLbkIsUUFBUSxJQUFJLElBQUltQixLQUFLaEIsZUFBZSxJQUFJO1lBQ2xFbEIseUNBQUtBLENBQUNtQyxPQUFPLENBQUM7WUFDZGQsYUFBYTtRQUNqQixFQUFFLE9BQU9lLE9BQVk7Z0JBQ0xBLHNCQUFBQTtZQUFacEMseUNBQUtBLENBQUNvQyxLQUFLLENBQUNBLENBQUFBLGtCQUFBQSw2QkFBQUEsa0JBQUFBLE1BQU9DLFFBQVEsY0FBZkQsdUNBQUFBLHVCQUFBQSxnQkFBaUJGLElBQUksY0FBckJFLDJDQUFBQSxxQkFBdUJFLE9BQU8sS0FBSTtRQUNsRDtJQUNKO0lBRUEsTUFBTUMsY0FBYztRQUNoQlg7UUFDQVAsYUFBYTtJQUNqQjtJQUVBLHFCQUNJLDhEQUFDakIseURBQU1BO1FBQUNnQixNQUFNQTtRQUFNQyxjQUFja0I7a0JBQzlCLDRFQUFDbEMsZ0VBQWFBO1lBQUNtQyxXQUFVOzs4QkFDckIsOERBQUNoQywrREFBWUE7O3NDQUNULDhEQUFDQyw4REFBV0E7NEJBQUMrQixXQUFVOzs4Q0FDbkIsOERBQUM1QixtRkFBTUE7b0NBQUM0QixXQUFVOzs7Ozs7Z0NBQVk7Ozs7Ozs7c0NBR2xDLDhEQUFDbEMsb0VBQWlCQTtzQ0FBQzs7Ozs7Ozs7Ozs7OzhCQUt2Qiw4REFBQ21DO29CQUFLUixVQUFVTixhQUFhTTtvQkFBV08sV0FBVTs7c0NBQzlDLDhEQUFDRTs0QkFBSUYsV0FBVTs7OENBQ1gsOERBQUNyQyx1REFBS0E7b0NBQUN3QyxTQUFROzhDQUFXOzs7Ozs7OENBQzFCLDhEQUFDekMsdURBQUtBO29DQUNGMEMsSUFBRztvQ0FDSEMsYUFBWTtvQ0FDWCxHQUFHbkIsU0FBUyxXQUFXOzs7Ozs7Z0NBRTNCSSxPQUFPZixRQUFRLGtCQUNaLDhEQUFDK0I7b0NBQUVOLFdBQVU7OENBQXdCVixPQUFPZixRQUFRLENBQUN1QixPQUFPOzs7Ozs7Ozs7Ozs7c0NBSXBFLDhEQUFDSTs0QkFBSUYsV0FBVTs7OENBQ1gsOERBQUNyQyx1REFBS0E7b0NBQUN3QyxTQUFROzhDQUFrQjs7Ozs7OzhDQUNqQyw4REFBQ3pDLHVEQUFLQTtvQ0FDRjBDLElBQUc7b0NBQ0hDLGFBQVk7b0NBQ1gsR0FBR25CLFNBQVMsa0JBQWtCOzs7Ozs7OENBRW5DLDhEQUFDb0I7b0NBQUVOLFdBQVU7OENBQWdDOzs7Ozs7Z0NBRzVDVixPQUFPWixlQUFlLGtCQUNuQiw4REFBQzRCO29DQUFFTixXQUFVOzhDQUF3QlYsT0FBT1osZUFBZSxDQUFDb0IsT0FBTzs7Ozs7Ozs7Ozs7O3NDQUkzRSw4REFBQy9CLCtEQUFZQTs0QkFBQ2lDLFdBQVU7OzhDQUNwQiw4REFBQzlCLDhEQUFXQTtvQ0FBQ3FDLE9BQU87OENBQ2hCLDRFQUFDOUMseURBQU1BO3dDQUFDK0MsTUFBSzt3Q0FBU0MsU0FBUTtrREFBVTs7Ozs7Ozs7Ozs7OENBSTVDLDhEQUFDaEQseURBQU1BO29DQUFDK0MsTUFBSztvQ0FBU0UsVUFBVXpCOzhDQUMzQkEsWUFBWSxrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzNEO0dBM0ZnQk47O1FBTTBCUixvRUFBZUE7UUFPakRkLG9EQUFPQTs7O0tBYkNzQiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXHNyY1xcY29tcG9uZW50c1xcdWlcXGxvY2F0aW9uLW1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdXNlRm9ybSB9IGZyb20gXCJyZWFjdC1ob29rLWZvcm1cIlxuaW1wb3J0IHsgem9kUmVzb2x2ZXIgfSBmcm9tIFwiQGhvb2tmb3JtL3Jlc29sdmVycy96b2RcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvYnV0dG9uXCJcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9pbnB1dFwiXG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvbGFiZWxcIlxuaW1wb3J0IHsgXG4gICAgRGlhbG9nLCBcbiAgICBEaWFsb2dDb250ZW50LCBcbiAgICBEaWFsb2dEZXNjcmlwdGlvbiwgXG4gICAgRGlhbG9nRm9vdGVyLCBcbiAgICBEaWFsb2dIZWFkZXIsIFxuICAgIERpYWxvZ1RpdGxlLCBcbiAgICBEaWFsb2dDbG9zZSBcbn0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9kaWFsb2dcIlxuaW1wb3J0IHsgdXNlU2Vzc2lvblN0b3JlIH0gZnJvbSBcIkAvZW50aXRpZXMvc2Vzc2lvbi9zdG9yZVwiXG5pbXBvcnQgeyBNYXBQaW4gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcblxuY29uc3QgbG9jYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgbG9jYXRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjdXJyZW50TG9jYXRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pXG5cbnR5cGUgTG9jYXRpb25Gb3JtRGF0YSA9IHouaW5mZXI8dHlwZW9mIGxvY2F0aW9uU2NoZW1hPlxuXG5pbnRlcmZhY2UgTG9jYXRpb25Nb2RhbFByb3BzIHtcbiAgICBvcGVuOiBib29sZWFuXG4gICAgb25PcGVuQ2hhbmdlOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZFxuICAgIGluaXRpYWxMb2NhdGlvbj86IHN0cmluZ1xuICAgIGluaXRpYWxDdXJyZW50TG9jYXRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExvY2F0aW9uTW9kYWwoeyBcbiAgICBvcGVuLCBcbiAgICBvbk9wZW5DaGFuZ2UsIFxuICAgIGluaXRpYWxMb2NhdGlvbiA9IFwiXCIsIFxuICAgIGluaXRpYWxDdXJyZW50TG9jYXRpb24gPSBcIlwiIFxufTogTG9jYXRpb25Nb2RhbFByb3BzKSB7XG4gICAgY29uc3QgeyB1cGRhdGVMb2NhdGlvbiwgaXNMb2FkaW5nIH0gPSB1c2VTZXNzaW9uU3RvcmUoKVxuXG4gICAgY29uc3Qge1xuICAgICAgICByZWdpc3RlcixcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICByZXNldCxcbiAgICAgICAgZm9ybVN0YXRlOiB7IGVycm9ycyB9LFxuICAgIH0gPSB1c2VGb3JtPExvY2F0aW9uRm9ybURhdGE+KHtcbiAgICAgICAgcmVzb2x2ZXI6IHpvZFJlc29sdmVyKGxvY2F0aW9uU2NoZW1hKSxcbiAgICAgICAgZGVmYXVsdFZhbHVlczoge1xuICAgICAgICAgICAgbG9jYXRpb246IGluaXRpYWxMb2NhdGlvbixcbiAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbjogaW5pdGlhbEN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3Qgb25TdWJtaXQgPSBhc3luYyAoZGF0YTogTG9jYXRpb25Gb3JtRGF0YSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdXBkYXRlTG9jYXRpb24oZGF0YS5sb2NhdGlvbiB8fCBcIlwiLCBkYXRhLmN1cnJlbnRMb2NhdGlvbiB8fCBcIlwiKVxuICAgICAgICAgICAgdG9hc3Quc3VjY2VzcyhcItCb0L7QutCw0YbQuNGPINGD0YHQv9C10YjQvdC+INC+0LHQvdC+0LLQu9C10L3QsFwiKVxuICAgICAgICAgICAgb25PcGVuQ2hhbmdlKGZhbHNlKVxuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICB0b2FzdC5lcnJvcihlcnJvcj8ucmVzcG9uc2U/LmRhdGE/Lm1lc3NhZ2UgfHwgXCLQntGI0LjQsdC60LAg0L/RgNC4INC+0LHQvdC+0LLQu9C10L3QuNC4INC70L7QutCw0YbQuNC4XCIpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICAgICAgcmVzZXQoKVxuICAgICAgICBvbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPERpYWxvZyBvcGVuPXtvcGVufSBvbk9wZW5DaGFuZ2U9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgIDxEaWFsb2dDb250ZW50IGNsYXNzTmFtZT1cInNtOm1heC13LVs0MjVweF1cIj5cbiAgICAgICAgICAgICAgICA8RGlhbG9nSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8RGlhbG9nVGl0bGUgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYXBQaW4gY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICDQmNC30LzQtdC90LjRgtGMINC70L7QutCw0YbQuNGOXG4gICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxEaWFsb2dEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgINCj0LrQsNC20LjRgtC1INCy0LDRiNGDINC70L7QutCw0YbQuNGOINC00LvRjyDQv9C+0LjRgdC60LAg0LfQsNC60LDQt9C+0LJcbiAgICAgICAgICAgICAgICAgICAgPC9EaWFsb2dEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICA8L0RpYWxvZ0hlYWRlcj5cblxuICAgICAgICAgICAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXQob25TdWJtaXQpfSBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxMYWJlbCBodG1sRm9yPVwibG9jYXRpb25cIj7Qk9C+0YDQvtC0IC8g0KDQsNC50L7QvTwvTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImxvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCd0LDQv9GA0LjQvNC10YA6INCc0L7RgdC60LLQsCwg0K7QkNCeXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVnaXN0ZXIoXCJsb2NhdGlvblwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZXJyb3JzLmxvY2F0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtcmVkLTUwMFwiPntlcnJvcnMubG9jYXRpb24ubWVzc2FnZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPExhYmVsIGh0bWxGb3I9XCJjdXJyZW50TG9jYXRpb25cIj7QotC10LrRg9GJ0LXQtSDQvNC10YHRgtC+0L/QvtC70L7QttC10L3QuNC1PC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY3VycmVudExvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCa0L7QvtGA0LTQuNC90LDRgtGLINC40LvQuCDQsNC00YDQtdGBXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ucmVnaXN0ZXIoXCJjdXJyZW50TG9jYXRpb25cIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDQnNC+0LbQvdC+INC+0YHRgtCw0LLQuNGC0Ywg0L/Rg9GB0YLRi9C8LCDQtdGB0LvQuCDQvdC1INGF0L7RgtC40YLQtSDQv9C+0LrQsNC30YvQstCw0YLRjCDRgtC+0YfQvdC+0LUg0LzQtdGB0YLQvtC/0L7Qu9C+0LbQtdC90LjQtVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Vycm9ycy5jdXJyZW50TG9jYXRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1yZWQtNTAwXCI+e2Vycm9ycy5jdXJyZW50TG9jYXRpb24ubWVzc2FnZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8RGlhbG9nRm9vdGVyIGNsYXNzTmFtZT1cImdhcC0yIHNtOmdhcC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlhbG9nQ2xvc2UgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJidXR0b25cIiB2YXJpYW50PVwib3V0bGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQntGC0LzQtdC90LBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nQ2xvc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBkaXNhYmxlZD17aXNMb2FkaW5nfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nID8gXCLQodC+0YXRgNCw0L3QtdC90LjQtS4uLlwiIDogXCLQodC+0YXRgNCw0L3QuNGC0YxcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L0RpYWxvZ0Zvb3Rlcj5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICAgIDwvRGlhbG9nPlxuICAgIClcbn1cbiJdLCJuYW1lcyI6WyJ1c2VGb3JtIiwiem9kUmVzb2x2ZXIiLCJ6IiwidG9hc3QiLCJCdXR0b24iLCJJbnB1dCIsIkxhYmVsIiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0Rlc2NyaXB0aW9uIiwiRGlhbG9nRm9vdGVyIiwiRGlhbG9nSGVhZGVyIiwiRGlhbG9nVGl0bGUiLCJEaWFsb2dDbG9zZSIsInVzZVNlc3Npb25TdG9yZSIsIk1hcFBpbiIsImxvY2F0aW9uU2NoZW1hIiwib2JqZWN0IiwibG9jYXRpb24iLCJzdHJpbmciLCJvcHRpb25hbCIsImN1cnJlbnRMb2NhdGlvbiIsIkxvY2F0aW9uTW9kYWwiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwiaW5pdGlhbExvY2F0aW9uIiwiaW5pdGlhbEN1cnJlbnRMb2NhdGlvbiIsInVwZGF0ZUxvY2F0aW9uIiwiaXNMb2FkaW5nIiwicmVnaXN0ZXIiLCJoYW5kbGVTdWJtaXQiLCJyZXNldCIsImZvcm1TdGF0ZSIsImVycm9ycyIsInJlc29sdmVyIiwiZGVmYXVsdFZhbHVlcyIsIm9uU3VibWl0IiwiZGF0YSIsInN1Y2Nlc3MiLCJlcnJvciIsInJlc3BvbnNlIiwibWVzc2FnZSIsImhhbmRsZUNsb3NlIiwiY2xhc3NOYW1lIiwiZm9ybSIsImRpdiIsImh0bWxGb3IiLCJpZCIsInBsYWNlaG9sZGVyIiwicCIsImFzQ2hpbGQiLCJ0eXBlIiwidmFyaWFudCIsImRpc2FibGVkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/location-modal.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/rating.tsx":
|
||
/*!**************************************!*\
|
||
!*** ./src/components/ui/rating.tsx ***!
|
||
\**************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Rating: () => (/* binding */ Rating),\n/* harmony export */ useRandomRating: () => (/* binding */ useRandomRating)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_Star_lucide_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=Star!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/star.js\");\n/* __next_internal_client_entry_do_not_use__ Rating,useRandomRating auto */ \nvar _s = $RefreshSig$();\n\n\nfunction Rating(param) {\n let { value, showValue = true, size = \"md\" } = param;\n // Определяем цвет звезды на основе рейтинга\n const getStarColor = ()=>{\n if (value >= 4) return \"text-green-600 dark:text-green-500\";\n if (value >= 3) return \"text-blue-600 dark:text-blue-500\";\n return \"text-red-600 dark:text-red-500\";\n };\n // Размеры иконки\n const sizeClasses = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\"\n };\n // Создаем массив из 5 звезд с процентом заполнения\n const stars = Array.from({\n length: 5\n }, (_, index)=>{\n const starValue = index + 1;\n const fillPercentage = Math.max(0, Math.min(100, (value - index) * 100));\n return {\n index,\n fillPercentage\n };\n });\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: stars.map((param)=>{\n let { index, fillPercentage } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Star_lucide_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"\".concat(sizeClasses[size], \" text-muted-foreground/30\")\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rating.tsx\",\n lineNumber: 42,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 overflow-hidden\",\n style: {\n width: \"\".concat(fillPercentage, \"%\")\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Star_lucide_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"\".concat(sizeClasses[size], \" \").concat(getStarColor(), \" fill-current\")\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rating.tsx\",\n lineNumber: 50,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rating.tsx\",\n lineNumber: 46,\n columnNumber: 25\n }, this)\n ]\n }, index, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rating.tsx\",\n lineNumber: 40,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rating.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, this),\n showValue && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold \".concat(getStarColor()),\n children: value.toFixed(2)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rating.tsx\",\n lineNumber: 60,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rating.tsx\",\n lineNumber: 36,\n columnNumber: 9\n }, this);\n}\n_c = Rating;\n// Хук для генерации случайного рейтинга (заглушка)\nfunction useRandomRating() {\n _s();\n const [rating, setRating] = react__WEBPACK_IMPORTED_MODULE_1__.useState(0);\n react__WEBPACK_IMPORTED_MODULE_1__.useEffect({\n \"useRandomRating.useEffect\": ()=>{\n // Генерируем начальный случайный рейтинг от 0 до 5\n setRating(Math.random() * 5);\n // Обновляем рейтинг каждую секунду (заглушка)\n const interval = setInterval({\n \"useRandomRating.useEffect.interval\": ()=>{\n setRating(Math.random() * 5);\n }\n }[\"useRandomRating.useEffect.interval\"], 1000);\n return ({\n \"useRandomRating.useEffect\": ()=>clearInterval(interval)\n })[\"useRandomRating.useEffect\"];\n }\n }[\"useRandomRating.useEffect\"], []);\n return rating;\n}\n_s(useRandomRating, \"8rbI23c/FRQaeP/4pqFlAKenwQg=\");\nvar _c;\n$RefreshReg$(_c, \"Rating\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL3JhdGluZy50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFOEI7QUFDSztBQVE1QixTQUFTRSxPQUFPLEtBQXFEO1FBQXJELEVBQUVDLEtBQUssRUFBRUMsWUFBWSxJQUFJLEVBQUVDLE9BQU8sSUFBSSxFQUFlLEdBQXJEO0lBQ25CLDRDQUE0QztJQUM1QyxNQUFNQyxlQUFlO1FBQ2pCLElBQUlILFNBQVMsR0FBRyxPQUFPO1FBQ3ZCLElBQUlBLFNBQVMsR0FBRyxPQUFPO1FBQ3ZCLE9BQU87SUFDWDtJQUVBLGlCQUFpQjtJQUNqQixNQUFNSSxjQUFjO1FBQ2hCQyxJQUFJO1FBQ0pDLElBQUk7UUFDSkMsSUFBSTtJQUNSO0lBRUEsbURBQW1EO0lBQ25ELE1BQU1DLFFBQVFDLE1BQU1DLElBQUksQ0FBQztRQUFFQyxRQUFRO0lBQUUsR0FBRyxDQUFDQyxHQUFHQztRQUN4QyxNQUFNQyxZQUFZRCxRQUFRO1FBQzFCLE1BQU1FLGlCQUFpQkMsS0FBS0MsR0FBRyxDQUFDLEdBQUdELEtBQUtFLEdBQUcsQ0FBQyxLQUFLLENBQUNsQixRQUFRYSxLQUFJLElBQUs7UUFFbkUsT0FBTztZQUFFQTtZQUFPRTtRQUFlO0lBQ25DO0lBRUEscUJBQ0ksOERBQUNJO1FBQUlDLFdBQVU7OzBCQUVYLDhEQUFDRDtnQkFBSUMsV0FBVTswQkFDVlosTUFBTWEsR0FBRyxDQUFDO3dCQUFDLEVBQUVSLEtBQUssRUFBRUUsY0FBYyxFQUFFO3lDQUNqQyw4REFBQ0k7d0JBQWdCQyxXQUFVOzswQ0FFdkIsOERBQUN0QixnRkFBSUE7Z0NBQ0RzQixXQUFXLEdBQXFCLE9BQWxCaEIsV0FBVyxDQUFDRixLQUFLLEVBQUM7Ozs7OzswQ0FHcEMsOERBQUNpQjtnQ0FDR0MsV0FBVTtnQ0FDVkUsT0FBTztvQ0FBRUMsT0FBTyxHQUFrQixPQUFmUixnQkFBZTtnQ0FBRzswQ0FFckMsNEVBQUNqQixnRkFBSUE7b0NBQ0RzQixXQUFXLEdBQXdCakIsT0FBckJDLFdBQVcsQ0FBQ0YsS0FBSyxFQUFDLEtBQWtCLE9BQWZDLGdCQUFlOzs7Ozs7Ozs7Ozs7dUJBWHBEVTs7Ozs7Ozs7Ozs7WUFtQmpCWiwyQkFDRyw4REFBQ3VCO2dCQUFLSixXQUFXLGlCQUFnQyxPQUFmakI7MEJBQzdCSCxNQUFNeUIsT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7QUFLbkM7S0F0RGdCMUI7QUF3RGhCLG1EQUFtRDtBQUM1QyxTQUFTMkI7O0lBQ1osTUFBTSxDQUFDQyxRQUFRQyxVQUFVLEdBQUcvQiwyQ0FBYyxDQUFDO0lBRTNDQSw0Q0FBZTtxQ0FBQztZQUNaLG1EQUFtRDtZQUNuRCtCLFVBQVVaLEtBQUtlLE1BQU0sS0FBSztZQUUxQiw4Q0FBOEM7WUFDOUMsTUFBTUMsV0FBV0M7c0RBQVk7b0JBQ3pCTCxVQUFVWixLQUFLZSxNQUFNLEtBQUs7Z0JBQzlCO3FEQUFHO1lBRUg7NkNBQU8sSUFBTUcsY0FBY0Y7O1FBQy9CO29DQUFHLEVBQUU7SUFFTCxPQUFPTDtBQUNYO0dBaEJnQkQiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXHVpXFxyYXRpbmcudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBTdGFyIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5cbmludGVyZmFjZSBSYXRpbmdQcm9wcyB7XG4gICAgdmFsdWU6IG51bWJlclxuICAgIHNob3dWYWx1ZT86IGJvb2xlYW5cbiAgICBzaXplPzogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYXRpbmcoeyB2YWx1ZSwgc2hvd1ZhbHVlID0gdHJ1ZSwgc2l6ZSA9IFwibWRcIiB9OiBSYXRpbmdQcm9wcykge1xuICAgIC8vINCe0L/RgNC10LTQtdC70Y/QtdC8INGG0LLQtdGCINC30LLQtdC30LTRiyDQvdCwINC+0YHQvdC+0LLQtSDRgNC10LnRgtC40L3Qs9CwXG4gICAgY29uc3QgZ2V0U3RhckNvbG9yID0gKCkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgPj0gNCkgcmV0dXJuIFwidGV4dC1ncmVlbi02MDAgZGFyazp0ZXh0LWdyZWVuLTUwMFwiXG4gICAgICAgIGlmICh2YWx1ZSA+PSAzKSByZXR1cm4gXCJ0ZXh0LWJsdWUtNjAwIGRhcms6dGV4dC1ibHVlLTUwMFwiXG4gICAgICAgIHJldHVybiBcInRleHQtcmVkLTYwMCBkYXJrOnRleHQtcmVkLTUwMFwiXG4gICAgfVxuXG4gICAgLy8g0KDQsNC30LzQtdGA0Ysg0LjQutC+0L3QutC4XG4gICAgY29uc3Qgc2l6ZUNsYXNzZXMgPSB7XG4gICAgICAgIHNtOiBcImgtNCB3LTRcIixcbiAgICAgICAgbWQ6IFwiaC01IHctNVwiLFxuICAgICAgICBsZzogXCJoLTYgdy02XCJcbiAgICB9XG5cbiAgICAvLyDQodC+0LfQtNCw0LXQvCDQvNCw0YHRgdC40LIg0LjQtyA1INC30LLQtdC30LQg0YEg0L/RgNC+0YbQtdC90YLQvtC8INC30LDQv9C+0LvQvdC10L3QuNGPXG4gICAgY29uc3Qgc3RhcnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1IH0sIChfLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFyVmFsdWUgPSBpbmRleCArIDFcbiAgICAgICAgY29uc3QgZmlsbFBlcmNlbnRhZ2UgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsICh2YWx1ZSAtIGluZGV4KSAqIDEwMCkpXG5cbiAgICAgICAgcmV0dXJuIHsgaW5kZXgsIGZpbGxQZXJjZW50YWdlIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgey8qIDUg0LfQstC10LfQtCDRgSDQv9GA0L7Qs9GA0LXRgdGBLdCx0LDRgNC+0LwgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAge3N0YXJzLm1hcCgoeyBpbmRleCwgZmlsbFBlcmNlbnRhZ2UgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog0KTQvtC90L7QstCw0Y8g0LfQstC10LfQtNCwICjRgdC10YDQsNGPKSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzaXplQ2xhc3Nlc1tzaXplXX0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzMwYH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog0JfQsNC/0L7Qu9C90LXQvdC90LDRjyDQt9Cy0LXQt9C00LAgKNC/0YDQvtCz0YDQtdGB0YEpICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogYCR7ZmlsbFBlcmNlbnRhZ2V9JWAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3NpemVDbGFzc2VzW3NpemVdfSAke2dldFN0YXJDb2xvcigpfSBmaWxsLWN1cnJlbnRgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qINCn0LjRgdC70L7QstC+0LUg0LfQvdCw0YfQtdC90LjQtSDRgdC/0YDQsNCy0LAgKi99XG4gICAgICAgICAgICB7c2hvd1ZhbHVlICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Bmb250LXNlbWlib2xkICR7Z2V0U3RhckNvbG9yKCl9YH0+XG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuLy8g0KXRg9C6INC00LvRjyDQs9C10L3QtdGA0LDRhtC40Lgg0YHQu9GD0YfQsNC50L3QvtCz0L4g0YDQtdC50YLQuNC90LPQsCAo0LfQsNCz0LvRg9GI0LrQsClcbmV4cG9ydCBmdW5jdGlvbiB1c2VSYW5kb21SYXRpbmcoKSB7XG4gICAgY29uc3QgW3JhdGluZywgc2V0UmF0aW5nXSA9IFJlYWN0LnVzZVN0YXRlKDApXG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyDQk9C10L3QtdGA0LjRgNGD0LXQvCDQvdCw0YfQsNC70YzQvdGL0Lkg0YHQu9GD0YfQsNC50L3Ri9C5INGA0LXQudGC0LjQvdCzINC+0YIgMCDQtNC+IDVcbiAgICAgICAgc2V0UmF0aW5nKE1hdGgucmFuZG9tKCkgKiA1KVxuXG4gICAgICAgIC8vINCe0LHQvdC+0LLQu9GP0LXQvCDRgNC10LnRgtC40L3QsyDQutCw0LbQtNGD0Y4g0YHQtdC60YPQvdC00YMgKNC30LDQs9C70YPRiNC60LApXG4gICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgc2V0UmF0aW5nKE1hdGgucmFuZG9tKCkgKiA1KVxuICAgICAgICB9LCAxMDAwKVxuXG4gICAgICAgIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGludGVydmFsKVxuICAgIH0sIFtdKVxuXG4gICAgcmV0dXJuIHJhdGluZ1xufVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiU3RhciIsIlJhdGluZyIsInZhbHVlIiwic2hvd1ZhbHVlIiwic2l6ZSIsImdldFN0YXJDb2xvciIsInNpemVDbGFzc2VzIiwic20iLCJtZCIsImxnIiwic3RhcnMiLCJBcnJheSIsImZyb20iLCJsZW5ndGgiLCJfIiwiaW5kZXgiLCJzdGFyVmFsdWUiLCJmaWxsUGVyY2VudGFnZSIsIk1hdGgiLCJtYXgiLCJtaW4iLCJkaXYiLCJjbGFzc05hbWUiLCJtYXAiLCJzdHlsZSIsIndpZHRoIiwic3BhbiIsInRvRml4ZWQiLCJ1c2VSYW5kb21SYXRpbmciLCJyYXRpbmciLCJzZXRSYXRpbmciLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInJhbmRvbSIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/rating.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/rich-text-editor.tsx":
|
||
/*!************************************************!*\
|
||
!*** ./src/components/ui/rich-text-editor.tsx ***!
|
||
\************************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RichTextEditor: () => (/* binding */ RichTextEditor)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var _tiptap_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tiptap/react */ \"(app-pages-browser)/./node_modules/@tiptap/react/dist/index.js\");\n/* harmony import */ var _tiptap_starter_kit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tiptap/starter-kit */ \"(app-pages-browser)/./node_modules/@tiptap/starter-kit/dist/index.js\");\n/* harmony import */ var _tiptap_extension_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tiptap/extension-link */ \"(app-pages-browser)/./node_modules/@tiptap/extension-link/dist/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Bold,Italic,Link,List,ListOrdered,Redo,Undo,Unlink!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/bold.js\");\n/* harmony import */ var _barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Bold,Italic,Link,List,ListOrdered,Redo,Undo,Unlink!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/italic.js\");\n/* harmony import */ var _barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Bold,Italic,Link,List,ListOrdered,Redo,Undo,Unlink!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/list.js\");\n/* harmony import */ var _barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=Bold,Italic,Link,List,ListOrdered,Redo,Undo,Unlink!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/list-ordered.js\");\n/* harmony import */ var _barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Bold,Italic,Link,List,ListOrdered,Redo,Undo,Unlink!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/unlink.js\");\n/* harmony import */ var _barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Bold,Italic,Link,List,ListOrdered,Redo,Undo,Unlink!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/link.js\");\n/* harmony import */ var _barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Bold,Italic,Link,List,ListOrdered,Redo,Undo,Unlink!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/undo.js\");\n/* harmony import */ var _barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Bold,Italic,Link,List,ListOrdered,Redo,Undo,Unlink!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/redo.js\");\n/* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./button */ \"(app-pages-browser)/./src/components/ui/button.tsx\");\n/* __next_internal_client_entry_do_not_use__ RichTextEditor auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\nfunction RichTextEditor(param) {\n let { content, onChange, placeholder, maxLength } = param;\n _s();\n const editor = (0,_tiptap_react__WEBPACK_IMPORTED_MODULE_5__.useEditor)({\n immediatelyRender: false,\n extensions: [\n _tiptap_starter_kit__WEBPACK_IMPORTED_MODULE_1__[\"default\"].configure({\n // Отключаем встроенное расширение Link, чтобы использовать своё\n link: false\n }),\n _tiptap_extension_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"].configure({\n openOnClick: false,\n HTMLAttributes: {\n class: \"text-blue-600 hover:underline cursor-pointer\"\n }\n })\n ],\n content,\n onUpdate: {\n \"RichTextEditor.useEditor[editor]\": (param)=>{\n let { editor } = param;\n const html = editor.getHTML();\n // Проверяем лимит символов (простой подсчёт текста без HTML тегов)\n const text = editor.getText();\n if (maxLength && text.length > maxLength) {\n return;\n }\n onChange(html);\n }\n }[\"RichTextEditor.useEditor[editor]\"],\n editorProps: {\n attributes: {\n class: \"prose prose-sm max-w-none focus:outline-none min-h-[200px] px-3 py-2\"\n }\n }\n });\n const handleLinkClick = (0,react__WEBPACK_IMPORTED_MODULE_3__.useCallback)({\n \"RichTextEditor.useCallback[handleLinkClick]\": (e)=>{\n e.preventDefault();\n const href = e.currentTarget.getAttribute(\"href\");\n if (!href) return;\n // Проверяем, является ли ссылка внешней\n const isExternal = href.startsWith(\"http://\") || href.startsWith(\"https://\");\n if (isExternal) {\n const domain = new URL(href).hostname;\n const confirmed = confirm(\"Вы переходите на внешний ресурс: \".concat(domain, \"\\n\\n\") + \"Ссылка: \".concat(href, \"\\n\\n\") + \"Вы уверены, что хотите перейти?\");\n if (confirmed) {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n }\n } else {\n window.open(href, \"_blank\");\n }\n }\n }[\"RichTextEditor.useCallback[handleLinkClick]\"], []);\n const setLink = (0,react__WEBPACK_IMPORTED_MODULE_3__.useCallback)({\n \"RichTextEditor.useCallback[setLink]\": ()=>{\n if (!editor) return;\n const previousUrl = editor.getAttributes(\"link\").href;\n const url = window.prompt(\"Введите URL ссылки:\", previousUrl || \"\");\n if (url === null) {\n return;\n }\n if (url === \"\") {\n editor.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n return;\n }\n editor.chain().focus().extendMarkRange(\"link\").setLink({\n href: url\n }).run();\n }\n }[\"RichTextEditor.useCallback[setLink]\"], [\n editor\n ]);\n const unsetLink = (0,react__WEBPACK_IMPORTED_MODULE_3__.useCallback)({\n \"RichTextEditor.useCallback[unsetLink]\": ()=>{\n if (!editor) return;\n editor.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n }\n }[\"RichTextEditor.useCallback[unsetLink]\"], [\n editor\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_3__.useEffect)({\n \"RichTextEditor.useEffect\": ()=>{\n if (editor && content !== editor.getHTML()) {\n editor.commands.setContent(content);\n }\n }\n }[\"RichTextEditor.useEffect\"], [\n content,\n editor\n ]);\n if (!editor) {\n return null;\n }\n const textLength = editor.getText().length;\n const isOverLimit = maxLength && textLength > maxLength;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-md overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b bg-muted/50 p-2 flex flex-wrap gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"button\",\n variant: editor.isActive(\"bold\") ? \"default\" : \"ghost\",\n size: \"sm\",\n onClick: ()=>editor.chain().focus().toggleBold().run(),\n title: \"Жирный (Ctrl+B)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 128,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 121,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"button\",\n variant: editor.isActive(\"italic\") ? \"default\" : \"ghost\",\n size: \"sm\",\n onClick: ()=>editor.chain().focus().toggleItalic().run(),\n title: \"Курсив (Ctrl+I)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 138,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 131,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-px h-6 bg-border mx-1\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 141,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"button\",\n variant: editor.isActive(\"bulletList\") ? \"default\" : \"ghost\",\n size: \"sm\",\n onClick: ()=>editor.chain().focus().toggleBulletList().run(),\n title: \"Маркированный список\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 150,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 143,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"button\",\n variant: editor.isActive(\"orderedList\") ? \"default\" : \"ghost\",\n size: \"sm\",\n onClick: ()=>editor.chain().focus().toggleOrderedList().run(),\n title: \"Нумерованный список\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 160,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 153,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-px h-6 bg-border mx-1\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 163,\n columnNumber: 17\n }, this),\n editor.isActive(\"link\") ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"button\",\n variant: \"default\",\n size: \"sm\",\n onClick: unsetLink,\n title: \"Убрать ссылку\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 173,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 166,\n columnNumber: 21\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"button\",\n variant: \"ghost\",\n size: \"sm\",\n onClick: setLink,\n title: \"Добавить ссылку\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 183,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 176,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-px h-6 bg-border mx-1\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 187,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"button\",\n variant: \"ghost\",\n size: \"sm\",\n onClick: ()=>editor.chain().focus().undo().run(),\n disabled: !editor.can().undo(),\n title: \"Отменить (Ctrl+Z)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 197,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 189,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_4__.Button, {\n type: \"button\",\n variant: \"ghost\",\n size: \"sm\",\n onClick: ()=>editor.chain().focus().redo().run(),\n disabled: !editor.can().redo(),\n title: \"Повторить (Ctrl+Y)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Bold_Italic_Link_List_ListOrdered_Redo_Undo_Unlink_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 208,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 200,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 120,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n true && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_tiptap_react__WEBPACK_IMPORTED_MODULE_5__.EditorContent, {\n editor: editor\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 214,\n columnNumber: 51\n }, this),\n editor.isEmpty && placeholder && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-2 left-3 text-muted-foreground pointer-events-none\",\n children: placeholder\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 216,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 213,\n columnNumber: 13\n }, this),\n maxLength && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-t px-3 py-2 text-xs flex justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground\",\n children: [\n \"Поддерживаются: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"жирный\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 226,\n columnNumber: 41\n }, this),\n \", \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"em\", {\n children: \"курсив\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 226,\n columnNumber: 66\n }, this),\n \", списки, ссылки\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 225,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: isOverLimit ? \"text-destructive font-medium\" : \"text-muted-foreground\",\n children: [\n textLength,\n \" / \",\n maxLength,\n \" символов\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 228,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 224,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\rich-text-editor.tsx\",\n lineNumber: 118,\n columnNumber: 9\n }, this);\n}\n_s(RichTextEditor, \"qmjUBWFpt/RLZjCl4DcBqUjsgUA=\", false, function() {\n return [\n _tiptap_react__WEBPACK_IMPORTED_MODULE_5__.useEditor\n ];\n});\n_c = RichTextEditor;\nvar _c;\n$RefreshReg$(_c, \"RichTextEditor\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL3JpY2gtdGV4dC1lZGl0b3IudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV3RDtBQUNaO0FBQ0g7QUFDSztBQVV6QjtBQUNZO0FBUzFCLFNBQVNlLGVBQWUsS0FBa0U7UUFBbEUsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsU0FBUyxFQUF1QixHQUFsRTs7SUFDM0IsTUFBTUMsU0FBU3BCLHdEQUFTQSxDQUFDO1FBQ3JCcUIsbUJBQW1CO1FBQ25CQyxZQUFZO1lBQ1JwQiwyREFBVUEsQ0FBQ3FCLFNBQVMsQ0FBQztnQkFDakIsZ0VBQWdFO2dCQUNoRUMsTUFBTTtZQUNWO1lBQ0FyQiw4REFBSUEsQ0FBQ29CLFNBQVMsQ0FBQztnQkFDWEUsYUFBYTtnQkFDYkMsZ0JBQWdCO29CQUNaQyxPQUFPO2dCQUNYO1lBQ0o7U0FDSDtRQUNEWDtRQUNBWSxRQUFRO2dEQUFFO29CQUFDLEVBQUVSLE1BQU0sRUFBRTtnQkFDakIsTUFBTVMsT0FBT1QsT0FBT1UsT0FBTztnQkFDM0IsbUVBQW1FO2dCQUNuRSxNQUFNQyxPQUFPWCxPQUFPWSxPQUFPO2dCQUMzQixJQUFJYixhQUFhWSxLQUFLRSxNQUFNLEdBQUdkLFdBQVc7b0JBQ3RDO2dCQUNKO2dCQUNBRixTQUFTWTtZQUNiOztRQUNBSyxhQUFhO1lBQ1RDLFlBQVk7Z0JBQ1JSLE9BQU87WUFDWDtRQUNKO0lBQ0o7SUFFQSxNQUFNUyxrQkFBa0JoQyxrREFBV0E7dURBQUMsQ0FBQ2lDO1lBQ2pDQSxFQUFFQyxjQUFjO1lBQ2hCLE1BQU1DLE9BQU9GLEVBQUVHLGFBQWEsQ0FBQ0MsWUFBWSxDQUFDO1lBQzFDLElBQUksQ0FBQ0YsTUFBTTtZQUVYLHdDQUF3QztZQUN4QyxNQUFNRyxhQUFhSCxLQUFLSSxVQUFVLENBQUMsY0FBY0osS0FBS0ksVUFBVSxDQUFDO1lBRWpFLElBQUlELFlBQVk7Z0JBQ1osTUFB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LDRFQUFDOUQsK0hBQUlBOzRCQUFDdUQsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBS3hCLDhEQUFDRDtnQkFBSUMsV0FBVTs7b0JBQ1YsS0FBNkIsa0JBQUksOERBQUNqRSx3REFBYUE7d0JBQUNtQixRQUFRQTs7Ozs7O29CQUN4REEsT0FBTzZELE9BQU8sSUFBSS9ELDZCQUNmLDhEQUFDK0M7d0JBQUlDLFdBQVU7a0NBQ1ZoRDs7Ozs7Ozs7Ozs7O1lBTVpDLDJCQUNHLDhEQUFDOEM7Z0JBQUlDLFdBQVU7O2tDQUNYLDhEQUFDZ0I7d0JBQUtoQixXQUFVOzs0QkFBd0I7MENBQ3BCLDhEQUFDaUI7MENBQU87Ozs7Ozs0QkFBZTswQ0FBRSw4REFBQ0M7MENBQUc7Ozs7Ozs0QkFBVzs7Ozs7OztrQ0FFNUQsOERBQUNGO3dCQUFLaEIsV0FBV0YsY0FBYyxpQ0FBaUM7OzRCQUMzREQ7NEJBQVc7NEJBQUk1Qzs0QkFBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1sRDtHQWpOZ0JKOztRQUNHZixvREFBU0E7OztLQURaZSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXHNyY1xcY29tcG9uZW50c1xcdWlcXHJpY2gtdGV4dC1lZGl0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiXG5cbmltcG9ydCB7IHVzZUVkaXRvciwgRWRpdG9yQ29udGVudCB9IGZyb20gXCJAdGlwdGFwL3JlYWN0XCJcbmltcG9ydCBTdGFydGVyS2l0IGZyb20gXCJAdGlwdGFwL3N0YXJ0ZXIta2l0XCJcbmltcG9ydCBMaW5rIGZyb20gXCJAdGlwdGFwL2V4dGVuc2lvbi1saW5rXCJcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtcbiAgICBCb2xkLFxuICAgIEl0YWxpYyxcbiAgICBMaXN0LFxuICAgIExpc3RPcmRlcmVkLFxuICAgIFVuZG8sXG4gICAgUmVkbyxcbiAgICBMaW5rIGFzIExpbmtJY29uLFxuICAgIFVubGluayxcbn0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi9idXR0b25cIlxuXG5pbnRlcmZhY2UgUmljaFRleHRFZGl0b3JQcm9wcyB7XG4gICAgY29udGVudDogc3RyaW5nXG4gICAgb25DaGFuZ2U6IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICAgIG1heExlbmd0aD86IG51bWJlclxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmljaFRleHRFZGl0b3IoeyBjb250ZW50LCBvbkNoYW5nZSwgcGxhY2Vob2xkZXIsIG1heExlbmd0aCB9OiBSaWNoVGV4dEVkaXRvclByb3BzKSB7XG4gICAgY29uc3QgZWRpdG9yID0gdXNlRWRpdG9yKHtcbiAgICAgICAgaW1tZWRpYXRlbHlSZW5kZXI6IGZhbHNlLFxuICAgICAgICBleHRlbnNpb25zOiBbXG4gICAgICAgICAgICBTdGFydGVyS2l0LmNvbmZpZ3VyZSh7XG4gICAgICAgICAgICAgICAgLy8g0J7RgtC60LvRjtGH0LDQtdC8INCy0YHRgtGA0L7QtdC90L3QvtC1INGA0LDRgdGI0LjRgNC10L3QuNC1IExpbmssINGH0YLQvtCx0Ysg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINGB0LLQvtGRXG4gICAgICAgICAgICAgICAgbGluazogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIExpbmsuY29uZmlndXJlKHtcbiAgICAgICAgICAgICAgICBvcGVuT25DbGljazogZmFsc2UsXG4gICAgICAgICAgICAgICAgSFRNTEF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFwidGV4dC1ibHVlLTYwMCBob3Zlcjp1bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIG9uVXBkYXRlOiAoeyBlZGl0b3IgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaHRtbCA9IGVkaXRvci5nZXRIVE1MKClcbiAgICAgICAgICAgIC8vINCf0YDQvtCy0LXRgNGP0LXQvCDQu9C40LzQuNGCINGB0LjQvNCy0L7Qu9C+0LIgKNC/0YDQvtGB0YLQvtC5INC/0L7QtNGB0YfRkdGCINGC0LXQutGB0YLQsCDQsdC10LcgSFRNTCDRgtC10LPQvtCyKVxuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGVkaXRvci5nZXRUZXh0KClcbiAgICAgICAgICAgIGlmIChtYXhMZW5ndGggJiYgdGV4dC5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQ2hhbmdlKGh0bWwpXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRvclByb3BzOiB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IFwicHJvc2UgcHJvc2Utc20gbWF4LXctbm9uZSBmb2N1czpvdXRsaW5lLW5vbmUgbWluLWgtWzIwMHB4XSBweC0zIHB5LTJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IGhhbmRsZUxpbmtDbGljayA9IHVzZUNhbGxiYWNrKChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY29uc3QgaHJlZiA9IGUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpXG4gICAgICAgIGlmICghaHJlZikgcmV0dXJuXG5cbiAgICAgICAgLy8g0J/RgNC+0LLQtdGA0Y/QtdC8LCDRj9Cy0LvRj9C10YLRgdGPINC70Lgg0YHRgdGL0LvQutCwINCy0L3QtdGI0L3QtdC5XG4gICAgICAgIGNvbnN0IGlzRXh0ZXJuYWwgPSBocmVmLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpIHx8IGhyZWYuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpXG5cbiAgICAgICAgaWYgKGlzRXh0ZXJuYWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvbWFpbiA9IG5ldyBVUkwoaHJlZikuaG9zdG5hbWVcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGNvbmZpcm0oXG4gICAgICAgICAgICAgICAgYNCS0Ysg0L/QtdGA0LXRhdC+0LTQuNGC0LUg0L3QsCDQstC90LXRiNC90LjQuSDRgNC10YHRg9GA0YE6ICR7ZG9tYWlufVxcblxcbmAgK1xuICAgICAgICAgICAgICAgIGDQodGB0YvQu9C60LA6ICR7aHJlZn1cXG5cXG5gICtcbiAgICAgICAgICAgICAgICBg0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDQv9C10YDQtdC50YLQuD9gXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oaHJlZiwgXCJfYmxhbmtcIiwgXCJub29wZW5lcixub3JlZmVycmVyXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aW5kb3cub3BlbihocmVmLCBcIl9ibGFua1wiKVxuICAgICAgICB9XG4gICAgfSwgW10pXG5cbiAgICBjb25zdCBzZXRMaW5rID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIWVkaXRvcikgcmV0dXJuXG5cbiAgICAgICAgY29uc3QgcHJldmlvdXNVcmwgPSBlZGl0b3IuZ2V0QXR0cmlidXRlcyhcImxpbmtcIikuaHJlZlxuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cucHJvbXB0KFwi0JLQstC10LTQuNGC0LUgVVJMINGB0YHRi9C70LrQuDpcIiwgcHJldmlvdXNVcmwgfHwgXCJcIilcblxuICAgICAgICBpZiAodXJsID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cmwgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuZXh0ZW5kTWFya1JhbmdlKFwibGlua1wiKS51bnNldExpbmsoKS5ydW4oKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLmV4dGVuZE1hcmtSYW5nZShcImxpbmtcIikuc2V0TGluayh7IGhyZWY6IHVybCB9KS5ydW4oKVxuICAgIH0sIFtlZGl0b3JdKVxuXG4gICAgY29uc3QgdW5zZXRMaW5rID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIWVkaXRvcikgcmV0dXJuXG4gICAgICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuZXh0ZW5kTWFya1JhbmdlKFwibGlua1wiKS51bnNldExpbmsoKS5ydW4oKVxuICAgIH0sIFtlZGl0b3JdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGVkaXRvciAmJiBjb250ZW50ICE9PSBlZGl0b3IuZ2V0SFRNTCgpKSB7XG4gICAgICAgICAgICBlZGl0b3IuY29tbWFuZHMuc2V0Q29udGVudChjb250ZW50KVxuICAgICAgICB9XG4gICAgfSwgW2NvbnRlbnQsIGVkaXRvcl0pXG5cbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHRleHRMZW5ndGggPSBlZGl0b3IuZ2V0VGV4dCgpLmxlbmd0aFxuICAgIGNvbnN0IGlzT3ZlckxpbWl0ID0gbWF4TGVuZ3RoICYmIHRleHRMZW5ndGggPiBtYXhMZW5ndGhcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbWQgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICB7Lyog0J/QsNC90LXQu9GMINC40L3RgdGC0YDRg9C80LXQvdGC0L7QsiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYmctbXV0ZWQvNTAgcC0yIGZsZXggZmxleC13cmFwIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17ZWRpdG9yLmlzQWN0aXZlKFwiYm9sZFwiKSA/IFwiZGVmYXVsdFwiIDogXCJnaG9zdFwifVxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUJvbGQoKS5ydW4oKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCLQltC40YDQvdGL0LkgKEN0cmwrQilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEJvbGQgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXtlZGl0b3IuaXNBY3RpdmUoXCJpdGFsaWNcIikgPyBcImRlZmF1bHRcIiA6IFwiZ2hvc3RcIn1cbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVJdGFsaWMoKS5ydW4oKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCLQmtGD0YDRgdC40LIgKEN0cmwrSSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEl0YWxpYyBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1weCBoLTYgYmctYm9yZGVyIG14LTFcIiAvPlxuXG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17ZWRpdG9yLmlzQWN0aXZlKFwiYnVsbGV0TGlzdFwiKSA/IFwiZGVmYXVsdFwiIDogXCJnaG9zdFwifVxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUJ1bGxldExpc3QoKS5ydW4oKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCLQnNCw0YDQutC40YDQvtCy0LDQvdC90YvQuSDRgdC/0LjRgdC+0LpcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPExpc3QgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXtlZGl0b3IuaXNBY3RpdmUoXCJvcmRlcmVkTGlzdFwiKSA/IFwiZGVmYXVsdFwiIDogXCJnaG9zdFwifVxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZU9yZGVyZWRMaXN0KCkucnVuKCl9XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwi0J3Rg9C80LXRgNC+0LLQsNC90L3Ri9C5INGB0L/QuNGB0L7QulwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8TGlzdE9yZGVyZWQgY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctcHggaC02IGJnLWJvcmRlciBteC0xXCIgLz5cblxuICAgICAgICAgICAgICAgIHtlZGl0b3IuaXNBY3RpdmUoXCJsaW5rXCIpID8gKFxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt1bnNldExpbmt9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cItCj0LHRgNCw0YLRjCDRgdGB0YvQu9C60YNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VW5saW5rIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17c2V0TGlua31cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwi0JTQvtCx0LDQstC40YLRjCDRgdGB0YvQu9C60YNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TGlua0ljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctcHggaC02IGJnLWJvcmRlciBteC0xXCIgLz5cblxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGVkaXRvci5jaGFpbigpLmZvY3VzKCkudW5kbygpLnJ1bigpfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWVkaXRvci5jYW4oKS51bmRvKCl9XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwi0J7RgtC80LXQvdC40YLRjCAoQ3RybCtaKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8VW5kbyBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGVkaXRvci5jaGFpbigpLmZvY3VzKCkucmVkbygpLnJ1bigpfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWVkaXRvci5jYW4oKS5yZWRvKCl9XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwi0J/QvtCy0YLQvtGA0LjRgtGMIChDdHJsK1kpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxSZWRvIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiDQntCx0LvQsNGB0YLRjCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIHt0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiA8RWRpdG9yQ29udGVudCBlZGl0b3I9e2VkaXRvcn0gLz59XG4gICAgICAgICAgICAgICAge2VkaXRvci5pc0VtcHR5ICYmIHBsYWNlaG9sZGVyICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMiBsZWZ0LTMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7Lyog0KHRh9GR0YLRh9C40Log0YHQuNC80LLQvtC70L7QsiAqL31cbiAgICAgICAgICAgIHttYXhMZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLXQgcHgtMyBweS0yIHRleHQteHMgZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICDQn9C+0LTQtNC10YDQttC40LLQsNGO0YLRgdGPOiA8c3Ryb25nPtC20LjRgNC90YvQuTwvc3Ryb25nPiwgPGVtPtC60YPRgNGB0LjQsjwvZW0+LCDRgdC/0LjRgdC60LgsINGB0YHRi9C70LrQuFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17aXNPdmVyTGltaXQgPyBcInRleHQtZGVzdHJ1Y3RpdmUgZm9udC1tZWRpdW1cIiA6IFwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3RleHRMZW5ndGh9IC8ge21heExlbmd0aH0g0YHQuNC80LLQvtC70L7QslxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICApXG59XG4iXSwibmFtZXMiOlsidXNlRWRpdG9yIiwiRWRpdG9yQ29udGVudCIsIlN0YXJ0ZXJLaXQiLCJMaW5rIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJCb2xkIiwiSXRhbGljIiwiTGlzdCIsIkxpc3RPcmRlcmVkIiwiVW5kbyIsIlJlZG8iLCJMaW5rSWNvbiIsIlVubGluayIsIkJ1dHRvbiIsIlJpY2hUZXh0RWRpdG9yIiwiY29udGVudCIsIm9uQ2hhbmdlIiwicGxhY2Vob2xkZXIiLCJtYXhMZW5ndGgiLCJlZGl0b3IiLCJpbW1lZGlhdGVseVJlbmRlciIsImV4dGVuc2lvbnMiLCJjb25maWd1cmUiLCJsaW5rIiwib3Blbk9uQ2xpY2siLCJIVE1MQXR0cmlidXRlcyIsImNsYXNzIiwib25VcGRhdGUiLCJodG1sIiwiZ2V0SFRNTCIsInRleHQiLCJnZXRUZXh0IiwibGVuZ3RoIiwiZWRpdG9yUHJvcHMiLCJhdHRyaWJ1dGVzIiwiaGFuZGxlTGlua0NsaWNrIiwiZSIsInByZXZlbnREZWZhdWx0IiwiaHJlZiIsImN1cnJlbnRUYXJnZXQiLCJnZXRBdHRyaWJ1dGUiLCJpc0V4dGVybmFsIiwic3RhcnRzV2l0aCIsImRvbWFpbiIsIlVSTCIsImhvc3RuYW1lIiwiY29uZmlybWVkIiwiY29uZmlybSIsIndpbmRvdyIsIm9wZW4iLCJzZXRMaW5rIiwicHJldmlvdXNVcmwiLCJnZXRBdHRyaWJ1dGVzIiwidXJsIiwicHJvbXB0IiwiY2hhaW4iLCJmb2N1cyIsImV4dGVuZE1hcmtSYW5nZSIsInVuc2V0TGluayIsInJ1biIsImNvbW1hbmRzIiwic2V0Q29udGVudCIsInRleHRMZW5ndGgiLCJpc092ZXJMaW1pdCIsImRpdiIsImNsYXNzTmFtZSIsInR5cGUiLCJ2YXJpYW50IiwiaXNBY3RpdmUiLCJzaXplIiwib25DbGljayIsInRvZ2dsZUJvbGQiLCJ0aXRsZSIsInRvZ2dsZUl0YWxpYyIsInRvZ2dsZUJ1bGxldExpc3QiLCJ0b2dnbGVPcmRlcmVkTGlzdCIsInVuZG8iLCJkaXNhYmxlZCIsImNhbiIsInJlZG8iLCJpc0VtcHR5Iiwic3BhbiIsInN0cm9uZyIsImVtIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/rich-text-editor.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/schedule-modal.tsx":
|
||
/*!**********************************************!*\
|
||
!*** ./src/components/ui/schedule-modal.tsx ***!
|
||
\**********************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ScheduleModal: () => (/* binding */ ScheduleModal)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var sonner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! sonner */ \"(app-pages-browser)/./node_modules/sonner/dist/index.mjs\");\n/* harmony import */ var _components_ui_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ui/button */ \"(app-pages-browser)/./src/components/ui/button.tsx\");\n/* harmony import */ var _components_ui_label__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/ui/label */ \"(app-pages-browser)/./src/components/ui/label.tsx\");\n/* harmony import */ var _components_ui_checkbox__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/ui/checkbox */ \"(app-pages-browser)/./src/components/ui/checkbox.tsx\");\n/* harmony import */ var _components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/ui/dialog */ \"(app-pages-browser)/./src/components/ui/dialog.tsx\");\n/* harmony import */ var _entities_session_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/entities/session/store */ \"(app-pages-browser)/./src/entities/session/store.ts\");\n/* harmony import */ var _barrel_optimize_names_ChevronDown_ChevronUp_Clock_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=ChevronDown,ChevronUp,Clock!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* harmony import */ var _barrel_optimize_names_ChevronDown_ChevronUp_Clock_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=ChevronDown,ChevronUp,Clock!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-up.js\");\n/* harmony import */ var _barrel_optimize_names_ChevronDown_ChevronUp_Clock_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=ChevronDown,ChevronUp,Clock!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-down.js\");\n/* __next_internal_client_entry_do_not_use__ ScheduleModal auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\n\n// Дни недели (русские названия как в become-performer)\nconst daysOfWeek = [\n 'Понедельник',\n 'Вторник',\n 'Среда',\n 'Четверг',\n 'Пятница',\n 'Суббота',\n 'Воскресенье'\n];\n// Генерация интервалов с шагом 30 минут\nconst generateTimeIntervals = ()=>{\n const intervals = [];\n for(let i = 0; i < 24; i++){\n for(let j = 0; j < 60; j += 30){\n const hour = i.toString().padStart(2, '0');\n const minute = j.toString().padStart(2, '0');\n intervals.push(\"\".concat(hour, \":\").concat(minute));\n }\n }\n return intervals;\n};\nconst timeIntervals = generateTimeIntervals();\n// Маппинг русских названий в числовые ключи для бэкенда\nconst RU_TO_KEY = {\n \"Понедельник\": \"1\",\n \"Вторник\": \"2\",\n \"Среда\": \"3\",\n \"Четверг\": \"4\",\n \"Пятница\": \"5\",\n \"Суббота\": \"6\",\n \"Воскресенье\": \"7\"\n};\nfunction ScheduleModal(param) {\n let { open, onOpenChange, initialIsAlwaysReady = false, initialSchedulePerDay = null } = param;\n _s();\n const { updateSchedule, isLoading } = (0,_entities_session_store__WEBPACK_IMPORTED_MODULE_7__.useSessionStore)();\n const [isAlwaysReady, setIsAlwaysReady] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(initialIsAlwaysReady);\n const [scheduleCollapsed, setScheduleCollapsed] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!initialIsAlwaysReady);\n const [schedulePerDay, setSchedulePerDay] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n \"ScheduleModal.useState\": ()=>{\n const result = {};\n daysOfWeek.forEach({\n \"ScheduleModal.useState\": (day)=>{\n result[day] = [];\n }\n }[\"ScheduleModal.useState\"]);\n if (initialSchedulePerDay) {\n Object.entries(initialSchedulePerDay).forEach({\n \"ScheduleModal.useState\": (param)=>{\n let [day, periods] = param;\n if (Array.isArray(periods) && periods.length > 0) {\n const dayName = daysOfWeek[parseInt(day) - 1];\n if (dayName) {\n result[dayName] = periods.map({\n \"ScheduleModal.useState\": (p)=>({\n start: p.start || \"09:00\",\n end: p.end || \"18:00\"\n })\n }[\"ScheduleModal.useState\"]).sort({\n \"ScheduleModal.useState\": (a, b)=>a.start.localeCompare(b.start)\n }[\"ScheduleModal.useState\"]);\n }\n }\n }\n }[\"ScheduleModal.useState\"]);\n }\n return result;\n }\n }[\"ScheduleModal.useState\"]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ScheduleModal.useEffect\": ()=>{\n if (open) {\n setIsAlwaysReady(initialIsAlwaysReady);\n setScheduleCollapsed(!initialIsAlwaysReady);\n const newSchedule = {};\n daysOfWeek.forEach({\n \"ScheduleModal.useEffect\": (day)=>newSchedule[day] = []\n }[\"ScheduleModal.useEffect\"]);\n if (initialSchedulePerDay) {\n Object.entries(initialSchedulePerDay).forEach({\n \"ScheduleModal.useEffect\": (param)=>{\n let [day, periods] = param;\n if (Array.isArray(periods) && periods.length > 0) {\n const dayName = daysOfWeek[parseInt(day) - 1];\n if (dayName) {\n newSchedule[dayName] = periods.map({\n \"ScheduleModal.useEffect\": (p)=>({\n start: p.start || \"09:00\",\n end: p.end || \"18:00\"\n })\n }[\"ScheduleModal.useEffect\"]).sort({\n \"ScheduleModal.useEffect\": (a, b)=>a.start.localeCompare(b.start)\n }[\"ScheduleModal.useEffect\"]);\n }\n }\n }\n }[\"ScheduleModal.useEffect\"]);\n }\n setSchedulePerDay(newSchedule);\n }\n }\n }[\"ScheduleModal.useEffect\"], [\n open,\n initialIsAlwaysReady,\n initialSchedulePerDay\n ]);\n const toggleDay = (day)=>{\n if (isAlwaysReady) {\n setIsAlwaysReady(false);\n }\n const currentSchedule = {\n ...schedulePerDay\n };\n const hasPeriods = currentSchedule[day].length > 0;\n if (hasPeriods) {\n currentSchedule[day] = [];\n } else {\n currentSchedule[day] = [\n {\n start: '09:00',\n end: '18:00'\n }\n ];\n }\n setSchedulePerDay(currentSchedule);\n };\n const addPeriod = (day)=>{\n if (isAlwaysReady) {\n setIsAlwaysReady(false);\n }\n const currentSchedule = {\n ...schedulePerDay\n };\n currentSchedule[day] = [\n ...currentSchedule[day] || [],\n {\n start: '00:00',\n end: '00:00'\n }\n ];\n setSchedulePerDay(currentSchedule);\n };\n const removePeriod = (day, index)=>{\n const currentSchedule = {\n ...schedulePerDay\n };\n const newPeriods = currentSchedule[day].filter((_, i)=>i !== index);\n currentSchedule[day] = newPeriods;\n setSchedulePerDay(currentSchedule);\n };\n const updatePeriod = (day, index, field, value)=>{\n if (isAlwaysReady) {\n setIsAlwaysReady(false);\n }\n const currentSchedule = {\n ...schedulePerDay\n };\n currentSchedule[day][index][field] = value;\n setSchedulePerDay(currentSchedule);\n };\n const handleAlwaysReadyChange = (checked)=>{\n setIsAlwaysReady(checked);\n if (checked) {\n const resetSchedule = {};\n daysOfWeek.forEach((day)=>resetSchedule[day] = []);\n setSchedulePerDay(resetSchedule);\n }\n };\n const onSubmit = async ()=>{\n try {\n const scheduleData = {};\n Object.entries(schedulePerDay).forEach((param)=>{\n let [day, periods] = param;\n if (periods.length > 0) {\n const key = RU_TO_KEY[day];\n if (key) {\n scheduleData[key] = [\n ...periods\n ].sort((a, b)=>a.start.localeCompare(b.start));\n }\n }\n });\n await updateSchedule(isAlwaysReady, Object.keys(scheduleData).length > 0 ? scheduleData : undefined);\n sonner__WEBPACK_IMPORTED_MODULE_2__.toast.success(\"Расписание успешно обновлено\");\n onOpenChange(false);\n } catch (error) {\n var _error_response_data, _error_response;\n sonner__WEBPACK_IMPORTED_MODULE_2__.toast.error((error === null || error === void 0 ? void 0 : (_error_response = error.response) === null || _error_response === void 0 ? void 0 : (_error_response_data = _error_response.data) === null || _error_response_data === void 0 ? void 0 : _error_response_data.message) || \"Ошибка при обновлении расписания\");\n }\n };\n const handleClose = ()=>{\n onOpenChange(false);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.Dialog, {\n open: open,\n onOpenChange: handleClose,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogContent, {\n className: \"sm:max-w-[600px] max-h-[90vh] overflow-y-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogHeader, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogTitle, {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ChevronDown_ChevronUp_Clock_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 201,\n columnNumber: 25\n }, this),\n \"Изменить расписание\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 200,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogDescription, {\n children: \"Настройте дни и часы работы\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 204,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 199,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start space-x-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_checkbox__WEBPACK_IMPORTED_MODULE_5__.Checkbox, {\n id: \"always-ready-edit\",\n checked: isAlwaysReady,\n onCheckedChange: handleAlwaysReadyChange\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 211,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_label__WEBPACK_IMPORTED_MODULE_4__.Label, {\n htmlFor: \"always-ready-edit\",\n className: \"cursor-pointer\",\n children: \"Всегда готов к заказам\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 217,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-muted-foreground\",\n children: \"Если включено, клиенты будут видеть вас доступным в любое время\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 220,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 216,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 210,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n type: \"button\",\n variant: \"outline\",\n className: \"w-full justify-between\",\n onClick: ()=>setScheduleCollapsed(!scheduleCollapsed),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ChevronDown_ChevronUp_Clock_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 234,\n columnNumber: 33\n }, this),\n \"Настроить расписание\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 233,\n columnNumber: 29\n }, this),\n scheduleCollapsed ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ChevronDown_ChevronUp_Clock_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 237,\n columnNumber: 50\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_ChevronDown_ChevronUp_Clock_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 237,\n columnNumber: 86\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 227,\n columnNumber: 25\n }, this),\n scheduleCollapsed && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2 mt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-muted-foreground pb-2\",\n children: \"Отметьте рабочие дни и укажите часы приема.\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 242,\n columnNumber: 33\n }, this),\n daysOfWeek.map((day)=>{\n var _schedulePerDay_day, _schedulePerDay_day1;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col sm:flex-row sm:items-start gap-2 border-b last:border-0 pb-3 last:pb-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3 w-40 pt-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_checkbox__WEBPACK_IMPORTED_MODULE_5__.Checkbox, {\n id: \"edit-\".concat(day),\n checked: ((_schedulePerDay_day = schedulePerDay[day]) === null || _schedulePerDay_day === void 0 ? void 0 : _schedulePerDay_day.length) > 0,\n onCheckedChange: ()=>toggleDay(day)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 248,\n columnNumber: 45\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"edit-\".concat(day),\n className: \"font-medium cursor-pointer text-sm\",\n children: day\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 253,\n columnNumber: 45\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 247,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 space-y-2\",\n children: ((_schedulePerDay_day1 = schedulePerDay[day]) === null || _schedulePerDay_day1 === void 0 ? void 0 : _schedulePerDay_day1.length) > 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n schedulePerDay[day].map((period, index)=>{\n const otherPeriods = schedulePerDay[day].filter((_, i)=>i !== index);\n // Доступное начало - время не должно попадать ни в один из существующих интервалов\n const availableStartIntervals = timeIntervals.filter((t)=>{\n return !otherPeriods.some((p)=>t >= p.start && t < p.end);\n });\n // Поиск ближайшего ограничения для конца периода (начало следующего периода)\n let nextLimit = \"24:00\";\n otherPeriods.forEach((p)=>{\n if (p.start > period.start && p.start < nextLimit) {\n nextLimit = p.start;\n }\n });\n // Время окончания - строго больше начала, <= 24:00 и <= nextLimit\n const availableEndIntervals = [\n ...timeIntervals,\n \"24:00\"\n ].filter((t)=>{\n return t > period.start && t <= nextLimit;\n });\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n className: \"flex h-8 w-24 rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n value: period.start,\n onChange: (e)=>updatePeriod(day, index, 'start', e.target.value),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"\",\n disabled: true,\n children: \"Начало\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 289,\n columnNumber: 73\n }, this),\n availableStartIntervals.map((time)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: time,\n children: time\n }, \"start-\".concat(time), false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 291,\n columnNumber: 77\n }, this))\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 284,\n columnNumber: 69\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground\",\n children: \"—\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 294,\n columnNumber: 69\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n className: \"flex h-8 w-24 rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n value: period.end,\n onChange: (e)=>updatePeriod(day, index, 'end', e.target.value),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"\",\n disabled: true,\n children: \"Конец\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 300,\n columnNumber: 73\n }, this),\n availableEndIntervals.map((time)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: time,\n children: time\n }, \"end-\".concat(time), false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 302,\n columnNumber: 77\n }, this))\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 295,\n columnNumber: 69\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n type: \"button\",\n variant: \"ghost\",\n size: \"sm\",\n className: \"h-8 px-2 text-red-500 hover:text-red-700\",\n onClick: ()=>removePeriod(day, index),\n children: \"✕\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 305,\n columnNumber: 69\n }, this)\n ]\n }, index, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 283,\n columnNumber: 65\n }, this);\n }),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n type: \"button\",\n variant: \"ghost\",\n size: \"sm\",\n className: \"h-8 px-2 text-blue-600 hover:text-blue-700\",\n onClick: ()=>addPeriod(day),\n children: \"+ Интервал\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 317,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-8 flex items-center text-sm text-muted-foreground pt-1\",\n children: \"Выходной\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 328,\n columnNumber: 49\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 257,\n columnNumber: 41\n }, this)\n ]\n }, day, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 246,\n columnNumber: 37\n }, this);\n })\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 241,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 226,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 209,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_dialog__WEBPACK_IMPORTED_MODULE_6__.DialogFooter, {\n className: \"gap-2 sm:gap-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n type: \"button\",\n variant: \"outline\",\n onClick: handleClose,\n children: \"Отмена\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 341,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_button__WEBPACK_IMPORTED_MODULE_3__.Button, {\n onClick: onSubmit,\n disabled: isLoading,\n children: isLoading ? \"Сохранение...\" : \"Сохранить\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 344,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 340,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 198,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-modal.tsx\",\n lineNumber: 197,\n columnNumber: 9\n }, this);\n}\n_s(ScheduleModal, \"vJoKwXsXVTJeAHQkcs3s5XdXPx8=\", false, function() {\n return [\n _entities_session_store__WEBPACK_IMPORTED_MODULE_7__.useSessionStore\n ];\n});\n_c = ScheduleModal;\nvar _c;\n$RefreshReg$(_c, \"ScheduleModal\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL3NjaGVkdWxlLW1vZGFsLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMkM7QUFDYjtBQUNpQjtBQUNGO0FBQ007QUFRcEI7QUFDMkI7QUFDRTtBQVM1RCx1REFBdUQ7QUFDdkQsTUFBTWdCLGFBQWE7SUFDZjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNIO0FBRUQsd0NBQXdDO0FBQ3hDLE1BQU1DLHdCQUF3QjtJQUMxQixNQUFNQyxZQUFZLEVBQUU7SUFDcEIsSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUksSUFBSUEsSUFBSztRQUN6QixJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSSxJQUFJQSxLQUFLLEdBQUk7WUFDN0IsTUFBTUMsT0FBT0YsRUFBRUcsUUFBUSxHQUFHQyxRQUFRLENBQUMsR0FBRztZQUN0QyxNQUFNQyxTQUFTSixFQUFFRSxRQUFRLEdBQUdDLFFBQVEsQ0FBQyxHQUFHO1lBQ3hDTCxVQUFVTyxJQUFJLENBQUMsR0FBV0QsT0FBUkgsTUFBSyxLQUFVLE9BQVBHO1FBQzlCO0lBQ0o7SUFDQSxPQUFPTjtBQUNYO0FBRUEsTUFBTVEsZ0JBQWdCVDtBQUV0Qix3REFBd0Q7QUFDeEQsTUFBTVUsWUFBb0M7SUFDdEMsZUFBZTtJQUNmLFdBQVc7SUFDWCxTQUFTO0lBQ1QsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsZUFBZTtBQUNuQjtBQUVPLFNBQVNDLGNBQWMsS0FLVDtRQUxTLEVBQzFCQyxJQUFJLEVBQ0pDLFlBQVksRUFDWkMsdUJBQXVCLEtBQUssRUFDNUJDLHdCQUF3QixJQUFJLEVBQ1gsR0FMUzs7SUFNMUIsTUFBTSxFQUFFQyxjQUFjLEVBQUVDLFNBQVMsRUFBRSxHQUFHdEIsd0VBQWVBO0lBRXJELE1BQU0sQ0FBQ3VCLGVBQWVDLGlCQUFpQixHQUFHcEMsK0NBQVFBLENBQUMrQjtJQUNuRCxNQUFNLENBQUNNLG1CQUFt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QUFDQyxJQUFNcEMsYUFBYTNCLEtBQUt1QixPQUFPLE9BQU93QyxFQUFFQyxNQUFNLENBQUNuQyxLQUFLOztrR0FFL0QsOERBQUNvQzt3RkFBT3BDLE9BQU07d0ZBQUdxQyxRQUFRO2tHQUFDOzs7Ozs7b0ZBQ3pCTixzQkFBc0JuRCxHQUFHLENBQUMwRCxDQUFBQSxxQkFDdkIsOERBQUNGOzRGQUEyQnBDLE9BQU9zQztzR0FBT0E7MkZBQTdCLE9BQVksT0FBTEE7Ozs7Ozs7Ozs7OzBGQUc1Qiw4REFBQzNHLHlEQUFNQTtnRkFDSHlGLE1BQUs7Z0ZBQ0xDLFNBQVE7Z0ZBQ1JrQixNQUFLO2dGQUNMeEIsV0FBVTtnRkFDVk8sU0FBUyxJQUFNN0IsYUFBYXRCLEtBQUt1QjswRkFDcEM7Ozs7Ozs7dUVBNUJLQTs7Ozs7Z0VBaUNsQjs4RUFDSiw4REFBQy9ELHlEQUFNQTtvRUFDSHlGLE1BQUs7b0VBQ0xDLFNBQVE7b0VBQ1JrQixNQUFLO29FQUNMeEIsV0FBVTtvRUFDVk8sU0FBUyxJQUFNOUIsVUFBVXJCOzhFQUM1Qjs7Ozs7Ozt5RkFLTCw4REFBQzZDOzREQUFJRCxXQUFVO3NFQUEyRDs7Ozs7Ozs7Ozs7OytDQWxGNUU1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCQThGOUIsOERBQUNsQywrREFBWUE7b0JBQUM4RSxXQUFVOztzQ0FDcEIsOERBQUNwRix5REFBTUE7NEJBQUN5RixNQUFLOzRCQUFTQyxTQUFROzRCQUFVQyxTQUFTUjtzQ0FBYTs7Ozs7O3NDQUc5RCw4REFBQ25GLHlEQUFNQTs0QkFBQzJGLFNBQVNsQjs0QkFBVWlDLFVBQVUzRTtzQ0FDaENBLFlBQVksa0JBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU12RDtHQWhTZ0JOOztRQU0wQmhCLG9FQUFlQTs7O0tBTnpDZ0IiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXHVpXFxzY2hlZHVsZS1tb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvYnV0dG9uXCJcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9sYWJlbFwiXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIlxuaW1wb3J0IHtcbiAgICBEaWFsb2csXG4gICAgRGlhbG9nQ29udGVudCxcbiAgICBEaWFsb2dEZXNjcmlwdGlvbixcbiAgICBEaWFsb2dGb290ZXIsXG4gICAgRGlhbG9nSGVhZGVyLFxuICAgIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvZGlhbG9nXCJcbmltcG9ydCB7IHVzZVNlc3Npb25TdG9yZSB9IGZyb20gXCJAL2VudGl0aWVzL3Nlc3Npb24vc3RvcmVcIlxuaW1wb3J0IHsgQ2xvY2ssIENoZXZyb25Eb3duLCBDaGV2cm9uVXAgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcblxuaW50ZXJmYWNlIFNjaGVkdWxlTW9kYWxQcm9wcyB7XG4gICAgb3BlbjogYm9vbGVhblxuICAgIG9uT3BlbkNoYW5nZTogKG9wZW46IGJvb2xlYW4pID0+IHZvaWRcbiAgICBpbml0aWFsSXNBbHdheXNSZWFkeT86IGJvb2xlYW5cbiAgICBpbml0aWFsU2NoZWR1bGVQZXJEYXk/OiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7IHN0YXJ0Pzogc3RyaW5nOyBlbmQ/OiBzdHJpbmcgfT4+IHwgbnVsbFxufVxuXG4vLyDQlNC90Lgg0L3QtdC00LXQu9C4ICjRgNGD0YHRgdC60LjQtSDQvdCw0LfQstCw0L3QuNGPINC60LDQuiDQsiBiZWNvbWUtcGVyZm9ybWVyKVxuY29uc3QgZGF5c09mV2VlayA9IFtcbiAgICAn0J/QvtC90LXQtNC10LvRjNC90LjQuicsXG4gICAgJ9CS0YLQvtGA0L3QuNC6JyxcbiAgICAn0KHRgNC10LTQsCcsXG4gICAgJ9Cn0LXRgtCy0LXRgNCzJyxcbiAgICAn0J/Rj9GC0L3QuNGG0LAnLFxuICAgICfQodGD0LHQsdC+0YLQsCcsXG4gICAgJ9CS0L7RgdC60YDQtdGB0LXQvdGM0LUnLFxuXVxuXG4vLyDQk9C10L3QtdGA0LDRhtC40Y8g0LjQvdGC0LXRgNCy0LDQu9C+0LIg0YEg0YjQsNCz0L7QvCAzMCDQvNC40L3Rg9GCXG5jb25zdCBnZW5lcmF0ZVRpbWVJbnRlcnZhbHMgPSAoKSA9PiB7XG4gICAgY29uc3QgaW50ZXJ2YWxzID0gW11cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDI0OyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCA2MDsgaiArPSAzMCkge1xuICAgICAgICAgICAgY29uc3QgaG91ciA9IGkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpXG4gICAgICAgICAgICBjb25zdCBtaW51dGUgPSBqLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKVxuICAgICAgICAgICAgaW50ZXJ2YWxzLnB1c2goYCR7aG91cn06JHttaW51dGV9YClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW50ZXJ2YWxzXG59XG5cbmNvbnN0IHRpbWVJbnRlcnZhbHMgPSBnZW5lcmF0ZVRpbWVJbnRlcnZhbHMoKVxuXG4vLyDQnNCw0L/Qv9C40L3QsyDRgNGD0YHRgdC60LjRhSDQvdCw0LfQstCw0L3QuNC5INCyINGH0LjRgdC70L7QstGL0LUg0LrQu9GO0YfQuCDQtNC70Y8g0LHRjdC60LXQvdC00LBcbmNvbnN0IFJVX1RPX0tFWTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBcItCf0L7QvdC10LTQtdC70YzQvdC40LpcIjogXCIxXCIsXG4gICAgXCLQktGC0L7RgNC90LjQulwiOiBcIjJcIixcbiAgICBcItCh0YDQtdC00LBcIjogXCIzXCIsXG4gICAgXCLQp9C10YLQstC10YDQs1wiOiBcIjRcIixcbiAgICBcItCf0Y/RgtC90LjRhtCwXCI6IFwiNVwiLFxuICAgIFwi0KHRg9Cx0LHQvtGC0LBcIjogXCI2XCIsXG4gICAgXCLQktC+0YHQutGA0LXRgdC10L3RjNC1XCI6IFwiN1wiLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gU2NoZWR1bGVNb2RhbCh7XG4gICAgb3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgaW5pdGlhbElzQWx3YXlzUmVhZHkgPSBmYWxzZSxcbiAgICBpbml0aWFsU2NoZWR1bGVQZXJEYXkgPSBudWxsXG59OiBTY2hlZHVsZU1vZGFsUHJvcHMpIHtcbiAgICBjb25zdCB7IHVwZGF0ZVNjaGVkdWxlLCBpc0xvYWRpbmcgfSA9IHVzZVNlc3Npb25TdG9yZSgpXG5cbiAgICBjb25zdCBbaXNBbHdheXNSZWFkeSwgc2V0SXNBbHdheXNSZWFkeV0gPSB1c2VTdGF0ZShpbml0aWFsSXNBbHdheXNSZWFkeSlcbiAgICBjb25zdCBbc2NoZWR1bGVDb2xsYXBzZWQsIHNldFNjaGVkdWxlQ29sbGFwc2VkXSA9IHVzZVN0YXRlKCFpbml0aWFsSXNBbHdheXNSZWFkeSlcblxuICAgIGNvbnN0IFtzY2hlZHVsZVBlckRheSwgc2V0U2NoZWR1bGVQZXJEYXldID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgQXJyYXk8eyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9Pj4+KCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7IHN0YXJ0OiBzdHJpbmc7IGVuZDogc3RyaW5nIH0+PiA9IHt9XG5cbiAgICAgICAgZGF5c09mV2Vlay5mb3JFYWNoKGRheSA9PiB7XG4gICAgICAgICAgICByZXN1bHRbZGF5XSA9IFtdXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGluaXRpYWxTY2hlZHVsZVBlckRheSkge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoaW5pdGlhbFNjaGVkdWxlUGVyRGF5KS5mb3JFYWNoKChbZGF5LCBwZXJpb2RzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBlcmlvZHMpICYmIHBlcmlvZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXlOYW1lID0gZGF5c09mV2Vla1twYXJzZUludChkYXkpIC0gMV1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRheU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtkYXlOYW1lXSA9IHBlcmlvZHMubWFwKHAgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcC5zdGFydCB8fCBcIjA5OjAwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBwLmVuZCB8fCBcIjE4OjAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0LmxvY2FsZUNvbXBhcmUoYi5zdGFydCkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgc2V0SXNBbHdheXNSZWFkeShpbml0aWFsSXNBbHdheXNSZWFkeSlcbiAgICAgICAgICAgIHNldFNjaGVkdWxlQ29sbGFwc2VkKCFpbml0aWFsSXNBbHdheXNSZWFkeSlcblxuICAgICAgICAgICAgY29uc3QgbmV3U2NoZWR1bGU6IFJlY29yZDxzdHJpbmcsIEFycmF5PHsgc3RhcnQ6IHN0cmluZzsgZW5kOiBzdHJpbmcgfT4+ID0ge31cbiAgICAgICAgICAgIGRheXNPZldlZWsuZm9yRWFjaChkYXkgPT4gbmV3U2NoZWR1bGVbZGF5XSA9IFtdKVxuXG4gICAgICAgICAgICBpZiAoaW5pdGlhbFNjaGVkdWxlUGVyRGF5KSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoaW5pdGlhbFNjaGVkdWxlUGVyRGF5KS5mb3JFYWNoKChbZGF5LCBwZXJpb2RzXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwZXJpb2RzKSAmJiBwZXJpb2RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRheU5hbWUgPSBkYXlzT2ZXZWVrW3BhcnNlSW50KGRheSkgLSAxXVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRheU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTY2hlZHVsZVtkYXlOYW1lXSA9IHBlcmlvZHMubWFwKHAgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHAuc3RhcnQgfHwgXCIwOTowMFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHAuZW5kIHx8IFwiMTg6MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0LmxvY2FsZUNvbXBhcmUoYi5zdGFydCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0U2NoZWR1bGVQZXJEYXkobmV3U2NoZWR1bGUpXG4gICAgICAgIH1cbiAgICB9LCBbb3BlbiwgaW5pdGlhbElzQWx3YXlzUmVhZHksIGluaXRpYWxTY2hlZHVsZVBlckRheV0pXG5cbiAgICBjb25zdCB0b2dnbGVEYXkgPSAoZGF5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGlzQWx3YXlzUmVhZHkpIHtcbiAgICAgICAgICAgIHNldElzQWx3YXlzUmVhZHkoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudFNjaGVkdWxlID0geyAuLi5zY2hlZHVsZVBlckRheSB9XG4gICAgICAgIGNvbnN0IGhhc1BlcmlvZHMgPSBjdXJyZW50U2NoZWR1bGVbZGF5XS5sZW5ndGggPiAwXG4gICAgICAgIGlmIChoYXNQZXJpb2RzKSB7XG4gICAgICAgICAgICBjdXJyZW50U2NoZWR1bGVbZGF5XSA9IFtdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50U2NoZWR1bGVbZGF5XSA9IFt7IHN0YXJ0OiAnMDk6MDAnLCBlbmQ6ICcxODowMCcgfV1cbiAgICAgICAgfVxuICAgICAgICBzZXRTY2hlZHVsZVBlckRheShjdXJyZW50U2NoZWR1bGUpXG4gICAgfVxuXG4gICAgY29uc3QgYWRkUGVyaW9kID0gKGRheTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChpc0Fsd2F5c1JlYWR5KSB7XG4gICAgICAgICAgICBzZXRJc0Fsd2F5c1JlYWR5KGZhbHNlKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTY2hlZHVsZSA9IHsgLi4uc2NoZWR1bGVQZXJEYXkgfVxuICAgICAgICBjdXJyZW50U2NoZWR1bGVbZGF5XSA9IFsuLi4oY3VycmVudFNjaGVkdWxlW2RheV0gfHwgW10pLCB7IHN0YXJ0OiAnMDA6MDAnLCBlbmQ6ICcwMDowMCcgfV1cbiAgICAgICAgc2V0U2NoZWR1bGVQZXJEYXkoY3VycmVudFNjaGVkdWxlKVxuICAgIH1cblxuICAgIGNvbnN0IHJlbW92ZVBlcmlvZCA9IChkYXk6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50U2NoZWR1bGUgPSB7IC4uLnNjaGVkdWxlUGVyRGF5IH1cbiAgICAgICAgY29uc3QgbmV3UGVyaW9kcyA9IGN1cnJlbnRTY2hlZHVsZVtkYXldLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpXG4gICAgICAgIGN1cnJlbnRTY2hlZHVsZVtkYXldID0gbmV3UGVyaW9kc1xuICAgICAgICBzZXRTY2hlZHVsZVBlckRheShjdXJyZW50U2NoZWR1bGUpXG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlUGVyaW9kID0gKGRheTogc3RyaW5nLCBpbmRleDogbnVtYmVyLCBmaWVsZDogJ3N0YXJ0JyB8ICdlbmQnLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChpc0Fsd2F5c1JlYWR5KSB7XG4gICAgICAgICAgICBzZXRJc0Fsd2F5c1JlYWR5KGZhbHNlKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTY2hlZHVsZSA9IHsgLi4uc2NoZWR1bGVQZXJEYXkgfVxuICAgICAgICBjdXJyZW50U2NoZWR1bGVbZGF5XVtpbmRleF1bZmllbGRdID0gdmFsdWVcbiAgICAgICAgc2V0U2NoZWR1bGVQZXJEYXkoY3VycmVudFNjaGVkdWxlKVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUFsd2F5c1JlYWR5Q2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgc2V0SXNBbHdheXNSZWFkeShjaGVja2VkKVxuICAgICAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzZXRTY2hlZHVsZTogUmVjb3JkPHN0cmluZywgQXJyYXk8eyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9Pj4gPSB7fVxuICAgICAgICAgICAgZGF5c09mV2Vlay5mb3JFYWNoKGRheSA9PiByZXNldFNjaGVkdWxlW2RheV0gPSBbXSlcbiAgICAgICAgICAgIHNldFNjaGVkdWxlUGVyRGF5KHJlc2V0U2NoZWR1bGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvblN1Ym1pdCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNjaGVkdWxlRGF0YTogUmVjb3JkPHN0cmluZywgQXJyYXk8eyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9Pj4gPSB7fVxuXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhzY2hlZHVsZVBlckRheSkuZm9yRWFjaCgoW2RheSwgcGVyaW9kc10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGVyaW9kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IFJVX1RPX0tFWVtkYXldXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlRGF0YVtrZXldID0gWy4uLnBlcmlvZHNdLnNvcnQoKGEsIGIpID0+IGEuc3RhcnQubG9jYWxlQ29tcGFyZShiLnN0YXJ0KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGF3YWl0IHVwZGF0ZVNjaGVkdWxlKGlzQWx3YXlzUmVhZHksIE9iamVjdC5rZXlzKHNjaGVkdWxlRGF0YSkubGVuZ3RoID4gMCA/IHNjaGVkdWxlRGF0YSA6IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCLQoNCw0YHQv9C40YHQsNC90LjQtSDRg9GB0L/QtdGI0L3QviDQvtCx0L3QvtCy0LvQtdC90L5cIilcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoZXJyb3I/LnJlc3BvbnNlPy5kYXRhPy5tZXNzYWdlIHx8IFwi0J7RiNC40LHQutCwINC/0YDQuCDQvtCx0L3QvtCy0LvQtdC90LjQuCDRgNCw0YHQv9C40YHQsNC90LjRj1wiKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIG9uT3BlbkNoYW5nZShmYWxzZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8RGlhbG9nIG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17aGFuZGxlQ2xvc2V9PlxuICAgICAgICAgICAgPERpYWxvZ0NvbnRlbnQgY2xhc3NOYW1lPVwic206bWF4LXctWzYwMHB4XSBtYXgtaC1bOTB2aF0gb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgICAgICAgICAgPERpYWxvZ0hlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPERpYWxvZ1RpdGxlIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2xvY2sgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICDQmNC30LzQtdC90LjRgtGMINGA0LDRgdC/0LjRgdCw0L3QuNC1XG4gICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxEaWFsb2dEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgINCd0LDRgdGC0YDQvtC50YLQtSDQtNC90Lgg0Lgg0YfQsNGB0Ysg0YDQsNCx0L7RgtGLXG4gICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nRGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dIZWFkZXI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQgc3BhY2UteC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFsd2F5cy1yZWFkeS1lZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtpc0Fsd2F5c1JlYWR5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlQWx3YXlzUmVhZHlDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFiZWwgaHRtbEZvcj1cImFsd2F5cy1yZWFkeS1lZGl0XCIgY2xhc3NOYW1lPVwiY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0JLRgdC10LPQtNCwINCz0L7RgtC+0LIg0Log0LfQsNC60LDQt9Cw0LxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCV0YHQu9C4INCy0LrQu9GO0YfQtdC90L4sINC60LvQuNC10L3RgtGLINCx0YPQtNGD0YIg0LLQuNC00LXRgtGMINCy0LDRgSDQtNC+0YHRgtGD0L/QvdGL0Lwg0LIg0LvRjtCx0L7QtSDQstGA0LXQvNGPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBqdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNjaGVkdWxlQ29sbGFwc2VkKCFzY2hlZHVsZUNvbGxhcHNlZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENsb2NrIGNsYXNzTmFtZT1cInctNCBoLTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQndCw0YHRgtGA0L7QuNGC0Ywg0YDQsNGB0L/QuNGB0LDQvdC40LVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3NjaGVkdWxlQ29sbGFwc2VkID8gPENoZXZyb25VcCBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz4gOiA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzY2hlZHVsZUNvbGxhcHNlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTIgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQntGC0LzQtdGC0YzRgtC1INGA0LDQsdC+0YfQuNC1INC00L3QuCDQuCDRg9C60LDQttC40YLQtSDRh9Cw0YHRiyDQv9GA0LjQtdC80LAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RheXNPZldlZWsubWFwKChkYXkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtkYXl9IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgc206aXRlbXMtc3RhcnQgZ2FwLTIgYm9yZGVyLWIgbGFzdDpib3JkZXItMCBwYi0zIGxhc3Q6cGItMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgdy00MCBwdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2BlZGl0LSR7ZGF5fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzY2hlZHVsZVBlckRheVtkYXldPy5sZW5ndGggPiAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXsoKSA9PiB0b2dnbGVEYXkoZGF5KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGh0bWxGb3I9e2BlZGl0LSR7ZGF5fWB9IGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIGN1cnNvci1wb2ludGVyIHRleHQtc21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkYXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgc3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzY2hlZHVsZVBlckRheVtkYXldPy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2NoZWR1bGVQZXJEYXlbZGF5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChwZXJpb2QsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdGhlclBlcmlvZHMgPSBzY2hlZHVsZVBlckRheVtkYXldLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQlNC+0YHRgtGD0L/QvdC+0LUg0L3QsNGH0LDQu9C+IC0g0LLRgNC10LzRjyDQvdC1INC00L7Qu9C20L3QviDQv9C+0L/QsNC00LDRgtGMINC90Lgg0LIg0L7QtNC40L0g0LjQtyDRgdGD0YnQtdGB0YLQstGD0Y7RidC40YUg0LjQvdGC0LXRgNCy0LDQu9C+0LJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZVN0YXJ0SW50ZXJ2YWxzID0gdGltZUludGVydmFscy5maWx0ZXIodCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFvdGhlclBlcmlvZHMuc29tZShwID0+IHQgPj0gcC5zdGFydCAmJiB0IDwgcC5lbmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vINCf0L7QuNGB0Log0LHQu9C40LbQsNC50YjQtdCz0L4g0L7Qs9GA0LDQvdC40YfQtdC90LjRjyDQtNC70Y8g0LrQvtC90YbQsCDQv9C10YDQuNC+0LTQsCAo0L3QsNGH0LDQu9C+INGB0LvQtdC00YPRjtGJ0LXQs9C+INC/0LXRgNC40L7QtNCwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRMaW1pdCA9IFwiMjQ6MDBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyUGVyaW9kcy5mb3JFYWNoKHAgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLnN0YXJ0ID4gcGVyaW9kLnN0YXJ0ICYmIHAuc3RhcnQgPCBuZXh0TGltaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dExpbWl0ID0gcC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0JLRgNC10LzRjyDQvtC60L7QvdGH0LDQvdC40Y8gLSDRgdGC0YDQvtCz0L4g0LHQvtC70YzRiNC1INC90LDRh9Cw0LvQsCwgPD0gMjQ6MDAg0LggPD0gbmV4dExpbWl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdmFpbGFibGVFbmRJbnRlcnZhbHMgPSBbLi4udGltZUludGVydmFscywgXCIyNDowMFwiXS5maWx0ZXIodCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPiBwZXJpb2Quc3RhcnQgJiYgdCA8PSBuZXh0TGltaXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaC04IHctMjQgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcHgtMiBweS0xIHRleHQtc20gcmluZy1vZmZzZXQtYmFja2dyb3VuZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwZXJpb2Quc3RhcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHVwZGF0ZVBlcmlvZChkYXksIGluZGV4LCAnc3RhcnQnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD7QndCw0YfQsNC70L48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthdmFpbGFibGVTdGFydEludGVydmFscy5tYXAodGltZSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e2BzdGFydC0ke3RpbWV9YH0gdmFsdWU9e3RpbWV9Pnt0aW1lfTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkLWZvcmVncm91bmRcIj7igJQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaC04IHctMjQgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcHgtMiBweS0xIHRleHQtc20gcmluZy1vZmZzZXQtYmFja2dyb3VuZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwZXJpb2QuZW5kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB1cGRhdGVQZXJpb2QoZGF5LCBpbmRleCwgJ2VuZCcsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkPtCa0L7QvdC10YY8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthdmFpbGFibGVFbmRJbnRlcnZhbHMubWFwKHRpbWUgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtgZW5kLSR7dGltZX1gfSB2YWx1ZT17dGltZX0+e3RpbWV9PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTggcHgtMiB0ZXh0LXJlZC01MDAgaG92ZXI6dGV4dC1yZWQtNzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHJlbW92ZVBlcmlvZChkYXksIGluZGV4KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pyVXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC04IHB4LTIgdGV4dC1ibHVlLTYwMCBob3Zlcjp0ZXh0LWJsdWUtNzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gYWRkUGVyaW9kKGRheSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArINCY0L3RgtC10YDQstCw0LtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLTggZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgcHQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCS0YvRhdC+0LTQvdC+0LlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8RGlhbG9nRm9vdGVyIGNsYXNzTmFtZT1cImdhcC0yIHNtOmdhcC0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cImJ1dHRvblwiIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17aGFuZGxlQ2xvc2V9PlxuICAgICAgICAgICAgICAgICAgICAgICAg0J7RgtC80LXQvdCwXG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uU3VibWl0fSBkaXNhYmxlZD17aXNMb2FkaW5nfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmcgPyBcItCh0L7RhdGA0LDQvdC10L3QuNC1Li4uXCIgOiBcItCh0L7RhdGA0LDQvdC40YLRjFwifVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0RpYWxvZ0Zvb3Rlcj5cbiAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgICAgPC9EaWFsb2c+XG4gICAgKVxufVxuIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidG9hc3QiLCJCdXR0b24iLCJMYWJlbCIsIkNoZWNrYm94IiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0Rlc2NyaXB0aW9uIiwiRGlhbG9nRm9vdGVyIiwiRGlhbG9nSGVhZGVyIiwiRGlhbG9nVGl0bGUiLCJ1c2VTZXNzaW9uU3RvcmUiLCJDbG9jayIsIkNoZXZyb25Eb3duIiwiQ2hldnJvblVwIiwiZGF5c09mV2VlayIsImdlbmVyYXRlVGltZUludGVydmFscyIsImludGVydmFscyIsImkiLCJqIiwiaG91ciIsInRvU3RyaW5nIiwicGFkU3RhcnQiLCJtaW51dGUiLCJwdXNoIiwidGltZUludGVydmFscyIsIlJVX1RPX0tFWSIsIlNjaGVkdWxlTW9kYWwiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwiaW5pdGlhbElzQWx3YXlzUmVhZHkiLCJpbml0aWFsU2NoZWR1bGVQZXJEYXkiLCJ1cGRhdGVTY2hlZHVsZSIsImlzTG9hZGluZyIsImlzQWx3YXlzUmVhZHkiLCJzZXRJc0Fsd2F5c1JlYWR5Iiwic2NoZWR1bGVDb2xsYXBzZWQiLCJzZXRTY2hlZHVsZUNvbGxhcHNlZCIsInNjaGVkdWxlUGVyRGF5Iiwic2V0U2NoZWR1bGVQZXJEYXkiLCJyZXN1bHQiLCJmb3JFYWNoIiwiZGF5IiwiT2JqZWN0IiwiZW50cmllcyIsInBlcmlvZHMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJkYXlOYW1lIiwicGFyc2VJbnQiLCJtYXAiLCJwIiwic3RhcnQiLCJlbmQiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwibmV3U2NoZWR1bGUiLCJ0b2dnbGVEYXkiLCJjdXJyZW50U2NoZWR1bGUiLCJoYXNQZXJpb2RzIiwiYWRkUGVyaW9kIiwicmVtb3ZlUGVyaW9kIiwiaW5kZXgiLCJuZXdQZXJpb2RzIiwiZmlsdGVyIiwiXyIsInVwZGF0ZVBlcmlvZCIsImZpZWxkIiwidmFsdWUiLCJoYW5kbGVBbHdheXNSZWFkeUNoYW5nZSIsImNoZWNrZWQiLCJyZXNldFNjaGVkdWxlIiwib25TdWJtaXQiLCJzY2hlZHVsZURhdGEiLCJrZXkiLCJrZXlzIiwidW5kZWZpbmVkIiwic3VjY2VzcyIsImVycm9yIiwicmVzcG9uc2UiLCJkYXRhIiwibWVzc2FnZSIsImhhbmRsZUNsb3NlIiwiY2xhc3NOYW1lIiwiZGl2IiwiaWQiLCJvbkNoZWNrZWRDaGFuZ2UiLCJodG1sRm9yIiwidHlwZSIsInZhcmlhbnQiLCJvbkNsaWNrIiwic3BhbiIsImxhYmVsIiwicGVyaW9kIiwib3RoZXJQZXJpb2RzIiwiYXZhaWxhYmxlU3RhcnRJbnRlcnZhbHMiLCJ0Iiwic29tZSIsIm5leHRMaW1pdCIsImF2YWlsYWJsZUVuZEludGVydmFscyIsInNlbGVjdCIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsIm9wdGlvbiIsImRpc2FibGVkIiwidGltZSIsInNpemUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/schedule-modal.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/schedule-viewer.tsx":
|
||
/*!***********************************************!*\
|
||
!*** ./src/components/ui/schedule-viewer.tsx ***!
|
||
\***********************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ScheduleViewer: () => (/* binding */ ScheduleViewer)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var _components_ui_badge__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/components/ui/badge */ \"(app-pages-browser)/./src/components/ui/badge.tsx\");\n/* harmony import */ var _components_ui_card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/ui/card */ \"(app-pages-browser)/./src/components/ui/card.tsx\");\n/* harmony import */ var _barrel_optimize_names_Clock_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Clock!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* __next_internal_client_entry_do_not_use__ ScheduleViewer auto */ \n\n\n\n// Дни недели для отображения (поддержка обоих форматов)\nconst DAYS_OF_WEEK = [\n {\n key: \"1\",\n ruKey: \"Понедельник\",\n label: \"Пн\"\n },\n {\n key: \"2\",\n ruKey: \"Вторник\",\n label: \"Вт\"\n },\n {\n key: \"3\",\n ruKey: \"Среда\",\n label: \"Ср\"\n },\n {\n key: \"4\",\n ruKey: \"Четверг\",\n label: \"Чт\"\n },\n {\n key: \"5\",\n ruKey: \"Пятница\",\n label: \"Пт\"\n },\n {\n key: \"6\",\n ruKey: \"Суббота\",\n label: \"Сб\"\n },\n {\n key: \"7\",\n ruKey: \"Воскресенье\",\n label: \"Вс\"\n }\n];\n// Обратный маппинг: русское название -> числовой ключ\nconst RU_TO_KEY = {\n \"Понедельник\": \"1\",\n \"Вторник\": \"2\",\n \"Среда\": \"3\",\n \"Четверг\": \"4\",\n \"Пятница\": \"5\",\n \"Суббота\": \"6\",\n \"Воскресенье\": \"7\"\n};\nfunction formatTime(time) {\n if (!time) return \"--:--\";\n const parts = time.split(':');\n if (parts.length !== 2) return time;\n const [h, m] = parts;\n const hour = parseInt(h, 10).toString();\n // Оставляем 0:00 как 0:00, для остальных убираем :00 \n if (m === \"00\" && hour === \"0\") return \"0:00\";\n if (m === \"00\") return hour;\n return \"\".concat(hour, \":\").concat(m);\n}\n// Функция для нормализации периода времени\nfunction normalizePeriod(period) {\n return {\n start: period.start || period.Start || period.startTime || period.StartTime,\n end: period.end || period.End || period.endTime || period.EndTime\n };\n}\n// Функция для получения расписания из разных форматов данных\nfunction getSchedulePerDay(workSchedule) {\n if (!workSchedule) return {};\n let rawSchedule = {};\n // Если есть schedulePerDay - используем его\n if (workSchedule.schedulePerDay) {\n rawSchedule = workSchedule.schedulePerDay;\n } else if (workSchedule.workingDays) {\n // Если есть workingDays как строка - пробуем распарсить\n try {\n rawSchedule = JSON.parse(workSchedule.workingDays);\n } catch (e) {\n return {};\n }\n }\n // Нормализуем формат и ключи: поддерживаем {start, end} и {startTime, endTime}\n const result = {};\n for (const [day, periods] of Object.entries(rawSchedule)){\n if (!Array.isArray(periods)) continue;\n // Нормализуем ключ: если это русское название - преобразуем в число\n let normalizedKey = day;\n if (RU_TO_KEY[day]) {\n normalizedKey = RU_TO_KEY[day];\n }\n // Нормализуем периоды и сортируем\n result[normalizedKey] = periods.map((p)=>normalizePeriod(p)).sort((a, b)=>(a.start || \"\").localeCompare(b.start || \"\"));\n }\n return result;\n}\nfunction ScheduleViewer(param) {\n let { workSchedule } = param;\n const schedulePerDay = getSchedulePerDay(workSchedule);\n if (!workSchedule) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardHeader, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardTitle, {\n className: \"text-lg\",\n children: \"Расписание работы\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 115,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 114,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardContent, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-muted-foreground\",\n children: \"Расписание не указано\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 118,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 117,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 113,\n columnNumber: 13\n }, this);\n }\n // Если \"всегда готов\" - показываем бейдж\n if (workSchedule.isAlwaysReady) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardHeader, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardTitle, {\n className: \"text-lg\",\n children: \"Расписание работы\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 129,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 128,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardContent, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_badge__WEBPACK_IMPORTED_MODULE_1__.Badge, {\n variant: \"default\",\n className: \"bg-green-600 hover:bg-green-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Clock_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-4 h-4 mr-1\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 134,\n columnNumber: 29\n }, this),\n \"Всегда на связи\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 133,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground text-sm\",\n children: \"Готов к работе 24/7\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 137,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 132,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 131,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 127,\n columnNumber: 13\n }, this);\n }\n // Проверяем, есть ли хоть какое-то расписание\n const hasAnySchedule = Object.values(schedulePerDay).some((times)=>times && times.length > 0);\n if (!hasAnySchedule) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.Card, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardHeader, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardTitle, {\n className: \"text-lg\",\n children: \"Расписание работы\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 151,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 150,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardContent, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-muted-foreground\",\n children: \"Расписание не указано\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 154,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 153,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this);\n }\n const groups = [];\n let currentGroup = null;\n const getTimeString = (times)=>{\n if (!times || times.length === 0) return \"off\";\n return times.map((t)=>\"\".concat(t.start, \"-\").concat(t.end)).join(',');\n };\n for(let i = 0; i < DAYS_OF_WEEK.length; i++){\n const day = DAYS_OF_WEEK[i];\n const times = schedulePerDay[day.key] || schedulePerDay[day.ruKey] || [];\n const isOff = times.length === 0;\n if (!currentGroup) {\n currentGroup = {\n startDayIdx: i,\n endDayIdx: i,\n times,\n isOff\n };\n groups.push(currentGroup);\n } else {\n const prevTimesString = getTimeString(currentGroup.times);\n const currTimesString = getTimeString(times);\n if (prevTimesString === currTimesString) {\n currentGroup.endDayIdx = i;\n } else {\n currentGroup = {\n startDayIdx: i,\n endDayIdx: i,\n times,\n isOff\n };\n groups.push(currentGroup);\n }\n }\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.Card, {\n className: \"border-0 shadow-none p-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_card__WEBPACK_IMPORTED_MODULE_2__.CardContent, {\n className: \"px-0 pb-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid\",\n children: groups.map((group, idx)=>{\n let dayLabel = \"\";\n if (group.startDayIdx === group.endDayIdx) {\n dayLabel = DAYS_OF_WEEK[group.startDayIdx].ruKey;\n } else {\n dayLabel = \"\".concat(DAYS_OF_WEEK[group.startDayIdx].label, \" — \").concat(DAYS_OF_WEEK[group.endDayIdx].label);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-baseline justify-between py-3 border-b border-border/50 last:border-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-sm\",\n children: dayLabel\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 213,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-1 text-right\",\n children: group.isOff ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground font-medium text-[15px]\",\n children: \"Выходной\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 216,\n columnNumber: 41\n }, this) : group.times.map((time, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[15px] font-medium\",\n children: [\n formatTime(time.start),\n \" — \",\n formatTime(time.end)\n ]\n }, i, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 219,\n columnNumber: 45\n }, this))\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 214,\n columnNumber: 33\n }, this)\n ]\n }, idx, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 209,\n columnNumber: 29\n }, this);\n })\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 199,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 198,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\schedule-viewer.tsx\",\n lineNumber: 197,\n columnNumber: 9\n }, this);\n}\n_c = ScheduleViewer;\nvar _c;\n$RefreshReg$(_c, \"ScheduleViewer\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL3NjaGVkdWxlLXZpZXdlci50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRTZDO0FBQ2tDO0FBQzNDO0FBVXBDLHdEQUF3RDtBQUN4RCxNQUFNTSxlQUFlO0lBQ2pCO1FBQUVDLEtBQUs7UUFBS0MsT0FBTztRQUFlQyxPQUFPO0lBQUs7SUFDOUM7UUFBRUYsS0FBSztRQUFLQyxPQUFPO1FBQVdDLE9BQU87SUFBSztJQUMxQztRQUFFRixLQUFLO1FBQUtDLE9BQU87UUFBU0MsT0FBTztJQUFLO0lBQ3hDO1FBQUVGLEtBQUs7UUFBS0MsT0FBTztRQUFXQyxPQUFPO0lBQUs7SUFDMUM7UUFBRUYsS0FBSztRQUFLQyxPQUFPO1FBQVdDLE9BQU87SUFBSztJQUMxQztRQUFFRixLQUFLO1FBQUtDLE9BQU87UUFBV0MsT0FBTztJQUFLO0lBQzFDO1FBQUVGLEtBQUs7UUFBS0MsT0FBTztRQUFlQyxPQUFPO0lBQUs7Q0FDakQ7QUFFRCxzREFBc0Q7QUFDdEQsTUFBTUMsWUFBb0M7SUFDdEMsZUFBZTtJQUNmLFdBQVc7SUFDWCxTQUFTO0lBQ1QsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsZUFBZTtBQUNuQjtBQUVBLFNBQVNDLFdBQVdDLElBQWE7SUFDN0IsSUFBSSxDQUFDQSxNQUFNLE9BQU87SUFDbEIsTUFBTUMsUUFBUUQsS0FBS0UsS0FBSyxDQUFDO0lBQ3pCLElBQUlELE1BQU1FLE1BQU0sS0FBSyxHQUFHLE9BQU9IO0lBQy9CLE1BQU0sQ0FBQ0ksR0FBR0MsRUFBRSxHQUFHSjtJQUNmLE1BQU1LLE9BQU9DLFNBQVNILEdBQUcsSUFBSUksUUFBUTtJQUVyQyxzREFBc0Q7SUFDdEQsSUFBSUgsTUFBTSxRQUFRQyxTQUFTLEtBQUssT0FBTztJQUN2QyxJQUFJRCxNQUFNLE1BQU0sT0FBT0M7SUFDdkIsT0FBTyxHQUFXRCxPQUFSQyxNQUFLLEtBQUssT0FBRkQ7QUFDdEI7QUFjQSwyQ0FB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QkFDWiw0RUFBQ25ELDREQUFXQTtZQUFDbUQsV0FBVTtzQkFDbkIsNEVBQUNFO2dCQUFJRixXQUFVOzBCQUNWUyxPQUFPaEIsR0FBRyxDQUFDLENBQUM0QixPQUFPQztvQkFDaEIsSUFBSUMsV0FBVztvQkFDZixJQUFJRixNQUFNTCxXQUFXLEtBQUtLLE1BQU1KLFNBQVMsRUFBRTt3QkFDdkNNLFdBQVd0RSxZQUFZLENBQUNvRSxNQUFNTCxXQUFXLENBQUMsQ0FBQzdELEtBQUs7b0JBQ3BELE9BQU87d0JBQ0hvRSxXQUFXLEdBQThDdEUsT0FBM0NBLFlBQVksQ0FBQ29FLE1BQU1MLFdBQVcsQ0FBQyxDQUFDNUQsS0FBSyxFQUFDLE9BQXlDLE9BQXBDSCxZQUFZLENBQUNvRSxNQUFNSixTQUFTLENBQUMsQ0FBQzdELEtBQUs7b0JBQ2hHO29CQUVBLHFCQUNJLDhEQUFDOEM7d0JBRUdGLFdBQVU7OzBDQUVWLDhEQUFDSTtnQ0FBS0osV0FBVTswQ0FBdUJ1Qjs7Ozs7OzBDQUN2Qyw4REFBQ3JCO2dDQUFJRixXQUFVOzBDQUNWcUIsTUFBTU4sS0FBSyxpQkFDUiw4REFBQ1g7b0NBQUtKLFdBQVU7OENBQWdEOzs7OzsyQ0FFaEVxQixNQUFNYixLQUFLLENBQUNmLEdBQUcsQ0FBQyxDQUFDbEMsTUFBTXVELGtCQUNuQiw4REFBQ1Y7d0NBQWFKLFdBQVU7OzRDQUNuQjFDLFdBQVdDLEtBQUtXLEtBQUs7NENBQUU7NENBQUlaLFdBQVdDLEtBQUtlLEdBQUc7O3VDQUR4Q3dDOzs7Ozs7Ozs7Ozt1QkFUbEJROzs7OztnQkFpQmpCOzs7Ozs7Ozs7Ozs7Ozs7O0FBS3BCO0tBNUhnQnZCIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcc3JjXFxjb21wb25lbnRzXFx1aVxcc2NoZWR1bGUtdmlld2VyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2JhZGdlXCJcbmltcG9ydCB7IENhcmQsIENhcmRDb250ZW50LCBDYXJkSGVhZGVyLCBDYXJkVGl0bGUgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2NhcmRcIlxuaW1wb3J0IHsgQ2xvY2sgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcblxuaW50ZXJmYWNlIFNjaGVkdWxlVmlld2VyUHJvcHMge1xuICAgIHdvcmtTY2hlZHVsZT86IHtcbiAgICAgICAgaXNBbHdheXNSZWFkeTogYm9vbGVhblxuICAgICAgICBzY2hlZHVsZVBlckRheT86IFJlY29yZDxzdHJpbmcsIEFycmF5PHsgc3RhcnQ/OiBzdHJpbmc7IGVuZD86IHN0cmluZyB9Pj5cbiAgICAgICAgd29ya2luZ0RheXM/OiBzdHJpbmcgLy8gSlNPTiDRgdGC0YDQvtC60LAg0YEg0YDRg9GB0YHQutC40LzQuCDQvdCw0LfQstCw0L3QuNGP0LzQuCDQtNC90LXQuVxuICAgIH1cbn1cblxuLy8g0JTQvdC4INC90LXQtNC10LvQuCDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyAo0L/QvtC00LTQtdGA0LbQutCwINC+0LHQvtC40YUg0YTQvtGA0LzQsNGC0L7QsilcbmNvbnN0IERBWVNfT0ZfV0VFSyA9IFtcbiAgICB7IGtleTogXCIxXCIsIHJ1S2V5OiBcItCf0L7QvdC10LTQtdC70YzQvdC40LpcIiwgbGFiZWw6IFwi0J/QvVwiIH0sXG4gICAgeyBrZXk6IFwiMlwiLCBydUtleTogXCLQktGC0L7RgNC90LjQulwiLCBsYWJlbDogXCLQktGCXCIgfSxcbiAgICB7IGtleTogXCIzXCIsIHJ1S2V5OiBcItCh0YDQtdC00LBcIiwgbGFiZWw6IFwi0KHRgFwiIH0sXG4gICAgeyBrZXk6IFwiNFwiLCBydUtleTogXCLQp9C10YLQstC10YDQs1wiLCBsYWJlbDogXCLQp9GCXCIgfSxcbiAgICB7IGtleTogXCI1XCIsIHJ1S2V5OiBcItCf0Y/RgtC90LjRhtCwXCIsIGxhYmVsOiBcItCf0YJcIiB9LFxuICAgIHsga2V5OiBcIjZcIiwgcnVLZXk6IFwi0KHRg9Cx0LHQvtGC0LBcIiwgbGFiZWw6IFwi0KHQsVwiIH0sXG4gICAgeyBrZXk6IFwiN1wiLCBydUtleTogXCLQktC+0YHQutGA0LXRgdC10L3RjNC1XCIsIGxhYmVsOiBcItCS0YFcIiB9LFxuXVxuXG4vLyDQntCx0YDQsNGC0L3Ri9C5INC80LDQv9C/0LjQvdCzOiDRgNGD0YHRgdC60L7QtSDQvdCw0LfQstCw0L3QuNC1IC0+INGH0LjRgdC70L7QstC+0Lkg0LrQu9GO0YdcbmNvbnN0IFJVX1RPX0tFWTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBcItCf0L7QvdC10LTQtdC70YzQvdC40LpcIjogXCIxXCIsXG4gICAgXCLQktGC0L7RgNC90LjQulwiOiBcIjJcIixcbiAgICBcItCh0YDQtdC00LBcIjogXCIzXCIsXG4gICAgXCLQp9C10YLQstC10YDQs1wiOiBcIjRcIixcbiAgICBcItCf0Y/RgtC90LjRhtCwXCI6IFwiNVwiLFxuICAgIFwi0KHRg9Cx0LHQvtGC0LBcIjogXCI2XCIsXG4gICAgXCLQktC+0YHQutGA0LXRgdC10L3RjNC1XCI6IFwiN1wiLFxufVxuXG5mdW5jdGlvbiBmb3JtYXRUaW1lKHRpbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGltZSkgcmV0dXJuIFwiLS06LS1cIlxuICAgIGNvbnN0IHBhcnRzID0gdGltZS5zcGxpdCgnOicpXG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikgcmV0dXJuIHRpbWVcbiAgICBjb25zdCBbaCwgbV0gPSBwYXJ0c1xuICAgIGNvbnN0IGhvdXIgPSBwYXJzZUludChoLCAxMCkudG9TdHJpbmcoKVxuXG4gICAgLy8g0J7RgdGC0LDQstC70Y/QtdC8IDA6MDAg0LrQsNC6IDA6MDAsINC00LvRjyDQvtGB0YLQsNC70YzQvdGL0YUg0YPQsdC40YDQsNC10LwgOjAwIFxuICAgIGlmIChtID09PSBcIjAwXCIgJiYgaG91ciA9PT0gXCIwXCIpIHJldHVybiBcIjA6MDBcIlxuICAgIGlmIChtID09PSBcIjAwXCIpIHJldHVybiBob3VyXG4gICAgcmV0dXJuIGAke2hvdXJ9OiR7bX1gXG59XG5cbi8vINCi0LjQvyDQtNC70Y8g0L/QtdGA0LjQvtC00LAg0LLRgNC10LzQtdC90LggKNC/0L7QtNC00LXRgNC20LrQsCDRgNCw0LfQvdGL0YUg0YTQvtGA0LzQsNGC0L7QsilcbmludGVyZmFjZSBUaW1lUGVyaW9kIHtcbiAgICBzdGFydD86IHN0cmluZ1xuICAgIGVuZD86IHN0cmluZ1xuICAgIFN0YXJ0Pzogc3RyaW5nXG4gICAgRW5kPzogc3RyaW5nXG4gICAgc3RhcnRUaW1lPzogc3RyaW5nXG4gICAgZW5kVGltZT86IHN0cmluZ1xuICAgIFN0YXJ0VGltZT86IHN0cmluZ1xuICAgIEVuZFRpbWU/OiBzdHJpbmdcbn1cblxuLy8g0KTRg9C90LrRhtC40Y8g0LTQu9GPINC90L7RgNC80LDQu9C40LfQsNGG0LjQuCDQv9C10YDQuNC+0LTQsCDQstGA0LXQvNC10L3QuFxuZnVuY3Rpb24gbm9ybWFsaXplUGVyaW9kKHBlcmlvZDogVGltZVBlcmlvZCk6IHsgc3RhcnQ/OiBzdHJpbmc7IGVuZD86IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogcGVyaW9kLnN0YXJ0IHx8IHBlcmlvZC5TdGFydCB8fCBwZXJpb2Quc3RhcnRUaW1lIHx8IHBlcmlvZC5TdGFydFRpbWUsXG4gICAgICAgIGVuZDogcGVyaW9kLmVuZCB8fCBwZXJpb2QuRW5kIHx8IHBlcmlvZC5lbmRUaW1lIHx8IHBlcmlvZC5FbmRUaW1lXG4gICAgfVxufVxuXG4vLyDQpNGD0L3QutGG0LjRjyDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINGA0LDRgdC/0LjRgdCw0L3QuNGPINC40Lcg0YDQsNC30L3Ri9GFINGE0L7RgNC80LDRgtC+0LIg0LTQsNC90L3Ri9GFXG5mdW5jdGlvbiBnZXRTY2hlZHVsZVBlckRheSh3b3JrU2NoZWR1bGU6IFNjaGVkdWxlVmlld2VyUHJvcHNbJ3dvcmtTY2hlZHVsZSddKTogUmVjb3JkPHN0cmluZywgQXJyYXk8eyBzdGFydD86IHN0cmluZzsgZW5kPzogc3RyaW5nIH0+PiB7XG4gICAgaWYgKCF3b3JrU2NoZWR1bGUpIHJldHVybiB7fVxuXG4gICAgbGV0IHJhd1NjaGVkdWxlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG5cbiAgICAvLyDQldGB0LvQuCDQtdGB0YLRjCBzY2hlZHVsZVBlckRheSAtINC40YHQv9C+0LvRjNC30YPQtdC8INC10LPQvlxuICAgIGlmICh3b3JrU2NoZWR1bGUuc2NoZWR1bGVQZXJEYXkpIHtcbiAgICAgICAgcmF3U2NoZWR1bGUgPSB3b3JrU2NoZWR1bGUuc2NoZWR1bGVQZXJEYXlcbiAgICB9IGVsc2UgaWYgKHdvcmtTY2hlZHVsZS53b3JraW5nRGF5cykge1xuICAgICAgICAvLyDQldGB0LvQuCDQtdGB0YLRjCB3b3JraW5nRGF5cyDQutCw0Log0YHRgtGA0L7QutCwIC0g0L/RgNC+0LHRg9C10Lwg0YDQsNGB0L/QsNGA0YHQuNGC0YxcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJhd1NjaGVkdWxlID0gSlNPTi5wYXJzZSh3b3JrU2NoZWR1bGUud29ya2luZ0RheXMpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIHt9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDQndC+0YDQvNCw0LvQuNC30YPQtdC8INGE0L7RgNC80LDRgiDQuCDQutC70Y7Rh9C4OiDQv9C+0LTQtNC10YDQttC40LLQsNC10Lwge3N0YXJ0LCBlbmR9INC4IHtzdGFydFRpbWUsIGVuZFRpbWV9XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7IHN0YXJ0Pzogc3RyaW5nOyBlbmQ/OiBzdHJpbmcgfT4+ID0ge31cbiAgICBmb3IgKGNvbnN0IFtkYXksIHBlcmlvZHNdIG9mIE9iamVjdC5lbnRyaWVzKHJhd1NjaGVkdWxlKSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocGVyaW9kcykpIGNvbnRpbnVlXG5cbiAgICAgICAgLy8g0J3QvtGA0LzQsNC70LjQt9GD0LXQvCDQutC70Y7Rhzog0LXRgdC70Lgg0Y3RgtC+INGA0YPRgdGB0LrQvtC1INC90LDQt9Cy0LDQvdC40LUgLSDQv9GA0LXQvtCx0YDQsNC30YPQtdC8INCyINGH0LjRgdC70L5cbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRLZXkgPSBkYXlcbiAgICAgICAgaWYgKFJVX1RPX0tFWVtkYXldKSB7XG4gICAgICAgICAgICBub3JtYWxpemVkS2V5ID0gUlVfVE9fS0VZW2RheV1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vINCd0L7RgNC80LDQu9C40LfRg9C10Lwg0L/QtdGA0LjQvtC00Ysg0Lgg0YHQvtGA0YLQuNGA0YPQtdC8XG4gICAgICAgIHJlc3VsdFtub3JtYWxpemVkS2V5XSA9IHBlcmlvZHNcbiAgICAgICAgICAgIC5tYXAocCA9PiBub3JtYWxpemVQZXJpb2QocCBhcyBUaW1lUGVyaW9kKSlcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiAoYS5zdGFydCB8fCBcIlwiKS5sb2NhbGVDb21wYXJlKGIuc3RhcnQgfHwgXCJcIikpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gU2NoZWR1bGVWaWV3ZXIoeyB3b3JrU2NoZWR1bGUgfTogU2NoZWR1bGVWaWV3ZXJQcm9wcykge1xuICAgIGNvbnN0IHNjaGVkdWxlUGVyRGF5ID0gZ2V0U2NoZWR1bGVQZXJEYXkod29ya1NjaGVkdWxlKVxuXG4gICAgaWYgKCF3b3JrU2NoZWR1bGUpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDYXJkPlxuICAgICAgICAgICAgICAgIDxDYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8Q2FyZFRpdGxlIGNsYXNzTmFtZT1cInRleHQtbGdcIj7QoNCw0YHQv9C40YHQsNC90LjQtSDRgNCw0LHQvtGC0Ys8L0NhcmRUaXRsZT5cbiAgICAgICAgICAgICAgICA8L0NhcmRIZWFkZXI+XG4gICAgICAgICAgICAgICAgPENhcmRDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkLWZvcmVncm91bmRcIj7QoNCw0YHQv9C40YHQsNC90LjQtSDQvdC1INGD0LrQsNC30LDQvdC+PC9wPlxuICAgICAgICAgICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvLyDQldGB0LvQuCBcItCy0YHQtdCz0LTQsCDQs9C+0YLQvtCyXCIgLSDQv9C+0LrQsNC30YvQstCw0LXQvCDQsdC10LnQtNC2XG4gICAgaWYgKHdvcmtTY2hlZHVsZS5pc0Fsd2F5c1JlYWR5KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Q2FyZD5cbiAgICAgICAgICAgICAgICA8Q2FyZEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPENhcmRUaXRsZSBjbGFzc05hbWU9XCJ0ZXh0LWxnXCI+0KDQsNGB0L/QuNGB0LDQvdC40LUg0YDQsNCx0L7RgtGLPC9DYXJkVGl0bGU+XG4gICAgICAgICAgICAgICAgPC9DYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxDYXJkQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHZhcmlhbnQ9XCJkZWZhdWx0XCIgY2xhc3NOYW1lPVwiYmctZ3JlZW4tNjAwIGhvdmVyOmJnLWdyZWVuLTcwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDbG9jayBjbGFzc05hbWU9XCJ3LTQgaC00IG1yLTFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgINCS0YHQtdCz0LTQsCDQvdCwINGB0LLRj9C30LhcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgdGV4dC1zbVwiPtCT0L7RgtC+0LIg0Log0YDQsNCx0L7RgtC1IDI0Lzc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvLyDQn9GA0L7QstC10YDRj9C10LwsINC10YHRgtGMINC70Lgg0YXQvtGC0Ywg0LrQsNC60L7QtS3RgtC+INGA0LDRgdC/0LjRgdCw0L3QuNC1XG4gICAgY29uc3QgaGFzQW55U2NoZWR1bGUgPSBPYmplY3QudmFsdWVzKHNjaGVkdWxlUGVyRGF5KS5zb21lKHRpbWVzID0+IHRpbWVzICYmIHRpbWVzLmxlbmd0aCA+IDApXG5cbiAgICBpZiAoIWhhc0FueVNjaGVkdWxlKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Q2FyZD5cbiAgICAgICAgICAgICAgICA8Q2FyZEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPENhcmRUaXRsZSBjbGFzc05hbWU9XCJ0ZXh0LWxnXCI+0KDQsNGB0L/QuNGB0LDQvdC40LUg0YDQsNCx0L7RgtGLPC9DYXJkVGl0bGU+XG4gICAgICAgICAgICAgICAgPC9DYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxDYXJkQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+0KDQsNGB0L/QuNGB0LDQvdC40LUg0L3QtSDRg9C60LDQt9Cw0L3QvjwvcD5cbiAgICAgICAgICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgICAgICAgPC9DYXJkPlxuICAgICAgICApXG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIFNjaGVkdWxlR3JvdXAge1xuICAgICAgICBzdGFydERheUlkeDogbnVtYmVyO1xuICAgICAgICBlbmREYXlJZHg6IG51bWJlcjtcbiAgICAgICAgdGltZXM6IEFycmF5PHsgc3RhcnQ/OiBzdHJpbmc7IGVuZD86IHN0cmluZyB9PjtcbiAgICAgICAgaXNPZmY6IGJvb2xlYW47XG4gICAgfVxuXG4gICAgY29uc3QgZ3JvdXBzOiBTY2hlZHVsZUdyb3VwW10gPSBbXTtcbiAgICBsZXQgY3VycmVudEdyb3VwOiBTY2hlZHVsZUdyb3VwIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCBnZXRUaW1lU3RyaW5nID0gKHRpbWVzOiBBcnJheTx7IHN0YXJ0Pzogc3RyaW5nOyBlbmQ/OiBzdHJpbmcgfT4pID0+IHtcbiAgICAgICAgaWYgKCF0aW1lcyB8fCB0aW1lcy5sZW5ndGggPT09IDApIHJldHVybiBcIm9mZlwiO1xuICAgICAgICByZXR1cm4gdGltZXMubWFwKHQgPT4gYCR7dC5zdGFydH0tJHt0LmVuZH1gKS5qb2luKCcsJyk7XG4gICAgfTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgREFZU19PRl9XRUVLLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGRheSA9IERBWVNfT0ZfV0VFS1tpXTtcbiAgICAgICAgY29uc3QgdGltZXMgPSBzY2hlZHVsZVBlckRheVtkYXkua2V5XSB8fCBzY2hlZHVsZVBlckRheVtkYXkucnVLZXldIHx8IFtdO1xuICAgICAgICBjb25zdCBpc09mZiA9IHRpbWVzLmxlbmd0aCA9PT0gMDtcblxuICAgICAgICBpZiAoIWN1cnJlbnRHcm91cCkge1xuICAgICAgICAgICAgY3VycmVudEdyb3VwID0geyBzdGFydERheUlkeDogaSwgZW5kRGF5SWR4OiBpLCB0aW1lcywgaXNPZmYgfTtcbiAgICAgICAgICAgIGdyb3Vwcy5wdXNoKGN1cnJlbnRHcm91cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2VGltZXNTdHJpbmcgPSBnZXRUaW1lU3RyaW5nKGN1cnJlbnRHcm91cC50aW1lcyk7XG4gICAgICAgICAgICBjb25zdCBjdXJyVGltZXNTdHJpbmcgPSBnZXRUaW1lU3RyaW5nKHRpbWVzKTtcblxuICAgICAgICAgICAgaWYgKHByZXZUaW1lc1N0cmluZyA9PT0gY3VyclRpbWVzU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEdyb3VwLmVuZERheUlkeCA9IGk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRHcm91cCA9IHsgc3RhcnREYXlJZHg6IGksIGVuZERheUlkeDogaSwgdGltZXMsIGlzT2ZmIH07XG4gICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2goY3VycmVudEdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImJvcmRlci0wIHNoYWRvdy1ub25lIHAtMFwiPlxuICAgICAgICAgICAgPENhcmRDb250ZW50IGNsYXNzTmFtZT1cInB4LTAgcGItMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICB7Z3JvdXBzLm1hcCgoZ3JvdXAsIGlkeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRheUxhYmVsID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cC5zdGFydERheUlkeCA9PT0gZ3JvdXAuZW5kRGF5SWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5TGFiZWwgPSBEQVlTX09GX1dFRUtbZ3JvdXAuc3RhcnREYXlJZHhdLnJ1S2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlMYWJlbCA9IGAke0RBWVNfT0ZfV0VFS1tncm91cC5zdGFydERheUlkeF0ubGFiZWx9IOKAlCAke0RBWVNfT0ZfV0VFS1tncm91cC5lbmREYXlJZHhdLmxhYmVsfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1iYXNlbGluZSBqdXN0aWZ5LWJldHdlZW4gcHktMyBib3JkZXItYiBib3JkZXItYm9yZGVyLzUwIGxhc3Q6Ym9yZGVyLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC1zbVwiPntkYXlMYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMSB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAuaXNPZmYgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvbnQtbWVkaXVtIHRleHQtWzE1cHhdXCI+0JLRi9GF0L7QtNC90L7QuTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAudGltZXMubWFwKCh0aW1lLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17aX0gY2xhc3NOYW1lPVwidGV4dC1bMTVweF0gZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXRUaW1lKHRpbWUuc3RhcnQpfSDigJQge2Zvcm1hdFRpbWUodGltZS5lbmQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICAgIDwvQ2FyZD5cbiAgICApXG59XG4iXSwibmFtZXMiOlsiQmFkZ2UiLCJDYXJkIiwiQ2FyZENvbnRlbnQiLCJDYXJkSGVhZGVyIiwiQ2FyZFRpdGxlIiwiQ2xvY2siLCJEQVlTX09GX1dFRUsiLCJrZXkiLCJydUtleSIsImxhYmVsIiwiUlVfVE9fS0VZIiwiZm9ybWF0VGltZSIsInRpbWUiLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiaCIsIm0iLCJob3VyIiwicGFyc2VJbnQiLCJ0b1N0cmluZyIsIm5vcm1hbGl6ZVBlcmlvZCIsInBlcmlvZCIsInN0YXJ0IiwiU3RhcnQiLCJzdGFydFRpbWUiLCJTdGFydFRpbWUiLCJlbmQiLCJFbmQiLCJlbmRUaW1lIiwiRW5kVGltZSIsImdldFNjaGVkdWxlUGVyRGF5Iiwid29ya1NjaGVkdWxlIiwicmF3U2NoZWR1bGUiLCJzY2hlZHVsZVBlckRheSIsIndvcmtpbmdEYXlzIiwiSlNPTiIsInBhcnNlIiwicmVzdWx0IiwiZGF5IiwicGVyaW9kcyIsIk9iamVjdCIsImVudHJpZXMiLCJBcnJheSIsImlzQXJyYXkiLCJub3JtYWxpemVkS2V5IiwibWFwIiwicCIsInNvcnQiLCJhIiwiYiIsImxvY2FsZUNvbXBhcmUiLCJTY2hlZHVsZVZpZXdlciIsImNsYXNzTmFtZSIsImlzQWx3YXlzUmVhZHkiLCJkaXYiLCJ2YXJpYW50Iiwic3BhbiIsImhhc0FueVNjaGVkdWxlIiwidmFsdWVzIiwic29tZSIsInRpbWVzIiwiZ3JvdXBzIiwiY3VycmVudEdyb3VwIiwiZ2V0VGltZVN0cmluZyIsInQiLCJqb2luIiwiaSIsImlzT2ZmIiwic3RhcnREYXlJZHgiLCJlbmREYXlJZHgiLCJwdXNoIiwicHJldlRpbWVzU3RyaW5nIiwiY3VyclRpbWVzU3RyaW5nIiwiZ3JvdXAiLCJpZHgiLCJkYXlMYWJlbCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/schedule-viewer.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/slider.tsx":
|
||
/*!**************************************!*\
|
||
!*** ./src/components/ui/slider.tsx ***!
|
||
\**************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Slider: () => (/* binding */ Slider)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-slider */ \"(app-pages-browser)/./node_modules/@radix-ui/react-slider/dist/index.mjs\");\n/* harmony import */ var _shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/lib/utils */ \"(app-pages-browser)/./src/shared/lib/utils.ts\");\n/* __next_internal_client_entry_do_not_use__ Slider auto */ \n\n\n\nconst Slider = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(_c = (param, ref)=>{\n let { className, ...props } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_3__.Root, {\n ref: ref,\n className: (0,_shared_lib_utils__WEBPACK_IMPORTED_MODULE_2__.cn)(\"relative flex w-full touch-none select-none items-center\", className),\n ...props,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_3__.Track, {\n className: \"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_3__.Range, {\n className: \"absolute h-full bg-primary\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\slider.tsx\",\n lineNumber: 20,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\slider.tsx\",\n lineNumber: 19,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_3__.Thumb, {\n className: \"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\slider.tsx\",\n lineNumber: 22,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\slider.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, undefined);\n});\n_c1 = Slider;\nSlider.displayName = _radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_3__.Root.displayName;\n\nvar _c, _c1;\n$RefreshReg$(_c, \"Slider$React.forwardRef\");\n$RefreshReg$(_c1, \"Slider\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL3NsaWRlci50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUU4QjtBQUMyQjtBQUNsQjtBQUV2QyxNQUFNRyx1QkFBU0gsNkNBQWdCLE1BRzdCLFFBQTBCSztRQUF6QixFQUFFQyxTQUFTLEVBQUUsR0FBR0MsT0FBTzt5QkFDdEIsOERBQUNOLHdEQUFvQjtRQUNqQkksS0FBS0E7UUFDTEMsV0FBV0oscURBQUVBLENBQ1QsNERBQ0FJO1FBRUgsR0FBR0MsS0FBSzs7MEJBRVQsOERBQUNOLHlEQUFxQjtnQkFBQ0ssV0FBVTswQkFDN0IsNEVBQUNMLHlEQUFxQjtvQkFBQ0ssV0FBVTs7Ozs7Ozs7Ozs7MEJBRXJDLDhEQUFDTCx5REFBcUI7Z0JBQUNLLFdBQVU7Ozs7Ozs7Ozs7Ozs7O0FBR3pDSCxPQUFPUyxXQUFXLEdBQUdYLHdEQUFvQixDQUFDVyxXQUFXO0FBRXBDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcc3JjXFxjb21wb25lbnRzXFx1aVxcc2xpZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIlxyXG5cclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcclxuaW1wb3J0ICogYXMgU2xpZGVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xpZGVyXCJcclxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9zaGFyZWQvbGliL3V0aWxzXCJcclxuXHJcbmNvbnN0IFNsaWRlciA9IFJlYWN0LmZvcndhcmRSZWY8XHJcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTbGlkZXJQcmltaXRpdmUuUm9vdD4sXHJcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNsaWRlclByaW1pdGl2ZS5Sb290PlxyXG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXHJcbiAgICA8U2xpZGVyUHJpbWl0aXZlLlJvb3RcclxuICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICBjbGFzc05hbWU9e2NuKFxyXG4gICAgICAgICAgICBcInJlbGF0aXZlIGZsZXggdy1mdWxsIHRvdWNoLW5vbmUgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyXCIsXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZVxyXG4gICAgICAgICl9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgPlxyXG4gICAgICAgIDxTbGlkZXJQcmltaXRpdmUuVHJhY2sgY2xhc3NOYW1lPVwicmVsYXRpdmUgaC0yIHctZnVsbCBncm93IG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWZ1bGwgYmctc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgIDxTbGlkZXJQcmltaXRpdmUuUmFuZ2UgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaC1mdWxsIGJnLXByaW1hcnlcIiAvPlxyXG4gICAgICAgIDwvU2xpZGVyUHJpbWl0aXZlLlRyYWNrPlxyXG4gICAgICAgIDxTbGlkZXJQcmltaXRpdmUuVGh1bWIgY2xhc3NOYW1lPVwiYmxvY2sgaC01IHctNSByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXByaW1hcnkgYmctYmFja2dyb3VuZCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTBcIiAvPlxyXG4gICAgPC9TbGlkZXJQcmltaXRpdmUuUm9vdD5cclxuKSlcclxuU2xpZGVyLmRpc3BsYXlOYW1lID0gU2xpZGVyUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWVcclxuXHJcbmV4cG9ydCB7IFNsaWRlciB9XHJcbiJdLCJuYW1lcyI6WyJSZWFjdCIsIlNsaWRlclByaW1pdGl2ZSIsImNuIiwiU2xpZGVyIiwiZm9yd2FyZFJlZiIsInJlZiIsImNsYXNzTmFtZSIsInByb3BzIiwiUm9vdCIsIlRyYWNrIiwiUmFuZ2UiLCJUaHVtYiIsImRpc3BsYXlOYW1lIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/slider.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/components/ui/tag-input.tsx":
|
||
/*!*****************************************!*\
|
||
!*** ./src/components/ui/tag-input.tsx ***!
|
||
\*****************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TagInput: () => (/* binding */ TagInput)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_X_lucide_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=X!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/x.js\");\n/* harmony import */ var _components_ui_badge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/ui/badge */ \"(app-pages-browser)/./src/components/ui/badge.tsx\");\n/* harmony import */ var _components_ui_input__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/ui/input */ \"(app-pages-browser)/./src/components/ui/input.tsx\");\n/* harmony import */ var _shared_api_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/shared/api/axios */ \"(app-pages-browser)/./src/shared/api/axios.ts\");\n/* __next_internal_client_entry_do_not_use__ TagInput auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n// Функция для нормализации текста (все строчные)\nfunction normalizeText(text) {\n if (!text) return text;\n return text.trim().toLowerCase();\n}\nfunction TagInput(param) {\n let { value = [], onChange, placeholder = \"Добавить компетенцию...\", maxTags = 50 } = param;\n _s();\n const [inputValue, setInputValue] = react__WEBPACK_IMPORTED_MODULE_1__.useState(\"\");\n const [bestSuggestion, setBestSuggestion] = react__WEBPACK_IMPORTED_MODULE_1__.useState(null);\n // Поиск лучшего совпадения при вводе\n react__WEBPACK_IMPORTED_MODULE_1__.useEffect({\n \"TagInput.useEffect\": ()=>{\n const fetchSuggestion = {\n \"TagInput.useEffect.fetchSuggestion\": async ()=>{\n if (inputValue.length < 2) {\n setBestSuggestion(null);\n return;\n }\n try {\n const response = await _shared_api_axios__WEBPACK_IMPORTED_MODULE_4__.api.get(\"/competencies/search?q=\".concat(encodeURIComponent(inputValue)));\n // Фильтруем уже добавленные компетенции и берем только первое (лучшее) совпадение\n const filteredSuggestions = response.data.filter({\n \"TagInput.useEffect.fetchSuggestion.filteredSuggestions\": (s)=>!value.includes(s)\n }[\"TagInput.useEffect.fetchSuggestion.filteredSuggestions\"]);\n setBestSuggestion(filteredSuggestions.length > 0 ? filteredSuggestions[0] : null);\n } catch (error) {\n console.error(\"Error fetching suggestions:\", error);\n setBestSuggestion(null);\n }\n }\n }[\"TagInput.useEffect.fetchSuggestion\"];\n const debounce = setTimeout(fetchSuggestion, 300);\n return ({\n \"TagInput.useEffect\": ()=>clearTimeout(debounce)\n })[\"TagInput.useEffect\"];\n }\n }[\"TagInput.useEffect\"], [\n inputValue,\n value\n ]);\n const addTag = (tag)=>{\n const normalizedTag = normalizeText(tag);\n if (normalizedTag && !value.includes(normalizedTag) && value.length < maxTags) {\n const newTags = [\n ...value,\n normalizedTag\n ];\n onChange(newTags);\n setInputValue(\"\");\n setBestSuggestion(null);\n }\n };\n const removeTag = (tagToRemove)=>{\n const newTags = value.filter((tag)=>tag !== tagToRemove);\n onChange(newTags);\n };\n const handleKeyDown = (e)=>{\n if (e.key === \"Enter\" && inputValue) {\n e.preventDefault();\n // Enter добавляет то, что ввел пользователь\n addTag(inputValue);\n } else if (e.key === \"Tab\" && bestSuggestion) {\n e.preventDefault();\n // Tab выбирает автодополнение (подсвеченную часть)\n addTag(bestSuggestion);\n } else if (e.key === \"Escape\") {\n setBestSuggestion(null);\n } else if (e.key === \"Backspace\" && !inputValue && value.length > 0) {\n removeTag(value[value.length - 1]);\n }\n };\n const showAutocomplete = bestSuggestion && bestSuggestion.toLowerCase().startsWith(inputValue.toLowerCase());\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2 mb-3\",\n children: value.map((tag)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_badge__WEBPACK_IMPORTED_MODULE_2__.Badge, {\n variant: \"secondary\",\n className: \"gap-1.5 px-3 py-1.5 text-sm bg-blue-50 hover:bg-blue-100 text-blue-900 border-blue-200 dark:bg-blue-950 dark:text-blue-100 dark:border-blue-800 transition-colors\",\n children: [\n tag,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>removeTag(tag),\n className: \"ml-1 hover:bg-blue-200 dark:hover:bg-blue-800 rounded-full p-0.5 transition-colors\",\n \"aria-label\": \"Удалить \".concat(tag),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_X_lucide_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-3.5 w-3.5\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 100,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 94,\n columnNumber: 25\n }, this)\n ]\n }, tag, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 88,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 86,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ui_input__WEBPACK_IMPORTED_MODULE_3__.Input, {\n value: inputValue,\n onChange: (e)=>{\n setInputValue(e.target.value);\n },\n onKeyDown: handleKeyDown,\n onBlur: ()=>setBestSuggestion(null),\n placeholder: value.length >= maxTags ? \"Максимум \".concat(maxTags, \" компетенций\") : placeholder,\n disabled: value.length >= maxTags,\n className: \"text-base pr-0\"\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 107,\n columnNumber: 17\n }, this),\n showAutocomplete && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 left-0 pointer-events-none flex items-center px-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-base\",\n children: [\n inputValue,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted-foreground\",\n children: bestSuggestion.slice(inputValue.length)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 124,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 122,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 121,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 106,\n columnNumber: 13\n }, this),\n value.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-muted-foreground mt-2\",\n children: [\n value.length,\n \" / \",\n maxTags,\n \" компетенций\"\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 133,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"E:\\\\GIT\\\\mvp\\\\nashel-frontend\\\\src\\\\components\\\\ui\\\\tag-input.tsx\",\n lineNumber: 84,\n columnNumber: 9\n }, this);\n}\n_s(TagInput, \"G9ujtmtfA1io+XxN+b2SmAPDRlg=\");\n_c = TagInput;\nvar _c;\n$RefreshReg$(_c, \"TagInput\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL3VpL3RhZy1pbnB1dC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUU4QjtBQUNFO0FBQ2E7QUFDQTtBQUNMO0FBU3hDLGlEQUFpRDtBQUNqRCxTQUFTSyxjQUFjQyxJQUFZO0lBQy9CLElBQUksQ0FBQ0EsTUFBTSxPQUFPQTtJQUNsQixPQUFPQSxLQUFLQyxJQUFJLEdBQUdDLFdBQVc7QUFDbEM7QUFFTyxTQUFTQyxTQUFTLEtBQThGO1FBQTlGLEVBQUVDLFFBQVEsRUFBRSxFQUFFQyxRQUFRLEVBQUVDLGNBQWMseUJBQXlCLEVBQUVDLFVBQVUsRUFBRSxFQUFpQixHQUE5Rjs7SUFDckIsTUFBTSxDQUFDQyxZQUFZQyxjQUFjLEdBQUdmLDJDQUFjLENBQUM7SUFDbkQsTUFBTSxDQUFDaUIsZ0JBQWdCQyxrQkFBa0IsR0FBR2xCLDJDQUFjLENBQWdCO0lBRTFFLHFDQUFxQztJQUNyQ0EsNENBQWU7OEJBQUM7WUFDWixNQUFNb0I7c0RBQWtCO29CQUNwQixJQUFJTixXQUFXTyxNQUFNLEdBQUcsR0FBRzt3QkFDdkJILGtCQUFrQjt3QkFDbEI7b0JBQ0o7b0JBRUEsSUFBSTt3QkFDQSxNQUFNSSxXQUFXLE1BQU1sQixrREFBR0EsQ0FBQ21CLEdBQUcsQ0FBQywwQkFBeUQsT0FBL0JDLG1CQUFtQlY7d0JBQzVFLGtGQUFrRjt3QkFDbEYsTUFBTVcsc0JBQXNCSCxTQUFTSSxJQUFJLENBQUNDLE1BQU07c0ZBQUMsQ0FBQ0MsSUFBYyxDQUFDbEIsTUFBTW1CLFFBQVEsQ0FBQ0Q7O3dCQUNoRlYsa0JBQWtCTyxvQkFBb0JKLE1BQU0sR0FBRyxJQUFJSSxtQkFBbUIsQ0FBQyxFQUFFLEdBQUc7b0JBQ2hGLEVBQUUsT0FBT0ssT0FBTzt3QkFDWkMsUUFBUUQsS0FBSyxDQUFDLCtCQUErQkE7d0JBQzdDWixrQkFBa0I7b0JBQ3RCO2dCQUNKOztZQUVBLE1BQU1jLFdBQVdDLFdBQVdiLGlCQUFpQjtZQUM3QztzQ0FBTyxJQUFNYyxhQUFhRjs7UUFDOUI7NkJBQUc7UUFBQ2xCO1FBQVlKO0tBQU07SUFFdEIsTUFBTXlCLFNBQVMsQ0FBQ0M7UUFDWixNQUFNQyxnQkFBZ0JoQyxjQUFjK0I7UUFFcEMsSUFBSUMsaUJBQWlCLENBQUMzQixNQUFNbUIsUUFBUSxDQUFDUSxrQkFBa0IzQixNQUFNVyxNQUFNLEdBQUdSLFNBQVM7WUFDM0UsTUFBTXlCLFVBQVU7bUJBQUk1QjtnQkFBTzJCO2FBQWM7WUFDekMxQixTQUFTMkI7WUFDVHZCLGNBQWM7WUFDZEcsa0JBQWtCO1FBQ3RCO0lBQ0o7SUFFQSxNQUFNcUIsWUFBWSxDQUFDQztRQUNmLE1BQU1GLFVBQVU1QixNQUFNaUIsTUFBTSxDQUFDUyxDQUFBQSxNQUFPQSxRQUFRSTtRQUM1QzdCLFNBQVMyQjtJQUNiO0lBRUEsTUFBTUcsZ0JBQWdCLENBQUNDO1FBQ25CLElBQUlBLEVBQUVDLEdBQUcsS0FBSyxXQUFXN0IsWUFBWTtZQUNqQzRCLEVBQUVFLGNBQWM7WUFDaEIsNENBQTRDO1lBQzVDVCxPQUFPckI7UUFDWCxPQUFPLElBQUk0QixFQUFFQyxHQUFHLEtBQUssU0FBUzFCLGdCQUFnQjtZQUMxQ3lCLEVBQUVFLGNBQWM7WUFDaEIsbURBQW1EO1lBQ25EVCxPQUFPbEI7UUFDWCxPQUFPLElBQUl5QixFQUFFQyxHQUFHLEtBQUssVUFBVTtZQUMzQnpCLGtCQUFrQjtRQUN0QixPQUFPLElBQUl3QixFQUFFQyxHQUFHLEtBQUssZUFBZSxDQUFDN0IsY0FBY0osTUFBTVcsTUFBTSxHQUFHLEdBQUc7WUFDakVrQixVQUFVN0IsS0FBSyxDQUFDQSxNQUFNVyxNQUFNLEdBQUcsRUFBRTtRQUNyQztJQUNKO0lBRUEsTUFBTXdCLG1CQUFtQjVCLGtCQUFrQkEsZUFBZVQsV0FBVyxHQUFHc0MsVUFBVSxDQUFDaEMsV0FBV04sV0FBVztJQUV6RyxxQkFDSSw4REFBQ3VDO1FBQUlDLFdBQVU7OzBCQUVYLDhEQUFDRDtnQkFBSUMsV0FBVTswQkFDVnRDLE1BQU11QyxHQUFHLENBQUMsQ0FBQ2Isb0JBQ1IsOERBQUNsQyx1REFBS0E7d0JBRUZnRCxTQUFRO3dCQUNSRixXQUFVOzs0QkFFVFo7MENBQ0QsOERBQUNlO2dDQUNHQyxNQUFLO2dDQUNMQyxTQUFTLElBQU1kLFVBQVVIO2dDQUN6QlksV0FBVTtnQ0FDVk0sY0FBWSxXQUFlLE9BQUpsQjswQ0FFdkIsNEVBQUNuQyw2RUFBQ0E7b0NBQUMrQyxXQUFVOzs7Ozs7Ozs7Ozs7dUJBWFpaOzs7Ozs7Ozs7OzBCQWlCakIsOERBQUNXO2dCQUFJQyxXQUFVOztrQ0FDWCw4REFBQzdDLHVEQUFLQTt3QkFDRk8sT0FBT0k7d0JBQ1BILFVBQVUsQ0FBQytCOzRCQUNQM0IsY0FBYzJCLEVBQUVhLE1BQU0sQ0FBQzdDLEtBQUs7d0JBQ2hDO3dCQUNBOEMsV0FBV2Y7d0JBQ1hnQixRQUFRLElBQU12QyxrQkFBa0I7d0JBQ2hDTixhQUFhRixNQUFNVyxNQUFNLElBQUlSLFVBQVUsWUFBb0IsT0FBUkEsU0FBUSxrQkFBZ0JEO3dCQUMzRThDLFVBQVVoRCxNQUFNVyxNQUFNLElBQUlSO3dCQUMxQm1DLFdBQVU7Ozs7OztvQkFJYkgsa0NBQ0csOERBQUNFO3dCQUFJQyxXQUFVO2tDQUNYLDRFQUFDVzs0QkFBS1gsV0FBVTs7Z0NBQ1hsQzs4Q0FDRCw4REFBQzZDO29DQUFLWCxXQUFVOzhDQUNYL0IsZUFBZTJDLEtBQUssQ0FBQzlDLFdBQVdPLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBTzFEWCxNQUFNVyxNQUFNLEdBQUcsbUJBQ1osOERBQUN3QztnQkFBRWIsV0FBVTs7b0JBQ1J0QyxNQUFNVyxNQUFNO29CQUFDO29CQUFJUjtvQkFBUTs7Ozs7Ozs7Ozs7OztBQUs5QztHQXJIZ0JKO0tBQUFBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcc3JjXFxjb21wb25lbnRzXFx1aVxcdGFnLWlucHV0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIlxuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIlxuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2JhZGdlXCJcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9pbnB1dFwiXG5pbXBvcnQgeyBhcGkgfSBmcm9tIFwiQC9zaGFyZWQvYXBpL2F4aW9zXCJcblxuaW50ZXJmYWNlIFRhZ0lucHV0UHJvcHMge1xuICAgIHZhbHVlOiBzdHJpbmdbXVxuICAgIG9uQ2hhbmdlOiAodGFnczogc3RyaW5nW10pID0+IHZvaWRcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICAgIG1heFRhZ3M/OiBudW1iZXJcbn1cblxuLy8g0KTRg9C90LrRhtC40Y8g0LTQu9GPINC90L7RgNC80LDQu9C40LfQsNGG0LjQuCDRgtC10LrRgdGC0LAgKNCy0YHQtSDRgdGC0YDQvtGH0L3Ri9C1KVxuZnVuY3Rpb24gbm9ybWFsaXplVGV4dCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGV4dCkgcmV0dXJuIHRleHRcbiAgICByZXR1cm4gdGV4dC50cmltKCkudG9Mb3dlckNhc2UoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gVGFnSW5wdXQoeyB2YWx1ZSA9IFtdLCBvbkNoYW5nZSwgcGxhY2Vob2xkZXIgPSBcItCU0L7QsdCw0LLQuNGC0Ywg0LrQvtC80L/QtdGC0LXQvdGG0LjRji4uLlwiLCBtYXhUYWdzID0gNTAgfTogVGFnSW5wdXRQcm9wcykge1xuICAgIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpXG4gICAgY29uc3QgW2Jlc3RTdWdnZXN0aW9uLCBzZXRCZXN0U3VnZ2VzdGlvbl0gPSBSZWFjdC51c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gICAgLy8g0J/QvtC40YHQuiDQu9GD0YfRiNC10LPQviDRgdC+0LLQv9Cw0LTQtdC90LjRjyDQv9GA0Lgg0LLQstC+0LTQtVxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZldGNoU3VnZ2VzdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnB1dFZhbHVlLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICBzZXRCZXN0U3VnZ2VzdGlvbihudWxsKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLmdldChgL2NvbXBldGVuY2llcy9zZWFyY2g/cT0ke2VuY29kZVVSSUNvbXBvbmVudChpbnB1dFZhbHVlKX1gKVxuICAgICAgICAgICAgICAgIC8vINCk0LjQu9GM0YLRgNGD0LXQvCDRg9C20LUg0LTQvtCx0LDQstC70LXQvdC90YvQtSDQutC+0LzQv9C10YLQtdC90YbQuNC4INC4INCx0LXRgNC10Lwg0YLQvtC70YzQutC+INC/0LXRgNCy0L7QtSAo0LvRg9GH0YjQtdC1KSDRgdC+0LLQv9Cw0LTQtdC90LjQtVxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkU3VnZ2VzdGlvbnMgPSByZXNwb25zZS5kYXRhLmZpbHRlcigoczogc3RyaW5nKSA9PiAhdmFsdWUuaW5jbHVkZXMocykpXG4gICAgICAgICAgICAgICAgc2V0QmVzdFN1Z2dlc3Rpb24oZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggPiAwID8gZmlsdGVyZWRTdWdnZXN0aW9uc1swXSA6IG51bGwpXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBzdWdnZXN0aW9uczpcIiwgZXJyb3IpXG4gICAgICAgICAgICAgICAgc2V0QmVzdFN1Z2dlc3Rpb24obnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlYm91bmNlID0gc2V0VGltZW91dChmZXRjaFN1Z2dlc3Rpb24sIDMwMClcbiAgICAgICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dChkZWJvdW5jZSlcbiAgICB9LCBbaW5wdXRWYWx1ZSwgdmFsdWVdKVxuXG4gICAgY29uc3QgYWRkVGFnID0gKHRhZzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRUYWcgPSBub3JtYWxpemVUZXh0KHRhZylcblxuICAgICAgICBpZiAobm9ybWFsaXplZFRhZyAmJiAhdmFsdWUuaW5jbHVkZXMobm9ybWFsaXplZFRhZykgJiYgdmFsdWUubGVuZ3RoIDwgbWF4VGFncykge1xuICAgICAgICAgICAgY29uc3QgbmV3VGFncyA9IFsuLi52YWx1ZSwgbm9ybWFsaXplZFRhZ11cbiAgICAgICAgICAgIG9uQ2hhbmdlKG5ld1RhZ3MpXG4gICAgICAgICAgICBzZXRJbnB1dFZhbHVlKFwiXCIpXG4gICAgICAgICAgICBzZXRCZXN0U3VnZ2VzdGlvbihudWxsKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVtb3ZlVGFnID0gKHRhZ1RvUmVtb3ZlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGFncyA9IHZhbHVlLmZpbHRlcih0YWcgPT4gdGFnICE9PSB0YWdUb1JlbW92ZSlcbiAgICAgICAgb25DaGFuZ2UobmV3VGFncylcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIgJiYgaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAvLyBFbnRlciDQtNC+0LHQsNCy0LvRj9C10YIg0YLQviwg0YfRgtC+INCy0LLQtdC7INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjFxuICAgICAgICAgICAgYWRkVGFnKGlucHV0VmFsdWUpXG4gICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09IFwiVGFiXCIgJiYgYmVzdFN1Z2dlc3Rpb24pIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgLy8gVGFiINCy0YvQsdC40YDQsNC10YIg0LDQstGC0L7QtNC+0L/QvtC70L3QtdC90LjQtSAo0L/QvtC00YHQstC10YfQtdC90L3Rg9GOINGH0LDRgdGC0YwpXG4gICAgICAgICAgICBhZGRUYWcoYmVzdFN1Z2dlc3Rpb24pXG4gICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgICAgICAgIHNldEJlc3RTdWdnZXN0aW9uKG51bGwpXG4gICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09IFwiQmFja3NwYWNlXCIgJiYgIWlucHV0VmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVtb3ZlVGFnKHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvd0F1dG9jb21wbGV0ZSA9IGJlc3RTdWdnZXN0aW9uICYmIGJlc3RTdWdnZXN0aW9uLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChpbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCkpXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbFwiPlxuICAgICAgICAgICAgey8qINCe0YLQvtCx0YDQsNC20LXQvdC40LUg0YLQtdCz0L7QsiAtINGB0YLQuNC70Ywg0LrQsNC6INC90LAgaGgucnUgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC13cmFwIGdhcC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICB7dmFsdWUubWFwKCh0YWcpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPEJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3RhZ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ2FwLTEuNSBweC0zIHB5LTEuNSB0ZXh0LXNtIGJnLWJsdWUtNTAgaG92ZXI6YmctYmx1ZS0xMDAgdGV4dC1ibHVlLTkwMCBib3JkZXItYmx1ZS0yMDAgZGFyazpiZy1ibHVlLTk1MCBkYXJrOnRleHQtYmx1ZS0xMDAgZGFyazpib3JkZXItYmx1ZS04MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dGFnfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHJlbW92ZVRhZyh0YWcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1sLTEgaG92ZXI6YmctYmx1ZS0yMDAgZGFyazpob3ZlcjpiZy1ibHVlLTgwMCByb3VuZGVkLWZ1bGwgcC0wLjUgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2DQo9C00LDQu9C40YLRjCAke3RhZ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYIGNsYXNzTmFtZT1cImgtMy41IHctMy41XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRWYWx1ZShlLnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICBvbkJsdXI9eygpID0+IHNldEJlc3RTdWdnZXN0aW9uKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dmFsdWUubGVuZ3RoID49IG1heFRhZ3MgPyBg0JzQsNC60YHQuNC80YPQvCAke21heFRhZ3N9INC60L7QvNC/0LXRgtC10L3RhtC40LlgIDogcGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt2YWx1ZS5sZW5ndGggPj0gbWF4VGFnc31cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1iYXNlIHByLTBcIlxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICB7Lyog0JDQstGC0L7QtNC+0L/QvtC70L3QtdC90LjQtSDQsiDRgdGC0LjQu9C1INCv0L3QtNC10LrRgSAtINGB0LXRgNGL0Lkg0YLQtdC60YHRgiDQv9GA0L7QtNC+0LvQttC10L3QuNGPICovfVxuICAgICAgICAgICAgICAgIHtzaG93QXV0b2NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC15LTAgbGVmdC0wIHBvaW50ZXItZXZlbnRzLW5vbmUgZmxleCBpdGVtcy1jZW50ZXIgcHgtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lucHV0VmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtiZXN0U3VnZ2VzdGlvbi5zbGljZShpbnB1dFZhbHVlLmxlbmd0aCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHt2YWx1ZS5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZS5sZW5ndGh9IC8ge21heFRhZ3N9INC60L7QvNC/0LXRgtC10L3RhtC40LlcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICApXG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJYIiwiQmFkZ2UiLCJJbnB1dCIsImFwaSIsIm5vcm1hbGl6ZVRleHQiLCJ0ZXh0IiwidHJpbSIsInRvTG93ZXJDYXNlIiwiVGFnSW5wdXQiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwicGxhY2Vob2xkZXIiLCJtYXhUYWdzIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJ1c2VTdGF0ZSIsImJlc3RTdWdnZXN0aW9uIiwic2V0QmVzdFN1Z2dlc3Rpb24iLCJ1c2VFZmZlY3QiLCJmZXRjaFN1Z2dlc3Rpb24iLCJsZW5ndGgiLCJyZXNwb25zZSIsImdldCIsImVuY29kZVVSSUNvbXBvbmVudCIsImZpbHRlcmVkU3VnZ2VzdGlvbnMiLCJkYXRhIiwiZmlsdGVyIiwicyIsImluY2x1ZGVzIiwiZXJyb3IiLCJjb25zb2xlIiwiZGVib3VuY2UiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiYWRkVGFnIiwidGFnIiwibm9ybWFsaXplZFRhZyIsIm5ld1RhZ3MiLCJyZW1vdmVUYWciLCJ0YWdUb1JlbW92ZSIsImhhbmRsZUtleURvd24iLCJlIiwia2V5IiwicHJldmVudERlZmF1bHQiLCJzaG93QXV0b2NvbXBsZXRlIiwic3RhcnRzV2l0aCIsImRpdiIsImNsYXNzTmFtZSIsIm1hcCIsInZhcmlhbnQiLCJidXR0b24iLCJ0eXBlIiwib25DbGljayIsImFyaWEtbGFiZWwiLCJ0YXJnZXQiLCJvbktleURvd24iLCJvbkJsdXIiLCJkaXNhYmxlZCIsInNwYW4iLCJzbGljZSIsInAiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/ui/tag-input.tsx\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/entities/session/store.ts":
|
||
/*!***************************************!*\
|
||
!*** ./src/entities/session/store.ts ***!
|
||
\***************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useSessionStore: () => (/* binding */ useSessionStore)\n/* harmony export */ });\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! zustand */ \"(app-pages-browser)/./node_modules/zustand/esm/react.mjs\");\n/* harmony import */ var cookies_next__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cookies-next */ \"(app-pages-browser)/./node_modules/cookies-next/lib/index.js\");\n/* harmony import */ var cookies_next__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cookies_next__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/shared/api/axios */ \"(app-pages-browser)/./src/shared/api/axios.ts\");\n\n\n\nconst useSessionStore = (0,zustand__WEBPACK_IMPORTED_MODULE_2__.create)((set, get)=>({\n user: null,\n isAuth: false,\n isLoading: false,\n isInitialized: false,\n checkAuth: async ()=>{\n const token = (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.getCookie)(\"accessToken\");\n if (!token) {\n set({\n isInitialized: true,\n isAuth: false\n });\n return;\n }\n set({\n isLoading: true\n });\n try {\n await get().getProfile();\n set({\n isAuth: true,\n isInitialized: true\n });\n } catch (error) {\n console.error(\"Auth check failed\", error);\n // Токен недействителен, очищаем состояние\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.deleteCookie)(\"accessToken\");\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.deleteCookie)(\"refreshToken\");\n set({\n user: null,\n isAuth: false,\n isInitialized: true\n });\n } finally{\n set({\n isLoading: false\n });\n }\n },\n login: async (phone, password)=>{\n set({\n isLoading: true\n });\n try {\n const response = await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.post(\"/auth/login\", {\n phone,\n password\n });\n const { accessToken, refreshToken } = response.data;\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.setCookie)(\"accessToken\", accessToken);\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.setCookie)(\"refreshToken\", refreshToken);\n set({\n isAuth: true\n });\n await get().getProfile();\n } finally{\n set({\n isLoading: false\n });\n }\n },\n register: async (data)=>{\n set({\n isLoading: true\n });\n try {\n // Убираем confirmPassword перед отправкой на бэкенд\n const { confirmPassword, ...registerData } = data;\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.post(\"/auth/register\", registerData);\n } finally{\n set({\n isLoading: false\n });\n }\n },\n logout: ()=>{\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.deleteCookie)(\"accessToken\");\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.deleteCookie)(\"refreshToken\");\n set({\n user: null,\n isAuth: false\n });\n if (true) {\n window.location.href = \"/auth/login\";\n }\n },\n getProfile: async ()=>{\n try {\n const response = await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.get(\"/profile\", {\n params: {\n _t: Date.now()\n } // bypass cache\n });\n set({\n user: response.data,\n isAuth: true\n });\n } catch (error) {\n console.error(\"Profile load failed\", error);\n }\n },\n updateProfile: async (data)=>{\n set({\n isLoading: true\n });\n try {\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.put(\"/profile\", data);\n await get().getProfile();\n } finally{\n set({\n isLoading: false\n });\n }\n },\n changePhone: async (newPhone)=>{\n set({\n isLoading: true\n });\n try {\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.post(\"/profile/change-phone\", {\n newPhone\n });\n await get().getProfile();\n } finally{\n set({\n isLoading: false\n });\n }\n },\n becomePerformer: async ()=>{\n set({\n isLoading: true\n });\n try {\n // Исправлен путь: убрали лишний /api, так как он уже есть в baseURL\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.post(\"/profile/become-performer\");\n await get().getProfile();\n } finally{\n set({\n isLoading: false\n });\n }\n },\n becomePerformerFull: async (data)=>{\n set({\n isLoading: true\n });\n try {\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.post(\"/profile/become-performer\", {\n description: data.description,\n competencies: data.competencies,\n location: data.location,\n currentLocation: null,\n isAlwaysReady: data.workSchedule.isAlwaysReady,\n workingDays: data.workSchedule.isAlwaysReady ? null : JSON.stringify(data.workSchedule.schedulePerDay)\n });\n await get().getProfile();\n } finally{\n set({\n isLoading: false\n });\n }\n },\n updateCompetencies: async (competencies)=>{\n set({\n isLoading: true\n });\n try {\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.put(\"/profile/competencies\", {\n Competencies: competencies\n });\n await get().getProfile();\n } finally{\n set({\n isLoading: false\n });\n }\n },\n uploadAvatar: async (file)=>{\n set({\n isLoading: true\n });\n try {\n const formData = new FormData();\n formData.append(\"file\", file);\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.post(\"/profile/avatar\", formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n await get().getProfile();\n } finally{\n set({\n isLoading: false\n });\n }\n },\n changePassword: async (oldPassword, newPassword)=>{\n set({\n isLoading: true\n });\n try {\n var _get_user;\n const userId = (_get_user = get().user) === null || _get_user === void 0 ? void 0 : _get_user.id;\n if (!userId) throw new Error(\"Пользователь не авторизован\");\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.post(\"/profile/change-password\", {\n accountId: userId,\n oldPassword,\n newPassword\n });\n } finally{\n set({\n isLoading: false\n });\n }\n },\n updateLocation: async (location, currentLocation)=>{\n set({\n isLoading: true\n });\n try {\n var _get_user;\n const userId = (_get_user = get().user) === null || _get_user === void 0 ? void 0 : _get_user.id;\n if (!userId) throw new Error(\"Пользователь не авторизован\");\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.put(\"/profile/location\", {\n accountId: userId,\n location,\n currentLocation\n });\n await get().getProfile();\n } finally{\n set({\n isLoading: false\n });\n }\n },\n updateSchedule: async (isAlwaysReady, schedulePerDay)=>{\n set({\n isLoading: true\n });\n try {\n var _get_user;\n const userId = (_get_user = get().user) === null || _get_user === void 0 ? void 0 : _get_user.id;\n if (!userId) throw new Error(\"Пользователь не авторизован\");\n const workingDaysJson = isAlwaysReady ? \"[]\" : JSON.stringify(schedulePerDay || {});\n await _shared_api_axios__WEBPACK_IMPORTED_MODULE_1__.api.put(\"/profile/schedule\", {\n accountId: userId,\n isAlwaysReady,\n workingDaysJson\n });\n await get().getProfile();\n } finally{\n set({\n isLoading: false\n });\n }\n }\n }));\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9lbnRpdGllcy9zZXNzaW9uL3N0b3JlLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWlDO0FBQ2lDO0FBQ3pCO0FBc0RsQyxNQUFNSyxrQkFBa0JMLCtDQUFNQSxDQUFlLENBQUNNLEtBQUtDLE1BQVM7UUFDL0RDLE1BQU07UUFDTkMsUUFBUTtRQUNSQyxXQUFXO1FBQ1hDLGVBQWU7UUFFZkMsV0FBVztZQUNQLE1BQU1DLFFBQVFWLHVEQUFTQSxDQUFDO1lBRXhCLElBQUksQ0FBQ1UsT0FBTztnQkFDUlAsSUFBSTtvQkFBRUssZUFBZTtvQkFBTUYsUUFBUTtnQkFBTTtnQkFDekM7WUFDSjtZQUVBSCxJQUFJO2dCQUFFSSxXQUFXO1lBQUs7WUFFdEIsSUFBSTtnQkFDQSxNQUFNSCxNQUFNTyxVQUFVO2dCQUN0QlIsSUFBSTtvQkFBRUcsUUFBUTtvQkFBTUUsZUFBZTtnQkFBSztZQUM1QyxFQUFFLE9BQU9JLE9BQU87Z0JBQ1pDLFFBQVFELEtBQUssQ0FBQyxxQkFBcUJBO2dCQUNuQywwQ0FBMEM7Z0JBQzFDYiwwREFBWUEsQ0FBQztnQkFDYkEsMERBQVlBLENBQUM7Z0JBQ2JJLElBQUk7b0JBQUVFLE1BQU07b0JBQU1DLFFBQVE7b0JBQU9FLGVBQWU7Z0JBQUs7WUFDekQsU0FBVTtnQkFDTkwsSUFBSTtvQkFBRUksV0FBVztnQkFBTTtZQUMzQjtRQUNKO1FBRUFPLE9BQU8sT0FBT0MsT0FBT0M7WUFDakJiLElBQUk7Z0JBQUVJLFdBQVc7WUFBSztZQUN0QixJQUFJO2dCQUNBLE1BQU1VLFdBQVcsTUFBTWhCLGtEQUFHQSxDQUFDaUIsSUFBSSxDQUFDLGVBQWU7b0JBQUVIO29CQUFPQztnQkFBUztnQkFDakUsTUFBTSxFQUFFRyxXQUFXLEVBQUVDLFlBQVksRUFBRSxHQUFHSCxTQUFTSSxJQUFJO2dCQUVuRHZCLHVEQUFTQSxDQUFDLGVBQWVxQjtnQkFDekJyQix1REFBU0EsQ0FBQyxnQkFBZ0JzQjtnQkFFMUJqQixJQUFJO29CQUFFRyxRQUFRO2dCQUFLO2dCQUNuQixNQUFNRixNQUFNTyxVQUFVO1lBQzFCLFNBQVU7Z0JBQ05SLElBQUk7b0JBQUVJLFdBQVc7Z0JBQU07WUFDM0I7UUFDSjtRQUVBZSxVQUFVLE9BQU9EO1lBQ2JsQixJQUFJO2dCQUFFSSxXQUFXO1lBQUs7WUFDdEIsSUFBSTtnQkFDQSxvREFBb0Q7Z0JBQ3BELE1BQU0sRUFBRWdCLGVBQWUsRUFBRSxHQUFHQyxjQUFjLEdBQUdIO2dCQUM3QyxNQUFNcEIsa0RBQUdBLENBQUNpQixJQUFJLENBQUMsa0JBQWtCTTtZQUNyQyxTQUFVO2dCQUNOckIsSUFBSTtvQkFBRUksV0FBVztnQkFBTTtZQUMzQjtRQUNKO1FBRUFrQixRQUFRO1lBQ0oxQiwwREFBWUEsQ0FBQztZQUNiQSwwREFBWUEsQ0FBQztZQUNiSSxJQUFJO2dCQUFFRSxNQUFNO2dCQUFNQyxRQUFRO1lBQU07WUFDaEMsSUFBSSxJQUE2QixFQUFFO2dCQUMvQm9CLE9BQU9DLFFBQVEsQ0FBQ0MsSUFBSSxHQUFHO1lBQzNCO1FBQ0o7UUFFQWpCLFlBQVk7WUFDUixJQUFJO2dCQUNBLE1BQU1NLFdBQVcsTUFBTWhCLGtEQUFHQSxDQUFDRyxHQUFHLENBQUMsWUFBWTtvQkFDdkN5QixRQUFRO3dCQUFFQyxJQUFJQyxLQUFLQyxHQUFHO29CQUFHLEVBQUUsZUFBZTtnQkFDOUM7Z0JBQ0E3QixJQUFJO29CQUFFRSxNQUFNWSxTQUFTSSxJQUFJO29CQUFFZixRQUFRO2dCQUFLO1lBQzVDLEVBQUUsT0FBT00sT0FBTztnQkFDWkMsUUFBUUQsS0FBSyxDQUFDLHVCQUF1QkE7WUFDekM7UUFDSjtRQUVBcUIsZUFBZSxPQUFPWjtZQUNsQmxCLElBQUk7Z0JBQUVJLFdBQVc7WUFBSztZQUN0QixJQUFJO2dCQUNBLE1BQU1OLGtEQUFHQSxDQUFDaUMsR0FBRyxDQUFDLFlBQVliO2dCQUMxQixNQUFNakIsTUFBTU8sVUFBVTtZQUMxQixTQUFVO2dCQUNOUixJQUFJO29CQUFFSSxXQUFXO2dCQUFNO1lBQzNCO1FBQ0o7UUFFQTRCLGFBQWEsT0FBT0M7WUFDaEJqQyxJQUFJO2dCQUFFSSxXQUFXO1lBQUs7WUFDdEIsSUFBSTtnQkFDQSxNQUFNTixrREFBR0EsQ0FBQ2lCLElBQUksQ0FBQyx5QkFBeUI7b0JBQUVrQjtnQkFBUztnQkFDbkQsTUFBTWhDLE1BQU1PLFVBQVU7WUFDMUIsU0FBVTtnQkFDTlIsSUFBSTtvQkFBRUksV0FBVztnQkFBTTtZQUMzQjtRQUNKO1FBRUE4QixpQkFBaUI7WUFDYmxDLElBQUk7Z0JBQUVJLFdBQVc7WUFBSztZQUN0QixJQUFJO2dCQUNBLG9FQUFvRTtnQkFDcEUsTUFBTU4sa0RBQUdBLENBQUNpQixJQUFJLENBQUM7Z0JBQ2YsTUFBTWQsTUFBTU8sVUFBVTtZQUMxQixTQUFVO2dCQUNOUixJQUFJO29CQUFFSSxXQUFXO2dCQUFNO1lBQzNCO1FBQ0o7UUFFQStCLHFCQUFxQixPQUFPakI7WUFDeEJsQixJQUFJO2dCQUFFSSxXQUFXO1lBQUs7WUFDdEIsSUFBSTtnQkFDQSxNQUFNTixrREFBR0EsQ0FBQ2lCLElBQUksQ0FBQyw2QkFBNkI7b0JBQ3hDcUIsYUFBYWxCLEtBQUtrQixXQUFXO29CQUM3QkMsY0FBY25CLEtBQUttQixZQUFZO29CQUMvQmIsVUFBVU4sS0FBS00sUUFBUTtvQkFDdkJjLGlCQUFpQjtvQkFDakJDLGVBQWVyQixLQUFLc0IsWUFBWSxDQUFDRCxhQUFhO29CQUM5Q0UsYUFBYXZCLEtBQUtzQixZQUFZLENBQUNELGFBQWEsR0FDdEMsT0FDQUcsS0FBS0MsU0FBUyxDQUFDekIsS0FBS3NCLFlBQVksQ0FBQ0ksY0FBYztnQkFDekQ7Z0JBQ0EsTUFBTTNDLE1BQU1PLFVBQVU7WUFDMUIsU0FBVTtnQkFDTlIsSUFBSTtvQkFBRUksV0FBVztnQkFBTTtZQUMzQjtRQUNKO1FBRUF5QyxvQkFBb0IsT0FBT1I7WUFDdkJyQyxJQUFJO2dCQUFFSSxXQUFXO1lBQUs7WUFDdEIsSUFBSTtnQkFDQSxNQUFNTixrREFBR0EsQ0FBQ2lDLEdBQUcsQ0FBQyx5QkFBeUI7b0JBQUVlLGNBQWNUO2dCQUFhO2dCQUNwRSxNQUFNcEMsTUFBTU8sVUFBVTtZQUMxQixTQUFVO2dCQUNOUixJQUFJO29CQUFFSSxXQUFXO2dCQUFNO1lBQzNCO1FBQ0o7UUFFQTJDLGNBQWMsT0FBT0M7WUFDakJoRCxJQUFJO2dCQUFFSSxXQUFXO1lBQUs7WUFDdEIsSUFBSTtnQkFDQSxNQUFNNkMsV0FBVyxJQUFJQztnQkFDckJELFNBQVNFLE1BQU0sQ0FBQyxRQUFRSDtnQkFDeEIsTUFBTWxELGtEQUFHQSxDQUFDaUIsSUFBSSxDQUFDLG1CQUFtQmtDLFVBQVU7b0JBQ3hDRyxTQUFTO3dCQUNMLGdCQUFnQjtvQkFDcEI7Z0JBQ0o7Z0JBQ0EsTUFBTW5ELE1BQU1PLFVBQVU7WUFDMUIsU0FBVTtnQkFDTlIsSUFBSTtvQkFBRUksV0FBVztnQkFBTTtZQUMzQjtRQUNKO1FBRUFpRCxnQkFBZ0IsT0FBT0MsYUFBYUM7WUFDaEN2RCxJQUFJO2dCQUFFSSxXQUFXO1lBQUs7WUFDdEIsSUFBSTtvQkFDZUg7Z0JBQWYsTUFBTXVELFVBQVN2RCxZQUFBQSxNQUFNQyxJQUFJLGNBQVZELGdDQUFBQSxVQUFZd0QsRUFBRTtnQkFDN0IsSUFBSSxDQUFDRCxRQUFRLE1BQU0sSUFBSUUsTUFBTTtnQkFFN0IsTUFBTTVELGtEQUFHQSxDQUFDaUIsSUFBSSxDQUFDLDRCQUE0QjtvQkFDdkM0QyxXQUFXSDtvQkFDWEY7b0JBQ0FDO2dCQUNKO1lBQ0osU0FBVTtnQkFDTnZELElBQUk7b0JBQUVJLFdBQVc7Z0JBQU07WUFDM0I7UUFDSjtRQUVBd0QsZ0JBQWdCLE9BQU9wQyxVQUFVYztZQUM3QnRDLElBQUk7Z0JBQUVJLFdBQVc7WUFBSztZQUN0QixJQUFJO29CQUNlSDtnQkFBZixNQUFNdUQsVUFBU3ZELFlBQUFBLE1BQU1DLElBQUksY0FBVkQsZ0NBQUFBLFVBQVl3RCxFQUFFO2dCQUM3QixJQUFJLENBQUNELFFBQVEsTUFBTSxJQUFJRSxNQUFNO2dCQUU3QixNQUFNNUQsa0RBQUdBLENBQUNpQyxHQUFHLENBQUMscUJBQXFCO29CQUMvQjRCLFdBQVdIO29CQUNYaEM7b0JBQ0FjO2dCQUNKO2dCQUNBLE1BQU1yQyxNQUFNTyxVQUFVO1lBQzFCLFNBQVU7Z0JBQ05SLElBQUk7b0JBQUVJLFdBQVc7Z0JBQU07WUFDM0I7UUFDSjtRQUVBeUQsZ0JBQWdCLE9BQU90QixlQUFlSztZQUNsQzVDLElBQUk7Z0JBQUVJLFdBQVc7WUFBSztZQUN0QixJQUFJO29CQUNlSDtnQkFBZixNQUFNdUQsVUFBU3ZELFlBQUFBLE1BQU1DLElBQUksY0FBVkQsZ0NBQUFBLFVBQVl3RCxFQUFFO2dCQUM3QixJQUFJLENBQUNELFFBQVEsTUFBTSxJQUFJRSxNQUFNO2dCQUU3QixNQUFNSSxrQkFBa0J2QixnQkFDbEIsT0FDQUcsS0FBS0MsU0FBUyxDQUFDQyxrQkFBa0IsQ0FBQztnQkFFeEMsTUFBTTlDLGtEQUFHQSxDQUFDaUMsR0FBRyxDQUFDLHFCQUFxQjtvQkFDL0I0QixXQUFXSDtvQkFDWGpCO29CQUNBdUI7Z0JBQ0o7Z0JBQ0EsTUFBTTdELE1BQU1PLFVBQVU7WUFDMUIsU0FBVTtnQkFDTlIsSUFBSTtvQkFBRUksV0FBVztnQkFBTTtZQUMzQjtRQUNKO0lBQ0osSUFBSSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXHNyY1xcZW50aXRpZXNcXHNlc3Npb25cXHN0b3JlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZSB9IGZyb20gXCJ6dXN0YW5kXCI7XHJcbmltcG9ydCB7IHNldENvb2tpZSwgZGVsZXRlQ29va2llLCBnZXRDb29raWUgfSBmcm9tIFwiY29va2llcy1uZXh0XCI7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gXCJAL3NoYXJlZC9hcGkvYXhpb3NcIjtcclxuXHJcbmludGVyZmFjZSBVc2VyIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBwaG9uZTogc3RyaW5nO1xyXG4gICAgcm9sZXM6IHN0cmluZ1tdO1xyXG4gICAgZmlyc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xyXG4gICAgcGF0cm9ueW1pYz86IHN0cmluZztcclxuICAgIGNvbXBhbnlOYW1lPzogc3RyaW5nO1xyXG4gICAgaW5uPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgICBsb2NhdGlvbj86IHN0cmluZztcclxuICAgIGN1cnJlbnRMb2NhdGlvbj86IHN0cmluZztcclxuICAgIGZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgICBhdmF0YXJVcmw/OiBzdHJpbmc7XHJcbiAgICBjb21wZXRlbmNpZXM6IHN0cmluZ1tdO1xyXG4gICAgd29ya1NjaGVkdWxlPzoge1xyXG4gICAgICAgIGlzQWx3YXlzUmVhZHk6IGJvb2xlYW47XHJcbiAgICAgICAgc2NoZWR1bGVQZXJEYXk/OiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7IHN0YXJ0OiBzdHJpbmc7IGVuZDogc3RyaW5nIH0+PjtcclxuICAgIH07XHJcbn1cclxuXHJcbmludGVyZmFjZSBXb3JrU2NoZWR1bGVEYXRhIHtcclxuICAgIGlzQWx3YXlzUmVhZHk6IGJvb2xlYW47XHJcbiAgICBzY2hlZHVsZVBlckRheTogUmVjb3JkPHN0cmluZywgQXJyYXk8eyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9Pj47XHJcbn1cclxuXHJcbmludGVyZmFjZSBTZXNzaW9uU3RhdGUge1xyXG4gICAgdXNlcjogVXNlciB8IG51bGw7XHJcbiAgICBpc0F1dGg6IGJvb2xlYW47XHJcbiAgICBpc0xvYWRpbmc6IGJvb2xlYW47XHJcbiAgICBpc0luaXRpYWxpemVkOiBib29sZWFuO1xyXG4gICAgY2hlY2tBdXRoOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gICAgbG9naW46IChwaG9uZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gICAgcmVnaXN0ZXI6IChkYXRhOiBhbnkpID0+IFByb21pc2U8dm9pZD47XHJcbiAgICBsb2dvdXQ6ICgpID0+IHZvaWQ7XHJcbiAgICBnZXRQcm9maWxlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gICAgdXBkYXRlUHJvZmlsZTogKGRhdGE6IHsgZmlyc3ROYW1lOiBzdHJpbmcsIGxhc3ROYW1lOiBzdHJpbmcsIHBhdHJvbnltaWM/OiBzdHJpbmcsIGNvbXBhbnlOYW1lPzogc3RyaW5nLCBpbm4/OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nIH0pID0+IFByb21pc2U8dm9pZD47XHJcbiAgICBjaGFuZ2VQaG9uZTogKG5ld1Bob25lOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XHJcbiAgICBiZWNvbWVQZXJmb3JtZXI6ICgpID0+IFByb21pc2U8dm9pZD47XHJcbiAgICBiZWNvbWVQZXJmb3JtZXJGdWxsOiAoZGF0YToge1xyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgICAgICAgY29tcGV0ZW5jaWVzOiBzdHJpbmdbXTtcclxuICAgICAgICBsb2NhdGlvbjogc3RyaW5nO1xyXG4gICAgICAgIHdvcmtTY2hlZHVsZTogV29ya1NjaGVkdWxlRGF0YTtcclxuICAgIH0pID0+IFByb21pc2U8dm9pZD47XHJcbiAgICB1cGRhdGVDb21wZXRlbmNpZXM6IChjb21wZXRlbmNpZXM6IHN0cmluZ1tdKSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gICAgdXBsb2FkQXZhdGFyOiAoZmlsZTogRmlsZSkgPT4gUHJvbWlzZTx2b2lkPjtcclxuICAgIGNoYW5nZVBhc3N3b3JkOiAob2xkUGFzc3dvcmQ6IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcclxuICAgIHVwZGF0ZUxvY2F0aW9uOiAobG9jYXRpb246IHN0cmluZywgY3VycmVudExvY2F0aW9uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gICAgdXBkYXRlU2NoZWR1bGU6IChpc0Fsd2F5c1JlYWR5OiBib29sZWFuLCBzY2hlZHVsZVBlckRheT86IFJlY29yZDxzdHJpbmcsIEFycmF5PHsgc3RhcnQ6IHN0cmluZzsgZW5kOiBzdHJpbmcgfT4+KSA9PiBQcm9taXNlPHZvaWQ+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdXNlU2Vzc2lvblN0b3JlID0gY3JlYXRlPFNlc3Npb25TdGF0ZT4oKHNldCwgZ2V0KSA9PiAoe1xyXG4gICAgdXNlcjogbnVsbCxcclxuICAgIGlzQXV0aDogZmFsc2UsXHJcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxyXG4gICAgaXNJbml0aWFsaXplZDogZmFsc2UsXHJcblxyXG4gICAgY2hlY2tBdXRoOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdG9rZW4gPSBnZXRDb29raWUoXCJhY2Nlc3NUb2tlblwiKTtcclxuXHJcbiAgICAgICAgaWYgKCF0b2tlbikge1xyXG4gICAgICAgICAgICBzZXQoeyBpc0luaXRpYWxpemVkOiB0cnVlLCBpc0F1dGg6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXQoeyBpc0xvYWRpbmc6IHRydWUgfSk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGdldCgpLmdldFByb2ZpbGUoKTtcclxuICAgICAgICAgICAgc2V0KHsgaXNBdXRoOiB0cnVlLCBpc0luaXRpYWxpemVkOiB0cnVlIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBdXRoIGNoZWNrIGZhaWxlZFwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIC8vINCi0L7QutC10L0g0L3QtdC00LXQudGB0YLQstC40YLQtdC70LXQvSwg0L7Rh9C40YnQsNC10Lwg0YHQvtGB0YLQvtGP0L3QuNC1XHJcbiAgICAgICAgICAgIGRlbGV0ZUNvb2tpZShcImFjY2Vzc1Rva2VuXCIpO1xyXG4gICAgICAgICAgICBkZWxldGVDb29raWUoXCJyZWZyZXNoVG9rZW5cIik7XHJcbiAgICAgICAgICAgIHNldCh7IHVzZXI6IG51bGwsIGlzQXV0aDogZmFsc2UsIGlzSW5pdGlhbGl6ZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgc2V0KHsgaXNMb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGxvZ2luOiBhc3luYyAocGhvbmUsIHBhc3N3b3JkKSA9PiB7XHJcbiAgICAgICAgc2V0KHsgaXNMb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLnBvc3QoXCIvYXV0aC9sb2dpblwiLCB7IHBob25lLCBwYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgY29uc3QgeyBhY2Nlc3NUb2tlbiwgcmVmcmVzaFRva2VuIH0gPSByZXNwb25zZS5kYXRhO1xyXG5cclxuICAgICAgICAgICAgc2V0Q29va2llKFwiYWNjZXNzVG9rZW5cIiwgYWNjZXNzVG9rZW4pO1xyXG4gICAgICAgICAgICBzZXRDb29raWUoXCJyZWZyZXNoVG9rZW5cIiwgcmVmcmVzaFRva2VuKTtcclxuXHJcbiAgICAgICAgICAgIHNldCh7IGlzQXV0aDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgYXdhaXQgZ2V0KCkuZ2V0UHJvZmlsZSgpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHNldCh7IGlzTG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICByZWdpc3RlcjogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHNldCh7IGlzTG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyDQo9Cx0LjRgNCw0LXQvCBjb25maXJtUGFzc3dvcmQg0L/QtdGA0LXQtCDQvtGC0L/RgNCw0LLQutC+0Lkg0L3QsCDQsdGN0LrQtdC90LRcclxuICAgICAgICAgICAgY29uc3QgeyBjb25maXJtUGFzc3dvcmQsIC4uLnJlZ2lzdGVyRGF0YSB9ID0gZGF0YTtcclxuICAgICAgICAgICAgYXdhaXQgYXBpLnBvc3QoXCIvYXV0aC9yZWdpc3RlclwiLCByZWdpc3RlckRhdGEpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHNldCh7IGlzTG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBsb2dvdXQ6ICgpID0+IHtcclxuICAgICAgICBkZWxldGVDb29raWUoXCJhY2Nlc3NUb2tlblwiKTtcclxuICAgICAgICBkZWxldGVDb29raWUoXCJyZWZyZXNoVG9rZW5cIik7XHJcbiAgICAgICAgc2V0KHsgdXNlcjogbnVsbCwgaXNBdXRoOiBmYWxzZSB9KTtcclxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL2F1dGgvbG9naW5cIjtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFByb2ZpbGU6IGFzeW5jICgpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaS5nZXQoXCIvcHJvZmlsZVwiLCB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHsgX3Q6IERhdGUubm93KCkgfSAvLyBieXBhc3MgY2FjaGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldCh7IHVzZXI6IHJlc3BvbnNlLmRhdGEsIGlzQXV0aDogdHJ1ZSB9KTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUHJvZmlsZSBsb2FkIGZhaWxlZFwiLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICB1cGRhdGVQcm9maWxlOiBhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgIHNldCh7IGlzTG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBhcGkucHV0KFwiL3Byb2ZpbGVcIiwgZGF0YSk7XHJcbiAgICAgICAgICAgIGF3YWl0IGdldCgpLmdldFByb2ZpbGUoKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBzZXQoeyBpc0xvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY2hhbmdlUGhvbmU6IGFzeW5jIChuZXdQaG9uZSkgPT4ge1xyXG4gICAgICAgIHNldCh7IGlzTG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBhcGkucG9zdChcIi9wcm9maWxlL2NoYW5nZS1waG9uZVwiLCB7IG5ld1Bob25lIH0pO1xyXG4gICAgICAgICAgICBhd2FpdCBnZXQoKS5nZXRQcm9maWxlKCk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgc2V0KHsgaXNMb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGJlY29tZVBlcmZvcm1lcjogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIHNldCh7IGlzTG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyDQmNGB0L/RgNCw0LLQu9C10L0g0L/Rg9GC0Yw6INGD0LHRgNCw0LvQuCDQu9C40YjQvdC40LkgL2FwaSwg0YLQsNC6INC60LDQuiDQvtC9INGD0LbQtSDQtdGB0YLRjCDQsiBiYXNlVVJMXHJcbiAgICAgICAgICAgIGF3YWl0IGFwaS5wb3N0KFwiL3Byb2ZpbGUvYmVjb21lLXBlcmZvcm1lclwiKTtcclxuICAgICAgICAgICAgYXdhaXQgZ2V0KCkuZ2V0UHJvZmlsZSgpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHNldCh7IGlzTG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBiZWNvbWVQZXJmb3JtZXJGdWxsOiBhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgIHNldCh7IGlzTG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBhcGkucG9zdChcIi9wcm9maWxlL2JlY29tZS1wZXJmb3JtZXJcIiwge1xyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGRhdGEuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXM6IGRhdGEuY29tcGV0ZW5jaWVzLFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGRhdGEubG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TG9jYXRpb246IG51bGwsXHJcbiAgICAgICAgICAgICAgICBpc0Fsd2F5c1JlYWR5OiBkYXRhLndvcmtTY2hlZHVsZS5pc0Fsd2F5c1JlYWR5LFxyXG4gICAgICAgICAgICAgICAgd29ya2luZ0RheXM6IGRhdGEud29ya1NjaGVkdWxlLmlzQWx3YXlzUmVhZHlcclxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KGRhdGEud29ya1NjaGVkdWxlLnNjaGVkdWxlUGVyRGF5KSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGF3YWl0IGdldCgpLmdldFByb2ZpbGUoKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBzZXQoeyBpc0xvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgdXBkYXRlQ29tcGV0ZW5jaWVzOiBhc3luYyAoY29tcGV0ZW5jaWVzKSA9PiB7XHJcbiAgICAgICAgc2V0KHsgaXNMb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGFwaS5wdXQoXCIvcHJvZmlsZS9jb21wZXRlbmNpZXNcIiwgeyBDb21wZXRlbmNpZXM6IGNvbXBldGVuY2llcyB9KTtcclxuICAgICAgICAgICAgYXdhaXQgZ2V0KCkuZ2V0UHJvZmlsZSgpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHNldCh7IGlzTG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICB1cGxvYWRBdmF0YXI6IGFzeW5jIChmaWxlKSA9PiB7XHJcbiAgICAgICAgc2V0KHsgaXNMb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgZmlsZSk7XHJcbiAgICAgICAgICAgIGF3YWl0IGFwaS5wb3N0KFwiL3Byb2ZpbGUvYXZhdGFyXCIsIGZvcm1EYXRhLCB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYXdhaXQgZ2V0KCkuZ2V0UHJvZmlsZSgpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHNldCh7IGlzTG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjaGFuZ2VQYXNzd29yZDogYXN5bmMgKG9sZFBhc3N3b3JkLCBuZXdQYXNzd29yZCkgPT4ge1xyXG4gICAgICAgIHNldCh7IGlzTG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB1c2VySWQgPSBnZXQoKS51c2VyPy5pZDtcclxuICAgICAgICAgICAgaWYgKCF1c2VySWQpIHRocm93IG5ldyBFcnJvcihcItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQvdC1INCw0LLRgtC+0YDQuNC30L7QstCw0L1cIik7XHJcblxyXG4gICAgICAgICAgICBhd2FpdCBhcGkucG9zdChcIi9wcm9maWxlL2NoYW5nZS1wYXNzd29yZFwiLCB7XHJcbiAgICAgICAgICAgICAgICBhY2NvdW50SWQ6IHVzZXJJZCxcclxuICAgICAgICAgICAgICAgIG9sZFBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgbmV3UGFzc3dvcmQsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHNldCh7IGlzTG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICB1cGRhdGVMb2NhdGlvbjogYXN5bmMgKGxvY2F0aW9uLCBjdXJyZW50TG9jYXRpb24pID0+IHtcclxuICAgICAgICBzZXQoeyBpc0xvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgdXNlcklkID0gZ2V0KCkudXNlcj8uaWQ7XHJcbiAgICAgICAgICAgIGlmICghdXNlcklkKSB0aHJvdyBuZXcgRXJyb3IoXCLQn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0L3QtSDQsNCy0YLQvtGA0LjQt9C+0LLQsNC9XCIpO1xyXG5cclxuICAgICAgICAgICAgYXdhaXQgYXBpLnB1dChcIi9wcm9maWxlL2xvY2F0aW9uXCIsIHtcclxuICAgICAgICAgICAgICAgIGFjY291bnRJZDogdXNlcklkLFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TG9jYXRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBhd2FpdCBnZXQoKS5nZXRQcm9maWxlKCk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgc2V0KHsgaXNMb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHVwZGF0ZVNjaGVkdWxlOiBhc3luYyAoaXNBbHdheXNSZWFkeSwgc2NoZWR1bGVQZXJEYXkpID0+IHtcclxuICAgICAgICBzZXQoeyBpc0xvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgdXNlcklkID0gZ2V0KCkudXNlcj8uaWQ7XHJcbiAgICAgICAgICAgIGlmICghdXNlcklkKSB0aHJvdyBuZXcgRXJyb3IoXCLQn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0L3QtSDQsNCy0YLQvtGA0LjQt9C+0LLQsNC9XCIpO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgd29ya2luZ0RheXNKc29uID0gaXNBbHdheXNSZWFkeVxyXG4gICAgICAgICAgICAgICAgPyBcIltdXCJcclxuICAgICAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkoc2NoZWR1bGVQZXJEYXkgfHwge30pO1xyXG5cclxuICAgICAgICAgICAgYXdhaXQgYXBpLnB1dChcIi9wcm9maWxlL3NjaGVkdWxlXCIsIHtcclxuICAgICAgICAgICAgICAgIGFjY291bnRJZDogdXNlcklkLFxyXG4gICAgICAgICAgICAgICAgaXNBbHdheXNSZWFkeSxcclxuICAgICAgICAgICAgICAgIHdvcmtpbmdEYXlzSnNvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGF3YWl0IGdldCgpLmdldFByb2ZpbGUoKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBzZXQoeyBpc0xvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbn0pKTtcclxuIl0sIm5hbWVzIjpbImNyZWF0ZSIsInNldENvb2tpZSIsImRlbGV0ZUNvb2tpZSIsImdldENvb2tpZSIsImFwaSIsInVzZVNlc3Npb25TdG9yZSIsInNldCIsImdldCIsInVzZXIiLCJpc0F1dGgiLCJpc0xvYWRpbmciLCJpc0luaXRpYWxpemVkIiwiY2hlY2tBdXRoIiwidG9rZW4iLCJnZXRQcm9maWxlIiwiZXJyb3IiLCJjb25zb2xlIiwibG9naW4iLCJwaG9uZSIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJwb3N0IiwiYWNjZXNzVG9rZW4iLCJyZWZyZXNoVG9rZW4iLCJkYXRhIiwicmVnaXN0ZXIiLCJjb25maXJtUGFzc3dvcmQiLCJyZWdpc3RlckRhdGEiLCJsb2dvdXQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJwYXJhbXMiLCJfdCIsIkRhdGUiLCJub3ciLCJ1cGRhdGVQcm9maWxlIiwicHV0IiwiY2hhbmdlUGhvbmUiLCJuZXdQaG9uZSIsImJlY29tZVBlcmZvcm1lciIsImJlY29tZVBlcmZvcm1lckZ1bGwiLCJkZXNjcmlwdGlvbiIsImNvbXBldGVuY2llcyIsImN1cnJlbnRMb2NhdGlvbiIsImlzQWx3YXlzUmVhZHkiLCJ3b3JrU2NoZWR1bGUiLCJ3b3JraW5nRGF5cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzY2hlZHVsZVBlckRheSIsInVwZGF0ZUNvbXBldGVuY2llcyIsIkNvbXBldGVuY2llcyIsInVwbG9hZEF2YXRhciIsImZpbGUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiaGVhZGVycyIsImNoYW5nZVBhc3N3b3JkIiwib2xkUGFzc3dvcmQiLCJuZXdQYXNzd29yZCIsInVzZXJJZCIsImlkIiwiRXJyb3IiLCJhY2NvdW50SWQiLCJ1cGRhdGVMb2NhdGlvbiIsInVwZGF0ZVNjaGVkdWxlIiwid29ya2luZ0RheXNKc29uIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/entities/session/store.ts\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/lib/imageUrl.ts":
|
||
/*!*****************************!*\
|
||
!*** ./src/lib/imageUrl.ts ***!
|
||
\*****************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getImageUrl: () => (/* binding */ getImageUrl)\n/* harmony export */ });\nconst API_BASE_URL = \"http://127.0.0.1:5000/api\" || 0;\nconst STATIC_FILES_BASE_URL = API_BASE_URL.replace(\"/api\", \"\");\nfunction getImageUrl(path) {\n if (!path) return undefined;\n // Если URL уже абсолютный (начинается с http:// или https://)\n if (path.startsWith(\"http://\") || path.startsWith(\"https://\") || path.startsWith(\"data:\")) {\n return path;\n }\n // Если путь начинается с /, добавляем базовый URL статических файлов (без /api)\n if (path.startsWith(\"/\")) {\n return \"\".concat(STATIC_FILES_BASE_URL).concat(path);\n }\n // Иначе добавляем базовый URL и /\n return \"\".concat(STATIC_FILES_BASE_URL, \"/\").concat(path);\n}\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9saWIvaW1hZ2VVcmwudHMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE1BQU1BLGVBQWVDLDJCQUErQixJQUFJLENBQXVCO0FBQy9FLE1BQU1HLHdCQUF3QkosYUFBYUssT0FBTyxDQUFDLFFBQVE7QUFFcEQsU0FBU0MsWUFBWUMsSUFBK0I7SUFDdkQsSUFBSSxDQUFDQSxNQUFNLE9BQU9DO0lBRWxCLDhEQUE4RDtJQUM5RCxJQUFJRCxLQUFLRSxVQUFVLENBQUMsY0FBY0YsS0FBS0UsVUFBVSxDQUFDLGVBQWVGLEtBQUtFLFVBQVUsQ0FBQyxVQUFVO1FBQ3ZGLE9BQU9GO0lBQ1g7SUFFQSxnRkFBZ0Y7SUFDaEYsSUFBSUEsS0FBS0UsVUFBVSxDQUFDLE1BQU07UUFDdEIsT0FBTyxHQUEyQkYsT0FBeEJILHVCQUE2QixPQUFMRztJQUN0QztJQUVBLGtDQUFrQztJQUNsQyxPQUFPLEdBQTRCQSxPQUF6QkgsdUJBQXNCLEtBQVEsT0FBTEc7QUFDdkMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxzcmNcXGxpYlxcaW1hZ2VVcmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQVBJX0JBU0VfVVJMID0gcHJvY2Vzcy5lbnYuTkVYVF9QVUJMSUNfQVBJX1VSTCB8fCBcImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMFwiO1xuY29uc3QgU1RBVElDX0ZJTEVTX0JBU0VfVVJMID0gQVBJX0JBU0VfVVJMLnJlcGxhY2UoXCIvYXBpXCIsIFwiXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VVcmwocGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgLy8g0JXRgdC70LggVVJMINGD0LbQtSDQsNCx0YHQvtC70Y7RgtC90YvQuSAo0L3QsNGH0LjQvdCw0LXRgtGB0Y8g0YEgaHR0cDovLyDQuNC70LggaHR0cHM6Ly8pXG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aChcImh0dHA6Ly9cIikgfHwgcGF0aC5zdGFydHNXaXRoKFwiaHR0cHM6Ly9cIikgfHwgcGF0aC5zdGFydHNXaXRoKFwiZGF0YTpcIikpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuXG4gICAgLy8g0JXRgdC70Lgg0L/Rg9GC0Ywg0L3QsNGH0LjQvdCw0LXRgtGB0Y8g0YEgLywg0LTQvtCx0LDQstC70Y/QtdC8INCx0LDQt9C+0LLRi9C5IFVSTCDRgdGC0LDRgtC40YfQtdGB0LrQuNGFINGE0LDQudC70L7QsiAo0LHQtdC3IC9hcGkpXG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgcmV0dXJuIGAke1NUQVRJQ19GSUxFU19CQVNFX1VSTH0ke3BhdGh9YDtcbiAgICB9XG5cbiAgICAvLyDQmNC90LDRh9C1INC00L7QsdCw0LLQu9GP0LXQvCDQsdCw0LfQvtCy0YvQuSBVUkwg0LggL1xuICAgIHJldHVybiBgJHtTVEFUSUNfRklMRVNfQkFTRV9VUkx9LyR7cGF0aH1gO1xufVxuIl0sIm5hbWVzIjpbIkFQSV9CQVNFX1VSTCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BVQkxJQ19BUElfVVJMIiwiU1RBVElDX0ZJTEVTX0JBU0VfVVJMIiwicmVwbGFjZSIsImdldEltYWdlVXJsIiwicGF0aCIsInVuZGVmaW5lZCIsInN0YXJ0c1dpdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/lib/imageUrl.ts\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/lib/utils.ts":
|
||
/*!**************************!*\
|
||
!*** ./src/lib/utils.ts ***!
|
||
\**************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cn: () => (/* binding */ cn)\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ \"(app-pages-browser)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var tailwind_merge__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tailwind-merge */ \"(app-pages-browser)/./node_modules/tailwind-merge/dist/bundle-mjs.mjs\");\n\n\nfunction cn() {\n for(var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++){\n inputs[_key] = arguments[_key];\n }\n return (0,tailwind_merge__WEBPACK_IMPORTED_MODULE_1__.twMerge)((0,clsx__WEBPACK_IMPORTED_MODULE_0__.clsx)(inputs));\n}\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9saWIvdXRpbHMudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTRDO0FBQ0o7QUFFakMsU0FBU0U7SUFBRztRQUFHQyxPQUFILHVCQUF1Qjs7SUFDdEMsT0FBT0YsdURBQU9BLENBQUNELDBDQUFJQSxDQUFDRztBQUN4QiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXHNyY1xcbGliXFx1dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENsYXNzVmFsdWUsIGNsc3ggfSBmcm9tIFwiY2xzeFwiXHJcbmltcG9ydCB7IHR3TWVyZ2UgfSBmcm9tIFwidGFpbHdpbmQtbWVyZ2VcIlxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNuKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKSB7XHJcbiAgICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpXHJcbn1cclxuIl0sIm5hbWVzIjpbImNsc3giLCJ0d01lcmdlIiwiY24iLCJpbnB1dHMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/lib/utils.ts\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/shared/api/axios.ts":
|
||
/*!*********************************!*\
|
||
!*** ./src/shared/api/axios.ts ***!
|
||
\*********************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ api: () => (/* binding */ api)\n/* harmony export */ });\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ \"(app-pages-browser)/./node_modules/axios/lib/axios.js\");\n/* harmony import */ var cookies_next__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cookies-next */ \"(app-pages-browser)/./node_modules/cookies-next/lib/index.js\");\n/* harmony import */ var cookies_next__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cookies_next__WEBPACK_IMPORTED_MODULE_0__);\n\n\nconst api = axios__WEBPACK_IMPORTED_MODULE_1__[\"default\"].create({\n baseURL: \"http://127.0.0.1:5000/api\" || 0,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n});\n// Interceptor for adding Auth token\napi.interceptors.request.use((config)=>{\n const token = (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.getCookie)(\"accessToken\");\n if (token && config.headers) {\n config.headers.Authorization = \"Bearer \".concat(token);\n }\n console.log(\"\\uD83D\\uDE80 Sending request to: \".concat(config.baseURL).concat(config.url));\n return config;\n});\nlet isRefreshing = false;\nlet failedQueue = [];\nconst processQueue = function(error) {\n let token = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n failedQueue.forEach((prom)=>{\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n failedQueue = [];\n};\n// Response interceptor for token refresh\napi.interceptors.response.use((response)=>response, async (error)=>{\n var _error_response;\n const originalRequest = error.config;\n if (((_error_response = error.response) === null || _error_response === void 0 ? void 0 : _error_response.status) === 401 && !originalRequest._retry) {\n if (isRefreshing) {\n return new Promise((resolve, reject)=>{\n failedQueue.push({\n resolve,\n reject\n });\n }).then((token)=>{\n originalRequest.headers.Authorization = \"Bearer \".concat(token);\n return api(originalRequest);\n }).catch((err)=>Promise.reject(err));\n }\n originalRequest._retry = true;\n isRefreshing = true;\n const refreshToken = (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.getCookie)(\"refreshToken\");\n try {\n const response = await axios__WEBPACK_IMPORTED_MODULE_1__[\"default\"].post(\"\".concat(\"http://127.0.0.1:5000/api\" || 0, \"/auth/refresh\"), {\n refreshToken\n });\n const { accessToken, refreshToken: newRefreshToken } = response.data;\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.setCookie)(\"accessToken\", accessToken);\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.setCookie)(\"refreshToken\", newRefreshToken);\n api.defaults.headers.common[\"Authorization\"] = \"Bearer \".concat(accessToken);\n processQueue(null, accessToken);\n return api(originalRequest);\n } catch (refreshError) {\n processQueue(refreshError, null);\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.deleteCookie)(\"accessToken\");\n (0,cookies_next__WEBPACK_IMPORTED_MODULE_0__.deleteCookie)(\"refreshToken\");\n if (true) {\n window.location.href = \"/auth/login\";\n }\n return Promise.reject(refreshError);\n } finally{\n isRefreshing = false;\n }\n }\n return Promise.reject(error);\n});\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9zaGFyZWQvYXBpL2F4aW9zLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBMEM7QUFDd0I7QUFFM0QsTUFBTUksTUFBTUosNkNBQUtBLENBQUNLLE1BQU0sQ0FBQztJQUM1QkMsU0FBU0MsMkJBQStCLElBQUksQ0FBMkI7SUFDdkVHLFNBQVM7UUFDTCxnQkFBZ0I7SUFDcEI7QUFDSixHQUFHO0FBRUgsb0NBQW9DO0FBQ3BDTixJQUFJTyxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUNDO0lBQzFCLE1BQU1DLFFBQVFkLHVEQUFTQSxDQUFDO0lBQ3hCLElBQUljLFNBQVNELE9BQU9KLE9BQU8sRUFBRTtRQUN6QkksT0FBT0osT0FBTyxDQUFDTSxhQUFhLEdBQUcsVUFBZ0IsT0FBTkQ7SUFDN0M7SUFDQUUsUUFBUUMsR0FBRyxDQUFDLG9DQUEyQ0osT0FBakJBLE9BQU9SLE9BQU8sRUFBYyxPQUFYUSxPQUFPSyxHQUFHO0lBQ2pFLE9BQU9MO0FBQ1g7QUFFQSxJQUFJTSxlQUFlO0FBQ25CLElBQUlDLGNBQXFCLEVBQUU7QUFFM0IsTUFBTUMsZUFBZSxTQUFDQztRQUFZUix5RUFBdUI7SUFDckRNLFlBQVlHLE9BQU8sQ0FBQyxDQUFDQztRQUNqQixJQUFJRixPQUFPO1lBQ1BFLEtBQUtDLE1BQU0sQ0FBQ0g7UUFDaEIsT0FBTztZQUNIRSxLQUFLRSxPQUFPLENBQUNaO1FBQ2pCO0lBQ0o7SUFDQU0sY0FBYyxFQUFFO0FBQ3BCO0FBRUEseUNBQXlDO0FBQ3pDakIsSUFBSU8sWUFBWSxDQUFDaUIsUUFBUSxDQUFDZixHQUFHLENBQ3pCLENBQUNlLFdBQWFBLFVBQ2QsT0FBT0w7UUFHQ0E7SUFGSixNQUFNTSxrQkFBdUJOLE1BQU1ULE1BQU07SUFFekMsSUFBSVMsRUFBQUEsa0JBQUFBLE1BQU1LLFFBQVEsY0FBZEwsc0NBQUFBLGdCQUFnQk8sTUFBTSxNQUFLLE9BQU8sQ0FBQ0QsZ0JBQWdCRSxNQUFNLEVBQUU7UUFDM0QsSUFBSVgsY0FBYztZQUNkLE9BQU8sSUFBSVksUUFBUSxDQUFDTCxTQUFTRDtnQkFDekJMLFlBQVlZLElBQUksQ0FBQztvQkFBRU47b0JBQVNEO2dCQUFPO1lBQ3ZDLEdBQ0tRLElBQUksQ0FBQyxDQUFDbkI7Z0JBQ0hjLGdCQUFnQm5CLE9BQU8sQ0FBQ00sYUFBYSxHQUFHLFVBQWdCLE9BQU5EO2dCQUNsRCxPQUFPWCxJQUFJeUI7WUFDZixHQUNDTSxLQUFLLENBQUMsQ0FBQ0MsTUFBUUosUUFBUU4sTUFBTSxDQUFDVTtRQUN2QztRQUVBUCxnQkFBZ0JFLE1BQU0sR0FBRztRQUN6QlgsZUFBZTtRQUVmLE1BQU1pQixlQUFlcEMsdURBQVNBLENBQUM7UUFFL0IsSUFBSTtZQUNBLE1BQU0yQixXQUFXLE1BQU01Qiw2Q0FBS0EsQ0FBQ3NDLElBQUksQ0FDN0IsR0FBa0UsT0FBL0QvQiwyQkFBK0IsSUFBSSxDQUEyQixFQUFDLGtCQUNsRTtnQkFBRThCO1lBQWE7WUFHbkIsTUFBTSxFQUFFRSxXQUFXLEVBQUVGLGNBQWNHLGVBQWUsRUFBRSxHQUFHWixTQUFTYSxJQUFJO1lBRXBFdkMsdURBQVNBLENBQUMsZUFBZXFDO1lBQ3pCckMsdURBQVNBLENBQUMsZ0JBQWdCc0M7WUFFMUJwQyxJQUFJc0MsUUFBUSxDQUFDaEMsT0FBTyxDQUFDaUMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLFVBQXNCLE9BQVpKO1lBQ3pEakIsYUFBYSxNQUFNaUI7WUFFbkIsT0FBT25DLElBQUl5QjtRQUNmLEVBQUUsT0FBT2UsY0FBYztZQUNuQnRCLGFBQWFzQixjQUFjO1lBQzNCekMsMERBQVlBLENBQUM7WUFDYkEsMERBQVlBLENBQUM7WUFDYixJQUFJLElBQTZCLEVBQUU7Z0JBQy9CMEMsT0FBT0MsUUFBUSxDQUFDQyxJQUFJLEdBQUc7WUFDM0I7WUFDQSxPQUFPZixRQUFRTixNQUFNLENBQUNrQjtRQUMxQixTQUFVO1lBQ054QixlQUFlO1FBQ25CO0lBQ0o7SUFFQSxPQUFPWSxRQUFRTixNQUFNLENBQUNIO0FBQzFCIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcc3JjXFxzaGFyZWRcXGFwaVxcYXhpb3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tIFwiYXhpb3NcIjtcclxuaW1wb3J0IHsgZ2V0Q29va2llLCBzZXRDb29raWUsIGRlbGV0ZUNvb2tpZSB9IGZyb20gXCJjb29raWVzLW5leHRcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBhcGkgPSBheGlvcy5jcmVhdGUoe1xyXG4gICAgYmFzZVVSTDogcHJvY2Vzcy5lbnYuTkVYVF9QVUJMSUNfQVBJX1VSTCB8fCBcImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9hcGlcIixcclxuICAgIGhlYWRlcnM6IHtcclxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgIH0sXHJcbn0pO1xyXG5cclxuLy8gSW50ZXJjZXB0b3IgZm9yIGFkZGluZyBBdXRoIHRva2VuXHJcbmFwaS5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoKGNvbmZpZykgPT4ge1xyXG4gICAgY29uc3QgdG9rZW4gPSBnZXRDb29raWUoXCJhY2Nlc3NUb2tlblwiKTtcclxuICAgIGlmICh0b2tlbiAmJiBjb25maWcuaGVhZGVycykge1xyXG4gICAgICAgIGNvbmZpZy5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7dG9rZW59YDtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKGDwn5qAIFNlbmRpbmcgcmVxdWVzdCB0bzogJHtjb25maWcuYmFzZVVSTH0ke2NvbmZpZy51cmx9YCk7XHJcbiAgICByZXR1cm4gY29uZmlnO1xyXG59KTtcclxuXHJcbmxldCBpc1JlZnJlc2hpbmcgPSBmYWxzZTtcclxubGV0IGZhaWxlZFF1ZXVlOiBhbnlbXSA9IFtdO1xyXG5cclxuY29uc3QgcHJvY2Vzc1F1ZXVlID0gKGVycm9yOiBhbnksIHRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xyXG4gICAgZmFpbGVkUXVldWUuZm9yRWFjaCgocHJvbSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICBwcm9tLnJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcHJvbS5yZXNvbHZlKHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIGZhaWxlZFF1ZXVlID0gW107XHJcbn07XHJcblxyXG4vLyBSZXNwb25zZSBpbnRlcmNlcHRvciBmb3IgdG9rZW4gcmVmcmVzaFxyXG5hcGkuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShcclxuICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UsXHJcbiAgICBhc3luYyAoZXJyb3I6IEF4aW9zRXJyb3IpID0+IHtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbFJlcXVlc3Q6IGFueSA9IGVycm9yLmNvbmZpZztcclxuXHJcbiAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMSAmJiAhb3JpZ2luYWxSZXF1ZXN0Ll9yZXRyeSkge1xyXG4gICAgICAgICAgICBpZiAoaXNSZWZyZXNoaW5nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZhaWxlZFF1ZXVlLnB1c2goeyByZXNvbHZlLCByZWplY3QgfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh0b2tlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFJlcXVlc3QuaGVhZGVycy5BdXRob3JpemF0aW9uID0gYEJlYXJlciAke3Rva2VufWA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGkob3JpZ2luYWxSZXF1ZXN0KTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBQcm9taXNlLnJlamVjdChlcnIpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0Ll9yZXRyeSA9IHRydWU7XHJcbiAgICAgICAgICAgIGlzUmVmcmVzaGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSBnZXRDb29raWUoXCJyZWZyZXNoVG9rZW5cIik7XHJcblxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3Byb2Nlc3MuZW52Lk5FWFRfUFVCTElDX0FQSV9VUkwgfHwgXCJodHRwOi8vbG9jYWxob3N0OjUwMDAvYXBpXCJ9L2F1dGgvcmVmcmVzaGAsXHJcbiAgICAgICAgICAgICAgICAgICAgeyByZWZyZXNoVG9rZW4gfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGFjY2Vzc1Rva2VuLCByZWZyZXNoVG9rZW46IG5ld1JlZnJlc2hUb2tlbiB9ID0gcmVzcG9uc2UuZGF0YTtcclxuXHJcbiAgICAgICAgICAgICAgICBzZXRDb29raWUoXCJhY2Nlc3NUb2tlblwiLCBhY2Nlc3NUb2tlbik7XHJcbiAgICAgICAgICAgICAgICBzZXRDb29raWUoXCJyZWZyZXNoVG9rZW5cIiwgbmV3UmVmcmVzaFRva2VuKTtcclxuXHJcbiAgICAgICAgICAgICAgICBhcGkuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bXCJBdXRob3JpemF0aW9uXCJdID0gYEJlYXJlciAke2FjY2Vzc1Rva2VufWA7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzUXVldWUobnVsbCwgYWNjZXNzVG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBhcGkob3JpZ2luYWxSZXF1ZXN0KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAocmVmcmVzaEVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzUXVldWUocmVmcmVzaEVycm9yLCBudWxsKTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUNvb2tpZShcImFjY2Vzc1Rva2VuXCIpO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlQ29va2llKFwicmVmcmVzaFRva2VuXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL2F1dGgvbG9naW5cIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWZyZXNoRXJyb3IpO1xyXG4gICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgaXNSZWZyZXNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcbiAgICB9XHJcbik7XHJcbiJdLCJuYW1lcyI6WyJheGlvcyIsImdldENvb2tpZSIsInNldENvb2tpZSIsImRlbGV0ZUNvb2tpZSIsImFwaSIsImNyZWF0ZSIsImJhc2VVUkwiLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9QVUJMSUNfQVBJX1VSTCIsImhlYWRlcnMiLCJpbnRlcmNlcHRvcnMiLCJyZXF1ZXN0IiwidXNlIiwiY29uZmlnIiwidG9rZW4iLCJBdXRob3JpemF0aW9uIiwiY29uc29sZSIsImxvZyIsInVybCIsImlzUmVmcmVzaGluZyIsImZhaWxlZFF1ZXVlIiwicHJvY2Vzc1F1ZXVlIiwiZXJyb3IiLCJmb3JFYWNoIiwicHJvbSIsInJlamVjdCIsInJlc29sdmUiLCJyZXNwb25zZSIsIm9yaWdpbmFsUmVxdWVzdCIsInN0YXR1cyIsIl9yZXRyeSIsIlByb21pc2UiLCJwdXNoIiwidGhlbiIsImNhdGNoIiwiZXJyIiwicmVmcmVzaFRva2VuIiwicG9zdCIsImFjY2Vzc1Rva2VuIiwibmV3UmVmcmVzaFRva2VuIiwiZGF0YSIsImRlZmF1bHRzIiwiY29tbW9uIiwicmVmcmVzaEVycm9yIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/shared/api/axios.ts\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./src/shared/lib/utils.ts":
|
||
/*!*********************************!*\
|
||
!*** ./src/shared/lib/utils.ts ***!
|
||
\*********************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cn: () => (/* binding */ cn),\n/* harmony export */ formatPhoneNumber: () => (/* binding */ formatPhoneNumber)\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ \"(app-pages-browser)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var tailwind_merge__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tailwind-merge */ \"(app-pages-browser)/./node_modules/tailwind-merge/dist/bundle-mjs.mjs\");\n\n\nfunction cn() {\n for(var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++){\n inputs[_key] = arguments[_key];\n }\n return (0,tailwind_merge__WEBPACK_IMPORTED_MODULE_1__.twMerge)((0,clsx__WEBPACK_IMPORTED_MODULE_0__.clsx)(inputs));\n}\nfunction formatPhoneNumber(phone) {\n if (!phone) return \"—\";\n // Remove all non-digits\n const cleaned = phone.replace(/\\D/g, \"\");\n // Check if it's a Russian number (+7 or 8)\n if (cleaned.length === 11) {\n const country = cleaned[0] === \"8\" ? \"8\" : \"+7\";\n return \"\".concat(country, \" (\").concat(cleaned.slice(1, 4), \") \").concat(cleaned.slice(4, 7), \"-\").concat(cleaned.slice(7, 9), \"-\").concat(cleaned.slice(9, 11));\n }\n return phone;\n}\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9zaGFyZWQvbGliL3V0aWxzLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNEM7QUFDSjtBQUVqQyxTQUFTRTtJQUFHO1FBQUdDLE9BQUgsdUJBQXVCOztJQUN0QyxPQUFPRix1REFBT0EsQ0FBQ0QsMENBQUlBLENBQUNHO0FBQ3hCO0FBRU8sU0FBU0Msa0JBQWtCQyxLQUF5QjtJQUN2RCxJQUFJLENBQUNBLE9BQU8sT0FBTztJQUVuQix3QkFBd0I7SUFDeEIsTUFBTUMsVUFBVUQsTUFBTUUsT0FBTyxDQUFDLE9BQU87SUFFckMsMkNBQTJDO0lBQzNDLElBQUlELFFBQVFFLE1BQU0sS0FBSyxJQUFJO1FBQ3ZCLE1BQU1DLFVBQVVILE9BQU8sQ0FBQyxFQUFFLEtBQUssTUFBTSxNQUFNO1FBQzNDLE9BQU8sR0FBZUEsT0FBWkcsU0FBUSxNQUE0QkgsT0FBeEJBLFFBQVFJLEtBQUssQ0FBQyxHQUFHLElBQUcsTUFBMkJKLE9BQXZCQSxRQUFRSSxLQUFLLENBQUMsR0FBRyxJQUFHLEtBQTBCSixPQUF2QkEsUUFBUUksS0FBSyxDQUFDLEdBQUcsSUFBRyxLQUF3QixPQUFyQkosUUFBUUksS0FBSyxDQUFDLEdBQUc7SUFDakg7SUFFQSxPQUFPTDtBQUNYIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcc3JjXFxzaGFyZWRcXGxpYlxcdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDbGFzc1ZhbHVlLCBjbHN4IH0gZnJvbSBcImNsc3hcIlxyXG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSBcInRhaWx3aW5kLW1lcmdlXCJcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjbiguLi5pbnB1dHM6IENsYXNzVmFsdWVbXSkge1xyXG4gICAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UGhvbmVOdW1iZXIocGhvbmU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXBob25lKSByZXR1cm4gXCLigJRcIjtcclxuXHJcbiAgICAvLyBSZW1vdmUgYWxsIG5vbi1kaWdpdHNcclxuICAgIGNvbnN0IGNsZWFuZWQgPSBwaG9uZS5yZXBsYWNlKC9cXEQvZywgXCJcIik7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgaXQncyBhIFJ1c3NpYW4gbnVtYmVyICgrNyBvciA4KVxyXG4gICAgaWYgKGNsZWFuZWQubGVuZ3RoID09PSAxMSkge1xyXG4gICAgICAgIGNvbnN0IGNvdW50cnkgPSBjbGVhbmVkWzBdID09PSBcIjhcIiA/IFwiOFwiIDogXCIrN1wiO1xyXG4gICAgICAgIHJldHVybiBgJHtjb3VudHJ5fSAoJHtjbGVhbmVkLnNsaWNlKDEsIDQpfSkgJHtjbGVhbmVkLnNsaWNlKDQsIDcpfS0ke2NsZWFuZWQuc2xpY2UoNywgOSl9LSR7Y2xlYW5lZC5zbGljZSg5LCAxMSl9YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGhvbmU7XHJcbn1cclxuIl0sIm5hbWVzIjpbImNsc3giLCJ0d01lcmdlIiwiY24iLCJpbnB1dHMiLCJmb3JtYXRQaG9uZU51bWJlciIsInBob25lIiwiY2xlYW5lZCIsInJlcGxhY2UiLCJsZW5ndGgiLCJjb3VudHJ5Iiwic2xpY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/shared/lib/utils.ts\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js":
|
||
/*!****************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js ***!
|
||
\****************************************************************************************/
|
||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n true &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE$2\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function disabledLog() {}\n function disableLogs() {\n if (0 === disabledDepth) {\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd;\n var props = {\n configurable: !0,\n enumerable: !0,\n value: disabledLog,\n writable: !0\n };\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n }\n disabledDepth++;\n }\n function reenableLogs() {\n disabledDepth--;\n if (0 === disabledDepth) {\n var props = { configurable: !0, enumerable: !0, writable: !0 };\n Object.defineProperties(console, {\n log: assign({}, props, { value: prevLog }),\n info: assign({}, props, { value: prevInfo }),\n warn: assign({}, props, { value: prevWarn }),\n error: assign({}, props, { value: prevError }),\n group: assign({}, props, { value: prevGroup }),\n groupCollapsed: assign({}, props, { value: prevGroupCollapsed }),\n groupEnd: assign({}, props, { value: prevGroupEnd })\n });\n }\n 0 > disabledDepth &&\n console.error(\n \"disabledDepth fell below zero. This is a bug in React. Please file an issue.\"\n );\n }\n function describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n }\n function describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n var frame = componentFrameCache.get(fn);\n if (void 0 !== frame) return frame;\n reentry = !0;\n frame = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n var previousDispatcher = null;\n previousDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = null;\n disableLogs();\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$0) {\n control = x$0;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$1) {\n control = x$1;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter =\n RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n _RunInRootFrame$Deter = namePropDescriptor = 0;\n namePropDescriptor < sampleLines.length &&\n !sampleLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n for (\n ;\n _RunInRootFrame$Deter < controlLines.length &&\n !controlLines[_RunInRootFrame$Deter].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n _RunInRootFrame$Deter++;\n if (\n namePropDescriptor === sampleLines.length ||\n _RunInRootFrame$Deter === controlLines.length\n )\n for (\n namePropDescriptor = sampleLines.length - 1,\n _RunInRootFrame$Deter = controlLines.length - 1;\n 1 <= namePropDescriptor &&\n 0 <= _RunInRootFrame$Deter &&\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter];\n\n )\n _RunInRootFrame$Deter--;\n for (\n ;\n 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter;\n namePropDescriptor--, _RunInRootFrame$Deter--\n )\n if (\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter]\n ) {\n if (1 !== namePropDescriptor || 1 !== _RunInRootFrame$Deter) {\n do\n if (\n (namePropDescriptor--,\n _RunInRootFrame$Deter--,\n 0 > _RunInRootFrame$Deter ||\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter])\n ) {\n var _frame =\n \"\\n\" +\n sampleLines[namePropDescriptor].replace(\n \" at new \",\n \" at \"\n );\n fn.displayName &&\n _frame.includes(\"<anonymous>\") &&\n (_frame = _frame.replace(\"<anonymous>\", fn.displayName));\n \"function\" === typeof fn &&\n componentFrameCache.set(fn, _frame);\n return _frame;\n }\n while (1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter);\n }\n break;\n }\n }\n } finally {\n (reentry = !1),\n (ReactSharedInternals.H = previousDispatcher),\n reenableLogs(),\n (Error.prepareStackTrace = frame);\n }\n sampleLines = (sampleLines = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(sampleLines)\n : \"\";\n \"function\" === typeof fn && componentFrameCache.set(fn, sampleLines);\n return sampleLines;\n }\n function describeUnknownElementTypeFrameInDEV(type) {\n if (null == type) return \"\";\n if (\"function\" === typeof type) {\n var prototype = type.prototype;\n return describeNativeComponentFrame(\n type,\n !(!prototype || !prototype.isReactComponent)\n );\n }\n if (\"string\" === typeof type) return describeBuiltInComponentFrame(type);\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame(\"Suspense\");\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return (type = describeNativeComponentFrame(type.render, !1)), type;\n case REACT_MEMO_TYPE:\n return describeUnknownElementTypeFrameInDEV(type.type);\n case REACT_LAZY_TYPE:\n prototype = type._payload;\n type = type._init;\n try {\n return describeUnknownElementTypeFrameInDEV(type(prototype));\n } catch (x) {}\n }\n return \"\";\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self\n ) {\n if (\n \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n type === REACT_OFFSCREEN_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE$1 ||\n void 0 !== type.getModuleId))\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren], type);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children, type);\n } else {\n children = \"\";\n if (\n void 0 === type ||\n (\"object\" === typeof type &&\n null !== type &&\n 0 === Object.keys(type).length)\n )\n children +=\n \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n null === type\n ? (isStaticChildren = \"null\")\n : isArrayImpl(type)\n ? (isStaticChildren = \"array\")\n : void 0 !== type && type.$$typeof === REACT_ELEMENT_TYPE\n ? ((isStaticChildren =\n \"<\" +\n (getComponentNameFromType(type.type) || \"Unknown\") +\n \" />\"),\n (children =\n \" Did you accidentally export a JSX literal instead of a component?\"))\n : (isStaticChildren = typeof type);\n console.error(\n \"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",\n isStaticChildren,\n children\n );\n }\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(type, children, self, source, getOwner(), maybeKey);\n }\n function validateChildKeys(node, parentType) {\n if (\n \"object\" === typeof node &&\n node &&\n node.$$typeof !== REACT_CLIENT_REFERENCE\n )\n if (isArrayImpl(node))\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n isValidElement(child) && validateExplicitKey(child, parentType);\n }\n else if (isValidElement(node))\n node._store && (node._store.validated = 1);\n else if (\n (null === node || \"object\" !== typeof node\n ? (i = null)\n : ((i =\n (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||\n node[\"@@iterator\"]),\n (i = \"function\" === typeof i ? i : null)),\n \"function\" === typeof i &&\n i !== node.entries &&\n ((i = i.call(node)), i !== node))\n )\n for (; !(node = i.next()).done; )\n isValidElement(node.value) &&\n validateExplicitKey(node.value, parentType);\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function validateExplicitKey(element, parentType) {\n if (\n element._store &&\n !element._store.validated &&\n null == element.key &&\n ((element._store.validated = 1),\n (parentType = getCurrentComponentErrorInfo(parentType)),\n !ownerHasKeyUseWarning[parentType])\n ) {\n ownerHasKeyUseWarning[parentType] = !0;\n var childOwner = \"\";\n element &&\n null != element._owner &&\n element._owner !== getOwner() &&\n ((childOwner = null),\n \"number\" === typeof element._owner.tag\n ? (childOwner = getComponentNameFromType(element._owner.type))\n : \"string\" === typeof element._owner.name &&\n (childOwner = element._owner.name),\n (childOwner = \" It was passed a child from \" + childOwner + \".\"));\n var prevGetCurrentStack = ReactSharedInternals.getCurrentStack;\n ReactSharedInternals.getCurrentStack = function () {\n var stack = describeUnknownElementTypeFrameInDEV(element.type);\n prevGetCurrentStack && (stack += prevGetCurrentStack() || \"\");\n return stack;\n };\n console.error(\n 'Each child in a list should have a unique \"key\" prop.%s%s See https://react.dev/link/warning-keys for more information.',\n parentType,\n childOwner\n );\n ReactSharedInternals.getCurrentStack = prevGetCurrentStack;\n }\n }\n function getCurrentComponentErrorInfo(parentType) {\n var info = \"\",\n owner = getOwner();\n owner &&\n (owner = getComponentNameFromType(owner.type)) &&\n (info = \"\\n\\nCheck the render method of `\" + owner + \"`.\");\n info ||\n ((parentType = getComponentNameFromType(parentType)) &&\n (info =\n \"\\n\\nCheck the top-level render call using <\" + parentType + \">.\"));\n return info;\n }\n var React = __webpack_require__(/*! next/dist/compiled/react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n REACT_CLIENT_REFERENCE$2 = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n assign = Object.assign,\n REACT_CLIENT_REFERENCE$1 = Symbol.for(\"react.client.reference\"),\n isArrayImpl = Array.isArray,\n disabledDepth = 0,\n prevLog,\n prevInfo,\n prevWarn,\n prevError,\n prevGroup,\n prevGroupCollapsed,\n prevGroupEnd;\n disabledLog.__reactDisabledLog = !0;\n var prefix,\n suffix,\n reentry = !1;\n var componentFrameCache = new (\n \"function\" === typeof WeakMap ? WeakMap : Map\n )();\n var REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var didWarnAboutKeySpread = {},\n ownerHasKeyUseWarning = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsxDEV = function (\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self\n ) {\n return jsxDEVImpl(type, config, maybeKey, isStaticChildren, source, self);\n };\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7QUFDYixLQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBLHdCQUF3QixXQUFXLGdCQUFnQjtBQUNuRCx5QkFBeUIsV0FBVyxpQkFBaUI7QUFDckQseUJBQXlCLFdBQVcsaUJBQWlCO0FBQ3JELDBCQUEwQixXQUFXLGtCQUFrQjtBQUN2RCwwQkFBMEIsV0FBVyxrQkFBa0I7QUFDdkQsbUNBQW1DLFdBQVcsMkJBQTJCO0FBQ3pFLDZCQUE2QixXQUFXLHFCQUFxQjtBQUM3RCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsK0NBQStDLDZCQUE2QjtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxnQkFBZ0IsZ0RBQWdEO0FBQ2hFLGdCQUFnQixhQUFhO0FBQzdCO0FBQ0E7QUFDQSxnQ0FBZ0Msa0NBQWtDLE9BQU87QUFDekU7QUFDQSxnR0FBZ0csU0FBUyxVQUFVLHNGQUFzRixhQUFhLFVBQVUsVUFBVTtBQUMxTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpQkFBaUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIseUJBQXlCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbUJBQU8sQ0FBQyxzR0FBMEI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQSxJQUFJLGdCQUFnQjtBQUNwQixJQUFJLGNBQWM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcY29tcGlsZWRcXHJlYWN0XFxjanNcXHJlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXCJwcm9kdWN0aW9uXCIgIT09IHByb2Nlc3MuZW52Lk5PREVfRU5WICYmXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHtcbiAgICAgIGlmIChudWxsID09IHR5cGUpIHJldHVybiBudWxsO1xuICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgICAgIHJldHVybiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFJDJcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IG51bGw7XG4gICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHR5cGUpIHJldHVybiB0eXBlO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfRlJBR01FTlRfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJGcmFnbWVudFwiO1xuICAgICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlBvcnRhbFwiO1xuICAgICAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiUHJvZmlsZXJcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlN0cmljdE1vZGVcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlN1c3BlbnNlXCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlN1c3BlbnNlTGlzdFwiO1xuICAgICAgfVxuICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgIChcIm51bWJlclwiID09PSB0eXBlb2YgdHlwZS50YWcgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKCkuIFRoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS5cIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB0eXBlLiQkdHlwZW9mKVxuICAgICAgICApIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAodHlwZS5kaXNwbGF5TmFtZSB8fCBcIkNvbnRleHRcIikgKyBcIi5Qcm92aWRlclwiO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OU1VNRVJfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAodHlwZS5fY29udGV4dC5kaXNwbGF5TmFtZSB8fCBcIkNvbnRleHRcIikgKyBcIi5Db25zdW1lclwiO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgIHZhciBpbm5lclR5cGUgPSB0eXBlLnJlbmRlcjtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLmRpc3BsYXlOYW1lO1xuICAgICAgICAgICAgdHlwZSB8fFxuICAgICAgICAgICAgICAoKHR5cGUgPSBpbm5lclR5cGUuZGlzcGxheU5hbWUgfHwgaW5uZXJUeXBlLm5hbWUgfHwgXCJcIiksXG4gICAgICAgICAgICAgICh0eXBlID0gXCJcIiAhPT0gdHlwZSA/IFwiRm9yd2FyZFJlZihcIiArIHR5cGUgKyBcIilcIiA6IFwiRm9yd2FyZFJlZlwiKSk7XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChpbm5lclR5cGUgPSB0eXBlLmRpc3BsYXlOYW1lIHx8IG51bGwpLFxuICAgICAgICAgICAgICBudWxsICE9PSBpbm5lclR5cGVcbiAgICAgICAgICAgICAgICA/IGlubmVyVHlwZVxuICAgICAgICAgICAgICAgIDogZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgXCJNZW1vXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICBpbm5lclR5cGUgPSB0eXBlLl9wYXlsb2FkO1xuICAgICAgICAgICAgdHlwZSA9IHR5cGUuX2luaXQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUoaW5uZXJUeXBlKSk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gXCJcIiArIHZhbHVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjaGVja0tleVN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gITE7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICEwO1xuICAgICAgfVxuICAgICAgaWYgKEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCkge1xuICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBjb25zb2xlO1xuICAgICAgICB2YXIgSlNDb21waWxlcl90ZW1wX2NvbnN0ID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LmVycm9yO1xuICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID1cbiAgICAgICAgICAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgU3ltYm9sICYmXG4gICAgICAgICAgICBTeW1ib2wudG9TdHJpbmdUYWcgJiZcbiAgICAgICAgICAgIHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ10pIHx8XG4gICAgICAgICAgdmFsdWUuY29uc3RydWN0b3IubmFtZSB8fFxuICAgICAgICAgIFwiT2JqZWN0XCI7XG4gICAgICAgIEpTQ29tcGlsZXJfdGVtcF9jb25zdC5jYWxsKFxuICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCxcbiAgICAgICAgICBcIlRoZSBwcm92aWRlZCBrZXkgaXMgYW4gdW5zdXBwb3J0ZWQgdHlwZSAlcy4gVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIHVzaW5nIGl0IGhlcmUuXCIsXG4gICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBkaXNhYmxlZExvZygpIHt9XG4gICAgZnVuY3Rpb24gZGlzYWJsZUxvZ3MoKSB7XG4gICAgICBpZiAoMCA9PT0gZGlzYWJsZWREZXB0aCkge1xuICAgICAgICBwcmV2TG9nID0gY29uc29sZS5sb2c7XG4gICAgICAgIHByZXZJbmZvID0gY29uc29sZS5pbmZvO1xuICAgICAgICBwcmV2V2FybiA9IGNvbnNvbGUud2FybjtcbiAgICAgICAgcHJldkVycm9yID0gY29uc29sZS5lcnJvcjtcbiAgICAgICAgcHJldkdyb3VwID0gY29uc29sZS5ncm91cDtcbiAgICAgICAgcHJldkdyb3VwQ29sbGFwc2VkID0gY29uc29sZS5ncm91cENvbGxhcHNlZDtcbiAgICAgICAgcHJldkdyb3VwRW5kID0gY29uc29sZS5ncm91cEVuZDtcbiAgICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICAgICAgdmFsdWU6IGRpc2FibGVkTG9nLFxuICAgICAgICAgIHdyaXRhYmxlOiAhMFxuICAgICAgICB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgICAgaW5mbzogcHJvcHMsXG4gICAgICAgICAgbG9nOiBwcm9wcyxcbiAgICAgICAgICB3YXJuOiBwcm9wcyxcbiAgICAgICAgICBlcnJvcjogcHJvcHMsXG4gICAgICAgICAgZ3JvdXA6IHByb3BzLFxuICAgICAgICAgIGdyb3VwQ29sbGFwc2VkOiBwcm9wcyxcbiAgICAgICAgICBncm91cEVuZDogcHJvcHNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBkaXNhYmxlZERlcHRoKys7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlZW5hYmxlTG9ncygpIHtcbiAgICAgIGRpc2FibGVkRGVwdGgtLTtcbiAgICAgIGlmICgwID09PSBkaXNhYmxlZERlcHRoKSB7XG4gICAgICAgIHZhciBwcm9wcyA9IHsgY29uZmlndXJhYmxlOiAhMCwgZW51bWVyYWJsZTogITAsIHdyaXRhYmxlOiAhMCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgICAgbG9nOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2TG9nIH0pLFxuICAgICAgICAgIGluZm86IGFzc2lnbih7fSwgcHJvcHMsIHsgdmFsdWU6IHByZXZJbmZvIH0pLFxuICAgICAgICAgIHdhcm46IGFzc2lnbih7fSwgcHJvcHMsIHsgdmFsdWU6IHByZXZXYXJuIH0pLFxuICAgICAgICAgIGVycm9yOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2RXJyb3IgfSksXG4gICAgICAgICAgZ3JvdXA6IGFzc2lnbih7fSwgcHJvcHMsIHsgdmFsdWU6IHByZXZHcm91cCB9KSxcbiAgICAgICAgICBncm91cENvbGxhcHNlZDogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkdyb3VwQ29sbGFwc2VkIH0pLFxuICAgICAgICAgIGdyb3VwRW5kOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2R3JvdXBFbmQgfSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAwID4gZGlzYWJsZWREZXB0aCAmJlxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiZGlzYWJsZWREZXB0aCBmZWxsIGJlbG93IHplcm8uIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiXG4gICAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUpIHtcbiAgICAgIGlmICh2b2lkIDAgPT09IHByZWZpeClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgdmFyIG1hdGNoID0geC5zdGFjay50cmltKCkubWF0Y2goL1xcbiggKihhdCApPykvKTtcbiAgICAgICAgICBwcmVmaXggPSAobWF0Y2ggJiYgbWF0Y2hbMV0pIHx8IFwiXCI7XG4gICAgICAgICAgc3VmZml4ID1cbiAgICAgICAgICAgIC0xIDwgeC5zdGFjay5pbmRleE9mKFwiXFxuICAgIGF0XCIpXG4gICAgICAgICAgICAgID8gXCIgKDxhbm9ueW1vdXM+KVwiXG4gICAgICAgICAgICAgIDogLTEgPCB4LnN0YWNrLmluZGV4T2YoXCJAXCIpXG4gICAgICAgICAgICAgICAgPyBcIkB1bmtub3duOjA6MFwiXG4gICAgICAgICAgICAgICAgOiBcIlwiO1xuICAgICAgICB9XG4gICAgICByZXR1cm4gXCJcXG5cIiArIHByZWZpeCArIG5hbWUgKyBzdWZmaXg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGNvbnN0cnVjdCkge1xuICAgICAgaWYgKCFmbiB8fCByZWVudHJ5KSByZXR1cm4gXCJcIjtcbiAgICAgIHZhciBmcmFtZSA9IGNvbXBvbmVudEZyYW1lQ2FjaGUuZ2V0KGZuKTtcbiAgICAgIGlmICh2b2lkIDAgIT09IGZyYW1lKSByZXR1cm4gZnJhbWU7XG4gICAgICByZWVudHJ5ID0gITA7XG4gICAgICBmcmFtZSA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlO1xuICAgICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSB2b2lkIDA7XG4gICAgICB2YXIgcHJldmlvdXNEaXNwYXRjaGVyID0gbnVsbDtcbiAgICAgIHByZXZpb3VzRGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLkg7XG4gICAgICBSZWFjdFNoYXJlZEludGVybmFscy5IID0gbnVsbDtcbiAgICAgIGRpc2FibGVMb2dzKCk7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgUnVuSW5Sb290RnJhbWUgPSB7XG4gICAgICAgICAgRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoY29uc3RydWN0KSB7XG4gICAgICAgICAgICAgICAgdmFyIEZha2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZha2UucHJvdG90eXBlLCBcInByb3BzXCIsIHtcbiAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgUmVmbGVjdCAmJiBSZWZsZWN0LmNvbnN0cnVjdCkge1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoRmFrZSwgW10pO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY29udHJvbCA9IHg7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChmbiwgW10sIEZha2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBGYWtlLmNhbGwoKTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHgkMCkge1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sID0geCQwO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZm4uY2FsbChGYWtlLnByb3RvdHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHgkMSkge1xuICAgICAgICAgICAgICAgICAgY29udHJvbCA9IHgkMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKEZha2UgPSBmbigpKSAmJlxuICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgRmFrZS5jYXRjaCAmJlxuICAgICAgICAgICAgICAgICAgRmFrZS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKHNhbXBsZSkge1xuICAgICAgICAgICAgICBpZiAoc2FtcGxlICYmIGNvbnRyb2wgJiYgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHNhbXBsZS5zdGFjaylcbiAgICAgICAgICAgICAgICByZXR1cm4gW3NhbXBsZS5zdGFjaywgY29udHJvbC5zdGFja107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW251bGwsIG51bGxdO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LmRpc3BsYXlOYW1lID1cbiAgICAgICAgICBcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiO1xuICAgICAgICB2YXIgbmFtZVByb3BEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihcbiAgICAgICAgICBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsXG4gICAgICAgICAgXCJuYW1lXCJcbiAgICAgICAgKTtcbiAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yICYmXG4gICAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSAmJlxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShcbiAgICAgICAgICAgIFJ1bkluUm9vdEZyYW1lLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCxcbiAgICAgICAgICAgIFwibmFtZVwiLFxuICAgICAgICAgICAgeyB2YWx1ZTogXCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIiB9XG4gICAgICAgICAgKTtcbiAgICAgICAgdmFyIF9SdW5JblJvb3RGcmFtZSREZXRlciA9XG4gICAgICAgICAgICBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QoKSxcbiAgICAgICAgICBzYW1wbGVTdGFjayA9IF9SdW5JblJvb3RGcmFtZSREZXRlclswXSxcbiAgICAgICAgICBjb250cm9sU3RhY2sgPSBfUnVuSW5Sb290RnJhbWUkRGV0ZXJbMV07XG4gICAgICAgIGlmIChzYW1wbGVTdGFjayAmJiBjb250cm9sU3RhY2spIHtcbiAgICAgICAgICB2YXIgc2FtcGxlTGluZXMgPSBzYW1wbGVTdGFjay5zcGxpdChcIlxcblwiKSxcbiAgICAgICAgICAgIGNvbnRyb2xMaW5lcyA9IGNvbnRyb2xTdGFjay5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgX1J1bkluUm9vdEZyYW1lJERldGVyID0gbmFtZVByb3BEZXNjcmlwdG9yID0gMDtcbiAgICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvciA8IHNhbXBsZUxpbmVzLmxlbmd0aCAmJlxuICAgICAgICAgICAgIXNhbXBsZUxpbmVzW25hbWVQcm9wRGVzY3JpcHRvcl0uaW5jbHVkZXMoXG4gICAgICAgICAgICAgIFwiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290XCJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICApXG4gICAgICAgICAgICBuYW1lUHJvcERlc2NyaXB0b3IrKztcbiAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgX1J1bkluUm9vdEZyYW1lJERldGVyIDwgY29udHJvbExpbmVzLmxlbmd0aCAmJlxuICAgICAgICAgICAgIWNvbnRyb2xMaW5lc1tfUnVuSW5Sb290RnJhbWUkRGV0ZXJdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgKVxuICAgICAgICAgICAgX1J1bkluUm9vdEZyYW1lJERldGVyKys7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yID09PSBzYW1wbGVMaW5lcy5sZW5ndGggfHxcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA9PT0gY29udHJvbExpbmVzLmxlbmd0aFxuICAgICAgICAgIClcbiAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvciA9IHNhbXBsZUxpbmVzLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICAgICAgX1J1bkluUm9vdEZyYW1lJERldGVyID0gY29udHJvbExpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgIDEgPD0gbmFtZVByb3BEZXNjcmlwdG9yICYmXG4gICAgICAgICAgICAgIDAgPD0gX1J1bkluUm9vdEZyYW1lJERldGVyICYmXG4gICAgICAgICAgICAgIHNhbXBsZUxpbmVzW25hbWVQcm9wRGVzY3JpcHRvcl0gIT09XG4gICAgICAgICAgICAgICAgY29udHJvbExpbmVzW19SdW5JblJvb3RGcmFtZSREZXRlcl07XG5cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgX1J1bkluUm9vdEZyYW1lJERldGVyLS07XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIDEgPD0gbmFtZVByb3BEZXNjcmlwdG9yICYmIDAgPD0gX1J1bkluUm9vdEZyYW1lJERldGVyO1xuICAgICAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yLS0sIF9SdW5JblJvb3RGcmFtZSREZXRlci0tXG4gICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdICE9PVxuICAgICAgICAgICAgICBjb250cm9sTGluZXNbX1J1bkluUm9vdEZyYW1lJERldGVyXVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmICgxICE9PSBuYW1lUHJvcERlc2NyaXB0b3IgfHwgMSAhPT0gX1J1bkluUm9vdEZyYW1lJERldGVyKSB7XG4gICAgICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKG5hbWVQcm9wRGVzY3JpcHRvci0tLFxuICAgICAgICAgICAgICAgICAgICBfUnVuSW5Sb290RnJhbWUkRGV0ZXItLSxcbiAgICAgICAgICAgICAgICAgICAgMCA+IF9SdW5JblJvb3RGcmFtZSREZXRlciB8fFxuICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUxpbmVzW25hbWVQcm9wRGVzY3JpcHRvcl0gIT09XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sTGluZXNbX1J1bkluUm9vdEZyYW1lJERldGVyXSlcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2ZyYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxcblwiICtcbiAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBhdCBuZXcgXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBhdCBcIlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGZuLmRpc3BsYXlOYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgX2ZyYW1lLmluY2x1ZGVzKFwiPGFub255bW91cz5cIikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoX2ZyYW1lID0gX2ZyYW1lLnJlcGxhY2UoXCI8YW5vbnltb3VzPlwiLCBmbi5kaXNwbGF5TmFtZSkpO1xuICAgICAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBmbiAmJlxuICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEZyYW1lQ2FjaGUuc2V0KGZuLCBfZnJhbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2ZyYW1lO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdoaWxlICgxIDw9IG5hbWVQcm9wRGVzY3JpcHRvciAmJiAwIDw9IF9SdW5JblJvb3RGcmFtZSREZXRlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIChyZWVudHJ5ID0gITEpLFxuICAgICAgICAgIChSZWFjdFNoYXJlZEludGVybmFscy5IID0gcHJldmlvdXNEaXNwYXRjaGVyKSxcbiAgICAgICAgICByZWVuYWJsZUxvZ3MoKSxcbiAgICAgICAgICAoRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBmcmFtZSk7XG4gICAgICB9XG4gICAgICBzYW1wbGVMaW5lcyA9IChzYW1wbGVMaW5lcyA9IGZuID8gZm4uZGlzcGxheU5hbWUgfHwgZm4ubmFtZSA6IFwiXCIpXG4gICAgICAgID8gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoc2FtcGxlTGluZXMpXG4gICAgICAgIDogXCJcIjtcbiAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGZuICYmIGNvbXBvbmVudEZyYW1lQ2FjaGUuc2V0KGZuLCBzYW1wbGVMaW5lcyk7XG4gICAgICByZXR1cm4gc2FtcGxlTGluZXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlKSB7XG4gICAgICBpZiAobnVsbCA9PSB0eXBlKSByZXR1cm4gXCJcIjtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlKSB7XG4gICAgICAgIHZhciBwcm90b3R5cGUgPSB0eXBlLnByb3RvdHlwZTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICAhKCFwcm90b3R5cGUgfHwgIXByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlKSByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUodHlwZSk7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShcIlN1c3BlbnNlXCIpO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoXCJTdXNwZW5zZUxpc3RcIik7XG4gICAgICB9XG4gICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAodHlwZSA9IGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUodHlwZS5yZW5kZXIsICExKSksIHR5cGU7XG4gICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUudHlwZSk7XG4gICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICBwcm90b3R5cGUgPSB0eXBlLl9wYXlsb2FkO1xuICAgICAgICAgICAgdHlwZSA9IHR5cGUuX2luaXQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUocHJvdG90eXBlKSk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0T3duZXIoKSB7XG4gICAgICB2YXIgZGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLkE7XG4gICAgICByZXR1cm4gbnVsbCA9PT0gZGlzcGF0Y2hlciA/IG51bGwgOiBkaXNwYXRjaGVyLmdldE93bmVyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhc1ZhbGlkS2V5KGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBcImtleVwiKSkge1xuICAgICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsIFwia2V5XCIpLmdldDtcbiAgICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHJldHVybiAhMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2b2lkIDAgIT09IGNvbmZpZy5rZXk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuICAgICAgZnVuY3Rpb24gd2FybkFib3V0QWNjZXNzaW5nS2V5KCkge1xuICAgICAgICBzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biB8fFxuICAgICAgICAgICgoc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSAhMCksXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiJXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSB2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50IHByb3AuIChodHRwczovL3JlYWN0LmRldi9saW5rL3NwZWNpYWwtcHJvcHMpXCIsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZVxuICAgICAgICAgICkpO1xuICAgICAgfVxuICAgICAgd2FybkFib3V0QWNjZXNzaW5nS2V5LmlzUmVhY3RXYXJuaW5nID0gITA7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsIFwia2V5XCIsIHtcbiAgICAgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlbGVtZW50UmVmR2V0dGVyV2l0aERlcHJlY2F0aW9uV2FybmluZygpIHtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHRoaXMudHlwZSk7XG4gICAgICBkaWRXYXJuQWJvdXRFbGVtZW50UmVmW2NvbXBvbmVudE5hbWVdIHx8XG4gICAgICAgICgoZGlkV2FybkFib3V0RWxlbWVudFJlZltjb21wb25lbnROYW1lXSA9ICEwKSxcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcIkFjY2Vzc2luZyBlbGVtZW50LnJlZiB3YXMgcmVtb3ZlZCBpbiBSZWFjdCAxOS4gcmVmIGlzIG5vdyBhIHJlZ3VsYXIgcHJvcC4gSXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIEpTWCBFbGVtZW50IHR5cGUgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgICAgICApKTtcbiAgICAgIGNvbXBvbmVudE5hbWUgPSB0aGlzLnByb3BzLnJlZjtcbiAgICAgIHJldHVybiB2b2lkIDAgIT09IGNvbXBvbmVudE5hbWUgPyBjb21wb25lbnROYW1lIDogbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgICAgIHNlbGYgPSBwcm9wcy5yZWY7XG4gICAgICB0eXBlID0ge1xuICAgICAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICBfb3duZXI6IG93bmVyXG4gICAgICB9O1xuICAgICAgbnVsbCAhPT0gKHZvaWQgMCAhPT0gc2VsZiA/IHNlbGYgOiBudWxsKVxuICAgICAgICA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBcInJlZlwiLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgIGdldDogZWxlbWVudFJlZkdldHRlcldpdGhEZXByZWNhdGlvbldhcm5pbmdcbiAgICAgICAgICB9KVxuICAgICAgICA6IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBcInJlZlwiLCB7IGVudW1lcmFibGU6ICExLCB2YWx1ZTogbnVsbCB9KTtcbiAgICAgIHR5cGUuX3N0b3JlID0ge307XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodHlwZS5fc3RvcmUsIFwidmFsaWRhdGVkXCIsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgdmFsdWU6IDBcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIFwiX2RlYnVnSW5mb1wiLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5mcmVlemUgJiYgKE9iamVjdC5mcmVlemUodHlwZS5wcm9wcyksIE9iamVjdC5mcmVlemUodHlwZSkpO1xuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGpzeERFVkltcGwoXG4gICAgICB0eXBlLFxuICAgICAgY29uZmlnLFxuICAgICAgbWF5YmVLZXksXG4gICAgICBpc1N0YXRpY0NoaWxkcmVuLFxuICAgICAgc291cmNlLFxuICAgICAgc2VsZlxuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgdHlwZSB8fFxuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlIHx8XG4gICAgICAgIHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUgfHxcbiAgICAgICAgdHlwZSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRSB8fFxuICAgICAgICB0eXBlID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIHx8XG4gICAgICAgIHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX1RZUEUgfHxcbiAgICAgICAgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIHx8XG4gICAgICAgIHR5cGUgPT09IFJFQUNUX09GRlNDUkVFTl9UWVBFIHx8XG4gICAgICAgIChcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSAmJlxuICAgICAgICAgIG51bGwgIT09IHR5cGUgJiZcbiAgICAgICAgICAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFIHx8XG4gICAgICAgICAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHxcbiAgICAgICAgICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSB8fFxuICAgICAgICAgICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OU1VNRVJfVFlQRSB8fFxuICAgICAgICAgICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fFxuICAgICAgICAgICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSQxIHx8XG4gICAgICAgICAgICB2b2lkIDAgIT09IHR5cGUuZ2V0TW9kdWxlSWQpKVxuICAgICAgKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IGNvbmZpZy5jaGlsZHJlbjtcbiAgICAgICAgaWYgKHZvaWQgMCAhPT0gY2hpbGRyZW4pXG4gICAgICAgICAgaWYgKGlzU3RhdGljQ2hpbGRyZW4pXG4gICAgICAgICAgICBpZiAoaXNBcnJheUltcGwoY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgICAgaXNTdGF0aWNDaGlsZHJlbiA9IDA7XG4gICAgICAgICAgICAgICAgaXNTdGF0aWNDaGlsZHJlbiA8IGNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpc1N0YXRpY0NoaWxkcmVuKytcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGNoaWxkcmVuW2lzU3RhdGljQ2hpbGRyZW5dLCB0eXBlKTtcbiAgICAgICAgICAgICAgT2JqZWN0LmZyZWV6ZSAmJiBPYmplY3QuZnJlZXplKGNoaWxkcmVuKTtcbiAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiUmVhY3QuanN4OiBTdGF0aWMgY2hpbGRyZW4gc2hvdWxkIGFsd2F5cyBiZSBhbiBhcnJheS4gWW91IGFyZSBsaWtlbHkgZXhwbGljaXRseSBjYWxsaW5nIFJlYWN0LmpzeHMgb3IgUmVhY3QuanN4REVWLiBVc2UgdGhlIEJhYmVsIHRyYW5zZm9ybSBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgZWxzZSB2YWxpZGF0ZUNoaWxkS2V5cyhjaGlsZHJlbiwgdHlwZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZHJlbiA9IFwiXCI7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB2b2lkIDAgPT09IHR5cGUgfHxcbiAgICAgICAgICAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUgJiZcbiAgICAgICAgICAgIG51bGwgIT09IHR5cGUgJiZcbiAgICAgICAgICAgIDAgPT09IE9iamVjdC5rZXlzKHR5cGUpLmxlbmd0aClcbiAgICAgICAgKVxuICAgICAgICAgIGNoaWxkcmVuICs9XG4gICAgICAgICAgICBcIiBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91ciBjb21wb25lbnQgZnJvbSB0aGUgZmlsZSBpdCdzIGRlZmluZWQgaW4sIG9yIHlvdSBtaWdodCBoYXZlIG1peGVkIHVwIGRlZmF1bHQgYW5kIG5hbWVkIGltcG9ydHMuXCI7XG4gICAgICAgIG51bGwgPT09IHR5cGVcbiAgICAgICAgICA/IChpc1N0YXRpY0NoaWxkcmVuID0gXCJudWxsXCIpXG4gICAgICAgICAgOiBpc0FycmF5SW1wbCh0eXBlKVxuICAgICAgICAgICAgPyAoaXNTdGF0aWNDaGlsZHJlbiA9IFwiYXJyYXlcIilcbiAgICAgICAgICAgIDogdm9pZCAwICE9PSB0eXBlICYmIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxuICAgICAgICAgICAgICA/ICgoaXNTdGF0aWNDaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICBcIjxcIiArXG4gICAgICAgICAgICAgICAgICAoZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgXCJVbmtub3duXCIpICtcbiAgICAgICAgICAgICAgICAgIFwiIC8+XCIpLFxuICAgICAgICAgICAgICAgIChjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICBcIiBEaWQgeW91IGFjY2lkZW50YWxseSBleHBvcnQgYSBKU1ggbGl0ZXJhbCBpbnN0ZWFkIG9mIGEgY29tcG9uZW50P1wiKSlcbiAgICAgICAgICAgICAgOiAoaXNTdGF0aWNDaGlsZHJlbiA9IHR5cGVvZiB0eXBlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcIlJlYWN0LmpzeDogdHlwZSBpcyBpbnZhbGlkIC0tIGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgYnVpbHQtaW4gY29tcG9uZW50cykgb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKSBidXQgZ290OiAlcy4lc1wiLFxuICAgICAgICAgIGlzU3RhdGljQ2hpbGRyZW4sXG4gICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgXCJrZXlcIikpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSk7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoY29uZmlnKS5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICByZXR1cm4gXCJrZXlcIiAhPT0gaztcbiAgICAgICAgfSk7XG4gICAgICAgIGlzU3RhdGljQ2hpbGRyZW4gPVxuICAgICAgICAgIDAgPCBrZXlzLmxlbmd0aFxuICAgICAgICAgICAgPyBcIntrZXk6IHNvbWVLZXksIFwiICsga2V5cy5qb2luKFwiOiAuLi4sIFwiKSArIFwiOiAuLi59XCJcbiAgICAgICAgICAgIDogXCJ7a2V5OiBzb21lS2V5fVwiO1xuICAgICAgICBkaWRXYXJuQWJvdXRLZXlTcHJlYWRbY2hpbGRyZW4gKyBpc1N0YXRpY0NoaWxkcmVuXSB8fFxuICAgICAgICAgICgoa2V5cyA9XG4gICAgICAgICAgICAwIDwga2V5cy5sZW5ndGggPyBcIntcIiArIGtleXMuam9pbihcIjogLi4uLCBcIikgKyBcIjogLi4ufVwiIDogXCJ7fVwiKSxcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgJ0EgcHJvcHMgb2JqZWN0IGNvbnRhaW5pbmcgYSBcImtleVwiIHByb3AgaXMgYmVpbmcgc3ByZWFkIGludG8gSlNYOlxcbiAgbGV0IHByb3BzID0gJXM7XFxuICA8JXMgey4uLnByb3BzfSAvPlxcblJlYWN0IGtleXMgbXVzdCBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gSlNYIHdpdGhvdXQgdXNpbmcgc3ByZWFkOlxcbiAgbGV0IHByb3BzID0gJXM7XFxuICA8JXMga2V5PXtzb21lS2V5fSB7Li4ucHJvcHN9IC8+JyxcbiAgICAgICAgICAgIGlzU3RhdGljQ2hpbGRyZW4sXG4gICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIGtleXMsXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgICksXG4gICAgICAgICAgKGRpZFdhcm5BYm91dEtleVNwcmVhZFtjaGlsZHJlbiArIGlzU3RhdGljQ2hpbGRyZW5dID0gITApKTtcbiAgICAgIH1cbiAgICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgICAgIHZvaWQgMCAhPT0gbWF5YmVLZXkgJiZcbiAgICAgICAgKGNoZWNrS2V5U3RyaW5nQ29lcmNpb24obWF5YmVLZXkpLCAoY2hpbGRyZW4gPSBcIlwiICsgbWF5YmVLZXkpKTtcbiAgICAgIGhhc1ZhbGlkS2V5KGNvbmZpZykgJiZcbiAgICAgICAgKGNoZWNrS2V5U3RyaW5nQ29lcmNpb24oY29uZmlnLmtleSksIChjaGlsZHJlbiA9IFwiXCIgKyBjb25maWcua2V5KSk7XG4gICAgICBpZiAoXCJrZXlcIiBpbiBjb25maWcpIHtcbiAgICAgICAgbWF5YmVLZXkgPSB7fTtcbiAgICAgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gY29uZmlnKVxuICAgICAgICAgIFwia2V5XCIgIT09IHByb3BOYW1lICYmIChtYXliZUtleVtwcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdKTtcbiAgICAgIH0gZWxzZSBtYXliZUtleSA9IGNvbmZpZztcbiAgICAgIGNoaWxkcmVuICYmXG4gICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKFxuICAgICAgICAgIG1heWJlS2V5LFxuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGVcbiAgICAgICAgICAgID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgXCJVbmtub3duXCJcbiAgICAgICAgICAgIDogdHlwZVxuICAgICAgICApO1xuICAgICAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBjaGlsZHJlbiwgc2VsZiwgc291cmNlLCBnZXRPd25lcigpLCBtYXliZUtleSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKG5vZGUsIHBhcmVudFR5cGUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG5vZGUgJiZcbiAgICAgICAgbm9kZSAmJlxuICAgICAgICBub2RlLiQkdHlwZW9mICE9PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFXG4gICAgICApXG4gICAgICAgIGlmIChpc0FycmF5SW1wbChub2RlKSlcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjaGlsZCA9IG5vZGVbaV07XG4gICAgICAgICAgICBpc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgdmFsaWRhdGVFeHBsaWNpdEtleShjaGlsZCwgcGFyZW50VHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSlcbiAgICAgICAgICBub2RlLl9zdG9yZSAmJiAobm9kZS5fc3RvcmUudmFsaWRhdGVkID0gMSk7XG4gICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgIChudWxsID09PSBub2RlIHx8IFwib2JqZWN0XCIgIT09IHR5cGVvZiBub2RlXG4gICAgICAgICAgICA/IChpID0gbnVsbClcbiAgICAgICAgICAgIDogKChpID1cbiAgICAgICAgICAgICAgICAoTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG5vZGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSkgfHxcbiAgICAgICAgICAgICAgICBub2RlW1wiQEBpdGVyYXRvclwiXSksXG4gICAgICAgICAgICAgIChpID0gXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaSA/IGkgOiBudWxsKSksXG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaSAmJlxuICAgICAgICAgICAgaSAhPT0gbm9kZS5lbnRyaWVzICYmXG4gICAgICAgICAgICAoKGkgPSBpLmNhbGwobm9kZSkpLCBpICE9PSBub2RlKSlcbiAgICAgICAgKVxuICAgICAgICAgIGZvciAoOyAhKG5vZGUgPSBpLm5leHQoKSkuZG9uZTsgKVxuICAgICAgICAgICAgaXNWYWxpZEVsZW1lbnQobm9kZS52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShub2RlLnZhbHVlLCBwYXJlbnRUeXBlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQob2JqZWN0KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2Ygb2JqZWN0ICYmXG4gICAgICAgIG51bGwgIT09IG9iamVjdCAmJlxuICAgICAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdmFsaWRhdGVFeHBsaWNpdEtleShlbGVtZW50LCBwYXJlbnRUeXBlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGVsZW1lbnQuX3N0b3JlICYmXG4gICAgICAgICFlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgJiZcbiAgICAgICAgbnVsbCA9PSBlbGVtZW50LmtleSAmJlxuICAgICAgICAoKGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IDEpLFxuICAgICAgICAocGFyZW50VHlwZSA9IGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSkpLFxuICAgICAgICAhb3duZXJIYXNLZXlVc2VXYXJuaW5nW3BhcmVudFR5cGVdKVxuICAgICAgKSB7XG4gICAgICAgIG93bmVySGFzS2V5VXNlV2FybmluZ1twYXJlbnRUeXBlXSA9ICEwO1xuICAgICAgICB2YXIgY2hpbGRPd25lciA9IFwiXCI7XG4gICAgICAgIGVsZW1lbnQgJiZcbiAgICAgICAgICBudWxsICE9IGVsZW1lbnQuX293bmVyICYmXG4gICAgICAgICAgZWxlbWVudC5fb3duZXIgIT09IGdldE93bmVyKCkgJiZcbiAgICAgICAgICAoKGNoaWxkT3duZXIgPSBudWxsKSxcbiAgICAgICAgICBcIm51bWJlclwiID09PSB0eXBlb2YgZWxlbWVudC5fb3duZXIudGFnXG4gICAgICAgICAgICA/IChjaGlsZE93bmVyID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGVsZW1lbnQuX293bmVyLnR5cGUpKVxuICAgICAgICAgICAgOiBcInN0cmluZ1wiID09PSB0eXBlb2YgZWxlbWVudC5fb3duZXIubmFtZSAmJlxuICAgICAgICAgICAgICAoY2hpbGRPd25lciA9IGVsZW1lbnQuX293bmVyLm5hbWUpLFxuICAgICAgICAgIChjaGlsZE93bmVyID0gXCIgSXQgd2FzIHBhc3NlZCBhIGNoaWxkIGZyb20gXCIgKyBjaGlsZE93bmVyICsgXCIuXCIpKTtcbiAgICAgICAgdmFyIHByZXZHZXRDdXJyZW50U3RhY2sgPSBSZWFjdFNoYXJlZEludGVybmFscy5nZXRDdXJyZW50U3RhY2s7XG4gICAgICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzLmdldEN1cnJlbnRTdGFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlKTtcbiAgICAgICAgICBwcmV2R2V0Q3VycmVudFN0YWNrICYmIChzdGFjayArPSBwcmV2R2V0Q3VycmVudFN0YWNrKCkgfHwgXCJcIik7XG4gICAgICAgICAgcmV0dXJuIHN0YWNrO1xuICAgICAgICB9O1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdFYWNoIGNoaWxkIGluIGEgbGlzdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiIHByb3AuJXMlcyBTZWUgaHR0cHM6Ly9yZWFjdC5kZXYvbGluay93YXJuaW5nLWtleXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyxcbiAgICAgICAgICBwYXJlbnRUeXBlLFxuICAgICAgICAgIGNoaWxkT3duZXJcbiAgICAgICAgKTtcbiAgICAgICAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuZ2V0Q3VycmVudFN0YWNrID0gcHJldkdldEN1cnJlbnRTdGFjaztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7XG4gICAgICB2YXIgaW5mbyA9IFwiXCIsXG4gICAgICAgIG93bmVyID0gZ2V0T3duZXIoKTtcbiAgICAgIG93bmVyICYmXG4gICAgICAgIChvd25lciA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShvd25lci50eXBlKSkgJiZcbiAgICAgICAgKGluZm8gPSBcIlxcblxcbkNoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGBcIiArIG93bmVyICsgXCJgLlwiKTtcbiAgICAgIGluZm8gfHxcbiAgICAgICAgKChwYXJlbnRUeXBlID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHBhcmVudFR5cGUpKSAmJlxuICAgICAgICAgIChpbmZvID1cbiAgICAgICAgICAgIFwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIgKyBwYXJlbnRUeXBlICsgXCI+LlwiKSk7XG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG4gICAgdmFyIFJlYWN0ID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9yZWFjdFwiKSxcbiAgICAgIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKSxcbiAgICAgIFJFQUNUX1BPUlRBTF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxcbiAgICAgIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksXG4gICAgICBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLFxuICAgICAgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTtcbiAgICBTeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik7XG4gICAgdmFyIFJFQUNUX0NPTlNVTUVSX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29uc3VtZXJcIiksXG4gICAgICBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxcbiAgICAgIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksXG4gICAgICBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLFxuICAgICAgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIiksXG4gICAgICBSRUFDVF9NRU1PX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxcbiAgICAgIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLFxuICAgICAgUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Qub2Zmc2NyZWVuXCIpLFxuICAgICAgTUFZQkVfSVRFUkFUT1JfU1lNQk9MID0gU3ltYm9sLml0ZXJhdG9yLFxuICAgICAgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSQyID0gU3ltYm9sLmZvcihcInJlYWN0LmNsaWVudC5yZWZlcmVuY2VcIiksXG4gICAgICBSZWFjdFNoYXJlZEludGVybmFscyA9XG4gICAgICAgIFJlYWN0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxcbiAgICAgIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxcbiAgICAgIGFzc2lnbiA9IE9iamVjdC5hc3NpZ24sXG4gICAgICBSRUFDVF9DTElFTlRfUkVGRVJFTkNFJDEgPSBTeW1ib2wuZm9yKFwicmVhY3QuY2xpZW50LnJlZmVyZW5jZVwiKSxcbiAgICAgIGlzQXJyYXlJbXBsID0gQXJyYXkuaXNBcnJheSxcbiAgICAgIGRpc2FibGVkRGVwdGggPSAwLFxuICAgICAgcHJldkxvZyxcbiAgICAgIHByZXZJbmZvLFxuICAgICAgcHJldldhcm4sXG4gICAgICBwcmV2RXJyb3IsXG4gICAgICBwcmV2R3JvdXAsXG4gICAgICBwcmV2R3JvdXBDb2xsYXBzZWQsXG4gICAgICBwcmV2R3JvdXBFbmQ7XG4gICAgZGlzYWJsZWRMb2cuX19yZWFjdERpc2FibGVkTG9nID0gITA7XG4gICAgdmFyIHByZWZpeCxcbiAgICAgIHN1ZmZpeCxcbiAgICAgIHJlZW50cnkgPSAhMTtcbiAgICB2YXIgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyAoXG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBXZWFrTWFwID8gV2Vha01hcCA6IE1hcFxuICAgICkoKTtcbiAgICB2YXIgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpLFxuICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd247XG4gICAgdmFyIGRpZFdhcm5BYm91dEVsZW1lbnRSZWYgPSB7fTtcbiAgICB2YXIgZGlkV2FybkFib3V0S2V5U3ByZWFkID0ge30sXG4gICAgICBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcbiAgICBleHBvcnRzLkZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbiAgICBleHBvcnRzLmpzeERFViA9IGZ1bmN0aW9uIChcbiAgICAgIHR5cGUsXG4gICAgICBjb25maWcsXG4gICAgICBtYXliZUtleSxcbiAgICAgIGlzU3RhdGljQ2hpbGRyZW4sXG4gICAgICBzb3VyY2UsXG4gICAgICBzZWxmXG4gICAgKSB7XG4gICAgICByZXR1cm4ganN4REVWSW1wbCh0eXBlLCBjb25maWcsIG1heWJlS2V5LCBpc1N0YXRpY0NoaWxkcmVuLCBzb3VyY2UsIHNlbGYpO1xuICAgIH07XG4gIH0pKCk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/next/dist/compiled/react/jsx-dev-runtime.js ***!
|
||
\******************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-jsx-dev-runtime.development.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSw4TEFBc0U7QUFDeEUiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGNvbXBpbGVkXFxyZWFjdFxcanN4LWRldi1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@hookform/resolvers/dist/resolvers.mjs":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/@hookform/resolvers/dist/resolvers.mjs ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ toNestErrors: () => (/* binding */ s),\n/* harmony export */ validateFieldsNatively: () => (/* binding */ o)\n/* harmony export */ });\n/* harmony import */ var react_hook_form__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-hook-form */ \"(app-pages-browser)/./node_modules/react-hook-form/dist/index.esm.mjs\");\nconst r=(t,r,o)=>{if(t&&\"reportValidity\"in t){const s=(0,react_hook_form__WEBPACK_IMPORTED_MODULE_0__.get)(o,r);t.setCustomValidity(s&&s.message||\"\"),t.reportValidity()}},o=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&\"reportValidity\"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e))}},s=(r,s)=>{s.shouldUseNativeValidation&&o(r,s);const n={};for(const o in r){const f=(0,react_hook_form__WEBPACK_IMPORTED_MODULE_0__.get)(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i(s.names||Object.keys(r),o)){const r=Object.assign({},(0,react_hook_form__WEBPACK_IMPORTED_MODULE_0__.get)(n,o));(0,react_hook_form__WEBPACK_IMPORTED_MODULE_0__.set)(r,\"root\",c),(0,react_hook_form__WEBPACK_IMPORTED_MODULE_0__.set)(n,o,r)}else (0,react_hook_form__WEBPACK_IMPORTED_MODULE_0__.set)(n,o,c)}return n},i=(e,t)=>{const r=n(t);return e.some(e=>n(e).match(`^${r}\\\\.\\\\d+`))};function n(e){return e.replace(/\\]|\\[/g,\"\")}\n//# sourceMappingURL=resolvers.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AaG9va2Zvcm0vcmVzb2x2ZXJzL2Rpc3QvcmVzb2x2ZXJzLm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBK0Msa0JBQWtCLDRCQUE0QixRQUFRLG9EQUFDLE1BQU0sMERBQTBELFdBQVcseUJBQXlCLG9CQUFvQix3RkFBd0YsV0FBVyxvQ0FBb0MsV0FBVyxrQkFBa0IsUUFBUSxvREFBQyxxQ0FBcUMsRUFBRSxhQUFhLEVBQUUsaUNBQWlDLHdCQUF3QixDQUFDLG9EQUFDLE9BQU8sb0RBQUMsYUFBYSxvREFBQyxRQUFRLEtBQUssb0RBQUMsUUFBUSxTQUFTLFdBQVcsYUFBYSxnQ0FBZ0MsRUFBRSxZQUFZLGNBQWMsOEJBQW9GO0FBQ3p0QiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQGhvb2tmb3JtXFxyZXNvbHZlcnNcXGRpc3RcXHJlc29sdmVycy5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0e2dldCBhcyBlLHNldCBhcyB0fWZyb21cInJlYWN0LWhvb2stZm9ybVwiO2NvbnN0IHI9KHQscixvKT0+e2lmKHQmJlwicmVwb3J0VmFsaWRpdHlcImluIHQpe2NvbnN0IHM9ZShvLHIpO3Quc2V0Q3VzdG9tVmFsaWRpdHkocyYmcy5tZXNzYWdlfHxcIlwiKSx0LnJlcG9ydFZhbGlkaXR5KCl9fSxvPShlLHQpPT57Zm9yKGNvbnN0IG8gaW4gdC5maWVsZHMpe2NvbnN0IHM9dC5maWVsZHNbb107cyYmcy5yZWYmJlwicmVwb3J0VmFsaWRpdHlcImluIHMucmVmP3Iocy5yZWYsbyxlKTpzJiZzLnJlZnMmJnMucmVmcy5mb3JFYWNoKHQ9PnIodCxvLGUpKX19LHM9KHIscyk9PntzLnNob3VsZFVzZU5hdGl2ZVZhbGlkYXRpb24mJm8ocixzKTtjb25zdCBuPXt9O2Zvcihjb25zdCBvIGluIHIpe2NvbnN0IGY9ZShzLmZpZWxkcyxvKSxjPU9iamVjdC5hc3NpZ24ocltvXXx8e30se3JlZjpmJiZmLnJlZn0pO2lmKGkocy5uYW1lc3x8T2JqZWN0LmtleXMociksbykpe2NvbnN0IHI9T2JqZWN0LmFzc2lnbih7fSxlKG4sbykpO3QocixcInJvb3RcIixjKSx0KG4sbyxyKX1lbHNlIHQobixvLGMpfXJldHVybiBufSxpPShlLHQpPT57Y29uc3Qgcj1uKHQpO3JldHVybiBlLnNvbWUoZT0+bihlKS5tYXRjaChgXiR7cn1cXFxcLlxcXFxkK2ApKX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9cXF18XFxbL2csXCJcIil9ZXhwb3J0e3MgYXMgdG9OZXN0RXJyb3JzLG8gYXMgdmFsaWRhdGVGaWVsZHNOYXRpdmVseX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXNvbHZlcnMubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@hookform/resolvers/dist/resolvers.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@hookform/resolvers/zod/dist/zod.mjs":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@hookform/resolvers/zod/dist/zod.mjs ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ zodResolver: () => (/* binding */ a)\n/* harmony export */ });\n/* harmony import */ var _hookform_resolvers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @hookform/resolvers */ \"(app-pages-browser)/./node_modules/@hookform/resolvers/dist/resolvers.mjs\");\n/* harmony import */ var react_hook_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-hook-form */ \"(app-pages-browser)/./node_modules/react-hook-form/dist/index.esm.mjs\");\n/* harmony import */ var zod_v4_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zod/v4/core */ \"(app-pages-browser)/./node_modules/zod/v4/core/index.js\");\nfunction t(r,e){try{var o=r()}catch(r){return e(r)}return o&&o.then?o.then(void 0,e):o}function s(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"unionErrors\"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=(0,react_hook_form__WEBPACK_IMPORTED_MODULE_2__.appendErrors)(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function i(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"invalid_union\"===t.code&&t.errors.length>0){var u=t.errors[0][0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"invalid_union\"===t.code&&t.errors.forEach(function(e){return e.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=(0,react_hook_form__WEBPACK_IMPORTED_MODULE_2__.appendErrors)(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function a(o,a,u){if(void 0===u&&(u={}),function(r){return\"_def\"in r&&\"object\"==typeof r._def&&\"typeName\"in r._def}(o))return function(n,i,c){try{return Promise.resolve(t(function(){return Promise.resolve(o[\"sync\"===u.mode?\"parse\":\"parseAsync\"](n,a)).then(function(e){return c.shouldUseNativeValidation&&(0,_hookform_resolvers__WEBPACK_IMPORTED_MODULE_0__.validateFieldsNatively)({},c),{errors:{},values:u.raw?Object.assign({},n):e}})},function(r){if(function(r){return Array.isArray(null==r?void 0:r.issues)}(r))return{values:{},errors:(0,_hookform_resolvers__WEBPACK_IMPORTED_MODULE_0__.toNestErrors)(s(r.errors,!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};if(function(r){return\"_zod\"in r&&\"object\"==typeof r._zod}(o))return function(s,c,f){try{return Promise.resolve(t(function(){return Promise.resolve((\"sync\"===u.mode?zod_v4_core__WEBPACK_IMPORTED_MODULE_1__.parse:zod_v4_core__WEBPACK_IMPORTED_MODULE_1__.parseAsync)(o,s,a)).then(function(e){return f.shouldUseNativeValidation&&(0,_hookform_resolvers__WEBPACK_IMPORTED_MODULE_0__.validateFieldsNatively)({},f),{errors:{},values:u.raw?Object.assign({},s):e}})},function(r){if(function(r){return r instanceof zod_v4_core__WEBPACK_IMPORTED_MODULE_1__.$ZodError}(r))return{values:{},errors:(0,_hookform_resolvers__WEBPACK_IMPORTED_MODULE_0__.toNestErrors)(i(r.issues,!f.shouldUseNativeValidation&&\"all\"===f.criteriaMode),f)};throw r}))}catch(r){return Promise.reject(r)}};throw new Error(\"Invalid input: not a Zod schema\")}\n//# sourceMappingURL=zod.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AaG9va2Zvcm0vcmVzb2x2ZXJzL3pvZC9kaXN0L3pvZC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUE0SixnQkFBZ0IsSUFBSSxVQUFVLFNBQVMsWUFBWSxvQ0FBb0MsZ0JBQWdCLGFBQWEsU0FBUyxFQUFFLG1EQUFtRCwrQkFBK0IsaUNBQWlDLE1BQU0sK0JBQStCLFdBQVcsa0JBQWtCLHdEQUF3RCxvQ0FBb0MsaUJBQWlCLEVBQUUsS0FBSyxnQ0FBZ0MsS0FBSyw2REFBQyw2Q0FBNkMsVUFBVSxTQUFTLGdCQUFnQixhQUFhLFNBQVMsRUFBRSxtREFBbUQseURBQXlELHFCQUFxQixNQUFNLCtCQUErQixXQUFXLGtCQUFrQiwwREFBMEQsNkJBQTZCLGlCQUFpQixFQUFFLEtBQUssZ0NBQWdDLEtBQUssNkRBQUMsNkNBQTZDLFVBQVUsU0FBUyxrQkFBa0Isb0JBQW9CLGNBQWMsK0RBQStELDJCQUEyQixJQUFJLG9DQUFvQyxzRkFBc0Ysb0NBQW9DLDJFQUFDLEdBQUcsS0FBSyxTQUFTLDhCQUE4QixPQUFPLEVBQUUsYUFBYSxlQUFlLDhDQUE4QyxXQUFXLFNBQVMsUUFBUSxpRUFBQyxzRUFBc0UsUUFBUSxHQUFHLFNBQVMsMkJBQTJCLGVBQWUsMENBQTBDLDJCQUEyQixJQUFJLG9DQUFvQyx3Q0FBd0MsOENBQU8sQ0FBQyxtREFBWSwyQkFBMkIsb0NBQW9DLDJFQUFDLEdBQUcsS0FBSyxTQUFTLDhCQUE4QixPQUFPLEVBQUUsYUFBYSxlQUFlLG9CQUFvQixrREFBVyxDQUFDLFdBQVcsU0FBUyxRQUFRLGlFQUFDLHNFQUFzRSxRQUFRLEdBQUcsU0FBUywyQkFBMkIsbURBQTRFO0FBQ3p2RSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQGhvb2tmb3JtXFxyZXNvbHZlcnNcXHpvZFxcZGlzdFxcem9kLm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnR7dmFsaWRhdGVGaWVsZHNOYXRpdmVseSBhcyByLHRvTmVzdEVycm9ycyBhcyBlfWZyb21cIkBob29rZm9ybS9yZXNvbHZlcnNcIjtpbXBvcnR7YXBwZW5kRXJyb3JzIGFzIG99ZnJvbVwicmVhY3QtaG9vay1mb3JtXCI7aW1wb3J0KmFzIG4gZnJvbVwiem9kL3Y0L2NvcmVcIjtmdW5jdGlvbiB0KHIsZSl7dHJ5e3ZhciBvPXIoKX1jYXRjaChyKXtyZXR1cm4gZShyKX1yZXR1cm4gbyYmby50aGVuP28udGhlbih2b2lkIDAsZSk6b31mdW5jdGlvbiBzKHIsZSl7Zm9yKHZhciBuPXt9O3IubGVuZ3RoOyl7dmFyIHQ9clswXSxzPXQuY29kZSxpPXQubWVzc2FnZSxhPXQucGF0aC5qb2luKFwiLlwiKTtpZighblthXSlpZihcInVuaW9uRXJyb3JzXCJpbiB0KXt2YXIgdT10LnVuaW9uRXJyb3JzWzBdLmVycm9yc1swXTtuW2FdPXttZXNzYWdlOnUubWVzc2FnZSx0eXBlOnUuY29kZX19ZWxzZSBuW2FdPXttZXNzYWdlOmksdHlwZTpzfTtpZihcInVuaW9uRXJyb3JzXCJpbiB0JiZ0LnVuaW9uRXJyb3JzLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3JzLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHIucHVzaChlKX0pfSksZSl7dmFyIGM9blthXS50eXBlcyxmPWMmJmNbdC5jb2RlXTtuW2FdPW8oYSxlLG4scyxmP1tdLmNvbmNhdChmLHQubWVzc2FnZSk6dC5tZXNzYWdlKX1yLnNoaWZ0KCl9cmV0dXJuIG59ZnVuY3Rpb24gaShyLGUpe2Zvcih2YXIgbj17fTtyLmxlbmd0aDspe3ZhciB0PXJbMF0scz10LmNvZGUsaT10Lm1lc3NhZ2UsYT10LnBhdGguam9pbihcIi5cIik7aWYoIW5bYV0paWYoXCJpbnZhbGlkX3VuaW9uXCI9PT10LmNvZGUmJnQuZXJyb3JzLmxlbmd0aD4wKXt2YXIgdT10LmVycm9yc1swXVswXTtuW2FdPXttZXNzYWdlOnUubWVzc2FnZSx0eXBlOnUuY29kZX19ZWxzZSBuW2FdPXttZXNzYWdlOmksdHlwZTpzfTtpZihcImludmFsaWRfdW5pb25cIj09PXQuY29kZSYmdC5lcnJvcnMuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiByLnB1c2goZSl9KX0pLGUpe3ZhciBjPW5bYV0udHlwZXMsZj1jJiZjW3QuY29kZV07blthXT1vKGEsZSxuLHMsZj9bXS5jb25jYXQoZix0Lm1lc3NhZ2UpOnQubWVzc2FnZSl9ci5zaGlmdCgpfXJldHVybiBufWZ1bmN0aW9uIGEobyxhLHUpe2lmKHZvaWQgMD09PXUmJih1PXt9KSxmdW5jdGlvbihyKXtyZXR1cm5cIl9kZWZcImluIHImJlwib2JqZWN0XCI9PXR5cGVvZiByLl9kZWYmJlwidHlwZU5hbWVcImluIHIuX2RlZn0obykpcmV0dXJuIGZ1bmN0aW9uKG4saSxjKXt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShvW1wic3luY1wiPT09dS5tb2RlP1wicGFyc2VcIjpcInBhcnNlQXN5bmNcIl0obixhKSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gYy5zaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uJiZyKHt9LGMpLHtlcnJvcnM6e30sdmFsdWVzOnUucmF3P09iamVjdC5hc3NpZ24oe30sbik6ZX19KX0sZnVuY3Rpb24ocil7aWYoZnVuY3Rpb24ocil7cmV0dXJuIEFycmF5LmlzQXJyYXkobnVsbD09cj92b2lkIDA6ci5pc3N1ZXMpfShyKSlyZXR1cm57dmFsdWVzOnt9LGVycm9yczplKHMoci5lcnJvcnMsIWMuc2hvdWxkVXNlTmF0aXZlVmFsaWRhdGlvbiYmXCJhbGxcIj09PWMuY3JpdGVyaWFNb2RlKSxjKX07dGhyb3cgcn0pKX1jYXRjaChyKXtyZXR1cm4gUHJvbWlzZS5yZWplY3Qocil9fTtpZihmdW5jdGlvbihyKXtyZXR1cm5cIl96b2RcImluIHImJlwib2JqZWN0XCI9PXR5cGVvZiByLl96b2R9KG8pKXJldHVybiBmdW5jdGlvbihzLGMsZil7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKFwic3luY1wiPT09dS5tb2RlP24ucGFyc2U6bi5wYXJzZUFzeW5jKShvLHMsYSkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGYuc2hvdWxkVXNlTmF0aXZlVmFsaWRhdGlvbiYmcih7fSxmKSx7ZXJyb3JzOnt9LHZhbHVlczp1LnJhdz9PYmplY3QuYXNzaWduKHt9LHMpOmV9fSl9LGZ1bmN0aW9uKHIpe2lmKGZ1bmN0aW9uKHIpe3JldHVybiByIGluc3RhbmNlb2Ygbi4kWm9kRXJyb3J9KHIpKXJldHVybnt2YWx1ZXM6e30sZXJyb3JzOmUoaShyLmlzc3VlcywhZi5zaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uJiZcImFsbFwiPT09Zi5jcml0ZXJpYU1vZGUpLGYpfTt0aHJvdyByfSkpfWNhdGNoKHIpe3JldHVybiBQcm9taXNlLnJlamVjdChyKX19O3Rocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW5wdXQ6IG5vdCBhIFpvZCBzY2hlbWFcIil9ZXhwb3J0e2EgYXMgem9kUmVzb2x2ZXJ9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9em9kLm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@hookform/resolvers/zod/dist/zod.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/number/dist/index.mjs":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/@radix-ui/number/dist/index.mjs ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clamp: () => (/* binding */ clamp)\n/* harmony export */ });\n// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvbnVtYmVyL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEByYWRpeC11aVxcbnVtYmVyXFxkaXN0XFxpbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvY29yZS9udW1iZXIvc3JjL251bWJlci50c1xuZnVuY3Rpb24gY2xhbXAodmFsdWUsIFttaW4sIG1heF0pIHtcbiAgcmV0dXJuIE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCB2YWx1ZSkpO1xufVxuZXhwb3J0IHtcbiAgY2xhbXBcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/number/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/primitive/dist/index.mjs":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/@radix-ui/primitive/dist/index.mjs ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ canUseDOM: () => (/* binding */ canUseDOM),\n/* harmony export */ composeEventHandlers: () => (/* binding */ composeEventHandlers),\n/* harmony export */ getActiveElement: () => (/* binding */ getActiveElement),\n/* harmony export */ getOwnerDocument: () => (/* binding */ getOwnerDocument),\n/* harmony export */ getOwnerWindow: () => (/* binding */ getOwnerWindow),\n/* harmony export */ isFrame: () => (/* binding */ isFrame)\n/* harmony export */ });\n// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcHJpbWl0aXZlL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQSx1RUFBdUUsa0NBQWtDLElBQUk7QUFDN0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsZ0JBQWdCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRRTtBQUNGIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAcmFkaXgtdWlcXHByaW1pdGl2ZVxcZGlzdFxcaW5kZXgubWpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9wcmltaXRpdmUudHN4XG52YXIgY2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuZnVuY3Rpb24gY29tcG9zZUV2ZW50SGFuZGxlcnMob3JpZ2luYWxFdmVudEhhbmRsZXIsIG91ckV2ZW50SGFuZGxlciwgeyBjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlIH0gPSB7fSkge1xuICByZXR1cm4gZnVuY3Rpb24gaGFuZGxlRXZlbnQoZXZlbnQpIHtcbiAgICBvcmlnaW5hbEV2ZW50SGFuZGxlcj8uKGV2ZW50KTtcbiAgICBpZiAoY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID09PSBmYWxzZSB8fCAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuIG91ckV2ZW50SGFuZGxlcj8uKGV2ZW50KTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBnZXRPd25lcldpbmRvdyhlbGVtZW50KSB7XG4gIGlmICghY2FuVXNlRE9NKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGFjY2VzcyB3aW5kb3cgb3V0c2lkZSBvZiB0aGUgRE9NXCIpO1xuICB9XG4gIHJldHVybiBlbGVtZW50Py5vd25lckRvY3VtZW50Py5kZWZhdWx0VmlldyA/PyB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXRPd25lckRvY3VtZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFjYW5Vc2VET00pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYWNjZXNzIGRvY3VtZW50IG91dHNpZGUgb2YgdGhlIERPTVwiKTtcbiAgfVxuICByZXR1cm4gZWxlbWVudD8ub3duZXJEb2N1bWVudCA/PyBkb2N1bWVudDtcbn1cbmZ1bmN0aW9uIGdldEFjdGl2ZUVsZW1lbnQobm9kZSwgYWN0aXZlRGVzY2VuZGFudCA9IGZhbHNlKSB7XG4gIGNvbnN0IHsgYWN0aXZlRWxlbWVudCB9ID0gZ2V0T3duZXJEb2N1bWVudChub2RlKTtcbiAgaWYgKCFhY3RpdmVFbGVtZW50Py5ub2RlTmFtZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChpc0ZyYW1lKGFjdGl2ZUVsZW1lbnQpICYmIGFjdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50KSB7XG4gICAgcmV0dXJuIGdldEFjdGl2ZUVsZW1lbnQoYWN0aXZlRWxlbWVudC5jb250ZW50RG9jdW1lbnQuYm9keSwgYWN0aXZlRGVzY2VuZGFudCk7XG4gIH1cbiAgaWYgKGFjdGl2ZURlc2NlbmRhbnQpIHtcbiAgICBjb25zdCBpZCA9IGFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIpO1xuICAgIGlmIChpZCkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGdldE93bmVyRG9jdW1lbnQoYWN0aXZlRWxlbWVudCkuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhY3RpdmVFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNGcmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50LnRhZ05hbWUgPT09IFwiSUZSQU1FXCI7XG59XG5leHBvcnQge1xuICBjYW5Vc2VET00sXG4gIGNvbXBvc2VFdmVudEhhbmRsZXJzLFxuICBnZXRBY3RpdmVFbGVtZW50LFxuICBnZXRPd25lckRvY3VtZW50LFxuICBnZXRPd25lcldpbmRvdyxcbiAgaXNGcmFtZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/primitive/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-checkbox/dist/index.mjs":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-checkbox/dist/index.mjs ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Checkbox: () => (/* binding */ Checkbox),\n/* harmony export */ CheckboxIndicator: () => (/* binding */ CheckboxIndicator),\n/* harmony export */ Indicator: () => (/* binding */ CheckboxIndicator),\n/* harmony export */ Root: () => (/* binding */ Checkbox),\n/* harmony export */ createCheckboxScope: () => (/* binding */ createCheckboxScope),\n/* harmony export */ unstable_BubbleInput: () => (/* binding */ CheckboxBubbleInput),\n/* harmony export */ unstable_CheckboxBubbleInput: () => (/* binding */ CheckboxBubbleInput),\n/* harmony export */ unstable_CheckboxProvider: () => (/* binding */ CheckboxProvider),\n/* harmony export */ unstable_CheckboxTrigger: () => (/* binding */ CheckboxTrigger),\n/* harmony export */ unstable_Provider: () => (/* binding */ CheckboxProvider),\n/* harmony export */ unstable_Trigger: () => (/* binding */ CheckboxTrigger)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ \"(app-pages-browser)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/primitive */ \"(app-pages-browser)/./node_modules/@radix-ui/primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_previous__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/react-use-previous */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-previous/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-use-size */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-size/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-presence */ \"(app-pages-browser)/./node_modules/@radix-ui/react-presence/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(app-pages-browser)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Checkbox,CheckboxIndicator,Indicator,Root,createCheckboxScope,unstable_BubbleInput,unstable_CheckboxBubbleInput,unstable_CheckboxProvider,unstable_CheckboxTrigger,unstable_Provider,unstable_Trigger auto */ var _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $RefreshSig$();\n// src/checkbox.tsx\n\n\n\n\n\n\n\n\n\n\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)(CHECKBOX_NAME);\nvar [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nfunction CheckboxProvider(props) {\n _s();\n const { __scopeCheckbox, checked: checkedProp, children, defaultChecked, disabled, form, name, onCheckedChange, required, value = \"on\", // @ts-expect-error\n internal_do_not_use_render } = props;\n const [checked, setChecked] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_3__.useControllableState)({\n prop: checkedProp,\n defaultProp: defaultChecked !== null && defaultChecked !== void 0 ? defaultChecked : false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME\n });\n const [control, setControl] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const [bubbleInput, setBubbleInput] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const hasConsumerStoppedPropagationRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : // We set this to true by default so that events bubble to forms without JS (SSR)\n true;\n const context = {\n checked,\n disabled,\n setChecked,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CheckboxProviderImpl, {\n scope: __scopeCheckbox,\n ...context,\n children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n });\n}\n_s(CheckboxProvider, \"erWmz9H8Wqs+VxR/XRycP/H4m58=\", false, function() {\n return [\n _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_3__.useControllableState\n ];\n});\n_c = CheckboxProvider;\nvar TRIGGER_NAME = \"CheckboxTrigger\";\nvar CheckboxTrigger = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_s1((param, forwardedRef)=>{\n let { __scopeCheckbox, onKeyDown, onClick, ...checkboxProps } = param;\n _s1();\n const { control, value, disabled, checked, required, setControl, setChecked, hasConsumerStoppedPropagationRef, isFormControl, bubbleInput } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(forwardedRef, setControl);\n const initialCheckedStateRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(checked);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"CheckboxTrigger.useEffect\": ()=>{\n const form = control === null || control === void 0 ? void 0 : control.form;\n if (form) {\n const reset = {\n \"CheckboxTrigger.useEffect.reset\": ()=>setChecked(initialCheckedStateRef.current)\n }[\"CheckboxTrigger.useEffect.reset\"];\n form.addEventListener(\"reset\", reset);\n return ({\n \"CheckboxTrigger.useEffect\": ()=>form.removeEventListener(\"reset\", reset)\n })[\"CheckboxTrigger.useEffect\"];\n }\n }\n }[\"CheckboxTrigger.useEffect\"], [\n control,\n setChecked\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.button, {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(onKeyDown, (event)=>{\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(onClick, (event)=>{\n setChecked((prevChecked)=>isIndeterminate(prevChecked) ? true : !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n });\n}, \"UpaqeQh+DaUgYF6uZc1DZVlC9/Y=\", false, function() {\n return [\n useCheckboxContext,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs\n ];\n}));\n_c1 = CheckboxTrigger;\nCheckboxTrigger.displayName = TRIGGER_NAME;\nvar Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c2 = (props, forwardedRef)=>{\n const { __scopeCheckbox, name, checked, defaultChecked, required, disabled, value, onCheckedChange, form, ...checkboxProps } = props;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CheckboxProvider, {\n __scopeCheckbox,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: (param)=>{\n let { isFormControl } = param;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n children: [\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CheckboxTrigger, {\n ...checkboxProps,\n ref: forwardedRef,\n __scopeCheckbox\n }),\n isFormControl && /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CheckboxBubbleInput, {\n __scopeCheckbox\n })\n ]\n });\n }\n });\n});\n_c3 = Checkbox;\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = /*#__PURE__*/ _s2(react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c4 = _s2((props, forwardedRef)=>{\n _s2();\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_7__.Presence, {\n present: forceMount || isIndeterminate(context.checked) || context.checked === true,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.span, {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: {\n pointerEvents: \"none\",\n ...props.style\n }\n })\n });\n}, \"XPZjzIIZHUbC5kJgI5B/JOzmD9c=\", false, function() {\n return [\n useCheckboxContext\n ];\n})), \"XPZjzIIZHUbC5kJgI5B/JOzmD9c=\", false, function() {\n return [\n useCheckboxContext\n ];\n});\n_c5 = CheckboxIndicator;\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_s3((param, forwardedRef)=>{\n let { __scopeCheckbox, ...props } = param;\n _s3();\n const { control, hasConsumerStoppedPropagationRef, checked, defaultChecked, required, disabled, name, value, form, bubbleInput, setBubbleInput } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(forwardedRef, setBubbleInput);\n const prevChecked = (0,_radix_ui_react_use_previous__WEBPACK_IMPORTED_MODULE_8__.usePrevious)(checked);\n const controlSize = (0,_radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_9__.useSize)(control);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"CheckboxBubbleInput.useEffect\": ()=>{\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"checked\");\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", {\n bubbles\n });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }\n }[\"CheckboxBubbleInput.useEffect\"], [\n bubbleInput,\n prevChecked,\n checked,\n hasConsumerStoppedPropagationRef\n ]);\n const defaultCheckedRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.input, {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked !== null && defaultChecked !== void 0 ? defaultChecked : defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n });\n}, \"W+TjYTy43Y9Ogv4Exx4hGd0K3Ug=\", false, function() {\n return [\n useCheckboxContext,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs,\n _radix_ui_react_use_previous__WEBPACK_IMPORTED_MODULE_8__.usePrevious,\n _radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_9__.useSize\n ];\n}));\n_c6 = CheckboxBubbleInput;\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\n //# sourceMappingURL=index.mjs.map\nvar _c, _c1, _c2, _c3, _c4, _c5, _c6;\n$RefreshReg$(_c, \"CheckboxProvider\");\n$RefreshReg$(_c1, \"CheckboxTrigger\");\n$RefreshReg$(_c2, \"Checkbox$React.forwardRef\");\n$RefreshReg$(_c3, \"Checkbox\");\n$RefreshReg$(_c4, \"CheckboxIndicator$React.forwardRef\");\n$RefreshReg$(_c5, \"CheckboxIndicator\");\n$RefreshReg$(_c6, \"CheckboxBubbleInput\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY2hlY2tib3gvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBdUI7QUFDUztBQUNHO0FBQ0U7QUFDQTtBQUNUO0FBQ0o7QUFDQztBQUNDO0FBaUd0QjtBQTdGSixJQUFNLGdCQUFnQjtBQUd0QixJQUFNLENBQUMsdUJBQXVCLG1CQUFtQixJQUFJLDJFQUFrQixDQUFDLGFBQWE7QUFxQnJGLElBQU0sQ0FBQyxzQkFBc0Isa0JBQWtCLElBQzdDLHNCQUE0QyxhQUFhO0FBa0IzRCwwQkFDRSxPQUNBOztJQUNBLE1BQU0sRUFDSixpQkFDQSxTQUFTLGFBQ1QsVUFDQSxnQkFDQSxVQUNBLE1BQ0EsTUFDQSxpQkFDQSxVQUNBLFFBQVE7SUFFUiw0QkFDRixHQUFJO0lBRUosTUFBTSxDQUFDLFNBQVMsVUFBVSxpR0FBeUI7UUFDakQsTUFBTTtRQUNOLG9FQUFhLGlCQUFrQjtRQUMvQixVQUFVO1FBQ1YsUUFBUTtJQUNWLENBQUM7SUFDRCxNQUFNLENBQUMsU0FBUyxVQUFVLElBQVUsNENBQW1DLElBQUk7SUFDM0UsTUFBTSxDQUFDLGFBQWEsY0FBYyxJQUFVLDRDQUFrQyxJQUFJO0lBQ2xGLE1BQU0sbUNBQXlDLDBDQUFPLEtBQUs7SUFDM0QsTUFBTSxnQkFBZ0IsVUFDbEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsUUFBUSxNQUFNO0lBRWxDO0lBRUosTUFBTSxVQUF1QztRQUMzQztRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLGdCQUFnQixnQkFBZ0IsY0FBYyxJQUFJLFFBQVE7UUFDMUQ7UUFDQTtRQUNBO0lBQ0Y7SUFFQSxPQUNFLHVFQUFDO1FBQ0MsT0FBTztRQUNOLEdBQUk7UUFFSixxQkFBVywwQkFBMEIsSUFBSSwyQkFBMkIsT0FBTyxJQUFJO0lBQUE7QUFHdEY7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QVMsV0FBVyxPQUFrRDtJQUNwRSxPQUFPLE9BQU8sVUFBVTtBQUMxQjtBQUVBLFNBQVMsZ0JBQWdCLFNBQW9EO0lBQzNFLE9BQU8sWUFBWTtBQUNyQjtBQUVBLFNBQVMsU0FBUyxTQUF1QjtJQUN2QyxPQUFPLGdCQUFnQixPQUFPLElBQUksa0JBQWtCLFVBQVUsWUFBWTtBQUM1RSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxzcmNcXGNoZWNrYm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb21wb3NlZFJlZnMgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzJztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHRTY29wZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jb250ZXh0JztcbmltcG9ydCB7IGNvbXBvc2VFdmVudEhhbmRsZXJzIH0gZnJvbSAnQHJhZGl4LXVpL3ByaW1pdGl2ZSc7XG5pbXBvcnQgeyB1c2VDb250cm9sbGFibGVTdGF0ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlJztcbmltcG9ydCB7IHVzZVByZXZpb3VzIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXVzZS1wcmV2aW91cyc7XG5pbXBvcnQgeyB1c2VTaXplIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplJztcbmltcG9ydCB7IFByZXNlbmNlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlJztcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1wcmltaXRpdmUnO1xuXG5pbXBvcnQgdHlwZSB7IFNjb3BlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQnO1xuXG5jb25zdCBDSEVDS0JPWF9OQU1FID0gJ0NoZWNrYm94JztcblxudHlwZSBTY29wZWRQcm9wczxQPiA9IFAgJiB7IF9fc2NvcGVDaGVja2JveD86IFNjb3BlIH07XG5jb25zdCBbY3JlYXRlQ2hlY2tib3hDb250ZXh0LCBjcmVhdGVDaGVja2JveFNjb3BlXSA9IGNyZWF0ZUNvbnRleHRTY29wZShDSEVDS0JPWF9OQU1FKTtcblxudHlwZSBDaGVja2VkU3RhdGUgPSBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnO1xuXG50eXBlIENoZWNrYm94Q29udGV4dFZhbHVlPFN0YXRlIGV4dGVuZHMgQ2hlY2tlZFN0YXRlIHwgYm9vbGVhbiA9IENoZWNrZWRTdGF0ZT4gPSB7XG4gIGNoZWNrZWQ6IFN0YXRlIHwgYm9vbGVhbjtcbiAgc2V0Q2hlY2tlZDogUmVhY3QuRGlzcGF0Y2g8UmVhY3QuU2V0U3RhdGVBY3Rpb248U3RhdGUgfCBib29sZWFuPj47XG4gIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBjb250cm9sOiBIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw7XG4gIHNldENvbnRyb2w6IFJlYWN0LkRpc3BhdGNoPFJlYWN0LlNldFN0YXRlQWN0aW9uPEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD4+O1xuICBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZvcm06IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZjogUmVhY3QuUmVmT2JqZWN0PGJvb2xlYW4+O1xuICByZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZGVmYXVsdENoZWNrZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzRm9ybUNvbnRyb2w6IGJvb2xlYW47XG4gIGJ1YmJsZUlucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgc2V0QnViYmxlSW5wdXQ6IFJlYWN0LkRpc3BhdGNoPFJlYWN0LlNldFN0YXRlQWN0aW9uPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPj47XG59O1xuXG5jb25zdCBbQ2hlY2tib3hQcm92aWRlckltcGwsIHVzZUNoZWNrYm94Q29udGV4dF0gPVxuICBjcmVhdGVDaGVja2JveENvbnRleHQ8Q2hlY2tib3hDb250ZXh0VmFsdWU+KENIRUNLQk9YX05BTUUpO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDaGVja2JveFByb3ZpZGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmludGVyZmFjZSBDaGVja2JveFByb3ZpZGVyUHJvcHM8U3RhdGUgZXh0ZW5kcyBDaGVja2VkU3RhdGUgPSBDaGVja2VkU3RhdGU+IHtcbiAgY2hlY2tlZD86IFN0YXRlIHwgYm9vbGVhbjtcbiAgZGVmYXVsdENoZWNrZWQ/OiBTdGF0ZSB8IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgb25DaGVja2VkQ2hhbmdlPyhjaGVja2VkOiBTdGF0ZSB8IGJvb2xlYW4pOiB2b2lkO1xuICBuYW1lPzogc3RyaW5nO1xuICBmb3JtPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgcmVhZG9ubHkgc3RyaW5nW107XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5mdW5jdGlvbiBDaGVja2JveFByb3ZpZGVyPFN0YXRlIGV4dGVuZHMgQ2hlY2tlZFN0YXRlID0gQ2hlY2tlZFN0YXRlPihcbiAgcHJvcHM6IFNjb3BlZFByb3BzPENoZWNrYm94UHJvdmlkZXJQcm9wczxTdGF0ZT4+XG4pIHtcbiAgY29uc3Qge1xuICAgIF9fc2NvcGVDaGVja2JveCxcbiAgICBjaGVja2VkOiBjaGVja2VkUHJvcCxcbiAgICBjaGlsZHJlbixcbiAgICBkZWZhdWx0Q2hlY2tlZCxcbiAgICBkaXNhYmxlZCxcbiAgICBmb3JtLFxuICAgIG5hbWUsXG4gICAgb25DaGVja2VkQ2hhbmdlLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlID0gJ29uJyxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgaW50ZXJuYWxfZG9fbm90X3VzZV9yZW5kZXIsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBbY2hlY2tlZCwgc2V0Q2hlY2tlZF0gPSB1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgcHJvcDogY2hlY2tlZFByb3AsXG4gICAgZGVmYXVsdFByb3A6IGRlZmF1bHRDaGVja2VkID8/IGZhbHNlLFxuICAgIG9uQ2hhbmdlOiBvbkNoZWNrZWRDaGFuZ2UsXG4gICAgY2FsbGVyOiBDSEVDS0JPWF9OQU1FLFxuICB9KTtcbiAgY29uc3QgW2NvbnRyb2wsIHNldENvbnRyb2xdID0gUmVhY3QudXNlU3RhdGU8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2J1YmJsZUlucHV0LCBzZXRCdWJibGVJbnB1dF0gPSBSZWFjdC51c2VTdGF0ZTxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaXNGb3JtQ29udHJvbCA9IGNvbnRyb2xcbiAgICA/ICEhZm9ybSB8fCAhIWNvbnRyb2wuY2xvc2VzdCgnZm9ybScpXG4gICAgOiAvLyBXZSBzZXQgdGhpcyB0byB0cnVlIGJ5IGRlZmF1bHQgc28gdGhhdCBldmVudHMgYnViYmxlIHRvIGZvcm1zIHdpdGhvdXQgSlMgKFNTUilcbiAgICAgIHRydWU7XG5cbiAgY29uc3QgY29udGV4dDogQ2hlY2tib3hDb250ZXh0VmFsdWU8U3RhdGU+ID0ge1xuICAgIGNoZWNrZWQ6IGNoZWNrZWQsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIHNldENoZWNrZWQ6IHNldENoZWNrZWQsXG4gICAgY29udHJvbDogY29udHJvbCxcbiAgICBzZXRDb250cm9sOiBzZXRDb250cm9sLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgZm9ybTogZm9ybSxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWY6IGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLFxuICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICBkZWZhdWx0Q2hlY2tlZDogaXNJbmRldGVybWluYXRlKGRlZmF1bHRDaGVja2VkKSA/IGZhbHNlIDogZGVmYXVsdENoZWNrZWQsXG4gICAgaXNGb3JtQ29udHJvbDogaXNGb3JtQ29udHJvbCxcbiAgICBidWJibGVJbnB1dCxcbiAgICBzZXRCdWJibGVJbnB1dCxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDaGVja2JveFByb3ZpZGVySW1wbFxuICAgICAgc2NvcGU9e19fc2NvcGVDaGVja2JveH1cbiAgICAgIHsuLi4oY29udGV4dCBhcyB1bmtub3duIGFzIENoZWNrYm94Q29udGV4dFZhbHVlPENoZWNrZWRTdGF0ZT4pfVxuICAgID5cbiAgICAgIHtpc0Z1bmN0aW9uKGludGVybmFsX2RvX25vdF91c2VfcmVuZGVyKSA/IGludGVybmFsX2RvX25vdF91c2VfcmVuZGVyKGNvbnRleHQpIDogY2hpbGRyZW59XG4gICAgPC9DaGVja2JveFByb3ZpZGVySW1wbD5cbiAgKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ2hlY2tib3hUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFRSSUdHRVJfTkFNRSA9ICdDaGVja2JveFRyaWdnZXInO1xuXG5pbnRlcmZhY2UgQ2hlY2tib3hUcmlnZ2VyUHJvcHNcbiAgZXh0ZW5kcyBPbWl0PFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJpbWl0aXZlLmJ1dHRvbj4sXG4gICAga2V5b2YgQ2hlY2tib3hQcm92aWRlclByb3BzXG4gID4ge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuY29uc3QgQ2hlY2tib3hUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQ2hlY2tib3hUcmlnZ2VyUHJvcHM+KFxuICAoXG4gICAgeyBfX3Njb3BlQ2hlY2tib3gsIG9uS2V5RG93biwgb25DbGljaywgLi4uY2hlY2tib3hQcm9wcyB9OiBTY29wZWRQcm9wczxDaGVja2JveFRyaWdnZXJQcm9wcz4sXG4gICAgZm9yd2FyZGVkUmVmXG4gICkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNvbnRyb2wsXG4gICAgICB2YWx1ZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgY2hlY2tlZCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgc2V0Q29udHJvbCxcbiAgICAgIHNldENoZWNrZWQsXG4gICAgICBoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZixcbiAgICAgIGlzRm9ybUNvbnRyb2wsXG4gICAgICBidWJibGVJbnB1dCxcbiAgICB9ID0gdXNlQ2hlY2tib3hDb250ZXh0KFRSSUdHRVJfTkFNRSwgX19zY29wZUNoZWNrYm94KTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSB1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBzZXRDb250cm9sKTtcblxuICAgIGNvbnN0IGluaXRpYWxDaGVja2VkU3RhdGVSZWYgPSBSZWFjdC51c2VSZWYoY2hlY2tlZCk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGZvcm0gPSBjb250cm9sPy5mb3JtO1xuICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgY29uc3QgcmVzZXQgPSAoKSA9PiBzZXRDaGVja2VkKGluaXRpYWxDaGVja2VkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgIGZvcm0uYWRkRXZlbnRMaXN0ZW5lcigncmVzZXQnLCByZXNldCk7XG4gICAgICAgIHJldHVybiAoKSA9PiBmb3JtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgcmVzZXQpO1xuICAgICAgfVxuICAgIH0sIFtjb250cm9sLCBzZXRDaGVja2VkXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFByaW1pdGl2ZS5idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgIGFyaWEtY2hlY2tlZD17aXNJbmRldGVybWluYXRlKGNoZWNrZWQpID8gJ21peGVkJyA6IGNoZWNrZWR9XG4gICAgICAgIGFyaWEtcmVxdWlyZWQ9e3JlcXVpcmVkfVxuICAgICAgICBkYXRhLXN0YXRlPXtnZXRTdGF0ZShjaGVja2VkKX1cbiAgICAgICAgZGF0YS1kaXNhYmxlZD17ZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgIHsuLi5jaGVja2JveFByb3BzfVxuICAgICAgICByZWY9e2NvbXBvc2VkUmVmc31cbiAgICAgICAgb25LZXlEb3duPXtjb21wb3NlRXZlbnRIYW5kbGVycyhvbktleURvd24sIChldmVudCkgPT4ge1xuICAgICAgICAgIC8vIEFjY29yZGluZyB0byBXQUkgQVJJQSwgQ2hlY2tib3hlcyBkb24ndCBhY3RpdmF0ZSBvbiBlbnRlciBrZXlwcmVzc1xuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0pfVxuICAgICAgICBvbkNsaWNrPXtjb21wb3NlRXZlbnRIYW5kbGVycyhvbkNsaWNrLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBzZXRDaGVja2VkKChwcmV2Q2hlY2tlZCkgPT4gKGlzSW5kZXRlcm1pbmF0ZShwcmV2Q2hlY2tlZCkgPyB0cnVlIDogIXByZXZDaGVja2VkKSk7XG4gICAgICAgICAgaWYgKGJ1YmJsZUlucHV0ICYmIGlzRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQgPSBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO1xuICAgICAgICAgICAgLy8gaWYgY2hlY2tib3ggaGFzIGEgYnViYmxlIGlucHV0IGFuZCBpcyBhIGZvcm0gY29udHJvbCwgc3RvcFxuICAgICAgICAgICAgLy8gcHJvcGFnYXRpb24gZnJvbSB0aGUgYnV0dG9uIHNvIHRoYXQgd2Ugb25seSBwcm9wYWdhdGUgb25lIGNsaWNrXG4gICAgICAgICAgICAvLyBldmVudCAoZnJvbSB0aGUgaW5wdXQpLiBXZSBwcm9wYWdhdGUgY2hhbmdlcyBmcm9tIGFuIGlucHV0IHNvXG4gICAgICAgICAgICAvLyB0aGF0IG5hdGl2ZSBmb3JtIHZhbGlkYXRpb24gd29ya3MgYW5kIGZvcm0gZXZlbnRzIHJlZmxlY3RcbiAgICAgICAgICAgIC8vIGNoZWNrYm94IHVwZGF0ZXMuXG4gICAgICAgICAgICBpZiAoIWhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSl9XG4gICAgICAvPlxuICAgICk7XG4gIH1cbik7XG5cbkNoZWNrYm94VHJpZ2dlci5kaXNwbGF5TmFtZSA9IFRSSUdHRVJfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ2hlY2tib3hcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxudHlwZSBDaGVja2JveEVsZW1lbnQgPSBSZWFjdC5Db21wb25lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5idXR0b24+O1xudHlwZSBQcmltaXRpdmVCdXR0b25Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJpbWl0aXZlLmJ1dHRvbj47XG5pbnRlcmZhY2UgQ2hlY2tib3hQcm9wcyBleHRlbmRzIE9taXQ8UHJpbWl0aXZlQnV0dG9uUHJvcHMsICdjaGVja2VkJyB8ICdkZWZhdWx0Q2hlY2tlZCc+IHtcbiAgY2hlY2tlZD86IENoZWNrZWRTdGF0ZTtcbiAgZGVmYXVsdENoZWNrZWQ/OiBDaGVja2VkU3RhdGU7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgb25DaGVja2VkQ2hhbmdlPyhjaGVja2VkOiBDaGVja2VkU3RhdGUpOiB2b2lkO1xufVxuXG5jb25zdCBDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWY8Q2hlY2tib3hFbGVtZW50LCBDaGVja2JveFByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxDaGVja2JveFByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgX19zY29wZUNoZWNrYm94LFxuICAgICAgbmFtZSxcbiAgICAgIGNoZWNrZWQsXG4gICAgICBkZWZhdWx0Q2hlY2tlZCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICB2YWx1ZSxcbiAgICAgIG9uQ2hlY2tlZENoYW5nZSxcbiAgICAgIGZvcm0sXG4gICAgICAuLi5jaGVja2JveFByb3BzXG4gICAgfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDaGVja2JveFByb3ZpZGVyXG4gICAgICAgIF9fc2NvcGVDaGVja2JveD17X19zY29wZUNoZWNrYm94fVxuICAgICAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgICAgICBkZWZhdWx0Q2hlY2tlZD17ZGVmYXVsdENoZWNrZWR9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e3JlcXVpcmVkfVxuICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e29uQ2hlY2tlZENoYW5nZX1cbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgZm9ybT17Zm9ybX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIGludGVybmFsX2RvX25vdF91c2VfcmVuZGVyPXsoeyBpc0Zvcm1Db250cm9sIH06IENoZWNrYm94Q29udGV4dFZhbHVlKSA9PiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxDaGVja2JveFRyaWdnZXJcbiAgICAgICAgICAgICAgey4uLmNoZWNrYm94UHJvcHN9XG4gICAgICAgICAgICAgIHJlZj17Zm9yd2FyZGVkUmVmfVxuICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgIF9fc2NvcGVDaGVja2JveD17X19zY29wZUNoZWNrYm94fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHtpc0Zvcm1Db250cm9sICYmIChcbiAgICAgICAgICAgICAgPENoZWNrYm94QnViYmxlSW5wdXRcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgICAgX19zY29wZUNoZWNrYm94PXtfX3Njb3BlQ2hlY2tib3h9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgLz5cbiAgICApO1xuICB9XG4pO1xuXG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IENIRUNLQk9YX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENoZWNrYm94SW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IElORElDQVRPUl9OQU1FID0gJ0NoZWNrYm94SW5kaWNhdG9yJztcblxudHlwZSBDaGVja2JveEluZGljYXRvckVsZW1lbnQgPSBSZWFjdC5Db21wb25lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5zcGFuPjtcbnR5cGUgUHJpbWl0aXZlU3BhblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQcmltaXRpdmUuc3Bhbj47XG5pbnRlcmZhY2UgQ2hlY2tib3hJbmRpY2F0b3JQcm9wcyBleHRlbmRzIFByaW1pdGl2ZVNwYW5Qcm9wcyB7XG4gIC8qKlxuICAgKiBVc2VkIHRvIGZvcmNlIG1vdW50aW5nIHdoZW4gbW9yZSBjb250cm9sIGlzIG5lZWRlZC4gVXNlZnVsIHdoZW5cbiAgICogY29udHJvbGxpbmcgYW5pbWF0aW9uIHdpdGggUmVhY3QgYW5pbWF0aW9uIGxpYnJhcmllcy5cbiAgICovXG4gIGZvcmNlTW91bnQ/OiB0cnVlO1xufVxuXG5jb25zdCBDaGVja2JveEluZGljYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8Q2hlY2tib3hJbmRpY2F0b3JFbGVtZW50LCBDaGVja2JveEluZGljYXRvclByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxDaGVja2JveEluZGljYXRvclByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlQ2hlY2tib3gsIGZvcmNlTW91bnQsIC4uLmluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gdXNlQ2hlY2tib3hDb250ZXh0KElORElDQVRPUl9OQU1FLCBfX3Njb3BlQ2hlY2tib3gpO1xuICAgIHJldHVybiAoXG4gICAgICA8UHJlc2VuY2VcbiAgICAgICAgcHJlc2VudD17Zm9yY2VNb3VudCB8fCBpc0luZGV0ZXJtaW5hdGUoY29udGV4dC5jaGVja2VkKSB8fCBjb250ZXh0LmNoZWNrZWQgPT09IHRydWV9XG4gICAgICA+XG4gICAgICAgIDxQcmltaXRpdmUuc3BhblxuICAgICAgICAgIGRhdGEtc3RhdGU9e2dldFN0YXRlKGNvbnRleHQuY2hlY2tlZCl9XG4gICAgICAgICAgZGF0YS1kaXNhYmxlZD17Y29udGV4dC5kaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkfVxuICAgICAgICAgIHsuLi5pbmRpY2F0b3JQcm9wc31cbiAgICAgICAgICByZWY9e2ZvcndhcmRlZFJlZn1cbiAgICAgICAgICBzdHlsZT17eyBwb2ludGVyRXZlbnRzOiAnbm9uZScsIC4uLnByb3BzLnN0eWxlIH19XG4gICAgICAgIC8+XG4gICAgICA8L1ByZXNlbmNlPlxuICAgICk7XG4gIH1cbik7XG5cbkNoZWNrYm94SW5kaWNhdG9yLmRpc3BsYXlOYW1lID0gSU5ESUNBVE9SX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENoZWNrYm94QnViYmxlSW5wdXRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgQlVCQkxFX0lOUFVUX05BTUUgPSAnQ2hlY2tib3hCdWJibGVJbnB1dCc7XG5cbnR5cGUgSW5wdXRQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJpbWl0aXZlLmlucHV0PjtcbmludGVyZmFjZSBDaGVja2JveEJ1YmJsZUlucHV0UHJvcHMgZXh0ZW5kcyBPbWl0PElucHV0UHJvcHMsICdjaGVja2VkJz4ge31cblxuY29uc3QgQ2hlY2tib3hCdWJibGVJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgQ2hlY2tib3hCdWJibGVJbnB1dFByb3BzPihcbiAgKHsgX19zY29wZUNoZWNrYm94LCAuLi5wcm9wcyB9OiBTY29wZWRQcm9wczxDaGVja2JveEJ1YmJsZUlucHV0UHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBjb250cm9sLFxuICAgICAgaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYsXG4gICAgICBjaGVja2VkLFxuICAgICAgZGVmYXVsdENoZWNrZWQsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgZm9ybSxcbiAgICAgIGJ1YmJsZUlucHV0LFxuICAgICAgc2V0QnViYmxlSW5wdXQsXG4gICAgfSA9IHVzZUNoZWNrYm94Q29udGV4dChCVUJCTEVfSU5QVVRfTkFNRSwgX19zY29wZUNoZWNrYm94KTtcblxuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHNldEJ1YmJsZUlucHV0KTtcbiAgICBjb25zdCBwcmV2Q2hlY2tlZCA9IHVzZVByZXZpb3VzKGNoZWNrZWQpO1xuICAgIGNvbnN0IGNvbnRyb2xTaXplID0gdXNlU2l6ZShjb250cm9sKTtcblxuICAgIC8vIEJ1YmJsZSBjaGVja2VkIGNoYW5nZSB0byBwYXJlbnRzIChlLmcgZm9ybSBjaGFuZ2UgZXZlbnQpXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gYnViYmxlSW5wdXQ7XG4gICAgICBpZiAoIWlucHV0KSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGlucHV0UHJvdG8gPSB3aW5kb3cuSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGU7XG4gICAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihcbiAgICAgICAgaW5wdXRQcm90byxcbiAgICAgICAgJ2NoZWNrZWQnXG4gICAgICApIGFzIFByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICAgIGNvbnN0IHNldENoZWNrZWQgPSBkZXNjcmlwdG9yLnNldDtcblxuICAgICAgY29uc3QgYnViYmxlcyA9ICFoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50O1xuICAgICAgaWYgKHByZXZDaGVja2VkICE9PSBjaGVja2VkICYmIHNldENoZWNrZWQpIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NsaWNrJywgeyBidWJibGVzIH0pO1xuICAgICAgICBpbnB1dC5pbmRldGVybWluYXRlID0gaXNJbmRldGVybWluYXRlKGNoZWNrZWQpO1xuICAgICAgICBzZXRDaGVja2VkLmNhbGwoaW5wdXQsIGlzSW5kZXRlcm1pbmF0ZShjaGVja2VkKSA/IGZhbHNlIDogY2hlY2tlZCk7XG4gICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgfVxuICAgIH0sIFtidWJibGVJbnB1dCwgcHJldkNoZWNrZWQsIGNoZWNrZWQsIGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmXSk7XG5cbiAgICBjb25zdCBkZWZhdWx0Q2hlY2tlZFJlZiA9IFJlYWN0LnVzZVJlZihpc0luZGV0ZXJtaW5hdGUoY2hlY2tlZCkgPyBmYWxzZSA6IGNoZWNrZWQpO1xuICAgIHJldHVybiAoXG4gICAgICA8UHJpbWl0aXZlLmlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGRlZmF1bHRDaGVja2VkPXtkZWZhdWx0Q2hlY2tlZCA/PyBkZWZhdWx0Q2hlY2tlZFJlZi5jdXJyZW50fVxuICAgICAgICByZXF1aXJlZD17cmVxdWlyZWR9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICBmb3JtPXtmb3JtfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgcmVmPXtjb21wb3NlZFJlZnN9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgICAgLi4uY29udHJvbFNpemUsXG4gICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICAgIC8vIFdlIHRyYW5zZm9ybSBiZWNhdXNlIHRoZSBpbnB1dCBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYnV0IHdlIGhhdmVcbiAgICAgICAgICAvLyByZW5kZXJlZCBpdCAqKmFmdGVyKiogdGhlIGJ1dHRvbi4gVGhpcyBwdWxscyBpdCBiYWNrIHRvIHNpdCBvbiB0b3BcbiAgICAgICAgICAvLyBvZiB0aGUgYnV0dG9uLlxuICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJyxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuKTtcblxuQ2hlY2tib3hCdWJibGVJbnB1dC5kaXNwbGF5TmFtZSA9IEJVQkJMRV9JTlBVVF9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyAoLi4uYXJnczogYW55W10pID0+IGFueSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGlzSW5kZXRlcm1pbmF0ZShjaGVja2VkPzogQ2hlY2tlZFN0YXRlKTogY2hlY2tlZCBpcyAnaW5kZXRlcm1pbmF0ZScge1xuICByZXR1cm4gY2hlY2tlZCA9PT0gJ2luZGV0ZXJtaW5hdGUnO1xufVxuXG5mdW5jdGlvbiBnZXRTdGF0ZShjaGVja2VkOiBDaGVja2VkU3RhdGUpIHtcbiAgcmV0dXJuIGlzSW5kZXRlcm1pbmF0ZShjaGVja2VkKSA/ICdpbmRldGVybWluYXRlJyA6IGNoZWNrZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJztcbn1cblxuZXhwb3J0IHtcbiAgY3JlYXRlQ2hlY2tib3hTY29wZSxcbiAgLy9cbiAgQ2hlY2tib3gsXG4gIENoZWNrYm94UHJvdmlkZXIsXG4gIENoZWNrYm94VHJpZ2dlcixcbiAgQ2hlY2tib3hJbmRpY2F0b3IsXG4gIENoZWNrYm94QnViYmxlSW5wdXQsXG4gIC8vXG4gIENoZWNrYm94IGFzIFJvb3QsXG4gIENoZWNrYm94UHJvdmlkZXIgYXMgUHJvdmlkZXIsXG4gIENoZWNrYm94VHJpZ2dlciBhcyBUcmlnZ2VyLFxuICBDaGVja2JveEluZGljYXRvciBhcyBJbmRpY2F0b3IsXG4gIENoZWNrYm94QnViYmxlSW5wdXQgYXMgQnViYmxlSW5wdXQsXG59O1xuZXhwb3J0IHR5cGUge1xuICBDaGVja2JveFByb3BzLFxuICBDaGVja2JveFByb3ZpZGVyUHJvcHMsXG4gIENoZWNrYm94VHJpZ2dlclByb3BzLFxuICBDaGVja2JveEluZGljYXRvclByb3BzLFxuICBDaGVja2JveEJ1YmJsZUlucHV0UHJvcHMsXG4gIENoZWNrZWRTdGF0ZSxcbn07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-checkbox/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-collection/dist/index.mjs":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-collection/dist/index.mjs ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createCollection: () => (/* binding */ createCollection),\n/* harmony export */ unstable_createCollection: () => (/* binding */ createCollection2)\n/* harmony export */ });\n/* harmony import */ var _swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @swc/helpers/_/_class_private_field_get */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_get.js\");\n/* harmony import */ var _swc_helpers_class_private_field_init__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @swc/helpers/_/_class_private_field_init */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_init.js\");\n/* harmony import */ var _swc_helpers_class_private_field_set__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @swc/helpers/_/_class_private_field_set */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_set.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ \"(app-pages-browser)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-slot */ \"(app-pages-browser)/./node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ createCollection,unstable_createCollection auto */ \n\n\nvar _keys;\n// src/collection-legacy.tsx\n\n\n\n\n\nfunction createCollection(name) {\n var _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $RefreshSig$();\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {\n collectionRef: {\n current: null\n },\n itemMap: /* @__PURE__ */ new Map()\n });\n const CollectionProvider = (props)=>{\n _s();\n const { scope, children } = props;\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const itemMap = react__WEBPACK_IMPORTED_MODULE_0__.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionProviderImpl, {\n scope,\n itemMap,\n collectionRef: ref,\n children\n });\n };\n _s(CollectionProvider, \"i9R1RY532Tsw7syarXwOonBpwXM=\");\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = (0,_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.createSlot)(COLLECTION_SLOT_NAME);\n const CollectionSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_s1((props, forwardedRef)=>{\n _s1();\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionSlotImpl, {\n ref: composedRefs,\n children\n });\n }, \"5JQ4uy78XLW8WM+YuDpNgF/JIVs=\", false, function() {\n return [\n useCollectionContext,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs\n ];\n }));\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = (0,_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.createSlot)(ITEM_SLOT_NAME);\n const CollectionItemSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_s2((props, forwardedRef)=>{\n _s2();\n const { scope, children, ...itemData } = props;\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"createCollection.CollectionItemSlot.useEffect\": ()=>{\n context.itemMap.set(ref, {\n ref,\n ...itemData\n });\n return ({\n \"createCollection.CollectionItemSlot.useEffect\": ()=>void context.itemMap.delete(ref)\n })[\"createCollection.CollectionItemSlot.useEffect\"];\n }\n }[\"createCollection.CollectionItemSlot.useEffect\"]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionItemSlotImpl, {\n ...{\n [ITEM_DATA_ATTR]: \"\"\n },\n ref: composedRefs,\n children\n });\n }, \"eauD3DgWC2VdU7voCXLDR4PeA+k=\", false, function() {\n return [\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs,\n useCollectionContext\n ];\n }));\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n _s3();\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = react__WEBPACK_IMPORTED_MODULE_0__.useCallback({\n \"createCollection.useCollection.useCallback[getItems]\": ()=>{\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(\"[\".concat(ITEM_DATA_ATTR, \"]\")));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort({\n \"createCollection.useCollection.useCallback[getItems].orderedItems\": (a, b)=>orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n }[\"createCollection.useCollection.useCallback[getItems].orderedItems\"]);\n return orderedItems;\n }\n }[\"createCollection.useCollection.useCallback[getItems]\"], [\n context.collectionRef,\n context.itemMap\n ]);\n return getItems;\n }\n _s3(useCollection, \"jCyvzZFUzVDqeEjq0R8vi6mUa78=\", false, function() {\n return [\n useCollectionContext\n ];\n });\n return [\n {\n Provider: CollectionProvider,\n Slot: CollectionSlot,\n ItemSlot: CollectionItemSlot\n },\n useCollection,\n createCollectionScope\n ];\n}\n// src/collection.tsx\n\n\n\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = (_keys = /*#__PURE__*/ new WeakMap(), class _OrderedDict extends Map {\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n (0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys)[(0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).indexOf(key)] = key;\n } else {\n (0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = (0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [\n ...(0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys)\n ];\n let nextValue;\n let shouldSkip = false;\n for(let i = actualIndex; i < size; i++){\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = (0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */ setBefore(key, newKey, value) {\n const index = (0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = (0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */ setAfter(key, newKey, value) {\n const index = (0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n (0,_swc_helpers_class_private_field_set__WEBPACK_IMPORTED_MODULE_6__._)(this, _keys, []);\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n (0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).splice((0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at((0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys), index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at((0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys), index);\n if (key !== void 0) {\n return [\n key,\n this.get(key)\n ];\n }\n }\n indexOf(key) {\n return (0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys).indexOf(key);\n }\n keyAt(index) {\n return at((0,_swc_helpers_class_private_field_get__WEBPACK_IMPORTED_MODULE_5__._)(this, _keys), index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this){\n if (Reflect.apply(predicate, thisArg, [\n entry,\n index,\n this\n ])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this){\n if (Reflect.apply(predicate, thisArg, [\n entry,\n index,\n this\n ])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this){\n if (Reflect.apply(predicate, thisArg, [\n entry,\n index,\n this\n ])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this){\n entries.push([\n entry[0],\n Reflect.apply(callbackfn, thisArg, [\n entry,\n index,\n this\n ])\n ]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue !== null && initialValue !== void 0 ? initialValue : this.at(0);\n for (const entry of this){\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [\n accumulator,\n entry,\n index,\n this\n ]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue !== null && initialValue !== void 0 ? initialValue : this.at(-1);\n for(let index = this.size - 1; index >= 0; index--){\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [\n accumulator,\n entry,\n index,\n this\n ]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [\n ...this.entries()\n ].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for(let index = this.size - 1; index >= 0; index--){\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const entries = [\n ...this.entries()\n ];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for(let index = start; index <= stop; index++){\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this){\n if (!Reflect.apply(predicate, thisArg, [\n entry,\n index,\n this\n ])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this){\n if (Reflect.apply(predicate, thisArg, [\n entry,\n index,\n this\n ])) {\n return true;\n }\n index++;\n }\n return false;\n }\n constructor(entries){\n super(entries), (0,_swc_helpers_class_private_field_init__WEBPACK_IMPORTED_MODULE_7__._)(this, _keys, {\n writable: true,\n value: void 0\n });\n (0,_swc_helpers_class_private_field_set__WEBPACK_IMPORTED_MODULE_6__._)(this, _keys, [\n ...super.keys()\n ]);\n __instanciated.set(this, true);\n }\n});\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n// src/collection.tsx\n\nfunction createCollection2(name) {\n var _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $RefreshSig$(), _s4 = $RefreshSig$(), _s5 = $RefreshSig$();\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {\n collectionElement: null,\n collectionRef: {\n current: null\n },\n collectionRefObject: {\n current: null\n },\n itemMap: new OrderedDict(),\n setItemMap: ()=>void 0\n });\n const CollectionProvider = (param)=>{\n let { state, ...props } = param;\n return state ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionProviderImpl, {\n ...props,\n state\n }) : /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionInit, {\n ...props\n });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props)=>{\n _s();\n const state = useInitCollection();\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionProviderImpl, {\n ...props,\n state\n });\n };\n _s(CollectionInit, \"3iGxbJdBzy8QHCgIn6Q3etWaz00=\", false, function() {\n return [\n useInitCollection\n ];\n });\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props)=>{\n _s1();\n const { scope, children, state } = props;\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const [collectionElement, setCollectionElement] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const composeRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"createCollection2.CollectionProviderImpl.useEffect\": ()=>{\n if (!collectionElement) return;\n const observer = getChildListObserver({\n \"createCollection2.CollectionProviderImpl.useEffect.observer\": ()=>{}\n }[\"createCollection2.CollectionProviderImpl.useEffect.observer\"]);\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return ({\n \"createCollection2.CollectionProviderImpl.useEffect\": ()=>{\n observer.disconnect();\n }\n })[\"createCollection2.CollectionProviderImpl.useEffect\"];\n }\n }[\"createCollection2.CollectionProviderImpl.useEffect\"], [\n collectionElement\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionContextProvider, {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n });\n };\n _s1(CollectionProviderImpl, \"7M+yNtoGB4VDqMlxElPhwmVwYxk=\", false, function() {\n return [\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs\n ];\n });\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = (0,_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.createSlot)(COLLECTION_SLOT_NAME);\n const CollectionSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_s2((props, forwardedRef)=>{\n _s2();\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionSlotImpl, {\n ref: composedRefs,\n children\n });\n }, \"oqigNUwUVLbEDVygi6+tKgNim+I=\", false, function() {\n return [\n useCollectionContext,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs\n ];\n }));\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = (0,_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.createSlot)(ITEM_SLOT_NAME);\n const CollectionItemSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_s3((props, forwardedRef)=>{\n _s3();\n const { scope, children, ...itemData } = props;\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const [element, setElement] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"createCollection2.CollectionItemSlot.useEffect\": ()=>{\n const itemData2 = memoizedItemData;\n setItemMap({\n \"createCollection2.CollectionItemSlot.useEffect\": (map)=>{\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, {\n ...itemData2,\n element\n });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, {\n ...itemData2,\n element\n }).toSorted(sortByDocumentPosition);\n }\n }[\"createCollection2.CollectionItemSlot.useEffect\"]);\n return ({\n \"createCollection2.CollectionItemSlot.useEffect\": ()=>{\n setItemMap({\n \"createCollection2.CollectionItemSlot.useEffect\": (map)=>{\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n }\n }[\"createCollection2.CollectionItemSlot.useEffect\"]);\n }\n })[\"createCollection2.CollectionItemSlot.useEffect\"];\n }\n }[\"createCollection2.CollectionItemSlot.useEffect\"], [\n element,\n memoizedItemData,\n setItemMap\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionItemSlotImpl, {\n ...{\n [ITEM_DATA_ATTR]: \"\"\n },\n ref: composedRefs,\n children\n });\n }, \"D+Fis3oGK9fTGHef7y/RAsafY1c=\", false, function() {\n return [\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs,\n useCollectionContext\n ];\n }));\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n _s4();\n return react__WEBPACK_IMPORTED_MODULE_0__.useState(new OrderedDict());\n }\n _s4(useInitCollection, \"xDA5mNX2Vy7VWPaLWMYFykXD9AE=\");\n function useCollection(scope) {\n _s5();\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n _s5(useCollection, \"7+Xr2RMDm/chJrHGs9jhHm4uUD4=\", false, function() {\n return [\n useCollectionContext\n ];\n });\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n {\n Provider: CollectionProvider,\n Slot: CollectionSlot,\n ItemSlot: CollectionItemSlot\n },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA){\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList)=>{\n for (const mutation of mutationsList){\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29sbGVjdGlvbi9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBa0I7QUFDaUI7QUFDSDtBQUNNO0FBdUNoQztBQTFCTixTQUFTLGlCQUFpRSxNQUFjOztJQUt0RixNQUFNLGdCQUFnQixPQUFPO0lBQzdCLE1BQU0sQ0FBQyx5QkFBeUIscUJBQXFCLElBQUksMkVBQWtCLENBQUMsYUFBYTtJQVV6RixNQUFNLENBQUMsd0JBQXdCLG9CQUFvQixJQUFJLHdCQUNyRCxlQUNBO1FBQUUsZUFBZTtZQUFFLFNBQVM7UUFBSztRQUFHLFNBQVMsb0JBQUksSUFBSTtJQUFFO0lBR3pELDJCQUFpRixDQUFDOztRQUNoRixNQUFNLEVBQUUsT0FBTyxTQUFTLElBQUk7UUFDNUIsTUFBTSxNQUFNLHlDQUFNLENBQTBCLElBQUk7UUFDaEQsTUFBTSxVQUFVLHlDQUFNLENBQWdDLG9CQUFJLElBQUksQ0FBQyxFQUFFO1FBQ2pFLE9BQ0UsdUVBQUM7WUFBdUI7WUFBYztZQUFrQixlQUFlO1lBQ3BFO1FBQUEsQ0FDSDtJQUVKO09BVE07SUFXTixtQkFBbUIsY0FBYztJQU1qQyxNQUFNLHVCQUF1QixPQUFPO0lBRXBDLE1BQU0scUJBQXFCLGdFQUFVLENBQUMsb0JBQW9CO0lBQzFELE1BQU0sK0JBQWlCLDZDQUFNLEtBQzNCLENBQUMsT0FBTzs7UUFDTixNQUFNLEVBQUUsT0FBTyxTQUFTLElBQUk7UUFDNUIsTUFBTSxVQUFVLHFCQUFxQixzQkFBc0IsS0FBSztRQUNoRSxNQUFNLGVBQWUsNkVBQWUsQ0FBQyxjQUFjLFFBQVEsYUFBYTtRQUN4RSxPQUFPLHVFQUFDO1lBQW1CLEtBQUs7WUFBZTtRQUFBLENBQVM7SUFDMUQ7OztZQUZ1Qix5RUFBZTs7O0lBS3hDLGVBQWUsY0FBYztJQU03QixNQUFNLGlCQUFpQixPQUFPO0lBQzlCLE1BQU0saUJBQWlCO0lB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T0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFNBQVUsUUFBTztJQUMzRCxJQUFJLEtBQUssUUFBUSxLQUFLLEtBQU0sUUFBTztJQUNuQyxNQUFNLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDM0IsTUFBTSxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQzNCLElBQUksTUFBTSxXQUFXLE1BQU0sT0FBUSxRQUFPO0lBQzFDLFdBQVcsT0FBTyxNQUFPO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLFVBQVUsZUFBZSxLQUFLLEdBQUcsR0FBRyxFQUFHLFFBQU87UUFDMUQsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRyxRQUFPO0lBQ2hDO0lBQ0EsT0FBTztBQUNUO0FBRUEsU0FBUyxtQkFBbUIsR0FBWSxHQUFZO0lBQ2xELE9BQU8sQ0FBQyxDQUFFLEdBQUUsd0JBQXdCLENBQUMsSUFBSSxLQUFLO0FBQ2hEO0FBRUEsU0FBUyx1QkFDUCxHQUNBLEdBQ0E7SUFDQSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQzFCLElBQ0EsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxJQUMzQyxLQUNBO0FBQ1I7QUFFQSxTQUFTLHFCQUFxQixVQUFzQjtJQUNsRCxNQUFNLFdBQVcsSUFBSSxpQkFBaUIsQ0FBQztRQUNyQyxXQUFXLFlBQVksY0FBZTtZQUNwQyxJQUFJLFNBQVMsU0FBUyxhQUFhO2dCQUNqQyxTQUFTO2dCQUNUO1lBQ0Y7UUFDRjtJQUNGLENBQUM7SUFFRCxPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcc3JjXFxjb2xsZWN0aW9uLWxlZ2FjeS50c3giLCJFOlxcR0lUXFxtdnBcXHNyY1xcY29sbGVjdGlvbi50c3giLCJFOlxcR0lUXFxtdnBcXHNyY1xcb3JkZXJlZC1kaWN0aW9uYXJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0U2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29udGV4dCc7XG5pbXBvcnQgeyB1c2VDb21wb3NlZFJlZnMgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzJztcbmltcG9ydCB7IGNyZWF0ZVNsb3QsIHR5cGUgU2xvdCB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1zbG90JztcblxudHlwZSBTbG90UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNsb3Q+O1xudHlwZSBDb2xsZWN0aW9uRWxlbWVudCA9IEhUTUxFbGVtZW50O1xuaW50ZXJmYWNlIENvbGxlY3Rpb25Qcm9wcyBleHRlbmRzIFNsb3RQcm9wcyB7XG4gIHNjb3BlOiBhbnk7XG59XG5cbi8vIFdlIGhhdmUgcmVzb3J0ZWQgdG8gcmV0dXJuaW5nIHNsb3RzIGRpcmVjdGx5IHJhdGhlciB0aGFuIGV4cG9zaW5nIHByaW1pdGl2ZXMgdGhhdCBjYW4gdGhlblxuLy8gYmUgc2xvdHRlZCBsaWtlIGA8Q29sbGVjdGlvbkl0ZW0gYXM9e1Nsb3R9PuKApjwvQ29sbGVjdGlvbkl0ZW0+YC5cbi8vIFRoaXMgaXMgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBpc3N1ZXMgd2l0aCBnZW5lcmljIHR5cGVzIHRoYXQgY2Fubm90IGJlIHN0YXRpY2FsbHkgYW5hbHlzZWRcbi8vIGR1ZSB0byBjcmVhdGluZyB0aGVtIGR5bmFtaWNhbGx5IHZpYSBjcmVhdGVDb2xsZWN0aW9uLlxuXG5mdW5jdGlvbiBjcmVhdGVDb2xsZWN0aW9uPEl0ZW1FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQsIEl0ZW1EYXRhID0ge30+KG5hbWU6IHN0cmluZykge1xuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uUHJvdmlkZXJcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICBjb25zdCBQUk9WSURFUl9OQU1FID0gbmFtZSArICdDb2xsZWN0aW9uUHJvdmlkZXInO1xuICBjb25zdCBbY3JlYXRlQ29sbGVjdGlvbkNvbnRleHQsIGNyZWF0ZUNvbGxlY3Rpb25TY29wZV0gPSBjcmVhdGVDb250ZXh0U2NvcGUoUFJPVklERVJfTkFNRSk7XG5cbiAgdHlwZSBDb250ZXh0VmFsdWUgPSB7XG4gICAgY29sbGVjdGlvblJlZjogUmVhY3QuUmVmT2JqZWN0PENvbGxlY3Rpb25FbGVtZW50IHwgbnVsbD47XG4gICAgaXRlbU1hcDogTWFwPFxuICAgICAgUmVhY3QuUmVmT2JqZWN0PEl0ZW1FbGVtZW50IHwgbnVsbD4sXG4gICAgICB7IHJlZjogUmVhY3QuUmVmT2JqZWN0PEl0ZW1FbGVtZW50IHwgbnVsbD4gfSAmIEl0ZW1EYXRhXG4gICAgPjtcbiAgfTtcblxuICBjb25zdCBbQ29sbGVjdGlvblByb3ZpZGVySW1wbCwgdXNlQ29sbGVjdGlvbkNvbnRleHRdID0gY3JlYXRlQ29sbGVjdGlvbkNvbnRleHQ8Q29udGV4dFZhbHVlPihcbiAgICBQUk9WSURFUl9OQU1FLFxuICAgIHsgY29sbGVjdGlvblJlZjogeyBjdXJyZW50OiBudWxsIH0sIGl0ZW1NYXA6IG5ldyBNYXAoKSB9XG4gICk7XG5cbiAgY29uc3QgQ29sbGVjdGlvblByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlOyBzY29wZTogYW55IH0+ID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBzY29wZSwgY2hpbGRyZW4gfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxDb2xsZWN0aW9uRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgaXRlbU1hcCA9IFJlYWN0LnVzZVJlZjxDb250ZXh0VmFsdWVbJ2l0ZW1NYXAnXT4obmV3IE1hcCgpKS5jdXJyZW50O1xuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGVjdGlvblByb3ZpZGVySW1wbCBzY29wZT17c2NvcGV9IGl0ZW1NYXA9e2l0ZW1NYXB9IGNvbGxlY3Rpb25SZWY9e3JlZn0+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ29sbGVjdGlvblByb3ZpZGVySW1wbD5cbiAgICApO1xuICB9O1xuXG4gIENvbGxlY3Rpb25Qcm92aWRlci5kaXNwbGF5TmFtZSA9IFBST1ZJREVSX05BTUU7XG5cbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQ29sbGVjdGlvblNsb3RcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICBjb25zdCBDT0xMRUNUSU9OX1NMT1RfTkFNRSA9IG5hbWUgKyAnQ29sbGVjdGlvblNsb3QnO1xuXG4gIGNvbnN0IENvbGxlY3Rpb25TbG90SW1wbCA9IGNyZWF0ZVNsb3QoQ09MTEVDVElPTl9TTE9UX05BTUUpO1xuICBjb25zdCBDb2xsZWN0aW9uU2xvdCA9IFJlYWN0LmZvcndhcmRSZWY8Q29sbGVjdGlvbkVsZW1lbnQsIENvbGxlY3Rpb25Qcm9wcz4oXG4gICAgKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICAgIGNvbnN0IHsgc2NvcGUsIGNoaWxkcmVuIH0gPSBwcm9wcztcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb2xsZWN0aW9uQ29udGV4dChDT0xMRUNUSU9OX1NMT1RfTkFNRSwgc2NvcGUpO1xuICAgICAgY29uc3QgY29tcG9zZWRSZWZzID0gdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5jb2xsZWN0aW9uUmVmKTtcbiAgICAgIHJldHVybiA8Q29sbGVjdGlvblNsb3RJbXBsIHJlZj17Y29tcG9zZWRSZWZzfT57Y2hpbGRyZW59PC9Db2xsZWN0aW9uU2xvdEltcGw+O1xuICAgIH1cbiAgKTtcblxuICBDb2xsZWN0aW9uU2xvdC5kaXNwbGF5TmFtZSA9IENPTExFQ1RJT05fU0xPVF9OQU1FO1xuXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbGxlY3Rpb25JdGVtXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgY29uc3QgSVRFTV9TTE9UX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25JdGVtU2xvdCc7XG4gIGNvbnN0IElURU1fREFUQV9BVFRSID0gJ2RhdGEtcmFkaXgtY29sbGVjdGlvbi1pdGVtJztcblxuICB0eXBlIENvbGxlY3Rpb25JdGVtU2xvdFByb3BzID0gSXRlbURhdGEgJiB7XG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICBzY29wZTogYW55O1xuICB9O1xuXG4gIGNvbnN0IENvbGxlY3Rpb25JdGVtU2xvdEltcGwgPSBjcmVhdGVTbG90KElURU1fU0xPVF9OQU1FKTtcbiAgY29uc3QgQ29sbGVjdGlvbkl0ZW1TbG90ID0gUmVhY3QuZm9yd2FyZFJlZjxJdGVtRWxlbWVudCwgQ29sbGVjdGlvbkl0ZW1TbG90UHJvcHM+KFxuICAgIChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgICBjb25zdCB7IHNjb3BlLCBjaGlsZHJlbiwgLi4uaXRlbURhdGEgfSA9IHByb3BzO1xuICAgICAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEl0ZW1FbGVtZW50PihudWxsKTtcbiAgICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29sbGVjdGlvbkNvbnRleHQoSVRFTV9TTE9UX05BTUUsIHNjb3BlKTtcblxuICAgICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29udGV4dC5pdGVtTWFwLnNldChyZWYsIHsgcmVmLCAuLi4oaXRlbURhdGEgYXMgdW5rbm93biBhcyBJdGVtRGF0YSkgfSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB2b2lkIGNvbnRleHQuaXRlbU1hcC5kZWxldGUocmVmKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sbGVjdGlvbkl0ZW1TbG90SW1wbCB7Li4ueyBbSVRFTV9EQVRBX0FUVFJdOiAnJyB9fSByZWY9e2NvbXBvc2VkUmVmc30+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L0NvbGxlY3Rpb25JdGVtU2xvdEltcGw+XG4gICAgICApO1xuICAgIH1cbiAgKTtcblxuICBDb2xsZWN0aW9uSXRlbVNsb3QuZGlzcGxheU5hbWUgPSBJVEVNX1NMT1RfTkFNRTtcblxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiB1c2VDb2xsZWN0aW9uXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgZnVuY3Rpb24gdXNlQ29sbGVjdGlvbihzY29wZTogYW55KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KG5hbWUgKyAnQ29sbGVjdGlvbkNvbnN1bWVyJywgc2NvcGUpO1xuXG4gICAgY29uc3QgZ2V0SXRlbXMgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uTm9kZSA9IGNvbnRleHQuY29sbGVjdGlvblJlZi5jdXJyZW50O1xuICAgICAgaWYgKCFjb2xsZWN0aW9uTm9kZSkgcmV0dXJuIFtdO1xuICAgICAgY29uc3Qgb3JkZXJlZE5vZGVzID0gQXJyYXkuZnJvbShjb2xsZWN0aW9uTm9kZS5xdWVyeVNlbGVjdG9yQWxsKGBbJHtJVEVNX0RBVEFfQVRUUn1dYCkpO1xuICAgICAgY29uc3QgaXRlbXMgPSBBcnJheS5mcm9tKGNvbnRleHQuaXRlbU1hcC52YWx1ZXMoKSk7XG4gICAgICBjb25zdCBvcmRlcmVkSXRlbXMgPSBpdGVtcy5zb3J0KFxuICAgICAgICAoYSwgYikgPT4gb3JkZXJlZE5vZGVzLmluZGV4T2YoYS5yZWYuY3VycmVudCEpIC0gb3JkZXJlZE5vZGVzLmluZGV4T2YoYi5yZWYuY3VycmVudCEpXG4gICAgICApO1xuICAgICAgcmV0dXJuIG9yZGVyZWRJdGVtcztcbiAgICB9LCBbY29udGV4dC5jb2xsZWN0aW9uUmVmLCBjb250ZXh0Lml0ZW1NYXBdKTtcblxuICAgIHJldHVybiBnZXRJdGVtcztcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgeyBQcm92aWRlcjogQ29sbGVjdGlvblByb3ZpZGVyLCBTbG90OiBDb2xsZWN0aW9uU2xvdCwgSXRlbVNsb3Q6IENvbGxlY3Rpb25JdGVtU2xvdCB9LFxuICAgIHVzZUNvbGxlY3Rpb24sXG4gICAgY3JlYXRlQ29sbGVjdGlvblNjb3BlLFxuICBdIGFzIGNvbnN0O1xufVxuXG5leHBvcnQgeyBjcmVhdGVDb2xsZWN0aW9uIH07XG5leHBvcnQgdHlwZSB7IENvbGxlY3Rpb25Qcm9wcyB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHRTY29wZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jb250ZXh0JztcbmltcG9ydCB7IHVzZUNvbXBvc2VkUmVmcyB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnMnO1xuaW1wb3J0IHsgY3JlYXRlU2xvdCwgdHlwZSBTbG90IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNsb3QnO1xuaW1wb3J0IHR5cGUgeyBFbnRyeU9mIH0gZnJvbSAnLi9vcmRlcmVkLWRpY3Rpb25hcnknO1xuaW1wb3J0IHsgT3JkZXJlZERpY3QgfSBmcm9tICcuL29yZGVyZWQtZGljdGlvbmFyeSc7XG5cbnR5cGUgU2xvdFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTbG90PjtcbnR5cGUgQ29sbGVjdGlvbkVsZW1lbnQgPSBIVE1MRWxlbWVudDtcbmludGVyZmFjZSBDb2xsZWN0aW9uUHJvcHMgZXh0ZW5kcyBTbG90UHJvcHMge1xuICBzY29wZTogYW55O1xufVxuXG5pbnRlcmZhY2UgQmFzZUl0ZW1EYXRhIHtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbnR5cGUgSXRlbURhdGFXaXRoRWxlbWVudDxcbiAgSXRlbURhdGEgZXh0ZW5kcyBCYXNlSXRlbURhdGEsXG4gIEl0ZW1FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQsXG4+ID0gSXRlbURhdGEgJiB7XG4gIGVsZW1lbnQ6IEl0ZW1FbGVtZW50O1xufTtcblxudHlwZSBJdGVtTWFwPEl0ZW1FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQsIEl0ZW1EYXRhIGV4dGVuZHMgQmFzZUl0ZW1EYXRhPiA9IE9yZGVyZWREaWN0PFxuICBJdGVtRWxlbWVudCxcbiAgSXRlbURhdGFXaXRoRWxlbWVudDxJdGVtRGF0YSwgSXRlbUVsZW1lbnQ+XG4+O1xuXG5mdW5jdGlvbiBjcmVhdGVDb2xsZWN0aW9uPFxuICBJdGVtRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50LFxuICBJdGVtRGF0YSBleHRlbmRzIEJhc2VJdGVtRGF0YSA9IEJhc2VJdGVtRGF0YSxcbj4obmFtZTogc3RyaW5nKSB7XG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbGxlY3Rpb25Qcm92aWRlclxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIGNvbnN0IFBST1ZJREVSX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25Qcm92aWRlcic7XG4gIGNvbnN0IFtjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCwgY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9IGNyZWF0ZUNvbnRleHRTY29wZShQUk9WSURFUl9OQU1FKTtcblxuICB0eXBlIENvbnRleHRWYWx1ZSA9IHtcbiAgICBjb2xsZWN0aW9uRWxlbWVudDogQ29sbGVjdGlvbkVsZW1lbnQgfCBudWxsO1xuICAgIGNvbGxlY3Rpb25SZWY6IFJlYWN0LlJlZjxDb2xsZWN0aW9uRWxlbWVudCB8IG51bGw+O1xuICAgIGNvbGxlY3Rpb25SZWZPYmplY3Q6IFJlYWN0LlJlZk9iamVjdDxDb2xsZWN0aW9uRWxlbWVudCB8IG51bGw+O1xuICAgIGl0ZW1NYXA6IEl0ZW1NYXA8SXRlbUVsZW1lbnQsIEl0ZW1EYXRhPjtcbiAgICBzZXRJdGVtTWFwOiBSZWFjdC5EaXNwYXRjaDxSZWFjdC5TZXRTdGF0ZUFjdGlvbjxJdGVtTWFwPEl0ZW1FbGVtZW50LCBJdGVtRGF0YT4+PjtcbiAgfTtcblxuICBjb25zdCBbQ29sbGVjdGlvbkNvbnRleHRQcm92aWRlciwgdXNlQ29sbGVjdGlvbkNvbnRleHRdID0gY3JlYXRlQ29sbGVjdGlvbkNvbnRleHQ8Q29udGV4dFZhbHVlPihcbiAgICBQUk9WSURFUl9OQU1FLFxuICAgIHtcbiAgICAgIGNvbGxlY3Rpb25FbGVtZW50OiBudWxsLFxuICAgICAgY29sbGVjdGlvblJlZjogeyBjdXJyZW50OiBudWxsIH0sXG4gICAgICBjb2xsZWN0aW9uUmVmT2JqZWN0OiB7IGN1cnJlbnQ6IG51bGwgfSxcbiAgICAgIGl0ZW1NYXA6IG5ldyBPcmRlcmVkRGljdCgpLFxuICAgICAgc2V0SXRlbU1hcDogKCkgPT4gdm9pZCAwLFxuICAgIH1cbiAgKTtcblxuICB0eXBlIENvbGxlY3Rpb25TdGF0ZSA9IFtcbiAgICBJdGVtTWFwOiBJdGVtTWFwPEl0ZW1FbGVtZW50LCBJdGVtRGF0YT4sXG4gICAgU2V0SXRlbU1hcDogUmVhY3QuRGlzcGF0Y2g8UmVhY3QuU2V0U3RhdGVBY3Rpb248SXRlbU1hcDxJdGVtRWxlbWVudCwgSXRlbURhdGE+Pj4sXG4gIF07XG5cbiAgY29uc3QgQ29sbGVjdGlvblByb3ZpZGVyOiBSZWFjdC5GQzx7XG4gICAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gICAgc2NvcGU6IGFueTtcbiAgICBzdGF0ZT86IENvbGxlY3Rpb25TdGF0ZTtcbiAgfT4gPSAoeyBzdGF0ZSwgLi4ucHJvcHMgfSkgPT4ge1xuICAgIHJldHVybiBzdGF0ZSA/IChcbiAgICAgIDxDb2xsZWN0aW9uUHJvdmlkZXJJbXBsIHsuLi5wcm9wc30gc3RhdGU9e3N0YXRlfSAvPlxuICAgICkgOiAoXG4gICAgICA8Q29sbGVjdGlvbkluaXQgey4uLnByb3BzfSAvPlxuICAgICk7XG4gIH07XG4gIENvbGxlY3Rpb25Qcm92aWRlci5kaXNwbGF5TmFtZSA9IFBST1ZJREVSX05BTUU7XG5cbiAgY29uc3QgQ29sbGVjdGlvbkluaXQ6IFJlYWN0LkZDPHtcbiAgICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICBzY29wZTogYW55O1xuICB9PiA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gdXNlSW5pdENvbGxlY3Rpb24oKTtcbiAgICByZXR1cm4gPENvbGxlY3Rpb25Qcm92aWRlckltcGwgey4uLnByb3BzfSBzdGF0ZT17c3RhdGV9IC8+O1xuICB9O1xuICBDb2xsZWN0aW9uSW5pdC5kaXNwbGF5TmFtZSA9IFBST1ZJREVSX05BTUUgKyAnSW5pdCc7XG5cbiAgY29uc3QgQ29sbGVjdGlvblByb3ZpZGVySW1wbDogUmVhY3QuRkM8e1xuICAgIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICAgIHNjb3BlOiBhbnk7XG4gICAgc3RhdGU6IENvbGxlY3Rpb25TdGF0ZTtcbiAgfT4gPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHNjb3BlLCBjaGlsZHJlbiwgc3RhdGUgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxDb2xsZWN0aW9uRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW2NvbGxlY3Rpb25FbGVtZW50LCBzZXRDb2xsZWN0aW9uRWxlbWVudF0gPSBSZWFjdC51c2VTdGF0ZTxDb2xsZWN0aW9uRWxlbWVudCB8IG51bGw+KFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgY29uc3QgY29tcG9zZVJlZnMgPSB1c2VDb21wb3NlZFJlZnMocmVmLCBzZXRDb2xsZWN0aW9uRWxlbWVudCk7XG4gICAgY29uc3QgW2l0ZW1NYXAsIHNldEl0ZW1NYXBdID0gc3RhdGU7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCFjb2xsZWN0aW9uRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBvYnNlcnZlciA9IGdldENoaWxkTGlzdE9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgLy8gc2V0SXRlbU1hcCgobWFwKSA9PiB7XG4gICAgICAgIC8vICAgY29uc3QgY29weSA9IG5ldyBPcmRlcmVkRGljdChtYXApLnRvU29ydGVkKChbLCBhXSwgWywgYl0pID0+XG4gICAgICAgIC8vICAgICAhYS5lbGVtZW50IHx8ICFiLmVsZW1lbnQgPyAwIDogaXNFbGVtZW50UHJlY2VkaW5nKGEuZWxlbWVudCwgYi5lbGVtZW50KSA/IC0xIDogMVxuICAgICAgICAvLyAgICk7XG4gICAgICAgIC8vICAgLy8gY2hlY2sgaWYgdGhlIG9yZGVyIGhhcyBjaGFuZ2VkXG4gICAgICAgIC8vICAgbGV0IGluZGV4ID0gLTE7XG4gICAgICAgIC8vICAgZm9yIChjb25zdCBlbnRyeSBvZiBjb3B5KSB7XG4gICAgICAgIC8vICAgICBpbmRleCsrO1xuICAgICAgICAvLyAgICAgY29uc3Qga2V5ID0gbWFwLmtleUF0KGluZGV4KSE7XG4gICAgICAgIC8vICAgICBjb25zdCBbY29weUtleV0gPSBlbnRyeTtcbiAgICAgICAgLy8gICAgIGlmIChrZXkgIT09IGNvcHlLZXkpIHtcbiAgICAgICAgLy8gICAgICAgLy8gb3JkZXIgaGFzIGNoYW5nZWQhXG4gICAgICAgIC8vICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gICByZXR1cm4gbWFwO1xuICAgICAgICAvLyB9KTtcbiAgICAgIH0pO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjb2xsZWN0aW9uRWxlbWVudCwge1xuICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH07XG4gICAgfSwgW2NvbGxlY3Rpb25FbGVtZW50XSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPENvbGxlY3Rpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgc2NvcGU9e3Njb3BlfVxuICAgICAgICBpdGVtTWFwPXtpdGVtTWFwfVxuICAgICAgICBzZXRJdGVtTWFwPXtzZXRJdGVtTWFwfVxuICAgICAgICBjb2xsZWN0aW9uUmVmPXtjb21wb3NlUmVmc31cbiAgICAgICAgY29sbGVjdGlvblJlZk9iamVjdD17cmVmfVxuICAgICAgICBjb2xsZWN0aW9uRWxlbWVudD17Y29sbGVjdGlvbkVsZW1lbnR9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ29sbGVjdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICApO1xuICB9O1xuXG4gIENvbGxlY3Rpb25Qcm92aWRlckltcGwuZGlzcGxheU5hbWUgPSBQUk9WSURFUl9OQU1FICsgJ0ltcGwnO1xuXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbGxlY3Rpb25TbG90XG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgY29uc3QgQ09MTEVDVElPTl9TTE9UX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25TbG90JztcblxuICBjb25zdCBDb2xsZWN0aW9uU2xvdEltcGwgPSBjcmVhdGVTbG90KENPTExFQ1RJT05fU0xPVF9OQU1FKTtcbiAgY29uc3QgQ29sbGVjdGlvblNsb3QgPSBSZWFjdC5mb3J3YXJkUmVmPENvbGxlY3Rpb25FbGVtZW50LCBDb2xsZWN0aW9uUHJvcHM+KFxuICAgIChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgICBjb25zdCB7IHNjb3BlLCBjaGlsZHJlbiB9ID0gcHJvcHM7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29sbGVjdGlvbkNvbnRleHQoQ09MTEVDVElPTl9TTE9UX05BTUUsIHNjb3BlKTtcbiAgICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQuY29sbGVjdGlvblJlZik7XG4gICAgICByZXR1cm4gPENvbGxlY3Rpb25TbG90SW1wbCByZWY9e2NvbXBvc2VkUmVmc30+e2NoaWxkcmVufTwvQ29sbGVjdGlvblNsb3RJbXBsPjtcbiAgICB9XG4gICk7XG5cbiAgQ29sbGVjdGlvblNsb3QuZGlzcGxheU5hbWUgPSBDT0xMRUNUSU9OX1NMT1RfTkFNRTtcblxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uSXRlbVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIGNvbnN0IElURU1fU0xPVF9OQU1FID0gbmFtZSArICdDb2xsZWN0aW9uSXRlbVNsb3QnO1xuICBjb25zdCBJVEVNX0RBVEFfQVRUUiA9ICdkYXRhLXJhZGl4LWNvbGxlY3Rpb24taXRlbSc7XG5cbiAgdHlwZSBDb2xsZWN0aW9uSXRlbVNsb3RQcm9wcyA9IEl0ZW1EYXRhICYge1xuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gICAgc2NvcGU6IGFueTtcbiAgfTtcblxuICBjb25zdCBDb2xsZWN0aW9uSXRlbVNsb3RJbXBsID0gY3JlYXRlU2xvdChJVEVNX1NMT1RfTkFNRSk7XG4gIGNvbnN0IENvbGxlY3Rpb25JdGVtU2xvdCA9IFJlYWN0LmZvcndhcmRSZWY8SXRlbUVsZW1lbnQsIENvbGxlY3Rpb25JdGVtU2xvdFByb3BzPihcbiAgICAocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xuICAgICAgY29uc3QgeyBzY29wZSwgY2hpbGRyZW4sIC4uLml0ZW1EYXRhIH0gPSBwcm9wcztcbiAgICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxJdGVtRWxlbWVudD4obnVsbCk7XG4gICAgICBjb25zdCBbZWxlbWVudCwgc2V0RWxlbWVudF0gPSBSZWFjdC51c2VTdGF0ZTxJdGVtRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICAgICAgY29uc3QgY29tcG9zZWRSZWZzID0gdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmLCBzZXRFbGVtZW50KTtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb2xsZWN0aW9uQ29udGV4dChJVEVNX1NMT1RfTkFNRSwgc2NvcGUpO1xuXG4gICAgICBjb25zdCB7IHNldEl0ZW1NYXAgfSA9IGNvbnRleHQ7XG5cbiAgICAgIGNvbnN0IGl0ZW1EYXRhUmVmID0gUmVhY3QudXNlUmVmKGl0ZW1EYXRhKTtcbiAgICAgIGlmICghc2hhbGxvd0VxdWFsKGl0ZW1EYXRhUmVmLmN1cnJlbnQsIGl0ZW1EYXRhKSkge1xuICAgICAgICBpdGVtRGF0YVJlZi5jdXJyZW50ID0gaXRlbURhdGE7XG4gICAgICB9XG4gICAgICBjb25zdCBtZW1vaXplZEl0ZW1EYXRhID0gaXRlbURhdGFSZWYuY3VycmVudDtcblxuICAgICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgaXRlbURhdGEgPSBtZW1vaXplZEl0ZW1EYXRhO1xuICAgICAgICBzZXRJdGVtTWFwKChtYXApID0+IHtcbiAgICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFtYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBtYXAuc2V0KGVsZW1lbnQsIHsgLi4uKGl0ZW1EYXRhIGFzIHVua25vd24gYXMgSXRlbURhdGEpLCBlbGVtZW50IH0pO1xuICAgICAgICAgICAgcmV0dXJuIG1hcC50b1NvcnRlZChzb3J0QnlEb2N1bWVudFBvc2l0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWFwXG4gICAgICAgICAgICAuc2V0KGVsZW1lbnQsIHsgLi4uKGl0ZW1EYXRhIGFzIHVua25vd24gYXMgSXRlbURhdGEpLCBlbGVtZW50IH0pXG4gICAgICAgICAgICAudG9Tb3J0ZWQoc29ydEJ5RG9jdW1lbnRQb3NpdGlvbik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgc2V0SXRlbU1hcCgobWFwKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIW1hcC5oYXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1hcC5kZWxldGUoZWxlbWVudCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE9yZGVyZWREaWN0KG1hcCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICB9LCBbZWxlbWVudCwgbWVtb2l6ZWRJdGVtRGF0YSwgc2V0SXRlbU1hcF0pO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sbGVjdGlvbkl0ZW1TbG90SW1wbCB7Li4ueyBbSVRFTV9EQVRBX0FUVFJdOiAnJyB9fSByZWY9e2NvbXBvc2VkUmVmcyBhcyBhbnl9PlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9Db2xsZWN0aW9uSXRlbVNsb3RJbXBsPlxuICAgICAgKTtcbiAgICB9XG4gICk7XG5cbiAgQ29sbGVjdGlvbkl0ZW1TbG90LmRpc3BsYXlOYW1lID0gSVRFTV9TTE9UX05BTUU7XG5cbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogdXNlSW5pdENvbGxlY3Rpb25cbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICBmdW5jdGlvbiB1c2VJbml0Q29sbGVjdGlvbigpIHtcbiAgICByZXR1cm4gUmVhY3QudXNlU3RhdGU8SXRlbU1hcDxJdGVtRWxlbWVudCwgSXRlbURhdGE+PihuZXcgT3JkZXJlZERpY3QoKSk7XG4gIH1cblxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiB1c2VDb2xsZWN0aW9uXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgZnVuY3Rpb24gdXNlQ29sbGVjdGlvbihzY29wZTogYW55KSB7XG4gICAgY29uc3QgeyBpdGVtTWFwIH0gPSB1c2VDb2xsZWN0aW9uQ29udGV4dChuYW1lICsgJ0NvbGxlY3Rpb25Db25zdW1lcicsIHNjb3BlKTtcblxuICAgIHJldHVybiBpdGVtTWFwO1xuICB9XG5cbiAgY29uc3QgZnVuY3Rpb25zID0ge1xuICAgIGNyZWF0ZUNvbGxlY3Rpb25TY29wZSxcbiAgICB1c2VDb2xsZWN0aW9uLFxuICAgIHVzZUluaXRDb2xsZWN0aW9uLFxuICB9O1xuXG4gIHJldHVybiBbXG4gICAgeyBQcm92aWRlcjogQ29sbGVjdGlvblByb3ZpZGVyLCBTbG90OiBDb2xsZWN0aW9uU2xvdCwgSXRlbVNsb3Q6IENvbGxlY3Rpb25JdGVtU2xvdCB9LFxuICAgIGZ1bmN0aW9ucyxcbiAgXSBhcyBjb25zdDtcbn1cblxuZXhwb3J0IHsgY3JlYXRlQ29sbGVjdGlvbiB9O1xuZXhwb3J0IHR5cGUgeyBDb2xsZWN0aW9uUHJvcHMgfTtcblxuZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGE6IGFueSwgYjogYW55KSB7XG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgY29uc3Qga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRQcmVjZWRpbmcoYTogRWxlbWVudCwgYjogRWxlbWVudCkge1xuICByZXR1cm4gISEoYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HKTtcbn1cblxuZnVuY3Rpb24gc29ydEJ5RG9jdW1lbnRQb3NpdGlvbjxFIGV4dGVuZHMgSFRNTEVsZW1lbnQsIFQgZXh0ZW5kcyBCYXNlSXRlbURhdGE+KFxuICBhOiBFbnRyeU9mPEl0ZW1NYXA8RSwgVD4+LFxuICBiOiBFbnRyeU9mPEl0ZW1NYXA8RSwgVD4+XG4pIHtcbiAgcmV0dXJuICFhWzFdLmVsZW1lbnQgfHwgIWJbMV0uZWxlbWVudFxuICAgID8gMFxuICAgIDogaXNFbGVtZW50UHJlY2VkaW5nKGFbMV0uZWxlbWVudCwgYlsxXS5lbGVtZW50KVxuICAgICAgPyAtMVxuICAgICAgOiAxO1xufVxuXG5mdW5jdGlvbiBnZXRDaGlsZExpc3RPYnNlcnZlcihjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnNMaXN0KSA9PiB7XG4gICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnNMaXN0KSB7XG4gICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2NoaWxkTGlzdCcpIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG9ic2VydmVyO1xufVxuIiwiLy8gTm90IGEgcmVhbCBtZW1iZXIgYmVjYXVzZSBpdCBzaG91bGRuJ3QgYmUgYWNjZXNzaWJsZSwgYnV0IHRoZSBzdXBlciBjbGFzc1xuLy8gY2FsbHMgYHNldGAgd2hpY2ggbmVlZHMgdG8gcmVhZCB0aGUgaW5zdGFuY2lhdGlvbiBzdGF0ZSwgc28gaXQgY2FuJ3QgYmUgYVxuLy8gcHJpdmF0ZSBtZW1iZXIuXG5jb25zdCBfX2luc3RhbmNpYXRlZCA9IG5ldyBXZWFrTWFwPE9yZGVyZWREaWN0PGFueSwgYW55PiwgYm9vbGVhbj4oKTtcbmV4cG9ydCBjbGFzcyBPcmRlcmVkRGljdDxLLCBWPiBleHRlbmRzIE1hcDxLLCBWPiB7XG4gICNrZXlzOiBLW107XG5cbiAgY29uc3RydWN0b3IoaXRlcmFibGU/OiBJdGVyYWJsZTxyZWFkb25seSBbSywgVl0+IHwgbnVsbCB8IHVuZGVmaW5lZCk7XG4gIGNvbnN0cnVjdG9yKGVudHJpZXM/OiByZWFkb25seSAocmVhZG9ubHkgW0ssIFZdKVtdIHwgbnVsbCkge1xuICAgIHN1cGVyKGVudHJpZXMpO1xuICAgIHRoaXMuI2tleXMgPSBbLi4uc3VwZXIua2V5cygpXTtcbiAgICBfX2luc3RhbmNpYXRlZC5zZXQodGhpcywgdHJ1ZSk7XG4gIH1cblxuICBzZXQoa2V5OiBLLCB2YWx1ZTogVikge1xuICAgIGlmIChfX2luc3RhbmNpYXRlZC5nZXQodGhpcykpIHtcbiAgICAgIGlmICh0aGlzLmhhcyhrZXkpKSB7XG4gICAgICAgIHRoaXMuI2tleXNbdGhpcy4ja2V5cy5pbmRleE9mKGtleSldID0ga2V5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4ja2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHN1cGVyLnNldChrZXksIHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluc2VydChpbmRleDogbnVtYmVyLCBrZXk6IEssIHZhbHVlOiBWKSB7XG4gICAgY29uc3QgaGFzID0gdGhpcy5oYXMoa2V5KTtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLiNrZXlzLmxlbmd0aDtcbiAgICBjb25zdCByZWxhdGl2ZUluZGV4ID0gdG9TYWZlSW50ZWdlcihpbmRleCk7XG4gICAgbGV0IGFjdHVhbEluZGV4ID0gcmVsYXRpdmVJbmRleCA+PSAwID8gcmVsYXRpdmVJbmRleCA6IGxlbmd0aCArIHJlbGF0aXZlSW5kZXg7XG4gICAgY29uc3Qgc2FmZUluZGV4ID0gYWN0dWFsSW5kZXggPCAwIHx8IGFjdHVhbEluZGV4ID49IGxlbmd0aCA/IC0xIDogYWN0dWFsSW5kZXg7XG5cbiAgICBpZiAoc2FmZUluZGV4ID09PSB0aGlzLnNpemUgfHwgKGhhcyAmJiBzYWZlSW5kZXggPT09IHRoaXMuc2l6ZSAtIDEpIHx8IHNhZmVJbmRleCA9PT0gLTEpIHtcbiAgICAgIHRoaXMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuc2l6ZSArIChoYXMgPyAwIDogMSk7XG5cbiAgICAvLyBJZiB5b3UgaW5zZXJ0IGF0LCBzYXksIC0yLCB3aXRob3V0IHRoaXMgYml0IHlvdSdkIHJlcGxhY2UgdGhlXG4gICAgLy8gc2Vjb25kLXRvLWxhc3QgaXRlbSBhbmQgcHVzaCB0aGUgcmVzdCB1cCBvbmUsIHdoaWNoIG1lYW5zIHRoZSBuZXcgaXRlbSBpc1xuICAgIC8vIDNyZCB0byBsYXN0LiBUaGlzIGlzbid0IHZlcnkgaW50dWl0aXZlOyBpbnNlcnRpbmcgYXQgLTIgaXMgbW9yZSBsaWtlXG4gICAgLy8gc2F5aW5nIFwibWFrZSB0aGlzIGl0ZW0gdGhlIHNlY29uZCB0byBsYXN0XCIuXG4gICAgaWYgKHJlbGF0aXZlSW5kZXggPCAwKSB7XG4gICAgICBhY3R1YWxJbmRleCsrO1xuICAgIH1cblxuICAgIGNvbnN0IGtleXMgPSBbLi4udGhpcy4ja2V5c107XG4gICAgbGV0IG5leHRWYWx1ZTogViB8IHVuZGVmaW5lZDtcbiAgICBsZXQgc2hvdWxkU2tpcCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSBhY3R1YWxJbmRleDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgaWYgKGFjdHVhbEluZGV4ID09PSBpKSB7XG4gICAgICAgIGxldCBuZXh0S2V5ID0ga2V5c1tpXSE7XG4gICAgICAgIGlmIChrZXlzW2ldID09PSBrZXkpIHtcbiAgICAgICAgICBuZXh0S2V5ID0ga2V5c1tpICsgMV0hO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXMpIHtcbiAgICAgICAgICAvLyBkZWxldGUgZmlyc3QgdG8gZW5zdXJlIHRoYXQgdGhlIGl0ZW0gaXMgbW92ZWQgdG8gdGhlIGVuZFxuICAgICAgICAgIHRoaXMuZGVsZXRlKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dFZhbHVlID0gdGhpcy5nZXQobmV4dEtleSk7XG4gICAgICAgIHRoaXMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFzaG91bGRTa2lwICYmIGtleXNbaSAtIDFdID09PSBrZXkpIHtcbiAgICAgICAgICBzaG91bGRTa2lwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50S2V5ID0ga2V5c1tzaG91bGRTa2lwID8gaSA6IGkgLSAxXSE7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IG5leHRWYWx1ZSE7XG4gICAgICAgIG5leHRWYWx1ZSA9IHRoaXMuZ2V0KGN1cnJlbnRLZXkpO1xuICAgICAgICB0aGlzLmRlbGV0ZShjdXJyZW50S2V5KTtcbiAgICAgICAgdGhpcy5zZXQoY3VycmVudEtleSwgY3VycmVudFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB3aXRoKGluZGV4OiBudW1iZXIsIGtleTogSywgdmFsdWU6IFYpIHtcbiAgICBjb25zdCBjb3B5ID0gbmV3IE9yZGVyZWREaWN0KHRoaXMpO1xuICAgIGNvcHkuaW5zZXJ0KGluZGV4LCBrZXksIHZhbHVlKTtcbiAgICByZXR1cm4gY29weTtcbiAgfVxuXG4gIGJlZm9yZShrZXk6IEspIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuI2tleXMuaW5kZXhPZihrZXkpIC0gMTtcbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lbnRyeUF0KGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgbmV3IGtleS12YWx1ZSBwYWlyIGF0IHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlIGdpdmVuIGtleS5cbiAgICovXG4gIHNldEJlZm9yZShrZXk6IEssIG5ld0tleTogSywgdmFsdWU6IFYpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuI2tleXMuaW5kZXhPZihrZXkpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnNlcnQoaW5kZXgsIG5ld0tleSwgdmFsdWUpO1xuICB9XG5cbiAgYWZ0ZXIoa2V5OiBLKSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy4ja2V5cy5pbmRleE9mKGtleSk7XG4gICAgaW5kZXggPSBpbmRleCA9PT0gLTEgfHwgaW5kZXggPT09IHRoaXMuc2l6ZSAtIDEgPyAtMSA6IGluZGV4ICsgMTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lbnRyeUF0KGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgbmV3IGtleS12YWx1ZSBwYWlyIGF0IHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgZ2l2ZW4ga2V5LlxuICAgKi9cbiAgc2V0QWZ0ZXIoa2V5OiBLLCBuZXdLZXk6IEssIHZhbHVlOiBWKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLiNrZXlzLmluZGV4T2Yoa2V5KTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW5zZXJ0KGluZGV4ICsgMSwgbmV3S2V5LCB2YWx1ZSk7XG4gIH1cblxuICBmaXJzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbnRyeUF0KDApO1xuICB9XG5cbiAgbGFzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbnRyeUF0KC0xKTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuI2tleXMgPSBbXTtcbiAgICByZXR1cm4gc3VwZXIuY2xlYXIoKTtcbiAgfVxuXG4gIGRlbGV0ZShrZXk6IEspIHtcbiAgICBjb25zdCBkZWxldGVkID0gc3VwZXIuZGVsZXRlKGtleSk7XG4gICAgaWYgKGRlbGV0ZWQpIHtcbiAgICAgIHRoaXMuI2tleXMuc3BsaWNlKHRoaXMuI2tleXMuaW5kZXhPZihrZXkpLCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICBkZWxldGVBdChpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5rZXlBdChpbmRleCk7XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYXQoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGtleSA9IGF0KHRoaXMuI2tleXMsIGluZGV4KTtcbiAgICBpZiAoa2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIGVudHJ5QXQoaW5kZXg6IG51bWJlcik6IFtLLCBWXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qga2V5ID0gYXQodGhpcy4ja2V5cywgaW5kZXgpO1xuICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFtrZXksIHRoaXMuZ2V0KGtleSkhXTtcbiAgICB9XG4gIH1cblxuICBpbmRleE9mKGtleTogSykge1xuICAgIHJldHVybiB0aGlzLiNrZXlzLmluZGV4T2Yoa2V5KTtcbiAgfVxuXG4gIGtleUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gYXQodGhpcy4ja2V5cywgaW5kZXgpO1xuICB9XG5cbiAgZnJvbShrZXk6IEssIG9mZnNldDogbnVtYmVyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4T2Yoa2V5KTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgZGVzdCA9IGluZGV4ICsgb2Zmc2V0O1xuICAgIGlmIChkZXN0IDwgMCkgZGVzdCA9IDA7XG4gICAgaWYgKGRlc3QgPj0gdGhpcy5zaXplKSBkZXN0ID0gdGhpcy5zaXplIC0gMTtcbiAgICByZXR1cm4gdGhpcy5hdChkZXN0KTtcbiAgfVxuXG4gIGtleUZyb20oa2V5OiBLLCBvZmZzZXQ6IG51bWJlcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbmRleE9mKGtleSk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGV0IGRlc3QgPSBpbmRleCArIG9mZnNldDtcbiAgICBpZiAoZGVzdCA8IDApIGRlc3QgPSAwO1xuICAgIGlmIChkZXN0ID49IHRoaXMuc2l6ZSkgZGVzdCA9IHRoaXMuc2l6ZSAtIDE7XG4gICAgcmV0dXJuIHRoaXMua2V5QXQoZGVzdCk7XG4gIH1cblxuICBmaW5kKFxuICAgIHByZWRpY2F0ZTogKGVudHJ5OiBbSywgVl0sIGluZGV4OiBudW1iZXIsIGRpY3Rpb25hcnk6IE9yZGVyZWREaWN0PEssIFY+KSA9PiBib29sZWFuLFxuICAgIHRoaXNBcmc/OiBhbnlcbiAgKSB7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMpIHtcbiAgICAgIGlmIChSZWZsZWN0LmFwcGx5KHByZWRpY2F0ZSwgdGhpc0FyZywgW2VudHJ5LCBpbmRleCwgdGhpc10pKSB7XG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgIH1cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBmaW5kSW5kZXgoXG4gICAgcHJlZGljYXRlOiAoZW50cnk6IFtLLCBWXSwgaW5kZXg6IG51bWJlciwgZGljdGlvbmFyeTogT3JkZXJlZERpY3Q8SywgVj4pID0+IGJvb2xlYW4sXG4gICAgdGhpc0FyZz86IGFueVxuICApIHtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcykge1xuICAgICAgaWYgKFJlZmxlY3QuYXBwbHkocHJlZGljYXRlLCB0aGlzQXJnLCBbZW50cnksIGluZGV4LCB0aGlzXSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgICAgaW5kZXgrKztcbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgZmlsdGVyPEtLIGV4dGVuZHMgSywgVlYgZXh0ZW5kcyBWPihcbiAgICBwcmVkaWNhdGU6IChlbnRyeTogW0ssIFZdLCBpbmRleDogbnVtYmVyLCBkaWN0OiBPcmRlcmVkRGljdDxLLCBWPikgPT4gZW50cnkgaXMgW0tLLCBWVl0sXG4gICAgdGhpc0FyZz86IGFueVxuICApOiBPcmRlcmVkRGljdDxLSywgVlY+O1xuXG4gIGZpbHRlcihcbiAgICBwcmVkaWNhdGU6IChlbnRyeTogW0ssIFZdLCBpbmRleDogbnVtYmVyLCBkaWN0aW9uYXJ5OiBPcmRlcmVkRGljdDxLLCBWPikgPT4gdW5rbm93bixcbiAgICB0aGlzQXJnPzogYW55XG4gICk6IE9yZGVyZWREaWN0PEssIFY+O1xuXG4gIGZpbHRlcihcbiAgICBwcmVkaWNhdGU6IChlbnRyeTogW0ssIFZdLCBpbmRleDogbnVtYmVyLCBkaWN0aW9uYXJ5OiBPcmRlcmVkRGljdDxLLCBWPikgPT4gdW5rbm93bixcbiAgICB0aGlzQXJnPzogYW55XG4gICkge1xuICAgIGNvbnN0IGVudHJpZXM6IEFycmF5PFtLLCBWXT4gPSBbXTtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcykge1xuICAgICAgaWYgKFJlZmxlY3QuYXBwbHkocHJlZGljYXRlLCB0aGlzQXJnLCBbZW50cnksIGluZGV4LCB0aGlzXSkpIHtcbiAgICAgICAgZW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICAgIH1cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIHJldHVybiBuZXcgT3JkZXJlZERpY3QoZW50cmllcyk7XG4gIH1cblxuICBtYXA8VT4oXG4gICAgY2FsbGJhY2tmbjogKGVudHJ5OiBbSywgVl0sIGluZGV4OiBudW1iZXIsIGRpY3Rpb25hcnk6IE9yZGVyZWREaWN0PEssIFY+KSA9PiBVLFxuICAgIHRoaXNBcmc/OiBhbnlcbiAgKTogT3JkZXJlZERpY3Q8SywgVT4ge1xuICAgIGNvbnN0IGVudHJpZXM6IFtLLCBVXVtdID0gW107XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMpIHtcbiAgICAgIGVudHJpZXMucHVzaChbZW50cnlbMF0sIFJlZmxlY3QuYXBwbHkoY2FsbGJhY2tmbiwgdGhpc0FyZywgW2VudHJ5LCBpbmRleCwgdGhpc10pXSk7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE9yZGVyZWREaWN0KGVudHJpZXMpO1xuICB9XG5cbiAgcmVkdWNlKFxuICAgIGNhbGxiYWNrZm46IChcbiAgICAgIHByZXZpb3VzVmFsdWU6IFtLLCBWXSxcbiAgICAgIGN1cnJlbnRFbnRyeTogW0ssIFZdLFxuICAgICAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gICAgICBkaWN0aW9uYXJ5OiBPcmRlcmVkRGljdDxLLCBWPlxuICAgICkgPT4gW0ssIFZdXG4gICk6IFtLLCBWXTtcbiAgcmVkdWNlKFxuICAgIGNhbGxiYWNrZm46IChcbiAgICAgIHByZXZpb3VzVmFsdWU6IFtLLCBWXSxcbiAgICAgIGN1cnJlbnRFbnRyeTogW0ssIFZdLFxuICAgICAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gICAgICBkaWN0aW9uYXJ5OiBPcmRlcmVkRGljdDxLLCBWPlxuICAgICkgPT4gW0ssIFZdLFxuICAgIGluaXRpYWxWYWx1ZTogW0ssIFZdXG4gICk6IFtLLCBWXTtcbiAgcmVkdWNlPFU+KFxuICAgIGNhbGxiYWNrZm46IChcbiAgICAgIHByZXZpb3VzVmFsdWU6IFUsXG4gICAgICBjdXJyZW50RW50cnk6IFtLLCBWXSxcbiAgICAgIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAgICAgZGljdGlvbmFyeTogT3JkZXJlZERpY3Q8SywgVj5cbiAgICApID0+IFUsXG4gICAgaW5pdGlhbFZhbHVlOiBVXG4gICk6IFU7XG5cbiAgcmVkdWNlPFU+KFxuICAgIC4uLmFyZ3M6IFtcbiAgICAgIChcbiAgICAgICAgcHJldmlvdXNWYWx1ZTogVSxcbiAgICAgICAgY3VycmVudEVudHJ5OiBbSywgVl0sXG4gICAgICAgIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAgICAgICBkaWN0aW9uYXJ5OiBPcmRlcmVkRGljdDxLLCBWPlxuICAgICAgKSA9PiBVLFxuICAgICAgVT8sXG4gICAgXVxuICApIHtcbiAgICBjb25zdCBbY2FsbGJhY2tmbiwgaW5pdGlhbFZhbHVlXSA9IGFyZ3M7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBsZXQgYWNjdW11bGF0b3IgPSBpbml0aWFsVmFsdWUgPz8gdGhpcy5hdCgwKSE7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzKSB7XG4gICAgICBpZiAoaW5kZXggPT09IDAgJiYgYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgYWNjdW11bGF0b3IgPSBlbnRyeSBhcyBhbnk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY2N1bXVsYXRvciA9IFJlZmxlY3QuYXBwbHkoY2FsbGJhY2tmbiwgdGhpcywgW2FjY3VtdWxhdG9yLCBlbnRyeSwgaW5kZXgsIHRoaXNdKTtcbiAgICAgIH1cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIHJlZHVjZVJpZ2h0KFxuICAgIGNhbGxiYWNrZm46IChcbiAgICAgIHByZXZpb3VzVmFsdWU6IFtLLCBWXSxcbiAgICAgIGN1cnJlbnRFbnRyeTogW0ssIFZdLFxuICAgICAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gICAgICBkaWN0aW9uYXJ5OiBPcmRlcmVkRGljdDxLLCBWPlxuICAgICkgPT4gW0ssIFZdXG4gICk6IFtLLCBWXTtcbiAgcmVkdWNlUmlnaHQoXG4gICAgY2FsbGJhY2tmbjogKFxuICAgICAgcHJldmlvdXNWYWx1ZTogW0ssIFZdLFxuICAgICAgY3VycmVudEVudHJ5OiBbSywgVl0sXG4gICAgICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgICAgIGRpY3Rpb25hcnk6IE9yZGVyZWREaWN0PEssIFY+XG4gICAgKSA9PiBbSywgVl0sXG4gICAgaW5pdGlhbFZhbHVlOiBbSywgVl1cbiAgKTogW0ssIFZdO1xuICByZWR1Y2VSaWdodDxVPihcbiAgICBjYWxsYmFja2ZuOiAoXG4gICAgICBwcmV2aW91c1ZhbHVlOiBbSywgVl0sXG4gICAgICBjdXJyZW50VmFsdWU6IFUsXG4gICAgICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgICAgIGRpY3Rpb25hcnk6IE9yZGVyZWREaWN0PEssIFY+XG4gICAgKSA9PiBVLFxuICAgIGluaXRpYWxWYWx1ZTogVVxuICApOiBVO1xuXG4gIHJlZHVjZVJpZ2h0PFU+KFxuICAgIC4uLmFyZ3M6IFtcbiAgICAgIChcbiAgICAgICAgcHJldmlvdXNWYWx1ZTogVSxcbiAgICAgICAgY3VycmVudEVudHJ5OiBbSywgVl0sXG4gICAgICAgIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAgICAgICBkaWN0aW9uYXJ5OiBPcmRlcmVkRGljdDxLLCBWPlxuICAgICAgKSA9PiBVLFxuICAgICAgVT8sXG4gICAgXVxuICApIHtcbiAgICBjb25zdCBbY2FsbGJhY2tmbiwgaW5pdGlhbFZhbHVlXSA9IGFyZ3M7XG4gICAgbGV0IGFjY3VtdWxhdG9yID0gaW5pdGlhbFZhbHVlID8/IHRoaXMuYXQoLTEpITtcbiAgICBmb3IgKGxldCBpbmRleCA9IHRoaXMuc2l6ZSAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5hdChpbmRleCkhO1xuICAgICAgaWYgKGluZGV4ID09PSB0aGlzLnNpemUgLSAxICYmIGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGFjY3VtdWxhdG9yID0gZW50cnkgYXMgYW55O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjdW11bGF0b3IgPSBSZWZsZWN0LmFwcGx5KGNhbGxiYWNrZm4sIHRoaXMsIFthY2N1bXVsYXRvciwgZW50cnksIGluZGV4LCB0aGlzXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIHRvU29ydGVkKGNvbXBhcmVGbj86IChhOiBbSywgVl0sIGI6IFtLLCBWXSkgPT4gbnVtYmVyKTogT3JkZXJlZERpY3Q8SywgVj4ge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbLi4udGhpcy5lbnRyaWVzKCldLnNvcnQoY29tcGFyZUZuKTtcbiAgICByZXR1cm4gbmV3IE9yZGVyZWREaWN0KGVudHJpZXMpO1xuICB9XG5cbiAgdG9SZXZlcnNlZCgpOiBPcmRlcmVkRGljdDxLLCBWPiB7XG4gICAgY29uc3QgcmV2ZXJzZWQgPSBuZXcgT3JkZXJlZERpY3Q8SywgVj4oKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IHRoaXMuc2l6ZSAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMua2V5QXQoaW5kZXgpITtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldChrZXkpITtcbiAgICAgIHJldmVyc2VkLnNldChrZXksIGVsZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gcmV2ZXJzZWQ7XG4gIH1cblxuICB0b1NwbGljZWQoc3RhcnQ6IG51bWJlciwgZGVsZXRlQ291bnQ/OiBudW1iZXIpOiBPcmRlcmVkRGljdDxLLCBWPjtcbiAgdG9TcGxpY2VkKHN0YXJ0OiBudW1iZXIsIGRlbGV0ZUNvdW50OiBudW1iZXIsIC4uLml0ZW1zOiBbSywgVl1bXSk6IE9yZGVyZWREaWN0PEssIFY+O1xuXG4gIHRvU3BsaWNlZCguLi5hcmdzOiBbc3RhcnQ6IG51bWJlciwgZGVsZXRlQ291bnQ6IG51bWJlciwgLi4uaXRlbXM6IFtLLCBWXVtdXSkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbLi4udGhpcy5lbnRyaWVzKCldO1xuICAgIGVudHJpZXMuc3BsaWNlKC4uLmFyZ3MpO1xuICAgIHJldHVybiBuZXcgT3JkZXJlZERpY3QoZW50cmllcyk7XG4gIH1cblxuICBzbGljZShzdGFydD86IG51bWJlciwgZW5kPzogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IE9yZGVyZWREaWN0PEssIFY+KCk7XG4gICAgbGV0IHN0b3AgPSB0aGlzLnNpemUgLSAxO1xuXG4gICAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgc3RhcnQgPSBzdGFydCArIHRoaXMuc2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQgJiYgZW5kID4gMCkge1xuICAgICAgc3RvcCA9IGVuZCAtIDE7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaW5kZXggPSBzdGFydDsgaW5kZXggPD0gc3RvcDsgaW5kZXgrKykge1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy5rZXlBdChpbmRleCkhO1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0KGtleSkhO1xuICAgICAgcmVzdWx0LnNldChrZXksIGVsZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZXZlcnkoXG4gICAgcHJlZGljYXRlOiAoZW50cnk6IFtLLCBWXSwgaW5kZXg6IG51bWJlciwgZGljdGlvbmFyeTogT3JkZXJlZERpY3Q8SywgVj4pID0+IHVua25vd24sXG4gICAgdGhpc0FyZz86IGFueVxuICApIHtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcykge1xuICAgICAgaWYgKCFSZWZsZWN0LmFwcGx5KHByZWRpY2F0ZSwgdGhpc0FyZywgW2VudHJ5LCBpbmRleCwgdGhpc10pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc29tZShcbiAgICBwcmVkaWNhdGU6IChlbnRyeTogW0ssIFZdLCBpbmRleDogbnVtYmVyLCBkaWN0aW9uYXJ5OiBPcmRlcmVkRGljdDxLLCBWPikgPT4gdW5rbm93bixcbiAgICB0aGlzQXJnPzogYW55XG4gICkge1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzKSB7XG4gICAgICBpZiAoUmVmbGVjdC5hcHBseShwcmVkaWNhdGUsIHRoaXNBcmcsIFtlbnRyeSwgaW5kZXgsIHRoaXNdKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBLZXlPZjxEIGV4dGVuZHMgT3JkZXJlZERpY3Q8YW55LCBhbnk+PiA9XG4gIEQgZXh0ZW5kcyBPcmRlcmVkRGljdDxpbmZlciBLLCBhbnk+ID8gSyA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgVmFsdWVPZjxEIGV4dGVuZHMgT3JkZXJlZERpY3Q8YW55LCBhbnk+PiA9XG4gIEQgZXh0ZW5kcyBPcmRlcmVkRGljdDxhbnksIGluZmVyIFY+ID8gViA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgRW50cnlPZjxEIGV4dGVuZHMgT3JkZXJlZERpY3Q8YW55LCBhbnk+PiA9IFtLZXlPZjxEPiwgVmFsdWVPZjxEPl07XG5leHBvcnQgdHlwZSBLZXlGcm9tPEUgZXh0ZW5kcyBFbnRyeU9mPGFueT4+ID0gRVswXTtcbmV4cG9ydCB0eXBlIFZhbHVlRnJvbTxFIGV4dGVuZHMgRW50cnlPZjxhbnk+PiA9IEVbMV07XG5cbmZ1bmN0aW9uIGF0PFQ+KGFycmF5OiBBcnJheUxpa2U8VD4sIGluZGV4OiBudW1iZXIpOiBUIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCdhdCcgaW4gQXJyYXkucHJvdG90eXBlKSB7XG4gICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5hdC5jYWxsKGFycmF5LCBpbmRleCk7XG4gIH1cbiAgY29uc3QgYWN0dWFsSW5kZXggPSB0b1NhZmVJbmRleChhcnJheSwgaW5kZXgpO1xuICByZXR1cm4gYWN0dWFsSW5kZXggPT09IC0xID8gdW5kZWZpbmVkIDogYXJyYXlbYWN0dWFsSW5kZXhdO1xufVxuXG5mdW5jdGlvbiB0b1NhZmVJbmRleChhcnJheTogQXJyYXlMaWtlPGFueT4sIGluZGV4OiBudW1iZXIpIHtcbiAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICBjb25zdCByZWxhdGl2ZUluZGV4ID0gdG9TYWZlSW50ZWdlcihpbmRleCk7XG4gIGNvbnN0IGFjdHVhbEluZGV4ID0gcmVsYXRpdmVJbmRleCA+PSAwID8gcmVsYXRpdmVJbmRleCA6IGxlbmd0aCArIHJlbGF0aXZlSW5kZXg7XG4gIHJldHVybiBhY3R1YWxJbmRleCA8IDAgfHwgYWN0dWFsSW5kZXggPj0gbGVuZ3RoID8gLTEgOiBhY3R1YWxJbmRleDtcbn1cblxuZnVuY3Rpb24gdG9TYWZlSW50ZWdlcihudW1iZXI6IG51bWJlcikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiBudW1iZXIgIT09IG51bWJlciB8fCBudW1iZXIgPT09IDAgPyAwIDogTWF0aC50cnVuYyhudW1iZXIpO1xufVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiY3JlYXRlQ29udGV4dFNjb3BlIiwidXNlQ29tcG9zZWRSZWZzIiwiY3JlYXRlU2xvdCIsImpzeCIsImNyZWF0ZUNvbGxlY3Rpb24iLCJpdGVtRGF0YSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-collection/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs":
|
||
/*!**************************************************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs ***!
|
||
\**************************************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Root: () => (/* binding */ Slot),\n/* harmony export */ Slot: () => (/* binding */ Slot),\n/* harmony export */ Slottable: () => (/* binding */ Slottable),\n/* harmony export */ createSlot: () => (/* binding */ createSlot),\n/* harmony export */ createSlottable: () => (/* binding */ createSlottable)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n// src/slot.tsx\n\n\n\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (react__WEBPACK_IMPORTED_MODULE_0__.Children.count(newElement) > 1) return react__WEBPACK_IMPORTED_MODULE_0__.Children.only(null);\n return react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(newElement) ? react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== react__WEBPACK_IMPORTED_MODULE_0__.Fragment) {\n props2.ref = forwardedRef ? (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.composeRefs)(forwardedRef, childrenRef) : childrenRef;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(children, props2);\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.Children.count(children) > 1 ? react__WEBPACK_IMPORTED_MODULE_0__.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29sbGVjdGlvbi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXNsb3QvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUMrQjtBQUM0QjtBQUNJO0FBQy9EO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2Q0FBZ0I7QUFDaEMsWUFBWSx5QkFBeUI7QUFDckMsMEJBQTBCLDJDQUFjO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDJDQUFjLCtCQUErQiwyQ0FBYztBQUN6RSxpQkFBaUIsaURBQW9CO0FBQ3JDLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQLDZCQUE2QixzREFBRyxjQUFjLDJDQUEyQyxpREFBb0IsZUFBZSwrQ0FBa0IsMENBQTBDO0FBQ3hMO0FBQ0EsMkJBQTJCLHNEQUFHLGNBQWMsMkNBQTJDO0FBQ3ZGLEdBQUc7QUFDSCx5QkFBeUIsVUFBVTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDZDQUFnQjtBQUNwQyxZQUFZLHlCQUF5QjtBQUNyQyxRQUFRLGlEQUFvQjtBQUM1QjtBQUNBO0FBQ0EsNEJBQTRCLDJDQUFjO0FBQzFDLG9DQUFvQyx5RUFBVztBQUMvQztBQUNBLGFBQWEsK0NBQWtCO0FBQy9CO0FBQ0EsV0FBVywyQ0FBYyx1QkFBdUIsMkNBQWM7QUFDOUQsR0FBRztBQUNILDZCQUE2QixVQUFVO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsVUFBVTtBQUNsQywyQkFBMkIsc0RBQUcsQ0FBQyx1REFBUyxJQUFJLFVBQVU7QUFDdEQ7QUFDQSw4QkFBOEIsVUFBVTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxpREFBb0I7QUFDN0I7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ04sa0NBQWtDO0FBQ2xDLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9FO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEByYWRpeC11aVxccmVhY3QtY29sbGVjdGlvblxcbm9kZV9tb2R1bGVzXFxAcmFkaXgtdWlcXHJlYWN0LXNsb3RcXGRpc3RcXGluZGV4Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvc2xvdC50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29tcG9zZVJlZnMgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgRnJhZ21lbnQyLCBqc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5mdW5jdGlvbiBjcmVhdGVTbG90KG93bmVyTmFtZSkge1xuICBjb25zdCBTbG90Q2xvbmUgPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlU2xvdENsb25lKG93bmVyTmFtZSk7XG4gIGNvbnN0IFNsb3QyID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIC4uLnNsb3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2hpbGRyZW5BcnJheSA9IFJlYWN0LkNoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pO1xuICAgIGNvbnN0IHNsb3R0YWJsZSA9IGNoaWxkcmVuQXJyYXkuZmluZChpc1Nsb3R0YWJsZSk7XG4gICAgaWYgKHNsb3R0YWJsZSkge1xuICAgICAgY29uc3QgbmV3RWxlbWVudCA9IHNsb3R0YWJsZS5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIGNvbnN0IG5ld0NoaWxkcmVuID0gY2hpbGRyZW5BcnJheS5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZCA9PT0gc2xvdHRhYmxlKSB7XG4gICAgICAgICAgaWYgKFJlYWN0LkNoaWxkcmVuLmNvdW50KG5ld0VsZW1lbnQpID4gMSkgcmV0dXJuIFJlYWN0LkNoaWxkcmVuLm9ubHkobnVsbCk7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gbmV3RWxlbWVudC5wcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFNsb3RDbG9uZSwgeyAuLi5zbG90UHJvcHMsIHJlZjogZm9yd2FyZGVkUmVmLCBjaGlsZHJlbjogUmVhY3QuaXNWYWxpZEVsZW1lbnQobmV3RWxlbWVudCkgPyBSZWFjdC5jbG9uZUVsZW1lbnQobmV3RWxlbWVudCwgdm9pZCAwLCBuZXdDaGlsZHJlbikgOiBudWxsIH0pO1xuICAgIH1cbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTbG90Q2xvbmUsIHsgLi4uc2xvdFByb3BzLCByZWY6IGZvcndhcmRlZFJlZiwgY2hpbGRyZW4gfSk7XG4gIH0pO1xuICBTbG90Mi5kaXNwbGF5TmFtZSA9IGAke293bmVyTmFtZX0uU2xvdGA7XG4gIHJldHVybiBTbG90Mjtcbn1cbnZhciBTbG90ID0gLyogQF9fUFVSRV9fICovIGNyZWF0ZVNsb3QoXCJTbG90XCIpO1xuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmZ1bmN0aW9uIGNyZWF0ZVNsb3RDbG9uZShvd25lck5hbWUpIHtcbiAgY29uc3QgU2xvdENsb25lID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIC4uLnNsb3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgICAgY29uc3QgY2hpbGRyZW5SZWYgPSBnZXRFbGVtZW50UmVmKGNoaWxkcmVuKTtcbiAgICAgIGNvbnN0IHByb3BzMiA9IG1lcmdlUHJvcHMoc2xvdFByb3BzLCBjaGlsZHJlbi5wcm9wcyk7XG4gICAgICBpZiAoY2hpbGRyZW4udHlwZSAhPT0gUmVhY3QuRnJhZ21lbnQpIHtcbiAgICAgICAgcHJvcHMyLnJlZiA9IGZvcndhcmRlZFJlZiA/IGNvbXBvc2VSZWZzKGZvcndhcmRlZFJlZiwgY2hpbGRyZW5SZWYpIDogY2hpbGRyZW5SZWY7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCBwcm9wczIpO1xuICAgIH1cbiAgICByZXR1cm4gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pID4gMSA/IFJlYWN0LkNoaWxkcmVuLm9ubHkobnVsbCkgOiBudWxsO1xuICB9KTtcbiAgU2xvdENsb25lLmRpc3BsYXlOYW1lID0gYCR7b3duZXJOYW1lfS5TbG90Q2xvbmVgO1xuICByZXR1cm4gU2xvdENsb25lO1xufVxudmFyIFNMT1RUQUJMRV9JREVOVElGSUVSID0gU3ltYm9sKFwicmFkaXguc2xvdHRhYmxlXCIpO1xuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmZ1bmN0aW9uIGNyZWF0ZVNsb3R0YWJsZShvd25lck5hbWUpIHtcbiAgY29uc3QgU2xvdHRhYmxlMiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChGcmFnbWVudDIsIHsgY2hpbGRyZW4gfSk7XG4gIH07XG4gIFNsb3R0YWJsZTIuZGlzcGxheU5hbWUgPSBgJHtvd25lck5hbWV9LlNsb3R0YWJsZWA7XG4gIFNsb3R0YWJsZTIuX19yYWRpeElkID0gU0xPVFRBQkxFX0lERU5USUZJRVI7XG4gIHJldHVybiBTbG90dGFibGUyO1xufVxudmFyIFNsb3R0YWJsZSA9IC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVTbG90dGFibGUoXCJTbG90dGFibGVcIik7XG5mdW5jdGlvbiBpc1Nsb3R0YWJsZShjaGlsZCkge1xuICByZXR1cm4gUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpICYmIHR5cGVvZiBjaGlsZC50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgXCJfX3JhZGl4SWRcIiBpbiBjaGlsZC50eXBlICYmIGNoaWxkLnR5cGUuX19yYWRpeElkID09PSBTTE9UVEFCTEVfSURFTlRJRklFUjtcbn1cbmZ1bmN0aW9uIG1lcmdlUHJvcHMoc2xvdFByb3BzLCBjaGlsZFByb3BzKSB7XG4gIGNvbnN0IG92ZXJyaWRlUHJvcHMgPSB7IC4uLmNoaWxkUHJvcHMgfTtcbiAgZm9yIChjb25zdCBwcm9wTmFtZSBpbiBjaGlsZFByb3BzKSB7XG4gICAgY29uc3Qgc2xvdFByb3BWYWx1ZSA9IHNsb3RQcm9wc1twcm9wTmFtZV07XG4gICAgY29uc3QgY2hpbGRQcm9wVmFsdWUgPSBjaGlsZFByb3BzW3Byb3BOYW1lXTtcbiAgICBjb25zdCBpc0hhbmRsZXIgPSAvXm9uW0EtWl0vLnRlc3QocHJvcE5hbWUpO1xuICAgIGlmIChpc0hhbmRsZXIpIHtcbiAgICAgIGlmIChzbG90UHJvcFZhbHVlICYmIGNoaWxkUHJvcFZhbHVlKSB7XG4gICAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBjaGlsZFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICBzbG90UHJvcFZhbHVlKC4uLmFyZ3MpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHNsb3RQcm9wVmFsdWUpIHtcbiAgICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBzbG90UHJvcFZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSB7IC4uLnNsb3RQcm9wVmFsdWUsIC4uLmNoaWxkUHJvcFZhbHVlIH07XG4gICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJjbGFzc05hbWVcIikge1xuICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBbc2xvdFByb3BWYWx1ZSwgY2hpbGRQcm9wVmFsdWVdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgLi4uc2xvdFByb3BzLCAuLi5vdmVycmlkZVByb3BzIH07XG59XG5mdW5jdGlvbiBnZXRFbGVtZW50UmVmKGVsZW1lbnQpIHtcbiAgbGV0IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZWxlbWVudC5wcm9wcywgXCJyZWZcIik/LmdldDtcbiAgbGV0IG1heVdhcm4gPSBnZXR0ZXIgJiYgXCJpc1JlYWN0V2FybmluZ1wiIGluIGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmc7XG4gIGlmIChtYXlXYXJuKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQucmVmO1xuICB9XG4gIGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZWxlbWVudCwgXCJyZWZcIik/LmdldDtcbiAgbWF5V2FybiA9IGdldHRlciAmJiBcImlzUmVhY3RXYXJuaW5nXCIgaW4gZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZztcbiAgaWYgKG1heVdhcm4pIHtcbiAgICByZXR1cm4gZWxlbWVudC5wcm9wcy5yZWY7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQucHJvcHMucmVmIHx8IGVsZW1lbnQucmVmO1xufVxuZXhwb3J0IHtcbiAgU2xvdCBhcyBSb290LFxuICBTbG90LFxuICBTbG90dGFibGUsXG4gIGNyZWF0ZVNsb3QsXG4gIGNyZWF0ZVNsb3R0YWJsZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-compose-refs/dist/index.mjs ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ composeRefs: () => (/* binding */ composeRefs),\n/* harmony export */ useComposedRefs: () => (/* binding */ useComposedRefs)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n// packages/react/compose-refs/src/compose-refs.tsx\n\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(composeRefs(...refs), refs);\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQytCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLDhDQUFpQjtBQUMxQjtBQUlFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEByYWRpeC11aVxccmVhY3QtY29tcG9zZS1yZWZzXFxkaXN0XFxpbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3QvY29tcG9zZS1yZWZzL3NyYy9jb21wb3NlLXJlZnMudHN4XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmZ1bmN0aW9uIHNldFJlZihyZWYsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gcmVmKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChyZWYgIT09IG51bGwgJiYgcmVmICE9PSB2b2lkIDApIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9XG59XG5mdW5jdGlvbiBjb21wb3NlUmVmcyguLi5yZWZzKSB7XG4gIHJldHVybiAobm9kZSkgPT4ge1xuICAgIGxldCBoYXNDbGVhbnVwID0gZmFsc2U7XG4gICAgY29uc3QgY2xlYW51cHMgPSByZWZzLm1hcCgocmVmKSA9PiB7XG4gICAgICBjb25zdCBjbGVhbnVwID0gc2V0UmVmKHJlZiwgbm9kZSk7XG4gICAgICBpZiAoIWhhc0NsZWFudXAgJiYgdHlwZW9mIGNsZWFudXAgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGhhc0NsZWFudXAgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsZWFudXA7XG4gICAgfSk7XG4gICAgaWYgKGhhc0NsZWFudXApIHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2xlYW51cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBjbGVhbnVwID0gY2xlYW51cHNbaV07XG4gICAgICAgICAgaWYgKHR5cGVvZiBjbGVhbnVwID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRSZWYocmVmc1tpXSwgbnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIHVzZUNvbXBvc2VkUmVmcyguLi5yZWZzKSB7XG4gIHJldHVybiBSZWFjdC51c2VDYWxsYmFjayhjb21wb3NlUmVmcyguLi5yZWZzKSwgcmVmcyk7XG59XG5leHBvcnQge1xuICBjb21wb3NlUmVmcyxcbiAgdXNlQ29tcG9zZWRSZWZzXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-context/dist/index.mjs":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-context/dist/index.mjs ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createContext: () => (/* binding */ createContext2),\n/* harmony export */ createContextScope: () => (/* binding */ createContextScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n// packages/react/context/src/create-context.tsx\n\n\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = react__WEBPACK_IMPORTED_MODULE_0__.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = react__WEBPACK_IMPORTED_MODULE_0__.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = react__WEBPACK_IMPORTED_MODULE_0__.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return react__WEBPACK_IMPORTED_MODULE_0__.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29udGV4dC9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDK0I7QUFDUztBQUN4QztBQUNBLGtCQUFrQixnREFBbUI7QUFDckM7QUFDQSxZQUFZLHVCQUF1QjtBQUNuQyxrQkFBa0IsMENBQWE7QUFDL0IsMkJBQTJCLHNEQUFHLHFCQUFxQixpQkFBaUI7QUFDcEU7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDZDQUFnQjtBQUNwQztBQUNBO0FBQ0EseUJBQXlCLGFBQWEsMkJBQTJCLGtCQUFrQjtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0RBQW1CO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLGNBQWMsOEJBQThCO0FBQzVDO0FBQ0Esb0JBQW9CLDBDQUFhO0FBQ2pDLDZCQUE2QixzREFBRyxxQkFBcUIsaUJBQWlCO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDZDQUFnQjtBQUN0QztBQUNBO0FBQ0EsMkJBQTJCLGFBQWEsMkJBQTJCLGtCQUFrQjtBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxnREFBbUI7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQSxhQUFhLDBDQUFhO0FBQzFCLGlCQUFpQixXQUFXLFVBQVUsTUFBTSxtQ0FBbUM7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLDJEQUEyRCxxQkFBcUI7QUFDaEY7QUFDQSxrREFBa0QsVUFBVTtBQUM1RCxpQkFBaUI7QUFDakIsT0FBTyxJQUFJO0FBQ1gsYUFBYSwwQ0FBYSxVQUFVLFdBQVcsb0JBQW9CLGdCQUFnQjtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUU7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHJhZGl4LXVpXFxyZWFjdC1jb250ZXh0XFxkaXN0XFxpbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3QvY29udGV4dC9zcmMvY3JlYXRlLWNvbnRleHQudHN4XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGpzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZnVuY3Rpb24gY3JlYXRlQ29udGV4dDIocm9vdENvbXBvbmVudE5hbWUsIGRlZmF1bHRDb250ZXh0KSB7XG4gIGNvbnN0IENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgY29uc3QgUHJvdmlkZXIgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCAuLi5jb250ZXh0IH0gPSBwcm9wcztcbiAgICBjb25zdCB2YWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gY29udGV4dCwgT2JqZWN0LnZhbHVlcyhjb250ZXh0KSk7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZSwgY2hpbGRyZW4gfSk7XG4gIH07XG4gIFByb3ZpZGVyLmRpc3BsYXlOYW1lID0gcm9vdENvbXBvbmVudE5hbWUgKyBcIlByb3ZpZGVyXCI7XG4gIGZ1bmN0aW9uIHVzZUNvbnRleHQyKGNvbnN1bWVyTmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KENvbnRleHQpO1xuICAgIGlmIChjb250ZXh0KSByZXR1cm4gY29udGV4dDtcbiAgICBpZiAoZGVmYXVsdENvbnRleHQgIT09IHZvaWQgMCkgcmV0dXJuIGRlZmF1bHRDb250ZXh0O1xuICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgfVxuICByZXR1cm4gW1Byb3ZpZGVyLCB1c2VDb250ZXh0Ml07XG59XG5mdW5jdGlvbiBjcmVhdGVDb250ZXh0U2NvcGUoc2NvcGVOYW1lLCBjcmVhdGVDb250ZXh0U2NvcGVEZXBzID0gW10pIHtcbiAgbGV0IGRlZmF1bHRDb250ZXh0cyA9IFtdO1xuICBmdW5jdGlvbiBjcmVhdGVDb250ZXh0Myhyb290Q29tcG9uZW50TmFtZSwgZGVmYXVsdENvbnRleHQpIHtcbiAgICBjb25zdCBCYXNlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHQpO1xuICAgIGNvbnN0IGluZGV4ID0gZGVmYXVsdENvbnRleHRzLmxlbmd0aDtcbiAgICBkZWZhdWx0Q29udGV4dHMgPSBbLi4uZGVmYXVsdENvbnRleHRzLCBkZWZhdWx0Q29udGV4dF07XG4gICAgY29uc3QgUHJvdmlkZXIgPSAocHJvcHMpID0+IHtcbiAgICAgIGNvbnN0IHsgc2NvcGUsIGNoaWxkcmVuLCAuLi5jb250ZXh0IH0gPSBwcm9wcztcbiAgICAgIGNvbnN0IENvbnRleHQgPSBzY29wZT8uW3Njb3BlTmFtZV0/LltpbmRleF0gfHwgQmFzZUNvbnRleHQ7XG4gICAgICBjb25zdCB2YWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gY29udGV4dCwgT2JqZWN0LnZhbHVlcyhjb250ZXh0KSk7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlLCBjaGlsZHJlbiB9KTtcbiAgICB9O1xuICAgIFByb3ZpZGVyLmRpc3BsYXlOYW1lID0gcm9vdENvbXBvbmVudE5hbWUgKyBcIlByb3ZpZGVyXCI7XG4gICAgZnVuY3Rpb24gdXNlQ29udGV4dDIoY29uc3VtZXJOYW1lLCBzY29wZSkge1xuICAgICAgY29uc3QgQ29udGV4dCA9IHNjb3BlPy5bc2NvcGVOYW1lXT8uW2luZGV4XSB8fCBCYXNlQ29udGV4dDtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgaWYgKGNvbnRleHQpIHJldHVybiBjb250ZXh0O1xuICAgICAgaWYgKGRlZmF1bHRDb250ZXh0ICE9PSB2b2lkIDApIHJldHVybiBkZWZhdWx0Q29udGV4dDtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICB9XG4gICAgcmV0dXJuIFtQcm92aWRlciwgdXNlQ29udGV4dDJdO1xuICB9XG4gIGNvbnN0IGNyZWF0ZVNjb3BlID0gKCkgPT4ge1xuICAgIGNvbnN0IHNjb3BlQ29udGV4dHMgPSBkZWZhdWx0Q29udGV4dHMubWFwKChkZWZhdWx0Q29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHQpO1xuICAgIH0pO1xuICAgIHJldHVybiBmdW5jdGlvbiB1c2VTY29wZShzY29wZSkge1xuICAgICAgY29uc3QgY29udGV4dHMgPSBzY29wZT8uW3Njb3BlTmFtZV0gfHwgc2NvcGVDb250ZXh0cztcbiAgICAgIHJldHVybiBSZWFjdC51c2VNZW1vKFxuICAgICAgICAoKSA9PiAoeyBbYF9fc2NvcGUke3Njb3BlTmFtZX1gXTogeyAuLi5zY29wZSwgW3Njb3BlTmFtZV06IGNvbnRleHRzIH0gfSksXG4gICAgICAgIFtzY29wZSwgY29udGV4dHNdXG4gICAgICApO1xuICAgIH07XG4gIH07XG4gIGNyZWF0ZVNjb3BlLnNjb3BlTmFtZSA9IHNjb3BlTmFtZTtcbiAgcmV0dXJuIFtjcmVhdGVDb250ZXh0MywgY29tcG9zZUNvbnRleHRTY29wZXMoY3JlYXRlU2NvcGUsIC4uLmNyZWF0ZUNvbnRleHRTY29wZURlcHMpXTtcbn1cbmZ1bmN0aW9uIGNvbXBvc2VDb250ZXh0U2NvcGVzKC4uLnNjb3Blcykge1xuICBjb25zdCBiYXNlU2NvcGUgPSBzY29wZXNbMF07XG4gIGlmIChzY29wZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYmFzZVNjb3BlO1xuICBjb25zdCBjcmVhdGVTY29wZSA9ICgpID0+IHtcbiAgICBjb25zdCBzY29wZUhvb2tzID0gc2NvcGVzLm1hcCgoY3JlYXRlU2NvcGUyKSA9PiAoe1xuICAgICAgdXNlU2NvcGU6IGNyZWF0ZVNjb3BlMigpLFxuICAgICAgc2NvcGVOYW1lOiBjcmVhdGVTY29wZTIuc2NvcGVOYW1lXG4gICAgfSkpO1xuICAgIHJldHVybiBmdW5jdGlvbiB1c2VDb21wb3NlZFNjb3BlcyhvdmVycmlkZVNjb3Blcykge1xuICAgICAgY29uc3QgbmV4dFNjb3BlcyA9IHNjb3BlSG9va3MucmVkdWNlKChuZXh0U2NvcGVzMiwgeyB1c2VTY29wZSwgc2NvcGVOYW1lIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2NvcGVQcm9wcyA9IHVzZVNjb3BlKG92ZXJyaWRlU2NvcGVzKTtcbiAgICAgICAgY29uc3QgY3VycmVudFNjb3BlID0gc2NvcGVQcm9wc1tgX19zY29wZSR7c2NvcGVOYW1lfWBdO1xuICAgICAgICByZXR1cm4geyAuLi5uZXh0U2NvcGVzMiwgLi4uY3VycmVudFNjb3BlIH07XG4gICAgICB9LCB7fSk7XG4gICAgICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoeyBbYF9fc2NvcGUke2Jhc2VTY29wZS5zY29wZU5hbWV9YF06IG5leHRTY29wZXMgfSksIFtuZXh0U2NvcGVzXSk7XG4gICAgfTtcbiAgfTtcbiAgY3JlYXRlU2NvcGUuc2NvcGVOYW1lID0gYmFzZVNjb3BlLnNjb3BlTmFtZTtcbiAgcmV0dXJuIGNyZWF0ZVNjb3BlO1xufVxuZXhwb3J0IHtcbiAgY3JlYXRlQ29udGV4dDIgYXMgY3JlYXRlQ29udGV4dCxcbiAgY3JlYXRlQ29udGV4dFNjb3BlXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-context/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-direction/dist/index.mjs":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-direction/dist/index.mjs ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DirectionProvider: () => (/* binding */ DirectionProvider),\n/* harmony export */ Provider: () => (/* binding */ Provider),\n/* harmony export */ useDirection: () => (/* binding */ useDirection)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n// packages/react/direction/src/direction.tsx\n\n\nvar DirectionContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDK0I7QUFDUztBQUN4Qyx1QkFBdUIsZ0RBQW1CO0FBQzFDO0FBQ0EsVUFBVSxnQkFBZ0I7QUFDMUIseUJBQXlCLHNEQUFHLDhCQUE4QixzQkFBc0I7QUFDaEY7QUFDQTtBQUNBLG9CQUFvQiw2Q0FBZ0I7QUFDcEM7QUFDQTtBQUNBO0FBS0U7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHJhZGl4LXVpXFxyZWFjdC1kaXJlY3Rpb25cXGRpc3RcXGluZGV4Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwYWNrYWdlcy9yZWFjdC9kaXJlY3Rpb24vc3JjL2RpcmVjdGlvbi50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsganN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG52YXIgRGlyZWN0aW9uQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbnZhciBEaXJlY3Rpb25Qcm92aWRlciA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGRpciwgY2hpbGRyZW4gfSA9IHByb3BzO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChEaXJlY3Rpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBkaXIsIGNoaWxkcmVuIH0pO1xufTtcbmZ1bmN0aW9uIHVzZURpcmVjdGlvbihsb2NhbERpcikge1xuICBjb25zdCBnbG9iYWxEaXIgPSBSZWFjdC51c2VDb250ZXh0KERpcmVjdGlvbkNvbnRleHQpO1xuICByZXR1cm4gbG9jYWxEaXIgfHwgZ2xvYmFsRGlyIHx8IFwibHRyXCI7XG59XG52YXIgUHJvdmlkZXIgPSBEaXJlY3Rpb25Qcm92aWRlcjtcbmV4cG9ydCB7XG4gIERpcmVjdGlvblByb3ZpZGVyLFxuICBQcm92aWRlcixcbiAgdXNlRGlyZWN0aW9uXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-direction/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-label/dist/index.mjs":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-label/dist/index.mjs ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Label: () => (/* binding */ Label),\n/* harmony export */ Root: () => (/* binding */ Root)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(app-pages-browser)/./node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Label,Root auto */ // src/label.tsx\n\n\n\nvar NAME = \"Label\";\nvar Label = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c = (props, forwardedRef)=>{\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_2__.Primitive.label, {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event)=>{\n var _props_onMouseDown;\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n (_props_onMouseDown = props.onMouseDown) === null || _props_onMouseDown === void 0 ? void 0 : _props_onMouseDown.call(props, event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n });\n});\n_c1 = Label;\nLabel.displayName = NAME;\nvar Root = Label;\n //# sourceMappingURL=index.mjs.map\nvar _c, _c1;\n$RefreshReg$(_c, \"Label$React.forwardRef\");\n$RefreshReg$(_c1, \"Label\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtbGFiZWwvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXVCO0FBQ0c7QUFjdEI7QUFSSixJQUFNLE9BQU87QUFNYixJQUFNLHNCQUFjLG1EQUFxQyxDQUFDLE9BQU87SUFDL0QsT0FDRSx1RUFBQyxnRUFBUyxDQUFDLE9BQVY7UUFDRSxHQUFHO1FBQ0osS0FBSztRQUNMLGFBQWEsQ0FBQztnQkFLWjtZQUhBLE1BQU0sU0FBUyxNQUFNO1lBQ3JCLElBQUksT0FBTyxRQUFRLGlDQUFpQyxFQUFHO2FBRXZELDJCQUFNLHlCQUFOLHdFQUFvQixLQUFLO1lBRXpCLElBQUksQ0FBQyxNQUFNLG9CQUFvQixNQUFNLFNBQVMsRUFBRyxPQUFNLGVBQWU7UUFDeEU7SUFBQTtBQUdOLENBQUM7O0FBRUQsTUFBTSxjQUFjO0FBSXBCLElBQU0sT0FBTyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxzcmNcXGxhYmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlJztcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogTGFiZWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgTkFNRSA9ICdMYWJlbCc7XG5cbnR5cGUgTGFiZWxFbGVtZW50ID0gUmVhY3QuQ29tcG9uZW50UmVmPHR5cGVvZiBQcmltaXRpdmUubGFiZWw+O1xudHlwZSBQcmltaXRpdmVMYWJlbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQcmltaXRpdmUubGFiZWw+O1xuaW50ZXJmYWNlIExhYmVsUHJvcHMgZXh0ZW5kcyBQcmltaXRpdmVMYWJlbFByb3BzIHt9XG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxMYWJlbEVsZW1lbnQsIExhYmVsUHJvcHM+KChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFByaW1pdGl2ZS5sYWJlbFxuICAgICAgey4uLnByb3BzfVxuICAgICAgcmVmPXtmb3J3YXJkZWRSZWZ9XG4gICAgICBvbk1vdXNlRG93bj17KGV2ZW50KSA9PiB7XG4gICAgICAgIC8vIG9ubHkgcHJldmVudCB0ZXh0IHNlbGVjdGlvbiBpZiBjbGlja2luZyBpbnNpZGUgdGhlIGxhYmVsIGl0c2VsZlxuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICh0YXJnZXQuY2xvc2VzdCgnYnV0dG9uLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYScpKSByZXR1cm47XG5cbiAgICAgICAgcHJvcHMub25Nb3VzZURvd24/LihldmVudCk7XG4gICAgICAgIC8vIHByZXZlbnQgdGV4dCBzZWxlY3Rpb24gd2hlbiBkb3VibGUgY2xpY2tpbmcgbGFiZWxcbiAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkICYmIGV2ZW50LmRldGFpbCA+IDEpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59KTtcblxuTGFiZWwuZGlzcGxheU5hbWUgPSBOQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFJvb3QgPSBMYWJlbDtcblxuZXhwb3J0IHtcbiAgTGFiZWwsXG4gIC8vXG4gIFJvb3QsXG59O1xuZXhwb3J0IHR5cGUgeyBMYWJlbFByb3BzIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-label/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.mjs":
|
||
/*!**************************************************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.mjs ***!
|
||
\**************************************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Primitive: () => (/* binding */ Primitive),\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ dispatchDiscreteCustomEvent: () => (/* binding */ dispatchDiscreteCustomEvent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-dom/index.js\");\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-slot */ \"(app-pages-browser)/./node_modules/@radix-ui/react-slot/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n// src/primitive.tsx\n\n\n\n\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = (0,_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.createSlot)(`Primitive.${node}`);\n const Node = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) react_dom__WEBPACK_IMPORTED_MODULE_1__.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtbGFiZWwvbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wcmltaXRpdmUvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQytCO0FBQ087QUFDWTtBQUNWO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdFQUFVLGNBQWMsS0FBSztBQUM1QyxlQUFlLDZDQUFnQjtBQUMvQixZQUFZLDZCQUE2QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixzREFBRyxTQUFTLHNDQUFzQztBQUM3RSxHQUFHO0FBQ0gsa0NBQWtDLEtBQUs7QUFDdkMsV0FBVztBQUNYLENBQUMsSUFBSTtBQUNMO0FBQ0EsY0FBYyxnREFBa0I7QUFDaEM7QUFDQTtBQUtFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEByYWRpeC11aVxccmVhY3QtbGFiZWxcXG5vZGVfbW9kdWxlc1xcQHJhZGl4LXVpXFxyZWFjdC1wcmltaXRpdmVcXGRpc3RcXGluZGV4Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvcHJpbWl0aXZlLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdERPTSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBjcmVhdGVTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBqc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBOT0RFUyA9IFtcbiAgXCJhXCIsXG4gIFwiYnV0dG9uXCIsXG4gIFwiZGl2XCIsXG4gIFwiZm9ybVwiLFxuICBcImgyXCIsXG4gIFwiaDNcIixcbiAgXCJpbWdcIixcbiAgXCJpbnB1dFwiLFxuICBcImxhYmVsXCIsXG4gIFwibGlcIixcbiAgXCJuYXZcIixcbiAgXCJvbFwiLFxuICBcInBcIixcbiAgXCJzZWxlY3RcIixcbiAgXCJzcGFuXCIsXG4gIFwic3ZnXCIsXG4gIFwidWxcIlxuXTtcbnZhciBQcmltaXRpdmUgPSBOT0RFUy5yZWR1Y2UoKHByaW1pdGl2ZSwgbm9kZSkgPT4ge1xuICBjb25zdCBTbG90ID0gY3JlYXRlU2xvdChgUHJpbWl0aXZlLiR7bm9kZX1gKTtcbiAgY29uc3QgTm9kZSA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IGFzQ2hpbGQsIC4uLnByaW1pdGl2ZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBub2RlO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB3aW5kb3dbU3ltYm9sLmZvcihcInJhZGl4LXVpXCIpXSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KENvbXAsIHsgLi4ucHJpbWl0aXZlUHJvcHMsIHJlZjogZm9yd2FyZGVkUmVmIH0pO1xuICB9KTtcbiAgTm9kZS5kaXNwbGF5TmFtZSA9IGBQcmltaXRpdmUuJHtub2RlfWA7XG4gIHJldHVybiB7IC4uLnByaW1pdGl2ZSwgW25vZGVdOiBOb2RlIH07XG59LCB7fSk7XG5mdW5jdGlvbiBkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQodGFyZ2V0LCBldmVudCkge1xuICBpZiAodGFyZ2V0KSBSZWFjdERPTS5mbHVzaFN5bmMoKCkgPT4gdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpKTtcbn1cbnZhciBSb290ID0gUHJpbWl0aXZlO1xuZXhwb3J0IHtcbiAgUHJpbWl0aXZlLFxuICBSb290LFxuICBkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-presence/dist/index.mjs":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-presence/dist/index.mjs ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Presence: () => (/* binding */ Presence),\n/* harmony export */ Root: () => (/* binding */ Root)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n/* __next_internal_client_entry_do_not_use__ Presence,Root auto */ var _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$();\n// src/presence.tsx\n\n\n\n// src/use-state-machine.tsx\n\nfunction useStateMachine(initialState, machine) {\n _s();\n return react__WEBPACK_IMPORTED_MODULE_0__.useReducer({\n \"useStateMachine.useReducer\": (state, event)=>{\n const nextState = machine[state][event];\n return nextState !== null && nextState !== void 0 ? nextState : state;\n }\n }[\"useStateMachine.useReducer\"], initialState);\n}\n_s(useStateMachine, \"skVOqNGrFQuDFh+lpttAJ2AZFeA=\");\n// src/presence.tsx\nvar Presence = (props)=>{\n _s1();\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({\n present: presence.isPresent\n }) : react__WEBPACK_IMPORTED_MODULE_0__.Children.only(children);\n const ref = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_1__.useComposedRefs)(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(child, {\n ref\n }) : null;\n};\n_s1(Presence, \"uNryTcoDvJa4CrInYRt27opyun0=\", false, function() {\n return [\n usePresence,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_1__.useComposedRefs\n ];\n});\n_c = Presence;\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n _s2();\n const [node, setNode] = react__WEBPACK_IMPORTED_MODULE_0__.useState();\n const stylesRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const prevPresentRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(present);\n const prevAnimationNameRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"usePresence.useEffect\": ()=>{\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }\n }[\"usePresence.useEffect\"], [\n state\n ]);\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)({\n \"usePresence.useLayoutEffect\": ()=>{\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || (styles === null || styles === void 0 ? void 0 : styles.display) === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }\n }[\"usePresence.useLayoutEffect\"], [\n present,\n send\n ]);\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)({\n \"usePresence.useLayoutEffect\": ()=>{\n if (node) {\n let timeoutId;\n var _node_ownerDocument_defaultView;\n const ownerWindow = (_node_ownerDocument_defaultView = node.ownerDocument.defaultView) !== null && _node_ownerDocument_defaultView !== void 0 ? _node_ownerDocument_defaultView : window;\n const handleAnimationEnd = {\n \"usePresence.useLayoutEffect.handleAnimationEnd\": (event)=>{\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout({\n \"usePresence.useLayoutEffect.handleAnimationEnd\": ()=>{\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n }\n }[\"usePresence.useLayoutEffect.handleAnimationEnd\"]);\n }\n }\n }\n }[\"usePresence.useLayoutEffect.handleAnimationEnd\"];\n const handleAnimationStart = {\n \"usePresence.useLayoutEffect.handleAnimationStart\": (event)=>{\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n }\n }[\"usePresence.useLayoutEffect.handleAnimationStart\"];\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return ({\n \"usePresence.useLayoutEffect\": ()=>{\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n }\n })[\"usePresence.useLayoutEffect\"];\n } else {\n send(\"ANIMATION_END\");\n }\n }\n }[\"usePresence.useLayoutEffect\"], [\n node,\n send\n ]);\n return {\n isPresent: [\n \"mounted\",\n \"unmountSuspended\"\n ].includes(state),\n ref: react__WEBPACK_IMPORTED_MODULE_0__.useCallback({\n \"usePresence.useCallback\": (node2)=>{\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }\n }[\"usePresence.useCallback\"], [])\n };\n}\n_s2(usePresence, \"ncCWxmFAyU87e4PnaTkbrqgR834=\", false, function() {\n return [\n useStateMachine\n ];\n});\nfunction getAnimationName(styles) {\n return (styles === null || styles === void 0 ? void 0 : styles.animationName) || \"none\";\n}\nfunction getElementRef(element) {\n var _Object_getOwnPropertyDescriptor, _Object_getOwnPropertyDescriptor1;\n let getter = (_Object_getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor(element.props, \"ref\")) === null || _Object_getOwnPropertyDescriptor === void 0 ? void 0 : _Object_getOwnPropertyDescriptor.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = (_Object_getOwnPropertyDescriptor1 = Object.getOwnPropertyDescriptor(element, \"ref\")) === null || _Object_getOwnPropertyDescriptor1 === void 0 ? void 0 : _Object_getOwnPropertyDescriptor1.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\n //# sourceMappingURL=index.mjs.map\nvar _c;\n$RefreshReg$(_c, \"Presence\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2UvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF1QjtBQUNTO0FBQ0E7O0FDRlQ7QUFXaEIseUJBQ0wsY0FDQSxTQUNBOztJQUNBLE9BQWE7c0NBQVcsQ0FBQyxPQUF3QjtZQUMvQyxNQUFNLFlBQWEsUUFBUSxLQUFLLEVBQVUsS0FBSztZQUMvQyxvREFBTyxZQUFhO1FBQ3RCO3FDQUFHLFlBQVk7QUFDakI7R0FSZ0I7O0FERGhCLGVBQTBDLENBQUM7O0lBQ3pDLE1BQU0sRUFBRSxTQUFTLFNBQVMsSUFBSTtJQUM5QixNQUFNLHVCQUF1QixPQUFPO0lBRXBDLE1BQU0sUUFDSixPQUFPLGFBQWEsYUFDaEIsU0FBUztRQUFFLFNBQVMsU0FBUztJQUFVLENBQUMsSUFDbEMsNENBQVMsS0FBSyxRQUFRO0lBR2xDLE1BQU0sTUFBTSw2RUFBZSxDQUFDLFNBQVMsS0FBSyxjQUFjLEtBQUssQ0FBQztJQUM5RCxNQUFNLGFBQWEsT0FBTyxhQUFhO0lBQ3ZDLE9BQU8sY0FBYyxTQUFTLDBCQUFrQixnREFBYSxPQUFPO1FBQUU7SUFBSSxDQUFDLElBQUk7QUFDakY7OztRQVhtQjtRQVFMLHlFQUFlOzs7S0FWdkI7QUFlTixTQUFTLGNBQWM7QUFNdkIscUJBQXFCLFNBQWtCOztJQUNyQyxNQUFNLENBQUMsTUFBTSxPQUFPLElBQVUsNENBQXNCO0lBQ3BELE1BQU0sWUFBa0IsMENBQW1DLElBQUk7SUFDL0QsTUFBTSxpQkFBdUIsMENBQU8sT0FBTztJQUMzQyxNQUFNLHVCQUE2QiwwQ0FBZSxNQUFNO0lBQ3hELE1BQU0sZUFBZSxVQUFVLFlBQVk7SUFDM0MsTUFBTSxDQUFDLE9BQU8sSUFBSSxvQkFBb0IsY0FBYztRQUNsRCxTQUFTO1lBQ1AsU0FBUztZQUNULGVBQWU7UUFDakI7UUFDQSxrQkFBa0I7WUFDaEIsT0FBTztZQUNQLGVBQWU7UUFDakI7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QSxxREFBZ0IseUJBQXlCLFNBQVMsS0FBSyx5R0FBRztJQUMxRCxVQUFVLFVBQVUsb0JBQW9CLFVBQVUsT0FBTztJQUN6RCxJQUFJLFNBQVM7UUFDWCxPQUFPLFFBQVEsTUFBTTtJQUN2QjtJQUdBLE9BQU8sUUFBUSxNQUFNLE9BQVEsUUFBZ0I7QUFDL0M7QUFFQSxJQUFNLE9BQU8iLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcc3JjXFxwcmVzZW5jZS50c3giLCJFOlxcR0lUXFxtdnBcXHNyY1xcdXNlLXN0YXRlLW1hY2hpbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbXBvc2VkUmVmcyB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnMnO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0JztcbmltcG9ydCB7IHVzZVN0YXRlTWFjaGluZSB9IGZyb20gJy4vdXNlLXN0YXRlLW1hY2hpbmUnO1xuXG5pbnRlcmZhY2UgUHJlc2VuY2VQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCAoKHByb3BzOiB7IHByZXNlbnQ6IGJvb2xlYW4gfSkgPT4gUmVhY3QuUmVhY3RFbGVtZW50KTtcbiAgcHJlc2VudDogYm9vbGVhbjtcbn1cblxuY29uc3QgUHJlc2VuY2U6IFJlYWN0LkZDPFByZXNlbmNlUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgcHJlc2VudCwgY2hpbGRyZW4gfSA9IHByb3BzO1xuICBjb25zdCBwcmVzZW5jZSA9IHVzZVByZXNlbmNlKHByZXNlbnQpO1xuXG4gIGNvbnN0IGNoaWxkID0gKFxuICAgIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBjaGlsZHJlbih7IHByZXNlbnQ6IHByZXNlbmNlLmlzUHJlc2VudCB9KVxuICAgICAgOiBSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKVxuICApIGFzIFJlYWN0LlJlYWN0RWxlbWVudDx7IHJlZj86IFJlYWN0LlJlZjxIVE1MRWxlbWVudD4gfT47XG5cbiAgY29uc3QgcmVmID0gdXNlQ29tcG9zZWRSZWZzKHByZXNlbmNlLnJlZiwgZ2V0RWxlbWVudFJlZihjaGlsZCkpO1xuICBjb25zdCBmb3JjZU1vdW50ID0gdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nO1xuICByZXR1cm4gZm9yY2VNb3VudCB8fCBwcmVzZW5jZS5pc1ByZXNlbnQgPyBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHsgcmVmIH0pIDogbnVsbDtcbn07XG5cblByZXNlbmNlLmRpc3BsYXlOYW1lID0gJ1ByZXNlbmNlJztcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogdXNlUHJlc2VuY2VcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuZnVuY3Rpb24gdXNlUHJlc2VuY2UocHJlc2VudDogYm9vbGVhbikge1xuICBjb25zdCBbbm9kZSwgc2V0Tm9kZV0gPSBSZWFjdC51c2VTdGF0ZTxIVE1MRWxlbWVudD4oKTtcbiAgY29uc3Qgc3R5bGVzUmVmID0gUmVhY3QudXNlUmVmPENTU1N0eWxlRGVjbGFyYXRpb24gfCBudWxsPihudWxsKTtcbiAgY29uc3QgcHJldlByZXNlbnRSZWYgPSBSZWFjdC51c2VSZWYocHJlc2VudCk7XG4gIGNvbnN0IHByZXZBbmltYXRpb25OYW1lUmVmID0gUmVhY3QudXNlUmVmPHN0cmluZz4oJ25vbmUnKTtcbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gcHJlc2VudCA/ICdtb3VudGVkJyA6ICd1bm1vdW50ZWQnO1xuICBjb25zdCBbc3RhdGUsIHNlbmRdID0gdXNlU3RhdGVNYWNoaW5lKGluaXRpYWxTdGF0ZSwge1xuICAgIG1vdW50ZWQ6IHtcbiAgICAgIFVOTU9VTlQ6ICd1bm1vdW50ZWQnLFxuICAgICAgQU5JTUFUSU9OX09VVDogJ3VubW91bnRTdXNwZW5kZWQnLFxuICAgIH0sXG4gICAgdW5tb3VudFN1c3BlbmRlZDoge1xuICAgICAgTU9VTlQ6ICdtb3VudGVkJyxcbiAgICAgIEFOSU1BVElPTl9FTkQ6ICd1bm1vdW50ZWQnLFxuICAgIH0sXG4gICAgdW5tb3VudGVkOiB7XG4gICAgICBNT1VOVDogJ21vdW50ZWQnLFxuICAgIH0sXG4gIH0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSBnZXRBbmltYXRpb25OYW1lKHN0eWxlc1JlZi5jdXJyZW50KTtcbiAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gc3RhdGUgPT09ICdtb3VudGVkJyA/IGN1cnJlbnRBbmltYXRpb25OYW1lIDogJ25vbmUnO1xuICB9LCBbc3RhdGVdKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlcyA9IHN0eWxlc1JlZi5jdXJyZW50O1xuICAgIGNvbnN0IHdhc1ByZXNlbnQgPSBwcmV2UHJlc2VudFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IGhhc1ByZXNlbnRDaGFuZ2VkID0gd2FzUHJlc2VudCAhPT0gcHJlc2VudDtcblxuICAgIGlmIChoYXNQcmVzZW50Q2hhbmdlZCkge1xuICAgICAgY29uc3QgcHJldkFuaW1hdGlvbk5hbWUgPSBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50O1xuICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSBnZXRBbmltYXRpb25OYW1lKHN0eWxlcyk7XG5cbiAgICAgIGlmIChwcmVzZW50KSB7XG4gICAgICAgIHNlbmQoJ01PVU5UJyk7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRBbmltYXRpb25OYW1lID09PSAnbm9uZScgfHwgc3R5bGVzPy5kaXNwbGF5ID09PSAnbm9uZScpIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXhpdCBhbmltYXRpb24gb3IgdGhlIGVsZW1lbnQgaXMgaGlkZGVuLCBhbmltYXRpb25zIHdvbid0IHJ1blxuICAgICAgICAvLyBzbyB3ZSB1bm1vdW50IGluc3RhbnRseVxuICAgICAgICBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hlbiBgcHJlc2VudGAgY2hhbmdlcyB0byBgZmFsc2VgLCB3ZSBjaGVjayBjaGFuZ2VzIHRvIGFuaW1hdGlvbi1uYW1lIHRvXG4gICAgICAgICAqIGRldGVybWluZSB3aGV0aGVyIGFuIGFuaW1hdGlvbiBoYXMgc3RhcnRlZC4gV2UgY2hvc2UgdGhpcyBhcHByb2FjaCAocmVhZGluZ1xuICAgICAgICAgKiBjb21wdXRlZCBzdHlsZXMpIGJlY2F1c2UgdGhlcmUgaXMgbm8gYGFuaW1hdGlvbnJ1bmAgZXZlbnQgYW5kIGBhbmltYXRpb25zdGFydGBcbiAgICAgICAgICogZmlyZXMgYWZ0ZXIgYGFuaW1hdGlvbi1kZWxheWAgaGFzIGV4cGlyZWQgd2hpY2ggd291bGQgYmUgdG9vIGxhdGUuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBpc0FuaW1hdGluZyA9IHByZXZBbmltYXRpb25OYW1lICE9PSBjdXJyZW50QW5pbWF0aW9uTmFtZTtcblxuICAgICAgICBpZiAod2FzUHJlc2VudCAmJiBpc0FuaW1hdGluZykge1xuICAgICAgICAgIHNlbmQoJ0FOSU1BVElPTl9PVVQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJldlByZXNlbnRSZWYuY3VycmVudCA9IHByZXNlbnQ7XG4gICAgfVxuICB9LCBbcHJlc2VudCwgc2VuZF0pO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIGxldCB0aW1lb3V0SWQ6IG51bWJlcjtcbiAgICAgIGNvbnN0IG93bmVyV2luZG93ID0gbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3ID8/IHdpbmRvdztcbiAgICAgIC8qKlxuICAgICAgICogVHJpZ2dlcmluZyBhbiBBTklNQVRJT05fT1VUIGR1cmluZyBhbiBBTklNQVRJT05fSU4gd2lsbCBmaXJlIGFuIGBhbmltYXRpb25jYW5jZWxgXG4gICAgICAgKiBldmVudCBmb3IgQU5JTUFUSU9OX0lOIGFmdGVyIHdlIGhhdmUgZW50ZXJlZCBgdW5tb3VudFN1c3BlbmRlZGAgc3RhdGUuIFNvLCB3ZVxuICAgICAgICogbWFrZSBzdXJlIHdlIG9ubHkgdHJpZ2dlciBBTklNQVRJT05fRU5EIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBhbmltYXRpb24uXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IGhhbmRsZUFuaW1hdGlvbkVuZCA9IChldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSBnZXRBbmltYXRpb25OYW1lKHN0eWxlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgLy8gVGhlIGV2ZW50LmFuaW1hdGlvbk5hbWUgaXMgdW5lc2NhcGVkIGZvciBDU1Mgc3ludGF4LFxuICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGVzY2FwZSBpdCB0byBjb21wYXJlIHdpdGggdGhlIGFuaW1hdGlvbk5hbWUgY29tcHV0ZWQgZnJvbSB0aGUgc3R5bGUuXG4gICAgICAgIGNvbnN0IGlzQ3VycmVudEFuaW1hdGlvbiA9IGN1cnJlbnRBbmltYXRpb25OYW1lLmluY2x1ZGVzKENTUy5lc2NhcGUoZXZlbnQuYW5pbWF0aW9uTmFtZSkpO1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBub2RlICYmIGlzQ3VycmVudEFuaW1hdGlvbikge1xuICAgICAgICAgIC8vIFdpdGggUmVhY3QgMTggY29uY3VycmVuY3kgdGhpcyB1cGRhdGUgaXMgYXBwbGllZCBhIGZyYW1lIGFmdGVyIHRoZVxuICAgICAgICAgIC8vIGFuaW1hdGlvbiBlbmRzLCBjcmVhdGluZyBhIGZsYXNoIG9mIHZpc2libGUgY29udGVudC4gQnkgc2V0dGluZyB0aGVcbiAgICAgICAgICAvLyBhbmltYXRpb24gZmlsbCBtb2RlIHRvIFwiZm9yd2FyZHNcIiwgd2UgZm9yY2UgdGhlIG5vZGUgdG8ga2VlcCB0aGVcbiAgICAgICAgICAvLyBzdHlsZXMgb2YgdGhlIGxhc3Qga2V5ZnJhbWUsIHJlbW92aW5nIHRoZSBmbGFzaC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFByZXZpb3VzbHkgd2UgZmx1c2hlZCB0aGUgdXBkYXRlIHZpYSBSZWFjdERvbS5mbHVzaFN5bmMsIGJ1dCB3aXRoXG4gICAgICAgICAgLy8gZXhpdCBhbmltYXRpb25zIHRoaXMgcmVzdWx0ZWQgaW4gdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZVxuICAgICAgICAgIC8vIERPTSBiZWZvcmUgdGhlIHN5bnRoZXRpYyBhbmltYXRpb25FbmQgZXZlbnQgd2FzIGRpc3BhdGNoZWQsIG1lYW5pbmdcbiAgICAgICAgICAvLyB1c2VyLXByb3ZpZGVkIGV2ZW50IGhhbmRsZXJzIHdvdWxkIG5vdCBiZSBjYWxsZWQuXG4gICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JhZGl4LXVpL3ByaW1pdGl2ZXMvcHVsbC8xODQ5XG4gICAgICAgICAgc2VuZCgnQU5JTUFUSU9OX0VORCcpO1xuICAgICAgICAgIGlmICghcHJldlByZXNlbnRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEZpbGxNb2RlID0gbm9kZS5zdHlsZS5hbmltYXRpb25GaWxsTW9kZTtcbiAgICAgICAgICAgIG5vZGUuc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGUgPSAnZm9yd2FyZHMnO1xuICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHN0eWxlIGFmdGVyIHRoZSBub2RlIGhhZCB0aW1lIHRvIHVubW91bnQgKGZvciBjYXNlc1xuICAgICAgICAgICAgLy8gd2hlcmUgdGhlIGNvbXBvbmVudCBjaG9vc2VzIG5vdCB0byB1bm1vdW50KS4gRG9pbmcgdGhpcyBhbnlcbiAgICAgICAgICAgIC8vIHNvb25lciB0aGFuIGBzZXRUaW1lb3V0YCAoZS5nLiB3aXRoIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgKVxuICAgICAgICAgICAgLy8gc3RpbGwgY2F1c2VzIGEgZmxhc2guXG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBvd25lcldpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG5vZGUuc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGUgPT09ICdmb3J3YXJkcycpIHtcbiAgICAgICAgICAgICAgICBub2RlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlID0gY3VycmVudEZpbGxNb2RlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBoYW5kbGVBbmltYXRpb25TdGFydCA9IChldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbm9kZSkge1xuICAgICAgICAgIC8vIGlmIGFuaW1hdGlvbiBvY2N1cnJlZCwgc3RvcmUgaXRzIG5hbWUgYXMgdGhlIHByZXZpb3VzIGFuaW1hdGlvbi5cbiAgICAgICAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXNSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbnN0YXJ0JywgaGFuZGxlQW5pbWF0aW9uU3RhcnQpO1xuICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgb3duZXJXaW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uc3RhcnQnLCBoYW5kbGVBbmltYXRpb25TdGFydCk7XG4gICAgICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uY2FuY2VsJywgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVHJhbnNpdGlvbiB0byB0aGUgdW5tb3VudGVkIHN0YXRlIGlmIHRoZSBub2RlIGlzIHJlbW92ZWQgcHJlbWF0dXJlbHkuXG4gICAgICAvLyBXZSBhdm9pZCBkb2luZyBzbyBkdXJpbmcgY2xlYW51cCBhcyB0aGUgbm9kZSBtYXkgY2hhbmdlIGJ1dCBzdGlsbCBleGlzdC5cbiAgICAgIHNlbmQoJ0FOSU1BVElPTl9FTkQnKTtcbiAgICB9XG4gIH0sIFtub2RlLCBzZW5kXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBpc1ByZXNlbnQ6IFsnbW91bnRlZCcsICd1bm1vdW50U3VzcGVuZGVkJ10uaW5jbHVkZXMoc3RhdGUpLFxuICAgIHJlZjogUmVhY3QudXNlQ2FsbGJhY2soKG5vZGU6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICBzdHlsZXNSZWYuY3VycmVudCA9IG5vZGUgPyBnZXRDb21wdXRlZFN0eWxlKG5vZGUpIDogbnVsbDtcbiAgICAgIHNldE5vZGUobm9kZSk7XG4gICAgfSwgW10pLFxuICB9O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmZ1bmN0aW9uIGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzOiBDU1NTdHlsZURlY2xhcmF0aW9uIHwgbnVsbCkge1xuICByZXR1cm4gc3R5bGVzPy5hbmltYXRpb25OYW1lIHx8ICdub25lJztcbn1cblxuLy8gQmVmb3JlIFJlYWN0IDE5IGFjY2Vzc2luZyBgZWxlbWVudC5wcm9wcy5yZWZgIHdpbGwgdGhyb3cgYSB3YXJuaW5nIGFuZCBzdWdnZXN0IHVzaW5nIGBlbGVtZW50LnJlZmBcbi8vIEFmdGVyIFJlYWN0IDE5IGFjY2Vzc2luZyBgZWxlbWVudC5yZWZgIGRvZXMgdGhlIG9wcG9zaXRlLlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMjgzNDhcbi8vXG4vLyBBY2Nlc3MgdGhlIHJlZiB1c2luZyB0aGUgbWV0aG9kIHRoYXQgZG9lc24ndCB5aWVsZCBhIHdhcm5pbmcuXG5mdW5jdGlvbiBnZXRFbGVtZW50UmVmKGVsZW1lbnQ6IFJlYWN0LlJlYWN0RWxlbWVudDx7IHJlZj86IFJlYWN0LlJlZjx1bmtub3duPiB9Pikge1xuICAvLyBSZWFjdCA8PTE4IGluIERFVlxuICBsZXQgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlbGVtZW50LnByb3BzLCAncmVmJyk/LmdldDtcbiAgbGV0IG1heVdhcm4gPSBnZXR0ZXIgJiYgJ2lzUmVhY3RXYXJuaW5nJyBpbiBnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nO1xuICBpZiAobWF5V2Fybikge1xuICAgIHJldHVybiAoZWxlbWVudCBhcyBhbnkpLnJlZjtcbiAgfVxuXG4gIC8vIFJlYWN0IDE5IGluIERFVlxuICBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVsZW1lbnQsICdyZWYnKT8uZ2V0O1xuICBtYXlXYXJuID0gZ2V0dGVyICYmICdpc1JlYWN0V2FybmluZycgaW4gZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZztcbiAgaWYgKG1heVdhcm4pIHtcbiAgICByZXR1cm4gZWxlbWVudC5wcm9wcy5yZWY7XG4gIH1cblxuICAvLyBOb3QgREVWXG4gIHJldHVybiBlbGVtZW50LnByb3BzLnJlZiB8fCAoZWxlbWVudCBhcyBhbnkpLnJlZjtcbn1cblxuY29uc3QgUm9vdCA9IFByZXNlbmNlO1xuXG5leHBvcnQge1xuICBQcmVzZW5jZSxcbiAgLy9cbiAgUm9vdCxcbn07XG5leHBvcnQgdHlwZSB7IFByZXNlbmNlUHJvcHMgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxudHlwZSBNYWNoaW5lPFM+ID0geyBbazogc3RyaW5nXTogeyBbazogc3RyaW5nXTogUyB9IH07XG50eXBlIE1hY2hpbmVTdGF0ZTxUPiA9IGtleW9mIFQ7XG50eXBlIE1hY2hpbmVFdmVudDxUPiA9IGtleW9mIFVuaW9uVG9JbnRlcnNlY3Rpb248VFtrZXlvZiBUXT47XG5cbi8vIPCfpK8gaHR0cHM6Ly9mZXR0YmxvZy5ldS90eXBlc2NyaXB0LXVuaW9uLXRvLWludGVyc2VjdGlvbi9cbnR5cGUgVW5pb25Ub0ludGVyc2VjdGlvbjxUPiA9IChUIGV4dGVuZHMgYW55ID8gKHg6IFQpID0+IGFueSA6IG5ldmVyKSBleHRlbmRzICh4OiBpbmZlciBSKSA9PiBhbnlcbiAgPyBSXG4gIDogbmV2ZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGF0ZU1hY2hpbmU8TT4oXG4gIGluaXRpYWxTdGF0ZTogTWFjaGluZVN0YXRlPE0+LFxuICBtYWNoaW5lOiBNICYgTWFjaGluZTxNYWNoaW5lU3RhdGU8TT4+XG4pIHtcbiAgcmV0dXJuIFJlYWN0LnVzZVJlZHVjZXIoKHN0YXRlOiBNYWNoaW5lU3RhdGU8TT4sIGV2ZW50OiBNYWNoaW5lRXZlbnQ8TT4pOiBNYWNoaW5lU3RhdGU8TT4gPT4ge1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IChtYWNoaW5lW3N0YXRlXSBhcyBhbnkpW2V2ZW50XTtcbiAgICByZXR1cm4gbmV4dFN0YXRlID8/IHN0YXRlO1xuICB9LCBpbml0aWFsU3RhdGUpO1xufVxuIl0sIm5hbWVzIjpbIlJlYWN0Iiwibm9kZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-presence/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-primitive/dist/index.mjs":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-primitive/dist/index.mjs ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Primitive: () => (/* binding */ Primitive),\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ dispatchDiscreteCustomEvent: () => (/* binding */ dispatchDiscreteCustomEvent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-dom/index.js\");\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-slot */ \"(app-pages-browser)/./node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n// src/primitive.tsx\n\n\n\n\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = (0,_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.createSlot)(`Primitive.${node}`);\n const Node = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) react_dom__WEBPACK_IMPORTED_MODULE_1__.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUMrQjtBQUNPO0FBQ1k7QUFDVjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxnRUFBVSxjQUFjLEtBQUs7QUFDNUMsZUFBZSw2Q0FBZ0I7QUFDL0IsWUFBWSw2QkFBNkI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsc0RBQUcsU0FBUyxzQ0FBc0M7QUFDN0UsR0FBRztBQUNILGtDQUFrQyxLQUFLO0FBQ3ZDLFdBQVc7QUFDWCxDQUFDLElBQUk7QUFDTDtBQUNBLGNBQWMsZ0RBQWtCO0FBQ2hDO0FBQ0E7QUFLRTtBQUNGIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAcmFkaXgtdWlcXHJlYWN0LXByaW1pdGl2ZVxcZGlzdFxcaW5kZXgubWpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9wcmltaXRpdmUudHN4XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IGNyZWF0ZVNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IGpzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xudmFyIE5PREVTID0gW1xuICBcImFcIixcbiAgXCJidXR0b25cIixcbiAgXCJkaXZcIixcbiAgXCJmb3JtXCIsXG4gIFwiaDJcIixcbiAgXCJoM1wiLFxuICBcImltZ1wiLFxuICBcImlucHV0XCIsXG4gIFwibGFiZWxcIixcbiAgXCJsaVwiLFxuICBcIm5hdlwiLFxuICBcIm9sXCIsXG4gIFwicFwiLFxuICBcInNlbGVjdFwiLFxuICBcInNwYW5cIixcbiAgXCJzdmdcIixcbiAgXCJ1bFwiXG5dO1xudmFyIFByaW1pdGl2ZSA9IE5PREVTLnJlZHVjZSgocHJpbWl0aXZlLCBub2RlKSA9PiB7XG4gIGNvbnN0IFNsb3QgPSBjcmVhdGVTbG90KGBQcmltaXRpdmUuJHtub2RlfWApO1xuICBjb25zdCBOb2RlID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgYXNDaGlsZCwgLi4ucHJpbWl0aXZlUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IG5vZGU7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHdpbmRvd1tTeW1ib2wuZm9yKFwicmFkaXgtdWlcIildID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goQ29tcCwgeyAuLi5wcmltaXRpdmVQcm9wcywgcmVmOiBmb3J3YXJkZWRSZWYgfSk7XG4gIH0pO1xuICBOb2RlLmRpc3BsYXlOYW1lID0gYFByaW1pdGl2ZS4ke25vZGV9YDtcbiAgcmV0dXJuIHsgLi4ucHJpbWl0aXZlLCBbbm9kZV06IE5vZGUgfTtcbn0sIHt9KTtcbmZ1bmN0aW9uIGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudCh0YXJnZXQsIGV2ZW50KSB7XG4gIGlmICh0YXJnZXQpIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB0YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCkpO1xufVxudmFyIFJvb3QgPSBQcmltaXRpdmU7XG5leHBvcnQge1xuICBQcmltaXRpdmUsXG4gIFJvb3QsXG4gIGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs":
|
||
/*!*************************************************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs ***!
|
||
\*************************************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Root: () => (/* binding */ Slot),\n/* harmony export */ Slot: () => (/* binding */ Slot),\n/* harmony export */ Slottable: () => (/* binding */ Slottable),\n/* harmony export */ createSlot: () => (/* binding */ createSlot),\n/* harmony export */ createSlottable: () => (/* binding */ createSlottable)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n// src/slot.tsx\n\n\n\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (react__WEBPACK_IMPORTED_MODULE_0__.Children.count(newElement) > 1) return react__WEBPACK_IMPORTED_MODULE_0__.Children.only(null);\n return react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(newElement) ? react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== react__WEBPACK_IMPORTED_MODULE_0__.Fragment) {\n props2.ref = forwardedRef ? (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.composeRefs)(forwardedRef, childrenRef) : childrenRef;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(children, props2);\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.Children.count(children) > 1 ? react__WEBPACK_IMPORTED_MODULE_0__.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc2xvdC9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQytCO0FBQzRCO0FBQ0k7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDZDQUFnQjtBQUNoQyxZQUFZLHlCQUF5QjtBQUNyQywwQkFBMEIsMkNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsMkNBQWMsK0JBQStCLDJDQUFjO0FBQ3pFLGlCQUFpQixpREFBb0I7QUFDckMsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNkJBQTZCLHNEQUFHLGNBQWMsMkNBQTJDLGlEQUFvQixlQUFlLCtDQUFrQiwwQ0FBMEM7QUFDeEw7QUFDQSwyQkFBMkIsc0RBQUcsY0FBYywyQ0FBMkM7QUFDdkYsR0FBRztBQUNILHlCQUF5QixVQUFVO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNkNBQWdCO0FBQ3BDLFlBQVkseUJBQXlCO0FBQ3JDLFFBQVEsaURBQW9CO0FBQzVCO0FBQ0E7QUFDQSw0QkFBNEIsMkNBQWM7QUFDMUMsb0NBQW9DLHlFQUFXO0FBQy9DO0FBQ0EsYUFBYSwrQ0FBa0I7QUFDL0I7QUFDQSxXQUFXLDJDQUFjLHVCQUF1QiwyQ0FBYztBQUM5RCxHQUFHO0FBQ0gsNkJBQTZCLFVBQVU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixVQUFVO0FBQ2xDLDJCQUEyQixzREFBRyxDQUFDLHVEQUFTLElBQUksVUFBVTtBQUN0RDtBQUNBLDhCQUE4QixVQUFVO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGlEQUFvQjtBQUM3QjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTixrQ0FBa0M7QUFDbEMsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0U7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHJhZGl4LXVpXFxyZWFjdC1wcmltaXRpdmVcXG5vZGVfbW9kdWxlc1xcQHJhZGl4LXVpXFxyZWFjdC1zbG90XFxkaXN0XFxpbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3Nsb3QudHN4XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbXBvc2VSZWZzIH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7IEZyYWdtZW50IGFzIEZyYWdtZW50MiwganN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZnVuY3Rpb24gY3JlYXRlU2xvdChvd25lck5hbWUpIHtcbiAgY29uc3QgU2xvdENsb25lID0gLyogQF9fUFVSRV9fICovIGNyZWF0ZVNsb3RDbG9uZShvd25lck5hbWUpO1xuICBjb25zdCBTbG90MiA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCAuLi5zbG90UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcbiAgICBjb25zdCBzbG90dGFibGUgPSBjaGlsZHJlbkFycmF5LmZpbmQoaXNTbG90dGFibGUpO1xuICAgIGlmIChzbG90dGFibGUpIHtcbiAgICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBzbG90dGFibGUucHJvcHMuY2hpbGRyZW47XG4gICAgICBjb25zdCBuZXdDaGlsZHJlbiA9IGNoaWxkcmVuQXJyYXkubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQgPT09IHNsb3R0YWJsZSkge1xuICAgICAgICAgIGlmIChSZWFjdC5DaGlsZHJlbi5jb3VudChuZXdFbGVtZW50KSA+IDEpIHJldHVybiBSZWFjdC5DaGlsZHJlbi5vbmx5KG51bGwpO1xuICAgICAgICAgIHJldHVybiBSZWFjdC5pc1ZhbGlkRWxlbWVudChuZXdFbGVtZW50KSA/IG5ld0VsZW1lbnQucHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTbG90Q2xvbmUsIHsgLi4uc2xvdFByb3BzLCByZWY6IGZvcndhcmRlZFJlZiwgY2hpbGRyZW46IFJlYWN0LmlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gUmVhY3QuY2xvbmVFbGVtZW50KG5ld0VsZW1lbnQsIHZvaWQgMCwgbmV3Q2hpbGRyZW4pIDogbnVsbCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goU2xvdENsb25lLCB7IC4uLnNsb3RQcm9wcywgcmVmOiBmb3J3YXJkZWRSZWYsIGNoaWxkcmVuIH0pO1xuICB9KTtcbiAgU2xvdDIuZGlzcGxheU5hbWUgPSBgJHtvd25lck5hbWV9LlNsb3RgO1xuICByZXR1cm4gU2xvdDI7XG59XG52YXIgU2xvdCA9IC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVTbG90KFwiU2xvdFwiKTtcbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5mdW5jdGlvbiBjcmVhdGVTbG90Q2xvbmUob3duZXJOYW1lKSB7XG4gIGNvbnN0IFNsb3RDbG9uZSA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCAuLi5zbG90UHJvcHMgfSA9IHByb3BzO1xuICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcbiAgICAgIGNvbnN0IGNoaWxkcmVuUmVmID0gZ2V0RWxlbWVudFJlZihjaGlsZHJlbik7XG4gICAgICBjb25zdCBwcm9wczIgPSBtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRyZW4ucHJvcHMpO1xuICAgICAgaWYgKGNoaWxkcmVuLnR5cGUgIT09IFJlYWN0LkZyYWdtZW50KSB7XG4gICAgICAgIHByb3BzMi5yZWYgPSBmb3J3YXJkZWRSZWYgPyBjb21wb3NlUmVmcyhmb3J3YXJkZWRSZWYsIGNoaWxkcmVuUmVmKSA6IGNoaWxkcmVuUmVmO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwgcHJvcHMyKTtcbiAgICB9XG4gICAgcmV0dXJuIFJlYWN0LkNoaWxkcmVuLmNvdW50KGNoaWxkcmVuKSA+IDEgPyBSZWFjdC5DaGlsZHJlbi5vbmx5KG51bGwpIDogbnVsbDtcbiAgfSk7XG4gIFNsb3RDbG9uZS5kaXNwbGF5TmFtZSA9IGAke293bmVyTmFtZX0uU2xvdENsb25lYDtcbiAgcmV0dXJuIFNsb3RDbG9uZTtcbn1cbnZhciBTTE9UVEFCTEVfSURFTlRJRklFUiA9IFN5bWJvbChcInJhZGl4LnNsb3R0YWJsZVwiKTtcbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5mdW5jdGlvbiBjcmVhdGVTbG90dGFibGUob3duZXJOYW1lKSB7XG4gIGNvbnN0IFNsb3R0YWJsZTIgPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRnJhZ21lbnQyLCB7IGNoaWxkcmVuIH0pO1xuICB9O1xuICBTbG90dGFibGUyLmRpc3BsYXlOYW1lID0gYCR7b3duZXJOYW1lfS5TbG90dGFibGVgO1xuICBTbG90dGFibGUyLl9fcmFkaXhJZCA9IFNMT1RUQUJMRV9JREVOVElGSUVSO1xuICByZXR1cm4gU2xvdHRhYmxlMjtcbn1cbnZhciBTbG90dGFibGUgPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlU2xvdHRhYmxlKFwiU2xvdHRhYmxlXCIpO1xuZnVuY3Rpb24gaXNTbG90dGFibGUoY2hpbGQpIHtcbiAgcmV0dXJuIFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSAmJiB0eXBlb2YgY2hpbGQudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIFwiX19yYWRpeElkXCIgaW4gY2hpbGQudHlwZSAmJiBjaGlsZC50eXBlLl9fcmFkaXhJZCA9PT0gU0xPVFRBQkxFX0lERU5USUZJRVI7XG59XG5mdW5jdGlvbiBtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRQcm9wcykge1xuICBjb25zdCBvdmVycmlkZVByb3BzID0geyAuLi5jaGlsZFByb3BzIH07XG4gIGZvciAoY29uc3QgcHJvcE5hbWUgaW4gY2hpbGRQcm9wcykge1xuICAgIGNvbnN0IHNsb3RQcm9wVmFsdWUgPSBzbG90UHJvcHNbcHJvcE5hbWVdO1xuICAgIGNvbnN0IGNoaWxkUHJvcFZhbHVlID0gY2hpbGRQcm9wc1twcm9wTmFtZV07XG4gICAgY29uc3QgaXNIYW5kbGVyID0gL15vbltBLVpdLy50ZXN0KHByb3BOYW1lKTtcbiAgICBpZiAoaXNIYW5kbGVyKSB7XG4gICAgICBpZiAoc2xvdFByb3BWYWx1ZSAmJiBjaGlsZFByb3BWYWx1ZSkge1xuICAgICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2hpbGRQcm9wVmFsdWUoLi4uYXJncyk7XG4gICAgICAgICAgc2xvdFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChzbG90UHJvcFZhbHVlKSB7XG4gICAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gc2xvdFByb3BWYWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0geyAuLi5zbG90UHJvcFZhbHVlLCAuLi5jaGlsZFByb3BWYWx1ZSB9O1xuICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwiY2xhc3NOYW1lXCIpIHtcbiAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gW3Nsb3RQcm9wVmFsdWUsIGNoaWxkUHJvcFZhbHVlXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiB7IC4uLnNsb3RQcm9wcywgLi4ub3ZlcnJpZGVQcm9wcyB9O1xufVxuZnVuY3Rpb24gZ2V0RWxlbWVudFJlZihlbGVtZW50KSB7XG4gIGxldCBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVsZW1lbnQucHJvcHMsIFwicmVmXCIpPy5nZXQ7XG4gIGxldCBtYXlXYXJuID0gZ2V0dGVyICYmIFwiaXNSZWFjdFdhcm5pbmdcIiBpbiBnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nO1xuICBpZiAobWF5V2Fybikge1xuICAgIHJldHVybiBlbGVtZW50LnJlZjtcbiAgfVxuICBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVsZW1lbnQsIFwicmVmXCIpPy5nZXQ7XG4gIG1heVdhcm4gPSBnZXR0ZXIgJiYgXCJpc1JlYWN0V2FybmluZ1wiIGluIGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmc7XG4gIGlmIChtYXlXYXJuKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQucHJvcHMucmVmO1xuICB9XG4gIHJldHVybiBlbGVtZW50LnByb3BzLnJlZiB8fCBlbGVtZW50LnJlZjtcbn1cbmV4cG9ydCB7XG4gIFNsb3QgYXMgUm9vdCxcbiAgU2xvdCxcbiAgU2xvdHRhYmxlLFxuICBjcmVhdGVTbG90LFxuICBjcmVhdGVTbG90dGFibGVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-slider/dist/index.mjs":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-slider/dist/index.mjs ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Range: () => (/* binding */ Range),\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ Slider: () => (/* binding */ Slider),\n/* harmony export */ SliderRange: () => (/* binding */ SliderRange),\n/* harmony export */ SliderThumb: () => (/* binding */ SliderThumb),\n/* harmony export */ SliderTrack: () => (/* binding */ SliderTrack),\n/* harmony export */ Thumb: () => (/* binding */ Thumb),\n/* harmony export */ Track: () => (/* binding */ Track),\n/* harmony export */ createSliderScope: () => (/* binding */ createSliderScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_number__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/number */ \"(app-pages-browser)/./node_modules/@radix-ui/number/dist/index.mjs\");\n/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/primitive */ \"(app-pages-browser)/./node_modules/@radix-ui/primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-context */ \"(app-pages-browser)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/react-direction */ \"(app-pages-browser)/./node_modules/@radix-ui/react-direction/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_previous__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @radix-ui/react-use-previous */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-previous/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-use-size */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-size/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(app-pages-browser)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-collection */ \"(app-pages-browser)/./node_modules/@radix-ui/react-collection/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Range,Root,Slider,SliderRange,SliderThumb,SliderTrack,Thumb,Track,createSliderScope auto */ var _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $RefreshSig$(), _s4 = $RefreshSig$(), _s5 = $RefreshSig$(), _s6 = $RefreshSig$(), _s7 = $RefreshSig$(), _s8 = $RefreshSig$();\n// src/slider.tsx\n\n\n\n\n\n\n\n\n\n\n\n\nvar PAGE_KEYS = [\n \"PageUp\",\n \"PageDown\"\n];\nvar ARROW_KEYS = [\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\"\n];\nvar BACK_KEYS = {\n \"from-left\": [\n \"Home\",\n \"PageDown\",\n \"ArrowDown\",\n \"ArrowLeft\"\n ],\n \"from-right\": [\n \"Home\",\n \"PageDown\",\n \"ArrowDown\",\n \"ArrowRight\"\n ],\n \"from-bottom\": [\n \"Home\",\n \"PageDown\",\n \"ArrowDown\",\n \"ArrowLeft\"\n ],\n \"from-top\": [\n \"Home\",\n \"PageDown\",\n \"ArrowUp\",\n \"ArrowLeft\"\n ]\n};\nvar SLIDER_NAME = \"Slider\";\nvar [Collection, useCollection, createCollectionScope] = (0,_radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__.createCollection)(SLIDER_NAME);\nvar [createSliderContext, createSliderScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__.createContextScope)(SLIDER_NAME, [\n createCollectionScope\n]);\nvar [SliderProvider, useSliderContext] = createSliderContext(SLIDER_NAME);\nvar Slider = /*#__PURE__*/ _s(react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c = _s((props, forwardedRef)=>{\n _s();\n const { name, min = 0, max = 100, step = 1, orientation = \"horizontal\", disabled = false, minStepsBetweenThumbs = 0, defaultValue = [\n min\n ], value, onValueChange = ()=>{}, onValueCommit = ()=>{}, inverted = false, form, ...sliderProps } = props;\n const thumbRefs = react__WEBPACK_IMPORTED_MODULE_0__.useRef(/* @__PURE__ */ new Set());\n const valueIndexToChangeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0);\n const isHorizontal = orientation === \"horizontal\";\n const SliderOrientation = isHorizontal ? SliderHorizontal : SliderVertical;\n const [values = [], setValues] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__.useControllableState)({\n prop: value,\n defaultProp: defaultValue,\n onChange: {\n \"Slider.useControllableState\": (value2)=>{\n var _thumbs_valueIndexToChangeRef_current;\n const thumbs = [\n ...thumbRefs.current\n ];\n (_thumbs_valueIndexToChangeRef_current = thumbs[valueIndexToChangeRef.current]) === null || _thumbs_valueIndexToChangeRef_current === void 0 ? void 0 : _thumbs_valueIndexToChangeRef_current.focus();\n onValueChange(value2);\n }\n }[\"Slider.useControllableState\"]\n });\n const valuesBeforeSlideStartRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(values);\n function handleSlideStart(value2) {\n const closestIndex = getClosestValueIndex(values, value2);\n updateValues(value2, closestIndex);\n }\n function handleSlideMove(value2) {\n updateValues(value2, valueIndexToChangeRef.current);\n }\n function handleSlideEnd() {\n const prevValue = valuesBeforeSlideStartRef.current[valueIndexToChangeRef.current];\n const nextValue = values[valueIndexToChangeRef.current];\n const hasChanged = nextValue !== prevValue;\n if (hasChanged) onValueCommit(values);\n }\n function updateValues(value2, atIndex) {\n let { commit } = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {\n commit: false\n };\n const decimalCount = getDecimalCount(step);\n const snapToStep = roundValue(Math.round((value2 - min) / step) * step + min, decimalCount);\n const nextValue = (0,_radix_ui_number__WEBPACK_IMPORTED_MODULE_5__.clamp)(snapToStep, [\n min,\n max\n ]);\n setValues(function() {\n let prevValues = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];\n const nextValues = getNextSortedValues(prevValues, nextValue, atIndex);\n if (hasMinStepsBetweenValues(nextValues, minStepsBetweenThumbs * step)) {\n valueIndexToChangeRef.current = nextValues.indexOf(nextValue);\n const hasChanged = String(nextValues) !== String(prevValues);\n if (hasChanged && commit) onValueCommit(nextValues);\n return hasChanged ? nextValues : prevValues;\n } else {\n return prevValues;\n }\n });\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SliderProvider, {\n scope: props.__scopeSlider,\n name,\n disabled,\n min,\n max,\n valueIndexToChangeRef,\n thumbs: thumbRefs.current,\n values,\n orientation,\n form,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.Provider, {\n scope: props.__scopeSlider,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.Slot, {\n scope: props.__scopeSlider,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SliderOrientation, {\n \"aria-disabled\": disabled,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...sliderProps,\n ref: forwardedRef,\n onPointerDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(sliderProps.onPointerDown, ()=>{\n if (!disabled) valuesBeforeSlideStartRef.current = values;\n }),\n min,\n max,\n inverted,\n onSlideStart: disabled ? void 0 : handleSlideStart,\n onSlideMove: disabled ? void 0 : handleSlideMove,\n onSlideEnd: disabled ? void 0 : handleSlideEnd,\n onHomeKeyDown: ()=>!disabled && updateValues(min, 0, {\n commit: true\n }),\n onEndKeyDown: ()=>!disabled && updateValues(max, values.length - 1, {\n commit: true\n }),\n onStepKeyDown: (param)=>{\n let { event, direction: stepDirection } = param;\n if (!disabled) {\n const isPageKey = PAGE_KEYS.includes(event.key);\n const isSkipKey = isPageKey || event.shiftKey && ARROW_KEYS.includes(event.key);\n const multiplier = isSkipKey ? 10 : 1;\n const atIndex = valueIndexToChangeRef.current;\n const value2 = values[atIndex];\n const stepInDirection = step * multiplier * stepDirection;\n updateValues(value2 + stepInDirection, atIndex, {\n commit: true\n });\n }\n }\n })\n })\n })\n });\n}, \"nKJp/OnlLZM6kKTgI4Iwfd9Jr8s=\", false, function() {\n return [\n _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__.useControllableState\n ];\n})), \"nKJp/OnlLZM6kKTgI4Iwfd9Jr8s=\", false, function() {\n return [\n _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__.useControllableState\n ];\n});\n_c1 = Slider;\nSlider.displayName = SLIDER_NAME;\nvar [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {\n startEdge: \"left\",\n endEdge: \"right\",\n size: \"width\",\n direction: 1\n});\nvar SliderHorizontal = /*#__PURE__*/ _s1(react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c2 = _s1((props, forwardedRef)=>{\n _s1();\n const { min, max, dir, inverted, onSlideStart, onSlideMove, onSlideEnd, onStepKeyDown, ...sliderProps } = props;\n const [slider, setSlider] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs)(forwardedRef, {\n \"SliderHorizontal.useComposedRefs[composedRefs]\": (node)=>setSlider(node)\n }[\"SliderHorizontal.useComposedRefs[composedRefs]\"]);\n const rectRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(void 0);\n const direction = (0,_radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_8__.useDirection)(dir);\n const isDirectionLTR = direction === \"ltr\";\n const isSlidingFromLeft = isDirectionLTR && !inverted || !isDirectionLTR && inverted;\n function getValueFromPointer(pointerPosition) {\n const rect = rectRef.current || slider.getBoundingClientRect();\n const input = [\n 0,\n rect.width\n ];\n const output = isSlidingFromLeft ? [\n min,\n max\n ] : [\n max,\n min\n ];\n const value = linearScale(input, output);\n rectRef.current = rect;\n return value(pointerPosition - rect.left);\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SliderOrientationProvider, {\n scope: props.__scopeSlider,\n startEdge: isSlidingFromLeft ? \"left\" : \"right\",\n endEdge: isSlidingFromLeft ? \"right\" : \"left\",\n direction: isSlidingFromLeft ? 1 : -1,\n size: \"width\",\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SliderImpl, {\n dir: direction,\n \"data-orientation\": \"horizontal\",\n ...sliderProps,\n ref: composedRefs,\n style: {\n ...sliderProps.style,\n [\"--radix-slider-thumb-transform\"]: \"translateX(-50%)\"\n },\n onSlideStart: (event)=>{\n const value = getValueFromPointer(event.clientX);\n onSlideStart === null || onSlideStart === void 0 ? void 0 : onSlideStart(value);\n },\n onSlideMove: (event)=>{\n const value = getValueFromPointer(event.clientX);\n onSlideMove === null || onSlideMove === void 0 ? void 0 : onSlideMove(value);\n },\n onSlideEnd: ()=>{\n rectRef.current = void 0;\n onSlideEnd === null || onSlideEnd === void 0 ? void 0 : onSlideEnd();\n },\n onStepKeyDown: (event)=>{\n const slideDirection = isSlidingFromLeft ? \"from-left\" : \"from-right\";\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown === null || onStepKeyDown === void 0 ? void 0 : onStepKeyDown({\n event,\n direction: isBackKey ? -1 : 1\n });\n }\n })\n });\n}, \"6yOl66qGR4yz338KlsUnft3e/wQ=\", false, function() {\n return [\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs,\n _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_8__.useDirection\n ];\n})), \"6yOl66qGR4yz338KlsUnft3e/wQ=\", false, function() {\n return [\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs,\n _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_8__.useDirection\n ];\n});\n_c3 = SliderHorizontal;\nvar SliderVertical = /*#__PURE__*/ _s2(react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c4 = _s2((props, forwardedRef)=>{\n _s2();\n const { min, max, inverted, onSlideStart, onSlideMove, onSlideEnd, onStepKeyDown, ...sliderProps } = props;\n const sliderRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const ref = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs)(forwardedRef, sliderRef);\n const rectRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(void 0);\n const isSlidingFromBottom = !inverted;\n function getValueFromPointer(pointerPosition) {\n const rect = rectRef.current || sliderRef.current.getBoundingClientRect();\n const input = [\n 0,\n rect.height\n ];\n const output = isSlidingFromBottom ? [\n max,\n min\n ] : [\n min,\n max\n ];\n const value = linearScale(input, output);\n rectRef.current = rect;\n return value(pointerPosition - rect.top);\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SliderOrientationProvider, {\n scope: props.__scopeSlider,\n startEdge: isSlidingFromBottom ? \"bottom\" : \"top\",\n endEdge: isSlidingFromBottom ? \"top\" : \"bottom\",\n size: \"height\",\n direction: isSlidingFromBottom ? 1 : -1,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SliderImpl, {\n \"data-orientation\": \"vertical\",\n ...sliderProps,\n ref,\n style: {\n ...sliderProps.style,\n [\"--radix-slider-thumb-transform\"]: \"translateY(50%)\"\n },\n onSlideStart: (event)=>{\n const value = getValueFromPointer(event.clientY);\n onSlideStart === null || onSlideStart === void 0 ? void 0 : onSlideStart(value);\n },\n onSlideMove: (event)=>{\n const value = getValueFromPointer(event.clientY);\n onSlideMove === null || onSlideMove === void 0 ? void 0 : onSlideMove(value);\n },\n onSlideEnd: ()=>{\n rectRef.current = void 0;\n onSlideEnd === null || onSlideEnd === void 0 ? void 0 : onSlideEnd();\n },\n onStepKeyDown: (event)=>{\n const slideDirection = isSlidingFromBottom ? \"from-bottom\" : \"from-top\";\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown === null || onStepKeyDown === void 0 ? void 0 : onStepKeyDown({\n event,\n direction: isBackKey ? -1 : 1\n });\n }\n })\n });\n}, \"U3QhCJJ6XSHD3QhBAPFvkr5rdIU=\", false, function() {\n return [\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs\n ];\n})), \"U3QhCJJ6XSHD3QhBAPFvkr5rdIU=\", false, function() {\n return [\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs\n ];\n});\n_c5 = SliderVertical;\nvar SliderImpl = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_s3((props, forwardedRef)=>{\n _s3();\n const { __scopeSlider, onSlideStart, onSlideMove, onSlideEnd, onHomeKeyDown, onEndKeyDown, onStepKeyDown, ...sliderProps } = props;\n const context = useSliderContext(SLIDER_NAME, __scopeSlider);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_9__.Primitive.span, {\n ...sliderProps,\n ref: forwardedRef,\n onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(props.onKeyDown, (event)=>{\n if (event.key === \"Home\") {\n onHomeKeyDown(event);\n event.preventDefault();\n } else if (event.key === \"End\") {\n onEndKeyDown(event);\n event.preventDefault();\n } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n onStepKeyDown(event);\n event.preventDefault();\n }\n }),\n onPointerDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(props.onPointerDown, (event)=>{\n const target = event.target;\n target.setPointerCapture(event.pointerId);\n event.preventDefault();\n if (context.thumbs.has(target)) {\n target.focus();\n } else {\n onSlideStart(event);\n }\n }),\n onPointerMove: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(props.onPointerMove, (event)=>{\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) onSlideMove(event);\n }),\n onPointerUp: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(props.onPointerUp, (event)=>{\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n onSlideEnd(event);\n }\n })\n });\n}, \"A2TslTchbgqmRs96Pv798Mxfl0M=\", false, function() {\n return [\n useSliderContext\n ];\n}));\n_c6 = SliderImpl;\nvar TRACK_NAME = \"SliderTrack\";\nvar SliderTrack = /*#__PURE__*/ _s4(react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c7 = _s4((props, forwardedRef)=>{\n _s4();\n const { __scopeSlider, ...trackProps } = props;\n const context = useSliderContext(TRACK_NAME, __scopeSlider);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_9__.Primitive.span, {\n \"data-disabled\": context.disabled ? \"\" : void 0,\n \"data-orientation\": context.orientation,\n ...trackProps,\n ref: forwardedRef\n });\n}, \"A2TslTchbgqmRs96Pv798Mxfl0M=\", false, function() {\n return [\n useSliderContext\n ];\n})), \"A2TslTchbgqmRs96Pv798Mxfl0M=\", false, function() {\n return [\n useSliderContext\n ];\n});\n_c8 = SliderTrack;\nSliderTrack.displayName = TRACK_NAME;\nvar RANGE_NAME = \"SliderRange\";\nvar SliderRange = /*#__PURE__*/ _s5(react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c9 = _s5((props, forwardedRef)=>{\n _s5();\n const { __scopeSlider, ...rangeProps } = props;\n const context = useSliderContext(RANGE_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(RANGE_NAME, __scopeSlider);\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs)(forwardedRef, ref);\n const valuesCount = context.values.length;\n const percentages = context.values.map((value)=>convertValueToPercentage(value, context.min, context.max));\n const offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;\n const offsetEnd = 100 - Math.max(...percentages);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_9__.Primitive.span, {\n \"data-orientation\": context.orientation,\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...rangeProps,\n ref: composedRefs,\n style: {\n ...props.style,\n [orientation.startEdge]: offsetStart + \"%\",\n [orientation.endEdge]: offsetEnd + \"%\"\n }\n });\n}, \"izAFhMCaSDFQZ4M8R9RwxFr3VyQ=\", false, function() {\n return [\n useSliderContext,\n useSliderOrientationContext,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs\n ];\n})), \"izAFhMCaSDFQZ4M8R9RwxFr3VyQ=\", false, function() {\n return [\n useSliderContext,\n useSliderOrientationContext,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs\n ];\n});\n_c10 = SliderRange;\nSliderRange.displayName = RANGE_NAME;\nvar THUMB_NAME = \"SliderThumb\";\nvar SliderThumb = /*#__PURE__*/ _s6(react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c11 = _s6((props, forwardedRef)=>{\n _s6();\n const getItems = useCollection(props.__scopeSlider);\n const [thumb, setThumb] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs)(forwardedRef, {\n \"SliderThumb.useComposedRefs[composedRefs]\": (node)=>setThumb(node)\n }[\"SliderThumb.useComposedRefs[composedRefs]\"]);\n const index = react__WEBPACK_IMPORTED_MODULE_0__.useMemo({\n \"SliderThumb.useMemo[index]\": ()=>thumb ? getItems().findIndex({\n \"SliderThumb.useMemo[index]\": (item)=>item.ref.current === thumb\n }[\"SliderThumb.useMemo[index]\"]) : -1\n }[\"SliderThumb.useMemo[index]\"], [\n getItems,\n thumb\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SliderThumbImpl, {\n ...props,\n ref: composedRefs,\n index\n });\n}, \"ArAvJI+CVz1NfRirGhHPDbulsqM=\", false, function() {\n return [\n useCollection,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs\n ];\n})), \"ArAvJI+CVz1NfRirGhHPDbulsqM=\", false, function() {\n return [\n useCollection,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs\n ];\n});\n_c12 = SliderThumb;\nvar SliderThumbImpl = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_s7((props, forwardedRef)=>{\n _s7();\n const { __scopeSlider, index, name, ...thumbProps } = props;\n const context = useSliderContext(THUMB_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(THUMB_NAME, __scopeSlider);\n const [thumb, setThumb] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs)(forwardedRef, {\n \"SliderThumbImpl.useComposedRefs[composedRefs]\": (node)=>setThumb(node)\n }[\"SliderThumbImpl.useComposedRefs[composedRefs]\"]);\n const isFormControl = thumb ? context.form || !!thumb.closest(\"form\") : true;\n const size = (0,_radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_10__.useSize)(thumb);\n const value = context.values[index];\n const percent = value === void 0 ? 0 : convertValueToPercentage(value, context.min, context.max);\n const label = getLabel(index, context.values.length);\n const orientationSize = size === null || size === void 0 ? void 0 : size[orientation.size];\n const thumbInBoundsOffset = orientationSize ? getThumbInBoundsOffset(orientationSize, percent, orientation.direction) : 0;\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"SliderThumbImpl.useEffect\": ()=>{\n if (thumb) {\n context.thumbs.add(thumb);\n return ({\n \"SliderThumbImpl.useEffect\": ()=>{\n context.thumbs.delete(thumb);\n }\n })[\"SliderThumbImpl.useEffect\"];\n }\n }\n }[\"SliderThumbImpl.useEffect\"], [\n thumb,\n context.thumbs\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"span\", {\n style: {\n transform: \"var(--radix-slider-thumb-transform)\",\n position: \"absolute\",\n [orientation.startEdge]: \"calc(\".concat(percent, \"% + \").concat(thumbInBoundsOffset, \"px)\")\n },\n children: [\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.ItemSlot, {\n scope: props.__scopeSlider,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_9__.Primitive.span, {\n role: \"slider\",\n \"aria-label\": props[\"aria-label\"] || label,\n \"aria-valuemin\": context.min,\n \"aria-valuenow\": value,\n \"aria-valuemax\": context.max,\n \"aria-orientation\": context.orientation,\n \"data-orientation\": context.orientation,\n \"data-disabled\": context.disabled ? \"\" : void 0,\n tabIndex: context.disabled ? void 0 : 0,\n ...thumbProps,\n ref: composedRefs,\n style: value === void 0 ? {\n display: \"none\"\n } : props.style,\n onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(props.onFocus, ()=>{\n context.valueIndexToChangeRef.current = index;\n })\n })\n }),\n isFormControl && /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SliderBubbleInput, {\n name: name !== null && name !== void 0 ? name : context.name ? context.name + (context.values.length > 1 ? \"[]\" : \"\") : void 0,\n form: context.form,\n value\n }, index)\n ]\n });\n}, \"pFvXRuqpIvyxJZ3pPbxZwvqChTU=\", false, function() {\n return [\n useSliderContext,\n useSliderOrientationContext,\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs,\n _radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_10__.useSize\n ];\n}));\n_c13 = SliderThumbImpl;\nSliderThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar SliderBubbleInput = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_s8((param, forwardedRef)=>{\n let { __scopeSlider, value, ...props } = param;\n _s8();\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs)(ref, forwardedRef);\n const prevValue = (0,_radix_ui_react_use_previous__WEBPACK_IMPORTED_MODULE_11__.usePrevious)(value);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"SliderBubbleInput.useEffect\": ()=>{\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"value\");\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"input\", {\n bubbles: true\n });\n setValue.call(input, value);\n input.dispatchEvent(event);\n }\n }\n }[\"SliderBubbleInput.useEffect\"], [\n prevValue,\n value\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_9__.Primitive.input, {\n style: {\n display: \"none\"\n },\n ...props,\n ref: composedRefs,\n defaultValue: value\n });\n}, \"a6042gtFxAndvzVew5zmo9RhLu4=\", false, function() {\n return [\n _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.useComposedRefs,\n _radix_ui_react_use_previous__WEBPACK_IMPORTED_MODULE_11__.usePrevious\n ];\n}));\n_c14 = SliderBubbleInput;\nSliderBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getNextSortedValues() {\n let prevValues = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], nextValue = arguments.length > 1 ? arguments[1] : void 0, atIndex = arguments.length > 2 ? arguments[2] : void 0;\n const nextValues = [\n ...prevValues\n ];\n nextValues[atIndex] = nextValue;\n return nextValues.sort((a, b)=>a - b);\n}\nfunction convertValueToPercentage(value, min, max) {\n const maxSteps = max - min;\n const percentPerStep = 100 / maxSteps;\n const percentage = percentPerStep * (value - min);\n return (0,_radix_ui_number__WEBPACK_IMPORTED_MODULE_5__.clamp)(percentage, [\n 0,\n 100\n ]);\n}\nfunction getLabel(index, totalValues) {\n if (totalValues > 2) {\n return \"Value \".concat(index + 1, \" of \").concat(totalValues);\n } else if (totalValues === 2) {\n return [\n \"Minimum\",\n \"Maximum\"\n ][index];\n } else {\n return void 0;\n }\n}\nfunction getClosestValueIndex(values, nextValue) {\n if (values.length === 1) return 0;\n const distances = values.map((value)=>Math.abs(value - nextValue));\n const closestDistance = Math.min(...distances);\n return distances.indexOf(closestDistance);\n}\nfunction getThumbInBoundsOffset(width, left, direction) {\n const halfWidth = width / 2;\n const halfPercent = 50;\n const offset = linearScale([\n 0,\n halfPercent\n ], [\n 0,\n halfWidth\n ]);\n return (halfWidth - offset(left) * direction) * direction;\n}\nfunction getStepsBetweenValues(values) {\n return values.slice(0, -1).map((value, index)=>values[index + 1] - value);\n}\nfunction hasMinStepsBetweenValues(values, minStepsBetweenValues) {\n if (minStepsBetweenValues > 0) {\n const stepsBetweenValues = getStepsBetweenValues(values);\n const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n return actualMinStepsBetweenValues >= minStepsBetweenValues;\n }\n return true;\n}\nfunction linearScale(input, output) {\n return (value)=>{\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\nfunction getDecimalCount(value) {\n return (String(value).split(\".\")[1] || \"\").length;\n}\nfunction roundValue(value, decimalCount) {\n const rounder = Math.pow(10, decimalCount);\n return Math.round(value * rounder) / rounder;\n}\nvar Root = Slider;\nvar Track = SliderTrack;\nvar Range = SliderRange;\nvar Thumb = SliderThumb;\n //# sourceMappingURL=index.mjs.map\nvar _c, _c1, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9, _c10, _c11, _c12, _c13, _c14;\n$RefreshReg$(_c, \"Slider$React.forwardRef\");\n$RefreshReg$(_c1, \"Slider\");\n$RefreshReg$(_c2, \"SliderHorizontal$React.forwardRef\");\n$RefreshReg$(_c3, \"SliderHorizontal\");\n$RefreshReg$(_c4, \"SliderVertical$React.forwardRef\");\n$RefreshReg$(_c5, \"SliderVertical\");\n$RefreshReg$(_c6, \"SliderImpl\");\n$RefreshReg$(_c7, \"SliderTrack$React.forwardRef\");\n$RefreshReg$(_c8, \"SliderTrack\");\n$RefreshReg$(_c9, \"SliderRange$React.forwardRef\");\n$RefreshReg$(_c10, \"SliderRange\");\n$RefreshReg$(_c11, \"SliderThumb$React.forwardRef\");\n$RefreshReg$(_c12, \"SliderThumb\");\n$RefreshReg$(_c13, \"SliderThumbImpl\");\n$RefreshReg$(_c14, \"SliderBubbleInput\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc2xpZGVyL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXVCO0FBQ0Q7QUFDZTtBQUNMO0FBQ0c7QUFDRTtBQUNSO0FBQ0Q7QUFDSjtBQUNFO0FBQ087QUFzSnJCO0FBaEpaLElBQU0sWUFBWTtJQUFDO0lBQVUsVUFBVTtDQUFBO0FBQ3ZDLElBQU0sYUFBYTtJQUFDO0lBQVc7SUFBYTtJQUFhLFlBQVk7Q0FBQTtBQUdyRSxJQUFNLFlBQThDO0lBQ2xELGFBQWE7UUFBQztRQUFRO1FBQVk7UUFBYSxXQUFXO0tBQUE7SUFDMUQsY0FBYztRQUFDO1FBQVE7UUFBWTtRQUFhLFlBQVk7S0FBQTtJQUM1RCxlQUFlO1FBQUM7UUFBUTtRQUFZO1FBQWEsV0FBVztLQUFBO0lBQzVELFlBQVk7UUFBQztRQUFRO1FBQVk7UUFBVyxXQUFXO0tBQUE7QUFDekQ7QUFNQSxJQUFNLGNBQWM7QUFFcEIsSUFBTSxDQUFDLFlBQVksZUFBZSxxQkFBcUIsSUFDckQsNEVBQWdCLENBQXFCLFdBQVc7QUFHbEQsSUFBTSxDQUFDLHFCQUFxQixpQkFBaUIsSUFBSSwyRUFBa0IsQ0FBQyxhQUFhO0lBQy9FO0NBQ0Q7QUFjRCxJQUFNLENBQUMsZ0JBQWdCLGdCQUFnQixJQUFJLG9CQUF3QyxXQUFXO0FBd0I5RixJQUFNLHVCQUFlLHlEQUNuQixDQUFDLE9BQWlDOztJQUNoQyxNQUFNLEVBQ0osTUFDQSxNQUFNLEdBQ04sTUFBTSxLQUNOLE9BQU8sR0FDUCxjQUFjLGNBQ2QsV0FBVyxPQUNYLHdCQUF3QixHQUN4QixlQUFlO1FBQUMsR0FBRztLQUFBLEVBQ25CLE9BQ0EsZ0JBQWdCLEtBQU8sR0FDdkIsZ0JBQWdCLEtBQU8sQ0FBRCxFQUN0QixXQUFXLE9BQ1gsTUFDQSxHQUFHLGFBQ0wsR0FBSTtJQUNKLE1BQU0sWUFBa0IsMENBQXFDLG9CQUFJLElB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QUFNLE9BQU8sQ0FBQyxFQUFHLFFBQU8sT0FBTyxDQUFDO1FBQ3JFLE1BQU0sU0FBUyxPQUFPLENBQUMsSUFBSSxPQUFPLEVBQUMsS0FBTSxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUM7UUFDM0QsT0FBTyxPQUFPLENBQUMsSUFBSSxTQUFTLFFBQVEsTUFBTSxFQUFDO0lBQzdDO0FBQ0Y7QUFFQSxTQUFTLGdCQUFnQixPQUFlO0lBQ3RDLFFBQVEsT0FBTyxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUk7QUFDN0M7QUFFQSxTQUFTLFdBQVcsT0FBZSxjQUFzQjtJQUN2RCxNQUFNLFVBQVUsS0FBSyxJQUFJLElBQUksWUFBWTtJQUN6QyxPQUFPLEtBQUssTUFBTSxRQUFRLE9BQU8sSUFBSTtBQUN2QztBQUVBLElBQU0sT0FBTztBQUNiLElBQU0sUUFBUTtBQUNkLElBQU0sUUFBUTtBQUNkLElBQU0sUUFBUSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxzcmNcXHNsaWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY2xhbXAgfSBmcm9tICdAcmFkaXgtdWkvbnVtYmVyJztcbmltcG9ydCB7IGNvbXBvc2VFdmVudEhhbmRsZXJzIH0gZnJvbSAnQHJhZGl4LXVpL3ByaW1pdGl2ZSc7XG5pbXBvcnQgeyB1c2VDb21wb3NlZFJlZnMgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzJztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHRTY29wZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jb250ZXh0JztcbmltcG9ydCB7IHVzZUNvbnRyb2xsYWJsZVN0YXRlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGUnO1xuaW1wb3J0IHsgdXNlRGlyZWN0aW9uIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvbic7XG5pbXBvcnQgeyB1c2VQcmV2aW91cyB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXMnO1xuaW1wb3J0IHsgdXNlU2l6ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2Utc2l6ZSc7XG5pbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlJztcbmltcG9ydCB7IGNyZWF0ZUNvbGxlY3Rpb24gfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29sbGVjdGlvbic7XG5cbmltcG9ydCB0eXBlIHsgU2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29udGV4dCc7XG5cbnR5cGUgRGlyZWN0aW9uID0gJ2x0cicgfCAncnRsJztcblxuY29uc3QgUEFHRV9LRVlTID0gWydQYWdlVXAnLCAnUGFnZURvd24nXTtcbmNvbnN0IEFSUk9XX0tFWVMgPSBbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0J107XG5cbnR5cGUgU2xpZGVEaXJlY3Rpb24gPSAnZnJvbS1sZWZ0JyB8ICdmcm9tLXJpZ2h0JyB8ICdmcm9tLWJvdHRvbScgfCAnZnJvbS10b3AnO1xuY29uc3QgQkFDS19LRVlTOiBSZWNvcmQ8U2xpZGVEaXJlY3Rpb24sIHN0cmluZ1tdPiA9IHtcbiAgJ2Zyb20tbGVmdCc6IFsnSG9tZScsICdQYWdlRG93bicsICdBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0J10sXG4gICdmcm9tLXJpZ2h0JzogWydIb21lJywgJ1BhZ2VEb3duJywgJ0Fycm93RG93bicsICdBcnJvd1JpZ2h0J10sXG4gICdmcm9tLWJvdHRvbSc6IFsnSG9tZScsICdQYWdlRG93bicsICdBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0J10sXG4gICdmcm9tLXRvcCc6IFsnSG9tZScsICdQYWdlRG93bicsICdBcnJvd1VwJywgJ0Fycm93TGVmdCddLFxufTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xpZGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFNMSURFUl9OQU1FID0gJ1NsaWRlcic7XG5cbmNvbnN0IFtDb2xsZWN0aW9uLCB1c2VDb2xsZWN0aW9uLCBjcmVhdGVDb2xsZWN0aW9uU2NvcGVdID1cbiAgY3JlYXRlQ29sbGVjdGlvbjxTbGlkZXJUaHVtYkVsZW1lbnQ+KFNMSURFUl9OQU1FKTtcblxudHlwZSBTY29wZWRQcm9wczxQPiA9IFAgJiB7IF9fc2NvcGVTbGlkZXI/OiBTY29wZSB9O1xuY29uc3QgW2NyZWF0ZVNsaWRlckNvbnRleHQsIGNyZWF0ZVNsaWRlclNjb3BlXSA9IGNyZWF0ZUNvbnRleHRTY29wZShTTElERVJfTkFNRSwgW1xuICBjcmVhdGVDb2xsZWN0aW9uU2NvcGUsXG5dKTtcblxudHlwZSBTbGlkZXJDb250ZXh0VmFsdWUgPSB7XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIG1pbjogbnVtYmVyO1xuICBtYXg6IG51bWJlcjtcbiAgdmFsdWVzOiBudW1iZXJbXTtcbiAgdmFsdWVJbmRleFRvQ2hhbmdlUmVmOiBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PG51bWJlcj47XG4gIHRodW1iczogU2V0PFNsaWRlclRodW1iRWxlbWVudD47XG4gIG9yaWVudGF0aW9uOiBTbGlkZXJQcm9wc1snb3JpZW50YXRpb24nXTtcbiAgZm9ybTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcblxuY29uc3QgW1NsaWRlclByb3ZpZGVyLCB1c2VTbGlkZXJDb250ZXh0XSA9IGNyZWF0ZVNsaWRlckNvbnRleHQ8U2xpZGVyQ29udGV4dFZhbHVlPihTTElERVJfTkFNRSk7XG5cbnR5cGUgU2xpZGVyRWxlbWVudCA9IFNsaWRlckhvcml6b250YWxFbGVtZW50IHwgU2xpZGVyVmVydGljYWxFbGVtZW50O1xuaW50ZXJmYWNlIFNsaWRlclByb3BzXG4gIGV4dGVuZHMgT21pdDxcbiAgICBTbGlkZXJIb3Jpem9udGFsUHJvcHMgfCBTbGlkZXJWZXJ0aWNhbFByb3BzLFxuICAgIGtleW9mIFNsaWRlck9yaWVudGF0aW9uUHJpdmF0ZVByb3BzIHwgJ2RlZmF1bHRWYWx1ZSdcbiAgPiB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgb3JpZW50YXRpb24/OiBSZWFjdC5BcmlhQXR0cmlidXRlc1snYXJpYS1vcmllbnRhdGlvbiddO1xuICBkaXI/OiBEaXJlY3Rpb247XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICBzdGVwPzogbnVtYmVyO1xuICBtaW5TdGVwc0JldHdlZW5UaHVtYnM/OiBudW1iZXI7XG4gIHZhbHVlPzogbnVtYmVyW107XG4gIGRlZmF1bHRWYWx1ZT86IG51bWJlcltdO1xuICBvblZhbHVlQ2hhbmdlPyh2YWx1ZTogbnVtYmVyW10pOiB2b2lkO1xuICBvblZhbHVlQ29tbWl0Pyh2YWx1ZTogbnVtYmVyW10pOiB2b2lkO1xuICBpbnZlcnRlZD86IGJvb2xlYW47XG4gIGZvcm0/OiBzdHJpbmc7XG59XG5cbmNvbnN0IFNsaWRlciA9IFJlYWN0LmZvcndhcmRSZWY8U2xpZGVyRWxlbWVudCwgU2xpZGVyUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPFNsaWRlclByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIG1pbiA9IDAsXG4gICAgICBtYXggPSAxMDAsXG4gICAgICBzdGVwID0gMSxcbiAgICAgIG9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnLFxuICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgIG1pblN0ZXBzQmV0d2VlblRodW1icyA9IDAsXG4gICAgICBkZWZhdWx0VmFsdWUgPSBbbWluXSxcbiAgICAgIHZhbHVlLFxuICAgICAgb25WYWx1ZUNoYW5nZSA9ICgpID0+IHt9LFxuICAgICAgb25WYWx1ZUNvbW1pdCA9ICgpID0+IHt9LFxuICAgICAgaW52ZXJ0ZWQgPSBmYWxzZSxcbiAgICAgIGZvcm0sXG4gICAgICAuLi5zbGlkZXJQcm9wc1xuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCB0aHVtYlJlZnMgPSBSZWFjdC51c2VSZWY8U2xpZGVyQ29udGV4dFZhbHVlWyd0aHVtYnMnXT4obmV3IFNldCgpKTtcbiAgICBjb25zdCB2YWx1ZUluZGV4VG9DaGFuZ2VSZWYgPSBSZWFjdC51c2VSZWY8bnVtYmVyPigwKTtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnO1xuICAgIGNvbnN0IFNsaWRlck9yaWVudGF0aW9uID0gaXNIb3Jpem9udGFsID8gU2xpZGVySG9yaXpvbnRhbCA6IFNsaWRlclZlcnRpY2FsO1xuXG4gICAgY29uc3QgW3ZhbHVlcyA9IFtdLCBzZXRWYWx1ZXNdID0gdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgcHJvcDogdmFsdWUsXG4gICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFZhbHVlLFxuICAgICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0aHVtYnMgPSBbLi4udGh1bWJSZWZzLmN1cnJlbnRdO1xuICAgICAgICB0aHVtYnNbdmFsdWVJbmRleFRvQ2hhbmdlUmVmLmN1cnJlbnRdPy5mb2N1cygpO1xuICAgICAgICBvblZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgY29uc3QgdmFsdWVzQmVmb3JlU2xpZGVTdGFydFJlZiA9IFJlYWN0LnVzZVJlZih2YWx1ZXMpO1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlU2xpZGVTdGFydCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICBjb25zdCBjbG9zZXN0SW5kZXggPSBnZXRDbG9zZXN0VmFsdWVJbmRleCh2YWx1ZXMsIHZhbHVlKTtcbiAgICAgIHVwZGF0ZVZhbHVlcyh2YWx1ZSwgY2xvc2VzdEluZGV4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTbGlkZU1vdmUodmFsdWU6IG51bWJlcikge1xuICAgICAgdXBkYXRlVmFsdWVzKHZhbHVlLCB2YWx1ZUluZGV4VG9DaGFuZ2VSZWYuY3VycmVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU2xpZGVFbmQoKSB7XG4gICAgICBjb25zdCBwcmV2VmFsdWUgPSB2YWx1ZXNCZWZvcmVTbGlkZVN0YXJ0UmVmLmN1cnJlbnRbdmFsdWVJbmRleFRvQ2hhbmdlUmVmLmN1cnJlbnRdO1xuICAgICAgY29uc3QgbmV4dFZhbHVlID0gdmFsdWVzW3ZhbHVlSW5kZXhUb0NoYW5nZVJlZi5jdXJyZW50XTtcbiAgICAgIGNvbnN0IGhhc0NoYW5nZWQgPSBuZXh0VmFsdWUgIT09IHByZXZWYWx1ZTtcbiAgICAgIGlmIChoYXNDaGFuZ2VkKSBvblZhbHVlQ29tbWl0KHZhbHVlcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlVmFsdWVzKHZhbHVlOiBudW1iZXIsIGF0SW5kZXg6IG51bWJlciwgeyBjb21taXQgfSA9IHsgY29tbWl0OiBmYWxzZSB9KSB7XG4gICAgICBjb25zdCBkZWNpbWFsQ291bnQgPSBnZXREZWNpbWFsQ291bnQoc3RlcCk7XG4gICAgICBjb25zdCBzbmFwVG9TdGVwID0gcm91bmRWYWx1ZShNYXRoLnJvdW5kKCh2YWx1ZSAtIG1pbikgLyBzdGVwKSAqIHN0ZXAgKyBtaW4sIGRlY2ltYWxDb3VudCk7XG4gICAgICBjb25zdCBuZXh0VmFsdWUgPSBjbGFtcChzbmFwVG9TdGVwLCBbbWluLCBtYXhdKTtcblxuICAgICAgc2V0VmFsdWVzKChwcmV2VmFsdWVzID0gW10pID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlcyA9IGdldE5leHRTb3J0ZWRWYWx1ZXMocHJldlZhbHVlcywgbmV4dFZhbHVlLCBhdEluZGV4KTtcbiAgICAgICAgaWYgKGhhc01pblN0ZXBzQmV0d2VlblZhbHVlcyhuZXh0VmFsdWVzLCBtaW5TdGVwc0JldHdlZW5UaHVtYnMgKiBzdGVwKSkge1xuICAgICAgICAgIHZhbHVlSW5kZXhUb0NoYW5nZVJlZi5jdXJyZW50ID0gbmV4dFZhbHVlcy5pbmRleE9mKG5leHRWYWx1ZSk7XG4gICAgICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9IFN0cmluZyhuZXh0VmFsdWVzKSAhPT0gU3RyaW5nKHByZXZWYWx1ZXMpO1xuICAgICAgICAgIGlmIChoYXNDaGFuZ2VkICYmIGNvbW1pdCkgb25WYWx1ZUNvbW1pdChuZXh0VmFsdWVzKTtcbiAgICAgICAgICByZXR1cm4gaGFzQ2hhbmdlZCA/IG5leHRWYWx1ZXMgOiBwcmV2VmFsdWVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBwcmV2VmFsdWVzO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNsaWRlclByb3ZpZGVyXG4gICAgICAgIHNjb3BlPXtwcm9wcy5fX3Njb3BlU2xpZGVyfVxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIG1pbj17bWlufVxuICAgICAgICBtYXg9e21heH1cbiAgICAgICAgdmFsdWVJbmRleFRvQ2hhbmdlUmVmPXt2YWx1ZUluZGV4VG9DaGFuZ2VSZWZ9XG4gICAgICAgIHRodW1icz17dGh1bWJSZWZzLmN1cnJlbnR9XG4gICAgICAgIHZhbHVlcz17dmFsdWVzfVxuICAgICAgICBvcmllbnRhdGlvbj17b3JpZW50YXRpb259XG4gICAgICAgIGZvcm09e2Zvcm19XG4gICAgICA+XG4gICAgICAgIDxDb2xsZWN0aW9uLlByb3ZpZGVyIHNjb3BlPXtwcm9wcy5fX3Njb3BlU2xpZGVyfT5cbiAgICAgICAgICA8Q29sbGVjdGlvbi5TbG90IHNjb3BlPXtwcm9wcy5fX3Njb3BlU2xpZGVyfT5cbiAgICAgICAgICAgIDxTbGlkZXJPcmllbnRhdGlvblxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgZGF0YS1kaXNhYmxlZD17ZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgey4uLnNsaWRlclByb3BzfVxuICAgICAgICAgICAgICByZWY9e2ZvcndhcmRlZFJlZn1cbiAgICAgICAgICAgICAgb25Qb2ludGVyRG93bj17Y29tcG9zZUV2ZW50SGFuZGxlcnMoc2xpZGVyUHJvcHMub25Qb2ludGVyRG93biwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGlzYWJsZWQpIHZhbHVlc0JlZm9yZVNsaWRlU3RhcnRSZWYuY3VycmVudCA9IHZhbHVlcztcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIG1pbj17bWlufVxuICAgICAgICAgICAgICBtYXg9e21heH1cbiAgICAgICAgICAgICAgaW52ZXJ0ZWQ9e2ludmVydGVkfVxuICAgICAgICAgICAgICBvblNsaWRlU3RhcnQ9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlU2xpZGVTdGFydH1cbiAgICAgICAgICAgICAgb25TbGlkZU1vdmU9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlU2xpZGVNb3ZlfVxuICAgICAgICAgICAgICBvblNsaWRlRW5kPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZVNsaWRlRW5kfVxuICAgICAgICAgICAgICBvbkhvbWVLZXlEb3duPXsoKSA9PiAhZGlzYWJsZWQgJiYgdXBkYXRlVmFsdWVzKG1pbiwgMCwgeyBjb21taXQ6IHRydWUgfSl9XG4gICAgICAgICAgICAgIG9uRW5kS2V5RG93bj17KCkgPT5cbiAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiYgdXBkYXRlVmFsdWVzKG1heCwgdmFsdWVzLmxlbmd0aCAtIDEsIHsgY29tbWl0OiB0cnVlIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25TdGVwS2V5RG93bj17KHsgZXZlbnQsIGRpcmVjdGlvbjogc3RlcERpcmVjdGlvbiB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaXNQYWdlS2V5ID0gUEFHRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpc1NraXBLZXkgPSBpc1BhZ2VLZXkgfHwgKGV2ZW50LnNoaWZ0S2V5ICYmIEFSUk9XX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gaXNTa2lwS2V5ID8gMTAgOiAxO1xuICAgICAgICAgICAgICAgICAgY29uc3QgYXRJbmRleCA9IHZhbHVlSW5kZXhUb0NoYW5nZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbYXRJbmRleF0hO1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3RlcEluRGlyZWN0aW9uID0gc3RlcCAqIG11bHRpcGxpZXIgKiBzdGVwRGlyZWN0aW9uO1xuICAgICAgICAgICAgICAgICAgdXBkYXRlVmFsdWVzKHZhbHVlICsgc3RlcEluRGlyZWN0aW9uLCBhdEluZGV4LCB7IGNvbW1pdDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29sbGVjdGlvbi5TbG90PlxuICAgICAgICA8L0NvbGxlY3Rpb24uUHJvdmlkZXI+XG4gICAgICA8L1NsaWRlclByb3ZpZGVyPlxuICAgICk7XG4gIH1cbik7XG5cblNsaWRlci5kaXNwbGF5TmFtZSA9IFNMSURFUl9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTbGlkZXJIb3Jpem9udGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbnR5cGUgU2lkZSA9ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnO1xuXG5jb25zdCBbU2xpZGVyT3JpZW50YXRpb25Qcm92aWRlciwgdXNlU2xpZGVyT3JpZW50YXRpb25Db250ZXh0XSA9IGNyZWF0ZVNsaWRlckNvbnRleHQ8e1xuICBzdGFydEVkZ2U6IFNpZGU7XG4gIGVuZEVkZ2U6IFNpZGU7XG4gIHNpemU6IGtleW9mIE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIHVzZVNpemU+PjtcbiAgZGlyZWN0aW9uOiBudW1iZXI7XG59PihTTElERVJfTkFNRSwge1xuICBzdGFydEVkZ2U6ICdsZWZ0JyxcbiAgZW5kRWRnZTogJ3JpZ2h0JyxcbiAgc2l6ZTogJ3dpZHRoJyxcbiAgZGlyZWN0aW9uOiAxLFxufSk7XG5cbnR5cGUgU2xpZGVyT3JpZW50YXRpb25Qcml2YXRlUHJvcHMgPSB7XG4gIG1pbjogbnVtYmVyO1xuICBtYXg6IG51bWJlcjtcbiAgaW52ZXJ0ZWQ6IGJvb2xlYW47XG4gIG9uU2xpZGVTdGFydD8odmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gIG9uU2xpZGVNb3ZlPyh2YWx1ZTogbnVtYmVyKTogdm9pZDtcbiAgb25TbGlkZUVuZD8oKTogdm9pZDtcbiAgb25Ib21lS2V5RG93bihldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIG9uRW5kS2V5RG93bihldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIG9uU3RlcEtleURvd24oc3RlcDogeyBldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDsgZGlyZWN0aW9uOiBudW1iZXIgfSk6IHZvaWQ7XG59O1xuaW50ZXJmYWNlIFNsaWRlck9yaWVudGF0aW9uUHJvcHNcbiAgZXh0ZW5kcyBPbWl0PFNsaWRlckltcGxQcm9wcywga2V5b2YgU2xpZGVySW1wbFByaXZhdGVQcm9wcz4sXG4gICAgU2xpZGVyT3JpZW50YXRpb25Qcml2YXRlUHJvcHMge31cblxudHlwZSBTbGlkZXJIb3Jpem9udGFsRWxlbWVudCA9IFNsaWRlckltcGxFbGVtZW50O1xuaW50ZXJmYWNlIFNsaWRlckhvcml6b250YWxQcm9wcyBleHRlbmRzIFNsaWRlck9yaWVudGF0aW9uUHJvcHMge1xuICBkaXI/OiBEaXJlY3Rpb247XG59XG5cbmNvbnN0IFNsaWRlckhvcml6b250YWwgPSBSZWFjdC5mb3J3YXJkUmVmPFNsaWRlckhvcml6b250YWxFbGVtZW50LCBTbGlkZXJIb3Jpem9udGFsUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPFNsaWRlckhvcml6b250YWxQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG1pbixcbiAgICAgIG1heCxcbiAgICAgIGRpcixcbiAgICAgIGludmVydGVkLFxuICAgICAgb25TbGlkZVN0YXJ0LFxuICAgICAgb25TbGlkZU1vdmUsXG4gICAgICBvblNsaWRlRW5kLFxuICAgICAgb25TdGVwS2V5RG93bixcbiAgICAgIC4uLnNsaWRlclByb3BzXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtzbGlkZXIsIHNldFNsaWRlcl0gPSBSZWFjdC51c2VTdGF0ZTxTbGlkZXJJbXBsRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKSA9PiBzZXRTbGlkZXIobm9kZSkpO1xuICAgIGNvbnN0IHJlY3RSZWYgPSBSZWFjdC51c2VSZWY8RE9NUmVjdD4odW5kZWZpbmVkKTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSB1c2VEaXJlY3Rpb24oZGlyKTtcbiAgICBjb25zdCBpc0RpcmVjdGlvbkxUUiA9IGRpcmVjdGlvbiA9PT0gJ2x0cic7XG4gICAgY29uc3QgaXNTbGlkaW5nRnJvbUxlZnQgPSAoaXNEaXJlY3Rpb25MVFIgJiYgIWludmVydGVkKSB8fCAoIWlzRGlyZWN0aW9uTFRSICYmIGludmVydGVkKTtcblxuICAgIGZ1bmN0aW9uIGdldFZhbHVlRnJvbVBvaW50ZXIocG9pbnRlclBvc2l0aW9uOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSByZWN0UmVmLmN1cnJlbnQgfHwgc2xpZGVyIS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGlucHV0OiBbbnVtYmVyLCBudW1iZXJdID0gWzAsIHJlY3Qud2lkdGhdO1xuICAgICAgY29uc3Qgb3V0cHV0OiBbbnVtYmVyLCBudW1iZXJdID0gaXNTbGlkaW5nRnJvbUxlZnQgPyBbbWluLCBtYXhdIDogW21heCwgbWluXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gbGluZWFyU2NhbGUoaW5wdXQsIG91dHB1dCk7XG5cbiAgICAgIHJlY3RSZWYuY3VycmVudCA9IHJlY3Q7XG4gICAgICByZXR1cm4gdmFsdWUocG9pbnRlclBvc2l0aW9uIC0gcmVjdC5sZWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNsaWRlck9yaWVudGF0aW9uUHJvdmlkZXJcbiAgICAgICAgc2NvcGU9e3Byb3BzLl9fc2NvcGVTbGlkZXJ9XG4gICAgICAgIHN0YXJ0RWRnZT17aXNTbGlkaW5nRnJvbUxlZnQgPyAnbGVmdCcgOiAncmlnaHQnfVxuICAgICAgICBlbmRFZGdlPXtpc1NsaWRpbmdGcm9tTGVmdCA/ICdyaWdodCcgOiAnbGVmdCd9XG4gICAgICAgIGRpcmVjdGlvbj17aXNTbGlkaW5nRnJvbUxlZnQgPyAxIDogLTF9XG4gICAgICAgIHNpemU9XCJ3aWR0aFwiXG4gICAgICA+XG4gICAgICAgIDxTbGlkZXJJbXBsXG4gICAgICAgICAgZGlyPXtkaXJlY3Rpb259XG4gICAgICAgICAgZGF0YS1vcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgIHsuLi5zbGlkZXJQcm9wc31cbiAgICAgICAgICByZWY9e2NvbXBvc2VkUmVmc31cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4uc2xpZGVyUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBbJy0tcmFkaXgtc2xpZGVyLXRodW1iLXRyYW5zZm9ybScgYXMgYW55XTogJ3RyYW5zbGF0ZVgoLTUwJSknLFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25TbGlkZVN0YXJ0PXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWVGcm9tUG9pbnRlcihldmVudC5jbGllbnRYKTtcbiAgICAgICAgICAgIG9uU2xpZGVTdGFydD8uKHZhbHVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uU2xpZGVNb3ZlPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWVGcm9tUG9pbnRlcihldmVudC5jbGllbnRYKTtcbiAgICAgICAgICAgIG9uU2xpZGVNb3ZlPy4odmFsdWUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25TbGlkZUVuZD17KCkgPT4ge1xuICAgICAgICAgICAgcmVjdFJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgb25TbGlkZUVuZD8uKCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblN0ZXBLZXlEb3duPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNsaWRlRGlyZWN0aW9uID0gaXNTbGlkaW5nRnJvbUxlZnQgPyAnZnJvbS1sZWZ0JyA6ICdmcm9tLXJpZ2h0JztcbiAgICAgICAgICAgIGNvbnN0IGlzQmFja0tleSA9IEJBQ0tfS0VZU1tzbGlkZURpcmVjdGlvbl0uaW5jbHVkZXMoZXZlbnQua2V5KTtcbiAgICAgICAgICAgIG9uU3RlcEtleURvd24/Lih7IGV2ZW50LCBkaXJlY3Rpb246IGlzQmFja0tleSA/IC0xIDogMSB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9TbGlkZXJPcmllbnRhdGlvblByb3ZpZGVyPlxuICAgICk7XG4gIH1cbik7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNsaWRlclZlcnRpY2FsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbnR5cGUgU2xpZGVyVmVydGljYWxFbGVtZW50ID0gU2xpZGVySW1wbEVsZW1lbnQ7XG5pbnRlcmZhY2UgU2xpZGVyVmVydGljYWxQcm9wcyBleHRlbmRzIFNsaWRlck9yaWVudGF0aW9uUHJvcHMge31cblxuY29uc3QgU2xpZGVyVmVydGljYWwgPSBSZWFjdC5mb3J3YXJkUmVmPFNsaWRlclZlcnRpY2FsRWxlbWVudCwgU2xpZGVyVmVydGljYWxQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8U2xpZGVyVmVydGljYWxQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG1pbixcbiAgICAgIG1heCxcbiAgICAgIGludmVydGVkLFxuICAgICAgb25TbGlkZVN0YXJ0LFxuICAgICAgb25TbGlkZU1vdmUsXG4gICAgICBvblNsaWRlRW5kLFxuICAgICAgb25TdGVwS2V5RG93bixcbiAgICAgIC4uLnNsaWRlclByb3BzXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHNsaWRlclJlZiA9IFJlYWN0LnVzZVJlZjxTbGlkZXJJbXBsRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgcmVmID0gdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgc2xpZGVyUmVmKTtcbiAgICBjb25zdCByZWN0UmVmID0gUmVhY3QudXNlUmVmPERPTVJlY3Q+KHVuZGVmaW5lZCk7XG4gICAgY29uc3QgaXNTbGlkaW5nRnJvbUJvdHRvbSA9ICFpbnZlcnRlZDtcblxuICAgIGZ1bmN0aW9uIGdldFZhbHVlRnJvbVBvaW50ZXIocG9pbnRlclBvc2l0aW9uOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSByZWN0UmVmLmN1cnJlbnQgfHwgc2xpZGVyUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgaW5wdXQ6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgcmVjdC5oZWlnaHRdO1xuICAgICAgY29uc3Qgb3V0cHV0OiBbbnVtYmVyLCBudW1iZXJdID0gaXNTbGlkaW5nRnJvbUJvdHRvbSA/IFttYXgsIG1pbl0gOiBbbWluLCBtYXhdO1xuICAgICAgY29uc3QgdmFsdWUgPSBsaW5lYXJTY2FsZShpbnB1dCwgb3V0cHV0KTtcblxuICAgICAgcmVjdFJlZi5jdXJyZW50ID0gcmVjdDtcbiAgICAgIHJldHVybiB2YWx1ZShwb2ludGVyUG9zaXRpb24gLSByZWN0LnRvcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTbGlkZXJPcmllbnRhdGlvblByb3ZpZGVyXG4gICAgICAgIHNjb3BlPXtwcm9wcy5fX3Njb3BlU2xpZGVyfVxuICAgICAgICBzdGFydEVkZ2U9e2lzU2xpZGluZ0Zyb21Cb3R0b20gPyAnYm90dG9tJyA6ICd0b3AnfVxuICAgICAgICBlbmRFZGdlPXtpc1NsaWRpbmdGcm9tQm90dG9tID8gJ3RvcCcgOiAnYm90dG9tJ31cbiAgICAgICAgc2l6ZT1cImhlaWdodFwiXG4gICAgICAgIGRpcmVjdGlvbj17aXNTbGlkaW5nRnJvbUJvdHRvbSA/IDEgOiAtMX1cbiAgICAgID5cbiAgICAgICAgPFNsaWRlckltcGxcbiAgICAgICAgICBkYXRhLW9yaWVudGF0aW9uPVwidmVydGljYWxcIlxuICAgICAgICAgIHsuLi5zbGlkZXJQcm9wc31cbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4uc2xpZGVyUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBbJy0tcmFkaXgtc2xpZGVyLXRodW1iLXRyYW5zZm9ybScgYXMgYW55XTogJ3RyYW5zbGF0ZVkoNTAlKScsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblNsaWRlU3RhcnQ9eyhldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRWYWx1ZUZyb21Qb2ludGVyKGV2ZW50LmNsaWVudFkpO1xuICAgICAgICAgICAgb25TbGlkZVN0YXJ0Py4odmFsdWUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25TbGlkZU1vdmU9eyhldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRWYWx1ZUZyb21Qb2ludGVyKGV2ZW50LmNsaWVudFkpO1xuICAgICAgICAgICAgb25TbGlkZU1vdmU/Lih2YWx1ZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblNsaWRlRW5kPXsoKSA9PiB7XG4gICAgICAgICAgICByZWN0UmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBvblNsaWRlRW5kPy4oKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uU3RlcEtleURvd249eyhldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2xpZGVEaXJlY3Rpb24gPSBpc1NsaWRpbmdGcm9tQm90dG9tID8gJ2Zyb20tYm90dG9tJyA6ICdmcm9tLXRvcCc7XG4gICAgICAgICAgICBjb25zdCBpc0JhY2tLZXkgPSBCQUNLX0tFWVNbc2xpZGVEaXJlY3Rpb25dLmluY2x1ZGVzKGV2ZW50LmtleSk7XG4gICAgICAgICAgICBvblN0ZXBLZXlEb3duPy4oeyBldmVudCwgZGlyZWN0aW9uOiBpc0JhY2tLZXkgPyAtMSA6IDEgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvU2xpZGVyT3JpZW50YXRpb25Qcm92aWRlcj5cbiAgICApO1xuICB9XG4pO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTbGlkZXJJbXBsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbnR5cGUgU2xpZGVySW1wbEVsZW1lbnQgPSBSZWFjdC5Db21wb25lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5zcGFuPjtcbnR5cGUgUHJpbWl0aXZlRGl2UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFByaW1pdGl2ZS5kaXY+O1xudHlwZSBTbGlkZXJJbXBsUHJpdmF0ZVByb3BzID0ge1xuICBvblNsaWRlU3RhcnQoZXZlbnQ6IFJlYWN0LlBvaW50ZXJFdmVudCk6IHZvaWQ7XG4gIG9uU2xpZGVNb3ZlKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpOiB2b2lkO1xuICBvblNsaWRlRW5kKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpOiB2b2lkO1xuICBvbkhvbWVLZXlEb3duKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgb25FbmRLZXlEb3duKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgb25TdGVwS2V5RG93bihldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG59O1xuaW50ZXJmYWNlIFNsaWRlckltcGxQcm9wcyBleHRlbmRzIFByaW1pdGl2ZURpdlByb3BzLCBTbGlkZXJJbXBsUHJpdmF0ZVByb3BzIHt9XG5cbmNvbnN0IFNsaWRlckltcGwgPSBSZWFjdC5mb3J3YXJkUmVmPFNsaWRlckltcGxFbGVtZW50LCBTbGlkZXJJbXBsUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPFNsaWRlckltcGxQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIF9fc2NvcGVTbGlkZXIsXG4gICAgICBvblNsaWRlU3RhcnQsXG4gICAgICBvblNsaWRlTW92ZSxcbiAgICAgIG9uU2xpZGVFbmQsXG4gICAgICBvbkhvbWVLZXlEb3duLFxuICAgICAgb25FbmRLZXlEb3duLFxuICAgICAgb25TdGVwS2V5RG93bixcbiAgICAgIC4uLnNsaWRlclByb3BzXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VTbGlkZXJDb250ZXh0KFNMSURFUl9OQU1FLCBfX3Njb3BlU2xpZGVyKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UHJpbWl0aXZlLnNwYW5cbiAgICAgICAgey4uLnNsaWRlclByb3BzfVxuICAgICAgICByZWY9e2ZvcndhcmRlZFJlZn1cbiAgICAgICAgb25LZXlEb3duPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbktleURvd24sIChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgICAgICAgb25Ib21lS2V5RG93bihldmVudCk7XG4gICAgICAgICAgICAvLyBQcmV2ZW50IHNjcm9sbGluZyB0byBwYWdlIHN0YXJ0XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRW5kJykge1xuICAgICAgICAgICAgb25FbmRLZXlEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgc2Nyb2xsaW5nIHRvIHBhZ2UgZW5kXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoUEFHRV9LRVlTLmNvbmNhdChBUlJPV19LRVlTKS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICBvblN0ZXBLZXlEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgc2Nyb2xsaW5nIGZvciBkaXJlY3Rpb25hbCBrZXkgcHJlc3Nlc1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pfVxuICAgICAgICBvblBvaW50ZXJEb3duPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vblBvaW50ZXJEb3duLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgdGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG4gICAgICAgICAgLy8gUHJldmVudCBicm93c2VyIGZvY3VzIGJlaGF2aW91ciBiZWNhdXNlIHdlIGZvY3VzIGEgdGh1bWIgbWFudWFsbHkgd2hlbiB2YWx1ZXMgY2hhbmdlLlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgLy8gVG91Y2ggZGV2aWNlcyBoYXZlIGEgZGVsYXkgYmVmb3JlIGZvY3VzaW5nIHNvIHdvbid0IGZvY3VzIGlmIHRvdWNoIGltbWVkaWF0ZWx5IG1vdmVzXG4gICAgICAgICAgLy8gYXdheSBmcm9tIHRhcmdldCAoc2xpZGluZykuIFdlIHdhbnQgdGh1bWIgdG8gZm9jdXMgcmVnYXJkbGVzcy5cbiAgICAgICAgICBpZiAoY29udGV4dC50aHVtYnMuaGFzKHRhcmdldCkpIHtcbiAgICAgICAgICAgIHRhcmdldC5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvblNsaWRlU3RhcnQoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSl9XG4gICAgICAgIG9uUG9pbnRlck1vdmU9e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlck1vdmUsIChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICBpZiAodGFyZ2V0Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCkpIG9uU2xpZGVNb3ZlKGV2ZW50KTtcbiAgICAgICAgfSl9XG4gICAgICAgIG9uUG9pbnRlclVwPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vblBvaW50ZXJVcCwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIGlmICh0YXJnZXQuaGFzUG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKSkge1xuICAgICAgICAgICAgdGFyZ2V0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpO1xuICAgICAgICAgICAgb25TbGlkZUVuZChldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuKTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xpZGVyVHJhY2tcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgVFJBQ0tfTkFNRSA9ICdTbGlkZXJUcmFjayc7XG5cbnR5cGUgU2xpZGVyVHJhY2tFbGVtZW50ID0gUmVhY3QuQ29tcG9uZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuc3Bhbj47XG50eXBlIFByaW1pdGl2ZVNwYW5Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJpbWl0aXZlLnNwYW4+O1xuaW50ZXJmYWNlIFNsaWRlclRyYWNrUHJvcHMgZXh0ZW5kcyBQcmltaXRpdmVTcGFuUHJvcHMge31cblxuY29uc3QgU2xpZGVyVHJhY2sgPSBSZWFjdC5mb3J3YXJkUmVmPFNsaWRlclRyYWNrRWxlbWVudCwgU2xpZGVyVHJhY2tQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8U2xpZGVyVHJhY2tQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgX19zY29wZVNsaWRlciwgLi4udHJhY2tQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9IHVzZVNsaWRlckNvbnRleHQoVFJBQ0tfTkFNRSwgX19zY29wZVNsaWRlcik7XG4gICAgcmV0dXJuIChcbiAgICAgIDxQcmltaXRpdmUuc3BhblxuICAgICAgICBkYXRhLWRpc2FibGVkPXtjb250ZXh0LmRpc2FibGVkID8gJycgOiB1bmRlZmluZWR9XG4gICAgICAgIGRhdGEtb3JpZW50YXRpb249e2NvbnRleHQub3JpZW50YXRpb259XG4gICAgICAgIHsuLi50cmFja1Byb3BzfVxuICAgICAgICByZWY9e2ZvcndhcmRlZFJlZn1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuKTtcblxuU2xpZGVyVHJhY2suZGlzcGxheU5hbWUgPSBUUkFDS19OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTbGlkZXJSYW5nZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBSQU5HRV9OQU1FID0gJ1NsaWRlclJhbmdlJztcblxudHlwZSBTbGlkZXJSYW5nZUVsZW1lbnQgPSBSZWFjdC5Db21wb25lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5zcGFuPjtcbmludGVyZmFjZSBTbGlkZXJSYW5nZVByb3BzIGV4dGVuZHMgUHJpbWl0aXZlU3BhblByb3BzIHt9XG5cbmNvbnN0IFNsaWRlclJhbmdlID0gUmVhY3QuZm9yd2FyZFJlZjxTbGlkZXJSYW5nZUVsZW1lbnQsIFNsaWRlclJhbmdlUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPFNsaWRlclJhbmdlUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IF9fc2NvcGVTbGlkZXIsIC4uLnJhbmdlUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VTbGlkZXJDb250ZXh0KFJBTkdFX05BTUUsIF9fc2NvcGVTbGlkZXIpO1xuICAgIGNvbnN0IG9yaWVudGF0aW9uID0gdXNlU2xpZGVyT3JpZW50YXRpb25Db250ZXh0KFJBTkdFX05BTUUsIF9fc2NvcGVTbGlkZXIpO1xuICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgY29uc3QgdmFsdWVzQ291bnQgPSBjb250ZXh0LnZhbHVlcy5sZW5ndGg7XG4gICAgY29uc3QgcGVyY2VudGFnZXMgPSBjb250ZXh0LnZhbHVlcy5tYXAoKHZhbHVlKSA9PlxuICAgICAgY29udmVydFZhbHVlVG9QZXJjZW50YWdlKHZhbHVlLCBjb250ZXh0Lm1pbiwgY29udGV4dC5tYXgpXG4gICAgKTtcbiAgICBjb25zdCBvZmZzZXRTdGFydCA9IHZhbHVlc0NvdW50ID4gMSA/IE1hdGgubWluKC4uLnBlcmNlbnRhZ2VzKSA6IDA7XG4gICAgY29uc3Qgb2Zmc2V0RW5kID0gMTAwIC0gTWF0aC5tYXgoLi4ucGVyY2VudGFnZXMpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQcmltaXRpdmUuc3BhblxuICAgICAgICBkYXRhLW9yaWVudGF0aW9uPXtjb250ZXh0Lm9yaWVudGF0aW9ufVxuICAgICAgICBkYXRhLWRpc2FibGVkPXtjb250ZXh0LmRpc2FibGVkID8gJycgOiB1bmRlZmluZWR9XG4gICAgICAgIHsuLi5yYW5nZVByb3BzfVxuICAgICAgICByZWY9e2NvbXBvc2VkUmVmc31cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgICBbb3JpZW50YXRpb24uc3RhcnRFZGdlXTogb2Zmc2V0U3RhcnQgKyAnJScsXG4gICAgICAgICAgW29yaWVudGF0aW9uLmVuZEVkZ2VdOiBvZmZzZXRFbmQgKyAnJScsXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICk7XG4gIH1cbik7XG5cblNsaWRlclJhbmdlLmRpc3BsYXlOYW1lID0gUkFOR0VfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xpZGVyVGh1bWJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgVEhVTUJfTkFNRSA9ICdTbGlkZXJUaHVtYic7XG5cbnR5cGUgU2xpZGVyVGh1bWJFbGVtZW50ID0gU2xpZGVyVGh1bWJJbXBsRWxlbWVudDtcbmludGVyZmFjZSBTbGlkZXJUaHVtYlByb3BzIGV4dGVuZHMgT21pdDxTbGlkZXJUaHVtYkltcGxQcm9wcywgJ2luZGV4Jz4ge31cblxuY29uc3QgU2xpZGVyVGh1bWIgPSBSZWFjdC5mb3J3YXJkUmVmPFNsaWRlclRodW1iRWxlbWVudCwgU2xpZGVyVGh1bWJQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8U2xpZGVyVGh1bWJQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IGdldEl0ZW1zID0gdXNlQ29sbGVjdGlvbihwcm9wcy5fX3Njb3BlU2xpZGVyKTtcbiAgICBjb25zdCBbdGh1bWIsIHNldFRodW1iXSA9IFJlYWN0LnVzZVN0YXRlPFNsaWRlclRodW1iSW1wbEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSB1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSkgPT4gc2V0VGh1bWIobm9kZSkpO1xuICAgIGNvbnN0IGluZGV4ID0gUmVhY3QudXNlTWVtbyhcbiAgICAgICgpID0+ICh0aHVtYiA/IGdldEl0ZW1zKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLnJlZi5jdXJyZW50ID09PSB0aHVtYikgOiAtMSksXG4gICAgICBbZ2V0SXRlbXMsIHRodW1iXVxuICAgICk7XG4gICAgcmV0dXJuIDxTbGlkZXJUaHVtYkltcGwgey4uLnByb3BzfSByZWY9e2NvbXBvc2VkUmVmc30gaW5kZXg9e2luZGV4fSAvPjtcbiAgfVxuKTtcblxudHlwZSBTbGlkZXJUaHVtYkltcGxFbGVtZW50ID0gUmVhY3QuQ29tcG9uZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuc3Bhbj47XG5pbnRlcmZhY2UgU2xpZGVyVGh1bWJJbXBsUHJvcHMgZXh0ZW5kcyBQcmltaXRpdmVTcGFuUHJvcHMge1xuICBpbmRleDogbnVtYmVyO1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5jb25zdCBTbGlkZXJUaHVtYkltcGwgPSBSZWFjdC5mb3J3YXJkUmVmPFNsaWRlclRodW1iSW1wbEVsZW1lbnQsIFNsaWRlclRodW1iSW1wbFByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxTbGlkZXJUaHVtYkltcGxQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgX19zY29wZVNsaWRlciwgaW5kZXgsIG5hbWUsIC4uLnRodW1iUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VTbGlkZXJDb250ZXh0KFRIVU1CX05BTUUsIF9fc2NvcGVTbGlkZXIpO1xuICAgIGNvbnN0IG9yaWVudGF0aW9uID0gdXNlU2xpZGVyT3JpZW50YXRpb25Db250ZXh0KFRIVU1CX05BTUUsIF9fc2NvcGVTbGlkZXIpO1xuICAgIGNvbnN0IFt0aHVtYiwgc2V0VGh1bWJdID0gUmVhY3QudXNlU3RhdGU8SFRNTFNwYW5FbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpID0+IHNldFRodW1iKG5vZGUpKTtcbiAgICAvLyBXZSBzZXQgdGhpcyB0byB0cnVlIGJ5IGRlZmF1bHQgc28gdGhhdCBldmVudHMgYnViYmxlIHRvIGZvcm1zIHdpdGhvdXQgSlMgKFNTUilcbiAgICBjb25zdCBpc0Zvcm1Db250cm9sID0gdGh1bWIgPyBjb250ZXh0LmZvcm0gfHwgISF0aHVtYi5jbG9zZXN0KCdmb3JtJykgOiB0cnVlO1xuICAgIGNvbnN0IHNpemUgPSB1c2VTaXplKHRodW1iKTtcbiAgICAvLyBXZSBjYXN0IGJlY2F1c2UgaW5kZXggY291bGQgYmUgYC0xYCB3aGljaCB3b3VsZCByZXR1cm4gdW5kZWZpbmVkXG4gICAgY29uc3QgdmFsdWUgPSBjb250ZXh0LnZhbHVlc1tpbmRleF0gYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBlcmNlbnQgPVxuICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCA/IDAgOiBjb252ZXJ0VmFsdWVUb1BlcmNlbnRhZ2UodmFsdWUsIGNvbnRleHQubWluLCBjb250ZXh0Lm1heCk7XG4gICAgY29uc3QgbGFiZWwgPSBnZXRMYWJlbChpbmRleCwgY29udGV4dC52YWx1ZXMubGVuZ3RoKTtcbiAgICBjb25zdCBvcmllbnRhdGlvblNpemUgPSBzaXplPy5bb3JpZW50YXRpb24uc2l6ZV07XG4gICAgY29uc3QgdGh1bWJJbkJvdW5kc09mZnNldCA9IG9yaWVudGF0aW9uU2l6ZVxuICAgICAgPyBnZXRUaHVtYkluQm91bmRzT2Zmc2V0KG9yaWVudGF0aW9uU2l6ZSwgcGVyY2VudCwgb3JpZW50YXRpb24uZGlyZWN0aW9uKVxuICAgICAgOiAwO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aHVtYikge1xuICAgICAgICBjb250ZXh0LnRodW1icy5hZGQodGh1bWIpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIGNvbnRleHQudGh1bWJzLmRlbGV0ZSh0aHVtYik7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSwgW3RodW1iLCBjb250ZXh0LnRodW1ic10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdHJhbnNmb3JtOiAndmFyKC0tcmFkaXgtc2xpZGVyLXRodW1iLXRyYW5zZm9ybSknLFxuICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgIFtvcmllbnRhdGlvbi5zdGFydEVkZ2VdOiBgY2FsYygke3BlcmNlbnR9JSArICR7dGh1bWJJbkJvdW5kc09mZnNldH1weClgLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8Q29sbGVjdGlvbi5JdGVtU2xvdCBzY29wZT17cHJvcHMuX19zY29wZVNsaWRlcn0+XG4gICAgICAgICAgPFByaW1pdGl2ZS5zcGFuXG4gICAgICAgICAgICByb2xlPVwic2xpZGVyXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e3Byb3BzWydhcmlhLWxhYmVsJ10gfHwgbGFiZWx9XG4gICAgICAgICAgICBhcmlhLXZhbHVlbWluPXtjb250ZXh0Lm1pbn1cbiAgICAgICAgICAgIGFyaWEtdmFsdWVub3c9e3ZhbHVlfVxuICAgICAgICAgICAgYXJpYS12YWx1ZW1heD17Y29udGV4dC5tYXh9XG4gICAgICAgICAgICBhcmlhLW9yaWVudGF0aW9uPXtjb250ZXh0Lm9yaWVudGF0aW9ufVxuICAgICAgICAgICAgZGF0YS1vcmllbnRhdGlvbj17Y29udGV4dC5vcmllbnRhdGlvbn1cbiAgICAgICAgICAgIGRhdGEtZGlzYWJsZWQ9e2NvbnRleHQuZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIHRhYkluZGV4PXtjb250ZXh0LmRpc2FibGVkID8gdW5kZWZpbmVkIDogMH1cbiAgICAgICAgICAgIHsuLi50aHVtYlByb3BzfVxuICAgICAgICAgICAgcmVmPXtjb21wb3NlZFJlZnN9XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRoZXJlIHdpbGwgYmUgbm8gdmFsdWUgb24gaW5pdGlhbCByZW5kZXIgd2hpbGUgd2Ugd29yayBvdXQgdGhlIGluZGV4IHNvIHdlIGhpZGUgdGh1bWJzXG4gICAgICAgICAgICAgKiB3aXRob3V0IGEgdmFsdWUsIG90aGVyd2lzZSBTU1Igd2lsbCByZW5kZXIgdGhlbSBpbiB0aGUgd3JvbmcgcG9zaXRpb24gYmVmb3JlIHRoZXlcbiAgICAgICAgICAgICAqIHNuYXAgaW50byB0aGUgY29ycmVjdCBwb3NpdGlvbiBkdXJpbmcgaHlkcmF0aW9uIHdoaWNoIHdvdWxkIGJlIHZpc3VhbGx5IGphcnJpbmcgZm9yXG4gICAgICAgICAgICAgKiBzbG93ZXIgY29ubmVjdGlvbnMuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0eWxlPXt2YWx1ZSA9PT0gdW5kZWZpbmVkID8geyBkaXNwbGF5OiAnbm9uZScgfSA6IHByb3BzLnN0eWxlfVxuICAgICAgICAgICAgb25Gb2N1cz17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCkgPT4ge1xuICAgICAgICAgICAgICBjb250ZXh0LnZhbHVlSW5kZXhUb0NoYW5nZVJlZi5jdXJyZW50ID0gaW5kZXg7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbGxlY3Rpb24uSXRlbVNsb3Q+XG5cbiAgICAgICAge2lzRm9ybUNvbnRyb2wgJiYgKFxuICAgICAgICAgIDxTbGlkZXJCdWJibGVJbnB1dFxuICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgIG5hbWU9e1xuICAgICAgICAgICAgICBuYW1lID8/XG4gICAgICAgICAgICAgIChjb250ZXh0Lm5hbWUgPyBjb250ZXh0Lm5hbWUgKyAoY29udGV4dC52YWx1ZXMubGVuZ3RoID4gMSA/ICdbXScgOiAnJykgOiB1bmRlZmluZWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3JtPXtjb250ZXh0LmZvcm19XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG4pO1xuXG5TbGlkZXJUaHVtYi5kaXNwbGF5TmFtZSA9IFRIVU1CX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNsaWRlckJ1YmJsZUlucHV0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IEJVQkJMRV9JTlBVVF9OQU1FID0gJ1JhZGlvQnViYmxlSW5wdXQnO1xuXG50eXBlIElucHV0UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFByaW1pdGl2ZS5pbnB1dD47XG5pbnRlcmZhY2UgU2xpZGVyQnViYmxlSW5wdXRQcm9wcyBleHRlbmRzIElucHV0UHJvcHMge31cblxuY29uc3QgU2xpZGVyQnViYmxlSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIFNsaWRlckJ1YmJsZUlucHV0UHJvcHM+KFxuICAoeyBfX3Njb3BlU2xpZGVyLCB2YWx1ZSwgLi4ucHJvcHMgfTogU2NvcGVkUHJvcHM8U2xpZGVyQnViYmxlSW5wdXRQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSB1c2VDb21wb3NlZFJlZnMocmVmLCBmb3J3YXJkZWRSZWYpO1xuICAgIGNvbnN0IHByZXZWYWx1ZSA9IHVzZVByZXZpb3VzKHZhbHVlKTtcblxuICAgIC8vIEJ1YmJsZSB2YWx1ZSBjaGFuZ2UgdG8gcGFyZW50cyAoZS5nIGZvcm0gY2hhbmdlIGV2ZW50KVxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHJlZi5jdXJyZW50O1xuICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBpbnB1dFByb3RvID0gd2luZG93LkhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlO1xuICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaW5wdXRQcm90bywgJ3ZhbHVlJykgYXMgUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBkZXNjcmlwdG9yLnNldDtcbiAgICAgIGlmIChwcmV2VmFsdWUgIT09IHZhbHVlICYmIHNldFZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSB9KTtcbiAgICAgICAgc2V0VmFsdWUuY2FsbChpbnB1dCwgdmFsdWUpO1xuICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9LCBbcHJldlZhbHVlLCB2YWx1ZV0pO1xuXG4gICAgLyoqXG4gICAgICogV2UgcHVycG9zZWZ1bGx5IGRvIG5vdCB1c2UgYHR5cGU9XCJoaWRkZW5cImAgaGVyZSBvdGhlcndpc2UgZm9ybXMgdGhhdFxuICAgICAqIHdyYXAgaXQgd2lsbCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgaXRzIHZhbHVlIHZpYSB0aGUgRm9ybURhdGEgQVBJLlxuICAgICAqXG4gICAgICogV2UgcHVycG9zZWZ1bGx5IGRvIG5vdCBhZGQgdGhlIGB2YWx1ZWAgYXR0cmlidXRlIGhlcmUgdG8gYWxsb3cgdGhlIHZhbHVlXG4gICAgICogdG8gYmUgc2V0IHByb2dyYW1tYXRpY2FsbHkgYW5kIGJ1YmJsZSB0byBhbnkgcGFyZW50IGZvcm0gYG9uQ2hhbmdlYCBldmVudC5cbiAgICAgKiBBZGRpbmcgdGhlIGB2YWx1ZWAgd2lsbCBjYXVzZSBSZWFjdCB0byBjb25zaWRlciB0aGUgcHJvZ3JhbW1hdGljXG4gICAgICogZGlzcGF0Y2ggYSBkdXBsaWNhdGUgYW5kIGl0IHdpbGwgZ2V0IHN3YWxsb3dlZC5cbiAgICAgKi9cbiAgICByZXR1cm4gKFxuICAgICAgPFByaW1pdGl2ZS5pbnB1dFxuICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnbm9uZScgfX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByZWY9e2NvbXBvc2VkUmVmc31cbiAgICAgICAgZGVmYXVsdFZhbHVlPXt2YWx1ZX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuKTtcblxuU2xpZGVyQnViYmxlSW5wdXQuZGlzcGxheU5hbWUgPSBCVUJCTEVfSU5QVVRfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5mdW5jdGlvbiBnZXROZXh0U29ydGVkVmFsdWVzKHByZXZWYWx1ZXM6IG51bWJlcltdID0gW10sIG5leHRWYWx1ZTogbnVtYmVyLCBhdEluZGV4OiBudW1iZXIpIHtcbiAgY29uc3QgbmV4dFZhbHVlcyA9IFsuLi5wcmV2VmFsdWVzXTtcbiAgbmV4dFZhbHVlc1thdEluZGV4XSA9IG5leHRWYWx1ZTtcbiAgcmV0dXJuIG5leHRWYWx1ZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VmFsdWVUb1BlcmNlbnRhZ2UodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gIGNvbnN0IG1heFN0ZXBzID0gbWF4IC0gbWluO1xuICBjb25zdCBwZXJjZW50UGVyU3RlcCA9IDEwMCAvIG1heFN0ZXBzO1xuICBjb25zdCBwZXJjZW50YWdlID0gcGVyY2VudFBlclN0ZXAgKiAodmFsdWUgLSBtaW4pO1xuICByZXR1cm4gY2xhbXAocGVyY2VudGFnZSwgWzAsIDEwMF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBsYWJlbCBmb3IgZWFjaCB0aHVtYiB3aGVuIHRoZXJlIGFyZSB0d28gb3IgbW9yZSB0aHVtYnNcbiAqL1xuZnVuY3Rpb24gZ2V0TGFiZWwoaW5kZXg6IG51bWJlciwgdG90YWxWYWx1ZXM6IG51bWJlcikge1xuICBpZiAodG90YWxWYWx1ZXMgPiAyKSB7XG4gICAgcmV0dXJuIGBWYWx1ZSAke2luZGV4ICsgMX0gb2YgJHt0b3RhbFZhbHVlc31gO1xuICB9IGVsc2UgaWYgKHRvdGFsVmFsdWVzID09PSAyKSB7XG4gICAgcmV0dXJuIFsnTWluaW11bScsICdNYXhpbXVtJ11baW5kZXhdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIGB2YWx1ZXNgIGFycmF5IGFuZCBhIGBuZXh0VmFsdWVgLCBkZXRlcm1pbmUgd2hpY2ggdmFsdWUgaW5cbiAqIHRoZSBhcnJheSBpcyBjbG9zZXN0IHRvIGBuZXh0VmFsdWVgIGFuZCByZXR1cm4gaXRzIGluZGV4LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyByZXR1cm5zIDFcbiAqIGdldENsb3Nlc3RWYWx1ZUluZGV4KFsxMCwgMzBdLCAyNSk7XG4gKi9cbmZ1bmN0aW9uIGdldENsb3Nlc3RWYWx1ZUluZGV4KHZhbHVlczogbnVtYmVyW10sIG5leHRWYWx1ZTogbnVtYmVyKSB7XG4gIGlmICh2YWx1ZXMubGVuZ3RoID09PSAxKSByZXR1cm4gMDtcbiAgY29uc3QgZGlzdGFuY2VzID0gdmFsdWVzLm1hcCgodmFsdWUpID0+IE1hdGguYWJzKHZhbHVlIC0gbmV4dFZhbHVlKSk7XG4gIGNvbnN0IGNsb3Nlc3REaXN0YW5jZSA9IE1hdGgubWluKC4uLmRpc3RhbmNlcyk7XG4gIHJldHVybiBkaXN0YW5jZXMuaW5kZXhPZihjbG9zZXN0RGlzdGFuY2UpO1xufVxuXG4vKipcbiAqIE9mZnNldHMgdGhlIHRodW1iIGNlbnRyZSBwb2ludCB3aGlsZSBzbGlkaW5nIHRvIGVuc3VyZSBpdCByZW1haW5zXG4gKiB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgc2xpZGVyIHdoZW4gcmVhY2hpbmcgdGhlIGVkZ2VzXG4gKi9cbmZ1bmN0aW9uIGdldFRodW1iSW5Cb3VuZHNPZmZzZXQod2lkdGg6IG51bWJlciwgbGVmdDogbnVtYmVyLCBkaXJlY3Rpb246IG51bWJlcikge1xuICBjb25zdCBoYWxmV2lkdGggPSB3aWR0aCAvIDI7XG4gIGNvbnN0IGhhbGZQZXJjZW50ID0gNTA7XG4gIGNvbnN0IG9mZnNldCA9IGxpbmVhclNjYWxlKFswLCBoYWxmUGVyY2VudF0sIFswLCBoYWxmV2lkdGhdKTtcbiAgcmV0dXJuIChoYWxmV2lkdGggLSBvZmZzZXQobGVmdCkgKiBkaXJlY3Rpb24pICogZGlyZWN0aW9uO1xufVxuXG4vKipcbiAqIEdldHMgYW4gYXJyYXkgb2Ygc3RlcHMgYmV0d2VlbiBlYWNoIHZhbHVlLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyByZXR1cm5zIFsxLCA5XVxuICogZ2V0U3RlcHNCZXR3ZWVuVmFsdWVzKFsxMCwgMTEsIDIwXSk7XG4gKi9cbmZ1bmN0aW9uIGdldFN0ZXBzQmV0d2VlblZhbHVlcyh2YWx1ZXM6IG51bWJlcltdKSB7XG4gIHJldHVybiB2YWx1ZXMuc2xpY2UoMCwgLTEpLm1hcCgodmFsdWUsIGluZGV4KSA9PiB2YWx1ZXNbaW5kZXggKyAxXSEgLSB2YWx1ZSk7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIG1pbmltdW0gc3RlcHMgYmV0d2VlbiBhbGwgdmFsdWVzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbFxuICogdG8gdGhlIGV4cGVjdGVkIG1pbmltdW0gc3RlcHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIHJldHVybnMgZmFsc2VcbiAqIGhhc01pblN0ZXBzQmV0d2VlblZhbHVlcyhbMSwyLDNdLCAyKTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gcmV0dXJucyB0cnVlXG4gKiBoYXNNaW5TdGVwc0JldHdlZW5WYWx1ZXMoWzEsMiwzXSwgMSk7XG4gKi9cbmZ1bmN0aW9uIGhhc01pblN0ZXBzQmV0d2VlblZhbHVlcyh2YWx1ZXM6IG51bWJlcltdLCBtaW5TdGVwc0JldHdlZW5WYWx1ZXM6IG51bWJlcikge1xuICBpZiAobWluU3RlcHNCZXR3ZWVuVmFsdWVzID4gMCkge1xuICAgIGNvbnN0IHN0ZXBzQmV0d2VlblZhbHVlcyA9IGdldFN0ZXBzQmV0d2VlblZhbHVlcyh2YWx1ZXMpO1xuICAgIGNvbnN0IGFjdHVhbE1pblN0ZXBzQmV0d2VlblZhbHVlcyA9IE1hdGgubWluKC4uLnN0ZXBzQmV0d2VlblZhbHVlcyk7XG4gICAgcmV0dXJuIGFjdHVhbE1pblN0ZXBzQmV0d2VlblZhbHVlcyA+PSBtaW5TdGVwc0JldHdlZW5WYWx1ZXM7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90bWN3LXVwLWZvci1hZG9wdGlvbi9zaW1wbGUtbGluZWFyLXNjYWxlL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG5mdW5jdGlvbiBsaW5lYXJTY2FsZShpbnB1dDogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSwgb3V0cHV0OiByZWFkb25seSBbbnVtYmVyLCBudW1iZXJdKSB7XG4gIHJldHVybiAodmFsdWU6IG51bWJlcikgPT4ge1xuICAgIGlmIChpbnB1dFswXSA9PT0gaW5wdXRbMV0gfHwgb3V0cHV0WzBdID09PSBvdXRwdXRbMV0pIHJldHVybiBvdXRwdXRbMF07XG4gICAgY29uc3QgcmF0aW8gPSAob3V0cHV0WzFdIC0gb3V0cHV0WzBdKSAvIChpbnB1dFsxXSAtIGlucHV0WzBdKTtcbiAgICByZXR1cm4gb3V0cHV0WzBdICsgcmF0aW8gKiAodmFsdWUgLSBpbnB1dFswXSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERlY2ltYWxDb3VudCh2YWx1ZTogbnVtYmVyKSB7XG4gIHJldHVybiAoU3RyaW5nKHZhbHVlKS5zcGxpdCgnLicpWzFdIHx8ICcnKS5sZW5ndGg7XG59XG5cbmZ1bmN0aW9uIHJvdW5kVmFsdWUodmFsdWU6IG51bWJlciwgZGVjaW1hbENvdW50OiBudW1iZXIpIHtcbiAgY29uc3Qgcm91bmRlciA9IE1hdGgucG93KDEwLCBkZWNpbWFsQ291bnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHJvdW5kZXIpIC8gcm91bmRlcjtcbn1cblxuY29uc3QgUm9vdCA9IFNsaWRlcjtcbmNvbnN0IFRyYWNrID0gU2xpZGVyVHJhY2s7XG5jb25zdCBSYW5nZSA9IFNsaWRlclJhbmdlO1xuY29uc3QgVGh1bWIgPSBTbGlkZXJUaHVtYjtcblxuZXhwb3J0IHtcbiAgY3JlYXRlU2xpZGVyU2NvcGUsXG4gIC8vXG4gIFNsaWRlcixcbiAgU2xpZGVyVHJhY2ssXG4gIFNsaWRlclJhbmdlLFxuICBTbGlkZXJUaHVtYixcbiAgLy9cbiAgUm9vdCxcbiAgVHJhY2ssXG4gIFJhbmdlLFxuICBUaHVtYixcbn07XG5leHBvcnQgdHlwZSB7IFNsaWRlclByb3BzLCBTbGlkZXJUcmFja1Byb3BzLCBTbGlkZXJSYW5nZVByb3BzLCBTbGlkZXJUaHVtYlByb3BzIH07XG4iXSwibmFtZXMiOlsidmFsdWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-slider/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-slot/dist/index.mjs":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-slot/dist/index.mjs ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("var react__WEBPACK_IMPORTED_MODULE_0___namespace_cache;\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Root: () => (/* binding */ Slot),\n/* harmony export */ Slot: () => (/* binding */ Slot),\n/* harmony export */ Slottable: () => (/* binding */ Slottable),\n/* harmony export */ createSlot: () => (/* binding */ createSlot),\n/* harmony export */ createSlottable: () => (/* binding */ createSlottable)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(app-pages-browser)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n// src/slot.tsx\n\n\n\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (react__WEBPACK_IMPORTED_MODULE_0__.Children.count(newElement) > 1) return react__WEBPACK_IMPORTED_MODULE_0__.Children.only(null);\n return react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(newElement) ? react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== react__WEBPACK_IMPORTED_MODULE_0__.Fragment) {\n props2.ref = forwardedRef ? (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.composeRefs)(forwardedRef, childrenRef) : childrenRef;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(children, props2);\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.Children.count(children) > 1 ? react__WEBPACK_IMPORTED_MODULE_0__.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc2xvdC9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUMrQjtBQUM0QjtBQUNJO0FBQy9EO0FBQ0EsVUFBVSx5TEFBSztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2Q0FBZ0I7QUFDaEMsVUFBVSx5QkFBeUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDJDQUFjO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDJDQUFjLCtCQUErQiwyQ0FBYztBQUN6RSxpQkFBaUIsaURBQW9CO0FBQ3JDLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQLDZCQUE2QixzREFBRyxjQUFjLDJDQUEyQyxpREFBb0IsZUFBZSwrQ0FBa0IsMENBQTBDO0FBQ3hMO0FBQ0EsMkJBQTJCLHNEQUFHLGNBQWMsMkNBQTJDO0FBQ3ZGLEdBQUc7QUFDSCx5QkFBeUIsVUFBVTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDZDQUFnQjtBQUNwQyxVQUFVLHlCQUF5QjtBQUNuQztBQUNBO0FBQ0E7QUFDQSxRQUFRLGlEQUFvQjtBQUM1QjtBQUNBO0FBQ0EsNEJBQTRCLDJDQUFjO0FBQzFDLG9DQUFvQyx5RUFBVztBQUMvQztBQUNBLGFBQWEsK0NBQWtCO0FBQy9CO0FBQ0EsV0FBVywyQ0FBYyx1QkFBdUIsMkNBQWM7QUFDOUQsR0FBRztBQUNILDZCQUE2QixVQUFVO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsVUFBVTtBQUNsQywyQkFBMkIsc0RBQUcsQ0FBQyx1REFBUyxJQUFJLFVBQVU7QUFDdEQ7QUFDQSw4QkFBOEIsVUFBVTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxpREFBb0I7QUFDN0I7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ04sa0NBQWtDO0FBQ2xDLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9FO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEByYWRpeC11aVxccmVhY3Qtc2xvdFxcZGlzdFxcaW5kZXgubWpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9zbG90LnRzeFxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb21wb3NlUmVmcyB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBGcmFnbWVudDIsIGpzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpO1xudmFyIHVzZSA9IFJlYWN0W1wiIHVzZSBcIi50cmltKCkudG9TdHJpbmcoKV07XG5mdW5jdGlvbiBpc1Byb21pc2VMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgXCJ0aGVuXCIgaW4gdmFsdWU7XG59XG5mdW5jdGlvbiBpc0xhenlDb21wb25lbnQoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudCAhPSBudWxsICYmIHR5cGVvZiBlbGVtZW50ID09PSBcIm9iamVjdFwiICYmIFwiJCR0eXBlb2ZcIiBpbiBlbGVtZW50ICYmIGVsZW1lbnQuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSAmJiBcIl9wYXlsb2FkXCIgaW4gZWxlbWVudCAmJiBpc1Byb21pc2VMaWtlKGVsZW1lbnQuX3BheWxvYWQpO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmZ1bmN0aW9uIGNyZWF0ZVNsb3Qob3duZXJOYW1lKSB7XG4gIGNvbnN0IFNsb3RDbG9uZSA9IC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVTbG90Q2xvbmUob3duZXJOYW1lKTtcbiAgY29uc3QgU2xvdDIgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgbGV0IHsgY2hpbGRyZW4sIC4uLnNsb3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgaWYgKGlzTGF6eUNvbXBvbmVudChjaGlsZHJlbikgJiYgdHlwZW9mIHVzZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjaGlsZHJlbiA9IHVzZShjaGlsZHJlbi5fcGF5bG9hZCk7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcbiAgICBjb25zdCBzbG90dGFibGUgPSBjaGlsZHJlbkFycmF5LmZpbmQoaXNTbG90dGFibGUpO1xuICAgIGlmIChzbG90dGFibGUpIHtcbiAgICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBzbG90dGFibGUucHJvcHMuY2hpbGRyZW47XG4gICAgICBjb25zdCBuZXdDaGlsZHJlbiA9IGNoaWxkcmVuQXJyYXkubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQgPT09IHNsb3R0YWJsZSkge1xuICAgICAgICAgIGlmIChSZWFjdC5DaGlsZHJlbi5jb3VudChuZXdFbGVtZW50KSA+IDEpIHJldHVybiBSZWFjdC5DaGlsZHJlbi5vbmx5KG51bGwpO1xuICAgICAgICAgIHJldHVybiBSZWFjdC5pc1ZhbGlkRWxlbWVudChuZXdFbGVtZW50KSA/IG5ld0VsZW1lbnQucHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTbG90Q2xvbmUsIHsgLi4uc2xvdFByb3BzLCByZWY6IGZvcndhcmRlZFJlZiwgY2hpbGRyZW46IFJlYWN0LmlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gUmVhY3QuY2xvbmVFbGVtZW50KG5ld0VsZW1lbnQsIHZvaWQgMCwgbmV3Q2hpbGRyZW4pIDogbnVsbCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goU2xvdENsb25lLCB7IC4uLnNsb3RQcm9wcywgcmVmOiBmb3J3YXJkZWRSZWYsIGNoaWxkcmVuIH0pO1xuICB9KTtcbiAgU2xvdDIuZGlzcGxheU5hbWUgPSBgJHtvd25lck5hbWV9LlNsb3RgO1xuICByZXR1cm4gU2xvdDI7XG59XG52YXIgU2xvdCA9IC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVTbG90KFwiU2xvdFwiKTtcbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5mdW5jdGlvbiBjcmVhdGVTbG90Q2xvbmUob3duZXJOYW1lKSB7XG4gIGNvbnN0IFNsb3RDbG9uZSA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBsZXQgeyBjaGlsZHJlbiwgLi4uc2xvdFByb3BzIH0gPSBwcm9wcztcbiAgICBpZiAoaXNMYXp5Q29tcG9uZW50KGNoaWxkcmVuKSAmJiB0eXBlb2YgdXNlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGNoaWxkcmVuID0gdXNlKGNoaWxkcmVuLl9wYXlsb2FkKTtcbiAgICB9XG4gICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgICAgY29uc3QgY2hpbGRyZW5SZWYgPSBnZXRFbGVtZW50UmVmKGNoaWxkcmVuKTtcbiAgICAgIGNvbnN0IHByb3BzMiA9IG1lcmdlUHJvcHMoc2xvdFByb3BzLCBjaGlsZHJlbi5wcm9wcyk7XG4gICAgICBpZiAoY2hpbGRyZW4udHlwZSAhPT0gUmVhY3QuRnJhZ21lbnQpIHtcbiAgICAgICAgcHJvcHMyLnJlZiA9IGZvcndhcmRlZFJlZiA/IGNvbXBvc2VSZWZzKGZvcndhcmRlZFJlZiwgY2hpbGRyZW5SZWYpIDogY2hpbGRyZW5SZWY7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCBwcm9wczIpO1xuICAgIH1cbiAgICByZXR1cm4gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pID4gMSA/IFJlYWN0LkNoaWxkcmVuLm9ubHkobnVsbCkgOiBudWxsO1xuICB9KTtcbiAgU2xvdENsb25lLmRpc3BsYXlOYW1lID0gYCR7b3duZXJOYW1lfS5TbG90Q2xvbmVgO1xuICByZXR1cm4gU2xvdENsb25lO1xufVxudmFyIFNMT1RUQUJMRV9JREVOVElGSUVSID0gU3ltYm9sKFwicmFkaXguc2xvdHRhYmxlXCIpO1xuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmZ1bmN0aW9uIGNyZWF0ZVNsb3R0YWJsZShvd25lck5hbWUpIHtcbiAgY29uc3QgU2xvdHRhYmxlMiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChGcmFnbWVudDIsIHsgY2hpbGRyZW4gfSk7XG4gIH07XG4gIFNsb3R0YWJsZTIuZGlzcGxheU5hbWUgPSBgJHtvd25lck5hbWV9LlNsb3R0YWJsZWA7XG4gIFNsb3R0YWJsZTIuX19yYWRpeElkID0gU0xPVFRBQkxFX0lERU5USUZJRVI7XG4gIHJldHVybiBTbG90dGFibGUyO1xufVxudmFyIFNsb3R0YWJsZSA9IC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVTbG90dGFibGUoXCJTbG90dGFibGVcIik7XG5mdW5jdGlvbiBpc1Nsb3R0YWJsZShjaGlsZCkge1xuICByZXR1cm4gUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpICYmIHR5cGVvZiBjaGlsZC50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgXCJfX3JhZGl4SWRcIiBpbiBjaGlsZC50eXBlICYmIGNoaWxkLnR5cGUuX19yYWRpeElkID09PSBTTE9UVEFCTEVfSURFTlRJRklFUjtcbn1cbmZ1bmN0aW9uIG1lcmdlUHJvcHMoc2xvdFByb3BzLCBjaGlsZFByb3BzKSB7XG4gIGNvbnN0IG92ZXJyaWRlUHJvcHMgPSB7IC4uLmNoaWxkUHJvcHMgfTtcbiAgZm9yIChjb25zdCBwcm9wTmFtZSBpbiBjaGlsZFByb3BzKSB7XG4gICAgY29uc3Qgc2xvdFByb3BWYWx1ZSA9IHNsb3RQcm9wc1twcm9wTmFtZV07XG4gICAgY29uc3QgY2hpbGRQcm9wVmFsdWUgPSBjaGlsZFByb3BzW3Byb3BOYW1lXTtcbiAgICBjb25zdCBpc0hhbmRsZXIgPSAvXm9uW0EtWl0vLnRlc3QocHJvcE5hbWUpO1xuICAgIGlmIChpc0hhbmRsZXIpIHtcbiAgICAgIGlmIChzbG90UHJvcFZhbHVlICYmIGNoaWxkUHJvcFZhbHVlKSB7XG4gICAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBjaGlsZFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICBzbG90UHJvcFZhbHVlKC4uLmFyZ3MpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHNsb3RQcm9wVmFsdWUpIHtcbiAgICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBzbG90UHJvcFZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSB7IC4uLnNsb3RQcm9wVmFsdWUsIC4uLmNoaWxkUHJvcFZhbHVlIH07XG4gICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJjbGFzc05hbWVcIikge1xuICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBbc2xvdFByb3BWYWx1ZSwgY2hpbGRQcm9wVmFsdWVdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgLi4uc2xvdFByb3BzLCAuLi5vdmVycmlkZVByb3BzIH07XG59XG5mdW5jdGlvbiBnZXRFbGVtZW50UmVmKGVsZW1lbnQpIHtcbiAgbGV0IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZWxlbWVudC5wcm9wcywgXCJyZWZcIik/LmdldDtcbiAgbGV0IG1heVdhcm4gPSBnZXR0ZXIgJiYgXCJpc1JlYWN0V2FybmluZ1wiIGluIGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmc7XG4gIGlmIChtYXlXYXJuKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQucmVmO1xuICB9XG4gIGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZWxlbWVudCwgXCJyZWZcIik/LmdldDtcbiAgbWF5V2FybiA9IGdldHRlciAmJiBcImlzUmVhY3RXYXJuaW5nXCIgaW4gZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZztcbiAgaWYgKG1heVdhcm4pIHtcbiAgICByZXR1cm4gZWxlbWVudC5wcm9wcy5yZWY7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQucHJvcHMucmVmIHx8IGVsZW1lbnQucmVmO1xufVxuZXhwb3J0IHtcbiAgU2xvdCBhcyBSb290LFxuICBTbG90LFxuICBTbG90dGFibGUsXG4gIGNyZWF0ZVNsb3QsXG4gIGNyZWF0ZVNsb3R0YWJsZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-slot/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs ***!
|
||
\****************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("var react__WEBPACK_IMPORTED_MODULE_0___namespace_cache;\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useControllableState: () => (/* binding */ useControllableState),\n/* harmony export */ useControllableStateReducer: () => (/* binding */ useControllableStateReducer)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_effect_event__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-use-effect-event */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-effect-event/dist/index.mjs\");\n// src/use-controllable-state.tsx\n\n\nvar useInsertionEffect = /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))[\" useInsertionEffect \".trim().toString()] || _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(prop !== void 0);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = react__WEBPACK_IMPORTED_MODULE_0__.useState(defaultProp);\n const prevValueRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(value);\n const onChangeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\n\n\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = (0,_radix_ui_react_use_effect_event__WEBPACK_IMPORTED_MODULE_2__.useEffectEvent)(onChangeProp);\n if (true) {\n const isControlledRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(controlledState !== void 0);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = react__WEBPACK_IMPORTED_MODULE_0__.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(uncontrolledState);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZS9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUMrQjtBQUNxQztBQUNwRSx5QkFBeUIseUxBQUssOENBQThDLDhFQUFlO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSxJQUFJO0FBQ1YsNEJBQTRCLHlDQUFZO0FBQ3hDLElBQUksNENBQWU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUSxtQkFBbUIsTUFBTSxLQUFLLEdBQUc7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLDhDQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCw0QkFBNEIsMkNBQWM7QUFDMUMsdUJBQXVCLHlDQUFZO0FBQ25DLHNCQUFzQix5Q0FBWTtBQUNsQztBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUUsNENBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNnQztBQUNrQztBQUNsRTtBQUNBO0FBQ0EsVUFBVSxxRUFBcUU7QUFDL0U7QUFDQSxtQkFBbUIsZ0ZBQWM7QUFDakMsTUFBTSxJQUFJO0FBQ1YsNEJBQTRCLHlDQUFhO0FBQ3pDLElBQUksNENBQWdCO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVEsbUJBQW1CLE1BQU0sS0FBSyxHQUFHO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGtCQUFrQixtQ0FBbUM7QUFDckQ7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDZDQUFpQjtBQUNyRDtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIseUNBQWE7QUFDcEMsRUFBRSw0Q0FBZ0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGdCQUFnQiwwQ0FBYztBQUM5QjtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsRUFBRSw0Q0FBZ0I7QUFDbEI7QUFDQSxpQkFBaUIsMENBQTBDO0FBQzNEO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFJRTtBQUNGIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAcmFkaXgtdWlcXHJlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcXGRpc3RcXGluZGV4Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZS50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xudmFyIHVzZUluc2VydGlvbkVmZmVjdCA9IFJlYWN0W1wiIHVzZUluc2VydGlvbkVmZmVjdCBcIi50cmltKCkudG9TdHJpbmcoKV0gfHwgdXNlTGF5b3V0RWZmZWN0O1xuZnVuY3Rpb24gdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICBwcm9wLFxuICBkZWZhdWx0UHJvcCxcbiAgb25DaGFuZ2UgPSAoKSA9PiB7XG4gIH0sXG4gIGNhbGxlclxufSkge1xuICBjb25zdCBbdW5jb250cm9sbGVkUHJvcCwgc2V0VW5jb250cm9sbGVkUHJvcCwgb25DaGFuZ2VSZWZdID0gdXNlVW5jb250cm9sbGVkU3RhdGUoe1xuICAgIGRlZmF1bHRQcm9wLFxuICAgIG9uQ2hhbmdlXG4gIH0pO1xuICBjb25zdCBpc0NvbnRyb2xsZWQgPSBwcm9wICE9PSB2b2lkIDA7XG4gIGNvbnN0IHZhbHVlID0gaXNDb250cm9sbGVkID8gcHJvcCA6IHVuY29udHJvbGxlZFByb3A7XG4gIGlmICh0cnVlKSB7XG4gICAgY29uc3QgaXNDb250cm9sbGVkUmVmID0gUmVhY3QudXNlUmVmKHByb3AgIT09IHZvaWQgMCk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHdhc0NvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWRSZWYuY3VycmVudDtcbiAgICAgIGlmICh3YXNDb250cm9sbGVkICE9PSBpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgY29uc3QgZnJvbSA9IHdhc0NvbnRyb2xsZWQgPyBcImNvbnRyb2xsZWRcIiA6IFwidW5jb250cm9sbGVkXCI7XG4gICAgICAgIGNvbnN0IHRvID0gaXNDb250cm9sbGVkID8gXCJjb250cm9sbGVkXCIgOiBcInVuY29udHJvbGxlZFwiO1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYCR7Y2FsbGVyfSBpcyBjaGFuZ2luZyBmcm9tICR7ZnJvbX0gdG8gJHt0b30uIENvbXBvbmVudHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSBjb250cm9sbGVkIHRvIHVuY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgdmFsdWUgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29tcG9uZW50LmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlzQ29udHJvbGxlZFJlZi5jdXJyZW50ID0gaXNDb250cm9sbGVkO1xuICAgIH0sIFtpc0NvbnRyb2xsZWQsIGNhbGxlcl0pO1xuICB9XG4gIGNvbnN0IHNldFZhbHVlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKG5leHRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCkge1xuICAgICAgICBjb25zdCB2YWx1ZTIgPSBpc0Z1bmN0aW9uKG5leHRWYWx1ZSkgPyBuZXh0VmFsdWUocHJvcCkgOiBuZXh0VmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZTIgIT09IHByb3ApIHtcbiAgICAgICAgICBvbkNoYW5nZVJlZi5jdXJyZW50Py4odmFsdWUyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VW5jb250cm9sbGVkUHJvcChuZXh0VmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2lzQ29udHJvbGxlZCwgcHJvcCwgc2V0VW5jb250cm9sbGVkUHJvcCwgb25DaGFuZ2VSZWZdXG4gICk7XG4gIHJldHVybiBbdmFsdWUsIHNldFZhbHVlXTtcbn1cbmZ1bmN0aW9uIHVzZVVuY29udHJvbGxlZFN0YXRlKHtcbiAgZGVmYXVsdFByb3AsXG4gIG9uQ2hhbmdlXG59KSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoZGVmYXVsdFByb3ApO1xuICBjb25zdCBwcmV2VmFsdWVSZWYgPSBSZWFjdC51c2VSZWYodmFsdWUpO1xuICBjb25zdCBvbkNoYW5nZVJlZiA9IFJlYWN0LnVzZVJlZihvbkNoYW5nZSk7XG4gIHVzZUluc2VydGlvbkVmZmVjdCgoKSA9PiB7XG4gICAgb25DaGFuZ2VSZWYuY3VycmVudCA9IG9uQ2hhbmdlO1xuICB9LCBbb25DaGFuZ2VdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJldlZhbHVlUmVmLmN1cnJlbnQgIT09IHZhbHVlKSB7XG4gICAgICBvbkNoYW5nZVJlZi5jdXJyZW50Py4odmFsdWUpO1xuICAgICAgcHJldlZhbHVlUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gIH0sIFt2YWx1ZSwgcHJldlZhbHVlUmVmXSk7XG4gIHJldHVybiBbdmFsdWUsIHNldFZhbHVlLCBvbkNoYW5nZVJlZl07XG59XG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIjtcbn1cblxuLy8gc3JjL3VzZS1jb250cm9sbGFibGUtc3RhdGUtcmVkdWNlci50c3hcbmltcG9ydCAqIGFzIFJlYWN0MiBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdEV2ZW50IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtZWZmZWN0LWV2ZW50XCI7XG52YXIgU1lOQ19TVEFURSA9IFN5bWJvbChcIlJBRElYOlNZTkNfU1RBVEVcIik7XG5mdW5jdGlvbiB1c2VDb250cm9sbGFibGVTdGF0ZVJlZHVjZXIocmVkdWNlciwgdXNlckFyZ3MsIGluaXRpYWxBcmcsIGluaXQpIHtcbiAgY29uc3QgeyBwcm9wOiBjb250cm9sbGVkU3RhdGUsIGRlZmF1bHRQcm9wLCBvbkNoYW5nZTogb25DaGFuZ2VQcm9wLCBjYWxsZXIgfSA9IHVzZXJBcmdzO1xuICBjb25zdCBpc0NvbnRyb2xsZWQgPSBjb250cm9sbGVkU3RhdGUgIT09IHZvaWQgMDtcbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VFZmZlY3RFdmVudChvbkNoYW5nZVByb3ApO1xuICBpZiAodHJ1ZSkge1xuICAgIGNvbnN0IGlzQ29udHJvbGxlZFJlZiA9IFJlYWN0Mi51c2VSZWYoY29udHJvbGxlZFN0YXRlICE9PSB2b2lkIDApO1xuICAgIFJlYWN0Mi51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qgd2FzQ29udHJvbGxlZCA9IGlzQ29udHJvbGxlZFJlZi5jdXJyZW50O1xuICAgICAgaWYgKHdhc0NvbnRyb2xsZWQgIT09IGlzQ29udHJvbGxlZCkge1xuICAgICAgICBjb25zdCBmcm9tID0gd2FzQ29udHJvbGxlZCA/IFwiY29udHJvbGxlZFwiIDogXCJ1bmNvbnRyb2xsZWRcIjtcbiAgICAgICAgY29uc3QgdG8gPSBpc0NvbnRyb2xsZWQgPyBcImNvbnRyb2xsZWRcIiA6IFwidW5jb250cm9sbGVkXCI7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgJHtjYWxsZXJ9IGlzIGNoYW5naW5nIGZyb20gJHtmcm9tfSB0byAke3RvfS4gQ29tcG9uZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCB2YWx1ZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaXNDb250cm9sbGVkUmVmLmN1cnJlbnQgPSBpc0NvbnRyb2xsZWQ7XG4gICAgfSwgW2lzQ29udHJvbGxlZCwgY2FsbGVyXSk7XG4gIH1cbiAgY29uc3QgYXJncyA9IFt7IC4uLmluaXRpYWxBcmcsIHN0YXRlOiBkZWZhdWx0UHJvcCB9XTtcbiAgaWYgKGluaXQpIHtcbiAgICBhcmdzLnB1c2goaW5pdCk7XG4gIH1cbiAgY29uc3QgW2ludGVybmFsU3RhdGUsIGRpc3BhdGNoXSA9IFJlYWN0Mi51c2VSZWR1Y2VyKFxuICAgIChzdGF0ZTIsIGFjdGlvbikgPT4ge1xuICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBTWU5DX1NUQVRFKSB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlMiwgc3RhdGU6IGFjdGlvbi5zdGF0ZSB9O1xuICAgICAgfVxuICAgICAgY29uc3QgbmV4dCA9IHJlZHVjZXIoc3RhdGUyLCBhY3Rpb24pO1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCAmJiAhT2JqZWN0LmlzKG5leHQuc3RhdGUsIHN0YXRlMi5zdGF0ZSkpIHtcbiAgICAgICAgb25DaGFuZ2UobmV4dC5zdGF0ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9LFxuICAgIC4uLmFyZ3NcbiAgKTtcbiAgY29uc3QgdW5jb250cm9sbGVkU3RhdGUgPSBpbnRlcm5hbFN0YXRlLnN0YXRlO1xuICBjb25zdCBwcmV2VmFsdWVSZWYgPSBSZWFjdDIudXNlUmVmKHVuY29udHJvbGxlZFN0YXRlKTtcbiAgUmVhY3QyLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByZXZWYWx1ZVJlZi5jdXJyZW50ICE9PSB1bmNvbnRyb2xsZWRTdGF0ZSkge1xuICAgICAgcHJldlZhbHVlUmVmLmN1cnJlbnQgPSB1bmNvbnRyb2xsZWRTdGF0ZTtcbiAgICAgIGlmICghaXNDb250cm9sbGVkKSB7XG4gICAgICAgIG9uQ2hhbmdlKHVuY29udHJvbGxlZFN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtvbkNoYW5nZSwgdW5jb250cm9sbGVkU3RhdGUsIHByZXZWYWx1ZVJlZiwgaXNDb250cm9sbGVkXSk7XG4gIGNvbnN0IHN0YXRlID0gUmVhY3QyLnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGlzQ29udHJvbGxlZDIgPSBjb250cm9sbGVkU3RhdGUgIT09IHZvaWQgMDtcbiAgICBpZiAoaXNDb250cm9sbGVkMikge1xuICAgICAgcmV0dXJuIHsgLi4uaW50ZXJuYWxTdGF0ZSwgc3RhdGU6IGNvbnRyb2xsZWRTdGF0ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gaW50ZXJuYWxTdGF0ZTtcbiAgfSwgW2ludGVybmFsU3RhdGUsIGNvbnRyb2xsZWRTdGF0ZV0pO1xuICBSZWFjdDIudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNDb250cm9sbGVkICYmICFPYmplY3QuaXMoY29udHJvbGxlZFN0YXRlLCBpbnRlcm5hbFN0YXRlLnN0YXRlKSkge1xuICAgICAgZGlzcGF0Y2goeyB0eXBlOiBTWU5DX1NUQVRFLCBzdGF0ZTogY29udHJvbGxlZFN0YXRlIH0pO1xuICAgIH1cbiAgfSwgW2NvbnRyb2xsZWRTdGF0ZSwgaW50ZXJuYWxTdGF0ZS5zdGF0ZSwgaXNDb250cm9sbGVkXSk7XG4gIHJldHVybiBbc3RhdGUsIGRpc3BhdGNoXTtcbn1cbmV4cG9ydCB7XG4gIHVzZUNvbnRyb2xsYWJsZVN0YXRlLFxuICB1c2VDb250cm9sbGFibGVTdGF0ZVJlZHVjZXJcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-use-effect-event/dist/index.mjs":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-use-effect-event/dist/index.mjs ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("var react__WEBPACK_IMPORTED_MODULE_0___namespace_cache;\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useEffectEvent: () => (/* binding */ useEffectEvent)\n/* harmony export */ });\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n// src/use-effect-event.tsx\n\n\nvar useReactEffectEvent = /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))[\" useEffectEvent \".trim().toString()];\nvar useReactInsertionEffect = /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))[\" useInsertionEffect \".trim().toString()];\nfunction useEffectEvent(callback) {\n if (typeof useReactEffectEvent === \"function\") {\n return useReactEffectEvent(callback);\n }\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(() => {\n throw new Error(\"Cannot call an event handler while rendering.\");\n });\n if (typeof useReactInsertionEffect === \"function\") {\n useReactInsertionEffect(() => {\n ref.current = callback;\n });\n } else {\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {\n ref.current = callback;\n });\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => (...args) => ref.current?.(...args), []);\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLWVmZmVjdC1ldmVudC9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDb0U7QUFDckM7QUFDL0IsMEJBQTBCLHlMQUFLO0FBQy9CLDhCQUE4Qix5TEFBSztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMseUNBQVk7QUFDMUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSixJQUFJLGtGQUFlO0FBQ25CO0FBQ0EsS0FBSztBQUNMO0FBQ0EsU0FBUywwQ0FBYTtBQUN0QjtBQUdFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEByYWRpeC11aVxccmVhY3QtdXNlLWVmZmVjdC1ldmVudFxcZGlzdFxcaW5kZXgubWpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy91c2UtZWZmZWN0LWV2ZW50LnRzeFxuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG52YXIgdXNlUmVhY3RFZmZlY3RFdmVudCA9IFJlYWN0W1wiIHVzZUVmZmVjdEV2ZW50IFwiLnRyaW0oKS50b1N0cmluZygpXTtcbnZhciB1c2VSZWFjdEluc2VydGlvbkVmZmVjdCA9IFJlYWN0W1wiIHVzZUluc2VydGlvbkVmZmVjdCBcIi50cmltKCkudG9TdHJpbmcoKV07XG5mdW5jdGlvbiB1c2VFZmZlY3RFdmVudChjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIHVzZVJlYWN0RWZmZWN0RXZlbnQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiB1c2VSZWFjdEVmZmVjdEV2ZW50KGNhbGxiYWNrKTtcbiAgfVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYoKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjYWxsIGFuIGV2ZW50IGhhbmRsZXIgd2hpbGUgcmVuZGVyaW5nLlwiKTtcbiAgfSk7XG4gIGlmICh0eXBlb2YgdXNlUmVhY3RJbnNlcnRpb25FZmZlY3QgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHVzZVJlYWN0SW5zZXJ0aW9uRWZmZWN0KCgpID0+IHtcbiAgICAgIHJlZi5jdXJyZW50ID0gY2FsbGJhY2s7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgIHJlZi5jdXJyZW50ID0gY2FsbGJhY2s7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gKC4uLmFyZ3MpID0+IHJlZi5jdXJyZW50Py4oLi4uYXJncyksIFtdKTtcbn1cbmV4cG9ydCB7XG4gIHVzZUVmZmVjdEV2ZW50XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-use-effect-event/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useLayoutEffect: () => (/* binding */ useLayoutEffect2)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n// packages/react/use-layout-effect/src/use-layout-effect.tsx\n\nvar useLayoutEffect2 = globalThis?.document ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : () => {\n};\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3QvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUMrQjtBQUMvQiw4Q0FBOEMsa0RBQXFCO0FBQ25FO0FBR0U7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHJhZGl4LXVpXFxyZWFjdC11c2UtbGF5b3V0LWVmZmVjdFxcZGlzdFxcaW5kZXgubWpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHBhY2thZ2VzL3JlYWN0L3VzZS1sYXlvdXQtZWZmZWN0L3NyYy91c2UtbGF5b3V0LWVmZmVjdC50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xudmFyIHVzZUxheW91dEVmZmVjdDIgPSBnbG9iYWxUaGlzPy5kb2N1bWVudCA/IFJlYWN0LnVzZUxheW91dEVmZmVjdCA6ICgpID0+IHtcbn07XG5leHBvcnQge1xuICB1c2VMYXlvdXRFZmZlY3QyIGFzIHVzZUxheW91dEVmZmVjdFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-use-previous/dist/index.mjs":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-use-previous/dist/index.mjs ***!
|
||
\******************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ usePrevious: () => (/* binding */ usePrevious)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n// packages/react/use-previous/src/use-previous.tsx\n\nfunction usePrevious(value) {\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef({ value, previous: value });\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDK0I7QUFDL0I7QUFDQSxjQUFjLHlDQUFZLEdBQUcsd0JBQXdCO0FBQ3JELFNBQVMsMENBQWE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUdFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEByYWRpeC11aVxccmVhY3QtdXNlLXByZXZpb3VzXFxkaXN0XFxpbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3QvdXNlLXByZXZpb3VzL3NyYy91c2UtcHJldmlvdXMudHN4XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmZ1bmN0aW9uIHVzZVByZXZpb3VzKHZhbHVlKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZih7IHZhbHVlLCBwcmV2aW91czogdmFsdWUgfSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICByZWYuY3VycmVudC5wcmV2aW91cyA9IHJlZi5jdXJyZW50LnZhbHVlO1xuICAgICAgcmVmLmN1cnJlbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50LnByZXZpb3VzO1xuICB9LCBbdmFsdWVdKTtcbn1cbmV4cG9ydCB7XG4gIHVzZVByZXZpb3VzXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-use-previous/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@radix-ui/react-use-size/dist/index.mjs":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/@radix-ui/react-use-size/dist/index.mjs ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useSize: () => (/* binding */ useSize)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(app-pages-browser)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n// packages/react/use-size/src/use-size.tsx\n\n\nfunction useSize(element) {\n const [size, setSize] = react__WEBPACK_IMPORTED_MODULE_0__.useState(void 0);\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLXNpemUvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDK0I7QUFDcUM7QUFDcEU7QUFDQSwwQkFBMEIsMkNBQWM7QUFDeEMsRUFBRSxrRkFBZTtBQUNqQjtBQUNBLGdCQUFnQiwwREFBMEQ7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixlQUFlO0FBQ2pDLE9BQU87QUFDUCx3Q0FBd0MsbUJBQW1CO0FBQzNEO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUdFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEByYWRpeC11aVxccmVhY3QtdXNlLXNpemVcXGRpc3RcXGluZGV4Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwYWNrYWdlcy9yZWFjdC91c2Utc2l6ZS9zcmMvdXNlLXNpemUudHN4XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcbmZ1bmN0aW9uIHVzZVNpemUoZWxlbWVudCkge1xuICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSBSZWFjdC51c2VTdGF0ZSh2b2lkIDApO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBzZXRTaXplKHsgd2lkdGg6IGVsZW1lbnQub2Zmc2V0V2lkdGgsIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHQgfSk7XG4gICAgICBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZW50cmllcykpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICAgIGxldCB3aWR0aDtcbiAgICAgICAgbGV0IGhlaWdodDtcbiAgICAgICAgaWYgKFwiYm9yZGVyQm94U2l6ZVwiIGluIGVudHJ5KSB7XG4gICAgICAgICAgY29uc3QgYm9yZGVyU2l6ZUVudHJ5ID0gZW50cnlbXCJib3JkZXJCb3hTaXplXCJdO1xuICAgICAgICAgIGNvbnN0IGJvcmRlclNpemUgPSBBcnJheS5pc0FycmF5KGJvcmRlclNpemVFbnRyeSkgPyBib3JkZXJTaXplRW50cnlbMF0gOiBib3JkZXJTaXplRW50cnk7XG4gICAgICAgICAgd2lkdGggPSBib3JkZXJTaXplW1wiaW5saW5lU2l6ZVwiXTtcbiAgICAgICAgICBoZWlnaHQgPSBib3JkZXJTaXplW1wiYmxvY2tTaXplXCJdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBzZXRTaXplKHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgICAgIH0pO1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCB7IGJveDogXCJib3JkZXItYm94XCIgfSk7XG4gICAgICByZXR1cm4gKCkgPT4gcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTaXplKHZvaWQgMCk7XG4gICAgfVxuICB9LCBbZWxlbWVudF0pO1xuICByZXR1cm4gc2l6ZTtcbn1cbmV4cG9ydCB7XG4gIHVzZVNpemVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@radix-ui/react-use-size/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_check_private_redeclaration.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/@swc/helpers/esm/_check_private_redeclaration.js ***!
|
||
\***********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _check_private_redeclaration)\n/* harmony export */ });\nfunction _check_private_redeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb24uanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDNkMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEBzd2NcXGhlbHBlcnNcXGVzbVxcX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfY2hlY2tfcHJpdmF0ZV9yZWRlY2xhcmF0aW9uKG9iaiwgcHJpdmF0ZUNvbGxlY3Rpb24pIHtcbiAgICBpZiAocHJpdmF0ZUNvbGxlY3Rpb24uaGFzKG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0XCIpO1xuICAgIH1cbn1cbmV4cG9ydCB7IF9jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb24gYXMgXyB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_check_private_redeclaration.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_apply_descriptor_get)\n/* harmony export */ });\nfunction _class_apply_descriptor_get(receiver, descriptor) {\n if (descriptor.get) return descriptor.get.call(receiver);\n\n return descriptor.value;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQzRDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAc3djXFxoZWxwZXJzXFxlc21cXF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9nZXQocmVjZWl2ZXIsIGRlc2NyaXB0b3IpIHtcbiAgICBpZiAoZGVzY3JpcHRvci5nZXQpIHJldHVybiBkZXNjcmlwdG9yLmdldC5jYWxsKHJlY2VpdmVyKTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yLnZhbHVlO1xufVxuZXhwb3J0IHsgX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0IGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_apply_descriptor_set)\n/* harmony export */ });\nfunction _class_apply_descriptor_set(receiver, descriptor, value) {\n if (descriptor.set) descriptor.set.call(receiver, value);\n else {\n if (!descriptor.writable) {\n // This should only throw in strict mode, but class bodies are\n // always strict and private fields can only be used inside\n // class bodies.\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19hcHBseV9kZXNjcmlwdG9yX3NldC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAc3djXFxoZWxwZXJzXFxlc21cXF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX3NldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9zZXQocmVjZWl2ZXIsIGRlc2NyaXB0b3IsIHZhbHVlKSB7XG4gICAgaWYgKGRlc2NyaXB0b3Iuc2V0KSBkZXNjcmlwdG9yLnNldC5jYWxsKHJlY2VpdmVyLCB2YWx1ZSk7XG4gICAgZWxzZSB7XG4gICAgICAgIGlmICghZGVzY3JpcHRvci53cml0YWJsZSkge1xuICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSB0aHJvdyBpbiBzdHJpY3QgbW9kZSwgYnV0IGNsYXNzIGJvZGllcyBhcmVcbiAgICAgICAgICAgIC8vIGFsd2F5cyBzdHJpY3QgYW5kIHByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlXG4gICAgICAgICAgICAvLyBjbGFzcyBib2RpZXMuXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gdmFsdWU7XG4gICAgfVxufVxuZXhwb3J0IHsgX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0IGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_extract_field_descriptor)\n/* harmony export */ });\nfunction _class_extract_field_descriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n\n return privateMap.get(receiver);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3IuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNnRCIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHN3Y1xcaGVscGVyc1xcZXNtXFxfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3IocmVjZWl2ZXIsIHByaXZhdGVNYXAsIGFjdGlvbikge1xuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIFwiICsgYWN0aW9uICsgXCIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XG5cbiAgICByZXR1cm4gcHJpdmF0ZU1hcC5nZXQocmVjZWl2ZXIpO1xufVxuZXhwb3J0IHsgX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvciBhcyBfIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_get.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/@swc/helpers/esm/_class_private_field_get.js ***!
|
||
\*******************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_get)\n/* harmony export */ });\n/* harmony import */ var _class_apply_descriptor_get_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_class_apply_descriptor_get.js */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js\");\n/* harmony import */ var _class_extract_field_descriptor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_class_extract_field_descriptor.js */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js\");\n\n\n\nfunction _class_private_field_get(receiver, privateMap) {\n var descriptor = (0,_class_extract_field_descriptor_js__WEBPACK_IMPORTED_MODULE_0__._)(receiver, privateMap, \"get\");\n return (0,_class_apply_descriptor_get_js__WEBPACK_IMPORTED_MODULE_1__._)(receiver, descriptor);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX2dldC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBb0Y7QUFDUTs7QUFFNUY7QUFDQSxxQkFBcUIscUVBQStCO0FBQ3BELFdBQVcsaUVBQTJCO0FBQ3RDO0FBQ3lDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAc3djXFxoZWxwZXJzXFxlc21cXF9jbGFzc19wcml2YXRlX2ZpZWxkX2dldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfIGFzIF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldCB9IGZyb20gXCIuL19jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldC5qc1wiO1xuaW1wb3J0IHsgXyBhcyBfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yIH0gZnJvbSBcIi4vX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvci5qc1wiO1xuXG5mdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXQocmVjZWl2ZXIsIHByaXZhdGVNYXApIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IF9jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3IocmVjZWl2ZXIsIHByaXZhdGVNYXAsIFwiZ2V0XCIpO1xuICAgIHJldHVybiBfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9nZXQocmVjZWl2ZXIsIGRlc2NyaXB0b3IpO1xufVxuZXhwb3J0IHsgX2NsYXNzX3ByaXZhdGVfZmllbGRfZ2V0IGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_get.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_init.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/@swc/helpers/esm/_class_private_field_init.js ***!
|
||
\********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_init)\n/* harmony export */ });\n/* harmony import */ var _check_private_redeclaration_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_check_private_redeclaration.js */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_check_private_redeclaration.js\");\n\n\nfunction _class_private_field_init(obj, privateMap, value) {\n (0,_check_private_redeclaration_js__WEBPACK_IMPORTED_MODULE_0__._)(obj, privateMap);\n privateMap.set(obj, value);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX2luaXQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBc0Y7O0FBRXRGO0FBQ0EsSUFBSSxrRUFBNEI7QUFDaEM7QUFDQTtBQUMwQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHN3Y1xcaGVscGVyc1xcZXNtXFxfY2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF8gYXMgX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbiB9IGZyb20gXCIuL19jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb24uanNcIjtcblxuZnVuY3Rpb24gX2NsYXNzX3ByaXZhdGVfZmllbGRfaW5pdChvYmosIHByaXZhdGVNYXAsIHZhbHVlKSB7XG4gICAgX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbihvYmosIHByaXZhdGVNYXApO1xuICAgIHByaXZhdGVNYXAuc2V0KG9iaiwgdmFsdWUpO1xufVxuZXhwb3J0IHsgX2NsYXNzX3ByaXZhdGVfZmllbGRfaW5pdCBhcyBfIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_init.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_set.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/@swc/helpers/esm/_class_private_field_set.js ***!
|
||
\*******************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_set)\n/* harmony export */ });\n/* harmony import */ var _class_apply_descriptor_set_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_class_apply_descriptor_set.js */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js\");\n/* harmony import */ var _class_extract_field_descriptor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_class_extract_field_descriptor.js */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js\");\n\n\n\nfunction _class_private_field_set(receiver, privateMap, value) {\n var descriptor = (0,_class_extract_field_descriptor_js__WEBPACK_IMPORTED_MODULE_0__._)(receiver, privateMap, \"set\");\n (0,_class_apply_descriptor_set_js__WEBPACK_IMPORTED_MODULE_1__._)(receiver, descriptor, value);\n return value;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX3NldC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBb0Y7QUFDUTs7QUFFNUY7QUFDQSxxQkFBcUIscUVBQStCO0FBQ3BELElBQUksaUVBQTJCO0FBQy9CO0FBQ0E7QUFDeUMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEBzd2NcXGhlbHBlcnNcXGVzbVxcX2NsYXNzX3ByaXZhdGVfZmllbGRfc2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF8gYXMgX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0IH0gZnJvbSBcIi4vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0LmpzXCI7XG5pbXBvcnQgeyBfIGFzIF9jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3IgfSBmcm9tIFwiLi9fY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yLmpzXCI7XG5cbmZ1bmN0aW9uIF9jbGFzc19wcml2YXRlX2ZpZWxkX3NldChyZWNlaXZlciwgcHJpdmF0ZU1hcCwgdmFsdWUpIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IF9jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3IocmVjZWl2ZXIsIHByaXZhdGVNYXAsIFwic2V0XCIpO1xuICAgIF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX3NldChyZWNlaXZlciwgZGVzY3JpcHRvciwgdmFsdWUpO1xuICAgIHJldHVybiB2YWx1ZTtcbn1cbmV4cG9ydCB7IF9jbGFzc19wcml2YXRlX2ZpZWxkX3NldCBhcyBfIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_set.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/@tiptap/core/dist/index.js ***!
|
||
\*************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CommandManager: () => (/* binding */ CommandManager),\n/* harmony export */ Editor: () => (/* binding */ Editor),\n/* harmony export */ Extendable: () => (/* binding */ Extendable),\n/* harmony export */ Extension: () => (/* binding */ Extension),\n/* harmony export */ Fragment: () => (/* binding */ Fragment6),\n/* harmony export */ InputRule: () => (/* binding */ InputRule),\n/* harmony export */ MappablePosition: () => (/* binding */ MappablePosition),\n/* harmony export */ Mark: () => (/* binding */ Mark),\n/* harmony export */ MarkView: () => (/* binding */ MarkView),\n/* harmony export */ Node: () => (/* binding */ Node3),\n/* harmony export */ NodePos: () => (/* binding */ NodePos),\n/* harmony export */ NodeView: () => (/* binding */ NodeView),\n/* harmony export */ PasteRule: () => (/* binding */ PasteRule),\n/* harmony export */ ResizableNodeView: () => (/* binding */ ResizableNodeView),\n/* harmony export */ ResizableNodeview: () => (/* binding */ ResizableNodeview),\n/* harmony export */ Tracker: () => (/* binding */ Tracker),\n/* harmony export */ callOrReturn: () => (/* binding */ callOrReturn),\n/* harmony export */ canInsertNode: () => (/* binding */ canInsertNode),\n/* harmony export */ combineTransactionSteps: () => (/* binding */ combineTransactionSteps),\n/* harmony export */ commands: () => (/* binding */ commands_exports),\n/* harmony export */ createAtomBlockMarkdownSpec: () => (/* binding */ createAtomBlockMarkdownSpec),\n/* harmony export */ createBlockMarkdownSpec: () => (/* binding */ createBlockMarkdownSpec),\n/* harmony export */ createChainableState: () => (/* binding */ createChainableState),\n/* harmony export */ createDocument: () => (/* binding */ createDocument),\n/* harmony export */ createElement: () => (/* binding */ h),\n/* harmony export */ createInlineMarkdownSpec: () => (/* binding */ createInlineMarkdownSpec),\n/* harmony export */ createMappablePosition: () => (/* binding */ createMappablePosition),\n/* harmony export */ createNodeFromContent: () => (/* binding */ createNodeFromContent),\n/* harmony export */ createStyleTag: () => (/* binding */ createStyleTag),\n/* harmony export */ defaultBlockAt: () => (/* binding */ defaultBlockAt),\n/* harmony export */ deleteProps: () => (/* binding */ deleteProps),\n/* harmony export */ elementFromString: () => (/* binding */ elementFromString),\n/* harmony export */ escapeForRegEx: () => (/* binding */ escapeForRegEx),\n/* harmony export */ extensions: () => (/* binding */ extensions_exports),\n/* harmony export */ findChildren: () => (/* binding */ findChildren),\n/* harmony export */ findChildrenInRange: () => (/* binding */ findChildrenInRange),\n/* harmony export */ findDuplicates: () => (/* binding */ findDuplicates),\n/* harmony export */ findParentNode: () => (/* binding */ findParentNode),\n/* harmony export */ findParentNodeClosestToPos: () => (/* binding */ findParentNodeClosestToPos),\n/* harmony export */ flattenExtensions: () => (/* binding */ flattenExtensions),\n/* harmony export */ fromString: () => (/* binding */ fromString),\n/* harmony export */ generateHTML: () => (/* binding */ generateHTML),\n/* harmony export */ generateJSON: () => (/* binding */ generateJSON),\n/* harmony export */ generateText: () => (/* binding */ generateText),\n/* harmony export */ getAttributes: () => (/* binding */ getAttributes),\n/* harmony export */ getAttributesFromExtensions: () => (/* binding */ getAttributesFromExtensions),\n/* harmony export */ getChangedRanges: () => (/* binding */ getChangedRanges),\n/* harmony export */ getDebugJSON: () => (/* binding */ getDebugJSON),\n/* harmony export */ getExtensionField: () => (/* binding */ getExtensionField),\n/* harmony export */ getHTMLFromFragment: () => (/* binding */ getHTMLFromFragment),\n/* harmony export */ getMarkAttributes: () => (/* binding */ getMarkAttributes),\n/* harmony export */ getMarkRange: () => (/* binding */ getMarkRange),\n/* harmony export */ getMarkType: () => (/* binding */ getMarkType),\n/* harmony export */ getMarksBetween: () => (/* binding */ getMarksBetween),\n/* harmony export */ getNodeAtPosition: () => (/* binding */ getNodeAtPosition),\n/* harmony export */ getNodeAttributes: () => (/* binding */ getNodeAttributes),\n/* harmony export */ getNodeType: () => (/* binding */ getNodeType),\n/* harmony export */ getRenderedAttributes: () => (/* binding */ getRenderedAttributes),\n/* harmony export */ getSchema: () => (/* binding */ getSchema),\n/* harmony export */ getSchemaByResolvedExtensions: () => (/* binding */ getSchemaByResolvedExtensions),\n/* harmony export */ getSchemaTypeByName: () => (/* binding */ getSchemaTypeByName),\n/* harmony export */ getSchemaTypeNameByName: () => (/* binding */ getSchemaTypeNameByName),\n/* harmony export */ getSplittedAttributes: () => (/* binding */ getSplittedAttributes),\n/* harmony export */ getText: () => (/* binding */ getText),\n/* harmony export */ getTextBetween: () => (/* binding */ getTextBetween),\n/* harmony export */ getTextContentFromNodes: () => (/* binding */ getTextContentFromNodes),\n/* harmony export */ getTextSerializersFromSchema: () => (/* binding */ getTextSerializersFromSchema),\n/* harmony export */ getUpdatedPosition: () => (/* binding */ getUpdatedPosition),\n/* harmony export */ h: () => (/* binding */ h),\n/* harmony export */ injectExtensionAttributesToParseRule: () => (/* binding */ injectExtensionAttributesToParseRule),\n/* harmony export */ inputRulesPlugin: () => (/* binding */ inputRulesPlugin),\n/* harmony export */ isActive: () => (/* binding */ isActive),\n/* harmony export */ isAndroid: () => (/* binding */ isAndroid),\n/* harmony export */ isAtEndOfNode: () => (/* binding */ isAtEndOfNode),\n/* harmony export */ isAtStartOfNode: () => (/* binding */ isAtStartOfNode),\n/* harmony export */ isEmptyObject: () => (/* binding */ isEmptyObject),\n/* harmony export */ isExtensionRulesEnabled: () => (/* binding */ isExtensionRulesEnabled),\n/* harmony export */ isFirefox: () => (/* binding */ isFirefox),\n/* harmony export */ isFunction: () => (/* binding */ isFunction),\n/* harmony export */ isList: () => (/* binding */ isList),\n/* harmony export */ isMacOS: () => (/* binding */ isMacOS),\n/* harmony export */ isMarkActive: () => (/* binding */ isMarkActive),\n/* harmony export */ isNodeActive: () => (/* binding */ isNodeActive),\n/* harmony export */ isNodeEmpty: () => (/* binding */ isNodeEmpty),\n/* harmony export */ isNodeSelection: () => (/* binding */ isNodeSelection),\n/* harmony export */ isNumber: () => (/* binding */ isNumber),\n/* harmony export */ isPlainObject: () => (/* binding */ isPlainObject),\n/* harmony export */ isRegExp: () => (/* binding */ isRegExp),\n/* harmony export */ isSafari: () => (/* binding */ isSafari),\n/* harmony export */ isString: () => (/* binding */ isString),\n/* harmony export */ isTextSelection: () => (/* binding */ isTextSelection),\n/* harmony export */ isiOS: () => (/* binding */ isiOS),\n/* harmony export */ markInputRule: () => (/* binding */ markInputRule),\n/* harmony export */ markPasteRule: () => (/* binding */ markPasteRule),\n/* harmony export */ markdown: () => (/* binding */ markdown_exports),\n/* harmony export */ mergeAttributes: () => (/* binding */ mergeAttributes),\n/* harmony export */ mergeDeep: () => (/* binding */ mergeDeep),\n/* harmony export */ minMax: () => (/* binding */ minMax),\n/* harmony export */ nodeInputRule: () => (/* binding */ nodeInputRule),\n/* harmony export */ nodePasteRule: () => (/* binding */ nodePasteRule),\n/* harmony export */ objectIncludes: () => (/* binding */ objectIncludes),\n/* harmony export */ parseAttributes: () => (/* binding */ parseAttributes),\n/* harmony export */ parseIndentedBlocks: () => (/* binding */ parseIndentedBlocks),\n/* harmony export */ pasteRulesPlugin: () => (/* binding */ pasteRulesPlugin),\n/* harmony export */ posToDOMRect: () => (/* binding */ posToDOMRect),\n/* harmony export */ removeDuplicates: () => (/* binding */ removeDuplicates),\n/* harmony export */ renderNestedMarkdownContent: () => (/* binding */ renderNestedMarkdownContent),\n/* harmony export */ resolveExtensions: () => (/* binding */ resolveExtensions),\n/* harmony export */ resolveFocusPosition: () => (/* binding */ resolveFocusPosition),\n/* harmony export */ rewriteUnknownContent: () => (/* binding */ rewriteUnknownContent),\n/* harmony export */ selectionToInsertionEnd: () => (/* binding */ selectionToInsertionEnd),\n/* harmony export */ serializeAttributes: () => (/* binding */ serializeAttributes),\n/* harmony export */ sortExtensions: () => (/* binding */ sortExtensions),\n/* harmony export */ splitExtensions: () => (/* binding */ splitExtensions),\n/* harmony export */ textInputRule: () => (/* binding */ textInputRule),\n/* harmony export */ textPasteRule: () => (/* binding */ textPasteRule),\n/* harmony export */ textblockTypeInputRule: () => (/* binding */ textblockTypeInputRule),\n/* harmony export */ updateMarkViewAttributes: () => (/* binding */ updateMarkViewAttributes),\n/* harmony export */ wrappingInputRule: () => (/* binding */ wrappingInputRule)\n/* harmony export */ });\n/* harmony import */ var _tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/pm/transform */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/transform/index.js\");\n/* harmony import */ var _tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tiptap/pm/commands */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/commands/index.js\");\n/* harmony import */ var _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tiptap/pm/state */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/state/index.js\");\n/* harmony import */ var _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tiptap/pm/model */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/model/index.js\");\n/* harmony import */ var _tiptap_pm_schema_list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tiptap/pm/schema-list */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/schema-list/index.js\");\n/* harmony import */ var _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tiptap/pm/view */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/view/index.js\");\n/* harmony import */ var _tiptap_pm_keymap__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @tiptap/pm/keymap */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/keymap/index.js\");\nvar __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/helpers/createChainableState.ts\nfunction createChainableState(config) {\n const { state, transaction } = config;\n let { selection } = transaction;\n let { doc } = transaction;\n let { storedMarks } = transaction;\n return {\n ...state,\n apply: state.apply.bind(state),\n applyTransaction: state.applyTransaction.bind(state),\n plugins: state.plugins,\n schema: state.schema,\n reconfigure: state.reconfigure.bind(state),\n toJSON: state.toJSON.bind(state),\n get storedMarks() {\n return storedMarks;\n },\n get selection() {\n return selection;\n },\n get doc() {\n return doc;\n },\n get tr() {\n selection = transaction.selection;\n doc = transaction.doc;\n storedMarks = transaction.storedMarks;\n return transaction;\n }\n };\n}\n\n// src/CommandManager.ts\nvar CommandManager = class {\n constructor(props) {\n this.editor = props.editor;\n this.rawCommands = this.editor.extensionManager.commands;\n this.customState = props.state;\n }\n get hasCustomState() {\n return !!this.customState;\n }\n get state() {\n return this.customState || this.editor.state;\n }\n get commands() {\n const { rawCommands, editor, state } = this;\n const { view } = editor;\n const { tr } = state;\n const props = this.buildProps(tr);\n return Object.fromEntries(\n Object.entries(rawCommands).map(([name, command2]) => {\n const method = (...args) => {\n const callback = command2(...args)(props);\n if (!tr.getMeta(\"preventDispatch\") && !this.hasCustomState) {\n view.dispatch(tr);\n }\n return callback;\n };\n return [name, method];\n })\n );\n }\n get chain() {\n return () => this.createChain();\n }\n get can() {\n return () => this.createCan();\n }\n createChain(startTr, shouldDispatch = true) {\n const { rawCommands, editor, state } = this;\n const { view } = editor;\n const callbacks = [];\n const hasStartTransaction = !!startTr;\n const tr = startTr || state.tr;\n const run3 = () => {\n if (!hasStartTransaction && shouldDispatch && !tr.getMeta(\"preventDispatch\") && !this.hasCustomState) {\n view.dispatch(tr);\n }\n return callbacks.every((callback) => callback === true);\n };\n const chain = {\n ...Object.fromEntries(\n Object.entries(rawCommands).map(([name, command2]) => {\n const chainedCommand = (...args) => {\n const props = this.buildProps(tr, shouldDispatch);\n const callback = command2(...args)(props);\n callbacks.push(callback);\n return chain;\n };\n return [name, chainedCommand];\n })\n ),\n run: run3\n };\n return chain;\n }\n createCan(startTr) {\n const { rawCommands, state } = this;\n const dispatch = false;\n const tr = startTr || state.tr;\n const props = this.buildProps(tr, dispatch);\n const formattedCommands = Object.fromEntries(\n Object.entries(rawCommands).map(([name, command2]) => {\n return [name, (...args) => command2(...args)({ ...props, dispatch: void 0 })];\n })\n );\n return {\n ...formattedCommands,\n chain: () => this.createChain(tr, dispatch)\n };\n }\n buildProps(tr, shouldDispatch = true) {\n const { rawCommands, editor, state } = this;\n const { view } = editor;\n const props = {\n tr,\n editor,\n view,\n state: createChainableState({\n state,\n transaction: tr\n }),\n dispatch: shouldDispatch ? () => void 0 : void 0,\n chain: () => this.createChain(tr, shouldDispatch),\n can: () => this.createCan(tr),\n get commands() {\n return Object.fromEntries(\n Object.entries(rawCommands).map(([name, command2]) => {\n return [name, (...args) => command2(...args)(props)];\n })\n );\n }\n };\n return props;\n }\n};\n\n// src/commands/index.ts\nvar commands_exports = {};\n__export(commands_exports, {\n blur: () => blur,\n clearContent: () => clearContent,\n clearNodes: () => clearNodes,\n command: () => command,\n createParagraphNear: () => createParagraphNear,\n cut: () => cut,\n deleteCurrentNode: () => deleteCurrentNode,\n deleteNode: () => deleteNode,\n deleteRange: () => deleteRange,\n deleteSelection: () => deleteSelection,\n enter: () => enter,\n exitCode: () => exitCode,\n extendMarkRange: () => extendMarkRange,\n first: () => first,\n focus: () => focus,\n forEach: () => forEach,\n insertContent: () => insertContent,\n insertContentAt: () => insertContentAt,\n joinBackward: () => joinBackward,\n joinDown: () => joinDown,\n joinForward: () => joinForward,\n joinItemBackward: () => joinItemBackward,\n joinItemForward: () => joinItemForward,\n joinTextblockBackward: () => joinTextblockBackward,\n joinTextblockForward: () => joinTextblockForward,\n joinUp: () => joinUp,\n keyboardShortcut: () => keyboardShortcut,\n lift: () => lift,\n liftEmptyBlock: () => liftEmptyBlock,\n liftListItem: () => liftListItem,\n newlineInCode: () => newlineInCode,\n resetAttributes: () => resetAttributes,\n scrollIntoView: () => scrollIntoView,\n selectAll: () => selectAll,\n selectNodeBackward: () => selectNodeBackward,\n selectNodeForward: () => selectNodeForward,\n selectParentNode: () => selectParentNode,\n selectTextblockEnd: () => selectTextblockEnd,\n selectTextblockStart: () => selectTextblockStart,\n setContent: () => setContent,\n setMark: () => setMark,\n setMeta: () => setMeta,\n setNode: () => setNode,\n setNodeSelection: () => setNodeSelection,\n setTextDirection: () => setTextDirection,\n setTextSelection: () => setTextSelection,\n sinkListItem: () => sinkListItem,\n splitBlock: () => splitBlock,\n splitListItem: () => splitListItem,\n toggleList: () => toggleList,\n toggleMark: () => toggleMark,\n toggleNode: () => toggleNode,\n toggleWrap: () => toggleWrap,\n undoInputRule: () => undoInputRule,\n unsetAllMarks: () => unsetAllMarks,\n unsetMark: () => unsetMark,\n unsetTextDirection: () => unsetTextDirection,\n updateAttributes: () => updateAttributes,\n wrapIn: () => wrapIn,\n wrapInList: () => wrapInList\n});\n\n// src/commands/blur.ts\nvar blur = () => ({ editor, view }) => {\n requestAnimationFrame(() => {\n var _a;\n if (!editor.isDestroyed) {\n ;\n view.dom.blur();\n (_a = window == null ? void 0 : window.getSelection()) == null ? void 0 : _a.removeAllRanges();\n }\n });\n return true;\n};\n\n// src/commands/clearContent.ts\nvar clearContent = (emitUpdate = true) => ({ commands }) => {\n return commands.setContent(\"\", { emitUpdate });\n};\n\n// src/commands/clearNodes.ts\n\nvar clearNodes = () => ({ state, tr, dispatch }) => {\n const { selection } = tr;\n const { ranges } = selection;\n if (!dispatch) {\n return true;\n }\n ranges.forEach(({ $from, $to }) => {\n state.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (node.type.isText) {\n return;\n }\n const { doc, mapping } = tr;\n const $mappedFrom = doc.resolve(mapping.map(pos));\n const $mappedTo = doc.resolve(mapping.map(pos + node.nodeSize));\n const nodeRange = $mappedFrom.blockRange($mappedTo);\n if (!nodeRange) {\n return;\n }\n const targetLiftDepth = (0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.liftTarget)(nodeRange);\n if (node.type.isTextblock) {\n const { defaultType } = $mappedFrom.parent.contentMatchAt($mappedFrom.index());\n tr.setNodeMarkup(nodeRange.start, defaultType);\n }\n if (targetLiftDepth || targetLiftDepth === 0) {\n tr.lift(nodeRange, targetLiftDepth);\n }\n });\n });\n return true;\n};\n\n// src/commands/command.ts\nvar command = (fn) => (props) => {\n return fn(props);\n};\n\n// src/commands/createParagraphNear.ts\n\nvar createParagraphNear = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.createParagraphNear)(state, dispatch);\n};\n\n// src/commands/cut.ts\n\nvar cut = (originRange, targetPos) => ({ editor, tr }) => {\n const { state } = editor;\n const contentSlice = state.doc.slice(originRange.from, originRange.to);\n tr.deleteRange(originRange.from, originRange.to);\n const newPos = tr.mapping.map(targetPos);\n tr.insert(newPos, contentSlice.content);\n tr.setSelection(new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection(tr.doc.resolve(Math.max(newPos - 1, 0))));\n return true;\n};\n\n// src/commands/deleteCurrentNode.ts\nvar deleteCurrentNode = () => ({ tr, dispatch }) => {\n const { selection } = tr;\n const currentNode = selection.$anchor.node();\n if (currentNode.content.size > 0) {\n return false;\n }\n const $pos = tr.selection.$anchor;\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\n const node = $pos.node(depth);\n if (node.type === currentNode.type) {\n if (dispatch) {\n const from = $pos.before(depth);\n const to = $pos.after(depth);\n tr.delete(from, to).scrollIntoView();\n }\n return true;\n }\n }\n return false;\n};\n\n// src/helpers/getNodeType.ts\nfunction getNodeType(nameOrType, schema) {\n if (typeof nameOrType === \"string\") {\n if (!schema.nodes[nameOrType]) {\n throw Error(`There is no node type named '${nameOrType}'. Maybe you forgot to add the extension?`);\n }\n return schema.nodes[nameOrType];\n }\n return nameOrType;\n}\n\n// src/commands/deleteNode.ts\nvar deleteNode = (typeOrName) => ({ tr, state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n const $pos = tr.selection.$anchor;\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\n const node = $pos.node(depth);\n if (node.type === type) {\n if (dispatch) {\n const from = $pos.before(depth);\n const to = $pos.after(depth);\n tr.delete(from, to).scrollIntoView();\n }\n return true;\n }\n }\n return false;\n};\n\n// src/commands/deleteRange.ts\nvar deleteRange = (range) => ({ tr, dispatch }) => {\n const { from, to } = range;\n if (dispatch) {\n tr.delete(from, to);\n }\n return true;\n};\n\n// src/commands/deleteSelection.ts\n\nvar deleteSelection = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.deleteSelection)(state, dispatch);\n};\n\n// src/commands/enter.ts\nvar enter = () => ({ commands }) => {\n return commands.keyboardShortcut(\"Enter\");\n};\n\n// src/commands/exitCode.ts\n\nvar exitCode = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.exitCode)(state, dispatch);\n};\n\n// src/commands/extendMarkRange.ts\n\n\n// src/utilities/isRegExp.ts\nfunction isRegExp(value) {\n return Object.prototype.toString.call(value) === \"[object RegExp]\";\n}\n\n// src/utilities/objectIncludes.ts\nfunction objectIncludes(object1, object2, options = { strict: true }) {\n const keys = Object.keys(object2);\n if (!keys.length) {\n return true;\n }\n return keys.every((key) => {\n if (options.strict) {\n return object2[key] === object1[key];\n }\n if (isRegExp(object2[key])) {\n return object2[key].test(object1[key]);\n }\n return object2[key] === object1[key];\n });\n}\n\n// src/helpers/getMarkRange.ts\nfunction findMarkInSet(marks, type, attributes = {}) {\n return marks.find((item) => {\n return item.type === type && objectIncludes(\n // Only check equality for the attributes that are provided\n Object.fromEntries(Object.keys(attributes).map((k) => [k, item.attrs[k]])),\n attributes\n );\n });\n}\nfunction isMarkInSet(marks, type, attributes = {}) {\n return !!findMarkInSet(marks, type, attributes);\n}\nfunction getMarkRange($pos, type, attributes) {\n var _a;\n if (!$pos || !type) {\n return;\n }\n let start = $pos.parent.childAfter($pos.parentOffset);\n if (!start.node || !start.node.marks.some((mark2) => mark2.type === type)) {\n start = $pos.parent.childBefore($pos.parentOffset);\n }\n if (!start.node || !start.node.marks.some((mark2) => mark2.type === type)) {\n return;\n }\n attributes = attributes || ((_a = start.node.marks[0]) == null ? void 0 : _a.attrs);\n const mark = findMarkInSet([...start.node.marks], type, attributes);\n if (!mark) {\n return;\n }\n let startIndex = start.index;\n let startPos = $pos.start() + start.offset;\n let endIndex = startIndex + 1;\n let endPos = startPos + start.node.nodeSize;\n while (startIndex > 0 && isMarkInSet([...$pos.parent.child(startIndex - 1).marks], type, attributes)) {\n startIndex -= 1;\n startPos -= $pos.parent.child(startIndex).nodeSize;\n }\n while (endIndex < $pos.parent.childCount && isMarkInSet([...$pos.parent.child(endIndex).marks], type, attributes)) {\n endPos += $pos.parent.child(endIndex).nodeSize;\n endIndex += 1;\n }\n return {\n from: startPos,\n to: endPos\n };\n}\n\n// src/helpers/getMarkType.ts\nfunction getMarkType(nameOrType, schema) {\n if (typeof nameOrType === \"string\") {\n if (!schema.marks[nameOrType]) {\n throw Error(`There is no mark type named '${nameOrType}'. Maybe you forgot to add the extension?`);\n }\n return schema.marks[nameOrType];\n }\n return nameOrType;\n}\n\n// src/commands/extendMarkRange.ts\nvar extendMarkRange = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n const type = getMarkType(typeOrName, state.schema);\n const { doc, selection } = tr;\n const { $from, from, to } = selection;\n if (dispatch) {\n const range = getMarkRange($from, type, attributes);\n if (range && range.from <= from && range.to >= to) {\n const newSelection = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection.create(doc, range.from, range.to);\n tr.setSelection(newSelection);\n }\n }\n return true;\n};\n\n// src/commands/first.ts\nvar first = (commands) => (props) => {\n const items = typeof commands === \"function\" ? commands(props) : commands;\n for (let i = 0; i < items.length; i += 1) {\n if (items[i](props)) {\n return true;\n }\n }\n return false;\n};\n\n// src/helpers/isTextSelection.ts\n\nfunction isTextSelection(value) {\n return value instanceof _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection;\n}\n\n// src/helpers/resolveFocusPosition.ts\n\n\n// src/utilities/minMax.ts\nfunction minMax(value = 0, min = 0, max = 0) {\n return Math.min(Math.max(value, min), max);\n}\n\n// src/helpers/resolveFocusPosition.ts\nfunction resolveFocusPosition(doc, position = null) {\n if (!position) {\n return null;\n }\n const selectionAtStart = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Selection.atStart(doc);\n const selectionAtEnd = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Selection.atEnd(doc);\n if (position === \"start\" || position === true) {\n return selectionAtStart;\n }\n if (position === \"end\") {\n return selectionAtEnd;\n }\n const minPos = selectionAtStart.from;\n const maxPos = selectionAtEnd.to;\n if (position === \"all\") {\n return _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection.create(doc, minMax(0, minPos, maxPos), minMax(doc.content.size, minPos, maxPos));\n }\n return _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection.create(doc, minMax(position, minPos, maxPos), minMax(position, minPos, maxPos));\n}\n\n// src/utilities/isAndroid.ts\nfunction isAndroid() {\n return navigator.platform === \"Android\" || /android/i.test(navigator.userAgent);\n}\n\n// src/utilities/isiOS.ts\nfunction isiOS() {\n return [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) || // iPad on iOS 13 detection\n navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document;\n}\n\n// src/utilities/isSafari.ts\nfunction isSafari() {\n return typeof navigator !== \"undefined\" ? /^((?!chrome|android).)*safari/i.test(navigator.userAgent) : false;\n}\n\n// src/commands/focus.ts\nvar focus = (position = null, options = {}) => ({ editor, view, tr, dispatch }) => {\n options = {\n scrollIntoView: true,\n ...options\n };\n const delayedFocus = () => {\n if (isiOS() || isAndroid()) {\n ;\n view.dom.focus();\n }\n if (isSafari() && !isiOS() && !isAndroid()) {\n ;\n view.dom.focus({ preventScroll: true });\n }\n requestAnimationFrame(() => {\n if (!editor.isDestroyed) {\n view.focus();\n if (options == null ? void 0 : options.scrollIntoView) {\n editor.commands.scrollIntoView();\n }\n }\n });\n };\n try {\n if (view.hasFocus() && position === null || position === false) {\n return true;\n }\n } catch {\n return false;\n }\n if (dispatch && position === null && !isTextSelection(editor.state.selection)) {\n delayedFocus();\n return true;\n }\n const selection = resolveFocusPosition(tr.doc, position) || editor.state.selection;\n const isSameSelection = editor.state.selection.eq(selection);\n if (dispatch) {\n if (!isSameSelection) {\n tr.setSelection(selection);\n }\n if (isSameSelection && tr.storedMarks) {\n tr.setStoredMarks(tr.storedMarks);\n }\n delayedFocus();\n }\n return true;\n};\n\n// src/commands/forEach.ts\nvar forEach = (items, fn) => (props) => {\n return items.every((item, index) => fn(item, { ...props, index }));\n};\n\n// src/commands/insertContent.ts\nvar insertContent = (value, options) => ({ tr, commands }) => {\n return commands.insertContentAt({ from: tr.selection.from, to: tr.selection.to }, value, options);\n};\n\n// src/commands/insertContentAt.ts\n\n\n// src/helpers/createNodeFromContent.ts\n\n\n// src/utilities/elementFromString.ts\nvar removeWhitespaces = (node) => {\n const children = node.childNodes;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i];\n if (child.nodeType === 3 && child.nodeValue && /^(\\n\\s\\s|\\n)$/.test(child.nodeValue)) {\n node.removeChild(child);\n } else if (child.nodeType === 1) {\n removeWhitespaces(child);\n }\n }\n return node;\n};\nfunction elementFromString(value) {\n if (typeof window === \"undefined\") {\n throw new Error(\"[tiptap error]: there is no window object available, so this function cannot be used\");\n }\n const wrappedValue = `<body>${value}</body>`;\n const html = new window.DOMParser().parseFromString(wrappedValue, \"text/html\").body;\n return removeWhitespaces(html);\n}\n\n// src/helpers/createNodeFromContent.ts\nfunction createNodeFromContent(content, schema, options) {\n if (content instanceof _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Node || content instanceof _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Fragment) {\n return content;\n }\n options = {\n slice: true,\n parseOptions: {},\n ...options\n };\n const isJSONContent = typeof content === \"object\" && content !== null;\n const isTextContent = typeof content === \"string\";\n if (isJSONContent) {\n try {\n const isArrayContent = Array.isArray(content) && content.length > 0;\n if (isArrayContent) {\n return _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Fragment.fromArray(content.map((item) => schema.nodeFromJSON(item)));\n }\n const node = schema.nodeFromJSON(content);\n if (options.errorOnInvalidContent) {\n node.check();\n }\n return node;\n } catch (error) {\n if (options.errorOnInvalidContent) {\n throw new Error(\"[tiptap error]: Invalid JSON content\", { cause: error });\n }\n console.warn(\"[tiptap warn]: Invalid content.\", \"Passed value:\", content, \"Error:\", error);\n return createNodeFromContent(\"\", schema, options);\n }\n }\n if (isTextContent) {\n if (options.errorOnInvalidContent) {\n let hasInvalidContent = false;\n let invalidContent = \"\";\n const contentCheckSchema = new _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Schema({\n topNode: schema.spec.topNode,\n marks: schema.spec.marks,\n // Prosemirror's schemas are executed such that: the last to execute, matches last\n // This means that we can add a catch-all node at the end of the schema to catch any content that we don't know how to handle\n nodes: schema.spec.nodes.append({\n __tiptap__private__unknown__catch__all__node: {\n content: \"inline*\",\n group: \"block\",\n parseDOM: [\n {\n tag: \"*\",\n getAttrs: (e) => {\n hasInvalidContent = true;\n invalidContent = typeof e === \"string\" ? e : e.outerHTML;\n return null;\n }\n }\n ]\n }\n })\n });\n if (options.slice) {\n _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.DOMParser.fromSchema(contentCheckSchema).parseSlice(elementFromString(content), options.parseOptions);\n } else {\n _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.DOMParser.fromSchema(contentCheckSchema).parse(elementFromString(content), options.parseOptions);\n }\n if (options.errorOnInvalidContent && hasInvalidContent) {\n throw new Error(\"[tiptap error]: Invalid HTML content\", {\n cause: new Error(`Invalid element found: ${invalidContent}`)\n });\n }\n }\n const parser = _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.DOMParser.fromSchema(schema);\n if (options.slice) {\n return parser.parseSlice(elementFromString(content), options.parseOptions).content;\n }\n return parser.parse(elementFromString(content), options.parseOptions);\n }\n return createNodeFromContent(\"\", schema, options);\n}\n\n// src/helpers/selectionToInsertionEnd.ts\n\n\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n const last = tr.steps.length - 1;\n if (last < startLen) {\n return;\n }\n const step = tr.steps[last];\n if (!(step instanceof _tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.ReplaceStep || step instanceof _tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.ReplaceAroundStep)) {\n return;\n }\n const map = tr.mapping.maps[last];\n let end = 0;\n map.forEach((_from, _to, _newFrom, newTo) => {\n if (end === 0) {\n end = newTo;\n }\n });\n tr.setSelection(_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Selection.near(tr.doc.resolve(end), bias));\n}\n\n// src/commands/insertContentAt.ts\nvar isFragment = (nodeOrFragment) => {\n return !(\"type\" in nodeOrFragment);\n};\nvar insertContentAt = (position, value, options) => ({ tr, dispatch, editor }) => {\n var _a;\n if (dispatch) {\n options = {\n parseOptions: editor.options.parseOptions,\n updateSelection: true,\n applyInputRules: false,\n applyPasteRules: false,\n ...options\n };\n let content;\n const emitContentError = (error) => {\n editor.emit(\"contentError\", {\n editor,\n error,\n disableCollaboration: () => {\n if (\"collaboration\" in editor.storage && typeof editor.storage.collaboration === \"object\" && editor.storage.collaboration) {\n ;\n editor.storage.collaboration.isDisabled = true;\n }\n }\n });\n };\n const parseOptions = {\n preserveWhitespace: \"full\",\n ...options.parseOptions\n };\n if (!options.errorOnInvalidContent && !editor.options.enableContentCheck && editor.options.emitContentError) {\n try {\n createNodeFromContent(value, editor.schema, {\n parseOptions,\n errorOnInvalidContent: true\n });\n } catch (e) {\n emitContentError(e);\n }\n }\n try {\n content = createNodeFromContent(value, editor.schema, {\n parseOptions,\n errorOnInvalidContent: (_a = options.errorOnInvalidContent) != null ? _a : editor.options.enableContentCheck\n });\n } catch (e) {\n emitContentError(e);\n return false;\n }\n let { from, to } = typeof position === \"number\" ? { from: position, to: position } : { from: position.from, to: position.to };\n let isOnlyTextContent = true;\n let isOnlyBlockContent = true;\n const nodes = isFragment(content) ? content : [content];\n nodes.forEach((node) => {\n node.check();\n isOnlyTextContent = isOnlyTextContent ? node.isText && node.marks.length === 0 : false;\n isOnlyBlockContent = isOnlyBlockContent ? node.isBlock : false;\n });\n if (from === to && isOnlyBlockContent) {\n const { parent } = tr.doc.resolve(from);\n const isEmptyTextBlock = parent.isTextblock && !parent.type.spec.code && !parent.childCount;\n if (isEmptyTextBlock) {\n from -= 1;\n to += 1;\n }\n }\n let newContent;\n if (isOnlyTextContent) {\n if (Array.isArray(value)) {\n newContent = value.map((v) => v.text || \"\").join(\"\");\n } else if (value instanceof _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Fragment) {\n let text = \"\";\n value.forEach((node) => {\n if (node.text) {\n text += node.text;\n }\n });\n newContent = text;\n } else if (typeof value === \"object\" && !!value && !!value.text) {\n newContent = value.text;\n } else {\n newContent = value;\n }\n tr.insertText(newContent, from, to);\n } else {\n newContent = content;\n const $from = tr.doc.resolve(from);\n const $fromNode = $from.node();\n const fromSelectionAtStart = $from.parentOffset === 0;\n const isTextSelection2 = $fromNode.isText || $fromNode.isTextblock;\n const hasContent = $fromNode.content.size > 0;\n if (fromSelectionAtStart && isTextSelection2 && hasContent) {\n from = Math.max(0, from - 1);\n }\n tr.replaceWith(from, to, newContent);\n }\n if (options.updateSelection) {\n selectionToInsertionEnd(tr, tr.steps.length - 1, -1);\n }\n if (options.applyInputRules) {\n tr.setMeta(\"applyInputRules\", { from, text: newContent });\n }\n if (options.applyPasteRules) {\n tr.setMeta(\"applyPasteRules\", { from, text: newContent });\n }\n }\n return true;\n};\n\n// src/commands/join.ts\n\nvar joinUp = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.joinUp)(state, dispatch);\n};\nvar joinDown = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.joinDown)(state, dispatch);\n};\nvar joinBackward = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.joinBackward)(state, dispatch);\n};\nvar joinForward = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.joinForward)(state, dispatch);\n};\n\n// src/commands/joinItemBackward.ts\n\nvar joinItemBackward = () => ({ state, dispatch, tr }) => {\n try {\n const point = (0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.joinPoint)(state.doc, state.selection.$from.pos, -1);\n if (point === null || point === void 0) {\n return false;\n }\n tr.join(point, 2);\n if (dispatch) {\n dispatch(tr);\n }\n return true;\n } catch {\n return false;\n }\n};\n\n// src/commands/joinItemForward.ts\n\nvar joinItemForward = () => ({ state, dispatch, tr }) => {\n try {\n const point = (0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.joinPoint)(state.doc, state.selection.$from.pos, 1);\n if (point === null || point === void 0) {\n return false;\n }\n tr.join(point, 2);\n if (dispatch) {\n dispatch(tr);\n }\n return true;\n } catch {\n return false;\n }\n};\n\n// src/commands/joinTextblockBackward.ts\n\nvar joinTextblockBackward = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.joinTextblockBackward)(state, dispatch);\n};\n\n// src/commands/joinTextblockForward.ts\n\nvar joinTextblockForward = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.joinTextblockForward)(state, dispatch);\n};\n\n// src/utilities/isMacOS.ts\nfunction isMacOS() {\n return typeof navigator !== \"undefined\" ? /Mac/.test(navigator.platform) : false;\n}\n\n// src/commands/keyboardShortcut.ts\nfunction normalizeKeyName(name) {\n const parts = name.split(/-(?!$)/);\n let result = parts[parts.length - 1];\n if (result === \"Space\") {\n result = \" \";\n }\n let alt;\n let ctrl;\n let shift;\n let meta;\n for (let i = 0; i < parts.length - 1; i += 1) {\n const mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) {\n meta = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else if (/^mod$/i.test(mod)) {\n if (isiOS() || isMacOS()) {\n meta = true;\n } else {\n ctrl = true;\n }\n } else {\n throw new Error(`Unrecognized modifier name: ${mod}`);\n }\n }\n if (alt) {\n result = `Alt-${result}`;\n }\n if (ctrl) {\n result = `Ctrl-${result}`;\n }\n if (meta) {\n result = `Meta-${result}`;\n }\n if (shift) {\n result = `Shift-${result}`;\n }\n return result;\n}\nvar keyboardShortcut = (name) => ({ editor, view, tr, dispatch }) => {\n const keys = normalizeKeyName(name).split(/-(?!$)/);\n const key = keys.find((item) => ![\"Alt\", \"Ctrl\", \"Meta\", \"Shift\"].includes(item));\n const event = new KeyboardEvent(\"keydown\", {\n key: key === \"Space\" ? \" \" : key,\n altKey: keys.includes(\"Alt\"),\n ctrlKey: keys.includes(\"Ctrl\"),\n metaKey: keys.includes(\"Meta\"),\n shiftKey: keys.includes(\"Shift\"),\n bubbles: true,\n cancelable: true\n });\n const capturedTransaction = editor.captureTransaction(() => {\n view.someProp(\"handleKeyDown\", (f) => f(view, event));\n });\n capturedTransaction == null ? void 0 : capturedTransaction.steps.forEach((step) => {\n const newStep = step.map(tr.mapping);\n if (newStep && dispatch) {\n tr.maybeStep(newStep);\n }\n });\n return true;\n};\n\n// src/commands/lift.ts\n\n\n// src/helpers/isNodeActive.ts\nfunction isNodeActive(state, typeOrName, attributes = {}) {\n const { from, to, empty } = state.selection;\n const type = typeOrName ? getNodeType(typeOrName, state.schema) : null;\n const nodeRanges = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n return;\n }\n const relativeFrom = Math.max(from, pos);\n const relativeTo = Math.min(to, pos + node.nodeSize);\n nodeRanges.push({\n node,\n from: relativeFrom,\n to: relativeTo\n });\n });\n const selectionRange = to - from;\n const matchedNodeRanges = nodeRanges.filter((nodeRange) => {\n if (!type) {\n return true;\n }\n return type.name === nodeRange.node.type.name;\n }).filter((nodeRange) => objectIncludes(nodeRange.node.attrs, attributes, { strict: false }));\n if (empty) {\n return !!matchedNodeRanges.length;\n }\n const range = matchedNodeRanges.reduce((sum, nodeRange) => sum + nodeRange.to - nodeRange.from, 0);\n return range >= selectionRange;\n}\n\n// src/commands/lift.ts\nvar lift = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n const isActive2 = isNodeActive(state, type, attributes);\n if (!isActive2) {\n return false;\n }\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.lift)(state, dispatch);\n};\n\n// src/commands/liftEmptyBlock.ts\n\nvar liftEmptyBlock = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.liftEmptyBlock)(state, dispatch);\n};\n\n// src/commands/liftListItem.ts\n\nvar liftListItem = (typeOrName) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return (0,_tiptap_pm_schema_list__WEBPACK_IMPORTED_MODULE_4__.liftListItem)(type)(state, dispatch);\n};\n\n// src/commands/newlineInCode.ts\n\nvar newlineInCode = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.newlineInCode)(state, dispatch);\n};\n\n// src/helpers/getSchemaTypeNameByName.ts\nfunction getSchemaTypeNameByName(name, schema) {\n if (schema.nodes[name]) {\n return \"node\";\n }\n if (schema.marks[name]) {\n return \"mark\";\n }\n return null;\n}\n\n// src/utilities/deleteProps.ts\nfunction deleteProps(obj, propOrProps) {\n const props = typeof propOrProps === \"string\" ? [propOrProps] : propOrProps;\n return Object.keys(obj).reduce((newObj, prop) => {\n if (!props.includes(prop)) {\n newObj[prop] = obj[prop];\n }\n return newObj;\n }, {});\n}\n\n// src/commands/resetAttributes.ts\nvar resetAttributes = (typeOrName, attributes) => ({ tr, state, dispatch }) => {\n let nodeType = null;\n let markType = null;\n const schemaType = getSchemaTypeNameByName(\n typeof typeOrName === \"string\" ? typeOrName : typeOrName.name,\n state.schema\n );\n if (!schemaType) {\n return false;\n }\n if (schemaType === \"node\") {\n nodeType = getNodeType(typeOrName, state.schema);\n }\n if (schemaType === \"mark\") {\n markType = getMarkType(typeOrName, state.schema);\n }\n let canReset = false;\n tr.selection.ranges.forEach((range) => {\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\n if (nodeType && nodeType === node.type) {\n canReset = true;\n if (dispatch) {\n tr.setNodeMarkup(pos, void 0, deleteProps(node.attrs, attributes));\n }\n }\n if (markType && node.marks.length) {\n node.marks.forEach((mark) => {\n if (markType === mark.type) {\n canReset = true;\n if (dispatch) {\n tr.addMark(pos, pos + node.nodeSize, markType.create(deleteProps(mark.attrs, attributes)));\n }\n }\n });\n }\n });\n });\n return canReset;\n};\n\n// src/commands/scrollIntoView.ts\nvar scrollIntoView = () => ({ tr, dispatch }) => {\n if (dispatch) {\n tr.scrollIntoView();\n }\n return true;\n};\n\n// src/commands/selectAll.ts\n\nvar selectAll = () => ({ tr, dispatch }) => {\n if (dispatch) {\n const selection = new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.AllSelection(tr.doc);\n tr.setSelection(selection);\n }\n return true;\n};\n\n// src/commands/selectNodeBackward.ts\n\nvar selectNodeBackward = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.selectNodeBackward)(state, dispatch);\n};\n\n// src/commands/selectNodeForward.ts\n\nvar selectNodeForward = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.selectNodeForward)(state, dispatch);\n};\n\n// src/commands/selectParentNode.ts\n\nvar selectParentNode = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.selectParentNode)(state, dispatch);\n};\n\n// src/commands/selectTextblockEnd.ts\n\nvar selectTextblockEnd = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.selectTextblockEnd)(state, dispatch);\n};\n\n// src/commands/selectTextblockStart.ts\n\nvar selectTextblockStart = () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.selectTextblockStart)(state, dispatch);\n};\n\n// src/helpers/createDocument.ts\nfunction createDocument(content, schema, parseOptions = {}, options = {}) {\n return createNodeFromContent(content, schema, {\n slice: false,\n parseOptions,\n errorOnInvalidContent: options.errorOnInvalidContent\n });\n}\n\n// src/commands/setContent.ts\nvar setContent = (content, { errorOnInvalidContent, emitUpdate = true, parseOptions = {} } = {}) => ({ editor, tr, dispatch, commands }) => {\n const { doc } = tr;\n if (parseOptions.preserveWhitespace !== \"full\") {\n const document2 = createDocument(content, editor.schema, parseOptions, {\n errorOnInvalidContent: errorOnInvalidContent != null ? errorOnInvalidContent : editor.options.enableContentCheck\n });\n if (dispatch) {\n tr.replaceWith(0, doc.content.size, document2).setMeta(\"preventUpdate\", !emitUpdate);\n }\n return true;\n }\n if (dispatch) {\n tr.setMeta(\"preventUpdate\", !emitUpdate);\n }\n return commands.insertContentAt({ from: 0, to: doc.content.size }, content, {\n parseOptions,\n errorOnInvalidContent: errorOnInvalidContent != null ? errorOnInvalidContent : editor.options.enableContentCheck\n });\n};\n\n// src/helpers/getMarkAttributes.ts\nfunction getMarkAttributes(state, typeOrName) {\n const type = getMarkType(typeOrName, state.schema);\n const { from, to, empty } = state.selection;\n const marks = [];\n if (empty) {\n if (state.storedMarks) {\n marks.push(...state.storedMarks);\n }\n marks.push(...state.selection.$head.marks());\n } else {\n state.doc.nodesBetween(from, to, (node) => {\n marks.push(...node.marks);\n });\n }\n const mark = marks.find((markItem) => markItem.type.name === type.name);\n if (!mark) {\n return {};\n }\n return { ...mark.attrs };\n}\n\n// src/helpers/combineTransactionSteps.ts\n\nfunction combineTransactionSteps(oldDoc, transactions) {\n const transform = new _tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.Transform(oldDoc);\n transactions.forEach((transaction) => {\n transaction.steps.forEach((step) => {\n transform.step(step);\n });\n });\n return transform;\n}\n\n// src/helpers/defaultBlockAt.ts\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i += 1) {\n const { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs()) {\n return type;\n }\n }\n return null;\n}\n\n// src/helpers/findChildren.ts\nfunction findChildren(node, predicate) {\n const nodesWithPos = [];\n node.descendants((child, pos) => {\n if (predicate(child)) {\n nodesWithPos.push({\n node: child,\n pos\n });\n }\n });\n return nodesWithPos;\n}\n\n// src/helpers/findChildrenInRange.ts\nfunction findChildrenInRange(node, range, predicate) {\n const nodesWithPos = [];\n node.nodesBetween(range.from, range.to, (child, pos) => {\n if (predicate(child)) {\n nodesWithPos.push({\n node: child,\n pos\n });\n }\n });\n return nodesWithPos;\n}\n\n// src/helpers/findParentNodeClosestToPos.ts\nfunction findParentNodeClosestToPos($pos, predicate) {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i);\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node\n };\n }\n }\n}\n\n// src/helpers/findParentNode.ts\nfunction findParentNode(predicate) {\n return (selection) => findParentNodeClosestToPos(selection.$from, predicate);\n}\n\n// src/helpers/getExtensionField.ts\nfunction getExtensionField(extension, field, context) {\n if (extension.config[field] === void 0 && extension.parent) {\n return getExtensionField(extension.parent, field, context);\n }\n if (typeof extension.config[field] === \"function\") {\n const value = extension.config[field].bind({\n ...context,\n parent: extension.parent ? getExtensionField(extension.parent, field, context) : null\n });\n return value;\n }\n return extension.config[field];\n}\n\n// src/helpers/flattenExtensions.ts\nfunction flattenExtensions(extensions) {\n return extensions.map((extension) => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage\n };\n const addExtensions = getExtensionField(extension, \"addExtensions\", context);\n if (addExtensions) {\n return [extension, ...flattenExtensions(addExtensions())];\n }\n return extension;\n }).flat(10);\n}\n\n// src/helpers/generateHTML.ts\n\n\n// src/helpers/getHTMLFromFragment.ts\n\nfunction getHTMLFromFragment(fragment, schema) {\n const documentFragment = _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.DOMSerializer.fromSchema(schema).serializeFragment(fragment);\n const temporaryDocument = document.implementation.createHTMLDocument();\n const container = temporaryDocument.createElement(\"div\");\n container.appendChild(documentFragment);\n return container.innerHTML;\n}\n\n// src/helpers/getSchemaByResolvedExtensions.ts\n\n\n// src/utilities/isFunction.ts\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/utilities/callOrReturn.ts\nfunction callOrReturn(value, context = void 0, ...props) {\n if (isFunction(value)) {\n if (context) {\n return value.bind(context)(...props);\n }\n return value(...props);\n }\n return value;\n}\n\n// src/utilities/isEmptyObject.ts\nfunction isEmptyObject(value = {}) {\n return Object.keys(value).length === 0 && value.constructor === Object;\n}\n\n// src/helpers/splitExtensions.ts\nfunction splitExtensions(extensions) {\n const baseExtensions = extensions.filter((extension) => extension.type === \"extension\");\n const nodeExtensions = extensions.filter((extension) => extension.type === \"node\");\n const markExtensions = extensions.filter((extension) => extension.type === \"mark\");\n return {\n baseExtensions,\n nodeExtensions,\n markExtensions\n };\n}\n\n// src/helpers/getAttributesFromExtensions.ts\nfunction getAttributesFromExtensions(extensions) {\n const extensionAttributes = [];\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\n const nodeAndMarkExtensions = [...nodeExtensions, ...markExtensions];\n const defaultAttribute = {\n default: null,\n validate: void 0,\n rendered: true,\n renderHTML: null,\n parseHTML: null,\n keepOnSplit: true,\n isRequired: false\n };\n extensions.forEach((extension) => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n extensions: nodeAndMarkExtensions\n };\n const addGlobalAttributes = getExtensionField(\n extension,\n \"addGlobalAttributes\",\n context\n );\n if (!addGlobalAttributes) {\n return;\n }\n const globalAttributes = addGlobalAttributes();\n globalAttributes.forEach((globalAttribute) => {\n globalAttribute.types.forEach((type) => {\n Object.entries(globalAttribute.attributes).forEach(([name, attribute]) => {\n extensionAttributes.push({\n type,\n name,\n attribute: {\n ...defaultAttribute,\n ...attribute\n }\n });\n });\n });\n });\n });\n nodeAndMarkExtensions.forEach((extension) => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage\n };\n const addAttributes = getExtensionField(\n extension,\n \"addAttributes\",\n context\n );\n if (!addAttributes) {\n return;\n }\n const attributes = addAttributes();\n Object.entries(attributes).forEach(([name, attribute]) => {\n const mergedAttr = {\n ...defaultAttribute,\n ...attribute\n };\n if (typeof (mergedAttr == null ? void 0 : mergedAttr.default) === \"function\") {\n mergedAttr.default = mergedAttr.default();\n }\n if ((mergedAttr == null ? void 0 : mergedAttr.isRequired) && (mergedAttr == null ? void 0 : mergedAttr.default) === void 0) {\n delete mergedAttr.default;\n }\n extensionAttributes.push({\n type: extension.name,\n name,\n attribute: mergedAttr\n });\n });\n });\n return extensionAttributes;\n}\n\n// src/utilities/mergeAttributes.ts\nfunction mergeAttributes(...objects) {\n return objects.filter((item) => !!item).reduce((items, item) => {\n const mergedAttributes = { ...items };\n Object.entries(item).forEach(([key, value]) => {\n const exists = mergedAttributes[key];\n if (!exists) {\n mergedAttributes[key] = value;\n return;\n }\n if (key === \"class\") {\n const valueClasses = value ? String(value).split(\" \") : [];\n const existingClasses = mergedAttributes[key] ? mergedAttributes[key].split(\" \") : [];\n const insertClasses = valueClasses.filter((valueClass) => !existingClasses.includes(valueClass));\n mergedAttributes[key] = [...existingClasses, ...insertClasses].join(\" \");\n } else if (key === \"style\") {\n const newStyles = value ? value.split(\";\").map((style2) => style2.trim()).filter(Boolean) : [];\n const existingStyles = mergedAttributes[key] ? mergedAttributes[key].split(\";\").map((style2) => style2.trim()).filter(Boolean) : [];\n const styleMap = /* @__PURE__ */ new Map();\n existingStyles.forEach((style2) => {\n const [property, val] = style2.split(\":\").map((part) => part.trim());\n styleMap.set(property, val);\n });\n newStyles.forEach((style2) => {\n const [property, val] = style2.split(\":\").map((part) => part.trim());\n styleMap.set(property, val);\n });\n mergedAttributes[key] = Array.from(styleMap.entries()).map(([property, val]) => `${property}: ${val}`).join(\"; \");\n } else {\n mergedAttributes[key] = value;\n }\n });\n return mergedAttributes;\n }, {});\n}\n\n// src/helpers/getRenderedAttributes.ts\nfunction getRenderedAttributes(nodeOrMark, extensionAttributes) {\n return extensionAttributes.filter((attribute) => attribute.type === nodeOrMark.type.name).filter((item) => item.attribute.rendered).map((item) => {\n if (!item.attribute.renderHTML) {\n return {\n [item.name]: nodeOrMark.attrs[item.name]\n };\n }\n return item.attribute.renderHTML(nodeOrMark.attrs) || {};\n }).reduce((attributes, attribute) => mergeAttributes(attributes, attribute), {});\n}\n\n// src/utilities/fromString.ts\nfunction fromString(value) {\n if (typeof value !== \"string\") {\n return value;\n }\n if (value.match(/^[+-]?(?:\\d*\\.)?\\d+$/)) {\n return Number(value);\n }\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n return value;\n}\n\n// src/helpers/injectExtensionAttributesToParseRule.ts\nfunction injectExtensionAttributesToParseRule(parseRule, extensionAttributes) {\n if (\"style\" in parseRule) {\n return parseRule;\n }\n return {\n ...parseRule,\n getAttrs: (node) => {\n const oldAttributes = parseRule.getAttrs ? parseRule.getAttrs(node) : parseRule.attrs;\n if (oldAttributes === false) {\n return false;\n }\n const newAttributes = extensionAttributes.reduce((items, item) => {\n const value = item.attribute.parseHTML ? item.attribute.parseHTML(node) : fromString(node.getAttribute(item.name));\n if (value === null || value === void 0) {\n return items;\n }\n return {\n ...items,\n [item.name]: value\n };\n }, {});\n return { ...oldAttributes, ...newAttributes };\n }\n };\n}\n\n// src/helpers/getSchemaByResolvedExtensions.ts\nfunction cleanUpSchemaItem(data) {\n return Object.fromEntries(\n // @ts-ignore\n Object.entries(data).filter(([key, value]) => {\n if (key === \"attrs\" && isEmptyObject(value)) {\n return false;\n }\n return value !== null && value !== void 0;\n })\n );\n}\nfunction buildAttributeSpec(extensionAttribute) {\n var _a, _b;\n const spec = {};\n if (!((_a = extensionAttribute == null ? void 0 : extensionAttribute.attribute) == null ? void 0 : _a.isRequired) && \"default\" in ((extensionAttribute == null ? void 0 : extensionAttribute.attribute) || {})) {\n spec.default = extensionAttribute.attribute.default;\n }\n if (((_b = extensionAttribute == null ? void 0 : extensionAttribute.attribute) == null ? void 0 : _b.validate) !== void 0) {\n spec.validate = extensionAttribute.attribute.validate;\n }\n return [extensionAttribute.name, spec];\n}\nfunction getSchemaByResolvedExtensions(extensions, editor) {\n var _a;\n const allAttributes = getAttributesFromExtensions(extensions);\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\n const topNode = (_a = nodeExtensions.find((extension) => getExtensionField(extension, \"topNode\"))) == null ? void 0 : _a.name;\n const nodes = Object.fromEntries(\n nodeExtensions.map((extension) => {\n const extensionAttributes = allAttributes.filter((attribute) => attribute.type === extension.name);\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor\n };\n const extraNodeFields = extensions.reduce((fields, e) => {\n const extendNodeSchema = getExtensionField(e, \"extendNodeSchema\", context);\n return {\n ...fields,\n ...extendNodeSchema ? extendNodeSchema(extension) : {}\n };\n }, {});\n const schema = cleanUpSchemaItem({\n ...extraNodeFields,\n content: callOrReturn(getExtensionField(extension, \"content\", context)),\n marks: callOrReturn(getExtensionField(extension, \"marks\", context)),\n group: callOrReturn(getExtensionField(extension, \"group\", context)),\n inline: callOrReturn(getExtensionField(extension, \"inline\", context)),\n atom: callOrReturn(getExtensionField(extension, \"atom\", context)),\n selectable: callOrReturn(getExtensionField(extension, \"selectable\", context)),\n draggable: callOrReturn(getExtensionField(extension, \"draggable\", context)),\n code: callOrReturn(getExtensionField(extension, \"code\", context)),\n whitespace: callOrReturn(getExtensionField(extension, \"whitespace\", context)),\n linebreakReplacement: callOrReturn(\n getExtensionField(extension, \"linebreakReplacement\", context)\n ),\n defining: callOrReturn(getExtensionField(extension, \"defining\", context)),\n isolating: callOrReturn(getExtensionField(extension, \"isolating\", context)),\n attrs: Object.fromEntries(extensionAttributes.map(buildAttributeSpec))\n });\n const parseHTML = callOrReturn(getExtensionField(extension, \"parseHTML\", context));\n if (parseHTML) {\n schema.parseDOM = parseHTML.map(\n (parseRule) => injectExtensionAttributesToParseRule(parseRule, extensionAttributes)\n );\n }\n const renderHTML = getExtensionField(extension, \"renderHTML\", context);\n if (renderHTML) {\n schema.toDOM = (node) => renderHTML({\n node,\n HTMLAttributes: getRenderedAttributes(node, extensionAttributes)\n });\n }\n const renderText = getExtensionField(extension, \"renderText\", context);\n if (renderText) {\n schema.toText = renderText;\n }\n return [extension.name, schema];\n })\n );\n const marks = Object.fromEntries(\n markExtensions.map((extension) => {\n const extensionAttributes = allAttributes.filter((attribute) => attribute.type === extension.name);\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor\n };\n const extraMarkFields = extensions.reduce((fields, e) => {\n const extendMarkSchema = getExtensionField(e, \"extendMarkSchema\", context);\n return {\n ...fields,\n ...extendMarkSchema ? extendMarkSchema(extension) : {}\n };\n }, {});\n const schema = cleanUpSchemaItem({\n ...extraMarkFields,\n inclusive: callOrReturn(getExtensionField(extension, \"inclusive\", context)),\n excludes: callOrReturn(getExtensionField(extension, \"excludes\", context)),\n group: callOrReturn(getExtensionField(extension, \"group\", context)),\n spanning: callOrReturn(getExtensionField(extension, \"spanning\", context)),\n code: callOrReturn(getExtensionField(extension, \"code\", context)),\n attrs: Object.fromEntries(extensionAttributes.map(buildAttributeSpec))\n });\n const parseHTML = callOrReturn(getExtensionField(extension, \"parseHTML\", context));\n if (parseHTML) {\n schema.parseDOM = parseHTML.map(\n (parseRule) => injectExtensionAttributesToParseRule(parseRule, extensionAttributes)\n );\n }\n const renderHTML = getExtensionField(extension, \"renderHTML\", context);\n if (renderHTML) {\n schema.toDOM = (mark) => renderHTML({\n mark,\n HTMLAttributes: getRenderedAttributes(mark, extensionAttributes)\n });\n }\n return [extension.name, schema];\n })\n );\n return new _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Schema({\n topNode,\n nodes,\n marks\n });\n}\n\n// src/utilities/findDuplicates.ts\nfunction findDuplicates(items) {\n const filtered = items.filter((el, index) => items.indexOf(el) !== index);\n return Array.from(new Set(filtered));\n}\n\n// src/helpers/sortExtensions.ts\nfunction sortExtensions(extensions) {\n const defaultPriority = 100;\n return extensions.sort((a, b) => {\n const priorityA = getExtensionField(a, \"priority\") || defaultPriority;\n const priorityB = getExtensionField(b, \"priority\") || defaultPriority;\n if (priorityA > priorityB) {\n return -1;\n }\n if (priorityA < priorityB) {\n return 1;\n }\n return 0;\n });\n}\n\n// src/helpers/resolveExtensions.ts\nfunction resolveExtensions(extensions) {\n const resolvedExtensions = sortExtensions(flattenExtensions(extensions));\n const duplicatedNames = findDuplicates(resolvedExtensions.map((extension) => extension.name));\n if (duplicatedNames.length) {\n console.warn(\n `[tiptap warn]: Duplicate extension names found: [${duplicatedNames.map((item) => `'${item}'`).join(\", \")}]. This can lead to issues.`\n );\n }\n return resolvedExtensions;\n}\n\n// src/helpers/getSchema.ts\nfunction getSchema(extensions, editor) {\n const resolvedExtensions = resolveExtensions(extensions);\n return getSchemaByResolvedExtensions(resolvedExtensions, editor);\n}\n\n// src/helpers/generateHTML.ts\nfunction generateHTML(doc, extensions) {\n const schema = getSchema(extensions);\n const contentNode = _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Node.fromJSON(schema, doc);\n return getHTMLFromFragment(contentNode.content, schema);\n}\n\n// src/helpers/generateJSON.ts\n\nfunction generateJSON(html, extensions) {\n const schema = getSchema(extensions);\n const dom = elementFromString(html);\n return _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.DOMParser.fromSchema(schema).parse(dom).toJSON();\n}\n\n// src/helpers/generateText.ts\n\n\n// src/helpers/getTextBetween.ts\nfunction getTextBetween(startNode, range, options) {\n const { from, to } = range;\n const { blockSeparator = \"\\n\\n\", textSerializers = {} } = options || {};\n let text = \"\";\n startNode.nodesBetween(from, to, (node, pos, parent, index) => {\n var _a;\n if (node.isBlock && pos > from) {\n text += blockSeparator;\n }\n const textSerializer = textSerializers == null ? void 0 : textSerializers[node.type.name];\n if (textSerializer) {\n if (parent) {\n text += textSerializer({\n node,\n pos,\n parent,\n index,\n range\n });\n }\n return false;\n }\n if (node.isText) {\n text += (_a = node == null ? void 0 : node.text) == null ? void 0 : _a.slice(Math.max(from, pos) - pos, to - pos);\n }\n });\n return text;\n}\n\n// src/helpers/getText.ts\nfunction getText(node, options) {\n const range = {\n from: 0,\n to: node.content.size\n };\n return getTextBetween(node, range, options);\n}\n\n// src/helpers/getTextSerializersFromSchema.ts\nfunction getTextSerializersFromSchema(schema) {\n return Object.fromEntries(\n Object.entries(schema.nodes).filter(([, node]) => node.spec.toText).map(([name, node]) => [name, node.spec.toText])\n );\n}\n\n// src/helpers/generateText.ts\nfunction generateText(doc, extensions, options) {\n const { blockSeparator = \"\\n\\n\", textSerializers = {} } = options || {};\n const schema = getSchema(extensions);\n const contentNode = _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Node.fromJSON(schema, doc);\n return getText(contentNode, {\n blockSeparator,\n textSerializers: {\n ...getTextSerializersFromSchema(schema),\n ...textSerializers\n }\n });\n}\n\n// src/helpers/getNodeAttributes.ts\nfunction getNodeAttributes(state, typeOrName) {\n const type = getNodeType(typeOrName, state.schema);\n const { from, to } = state.selection;\n const nodes = [];\n state.doc.nodesBetween(from, to, (node2) => {\n nodes.push(node2);\n });\n const node = nodes.reverse().find((nodeItem) => nodeItem.type.name === type.name);\n if (!node) {\n return {};\n }\n return { ...node.attrs };\n}\n\n// src/helpers/getAttributes.ts\nfunction getAttributes(state, typeOrName) {\n const schemaType = getSchemaTypeNameByName(\n typeof typeOrName === \"string\" ? typeOrName : typeOrName.name,\n state.schema\n );\n if (schemaType === \"node\") {\n return getNodeAttributes(state, typeOrName);\n }\n if (schemaType === \"mark\") {\n return getMarkAttributes(state, typeOrName);\n }\n return {};\n}\n\n// src/utilities/removeDuplicates.ts\nfunction removeDuplicates(array, by = JSON.stringify) {\n const seen = {};\n return array.filter((item) => {\n const key = by(item);\n return Object.prototype.hasOwnProperty.call(seen, key) ? false : seen[key] = true;\n });\n}\n\n// src/helpers/getChangedRanges.ts\nfunction simplifyChangedRanges(changes) {\n const uniqueChanges = removeDuplicates(changes);\n return uniqueChanges.length === 1 ? uniqueChanges : uniqueChanges.filter((change, index) => {\n const rest = uniqueChanges.filter((_, i) => i !== index);\n return !rest.some((otherChange) => {\n return change.oldRange.from >= otherChange.oldRange.from && change.oldRange.to <= otherChange.oldRange.to && change.newRange.from >= otherChange.newRange.from && change.newRange.to <= otherChange.newRange.to;\n });\n });\n}\nfunction getChangedRanges(transform) {\n const { mapping, steps } = transform;\n const changes = [];\n mapping.maps.forEach((stepMap, index) => {\n const ranges = [];\n if (!stepMap.ranges.length) {\n const { from, to } = steps[index];\n if (from === void 0 || to === void 0) {\n return;\n }\n ranges.push({ from, to });\n } else {\n stepMap.forEach((from, to) => {\n ranges.push({ from, to });\n });\n }\n ranges.forEach(({ from, to }) => {\n const newStart = mapping.slice(index).map(from, -1);\n const newEnd = mapping.slice(index).map(to);\n const oldStart = mapping.invert().map(newStart, -1);\n const oldEnd = mapping.invert().map(newEnd);\n changes.push({\n oldRange: {\n from: oldStart,\n to: oldEnd\n },\n newRange: {\n from: newStart,\n to: newEnd\n }\n });\n });\n });\n return simplifyChangedRanges(changes);\n}\n\n// src/helpers/getDebugJSON.ts\nfunction getDebugJSON(node, startOffset = 0) {\n const isTopNode = node.type === node.type.schema.topNodeType;\n const increment = isTopNode ? 0 : 1;\n const from = startOffset;\n const to = from + node.nodeSize;\n const marks = node.marks.map((mark) => {\n const output2 = {\n type: mark.type.name\n };\n if (Object.keys(mark.attrs).length) {\n output2.attrs = { ...mark.attrs };\n }\n return output2;\n });\n const attrs = { ...node.attrs };\n const output = {\n type: node.type.name,\n from,\n to\n };\n if (Object.keys(attrs).length) {\n output.attrs = attrs;\n }\n if (marks.length) {\n output.marks = marks;\n }\n if (node.content.childCount) {\n output.content = [];\n node.forEach((child, offset) => {\n var _a;\n (_a = output.content) == null ? void 0 : _a.push(getDebugJSON(child, startOffset + offset + increment));\n });\n }\n if (node.text) {\n output.text = node.text;\n }\n return output;\n}\n\n// src/helpers/getMarksBetween.ts\nfunction getMarksBetween(from, to, doc) {\n const marks = [];\n if (from === to) {\n doc.resolve(from).marks().forEach((mark) => {\n const $pos = doc.resolve(from);\n const range = getMarkRange($pos, mark.type);\n if (!range) {\n return;\n }\n marks.push({\n mark,\n ...range\n });\n });\n } else {\n doc.nodesBetween(from, to, (node, pos) => {\n if (!node || (node == null ? void 0 : node.nodeSize) === void 0) {\n return;\n }\n marks.push(\n ...node.marks.map((mark) => ({\n from: pos,\n to: pos + node.nodeSize,\n mark\n }))\n );\n });\n }\n return marks;\n}\n\n// src/helpers/getNodeAtPosition.ts\nvar getNodeAtPosition = (state, typeOrName, pos, maxDepth = 20) => {\n const $pos = state.doc.resolve(pos);\n let currentDepth = maxDepth;\n let node = null;\n while (currentDepth > 0 && node === null) {\n const currentNode = $pos.node(currentDepth);\n if ((currentNode == null ? void 0 : currentNode.type.name) === typeOrName) {\n node = currentNode;\n } else {\n currentDepth -= 1;\n }\n }\n return [node, currentDepth];\n};\n\n// src/helpers/getSchemaTypeByName.ts\nfunction getSchemaTypeByName(name, schema) {\n return schema.nodes[name] || schema.marks[name] || null;\n}\n\n// src/helpers/getSplittedAttributes.ts\nfunction getSplittedAttributes(extensionAttributes, typeName, attributes) {\n return Object.fromEntries(\n Object.entries(attributes).filter(([name]) => {\n const extensionAttribute = extensionAttributes.find((item) => {\n return item.type === typeName && item.name === name;\n });\n if (!extensionAttribute) {\n return false;\n }\n return extensionAttribute.attribute.keepOnSplit;\n })\n );\n}\n\n// src/helpers/getTextContentFromNodes.ts\nvar getTextContentFromNodes = ($from, maxMatch = 500) => {\n let textBefore = \"\";\n const sliceEndPos = $from.parentOffset;\n $from.parent.nodesBetween(Math.max(0, sliceEndPos - maxMatch), sliceEndPos, (node, pos, parent, index) => {\n var _a, _b;\n const chunk = ((_b = (_a = node.type.spec).toText) == null ? void 0 : _b.call(_a, {\n node,\n pos,\n parent,\n index\n })) || node.textContent || \"%leaf%\";\n textBefore += node.isAtom && !node.isText ? chunk : chunk.slice(0, Math.max(0, sliceEndPos - pos));\n });\n return textBefore;\n};\n\n// src/helpers/isMarkActive.ts\nfunction isMarkActive(state, typeOrName, attributes = {}) {\n const { empty, ranges } = state.selection;\n const type = typeOrName ? getMarkType(typeOrName, state.schema) : null;\n if (empty) {\n return !!(state.storedMarks || state.selection.$from.marks()).filter((mark) => {\n if (!type) {\n return true;\n }\n return type.name === mark.type.name;\n }).find((mark) => objectIncludes(mark.attrs, attributes, { strict: false }));\n }\n let selectionRange = 0;\n const markRanges = [];\n ranges.forEach(({ $from, $to }) => {\n const from = $from.pos;\n const to = $to.pos;\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText && !node.marks.length) {\n return;\n }\n const relativeFrom = Math.max(from, pos);\n const relativeTo = Math.min(to, pos + node.nodeSize);\n const range2 = relativeTo - relativeFrom;\n selectionRange += range2;\n markRanges.push(\n ...node.marks.map((mark) => ({\n mark,\n from: relativeFrom,\n to: relativeTo\n }))\n );\n });\n });\n if (selectionRange === 0) {\n return false;\n }\n const matchedRange = markRanges.filter((markRange) => {\n if (!type) {\n return true;\n }\n return type.name === markRange.mark.type.name;\n }).filter((markRange) => objectIncludes(markRange.mark.attrs, attributes, { strict: false })).reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\n const excludedRange = markRanges.filter((markRange) => {\n if (!type) {\n return true;\n }\n return markRange.mark.type !== type && markRange.mark.type.excludes(type);\n }).reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\n const range = matchedRange > 0 ? matchedRange + excludedRange : matchedRange;\n return range >= selectionRange;\n}\n\n// src/helpers/isActive.ts\nfunction isActive(state, name, attributes = {}) {\n if (!name) {\n return isNodeActive(state, null, attributes) || isMarkActive(state, null, attributes);\n }\n const schemaType = getSchemaTypeNameByName(name, state.schema);\n if (schemaType === \"node\") {\n return isNodeActive(state, name, attributes);\n }\n if (schemaType === \"mark\") {\n return isMarkActive(state, name, attributes);\n }\n return false;\n}\n\n// src/helpers/isAtEndOfNode.ts\nvar isAtEndOfNode = (state, nodeType) => {\n const { $from, $to, $anchor } = state.selection;\n if (nodeType) {\n const parentNode = findParentNode((node) => node.type.name === nodeType)(state.selection);\n if (!parentNode) {\n return false;\n }\n const $parentPos = state.doc.resolve(parentNode.pos + 1);\n if ($anchor.pos + 1 === $parentPos.end()) {\n return true;\n }\n return false;\n }\n if ($to.parentOffset < $to.parent.nodeSize - 2 || $from.pos !== $to.pos) {\n return false;\n }\n return true;\n};\n\n// src/helpers/isAtStartOfNode.ts\nvar isAtStartOfNode = (state) => {\n const { $from, $to } = state.selection;\n if ($from.parentOffset > 0 || $from.pos !== $to.pos) {\n return false;\n }\n return true;\n};\n\n// src/helpers/isExtensionRulesEnabled.ts\nfunction isExtensionRulesEnabled(extension, enabled) {\n if (Array.isArray(enabled)) {\n return enabled.some((enabledExtension) => {\n const name = typeof enabledExtension === \"string\" ? enabledExtension : enabledExtension.name;\n return name === extension.name;\n });\n }\n return enabled;\n}\n\n// src/helpers/isList.ts\nfunction isList(name, extensions) {\n const { nodeExtensions } = splitExtensions(extensions);\n const extension = nodeExtensions.find((item) => item.name === name);\n if (!extension) {\n return false;\n }\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage\n };\n const group = callOrReturn(getExtensionField(extension, \"group\", context));\n if (typeof group !== \"string\") {\n return false;\n }\n return group.split(\" \").includes(\"list\");\n}\n\n// src/helpers/isNodeEmpty.ts\nfunction isNodeEmpty(node, {\n checkChildren = true,\n ignoreWhitespace = false\n} = {}) {\n var _a;\n if (ignoreWhitespace) {\n if (node.type.name === \"hardBreak\") {\n return true;\n }\n if (node.isText) {\n return /^\\s*$/m.test((_a = node.text) != null ? _a : \"\");\n }\n }\n if (node.isText) {\n return !node.text;\n }\n if (node.isAtom || node.isLeaf) {\n return false;\n }\n if (node.content.childCount === 0) {\n return true;\n }\n if (checkChildren) {\n let isContentEmpty = true;\n node.content.forEach((childNode) => {\n if (isContentEmpty === false) {\n return;\n }\n if (!isNodeEmpty(childNode, { ignoreWhitespace, checkChildren })) {\n isContentEmpty = false;\n }\n });\n return isContentEmpty;\n }\n return false;\n}\n\n// src/helpers/isNodeSelection.ts\n\nfunction isNodeSelection(value) {\n return value instanceof _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.NodeSelection;\n}\n\n// src/helpers/MappablePosition.ts\nvar MappablePosition = class _MappablePosition {\n constructor(position) {\n this.position = position;\n }\n /**\n * Creates a MappablePosition from a JSON object.\n */\n static fromJSON(json) {\n return new _MappablePosition(json.position);\n }\n /**\n * Converts the MappablePosition to a JSON object.\n */\n toJSON() {\n return {\n position: this.position\n };\n }\n};\nfunction getUpdatedPosition(position, transaction) {\n const mapResult = transaction.mapping.mapResult(position.position);\n return {\n position: new MappablePosition(mapResult.pos),\n mapResult\n };\n}\nfunction createMappablePosition(position) {\n return new MappablePosition(position);\n}\n\n// src/helpers/posToDOMRect.ts\nfunction posToDOMRect(view, from, to) {\n const minPos = 0;\n const maxPos = view.state.doc.content.size;\n const resolvedFrom = minMax(from, minPos, maxPos);\n const resolvedEnd = minMax(to, minPos, maxPos);\n const start = view.coordsAtPos(resolvedFrom);\n const end = view.coordsAtPos(resolvedEnd, -1);\n const top = Math.min(start.top, end.top);\n const bottom = Math.max(start.bottom, end.bottom);\n const left = Math.min(start.left, end.left);\n const right = Math.max(start.right, end.right);\n const width = right - left;\n const height = bottom - top;\n const x = left;\n const y = top;\n const data = {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x,\n y\n };\n return {\n ...data,\n toJSON: () => data\n };\n}\n\n// src/helpers/rewriteUnknownContent.ts\nfunction rewriteUnknownContentInner({\n json,\n validMarks,\n validNodes,\n options,\n rewrittenContent = []\n}) {\n if (json.marks && Array.isArray(json.marks)) {\n json.marks = json.marks.filter((mark) => {\n const name = typeof mark === \"string\" ? mark : mark.type;\n if (validMarks.has(name)) {\n return true;\n }\n rewrittenContent.push({\n original: JSON.parse(JSON.stringify(mark)),\n unsupported: name\n });\n return false;\n });\n }\n if (json.content && Array.isArray(json.content)) {\n json.content = json.content.map(\n (value) => rewriteUnknownContentInner({\n json: value,\n validMarks,\n validNodes,\n options,\n rewrittenContent\n }).json\n ).filter((a) => a !== null && a !== void 0);\n }\n if (json.type && !validNodes.has(json.type)) {\n rewrittenContent.push({\n original: JSON.parse(JSON.stringify(json)),\n unsupported: json.type\n });\n if (json.content && Array.isArray(json.content) && (options == null ? void 0 : options.fallbackToParagraph) !== false) {\n json.type = \"paragraph\";\n return {\n json,\n rewrittenContent\n };\n }\n return {\n json: null,\n rewrittenContent\n };\n }\n return { json, rewrittenContent };\n}\nfunction rewriteUnknownContent(json, schema, options) {\n return rewriteUnknownContentInner({\n json,\n validNodes: new Set(Object.keys(schema.nodes)),\n validMarks: new Set(Object.keys(schema.marks)),\n options\n });\n}\n\n// src/commands/setMark.ts\nfunction canSetMark(state, tr, newMarkType) {\n var _a;\n const { selection } = tr;\n let cursor = null;\n if (isTextSelection(selection)) {\n cursor = selection.$cursor;\n }\n if (cursor) {\n const currentMarks = (_a = state.storedMarks) != null ? _a : cursor.marks();\n const parentAllowsMarkType = cursor.parent.type.allowsMarkType(newMarkType);\n return parentAllowsMarkType && (!!newMarkType.isInSet(currentMarks) || !currentMarks.some((mark) => mark.type.excludes(newMarkType)));\n }\n const { ranges } = selection;\n return ranges.some(({ $from, $to }) => {\n let someNodeSupportsMark = $from.depth === 0 ? state.doc.inlineContent && state.doc.type.allowsMarkType(newMarkType) : false;\n state.doc.nodesBetween($from.pos, $to.pos, (node, _pos, parent) => {\n if (someNodeSupportsMark) {\n return false;\n }\n if (node.isInline) {\n const parentAllowsMarkType = !parent || parent.type.allowsMarkType(newMarkType);\n const currentMarksAllowMarkType = !!newMarkType.isInSet(node.marks) || !node.marks.some((otherMark) => otherMark.type.excludes(newMarkType));\n someNodeSupportsMark = parentAllowsMarkType && currentMarksAllowMarkType;\n }\n return !someNodeSupportsMark;\n });\n return someNodeSupportsMark;\n });\n}\nvar setMark = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n const { selection } = tr;\n const { empty, ranges } = selection;\n const type = getMarkType(typeOrName, state.schema);\n if (dispatch) {\n if (empty) {\n const oldAttributes = getMarkAttributes(state, type);\n tr.addStoredMark(\n type.create({\n ...oldAttributes,\n ...attributes\n })\n );\n } else {\n ranges.forEach((range) => {\n const from = range.$from.pos;\n const to = range.$to.pos;\n state.doc.nodesBetween(from, to, (node, pos) => {\n const trimmedFrom = Math.max(pos, from);\n const trimmedTo = Math.min(pos + node.nodeSize, to);\n const someHasMark = node.marks.find((mark) => mark.type === type);\n if (someHasMark) {\n node.marks.forEach((mark) => {\n if (type === mark.type) {\n tr.addMark(\n trimmedFrom,\n trimmedTo,\n type.create({\n ...mark.attrs,\n ...attributes\n })\n );\n }\n });\n } else {\n tr.addMark(trimmedFrom, trimmedTo, type.create(attributes));\n }\n });\n });\n }\n }\n return canSetMark(state, tr, type);\n};\n\n// src/commands/setMeta.ts\nvar setMeta = (key, value) => ({ tr }) => {\n tr.setMeta(key, value);\n return true;\n};\n\n// src/commands/setNode.ts\n\nvar setNode = (typeOrName, attributes = {}) => ({ state, dispatch, chain }) => {\n const type = getNodeType(typeOrName, state.schema);\n let attributesToCopy;\n if (state.selection.$anchor.sameParent(state.selection.$head)) {\n attributesToCopy = state.selection.$anchor.parent.attrs;\n }\n if (!type.isTextblock) {\n console.warn('[tiptap warn]: Currently \"setNode()\" only supports text block nodes.');\n return false;\n }\n return chain().command(({ commands }) => {\n const canSetBlock = (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.setBlockType)(type, { ...attributesToCopy, ...attributes })(state);\n if (canSetBlock) {\n return true;\n }\n return commands.clearNodes();\n }).command(({ state: updatedState }) => {\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.setBlockType)(type, { ...attributesToCopy, ...attributes })(updatedState, dispatch);\n }).run();\n};\n\n// src/commands/setNodeSelection.ts\n\nvar setNodeSelection = (position) => ({ tr, dispatch }) => {\n if (dispatch) {\n const { doc } = tr;\n const from = minMax(position, 0, doc.content.size);\n const selection = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.NodeSelection.create(doc, from);\n tr.setSelection(selection);\n }\n return true;\n};\n\n// src/commands/setTextDirection.ts\nvar setTextDirection = (direction, position) => ({ tr, state, dispatch }) => {\n const { selection } = state;\n let from;\n let to;\n if (typeof position === \"number\") {\n from = position;\n to = position;\n } else if (position && \"from\" in position && \"to\" in position) {\n from = position.from;\n to = position.to;\n } else {\n from = selection.from;\n to = selection.to;\n }\n if (dispatch) {\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n return;\n }\n tr.setNodeMarkup(pos, void 0, {\n ...node.attrs,\n dir: direction\n });\n });\n }\n return true;\n};\n\n// src/commands/setTextSelection.ts\n\nvar setTextSelection = (position) => ({ tr, dispatch }) => {\n if (dispatch) {\n const { doc } = tr;\n const { from, to } = typeof position === \"number\" ? { from: position, to: position } : position;\n const minPos = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection.atStart(doc).from;\n const maxPos = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection.atEnd(doc).to;\n const resolvedFrom = minMax(from, minPos, maxPos);\n const resolvedEnd = minMax(to, minPos, maxPos);\n const selection = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection.create(doc, resolvedFrom, resolvedEnd);\n tr.setSelection(selection);\n }\n return true;\n};\n\n// src/commands/sinkListItem.ts\n\nvar sinkListItem = (typeOrName) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return (0,_tiptap_pm_schema_list__WEBPACK_IMPORTED_MODULE_4__.sinkListItem)(type)(state, dispatch);\n};\n\n// src/commands/splitBlock.ts\n\n\nfunction ensureMarks(state, splittableMarks) {\n const marks = state.storedMarks || state.selection.$to.parentOffset && state.selection.$from.marks();\n if (marks) {\n const filteredMarks = marks.filter((mark) => splittableMarks == null ? void 0 : splittableMarks.includes(mark.type.name));\n state.tr.ensureMarks(filteredMarks);\n }\n}\nvar splitBlock = ({ keepMarks = true } = {}) => ({ tr, state, dispatch, editor }) => {\n const { selection, doc } = tr;\n const { $from, $to } = selection;\n const extensionAttributes = editor.extensionManager.attributes;\n const newAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\n if (selection instanceof _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.NodeSelection && selection.node.isBlock) {\n if (!$from.parentOffset || !(0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.canSplit)(doc, $from.pos)) {\n return false;\n }\n if (dispatch) {\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks);\n }\n tr.split($from.pos).scrollIntoView();\n }\n return true;\n }\n if (!$from.parent.isBlock) {\n return false;\n }\n const atEnd = $to.parentOffset === $to.parent.content.size;\n const deflt = $from.depth === 0 ? void 0 : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n let types = atEnd && deflt ? [\n {\n type: deflt,\n attrs: newAttributes\n }\n ] : void 0;\n let can = (0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.canSplit)(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && (0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.canSplit)(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : void 0)) {\n can = true;\n types = deflt ? [\n {\n type: deflt,\n attrs: newAttributes\n }\n ] : void 0;\n }\n if (dispatch) {\n if (can) {\n if (selection instanceof _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection) {\n tr.deleteSelection();\n }\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (deflt && !atEnd && !$from.parentOffset && $from.parent.type !== deflt) {\n const first2 = tr.mapping.map($from.before());\n const $first = tr.doc.resolve(first2);\n if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt)) {\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);\n }\n }\n }\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks);\n }\n tr.scrollIntoView();\n }\n return can;\n};\n\n// src/commands/splitListItem.ts\n\n\n\nvar splitListItem = (typeOrName, overrideAttrs = {}) => ({ tr, state, dispatch, editor }) => {\n var _a;\n const type = getNodeType(typeOrName, state.schema);\n const { $from, $to } = state.selection;\n const node = state.selection.node;\n if (node && node.isBlock || $from.depth < 2 || !$from.sameParent($to)) {\n return false;\n }\n const grandParent = $from.node(-1);\n if (grandParent.type !== type) {\n return false;\n }\n const extensionAttributes = editor.extensionManager.attributes;\n if ($from.parent.content.size === 0 && $from.node(-1).childCount === $from.indexAfter(-1)) {\n if ($from.depth === 2 || $from.node(-3).type !== type || $from.index(-2) !== $from.node(-2).childCount - 1) {\n return false;\n }\n if (dispatch) {\n let wrap = _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Fragment.empty;\n const depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d -= 1) {\n wrap = _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Fragment.from($from.node(d).copy(wrap));\n }\n const depthAfter = (\n // eslint-disable-next-line no-nested-ternary\n $from.indexAfter(-1) < $from.node(-2).childCount ? 1 : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3\n );\n const newNextTypeAttributes2 = {\n ...getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs),\n ...overrideAttrs\n };\n const nextType2 = ((_a = type.contentMatch.defaultType) == null ? void 0 : _a.createAndFill(newNextTypeAttributes2)) || void 0;\n wrap = wrap.append(_tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Fragment.from(type.createAndFill(null, nextType2) || void 0));\n const start = $from.before($from.depth - (depthBefore - 1));\n tr.replace(start, $from.after(-depthAfter), new _tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (n, pos) => {\n if (sel > -1) {\n return false;\n }\n if (n.isTextblock && n.content.size === 0) {\n sel = pos + 1;\n }\n });\n if (sel > -1) {\n tr.setSelection(_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.TextSelection.near(tr.doc.resolve(sel)));\n }\n tr.scrollIntoView();\n }\n return true;\n }\n const nextType = $to.pos === $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n const newTypeAttributes = {\n ...getSplittedAttributes(extensionAttributes, grandParent.type.name, grandParent.attrs),\n ...overrideAttrs\n };\n const newNextTypeAttributes = {\n ...getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs),\n ...overrideAttrs\n };\n tr.delete($from.pos, $to.pos);\n const types = nextType ? [\n { type, attrs: newTypeAttributes },\n { type: nextType, attrs: newNextTypeAttributes }\n ] : [{ type, attrs: newTypeAttributes }];\n if (!(0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.canSplit)(tr.doc, $from.pos, 2)) {\n return false;\n }\n if (dispatch) {\n const { selection, storedMarks } = state;\n const { splittableMarks } = editor.extensionManager;\n const marks = storedMarks || selection.$to.parentOffset && selection.$from.marks();\n tr.split($from.pos, 2, types).scrollIntoView();\n if (!marks || !dispatch) {\n return true;\n }\n const filteredMarks = marks.filter((mark) => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n }\n return true;\n};\n\n// src/commands/toggleList.ts\n\nvar joinListBackwards = (tr, listType) => {\n const list = findParentNode((node) => node.type === listType)(tr.selection);\n if (!list) {\n return true;\n }\n const before = tr.doc.resolve(Math.max(0, list.pos - 1)).before(list.depth);\n if (before === void 0) {\n return true;\n }\n const nodeBefore = tr.doc.nodeAt(before);\n const canJoinBackwards = list.node.type === (nodeBefore == null ? void 0 : nodeBefore.type) && (0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.canJoin)(tr.doc, list.pos);\n if (!canJoinBackwards) {\n return true;\n }\n tr.join(list.pos);\n return true;\n};\nvar joinListForwards = (tr, listType) => {\n const list = findParentNode((node) => node.type === listType)(tr.selection);\n if (!list) {\n return true;\n }\n const after = tr.doc.resolve(list.start).after(list.depth);\n if (after === void 0) {\n return true;\n }\n const nodeAfter = tr.doc.nodeAt(after);\n const canJoinForwards = list.node.type === (nodeAfter == null ? void 0 : nodeAfter.type) && (0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.canJoin)(tr.doc, after);\n if (!canJoinForwards) {\n return true;\n }\n tr.join(after);\n return true;\n};\nvar toggleList = (listTypeOrName, itemTypeOrName, keepMarks, attributes = {}) => ({ editor, tr, state, dispatch, chain, commands, can }) => {\n const { extensions, splittableMarks } = editor.extensionManager;\n const listType = getNodeType(listTypeOrName, state.schema);\n const itemType = getNodeType(itemTypeOrName, state.schema);\n const { selection, storedMarks } = state;\n const { $from, $to } = selection;\n const range = $from.blockRange($to);\n const marks = storedMarks || selection.$to.parentOffset && selection.$from.marks();\n if (!range) {\n return false;\n }\n const parentList = findParentNode((node) => isList(node.type.name, extensions))(selection);\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\n if (parentList.node.type === listType) {\n return commands.liftListItem(itemType);\n }\n if (isList(parentList.node.type.name, extensions) && listType.validContent(parentList.node.content) && dispatch) {\n return chain().command(() => {\n tr.setNodeMarkup(parentList.pos, listType);\n return true;\n }).command(() => joinListBackwards(tr, listType)).command(() => joinListForwards(tr, listType)).run();\n }\n }\n if (!keepMarks || !marks || !dispatch) {\n return chain().command(() => {\n const canWrapInList = can().wrapInList(listType, attributes);\n if (canWrapInList) {\n return true;\n }\n return commands.clearNodes();\n }).wrapInList(listType, attributes).command(() => joinListBackwards(tr, listType)).command(() => joinListForwards(tr, listType)).run();\n }\n return chain().command(() => {\n const canWrapInList = can().wrapInList(listType, attributes);\n const filteredMarks = marks.filter((mark) => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n if (canWrapInList) {\n return true;\n }\n return commands.clearNodes();\n }).wrapInList(listType, attributes).command(() => joinListBackwards(tr, listType)).command(() => joinListForwards(tr, listType)).run();\n};\n\n// src/commands/toggleMark.ts\nvar toggleMark = (typeOrName, attributes = {}, options = {}) => ({ state, commands }) => {\n const { extendEmptyMarkRange = false } = options;\n const type = getMarkType(typeOrName, state.schema);\n const isActive2 = isMarkActive(state, type, attributes);\n if (isActive2) {\n return commands.unsetMark(type, { extendEmptyMarkRange });\n }\n return commands.setMark(type, attributes);\n};\n\n// src/commands/toggleNode.ts\nvar toggleNode = (typeOrName, toggleTypeOrName, attributes = {}) => ({ state, commands }) => {\n const type = getNodeType(typeOrName, state.schema);\n const toggleType = getNodeType(toggleTypeOrName, state.schema);\n const isActive2 = isNodeActive(state, type, attributes);\n let attributesToCopy;\n if (state.selection.$anchor.sameParent(state.selection.$head)) {\n attributesToCopy = state.selection.$anchor.parent.attrs;\n }\n if (isActive2) {\n return commands.setNode(toggleType, attributesToCopy);\n }\n return commands.setNode(type, { ...attributesToCopy, ...attributes });\n};\n\n// src/commands/toggleWrap.ts\nvar toggleWrap = (typeOrName, attributes = {}) => ({ state, commands }) => {\n const type = getNodeType(typeOrName, state.schema);\n const isActive2 = isNodeActive(state, type, attributes);\n if (isActive2) {\n return commands.lift(type);\n }\n return commands.wrapIn(type, attributes);\n};\n\n// src/commands/undoInputRule.ts\nvar undoInputRule = () => ({ state, dispatch }) => {\n const plugins = state.plugins;\n for (let i = 0; i < plugins.length; i += 1) {\n const plugin = plugins[i];\n let undoable;\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n const tr = state.tr;\n const toUndo = undoable.transform;\n for (let j = toUndo.steps.length - 1; j >= 0; j -= 1) {\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\n }\n if (undoable.text) {\n const marks = tr.doc.resolve(undoable.from).marks();\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\n } else {\n tr.delete(undoable.from, undoable.to);\n }\n }\n return true;\n }\n }\n return false;\n};\n\n// src/commands/unsetAllMarks.ts\nvar unsetAllMarks = () => ({ tr, dispatch }) => {\n const { selection } = tr;\n const { empty, ranges } = selection;\n if (empty) {\n return true;\n }\n if (dispatch) {\n ranges.forEach((range) => {\n tr.removeMark(range.$from.pos, range.$to.pos);\n });\n }\n return true;\n};\n\n// src/commands/unsetMark.ts\nvar unsetMark = (typeOrName, options = {}) => ({ tr, state, dispatch }) => {\n var _a;\n const { extendEmptyMarkRange = false } = options;\n const { selection } = tr;\n const type = getMarkType(typeOrName, state.schema);\n const { $from, empty, ranges } = selection;\n if (!dispatch) {\n return true;\n }\n if (empty && extendEmptyMarkRange) {\n let { from, to } = selection;\n const attrs = (_a = $from.marks().find((mark) => mark.type === type)) == null ? void 0 : _a.attrs;\n const range = getMarkRange($from, type, attrs);\n if (range) {\n from = range.from;\n to = range.to;\n }\n tr.removeMark(from, to, type);\n } else {\n ranges.forEach((range) => {\n tr.removeMark(range.$from.pos, range.$to.pos, type);\n });\n }\n tr.removeStoredMark(type);\n return true;\n};\n\n// src/commands/unsetTextDirection.ts\nvar unsetTextDirection = (position) => ({ tr, state, dispatch }) => {\n const { selection } = state;\n let from;\n let to;\n if (typeof position === \"number\") {\n from = position;\n to = position;\n } else if (position && \"from\" in position && \"to\" in position) {\n from = position.from;\n to = position.to;\n } else {\n from = selection.from;\n to = selection.to;\n }\n if (dispatch) {\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n return;\n }\n const newAttrs = { ...node.attrs };\n delete newAttrs.dir;\n tr.setNodeMarkup(pos, void 0, newAttrs);\n });\n }\n return true;\n};\n\n// src/commands/updateAttributes.ts\nvar updateAttributes = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n let nodeType = null;\n let markType = null;\n const schemaType = getSchemaTypeNameByName(\n typeof typeOrName === \"string\" ? typeOrName : typeOrName.name,\n state.schema\n );\n if (!schemaType) {\n return false;\n }\n if (schemaType === \"node\") {\n nodeType = getNodeType(typeOrName, state.schema);\n }\n if (schemaType === \"mark\") {\n markType = getMarkType(typeOrName, state.schema);\n }\n let canUpdate = false;\n tr.selection.ranges.forEach((range) => {\n const from = range.$from.pos;\n const to = range.$to.pos;\n let lastPos;\n let lastNode;\n let trimmedFrom;\n let trimmedTo;\n if (tr.selection.empty) {\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (nodeType && nodeType === node.type) {\n canUpdate = true;\n trimmedFrom = Math.max(pos, from);\n trimmedTo = Math.min(pos + node.nodeSize, to);\n lastPos = pos;\n lastNode = node;\n }\n });\n } else {\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (pos < from && nodeType && nodeType === node.type) {\n canUpdate = true;\n trimmedFrom = Math.max(pos, from);\n trimmedTo = Math.min(pos + node.nodeSize, to);\n lastPos = pos;\n lastNode = node;\n }\n if (pos >= from && pos <= to) {\n if (nodeType && nodeType === node.type) {\n canUpdate = true;\n if (dispatch) {\n tr.setNodeMarkup(pos, void 0, {\n ...node.attrs,\n ...attributes\n });\n }\n }\n if (markType && node.marks.length) {\n node.marks.forEach((mark) => {\n if (markType === mark.type) {\n canUpdate = true;\n if (dispatch) {\n const trimmedFrom2 = Math.max(pos, from);\n const trimmedTo2 = Math.min(pos + node.nodeSize, to);\n tr.addMark(\n trimmedFrom2,\n trimmedTo2,\n markType.create({\n ...mark.attrs,\n ...attributes\n })\n );\n }\n }\n });\n }\n }\n });\n }\n if (lastNode) {\n if (lastPos !== void 0 && dispatch) {\n tr.setNodeMarkup(lastPos, void 0, {\n ...lastNode.attrs,\n ...attributes\n });\n }\n if (markType && lastNode.marks.length) {\n lastNode.marks.forEach((mark) => {\n if (markType === mark.type && dispatch) {\n tr.addMark(\n trimmedFrom,\n trimmedTo,\n markType.create({\n ...mark.attrs,\n ...attributes\n })\n );\n }\n });\n }\n }\n });\n return canUpdate;\n};\n\n// src/commands/wrapIn.ts\n\nvar wrapIn = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return (0,_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_1__.wrapIn)(type, attributes)(state, dispatch);\n};\n\n// src/commands/wrapInList.ts\n\nvar wrapInList = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return (0,_tiptap_pm_schema_list__WEBPACK_IMPORTED_MODULE_4__.wrapInList)(type, attributes)(state, dispatch);\n};\n\n// src/Editor.ts\n\n\n\n// src/EventEmitter.ts\nvar EventEmitter = class {\n constructor() {\n this.callbacks = {};\n }\n on(event, fn) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n this.callbacks[event].push(fn);\n return this;\n }\n emit(event, ...args) {\n const callbacks = this.callbacks[event];\n if (callbacks) {\n callbacks.forEach((callback) => callback.apply(this, args));\n }\n return this;\n }\n off(event, fn) {\n const callbacks = this.callbacks[event];\n if (callbacks) {\n if (fn) {\n this.callbacks[event] = callbacks.filter((callback) => callback !== fn);\n } else {\n delete this.callbacks[event];\n }\n }\n return this;\n }\n once(event, fn) {\n const onceFn = (...args) => {\n this.off(event, onceFn);\n fn.apply(this, args);\n };\n return this.on(event, onceFn);\n }\n removeAllListeners() {\n this.callbacks = {};\n }\n};\n\n// src/ExtensionManager.ts\n\n\n// src/InputRule.ts\n\n\nvar InputRule = class {\n constructor(config) {\n var _a;\n this.find = config.find;\n this.handler = config.handler;\n this.undoable = (_a = config.undoable) != null ? _a : true;\n }\n};\nvar inputRuleMatcherHandler = (text, find) => {\n if (isRegExp(find)) {\n return find.exec(text);\n }\n const inputRuleMatch = find(text);\n if (!inputRuleMatch) {\n return null;\n }\n const result = [inputRuleMatch.text];\n result.index = inputRuleMatch.index;\n result.input = text;\n result.data = inputRuleMatch.data;\n if (inputRuleMatch.replaceWith) {\n if (!inputRuleMatch.text.includes(inputRuleMatch.replaceWith)) {\n console.warn('[tiptap warn]: \"inputRuleMatch.replaceWith\" must be part of \"inputRuleMatch.text\".');\n }\n result.push(inputRuleMatch.replaceWith);\n }\n return result;\n};\nfunction run(config) {\n var _a;\n const { editor, from, to, text, rules, plugin } = config;\n const { view } = editor;\n if (view.composing) {\n return false;\n }\n const $from = view.state.doc.resolve(from);\n if (\n // check for code node\n $from.parent.type.spec.code || // check for code mark\n !!((_a = $from.nodeBefore || $from.nodeAfter) == null ? void 0 : _a.marks.find((mark) => mark.type.spec.code))\n ) {\n return false;\n }\n let matched = false;\n const textBefore = getTextContentFromNodes($from) + text;\n rules.forEach((rule) => {\n if (matched) {\n return;\n }\n const match = inputRuleMatcherHandler(textBefore, rule.find);\n if (!match) {\n return;\n }\n const tr = view.state.tr;\n const state = createChainableState({\n state: view.state,\n transaction: tr\n });\n const range = {\n from: from - (match[0].length - text.length),\n to\n };\n const { commands, chain, can } = new CommandManager({\n editor,\n state\n });\n const handler = rule.handler({\n state,\n range,\n match,\n commands,\n chain,\n can\n });\n if (handler === null || !tr.steps.length) {\n return;\n }\n if (rule.undoable) {\n tr.setMeta(plugin, {\n transform: tr,\n from,\n to,\n text\n });\n }\n view.dispatch(tr);\n matched = true;\n });\n return matched;\n}\nfunction inputRulesPlugin(props) {\n const { editor, rules } = props;\n const plugin = new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n state: {\n init() {\n return null;\n },\n apply(tr, prev, state) {\n const stored = tr.getMeta(plugin);\n if (stored) {\n return stored;\n }\n const simulatedInputMeta = tr.getMeta(\"applyInputRules\");\n const isSimulatedInput = !!simulatedInputMeta;\n if (isSimulatedInput) {\n setTimeout(() => {\n let { text } = simulatedInputMeta;\n if (typeof text === \"string\") {\n text = text;\n } else {\n text = getHTMLFromFragment(_tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Fragment.from(text), state.schema);\n }\n const { from } = simulatedInputMeta;\n const to = from + text.length;\n run({\n editor,\n from,\n to,\n text,\n rules,\n plugin\n });\n });\n }\n return tr.selectionSet || tr.docChanged ? null : prev;\n }\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run({\n editor,\n from,\n to,\n text,\n rules,\n plugin\n });\n },\n handleDOMEvents: {\n compositionend: (view) => {\n setTimeout(() => {\n const { $cursor } = view.state.selection;\n if ($cursor) {\n run({\n editor,\n from: $cursor.pos,\n to: $cursor.pos,\n text: \"\",\n rules,\n plugin\n });\n }\n });\n return false;\n }\n },\n // add support for input rules to trigger on enter\n // this is useful for example for code blocks\n handleKeyDown(view, event) {\n if (event.key !== \"Enter\") {\n return false;\n }\n const { $cursor } = view.state.selection;\n if ($cursor) {\n return run({\n editor,\n from: $cursor.pos,\n to: $cursor.pos,\n text: \"\\n\",\n rules,\n plugin\n });\n }\n return false;\n }\n },\n // @ts-ignore\n isInputRules: true\n });\n return plugin;\n}\n\n// src/utilities/isPlainObject.ts\nfunction getType(value) {\n return Object.prototype.toString.call(value).slice(8, -1);\n}\nfunction isPlainObject(value) {\n if (getType(value) !== \"Object\") {\n return false;\n }\n return value.constructor === Object && Object.getPrototypeOf(value) === Object.prototype;\n}\n\n// src/utilities/mergeDeep.ts\nfunction mergeDeep(target, source) {\n const output = { ...target };\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isPlainObject(source[key]) && isPlainObject(target[key])) {\n output[key] = mergeDeep(target[key], source[key]);\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}\n\n// src/Extendable.ts\nvar Extendable = class {\n constructor(config = {}) {\n this.type = \"extendable\";\n this.parent = null;\n this.child = null;\n this.name = \"\";\n this.config = {\n name: this.name\n };\n this.config = {\n ...this.config,\n ...config\n };\n this.name = this.config.name;\n }\n get options() {\n return {\n ...callOrReturn(\n getExtensionField(this, \"addOptions\", {\n name: this.name\n })\n ) || {}\n };\n }\n get storage() {\n return {\n ...callOrReturn(\n getExtensionField(this, \"addStorage\", {\n name: this.name,\n options: this.options\n })\n ) || {}\n };\n }\n configure(options = {}) {\n const extension = this.extend({\n ...this.config,\n addOptions: () => {\n return mergeDeep(this.options, options);\n }\n });\n extension.name = this.name;\n extension.parent = this.parent;\n return extension;\n }\n extend(extendedConfig = {}) {\n const extension = new this.constructor({ ...this.config, ...extendedConfig });\n extension.parent = this;\n this.child = extension;\n extension.name = \"name\" in extendedConfig ? extendedConfig.name : extension.parent.name;\n return extension;\n }\n};\n\n// src/Mark.ts\nvar Mark = class _Mark extends Extendable {\n constructor() {\n super(...arguments);\n this.type = \"mark\";\n }\n /**\n * Create a new Mark instance\n * @param config - Mark configuration object or a function that returns a configuration object\n */\n static create(config = {}) {\n const resolvedConfig = typeof config === \"function\" ? config() : config;\n return new _Mark(resolvedConfig);\n }\n static handleExit({ editor, mark }) {\n const { tr } = editor.state;\n const currentPos = editor.state.selection.$from;\n const isAtEnd = currentPos.pos === currentPos.end();\n if (isAtEnd) {\n const currentMarks = currentPos.marks();\n const isInMark = !!currentMarks.find((m) => (m == null ? void 0 : m.type.name) === mark.name);\n if (!isInMark) {\n return false;\n }\n const removeMark = currentMarks.find((m) => (m == null ? void 0 : m.type.name) === mark.name);\n if (removeMark) {\n tr.removeStoredMark(removeMark);\n }\n tr.insertText(\" \", currentPos.pos);\n editor.view.dispatch(tr);\n return true;\n }\n return false;\n }\n configure(options) {\n return super.configure(options);\n }\n extend(extendedConfig) {\n const resolvedConfig = typeof extendedConfig === \"function\" ? extendedConfig() : extendedConfig;\n return super.extend(resolvedConfig);\n }\n};\n\n// src/PasteRule.ts\n\n\n\n// src/utilities/isNumber.ts\nfunction isNumber(value) {\n return typeof value === \"number\";\n}\n\n// src/PasteRule.ts\nvar PasteRule = class {\n constructor(config) {\n this.find = config.find;\n this.handler = config.handler;\n }\n};\nvar pasteRuleMatcherHandler = (text, find, event) => {\n if (isRegExp(find)) {\n return [...text.matchAll(find)];\n }\n const matches = find(text, event);\n if (!matches) {\n return [];\n }\n return matches.map((pasteRuleMatch) => {\n const result = [pasteRuleMatch.text];\n result.index = pasteRuleMatch.index;\n result.input = text;\n result.data = pasteRuleMatch.data;\n if (pasteRuleMatch.replaceWith) {\n if (!pasteRuleMatch.text.includes(pasteRuleMatch.replaceWith)) {\n console.warn('[tiptap warn]: \"pasteRuleMatch.replaceWith\" must be part of \"pasteRuleMatch.text\".');\n }\n result.push(pasteRuleMatch.replaceWith);\n }\n return result;\n });\n};\nfunction run2(config) {\n const { editor, state, from, to, rule, pasteEvent, dropEvent } = config;\n const { commands, chain, can } = new CommandManager({\n editor,\n state\n });\n const handlers = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n var _a, _b, _c, _d, _e;\n if (((_b = (_a = node.type) == null ? void 0 : _a.spec) == null ? void 0 : _b.code) || !(node.isText || node.isTextblock || node.isInline)) {\n return;\n }\n const contentSize = (_e = (_d = (_c = node.content) == null ? void 0 : _c.size) != null ? _d : node.nodeSize) != null ? _e : 0;\n const resolvedFrom = Math.max(from, pos);\n const resolvedTo = Math.min(to, pos + contentSize);\n if (resolvedFrom >= resolvedTo) {\n return;\n }\n const textToMatch = node.isText ? node.text || \"\" : node.textBetween(resolvedFrom - pos, resolvedTo - pos, void 0, \"\\uFFFC\");\n const matches = pasteRuleMatcherHandler(textToMatch, rule.find, pasteEvent);\n matches.forEach((match) => {\n if (match.index === void 0) {\n return;\n }\n const start = resolvedFrom + match.index + 1;\n const end = start + match[0].length;\n const range = {\n from: state.tr.mapping.map(start),\n to: state.tr.mapping.map(end)\n };\n const handler = rule.handler({\n state,\n range,\n match,\n commands,\n chain,\n can,\n pasteEvent,\n dropEvent\n });\n handlers.push(handler);\n });\n });\n const success = handlers.every((handler) => handler !== null);\n return success;\n}\nvar tiptapDragFromOtherEditor = null;\nvar createClipboardPasteEvent = (text) => {\n var _a;\n const event = new ClipboardEvent(\"paste\", {\n clipboardData: new DataTransfer()\n });\n (_a = event.clipboardData) == null ? void 0 : _a.setData(\"text/html\", text);\n return event;\n};\nfunction pasteRulesPlugin(props) {\n const { editor, rules } = props;\n let dragSourceElement = null;\n let isPastedFromProseMirror = false;\n let isDroppedFromProseMirror = false;\n let pasteEvent = typeof ClipboardEvent !== \"undefined\" ? new ClipboardEvent(\"paste\") : null;\n let dropEvent;\n try {\n dropEvent = typeof DragEvent !== \"undefined\" ? new DragEvent(\"drop\") : null;\n } catch {\n dropEvent = null;\n }\n const processEvent = ({\n state,\n from,\n to,\n rule,\n pasteEvt\n }) => {\n const tr = state.tr;\n const chainableState = createChainableState({\n state,\n transaction: tr\n });\n const handler = run2({\n editor,\n state: chainableState,\n from: Math.max(from - 1, 0),\n to: to.b - 1,\n rule,\n pasteEvent: pasteEvt,\n dropEvent\n });\n if (!handler || !tr.steps.length) {\n return;\n }\n try {\n dropEvent = typeof DragEvent !== \"undefined\" ? new DragEvent(\"drop\") : null;\n } catch {\n dropEvent = null;\n }\n pasteEvent = typeof ClipboardEvent !== \"undefined\" ? new ClipboardEvent(\"paste\") : null;\n return tr;\n };\n const plugins = rules.map((rule) => {\n return new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n // we register a global drag handler to track the current drag source element\n view(view) {\n const handleDragstart = (event) => {\n var _a;\n dragSourceElement = ((_a = view.dom.parentElement) == null ? void 0 : _a.contains(event.target)) ? view.dom.parentElement : null;\n if (dragSourceElement) {\n tiptapDragFromOtherEditor = editor;\n }\n };\n const handleDragend = () => {\n if (tiptapDragFromOtherEditor) {\n tiptapDragFromOtherEditor = null;\n }\n };\n window.addEventListener(\"dragstart\", handleDragstart);\n window.addEventListener(\"dragend\", handleDragend);\n return {\n destroy() {\n window.removeEventListener(\"dragstart\", handleDragstart);\n window.removeEventListener(\"dragend\", handleDragend);\n }\n };\n },\n props: {\n handleDOMEvents: {\n drop: (view, event) => {\n isDroppedFromProseMirror = dragSourceElement === view.dom.parentElement;\n dropEvent = event;\n if (!isDroppedFromProseMirror) {\n const dragFromOtherEditor = tiptapDragFromOtherEditor;\n if (dragFromOtherEditor == null ? void 0 : dragFromOtherEditor.isEditable) {\n setTimeout(() => {\n const selection = dragFromOtherEditor.state.selection;\n if (selection) {\n dragFromOtherEditor.commands.deleteRange({ from: selection.from, to: selection.to });\n }\n }, 10);\n }\n }\n return false;\n },\n paste: (_view, event) => {\n var _a;\n const html = (_a = event.clipboardData) == null ? void 0 : _a.getData(\"text/html\");\n pasteEvent = event;\n isPastedFromProseMirror = !!(html == null ? void 0 : html.includes(\"data-pm-slice\"));\n return false;\n }\n }\n },\n appendTransaction: (transactions, oldState, state) => {\n const transaction = transactions[0];\n const isPaste = transaction.getMeta(\"uiEvent\") === \"paste\" && !isPastedFromProseMirror;\n const isDrop = transaction.getMeta(\"uiEvent\") === \"drop\" && !isDroppedFromProseMirror;\n const simulatedPasteMeta = transaction.getMeta(\"applyPasteRules\");\n const isSimulatedPaste = !!simulatedPasteMeta;\n if (!isPaste && !isDrop && !isSimulatedPaste) {\n return;\n }\n if (isSimulatedPaste) {\n let { text } = simulatedPasteMeta;\n if (typeof text === \"string\") {\n text = text;\n } else {\n text = getHTMLFromFragment(_tiptap_pm_model__WEBPACK_IMPORTED_MODULE_3__.Fragment.from(text), state.schema);\n }\n const { from: from2 } = simulatedPasteMeta;\n const to2 = from2 + text.length;\n const pasteEvt = createClipboardPasteEvent(text);\n return processEvent({\n rule,\n state,\n from: from2,\n to: { b: to2 },\n pasteEvt\n });\n }\n const from = oldState.doc.content.findDiffStart(state.doc.content);\n const to = oldState.doc.content.findDiffEnd(state.doc.content);\n if (!isNumber(from) || !to || from === to.b) {\n return;\n }\n return processEvent({\n rule,\n state,\n from,\n to,\n pasteEvt: pasteEvent\n });\n }\n });\n });\n return plugins;\n}\n\n// src/ExtensionManager.ts\nvar ExtensionManager = class {\n constructor(extensions, editor) {\n this.splittableMarks = [];\n this.editor = editor;\n this.baseExtensions = extensions;\n this.extensions = resolveExtensions(extensions);\n this.schema = getSchemaByResolvedExtensions(this.extensions, editor);\n this.setupExtensions();\n }\n /**\n * Get all commands from the extensions.\n * @returns An object with all commands where the key is the command name and the value is the command function\n */\n get commands() {\n return this.extensions.reduce((commands, extension) => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: this.editor.extensionStorage[extension.name],\n editor: this.editor,\n type: getSchemaTypeByName(extension.name, this.schema)\n };\n const addCommands = getExtensionField(extension, \"addCommands\", context);\n if (!addCommands) {\n return commands;\n }\n return {\n ...commands,\n ...addCommands()\n };\n }, {});\n }\n /**\n * Get all registered Prosemirror plugins from the extensions.\n * @returns An array of Prosemirror plugins\n */\n get plugins() {\n const { editor } = this;\n const extensions = sortExtensions([...this.extensions].reverse());\n const allPlugins = extensions.flatMap((extension) => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: this.editor.extensionStorage[extension.name],\n editor,\n type: getSchemaTypeByName(extension.name, this.schema)\n };\n const plugins = [];\n const addKeyboardShortcuts = getExtensionField(\n extension,\n \"addKeyboardShortcuts\",\n context\n );\n let defaultBindings = {};\n if (extension.type === \"mark\" && getExtensionField(extension, \"exitable\", context)) {\n defaultBindings.ArrowRight = () => Mark.handleExit({ editor, mark: extension });\n }\n if (addKeyboardShortcuts) {\n const bindings = Object.fromEntries(\n Object.entries(addKeyboardShortcuts()).map(([shortcut, method]) => {\n return [shortcut, () => method({ editor })];\n })\n );\n defaultBindings = { ...defaultBindings, ...bindings };\n }\n const keyMapPlugin = (0,_tiptap_pm_keymap__WEBPACK_IMPORTED_MODULE_6__.keymap)(defaultBindings);\n plugins.push(keyMapPlugin);\n const addInputRules = getExtensionField(extension, \"addInputRules\", context);\n if (isExtensionRulesEnabled(extension, editor.options.enableInputRules) && addInputRules) {\n const rules = addInputRules();\n if (rules && rules.length) {\n const inputResult = inputRulesPlugin({\n editor,\n rules\n });\n const inputPlugins = Array.isArray(inputResult) ? inputResult : [inputResult];\n plugins.push(...inputPlugins);\n }\n }\n const addPasteRules = getExtensionField(extension, \"addPasteRules\", context);\n if (isExtensionRulesEnabled(extension, editor.options.enablePasteRules) && addPasteRules) {\n const rules = addPasteRules();\n if (rules && rules.length) {\n const pasteRules = pasteRulesPlugin({ editor, rules });\n plugins.push(...pasteRules);\n }\n }\n const addProseMirrorPlugins = getExtensionField(\n extension,\n \"addProseMirrorPlugins\",\n context\n );\n if (addProseMirrorPlugins) {\n const proseMirrorPlugins = addProseMirrorPlugins();\n plugins.push(...proseMirrorPlugins);\n }\n return plugins;\n });\n return allPlugins;\n }\n /**\n * Get all attributes from the extensions.\n * @returns An array of attributes\n */\n get attributes() {\n return getAttributesFromExtensions(this.extensions);\n }\n /**\n * Get all node views from the extensions.\n * @returns An object with all node views where the key is the node name and the value is the node view function\n */\n get nodeViews() {\n const { editor } = this;\n const { nodeExtensions } = splitExtensions(this.extensions);\n return Object.fromEntries(\n nodeExtensions.filter((extension) => !!getExtensionField(extension, \"addNodeView\")).map((extension) => {\n const extensionAttributes = this.attributes.filter((attribute) => attribute.type === extension.name);\n const context = {\n name: extension.name,\n options: extension.options,\n storage: this.editor.extensionStorage[extension.name],\n editor,\n type: getNodeType(extension.name, this.schema)\n };\n const addNodeView = getExtensionField(extension, \"addNodeView\", context);\n if (!addNodeView) {\n return [];\n }\n const nodeViewResult = addNodeView();\n if (!nodeViewResult) {\n return [];\n }\n const nodeview = (node, view, getPos, decorations, innerDecorations) => {\n const HTMLAttributes = getRenderedAttributes(node, extensionAttributes);\n return nodeViewResult({\n // pass-through\n node,\n view,\n getPos,\n decorations,\n innerDecorations,\n // tiptap-specific\n editor,\n extension,\n HTMLAttributes\n });\n };\n return [extension.name, nodeview];\n })\n );\n }\n /**\n * Get the composed dispatchTransaction function from all extensions.\n * @param baseDispatch The base dispatch function (e.g. from the editor or user props)\n * @returns A composed dispatch function\n */\n dispatchTransaction(baseDispatch) {\n const { editor } = this;\n const extensions = sortExtensions([...this.extensions].reverse());\n return extensions.reduceRight((next, extension) => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: this.editor.extensionStorage[extension.name],\n editor,\n type: getSchemaTypeByName(extension.name, this.schema)\n };\n const dispatchTransaction = getExtensionField(\n extension,\n \"dispatchTransaction\",\n context\n );\n if (!dispatchTransaction) {\n return next;\n }\n return (transaction) => {\n dispatchTransaction.call(context, { transaction, next });\n };\n }, baseDispatch);\n }\n get markViews() {\n const { editor } = this;\n const { markExtensions } = splitExtensions(this.extensions);\n return Object.fromEntries(\n markExtensions.filter((extension) => !!getExtensionField(extension, \"addMarkView\")).map((extension) => {\n const extensionAttributes = this.attributes.filter((attribute) => attribute.type === extension.name);\n const context = {\n name: extension.name,\n options: extension.options,\n storage: this.editor.extensionStorage[extension.name],\n editor,\n type: getMarkType(extension.name, this.schema)\n };\n const addMarkView = getExtensionField(extension, \"addMarkView\", context);\n if (!addMarkView) {\n return [];\n }\n const markView = (mark, view, inline) => {\n const HTMLAttributes = getRenderedAttributes(mark, extensionAttributes);\n return addMarkView()({\n // pass-through\n mark,\n view,\n inline,\n // tiptap-specific\n editor,\n extension,\n HTMLAttributes,\n updateAttributes: (attrs) => {\n updateMarkViewAttributes(mark, editor, attrs);\n }\n });\n };\n return [extension.name, markView];\n })\n );\n }\n /**\n * Go through all extensions, create extension storages & setup marks\n * & bind editor event listener.\n */\n setupExtensions() {\n const extensions = this.extensions;\n this.editor.extensionStorage = Object.fromEntries(\n extensions.map((extension) => [extension.name, extension.storage])\n );\n extensions.forEach((extension) => {\n var _a;\n const context = {\n name: extension.name,\n options: extension.options,\n storage: this.editor.extensionStorage[extension.name],\n editor: this.editor,\n type: getSchemaTypeByName(extension.name, this.schema)\n };\n if (extension.type === \"mark\") {\n const keepOnSplit = (_a = callOrReturn(getExtensionField(extension, \"keepOnSplit\", context))) != null ? _a : true;\n if (keepOnSplit) {\n this.splittableMarks.push(extension.name);\n }\n }\n const onBeforeCreate = getExtensionField(extension, \"onBeforeCreate\", context);\n const onCreate = getExtensionField(extension, \"onCreate\", context);\n const onUpdate = getExtensionField(extension, \"onUpdate\", context);\n const onSelectionUpdate = getExtensionField(\n extension,\n \"onSelectionUpdate\",\n context\n );\n const onTransaction = getExtensionField(extension, \"onTransaction\", context);\n const onFocus = getExtensionField(extension, \"onFocus\", context);\n const onBlur = getExtensionField(extension, \"onBlur\", context);\n const onDestroy = getExtensionField(extension, \"onDestroy\", context);\n if (onBeforeCreate) {\n this.editor.on(\"beforeCreate\", onBeforeCreate);\n }\n if (onCreate) {\n this.editor.on(\"create\", onCreate);\n }\n if (onUpdate) {\n this.editor.on(\"update\", onUpdate);\n }\n if (onSelectionUpdate) {\n this.editor.on(\"selectionUpdate\", onSelectionUpdate);\n }\n if (onTransaction) {\n this.editor.on(\"transaction\", onTransaction);\n }\n if (onFocus) {\n this.editor.on(\"focus\", onFocus);\n }\n if (onBlur) {\n this.editor.on(\"blur\", onBlur);\n }\n if (onDestroy) {\n this.editor.on(\"destroy\", onDestroy);\n }\n });\n }\n};\nExtensionManager.resolve = resolveExtensions;\nExtensionManager.sort = sortExtensions;\nExtensionManager.flatten = flattenExtensions;\n\n// src/extensions/index.ts\nvar extensions_exports = {};\n__export(extensions_exports, {\n ClipboardTextSerializer: () => ClipboardTextSerializer,\n Commands: () => Commands,\n Delete: () => Delete,\n Drop: () => Drop,\n Editable: () => Editable,\n FocusEvents: () => FocusEvents,\n Keymap: () => Keymap,\n Paste: () => Paste,\n Tabindex: () => Tabindex,\n TextDirection: () => TextDirection,\n focusEventsPluginKey: () => focusEventsPluginKey\n});\n\n// src/extensions/clipboardTextSerializer.ts\n\n\n// src/Extension.ts\nvar Extension = class _Extension extends Extendable {\n constructor() {\n super(...arguments);\n this.type = \"extension\";\n }\n /**\n * Create a new Extension instance\n * @param config - Extension configuration object or a function that returns a configuration object\n */\n static create(config = {}) {\n const resolvedConfig = typeof config === \"function\" ? config() : config;\n return new _Extension(resolvedConfig);\n }\n configure(options) {\n return super.configure(options);\n }\n extend(extendedConfig) {\n const resolvedConfig = typeof extendedConfig === \"function\" ? extendedConfig() : extendedConfig;\n return super.extend(resolvedConfig);\n }\n};\n\n// src/extensions/clipboardTextSerializer.ts\nvar ClipboardTextSerializer = Extension.create({\n name: \"clipboardTextSerializer\",\n addOptions() {\n return {\n blockSeparator: void 0\n };\n },\n addProseMirrorPlugins() {\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"clipboardTextSerializer\"),\n props: {\n clipboardTextSerializer: () => {\n const { editor } = this;\n const { state, schema } = editor;\n const { doc, selection } = state;\n const { ranges } = selection;\n const from = Math.min(...ranges.map((range2) => range2.$from.pos));\n const to = Math.max(...ranges.map((range2) => range2.$to.pos));\n const textSerializers = getTextSerializersFromSchema(schema);\n const range = { from, to };\n return getTextBetween(doc, range, {\n ...this.options.blockSeparator !== void 0 ? { blockSeparator: this.options.blockSeparator } : {},\n textSerializers\n });\n }\n }\n })\n ];\n }\n});\n\n// src/extensions/commands.ts\nvar Commands = Extension.create({\n name: \"commands\",\n addCommands() {\n return {\n ...commands_exports\n };\n }\n});\n\n// src/extensions/delete.ts\n\nvar Delete = Extension.create({\n name: \"delete\",\n onUpdate({ transaction, appendedTransactions }) {\n var _a, _b, _c;\n const callback = () => {\n var _a2, _b2, _c2, _d;\n if ((_d = (_c2 = (_b2 = (_a2 = this.editor.options.coreExtensionOptions) == null ? void 0 : _a2.delete) == null ? void 0 : _b2.filterTransaction) == null ? void 0 : _c2.call(_b2, transaction)) != null ? _d : transaction.getMeta(\"y-sync$\")) {\n return;\n }\n const nextTransaction = combineTransactionSteps(transaction.before, [transaction, ...appendedTransactions]);\n const changes = getChangedRanges(nextTransaction);\n changes.forEach((change) => {\n if (nextTransaction.mapping.mapResult(change.oldRange.from).deletedAfter && nextTransaction.mapping.mapResult(change.oldRange.to).deletedBefore) {\n nextTransaction.before.nodesBetween(change.oldRange.from, change.oldRange.to, (node, from) => {\n const to = from + node.nodeSize - 2;\n const isFullyWithinRange = change.oldRange.from <= from && to <= change.oldRange.to;\n this.editor.emit(\"delete\", {\n type: \"node\",\n node,\n from,\n to,\n newFrom: nextTransaction.mapping.map(from),\n newTo: nextTransaction.mapping.map(to),\n deletedRange: change.oldRange,\n newRange: change.newRange,\n partial: !isFullyWithinRange,\n editor: this.editor,\n transaction,\n combinedTransform: nextTransaction\n });\n });\n }\n });\n const mapping = nextTransaction.mapping;\n nextTransaction.steps.forEach((step, index) => {\n var _a3, _b3;\n if (step instanceof _tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.RemoveMarkStep) {\n const newStart = mapping.slice(index).map(step.from, -1);\n const newEnd = mapping.slice(index).map(step.to);\n const oldStart = mapping.invert().map(newStart, -1);\n const oldEnd = mapping.invert().map(newEnd);\n const foundBeforeMark = (_a3 = nextTransaction.doc.nodeAt(newStart - 1)) == null ? void 0 : _a3.marks.some((mark) => mark.eq(step.mark));\n const foundAfterMark = (_b3 = nextTransaction.doc.nodeAt(newEnd)) == null ? void 0 : _b3.marks.some((mark) => mark.eq(step.mark));\n this.editor.emit(\"delete\", {\n type: \"mark\",\n mark: step.mark,\n from: step.from,\n to: step.to,\n deletedRange: {\n from: oldStart,\n to: oldEnd\n },\n newRange: {\n from: newStart,\n to: newEnd\n },\n partial: Boolean(foundAfterMark || foundBeforeMark),\n editor: this.editor,\n transaction,\n combinedTransform: nextTransaction\n });\n }\n });\n };\n if ((_c = (_b = (_a = this.editor.options.coreExtensionOptions) == null ? void 0 : _a.delete) == null ? void 0 : _b.async) != null ? _c : true) {\n setTimeout(callback, 0);\n } else {\n callback();\n }\n }\n});\n\n// src/extensions/drop.ts\n\nvar Drop = Extension.create({\n name: \"drop\",\n addProseMirrorPlugins() {\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"tiptapDrop\"),\n props: {\n handleDrop: (_, e, slice, moved) => {\n this.editor.emit(\"drop\", {\n editor: this.editor,\n event: e,\n slice,\n moved\n });\n }\n }\n })\n ];\n }\n});\n\n// src/extensions/editable.ts\n\nvar Editable = Extension.create({\n name: \"editable\",\n addProseMirrorPlugins() {\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"editable\"),\n props: {\n editable: () => this.editor.options.editable\n }\n })\n ];\n }\n});\n\n// src/extensions/focusEvents.ts\n\nvar focusEventsPluginKey = new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"focusEvents\");\nvar FocusEvents = Extension.create({\n name: \"focusEvents\",\n addProseMirrorPlugins() {\n const { editor } = this;\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n key: focusEventsPluginKey,\n props: {\n handleDOMEvents: {\n focus: (view, event) => {\n editor.isFocused = true;\n const transaction = editor.state.tr.setMeta(\"focus\", { event }).setMeta(\"addToHistory\", false);\n view.dispatch(transaction);\n return false;\n },\n blur: (view, event) => {\n editor.isFocused = false;\n const transaction = editor.state.tr.setMeta(\"blur\", { event }).setMeta(\"addToHistory\", false);\n view.dispatch(transaction);\n return false;\n }\n }\n }\n })\n ];\n }\n});\n\n// src/extensions/keymap.ts\n\nvar Keymap = Extension.create({\n name: \"keymap\",\n addKeyboardShortcuts() {\n const handleBackspace = () => this.editor.commands.first(({ commands }) => [\n () => commands.undoInputRule(),\n // maybe convert first text block node to default node\n () => commands.command(({ tr }) => {\n const { selection, doc } = tr;\n const { empty, $anchor } = selection;\n const { pos, parent } = $anchor;\n const $parentPos = $anchor.parent.isTextblock && pos > 0 ? tr.doc.resolve(pos - 1) : $anchor;\n const parentIsIsolating = $parentPos.parent.type.spec.isolating;\n const parentPos = $anchor.pos - $anchor.parentOffset;\n const isAtStart = parentIsIsolating && $parentPos.parent.childCount === 1 ? parentPos === $anchor.pos : _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Selection.atStart(doc).from === pos;\n if (!empty || !parent.type.isTextblock || parent.textContent.length || !isAtStart || isAtStart && $anchor.parent.type.name === \"paragraph\") {\n return false;\n }\n return commands.clearNodes();\n }),\n () => commands.deleteSelection(),\n () => commands.joinBackward(),\n () => commands.selectNodeBackward()\n ]);\n const handleDelete = () => this.editor.commands.first(({ commands }) => [\n () => commands.deleteSelection(),\n () => commands.deleteCurrentNode(),\n () => commands.joinForward(),\n () => commands.selectNodeForward()\n ]);\n const handleEnter = () => this.editor.commands.first(({ commands }) => [\n () => commands.newlineInCode(),\n () => commands.createParagraphNear(),\n () => commands.liftEmptyBlock(),\n () => commands.splitBlock()\n ]);\n const baseKeymap = {\n Enter: handleEnter,\n \"Mod-Enter\": () => this.editor.commands.exitCode(),\n Backspace: handleBackspace,\n \"Mod-Backspace\": handleBackspace,\n \"Shift-Backspace\": handleBackspace,\n Delete: handleDelete,\n \"Mod-Delete\": handleDelete,\n \"Mod-a\": () => this.editor.commands.selectAll()\n };\n const pcKeymap = {\n ...baseKeymap\n };\n const macKeymap = {\n ...baseKeymap,\n \"Ctrl-h\": handleBackspace,\n \"Alt-Backspace\": handleBackspace,\n \"Ctrl-d\": handleDelete,\n \"Ctrl-Alt-Backspace\": handleDelete,\n \"Alt-Delete\": handleDelete,\n \"Alt-d\": handleDelete,\n \"Ctrl-a\": () => this.editor.commands.selectTextblockStart(),\n \"Ctrl-e\": () => this.editor.commands.selectTextblockEnd()\n };\n if (isiOS() || isMacOS()) {\n return macKeymap;\n }\n return pcKeymap;\n },\n addProseMirrorPlugins() {\n return [\n // With this plugin we check if the whole document was selected and deleted.\n // In this case we will additionally call `clearNodes()` to convert e.g. a heading\n // to a paragraph if necessary.\n // This is an alternative to ProseMirror's `AllSelection`, which doesn’t work well\n // with many other commands.\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"clearDocument\"),\n appendTransaction: (transactions, oldState, newState) => {\n if (transactions.some((tr2) => tr2.getMeta(\"composition\"))) {\n return;\n }\n const docChanges = transactions.some((transaction) => transaction.docChanged) && !oldState.doc.eq(newState.doc);\n const ignoreTr = transactions.some((transaction) => transaction.getMeta(\"preventClearDocument\"));\n if (!docChanges || ignoreTr) {\n return;\n }\n const { empty, from, to } = oldState.selection;\n const allFrom = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Selection.atStart(oldState.doc).from;\n const allEnd = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Selection.atEnd(oldState.doc).to;\n const allWasSelected = from === allFrom && to === allEnd;\n if (empty || !allWasSelected) {\n return;\n }\n const isEmpty = isNodeEmpty(newState.doc);\n if (!isEmpty) {\n return;\n }\n const tr = newState.tr;\n const state = createChainableState({\n state: newState,\n transaction: tr\n });\n const { commands } = new CommandManager({\n editor: this.editor,\n state\n });\n commands.clearNodes();\n if (!tr.steps.length) {\n return;\n }\n return tr;\n }\n })\n ];\n }\n});\n\n// src/extensions/paste.ts\n\nvar Paste = Extension.create({\n name: \"paste\",\n addProseMirrorPlugins() {\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"tiptapPaste\"),\n props: {\n handlePaste: (_view, e, slice) => {\n this.editor.emit(\"paste\", {\n editor: this.editor,\n event: e,\n slice\n });\n }\n }\n })\n ];\n }\n});\n\n// src/extensions/tabindex.ts\n\nvar Tabindex = Extension.create({\n name: \"tabindex\",\n addProseMirrorPlugins() {\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"tabindex\"),\n props: {\n attributes: () => this.editor.isEditable ? { tabindex: \"0\" } : {}\n }\n })\n ];\n }\n});\n\n// src/extensions/textDirection.ts\n\nvar TextDirection = Extension.create({\n name: \"textDirection\",\n addOptions() {\n return {\n direction: void 0\n };\n },\n addGlobalAttributes() {\n if (!this.options.direction) {\n return [];\n }\n const { nodeExtensions } = splitExtensions(this.extensions);\n return [\n {\n types: nodeExtensions.filter((extension) => extension.name !== \"text\").map((extension) => extension.name),\n attributes: {\n dir: {\n default: this.options.direction,\n parseHTML: (element) => {\n const dir = element.getAttribute(\"dir\");\n if (dir && (dir === \"ltr\" || dir === \"rtl\" || dir === \"auto\")) {\n return dir;\n }\n return this.options.direction;\n },\n renderHTML: (attributes) => {\n if (!attributes.dir) {\n return {};\n }\n return {\n dir: attributes.dir\n };\n }\n }\n }\n }\n ];\n },\n addProseMirrorPlugins() {\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"textDirection\"),\n props: {\n attributes: () => {\n const direction = this.options.direction;\n if (!direction) {\n return {};\n }\n return {\n dir: direction\n };\n }\n }\n })\n ];\n }\n});\n\n// src/NodePos.ts\nvar NodePos = class _NodePos {\n constructor(pos, editor, isBlock = false, node = null) {\n this.currentNode = null;\n this.actualDepth = null;\n this.isBlock = isBlock;\n this.resolvedPos = pos;\n this.editor = editor;\n this.currentNode = node;\n }\n get name() {\n return this.node.type.name;\n }\n get node() {\n return this.currentNode || this.resolvedPos.node();\n }\n get element() {\n return this.editor.view.domAtPos(this.pos).node;\n }\n get depth() {\n var _a;\n return (_a = this.actualDepth) != null ? _a : this.resolvedPos.depth;\n }\n get pos() {\n return this.resolvedPos.pos;\n }\n get content() {\n return this.node.content;\n }\n set content(content) {\n let from = this.from;\n let to = this.to;\n if (this.isBlock) {\n if (this.content.size === 0) {\n console.error(`You can\\u2019t set content on a block node. Tried to set content on ${this.name} at ${this.pos}`);\n return;\n }\n from = this.from + 1;\n to = this.to - 1;\n }\n this.editor.commands.insertContentAt({ from, to }, content);\n }\n get attributes() {\n return this.node.attrs;\n }\n get textContent() {\n return this.node.textContent;\n }\n get size() {\n return this.node.nodeSize;\n }\n get from() {\n if (this.isBlock) {\n return this.pos;\n }\n return this.resolvedPos.start(this.resolvedPos.depth);\n }\n get range() {\n return {\n from: this.from,\n to: this.to\n };\n }\n get to() {\n if (this.isBlock) {\n return this.pos + this.size;\n }\n return this.resolvedPos.end(this.resolvedPos.depth) + (this.node.isText ? 0 : 1);\n }\n get parent() {\n if (this.depth === 0) {\n return null;\n }\n const parentPos = this.resolvedPos.start(this.resolvedPos.depth - 1);\n const $pos = this.resolvedPos.doc.resolve(parentPos);\n return new _NodePos($pos, this.editor);\n }\n get before() {\n let $pos = this.resolvedPos.doc.resolve(this.from - (this.isBlock ? 1 : 2));\n if ($pos.depth !== this.depth) {\n $pos = this.resolvedPos.doc.resolve(this.from - 3);\n }\n return new _NodePos($pos, this.editor);\n }\n get after() {\n let $pos = this.resolvedPos.doc.resolve(this.to + (this.isBlock ? 2 : 1));\n if ($pos.depth !== this.depth) {\n $pos = this.resolvedPos.doc.resolve(this.to + 3);\n }\n return new _NodePos($pos, this.editor);\n }\n get children() {\n const children = [];\n this.node.content.forEach((node, offset) => {\n const isBlock = node.isBlock && !node.isTextblock;\n const isNonTextAtom = node.isAtom && !node.isText;\n const isInline = node.isInline;\n const targetPos = this.pos + offset + (isNonTextAtom ? 0 : 1);\n if (targetPos < 0 || targetPos > this.resolvedPos.doc.nodeSize - 2) {\n return;\n }\n const $pos = this.resolvedPos.doc.resolve(targetPos);\n if (!isBlock && !isInline && $pos.depth <= this.depth) {\n return;\n }\n const childNodePos = new _NodePos($pos, this.editor, isBlock, isBlock || isInline ? node : null);\n if (isBlock) {\n childNodePos.actualDepth = this.depth + 1;\n }\n children.push(childNodePos);\n });\n return children;\n }\n get firstChild() {\n return this.children[0] || null;\n }\n get lastChild() {\n const children = this.children;\n return children[children.length - 1] || null;\n }\n closest(selector, attributes = {}) {\n let node = null;\n let currentNode = this.parent;\n while (currentNode && !node) {\n if (currentNode.node.type.name === selector) {\n if (Object.keys(attributes).length > 0) {\n const nodeAttributes = currentNode.node.attrs;\n const attrKeys = Object.keys(attributes);\n for (let index = 0; index < attrKeys.length; index += 1) {\n const key = attrKeys[index];\n if (nodeAttributes[key] !== attributes[key]) {\n break;\n }\n }\n } else {\n node = currentNode;\n }\n }\n currentNode = currentNode.parent;\n }\n return node;\n }\n querySelector(selector, attributes = {}) {\n return this.querySelectorAll(selector, attributes, true)[0] || null;\n }\n querySelectorAll(selector, attributes = {}, firstItemOnly = false) {\n let nodes = [];\n if (!this.children || this.children.length === 0) {\n return nodes;\n }\n const attrKeys = Object.keys(attributes);\n this.children.forEach((childPos) => {\n if (firstItemOnly && nodes.length > 0) {\n return;\n }\n if (childPos.node.type.name === selector) {\n const doesAllAttributesMatch = attrKeys.every((key) => attributes[key] === childPos.node.attrs[key]);\n if (doesAllAttributesMatch) {\n nodes.push(childPos);\n }\n }\n if (firstItemOnly && nodes.length > 0) {\n return;\n }\n nodes = nodes.concat(childPos.querySelectorAll(selector, attributes, firstItemOnly));\n });\n return nodes;\n }\n setAttribute(attributes) {\n const { tr } = this.editor.state;\n tr.setNodeMarkup(this.from, void 0, {\n ...this.node.attrs,\n ...attributes\n });\n this.editor.view.dispatch(tr);\n }\n};\n\n// src/style.ts\nvar style = `.ProseMirror {\n position: relative;\n}\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n white-space: break-spaces;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n}\n\n.ProseMirror [contenteditable=\"false\"] {\n white-space: normal;\n}\n\n.ProseMirror [contenteditable=\"false\"] [contenteditable=\"true\"] {\n white-space: pre-wrap;\n}\n\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n\nimg.ProseMirror-separator {\n display: inline !important;\n border: none !important;\n margin: 0 !important;\n width: 0 !important;\n height: 0 !important;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n margin: 0;\n}\n\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection * {\n caret-color: transparent;\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}`;\n\n// src/utilities/createStyleTag.ts\nfunction createStyleTag(style2, nonce, suffix) {\n const tiptapStyleTag = document.querySelector(`style[data-tiptap-style${suffix ? `-${suffix}` : \"\"}]`);\n if (tiptapStyleTag !== null) {\n return tiptapStyleTag;\n }\n const styleNode = document.createElement(\"style\");\n if (nonce) {\n styleNode.setAttribute(\"nonce\", nonce);\n }\n styleNode.setAttribute(`data-tiptap-style${suffix ? `-${suffix}` : \"\"}`, \"\");\n styleNode.innerHTML = style2;\n document.getElementsByTagName(\"head\")[0].appendChild(styleNode);\n return styleNode;\n}\n\n// src/Editor.ts\nvar Editor = class extends EventEmitter {\n constructor(options = {}) {\n super();\n this.css = null;\n this.className = \"tiptap\";\n this.editorView = null;\n this.isFocused = false;\n /**\n * The editor is considered initialized after the `create` event has been emitted.\n */\n this.isInitialized = false;\n this.extensionStorage = {};\n /**\n * A unique ID for this editor instance.\n */\n this.instanceId = Math.random().toString(36).slice(2, 9);\n this.options = {\n element: typeof document !== \"undefined\" ? document.createElement(\"div\") : null,\n content: \"\",\n injectCSS: true,\n injectNonce: void 0,\n extensions: [],\n autofocus: false,\n editable: true,\n textDirection: void 0,\n editorProps: {},\n parseOptions: {},\n coreExtensionOptions: {},\n enableInputRules: true,\n enablePasteRules: true,\n enableCoreExtensions: true,\n enableContentCheck: false,\n emitContentError: false,\n onBeforeCreate: () => null,\n onCreate: () => null,\n onMount: () => null,\n onUnmount: () => null,\n onUpdate: () => null,\n onSelectionUpdate: () => null,\n onTransaction: () => null,\n onFocus: () => null,\n onBlur: () => null,\n onDestroy: () => null,\n onContentError: ({ error }) => {\n throw error;\n },\n onPaste: () => null,\n onDrop: () => null,\n onDelete: () => null,\n enableExtensionDispatchTransaction: true\n };\n this.isCapturingTransaction = false;\n this.capturedTransaction = null;\n /**\n * Returns a set of utilities for working with positions and ranges.\n */\n this.utils = {\n getUpdatedPosition,\n createMappablePosition\n };\n this.setOptions(options);\n this.createExtensionManager();\n this.createCommandManager();\n this.createSchema();\n this.on(\"beforeCreate\", this.options.onBeforeCreate);\n this.emit(\"beforeCreate\", { editor: this });\n this.on(\"mount\", this.options.onMount);\n this.on(\"unmount\", this.options.onUnmount);\n this.on(\"contentError\", this.options.onContentError);\n this.on(\"create\", this.options.onCreate);\n this.on(\"update\", this.options.onUpdate);\n this.on(\"selectionUpdate\", this.options.onSelectionUpdate);\n this.on(\"transaction\", this.options.onTransaction);\n this.on(\"focus\", this.options.onFocus);\n this.on(\"blur\", this.options.onBlur);\n this.on(\"destroy\", this.options.onDestroy);\n this.on(\"drop\", ({ event, slice, moved }) => this.options.onDrop(event, slice, moved));\n this.on(\"paste\", ({ event, slice }) => this.options.onPaste(event, slice));\n this.on(\"delete\", this.options.onDelete);\n const initialDoc = this.createDoc();\n const selection = resolveFocusPosition(initialDoc, this.options.autofocus);\n this.editorState = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.EditorState.create({\n doc: initialDoc,\n schema: this.schema,\n selection: selection || void 0\n });\n if (this.options.element) {\n this.mount(this.options.element);\n }\n }\n /**\n * Attach the editor to the DOM, creating a new editor view.\n */\n mount(el) {\n if (typeof document === \"undefined\") {\n throw new Error(\n `[tiptap error]: The editor cannot be mounted because there is no 'document' defined in this environment.`\n );\n }\n this.createView(el);\n this.emit(\"mount\", { editor: this });\n if (this.css && !document.head.contains(this.css)) {\n document.head.appendChild(this.css);\n }\n window.setTimeout(() => {\n if (this.isDestroyed) {\n return;\n }\n if (this.options.autofocus !== false && this.options.autofocus !== null) {\n this.commands.focus(this.options.autofocus);\n }\n this.emit(\"create\", { editor: this });\n this.isInitialized = true;\n }, 0);\n }\n /**\n * Remove the editor from the DOM, but still allow remounting at a different point in time\n */\n unmount() {\n if (this.editorView) {\n const dom = this.editorView.dom;\n if (dom == null ? void 0 : dom.editor) {\n delete dom.editor;\n }\n this.editorView.destroy();\n }\n this.editorView = null;\n this.isInitialized = false;\n if (this.css && !document.querySelectorAll(`.${this.className}`).length) {\n try {\n if (typeof this.css.remove === \"function\") {\n this.css.remove();\n } else if (this.css.parentNode) {\n this.css.parentNode.removeChild(this.css);\n }\n } catch (error) {\n console.warn(\"Failed to remove CSS element:\", error);\n }\n }\n this.css = null;\n this.emit(\"unmount\", { editor: this });\n }\n /**\n * Returns the editor storage.\n */\n get storage() {\n return this.extensionStorage;\n }\n /**\n * An object of all registered commands.\n */\n get commands() {\n return this.commandManager.commands;\n }\n /**\n * Create a command chain to call multiple commands at once.\n */\n chain() {\n return this.commandManager.chain();\n }\n /**\n * Check if a command or a command chain can be executed. Without executing it.\n */\n can() {\n return this.commandManager.can();\n }\n /**\n * Inject CSS styles.\n */\n injectCSS() {\n if (this.options.injectCSS && typeof document !== \"undefined\") {\n this.css = createStyleTag(style, this.options.injectNonce);\n }\n }\n /**\n * Update editor options.\n *\n * @param options A list of options\n */\n setOptions(options = {}) {\n this.options = {\n ...this.options,\n ...options\n };\n if (!this.editorView || !this.state || this.isDestroyed) {\n return;\n }\n if (this.options.editorProps) {\n this.view.setProps(this.options.editorProps);\n }\n this.view.updateState(this.state);\n }\n /**\n * Update editable state of the editor.\n */\n setEditable(editable, emitUpdate = true) {\n this.setOptions({ editable });\n if (emitUpdate) {\n this.emit(\"update\", { editor: this, transaction: this.state.tr, appendedTransactions: [] });\n }\n }\n /**\n * Returns whether the editor is editable.\n */\n get isEditable() {\n return this.options.editable && this.view && this.view.editable;\n }\n /**\n * Returns the editor state.\n */\n get view() {\n if (this.editorView) {\n return this.editorView;\n }\n return new Proxy(\n {\n state: this.editorState,\n updateState: (state) => {\n this.editorState = state;\n },\n dispatch: (tr) => {\n this.dispatchTransaction(tr);\n },\n // Stub some commonly accessed properties to prevent errors\n composing: false,\n dragging: null,\n editable: true,\n isDestroyed: false\n },\n {\n get: (obj, key) => {\n if (this.editorView) {\n return this.editorView[key];\n }\n if (key === \"state\") {\n return this.editorState;\n }\n if (key in obj) {\n return Reflect.get(obj, key);\n }\n throw new Error(\n `[tiptap error]: The editor view is not available. Cannot access view['${key}']. The editor may not be mounted yet.`\n );\n }\n }\n );\n }\n /**\n * Returns the editor state.\n */\n get state() {\n if (this.editorView) {\n this.editorState = this.view.state;\n }\n return this.editorState;\n }\n /**\n * Register a ProseMirror plugin.\n *\n * @param plugin A ProseMirror plugin\n * @param handlePlugins Control how to merge the plugin into the existing plugins.\n * @returns The new editor state\n */\n registerPlugin(plugin, handlePlugins) {\n const plugins = isFunction(handlePlugins) ? handlePlugins(plugin, [...this.state.plugins]) : [...this.state.plugins, plugin];\n const state = this.state.reconfigure({ plugins });\n this.view.updateState(state);\n return state;\n }\n /**\n * Unregister a ProseMirror plugin.\n *\n * @param nameOrPluginKeyToRemove The plugins name\n * @returns The new editor state or undefined if the editor is destroyed\n */\n unregisterPlugin(nameOrPluginKeyToRemove) {\n if (this.isDestroyed) {\n return void 0;\n }\n const prevPlugins = this.state.plugins;\n let plugins = prevPlugins;\n [].concat(nameOrPluginKeyToRemove).forEach((nameOrPluginKey) => {\n const name = typeof nameOrPluginKey === \"string\" ? `${nameOrPluginKey}$` : nameOrPluginKey.key;\n plugins = plugins.filter((plugin) => !plugin.key.startsWith(name));\n });\n if (prevPlugins.length === plugins.length) {\n return void 0;\n }\n const state = this.state.reconfigure({\n plugins\n });\n this.view.updateState(state);\n return state;\n }\n /**\n * Creates an extension manager.\n */\n createExtensionManager() {\n var _a, _b;\n const coreExtensions = this.options.enableCoreExtensions ? [\n Editable,\n ClipboardTextSerializer.configure({\n blockSeparator: (_b = (_a = this.options.coreExtensionOptions) == null ? void 0 : _a.clipboardTextSerializer) == null ? void 0 : _b.blockSeparator\n }),\n Commands,\n FocusEvents,\n Keymap,\n Tabindex,\n Drop,\n Paste,\n Delete,\n TextDirection.configure({\n direction: this.options.textDirection\n })\n ].filter((ext) => {\n if (typeof this.options.enableCoreExtensions === \"object\") {\n return this.options.enableCoreExtensions[ext.name] !== false;\n }\n return true;\n }) : [];\n const allExtensions = [...coreExtensions, ...this.options.extensions].filter((extension) => {\n return [\"extension\", \"node\", \"mark\"].includes(extension == null ? void 0 : extension.type);\n });\n this.extensionManager = new ExtensionManager(allExtensions, this);\n }\n /**\n * Creates an command manager.\n */\n createCommandManager() {\n this.commandManager = new CommandManager({\n editor: this\n });\n }\n /**\n * Creates a ProseMirror schema.\n */\n createSchema() {\n this.schema = this.extensionManager.schema;\n }\n /**\n * Creates the initial document.\n */\n createDoc() {\n let doc;\n try {\n doc = createDocument(this.options.content, this.schema, this.options.parseOptions, {\n errorOnInvalidContent: this.options.enableContentCheck\n });\n } catch (e) {\n if (!(e instanceof Error) || ![\"[tiptap error]: Invalid JSON content\", \"[tiptap error]: Invalid HTML content\"].includes(e.message)) {\n throw e;\n }\n this.emit(\"contentError\", {\n editor: this,\n error: e,\n disableCollaboration: () => {\n if (\"collaboration\" in this.storage && typeof this.storage.collaboration === \"object\" && this.storage.collaboration) {\n ;\n this.storage.collaboration.isDisabled = true;\n }\n this.options.extensions = this.options.extensions.filter((extension) => extension.name !== \"collaboration\");\n this.createExtensionManager();\n }\n });\n doc = createDocument(this.options.content, this.schema, this.options.parseOptions, {\n errorOnInvalidContent: false\n });\n }\n return doc;\n }\n /**\n * Creates a ProseMirror view.\n */\n createView(element) {\n const { editorProps, enableExtensionDispatchTransaction } = this.options;\n const baseDispatch = editorProps.dispatchTransaction || this.dispatchTransaction.bind(this);\n const dispatch = enableExtensionDispatchTransaction ? this.extensionManager.dispatchTransaction(baseDispatch) : baseDispatch;\n this.editorView = new _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_5__.EditorView(element, {\n ...editorProps,\n attributes: {\n // add `role=\"textbox\"` to the editor element\n role: \"textbox\",\n ...editorProps == null ? void 0 : editorProps.attributes\n },\n dispatchTransaction: dispatch,\n state: this.editorState,\n markViews: this.extensionManager.markViews,\n nodeViews: this.extensionManager.nodeViews\n });\n const newState = this.state.reconfigure({\n plugins: this.extensionManager.plugins\n });\n this.view.updateState(newState);\n this.prependClass();\n this.injectCSS();\n const dom = this.view.dom;\n dom.editor = this;\n }\n /**\n * Creates all node and mark views.\n */\n createNodeViews() {\n if (this.view.isDestroyed) {\n return;\n }\n this.view.setProps({\n markViews: this.extensionManager.markViews,\n nodeViews: this.extensionManager.nodeViews\n });\n }\n /**\n * Prepend class name to element.\n */\n prependClass() {\n this.view.dom.className = `${this.className} ${this.view.dom.className}`;\n }\n captureTransaction(fn) {\n this.isCapturingTransaction = true;\n fn();\n this.isCapturingTransaction = false;\n const tr = this.capturedTransaction;\n this.capturedTransaction = null;\n return tr;\n }\n /**\n * The callback over which to send transactions (state updates) produced by the view.\n *\n * @param transaction An editor state transaction\n */\n dispatchTransaction(transaction) {\n if (this.view.isDestroyed) {\n return;\n }\n if (this.isCapturingTransaction) {\n if (!this.capturedTransaction) {\n this.capturedTransaction = transaction;\n return;\n }\n transaction.steps.forEach((step) => {\n var _a;\n return (_a = this.capturedTransaction) == null ? void 0 : _a.step(step);\n });\n return;\n }\n const { state, transactions } = this.state.applyTransaction(transaction);\n const selectionHasChanged = !this.state.selection.eq(state.selection);\n const rootTrWasApplied = transactions.includes(transaction);\n const prevState = this.state;\n this.emit(\"beforeTransaction\", {\n editor: this,\n transaction,\n nextState: state\n });\n if (!rootTrWasApplied) {\n return;\n }\n this.view.updateState(state);\n this.emit(\"transaction\", {\n editor: this,\n transaction,\n appendedTransactions: transactions.slice(1)\n });\n if (selectionHasChanged) {\n this.emit(\"selectionUpdate\", {\n editor: this,\n transaction\n });\n }\n const mostRecentFocusTr = transactions.findLast((tr) => tr.getMeta(\"focus\") || tr.getMeta(\"blur\"));\n const focus2 = mostRecentFocusTr == null ? void 0 : mostRecentFocusTr.getMeta(\"focus\");\n const blur2 = mostRecentFocusTr == null ? void 0 : mostRecentFocusTr.getMeta(\"blur\");\n if (focus2) {\n this.emit(\"focus\", {\n editor: this,\n event: focus2.event,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n transaction: mostRecentFocusTr\n });\n }\n if (blur2) {\n this.emit(\"blur\", {\n editor: this,\n event: blur2.event,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n transaction: mostRecentFocusTr\n });\n }\n if (transaction.getMeta(\"preventUpdate\") || !transactions.some((tr) => tr.docChanged) || prevState.doc.eq(state.doc)) {\n return;\n }\n this.emit(\"update\", {\n editor: this,\n transaction,\n appendedTransactions: transactions.slice(1)\n });\n }\n /**\n * Get attributes of the currently selected node or mark.\n */\n getAttributes(nameOrType) {\n return getAttributes(this.state, nameOrType);\n }\n isActive(nameOrAttributes, attributesOrUndefined) {\n const name = typeof nameOrAttributes === \"string\" ? nameOrAttributes : null;\n const attributes = typeof nameOrAttributes === \"string\" ? attributesOrUndefined : nameOrAttributes;\n return isActive(this.state, name, attributes);\n }\n /**\n * Get the document as JSON.\n */\n getJSON() {\n return this.state.doc.toJSON();\n }\n /**\n * Get the document as HTML.\n */\n getHTML() {\n return getHTMLFromFragment(this.state.doc.content, this.schema);\n }\n /**\n * Get the document as text.\n */\n getText(options) {\n const { blockSeparator = \"\\n\\n\", textSerializers = {} } = options || {};\n return getText(this.state.doc, {\n blockSeparator,\n textSerializers: {\n ...getTextSerializersFromSchema(this.schema),\n ...textSerializers\n }\n });\n }\n /**\n * Check if there is no content.\n */\n get isEmpty() {\n return isNodeEmpty(this.state.doc);\n }\n /**\n * Destroy the editor.\n */\n destroy() {\n this.emit(\"destroy\");\n this.unmount();\n this.removeAllListeners();\n }\n /**\n * Check if the editor is already destroyed.\n */\n get isDestroyed() {\n var _a, _b;\n return (_b = (_a = this.editorView) == null ? void 0 : _a.isDestroyed) != null ? _b : true;\n }\n $node(selector, attributes) {\n var _a;\n return ((_a = this.$doc) == null ? void 0 : _a.querySelector(selector, attributes)) || null;\n }\n $nodes(selector, attributes) {\n var _a;\n return ((_a = this.$doc) == null ? void 0 : _a.querySelectorAll(selector, attributes)) || null;\n }\n $pos(pos) {\n const $pos = this.state.doc.resolve(pos);\n return new NodePos($pos, this);\n }\n get $doc() {\n return this.$pos(0);\n }\n};\n\n// src/inputRules/markInputRule.ts\nfunction markInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n const attributes = callOrReturn(config.getAttributes, void 0, match);\n if (attributes === false || attributes === null) {\n return null;\n }\n const { tr } = state;\n const captureGroup = match[match.length - 1];\n const fullMatch = match[0];\n if (captureGroup) {\n const startSpaces = fullMatch.search(/\\S/);\n const textStart = range.from + fullMatch.indexOf(captureGroup);\n const textEnd = textStart + captureGroup.length;\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc).filter((item) => {\n const excluded = item.mark.type.excluded;\n return excluded.find((type) => type === config.type && type !== item.mark.type);\n }).filter((item) => item.to > textStart);\n if (excludedMarks.length) {\n return null;\n }\n if (textEnd < range.to) {\n tr.delete(textEnd, range.to);\n }\n if (textStart > range.from) {\n tr.delete(range.from + startSpaces, textStart);\n }\n const markEnd = range.from + startSpaces + captureGroup.length;\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\n tr.removeStoredMark(config.type);\n }\n },\n undoable: config.undoable\n });\n}\n\n// src/inputRules/nodeInputRule.ts\nfunction nodeInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n const attributes = callOrReturn(config.getAttributes, void 0, match) || {};\n const { tr } = state;\n const start = range.from;\n let end = range.to;\n const newNode = config.type.create(attributes);\n if (match[1]) {\n const offset = match[0].lastIndexOf(match[1]);\n let matchStart = start + offset;\n if (matchStart > end) {\n matchStart = end;\n } else {\n end = matchStart + match[1].length;\n }\n const lastChar = match[0][match[0].length - 1];\n tr.insertText(lastChar, start + match[0].length - 1);\n tr.replaceWith(matchStart, end, newNode);\n } else if (match[0]) {\n const insertionStart = config.type.isInline ? start : start - 1;\n tr.insert(insertionStart, config.type.create(attributes)).delete(tr.mapping.map(start), tr.mapping.map(end));\n }\n tr.scrollIntoView();\n },\n undoable: config.undoable\n });\n}\n\n// src/inputRules/textblockTypeInputRule.ts\nfunction textblockTypeInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n const $start = state.doc.resolve(range.from);\n const attributes = callOrReturn(config.getAttributes, void 0, match) || {};\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), config.type)) {\n return null;\n }\n state.tr.delete(range.from, range.to).setBlockType(range.from, range.from, config.type, attributes);\n },\n undoable: config.undoable\n });\n}\n\n// src/inputRules/textInputRule.ts\nfunction textInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n let insert = config.replace;\n let start = range.from;\n const end = range.to;\n if (match[1]) {\n const offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n const cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n state.tr.insertText(insert, start, end);\n },\n undoable: config.undoable\n });\n}\n\n// src/inputRules/wrappingInputRule.ts\n\nfunction wrappingInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match, chain }) => {\n const attributes = callOrReturn(config.getAttributes, void 0, match) || {};\n const tr = state.tr.delete(range.from, range.to);\n const $start = tr.doc.resolve(range.from);\n const blockRange = $start.blockRange();\n const wrapping = blockRange && (0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.findWrapping)(blockRange, config.type, attributes);\n if (!wrapping) {\n return null;\n }\n tr.wrap(blockRange, wrapping);\n if (config.keepMarks && config.editor) {\n const { selection, storedMarks } = state;\n const { splittableMarks } = config.editor.extensionManager;\n const marks = storedMarks || selection.$to.parentOffset && selection.$from.marks();\n if (marks) {\n const filteredMarks = marks.filter((mark) => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n }\n }\n if (config.keepAttributes) {\n const nodeType = config.type.name === \"bulletList\" || config.type.name === \"orderedList\" ? \"listItem\" : \"taskList\";\n chain().updateAttributes(nodeType, attributes).run();\n }\n const before = tr.doc.resolve(range.from - 1).nodeBefore;\n if (before && before.type === config.type && (0,_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_0__.canJoin)(tr.doc, range.from - 1) && (!config.joinPredicate || config.joinPredicate(match, before))) {\n tr.join(range.from - 1);\n }\n },\n undoable: config.undoable\n });\n}\n\n// src/jsx-runtime.ts\nfunction Fragment6(props) {\n return props.children;\n}\nvar h = (tag, attributes) => {\n if (tag === \"slot\") {\n return 0;\n }\n if (tag instanceof Function) {\n return tag(attributes);\n }\n const { children, ...rest } = attributes != null ? attributes : {};\n if (tag === \"svg\") {\n throw new Error(\"SVG elements are not supported in the JSX syntax, use the array syntax instead\");\n }\n return [tag, rest, children];\n};\n\n// src/lib/ResizableNodeView.ts\nvar isTouchEvent = (e) => {\n return \"touches\" in e;\n};\nvar ResizableNodeView = class {\n /**\n * Creates a new ResizableNodeView instance.\n *\n * The constructor sets up the resize handles, applies initial sizing from\n * node attributes, and configures all resize behavior options.\n *\n * @param options - Configuration options for the resizable node view\n */\n constructor(options) {\n /** Active resize handle directions */\n this.directions = [\"bottom-left\", \"bottom-right\", \"top-left\", \"top-right\"];\n /** Minimum allowed dimensions */\n this.minSize = {\n height: 8,\n width: 8\n };\n /** Whether to always preserve aspect ratio */\n this.preserveAspectRatio = false;\n /** CSS class names for elements */\n this.classNames = {\n container: \"\",\n wrapper: \"\",\n handle: \"\",\n resizing: \"\"\n };\n /** Initial width of the element (for aspect ratio calculation) */\n this.initialWidth = 0;\n /** Initial height of the element (for aspect ratio calculation) */\n this.initialHeight = 0;\n /** Calculated aspect ratio (width / height) */\n this.aspectRatio = 1;\n /** Whether a resize operation is currently active */\n this.isResizing = false;\n /** The handle currently being dragged */\n this.activeHandle = null;\n /** Starting mouse X position when resize began */\n this.startX = 0;\n /** Starting mouse Y position when resize began */\n this.startY = 0;\n /** Element width when resize began */\n this.startWidth = 0;\n /** Element height when resize began */\n this.startHeight = 0;\n /** Whether Shift key is currently pressed (for temporary aspect ratio lock) */\n this.isShiftKeyPressed = false;\n /** Last known editable state of the editor */\n this.lastEditableState = void 0;\n /** Map of handle elements by direction */\n this.handleMap = /* @__PURE__ */ new Map();\n /**\n * Handles mouse movement during an active resize.\n *\n * Calculates the delta from the starting position, computes new dimensions\n * based on the active handle direction, applies constraints and aspect ratio,\n * then updates the element's style and calls the onResize callback.\n *\n * @param event - The mouse move event\n */\n this.handleMouseMove = (event) => {\n if (!this.isResizing || !this.activeHandle) {\n return;\n }\n const deltaX = event.clientX - this.startX;\n const deltaY = event.clientY - this.startY;\n this.handleResize(deltaX, deltaY);\n };\n this.handleTouchMove = (event) => {\n if (!this.isResizing || !this.activeHandle) {\n return;\n }\n const touch = event.touches[0];\n if (!touch) {\n return;\n }\n const deltaX = touch.clientX - this.startX;\n const deltaY = touch.clientY - this.startY;\n this.handleResize(deltaX, deltaY);\n };\n /**\n * Completes the resize operation when the mouse button is released.\n *\n * Captures final dimensions, calls the onCommit callback to persist changes,\n * removes the resizing state and class, and cleans up document-level listeners.\n */\n this.handleMouseUp = () => {\n if (!this.isResizing) {\n return;\n }\n const finalWidth = this.element.offsetWidth;\n const finalHeight = this.element.offsetHeight;\n this.onCommit(finalWidth, finalHeight);\n this.isResizing = false;\n this.activeHandle = null;\n this.container.dataset.resizeState = \"false\";\n if (this.classNames.resizing) {\n this.container.classList.remove(this.classNames.resizing);\n }\n document.removeEventListener(\"mousemove\", this.handleMouseMove);\n document.removeEventListener(\"mouseup\", this.handleMouseUp);\n document.removeEventListener(\"keydown\", this.handleKeyDown);\n document.removeEventListener(\"keyup\", this.handleKeyUp);\n };\n /**\n * Tracks Shift key state to enable temporary aspect ratio locking.\n *\n * When Shift is pressed during resize, aspect ratio is preserved even if\n * preserveAspectRatio is false.\n *\n * @param event - The keyboard event\n */\n this.handleKeyDown = (event) => {\n if (event.key === \"Shift\") {\n this.isShiftKeyPressed = true;\n }\n };\n /**\n * Tracks Shift key release to disable temporary aspect ratio locking.\n *\n * @param event - The keyboard event\n */\n this.handleKeyUp = (event) => {\n if (event.key === \"Shift\") {\n this.isShiftKeyPressed = false;\n }\n };\n var _a, _b, _c, _d, _e, _f;\n this.node = options.node;\n this.editor = options.editor;\n this.element = options.element;\n this.contentElement = options.contentElement;\n this.getPos = options.getPos;\n this.onResize = options.onResize;\n this.onCommit = options.onCommit;\n this.onUpdate = options.onUpdate;\n if ((_a = options.options) == null ? void 0 : _a.min) {\n this.minSize = {\n ...this.minSize,\n ...options.options.min\n };\n }\n if ((_b = options.options) == null ? void 0 : _b.max) {\n this.maxSize = options.options.max;\n }\n if ((_c = options == null ? void 0 : options.options) == null ? void 0 : _c.directions) {\n this.directions = options.options.directions;\n }\n if ((_d = options.options) == null ? void 0 : _d.preserveAspectRatio) {\n this.preserveAspectRatio = options.options.preserveAspectRatio;\n }\n if ((_e = options.options) == null ? void 0 : _e.className) {\n this.classNames = {\n container: options.options.className.container || \"\",\n wrapper: options.options.className.wrapper || \"\",\n handle: options.options.className.handle || \"\",\n resizing: options.options.className.resizing || \"\"\n };\n }\n if ((_f = options.options) == null ? void 0 : _f.createCustomHandle) {\n this.createCustomHandle = options.options.createCustomHandle;\n }\n this.wrapper = this.createWrapper();\n this.container = this.createContainer();\n this.applyInitialSize();\n this.attachHandles();\n this.editor.on(\"update\", this.handleEditorUpdate.bind(this));\n }\n /**\n * Returns the top-level DOM node that should be placed in the editor.\n *\n * This is required by the ProseMirror NodeView interface. The container\n * includes the wrapper, handles, and the actual content element.\n *\n * @returns The container element to be inserted into the editor\n */\n get dom() {\n return this.container;\n }\n get contentDOM() {\n var _a;\n return (_a = this.contentElement) != null ? _a : null;\n }\n handleEditorUpdate() {\n const isEditable = this.editor.isEditable;\n if (isEditable === this.lastEditableState) {\n return;\n }\n this.lastEditableState = isEditable;\n if (!isEditable) {\n this.removeHandles();\n } else if (isEditable && this.handleMap.size === 0) {\n this.attachHandles();\n }\n }\n /**\n * Called when the node's content or attributes change.\n *\n * Updates the internal node reference. If a custom `onUpdate` callback\n * was provided, it will be called to handle additional update logic.\n *\n * @param node - The new/updated node\n * @param decorations - Node decorations\n * @param innerDecorations - Inner decorations\n * @returns `false` if the node type has changed (requires full rebuild), otherwise the result of `onUpdate` or `true`\n */\n update(node, decorations, innerDecorations) {\n if (node.type !== this.node.type) {\n return false;\n }\n this.node = node;\n if (this.onUpdate) {\n return this.onUpdate(node, decorations, innerDecorations);\n }\n return true;\n }\n /**\n * Cleanup method called when the node view is being removed.\n *\n * Removes all event listeners to prevent memory leaks. This is required\n * by the ProseMirror NodeView interface. If a resize is active when\n * destroy is called, it will be properly cancelled.\n */\n destroy() {\n if (this.isResizing) {\n this.container.dataset.resizeState = \"false\";\n if (this.classNames.resizing) {\n this.container.classList.remove(this.classNames.resizing);\n }\n document.removeEventListener(\"mousemove\", this.handleMouseMove);\n document.removeEventListener(\"mouseup\", this.handleMouseUp);\n document.removeEventListener(\"keydown\", this.handleKeyDown);\n document.removeEventListener(\"keyup\", this.handleKeyUp);\n this.isResizing = false;\n this.activeHandle = null;\n }\n this.editor.off(\"update\", this.handleEditorUpdate.bind(this));\n this.container.remove();\n }\n /**\n * Creates the outer container element.\n *\n * The container is the top-level element returned by the NodeView and\n * wraps the entire resizable node. It's set up with flexbox to handle\n * alignment and includes data attributes for styling and identification.\n *\n * @returns The container element\n */\n createContainer() {\n const element = document.createElement(\"div\");\n element.dataset.resizeContainer = \"\";\n element.dataset.node = this.node.type.name;\n element.style.display = \"flex\";\n if (this.classNames.container) {\n element.className = this.classNames.container;\n }\n element.appendChild(this.wrapper);\n return element;\n }\n /**\n * Creates the wrapper element that contains the content and handles.\n *\n * The wrapper uses relative positioning so that resize handles can be\n * positioned absolutely within it. This is the direct parent of the\n * content element being made resizable.\n *\n * @returns The wrapper element\n */\n createWrapper() {\n const element = document.createElement(\"div\");\n element.style.position = \"relative\";\n element.style.display = \"block\";\n element.dataset.resizeWrapper = \"\";\n if (this.classNames.wrapper) {\n element.className = this.classNames.wrapper;\n }\n element.appendChild(this.element);\n return element;\n }\n /**\n * Creates a resize handle element for a specific direction.\n *\n * Each handle is absolutely positioned and includes a data attribute\n * identifying its direction for styling purposes.\n *\n * @param direction - The resize direction for this handle\n * @returns The handle element\n */\n createHandle(direction) {\n const handle = document.createElement(\"div\");\n handle.dataset.resizeHandle = direction;\n handle.style.position = \"absolute\";\n if (this.classNames.handle) {\n handle.className = this.classNames.handle;\n }\n return handle;\n }\n /**\n * Positions a handle element according to its direction.\n *\n * Corner handles (e.g., 'top-left') are positioned at the intersection\n * of two edges. Edge handles (e.g., 'top') span the full width or height.\n *\n * @param handle - The handle element to position\n * @param direction - The direction determining the position\n */\n positionHandle(handle, direction) {\n const isTop = direction.includes(\"top\");\n const isBottom = direction.includes(\"bottom\");\n const isLeft = direction.includes(\"left\");\n const isRight = direction.includes(\"right\");\n if (isTop) {\n handle.style.top = \"0\";\n }\n if (isBottom) {\n handle.style.bottom = \"0\";\n }\n if (isLeft) {\n handle.style.left = \"0\";\n }\n if (isRight) {\n handle.style.right = \"0\";\n }\n if (direction === \"top\" || direction === \"bottom\") {\n handle.style.left = \"0\";\n handle.style.right = \"0\";\n }\n if (direction === \"left\" || direction === \"right\") {\n handle.style.top = \"0\";\n handle.style.bottom = \"0\";\n }\n }\n /**\n * Creates and attaches all resize handles to the wrapper.\n *\n * Iterates through the configured directions, creates a handle for each,\n * positions it, attaches the mousedown listener, and appends it to the DOM.\n */\n attachHandles() {\n this.directions.forEach((direction) => {\n let handle;\n if (this.createCustomHandle) {\n handle = this.createCustomHandle(direction);\n } else {\n handle = this.createHandle(direction);\n }\n if (!(handle instanceof HTMLElement)) {\n console.warn(\n `[ResizableNodeView] createCustomHandle(\"${direction}\") did not return an HTMLElement. Falling back to default handle.`\n );\n handle = this.createHandle(direction);\n }\n if (!this.createCustomHandle) {\n this.positionHandle(handle, direction);\n }\n handle.addEventListener(\"mousedown\", (event) => this.handleResizeStart(event, direction));\n handle.addEventListener(\"touchstart\", (event) => this.handleResizeStart(event, direction));\n this.handleMap.set(direction, handle);\n this.wrapper.appendChild(handle);\n });\n }\n /**\n * Removes all resize handles from the wrapper.\n *\n * Cleans up the handle map and removes each handle element from the DOM.\n */\n removeHandles() {\n this.handleMap.forEach((el) => el.remove());\n this.handleMap.clear();\n }\n /**\n * Applies initial sizing from node attributes to the element.\n *\n * If width/height attributes exist on the node, they're applied to the element.\n * Otherwise, the element's natural/current dimensions are measured. The aspect\n * ratio is calculated for later use in aspect-ratio-preserving resizes.\n */\n applyInitialSize() {\n const width = this.node.attrs.width;\n const height = this.node.attrs.height;\n if (width) {\n this.element.style.width = `${width}px`;\n this.initialWidth = width;\n } else {\n this.initialWidth = this.element.offsetWidth;\n }\n if (height) {\n this.element.style.height = `${height}px`;\n this.initialHeight = height;\n } else {\n this.initialHeight = this.element.offsetHeight;\n }\n if (this.initialWidth > 0 && this.initialHeight > 0) {\n this.aspectRatio = this.initialWidth / this.initialHeight;\n }\n }\n /**\n * Initiates a resize operation when a handle is clicked.\n *\n * Captures the starting mouse position and element dimensions, sets up\n * the resize state, adds the resizing class and state attribute, and\n * attaches document-level listeners for mouse movement and keyboard input.\n *\n * @param event - The mouse down event\n * @param direction - The direction of the handle being dragged\n */\n handleResizeStart(event, direction) {\n event.preventDefault();\n event.stopPropagation();\n this.isResizing = true;\n this.activeHandle = direction;\n if (isTouchEvent(event)) {\n this.startX = event.touches[0].clientX;\n this.startY = event.touches[0].clientY;\n } else {\n this.startX = event.clientX;\n this.startY = event.clientY;\n }\n this.startWidth = this.element.offsetWidth;\n this.startHeight = this.element.offsetHeight;\n if (this.startWidth > 0 && this.startHeight > 0) {\n this.aspectRatio = this.startWidth / this.startHeight;\n }\n const pos = this.getPos();\n if (pos !== void 0) {\n }\n this.container.dataset.resizeState = \"true\";\n if (this.classNames.resizing) {\n this.container.classList.add(this.classNames.resizing);\n }\n document.addEventListener(\"mousemove\", this.handleMouseMove);\n document.addEventListener(\"touchmove\", this.handleTouchMove);\n document.addEventListener(\"mouseup\", this.handleMouseUp);\n document.addEventListener(\"keydown\", this.handleKeyDown);\n document.addEventListener(\"keyup\", this.handleKeyUp);\n }\n handleResize(deltaX, deltaY) {\n if (!this.activeHandle) {\n return;\n }\n const shouldPreserveAspectRatio = this.preserveAspectRatio || this.isShiftKeyPressed;\n const { width, height } = this.calculateNewDimensions(this.activeHandle, deltaX, deltaY);\n const constrained = this.applyConstraints(width, height, shouldPreserveAspectRatio);\n this.element.style.width = `${constrained.width}px`;\n this.element.style.height = `${constrained.height}px`;\n if (this.onResize) {\n this.onResize(constrained.width, constrained.height);\n }\n }\n /**\n * Calculates new dimensions based on mouse delta and resize direction.\n *\n * Takes the starting dimensions and applies the mouse movement delta\n * according to the handle direction. For corner handles, both dimensions\n * are affected. For edge handles, only one dimension changes. If aspect\n * ratio should be preserved, delegates to applyAspectRatio.\n *\n * @param direction - The active resize handle direction\n * @param deltaX - Horizontal mouse movement since resize start\n * @param deltaY - Vertical mouse movement since resize start\n * @returns The calculated width and height\n */\n calculateNewDimensions(direction, deltaX, deltaY) {\n let newWidth = this.startWidth;\n let newHeight = this.startHeight;\n const isRight = direction.includes(\"right\");\n const isLeft = direction.includes(\"left\");\n const isBottom = direction.includes(\"bottom\");\n const isTop = direction.includes(\"top\");\n if (isRight) {\n newWidth = this.startWidth + deltaX;\n } else if (isLeft) {\n newWidth = this.startWidth - deltaX;\n }\n if (isBottom) {\n newHeight = this.startHeight + deltaY;\n } else if (isTop) {\n newHeight = this.startHeight - deltaY;\n }\n if (direction === \"right\" || direction === \"left\") {\n newWidth = this.startWidth + (isRight ? deltaX : -deltaX);\n }\n if (direction === \"top\" || direction === \"bottom\") {\n newHeight = this.startHeight + (isBottom ? deltaY : -deltaY);\n }\n const shouldPreserveAspectRatio = this.preserveAspectRatio || this.isShiftKeyPressed;\n if (shouldPreserveAspectRatio) {\n return this.applyAspectRatio(newWidth, newHeight, direction);\n }\n return { width: newWidth, height: newHeight };\n }\n /**\n * Applies min/max constraints to dimensions.\n *\n * When aspect ratio is NOT preserved, constraints are applied independently\n * to width and height. When aspect ratio IS preserved, constraints are\n * applied while maintaining the aspect ratio—if one dimension hits a limit,\n * the other is recalculated proportionally.\n *\n * This ensures that aspect ratio is never broken when constrained.\n *\n * @param width - The unconstrained width\n * @param height - The unconstrained height\n * @param preserveAspectRatio - Whether to maintain aspect ratio while constraining\n * @returns The constrained dimensions\n */\n applyConstraints(width, height, preserveAspectRatio) {\n var _a, _b, _c, _d;\n if (!preserveAspectRatio) {\n let constrainedWidth2 = Math.max(this.minSize.width, width);\n let constrainedHeight2 = Math.max(this.minSize.height, height);\n if ((_a = this.maxSize) == null ? void 0 : _a.width) {\n constrainedWidth2 = Math.min(this.maxSize.width, constrainedWidth2);\n }\n if ((_b = this.maxSize) == null ? void 0 : _b.height) {\n constrainedHeight2 = Math.min(this.maxSize.height, constrainedHeight2);\n }\n return { width: constrainedWidth2, height: constrainedHeight2 };\n }\n let constrainedWidth = width;\n let constrainedHeight = height;\n if (constrainedWidth < this.minSize.width) {\n constrainedWidth = this.minSize.width;\n constrainedHeight = constrainedWidth / this.aspectRatio;\n }\n if (constrainedHeight < this.minSize.height) {\n constrainedHeight = this.minSize.height;\n constrainedWidth = constrainedHeight * this.aspectRatio;\n }\n if (((_c = this.maxSize) == null ? void 0 : _c.width) && constrainedWidth > this.maxSize.width) {\n constrainedWidth = this.maxSize.width;\n constrainedHeight = constrainedWidth / this.aspectRatio;\n }\n if (((_d = this.maxSize) == null ? void 0 : _d.height) && constrainedHeight > this.maxSize.height) {\n constrainedHeight = this.maxSize.height;\n constrainedWidth = constrainedHeight * this.aspectRatio;\n }\n return { width: constrainedWidth, height: constrainedHeight };\n }\n /**\n * Adjusts dimensions to maintain the original aspect ratio.\n *\n * For horizontal handles (left/right), uses width as the primary dimension\n * and calculates height from it. For vertical handles (top/bottom), uses\n * height as primary and calculates width. For corner handles, uses width\n * as the primary dimension.\n *\n * @param width - The new width\n * @param height - The new height\n * @param direction - The active resize direction\n * @returns Dimensions adjusted to preserve aspect ratio\n */\n applyAspectRatio(width, height, direction) {\n const isHorizontal = direction === \"left\" || direction === \"right\";\n const isVertical = direction === \"top\" || direction === \"bottom\";\n if (isHorizontal) {\n return {\n width,\n height: width / this.aspectRatio\n };\n }\n if (isVertical) {\n return {\n width: height * this.aspectRatio,\n height\n };\n }\n return {\n width,\n height: width / this.aspectRatio\n };\n }\n};\nvar ResizableNodeview = ResizableNodeView;\n\n// src/utilities/canInsertNode.ts\n\nfunction canInsertNode(state, nodeType) {\n const { selection } = state;\n const { $from } = selection;\n if (selection instanceof _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.NodeSelection) {\n const index = $from.index();\n const parent = $from.parent;\n return parent.canReplaceWith(index, index + 1, nodeType);\n }\n let depth = $from.depth;\n while (depth >= 0) {\n const index = $from.index(depth);\n const parent = $from.node(depth);\n const match = parent.contentMatchAt(index);\n if (match.matchType(nodeType)) {\n return true;\n }\n depth -= 1;\n }\n return false;\n}\n\n// src/utilities/escapeForRegEx.ts\nfunction escapeForRegEx(string) {\n return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n}\n\n// src/utilities/isFirefox.ts\nfunction isFirefox() {\n return typeof navigator !== \"undefined\" ? /Firefox/.test(navigator.userAgent) : false;\n}\n\n// src/utilities/isString.ts\nfunction isString(value) {\n return typeof value === \"string\";\n}\n\n// src/utilities/markdown/index.ts\nvar markdown_exports = {};\n__export(markdown_exports, {\n createAtomBlockMarkdownSpec: () => createAtomBlockMarkdownSpec,\n createBlockMarkdownSpec: () => createBlockMarkdownSpec,\n createInlineMarkdownSpec: () => createInlineMarkdownSpec,\n parseAttributes: () => parseAttributes,\n parseIndentedBlocks: () => parseIndentedBlocks,\n renderNestedMarkdownContent: () => renderNestedMarkdownContent,\n serializeAttributes: () => serializeAttributes\n});\n\n// src/utilities/markdown/attributeUtils.ts\nfunction parseAttributes(attrString) {\n if (!(attrString == null ? void 0 : attrString.trim())) {\n return {};\n }\n const attributes = {};\n const quotedStrings = [];\n const tempString = attrString.replace(/[\"']([^\"']*)[\"']/g, (match) => {\n quotedStrings.push(match);\n return `__QUOTED_${quotedStrings.length - 1}__`;\n });\n const classMatches = tempString.match(/(?:^|\\s)\\.([a-zA-Z][\\w-]*)/g);\n if (classMatches) {\n const classes = classMatches.map((match) => match.trim().slice(1));\n attributes.class = classes.join(\" \");\n }\n const idMatch = tempString.match(/(?:^|\\s)#([a-zA-Z][\\w-]*)/);\n if (idMatch) {\n attributes.id = idMatch[1];\n }\n const kvRegex = /([a-zA-Z][\\w-]*)\\s*=\\s*(__QUOTED_\\d+__)/g;\n const kvMatches = Array.from(tempString.matchAll(kvRegex));\n kvMatches.forEach(([, key, quotedRef]) => {\n var _a;\n const quotedIndex = parseInt(((_a = quotedRef.match(/__QUOTED_(\\d+)__/)) == null ? void 0 : _a[1]) || \"0\", 10);\n const quotedValue = quotedStrings[quotedIndex];\n if (quotedValue) {\n attributes[key] = quotedValue.slice(1, -1);\n }\n });\n const cleanString = tempString.replace(/(?:^|\\s)\\.([a-zA-Z][\\w-]*)/g, \"\").replace(/(?:^|\\s)#([a-zA-Z][\\w-]*)/g, \"\").replace(/([a-zA-Z][\\w-]*)\\s*=\\s*__QUOTED_\\d+__/g, \"\").trim();\n if (cleanString) {\n const booleanAttrs = cleanString.split(/\\s+/).filter(Boolean);\n booleanAttrs.forEach((attr) => {\n if (attr.match(/^[a-zA-Z][\\w-]*$/)) {\n attributes[attr] = true;\n }\n });\n }\n return attributes;\n}\nfunction serializeAttributes(attributes) {\n if (!attributes || Object.keys(attributes).length === 0) {\n return \"\";\n }\n const parts = [];\n if (attributes.class) {\n const classes = String(attributes.class).split(/\\s+/).filter(Boolean);\n classes.forEach((cls) => parts.push(`.${cls}`));\n }\n if (attributes.id) {\n parts.push(`#${attributes.id}`);\n }\n Object.entries(attributes).forEach(([key, value]) => {\n if (key === \"class\" || key === \"id\") {\n return;\n }\n if (value === true) {\n parts.push(key);\n } else if (value !== false && value != null) {\n parts.push(`${key}=\"${String(value)}\"`);\n }\n });\n return parts.join(\" \");\n}\n\n// src/utilities/markdown/createAtomBlockMarkdownSpec.ts\nfunction createAtomBlockMarkdownSpec(options) {\n const {\n nodeName,\n name: markdownName,\n parseAttributes: parseAttributes2 = parseAttributes,\n serializeAttributes: serializeAttributes2 = serializeAttributes,\n defaultAttributes = {},\n requiredAttributes = [],\n allowedAttributes\n } = options;\n const blockName = markdownName || nodeName;\n const filterAttributes = (attrs) => {\n if (!allowedAttributes) {\n return attrs;\n }\n const filtered = {};\n allowedAttributes.forEach((key) => {\n if (key in attrs) {\n filtered[key] = attrs[key];\n }\n });\n return filtered;\n };\n return {\n parseMarkdown: (token, h2) => {\n const attrs = { ...defaultAttributes, ...token.attributes };\n return h2.createNode(nodeName, attrs, []);\n },\n markdownTokenizer: {\n name: nodeName,\n level: \"block\",\n start(src) {\n var _a;\n const regex = new RegExp(`^:::${blockName}(?:\\\\s|$)`, \"m\");\n const index = (_a = src.match(regex)) == null ? void 0 : _a.index;\n return index !== void 0 ? index : -1;\n },\n tokenize(src, _tokens, _lexer) {\n const regex = new RegExp(`^:::${blockName}(?:\\\\s+\\\\{([^}]*)\\\\})?\\\\s*:::(?:\\\\n|$)`);\n const match = src.match(regex);\n if (!match) {\n return void 0;\n }\n const attrString = match[1] || \"\";\n const attributes = parseAttributes2(attrString);\n const missingRequired = requiredAttributes.find((required) => !(required in attributes));\n if (missingRequired) {\n return void 0;\n }\n return {\n type: nodeName,\n raw: match[0],\n attributes\n };\n }\n },\n renderMarkdown: (node) => {\n const filteredAttrs = filterAttributes(node.attrs || {});\n const attrs = serializeAttributes2(filteredAttrs);\n const attrString = attrs ? ` {${attrs}}` : \"\";\n return `:::${blockName}${attrString} :::`;\n }\n };\n}\n\n// src/utilities/markdown/createBlockMarkdownSpec.ts\nfunction createBlockMarkdownSpec(options) {\n const {\n nodeName,\n name: markdownName,\n getContent,\n parseAttributes: parseAttributes2 = parseAttributes,\n serializeAttributes: serializeAttributes2 = serializeAttributes,\n defaultAttributes = {},\n content = \"block\",\n allowedAttributes\n } = options;\n const blockName = markdownName || nodeName;\n const filterAttributes = (attrs) => {\n if (!allowedAttributes) {\n return attrs;\n }\n const filtered = {};\n allowedAttributes.forEach((key) => {\n if (key in attrs) {\n filtered[key] = attrs[key];\n }\n });\n return filtered;\n };\n return {\n parseMarkdown: (token, h2) => {\n let nodeContent;\n if (getContent) {\n const contentResult = getContent(token);\n nodeContent = typeof contentResult === \"string\" ? [{ type: \"text\", text: contentResult }] : contentResult;\n } else if (content === \"block\") {\n nodeContent = h2.parseChildren(token.tokens || []);\n } else {\n nodeContent = h2.parseInline(token.tokens || []);\n }\n const attrs = { ...defaultAttributes, ...token.attributes };\n return h2.createNode(nodeName, attrs, nodeContent);\n },\n markdownTokenizer: {\n name: nodeName,\n level: \"block\",\n start(src) {\n var _a;\n const regex = new RegExp(`^:::${blockName}`, \"m\");\n const index = (_a = src.match(regex)) == null ? void 0 : _a.index;\n return index !== void 0 ? index : -1;\n },\n tokenize(src, _tokens, lexer) {\n var _a;\n const openingRegex = new RegExp(`^:::${blockName}(?:\\\\s+\\\\{([^}]*)\\\\})?\\\\s*\\\\n`);\n const openingMatch = src.match(openingRegex);\n if (!openingMatch) {\n return void 0;\n }\n const [openingTag, attrString = \"\"] = openingMatch;\n const attributes = parseAttributes2(attrString);\n let level = 1;\n const position = openingTag.length;\n let matchedContent = \"\";\n const blockPattern = /^:::([\\w-]*)(\\s.*)?/gm;\n const remaining = src.slice(position);\n blockPattern.lastIndex = 0;\n for (; ; ) {\n const match = blockPattern.exec(remaining);\n if (match === null) {\n break;\n }\n const matchPos = match.index;\n const blockType = match[1];\n if ((_a = match[2]) == null ? void 0 : _a.endsWith(\":::\")) {\n continue;\n }\n if (blockType) {\n level += 1;\n } else {\n level -= 1;\n if (level === 0) {\n const rawContent = remaining.slice(0, matchPos);\n matchedContent = rawContent.trim();\n const fullMatch = src.slice(0, position + matchPos + match[0].length);\n let contentTokens = [];\n if (matchedContent) {\n if (content === \"block\") {\n contentTokens = lexer.blockTokens(rawContent);\n contentTokens.forEach((token) => {\n if (token.text && (!token.tokens || token.tokens.length === 0)) {\n token.tokens = lexer.inlineTokens(token.text);\n }\n });\n while (contentTokens.length > 0) {\n const lastToken = contentTokens[contentTokens.length - 1];\n if (lastToken.type === \"paragraph\" && (!lastToken.text || lastToken.text.trim() === \"\")) {\n contentTokens.pop();\n } else {\n break;\n }\n }\n } else {\n contentTokens = lexer.inlineTokens(matchedContent);\n }\n }\n return {\n type: nodeName,\n raw: fullMatch,\n attributes,\n content: matchedContent,\n tokens: contentTokens\n };\n }\n }\n }\n return void 0;\n }\n },\n renderMarkdown: (node, h2) => {\n const filteredAttrs = filterAttributes(node.attrs || {});\n const attrs = serializeAttributes2(filteredAttrs);\n const attrString = attrs ? ` {${attrs}}` : \"\";\n const renderedContent = h2.renderChildren(node.content || [], \"\\n\\n\");\n return `:::${blockName}${attrString}\n\n${renderedContent}\n\n:::`;\n }\n };\n}\n\n// src/utilities/markdown/createInlineMarkdownSpec.ts\nfunction parseShortcodeAttributes(attrString) {\n if (!attrString.trim()) {\n return {};\n }\n const attributes = {};\n const regex = /(\\w+)=(?:\"([^\"]*)\"|'([^']*)')/g;\n let match = regex.exec(attrString);\n while (match !== null) {\n const [, key, doubleQuoted, singleQuoted] = match;\n attributes[key] = doubleQuoted || singleQuoted;\n match = regex.exec(attrString);\n }\n return attributes;\n}\nfunction serializeShortcodeAttributes(attrs) {\n return Object.entries(attrs).filter(([, value]) => value !== void 0 && value !== null).map(([key, value]) => `${key}=\"${value}\"`).join(\" \");\n}\nfunction createInlineMarkdownSpec(options) {\n const {\n nodeName,\n name: shortcodeName,\n getContent,\n parseAttributes: parseAttributes2 = parseShortcodeAttributes,\n serializeAttributes: serializeAttributes2 = serializeShortcodeAttributes,\n defaultAttributes = {},\n selfClosing = false,\n allowedAttributes\n } = options;\n const shortcode = shortcodeName || nodeName;\n const filterAttributes = (attrs) => {\n if (!allowedAttributes) {\n return attrs;\n }\n const filtered = {};\n allowedAttributes.forEach((attr) => {\n const attrName = typeof attr === \"string\" ? attr : attr.name;\n const skipIfDefault = typeof attr === \"string\" ? void 0 : attr.skipIfDefault;\n if (attrName in attrs) {\n const value = attrs[attrName];\n if (skipIfDefault !== void 0 && value === skipIfDefault) {\n return;\n }\n filtered[attrName] = value;\n }\n });\n return filtered;\n };\n const escapedShortcode = shortcode.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n return {\n parseMarkdown: (token, h2) => {\n const attrs = { ...defaultAttributes, ...token.attributes };\n if (selfClosing) {\n return h2.createNode(nodeName, attrs);\n }\n const content = getContent ? getContent(token) : token.content || \"\";\n if (content) {\n return h2.createNode(nodeName, attrs, [h2.createTextNode(content)]);\n }\n return h2.createNode(nodeName, attrs, []);\n },\n markdownTokenizer: {\n name: nodeName,\n level: \"inline\",\n start(src) {\n const startPattern = selfClosing ? new RegExp(`\\\\[${escapedShortcode}\\\\s*[^\\\\]]*\\\\]`) : new RegExp(`\\\\[${escapedShortcode}\\\\s*[^\\\\]]*\\\\][\\\\s\\\\S]*?\\\\[\\\\/${escapedShortcode}\\\\]`);\n const match = src.match(startPattern);\n const index = match == null ? void 0 : match.index;\n return index !== void 0 ? index : -1;\n },\n tokenize(src, _tokens, _lexer) {\n const tokenPattern = selfClosing ? new RegExp(`^\\\\[${escapedShortcode}\\\\s*([^\\\\]]*)\\\\]`) : new RegExp(`^\\\\[${escapedShortcode}\\\\s*([^\\\\]]*)\\\\]([\\\\s\\\\S]*?)\\\\[\\\\/${escapedShortcode}\\\\]`);\n const match = src.match(tokenPattern);\n if (!match) {\n return void 0;\n }\n let content = \"\";\n let attrString = \"\";\n if (selfClosing) {\n const [, attrs] = match;\n attrString = attrs;\n } else {\n const [, attrs, contentMatch] = match;\n attrString = attrs;\n content = contentMatch || \"\";\n }\n const attributes = parseAttributes2(attrString.trim());\n return {\n type: nodeName,\n raw: match[0],\n content: content.trim(),\n attributes\n };\n }\n },\n renderMarkdown: (node) => {\n let content = \"\";\n if (getContent) {\n content = getContent(node);\n } else if (node.content && node.content.length > 0) {\n content = node.content.filter((child) => child.type === \"text\").map((child) => child.text).join(\"\");\n }\n const filteredAttrs = filterAttributes(node.attrs || {});\n const attrs = serializeAttributes2(filteredAttrs);\n const attrString = attrs ? ` ${attrs}` : \"\";\n if (selfClosing) {\n return `[${shortcode}${attrString}]`;\n }\n return `[${shortcode}${attrString}]${content}[/${shortcode}]`;\n }\n };\n}\n\n// src/utilities/markdown/parseIndentedBlocks.ts\nfunction parseIndentedBlocks(src, config, lexer) {\n var _a, _b, _c, _d;\n const lines = src.split(\"\\n\");\n const items = [];\n let totalRaw = \"\";\n let i = 0;\n const baseIndentSize = config.baseIndentSize || 2;\n while (i < lines.length) {\n const currentLine = lines[i];\n const itemMatch = currentLine.match(config.itemPattern);\n if (!itemMatch) {\n if (items.length > 0) {\n break;\n } else if (currentLine.trim() === \"\") {\n i += 1;\n totalRaw = `${totalRaw}${currentLine}\n`;\n continue;\n } else {\n return void 0;\n }\n }\n const itemData = config.extractItemData(itemMatch);\n const { indentLevel, mainContent } = itemData;\n totalRaw = `${totalRaw}${currentLine}\n`;\n const itemContent = [mainContent];\n i += 1;\n while (i < lines.length) {\n const nextLine = lines[i];\n if (nextLine.trim() === \"\") {\n const nextNonEmptyIndex = lines.slice(i + 1).findIndex((l) => l.trim() !== \"\");\n if (nextNonEmptyIndex === -1) {\n break;\n }\n const nextNonEmpty = lines[i + 1 + nextNonEmptyIndex];\n const nextIndent2 = ((_b = (_a = nextNonEmpty.match(/^(\\s*)/)) == null ? void 0 : _a[1]) == null ? void 0 : _b.length) || 0;\n if (nextIndent2 > indentLevel) {\n itemContent.push(nextLine);\n totalRaw = `${totalRaw}${nextLine}\n`;\n i += 1;\n continue;\n } else {\n break;\n }\n }\n const nextIndent = ((_d = (_c = nextLine.match(/^(\\s*)/)) == null ? void 0 : _c[1]) == null ? void 0 : _d.length) || 0;\n if (nextIndent > indentLevel) {\n itemContent.push(nextLine);\n totalRaw = `${totalRaw}${nextLine}\n`;\n i += 1;\n } else {\n break;\n }\n }\n let nestedTokens;\n const nestedContent = itemContent.slice(1);\n if (nestedContent.length > 0) {\n const dedentedNested = nestedContent.map((nestedLine) => nestedLine.slice(indentLevel + baseIndentSize)).join(\"\\n\");\n if (dedentedNested.trim()) {\n if (config.customNestedParser) {\n nestedTokens = config.customNestedParser(dedentedNested);\n } else {\n nestedTokens = lexer.blockTokens(dedentedNested);\n }\n }\n }\n const token = config.createToken(itemData, nestedTokens);\n items.push(token);\n }\n if (items.length === 0) {\n return void 0;\n }\n return {\n items,\n raw: totalRaw\n };\n}\n\n// src/utilities/markdown/renderNestedMarkdownContent.ts\nfunction renderNestedMarkdownContent(node, h2, prefixOrGenerator, ctx) {\n if (!node || !Array.isArray(node.content)) {\n return \"\";\n }\n const prefix = typeof prefixOrGenerator === \"function\" ? prefixOrGenerator(ctx) : prefixOrGenerator;\n const [content, ...children] = node.content;\n const mainContent = h2.renderChildren([content]);\n const output = [`${prefix}${mainContent}`];\n if (children && children.length > 0) {\n children.forEach((child) => {\n const childContent = h2.renderChildren([child]);\n if (childContent) {\n const indentedChild = childContent.split(\"\\n\").map((line) => line ? h2.indent(line) : \"\").join(\"\\n\");\n output.push(indentedChild);\n }\n });\n }\n return output.join(\"\\n\");\n}\n\n// src/MarkView.ts\nfunction updateMarkViewAttributes(checkMark, editor, attrs = {}) {\n const { state } = editor;\n const { doc, tr } = state;\n const thisMark = checkMark;\n doc.descendants((node, pos) => {\n const from = tr.mapping.map(pos);\n const to = tr.mapping.map(pos) + node.nodeSize;\n let foundMark = null;\n node.marks.forEach((mark) => {\n if (mark !== thisMark) {\n return false;\n }\n foundMark = mark;\n });\n if (!foundMark) {\n return;\n }\n let needsUpdate = false;\n Object.keys(attrs).forEach((k) => {\n if (attrs[k] !== foundMark.attrs[k]) {\n needsUpdate = true;\n }\n });\n if (needsUpdate) {\n const updatedMark = checkMark.type.create({\n ...checkMark.attrs,\n ...attrs\n });\n tr.removeMark(from, to, checkMark.type);\n tr.addMark(from, to, updatedMark);\n }\n });\n if (tr.docChanged) {\n editor.view.dispatch(tr);\n }\n}\nvar MarkView = class {\n constructor(component, props, options) {\n this.component = component;\n this.editor = props.editor;\n this.options = { ...options };\n this.mark = props.mark;\n this.HTMLAttributes = props.HTMLAttributes;\n }\n get dom() {\n return this.editor.view.dom;\n }\n get contentDOM() {\n return null;\n }\n /**\n * Update the attributes of the mark in the document.\n * @param attrs The attributes to update.\n */\n updateAttributes(attrs, checkMark) {\n updateMarkViewAttributes(checkMark || this.mark, this.editor, attrs);\n }\n ignoreMutation(mutation) {\n if (!this.dom || !this.contentDOM) {\n return true;\n }\n if (typeof this.options.ignoreMutation === \"function\") {\n return this.options.ignoreMutation({ mutation });\n }\n if (mutation.type === \"selection\") {\n return false;\n }\n if (this.dom.contains(mutation.target) && mutation.type === \"childList\" && (isiOS() || isAndroid()) && this.editor.isFocused) {\n const changedNodes = [...Array.from(mutation.addedNodes), ...Array.from(mutation.removedNodes)];\n if (changedNodes.every((node) => node.isContentEditable)) {\n return false;\n }\n }\n if (this.contentDOM === mutation.target && mutation.type === \"attributes\") {\n return true;\n }\n if (this.contentDOM.contains(mutation.target)) {\n return false;\n }\n return true;\n }\n};\n\n// src/Node.ts\nvar Node3 = class _Node extends Extendable {\n constructor() {\n super(...arguments);\n this.type = \"node\";\n }\n /**\n * Create a new Node instance\n * @param config - Node configuration object or a function that returns a configuration object\n */\n static create(config = {}) {\n const resolvedConfig = typeof config === \"function\" ? config() : config;\n return new _Node(resolvedConfig);\n }\n configure(options) {\n return super.configure(options);\n }\n extend(extendedConfig) {\n const resolvedConfig = typeof extendedConfig === \"function\" ? extendedConfig() : extendedConfig;\n return super.extend(resolvedConfig);\n }\n};\n\n// src/NodeView.ts\n\nvar NodeView = class {\n constructor(component, props, options) {\n this.isDragging = false;\n this.component = component;\n this.editor = props.editor;\n this.options = {\n stopEvent: null,\n ignoreMutation: null,\n ...options\n };\n this.extension = props.extension;\n this.node = props.node;\n this.decorations = props.decorations;\n this.innerDecorations = props.innerDecorations;\n this.view = props.view;\n this.HTMLAttributes = props.HTMLAttributes;\n this.getPos = props.getPos;\n this.mount();\n }\n mount() {\n return;\n }\n get dom() {\n return this.editor.view.dom;\n }\n get contentDOM() {\n return null;\n }\n onDragStart(event) {\n var _a, _b, _c, _d, _e, _f, _g;\n const { view } = this.editor;\n const target = event.target;\n const dragHandle = target.nodeType === 3 ? (_a = target.parentElement) == null ? void 0 : _a.closest(\"[data-drag-handle]\") : target.closest(\"[data-drag-handle]\");\n if (!this.dom || ((_b = this.contentDOM) == null ? void 0 : _b.contains(target)) || !dragHandle) {\n return;\n }\n let x = 0;\n let y = 0;\n if (this.dom !== dragHandle) {\n const domBox = this.dom.getBoundingClientRect();\n const handleBox = dragHandle.getBoundingClientRect();\n const offsetX = (_d = event.offsetX) != null ? _d : (_c = event.nativeEvent) == null ? void 0 : _c.offsetX;\n const offsetY = (_f = event.offsetY) != null ? _f : (_e = event.nativeEvent) == null ? void 0 : _e.offsetY;\n x = handleBox.x - domBox.x + offsetX;\n y = handleBox.y - domBox.y + offsetY;\n }\n const clonedNode = this.dom.cloneNode(true);\n try {\n const domBox = this.dom.getBoundingClientRect();\n clonedNode.style.width = `${Math.round(domBox.width)}px`;\n clonedNode.style.height = `${Math.round(domBox.height)}px`;\n clonedNode.style.boxSizing = \"border-box\";\n clonedNode.style.pointerEvents = \"none\";\n } catch {\n }\n let dragImageWrapper = null;\n try {\n dragImageWrapper = document.createElement(\"div\");\n dragImageWrapper.style.position = \"absolute\";\n dragImageWrapper.style.top = \"-9999px\";\n dragImageWrapper.style.left = \"-9999px\";\n dragImageWrapper.style.pointerEvents = \"none\";\n dragImageWrapper.appendChild(clonedNode);\n document.body.appendChild(dragImageWrapper);\n (_g = event.dataTransfer) == null ? void 0 : _g.setDragImage(clonedNode, x, y);\n } finally {\n if (dragImageWrapper) {\n setTimeout(() => {\n try {\n dragImageWrapper == null ? void 0 : dragImageWrapper.remove();\n } catch {\n }\n }, 0);\n }\n }\n const pos = this.getPos();\n if (typeof pos !== \"number\") {\n return;\n }\n const selection = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.NodeSelection.create(view.state.doc, pos);\n const transaction = view.state.tr.setSelection(selection);\n view.dispatch(transaction);\n }\n stopEvent(event) {\n var _a;\n if (!this.dom) {\n return false;\n }\n if (typeof this.options.stopEvent === \"function\") {\n return this.options.stopEvent({ event });\n }\n const target = event.target;\n const isInElement = this.dom.contains(target) && !((_a = this.contentDOM) == null ? void 0 : _a.contains(target));\n if (!isInElement) {\n return false;\n }\n const isDragEvent = event.type.startsWith(\"drag\");\n const isDropEvent = event.type === \"drop\";\n const isInput = [\"INPUT\", \"BUTTON\", \"SELECT\", \"TEXTAREA\"].includes(target.tagName) || target.isContentEditable;\n if (isInput && !isDropEvent && !isDragEvent) {\n return true;\n }\n const { isEditable } = this.editor;\n const { isDragging } = this;\n const isDraggable = !!this.node.type.spec.draggable;\n const isSelectable = _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_2__.NodeSelection.isSelectable(this.node);\n const isCopyEvent = event.type === \"copy\";\n const isPasteEvent = event.type === \"paste\";\n const isCutEvent = event.type === \"cut\";\n const isClickEvent = event.type === \"mousedown\";\n if (!isDraggable && isSelectable && isDragEvent && event.target === this.dom) {\n event.preventDefault();\n }\n if (isDraggable && isDragEvent && !isDragging && event.target === this.dom) {\n event.preventDefault();\n return false;\n }\n if (isDraggable && isEditable && !isDragging && isClickEvent) {\n const dragHandle = target.closest(\"[data-drag-handle]\");\n const isValidDragHandle = dragHandle && (this.dom === dragHandle || this.dom.contains(dragHandle));\n if (isValidDragHandle) {\n this.isDragging = true;\n document.addEventListener(\n \"dragend\",\n () => {\n this.isDragging = false;\n },\n { once: true }\n );\n document.addEventListener(\n \"drop\",\n () => {\n this.isDragging = false;\n },\n { once: true }\n );\n document.addEventListener(\n \"mouseup\",\n () => {\n this.isDragging = false;\n },\n { once: true }\n );\n }\n }\n if (isDragging || isDropEvent || isCopyEvent || isPasteEvent || isCutEvent || isClickEvent && isSelectable) {\n return false;\n }\n return true;\n }\n /**\n * Called when a DOM [mutation](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) or a selection change happens within the view.\n * @return `false` if the editor should re-read the selection or re-parse the range around the mutation\n * @return `true` if it can safely be ignored.\n */\n ignoreMutation(mutation) {\n if (!this.dom || !this.contentDOM) {\n return true;\n }\n if (typeof this.options.ignoreMutation === \"function\") {\n return this.options.ignoreMutation({ mutation });\n }\n if (this.node.isLeaf || this.node.isAtom) {\n return true;\n }\n if (mutation.type === \"selection\") {\n return false;\n }\n if (this.dom.contains(mutation.target) && mutation.type === \"childList\" && (isiOS() || isAndroid()) && this.editor.isFocused) {\n const changedNodes = [...Array.from(mutation.addedNodes), ...Array.from(mutation.removedNodes)];\n if (changedNodes.every((node) => node.isContentEditable)) {\n return false;\n }\n }\n if (this.contentDOM === mutation.target && mutation.type === \"attributes\") {\n return true;\n }\n if (this.contentDOM.contains(mutation.target)) {\n return false;\n }\n return true;\n }\n /**\n * Update the attributes of the prosemirror node.\n */\n updateAttributes(attributes) {\n this.editor.commands.command(({ tr }) => {\n const pos = this.getPos();\n if (typeof pos !== \"number\") {\n return false;\n }\n tr.setNodeMarkup(pos, void 0, {\n ...this.node.attrs,\n ...attributes\n });\n return true;\n });\n }\n /**\n * Delete the node.\n */\n deleteNode() {\n const from = this.getPos();\n if (typeof from !== \"number\") {\n return;\n }\n const to = from + this.node.nodeSize;\n this.editor.commands.deleteRange({ from, to });\n }\n};\n\n// src/pasteRules/markPasteRule.ts\nfunction markPasteRule(config) {\n return new PasteRule({\n find: config.find,\n handler: ({ state, range, match, pasteEvent }) => {\n const attributes = callOrReturn(config.getAttributes, void 0, match, pasteEvent);\n if (attributes === false || attributes === null) {\n return null;\n }\n const { tr } = state;\n const captureGroup = match[match.length - 1];\n const fullMatch = match[0];\n let markEnd = range.to;\n if (captureGroup) {\n const startSpaces = fullMatch.search(/\\S/);\n const textStart = range.from + fullMatch.indexOf(captureGroup);\n const textEnd = textStart + captureGroup.length;\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc).filter((item) => {\n const excluded = item.mark.type.excluded;\n return excluded.find((type) => type === config.type && type !== item.mark.type);\n }).filter((item) => item.to > textStart);\n if (excludedMarks.length) {\n return null;\n }\n if (textEnd < range.to) {\n tr.delete(textEnd, range.to);\n }\n if (textStart > range.from) {\n tr.delete(range.from + startSpaces, textStart);\n }\n markEnd = range.from + startSpaces + captureGroup.length;\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\n tr.removeStoredMark(config.type);\n }\n }\n });\n}\n\n// src/pasteRules/nodePasteRule.ts\nfunction nodePasteRule(config) {\n return new PasteRule({\n find: config.find,\n handler({ match, chain, range, pasteEvent }) {\n const attributes = callOrReturn(config.getAttributes, void 0, match, pasteEvent);\n const content = callOrReturn(config.getContent, void 0, attributes);\n if (attributes === false || attributes === null) {\n return null;\n }\n const node = { type: config.type.name, attrs: attributes };\n if (content) {\n node.content = content;\n }\n if (match.input) {\n chain().deleteRange(range).insertContentAt(range.from, node);\n }\n }\n });\n}\n\n// src/pasteRules/textPasteRule.ts\nfunction textPasteRule(config) {\n return new PasteRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n let insert = config.replace;\n let start = range.from;\n const end = range.to;\n if (match[1]) {\n const offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n const cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n state.tr.insertText(insert, start, end);\n }\n });\n}\n\n// src/Tracker.ts\nvar Tracker = class {\n constructor(transaction) {\n this.transaction = transaction;\n this.currentStep = this.transaction.steps.length;\n }\n map(position) {\n let deleted = false;\n const mappedPosition = this.transaction.steps.slice(this.currentStep).reduce((newPosition, step) => {\n const mapResult = step.getMap().mapResult(newPosition);\n if (mapResult.deleted) {\n deleted = true;\n }\n return mapResult.pos;\n }, position);\n return {\n position: mappedPosition,\n deleted\n };\n }\n};\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2NvcmUvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0NBQWtDO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQSxVQUFVLHFCQUFxQjtBQUMvQixRQUFRLFlBQVk7QUFDcEIsUUFBUSxNQUFNO0FBQ2QsUUFBUSxjQUFjO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZCQUE2QjtBQUN6QyxZQUFZLE9BQU87QUFDbkIsWUFBWSxLQUFLO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw2QkFBNkI7QUFDekMsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkscUJBQXFCO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix5QkFBeUI7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFlBQVksS0FBSztBQUNqQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxTQUFTO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELGdCQUFnQjtBQUM1RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtEQUFrRDtBQUM5RDtBQUNBO0FBQ0EsMEJBQTBCLHVEQUFVO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLGdCQUFnQixFQUFFLHdCQUF3QjtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxZQUFZLHNCQUFzQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdEQUFnRDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixxQkFBcUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLEtBQUs7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUZBQXlGO0FBQ3pGO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUJBQXFCO0FBQ3JDO0FBQ0EsY0FBYyxLQUFLO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixxQkFBcUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHFCQUFxQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ3lFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw0QkFBNEI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsa0VBQVk7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix5QkFBeUI7QUFDekMsZ0JBQWdCLGtCQUFrQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELDZEQUFRO0FBQzNEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsb0JBQW9CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Q1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsT0FBTyxFQUFFLFlBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0RBQStEO0FBQy9ELFVBQVUsUUFBUTtBQUNsQixVQUFVLFVBQVU7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsVUFBVTtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ21FO0FBQ25FO0FBQ0E7QUFDQTtBQUNB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QUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF5SEU7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHRpcHRhcFxcY29yZVxcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2V4cG9ydCA9ICh0YXJnZXQsIGFsbCkgPT4ge1xuICBmb3IgKHZhciBuYW1lIGluIGFsbClcbiAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7IGdldDogYWxsW25hbWVdLCBlbnVtZXJhYmxlOiB0cnVlIH0pO1xufTtcblxuLy8gc3JjL2hlbHBlcnMvY3JlYXRlQ2hhaW5hYmxlU3RhdGUudHNcbmZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVN0YXRlKGNvbmZpZykge1xuICBjb25zdCB7IHN0YXRlLCB0cmFuc2FjdGlvbiB9ID0gY29uZmlnO1xuICBsZXQgeyBzZWxlY3Rpb24gfSA9IHRyYW5zYWN0aW9uO1xuICBsZXQgeyBkb2MgfSA9IHRyYW5zYWN0aW9uO1xuICBsZXQgeyBzdG9yZWRNYXJrcyB9ID0gdHJhbnNhY3Rpb247XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgYXBwbHk6IHN0YXRlLmFwcGx5LmJpbmQoc3RhdGUpLFxuICAgIGFwcGx5VHJhbnNhY3Rpb246IHN0YXRlLmFwcGx5VHJhbnNhY3Rpb24uYmluZChzdGF0ZSksXG4gICAgcGx1Z2luczogc3RhdGUucGx1Z2lucyxcbiAgICBzY2hlbWE6IHN0YXRlLnNjaGVtYSxcbiAgICByZWNvbmZpZ3VyZTogc3RhdGUucmVjb25maWd1cmUuYmluZChzdGF0ZSksXG4gICAgdG9KU09OOiBzdGF0ZS50b0pTT04uYmluZChzdGF0ZSksXG4gICAgZ2V0IHN0b3JlZE1hcmtzKCkge1xuICAgICAgcmV0dXJuIHN0b3JlZE1hcmtzO1xuICAgIH0sXG4gICAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgfSxcbiAgICBnZXQgZG9jKCkge1xuICAgICAgcmV0dXJuIGRvYztcbiAgICB9LFxuICAgIGdldCB0cigpIHtcbiAgICAgIHNlbGVjdGlvbiA9IHRyYW5zYWN0aW9uLnNlbGVjdGlvbjtcbiAgICAgIGRvYyA9IHRyYW5zYWN0aW9uLmRvYztcbiAgICAgIHN0b3JlZE1hcmtzID0gdHJhbnNhY3Rpb24uc3RvcmVkTWFya3M7XG4gICAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gICAgfVxuICB9O1xufVxuXG4vLyBzcmMvQ29tbWFuZE1hbmFnZXIudHNcbnZhciBDb21tYW5kTWFuYWdlciA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICB0aGlzLmVkaXRvciA9IHByb3BzLmVkaXRvcjtcbiAgICB0aGlzLnJhd0NvbW1hbmRzID0gdGhpcy5lZGl0b3IuZXh0ZW5zaW9uTWFuYWdlci5jb21tYW5kcztcbiAgICB0aGlzLmN1c3RvbVN0YXRlID0gcHJvcHMuc3RhdGU7XG4gIH1cbiAgZ2V0IGhhc0N1c3RvbVN0YXRlKCkge1xuICAgIHJldHVybiAhIXRoaXMuY3VzdG9tU3RhdGU7XG4gIH1cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbVN0YXRlIHx8IHRoaXMuZWRpdG9yLnN0YXRlO1xuICB9XG4gIGdldCBjb21tYW5kcygpIHtcbiAgICBjb25zdCB7IHJhd0NvbW1hbmRzLCBlZGl0b3IsIHN0YXRlIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdmlldyB9ID0gZWRpdG9yO1xuICAgIGNvbnN0IHsgdHIgfSA9IHN0YXRlO1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5idWlsZFByb3BzKHRyKTtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmF3Q29tbWFuZHMpLm1hcCgoW25hbWUsIGNvbW1hbmQyXSkgPT4ge1xuICAgICAgICBjb25zdCBtZXRob2QgPSAoLi4uYXJncykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gY29tbWFuZDIoLi4uYXJncykocHJvcHMpO1xuICAgICAgICAgIGlmICghdHIuZ2V0TWV0YShcInByZXZlbnREaXNwYXRjaFwiKSAmJiAhdGhpcy5oYXNDdXN0b21TdGF0ZSkge1xuICAgICAgICAgICAgdmlldy5kaXNwYXRjaCh0cik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjYWxsYmFjaztcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFtuYW1lLCBtZXRob2RdO1xuICAgICAgfSlcbiAgICApO1xuICB9XG4gIGdldCBjaGFpbigpIHtcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5jcmVhdGVDaGFpbigpO1xuICB9XG4gIGdldCBjYW4oKSB7XG4gICAgcmV0dXJuICgpID0+IHRoaXMuY3JlYXRlQ2FuKCk7XG4gIH1cbiAgY3JlYXRlQ2hhaW4oc3RhcnRUciwgc2hvdWxkRGlzcGF0Y2ggPSB0cnVlKSB7XG4gICAgY29uc3QgeyByYXdDb21tYW5kcywgZWRpdG9yLCBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCB7IHZpZXcgfSA9IGVkaXRvcjtcbiAgICBjb25zdCBjYWxsYmFja3MgPSBbXTtcbiAgICBjb25zdCBoYXNTdGFydFRyYW5zYWN0aW9uID0gISFzdGFydFRyO1xuICAgIGNvbnN0IHRyID0gc3RhcnRUciB8fCBzdGF0ZS50cjtcbiAgICBjb25zdCBydW4zID0gKCkgPT4ge1xuICAgICAgaWYgKCFoYXNTdGFydFRyYW5zYWN0aW9uICYmIHNob3VsZERpc3BhdGNoICYmICF0ci5nZXRNZXRhKFwicHJldmVudERpc3BhdGNoXCIpICYmICF0aGlzLmhhc0N1c3RvbVN0YXRlKSB7XG4gICAgICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNhbGxiYWNrcy5ldmVyeSgoY2FsbGJhY2spID0+IGNhbGxiYWNrID09PSB0cnVlKTtcbiAgICB9O1xuICAgIGNvbnN0IGNoYWluID0ge1xuICAgICAgLi4uT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhyYXdDb21tYW5kcykubWFwKChbbmFtZSwgY29tbWFuZDJdKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hhaW5lZENvbW1hbmQgPSAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB0aGlzLmJ1aWxkUHJvcHModHIsIHNob3VsZERpc3BhdGNoKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gY29tbWFuZDIoLi4uYXJncykocHJvcHMpO1xuICAgICAgICAgICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICAgICAgcmV0dXJuIGNoYWluO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIFtuYW1lLCBjaGFpbmVkQ29tbWFuZF07XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgcnVuOiBydW4zXG4gICAgfTtcbiAgICByZXR1cm4gY2hhaW47XG4gIH1cbiAgY3JlYXRlQ2FuKHN0YXJ0VHIpIHtcbiAgICBjb25zdCB7IHJhd0NvbW1hbmRzLCBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCBkaXNwYXRjaCA9IGZhbHNlO1xuICAgIGNvbnN0IHRyID0gc3RhcnRUciB8fCBzdGF0ZS50cjtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuYnVpbGRQcm9wcyh0ciwgZGlzcGF0Y2gpO1xuICAgIGNvbnN0IGZvcm1hdHRlZENvbW1hbmRzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmF3Q29tbWFuZHMpLm1hcCgoW25hbWUsIGNvbW1hbmQyXSkgPT4ge1xuICAgICAgICByZXR1cm4gW25hbWUsICguLi5hcmdzKSA9PiBjb21tYW5kMiguLi5hcmdzKSh7IC4uLnByb3BzLCBkaXNwYXRjaDogdm9pZCAwIH0pXTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZm9ybWF0dGVkQ29tbWFuZHMsXG4gICAgICBjaGFpbjogKCkgPT4gdGhpcy5jcmVhdGVDaGFpbih0ciwgZGlzcGF0Y2gpXG4gICAgfTtcbiAgfVxuICBidWlsZFByb3BzKHRyLCBzaG91bGREaXNwYXRjaCA9IHRydWUpIHtcbiAgICBjb25zdCB7IHJhd0NvbW1hbmRzLCBlZGl0b3IsIHN0YXRlIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdmlldyB9ID0gZWRpdG9yO1xuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgdHIsXG4gICAgICBlZGl0b3IsXG4gICAgICB2aWV3LFxuICAgICAgc3RhdGU6IGNyZWF0ZUNoYWluYWJsZVN0YXRlKHtcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHRyYW5zYWN0aW9uOiB0clxuICAgICAgfSksXG4gICAgICBkaXNwYXRjaDogc2hvdWxkRGlzcGF0Y2ggPyAoKSA9PiB2b2lkIDAgOiB2b2lkIDAsXG4gICAgICBjaGFpbjogKCkgPT4gdGhpcy5jcmVhdGVDaGFpbih0ciwgc2hvdWxkRGlzcGF0Y2gpLFxuICAgICAgY2FuOiAoKSA9PiB0aGlzLmNyZWF0ZUNhbih0ciksXG4gICAgICBnZXQgY29tbWFuZHMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMocmF3Q29tbWFuZHMpLm1hcCgoW25hbWUsIGNvbW1hbmQyXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFtuYW1lLCAoLi4uYXJncykgPT4gY29tbWFuZDIoLi4uYXJncykocHJvcHMpXTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvaW5kZXgudHNcbnZhciBjb21tYW5kc19leHBvcnRzID0ge307XG5fX2V4cG9ydChjb21tYW5kc19leHBvcnRzLCB7XG4gIGJsdXI6ICgpID0+IGJsdXIsXG4gIGNsZWFyQ29udGVudDogKCkgPT4gY2xlYXJDb250ZW50LFxuICBjbGVhck5vZGVzOiAoKSA9PiBjbGVhck5vZGVzLFxuICBjb21tYW5kOiAoKSA9PiBjb21tYW5kLFxuICBjcmVhdGVQYXJhZ3JhcGhOZWFyOiAoKSA9PiBjcmVhdGVQYXJhZ3JhcGhOZWFyLFxuICBjdXQ6ICgpID0+IGN1dCxcbiAgZGVsZXRlQ3VycmVudE5vZGU6ICgpID0+IGRlbGV0ZUN1cnJlbnROb2RlLFxuICBkZWxldGVOb2RlOiAoKSA9PiBkZWxldGVOb2RlLFxuICBkZWxldGVSYW5nZTogKCkgPT4gZGVsZXRlUmFuZ2UsXG4gIGRlbGV0ZVNlbGVjdGlvbjogKCkgPT4gZGVsZXRlU2VsZWN0aW9uLFxuICBlbnRlcjogKCkgPT4gZW50ZXIsXG4gIGV4aXRDb2RlOiAoKSA9PiBleGl0Q29kZSxcbiAgZXh0ZW5kTWFya1JhbmdlOiAoKSA9PiBleHRlbmRNYXJrUmFuZ2UsXG4gIGZpcnN0OiAoKSA9PiBmaXJzdCxcbiAgZm9jdXM6ICgpID0+IGZvY3VzLFxuICBmb3JFYWNoOiAoKSA9PiBmb3JFYWNoLFxuICBpbnNlcnRDb250ZW50OiAoKSA9PiBpbnNlcnRDb250ZW50LFxuICBpbnNlcnRDb250ZW50QXQ6ICgpID0+IGluc2VydENvbnRlbnRBdCxcbiAgam9pbkJhY2t3YXJkOiAoKSA9PiBqb2luQmFja3dhcmQsXG4gIGpvaW5Eb3duOiAoKSA9PiBqb2luRG93bixcbiAgam9pbkZvcndhcmQ6ICgpID0+IGpvaW5Gb3J3YXJkLFxuICBqb2luSXRlbUJhY2t3YXJkOiAoKSA9PiBqb2luSXRlbUJhY2t3YXJkLFxuICBqb2luSXRlbUZvcndhcmQ6ICgpID0+IGpvaW5JdGVtRm9yd2FyZCxcbiAgam9pblRleHRibG9ja0JhY2t3YXJkOiAoKSA9PiBqb2luVGV4dGJsb2NrQmFja3dhcmQsXG4gIGpvaW5UZXh0YmxvY2tGb3J3YXJkOiAoKSA9PiBqb2luVGV4dGJsb2NrRm9yd2FyZCxcbiAgam9pblVwOiAoKSA9PiBqb2luVXAsXG4gIGtleWJvYXJkU2hvcnRjdXQ6ICgpID0+IGtleWJvYXJkU2hvcnRjdXQsXG4gIGxpZnQ6ICgpID0+IGxpZnQsXG4gIGxpZnRFbXB0eUJsb2NrOiAoKSA9PiBsaWZ0RW1wdHlCbG9jayxcbiAgbGlmdExpc3RJdGVtOiAoKSA9PiBsaWZ0TGlzdEl0ZW0sXG4gIG5ld2xpbmVJbkNvZGU6ICgpID0+IG5ld2xpbmVJbkNvZGUsXG4gIHJlc2V0QXR0cmlidXRlczogKCkgPT4gcmVzZXRBdHRyaWJ1dGVzLFxuICBzY3JvbGxJbnRvVmlldzogKCkgPT4gc2Nyb2xsSW50b1ZpZXcsXG4gIHNlbGVjdEFsbDogKCkgPT4gc2VsZWN0QWxsLFxuICBzZWxlY3ROb2RlQmFja3dhcmQ6ICgpID0+IHNlbGVjdE5vZGVCYWNrd2FyZCxcbiAgc2VsZWN0Tm9kZUZvcndhcmQ6ICgpID0+IHNlbGVjdE5vZGVGb3J3YXJkLFxuICBzZWxlY3RQYXJlbnROb2RlOiAoKSA9PiBzZWxlY3RQYXJlbnROb2RlLFxuICBzZWxlY3RUZXh0YmxvY2tFbmQ6ICgpID0+IHNlbGVjdFRleHRibG9ja0VuZCxcbiAgc2VsZWN0VGV4dGJsb2NrU3RhcnQ6ICgpID0+IHNlbGVjdFRleHRibG9ja1N0YXJ0LFxuICBzZXRDb250ZW50OiAoKSA9PiBzZXRDb250ZW50LFxuICBzZXRNYXJrOiAoKSA9PiBzZXRNYXJrLFxuICBzZXRNZXRhOiAoKSA9PiBzZXRNZXRhLFxuICBzZXROb2RlOiAoKSA9PiBzZXROb2RlLFxuICBzZXROb2RlU2VsZWN0aW9uOiAoKSA9PiBzZXROb2RlU2VsZWN0aW9uLFxuICBzZXRUZXh0RGlyZWN0aW9uOiAoKSA9PiBzZXRUZXh0RGlyZWN0aW9uLFxuICBzZXRUZXh0U2VsZWN0aW9uOiAoKSA9PiBzZXRUZXh0U2VsZWN0aW9uLFxuICBzaW5rTGlzdEl0ZW06ICgpID0+IHNpbmtMaXN0SXRlbSxcbiAgc3BsaXRCbG9jazogKCkgPT4gc3BsaXRCbG9jayxcbiAgc3BsaXRMaXN0SXRlbTogKCkgPT4gc3BsaXRMaXN0SXRlbSxcbiAgdG9nZ2xlTGlzdDogKCkgPT4gdG9nZ2xlTGlzdCxcbiAgdG9nZ2xlTWFyazogKCkgPT4gdG9nZ2xlTWFyayxcbiAgdG9nZ2xlTm9kZTogKCkgPT4gdG9nZ2xlTm9kZSxcbiAgdG9nZ2xlV3JhcDogKCkgPT4gdG9nZ2xlV3JhcCxcbiAgdW5kb0lucHV0UnVsZTogKCkgPT4gdW5kb0lucHV0UnVsZSxcbiAgdW5zZXRBbGxNYXJrczogKCkgPT4gdW5zZXRBbGxNYXJrcyxcbiAgdW5zZXRNYXJrOiAoKSA9PiB1bnNldE1hcmssXG4gIHVuc2V0VGV4dERpcmVjdGlvbjogKCkgPT4gdW5zZXRUZXh0RGlyZWN0aW9uLFxuICB1cGRhdGVBdHRyaWJ1dGVzOiAoKSA9PiB1cGRhdGVBdHRyaWJ1dGVzLFxuICB3cmFwSW46ICgpID0+IHdyYXBJbixcbiAgd3JhcEluTGlzdDogKCkgPT4gd3JhcEluTGlzdFxufSk7XG5cbi8vIHNyYy9jb21tYW5kcy9ibHVyLnRzXG52YXIgYmx1ciA9ICgpID0+ICh7IGVkaXRvciwgdmlldyB9KSA9PiB7XG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGlmICghZWRpdG9yLmlzRGVzdHJveWVkKSB7XG4gICAgICA7XG4gICAgICB2aWV3LmRvbS5ibHVyKCk7XG4gICAgICAoX2EgPSB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5nZXRTZWxlY3Rpb24oKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2NsZWFyQ29udGVudC50c1xudmFyIGNsZWFyQ29udGVudCA9IChlbWl0VXBkYXRlID0gdHJ1ZSkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICByZXR1cm4gY29tbWFuZHMuc2V0Q29udGVudChcIlwiLCB7IGVtaXRVcGRhdGUgfSk7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvY2xlYXJOb2Rlcy50c1xuaW1wb3J0IHsgbGlmdFRhcmdldCB9IGZyb20gXCJAdGlwdGFwL3BtL3RyYW5zZm9ybVwiO1xudmFyIGNsZWFyTm9kZXMgPSAoKSA9PiAoeyBzdGF0ZSwgdHIsIGRpc3BhdGNoIH0pID0+IHtcbiAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IHRyO1xuICBjb25zdCB7IHJhbmdlcyB9ID0gc2VsZWN0aW9uO1xuICBpZiAoIWRpc3BhdGNoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmFuZ2VzLmZvckVhY2goKHsgJGZyb20sICR0byB9KSA9PiB7XG4gICAgc3RhdGUuZG9jLm5vZGVzQmV0d2VlbigkZnJvbS5wb3MsICR0by5wb3MsIChub2RlLCBwb3MpID0+IHtcbiAgICAgIGlmIChub2RlLnR5cGUuaXNUZXh0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgZG9jLCBtYXBwaW5nIH0gPSB0cjtcbiAgICAgIGNvbnN0ICRtYXBwZWRGcm9tID0gZG9jLnJlc29sdmUobWFwcGluZy5tYXAocG9zKSk7XG4gICAgICBjb25zdCAkbWFwcGVkVG8gPSBkb2MucmVzb2x2ZShtYXBwaW5nLm1hcChwb3MgKyBub2RlLm5vZGVTaXplKSk7XG4gICAgICBjb25zdCBub2RlUmFuZ2UgPSAkbWFwcGVkRnJvbS5ibG9ja1JhbmdlKCRtYXBwZWRUbyk7XG4gICAgICBpZiAoIW5vZGVSYW5nZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRMaWZ0RGVwdGggPSBsaWZ0VGFyZ2V0KG5vZGVSYW5nZSk7XG4gICAgICBpZiAobm9kZS50eXBlLmlzVGV4dGJsb2NrKSB7XG4gICAgICAgIGNvbnN0IHsgZGVmYXVsdFR5cGUgfSA9ICRtYXBwZWRGcm9tLnBhcmVudC5jb250ZW50TWF0Y2hBdCgkbWFwcGVkRnJvbS5pbmRleCgpKTtcbiAgICAgICAgdHIuc2V0Tm9kZU1hcmt1cChub2RlUmFuZ2Uuc3RhcnQsIGRlZmF1bHRUeXBlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0YXJnZXRMaWZ0RGVwdGggfHwgdGFyZ2V0TGlmdERlcHRoID09PSAwKSB7XG4gICAgICAgIHRyLmxpZnQobm9kZVJhbmdlLCB0YXJnZXRMaWZ0RGVwdGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvY29tbWFuZC50c1xudmFyIGNvbW1hbmQgPSAoZm4pID0+IChwcm9wcykgPT4ge1xuICByZXR1cm4gZm4ocHJvcHMpO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2NyZWF0ZVBhcmFncmFwaE5lYXIudHNcbmltcG9ydCB7IGNyZWF0ZVBhcmFncmFwaE5lYXIgYXMgb3JpZ2luYWxDcmVhdGVQYXJhZ3JhcGhOZWFyIH0gZnJvbSBcIkB0aXB0YXAvcG0vY29tbWFuZHNcIjtcbnZhciBjcmVhdGVQYXJhZ3JhcGhOZWFyID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsQ3JlYXRlUGFyYWdyYXBoTmVhcihzdGF0ZSwgZGlzcGF0Y2gpO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2N1dC50c1xuaW1wb3J0IHsgVGV4dFNlbGVjdGlvbiB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG52YXIgY3V0ID0gKG9yaWdpblJhbmdlLCB0YXJnZXRQb3MpID0+ICh7IGVkaXRvciwgdHIgfSkgPT4ge1xuICBjb25zdCB7IHN0YXRlIH0gPSBlZGl0b3I7XG4gIGNvbnN0IGNvbnRlbnRTbGljZSA9IHN0YXRlLmRvYy5zbGljZShvcmlnaW5SYW5nZS5mcm9tLCBvcmlnaW5SYW5nZS50byk7XG4gIHRyLmRlbGV0ZVJhbmdlKG9yaWdpblJhbmdlLmZyb20sIG9yaWdpblJhbmdlLnRvKTtcbiAgY29uc3QgbmV3UG9zID0gdHIubWFwcGluZy5tYXAodGFyZ2V0UG9zKTtcbiAgdHIuaW5zZXJ0KG5ld1BvcywgY29udGVudFNsaWNlLmNvbnRlbnQpO1xuICB0ci5zZXRTZWxlY3Rpb24obmV3IFRleHRTZWxlY3Rpb24odHIuZG9jLnJlc29sdmUoTWF0aC5tYXgobmV3UG9zIC0gMSwgMCkpKSk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2RlbGV0ZUN1cnJlbnROb2RlLnRzXG52YXIgZGVsZXRlQ3VycmVudE5vZGUgPSAoKSA9PiAoeyB0ciwgZGlzcGF0Y2ggfSkgPT4ge1xuICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gdHI7XG4gIGNvbnN0IGN1cnJlbnROb2RlID0gc2VsZWN0aW9uLiRhbmNob3Iubm9kZSgpO1xuICBpZiAoY3VycmVudE5vZGUuY29udGVudC5zaXplID4gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCAkcG9zID0gdHIuc2VsZWN0aW9uLiRhbmNob3I7XG4gIGZvciAobGV0IGRlcHRoID0gJHBvcy5kZXB0aDsgZGVwdGggPiAwOyBkZXB0aCAtPSAxKSB7XG4gICAgY29uc3Qgbm9kZSA9ICRwb3Mubm9kZShkZXB0aCk7XG4gICAgaWYgKG5vZGUudHlwZSA9PT0gY3VycmVudE5vZGUudHlwZSkge1xuICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgIGNvbnN0IGZyb20gPSAkcG9zLmJlZm9yZShkZXB0aCk7XG4gICAgICAgIGNvbnN0IHRvID0gJHBvcy5hZnRlcihkZXB0aCk7XG4gICAgICAgIHRyLmRlbGV0ZShmcm9tLCB0bykuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBzcmMvaGVscGVycy9nZXROb2RlVHlwZS50c1xuZnVuY3Rpb24gZ2V0Tm9kZVR5cGUobmFtZU9yVHlwZSwgc2NoZW1hKSB7XG4gIGlmICh0eXBlb2YgbmFtZU9yVHlwZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmICghc2NoZW1hLm5vZGVzW25hbWVPclR5cGVdKSB7XG4gICAgICB0aHJvdyBFcnJvcihgVGhlcmUgaXMgbm8gbm9kZSB0eXBlIG5hbWVkICcke25hbWVPclR5cGV9Jy4gTWF5YmUgeW91IGZvcmdvdCB0byBhZGQgdGhlIGV4dGVuc2lvbj9gKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjaGVtYS5ub2Rlc1tuYW1lT3JUeXBlXTtcbiAgfVxuICByZXR1cm4gbmFtZU9yVHlwZTtcbn1cblxuLy8gc3JjL2NvbW1hbmRzL2RlbGV0ZU5vZGUudHNcbnZhciBkZWxldGVOb2RlID0gKHR5cGVPck5hbWUpID0+ICh7IHRyLCBzdGF0ZSwgZGlzcGF0Y2ggfSkgPT4ge1xuICBjb25zdCB0eXBlID0gZ2V0Tm9kZVR5cGUodHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgY29uc3QgJHBvcyA9IHRyLnNlbGVjdGlvbi4kYW5jaG9yO1xuICBmb3IgKGxldCBkZXB0aCA9ICRwb3MuZGVwdGg7IGRlcHRoID4gMDsgZGVwdGggLT0gMSkge1xuICAgIGNvbnN0IG5vZGUgPSAkcG9zLm5vZGUoZGVwdGgpO1xuICAgIGlmIChub2RlLnR5cGUgPT09IHR5cGUpIHtcbiAgICAgIGlmIChkaXNwYXRjaCkge1xuICAgICAgICBjb25zdCBmcm9tID0gJHBvcy5iZWZvcmUoZGVwdGgpO1xuICAgICAgICBjb25zdCB0byA9ICRwb3MuYWZ0ZXIoZGVwdGgpO1xuICAgICAgICB0ci5kZWxldGUoZnJvbSwgdG8pLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2RlbGV0ZVJhbmdlLnRzXG52YXIgZGVsZXRlUmFuZ2UgPSAocmFuZ2UpID0+ICh7IHRyLCBkaXNwYXRjaCB9KSA9PiB7XG4gIGNvbnN0IHsgZnJvbSwgdG8gfSA9IHJhbmdlO1xuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICB0ci5kZWxldGUoZnJvbSwgdG8pO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2RlbGV0ZVNlbGVjdGlvbi50c1xuaW1wb3J0IHsgZGVsZXRlU2VsZWN0aW9uIGFzIG9yaWdpbmFsRGVsZXRlU2VsZWN0aW9uIH0gZnJvbSBcIkB0aXB0YXAvcG0vY29tbWFuZHNcIjtcbnZhciBkZWxldGVTZWxlY3Rpb24gPSAoKSA9PiAoeyBzdGF0ZSwgZGlzcGF0Y2ggfSkgPT4ge1xuICByZXR1cm4gb3JpZ2luYWxEZWxldGVTZWxlY3Rpb24oc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9lbnRlci50c1xudmFyIGVudGVyID0gKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICByZXR1cm4gY29tbWFuZHMua2V5Ym9hcmRTaG9ydGN1dChcIkVudGVyXCIpO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2V4aXRDb2RlLnRzXG5pbXBvcnQgeyBleGl0Q29kZSBhcyBvcmlnaW5hbEV4aXRDb2RlIH0gZnJvbSBcIkB0aXB0YXAvcG0vY29tbWFuZHNcIjtcbnZhciBleGl0Q29kZSA9ICgpID0+ICh7IHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gIHJldHVybiBvcmlnaW5hbEV4aXRDb2RlKHN0YXRlLCBkaXNwYXRjaCk7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvZXh0ZW5kTWFya1JhbmdlLnRzXG5pbXBvcnQgeyBUZXh0U2VsZWN0aW9uIGFzIFRleHRTZWxlY3Rpb24yIH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcblxuLy8gc3JjL3V0aWxpdGllcy9pc1JlZ0V4cC50c1xuZnVuY3Rpb24gaXNSZWdFeHAodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IFwiW29iamVjdCBSZWdFeHBdXCI7XG59XG5cbi8vIHNyYy91dGlsaXRpZXMvb2JqZWN0SW5jbHVkZXMudHNcbmZ1bmN0aW9uIG9iamVjdEluY2x1ZGVzKG9iamVjdDEsIG9iamVjdDIsIG9wdGlvbnMgPSB7IHN0cmljdDogdHJ1ZSB9KSB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QyKTtcbiAgaWYgKCFrZXlzLmxlbmd0aCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBrZXlzLmV2ZXJ5KChrZXkpID0+IHtcbiAgICBpZiAob3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QyW2tleV0gPT09IG9iamVjdDFba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKG9iamVjdDJba2V5XSkpIHtcbiAgICAgIHJldHVybiBvYmplY3QyW2tleV0udGVzdChvYmplY3QxW2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0MltrZXldID09PSBvYmplY3QxW2tleV07XG4gIH0pO1xufVxuXG4vLyBzcmMvaGVscGVycy9nZXRNYXJrUmFuZ2UudHNcbmZ1bmN0aW9uIGZpbmRNYXJrSW5TZXQobWFya3MsIHR5cGUsIGF0dHJpYnV0ZXMgPSB7fSkge1xuICByZXR1cm4gbWFya3MuZmluZCgoaXRlbSkgPT4ge1xuICAgIHJldHVybiBpdGVtLnR5cGUgPT09IHR5cGUgJiYgb2JqZWN0SW5jbHVkZXMoXG4gICAgICAvLyBPbmx5IGNoZWNrIGVxdWFsaXR5IGZvciB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSBwcm92aWRlZFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLm1hcCgoaykgPT4gW2ssIGl0ZW0uYXR0cnNba11dKSksXG4gICAgICBhdHRyaWJ1dGVzXG4gICAgKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBpc01hcmtJblNldChtYXJrcywgdHlwZSwgYXR0cmlidXRlcyA9IHt9KSB7XG4gIHJldHVybiAhIWZpbmRNYXJrSW5TZXQobWFya3MsIHR5cGUsIGF0dHJpYnV0ZXMpO1xufVxuZnVuY3Rpb24gZ2V0TWFya1JhbmdlKCRwb3MsIHR5cGUsIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIF9hO1xuICBpZiAoISRwb3MgfHwgIXR5cGUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHN0YXJ0ID0gJHBvcy5wYXJlbnQuY2hpbGRBZnRlcigkcG9zLnBhcmVudE9mZnNldCk7XG4gIGlmICghc3RhcnQubm9kZSB8fCAhc3RhcnQubm9kZS5tYXJrcy5zb21lKChtYXJrMikgPT4gbWFyazIudHlwZSA9PT0gdHlwZSkpIHtcbiAgICBzdGFydCA9ICRwb3MucGFyZW50LmNoaWxkQmVmb3JlKCRwb3MucGFyZW50T2Zmc2V0KTtcbiAgfVxuICBpZiAoIXN0YXJ0Lm5vZGUgfHwgIXN0YXJ0Lm5vZGUubWFya3Muc29tZSgobWFyazIpID0+IG1hcmsyLnR5cGUgPT09IHR5cGUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIHx8ICgoX2EgPSBzdGFydC5ub2RlLm1hcmtzWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2EuYXR0cnMpO1xuICBjb25zdCBtYXJrID0gZmluZE1hcmtJblNldChbLi4uc3RhcnQubm9kZS5tYXJrc10sIHR5cGUsIGF0dHJpYnV0ZXMpO1xuICBpZiAoIW1hcmspIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHN0YXJ0SW5kZXggPSBzdGFydC5pbmRleDtcbiAgbGV0IHN0YXJ0UG9zID0gJHBvcy5zdGFydCgpICsgc3RhcnQub2Zmc2V0O1xuICBsZXQgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgMTtcbiAgbGV0IGVuZFBvcyA9IHN0YXJ0UG9zICsgc3RhcnQubm9kZS5ub2RlU2l6ZTtcbiAgd2hpbGUgKHN0YXJ0SW5kZXggPiAwICYmIGlzTWFya0luU2V0KFsuLi4kcG9zLnBhcmVudC5jaGlsZChzdGFydEluZGV4IC0gMSkubWFya3NdLCB0eXBlLCBhdHRyaWJ1dGVzKSkge1xuICAgIHN0YXJ0SW5kZXggLT0gMTtcbiAgICBzdGFydFBvcyAtPSAkcG9zLnBhcmVudC5jaGlsZChzdGFydEluZGV4KS5ub2RlU2l6ZTtcbiAgfVxuICB3aGlsZSAoZW5kSW5kZXggPCAkcG9zLnBhcmVudC5jaGlsZENvdW50ICYmIGlzTWFya0luU2V0KFsuLi4kcG9zLnBhcmVudC5jaGlsZChlbmRJbmRleCkubWFya3NdLCB0eXBlLCBhdHRyaWJ1dGVzKSkge1xuICAgIGVuZFBvcyArPSAkcG9zLnBhcmVudC5jaGlsZChlbmRJbmRleCkubm9kZVNpemU7XG4gICAgZW5kSW5kZXggKz0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGZyb206IHN0YXJ0UG9zLFxuICAgIHRvOiBlbmRQb3NcbiAgfTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvZ2V0TWFya1R5cGUudHNcbmZ1bmN0aW9uIGdldE1hcmtUeXBlKG5hbWVPclR5cGUsIHNjaGVtYSkge1xuICBpZiAodHlwZW9mIG5hbWVPclR5cGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAoIXNjaGVtYS5tYXJrc1tuYW1lT3JUeXBlXSkge1xuICAgICAgdGhyb3cgRXJyb3IoYFRoZXJlIGlzIG5vIG1hcmsgdHlwZSBuYW1lZCAnJHtuYW1lT3JUeXBlfScuIE1heWJlIHlvdSBmb3Jnb3QgdG8gYWRkIHRoZSBleHRlbnNpb24/YCk7XG4gICAgfVxuICAgIHJldHVybiBzY2hlbWEubWFya3NbbmFtZU9yVHlwZV07XG4gIH1cbiAgcmV0dXJuIG5hbWVPclR5cGU7XG59XG5cbi8vIHNyYy9jb21tYW5kcy9leHRlbmRNYXJrUmFuZ2UudHNcbnZhciBleHRlbmRNYXJrUmFuZ2UgPSAodHlwZU9yTmFtZSwgYXR0cmlidXRlcyA9IHt9KSA9PiAoeyB0ciwgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgY29uc3QgdHlwZSA9IGdldE1hcmtUeXBlKHR5cGVPck5hbWUsIHN0YXRlLnNjaGVtYSk7XG4gIGNvbnN0IHsgZG9jLCBzZWxlY3Rpb24gfSA9IHRyO1xuICBjb25zdCB7ICRmcm9tLCBmcm9tLCB0byB9ID0gc2VsZWN0aW9uO1xuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICBjb25zdCByYW5nZSA9IGdldE1hcmtSYW5nZSgkZnJvbSwgdHlwZSwgYXR0cmlidXRlcyk7XG4gICAgaWYgKHJhbmdlICYmIHJhbmdlLmZyb20gPD0gZnJvbSAmJiByYW5nZS50byA+PSB0bykge1xuICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gVGV4dFNlbGVjdGlvbjIuY3JlYXRlKGRvYywgcmFuZ2UuZnJvbSwgcmFuZ2UudG8pO1xuICAgICAgdHIuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2ZpcnN0LnRzXG52YXIgZmlyc3QgPSAoY29tbWFuZHMpID0+IChwcm9wcykgPT4ge1xuICBjb25zdCBpdGVtcyA9IHR5cGVvZiBjb21tYW5kcyA9PT0gXCJmdW5jdGlvblwiID8gY29tbWFuZHMocHJvcHMpIDogY29tbWFuZHM7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoaXRlbXNbaV0ocHJvcHMpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gc3JjL2hlbHBlcnMvaXNUZXh0U2VsZWN0aW9uLnRzXG5pbXBvcnQgeyBUZXh0U2VsZWN0aW9uIGFzIFRleHRTZWxlY3Rpb24zIH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbmZ1bmN0aW9uIGlzVGV4dFNlbGVjdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uMztcbn1cblxuLy8gc3JjL2hlbHBlcnMvcmVzb2x2ZUZvY3VzUG9zaXRpb24udHNcbmltcG9ydCB7IFNlbGVjdGlvbiwgVGV4dFNlbGVjdGlvbiBhcyBUZXh0U2VsZWN0aW9uNCB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG5cbi8vIHNyYy91dGlsaXRpZXMvbWluTWF4LnRzXG5mdW5jdGlvbiBtaW5NYXgodmFsdWUgPSAwLCBtaW4gPSAwLCBtYXggPSAwKSB7XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSwgbWluKSwgbWF4KTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvcmVzb2x2ZUZvY3VzUG9zaXRpb24udHNcbmZ1bmN0aW9uIHJlc29sdmVGb2N1c1Bvc2l0aW9uKGRvYywgcG9zaXRpb24gPSBudWxsKSB7XG4gIGlmICghcG9zaXRpb24pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBzZWxlY3Rpb25BdFN0YXJ0ID0gU2VsZWN0aW9uLmF0U3RhcnQoZG9jKTtcbiAgY29uc3Qgc2VsZWN0aW9uQXRFbmQgPSBTZWxlY3Rpb24uYXRFbmQoZG9jKTtcbiAgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0XCIgfHwgcG9zaXRpb24gPT09IHRydWUpIHtcbiAgICByZXR1cm4gc2VsZWN0aW9uQXRTdGFydDtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09IFwiZW5kXCIpIHtcbiAgICByZXR1cm4gc2VsZWN0aW9uQXRFbmQ7XG4gIH1cbiAgY29uc3QgbWluUG9zID0gc2VsZWN0aW9uQXRTdGFydC5mcm9tO1xuICBjb25zdCBtYXhQb3MgPSBzZWxlY3Rpb25BdEVuZC50bztcbiAgaWYgKHBvc2l0aW9uID09PSBcImFsbFwiKSB7XG4gICAgcmV0dXJuIFRleHRTZWxlY3Rpb240LmNyZWF0ZShkb2MsIG1pbk1heCgwLCBtaW5Qb3MsIG1heFBvcyksIG1pbk1heChkb2MuY29udGVudC5zaXplLCBtaW5Qb3MsIG1heFBvcykpO1xuICB9XG4gIHJldHVybiBUZXh0U2VsZWN0aW9uNC5jcmVhdGUoZG9jLCBtaW5NYXgocG9zaXRpb24sIG1pblBvcywgbWF4UG9zKSwgbWluTWF4KHBvc2l0aW9uLCBtaW5Qb3MsIG1heFBvcykpO1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL2lzQW5kcm9pZC50c1xuZnVuY3Rpb24gaXNBbmRyb2lkKCkge1xuICByZXR1cm4gbmF2aWdhdG9yLnBsYXRmb3JtID09PSBcIkFuZHJvaWRcIiB8fCAvYW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG59XG5cbi8vIHNyYy91dGlsaXRpZXMvaXNpT1MudHNcbmZ1bmN0aW9uIGlzaU9TKCkge1xuICByZXR1cm4gW1wiaVBhZCBTaW11bGF0b3JcIiwgXCJpUGhvbmUgU2ltdWxhdG9yXCIsIFwiaVBvZCBTaW11bGF0b3JcIiwgXCJpUGFkXCIsIFwiaVBob25lXCIsIFwiaVBvZFwiXS5pbmNsdWRlcyhuYXZpZ2F0b3IucGxhdGZvcm0pIHx8IC8vIGlQYWQgb24gaU9TIDEzIGRldGVjdGlvblxuICBuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKFwiTWFjXCIpICYmIFwib250b3VjaGVuZFwiIGluIGRvY3VtZW50O1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL2lzU2FmYXJpLnRzXG5mdW5jdGlvbiBpc1NhZmFyaSgpIHtcbiAgcmV0dXJuIHR5cGVvZiBuYXZpZ2F0b3IgIT09IFwidW5kZWZpbmVkXCIgPyAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpIDogZmFsc2U7XG59XG5cbi8vIHNyYy9jb21tYW5kcy9mb2N1cy50c1xudmFyIGZvY3VzID0gKHBvc2l0aW9uID0gbnVsbCwgb3B0aW9ucyA9IHt9KSA9PiAoeyBlZGl0b3IsIHZpZXcsIHRyLCBkaXNwYXRjaCB9KSA9PiB7XG4gIG9wdGlvbnMgPSB7XG4gICAgc2Nyb2xsSW50b1ZpZXc6IHRydWUsXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBkZWxheWVkRm9jdXMgPSAoKSA9PiB7XG4gICAgaWYgKGlzaU9TKCkgfHwgaXNBbmRyb2lkKCkpIHtcbiAgICAgIDtcbiAgICAgIHZpZXcuZG9tLmZvY3VzKCk7XG4gICAgfVxuICAgIGlmIChpc1NhZmFyaSgpICYmICFpc2lPUygpICYmICFpc0FuZHJvaWQoKSkge1xuICAgICAgO1xuICAgICAgdmlldy5kb20uZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgaWYgKCFlZGl0b3IuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgdmlldy5mb2N1cygpO1xuICAgICAgICBpZiAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5zY3JvbGxJbnRvVmlldykge1xuICAgICAgICAgIGVkaXRvci5jb21tYW5kcy5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIHRyeSB7XG4gICAgaWYgKHZpZXcuaGFzRm9jdXMoKSAmJiBwb3NpdGlvbiA9PT0gbnVsbCB8fCBwb3NpdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChkaXNwYXRjaCAmJiBwb3NpdGlvbiA9PT0gbnVsbCAmJiAhaXNUZXh0U2VsZWN0aW9uKGVkaXRvci5zdGF0ZS5zZWxlY3Rpb24pKSB7XG4gICAgZGVsYXllZEZvY3VzKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3Qgc2VsZWN0aW9uID0gcmVzb2x2ZUZvY3VzUG9zaXRpb24odHIuZG9jLCBwb3NpdGlvbikgfHwgZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcbiAgY29uc3QgaXNTYW1lU2VsZWN0aW9uID0gZWRpdG9yLnN0YXRlLnNlbGVjdGlvbi5lcShzZWxlY3Rpb24pO1xuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICBpZiAoIWlzU2FtZVNlbGVjdGlvbikge1xuICAgICAgdHIuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7XG4gICAgfVxuICAgIGlmIChpc1NhbWVTZWxlY3Rpb24gJiYgdHIuc3RvcmVkTWFya3MpIHtcbiAgICAgIHRyLnNldFN0b3JlZE1hcmtzKHRyLnN0b3JlZE1hcmtzKTtcbiAgICB9XG4gICAgZGVsYXllZEZvY3VzKCk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvZm9yRWFjaC50c1xudmFyIGZvckVhY2ggPSAoaXRlbXMsIGZuKSA9PiAocHJvcHMpID0+IHtcbiAgcmV0dXJuIGl0ZW1zLmV2ZXJ5KChpdGVtLCBpbmRleCkgPT4gZm4oaXRlbSwgeyAuLi5wcm9wcywgaW5kZXggfSkpO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2luc2VydENvbnRlbnQudHNcbnZhciBpbnNlcnRDb250ZW50ID0gKHZhbHVlLCBvcHRpb25zKSA9PiAoeyB0ciwgY29tbWFuZHMgfSkgPT4ge1xuICByZXR1cm4gY29tbWFuZHMuaW5zZXJ0Q29udGVudEF0KHsgZnJvbTogdHIuc2VsZWN0aW9uLmZyb20sIHRvOiB0ci5zZWxlY3Rpb24udG8gfSwgdmFsdWUsIG9wdGlvbnMpO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2luc2VydENvbnRlbnRBdC50c1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgRnJhZ21lbnQyIH0gZnJvbSBcIkB0aXB0YXAvcG0vbW9kZWxcIjtcblxuLy8gc3JjL2hlbHBlcnMvY3JlYXRlTm9kZUZyb21Db250ZW50LnRzXG5pbXBvcnQgeyBET01QYXJzZXIsIEZyYWdtZW50LCBOb2RlIGFzIFByb3NlTWlycm9yTm9kZSwgU2NoZW1hIH0gZnJvbSBcIkB0aXB0YXAvcG0vbW9kZWxcIjtcblxuLy8gc3JjL3V0aWxpdGllcy9lbGVtZW50RnJvbVN0cmluZy50c1xudmFyIHJlbW92ZVdoaXRlc3BhY2VzID0gKG5vZGUpID0+IHtcbiAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkTm9kZXM7XG4gIGZvciAobGV0IGkgPSBjaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSAzICYmIGNoaWxkLm5vZGVWYWx1ZSAmJiAvXihcXG5cXHNcXHN8XFxuKSQvLnRlc3QoY2hpbGQubm9kZVZhbHVlKSkge1xuICAgICAgbm9kZS5yZW1vdmVDaGlsZChjaGlsZCk7XG4gICAgfSBlbHNlIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgcmVtb3ZlV2hpdGVzcGFjZXMoY2hpbGQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9kZTtcbn07XG5mdW5jdGlvbiBlbGVtZW50RnJvbVN0cmluZyh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlt0aXB0YXAgZXJyb3JdOiB0aGVyZSBpcyBubyB3aW5kb3cgb2JqZWN0IGF2YWlsYWJsZSwgc28gdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZFwiKTtcbiAgfVxuICBjb25zdCB3cmFwcGVkVmFsdWUgPSBgPGJvZHk+JHt2YWx1ZX08L2JvZHk+YDtcbiAgY29uc3QgaHRtbCA9IG5ldyB3aW5kb3cuRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHdyYXBwZWRWYWx1ZSwgXCJ0ZXh0L2h0bWxcIikuYm9keTtcbiAgcmV0dXJuIHJlbW92ZVdoaXRlc3BhY2VzKGh0bWwpO1xufVxuXG4vLyBzcmMvaGVscGVycy9jcmVhdGVOb2RlRnJvbUNvbnRlbnQudHNcbmZ1bmN0aW9uIGNyZWF0ZU5vZGVGcm9tQ29udGVudChjb250ZW50LCBzY2hlbWEsIG9wdGlvbnMpIHtcbiAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBQcm9zZU1pcnJvck5vZGUgfHwgY29udGVudCBpbnN0YW5jZW9mIEZyYWdtZW50KSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgb3B0aW9ucyA9IHtcbiAgICBzbGljZTogdHJ1ZSxcbiAgICBwYXJzZU9wdGlvbnM6IHt9LFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgaXNKU09OQ29udGVudCA9IHR5cGVvZiBjb250ZW50ID09PSBcIm9iamVjdFwiICYmIGNvbnRlbnQgIT09IG51bGw7XG4gIGNvbnN0IGlzVGV4dENvbnRlbnQgPSB0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIjtcbiAgaWYgKGlzSlNPTkNvbnRlbnQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaXNBcnJheUNvbnRlbnQgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpICYmIGNvbnRlbnQubGVuZ3RoID4gMDtcbiAgICAgIGlmIChpc0FycmF5Q29udGVudCkge1xuICAgICAgICByZXR1cm4gRnJhZ21lbnQuZnJvbUFycmF5KGNvbnRlbnQubWFwKChpdGVtKSA9PiBzY2hlbWEubm9kZUZyb21KU09OKGl0ZW0pKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBub2RlID0gc2NoZW1hLm5vZGVGcm9tSlNPTihjb250ZW50KTtcbiAgICAgIGlmIChvcHRpb25zLmVycm9yT25JbnZhbGlkQ29udGVudCkge1xuICAgICAgICBub2RlLmNoZWNrKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKG9wdGlvbnMuZXJyb3JPbkludmFsaWRDb250ZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEpTT04gY29udGVudFwiLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUud2FybihcIlt0aXB0YXAgd2Fybl06IEludmFsaWQgY29udGVudC5cIiwgXCJQYXNzZWQgdmFsdWU6XCIsIGNvbnRlbnQsIFwiRXJyb3I6XCIsIGVycm9yKTtcbiAgICAgIHJldHVybiBjcmVhdGVOb2RlRnJvbUNvbnRlbnQoXCJcIiwgc2NoZW1hLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzVGV4dENvbnRlbnQpIHtcbiAgICBpZiAob3B0aW9ucy5lcnJvck9uSW52YWxpZENvbnRlbnQpIHtcbiAgICAgIGxldCBoYXNJbnZhbGlkQ29udGVudCA9IGZhbHNlO1xuICAgICAgbGV0IGludmFsaWRDb250ZW50ID0gXCJcIjtcbiAgICAgIGNvbnN0IGNvbnRlbnRDaGVja1NjaGVtYSA9IG5ldyBTY2hlbWEoe1xuICAgICAgICB0b3BOb2RlOiBzY2hlbWEuc3BlYy50b3BOb2RlLFxuICAgICAgICBtYXJrczogc2NoZW1hLnNwZWMubWFya3MsXG4gICAgICAgIC8vIFByb3NlbWlycm9yJ3Mgc2NoZW1hcyBhcmUgZXhlY3V0ZWQgc3VjaCB0aGF0OiB0aGUgbGFzdCB0byBleGVjdXRlLCBtYXRjaGVzIGxhc3RcbiAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIGNhbiBhZGQgYSBjYXRjaC1hbGwgbm9kZSBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlbWEgdG8gY2F0Y2ggYW55IGNvbnRlbnQgdGhhdCB3ZSBkb24ndCBrbm93IGhvdyB0byBoYW5kbGVcbiAgICAgICAgbm9kZXM6IHNjaGVtYS5zcGVjLm5vZGVzLmFwcGVuZCh7XG4gICAgICAgICAgX190aXB0YXBfX3ByaXZhdGVfX3Vua25vd25fX2NhdGNoX19hbGxfX25vZGU6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiaW5saW5lKlwiLFxuICAgICAgICAgICAgZ3JvdXA6IFwiYmxvY2tcIixcbiAgICAgICAgICAgIHBhcnNlRE9NOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0YWc6IFwiKlwiLFxuICAgICAgICAgICAgICAgIGdldEF0dHJzOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaGFzSW52YWxpZENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgaW52YWxpZENvbnRlbnQgPSB0eXBlb2YgZSA9PT0gXCJzdHJpbmdcIiA/IGUgOiBlLm91dGVySFRNTDtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgaWYgKG9wdGlvbnMuc2xpY2UpIHtcbiAgICAgICAgRE9NUGFyc2VyLmZyb21TY2hlbWEoY29udGVudENoZWNrU2NoZW1hKS5wYXJzZVNsaWNlKGVsZW1lbnRGcm9tU3RyaW5nKGNvbnRlbnQpLCBvcHRpb25zLnBhcnNlT3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBET01QYXJzZXIuZnJvbVNjaGVtYShjb250ZW50Q2hlY2tTY2hlbWEpLnBhcnNlKGVsZW1lbnRGcm9tU3RyaW5nKGNvbnRlbnQpLCBvcHRpb25zLnBhcnNlT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5lcnJvck9uSW52YWxpZENvbnRlbnQgJiYgaGFzSW52YWxpZENvbnRlbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW3RpcHRhcCBlcnJvcl06IEludmFsaWQgSFRNTCBjb250ZW50XCIsIHtcbiAgICAgICAgICBjYXVzZTogbmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgZm91bmQ6ICR7aW52YWxpZENvbnRlbnR9YClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlciA9IERPTVBhcnNlci5mcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgaWYgKG9wdGlvbnMuc2xpY2UpIHtcbiAgICAgIHJldHVybiBwYXJzZXIucGFyc2VTbGljZShlbGVtZW50RnJvbVN0cmluZyhjb250ZW50KSwgb3B0aW9ucy5wYXJzZU9wdGlvbnMpLmNvbnRlbnQ7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZXIucGFyc2UoZWxlbWVudEZyb21TdHJpbmcoY29udGVudCksIG9wdGlvbnMucGFyc2VPcHRpb25zKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlTm9kZUZyb21Db250ZW50KFwiXCIsIHNjaGVtYSwgb3B0aW9ucyk7XG59XG5cbi8vIHNyYy9oZWxwZXJzL3NlbGVjdGlvblRvSW5zZXJ0aW9uRW5kLnRzXG5pbXBvcnQgeyBTZWxlY3Rpb24gYXMgU2VsZWN0aW9uMiB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG5pbXBvcnQgeyBSZXBsYWNlQXJvdW5kU3RlcCwgUmVwbGFjZVN0ZXAgfSBmcm9tIFwiQHRpcHRhcC9wbS90cmFuc2Zvcm1cIjtcbmZ1bmN0aW9uIHNlbGVjdGlvblRvSW5zZXJ0aW9uRW5kKHRyLCBzdGFydExlbiwgYmlhcykge1xuICBjb25zdCBsYXN0ID0gdHIuc3RlcHMubGVuZ3RoIC0gMTtcbiAgaWYgKGxhc3QgPCBzdGFydExlbikge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBzdGVwID0gdHIuc3RlcHNbbGFzdF07XG4gIGlmICghKHN0ZXAgaW5zdGFuY2VvZiBSZXBsYWNlU3RlcCB8fCBzdGVwIGluc3RhbmNlb2YgUmVwbGFjZUFyb3VuZFN0ZXApKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG1hcCA9IHRyLm1hcHBpbmcubWFwc1tsYXN0XTtcbiAgbGV0IGVuZCA9IDA7XG4gIG1hcC5mb3JFYWNoKChfZnJvbSwgX3RvLCBfbmV3RnJvbSwgbmV3VG8pID0+IHtcbiAgICBpZiAoZW5kID09PSAwKSB7XG4gICAgICBlbmQgPSBuZXdUbztcbiAgICB9XG4gIH0pO1xuICB0ci5zZXRTZWxlY3Rpb24oU2VsZWN0aW9uMi5uZWFyKHRyLmRvYy5yZXNvbHZlKGVuZCksIGJpYXMpKTtcbn1cblxuLy8gc3JjL2NvbW1hbmRzL2luc2VydENvbnRlbnRBdC50c1xudmFyIGlzRnJhZ21lbnQgPSAobm9kZU9yRnJhZ21lbnQpID0+IHtcbiAgcmV0dXJuICEoXCJ0eXBlXCIgaW4gbm9kZU9yRnJhZ21lbnQpO1xufTtcbnZhciBpbnNlcnRDb250ZW50QXQgPSAocG9zaXRpb24sIHZhbHVlLCBvcHRpb25zKSA9PiAoeyB0ciwgZGlzcGF0Y2gsIGVkaXRvciB9KSA9PiB7XG4gIHZhciBfYTtcbiAgaWYgKGRpc3BhdGNoKSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIHBhcnNlT3B0aW9uczogZWRpdG9yLm9wdGlvbnMucGFyc2VPcHRpb25zLFxuICAgICAgdXBkYXRlU2VsZWN0aW9uOiB0cnVlLFxuICAgICAgYXBwbHlJbnB1dFJ1bGVzOiBmYWxzZSxcbiAgICAgIGFwcGx5UGFzdGVSdWxlczogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcbiAgICBsZXQgY29udGVudDtcbiAgICBjb25zdCBlbWl0Q29udGVudEVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBlZGl0b3IuZW1pdChcImNvbnRlbnRFcnJvclwiLCB7XG4gICAgICAgIGVkaXRvcixcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGRpc2FibGVDb2xsYWJvcmF0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKFwiY29sbGFib3JhdGlvblwiIGluIGVkaXRvci5zdG9yYWdlICYmIHR5cGVvZiBlZGl0b3Iuc3RvcmFnZS5jb2xsYWJvcmF0aW9uID09PSBcIm9iamVjdFwiICYmIGVkaXRvci5zdG9yYWdlLmNvbGxhYm9yYXRpb24pIHtcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGVkaXRvci5zdG9yYWdlLmNvbGxhYm9yYXRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IHBhcnNlT3B0aW9ucyA9IHtcbiAgICAgIHByZXNlcnZlV2hpdGVzcGFjZTogXCJmdWxsXCIsXG4gICAgICAuLi5vcHRpb25zLnBhcnNlT3B0aW9uc1xuICAgIH07XG4gICAgaWYgKCFvcHRpb25zLmVycm9yT25JbnZhbGlkQ29udGVudCAmJiAhZWRpdG9yLm9wdGlvbnMuZW5hYmxlQ29udGVudENoZWNrICYmIGVkaXRvci5vcHRpb25zLmVtaXRDb250ZW50RXJyb3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNyZWF0ZU5vZGVGcm9tQ29udGVudCh2YWx1ZSwgZWRpdG9yLnNjaGVtYSwge1xuICAgICAgICAgIHBhcnNlT3B0aW9ucyxcbiAgICAgICAgICBlcnJvck9uSW52YWxpZENvbnRlbnQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGVtaXRDb250ZW50RXJyb3IoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb250ZW50ID0gY3JlYXRlTm9kZUZyb21Db250ZW50KHZhbHVlLCBlZGl0b3Iuc2NoZW1hLCB7XG4gICAgICAgIHBhcnNlT3B0aW9ucyxcbiAgICAgICAgZXJyb3JPbkludmFsaWRDb250ZW50OiAoX2EgPSBvcHRpb25zLmVycm9yT25JbnZhbGlkQ29udGVudCkgIT0gbnVsbCA/IF9hIDogZWRpdG9yLm9wdGlvbnMuZW5hYmxlQ29udGVudENoZWNrXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlbWl0Q29udGVudEVycm9yKGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgeyBmcm9tLCB0byB9ID0gdHlwZW9mIHBvc2l0aW9uID09PSBcIm51bWJlclwiID8geyBmcm9tOiBwb3NpdGlvbiwgdG86IHBvc2l0aW9uIH0gOiB7IGZyb206IHBvc2l0aW9uLmZyb20sIHRvOiBwb3NpdGlvbi50byB9O1xuICAgIGxldCBpc09ubHlUZXh0Q29udGVudCA9IHRydWU7XG4gICAgbGV0IGlzT25seUJsb2NrQ29udGVudCA9IHRydWU7XG4gICAgY29uc3Qgbm9kZXMgPSBpc0ZyYWdtZW50KGNvbnRlbnQpID8gY29udGVudCA6IFtjb250ZW50XTtcbiAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBub2RlLmNoZWNrKCk7XG4gICAgICBpc09ubHlUZXh0Q29udGVudCA9IGlzT25seVRleHRDb250ZW50ID8gbm9kZS5pc1RleHQgJiYgbm9kZS5tYXJrcy5sZW5ndGggPT09IDAgOiBmYWxzZTtcbiAgICAgIGlzT25seUJsb2NrQ29udGVudCA9IGlzT25seUJsb2NrQ29udGVudCA/IG5vZGUuaXNCbG9jayA6IGZhbHNlO1xuICAgIH0pO1xuICAgIGlmIChmcm9tID09PSB0byAmJiBpc09ubHlCbG9ja0NvbnRlbnQpIHtcbiAgICAgIGNvbnN0IHsgcGFyZW50IH0gPSB0ci5kb2MucmVzb2x2ZShmcm9tKTtcbiAgICAgIGNvbnN0IGlzRW1wdHlUZXh0QmxvY2sgPSBwYXJlbnQuaXNUZXh0YmxvY2sgJiYgIXBhcmVudC50eXBlLnNwZWMuY29kZSAmJiAhcGFyZW50LmNoaWxkQ291bnQ7XG4gICAgICBpZiAoaXNFbXB0eVRleHRCbG9jaykge1xuICAgICAgICBmcm9tIC09IDE7XG4gICAgICAgIHRvICs9IDE7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBuZXdDb250ZW50O1xuICAgIGlmIChpc09ubHlUZXh0Q29udGVudCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIG5ld0NvbnRlbnQgPSB2YWx1ZS5tYXAoKHYpID0+IHYudGV4dCB8fCBcIlwiKS5qb2luKFwiXCIpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZyYWdtZW50Mikge1xuICAgICAgICBsZXQgdGV4dCA9IFwiXCI7XG4gICAgICAgIHZhbHVlLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAobm9kZS50ZXh0KSB7XG4gICAgICAgICAgICB0ZXh0ICs9IG5vZGUudGV4dDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBuZXdDb250ZW50ID0gdGV4dDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICEhdmFsdWUgJiYgISF2YWx1ZS50ZXh0KSB7XG4gICAgICAgIG5ld0NvbnRlbnQgPSB2YWx1ZS50ZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Q29udGVudCA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgdHIuaW5zZXJ0VGV4dChuZXdDb250ZW50LCBmcm9tLCB0byk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0NvbnRlbnQgPSBjb250ZW50O1xuICAgICAgY29uc3QgJGZyb20gPSB0ci5kb2MucmVzb2x2ZShmcm9tKTtcbiAgICAgIGNvbnN0ICRmcm9tTm9kZSA9ICRmcm9tLm5vZGUoKTtcbiAgICAgIGNvbnN0IGZyb21TZWxlY3Rpb25BdFN0YXJ0ID0gJGZyb20ucGFyZW50T2Zmc2V0ID09PSAwO1xuICAgICAgY29uc3QgaXNUZXh0U2VsZWN0aW9uMiA9ICRmcm9tTm9kZS5pc1RleHQgfHwgJGZyb21Ob2RlLmlzVGV4dGJsb2NrO1xuICAgICAgY29uc3QgaGFzQ29udGVudCA9ICRmcm9tTm9kZS5jb250ZW50LnNpemUgPiAwO1xuICAgICAgaWYgKGZyb21TZWxlY3Rpb25BdFN0YXJ0ICYmIGlzVGV4dFNlbGVjdGlvbjIgJiYgaGFzQ29udGVudCkge1xuICAgICAgICBmcm9tID0gTWF0aC5tYXgoMCwgZnJvbSAtIDEpO1xuICAgICAgfVxuICAgICAgdHIucmVwbGFjZVdpdGgoZnJvbSwgdG8sIG5ld0NvbnRlbnQpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy51cGRhdGVTZWxlY3Rpb24pIHtcbiAgICAgIHNlbGVjdGlvblRvSW5zZXJ0aW9uRW5kKHRyLCB0ci5zdGVwcy5sZW5ndGggLSAxLCAtMSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFwcGx5SW5wdXRSdWxlcykge1xuICAgICAgdHIuc2V0TWV0YShcImFwcGx5SW5wdXRSdWxlc1wiLCB7IGZyb20sIHRleHQ6IG5ld0NvbnRlbnQgfSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFwcGx5UGFzdGVSdWxlcykge1xuICAgICAgdHIuc2V0TWV0YShcImFwcGx5UGFzdGVSdWxlc1wiLCB7IGZyb20sIHRleHQ6IG5ld0NvbnRlbnQgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2pvaW4udHNcbmltcG9ydCB7XG4gIGpvaW5CYWNrd2FyZCBhcyBvcmlnaW5hbEpvaW5CYWNrd2FyZCxcbiAgam9pbkRvd24gYXMgb3JpZ2luYWxKb2luRG93bixcbiAgam9pbkZvcndhcmQgYXMgb3JpZ2luYWxKb2luRm9yd2FyZCxcbiAgam9pblVwIGFzIG9yaWdpbmFsSm9pblVwXG59IGZyb20gXCJAdGlwdGFwL3BtL2NvbW1hbmRzXCI7XG52YXIgam9pblVwID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsSm9pblVwKHN0YXRlLCBkaXNwYXRjaCk7XG59O1xudmFyIGpvaW5Eb3duID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsSm9pbkRvd24oc3RhdGUsIGRpc3BhdGNoKTtcbn07XG52YXIgam9pbkJhY2t3YXJkID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsSm9pbkJhY2t3YXJkKHN0YXRlLCBkaXNwYXRjaCk7XG59O1xudmFyIGpvaW5Gb3J3YXJkID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsSm9pbkZvcndhcmQoc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9qb2luSXRlbUJhY2t3YXJkLnRzXG5pbXBvcnQgeyBqb2luUG9pbnQgfSBmcm9tIFwiQHRpcHRhcC9wbS90cmFuc2Zvcm1cIjtcbnZhciBqb2luSXRlbUJhY2t3YXJkID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoLCB0ciB9KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcG9pbnQgPSBqb2luUG9pbnQoc3RhdGUuZG9jLCBzdGF0ZS5zZWxlY3Rpb24uJGZyb20ucG9zLCAtMSk7XG4gICAgaWYgKHBvaW50ID09PSBudWxsIHx8IHBvaW50ID09PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHIuam9pbihwb2ludCwgMik7XG4gICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICBkaXNwYXRjaCh0cik7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8vIHNyYy9jb21tYW5kcy9qb2luSXRlbUZvcndhcmQudHNcbmltcG9ydCB7IGpvaW5Qb2ludCBhcyBqb2luUG9pbnQyIH0gZnJvbSBcIkB0aXB0YXAvcG0vdHJhbnNmb3JtXCI7XG52YXIgam9pbkl0ZW1Gb3J3YXJkID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoLCB0ciB9KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcG9pbnQgPSBqb2luUG9pbnQyKHN0YXRlLmRvYywgc3RhdGUuc2VsZWN0aW9uLiRmcm9tLnBvcywgMSk7XG4gICAgaWYgKHBvaW50ID09PSBudWxsIHx8IHBvaW50ID09PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHIuam9pbihwb2ludCwgMik7XG4gICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICBkaXNwYXRjaCh0cik7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8vIHNyYy9jb21tYW5kcy9qb2luVGV4dGJsb2NrQmFja3dhcmQudHNcbmltcG9ydCB7IGpvaW5UZXh0YmxvY2tCYWNrd2FyZCBhcyBvcmlnaW5hbENvbW1hbmQgfSBmcm9tIFwiQHRpcHRhcC9wbS9jb21tYW5kc1wiO1xudmFyIGpvaW5UZXh0YmxvY2tCYWNrd2FyZCA9ICgpID0+ICh7IHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gIHJldHVybiBvcmlnaW5hbENvbW1hbmQoc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9qb2luVGV4dGJsb2NrRm9yd2FyZC50c1xuaW1wb3J0IHsgam9pblRleHRibG9ja0ZvcndhcmQgYXMgb3JpZ2luYWxDb21tYW5kMiB9IGZyb20gXCJAdGlwdGFwL3BtL2NvbW1hbmRzXCI7XG52YXIgam9pblRleHRibG9ja0ZvcndhcmQgPSAoKSA9PiAoeyBzdGF0ZSwgZGlzcGF0Y2ggfSkgPT4ge1xuICByZXR1cm4gb3JpZ2luYWxDb21tYW5kMihzdGF0ZSwgZGlzcGF0Y2gpO1xufTtcblxuLy8gc3JjL3V0aWxpdGllcy9pc01hY09TLnRzXG5mdW5jdGlvbiBpc01hY09TKCkge1xuICByZXR1cm4gdHlwZW9mIG5hdmlnYXRvciAhPT0gXCJ1bmRlZmluZWRcIiA/IC9NYWMvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSA6IGZhbHNlO1xufVxuXG4vLyBzcmMvY29tbWFuZHMva2V5Ym9hcmRTaG9ydGN1dC50c1xuZnVuY3Rpb24gbm9ybWFsaXplS2V5TmFtZShuYW1lKSB7XG4gIGNvbnN0IHBhcnRzID0gbmFtZS5zcGxpdCgvLSg/ISQpLyk7XG4gIGxldCByZXN1bHQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgaWYgKHJlc3VsdCA9PT0gXCJTcGFjZVwiKSB7XG4gICAgcmVzdWx0ID0gXCIgXCI7XG4gIH1cbiAgbGV0IGFsdDtcbiAgbGV0IGN0cmw7XG4gIGxldCBzaGlmdDtcbiAgbGV0IG1ldGE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoIC0gMTsgaSArPSAxKSB7XG4gICAgY29uc3QgbW9kID0gcGFydHNbaV07XG4gICAgaWYgKC9eKGNtZHxtZXRhfG0pJC9pLnRlc3QobW9kKSkge1xuICAgICAgbWV0YSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICgvXmEobHQpPyQvaS50ZXN0KG1vZCkpIHtcbiAgICAgIGFsdCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICgvXihjfGN0cmx8Y29udHJvbCkkL2kudGVzdChtb2QpKSB7XG4gICAgICBjdHJsID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKC9ecyhoaWZ0KT8kL2kudGVzdChtb2QpKSB7XG4gICAgICBzaGlmdCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICgvXm1vZCQvaS50ZXN0KG1vZCkpIHtcbiAgICAgIGlmIChpc2lPUygpIHx8IGlzTWFjT1MoKSkge1xuICAgICAgICBtZXRhID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN0cmwgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAke21vZH1gKTtcbiAgICB9XG4gIH1cbiAgaWYgKGFsdCkge1xuICAgIHJlc3VsdCA9IGBBbHQtJHtyZXN1bHR9YDtcbiAgfVxuICBpZiAoY3RybCkge1xuICAgIHJlc3VsdCA9IGBDdHJsLSR7cmVzdWx0fWA7XG4gIH1cbiAgaWYgKG1ldGEpIHtcbiAgICByZXN1bHQgPSBgTWV0YS0ke3Jlc3VsdH1gO1xuICB9XG4gIGlmIChzaGlmdCkge1xuICAgIHJlc3VsdCA9IGBTaGlmdC0ke3Jlc3VsdH1gO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG52YXIga2V5Ym9hcmRTaG9ydGN1dCA9IChuYW1lKSA9PiAoeyBlZGl0b3IsIHZpZXcsIHRyLCBkaXNwYXRjaCB9KSA9PiB7XG4gIGNvbnN0IGtleXMgPSBub3JtYWxpemVLZXlOYW1lKG5hbWUpLnNwbGl0KC8tKD8hJCkvKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5maW5kKChpdGVtKSA9PiAhW1wiQWx0XCIsIFwiQ3RybFwiLCBcIk1ldGFcIiwgXCJTaGlmdFwiXS5pbmNsdWRlcyhpdGVtKSk7XG4gIGNvbnN0IGV2ZW50ID0gbmV3IEtleWJvYXJkRXZlbnQoXCJrZXlkb3duXCIsIHtcbiAgICBrZXk6IGtleSA9PT0gXCJTcGFjZVwiID8gXCIgXCIgOiBrZXksXG4gICAgYWx0S2V5OiBrZXlzLmluY2x1ZGVzKFwiQWx0XCIpLFxuICAgIGN0cmxLZXk6IGtleXMuaW5jbHVkZXMoXCJDdHJsXCIpLFxuICAgIG1ldGFLZXk6IGtleXMuaW5jbHVkZXMoXCJNZXRhXCIpLFxuICAgIHNoaWZ0S2V5OiBrZXlzLmluY2x1ZGVzKFwiU2hpZnRcIiksXG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlXG4gIH0pO1xuICBjb25zdCBjYXB0dXJlZFRyYW5zYWN0aW9uID0gZWRpdG9yLmNhcHR1cmVUcmFuc2FjdGlvbigoKSA9PiB7XG4gICAgdmlldy5zb21lUHJvcChcImhhbmRsZUtleURvd25cIiwgKGYpID0+IGYodmlldywgZXZlbnQpKTtcbiAgfSk7XG4gIGNhcHR1cmVkVHJhbnNhY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNhcHR1cmVkVHJhbnNhY3Rpb24uc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgIGNvbnN0IG5ld1N0ZXAgPSBzdGVwLm1hcCh0ci5tYXBwaW5nKTtcbiAgICBpZiAobmV3U3RlcCAmJiBkaXNwYXRjaCkge1xuICAgICAgdHIubWF5YmVTdGVwKG5ld1N0ZXApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL2xpZnQudHNcbmltcG9ydCB7IGxpZnQgYXMgb3JpZ2luYWxMaWZ0IH0gZnJvbSBcIkB0aXB0YXAvcG0vY29tbWFuZHNcIjtcblxuLy8gc3JjL2hlbHBlcnMvaXNOb2RlQWN0aXZlLnRzXG5mdW5jdGlvbiBpc05vZGVBY3RpdmUoc3RhdGUsIHR5cGVPck5hbWUsIGF0dHJpYnV0ZXMgPSB7fSkge1xuICBjb25zdCB7IGZyb20sIHRvLCBlbXB0eSB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICBjb25zdCB0eXBlID0gdHlwZU9yTmFtZSA/IGdldE5vZGVUeXBlKHR5cGVPck5hbWUsIHN0YXRlLnNjaGVtYSkgOiBudWxsO1xuICBjb25zdCBub2RlUmFuZ2VzID0gW107XG4gIHN0YXRlLmRvYy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIChub2RlLCBwb3MpID0+IHtcbiAgICBpZiAobm9kZS5pc1RleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVsYXRpdmVGcm9tID0gTWF0aC5tYXgoZnJvbSwgcG9zKTtcbiAgICBjb25zdCByZWxhdGl2ZVRvID0gTWF0aC5taW4odG8sIHBvcyArIG5vZGUubm9kZVNpemUpO1xuICAgIG5vZGVSYW5nZXMucHVzaCh7XG4gICAgICBub2RlLFxuICAgICAgZnJvbTogcmVsYXRpdmVGcm9tLFxuICAgICAgdG86IHJlbGF0aXZlVG9cbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IHNlbGVjdGlvblJhbmdlID0gdG8gLSBmcm9tO1xuICBjb25zdCBtYXRjaGVkTm9kZVJhbmdlcyA9IG5vZGVSYW5nZXMuZmlsdGVyKChub2RlUmFuZ2UpID0+IHtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZS5uYW1lID09PSBub2RlUmFuZ2Uubm9kZS50eXBlLm5hbWU7XG4gIH0pLmZpbHRlcigobm9kZVJhbmdlKSA9PiBvYmplY3RJbmNsdWRlcyhub2RlUmFuZ2Uubm9kZS5hdHRycywgYXR0cmlidXRlcywgeyBzdHJpY3Q6IGZhbHNlIH0pKTtcbiAgaWYgKGVtcHR5KSB7XG4gICAgcmV0dXJuICEhbWF0Y2hlZE5vZGVSYW5nZXMubGVuZ3RoO1xuICB9XG4gIGNvbnN0IHJhbmdlID0gbWF0Y2hlZE5vZGVSYW5nZXMucmVkdWNlKChzdW0sIG5vZGVSYW5nZSkgPT4gc3VtICsgbm9kZVJhbmdlLnRvIC0gbm9kZVJhbmdlLmZyb20sIDApO1xuICByZXR1cm4gcmFuZ2UgPj0gc2VsZWN0aW9uUmFuZ2U7XG59XG5cbi8vIHNyYy9jb21tYW5kcy9saWZ0LnRzXG52YXIgbGlmdCA9ICh0eXBlT3JOYW1lLCBhdHRyaWJ1dGVzID0ge30pID0+ICh7IHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gIGNvbnN0IHR5cGUgPSBnZXROb2RlVHlwZSh0eXBlT3JOYW1lLCBzdGF0ZS5zY2hlbWEpO1xuICBjb25zdCBpc0FjdGl2ZTIgPSBpc05vZGVBY3RpdmUoc3RhdGUsIHR5cGUsIGF0dHJpYnV0ZXMpO1xuICBpZiAoIWlzQWN0aXZlMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb3JpZ2luYWxMaWZ0KHN0YXRlLCBkaXNwYXRjaCk7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvbGlmdEVtcHR5QmxvY2sudHNcbmltcG9ydCB7IGxpZnRFbXB0eUJsb2NrIGFzIG9yaWdpbmFsTGlmdEVtcHR5QmxvY2sgfSBmcm9tIFwiQHRpcHRhcC9wbS9jb21tYW5kc1wiO1xudmFyIGxpZnRFbXB0eUJsb2NrID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsTGlmdEVtcHR5QmxvY2soc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9saWZ0TGlzdEl0ZW0udHNcbmltcG9ydCB7IGxpZnRMaXN0SXRlbSBhcyBvcmlnaW5hbExpZnRMaXN0SXRlbSB9IGZyb20gXCJAdGlwdGFwL3BtL3NjaGVtYS1saXN0XCI7XG52YXIgbGlmdExpc3RJdGVtID0gKHR5cGVPck5hbWUpID0+ICh7IHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gIGNvbnN0IHR5cGUgPSBnZXROb2RlVHlwZSh0eXBlT3JOYW1lLCBzdGF0ZS5zY2hlbWEpO1xuICByZXR1cm4gb3JpZ2luYWxMaWZ0TGlzdEl0ZW0odHlwZSkoc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9uZXdsaW5lSW5Db2RlLnRzXG5pbXBvcnQgeyBuZXdsaW5lSW5Db2RlIGFzIG9yaWdpbmFsTmV3bGluZUluQ29kZSB9IGZyb20gXCJAdGlwdGFwL3BtL2NvbW1hbmRzXCI7XG52YXIgbmV3bGluZUluQ29kZSA9ICgpID0+ICh7IHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gIHJldHVybiBvcmlnaW5hbE5ld2xpbmVJbkNvZGUoc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9oZWxwZXJzL2dldFNjaGVtYVR5cGVOYW1lQnlOYW1lLnRzXG5mdW5jdGlvbiBnZXRTY2hlbWFUeXBlTmFtZUJ5TmFtZShuYW1lLCBzY2hlbWEpIHtcbiAgaWYgKHNjaGVtYS5ub2Rlc1tuYW1lXSkge1xuICAgIHJldHVybiBcIm5vZGVcIjtcbiAgfVxuICBpZiAoc2NoZW1hLm1hcmtzW25hbWVdKSB7XG4gICAgcmV0dXJuIFwibWFya1wiO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL2RlbGV0ZVByb3BzLnRzXG5mdW5jdGlvbiBkZWxldGVQcm9wcyhvYmosIHByb3BPclByb3BzKSB7XG4gIGNvbnN0IHByb3BzID0gdHlwZW9mIHByb3BPclByb3BzID09PSBcInN0cmluZ1wiID8gW3Byb3BPclByb3BzXSA6IHByb3BPclByb3BzO1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoKG5ld09iaiwgcHJvcCkgPT4ge1xuICAgIGlmICghcHJvcHMuaW5jbHVkZXMocHJvcCkpIHtcbiAgICAgIG5ld09ialtwcm9wXSA9IG9ialtwcm9wXTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld09iajtcbiAgfSwge30pO1xufVxuXG4vLyBzcmMvY29tbWFuZHMvcmVzZXRBdHRyaWJ1dGVzLnRzXG52YXIgcmVzZXRBdHRyaWJ1dGVzID0gKHR5cGVPck5hbWUsIGF0dHJpYnV0ZXMpID0+ICh7IHRyLCBzdGF0ZSwgZGlzcGF0Y2ggfSkgPT4ge1xuICBsZXQgbm9kZVR5cGUgPSBudWxsO1xuICBsZXQgbWFya1R5cGUgPSBudWxsO1xuICBjb25zdCBzY2hlbWFUeXBlID0gZ2V0U2NoZW1hVHlwZU5hbWVCeU5hbWUoXG4gICAgdHlwZW9mIHR5cGVPck5hbWUgPT09IFwic3RyaW5nXCIgPyB0eXBlT3JOYW1lIDogdHlwZU9yTmFtZS5uYW1lLFxuICAgIHN0YXRlLnNjaGVtYVxuICApO1xuICBpZiAoIXNjaGVtYVR5cGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHNjaGVtYVR5cGUgPT09IFwibm9kZVwiKSB7XG4gICAgbm9kZVR5cGUgPSBnZXROb2RlVHlwZSh0eXBlT3JOYW1lLCBzdGF0ZS5zY2hlbWEpO1xuICB9XG4gIGlmIChzY2hlbWFUeXBlID09PSBcIm1hcmtcIikge1xuICAgIG1hcmtUeXBlID0gZ2V0TWFya1R5cGUodHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgfVxuICBsZXQgY2FuUmVzZXQgPSBmYWxzZTtcbiAgdHIuc2VsZWN0aW9uLnJhbmdlcy5mb3JFYWNoKChyYW5nZSkgPT4ge1xuICAgIHN0YXRlLmRvYy5ub2Rlc0JldHdlZW4ocmFuZ2UuJGZyb20ucG9zLCByYW5nZS4kdG8ucG9zLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICBpZiAobm9kZVR5cGUgJiYgbm9kZVR5cGUgPT09IG5vZGUudHlwZSkge1xuICAgICAgICBjYW5SZXNldCA9IHRydWU7XG4gICAgICAgIGlmIChkaXNwYXRjaCkge1xuICAgICAgICAgIHRyLnNldE5vZGVNYXJrdXAocG9zLCB2b2lkIDAsIGRlbGV0ZVByb3BzKG5vZGUuYXR0cnMsIGF0dHJpYnV0ZXMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1hcmtUeXBlICYmIG5vZGUubWFya3MubGVuZ3RoKSB7XG4gICAgICAgIG5vZGUubWFya3MuZm9yRWFjaCgobWFyaykgPT4ge1xuICAgICAgICAgIGlmIChtYXJrVHlwZSA9PT0gbWFyay50eXBlKSB7XG4gICAgICAgICAgICBjYW5SZXNldCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoZGlzcGF0Y2gpIHtcbiAgICAgICAgICAgICAgdHIuYWRkTWFyayhwb3MsIHBvcyArIG5vZGUubm9kZVNpemUsIG1hcmtUeXBlLmNyZWF0ZShkZWxldGVQcm9wcyhtYXJrLmF0dHJzLCBhdHRyaWJ1dGVzKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gY2FuUmVzZXQ7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvc2Nyb2xsSW50b1ZpZXcudHNcbnZhciBzY3JvbGxJbnRvVmlldyA9ICgpID0+ICh7IHRyLCBkaXNwYXRjaCB9KSA9PiB7XG4gIGlmIChkaXNwYXRjaCkge1xuICAgIHRyLnNjcm9sbEludG9WaWV3KCk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvc2VsZWN0QWxsLnRzXG5pbXBvcnQgeyBBbGxTZWxlY3Rpb24gfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xudmFyIHNlbGVjdEFsbCA9ICgpID0+ICh7IHRyLCBkaXNwYXRjaCB9KSA9PiB7XG4gIGlmIChkaXNwYXRjaCkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IG5ldyBBbGxTZWxlY3Rpb24odHIuZG9jKTtcbiAgICB0ci5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9zZWxlY3ROb2RlQmFja3dhcmQudHNcbmltcG9ydCB7IHNlbGVjdE5vZGVCYWNrd2FyZCBhcyBvcmlnaW5hbFNlbGVjdE5vZGVCYWNrd2FyZCB9IGZyb20gXCJAdGlwdGFwL3BtL2NvbW1hbmRzXCI7XG52YXIgc2VsZWN0Tm9kZUJhY2t3YXJkID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsU2VsZWN0Tm9kZUJhY2t3YXJkKHN0YXRlLCBkaXNwYXRjaCk7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvc2VsZWN0Tm9kZUZvcndhcmQudHNcbmltcG9ydCB7IHNlbGVjdE5vZGVGb3J3YXJkIGFzIG9yaWdpbmFsU2VsZWN0Tm9kZUZvcndhcmQgfSBmcm9tIFwiQHRpcHRhcC9wbS9jb21tYW5kc1wiO1xudmFyIHNlbGVjdE5vZGVGb3J3YXJkID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsU2VsZWN0Tm9kZUZvcndhcmQoc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9zZWxlY3RQYXJlbnROb2RlLnRzXG5pbXBvcnQgeyBzZWxlY3RQYXJlbnROb2RlIGFzIG9yaWdpbmFsU2VsZWN0UGFyZW50Tm9kZSB9IGZyb20gXCJAdGlwdGFwL3BtL2NvbW1hbmRzXCI7XG52YXIgc2VsZWN0UGFyZW50Tm9kZSA9ICgpID0+ICh7IHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gIHJldHVybiBvcmlnaW5hbFNlbGVjdFBhcmVudE5vZGUoc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9zZWxlY3RUZXh0YmxvY2tFbmQudHNcbmltcG9ydCB7IHNlbGVjdFRleHRibG9ja0VuZCBhcyBvcmlnaW5hbFNlbGVjdFRleHRibG9ja0VuZCB9IGZyb20gXCJAdGlwdGFwL3BtL2NvbW1hbmRzXCI7XG52YXIgc2VsZWN0VGV4dGJsb2NrRW5kID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsU2VsZWN0VGV4dGJsb2NrRW5kKHN0YXRlLCBkaXNwYXRjaCk7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvc2VsZWN0VGV4dGJsb2NrU3RhcnQudHNcbmltcG9ydCB7IHNlbGVjdFRleHRibG9ja1N0YXJ0IGFzIG9yaWdpbmFsU2VsZWN0VGV4dGJsb2NrU3RhcnQgfSBmcm9tIFwiQHRpcHRhcC9wbS9jb21tYW5kc1wiO1xudmFyIHNlbGVjdFRleHRibG9ja1N0YXJ0ID0gKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgcmV0dXJuIG9yaWdpbmFsU2VsZWN0VGV4dGJsb2NrU3RhcnQoc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9oZWxwZXJzL2NyZWF0ZURvY3VtZW50LnRzXG5mdW5jdGlvbiBjcmVhdGVEb2N1bWVudChjb250ZW50LCBzY2hlbWEsIHBhcnNlT3B0aW9ucyA9IHt9LCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIGNyZWF0ZU5vZGVGcm9tQ29udGVudChjb250ZW50LCBzY2hlbWEsIHtcbiAgICBzbGljZTogZmFsc2UsXG4gICAgcGFyc2VPcHRpb25zLFxuICAgIGVycm9yT25JbnZhbGlkQ29udGVudDogb3B0aW9ucy5lcnJvck9uSW52YWxpZENvbnRlbnRcbiAgfSk7XG59XG5cbi8vIHNyYy9jb21tYW5kcy9zZXRDb250ZW50LnRzXG52YXIgc2V0Q29udGVudCA9IChjb250ZW50LCB7IGVycm9yT25JbnZhbGlkQ29udGVudCwgZW1pdFVwZGF0ZSA9IHRydWUsIHBhcnNlT3B0aW9ucyA9IHt9IH0gPSB7fSkgPT4gKHsgZWRpdG9yLCB0ciwgZGlzcGF0Y2gsIGNvbW1hbmRzIH0pID0+IHtcbiAgY29uc3QgeyBkb2MgfSA9IHRyO1xuICBpZiAocGFyc2VPcHRpb25zLnByZXNlcnZlV2hpdGVzcGFjZSAhPT0gXCJmdWxsXCIpIHtcbiAgICBjb25zdCBkb2N1bWVudDIgPSBjcmVhdGVEb2N1bWVudChjb250ZW50LCBlZGl0b3Iuc2NoZW1hLCBwYXJzZU9wdGlvbnMsIHtcbiAgICAgIGVycm9yT25JbnZhbGlkQ29udGVudDogZXJyb3JPbkludmFsaWRDb250ZW50ICE9IG51bGwgPyBlcnJvck9uSW52YWxpZENvbnRlbnQgOiBlZGl0b3Iub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2tcbiAgICB9KTtcbiAgICBpZiAoZGlzcGF0Y2gpIHtcbiAgICAgIHRyLnJlcGxhY2VXaXRoKDAsIGRvYy5jb250ZW50LnNpemUsIGRvY3VtZW50Mikuc2V0TWV0YShcInByZXZlbnRVcGRhdGVcIiwgIWVtaXRVcGRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICB0ci5zZXRNZXRhKFwicHJldmVudFVwZGF0ZVwiLCAhZW1pdFVwZGF0ZSk7XG4gIH1cbiAgcmV0dXJuIGNvbW1hbmRzLmluc2VydENvbnRlbnRBdCh7IGZyb206IDAsIHRvOiBkb2MuY29udGVudC5zaXplIH0sIGNvbnRlbnQsIHtcbiAgICBwYXJzZU9wdGlvbnMsXG4gICAgZXJyb3JPbkludmFsaWRDb250ZW50OiBlcnJvck9uSW52YWxpZENvbnRlbnQgIT0gbnVsbCA/IGVycm9yT25JbnZhbGlkQ29udGVudCA6IGVkaXRvci5vcHRpb25zLmVuYWJsZUNvbnRlbnRDaGVja1xuICB9KTtcbn07XG5cbi8vIHNyYy9oZWxwZXJzL2dldE1hcmtBdHRyaWJ1dGVzLnRzXG5mdW5jdGlvbiBnZXRNYXJrQXR0cmlidXRlcyhzdGF0ZSwgdHlwZU9yTmFtZSkge1xuICBjb25zdCB0eXBlID0gZ2V0TWFya1R5cGUodHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgY29uc3QgeyBmcm9tLCB0bywgZW1wdHkgfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgY29uc3QgbWFya3MgPSBbXTtcbiAgaWYgKGVtcHR5KSB7XG4gICAgaWYgKHN0YXRlLnN0b3JlZE1hcmtzKSB7XG4gICAgICBtYXJrcy5wdXNoKC4uLnN0YXRlLnN0b3JlZE1hcmtzKTtcbiAgICB9XG4gICAgbWFya3MucHVzaCguLi5zdGF0ZS5zZWxlY3Rpb24uJGhlYWQubWFya3MoKSk7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUuZG9jLm5vZGVzQmV0d2Vlbihmcm9tLCB0bywgKG5vZGUpID0+IHtcbiAgICAgIG1hcmtzLnB1c2goLi4ubm9kZS5tYXJrcyk7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbWFyayA9IG1hcmtzLmZpbmQoKG1hcmtJdGVtKSA9PiBtYXJrSXRlbS50eXBlLm5hbWUgPT09IHR5cGUubmFtZSk7XG4gIGlmICghbWFyaykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4geyAuLi5tYXJrLmF0dHJzIH07XG59XG5cbi8vIHNyYy9oZWxwZXJzL2NvbWJpbmVUcmFuc2FjdGlvblN0ZXBzLnRzXG5pbXBvcnQgeyBUcmFuc2Zvcm0gfSBmcm9tIFwiQHRpcHRhcC9wbS90cmFuc2Zvcm1cIjtcbmZ1bmN0aW9uIGNvbWJpbmVUcmFuc2FjdGlvblN0ZXBzKG9sZERvYywgdHJhbnNhY3Rpb25zKSB7XG4gIGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm0ob2xkRG9jKTtcbiAgdHJhbnNhY3Rpb25zLmZvckVhY2goKHRyYW5zYWN0aW9uKSA9PiB7XG4gICAgdHJhbnNhY3Rpb24uc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgdHJhbnNmb3JtLnN0ZXAoc3RlcCk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gdHJhbnNmb3JtO1xufVxuXG4vLyBzcmMvaGVscGVycy9kZWZhdWx0QmxvY2tBdC50c1xuZnVuY3Rpb24gZGVmYXVsdEJsb2NrQXQobWF0Y2gpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaC5lZGdlQ291bnQ7IGkgKz0gMSkge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gbWF0Y2guZWRnZShpKTtcbiAgICBpZiAodHlwZS5pc1RleHRibG9jayAmJiAhdHlwZS5oYXNSZXF1aXJlZEF0dHJzKCkpIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gc3JjL2hlbHBlcnMvZmluZENoaWxkcmVuLnRzXG5mdW5jdGlvbiBmaW5kQ2hpbGRyZW4obm9kZSwgcHJlZGljYXRlKSB7XG4gIGNvbnN0IG5vZGVzV2l0aFBvcyA9IFtdO1xuICBub2RlLmRlc2NlbmRhbnRzKChjaGlsZCwgcG9zKSA9PiB7XG4gICAgaWYgKHByZWRpY2F0ZShjaGlsZCkpIHtcbiAgICAgIG5vZGVzV2l0aFBvcy5wdXNoKHtcbiAgICAgICAgbm9kZTogY2hpbGQsXG4gICAgICAgIHBvc1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG5vZGVzV2l0aFBvcztcbn1cblxuLy8gc3JjL2hlbHBlcnMvZmluZENoaWxkcmVuSW5SYW5nZS50c1xuZnVuY3Rpb24gZmluZENoaWxkcmVuSW5SYW5nZShub2RlLCByYW5nZSwgcHJlZGljYXRlKSB7XG4gIGNvbnN0IG5vZGVzV2l0aFBvcyA9IFtdO1xuICBub2RlLm5vZGVzQmV0d2VlbihyYW5nZS5mcm9tLCByYW5nZS50bywgKGNoaWxkLCBwb3MpID0+IHtcbiAgICBpZiAocHJlZGljYXRlKGNoaWxkKSkge1xuICAgICAgbm9kZXNXaXRoUG9zLnB1c2goe1xuICAgICAgICBub2RlOiBjaGlsZCxcbiAgICAgICAgcG9zXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbm9kZXNXaXRoUG9zO1xufVxuXG4vLyBzcmMvaGVscGVycy9maW5kUGFyZW50Tm9kZUNsb3Nlc3RUb1Bvcy50c1xuZnVuY3Rpb24gZmluZFBhcmVudE5vZGVDbG9zZXN0VG9Qb3MoJHBvcywgcHJlZGljYXRlKSB7XG4gIGZvciAobGV0IGkgPSAkcG9zLmRlcHRoOyBpID4gMDsgaSAtPSAxKSB7XG4gICAgY29uc3Qgbm9kZSA9ICRwb3Mubm9kZShpKTtcbiAgICBpZiAocHJlZGljYXRlKG5vZGUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwb3M6IGkgPiAwID8gJHBvcy5iZWZvcmUoaSkgOiAwLFxuICAgICAgICBzdGFydDogJHBvcy5zdGFydChpKSxcbiAgICAgICAgZGVwdGg6IGksXG4gICAgICAgIG5vZGVcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbi8vIHNyYy9oZWxwZXJzL2ZpbmRQYXJlbnROb2RlLnRzXG5mdW5jdGlvbiBmaW5kUGFyZW50Tm9kZShwcmVkaWNhdGUpIHtcbiAgcmV0dXJuIChzZWxlY3Rpb24pID0+IGZpbmRQYXJlbnROb2RlQ2xvc2VzdFRvUG9zKHNlbGVjdGlvbi4kZnJvbSwgcHJlZGljYXRlKTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvZ2V0RXh0ZW5zaW9uRmllbGQudHNcbmZ1bmN0aW9uIGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgZmllbGQsIGNvbnRleHQpIHtcbiAgaWYgKGV4dGVuc2lvbi5jb25maWdbZmllbGRdID09PSB2b2lkIDAgJiYgZXh0ZW5zaW9uLnBhcmVudCkge1xuICAgIHJldHVybiBnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24ucGFyZW50LCBmaWVsZCwgY29udGV4dCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBleHRlbnNpb24uY29uZmlnW2ZpZWxkXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY29uc3QgdmFsdWUgPSBleHRlbnNpb24uY29uZmlnW2ZpZWxkXS5iaW5kKHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICBwYXJlbnQ6IGV4dGVuc2lvbi5wYXJlbnQgPyBnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24ucGFyZW50LCBmaWVsZCwgY29udGV4dCkgOiBudWxsXG4gICAgfSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBleHRlbnNpb24uY29uZmlnW2ZpZWxkXTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvZmxhdHRlbkV4dGVuc2lvbnMudHNcbmZ1bmN0aW9uIGZsYXR0ZW5FeHRlbnNpb25zKGV4dGVuc2lvbnMpIHtcbiAgcmV0dXJuIGV4dGVuc2lvbnMubWFwKChleHRlbnNpb24pID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgbmFtZTogZXh0ZW5zaW9uLm5hbWUsXG4gICAgICBvcHRpb25zOiBleHRlbnNpb24ub3B0aW9ucyxcbiAgICAgIHN0b3JhZ2U6IGV4dGVuc2lvbi5zdG9yYWdlXG4gICAgfTtcbiAgICBjb25zdCBhZGRFeHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcImFkZEV4dGVuc2lvbnNcIiwgY29udGV4dCk7XG4gICAgaWYgKGFkZEV4dGVuc2lvbnMpIHtcbiAgICAgIHJldHVybiBbZXh0ZW5zaW9uLCAuLi5mbGF0dGVuRXh0ZW5zaW9ucyhhZGRFeHRlbnNpb25zKCkpXTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dGVuc2lvbjtcbiAgfSkuZmxhdCgxMCk7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2dlbmVyYXRlSFRNTC50c1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gXCJAdGlwdGFwL3BtL21vZGVsXCI7XG5cbi8vIHNyYy9oZWxwZXJzL2dldEhUTUxGcm9tRnJhZ21lbnQudHNcbmltcG9ydCB7IERPTVNlcmlhbGl6ZXIgfSBmcm9tIFwiQHRpcHRhcC9wbS9tb2RlbFwiO1xuZnVuY3Rpb24gZ2V0SFRNTEZyb21GcmFnbWVudChmcmFnbWVudCwgc2NoZW1hKSB7XG4gIGNvbnN0IGRvY3VtZW50RnJhZ21lbnQgPSBET01TZXJpYWxpemVyLmZyb21TY2hlbWEoc2NoZW1hKS5zZXJpYWxpemVGcmFnbWVudChmcmFnbWVudCk7XG4gIGNvbnN0IHRlbXBvcmFyeURvY3VtZW50ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCk7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHRlbXBvcmFyeURvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudEZyYWdtZW50KTtcbiAgcmV0dXJuIGNvbnRhaW5lci5pbm5lckhUTUw7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2dldFNjaGVtYUJ5UmVzb2x2ZWRFeHRlbnNpb25zLnRzXG5pbXBvcnQgeyBTY2hlbWEgYXMgU2NoZW1hMiB9IGZyb20gXCJAdGlwdGFwL3BtL21vZGVsXCI7XG5cbi8vIHNyYy91dGlsaXRpZXMvaXNGdW5jdGlvbi50c1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbi8vIHNyYy91dGlsaXRpZXMvY2FsbE9yUmV0dXJuLnRzXG5mdW5jdGlvbiBjYWxsT3JSZXR1cm4odmFsdWUsIGNvbnRleHQgPSB2b2lkIDAsIC4uLnByb3BzKSB7XG4gIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdmFsdWUuYmluZChjb250ZXh0KSguLi5wcm9wcyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSguLi5wcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL2lzRW1wdHlPYmplY3QudHNcbmZ1bmN0aW9uIGlzRW1wdHlPYmplY3QodmFsdWUgPSB7fSkge1xuICByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0O1xufVxuXG4vLyBzcmMvaGVscGVycy9zcGxpdEV4dGVuc2lvbnMudHNcbmZ1bmN0aW9uIHNwbGl0RXh0ZW5zaW9ucyhleHRlbnNpb25zKSB7XG4gIGNvbnN0IGJhc2VFeHRlbnNpb25zID0gZXh0ZW5zaW9ucy5maWx0ZXIoKGV4dGVuc2lvbikgPT4gZXh0ZW5zaW9uLnR5cGUgPT09IFwiZXh0ZW5zaW9uXCIpO1xuICBjb25zdCBub2RlRXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnMuZmlsdGVyKChleHRlbnNpb24pID0+IGV4dGVuc2lvbi50eXBlID09PSBcIm5vZGVcIik7XG4gIGNvbnN0IG1hcmtFeHRlbnNpb25zID0gZXh0ZW5zaW9ucy5maWx0ZXIoKGV4dGVuc2lvbikgPT4gZXh0ZW5zaW9uLnR5cGUgPT09IFwibWFya1wiKTtcbiAgcmV0dXJuIHtcbiAgICBiYXNlRXh0ZW5zaW9ucyxcbiAgICBub2RlRXh0ZW5zaW9ucyxcbiAgICBtYXJrRXh0ZW5zaW9uc1xuICB9O1xufVxuXG4vLyBzcmMvaGVscGVycy9nZXRBdHRyaWJ1dGVzRnJvbUV4dGVuc2lvbnMudHNcbmZ1bmN0aW9uIGdldEF0dHJpYnV0ZXNGcm9tRXh0ZW5zaW9ucyhleHRlbnNpb25zKSB7XG4gIGNvbnN0IGV4dGVuc2lvbkF0dHJpYnV0ZXMgPSBbXTtcbiAgY29uc3QgeyBub2RlRXh0ZW5zaW9ucywgbWFya0V4dGVuc2lvbnMgfSA9IHNwbGl0RXh0ZW5zaW9ucyhleHRlbnNpb25zKTtcbiAgY29uc3Qgbm9kZUFuZE1hcmtFeHRlbnNpb25zID0gWy4uLm5vZGVFeHRlbnNpb25zLCAuLi5tYXJrRXh0ZW5zaW9uc107XG4gIGNvbnN0IGRlZmF1bHRBdHRyaWJ1dGUgPSB7XG4gICAgZGVmYXVsdDogbnVsbCxcbiAgICB2YWxpZGF0ZTogdm9pZCAwLFxuICAgIHJlbmRlcmVkOiB0cnVlLFxuICAgIHJlbmRlckhUTUw6IG51bGwsXG4gICAgcGFyc2VIVE1MOiBudWxsLFxuICAgIGtlZXBPblNwbGl0OiB0cnVlLFxuICAgIGlzUmVxdWlyZWQ6IGZhbHNlXG4gIH07XG4gIGV4dGVuc2lvbnMuZm9yRWFjaCgoZXh0ZW5zaW9uKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgIG5hbWU6IGV4dGVuc2lvbi5uYW1lLFxuICAgICAgb3B0aW9uczogZXh0ZW5zaW9uLm9wdGlvbnMsXG4gICAgICBzdG9yYWdlOiBleHRlbnNpb24uc3RvcmFnZSxcbiAgICAgIGV4dGVuc2lvbnM6IG5vZGVBbmRNYXJrRXh0ZW5zaW9uc1xuICAgIH07XG4gICAgY29uc3QgYWRkR2xvYmFsQXR0cmlidXRlcyA9IGdldEV4dGVuc2lvbkZpZWxkKFxuICAgICAgZXh0ZW5zaW9uLFxuICAgICAgXCJhZGRHbG9iYWxBdHRyaWJ1dGVzXCIsXG4gICAgICBjb250ZXh0XG4gICAgKTtcbiAgICBpZiAoIWFkZEdsb2JhbEF0dHJpYnV0ZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZ2xvYmFsQXR0cmlidXRlcyA9IGFkZEdsb2JhbEF0dHJpYnV0ZXMoKTtcbiAgICBnbG9iYWxBdHRyaWJ1dGVzLmZvckVhY2goKGdsb2JhbEF0dHJpYnV0ZSkgPT4ge1xuICAgICAgZ2xvYmFsQXR0cmlidXRlLnR5cGVzLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZ2xvYmFsQXR0cmlidXRlLmF0dHJpYnV0ZXMpLmZvckVhY2goKFtuYW1lLCBhdHRyaWJ1dGVdKSA9PiB7XG4gICAgICAgICAgZXh0ZW5zaW9uQXR0cmlidXRlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYXR0cmlidXRlOiB7XG4gICAgICAgICAgICAgIC4uLmRlZmF1bHRBdHRyaWJ1dGUsXG4gICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbiAgbm9kZUFuZE1hcmtFeHRlbnNpb25zLmZvckVhY2goKGV4dGVuc2lvbikgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICBuYW1lOiBleHRlbnNpb24ubmFtZSxcbiAgICAgIG9wdGlvbnM6IGV4dGVuc2lvbi5vcHRpb25zLFxuICAgICAgc3RvcmFnZTogZXh0ZW5zaW9uLnN0b3JhZ2VcbiAgICB9O1xuICAgIGNvbnN0IGFkZEF0dHJpYnV0ZXMgPSBnZXRFeHRlbnNpb25GaWVsZChcbiAgICAgIGV4dGVuc2lvbixcbiAgICAgIFwiYWRkQXR0cmlidXRlc1wiLFxuICAgICAgY29udGV4dFxuICAgICk7XG4gICAgaWYgKCFhZGRBdHRyaWJ1dGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBhZGRBdHRyaWJ1dGVzKCk7XG4gICAgT2JqZWN0LmVudHJpZXMoYXR0cmlidXRlcykuZm9yRWFjaCgoW25hbWUsIGF0dHJpYnV0ZV0pID0+IHtcbiAgICAgIGNvbnN0IG1lcmdlZEF0dHIgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRBdHRyaWJ1dGUsXG4gICAgICAgIC4uLmF0dHJpYnV0ZVxuICAgICAgfTtcbiAgICAgIGlmICh0eXBlb2YgKG1lcmdlZEF0dHIgPT0gbnVsbCA/IHZvaWQgMCA6IG1lcmdlZEF0dHIuZGVmYXVsdCkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBtZXJnZWRBdHRyLmRlZmF1bHQgPSBtZXJnZWRBdHRyLmRlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIGlmICgobWVyZ2VkQXR0ciA9PSBudWxsID8gdm9pZCAwIDogbWVyZ2VkQXR0ci5pc1JlcXVpcmVkKSAmJiAobWVyZ2VkQXR0ciA9PSBudWxsID8gdm9pZCAwIDogbWVyZ2VkQXR0ci5kZWZhdWx0KSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGRlbGV0ZSBtZXJnZWRBdHRyLmRlZmF1bHQ7XG4gICAgICB9XG4gICAgICBleHRlbnNpb25BdHRyaWJ1dGVzLnB1c2goe1xuICAgICAgICB0eXBlOiBleHRlbnNpb24ubmFtZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYXR0cmlidXRlOiBtZXJnZWRBdHRyXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBleHRlbnNpb25BdHRyaWJ1dGVzO1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL21lcmdlQXR0cmlidXRlcy50c1xuZnVuY3Rpb24gbWVyZ2VBdHRyaWJ1dGVzKC4uLm9iamVjdHMpIHtcbiAgcmV0dXJuIG9iamVjdHMuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICBjb25zdCBtZXJnZWRBdHRyaWJ1dGVzID0geyAuLi5pdGVtcyB9O1xuICAgIE9iamVjdC5lbnRyaWVzKGl0ZW0pLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgZXhpc3RzID0gbWVyZ2VkQXR0cmlidXRlc1trZXldO1xuICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1trZXldID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09IFwiY2xhc3NcIikge1xuICAgICAgICBjb25zdCB2YWx1ZUNsYXNzZXMgPSB2YWx1ZSA/IFN0cmluZyh2YWx1ZSkuc3BsaXQoXCIgXCIpIDogW107XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ2xhc3NlcyA9IG1lcmdlZEF0dHJpYnV0ZXNba2V5XSA/IG1lcmdlZEF0dHJpYnV0ZXNba2V5XS5zcGxpdChcIiBcIikgOiBbXTtcbiAgICAgICAgY29uc3QgaW5zZXJ0Q2xhc3NlcyA9IHZhbHVlQ2xhc3Nlcy5maWx0ZXIoKHZhbHVlQ2xhc3MpID0+ICFleGlzdGluZ0NsYXNzZXMuaW5jbHVkZXModmFsdWVDbGFzcykpO1xuICAgICAgICBtZXJnZWRBdHRyaWJ1dGVzW2tleV0gPSBbLi4uZXhpc3RpbmdDbGFzc2VzLCAuLi5pbnNlcnRDbGFzc2VzXS5qb2luKFwiIFwiKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgY29uc3QgbmV3U3R5bGVzID0gdmFsdWUgPyB2YWx1ZS5zcGxpdChcIjtcIikubWFwKChzdHlsZTIpID0+IHN0eWxlMi50cmltKCkpLmZpbHRlcihCb29sZWFuKSA6IFtdO1xuICAgICAgICBjb25zdCBleGlzdGluZ1N0eWxlcyA9IG1lcmdlZEF0dHJpYnV0ZXNba2V5XSA/IG1lcmdlZEF0dHJpYnV0ZXNba2V5XS5zcGxpdChcIjtcIikubWFwKChzdHlsZTIpID0+IHN0eWxlMi50cmltKCkpLmZpbHRlcihCb29sZWFuKSA6IFtdO1xuICAgICAgICBjb25zdCBzdHlsZU1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICAgIGV4aXN0aW5nU3R5bGVzLmZvckVhY2goKHN0eWxlMikgPT4ge1xuICAgICAgICAgIGNvbnN0IFtwcm9wZXJ0eSwgdmFsXSA9IHN0eWxlMi5zcGxpdChcIjpcIikubWFwKChwYXJ0KSA9PiBwYXJ0LnRyaW0oKSk7XG4gICAgICAgICAgc3R5bGVNYXAuc2V0KHByb3BlcnR5LCB2YWwpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3U3R5bGVzLmZvckVhY2goKHN0eWxlMikgPT4ge1xuICAgICAgICAgIGNvbnN0IFtwcm9wZXJ0eSwgdmFsXSA9IHN0eWxlMi5zcGxpdChcIjpcIikubWFwKChwYXJ0KSA9PiBwYXJ0LnRyaW0oKSk7XG4gICAgICAgICAgc3R5bGVNYXAuc2V0KHByb3BlcnR5LCB2YWwpO1xuICAgICAgICB9KTtcbiAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1trZXldID0gQXJyYXkuZnJvbShzdHlsZU1hcC5lbnRyaWVzKCkpLm1hcCgoW3Byb3BlcnR5LCB2YWxdKSA9PiBgJHtwcm9wZXJ0eX06ICR7dmFsfWApLmpvaW4oXCI7IFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZEF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtZXJnZWRBdHRyaWJ1dGVzO1xuICB9LCB7fSk7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2dldFJlbmRlcmVkQXR0cmlidXRlcy50c1xuZnVuY3Rpb24gZ2V0UmVuZGVyZWRBdHRyaWJ1dGVzKG5vZGVPck1hcmssIGV4dGVuc2lvbkF0dHJpYnV0ZXMpIHtcbiAgcmV0dXJuIGV4dGVuc2lvbkF0dHJpYnV0ZXMuZmlsdGVyKChhdHRyaWJ1dGUpID0+IGF0dHJpYnV0ZS50eXBlID09PSBub2RlT3JNYXJrLnR5cGUubmFtZSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmF0dHJpYnV0ZS5yZW5kZXJlZCkubWFwKChpdGVtKSA9PiB7XG4gICAgaWYgKCFpdGVtLmF0dHJpYnV0ZS5yZW5kZXJIVE1MKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbaXRlbS5uYW1lXTogbm9kZU9yTWFyay5hdHRyc1tpdGVtLm5hbWVdXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gaXRlbS5hdHRyaWJ1dGUucmVuZGVySFRNTChub2RlT3JNYXJrLmF0dHJzKSB8fCB7fTtcbiAgfSkucmVkdWNlKChhdHRyaWJ1dGVzLCBhdHRyaWJ1dGUpID0+IG1lcmdlQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBhdHRyaWJ1dGUpLCB7fSk7XG59XG5cbi8vIHNyYy91dGlsaXRpZXMvZnJvbVN0cmluZy50c1xuZnVuY3Rpb24gZnJvbVN0cmluZyh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZS5tYXRjaCgvXlsrLV0/KD86XFxkKlxcLik/XFxkKyQvKSkge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICB9XG4gIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2luamVjdEV4dGVuc2lvbkF0dHJpYnV0ZXNUb1BhcnNlUnVsZS50c1xuZnVuY3Rpb24gaW5qZWN0RXh0ZW5zaW9uQXR0cmlidXRlc1RvUGFyc2VSdWxlKHBhcnNlUnVsZSwgZXh0ZW5zaW9uQXR0cmlidXRlcykge1xuICBpZiAoXCJzdHlsZVwiIGluIHBhcnNlUnVsZSkge1xuICAgIHJldHVybiBwYXJzZVJ1bGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5wYXJzZVJ1bGUsXG4gICAgZ2V0QXR0cnM6IChub2RlKSA9PiB7XG4gICAgICBjb25zdCBvbGRBdHRyaWJ1dGVzID0gcGFyc2VSdWxlLmdldEF0dHJzID8gcGFyc2VSdWxlLmdldEF0dHJzKG5vZGUpIDogcGFyc2VSdWxlLmF0dHJzO1xuICAgICAgaWYgKG9sZEF0dHJpYnV0ZXMgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSBleHRlbnNpb25BdHRyaWJ1dGVzLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtLmF0dHJpYnV0ZS5wYXJzZUhUTUwgPyBpdGVtLmF0dHJpYnV0ZS5wYXJzZUhUTUwobm9kZSkgOiBmcm9tU3RyaW5nKG5vZGUuZ2V0QXR0cmlidXRlKGl0ZW0ubmFtZSkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLml0ZW1zLFxuICAgICAgICAgIFtpdGVtLm5hbWVdOiB2YWx1ZVxuICAgICAgICB9O1xuICAgICAgfSwge30pO1xuICAgICAgcmV0dXJuIHsgLi4ub2xkQXR0cmlidXRlcywgLi4ubmV3QXR0cmlidXRlcyB9O1xuICAgIH1cbiAgfTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvZ2V0U2NoZW1hQnlSZXNvbHZlZEV4dGVuc2lvbnMudHNcbmZ1bmN0aW9uIGNsZWFuVXBTY2hlbWFJdGVtKGRhdGEpIHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgT2JqZWN0LmVudHJpZXMoZGF0YSkuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmIChrZXkgPT09IFwiYXR0cnNcIiAmJiBpc0VtcHR5T2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMDtcbiAgICB9KVxuICApO1xufVxuZnVuY3Rpb24gYnVpbGRBdHRyaWJ1dGVTcGVjKGV4dGVuc2lvbkF0dHJpYnV0ZSkge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCBzcGVjID0ge307XG4gIGlmICghKChfYSA9IGV4dGVuc2lvbkF0dHJpYnV0ZSA9PSBudWxsID8gdm9pZCAwIDogZXh0ZW5zaW9uQXR0cmlidXRlLmF0dHJpYnV0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmlzUmVxdWlyZWQpICYmIFwiZGVmYXVsdFwiIGluICgoZXh0ZW5zaW9uQXR0cmlidXRlID09IG51bGwgPyB2b2lkIDAgOiBleHRlbnNpb25BdHRyaWJ1dGUuYXR0cmlidXRlKSB8fCB7fSkpIHtcbiAgICBzcGVjLmRlZmF1bHQgPSBleHRlbnNpb25BdHRyaWJ1dGUuYXR0cmlidXRlLmRlZmF1bHQ7XG4gIH1cbiAgaWYgKCgoX2IgPSBleHRlbnNpb25BdHRyaWJ1dGUgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVuc2lvbkF0dHJpYnV0ZS5hdHRyaWJ1dGUpID09IG51bGwgPyB2b2lkIDAgOiBfYi52YWxpZGF0ZSkgIT09IHZvaWQgMCkge1xuICAgIHNwZWMudmFsaWRhdGUgPSBleHRlbnNpb25BdHRyaWJ1dGUuYXR0cmlidXRlLnZhbGlkYXRlO1xuICB9XG4gIHJldHVybiBbZXh0ZW5zaW9uQXR0cmlidXRlLm5hbWUsIHNwZWNdO1xufVxuZnVuY3Rpb24gZ2V0U2NoZW1hQnlSZXNvbHZlZEV4dGVuc2lvbnMoZXh0ZW5zaW9ucywgZWRpdG9yKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgYWxsQXR0cmlidXRlcyA9IGdldEF0dHJpYnV0ZXNGcm9tRXh0ZW5zaW9ucyhleHRlbnNpb25zKTtcbiAgY29uc3QgeyBub2RlRXh0ZW5zaW9ucywgbWFya0V4dGVuc2lvbnMgfSA9IHNwbGl0RXh0ZW5zaW9ucyhleHRlbnNpb25zKTtcbiAgY29uc3QgdG9wTm9kZSA9IChfYSA9IG5vZGVFeHRlbnNpb25zLmZpbmQoKGV4dGVuc2lvbikgPT4gZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcInRvcE5vZGVcIikpKSA9PSBudWxsID8gdm9pZCAwIDogX2EubmFtZTtcbiAgY29uc3Qgbm9kZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgbm9kZUV4dGVuc2lvbnMubWFwKChleHRlbnNpb24pID0+IHtcbiAgICAgIGNvbnN0IGV4dGVuc2lvbkF0dHJpYnV0ZXMgPSBhbGxBdHRyaWJ1dGVzLmZpbHRlcigoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUudHlwZSA9PT0gZXh0ZW5zaW9uLm5hbWUpO1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgbmFtZTogZXh0ZW5zaW9uLm5hbWUsXG4gICAgICAgIG9wdGlvbnM6IGV4dGVuc2lvbi5vcHRpb25zLFxuICAgICAgICBzdG9yYWdlOiBleHRlbnNpb24uc3RvcmFnZSxcbiAgICAgICAgZWRpdG9yXG4gICAgICB9O1xuICAgICAgY29uc3QgZXh0cmFOb2RlRmllbGRzID0gZXh0ZW5zaW9ucy5yZWR1Y2UoKGZpZWxkcywgZSkgPT4ge1xuICAgICAgICBjb25zdCBleHRlbmROb2RlU2NoZW1hID0gZ2V0RXh0ZW5zaW9uRmllbGQoZSwgXCJleHRlbmROb2RlU2NoZW1hXCIsIGNvbnRleHQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmZpZWxkcyxcbiAgICAgICAgICAuLi5leHRlbmROb2RlU2NoZW1hID8gZXh0ZW5kTm9kZVNjaGVtYShleHRlbnNpb24pIDoge31cbiAgICAgICAgfTtcbiAgICAgIH0sIHt9KTtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IGNsZWFuVXBTY2hlbWFJdGVtKHtcbiAgICAgICAgLi4uZXh0cmFOb2RlRmllbGRzLFxuICAgICAgICBjb250ZW50OiBjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcImNvbnRlbnRcIiwgY29udGV4dCkpLFxuICAgICAgICBtYXJrczogY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJtYXJrc1wiLCBjb250ZXh0KSksXG4gICAgICAgIGdyb3VwOiBjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcImdyb3VwXCIsIGNvbnRleHQpKSxcbiAgICAgICAgaW5saW5lOiBjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcImlubGluZVwiLCBjb250ZXh0KSksXG4gICAgICAgIGF0b206IGNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwiYXRvbVwiLCBjb250ZXh0KSksXG4gICAgICAgIHNlbGVjdGFibGU6IGNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwic2VsZWN0YWJsZVwiLCBjb250ZXh0KSksXG4gICAgICAgIGRyYWdnYWJsZTogY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJkcmFnZ2FibGVcIiwgY29udGV4dCkpLFxuICAgICAgICBjb2RlOiBjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcImNvZGVcIiwgY29udGV4dCkpLFxuICAgICAgICB3aGl0ZXNwYWNlOiBjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcIndoaXRlc3BhY2VcIiwgY29udGV4dCkpLFxuICAgICAgICBsaW5lYnJlYWtSZXBsYWNlbWVudDogY2FsbE9yUmV0dXJuKFxuICAgICAgICAgIGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJsaW5lYnJlYWtSZXBsYWNlbWVudFwiLCBjb250ZXh0KVxuICAgICAgICApLFxuICAgICAgICBkZWZpbmluZzogY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJkZWZpbmluZ1wiLCBjb250ZXh0KSksXG4gICAgICAgIGlzb2xhdGluZzogY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJpc29sYXRpbmdcIiwgY29udGV4dCkpLFxuICAgICAgICBhdHRyczogT2JqZWN0LmZyb21FbnRyaWVzKGV4dGVuc2lvbkF0dHJpYnV0ZXMubWFwKGJ1aWxkQXR0cmlidXRlU3BlYykpXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHBhcnNlSFRNTCA9IGNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwicGFyc2VIVE1MXCIsIGNvbnRleHQpKTtcbiAgICAgIGlmIChwYXJzZUhUTUwpIHtcbiAgICAgICAgc2NoZW1hLnBhcnNlRE9NID0gcGFyc2VIVE1MLm1hcChcbiAgICAgICAgICAocGFyc2VSdWxlKSA9PiBpbmplY3RFeHRlbnNpb25BdHRyaWJ1dGVzVG9QYXJzZVJ1bGUocGFyc2VSdWxlLCBleHRlbnNpb25BdHRyaWJ1dGVzKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVuZGVySFRNTCA9IGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJyZW5kZXJIVE1MXCIsIGNvbnRleHQpO1xuICAgICAgaWYgKHJlbmRlckhUTUwpIHtcbiAgICAgICAgc2NoZW1hLnRvRE9NID0gKG5vZGUpID0+IHJlbmRlckhUTUwoe1xuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgSFRNTEF0dHJpYnV0ZXM6IGdldFJlbmRlcmVkQXR0cmlidXRlcyhub2RlLCBleHRlbnNpb25BdHRyaWJ1dGVzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlbmRlclRleHQgPSBnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwicmVuZGVyVGV4dFwiLCBjb250ZXh0KTtcbiAgICAgIGlmIChyZW5kZXJUZXh0KSB7XG4gICAgICAgIHNjaGVtYS50b1RleHQgPSByZW5kZXJUZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtleHRlbnNpb24ubmFtZSwgc2NoZW1hXTtcbiAgICB9KVxuICApO1xuICBjb25zdCBtYXJrcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBtYXJrRXh0ZW5zaW9ucy5tYXAoKGV4dGVuc2lvbikgPT4ge1xuICAgICAgY29uc3QgZXh0ZW5zaW9uQXR0cmlidXRlcyA9IGFsbEF0dHJpYnV0ZXMuZmlsdGVyKChhdHRyaWJ1dGUpID0+IGF0dHJpYnV0ZS50eXBlID09PSBleHRlbnNpb24ubmFtZSk7XG4gICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICBuYW1lOiBleHRlbnNpb24ubmFtZSxcbiAgICAgICAgb3B0aW9uczogZXh0ZW5zaW9uLm9wdGlvbnMsXG4gICAgICAgIHN0b3JhZ2U6IGV4dGVuc2lvbi5zdG9yYWdlLFxuICAgICAgICBlZGl0b3JcbiAgICAgIH07XG4gICAgICBjb25zdCBleHRyYU1hcmtGaWVsZHMgPSBleHRlbnNpb25zLnJlZHVjZSgoZmllbGRzLCBlKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4dGVuZE1hcmtTY2hlbWEgPSBnZXRFeHRlbnNpb25GaWVsZChlLCBcImV4dGVuZE1hcmtTY2hlbWFcIiwgY29udGV4dCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZmllbGRzLFxuICAgICAgICAgIC4uLmV4dGVuZE1hcmtTY2hlbWEgPyBleHRlbmRNYXJrU2NoZW1hKGV4dGVuc2lvbikgOiB7fVxuICAgICAgICB9O1xuICAgICAgfSwge30pO1xuICAgICAgY29uc3Qgc2NoZW1hID0gY2xlYW5VcFNjaGVtYUl0ZW0oe1xuICAgICAgICAuLi5leHRyYU1hcmtGaWVsZHMsXG4gICAgICAgIGluY2x1c2l2ZTogY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJpbmNsdXNpdmVcIiwgY29udGV4dCkpLFxuICAgICAgICBleGNsdWRlczogY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJleGNsdWRlc1wiLCBjb250ZXh0KSksXG4gICAgICAgIGdyb3VwOiBjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcImdyb3VwXCIsIGNvbnRleHQpKSxcbiAgICAgICAgc3Bhbm5pbmc6IGNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwic3Bhbm5pbmdcIiwgY29udGV4dCkpLFxuICAgICAgICBjb2RlOiBjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcImNvZGVcIiwgY29udGV4dCkpLFxuICAgICAgICBhdHRyczogT2JqZWN0LmZyb21FbnRyaWVzKGV4dGVuc2lvbkF0dHJpYnV0ZXMubWFwKGJ1aWxkQXR0cmlidXRlU3BlYykpXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHBhcnNlSFRNTCA9IGNhbGxPclJldHVybihnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwicGFyc2VIVE1MXCIsIGNvbnRleHQpKTtcbiAgICAgIGlmIChwYXJzZUhUTUwpIHtcbiAgICAgICAgc2NoZW1hLnBhcnNlRE9NID0gcGFyc2VIVE1MLm1hcChcbiAgICAgICAgICAocGFyc2VSdWxlKSA9PiBpbmplY3RFeHRlbnNpb25BdHRyaWJ1dGVzVG9QYXJzZVJ1bGUocGFyc2VSdWxlLCBleHRlbnNpb25BdHRyaWJ1dGVzKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVuZGVySFRNTCA9IGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJyZW5kZXJIVE1MXCIsIGNvbnRleHQpO1xuICAgICAgaWYgKHJlbmRlckhUTUwpIHtcbiAgICAgICAgc2NoZW1hLnRvRE9NID0gKG1hcmspID0+IHJlbmRlckhUTUwoe1xuICAgICAgICAgIG1hcmssXG4gICAgICAgICAgSFRNTEF0dHJpYnV0ZXM6IGdldFJlbmRlcmVkQXR0cmlidXRlcyhtYXJrLCBleHRlbnNpb25BdHRyaWJ1dGVzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbZXh0ZW5zaW9uLm5hbWUsIHNjaGVtYV07XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuIG5ldyBTY2hlbWEyKHtcbiAgICB0b3BOb2RlLFxuICAgIG5vZGVzLFxuICAgIG1hcmtzXG4gIH0pO1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL2ZpbmREdXBsaWNhdGVzLnRzXG5mdW5jdGlvbiBmaW5kRHVwbGljYXRlcyhpdGVtcykge1xuICBjb25zdCBmaWx0ZXJlZCA9IGl0ZW1zLmZpbHRlcigoZWwsIGluZGV4KSA9PiBpdGVtcy5pbmRleE9mKGVsKSAhPT0gaW5kZXgpO1xuICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGZpbHRlcmVkKSk7XG59XG5cbi8vIHNyYy9oZWxwZXJzL3NvcnRFeHRlbnNpb25zLnRzXG5mdW5jdGlvbiBzb3J0RXh0ZW5zaW9ucyhleHRlbnNpb25zKSB7XG4gIGNvbnN0IGRlZmF1bHRQcmlvcml0eSA9IDEwMDtcbiAgcmV0dXJuIGV4dGVuc2lvbnMuc29ydCgoYSwgYikgPT4ge1xuICAgIGNvbnN0IHByaW9yaXR5QSA9IGdldEV4dGVuc2lvbkZpZWxkKGEsIFwicHJpb3JpdHlcIikgfHwgZGVmYXVsdFByaW9yaXR5O1xuICAgIGNvbnN0IHByaW9yaXR5QiA9IGdldEV4dGVuc2lvbkZpZWxkKGIsIFwicHJpb3JpdHlcIikgfHwgZGVmYXVsdFByaW9yaXR5O1xuICAgIGlmIChwcmlvcml0eUEgPiBwcmlvcml0eUIpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKHByaW9yaXR5QSA8IHByaW9yaXR5Qikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvcmVzb2x2ZUV4dGVuc2lvbnMudHNcbmZ1bmN0aW9uIHJlc29sdmVFeHRlbnNpb25zKGV4dGVuc2lvbnMpIHtcbiAgY29uc3QgcmVzb2x2ZWRFeHRlbnNpb25zID0gc29ydEV4dGVuc2lvbnMoZmxhdHRlbkV4dGVuc2lvbnMoZXh0ZW5zaW9ucykpO1xuICBjb25zdCBkdXBsaWNhdGVkTmFtZXMgPSBmaW5kRHVwbGljYXRlcyhyZXNvbHZlZEV4dGVuc2lvbnMubWFwKChleHRlbnNpb24pID0+IGV4dGVuc2lvbi5uYW1lKSk7XG4gIGlmIChkdXBsaWNhdGVkTmFtZXMubGVuZ3RoKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYFt0aXB0YXAgd2Fybl06IER1cGxpY2F0ZSBleHRlbnNpb24gbmFtZXMgZm91bmQ6IFske2R1cGxpY2F0ZWROYW1lcy5tYXAoKGl0ZW0pID0+IGAnJHtpdGVtfSdgKS5qb2luKFwiLCBcIil9XS4gVGhpcyBjYW4gbGVhZCB0byBpc3N1ZXMuYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc29sdmVkRXh0ZW5zaW9ucztcbn1cblxuLy8gc3JjL2hlbHBlcnMvZ2V0U2NoZW1hLnRzXG5mdW5jdGlvbiBnZXRTY2hlbWEoZXh0ZW5zaW9ucywgZWRpdG9yKSB7XG4gIGNvbnN0IHJlc29sdmVkRXh0ZW5zaW9ucyA9IHJlc29sdmVFeHRlbnNpb25zKGV4dGVuc2lvbnMpO1xuICByZXR1cm4gZ2V0U2NoZW1hQnlSZXNvbHZlZEV4dGVuc2lvbnMocmVzb2x2ZWRFeHRlbnNpb25zLCBlZGl0b3IpO1xufVxuXG4vLyBzcmMvaGVscGVycy9nZW5lcmF0ZUhUTUwudHNcbmZ1bmN0aW9uIGdlbmVyYXRlSFRNTChkb2MsIGV4dGVuc2lvbnMpIHtcbiAgY29uc3Qgc2NoZW1hID0gZ2V0U2NoZW1hKGV4dGVuc2lvbnMpO1xuICBjb25zdCBjb250ZW50Tm9kZSA9IE5vZGUuZnJvbUpTT04oc2NoZW1hLCBkb2MpO1xuICByZXR1cm4gZ2V0SFRNTEZyb21GcmFnbWVudChjb250ZW50Tm9kZS5jb250ZW50LCBzY2hlbWEpO1xufVxuXG4vLyBzcmMvaGVscGVycy9nZW5lcmF0ZUpTT04udHNcbmltcG9ydCB7IERPTVBhcnNlciBhcyBET01QYXJzZXIyIH0gZnJvbSBcIkB0aXB0YXAvcG0vbW9kZWxcIjtcbmZ1bmN0aW9uIGdlbmVyYXRlSlNPTihodG1sLCBleHRlbnNpb25zKSB7XG4gIGNvbnN0IHNjaGVtYSA9IGdldFNjaGVtYShleHRlbnNpb25zKTtcbiAgY29uc3QgZG9tID0gZWxlbWVudEZyb21TdHJpbmcoaHRtbCk7XG4gIHJldHVybiBET01QYXJzZXIyLmZyb21TY2hlbWEoc2NoZW1hKS5wYXJzZShkb20pLnRvSlNPTigpO1xufVxuXG4vLyBzcmMvaGVscGVycy9nZW5lcmF0ZVRleHQudHNcbmltcG9ydCB7IE5vZGUgYXMgTm9kZTIgfSBmcm9tIFwiQHRpcHRhcC9wbS9tb2RlbFwiO1xuXG4vLyBzcmMvaGVscGVycy9nZXRUZXh0QmV0d2Vlbi50c1xuZnVuY3Rpb24gZ2V0VGV4dEJldHdlZW4oc3RhcnROb2RlLCByYW5nZSwgb3B0aW9ucykge1xuICBjb25zdCB7IGZyb20sIHRvIH0gPSByYW5nZTtcbiAgY29uc3QgeyBibG9ja1NlcGFyYXRvciA9IFwiXFxuXFxuXCIsIHRleHRTZXJpYWxpemVycyA9IHt9IH0gPSBvcHRpb25zIHx8IHt9O1xuICBsZXQgdGV4dCA9IFwiXCI7XG4gIHN0YXJ0Tm9kZS5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIChub2RlLCBwb3MsIHBhcmVudCwgaW5kZXgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKG5vZGUuaXNCbG9jayAmJiBwb3MgPiBmcm9tKSB7XG4gICAgICB0ZXh0ICs9IGJsb2NrU2VwYXJhdG9yO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0U2VyaWFsaXplciA9IHRleHRTZXJpYWxpemVycyA9PSBudWxsID8gdm9pZCAwIDogdGV4dFNlcmlhbGl6ZXJzW25vZGUudHlwZS5uYW1lXTtcbiAgICBpZiAodGV4dFNlcmlhbGl6ZXIpIHtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgdGV4dCArPSB0ZXh0U2VyaWFsaXplcih7XG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBwb3MsXG4gICAgICAgICAgcGFyZW50LFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICAgIHJhbmdlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobm9kZS5pc1RleHQpIHtcbiAgICAgIHRleHQgKz0gKF9hID0gbm9kZSA9PSBudWxsID8gdm9pZCAwIDogbm9kZS50ZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX2Euc2xpY2UoTWF0aC5tYXgoZnJvbSwgcG9zKSAtIHBvcywgdG8gLSBwb3MpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB0ZXh0O1xufVxuXG4vLyBzcmMvaGVscGVycy9nZXRUZXh0LnRzXG5mdW5jdGlvbiBnZXRUZXh0KG5vZGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgcmFuZ2UgPSB7XG4gICAgZnJvbTogMCxcbiAgICB0bzogbm9kZS5jb250ZW50LnNpemVcbiAgfTtcbiAgcmV0dXJuIGdldFRleHRCZXR3ZWVuKG5vZGUsIHJhbmdlLCBvcHRpb25zKTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvZ2V0VGV4dFNlcmlhbGl6ZXJzRnJvbVNjaGVtYS50c1xuZnVuY3Rpb24gZ2V0VGV4dFNlcmlhbGl6ZXJzRnJvbVNjaGVtYShzY2hlbWEpIHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhzY2hlbWEubm9kZXMpLmZpbHRlcigoWywgbm9kZV0pID0+IG5vZGUuc3BlYy50b1RleHQpLm1hcCgoW25hbWUsIG5vZGVdKSA9PiBbbmFtZSwgbm9kZS5zcGVjLnRvVGV4dF0pXG4gICk7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2dlbmVyYXRlVGV4dC50c1xuZnVuY3Rpb24gZ2VuZXJhdGVUZXh0KGRvYywgZXh0ZW5zaW9ucywgb3B0aW9ucykge1xuICBjb25zdCB7IGJsb2NrU2VwYXJhdG9yID0gXCJcXG5cXG5cIiwgdGV4dFNlcmlhbGl6ZXJzID0ge30gfSA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHNjaGVtYSA9IGdldFNjaGVtYShleHRlbnNpb25zKTtcbiAgY29uc3QgY29udGVudE5vZGUgPSBOb2RlMi5mcm9tSlNPTihzY2hlbWEsIGRvYyk7XG4gIHJldHVybiBnZXRUZXh0KGNvbnRlbnROb2RlLCB7XG4gICAgYmxvY2tTZXBhcmF0b3IsXG4gICAgdGV4dFNlcmlhbGl6ZXJzOiB7XG4gICAgICAuLi5nZXRUZXh0U2VyaWFsaXplcnNGcm9tU2NoZW1hKHNjaGVtYSksXG4gICAgICAuLi50ZXh0U2VyaWFsaXplcnNcbiAgICB9XG4gIH0pO1xufVxuXG4vLyBzcmMvaGVscGVycy9nZXROb2RlQXR0cmlidXRlcy50c1xuZnVuY3Rpb24gZ2V0Tm9kZUF0dHJpYnV0ZXMoc3RhdGUsIHR5cGVPck5hbWUpIHtcbiAgY29uc3QgdHlwZSA9IGdldE5vZGVUeXBlKHR5cGVPck5hbWUsIHN0YXRlLnNjaGVtYSk7XG4gIGNvbnN0IHsgZnJvbSwgdG8gfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgc3RhdGUuZG9jLm5vZGVzQmV0d2Vlbihmcm9tLCB0bywgKG5vZGUyKSA9PiB7XG4gICAgbm9kZXMucHVzaChub2RlMik7XG4gIH0pO1xuICBjb25zdCBub2RlID0gbm9kZXMucmV2ZXJzZSgpLmZpbmQoKG5vZGVJdGVtKSA9PiBub2RlSXRlbS50eXBlLm5hbWUgPT09IHR5cGUubmFtZSk7XG4gIGlmICghbm9kZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4geyAuLi5ub2RlLmF0dHJzIH07XG59XG5cbi8vIHNyYy9oZWxwZXJzL2dldEF0dHJpYnV0ZXMudHNcbmZ1bmN0aW9uIGdldEF0dHJpYnV0ZXMoc3RhdGUsIHR5cGVPck5hbWUpIHtcbiAgY29uc3Qgc2NoZW1hVHlwZSA9IGdldFNjaGVtYVR5cGVOYW1lQnlOYW1lKFxuICAgIHR5cGVvZiB0eXBlT3JOYW1lID09PSBcInN0cmluZ1wiID8gdHlwZU9yTmFtZSA6IHR5cGVPck5hbWUubmFtZSxcbiAgICBzdGF0ZS5zY2hlbWFcbiAgKTtcbiAgaWYgKHNjaGVtYVR5cGUgPT09IFwibm9kZVwiKSB7XG4gICAgcmV0dXJuIGdldE5vZGVBdHRyaWJ1dGVzKHN0YXRlLCB0eXBlT3JOYW1lKTtcbiAgfVxuICBpZiAoc2NoZW1hVHlwZSA9PT0gXCJtYXJrXCIpIHtcbiAgICByZXR1cm4gZ2V0TWFya0F0dHJpYnV0ZXMoc3RhdGUsIHR5cGVPck5hbWUpO1xuICB9XG4gIHJldHVybiB7fTtcbn1cblxuLy8gc3JjL3V0aWxpdGllcy9yZW1vdmVEdXBsaWNhdGVzLnRzXG5mdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVzKGFycmF5LCBieSA9IEpTT04uc3RyaW5naWZ5KSB7XG4gIGNvbnN0IHNlZW4gPSB7fTtcbiAgcmV0dXJuIGFycmF5LmZpbHRlcigoaXRlbSkgPT4ge1xuICAgIGNvbnN0IGtleSA9IGJ5KGl0ZW0pO1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2Vlbiwga2V5KSA/IGZhbHNlIDogc2VlbltrZXldID0gdHJ1ZTtcbiAgfSk7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2dldENoYW5nZWRSYW5nZXMudHNcbmZ1bmN0aW9uIHNpbXBsaWZ5Q2hhbmdlZFJhbmdlcyhjaGFuZ2VzKSB7XG4gIGNvbnN0IHVuaXF1ZUNoYW5nZXMgPSByZW1vdmVEdXBsaWNhdGVzKGNoYW5nZXMpO1xuICByZXR1cm4gdW5pcXVlQ2hhbmdlcy5sZW5ndGggPT09IDEgPyB1bmlxdWVDaGFuZ2VzIDogdW5pcXVlQ2hhbmdlcy5maWx0ZXIoKGNoYW5nZSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCByZXN0ID0gdW5pcXVlQ2hhbmdlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICByZXR1cm4gIXJlc3Quc29tZSgob3RoZXJDaGFuZ2UpID0+IHtcbiAgICAgIHJldHVybiBjaGFuZ2Uub2xkUmFuZ2UuZnJvbSA+PSBvdGhlckNoYW5nZS5vbGRSYW5nZS5mcm9tICYmIGNoYW5nZS5vbGRSYW5nZS50byA8PSBvdGhlckNoYW5nZS5vbGRSYW5nZS50byAmJiBjaGFuZ2UubmV3UmFuZ2UuZnJvbSA+PSBvdGhlckNoYW5nZS5uZXdSYW5nZS5mcm9tICYmIGNoYW5nZS5uZXdSYW5nZS50byA8PSBvdGhlckNoYW5nZS5uZXdSYW5nZS50bztcbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBnZXRDaGFuZ2VkUmFuZ2VzKHRyYW5zZm9ybSkge1xuICBjb25zdCB7IG1hcHBpbmcsIHN0ZXBzIH0gPSB0cmFuc2Zvcm07XG4gIGNvbnN0IGNoYW5nZXMgPSBbXTtcbiAgbWFwcGluZy5tYXBzLmZvckVhY2goKHN0ZXBNYXAsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcmFuZ2VzID0gW107XG4gICAgaWYgKCFzdGVwTWFwLnJhbmdlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgZnJvbSwgdG8gfSA9IHN0ZXBzW2luZGV4XTtcbiAgICAgIGlmIChmcm9tID09PSB2b2lkIDAgfHwgdG8gPT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByYW5nZXMucHVzaCh7IGZyb20sIHRvIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGVwTWFwLmZvckVhY2goKGZyb20sIHRvKSA9PiB7XG4gICAgICAgIHJhbmdlcy5wdXNoKHsgZnJvbSwgdG8gfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmFuZ2VzLmZvckVhY2goKHsgZnJvbSwgdG8gfSkgPT4ge1xuICAgICAgY29uc3QgbmV3U3RhcnQgPSBtYXBwaW5nLnNsaWNlKGluZGV4KS5tYXAoZnJvbSwgLTEpO1xuICAgICAgY29uc3QgbmV3RW5kID0gbWFwcGluZy5zbGljZShpbmRleCkubWFwKHRvKTtcbiAgICAgIGNvbnN0IG9sZFN0YXJ0ID0gbWFwcGluZy5pbnZlcnQoKS5tYXAobmV3U3RhcnQsIC0xKTtcbiAgICAgIGNvbnN0IG9sZEVuZCA9IG1hcHBpbmcuaW52ZXJ0KCkubWFwKG5ld0VuZCk7XG4gICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICBvbGRSYW5nZToge1xuICAgICAgICAgIGZyb206IG9sZFN0YXJ0LFxuICAgICAgICAgIHRvOiBvbGRFbmRcbiAgICAgICAgfSxcbiAgICAgICAgbmV3UmFuZ2U6IHtcbiAgICAgICAgICBmcm9tOiBuZXdTdGFydCxcbiAgICAgICAgICB0bzogbmV3RW5kXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHNpbXBsaWZ5Q2hhbmdlZFJhbmdlcyhjaGFuZ2VzKTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvZ2V0RGVidWdKU09OLnRzXG5mdW5jdGlvbiBnZXREZWJ1Z0pTT04obm9kZSwgc3RhcnRPZmZzZXQgPSAwKSB7XG4gIGNvbnN0IGlzVG9wTm9kZSA9IG5vZGUudHlwZSA9PT0gbm9kZS50eXBlLnNjaGVtYS50b3BOb2RlVHlwZTtcbiAgY29uc3QgaW5jcmVtZW50ID0gaXNUb3BOb2RlID8gMCA6IDE7XG4gIGNvbnN0IGZyb20gPSBzdGFydE9mZnNldDtcbiAgY29uc3QgdG8gPSBmcm9tICsgbm9kZS5ub2RlU2l6ZTtcbiAgY29uc3QgbWFya3MgPSBub2RlLm1hcmtzLm1hcCgobWFyaykgPT4ge1xuICAgIGNvbnN0IG91dHB1dDIgPSB7XG4gICAgICB0eXBlOiBtYXJrLnR5cGUubmFtZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKG1hcmsuYXR0cnMpLmxlbmd0aCkge1xuICAgICAgb3V0cHV0Mi5hdHRycyA9IHsgLi4ubWFyay5hdHRycyB9O1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0MjtcbiAgfSk7XG4gIGNvbnN0IGF0dHJzID0geyAuLi5ub2RlLmF0dHJzIH07XG4gIGNvbnN0IG91dHB1dCA9IHtcbiAgICB0eXBlOiBub2RlLnR5cGUubmFtZSxcbiAgICBmcm9tLFxuICAgIHRvXG4gIH07XG4gIGlmIChPYmplY3Qua2V5cyhhdHRycykubGVuZ3RoKSB7XG4gICAgb3V0cHV0LmF0dHJzID0gYXR0cnM7XG4gIH1cbiAgaWYgKG1hcmtzLmxlbmd0aCkge1xuICAgIG91dHB1dC5tYXJrcyA9IG1hcmtzO1xuICB9XG4gIGlmIChub2RlLmNvbnRlbnQuY2hpbGRDb3VudCkge1xuICAgIG91dHB1dC5jb250ZW50ID0gW107XG4gICAgbm9kZS5mb3JFYWNoKChjaGlsZCwgb2Zmc2V0KSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICAoX2EgPSBvdXRwdXQuY29udGVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnB1c2goZ2V0RGVidWdKU09OKGNoaWxkLCBzdGFydE9mZnNldCArIG9mZnNldCArIGluY3JlbWVudCkpO1xuICAgIH0pO1xuICB9XG4gIGlmIChub2RlLnRleHQpIHtcbiAgICBvdXRwdXQudGV4dCA9IG5vZGUudGV4dDtcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufVxuXG4vLyBzcmMvaGVscGVycy9nZXRNYXJrc0JldHdlZW4udHNcbmZ1bmN0aW9uIGdldE1hcmtzQmV0d2Vlbihmcm9tLCB0bywgZG9jKSB7XG4gIGNvbnN0IG1hcmtzID0gW107XG4gIGlmIChmcm9tID09PSB0bykge1xuICAgIGRvYy5yZXNvbHZlKGZyb20pLm1hcmtzKCkuZm9yRWFjaCgobWFyaykgPT4ge1xuICAgICAgY29uc3QgJHBvcyA9IGRvYy5yZXNvbHZlKGZyb20pO1xuICAgICAgY29uc3QgcmFuZ2UgPSBnZXRNYXJrUmFuZ2UoJHBvcywgbWFyay50eXBlKTtcbiAgICAgIGlmICghcmFuZ2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbWFya3MucHVzaCh7XG4gICAgICAgIG1hcmssXG4gICAgICAgIC4uLnJhbmdlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBkb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICBpZiAoIW5vZGUgfHwgKG5vZGUgPT0gbnVsbCA/IHZvaWQgMCA6IG5vZGUubm9kZVNpemUpID09PSB2b2lkIDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbWFya3MucHVzaChcbiAgICAgICAgLi4ubm9kZS5tYXJrcy5tYXAoKG1hcmspID0+ICh7XG4gICAgICAgICAgZnJvbTogcG9zLFxuICAgICAgICAgIHRvOiBwb3MgKyBub2RlLm5vZGVTaXplLFxuICAgICAgICAgIG1hcmtcbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBtYXJrcztcbn1cblxuLy8gc3JjL2hlbHBlcnMvZ2V0Tm9kZUF0UG9zaXRpb24udHNcbnZhciBnZXROb2RlQXRQb3NpdGlvbiA9IChzdGF0ZSwgdHlwZU9yTmFtZSwgcG9zLCBtYXhEZXB0aCA9IDIwKSA9PiB7XG4gIGNvbnN0ICRwb3MgPSBzdGF0ZS5kb2MucmVzb2x2ZShwb3MpO1xuICBsZXQgY3VycmVudERlcHRoID0gbWF4RGVwdGg7XG4gIGxldCBub2RlID0gbnVsbDtcbiAgd2hpbGUgKGN1cnJlbnREZXB0aCA+IDAgJiYgbm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGN1cnJlbnROb2RlID0gJHBvcy5ub2RlKGN1cnJlbnREZXB0aCk7XG4gICAgaWYgKChjdXJyZW50Tm9kZSA9PSBudWxsID8gdm9pZCAwIDogY3VycmVudE5vZGUudHlwZS5uYW1lKSA9PT0gdHlwZU9yTmFtZSkge1xuICAgICAgbm9kZSA9IGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50RGVwdGggLT0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtub2RlLCBjdXJyZW50RGVwdGhdO1xufTtcblxuLy8gc3JjL2hlbHBlcnMvZ2V0U2NoZW1hVHlwZUJ5TmFtZS50c1xuZnVuY3Rpb24gZ2V0U2NoZW1hVHlwZUJ5TmFtZShuYW1lLCBzY2hlbWEpIHtcbiAgcmV0dXJuIHNjaGVtYS5ub2Rlc1tuYW1lXSB8fCBzY2hlbWEubWFya3NbbmFtZV0gfHwgbnVsbDtcbn1cblxuLy8gc3JjL2hlbHBlcnMvZ2V0U3BsaXR0ZWRBdHRyaWJ1dGVzLnRzXG5mdW5jdGlvbiBnZXRTcGxpdHRlZEF0dHJpYnV0ZXMoZXh0ZW5zaW9uQXR0cmlidXRlcywgdHlwZU5hbWUsIGF0dHJpYnV0ZXMpIHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKS5maWx0ZXIoKFtuYW1lXSkgPT4ge1xuICAgICAgY29uc3QgZXh0ZW5zaW9uQXR0cmlidXRlID0gZXh0ZW5zaW9uQXR0cmlidXRlcy5maW5kKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLnR5cGUgPT09IHR5cGVOYW1lICYmIGl0ZW0ubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKCFleHRlbnNpb25BdHRyaWJ1dGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV4dGVuc2lvbkF0dHJpYnV0ZS5hdHRyaWJ1dGUua2VlcE9uU3BsaXQ7XG4gICAgfSlcbiAgKTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvZ2V0VGV4dENvbnRlbnRGcm9tTm9kZXMudHNcbnZhciBnZXRUZXh0Q29udGVudEZyb21Ob2RlcyA9ICgkZnJvbSwgbWF4TWF0Y2ggPSA1MDApID0+IHtcbiAgbGV0IHRleHRCZWZvcmUgPSBcIlwiO1xuICBjb25zdCBzbGljZUVuZFBvcyA9ICRmcm9tLnBhcmVudE9mZnNldDtcbiAgJGZyb20ucGFyZW50Lm5vZGVzQmV0d2VlbihNYXRoLm1heCgwLCBzbGljZUVuZFBvcyAtIG1heE1hdGNoKSwgc2xpY2VFbmRQb3MsIChub2RlLCBwb3MsIHBhcmVudCwgaW5kZXgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IGNodW5rID0gKChfYiA9IChfYSA9IG5vZGUudHlwZS5zcGVjKS50b1RleHQpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB7XG4gICAgICBub2RlLFxuICAgICAgcG9zLFxuICAgICAgcGFyZW50LFxuICAgICAgaW5kZXhcbiAgICB9KSkgfHwgbm9kZS50ZXh0Q29udGVudCB8fCBcIiVsZWFmJVwiO1xuICAgIHRleHRCZWZvcmUgKz0gbm9kZS5pc0F0b20gJiYgIW5vZGUuaXNUZXh0ID8gY2h1bmsgOiBjaHVuay5zbGljZSgwLCBNYXRoLm1heCgwLCBzbGljZUVuZFBvcyAtIHBvcykpO1xuICB9KTtcbiAgcmV0dXJuIHRleHRCZWZvcmU7XG59O1xuXG4vLyBzcmMvaGVscGVycy9pc01hcmtBY3RpdmUudHNcbmZ1bmN0aW9uIGlzTWFya0FjdGl2ZShzdGF0ZSwgdHlwZU9yTmFtZSwgYXR0cmlidXRlcyA9IHt9KSB7XG4gIGNvbnN0IHsgZW1wdHksIHJhbmdlcyB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICBjb25zdCB0eXBlID0gdHlwZU9yTmFtZSA/IGdldE1hcmtUeXBlKHR5cGVPck5hbWUsIHN0YXRlLnNjaGVtYSkgOiBudWxsO1xuICBpZiAoZW1wdHkpIHtcbiAgICByZXR1cm4gISEoc3RhdGUuc3RvcmVkTWFya3MgfHwgc3RhdGUuc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCkpLmZpbHRlcigobWFyaykgPT4ge1xuICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGUubmFtZSA9PT0gbWFyay50eXBlLm5hbWU7XG4gICAgfSkuZmluZCgobWFyaykgPT4gb2JqZWN0SW5jbHVkZXMobWFyay5hdHRycywgYXR0cmlidXRlcywgeyBzdHJpY3Q6IGZhbHNlIH0pKTtcbiAgfVxuICBsZXQgc2VsZWN0aW9uUmFuZ2UgPSAwO1xuICBjb25zdCBtYXJrUmFuZ2VzID0gW107XG4gIHJhbmdlcy5mb3JFYWNoKCh7ICRmcm9tLCAkdG8gfSkgPT4ge1xuICAgIGNvbnN0IGZyb20gPSAkZnJvbS5wb3M7XG4gICAgY29uc3QgdG8gPSAkdG8ucG9zO1xuICAgIHN0YXRlLmRvYy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIChub2RlLCBwb3MpID0+IHtcbiAgICAgIGlmICghbm9kZS5pc1RleHQgJiYgIW5vZGUubWFya3MubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlbGF0aXZlRnJvbSA9IE1hdGgubWF4KGZyb20sIHBvcyk7XG4gICAgICBjb25zdCByZWxhdGl2ZVRvID0gTWF0aC5taW4odG8sIHBvcyArIG5vZGUubm9kZVNpemUpO1xuICAgICAgY29uc3QgcmFuZ2UyID0gcmVsYXRpdmVUbyAtIHJlbGF0aXZlRnJvbTtcbiAgICAgIHNlbGVjdGlvblJhbmdlICs9IHJhbmdlMjtcbiAgICAgIG1hcmtSYW5nZXMucHVzaChcbiAgICAgICAgLi4ubm9kZS5tYXJrcy5tYXAoKG1hcmspID0+ICh7XG4gICAgICAgICAgbWFyayxcbiAgICAgICAgICBmcm9tOiByZWxhdGl2ZUZyb20sXG4gICAgICAgICAgdG86IHJlbGF0aXZlVG9cbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbiAgaWYgKHNlbGVjdGlvblJhbmdlID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IG1hdGNoZWRSYW5nZSA9IG1hcmtSYW5nZXMuZmlsdGVyKChtYXJrUmFuZ2UpID0+IHtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZS5uYW1lID09PSBtYXJrUmFuZ2UubWFyay50eXBlLm5hbWU7XG4gIH0pLmZpbHRlcigobWFya1JhbmdlKSA9PiBvYmplY3RJbmNsdWRlcyhtYXJrUmFuZ2UubWFyay5hdHRycywgYXR0cmlidXRlcywgeyBzdHJpY3Q6IGZhbHNlIH0pKS5yZWR1Y2UoKHN1bSwgbWFya1JhbmdlKSA9PiBzdW0gKyBtYXJrUmFuZ2UudG8gLSBtYXJrUmFuZ2UuZnJvbSwgMCk7XG4gIGNvbnN0IGV4Y2x1ZGVkUmFuZ2UgPSBtYXJrUmFuZ2VzLmZpbHRlcigobWFya1JhbmdlKSA9PiB7XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcmtSYW5nZS5tYXJrLnR5cGUgIT09IHR5cGUgJiYgbWFya1JhbmdlLm1hcmsudHlwZS5leGNsdWRlcyh0eXBlKTtcbiAgfSkucmVkdWNlKChzdW0sIG1hcmtSYW5nZSkgPT4gc3VtICsgbWFya1JhbmdlLnRvIC0gbWFya1JhbmdlLmZyb20sIDApO1xuICBjb25zdCByYW5nZSA9IG1hdGNoZWRSYW5nZSA+IDAgPyBtYXRjaGVkUmFuZ2UgKyBleGNsdWRlZFJhbmdlIDogbWF0Y2hlZFJhbmdlO1xuICByZXR1cm4gcmFuZ2UgPj0gc2VsZWN0aW9uUmFuZ2U7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2lzQWN0aXZlLnRzXG5mdW5jdGlvbiBpc0FjdGl2ZShzdGF0ZSwgbmFtZSwgYXR0cmlidXRlcyA9IHt9KSB7XG4gIGlmICghbmFtZSkge1xuICAgIHJldHVybiBpc05vZGVBY3RpdmUoc3RhdGUsIG51bGwsIGF0dHJpYnV0ZXMpIHx8IGlzTWFya0FjdGl2ZShzdGF0ZSwgbnVsbCwgYXR0cmlidXRlcyk7XG4gIH1cbiAgY29uc3Qgc2NoZW1hVHlwZSA9IGdldFNjaGVtYVR5cGVOYW1lQnlOYW1lKG5hbWUsIHN0YXRlLnNjaGVtYSk7XG4gIGlmIChzY2hlbWFUeXBlID09PSBcIm5vZGVcIikge1xuICAgIHJldHVybiBpc05vZGVBY3RpdmUoc3RhdGUsIG5hbWUsIGF0dHJpYnV0ZXMpO1xuICB9XG4gIGlmIChzY2hlbWFUeXBlID09PSBcIm1hcmtcIikge1xuICAgIHJldHVybiBpc01hcmtBY3RpdmUoc3RhdGUsIG5hbWUsIGF0dHJpYnV0ZXMpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gc3JjL2hlbHBlcnMvaXNBdEVuZE9mTm9kZS50c1xudmFyIGlzQXRFbmRPZk5vZGUgPSAoc3RhdGUsIG5vZGVUeXBlKSA9PiB7XG4gIGNvbnN0IHsgJGZyb20sICR0bywgJGFuY2hvciB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICBpZiAobm9kZVR5cGUpIHtcbiAgICBjb25zdCBwYXJlbnROb2RlID0gZmluZFBhcmVudE5vZGUoKG5vZGUpID0+IG5vZGUudHlwZS5uYW1lID09PSBub2RlVHlwZSkoc3RhdGUuc2VsZWN0aW9uKTtcbiAgICBpZiAoIXBhcmVudE5vZGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgJHBhcmVudFBvcyA9IHN0YXRlLmRvYy5yZXNvbHZlKHBhcmVudE5vZGUucG9zICsgMSk7XG4gICAgaWYgKCRhbmNob3IucG9zICsgMSA9PT0gJHBhcmVudFBvcy5lbmQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoJHRvLnBhcmVudE9mZnNldCA8ICR0by5wYXJlbnQubm9kZVNpemUgLSAyIHx8ICRmcm9tLnBvcyAhPT0gJHRvLnBvcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIHNyYy9oZWxwZXJzL2lzQXRTdGFydE9mTm9kZS50c1xudmFyIGlzQXRTdGFydE9mTm9kZSA9IChzdGF0ZSkgPT4ge1xuICBjb25zdCB7ICRmcm9tLCAkdG8gfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgaWYgKCRmcm9tLnBhcmVudE9mZnNldCA+IDAgfHwgJGZyb20ucG9zICE9PSAkdG8ucG9zKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL2hlbHBlcnMvaXNFeHRlbnNpb25SdWxlc0VuYWJsZWQudHNcbmZ1bmN0aW9uIGlzRXh0ZW5zaW9uUnVsZXNFbmFibGVkKGV4dGVuc2lvbiwgZW5hYmxlZCkge1xuICBpZiAoQXJyYXkuaXNBcnJheShlbmFibGVkKSkge1xuICAgIHJldHVybiBlbmFibGVkLnNvbWUoKGVuYWJsZWRFeHRlbnNpb24pID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgZW5hYmxlZEV4dGVuc2lvbiA9PT0gXCJzdHJpbmdcIiA/IGVuYWJsZWRFeHRlbnNpb24gOiBlbmFibGVkRXh0ZW5zaW9uLm5hbWU7XG4gICAgICByZXR1cm4gbmFtZSA9PT0gZXh0ZW5zaW9uLm5hbWU7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGVuYWJsZWQ7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2lzTGlzdC50c1xuZnVuY3Rpb24gaXNMaXN0KG5hbWUsIGV4dGVuc2lvbnMpIHtcbiAgY29uc3QgeyBub2RlRXh0ZW5zaW9ucyB9ID0gc3BsaXRFeHRlbnNpb25zKGV4dGVuc2lvbnMpO1xuICBjb25zdCBleHRlbnNpb24gPSBub2RlRXh0ZW5zaW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IG5hbWUpO1xuICBpZiAoIWV4dGVuc2lvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIG5hbWU6IGV4dGVuc2lvbi5uYW1lLFxuICAgIG9wdGlvbnM6IGV4dGVuc2lvbi5vcHRpb25zLFxuICAgIHN0b3JhZ2U6IGV4dGVuc2lvbi5zdG9yYWdlXG4gIH07XG4gIGNvbnN0IGdyb3VwID0gY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJncm91cFwiLCBjb250ZXh0KSk7XG4gIGlmICh0eXBlb2YgZ3JvdXAgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdyb3VwLnNwbGl0KFwiIFwiKS5pbmNsdWRlcyhcImxpc3RcIik7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2lzTm9kZUVtcHR5LnRzXG5mdW5jdGlvbiBpc05vZGVFbXB0eShub2RlLCB7XG4gIGNoZWNrQ2hpbGRyZW4gPSB0cnVlLFxuICBpZ25vcmVXaGl0ZXNwYWNlID0gZmFsc2Vcbn0gPSB7fSkge1xuICB2YXIgX2E7XG4gIGlmIChpZ25vcmVXaGl0ZXNwYWNlKSB7XG4gICAgaWYgKG5vZGUudHlwZS5uYW1lID09PSBcImhhcmRCcmVha1wiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG5vZGUuaXNUZXh0KSB7XG4gICAgICByZXR1cm4gL15cXHMqJC9tLnRlc3QoKF9hID0gbm9kZS50ZXh0KSAhPSBudWxsID8gX2EgOiBcIlwiKTtcbiAgICB9XG4gIH1cbiAgaWYgKG5vZGUuaXNUZXh0KSB7XG4gICAgcmV0dXJuICFub2RlLnRleHQ7XG4gIH1cbiAgaWYgKG5vZGUuaXNBdG9tIHx8IG5vZGUuaXNMZWFmKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChub2RlLmNvbnRlbnQuY2hpbGRDb3VudCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChjaGVja0NoaWxkcmVuKSB7XG4gICAgbGV0IGlzQ29udGVudEVtcHR5ID0gdHJ1ZTtcbiAgICBub2RlLmNvbnRlbnQuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBpZiAoaXNDb250ZW50RW1wdHkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghaXNOb2RlRW1wdHkoY2hpbGROb2RlLCB7IGlnbm9yZVdoaXRlc3BhY2UsIGNoZWNrQ2hpbGRyZW4gfSkpIHtcbiAgICAgICAgaXNDb250ZW50RW1wdHkgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNDb250ZW50RW1wdHk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBzcmMvaGVscGVycy9pc05vZGVTZWxlY3Rpb24udHNcbmltcG9ydCB7IE5vZGVTZWxlY3Rpb24gfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xuZnVuY3Rpb24gaXNOb2RlU2VsZWN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb247XG59XG5cbi8vIHNyYy9oZWxwZXJzL01hcHBhYmxlUG9zaXRpb24udHNcbnZhciBNYXBwYWJsZVBvc2l0aW9uID0gY2xhc3MgX01hcHBhYmxlUG9zaXRpb24ge1xuICBjb25zdHJ1Y3Rvcihwb3NpdGlvbikge1xuICAgIHRoaXMucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIE1hcHBhYmxlUG9zaXRpb24gZnJvbSBhIEpTT04gb2JqZWN0LlxuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICByZXR1cm4gbmV3IF9NYXBwYWJsZVBvc2l0aW9uKGpzb24ucG9zaXRpb24pO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgTWFwcGFibGVQb3NpdGlvbiB0byBhIEpTT04gb2JqZWN0LlxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvblxuICAgIH07XG4gIH1cbn07XG5mdW5jdGlvbiBnZXRVcGRhdGVkUG9zaXRpb24ocG9zaXRpb24sIHRyYW5zYWN0aW9uKSB7XG4gIGNvbnN0IG1hcFJlc3VsdCA9IHRyYW5zYWN0aW9uLm1hcHBpbmcubWFwUmVzdWx0KHBvc2l0aW9uLnBvc2l0aW9uKTtcbiAgcmV0dXJuIHtcbiAgICBwb3NpdGlvbjogbmV3IE1hcHBhYmxlUG9zaXRpb24obWFwUmVzdWx0LnBvcyksXG4gICAgbWFwUmVzdWx0XG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVNYXBwYWJsZVBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gIHJldHVybiBuZXcgTWFwcGFibGVQb3NpdGlvbihwb3NpdGlvbik7XG59XG5cbi8vIHNyYy9oZWxwZXJzL3Bvc1RvRE9NUmVjdC50c1xuZnVuY3Rpb24gcG9zVG9ET01SZWN0KHZpZXcsIGZyb20sIHRvKSB7XG4gIGNvbnN0IG1pblBvcyA9IDA7XG4gIGNvbnN0IG1heFBvcyA9IHZpZXcuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZTtcbiAgY29uc3QgcmVzb2x2ZWRGcm9tID0gbWluTWF4KGZyb20sIG1pblBvcywgbWF4UG9zKTtcbiAgY29uc3QgcmVzb2x2ZWRFbmQgPSBtaW5NYXgodG8sIG1pblBvcywgbWF4UG9zKTtcbiAgY29uc3Qgc3RhcnQgPSB2aWV3LmNvb3Jkc0F0UG9zKHJlc29sdmVkRnJvbSk7XG4gIGNvbnN0IGVuZCA9IHZpZXcuY29vcmRzQXRQb3MocmVzb2x2ZWRFbmQsIC0xKTtcbiAgY29uc3QgdG9wID0gTWF0aC5taW4oc3RhcnQudG9wLCBlbmQudG9wKTtcbiAgY29uc3QgYm90dG9tID0gTWF0aC5tYXgoc3RhcnQuYm90dG9tLCBlbmQuYm90dG9tKTtcbiAgY29uc3QgbGVmdCA9IE1hdGgubWluKHN0YXJ0LmxlZnQsIGVuZC5sZWZ0KTtcbiAgY29uc3QgcmlnaHQgPSBNYXRoLm1heChzdGFydC5yaWdodCwgZW5kLnJpZ2h0KTtcbiAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgY29uc3QgeCA9IGxlZnQ7XG4gIGNvbnN0IHkgPSB0b3A7XG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgdG9wLFxuICAgIGJvdHRvbSxcbiAgICBsZWZ0LFxuICAgIHJpZ2h0LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICAuLi5kYXRhLFxuICAgIHRvSlNPTjogKCkgPT4gZGF0YVxuICB9O1xufVxuXG4vLyBzcmMvaGVscGVycy9yZXdyaXRlVW5rbm93bkNvbnRlbnQudHNcbmZ1bmN0aW9uIHJld3JpdGVVbmtub3duQ29udGVudElubmVyKHtcbiAganNvbixcbiAgdmFsaWRNYXJrcyxcbiAgdmFsaWROb2RlcyxcbiAgb3B0aW9ucyxcbiAgcmV3cml0dGVuQ29udGVudCA9IFtdXG59KSB7XG4gIGlmIChqc29uLm1hcmtzICYmIEFycmF5LmlzQXJyYXkoanNvbi5tYXJrcykpIHtcbiAgICBqc29uLm1hcmtzID0ganNvbi5tYXJrcy5maWx0ZXIoKG1hcmspID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgbWFyayA9PT0gXCJzdHJpbmdcIiA/IG1hcmsgOiBtYXJrLnR5cGU7XG4gICAgICBpZiAodmFsaWRNYXJrcy5oYXMobmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXdyaXR0ZW5Db250ZW50LnB1c2goe1xuICAgICAgICBvcmlnaW5hbDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShtYXJrKSksXG4gICAgICAgIHVuc3VwcG9ydGVkOiBuYW1lXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuICBpZiAoanNvbi5jb250ZW50ICYmIEFycmF5LmlzQXJyYXkoanNvbi5jb250ZW50KSkge1xuICAgIGpzb24uY29udGVudCA9IGpzb24uY29udGVudC5tYXAoXG4gICAgICAodmFsdWUpID0+IHJld3JpdGVVbmtub3duQ29udGVudElubmVyKHtcbiAgICAgICAganNvbjogdmFsdWUsXG4gICAgICAgIHZhbGlkTWFya3MsXG4gICAgICAgIHZhbGlkTm9kZXMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHJld3JpdHRlbkNvbnRlbnRcbiAgICAgIH0pLmpzb25cbiAgICApLmZpbHRlcigoYSkgPT4gYSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDApO1xuICB9XG4gIGlmIChqc29uLnR5cGUgJiYgIXZhbGlkTm9kZXMuaGFzKGpzb24udHlwZSkpIHtcbiAgICByZXdyaXR0ZW5Db250ZW50LnB1c2goe1xuICAgICAgb3JpZ2luYWw6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoanNvbikpLFxuICAgICAgdW5zdXBwb3J0ZWQ6IGpzb24udHlwZVxuICAgIH0pO1xuICAgIGlmIChqc29uLmNvbnRlbnQgJiYgQXJyYXkuaXNBcnJheShqc29uLmNvbnRlbnQpICYmIChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmZhbGxiYWNrVG9QYXJhZ3JhcGgpICE9PSBmYWxzZSkge1xuICAgICAganNvbi50eXBlID0gXCJwYXJhZ3JhcGhcIjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGpzb24sXG4gICAgICAgIHJld3JpdHRlbkNvbnRlbnRcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBqc29uOiBudWxsLFxuICAgICAgcmV3cml0dGVuQ29udGVudFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsganNvbiwgcmV3cml0dGVuQ29udGVudCB9O1xufVxuZnVuY3Rpb24gcmV3cml0ZVVua25vd25Db250ZW50KGpzb24sIHNjaGVtYSwgb3B0aW9ucykge1xuICByZXR1cm4gcmV3cml0ZVVua25vd25Db250ZW50SW5uZXIoe1xuICAgIGpzb24sXG4gICAgdmFsaWROb2RlczogbmV3IFNldChPYmplY3Qua2V5cyhzY2hlbWEubm9kZXMpKSxcbiAgICB2YWxpZE1hcmtzOiBuZXcgU2V0KE9iamVjdC5rZXlzKHNjaGVtYS5tYXJrcykpLFxuICAgIG9wdGlvbnNcbiAgfSk7XG59XG5cbi8vIHNyYy9jb21tYW5kcy9zZXRNYXJrLnRzXG5mdW5jdGlvbiBjYW5TZXRNYXJrKHN0YXRlLCB0ciwgbmV3TWFya1R5cGUpIHtcbiAgdmFyIF9hO1xuICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gdHI7XG4gIGxldCBjdXJzb3IgPSBudWxsO1xuICBpZiAoaXNUZXh0U2VsZWN0aW9uKHNlbGVjdGlvbikpIHtcbiAgICBjdXJzb3IgPSBzZWxlY3Rpb24uJGN1cnNvcjtcbiAgfVxuICBpZiAoY3Vyc29yKSB7XG4gICAgY29uc3QgY3VycmVudE1hcmtzID0gKF9hID0gc3RhdGUuc3RvcmVkTWFya3MpICE9IG51bGwgPyBfYSA6IGN1cnNvci5tYXJrcygpO1xuICAgIGNvbnN0IHBhcmVudEFsbG93c01hcmtUeXBlID0gY3Vyc29yLnBhcmVudC50eXBlLmFsbG93c01hcmtUeXBlKG5ld01hcmtUeXBlKTtcbiAgICByZXR1cm4gcGFyZW50QWxsb3dzTWFya1R5cGUgJiYgKCEhbmV3TWFya1R5cGUuaXNJblNldChjdXJyZW50TWFya3MpIHx8ICFjdXJyZW50TWFya3Muc29tZSgobWFyaykgPT4gbWFyay50eXBlLmV4Y2x1ZGVzKG5ld01hcmtUeXBlKSkpO1xuICB9XG4gIGNvbnN0IHsgcmFuZ2VzIH0gPSBzZWxlY3Rpb247XG4gIHJldHVybiByYW5nZXMuc29tZSgoeyAkZnJvbSwgJHRvIH0pID0+IHtcbiAgICBsZXQgc29tZU5vZGVTdXBwb3J0c01hcmsgPSAkZnJvbS5kZXB0aCA9PT0gMCA/IHN0YXRlLmRvYy5pbmxpbmVDb250ZW50ICYmIHN0YXRlLmRvYy50eXBlLmFsbG93c01hcmtUeXBlKG5ld01hcmtUeXBlKSA6IGZhbHNlO1xuICAgIHN0YXRlLmRvYy5ub2Rlc0JldHdlZW4oJGZyb20ucG9zLCAkdG8ucG9zLCAobm9kZSwgX3BvcywgcGFyZW50KSA9PiB7XG4gICAgICBpZiAoc29tZU5vZGVTdXBwb3J0c01hcmspIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuaXNJbmxpbmUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50QWxsb3dzTWFya1R5cGUgPSAhcGFyZW50IHx8IHBhcmVudC50eXBlLmFsbG93c01hcmtUeXBlKG5ld01hcmtUeXBlKTtcbiAgICAgICAgY29uc3QgY3VycmVudE1hcmtzQWxsb3dNYXJrVHlwZSA9ICEhbmV3TWFya1R5cGUuaXNJblNldChub2RlLm1hcmtzKSB8fCAhbm9kZS5tYXJrcy5zb21lKChvdGhlck1hcmspID0+IG90aGVyTWFyay50eXBlLmV4Y2x1ZGVzKG5ld01hcmtUeXBlKSk7XG4gICAgICAgIHNvbWVOb2RlU3VwcG9ydHNNYXJrID0gcGFyZW50QWxsb3dzTWFya1R5cGUgJiYgY3VycmVudE1hcmtzQWxsb3dNYXJrVHlwZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhc29tZU5vZGVTdXBwb3J0c01hcms7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNvbWVOb2RlU3VwcG9ydHNNYXJrO1xuICB9KTtcbn1cbnZhciBzZXRNYXJrID0gKHR5cGVPck5hbWUsIGF0dHJpYnV0ZXMgPSB7fSkgPT4gKHsgdHIsIHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSB0cjtcbiAgY29uc3QgeyBlbXB0eSwgcmFuZ2VzIH0gPSBzZWxlY3Rpb247XG4gIGNvbnN0IHR5cGUgPSBnZXRNYXJrVHlwZSh0eXBlT3JOYW1lLCBzdGF0ZS5zY2hlbWEpO1xuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICBpZiAoZW1wdHkpIHtcbiAgICAgIGNvbnN0IG9sZEF0dHJpYnV0ZXMgPSBnZXRNYXJrQXR0cmlidXRlcyhzdGF0ZSwgdHlwZSk7XG4gICAgICB0ci5hZGRTdG9yZWRNYXJrKFxuICAgICAgICB0eXBlLmNyZWF0ZSh7XG4gICAgICAgICAgLi4ub2xkQXR0cmlidXRlcyxcbiAgICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZXMuZm9yRWFjaCgocmFuZ2UpID0+IHtcbiAgICAgICAgY29uc3QgZnJvbSA9IHJhbmdlLiRmcm9tLnBvcztcbiAgICAgICAgY29uc3QgdG8gPSByYW5nZS4kdG8ucG9zO1xuICAgICAgICBzdGF0ZS5kb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgICAgY29uc3QgdHJpbW1lZEZyb20gPSBNYXRoLm1heChwb3MsIGZyb20pO1xuICAgICAgICAgIGNvbnN0IHRyaW1tZWRUbyA9IE1hdGgubWluKHBvcyArIG5vZGUubm9kZVNpemUsIHRvKTtcbiAgICAgICAgICBjb25zdCBzb21lSGFzTWFyayA9IG5vZGUubWFya3MuZmluZCgobWFyaykgPT4gbWFyay50eXBlID09PSB0eXBlKTtcbiAgICAgICAgICBpZiAoc29tZUhhc01hcmspIHtcbiAgICAgICAgICAgIG5vZGUubWFya3MuZm9yRWFjaCgobWFyaykgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gbWFyay50eXBlKSB7XG4gICAgICAgICAgICAgICAgdHIuYWRkTWFyayhcbiAgICAgICAgICAgICAgICAgIHRyaW1tZWRGcm9tLFxuICAgICAgICAgICAgICAgICAgdHJpbW1lZFRvLFxuICAgICAgICAgICAgICAgICAgdHlwZS5jcmVhdGUoe1xuICAgICAgICAgICAgICAgICAgICAuLi5tYXJrLmF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ci5hZGRNYXJrKHRyaW1tZWRGcm9tLCB0cmltbWVkVG8sIHR5cGUuY3JlYXRlKGF0dHJpYnV0ZXMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW5TZXRNYXJrKHN0YXRlLCB0ciwgdHlwZSk7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvc2V0TWV0YS50c1xudmFyIHNldE1ldGEgPSAoa2V5LCB2YWx1ZSkgPT4gKHsgdHIgfSkgPT4ge1xuICB0ci5zZXRNZXRhKGtleSwgdmFsdWUpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9zZXROb2RlLnRzXG5pbXBvcnQgeyBzZXRCbG9ja1R5cGUgfSBmcm9tIFwiQHRpcHRhcC9wbS9jb21tYW5kc1wiO1xudmFyIHNldE5vZGUgPSAodHlwZU9yTmFtZSwgYXR0cmlidXRlcyA9IHt9KSA9PiAoeyBzdGF0ZSwgZGlzcGF0Y2gsIGNoYWluIH0pID0+IHtcbiAgY29uc3QgdHlwZSA9IGdldE5vZGVUeXBlKHR5cGVPck5hbWUsIHN0YXRlLnNjaGVtYSk7XG4gIGxldCBhdHRyaWJ1dGVzVG9Db3B5O1xuICBpZiAoc3RhdGUuc2VsZWN0aW9uLiRhbmNob3Iuc2FtZVBhcmVudChzdGF0ZS5zZWxlY3Rpb24uJGhlYWQpKSB7XG4gICAgYXR0cmlidXRlc1RvQ29weSA9IHN0YXRlLnNlbGVjdGlvbi4kYW5jaG9yLnBhcmVudC5hdHRycztcbiAgfVxuICBpZiAoIXR5cGUuaXNUZXh0YmxvY2spIHtcbiAgICBjb25zb2xlLndhcm4oJ1t0aXB0YXAgd2Fybl06IEN1cnJlbnRseSBcInNldE5vZGUoKVwiIG9ubHkgc3VwcG9ydHMgdGV4dCBibG9jayBub2Rlcy4nKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGNoYWluKCkuY29tbWFuZCgoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgY29uc3QgY2FuU2V0QmxvY2sgPSBzZXRCbG9ja1R5cGUodHlwZSwgeyAuLi5hdHRyaWJ1dGVzVG9Db3B5LCAuLi5hdHRyaWJ1dGVzIH0pKHN0YXRlKTtcbiAgICBpZiAoY2FuU2V0QmxvY2spIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZHMuY2xlYXJOb2RlcygpO1xuICB9KS5jb21tYW5kKCh7IHN0YXRlOiB1cGRhdGVkU3RhdGUgfSkgPT4ge1xuICAgIHJldHVybiBzZXRCbG9ja1R5cGUodHlwZSwgeyAuLi5hdHRyaWJ1dGVzVG9Db3B5LCAuLi5hdHRyaWJ1dGVzIH0pKHVwZGF0ZWRTdGF0ZSwgZGlzcGF0Y2gpO1xuICB9KS5ydW4oKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9zZXROb2RlU2VsZWN0aW9uLnRzXG5pbXBvcnQgeyBOb2RlU2VsZWN0aW9uIGFzIE5vZGVTZWxlY3Rpb24yIH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbnZhciBzZXROb2RlU2VsZWN0aW9uID0gKHBvc2l0aW9uKSA9PiAoeyB0ciwgZGlzcGF0Y2ggfSkgPT4ge1xuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICBjb25zdCB7IGRvYyB9ID0gdHI7XG4gICAgY29uc3QgZnJvbSA9IG1pbk1heChwb3NpdGlvbiwgMCwgZG9jLmNvbnRlbnQuc2l6ZSk7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gTm9kZVNlbGVjdGlvbjIuY3JlYXRlKGRvYywgZnJvbSk7XG4gICAgdHIuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvc2V0VGV4dERpcmVjdGlvbi50c1xudmFyIHNldFRleHREaXJlY3Rpb24gPSAoZGlyZWN0aW9uLCBwb3NpdGlvbikgPT4gKHsgdHIsIHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBzdGF0ZTtcbiAgbGV0IGZyb207XG4gIGxldCB0bztcbiAgaWYgKHR5cGVvZiBwb3NpdGlvbiA9PT0gXCJudW1iZXJcIikge1xuICAgIGZyb20gPSBwb3NpdGlvbjtcbiAgICB0byA9IHBvc2l0aW9uO1xuICB9IGVsc2UgaWYgKHBvc2l0aW9uICYmIFwiZnJvbVwiIGluIHBvc2l0aW9uICYmIFwidG9cIiBpbiBwb3NpdGlvbikge1xuICAgIGZyb20gPSBwb3NpdGlvbi5mcm9tO1xuICAgIHRvID0gcG9zaXRpb24udG87XG4gIH0gZWxzZSB7XG4gICAgZnJvbSA9IHNlbGVjdGlvbi5mcm9tO1xuICAgIHRvID0gc2VsZWN0aW9uLnRvO1xuICB9XG4gIGlmIChkaXNwYXRjaCkge1xuICAgIHRyLmRvYy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIChub2RlLCBwb3MpID0+IHtcbiAgICAgIGlmIChub2RlLmlzVGV4dCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0ci5zZXROb2RlTWFya3VwKHBvcywgdm9pZCAwLCB7XG4gICAgICAgIC4uLm5vZGUuYXR0cnMsXG4gICAgICAgIGRpcjogZGlyZWN0aW9uXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9zZXRUZXh0U2VsZWN0aW9uLnRzXG5pbXBvcnQgeyBUZXh0U2VsZWN0aW9uIGFzIFRleHRTZWxlY3Rpb241IH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbnZhciBzZXRUZXh0U2VsZWN0aW9uID0gKHBvc2l0aW9uKSA9PiAoeyB0ciwgZGlzcGF0Y2ggfSkgPT4ge1xuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICBjb25zdCB7IGRvYyB9ID0gdHI7XG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID0gdHlwZW9mIHBvc2l0aW9uID09PSBcIm51bWJlclwiID8geyBmcm9tOiBwb3NpdGlvbiwgdG86IHBvc2l0aW9uIH0gOiBwb3NpdGlvbjtcbiAgICBjb25zdCBtaW5Qb3MgPSBUZXh0U2VsZWN0aW9uNS5hdFN0YXJ0KGRvYykuZnJvbTtcbiAgICBjb25zdCBtYXhQb3MgPSBUZXh0U2VsZWN0aW9uNS5hdEVuZChkb2MpLnRvO1xuICAgIGNvbnN0IHJlc29sdmVkRnJvbSA9IG1pbk1heChmcm9tLCBtaW5Qb3MsIG1heFBvcyk7XG4gICAgY29uc3QgcmVzb2x2ZWRFbmQgPSBtaW5NYXgodG8sIG1pblBvcywgbWF4UG9zKTtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBUZXh0U2VsZWN0aW9uNS5jcmVhdGUoZG9jLCByZXNvbHZlZEZyb20sIHJlc29sdmVkRW5kKTtcbiAgICB0ci5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9zaW5rTGlzdEl0ZW0udHNcbmltcG9ydCB7IHNpbmtMaXN0SXRlbSBhcyBvcmlnaW5hbFNpbmtMaXN0SXRlbSB9IGZyb20gXCJAdGlwdGFwL3BtL3NjaGVtYS1saXN0XCI7XG52YXIgc2lua0xpc3RJdGVtID0gKHR5cGVPck5hbWUpID0+ICh7IHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gIGNvbnN0IHR5cGUgPSBnZXROb2RlVHlwZSh0eXBlT3JOYW1lLCBzdGF0ZS5zY2hlbWEpO1xuICByZXR1cm4gb3JpZ2luYWxTaW5rTGlzdEl0ZW0odHlwZSkoc3RhdGUsIGRpc3BhdGNoKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9zcGxpdEJsb2NrLnRzXG5pbXBvcnQgeyBOb2RlU2VsZWN0aW9uIGFzIE5vZGVTZWxlY3Rpb24zLCBUZXh0U2VsZWN0aW9uIGFzIFRleHRTZWxlY3Rpb242IH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbmltcG9ydCB7IGNhblNwbGl0IH0gZnJvbSBcIkB0aXB0YXAvcG0vdHJhbnNmb3JtXCI7XG5mdW5jdGlvbiBlbnN1cmVNYXJrcyhzdGF0ZSwgc3BsaXR0YWJsZU1hcmtzKSB7XG4gIGNvbnN0IG1hcmtzID0gc3RhdGUuc3RvcmVkTWFya3MgfHwgc3RhdGUuc2VsZWN0aW9uLiR0by5wYXJlbnRPZmZzZXQgJiYgc3RhdGUuc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCk7XG4gIGlmIChtYXJrcykge1xuICAgIGNvbnN0IGZpbHRlcmVkTWFya3MgPSBtYXJrcy5maWx0ZXIoKG1hcmspID0+IHNwbGl0dGFibGVNYXJrcyA9PSBudWxsID8gdm9pZCAwIDogc3BsaXR0YWJsZU1hcmtzLmluY2x1ZGVzKG1hcmsudHlwZS5uYW1lKSk7XG4gICAgc3RhdGUudHIuZW5zdXJlTWFya3MoZmlsdGVyZWRNYXJrcyk7XG4gIH1cbn1cbnZhciBzcGxpdEJsb2NrID0gKHsga2VlcE1hcmtzID0gdHJ1ZSB9ID0ge30pID0+ICh7IHRyLCBzdGF0ZSwgZGlzcGF0Y2gsIGVkaXRvciB9KSA9PiB7XG4gIGNvbnN0IHsgc2VsZWN0aW9uLCBkb2MgfSA9IHRyO1xuICBjb25zdCB7ICRmcm9tLCAkdG8gfSA9IHNlbGVjdGlvbjtcbiAgY29uc3QgZXh0ZW5zaW9uQXR0cmlidXRlcyA9IGVkaXRvci5leHRlbnNpb25NYW5hZ2VyLmF0dHJpYnV0ZXM7XG4gIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSBnZXRTcGxpdHRlZEF0dHJpYnV0ZXMoZXh0ZW5zaW9uQXR0cmlidXRlcywgJGZyb20ubm9kZSgpLnR5cGUubmFtZSwgJGZyb20ubm9kZSgpLmF0dHJzKTtcbiAgaWYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24zICYmIHNlbGVjdGlvbi5ub2RlLmlzQmxvY2spIHtcbiAgICBpZiAoISRmcm9tLnBhcmVudE9mZnNldCB8fCAhY2FuU3BsaXQoZG9jLCAkZnJvbS5wb3MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChkaXNwYXRjaCkge1xuICAgICAgaWYgKGtlZXBNYXJrcykge1xuICAgICAgICBlbnN1cmVNYXJrcyhzdGF0ZSwgZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIuc3BsaXR0YWJsZU1hcmtzKTtcbiAgICAgIH1cbiAgICAgIHRyLnNwbGl0KCRmcm9tLnBvcykuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKCEkZnJvbS5wYXJlbnQuaXNCbG9jaykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBhdEVuZCA9ICR0by5wYXJlbnRPZmZzZXQgPT09ICR0by5wYXJlbnQuY29udGVudC5zaXplO1xuICBjb25zdCBkZWZsdCA9ICRmcm9tLmRlcHRoID09PSAwID8gdm9pZCAwIDogZGVmYXVsdEJsb2NrQXQoJGZyb20ubm9kZSgtMSkuY29udGVudE1hdGNoQXQoJGZyb20uaW5kZXhBZnRlcigtMSkpKTtcbiAgbGV0IHR5cGVzID0gYXRFbmQgJiYgZGVmbHQgPyBbXG4gICAge1xuICAgICAgdHlwZTogZGVmbHQsXG4gICAgICBhdHRyczogbmV3QXR0cmlidXRlc1xuICAgIH1cbiAgXSA6IHZvaWQgMDtcbiAgbGV0IGNhbiA9IGNhblNwbGl0KHRyLmRvYywgdHIubWFwcGluZy5tYXAoJGZyb20ucG9zKSwgMSwgdHlwZXMpO1xuICBpZiAoIXR5cGVzICYmICFjYW4gJiYgY2FuU3BsaXQodHIuZG9jLCB0ci5tYXBwaW5nLm1hcCgkZnJvbS5wb3MpLCAxLCBkZWZsdCA/IFt7IHR5cGU6IGRlZmx0IH1dIDogdm9pZCAwKSkge1xuICAgIGNhbiA9IHRydWU7XG4gICAgdHlwZXMgPSBkZWZsdCA/IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogZGVmbHQsXG4gICAgICAgIGF0dHJzOiBuZXdBdHRyaWJ1dGVzXG4gICAgICB9XG4gICAgXSA6IHZvaWQgMDtcbiAgfVxuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICBpZiAoY2FuKSB7XG4gICAgICBpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbjYpIHtcbiAgICAgICAgdHIuZGVsZXRlU2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgICB0ci5zcGxpdCh0ci5tYXBwaW5nLm1hcCgkZnJvbS5wb3MpLCAxLCB0eXBlcyk7XG4gICAgICBpZiAoZGVmbHQgJiYgIWF0RW5kICYmICEkZnJvbS5wYXJlbnRPZmZzZXQgJiYgJGZyb20ucGFyZW50LnR5cGUgIT09IGRlZmx0KSB7XG4gICAgICAgIGNvbnN0IGZpcnN0MiA9IHRyLm1hcHBpbmcubWFwKCRmcm9tLmJlZm9yZSgpKTtcbiAgICAgICAgY29uc3QgJGZpcnN0ID0gdHIuZG9jLnJlc29sdmUoZmlyc3QyKTtcbiAgICAgICAgaWYgKCRmcm9tLm5vZGUoLTEpLmNhblJlcGxhY2VXaXRoKCRmaXJzdC5pbmRleCgpLCAkZmlyc3QuaW5kZXgoKSArIDEsIGRlZmx0KSkge1xuICAgICAgICAgIHRyLnNldE5vZGVNYXJrdXAodHIubWFwcGluZy5tYXAoJGZyb20uYmVmb3JlKCkpLCBkZWZsdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtlZXBNYXJrcykge1xuICAgICAgZW5zdXJlTWFya3Moc3RhdGUsIGVkaXRvci5leHRlbnNpb25NYW5hZ2VyLnNwbGl0dGFibGVNYXJrcyk7XG4gICAgfVxuICAgIHRyLnNjcm9sbEludG9WaWV3KCk7XG4gIH1cbiAgcmV0dXJuIGNhbjtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy9zcGxpdExpc3RJdGVtLnRzXG5pbXBvcnQgeyBGcmFnbWVudCBhcyBGcmFnbWVudDMsIFNsaWNlIH0gZnJvbSBcIkB0aXB0YXAvcG0vbW9kZWxcIjtcbmltcG9ydCB7IFRleHRTZWxlY3Rpb24gYXMgVGV4dFNlbGVjdGlvbjcgfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xuaW1wb3J0IHsgY2FuU3BsaXQgYXMgY2FuU3BsaXQyIH0gZnJvbSBcIkB0aXB0YXAvcG0vdHJhbnNmb3JtXCI7XG52YXIgc3BsaXRMaXN0SXRlbSA9ICh0eXBlT3JOYW1lLCBvdmVycmlkZUF0dHJzID0ge30pID0+ICh7IHRyLCBzdGF0ZSwgZGlzcGF0Y2gsIGVkaXRvciB9KSA9PiB7XG4gIHZhciBfYTtcbiAgY29uc3QgdHlwZSA9IGdldE5vZGVUeXBlKHR5cGVPck5hbWUsIHN0YXRlLnNjaGVtYSk7XG4gIGNvbnN0IHsgJGZyb20sICR0byB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICBjb25zdCBub2RlID0gc3RhdGUuc2VsZWN0aW9uLm5vZGU7XG4gIGlmIChub2RlICYmIG5vZGUuaXNCbG9jayB8fCAkZnJvbS5kZXB0aCA8IDIgfHwgISRmcm9tLnNhbWVQYXJlbnQoJHRvKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBncmFuZFBhcmVudCA9ICRmcm9tLm5vZGUoLTEpO1xuICBpZiAoZ3JhbmRQYXJlbnQudHlwZSAhPT0gdHlwZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBleHRlbnNpb25BdHRyaWJ1dGVzID0gZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIuYXR0cmlidXRlcztcbiAgaWYgKCRmcm9tLnBhcmVudC5jb250ZW50LnNpemUgPT09IDAgJiYgJGZyb20ubm9kZSgtMSkuY2hpbGRDb3VudCA9PT0gJGZyb20uaW5kZXhBZnRlcigtMSkpIHtcbiAgICBpZiAoJGZyb20uZGVwdGggPT09IDIgfHwgJGZyb20ubm9kZSgtMykudHlwZSAhPT0gdHlwZSB8fCAkZnJvbS5pbmRleCgtMikgIT09ICRmcm9tLm5vZGUoLTIpLmNoaWxkQ291bnQgLSAxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChkaXNwYXRjaCkge1xuICAgICAgbGV0IHdyYXAgPSBGcmFnbWVudDMuZW1wdHk7XG4gICAgICBjb25zdCBkZXB0aEJlZm9yZSA9ICRmcm9tLmluZGV4KC0xKSA/IDEgOiAkZnJvbS5pbmRleCgtMikgPyAyIDogMztcbiAgICAgIGZvciAobGV0IGQgPSAkZnJvbS5kZXB0aCAtIGRlcHRoQmVmb3JlOyBkID49ICRmcm9tLmRlcHRoIC0gMzsgZCAtPSAxKSB7XG4gICAgICAgIHdyYXAgPSBGcmFnbWVudDMuZnJvbSgkZnJvbS5ub2RlKGQpLmNvcHkod3JhcCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVwdGhBZnRlciA9IChcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5lc3RlZC10ZXJuYXJ5XG4gICAgICAgICRmcm9tLmluZGV4QWZ0ZXIoLTEpIDwgJGZyb20ubm9kZSgtMikuY2hpbGRDb3VudCA/IDEgOiAkZnJvbS5pbmRleEFmdGVyKC0yKSA8ICRmcm9tLm5vZGUoLTMpLmNoaWxkQ291bnQgPyAyIDogM1xuICAgICAgKTtcbiAgICAgIGNvbnN0IG5ld05leHRUeXBlQXR0cmlidXRlczIgPSB7XG4gICAgICAgIC4uLmdldFNwbGl0dGVkQXR0cmlidXRlcyhleHRlbnNpb25BdHRyaWJ1dGVzLCAkZnJvbS5ub2RlKCkudHlwZS5uYW1lLCAkZnJvbS5ub2RlKCkuYXR0cnMpLFxuICAgICAgICAuLi5vdmVycmlkZUF0dHJzXG4gICAgICB9O1xuICAgICAgY29uc3QgbmV4dFR5cGUyID0gKChfYSA9IHR5cGUuY29udGVudE1hdGNoLmRlZmF1bHRUeXBlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY3JlYXRlQW5kRmlsbChuZXdOZXh0VHlwZUF0dHJpYnV0ZXMyKSkgfHwgdm9pZCAwO1xuICAgICAgd3JhcCA9IHdyYXAuYXBwZW5kKEZyYWdtZW50My5mcm9tKHR5cGUuY3JlYXRlQW5kRmlsbChudWxsLCBuZXh0VHlwZTIpIHx8IHZvaWQgMCkpO1xuICAgICAgY29uc3Qgc3RhcnQgPSAkZnJvbS5iZWZvcmUoJGZyb20uZGVwdGggLSAoZGVwdGhCZWZvcmUgLSAxKSk7XG4gICAgICB0ci5yZXBsYWNlKHN0YXJ0LCAkZnJvbS5hZnRlcigtZGVwdGhBZnRlciksIG5ldyBTbGljZSh3cmFwLCA0IC0gZGVwdGhCZWZvcmUsIDApKTtcbiAgICAgIGxldCBzZWwgPSAtMTtcbiAgICAgIHRyLmRvYy5ub2Rlc0JldHdlZW4oc3RhcnQsIHRyLmRvYy5jb250ZW50LnNpemUsIChuLCBwb3MpID0+IHtcbiAgICAgICAgaWYgKHNlbCA+IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuLmlzVGV4dGJsb2NrICYmIG4uY29udGVudC5zaXplID09PSAwKSB7XG4gICAgICAgICAgc2VsID0gcG9zICsgMTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoc2VsID4gLTEpIHtcbiAgICAgICAgdHIuc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb243Lm5lYXIodHIuZG9jLnJlc29sdmUoc2VsKSkpO1xuICAgICAgfVxuICAgICAgdHIuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgbmV4dFR5cGUgPSAkdG8ucG9zID09PSAkZnJvbS5lbmQoKSA/IGdyYW5kUGFyZW50LmNvbnRlbnRNYXRjaEF0KDApLmRlZmF1bHRUeXBlIDogbnVsbDtcbiAgY29uc3QgbmV3VHlwZUF0dHJpYnV0ZXMgPSB7XG4gICAgLi4uZ2V0U3BsaXR0ZWRBdHRyaWJ1dGVzKGV4dGVuc2lvbkF0dHJpYnV0ZXMsIGdyYW5kUGFyZW50LnR5cGUubmFtZSwgZ3JhbmRQYXJlbnQuYXR0cnMpLFxuICAgIC4uLm92ZXJyaWRlQXR0cnNcbiAgfTtcbiAgY29uc3QgbmV3TmV4dFR5cGVBdHRyaWJ1dGVzID0ge1xuICAgIC4uLmdldFNwbGl0dGVkQXR0cmlidXRlcyhleHRlbnNpb25BdHRyaWJ1dGVzLCAkZnJvbS5ub2RlKCkudHlwZS5uYW1lLCAkZnJvbS5ub2RlKCkuYXR0cnMpLFxuICAgIC4uLm92ZXJyaWRlQXR0cnNcbiAgfTtcbiAgdHIuZGVsZXRlKCRmcm9tLnBvcywgJHRvLnBvcyk7XG4gIGNvbnN0IHR5cGVzID0gbmV4dFR5cGUgPyBbXG4gICAgeyB0eXBlLCBhdHRyczogbmV3VHlwZUF0dHJpYnV0ZXMgfSxcbiAgICB7IHR5cGU6IG5leHRUeXBlLCBhdHRyczogbmV3TmV4dFR5cGVBdHRyaWJ1dGVzIH1cbiAgXSA6IFt7IHR5cGUsIGF0dHJzOiBuZXdUeXBlQXR0cmlidXRlcyB9XTtcbiAgaWYgKCFjYW5TcGxpdDIodHIuZG9jLCAkZnJvbS5wb3MsIDIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChkaXNwYXRjaCkge1xuICAgIGNvbnN0IHsgc2VsZWN0aW9uLCBzdG9yZWRNYXJrcyB9ID0gc3RhdGU7XG4gICAgY29uc3QgeyBzcGxpdHRhYmxlTWFya3MgfSA9IGVkaXRvci5leHRlbnNpb25NYW5hZ2VyO1xuICAgIGNvbnN0IG1hcmtzID0gc3RvcmVkTWFya3MgfHwgc2VsZWN0aW9uLiR0by5wYXJlbnRPZmZzZXQgJiYgc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCk7XG4gICAgdHIuc3BsaXQoJGZyb20ucG9zLCAyLCB0eXBlcykuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICBpZiAoIW1hcmtzIHx8ICFkaXNwYXRjaCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlcmVkTWFya3MgPSBtYXJrcy5maWx0ZXIoKG1hcmspID0+IHNwbGl0dGFibGVNYXJrcy5pbmNsdWRlcyhtYXJrLnR5cGUubmFtZSkpO1xuICAgIHRyLmVuc3VyZU1hcmtzKGZpbHRlcmVkTWFya3MpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL3RvZ2dsZUxpc3QudHNcbmltcG9ydCB7IGNhbkpvaW4gfSBmcm9tIFwiQHRpcHRhcC9wbS90cmFuc2Zvcm1cIjtcbnZhciBqb2luTGlzdEJhY2t3YXJkcyA9ICh0ciwgbGlzdFR5cGUpID0+IHtcbiAgY29uc3QgbGlzdCA9IGZpbmRQYXJlbnROb2RlKChub2RlKSA9PiBub2RlLnR5cGUgPT09IGxpc3RUeXBlKSh0ci5zZWxlY3Rpb24pO1xuICBpZiAoIWxpc3QpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBiZWZvcmUgPSB0ci5kb2MucmVzb2x2ZShNYXRoLm1heCgwLCBsaXN0LnBvcyAtIDEpKS5iZWZvcmUobGlzdC5kZXB0aCk7XG4gIGlmIChiZWZvcmUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IG5vZGVCZWZvcmUgPSB0ci5kb2Mubm9kZUF0KGJlZm9yZSk7XG4gIGNvbnN0IGNhbkpvaW5CYWNrd2FyZHMgPSBsaXN0Lm5vZGUudHlwZSA9PT0gKG5vZGVCZWZvcmUgPT0gbnVsbCA/IHZvaWQgMCA6IG5vZGVCZWZvcmUudHlwZSkgJiYgY2FuSm9pbih0ci5kb2MsIGxpc3QucG9zKTtcbiAgaWYgKCFjYW5Kb2luQmFja3dhcmRzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdHIuam9pbihsaXN0LnBvcyk7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBqb2luTGlzdEZvcndhcmRzID0gKHRyLCBsaXN0VHlwZSkgPT4ge1xuICBjb25zdCBsaXN0ID0gZmluZFBhcmVudE5vZGUoKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gbGlzdFR5cGUpKHRyLnNlbGVjdGlvbik7XG4gIGlmICghbGlzdCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IGFmdGVyID0gdHIuZG9jLnJlc29sdmUobGlzdC5zdGFydCkuYWZ0ZXIobGlzdC5kZXB0aCk7XG4gIGlmIChhZnRlciA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3Qgbm9kZUFmdGVyID0gdHIuZG9jLm5vZGVBdChhZnRlcik7XG4gIGNvbnN0IGNhbkpvaW5Gb3J3YXJkcyA9IGxpc3Qubm9kZS50eXBlID09PSAobm9kZUFmdGVyID09IG51bGwgPyB2b2lkIDAgOiBub2RlQWZ0ZXIudHlwZSkgJiYgY2FuSm9pbih0ci5kb2MsIGFmdGVyKTtcbiAgaWYgKCFjYW5Kb2luRm9yd2FyZHMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB0ci5qb2luKGFmdGVyKTtcbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIHRvZ2dsZUxpc3QgPSAobGlzdFR5cGVPck5hbWUsIGl0ZW1UeXBlT3JOYW1lLCBrZWVwTWFya3MsIGF0dHJpYnV0ZXMgPSB7fSkgPT4gKHsgZWRpdG9yLCB0ciwgc3RhdGUsIGRpc3BhdGNoLCBjaGFpbiwgY29tbWFuZHMsIGNhbiB9KSA9PiB7XG4gIGNvbnN0IHsgZXh0ZW5zaW9ucywgc3BsaXR0YWJsZU1hcmtzIH0gPSBlZGl0b3IuZXh0ZW5zaW9uTWFuYWdlcjtcbiAgY29uc3QgbGlzdFR5cGUgPSBnZXROb2RlVHlwZShsaXN0VHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgY29uc3QgaXRlbVR5cGUgPSBnZXROb2RlVHlwZShpdGVtVHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgY29uc3QgeyBzZWxlY3Rpb24sIHN0b3JlZE1hcmtzIH0gPSBzdGF0ZTtcbiAgY29uc3QgeyAkZnJvbSwgJHRvIH0gPSBzZWxlY3Rpb247XG4gIGNvbnN0IHJhbmdlID0gJGZyb20uYmxvY2tSYW5nZSgkdG8pO1xuICBjb25zdCBtYXJrcyA9IHN0b3JlZE1hcmtzIHx8IHNlbGVjdGlvbi4kdG8ucGFyZW50T2Zmc2V0ICYmIHNlbGVjdGlvbi4kZnJvbS5tYXJrcygpO1xuICBpZiAoIXJhbmdlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHBhcmVudExpc3QgPSBmaW5kUGFyZW50Tm9kZSgobm9kZSkgPT4gaXNMaXN0KG5vZGUudHlwZS5uYW1lLCBleHRlbnNpb25zKSkoc2VsZWN0aW9uKTtcbiAgaWYgKHJhbmdlLmRlcHRoID49IDEgJiYgcGFyZW50TGlzdCAmJiByYW5nZS5kZXB0aCAtIHBhcmVudExpc3QuZGVwdGggPD0gMSkge1xuICAgIGlmIChwYXJlbnRMaXN0Lm5vZGUudHlwZSA9PT0gbGlzdFR5cGUpIHtcbiAgICAgIHJldHVybiBjb21tYW5kcy5saWZ0TGlzdEl0ZW0oaXRlbVR5cGUpO1xuICAgIH1cbiAgICBpZiAoaXNMaXN0KHBhcmVudExpc3Qubm9kZS50eXBlLm5hbWUsIGV4dGVuc2lvbnMpICYmIGxpc3RUeXBlLnZhbGlkQ29udGVudChwYXJlbnRMaXN0Lm5vZGUuY29udGVudCkgJiYgZGlzcGF0Y2gpIHtcbiAgICAgIHJldHVybiBjaGFpbigpLmNvbW1hbmQoKCkgPT4ge1xuICAgICAgICB0ci5zZXROb2RlTWFya3VwKHBhcmVudExpc3QucG9zLCBsaXN0VHlwZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSkuY29tbWFuZCgoKSA9PiBqb2luTGlzdEJhY2t3YXJkcyh0ciwgbGlzdFR5cGUpKS5jb21tYW5kKCgpID0+IGpvaW5MaXN0Rm9yd2FyZHModHIsIGxpc3RUeXBlKSkucnVuKCk7XG4gICAgfVxuICB9XG4gIGlmICgha2VlcE1hcmtzIHx8ICFtYXJrcyB8fCAhZGlzcGF0Y2gpIHtcbiAgICByZXR1cm4gY2hhaW4oKS5jb21tYW5kKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbldyYXBJbkxpc3QgPSBjYW4oKS53cmFwSW5MaXN0KGxpc3RUeXBlLCBhdHRyaWJ1dGVzKTtcbiAgICAgIGlmIChjYW5XcmFwSW5MaXN0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbW1hbmRzLmNsZWFyTm9kZXMoKTtcbiAgICB9KS53cmFwSW5MaXN0KGxpc3RUeXBlLCBhdHRyaWJ1dGVzKS5jb21tYW5kKCgpID0+IGpvaW5MaXN0QmFja3dhcmRzKHRyLCBsaXN0VHlwZSkpLmNvbW1hbmQoKCkgPT4gam9pbkxpc3RGb3J3YXJkcyh0ciwgbGlzdFR5cGUpKS5ydW4oKTtcbiAgfVxuICByZXR1cm4gY2hhaW4oKS5jb21tYW5kKCgpID0+IHtcbiAgICBjb25zdCBjYW5XcmFwSW5MaXN0ID0gY2FuKCkud3JhcEluTGlzdChsaXN0VHlwZSwgYXR0cmlidXRlcyk7XG4gICAgY29uc3QgZmlsdGVyZWRNYXJrcyA9IG1hcmtzLmZpbHRlcigobWFyaykgPT4gc3BsaXR0YWJsZU1hcmtzLmluY2x1ZGVzKG1hcmsudHlwZS5uYW1lKSk7XG4gICAgdHIuZW5zdXJlTWFya3MoZmlsdGVyZWRNYXJrcyk7XG4gICAgaWYgKGNhbldyYXBJbkxpc3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZHMuY2xlYXJOb2RlcygpO1xuICB9KS53cmFwSW5MaXN0KGxpc3RUeXBlLCBhdHRyaWJ1dGVzKS5jb21tYW5kKCgpID0+IGpvaW5MaXN0QmFja3dhcmRzKHRyLCBsaXN0VHlwZSkpLmNvbW1hbmQoKCkgPT4gam9pbkxpc3RGb3J3YXJkcyh0ciwgbGlzdFR5cGUpKS5ydW4oKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy90b2dnbGVNYXJrLnRzXG52YXIgdG9nZ2xlTWFyayA9ICh0eXBlT3JOYW1lLCBhdHRyaWJ1dGVzID0ge30sIG9wdGlvbnMgPSB7fSkgPT4gKHsgc3RhdGUsIGNvbW1hbmRzIH0pID0+IHtcbiAgY29uc3QgeyBleHRlbmRFbXB0eU1hcmtSYW5nZSA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICBjb25zdCB0eXBlID0gZ2V0TWFya1R5cGUodHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgY29uc3QgaXNBY3RpdmUyID0gaXNNYXJrQWN0aXZlKHN0YXRlLCB0eXBlLCBhdHRyaWJ1dGVzKTtcbiAgaWYgKGlzQWN0aXZlMikge1xuICAgIHJldHVybiBjb21tYW5kcy51bnNldE1hcmsodHlwZSwgeyBleHRlbmRFbXB0eU1hcmtSYW5nZSB9KTtcbiAgfVxuICByZXR1cm4gY29tbWFuZHMuc2V0TWFyayh0eXBlLCBhdHRyaWJ1dGVzKTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy90b2dnbGVOb2RlLnRzXG52YXIgdG9nZ2xlTm9kZSA9ICh0eXBlT3JOYW1lLCB0b2dnbGVUeXBlT3JOYW1lLCBhdHRyaWJ1dGVzID0ge30pID0+ICh7IHN0YXRlLCBjb21tYW5kcyB9KSA9PiB7XG4gIGNvbnN0IHR5cGUgPSBnZXROb2RlVHlwZSh0eXBlT3JOYW1lLCBzdGF0ZS5zY2hlbWEpO1xuICBjb25zdCB0b2dnbGVUeXBlID0gZ2V0Tm9kZVR5cGUodG9nZ2xlVHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgY29uc3QgaXNBY3RpdmUyID0gaXNOb2RlQWN0aXZlKHN0YXRlLCB0eXBlLCBhdHRyaWJ1dGVzKTtcbiAgbGV0IGF0dHJpYnV0ZXNUb0NvcHk7XG4gIGlmIChzdGF0ZS5zZWxlY3Rpb24uJGFuY2hvci5zYW1lUGFyZW50KHN0YXRlLnNlbGVjdGlvbi4kaGVhZCkpIHtcbiAgICBhdHRyaWJ1dGVzVG9Db3B5ID0gc3RhdGUuc2VsZWN0aW9uLiRhbmNob3IucGFyZW50LmF0dHJzO1xuICB9XG4gIGlmIChpc0FjdGl2ZTIpIHtcbiAgICByZXR1cm4gY29tbWFuZHMuc2V0Tm9kZSh0b2dnbGVUeXBlLCBhdHRyaWJ1dGVzVG9Db3B5KTtcbiAgfVxuICByZXR1cm4gY29tbWFuZHMuc2V0Tm9kZSh0eXBlLCB7IC4uLmF0dHJpYnV0ZXNUb0NvcHksIC4uLmF0dHJpYnV0ZXMgfSk7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvdG9nZ2xlV3JhcC50c1xudmFyIHRvZ2dsZVdyYXAgPSAodHlwZU9yTmFtZSwgYXR0cmlidXRlcyA9IHt9KSA9PiAoeyBzdGF0ZSwgY29tbWFuZHMgfSkgPT4ge1xuICBjb25zdCB0eXBlID0gZ2V0Tm9kZVR5cGUodHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgY29uc3QgaXNBY3RpdmUyID0gaXNOb2RlQWN0aXZlKHN0YXRlLCB0eXBlLCBhdHRyaWJ1dGVzKTtcbiAgaWYgKGlzQWN0aXZlMikge1xuICAgIHJldHVybiBjb21tYW5kcy5saWZ0KHR5cGUpO1xuICB9XG4gIHJldHVybiBjb21tYW5kcy53cmFwSW4odHlwZSwgYXR0cmlidXRlcyk7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvdW5kb0lucHV0UnVsZS50c1xudmFyIHVuZG9JbnB1dFJ1bGUgPSAoKSA9PiAoeyBzdGF0ZSwgZGlzcGF0Y2ggfSkgPT4ge1xuICBjb25zdCBwbHVnaW5zID0gc3RhdGUucGx1Z2lucztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgcGx1Z2luID0gcGx1Z2luc1tpXTtcbiAgICBsZXQgdW5kb2FibGU7XG4gICAgaWYgKHBsdWdpbi5zcGVjLmlzSW5wdXRSdWxlcyAmJiAodW5kb2FibGUgPSBwbHVnaW4uZ2V0U3RhdGUoc3RhdGUpKSkge1xuICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgIGNvbnN0IHRyID0gc3RhdGUudHI7XG4gICAgICAgIGNvbnN0IHRvVW5kbyA9IHVuZG9hYmxlLnRyYW5zZm9ybTtcbiAgICAgICAgZm9yIChsZXQgaiA9IHRvVW5kby5zdGVwcy5sZW5ndGggLSAxOyBqID49IDA7IGogLT0gMSkge1xuICAgICAgICAgIHRyLnN0ZXAodG9VbmRvLnN0ZXBzW2pdLmludmVydCh0b1VuZG8uZG9jc1tqXSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bmRvYWJsZS50ZXh0KSB7XG4gICAgICAgICAgY29uc3QgbWFya3MgPSB0ci5kb2MucmVzb2x2ZSh1bmRvYWJsZS5mcm9tKS5tYXJrcygpO1xuICAgICAgICAgIHRyLnJlcGxhY2VXaXRoKHVuZG9hYmxlLmZyb20sIHVuZG9hYmxlLnRvLCBzdGF0ZS5zY2hlbWEudGV4dCh1bmRvYWJsZS50ZXh0LCBtYXJrcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyLmRlbGV0ZSh1bmRvYWJsZS5mcm9tLCB1bmRvYWJsZS50byk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvdW5zZXRBbGxNYXJrcy50c1xudmFyIHVuc2V0QWxsTWFya3MgPSAoKSA9PiAoeyB0ciwgZGlzcGF0Y2ggfSkgPT4ge1xuICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gdHI7XG4gIGNvbnN0IHsgZW1wdHksIHJhbmdlcyB9ID0gc2VsZWN0aW9uO1xuICBpZiAoZW1wdHkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICByYW5nZXMuZm9yRWFjaCgocmFuZ2UpID0+IHtcbiAgICAgIHRyLnJlbW92ZU1hcmsocmFuZ2UuJGZyb20ucG9zLCByYW5nZS4kdG8ucG9zKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy91bnNldE1hcmsudHNcbnZhciB1bnNldE1hcmsgPSAodHlwZU9yTmFtZSwgb3B0aW9ucyA9IHt9KSA9PiAoeyB0ciwgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgdmFyIF9hO1xuICBjb25zdCB7IGV4dGVuZEVtcHR5TWFya1JhbmdlID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSB0cjtcbiAgY29uc3QgdHlwZSA9IGdldE1hcmtUeXBlKHR5cGVPck5hbWUsIHN0YXRlLnNjaGVtYSk7XG4gIGNvbnN0IHsgJGZyb20sIGVtcHR5LCByYW5nZXMgfSA9IHNlbGVjdGlvbjtcbiAgaWYgKCFkaXNwYXRjaCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChlbXB0eSAmJiBleHRlbmRFbXB0eU1hcmtSYW5nZSkge1xuICAgIGxldCB7IGZyb20sIHRvIH0gPSBzZWxlY3Rpb247XG4gICAgY29uc3QgYXR0cnMgPSAoX2EgPSAkZnJvbS5tYXJrcygpLmZpbmQoKG1hcmspID0+IG1hcmsudHlwZSA9PT0gdHlwZSkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5hdHRycztcbiAgICBjb25zdCByYW5nZSA9IGdldE1hcmtSYW5nZSgkZnJvbSwgdHlwZSwgYXR0cnMpO1xuICAgIGlmIChyYW5nZSkge1xuICAgICAgZnJvbSA9IHJhbmdlLmZyb207XG4gICAgICB0byA9IHJhbmdlLnRvO1xuICAgIH1cbiAgICB0ci5yZW1vdmVNYXJrKGZyb20sIHRvLCB0eXBlKTtcbiAgfSBlbHNlIHtcbiAgICByYW5nZXMuZm9yRWFjaCgocmFuZ2UpID0+IHtcbiAgICAgIHRyLnJlbW92ZU1hcmsocmFuZ2UuJGZyb20ucG9zLCByYW5nZS4kdG8ucG9zLCB0eXBlKTtcbiAgICB9KTtcbiAgfVxuICB0ci5yZW1vdmVTdG9yZWRNYXJrKHR5cGUpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIHNyYy9jb21tYW5kcy91bnNldFRleHREaXJlY3Rpb24udHNcbnZhciB1bnNldFRleHREaXJlY3Rpb24gPSAocG9zaXRpb24pID0+ICh7IHRyLCBzdGF0ZSwgZGlzcGF0Y2ggfSkgPT4ge1xuICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gc3RhdGU7XG4gIGxldCBmcm9tO1xuICBsZXQgdG87XG4gIGlmICh0eXBlb2YgcG9zaXRpb24gPT09IFwibnVtYmVyXCIpIHtcbiAgICBmcm9tID0gcG9zaXRpb247XG4gICAgdG8gPSBwb3NpdGlvbjtcbiAgfSBlbHNlIGlmIChwb3NpdGlvbiAmJiBcImZyb21cIiBpbiBwb3NpdGlvbiAmJiBcInRvXCIgaW4gcG9zaXRpb24pIHtcbiAgICBmcm9tID0gcG9zaXRpb24uZnJvbTtcbiAgICB0byA9IHBvc2l0aW9uLnRvO1xuICB9IGVsc2Uge1xuICAgIGZyb20gPSBzZWxlY3Rpb24uZnJvbTtcbiAgICB0byA9IHNlbGVjdGlvbi50bztcbiAgfVxuICBpZiAoZGlzcGF0Y2gpIHtcbiAgICB0ci5kb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICBpZiAobm9kZS5pc1RleHQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3QXR0cnMgPSB7IC4uLm5vZGUuYXR0cnMgfTtcbiAgICAgIGRlbGV0ZSBuZXdBdHRycy5kaXI7XG4gICAgICB0ci5zZXROb2RlTWFya3VwKHBvcywgdm9pZCAwLCBuZXdBdHRycyk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvdXBkYXRlQXR0cmlidXRlcy50c1xudmFyIHVwZGF0ZUF0dHJpYnV0ZXMgPSAodHlwZU9yTmFtZSwgYXR0cmlidXRlcyA9IHt9KSA9PiAoeyB0ciwgc3RhdGUsIGRpc3BhdGNoIH0pID0+IHtcbiAgbGV0IG5vZGVUeXBlID0gbnVsbDtcbiAgbGV0IG1hcmtUeXBlID0gbnVsbDtcbiAgY29uc3Qgc2NoZW1hVHlwZSA9IGdldFNjaGVtYVR5cGVOYW1lQnlOYW1lKFxuICAgIHR5cGVvZiB0eXBlT3JOYW1lID09PSBcInN0cmluZ1wiID8gdHlwZU9yTmFtZSA6IHR5cGVPck5hbWUubmFtZSxcbiAgICBzdGF0ZS5zY2hlbWFcbiAgKTtcbiAgaWYgKCFzY2hlbWFUeXBlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChzY2hlbWFUeXBlID09PSBcIm5vZGVcIikge1xuICAgIG5vZGVUeXBlID0gZ2V0Tm9kZVR5cGUodHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgfVxuICBpZiAoc2NoZW1hVHlwZSA9PT0gXCJtYXJrXCIpIHtcbiAgICBtYXJrVHlwZSA9IGdldE1hcmtUeXBlKHR5cGVPck5hbWUsIHN0YXRlLnNjaGVtYSk7XG4gIH1cbiAgbGV0IGNhblVwZGF0ZSA9IGZhbHNlO1xuICB0ci5zZWxlY3Rpb24ucmFuZ2VzLmZvckVhY2goKHJhbmdlKSA9PiB7XG4gICAgY29uc3QgZnJvbSA9IHJhbmdlLiRmcm9tLnBvcztcbiAgICBjb25zdCB0byA9IHJhbmdlLiR0by5wb3M7XG4gICAgbGV0IGxhc3RQb3M7XG4gICAgbGV0IGxhc3ROb2RlO1xuICAgIGxldCB0cmltbWVkRnJvbTtcbiAgICBsZXQgdHJpbW1lZFRvO1xuICAgIGlmICh0ci5zZWxlY3Rpb24uZW1wdHkpIHtcbiAgICAgIHN0YXRlLmRvYy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgaWYgKG5vZGVUeXBlICYmIG5vZGVUeXBlID09PSBub2RlLnR5cGUpIHtcbiAgICAgICAgICBjYW5VcGRhdGUgPSB0cnVlO1xuICAgICAgICAgIHRyaW1tZWRGcm9tID0gTWF0aC5tYXgocG9zLCBmcm9tKTtcbiAgICAgICAgICB0cmltbWVkVG8gPSBNYXRoLm1pbihwb3MgKyBub2RlLm5vZGVTaXplLCB0byk7XG4gICAgICAgICAgbGFzdFBvcyA9IHBvcztcbiAgICAgICAgICBsYXN0Tm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5kb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgIGlmIChwb3MgPCBmcm9tICYmIG5vZGVUeXBlICYmIG5vZGVUeXBlID09PSBub2RlLnR5cGUpIHtcbiAgICAgICAgICBjYW5VcGRhdGUgPSB0cnVlO1xuICAgICAgICAgIHRyaW1tZWRGcm9tID0gTWF0aC5tYXgocG9zLCBmcm9tKTtcbiAgICAgICAgICB0cmltbWVkVG8gPSBNYXRoLm1pbihwb3MgKyBub2RlLm5vZGVTaXplLCB0byk7XG4gICAgICAgICAgbGFzdFBvcyA9IHBvcztcbiAgICAgICAgICBsYXN0Tm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyA+PSBmcm9tICYmIHBvcyA8PSB0bykge1xuICAgICAgICAgIGlmIChub2RlVHlwZSAmJiBub2RlVHlwZSA9PT0gbm9kZS50eXBlKSB7XG4gICAgICAgICAgICBjYW5VcGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgICAgICAgIHRyLnNldE5vZGVNYXJrdXAocG9zLCB2b2lkIDAsIHtcbiAgICAgICAgICAgICAgICAuLi5ub2RlLmF0dHJzLFxuICAgICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtYXJrVHlwZSAmJiBub2RlLm1hcmtzLmxlbmd0aCkge1xuICAgICAgICAgICAgbm9kZS5tYXJrcy5mb3JFYWNoKChtYXJrKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChtYXJrVHlwZSA9PT0gbWFyay50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FuVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoZGlzcGF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRyaW1tZWRGcm9tMiA9IE1hdGgubWF4KHBvcywgZnJvbSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0cmltbWVkVG8yID0gTWF0aC5taW4ocG9zICsgbm9kZS5ub2RlU2l6ZSwgdG8pO1xuICAgICAgICAgICAgICAgICAgdHIuYWRkTWFyayhcbiAgICAgICAgICAgICAgICAgICAgdHJpbW1lZEZyb20yLFxuICAgICAgICAgICAgICAgICAgICB0cmltbWVkVG8yLFxuICAgICAgICAgICAgICAgICAgICBtYXJrVHlwZS5jcmVhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgIC4uLm1hcmsuYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChsYXN0Tm9kZSkge1xuICAgICAgaWYgKGxhc3RQb3MgIT09IHZvaWQgMCAmJiBkaXNwYXRjaCkge1xuICAgICAgICB0ci5zZXROb2RlTWFya3VwKGxhc3RQb3MsIHZvaWQgMCwge1xuICAgICAgICAgIC4uLmxhc3ROb2RlLmF0dHJzLFxuICAgICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAobWFya1R5cGUgJiYgbGFzdE5vZGUubWFya3MubGVuZ3RoKSB7XG4gICAgICAgIGxhc3ROb2RlLm1hcmtzLmZvckVhY2goKG1hcmspID0+IHtcbiAgICAgICAgICBpZiAobWFya1R5cGUgPT09IG1hcmsudHlwZSAmJiBkaXNwYXRjaCkge1xuICAgICAgICAgICAgdHIuYWRkTWFyayhcbiAgICAgICAgICAgICAgdHJpbW1lZEZyb20sXG4gICAgICAgICAgICAgIHRyaW1tZWRUbyxcbiAgICAgICAgICAgICAgbWFya1R5cGUuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAuLi5tYXJrLmF0dHJzLFxuICAgICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2FuVXBkYXRlO1xufTtcblxuLy8gc3JjL2NvbW1hbmRzL3dyYXBJbi50c1xuaW1wb3J0IHsgd3JhcEluIGFzIG9yaWdpbmFsV3JhcEluIH0gZnJvbSBcIkB0aXB0YXAvcG0vY29tbWFuZHNcIjtcbnZhciB3cmFwSW4gPSAodHlwZU9yTmFtZSwgYXR0cmlidXRlcyA9IHt9KSA9PiAoeyBzdGF0ZSwgZGlzcGF0Y2ggfSkgPT4ge1xuICBjb25zdCB0eXBlID0gZ2V0Tm9kZVR5cGUodHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgcmV0dXJuIG9yaWdpbmFsV3JhcEluKHR5cGUsIGF0dHJpYnV0ZXMpKHN0YXRlLCBkaXNwYXRjaCk7XG59O1xuXG4vLyBzcmMvY29tbWFuZHMvd3JhcEluTGlzdC50c1xuaW1wb3J0IHsgd3JhcEluTGlzdCBhcyBvcmlnaW5hbFdyYXBJbkxpc3QgfSBmcm9tIFwiQHRpcHRhcC9wbS9zY2hlbWEtbGlzdFwiO1xudmFyIHdyYXBJbkxpc3QgPSAodHlwZU9yTmFtZSwgYXR0cmlidXRlcyA9IHt9KSA9PiAoeyBzdGF0ZSwgZGlzcGF0Y2ggfSkgPT4ge1xuICBjb25zdCB0eXBlID0gZ2V0Tm9kZVR5cGUodHlwZU9yTmFtZSwgc3RhdGUuc2NoZW1hKTtcbiAgcmV0dXJuIG9yaWdpbmFsV3JhcEluTGlzdCh0eXBlLCBhdHRyaWJ1dGVzKShzdGF0ZSwgZGlzcGF0Y2gpO1xufTtcblxuLy8gc3JjL0VkaXRvci50c1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUgfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldyB9IGZyb20gXCJAdGlwdGFwL3BtL3ZpZXdcIjtcblxuLy8gc3JjL0V2ZW50RW1pdHRlci50c1xudmFyIEV2ZW50RW1pdHRlciA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jYWxsYmFja3MgPSB7fTtcbiAgfVxuICBvbihldmVudCwgZm4pIHtcbiAgICBpZiAoIXRoaXMuY2FsbGJhY2tzW2V2ZW50XSkge1xuICAgICAgdGhpcy5jYWxsYmFja3NbZXZlbnRdID0gW107XG4gICAgfVxuICAgIHRoaXMuY2FsbGJhY2tzW2V2ZW50XS5wdXNoKGZuKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBlbWl0KGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gdGhpcy5jYWxsYmFja3NbZXZlbnRdO1xuICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgIGNhbGxiYWNrcy5mb3JFYWNoKChjYWxsYmFjaykgPT4gY2FsbGJhY2suYXBwbHkodGhpcywgYXJncykpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBvZmYoZXZlbnQsIGZuKSB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gdGhpcy5jYWxsYmFja3NbZXZlbnRdO1xuICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aGlzLmNhbGxiYWNrc1tldmVudF0gPSBjYWxsYmFja3MuZmlsdGVyKChjYWxsYmFjaykgPT4gY2FsbGJhY2sgIT09IGZuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmNhbGxiYWNrc1tldmVudF07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIG9uY2UoZXZlbnQsIGZuKSB7XG4gICAgY29uc3Qgb25jZUZuID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgIHRoaXMub2ZmKGV2ZW50LCBvbmNlRm4pO1xuICAgICAgZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5vbihldmVudCwgb25jZUZuKTtcbiAgfVxuICByZW1vdmVBbGxMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy5jYWxsYmFja3MgPSB7fTtcbiAgfVxufTtcblxuLy8gc3JjL0V4dGVuc2lvbk1hbmFnZXIudHNcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAdGlwdGFwL3BtL2tleW1hcFwiO1xuXG4vLyBzcmMvSW5wdXRSdWxlLnRzXG5pbXBvcnQgeyBGcmFnbWVudCBhcyBGcmFnbWVudDQgfSBmcm9tIFwiQHRpcHRhcC9wbS9tb2RlbFwiO1xuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbnZhciBJbnB1dFJ1bGUgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfYTtcbiAgICB0aGlzLmZpbmQgPSBjb25maWcuZmluZDtcbiAgICB0aGlzLmhhbmRsZXIgPSBjb25maWcuaGFuZGxlcjtcbiAgICB0aGlzLnVuZG9hYmxlID0gKF9hID0gY29uZmlnLnVuZG9hYmxlKSAhPSBudWxsID8gX2EgOiB0cnVlO1xuICB9XG59O1xudmFyIGlucHV0UnVsZU1hdGNoZXJIYW5kbGVyID0gKHRleHQsIGZpbmQpID0+IHtcbiAgaWYgKGlzUmVnRXhwKGZpbmQpKSB7XG4gICAgcmV0dXJuIGZpbmQuZXhlYyh0ZXh0KTtcbiAgfVxuICBjb25zdCBpbnB1dFJ1bGVNYXRjaCA9IGZpbmQodGV4dCk7XG4gIGlmICghaW5wdXRSdWxlTWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBbaW5wdXRSdWxlTWF0Y2gudGV4dF07XG4gIHJlc3VsdC5pbmRleCA9IGlucHV0UnVsZU1hdGNoLmluZGV4O1xuICByZXN1bHQuaW5wdXQgPSB0ZXh0O1xuICByZXN1bHQuZGF0YSA9IGlucHV0UnVsZU1hdGNoLmRhdGE7XG4gIGlmIChpbnB1dFJ1bGVNYXRjaC5yZXBsYWNlV2l0aCkge1xuICAgIGlmICghaW5wdXRSdWxlTWF0Y2gudGV4dC5pbmNsdWRlcyhpbnB1dFJ1bGVNYXRjaC5yZXBsYWNlV2l0aCkpIHtcbiAgICAgIGNvbnNvbGUud2FybignW3RpcHRhcCB3YXJuXTogXCJpbnB1dFJ1bGVNYXRjaC5yZXBsYWNlV2l0aFwiIG11c3QgYmUgcGFydCBvZiBcImlucHV0UnVsZU1hdGNoLnRleHRcIi4nKTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2goaW5wdXRSdWxlTWF0Y2gucmVwbGFjZVdpdGgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZnVuY3Rpb24gcnVuKGNvbmZpZykge1xuICB2YXIgX2E7XG4gIGNvbnN0IHsgZWRpdG9yLCBmcm9tLCB0bywgdGV4dCwgcnVsZXMsIHBsdWdpbiB9ID0gY29uZmlnO1xuICBjb25zdCB7IHZpZXcgfSA9IGVkaXRvcjtcbiAgaWYgKHZpZXcuY29tcG9zaW5nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0ICRmcm9tID0gdmlldy5zdGF0ZS5kb2MucmVzb2x2ZShmcm9tKTtcbiAgaWYgKFxuICAgIC8vIGNoZWNrIGZvciBjb2RlIG5vZGVcbiAgICAkZnJvbS5wYXJlbnQudHlwZS5zcGVjLmNvZGUgfHwgLy8gY2hlY2sgZm9yIGNvZGUgbWFya1xuICAgICEhKChfYSA9ICRmcm9tLm5vZGVCZWZvcmUgfHwgJGZyb20ubm9kZUFmdGVyKSA9PSBudWxsID8gdm9pZCAwIDogX2EubWFya3MuZmluZCgobWFyaykgPT4gbWFyay50eXBlLnNwZWMuY29kZSkpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBsZXQgbWF0Y2hlZCA9IGZhbHNlO1xuICBjb25zdCB0ZXh0QmVmb3JlID0gZ2V0VGV4dENvbnRlbnRGcm9tTm9kZXMoJGZyb20pICsgdGV4dDtcbiAgcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoID0gaW5wdXRSdWxlTWF0Y2hlckhhbmRsZXIodGV4dEJlZm9yZSwgcnVsZS5maW5kKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRyID0gdmlldy5zdGF0ZS50cjtcbiAgICBjb25zdCBzdGF0ZSA9IGNyZWF0ZUNoYWluYWJsZVN0YXRlKHtcbiAgICAgIHN0YXRlOiB2aWV3LnN0YXRlLFxuICAgICAgdHJhbnNhY3Rpb246IHRyXG4gICAgfSk7XG4gICAgY29uc3QgcmFuZ2UgPSB7XG4gICAgICBmcm9tOiBmcm9tIC0gKG1hdGNoWzBdLmxlbmd0aCAtIHRleHQubGVuZ3RoKSxcbiAgICAgIHRvXG4gICAgfTtcbiAgICBjb25zdCB7IGNvbW1hbmRzLCBjaGFpbiwgY2FuIH0gPSBuZXcgQ29tbWFuZE1hbmFnZXIoe1xuICAgICAgZWRpdG9yLFxuICAgICAgc3RhdGVcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVyID0gcnVsZS5oYW5kbGVyKHtcbiAgICAgIHN0YXRlLFxuICAgICAgcmFuZ2UsXG4gICAgICBtYXRjaCxcbiAgICAgIGNvbW1hbmRzLFxuICAgICAgY2hhaW4sXG4gICAgICBjYW5cbiAgICB9KTtcbiAgICBpZiAoaGFuZGxlciA9PT0gbnVsbCB8fCAhdHIuc3RlcHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChydWxlLnVuZG9hYmxlKSB7XG4gICAgICB0ci5zZXRNZXRhKHBsdWdpbiwge1xuICAgICAgICB0cmFuc2Zvcm06IHRyLFxuICAgICAgICBmcm9tLFxuICAgICAgICB0byxcbiAgICAgICAgdGV4dFxuICAgICAgfSk7XG4gICAgfVxuICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuICAgIG1hdGNoZWQgPSB0cnVlO1xuICB9KTtcbiAgcmV0dXJuIG1hdGNoZWQ7XG59XG5mdW5jdGlvbiBpbnB1dFJ1bGVzUGx1Z2luKHByb3BzKSB7XG4gIGNvbnN0IHsgZWRpdG9yLCBydWxlcyB9ID0gcHJvcHM7XG4gIGNvbnN0IHBsdWdpbiA9IG5ldyBQbHVnaW4oe1xuICAgIHN0YXRlOiB7XG4gICAgICBpbml0KCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0sXG4gICAgICBhcHBseSh0ciwgcHJldiwgc3RhdGUpIHtcbiAgICAgICAgY29uc3Qgc3RvcmVkID0gdHIuZ2V0TWV0YShwbHVnaW4pO1xuICAgICAgICBpZiAoc3RvcmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHN0b3JlZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzaW11bGF0ZWRJbnB1dE1ldGEgPSB0ci5nZXRNZXRhKFwiYXBwbHlJbnB1dFJ1bGVzXCIpO1xuICAgICAgICBjb25zdCBpc1NpbXVsYXRlZElucHV0ID0gISFzaW11bGF0ZWRJbnB1dE1ldGE7XG4gICAgICAgIGlmIChpc1NpbXVsYXRlZElucHV0KSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgeyB0ZXh0IH0gPSBzaW11bGF0ZWRJbnB1dE1ldGE7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgdGV4dCA9IHRleHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0ZXh0ID0gZ2V0SFRNTEZyb21GcmFnbWVudChGcmFnbWVudDQuZnJvbSh0ZXh0KSwgc3RhdGUuc2NoZW1hKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgZnJvbSB9ID0gc2ltdWxhdGVkSW5wdXRNZXRhO1xuICAgICAgICAgICAgY29uc3QgdG8gPSBmcm9tICsgdGV4dC5sZW5ndGg7XG4gICAgICAgICAgICBydW4oe1xuICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgIGZyb20sXG4gICAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICBydWxlcyxcbiAgICAgICAgICAgICAgcGx1Z2luXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHIuc2VsZWN0aW9uU2V0IHx8IHRyLmRvY0NoYW5nZWQgPyBudWxsIDogcHJldjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICBoYW5kbGVUZXh0SW5wdXQodmlldywgZnJvbSwgdG8sIHRleHQpIHtcbiAgICAgICAgcmV0dXJuIHJ1bih7XG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIGZyb20sXG4gICAgICAgICAgdG8sXG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICBydWxlcyxcbiAgICAgICAgICBwbHVnaW5cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgaGFuZGxlRE9NRXZlbnRzOiB7XG4gICAgICAgIGNvbXBvc2l0aW9uZW5kOiAodmlldykgPT4ge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyAkY3Vyc29yIH0gPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcbiAgICAgICAgICAgIGlmICgkY3Vyc29yKSB7XG4gICAgICAgICAgICAgIHJ1bih7XG4gICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgIGZyb206ICRjdXJzb3IucG9zLFxuICAgICAgICAgICAgICAgIHRvOiAkY3Vyc29yLnBvcyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgICAgIHJ1bGVzLFxuICAgICAgICAgICAgICAgIHBsdWdpblxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhZGQgc3VwcG9ydCBmb3IgaW5wdXQgcnVsZXMgdG8gdHJpZ2dlciBvbiBlbnRlclxuICAgICAgLy8gdGhpcyBpcyB1c2VmdWwgZm9yIGV4YW1wbGUgZm9yIGNvZGUgYmxvY2tzXG4gICAgICBoYW5kbGVLZXlEb3duKHZpZXcsIGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgIT09IFwiRW50ZXJcIikge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7ICRjdXJzb3IgfSA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICBpZiAoJGN1cnNvcikge1xuICAgICAgICAgIHJldHVybiBydW4oe1xuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgZnJvbTogJGN1cnNvci5wb3MsXG4gICAgICAgICAgICB0bzogJGN1cnNvci5wb3MsXG4gICAgICAgICAgICB0ZXh0OiBcIlxcblwiLFxuICAgICAgICAgICAgcnVsZXMsXG4gICAgICAgICAgICBwbHVnaW5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNJbnB1dFJ1bGVzOiB0cnVlXG4gIH0pO1xuICByZXR1cm4gcGx1Z2luO1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL2lzUGxhaW5PYmplY3QudHNcbmZ1bmN0aW9uIGdldFR5cGUodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpO1xufVxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoZ2V0VHlwZSh2YWx1ZSkgIT09IFwiT2JqZWN0XCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlLmNvbnN0cnVjdG9yID09PSBPYmplY3QgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbn1cblxuLy8gc3JjL3V0aWxpdGllcy9tZXJnZURlZXAudHNcbmZ1bmN0aW9uIG1lcmdlRGVlcCh0YXJnZXQsIHNvdXJjZSkge1xuICBjb25zdCBvdXRwdXQgPSB7IC4uLnRhcmdldCB9O1xuICBpZiAoaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIGlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChzb3VyY2Vba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgb3V0cHV0W2tleV0gPSBtZXJnZURlZXAodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLy8gc3JjL0V4dGVuZGFibGUudHNcbnZhciBFeHRlbmRhYmxlID0gY2xhc3Mge1xuICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgIHRoaXMudHlwZSA9IFwiZXh0ZW5kYWJsZVwiO1xuICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgICB0aGlzLmNoaWxkID0gbnVsbDtcbiAgICB0aGlzLm5hbWUgPSBcIlwiO1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lXG4gICAgfTtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgLi4uY29uZmlnXG4gICAgfTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbmZpZy5uYW1lO1xuICB9XG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5jYWxsT3JSZXR1cm4oXG4gICAgICAgIGdldEV4dGVuc2lvbkZpZWxkKHRoaXMsIFwiYWRkT3B0aW9uc1wiLCB7XG4gICAgICAgICAgbmFtZTogdGhpcy5uYW1lXG4gICAgICAgIH0pXG4gICAgICApIHx8IHt9XG4gICAgfTtcbiAgfVxuICBnZXQgc3RvcmFnZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY2FsbE9yUmV0dXJuKFxuICAgICAgICBnZXRFeHRlbnNpb25GaWVsZCh0aGlzLCBcImFkZFN0b3JhZ2VcIiwge1xuICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnNcbiAgICAgICAgfSlcbiAgICAgICkgfHwge31cbiAgICB9O1xuICB9XG4gIGNvbmZpZ3VyZShvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBleHRlbnNpb24gPSB0aGlzLmV4dGVuZCh7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIGFkZE9wdGlvbnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG1lcmdlRGVlcCh0aGlzLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGV4dGVuc2lvbi5uYW1lID0gdGhpcy5uYW1lO1xuICAgIGV4dGVuc2lvbi5wYXJlbnQgPSB0aGlzLnBhcmVudDtcbiAgICByZXR1cm4gZXh0ZW5zaW9uO1xuICB9XG4gIGV4dGVuZChleHRlbmRlZENvbmZpZyA9IHt9KSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gbmV3IHRoaXMuY29uc3RydWN0b3IoeyAuLi50aGlzLmNvbmZpZywgLi4uZXh0ZW5kZWRDb25maWcgfSk7XG4gICAgZXh0ZW5zaW9uLnBhcmVudCA9IHRoaXM7XG4gICAgdGhpcy5jaGlsZCA9IGV4dGVuc2lvbjtcbiAgICBleHRlbnNpb24ubmFtZSA9IFwibmFtZVwiIGluIGV4dGVuZGVkQ29uZmlnID8gZXh0ZW5kZWRDb25maWcubmFtZSA6IGV4dGVuc2lvbi5wYXJlbnQubmFtZTtcbiAgICByZXR1cm4gZXh0ZW5zaW9uO1xuICB9XG59O1xuXG4vLyBzcmMvTWFyay50c1xudmFyIE1hcmsgPSBjbGFzcyBfTWFyayBleHRlbmRzIEV4dGVuZGFibGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIHRoaXMudHlwZSA9IFwibWFya1wiO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgTWFyayBpbnN0YW5jZVxuICAgKiBAcGFyYW0gY29uZmlnIC0gTWFyayBjb25maWd1cmF0aW9uIG9iamVjdCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKGNvbmZpZyA9IHt9KSB7XG4gICAgY29uc3QgcmVzb2x2ZWRDb25maWcgPSB0eXBlb2YgY29uZmlnID09PSBcImZ1bmN0aW9uXCIgPyBjb25maWcoKSA6IGNvbmZpZztcbiAgICByZXR1cm4gbmV3IF9NYXJrKHJlc29sdmVkQ29uZmlnKTtcbiAgfVxuICBzdGF0aWMgaGFuZGxlRXhpdCh7IGVkaXRvciwgbWFyayB9KSB7XG4gICAgY29uc3QgeyB0ciB9ID0gZWRpdG9yLnN0YXRlO1xuICAgIGNvbnN0IGN1cnJlbnRQb3MgPSBlZGl0b3Iuc3RhdGUuc2VsZWN0aW9uLiRmcm9tO1xuICAgIGNvbnN0IGlzQXRFbmQgPSBjdXJyZW50UG9zLnBvcyA9PT0gY3VycmVudFBvcy5lbmQoKTtcbiAgICBpZiAoaXNBdEVuZCkge1xuICAgICAgY29uc3QgY3VycmVudE1hcmtzID0gY3VycmVudFBvcy5tYXJrcygpO1xuICAgICAgY29uc3QgaXNJbk1hcmsgPSAhIWN1cnJlbnRNYXJrcy5maW5kKChtKSA9PiAobSA9PSBudWxsID8gdm9pZCAwIDogbS50eXBlLm5hbWUpID09PSBtYXJrLm5hbWUpO1xuICAgICAgaWYgKCFpc0luTWFyaykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCByZW1vdmVNYXJrID0gY3VycmVudE1hcmtzLmZpbmQoKG0pID0+IChtID09IG51bGwgPyB2b2lkIDAgOiBtLnR5cGUubmFtZSkgPT09IG1hcmsubmFtZSk7XG4gICAgICBpZiAocmVtb3ZlTWFyaykge1xuICAgICAgICB0ci5yZW1vdmVTdG9yZWRNYXJrKHJlbW92ZU1hcmspO1xuICAgICAgfVxuICAgICAgdHIuaW5zZXJ0VGV4dChcIiBcIiwgY3VycmVudFBvcy5wb3MpO1xuICAgICAgZWRpdG9yLnZpZXcuZGlzcGF0Y2godHIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25maWd1cmUob3B0aW9ucykge1xuICAgIHJldHVybiBzdXBlci5jb25maWd1cmUob3B0aW9ucyk7XG4gIH1cbiAgZXh0ZW5kKGV4dGVuZGVkQ29uZmlnKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRDb25maWcgPSB0eXBlb2YgZXh0ZW5kZWRDb25maWcgPT09IFwiZnVuY3Rpb25cIiA/IGV4dGVuZGVkQ29uZmlnKCkgOiBleHRlbmRlZENvbmZpZztcbiAgICByZXR1cm4gc3VwZXIuZXh0ZW5kKHJlc29sdmVkQ29uZmlnKTtcbiAgfVxufTtcblxuLy8gc3JjL1Bhc3RlUnVsZS50c1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgRnJhZ21lbnQ1IH0gZnJvbSBcIkB0aXB0YXAvcG0vbW9kZWxcIjtcbmltcG9ydCB7IFBsdWdpbiBhcyBQbHVnaW4yIH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcblxuLy8gc3JjL3V0aWxpdGllcy9pc051bWJlci50c1xuZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIjtcbn1cblxuLy8gc3JjL1Bhc3RlUnVsZS50c1xudmFyIFBhc3RlUnVsZSA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdGhpcy5maW5kID0gY29uZmlnLmZpbmQ7XG4gICAgdGhpcy5oYW5kbGVyID0gY29uZmlnLmhhbmRsZXI7XG4gIH1cbn07XG52YXIgcGFzdGVSdWxlTWF0Y2hlckhhbmRsZXIgPSAodGV4dCwgZmluZCwgZXZlbnQpID0+IHtcbiAgaWYgKGlzUmVnRXhwKGZpbmQpKSB7XG4gICAgcmV0dXJuIFsuLi50ZXh0Lm1hdGNoQWxsKGZpbmQpXTtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gZmluZCh0ZXh0LCBldmVudCk7XG4gIGlmICghbWF0Y2hlcykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICByZXR1cm4gbWF0Y2hlcy5tYXAoKHBhc3RlUnVsZU1hdGNoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gW3Bhc3RlUnVsZU1hdGNoLnRleHRdO1xuICAgIHJlc3VsdC5pbmRleCA9IHBhc3RlUnVsZU1hdGNoLmluZGV4O1xuICAgIHJlc3VsdC5pbnB1dCA9IHRleHQ7XG4gICAgcmVzdWx0LmRhdGEgPSBwYXN0ZVJ1bGVNYXRjaC5kYXRhO1xuICAgIGlmIChwYXN0ZVJ1bGVNYXRjaC5yZXBsYWNlV2l0aCkge1xuICAgICAgaWYgKCFwYXN0ZVJ1bGVNYXRjaC50ZXh0LmluY2x1ZGVzKHBhc3RlUnVsZU1hdGNoLnJlcGxhY2VXaXRoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1t0aXB0YXAgd2Fybl06IFwicGFzdGVSdWxlTWF0Y2gucmVwbGFjZVdpdGhcIiBtdXN0IGJlIHBhcnQgb2YgXCJwYXN0ZVJ1bGVNYXRjaC50ZXh0XCIuJyk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaChwYXN0ZVJ1bGVNYXRjaC5yZXBsYWNlV2l0aCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufTtcbmZ1bmN0aW9uIHJ1bjIoY29uZmlnKSB7XG4gIGNvbnN0IHsgZWRpdG9yLCBzdGF0ZSwgZnJvbSwgdG8sIHJ1bGUsIHBhc3RlRXZlbnQsIGRyb3BFdmVudCB9ID0gY29uZmlnO1xuICBjb25zdCB7IGNvbW1hbmRzLCBjaGFpbiwgY2FuIH0gPSBuZXcgQ29tbWFuZE1hbmFnZXIoe1xuICAgIGVkaXRvcixcbiAgICBzdGF0ZVxuICB9KTtcbiAgY29uc3QgaGFuZGxlcnMgPSBbXTtcbiAgc3RhdGUuZG9jLm5vZGVzQmV0d2Vlbihmcm9tLCB0bywgKG5vZGUsIHBvcykgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgaWYgKCgoX2IgPSAoX2EgPSBub2RlLnR5cGUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zcGVjKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY29kZSkgfHwgIShub2RlLmlzVGV4dCB8fCBub2RlLmlzVGV4dGJsb2NrIHx8IG5vZGUuaXNJbmxpbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRlbnRTaXplID0gKF9lID0gKF9kID0gKF9jID0gbm9kZS5jb250ZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2Muc2l6ZSkgIT0gbnVsbCA/IF9kIDogbm9kZS5ub2RlU2l6ZSkgIT0gbnVsbCA/IF9lIDogMDtcbiAgICBjb25zdCByZXNvbHZlZEZyb20gPSBNYXRoLm1heChmcm9tLCBwb3MpO1xuICAgIGNvbnN0IHJlc29sdmVkVG8gPSBNYXRoLm1pbih0bywgcG9zICsgY29udGVudFNpemUpO1xuICAgIGlmIChyZXNvbHZlZEZyb20gPj0gcmVzb2x2ZWRUbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0VG9NYXRjaCA9IG5vZGUuaXNUZXh0ID8gbm9kZS50ZXh0IHx8IFwiXCIgOiBub2RlLnRleHRCZXR3ZWVuKHJlc29sdmVkRnJvbSAtIHBvcywgcmVzb2x2ZWRUbyAtIHBvcywgdm9pZCAwLCBcIlxcdUZGRkNcIik7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHBhc3RlUnVsZU1hdGNoZXJIYW5kbGVyKHRleHRUb01hdGNoLCBydWxlLmZpbmQsIHBhc3RlRXZlbnQpO1xuICAgIG1hdGNoZXMuZm9yRWFjaCgobWF0Y2gpID0+IHtcbiAgICAgIGlmIChtYXRjaC5pbmRleCA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXJ0ID0gcmVzb2x2ZWRGcm9tICsgbWF0Y2guaW5kZXggKyAxO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgICBjb25zdCByYW5nZSA9IHtcbiAgICAgICAgZnJvbTogc3RhdGUudHIubWFwcGluZy5tYXAoc3RhcnQpLFxuICAgICAgICB0bzogc3RhdGUudHIubWFwcGluZy5tYXAoZW5kKVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSBydWxlLmhhbmRsZXIoe1xuICAgICAgICBzdGF0ZSxcbiAgICAgICAgcmFuZ2UsXG4gICAgICAgIG1hdGNoLFxuICAgICAgICBjb21tYW5kcyxcbiAgICAgICAgY2hhaW4sXG4gICAgICAgIGNhbixcbiAgICAgICAgcGFzdGVFdmVudCxcbiAgICAgICAgZHJvcEV2ZW50XG4gICAgICB9KTtcbiAgICAgIGhhbmRsZXJzLnB1c2goaGFuZGxlcik7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBzdWNjZXNzID0gaGFuZGxlcnMuZXZlcnkoKGhhbmRsZXIpID0+IGhhbmRsZXIgIT09IG51bGwpO1xuICByZXR1cm4gc3VjY2Vzcztcbn1cbnZhciB0aXB0YXBEcmFnRnJvbU90aGVyRWRpdG9yID0gbnVsbDtcbnZhciBjcmVhdGVDbGlwYm9hcmRQYXN0ZUV2ZW50ID0gKHRleHQpID0+IHtcbiAgdmFyIF9hO1xuICBjb25zdCBldmVudCA9IG5ldyBDbGlwYm9hcmRFdmVudChcInBhc3RlXCIsIHtcbiAgICBjbGlwYm9hcmREYXRhOiBuZXcgRGF0YVRyYW5zZmVyKClcbiAgfSk7XG4gIChfYSA9IGV2ZW50LmNsaXBib2FyZERhdGEpID09IG51bGwgPyB2b2lkIDAgOiBfYS5zZXREYXRhKFwidGV4dC9odG1sXCIsIHRleHQpO1xuICByZXR1cm4gZXZlbnQ7XG59O1xuZnVuY3Rpb24gcGFzdGVSdWxlc1BsdWdpbihwcm9wcykge1xuICBjb25zdCB7IGVkaXRvciwgcnVsZXMgfSA9IHByb3BzO1xuICBsZXQgZHJhZ1NvdXJjZUVsZW1lbnQgPSBudWxsO1xuICBsZXQgaXNQYXN0ZWRGcm9tUHJvc2VNaXJyb3IgPSBmYWxzZTtcbiAgbGV0IGlzRHJvcHBlZEZyb21Qcm9zZU1pcnJvciA9IGZhbHNlO1xuICBsZXQgcGFzdGVFdmVudCA9IHR5cGVvZiBDbGlwYm9hcmRFdmVudCAhPT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBDbGlwYm9hcmRFdmVudChcInBhc3RlXCIpIDogbnVsbDtcbiAgbGV0IGRyb3BFdmVudDtcbiAgdHJ5IHtcbiAgICBkcm9wRXZlbnQgPSB0eXBlb2YgRHJhZ0V2ZW50ICE9PSBcInVuZGVmaW5lZFwiID8gbmV3IERyYWdFdmVudChcImRyb3BcIikgOiBudWxsO1xuICB9IGNhdGNoIHtcbiAgICBkcm9wRXZlbnQgPSBudWxsO1xuICB9XG4gIGNvbnN0IHByb2Nlc3NFdmVudCA9ICh7XG4gICAgc3RhdGUsXG4gICAgZnJvbSxcbiAgICB0byxcbiAgICBydWxlLFxuICAgIHBhc3RlRXZ0XG4gIH0pID0+IHtcbiAgICBjb25zdCB0ciA9IHN0YXRlLnRyO1xuICAgIGNvbnN0IGNoYWluYWJsZVN0YXRlID0gY3JlYXRlQ2hhaW5hYmxlU3RhdGUoe1xuICAgICAgc3RhdGUsXG4gICAgICB0cmFuc2FjdGlvbjogdHJcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVyID0gcnVuMih7XG4gICAgICBlZGl0b3IsXG4gICAgICBzdGF0ZTogY2hhaW5hYmxlU3RhdGUsXG4gICAgICBmcm9tOiBNYXRoLm1heChmcm9tIC0gMSwgMCksXG4gICAgICB0bzogdG8uYiAtIDEsXG4gICAgICBydWxlLFxuICAgICAgcGFzdGVFdmVudDogcGFzdGVFdnQsXG4gICAgICBkcm9wRXZlbnRcbiAgICB9KTtcbiAgICBpZiAoIWhhbmRsZXIgfHwgIXRyLnN0ZXBzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgZHJvcEV2ZW50ID0gdHlwZW9mIERyYWdFdmVudCAhPT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBEcmFnRXZlbnQoXCJkcm9wXCIpIDogbnVsbDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGRyb3BFdmVudCA9IG51bGw7XG4gICAgfVxuICAgIHBhc3RlRXZlbnQgPSB0eXBlb2YgQ2xpcGJvYXJkRXZlbnQgIT09IFwidW5kZWZpbmVkXCIgPyBuZXcgQ2xpcGJvYXJkRXZlbnQoXCJwYXN0ZVwiKSA6IG51bGw7XG4gICAgcmV0dXJuIHRyO1xuICB9O1xuICBjb25zdCBwbHVnaW5zID0gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQbHVnaW4yKHtcbiAgICAgIC8vIHdlIHJlZ2lzdGVyIGEgZ2xvYmFsIGRyYWcgaGFuZGxlciB0byB0cmFjayB0aGUgY3VycmVudCBkcmFnIHNvdXJjZSBlbGVtZW50XG4gICAgICB2aWV3KHZpZXcpIHtcbiAgICAgICAgY29uc3QgaGFuZGxlRHJhZ3N0YXJ0ID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgIGRyYWdTb3VyY2VFbGVtZW50ID0gKChfYSA9IHZpZXcuZG9tLnBhcmVudEVsZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jb250YWlucyhldmVudC50YXJnZXQpKSA/IHZpZXcuZG9tLnBhcmVudEVsZW1lbnQgOiBudWxsO1xuICAgICAgICAgIGlmIChkcmFnU291cmNlRWxlbWVudCkge1xuICAgICAgICAgICAgdGlwdGFwRHJhZ0Zyb21PdGhlckVkaXRvciA9IGVkaXRvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhhbmRsZURyYWdlbmQgPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpcHRhcERyYWdGcm9tT3RoZXJFZGl0b3IpIHtcbiAgICAgICAgICAgIHRpcHRhcERyYWdGcm9tT3RoZXJFZGl0b3IgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJkcmFnc3RhcnRcIiwgaGFuZGxlRHJhZ3N0YXJ0KTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJkcmFnZW5kXCIsIGhhbmRsZURyYWdlbmQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRlc3Ryb3koKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImRyYWdzdGFydFwiLCBoYW5kbGVEcmFnc3RhcnQpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJkcmFnZW5kXCIsIGhhbmRsZURyYWdlbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBwcm9wczoge1xuICAgICAgICBoYW5kbGVET01FdmVudHM6IHtcbiAgICAgICAgICBkcm9wOiAodmlldywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlzRHJvcHBlZEZyb21Qcm9zZU1pcnJvciA9IGRyYWdTb3VyY2VFbGVtZW50ID09PSB2aWV3LmRvbS5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgZHJvcEV2ZW50ID0gZXZlbnQ7XG4gICAgICAgICAgICBpZiAoIWlzRHJvcHBlZEZyb21Qcm9zZU1pcnJvcikge1xuICAgICAgICAgICAgICBjb25zdCBkcmFnRnJvbU90aGVyRWRpdG9yID0gdGlwdGFwRHJhZ0Zyb21PdGhlckVkaXRvcjtcbiAgICAgICAgICAgICAgaWYgKGRyYWdGcm9tT3RoZXJFZGl0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IGRyYWdGcm9tT3RoZXJFZGl0b3IuaXNFZGl0YWJsZSkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZHJhZ0Zyb21PdGhlckVkaXRvci5zdGF0ZS5zZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGRyYWdGcm9tT3RoZXJFZGl0b3IuY29tbWFuZHMuZGVsZXRlUmFuZ2UoeyBmcm9tOiBzZWxlY3Rpb24uZnJvbSwgdG86IHNlbGVjdGlvbi50byB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhc3RlOiAoX3ZpZXcsIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCBodG1sID0gKF9hID0gZXZlbnQuY2xpcGJvYXJkRGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmdldERhdGEoXCJ0ZXh0L2h0bWxcIik7XG4gICAgICAgICAgICBwYXN0ZUV2ZW50ID0gZXZlbnQ7XG4gICAgICAgICAgICBpc1Bhc3RlZEZyb21Qcm9zZU1pcnJvciA9ICEhKGh0bWwgPT0gbnVsbCA/IHZvaWQgMCA6IGh0bWwuaW5jbHVkZXMoXCJkYXRhLXBtLXNsaWNlXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhcHBlbmRUcmFuc2FjdGlvbjogKHRyYW5zYWN0aW9ucywgb2xkU3RhdGUsIHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25zWzBdO1xuICAgICAgICBjb25zdCBpc1Bhc3RlID0gdHJhbnNhY3Rpb24uZ2V0TWV0YShcInVpRXZlbnRcIikgPT09IFwicGFzdGVcIiAmJiAhaXNQYXN0ZWRGcm9tUHJvc2VNaXJyb3I7XG4gICAgICAgIGNvbnN0IGlzRHJvcCA9IHRyYW5zYWN0aW9uLmdldE1ldGEoXCJ1aUV2ZW50XCIpID09PSBcImRyb3BcIiAmJiAhaXNEcm9wcGVkRnJvbVByb3NlTWlycm9yO1xuICAgICAgICBjb25zdCBzaW11bGF0ZWRQYXN0ZU1ldGEgPSB0cmFuc2FjdGlvbi5nZXRNZXRhKFwiYXBwbHlQYXN0ZVJ1bGVzXCIpO1xuICAgICAgICBjb25zdCBpc1NpbXVsYXRlZFBhc3RlID0gISFzaW11bGF0ZWRQYXN0ZU1ldGE7XG4gICAgICAgIGlmICghaXNQYXN0ZSAmJiAhaXNEcm9wICYmICFpc1NpbXVsYXRlZFBhc3RlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NpbXVsYXRlZFBhc3RlKSB7XG4gICAgICAgICAgbGV0IHsgdGV4dCB9ID0gc2ltdWxhdGVkUGFzdGVNZXRhO1xuICAgICAgICAgIGlmICh0eXBlb2YgdGV4dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdGV4dCA9IHRleHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRleHQgPSBnZXRIVE1MRnJvbUZyYWdtZW50KEZyYWdtZW50NS5mcm9tKHRleHQpLCBzdGF0ZS5zY2hlbWEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7IGZyb206IGZyb20yIH0gPSBzaW11bGF0ZWRQYXN0ZU1ldGE7XG4gICAgICAgICAgY29uc3QgdG8yID0gZnJvbTIgKyB0ZXh0Lmxlbmd0aDtcbiAgICAgICAgICBjb25zdCBwYXN0ZUV2dCA9IGNyZWF0ZUNsaXBib2FyZFBhc3RlRXZlbnQodGV4dCk7XG4gICAgICAgICAgcmV0dXJuIHByb2Nlc3NFdmVudCh7XG4gICAgICAgICAgICBydWxlLFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBmcm9tOiBmcm9tMixcbiAgICAgICAgICAgIHRvOiB7IGI6IHRvMiB9LFxuICAgICAgICAgICAgcGFzdGVFdnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcm9tID0gb2xkU3RhdGUuZG9jLmNvbnRlbnQuZmluZERpZmZTdGFydChzdGF0ZS5kb2MuY29udGVudCk7XG4gICAgICAgIGNvbnN0IHRvID0gb2xkU3RhdGUuZG9jLmNvbnRlbnQuZmluZERpZmZFbmQoc3RhdGUuZG9jLmNvbnRlbnQpO1xuICAgICAgICBpZiAoIWlzTnVtYmVyKGZyb20pIHx8ICF0byB8fCBmcm9tID09PSB0by5iKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9jZXNzRXZlbnQoe1xuICAgICAgICAgIHJ1bGUsXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgZnJvbSxcbiAgICAgICAgICB0byxcbiAgICAgICAgICBwYXN0ZUV2dDogcGFzdGVFdmVudFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBwbHVnaW5zO1xufVxuXG4vLyBzcmMvRXh0ZW5zaW9uTWFuYWdlci50c1xudmFyIEV4dGVuc2lvbk1hbmFnZXIgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGV4dGVuc2lvbnMsIGVkaXRvcikge1xuICAgIHRoaXMuc3BsaXR0YWJsZU1hcmtzID0gW107XG4gICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgdGhpcy5iYXNlRXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnM7XG4gICAgdGhpcy5leHRlbnNpb25zID0gcmVzb2x2ZUV4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5zY2hlbWEgPSBnZXRTY2hlbWFCeVJlc29sdmVkRXh0ZW5zaW9ucyh0aGlzLmV4dGVuc2lvbnMsIGVkaXRvcik7XG4gICAgdGhpcy5zZXR1cEV4dGVuc2lvbnMoKTtcbiAgfVxuICAvKipcbiAgICogR2V0IGFsbCBjb21tYW5kcyBmcm9tIHRoZSBleHRlbnNpb25zLlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBhbGwgY29tbWFuZHMgd2hlcmUgdGhlIGtleSBpcyB0aGUgY29tbWFuZCBuYW1lIGFuZCB0aGUgdmFsdWUgaXMgdGhlIGNvbW1hbmQgZnVuY3Rpb25cbiAgICovXG4gIGdldCBjb21tYW5kcygpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbnNpb25zLnJlZHVjZSgoY29tbWFuZHMsIGV4dGVuc2lvbikgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgbmFtZTogZXh0ZW5zaW9uLm5hbWUsXG4gICAgICAgIG9wdGlvbnM6IGV4dGVuc2lvbi5vcHRpb25zLFxuICAgICAgICBzdG9yYWdlOiB0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW2V4dGVuc2lvbi5uYW1lXSxcbiAgICAgICAgZWRpdG9yOiB0aGlzLmVkaXRvcixcbiAgICAgICAgdHlwZTogZ2V0U2NoZW1hVHlwZUJ5TmFtZShleHRlbnNpb24ubmFtZSwgdGhpcy5zY2hlbWEpXG4gICAgICB9O1xuICAgICAgY29uc3QgYWRkQ29tbWFuZHMgPSBnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwiYWRkQ29tbWFuZHNcIiwgY29udGV4dCk7XG4gICAgICBpZiAoIWFkZENvbW1hbmRzKSB7XG4gICAgICAgIHJldHVybiBjb21tYW5kcztcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbW1hbmRzLFxuICAgICAgICAuLi5hZGRDb21tYW5kcygpXG4gICAgICB9O1xuICAgIH0sIHt9KTtcbiAgfVxuICAvKipcbiAgICogR2V0IGFsbCByZWdpc3RlcmVkIFByb3NlbWlycm9yIHBsdWdpbnMgZnJvbSB0aGUgZXh0ZW5zaW9ucy5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgUHJvc2VtaXJyb3IgcGx1Z2luc1xuICAgKi9cbiAgZ2V0IHBsdWdpbnMoKSB7XG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXM7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IHNvcnRFeHRlbnNpb25zKFsuLi50aGlzLmV4dGVuc2lvbnNdLnJldmVyc2UoKSk7XG4gICAgY29uc3QgYWxsUGx1Z2lucyA9IGV4dGVuc2lvbnMuZmxhdE1hcCgoZXh0ZW5zaW9uKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICBuYW1lOiBleHRlbnNpb24ubmFtZSxcbiAgICAgICAgb3B0aW9uczogZXh0ZW5zaW9uLm9wdGlvbnMsXG4gICAgICAgIHN0b3JhZ2U6IHRoaXMuZWRpdG9yLmV4dGVuc2lvblN0b3JhZ2VbZXh0ZW5zaW9uLm5hbWVdLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIHR5cGU6IGdldFNjaGVtYVR5cGVCeU5hbWUoZXh0ZW5zaW9uLm5hbWUsIHRoaXMuc2NoZW1hKVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHBsdWdpbnMgPSBbXTtcbiAgICAgIGNvbnN0IGFkZEtleWJvYXJkU2hvcnRjdXRzID0gZ2V0RXh0ZW5zaW9uRmllbGQoXG4gICAgICAgIGV4dGVuc2lvbixcbiAgICAgICAgXCJhZGRLZXlib2FyZFNob3J0Y3V0c1wiLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgICAgbGV0IGRlZmF1bHRCaW5kaW5ncyA9IHt9O1xuICAgICAgaWYgKGV4dGVuc2lvbi50eXBlID09PSBcIm1hcmtcIiAmJiBnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwiZXhpdGFibGVcIiwgY29udGV4dCkpIHtcbiAgICAgICAgZGVmYXVsdEJpbmRpbmdzLkFycm93UmlnaHQgPSAoKSA9PiBNYXJrLmhhbmRsZUV4aXQoeyBlZGl0b3IsIG1hcms6IGV4dGVuc2lvbiB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChhZGRLZXlib2FyZFNob3J0Y3V0cykge1xuICAgICAgICBjb25zdCBiaW5kaW5ncyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhhZGRLZXlib2FyZFNob3J0Y3V0cygpKS5tYXAoKFtzaG9ydGN1dCwgbWV0aG9kXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFtzaG9ydGN1dCwgKCkgPT4gbWV0aG9kKHsgZWRpdG9yIH0pXTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICBkZWZhdWx0QmluZGluZ3MgPSB7IC4uLmRlZmF1bHRCaW5kaW5ncywgLi4uYmluZGluZ3MgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtleU1hcFBsdWdpbiA9IGtleW1hcChkZWZhdWx0QmluZGluZ3MpO1xuICAgICAgcGx1Z2lucy5wdXNoKGtleU1hcFBsdWdpbik7XG4gICAgICBjb25zdCBhZGRJbnB1dFJ1bGVzID0gZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcImFkZElucHV0UnVsZXNcIiwgY29udGV4dCk7XG4gICAgICBpZiAoaXNFeHRlbnNpb25SdWxlc0VuYWJsZWQoZXh0ZW5zaW9uLCBlZGl0b3Iub3B0aW9ucy5lbmFibGVJbnB1dFJ1bGVzKSAmJiBhZGRJbnB1dFJ1bGVzKSB7XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gYWRkSW5wdXRSdWxlcygpO1xuICAgICAgICBpZiAocnVsZXMgJiYgcnVsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgaW5wdXRSZXN1bHQgPSBpbnB1dFJ1bGVzUGx1Z2luKHtcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHJ1bGVzXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgaW5wdXRQbHVnaW5zID0gQXJyYXkuaXNBcnJheShpbnB1dFJlc3VsdCkgPyBpbnB1dFJlc3VsdCA6IFtpbnB1dFJlc3VsdF07XG4gICAgICAgICAgcGx1Z2lucy5wdXNoKC4uLmlucHV0UGx1Z2lucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGFkZFBhc3RlUnVsZXMgPSBnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwiYWRkUGFzdGVSdWxlc1wiLCBjb250ZXh0KTtcbiAgICAgIGlmIChpc0V4dGVuc2lvblJ1bGVzRW5hYmxlZChleHRlbnNpb24sIGVkaXRvci5vcHRpb25zLmVuYWJsZVBhc3RlUnVsZXMpICYmIGFkZFBhc3RlUnVsZXMpIHtcbiAgICAgICAgY29uc3QgcnVsZXMgPSBhZGRQYXN0ZVJ1bGVzKCk7XG4gICAgICAgIGlmIChydWxlcyAmJiBydWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBwYXN0ZVJ1bGVzID0gcGFzdGVSdWxlc1BsdWdpbih7IGVkaXRvciwgcnVsZXMgfSk7XG4gICAgICAgICAgcGx1Z2lucy5wdXNoKC4uLnBhc3RlUnVsZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBhZGRQcm9zZU1pcnJvclBsdWdpbnMgPSBnZXRFeHRlbnNpb25GaWVsZChcbiAgICAgICAgZXh0ZW5zaW9uLFxuICAgICAgICBcImFkZFByb3NlTWlycm9yUGx1Z2luc1wiLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgICAgaWYgKGFkZFByb3NlTWlycm9yUGx1Z2lucykge1xuICAgICAgICBjb25zdCBwcm9zZU1pcnJvclBsdWdpbnMgPSBhZGRQcm9zZU1pcnJvclBsdWdpbnMoKTtcbiAgICAgICAgcGx1Z2lucy5wdXNoKC4uLnByb3NlTWlycm9yUGx1Z2lucyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGx1Z2lucztcbiAgICB9KTtcbiAgICByZXR1cm4gYWxsUGx1Z2lucztcbiAgfVxuICAvKipcbiAgICogR2V0IGFsbCBhdHRyaWJ1dGVzIGZyb20gdGhlIGV4dGVuc2lvbnMuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGF0dHJpYnV0ZXNcbiAgICovXG4gIGdldCBhdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiBnZXRBdHRyaWJ1dGVzRnJvbUV4dGVuc2lvbnModGhpcy5leHRlbnNpb25zKTtcbiAgfVxuICAvKipcbiAgICogR2V0IGFsbCBub2RlIHZpZXdzIGZyb20gdGhlIGV4dGVuc2lvbnMuXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGFsbCBub2RlIHZpZXdzIHdoZXJlIHRoZSBrZXkgaXMgdGhlIG5vZGUgbmFtZSBhbmQgdGhlIHZhbHVlIGlzIHRoZSBub2RlIHZpZXcgZnVuY3Rpb25cbiAgICovXG4gIGdldCBub2RlVmlld3MoKSB7XG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBub2RlRXh0ZW5zaW9ucyB9ID0gc3BsaXRFeHRlbnNpb25zKHRoaXMuZXh0ZW5zaW9ucyk7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIG5vZGVFeHRlbnNpb25zLmZpbHRlcigoZXh0ZW5zaW9uKSA9PiAhIWdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJhZGROb2RlVmlld1wiKSkubWFwKChleHRlbnNpb24pID0+IHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uQXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlcy5maWx0ZXIoKGF0dHJpYnV0ZSkgPT4gYXR0cmlidXRlLnR5cGUgPT09IGV4dGVuc2lvbi5uYW1lKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgICBuYW1lOiBleHRlbnNpb24ubmFtZSxcbiAgICAgICAgICBvcHRpb25zOiBleHRlbnNpb24ub3B0aW9ucyxcbiAgICAgICAgICBzdG9yYWdlOiB0aGlzLmVkaXRvci5leHRlbnNpb25TdG9yYWdlW2V4dGVuc2lvbi5uYW1lXSxcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgdHlwZTogZ2V0Tm9kZVR5cGUoZXh0ZW5zaW9uLm5hbWUsIHRoaXMuc2NoZW1hKVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBhZGROb2RlVmlldyA9IGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJhZGROb2RlVmlld1wiLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKCFhZGROb2RlVmlldykge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlVmlld1Jlc3VsdCA9IGFkZE5vZGVWaWV3KCk7XG4gICAgICAgIGlmICghbm9kZVZpZXdSZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9kZXZpZXcgPSAobm9kZSwgdmlldywgZ2V0UG9zLCBkZWNvcmF0aW9ucywgaW5uZXJEZWNvcmF0aW9ucykgPT4ge1xuICAgICAgICAgIGNvbnN0IEhUTUxBdHRyaWJ1dGVzID0gZ2V0UmVuZGVyZWRBdHRyaWJ1dGVzKG5vZGUsIGV4dGVuc2lvbkF0dHJpYnV0ZXMpO1xuICAgICAgICAgIHJldHVybiBub2RlVmlld1Jlc3VsdCh7XG4gICAgICAgICAgICAvLyBwYXNzLXRocm91Z2hcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICB2aWV3LFxuICAgICAgICAgICAgZ2V0UG9zLFxuICAgICAgICAgICAgZGVjb3JhdGlvbnMsXG4gICAgICAgICAgICBpbm5lckRlY29yYXRpb25zLFxuICAgICAgICAgICAgLy8gdGlwdGFwLXNwZWNpZmljXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICBleHRlbnNpb24sXG4gICAgICAgICAgICBIVE1MQXR0cmlidXRlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gW2V4dGVuc2lvbi5uYW1lLCBub2Rldmlld107XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgY29tcG9zZWQgZGlzcGF0Y2hUcmFuc2FjdGlvbiBmdW5jdGlvbiBmcm9tIGFsbCBleHRlbnNpb25zLlxuICAgKiBAcGFyYW0gYmFzZURpc3BhdGNoIFRoZSBiYXNlIGRpc3BhdGNoIGZ1bmN0aW9uIChlLmcuIGZyb20gdGhlIGVkaXRvciBvciB1c2VyIHByb3BzKVxuICAgKiBAcmV0dXJucyBBIGNvbXBvc2VkIGRpc3BhdGNoIGZ1bmN0aW9uXG4gICAqL1xuICBkaXNwYXRjaFRyYW5zYWN0aW9uKGJhc2VEaXNwYXRjaCkge1xuICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzO1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBzb3J0RXh0ZW5zaW9ucyhbLi4udGhpcy5leHRlbnNpb25zXS5yZXZlcnNlKCkpO1xuICAgIHJldHVybiBleHRlbnNpb25zLnJlZHVjZVJpZ2h0KChuZXh0LCBleHRlbnNpb24pID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgIG5hbWU6IGV4dGVuc2lvbi5uYW1lLFxuICAgICAgICBvcHRpb25zOiBleHRlbnNpb24ub3B0aW9ucyxcbiAgICAgICAgc3RvcmFnZTogdGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZVtleHRlbnNpb24ubmFtZV0sXG4gICAgICAgIGVkaXRvcixcbiAgICAgICAgdHlwZTogZ2V0U2NoZW1hVHlwZUJ5TmFtZShleHRlbnNpb24ubmFtZSwgdGhpcy5zY2hlbWEpXG4gICAgICB9O1xuICAgICAgY29uc3QgZGlzcGF0Y2hUcmFuc2FjdGlvbiA9IGdldEV4dGVuc2lvbkZpZWxkKFxuICAgICAgICBleHRlbnNpb24sXG4gICAgICAgIFwiZGlzcGF0Y2hUcmFuc2FjdGlvblwiLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgICAgaWYgKCFkaXNwYXRjaFRyYW5zYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuICh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgICBkaXNwYXRjaFRyYW5zYWN0aW9uLmNhbGwoY29udGV4dCwgeyB0cmFuc2FjdGlvbiwgbmV4dCB9KTtcbiAgICAgIH07XG4gICAgfSwgYmFzZURpc3BhdGNoKTtcbiAgfVxuICBnZXQgbWFya1ZpZXdzKCkge1xuICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgbWFya0V4dGVuc2lvbnMgfSA9IHNwbGl0RXh0ZW5zaW9ucyh0aGlzLmV4dGVuc2lvbnMpO1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBtYXJrRXh0ZW5zaW9ucy5maWx0ZXIoKGV4dGVuc2lvbikgPT4gISFnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwiYWRkTWFya1ZpZXdcIikpLm1hcCgoZXh0ZW5zaW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbkF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXMuZmlsdGVyKChhdHRyaWJ1dGUpID0+IGF0dHJpYnV0ZS50eXBlID09PSBleHRlbnNpb24ubmFtZSk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgbmFtZTogZXh0ZW5zaW9uLm5hbWUsXG4gICAgICAgICAgb3B0aW9uczogZXh0ZW5zaW9uLm9wdGlvbnMsXG4gICAgICAgICAgc3RvcmFnZTogdGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZVtleHRlbnNpb24ubmFtZV0sXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIHR5cGU6IGdldE1hcmtUeXBlKGV4dGVuc2lvbi5uYW1lLCB0aGlzLnNjaGVtYSlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYWRkTWFya1ZpZXcgPSBnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwiYWRkTWFya1ZpZXdcIiwgY29udGV4dCk7XG4gICAgICAgIGlmICghYWRkTWFya1ZpZXcpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWFya1ZpZXcgPSAobWFyaywgdmlldywgaW5saW5lKSA9PiB7XG4gICAgICAgICAgY29uc3QgSFRNTEF0dHJpYnV0ZXMgPSBnZXRSZW5kZXJlZEF0dHJpYnV0ZXMobWFyaywgZXh0ZW5zaW9uQXR0cmlidXRlcyk7XG4gICAgICAgICAgcmV0dXJuIGFkZE1hcmtWaWV3KCkoe1xuICAgICAgICAgICAgLy8gcGFzcy10aHJvdWdoXG4gICAgICAgICAgICBtYXJrLFxuICAgICAgICAgICAgdmlldyxcbiAgICAgICAgICAgIGlubGluZSxcbiAgICAgICAgICAgIC8vIHRpcHRhcC1zcGVjaWZpY1xuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgZXh0ZW5zaW9uLFxuICAgICAgICAgICAgSFRNTEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICB1cGRhdGVBdHRyaWJ1dGVzOiAoYXR0cnMpID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlTWFya1ZpZXdBdHRyaWJ1dGVzKG1hcmssIGVkaXRvciwgYXR0cnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gW2V4dGVuc2lvbi5uYW1lLCBtYXJrVmlld107XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIEdvIHRocm91Z2ggYWxsIGV4dGVuc2lvbnMsIGNyZWF0ZSBleHRlbnNpb24gc3RvcmFnZXMgJiBzZXR1cCBtYXJrc1xuICAgKiAmIGJpbmQgZWRpdG9yIGV2ZW50IGxpc3RlbmVyLlxuICAgKi9cbiAgc2V0dXBFeHRlbnNpb25zKCkge1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSB0aGlzLmV4dGVuc2lvbnM7XG4gICAgdGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZSA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIGV4dGVuc2lvbnMubWFwKChleHRlbnNpb24pID0+IFtleHRlbnNpb24ubmFtZSwgZXh0ZW5zaW9uLnN0b3JhZ2VdKVxuICAgICk7XG4gICAgZXh0ZW5zaW9ucy5mb3JFYWNoKChleHRlbnNpb24pID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgIG5hbWU6IGV4dGVuc2lvbi5uYW1lLFxuICAgICAgICBvcHRpb25zOiBleHRlbnNpb24ub3B0aW9ucyxcbiAgICAgICAgc3RvcmFnZTogdGhpcy5lZGl0b3IuZXh0ZW5zaW9uU3RvcmFnZVtleHRlbnNpb24ubmFtZV0sXG4gICAgICAgIGVkaXRvcjogdGhpcy5lZGl0b3IsXG4gICAgICAgIHR5cGU6IGdldFNjaGVtYVR5cGVCeU5hbWUoZXh0ZW5zaW9uLm5hbWUsIHRoaXMuc2NoZW1hKVxuICAgICAgfTtcbiAgICAgIGlmIChleHRlbnNpb24udHlwZSA9PT0gXCJtYXJrXCIpIHtcbiAgICAgICAgY29uc3Qga2VlcE9uU3BsaXQgPSAoX2EgPSBjYWxsT3JSZXR1cm4oZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcImtlZXBPblNwbGl0XCIsIGNvbnRleHQpKSkgIT0gbnVsbCA/IF9hIDogdHJ1ZTtcbiAgICAgICAgaWYgKGtlZXBPblNwbGl0KSB7XG4gICAgICAgICAgdGhpcy5zcGxpdHRhYmxlTWFya3MucHVzaChleHRlbnNpb24ubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG9uQmVmb3JlQ3JlYXRlID0gZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcIm9uQmVmb3JlQ3JlYXRlXCIsIGNvbnRleHQpO1xuICAgICAgY29uc3Qgb25DcmVhdGUgPSBnZXRFeHRlbnNpb25GaWVsZChleHRlbnNpb24sIFwib25DcmVhdGVcIiwgY29udGV4dCk7XG4gICAgICBjb25zdCBvblVwZGF0ZSA9IGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJvblVwZGF0ZVwiLCBjb250ZXh0KTtcbiAgICAgIGNvbnN0IG9uU2VsZWN0aW9uVXBkYXRlID0gZ2V0RXh0ZW5zaW9uRmllbGQoXG4gICAgICAgIGV4dGVuc2lvbixcbiAgICAgICAgXCJvblNlbGVjdGlvblVwZGF0ZVwiLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgICAgY29uc3Qgb25UcmFuc2FjdGlvbiA9IGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJvblRyYW5zYWN0aW9uXCIsIGNvbnRleHQpO1xuICAgICAgY29uc3Qgb25Gb2N1cyA9IGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJvbkZvY3VzXCIsIGNvbnRleHQpO1xuICAgICAgY29uc3Qgb25CbHVyID0gZ2V0RXh0ZW5zaW9uRmllbGQoZXh0ZW5zaW9uLCBcIm9uQmx1clwiLCBjb250ZXh0KTtcbiAgICAgIGNvbnN0IG9uRGVzdHJveSA9IGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJvbkRlc3Ryb3lcIiwgY29udGV4dCk7XG4gICAgICBpZiAob25CZWZvcmVDcmVhdGUpIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iub24oXCJiZWZvcmVDcmVhdGVcIiwgb25CZWZvcmVDcmVhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKG9uQ3JlYXRlKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9uKFwiY3JlYXRlXCIsIG9uQ3JlYXRlKTtcbiAgICAgIH1cbiAgICAgIGlmIChvblVwZGF0ZSkge1xuICAgICAgICB0aGlzLmVkaXRvci5vbihcInVwZGF0ZVwiLCBvblVwZGF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAob25TZWxlY3Rpb25VcGRhdGUpIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iub24oXCJzZWxlY3Rpb25VcGRhdGVcIiwgb25TZWxlY3Rpb25VcGRhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKG9uVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iub24oXCJ0cmFuc2FjdGlvblwiLCBvblRyYW5zYWN0aW9uKTtcbiAgICAgIH1cbiAgICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9uKFwiZm9jdXNcIiwgb25Gb2N1cyk7XG4gICAgICB9XG4gICAgICBpZiAob25CbHVyKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9uKFwiYmx1clwiLCBvbkJsdXIpO1xuICAgICAgfVxuICAgICAgaWYgKG9uRGVzdHJveSkge1xuICAgICAgICB0aGlzLmVkaXRvci5vbihcImRlc3Ryb3lcIiwgb25EZXN0cm95KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcbkV4dGVuc2lvbk1hbmFnZXIucmVzb2x2ZSA9IHJlc29sdmVFeHRlbnNpb25zO1xuRXh0ZW5zaW9uTWFuYWdlci5zb3J0ID0gc29ydEV4dGVuc2lvbnM7XG5FeHRlbnNpb25NYW5hZ2VyLmZsYXR0ZW4gPSBmbGF0dGVuRXh0ZW5zaW9ucztcblxuLy8gc3JjL2V4dGVuc2lvbnMvaW5kZXgudHNcbnZhciBleHRlbnNpb25zX2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KGV4dGVuc2lvbnNfZXhwb3J0cywge1xuICBDbGlwYm9hcmRUZXh0U2VyaWFsaXplcjogKCkgPT4gQ2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXIsXG4gIENvbW1hbmRzOiAoKSA9PiBDb21tYW5kcyxcbiAgRGVsZXRlOiAoKSA9PiBEZWxldGUsXG4gIERyb3A6ICgpID0+IERyb3AsXG4gIEVkaXRhYmxlOiAoKSA9PiBFZGl0YWJsZSxcbiAgRm9jdXNFdmVudHM6ICgpID0+IEZvY3VzRXZlbnRzLFxuICBLZXltYXA6ICgpID0+IEtleW1hcCxcbiAgUGFzdGU6ICgpID0+IFBhc3RlLFxuICBUYWJpbmRleDogKCkgPT4gVGFiaW5kZXgsXG4gIFRleHREaXJlY3Rpb246ICgpID0+IFRleHREaXJlY3Rpb24sXG4gIGZvY3VzRXZlbnRzUGx1Z2luS2V5OiAoKSA9PiBmb2N1c0V2ZW50c1BsdWdpbktleVxufSk7XG5cbi8vIHNyYy9leHRlbnNpb25zL2NsaXBib2FyZFRleHRTZXJpYWxpemVyLnRzXG5pbXBvcnQgeyBQbHVnaW4gYXMgUGx1Z2luMywgUGx1Z2luS2V5IH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcblxuLy8gc3JjL0V4dGVuc2lvbi50c1xudmFyIEV4dGVuc2lvbiA9IGNsYXNzIF9FeHRlbnNpb24gZXh0ZW5kcyBFeHRlbmRhYmxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB0aGlzLnR5cGUgPSBcImV4dGVuc2lvblwiO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgRXh0ZW5zaW9uIGluc3RhbmNlXG4gICAqIEBwYXJhbSBjb25maWcgLSBFeHRlbnNpb24gY29uZmlndXJhdGlvbiBvYmplY3Qgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZShjb25maWcgPSB7fSkge1xuICAgIGNvbnN0IHJlc29sdmVkQ29uZmlnID0gdHlwZW9mIGNvbmZpZyA9PT0gXCJmdW5jdGlvblwiID8gY29uZmlnKCkgOiBjb25maWc7XG4gICAgcmV0dXJuIG5ldyBfRXh0ZW5zaW9uKHJlc29sdmVkQ29uZmlnKTtcbiAgfVxuICBjb25maWd1cmUob3B0aW9ucykge1xuICAgIHJldHVybiBzdXBlci5jb25maWd1cmUob3B0aW9ucyk7XG4gIH1cbiAgZXh0ZW5kKGV4dGVuZGVkQ29uZmlnKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRDb25maWcgPSB0eXBlb2YgZXh0ZW5kZWRDb25maWcgPT09IFwiZnVuY3Rpb25cIiA/IGV4dGVuZGVkQ29uZmlnKCkgOiBleHRlbmRlZENvbmZpZztcbiAgICByZXR1cm4gc3VwZXIuZXh0ZW5kKHJlc29sdmVkQ29uZmlnKTtcbiAgfVxufTtcblxuLy8gc3JjL2V4dGVuc2lvbnMvY2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXIudHNcbnZhciBDbGlwYm9hcmRUZXh0U2VyaWFsaXplciA9IEV4dGVuc2lvbi5jcmVhdGUoe1xuICBuYW1lOiBcImNsaXBib2FyZFRleHRTZXJpYWxpemVyXCIsXG4gIGFkZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJsb2NrU2VwYXJhdG9yOiB2b2lkIDBcbiAgICB9O1xuICB9LFxuICBhZGRQcm9zZU1pcnJvclBsdWdpbnMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBQbHVnaW4zKHtcbiAgICAgICAga2V5OiBuZXcgUGx1Z2luS2V5KFwiY2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXJcIiksXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgY2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXI6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgeyBzdGF0ZSwgc2NoZW1hIH0gPSBlZGl0b3I7XG4gICAgICAgICAgICBjb25zdCB7IGRvYywgc2VsZWN0aW9uIH0gPSBzdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHsgcmFuZ2VzIH0gPSBzZWxlY3Rpb247XG4gICAgICAgICAgICBjb25zdCBmcm9tID0gTWF0aC5taW4oLi4ucmFuZ2VzLm1hcCgocmFuZ2UyKSA9PiByYW5nZTIuJGZyb20ucG9zKSk7XG4gICAgICAgICAgICBjb25zdCB0byA9IE1hdGgubWF4KC4uLnJhbmdlcy5tYXAoKHJhbmdlMikgPT4gcmFuZ2UyLiR0by5wb3MpKTtcbiAgICAgICAgICAgIGNvbnN0IHRleHRTZXJpYWxpemVycyA9IGdldFRleHRTZXJpYWxpemVyc0Zyb21TY2hlbWEoc2NoZW1hKTtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0geyBmcm9tLCB0byB9O1xuICAgICAgICAgICAgcmV0dXJuIGdldFRleHRCZXR3ZWVuKGRvYywgcmFuZ2UsIHtcbiAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmJsb2NrU2VwYXJhdG9yICE9PSB2b2lkIDAgPyB7IGJsb2NrU2VwYXJhdG9yOiB0aGlzLm9wdGlvbnMuYmxvY2tTZXBhcmF0b3IgfSA6IHt9LFxuICAgICAgICAgICAgICB0ZXh0U2VyaWFsaXplcnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICBdO1xuICB9XG59KTtcblxuLy8gc3JjL2V4dGVuc2lvbnMvY29tbWFuZHMudHNcbnZhciBDb21tYW5kcyA9IEV4dGVuc2lvbi5jcmVhdGUoe1xuICBuYW1lOiBcImNvbW1hbmRzXCIsXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5jb21tYW5kc19leHBvcnRzXG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9leHRlbnNpb25zL2RlbGV0ZS50c1xuaW1wb3J0IHsgUmVtb3ZlTWFya1N0ZXAgfSBmcm9tIFwiQHRpcHRhcC9wbS90cmFuc2Zvcm1cIjtcbnZhciBEZWxldGUgPSBFeHRlbnNpb24uY3JlYXRlKHtcbiAgbmFtZTogXCJkZWxldGVcIixcbiAgb25VcGRhdGUoeyB0cmFuc2FjdGlvbiwgYXBwZW5kZWRUcmFuc2FjdGlvbnMgfSkge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgdmFyIF9hMiwgX2IyLCBfYzIsIF9kO1xuICAgICAgaWYgKChfZCA9IChfYzIgPSAoX2IyID0gKF9hMiA9IHRoaXMuZWRpdG9yLm9wdGlvbnMuY29yZUV4dGVuc2lvbk9wdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZGVsZXRlKSA9PSBudWxsID8gdm9pZCAwIDogX2IyLmZpbHRlclRyYW5zYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX2MyLmNhbGwoX2IyLCB0cmFuc2FjdGlvbikpICE9IG51bGwgPyBfZCA6IHRyYW5zYWN0aW9uLmdldE1ldGEoXCJ5LXN5bmMkXCIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5leHRUcmFuc2FjdGlvbiA9IGNvbWJpbmVUcmFuc2FjdGlvblN0ZXBzKHRyYW5zYWN0aW9uLmJlZm9yZSwgW3RyYW5zYWN0aW9uLCAuLi5hcHBlbmRlZFRyYW5zYWN0aW9uc10pO1xuICAgICAgY29uc3QgY2hhbmdlcyA9IGdldENoYW5nZWRSYW5nZXMobmV4dFRyYW5zYWN0aW9uKTtcbiAgICAgIGNoYW5nZXMuZm9yRWFjaCgoY2hhbmdlKSA9PiB7XG4gICAgICAgIGlmIChuZXh0VHJhbnNhY3Rpb24ubWFwcGluZy5tYXBSZXN1bHQoY2hhbmdlLm9sZFJhbmdlLmZyb20pLmRlbGV0ZWRBZnRlciAmJiBuZXh0VHJhbnNhY3Rpb24ubWFwcGluZy5tYXBSZXN1bHQoY2hhbmdlLm9sZFJhbmdlLnRvKS5kZWxldGVkQmVmb3JlKSB7XG4gICAgICAgICAgbmV4dFRyYW5zYWN0aW9uLmJlZm9yZS5ub2Rlc0JldHdlZW4oY2hhbmdlLm9sZFJhbmdlLmZyb20sIGNoYW5nZS5vbGRSYW5nZS50bywgKG5vZGUsIGZyb20pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gZnJvbSArIG5vZGUubm9kZVNpemUgLSAyO1xuICAgICAgICAgICAgY29uc3QgaXNGdWxseVdpdGhpblJhbmdlID0gY2hhbmdlLm9sZFJhbmdlLmZyb20gPD0gZnJvbSAmJiB0byA8PSBjaGFuZ2Uub2xkUmFuZ2UudG87XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5lbWl0KFwiZGVsZXRlXCIsIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJub2RlXCIsXG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgIGZyb20sXG4gICAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgICBuZXdGcm9tOiBuZXh0VHJhbnNhY3Rpb24ubWFwcGluZy5tYXAoZnJvbSksXG4gICAgICAgICAgICAgIG5ld1RvOiBuZXh0VHJhbnNhY3Rpb24ubWFwcGluZy5tYXAodG8pLFxuICAgICAgICAgICAgICBkZWxldGVkUmFuZ2U6IGNoYW5nZS5vbGRSYW5nZSxcbiAgICAgICAgICAgICAgbmV3UmFuZ2U6IGNoYW5nZS5uZXdSYW5nZSxcbiAgICAgICAgICAgICAgcGFydGlhbDogIWlzRnVsbHlXaXRoaW5SYW5nZSxcbiAgICAgICAgICAgICAgZWRpdG9yOiB0aGlzLmVkaXRvcixcbiAgICAgICAgICAgICAgdHJhbnNhY3Rpb24sXG4gICAgICAgICAgICAgIGNvbWJpbmVkVHJhbnNmb3JtOiBuZXh0VHJhbnNhY3Rpb25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG1hcHBpbmcgPSBuZXh0VHJhbnNhY3Rpb24ubWFwcGluZztcbiAgICAgIG5leHRUcmFuc2FjdGlvbi5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICB2YXIgX2EzLCBfYjM7XG4gICAgICAgIGlmIChzdGVwIGluc3RhbmNlb2YgUmVtb3ZlTWFya1N0ZXApIHtcbiAgICAgICAgICBjb25zdCBuZXdTdGFydCA9IG1hcHBpbmcuc2xpY2UoaW5kZXgpLm1hcChzdGVwLmZyb20sIC0xKTtcbiAgICAgICAgICBjb25zdCBuZXdFbmQgPSBtYXBwaW5nLnNsaWNlKGluZGV4KS5tYXAoc3RlcC50byk7XG4gICAgICAgICAgY29uc3Qgb2xkU3RhcnQgPSBtYXBwaW5nLmludmVydCgpLm1hcChuZXdTdGFydCwgLTEpO1xuICAgICAgICAgIGNvbnN0IG9sZEVuZCA9IG1hcHBpbmcuaW52ZXJ0KCkubWFwKG5ld0VuZCk7XG4gICAgICAgICAgY29uc3QgZm91bmRCZWZvcmVNYXJrID0gKF9hMyA9IG5leHRUcmFuc2FjdGlvbi5kb2Mubm9kZUF0KG5ld1N0YXJ0IC0gMSkpID09IG51bGwgPyB2b2lkIDAgOiBfYTMubWFya3Muc29tZSgobWFyaykgPT4gbWFyay5lcShzdGVwLm1hcmspKTtcbiAgICAgICAgICBjb25zdCBmb3VuZEFmdGVyTWFyayA9IChfYjMgPSBuZXh0VHJhbnNhY3Rpb24uZG9jLm5vZGVBdChuZXdFbmQpKSA9PSBudWxsID8gdm9pZCAwIDogX2IzLm1hcmtzLnNvbWUoKG1hcmspID0+IG1hcmsuZXEoc3RlcC5tYXJrKSk7XG4gICAgICAgICAgdGhpcy5lZGl0b3IuZW1pdChcImRlbGV0ZVwiLCB7XG4gICAgICAgICAgICB0eXBlOiBcIm1hcmtcIixcbiAgICAgICAgICAgIG1hcms6IHN0ZXAubWFyayxcbiAgICAgICAgICAgIGZyb206IHN0ZXAuZnJvbSxcbiAgICAgICAgICAgIHRvOiBzdGVwLnRvLFxuICAgICAgICAgICAgZGVsZXRlZFJhbmdlOiB7XG4gICAgICAgICAgICAgIGZyb206IG9sZFN0YXJ0LFxuICAgICAgICAgICAgICB0bzogb2xkRW5kXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV3UmFuZ2U6IHtcbiAgICAgICAgICAgICAgZnJvbTogbmV3U3RhcnQsXG4gICAgICAgICAgICAgIHRvOiBuZXdFbmRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJ0aWFsOiBCb29sZWFuKGZvdW5kQWZ0ZXJNYXJrIHx8IGZvdW5kQmVmb3JlTWFyayksXG4gICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb24sXG4gICAgICAgICAgICBjb21iaW5lZFRyYW5zZm9ybTogbmV4dFRyYW5zYWN0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgaWYgKChfYyA9IChfYiA9IChfYSA9IHRoaXMuZWRpdG9yLm9wdGlvbnMuY29yZUV4dGVuc2lvbk9wdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfYS5kZWxldGUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5hc3luYykgIT0gbnVsbCA/IF9jIDogdHJ1ZSkge1xuICAgICAgc2V0VGltZW91dChjYWxsYmFjaywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuICB9XG59KTtcblxuLy8gc3JjL2V4dGVuc2lvbnMvZHJvcC50c1xuaW1wb3J0IHsgUGx1Z2luIGFzIFBsdWdpbjQsIFBsdWdpbktleSBhcyBQbHVnaW5LZXkyIH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbnZhciBEcm9wID0gRXh0ZW5zaW9uLmNyZWF0ZSh7XG4gIG5hbWU6IFwiZHJvcFwiLFxuICBhZGRQcm9zZU1pcnJvclBsdWdpbnMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBQbHVnaW40KHtcbiAgICAgICAga2V5OiBuZXcgUGx1Z2luS2V5MihcInRpcHRhcERyb3BcIiksXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgaGFuZGxlRHJvcDogKF8sIGUsIHNsaWNlLCBtb3ZlZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IuZW1pdChcImRyb3BcIiwge1xuICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgICAgICAgc2xpY2UsXG4gICAgICAgICAgICAgIG1vdmVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgXTtcbiAgfVxufSk7XG5cbi8vIHNyYy9leHRlbnNpb25zL2VkaXRhYmxlLnRzXG5pbXBvcnQgeyBQbHVnaW4gYXMgUGx1Z2luNSwgUGx1Z2luS2V5IGFzIFBsdWdpbktleTMgfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xudmFyIEVkaXRhYmxlID0gRXh0ZW5zaW9uLmNyZWF0ZSh7XG4gIG5hbWU6IFwiZWRpdGFibGVcIixcbiAgYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCkge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGx1Z2luNSh7XG4gICAgICAgIGtleTogbmV3IFBsdWdpbktleTMoXCJlZGl0YWJsZVwiKSxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBlZGl0YWJsZTogKCkgPT4gdGhpcy5lZGl0b3Iub3B0aW9ucy5lZGl0YWJsZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF07XG4gIH1cbn0pO1xuXG4vLyBzcmMvZXh0ZW5zaW9ucy9mb2N1c0V2ZW50cy50c1xuaW1wb3J0IHsgUGx1Z2luIGFzIFBsdWdpbjYsIFBsdWdpbktleSBhcyBQbHVnaW5LZXk0IH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbnZhciBmb2N1c0V2ZW50c1BsdWdpbktleSA9IG5ldyBQbHVnaW5LZXk0KFwiZm9jdXNFdmVudHNcIik7XG52YXIgRm9jdXNFdmVudHMgPSBFeHRlbnNpb24uY3JlYXRlKHtcbiAgbmFtZTogXCJmb2N1c0V2ZW50c1wiLFxuICBhZGRQcm9zZU1pcnJvclBsdWdpbnMoKSB7XG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXM7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBQbHVnaW42KHtcbiAgICAgICAga2V5OiBmb2N1c0V2ZW50c1BsdWdpbktleSxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBoYW5kbGVET01FdmVudHM6IHtcbiAgICAgICAgICAgIGZvY3VzOiAodmlldywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgZWRpdG9yLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZWRpdG9yLnN0YXRlLnRyLnNldE1ldGEoXCJmb2N1c1wiLCB7IGV2ZW50IH0pLnNldE1ldGEoXCJhZGRUb0hpc3RvcnlcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICB2aWV3LmRpc3BhdGNoKHRyYW5zYWN0aW9uKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJsdXI6ICh2aWV3LCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICBlZGl0b3IuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZWRpdG9yLnN0YXRlLnRyLnNldE1ldGEoXCJibHVyXCIsIHsgZXZlbnQgfSkuc2V0TWV0YShcImFkZFRvSGlzdG9yeVwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2godHJhbnNhY3Rpb24pO1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF07XG4gIH1cbn0pO1xuXG4vLyBzcmMvZXh0ZW5zaW9ucy9rZXltYXAudHNcbmltcG9ydCB7IFBsdWdpbiBhcyBQbHVnaW43LCBQbHVnaW5LZXkgYXMgUGx1Z2luS2V5NSwgU2VsZWN0aW9uIGFzIFNlbGVjdGlvbjMgfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xudmFyIEtleW1hcCA9IEV4dGVuc2lvbi5jcmVhdGUoe1xuICBuYW1lOiBcImtleW1hcFwiLFxuICBhZGRLZXlib2FyZFNob3J0Y3V0cygpIHtcbiAgICBjb25zdCBoYW5kbGVCYWNrc3BhY2UgPSAoKSA9PiB0aGlzLmVkaXRvci5jb21tYW5kcy5maXJzdCgoeyBjb21tYW5kcyB9KSA9PiBbXG4gICAgICAoKSA9PiBjb21tYW5kcy51bmRvSW5wdXRSdWxlKCksXG4gICAgICAvLyBtYXliZSBjb252ZXJ0IGZpcnN0IHRleHQgYmxvY2sgbm9kZSB0byBkZWZhdWx0IG5vZGVcbiAgICAgICgpID0+IGNvbW1hbmRzLmNvbW1hbmQoKHsgdHIgfSkgPT4ge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiwgZG9jIH0gPSB0cjtcbiAgICAgICAgY29uc3QgeyBlbXB0eSwgJGFuY2hvciB9ID0gc2VsZWN0aW9uO1xuICAgICAgICBjb25zdCB7IHBvcywgcGFyZW50IH0gPSAkYW5jaG9yO1xuICAgICAgICBjb25zdCAkcGFyZW50UG9zID0gJGFuY2hvci5wYXJlbnQuaXNUZXh0YmxvY2sgJiYgcG9zID4gMCA/IHRyLmRvYy5yZXNvbHZlKHBvcyAtIDEpIDogJGFuY2hvcjtcbiAgICAgICAgY29uc3QgcGFyZW50SXNJc29sYXRpbmcgPSAkcGFyZW50UG9zLnBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nO1xuICAgICAgICBjb25zdCBwYXJlbnRQb3MgPSAkYW5jaG9yLnBvcyAtICRhbmNob3IucGFyZW50T2Zmc2V0O1xuICAgICAgICBjb25zdCBpc0F0U3RhcnQgPSBwYXJlbnRJc0lzb2xhdGluZyAmJiAkcGFyZW50UG9zLnBhcmVudC5jaGlsZENvdW50ID09PSAxID8gcGFyZW50UG9zID09PSAkYW5jaG9yLnBvcyA6IFNlbGVjdGlvbjMuYXRTdGFydChkb2MpLmZyb20gPT09IHBvcztcbiAgICAgICAgaWYgKCFlbXB0eSB8fCAhcGFyZW50LnR5cGUuaXNUZXh0YmxvY2sgfHwgcGFyZW50LnRleHRDb250ZW50Lmxlbmd0aCB8fCAhaXNBdFN0YXJ0IHx8IGlzQXRTdGFydCAmJiAkYW5jaG9yLnBhcmVudC50eXBlLm5hbWUgPT09IFwicGFyYWdyYXBoXCIpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLmNsZWFyTm9kZXMoKTtcbiAgICAgIH0pLFxuICAgICAgKCkgPT4gY29tbWFuZHMuZGVsZXRlU2VsZWN0aW9uKCksXG4gICAgICAoKSA9PiBjb21tYW5kcy5qb2luQmFja3dhcmQoKSxcbiAgICAgICgpID0+IGNvbW1hbmRzLnNlbGVjdE5vZGVCYWNrd2FyZCgpXG4gICAgXSk7XG4gICAgY29uc3QgaGFuZGxlRGVsZXRlID0gKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMuZmlyc3QoKHsgY29tbWFuZHMgfSkgPT4gW1xuICAgICAgKCkgPT4gY29tbWFuZHMuZGVsZXRlU2VsZWN0aW9uKCksXG4gICAgICAoKSA9PiBjb21tYW5kcy5kZWxldGVDdXJyZW50Tm9kZSgpLFxuICAgICAgKCkgPT4gY29tbWFuZHMuam9pbkZvcndhcmQoKSxcbiAgICAgICgpID0+IGNvbW1hbmRzLnNlbGVjdE5vZGVGb3J3YXJkKClcbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVFbnRlciA9ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLmZpcnN0KCh7IGNvbW1hbmRzIH0pID0+IFtcbiAgICAgICgpID0+IGNvbW1hbmRzLm5ld2xpbmVJbkNvZGUoKSxcbiAgICAgICgpID0+IGNvbW1hbmRzLmNyZWF0ZVBhcmFncmFwaE5lYXIoKSxcbiAgICAgICgpID0+IGNvbW1hbmRzLmxpZnRFbXB0eUJsb2NrKCksXG4gICAgICAoKSA9PiBjb21tYW5kcy5zcGxpdEJsb2NrKClcbiAgICBdKTtcbiAgICBjb25zdCBiYXNlS2V5bWFwID0ge1xuICAgICAgRW50ZXI6IGhhbmRsZUVudGVyLFxuICAgICAgXCJNb2QtRW50ZXJcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMuZXhpdENvZGUoKSxcbiAgICAgIEJhY2tzcGFjZTogaGFuZGxlQmFja3NwYWNlLFxuICAgICAgXCJNb2QtQmFja3NwYWNlXCI6IGhhbmRsZUJhY2tzcGFjZSxcbiAgICAgIFwiU2hpZnQtQmFja3NwYWNlXCI6IGhhbmRsZUJhY2tzcGFjZSxcbiAgICAgIERlbGV0ZTogaGFuZGxlRGVsZXRlLFxuICAgICAgXCJNb2QtRGVsZXRlXCI6IGhhbmRsZURlbGV0ZSxcbiAgICAgIFwiTW9kLWFcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMuc2VsZWN0QWxsKClcbiAgICB9O1xuICAgIGNvbnN0IHBjS2V5bWFwID0ge1xuICAgICAgLi4uYmFzZUtleW1hcFxuICAgIH07XG4gICAgY29uc3QgbWFjS2V5bWFwID0ge1xuICAgICAgLi4uYmFzZUtleW1hcCxcbiAgICAgIFwiQ3RybC1oXCI6IGhhbmRsZUJhY2tzcGFjZSxcbiAgICAgIFwiQWx0LUJhY2tzcGFjZVwiOiBoYW5kbGVCYWNrc3BhY2UsXG4gICAgICBcIkN0cmwtZFwiOiBoYW5kbGVEZWxldGUsXG4gICAgICBcIkN0cmwtQWx0LUJhY2tzcGFjZVwiOiBoYW5kbGVEZWxldGUsXG4gICAgICBcIkFsdC1EZWxldGVcIjogaGFuZGxlRGVsZXRlLFxuICAgICAgXCJBbHQtZFwiOiBoYW5kbGVEZWxldGUsXG4gICAgICBcIkN0cmwtYVwiOiAoKSA9PiB0aGlzLmVkaXRvci5jb21tYW5kcy5zZWxlY3RUZXh0YmxvY2tTdGFydCgpLFxuICAgICAgXCJDdHJsLWVcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMuc2VsZWN0VGV4dGJsb2NrRW5kKClcbiAgICB9O1xuICAgIGlmIChpc2lPUygpIHx8IGlzTWFjT1MoKSkge1xuICAgICAgcmV0dXJuIG1hY0tleW1hcDtcbiAgICB9XG4gICAgcmV0dXJuIHBjS2V5bWFwO1xuICB9LFxuICBhZGRQcm9zZU1pcnJvclBsdWdpbnMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIFdpdGggdGhpcyBwbHVnaW4gd2UgY2hlY2sgaWYgdGhlIHdob2xlIGRvY3VtZW50IHdhcyBzZWxlY3RlZCBhbmQgZGVsZXRlZC5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSB3aWxsIGFkZGl0aW9uYWxseSBjYWxsIGBjbGVhck5vZGVzKClgIHRvIGNvbnZlcnQgZS5nLiBhIGhlYWRpbmdcbiAgICAgIC8vIHRvIGEgcGFyYWdyYXBoIGlmIG5lY2Vzc2FyeS5cbiAgICAgIC8vIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gUHJvc2VNaXJyb3IncyBgQWxsU2VsZWN0aW9uYCwgd2hpY2ggZG9lc27igJl0IHdvcmsgd2VsbFxuICAgICAgLy8gd2l0aCBtYW55IG90aGVyIGNvbW1hbmRzLlxuICAgICAgbmV3IFBsdWdpbjcoe1xuICAgICAgICBrZXk6IG5ldyBQbHVnaW5LZXk1KFwiY2xlYXJEb2N1bWVudFwiKSxcbiAgICAgICAgYXBwZW5kVHJhbnNhY3Rpb246ICh0cmFuc2FjdGlvbnMsIG9sZFN0YXRlLCBuZXdTdGF0ZSkgPT4ge1xuICAgICAgICAgIGlmICh0cmFuc2FjdGlvbnMuc29tZSgodHIyKSA9PiB0cjIuZ2V0TWV0YShcImNvbXBvc2l0aW9uXCIpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkb2NDaGFuZ2VzID0gdHJhbnNhY3Rpb25zLnNvbWUoKHRyYW5zYWN0aW9uKSA9PiB0cmFuc2FjdGlvbi5kb2NDaGFuZ2VkKSAmJiAhb2xkU3RhdGUuZG9jLmVxKG5ld1N0YXRlLmRvYyk7XG4gICAgICAgICAgY29uc3QgaWdub3JlVHIgPSB0cmFuc2FjdGlvbnMuc29tZSgodHJhbnNhY3Rpb24pID0+IHRyYW5zYWN0aW9uLmdldE1ldGEoXCJwcmV2ZW50Q2xlYXJEb2N1bWVudFwiKSk7XG4gICAgICAgICAgaWYgKCFkb2NDaGFuZ2VzIHx8IGlnbm9yZVRyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgZW1wdHksIGZyb20sIHRvIH0gPSBvbGRTdGF0ZS5zZWxlY3Rpb247XG4gICAgICAgICAgY29uc3QgYWxsRnJvbSA9IFNlbGVjdGlvbjMuYXRTdGFydChvbGRTdGF0ZS5kb2MpLmZyb207XG4gICAgICAgICAgY29uc3QgYWxsRW5kID0gU2VsZWN0aW9uMy5hdEVuZChvbGRTdGF0ZS5kb2MpLnRvO1xuICAgICAgICAgIGNvbnN0IGFsbFdhc1NlbGVjdGVkID0gZnJvbSA9PT0gYWxsRnJvbSAmJiB0byA9PT0gYWxsRW5kO1xuICAgICAgICAgIGlmIChlbXB0eSB8fCAhYWxsV2FzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNFbXB0eSA9IGlzTm9kZUVtcHR5KG5ld1N0YXRlLmRvYyk7XG4gICAgICAgICAgaWYgKCFpc0VtcHR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyID0gbmV3U3RhdGUudHI7XG4gICAgICAgICAgY29uc3Qgc3RhdGUgPSBjcmVhdGVDaGFpbmFibGVTdGF0ZSh7XG4gICAgICAgICAgICBzdGF0ZTogbmV3U3RhdGUsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbjogdHJcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCB7IGNvbW1hbmRzIH0gPSBuZXcgQ29tbWFuZE1hbmFnZXIoe1xuICAgICAgICAgICAgZWRpdG9yOiB0aGlzLmVkaXRvcixcbiAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29tbWFuZHMuY2xlYXJOb2RlcygpO1xuICAgICAgICAgIGlmICghdHIuc3RlcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cjtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICBdO1xuICB9XG59KTtcblxuLy8gc3JjL2V4dGVuc2lvbnMvcGFzdGUudHNcbmltcG9ydCB7IFBsdWdpbiBhcyBQbHVnaW44LCBQbHVnaW5LZXkgYXMgUGx1Z2luS2V5NiB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG52YXIgUGFzdGUgPSBFeHRlbnNpb24uY3JlYXRlKHtcbiAgbmFtZTogXCJwYXN0ZVwiLFxuICBhZGRQcm9zZU1pcnJvclBsdWdpbnMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBQbHVnaW44KHtcbiAgICAgICAga2V5OiBuZXcgUGx1Z2luS2V5NihcInRpcHRhcFBhc3RlXCIpLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIGhhbmRsZVBhc3RlOiAoX3ZpZXcsIGUsIHNsaWNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5lbWl0KFwicGFzdGVcIiwge1xuICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgICAgICAgc2xpY2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICBdO1xuICB9XG59KTtcblxuLy8gc3JjL2V4dGVuc2lvbnMvdGFiaW5kZXgudHNcbmltcG9ydCB7IFBsdWdpbiBhcyBQbHVnaW45LCBQbHVnaW5LZXkgYXMgUGx1Z2luS2V5NyB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG52YXIgVGFiaW5kZXggPSBFeHRlbnNpb24uY3JlYXRlKHtcbiAgbmFtZTogXCJ0YWJpbmRleFwiLFxuICBhZGRQcm9zZU1pcnJvclBsdWdpbnMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBQbHVnaW45KHtcbiAgICAgICAga2V5OiBuZXcgUGx1Z2luS2V5NyhcInRhYmluZGV4XCIpLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6ICgpID0+IHRoaXMuZWRpdG9yLmlzRWRpdGFibGUgPyB7IHRhYmluZGV4OiBcIjBcIiB9IDoge31cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICBdO1xuICB9XG59KTtcblxuLy8gc3JjL2V4dGVuc2lvbnMvdGV4dERpcmVjdGlvbi50c1xuaW1wb3J0IHsgUGx1Z2luIGFzIFBsdWdpbjEwLCBQbHVnaW5LZXkgYXMgUGx1Z2luS2V5OCB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG52YXIgVGV4dERpcmVjdGlvbiA9IEV4dGVuc2lvbi5jcmVhdGUoe1xuICBuYW1lOiBcInRleHREaXJlY3Rpb25cIixcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0aW9uOiB2b2lkIDBcbiAgICB9O1xuICB9LFxuICBhZGRHbG9iYWxBdHRyaWJ1dGVzKCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmRpcmVjdGlvbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCB7IG5vZGVFeHRlbnNpb25zIH0gPSBzcGxpdEV4dGVuc2lvbnModGhpcy5leHRlbnNpb25zKTtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0eXBlczogbm9kZUV4dGVuc2lvbnMuZmlsdGVyKChleHRlbnNpb24pID0+IGV4dGVuc2lvbi5uYW1lICE9PSBcInRleHRcIikubWFwKChleHRlbnNpb24pID0+IGV4dGVuc2lvbi5uYW1lKSxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgIGRpcjoge1xuICAgICAgICAgICAgZGVmYXVsdDogdGhpcy5vcHRpb25zLmRpcmVjdGlvbixcbiAgICAgICAgICAgIHBhcnNlSFRNTDogKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGlyID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkaXJcIik7XG4gICAgICAgICAgICAgIGlmIChkaXIgJiYgKGRpciA9PT0gXCJsdHJcIiB8fCBkaXIgPT09IFwicnRsXCIgfHwgZGlyID09PSBcImF1dG9cIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlbmRlckhUTUw6IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghYXR0cmlidXRlcy5kaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkaXI6IGF0dHJpYnV0ZXMuZGlyXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcbiAgfSxcbiAgYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCkge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGx1Z2luMTAoe1xuICAgICAgICBrZXk6IG5ldyBQbHVnaW5LZXk4KFwidGV4dERpcmVjdGlvblwiKSxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBhdHRyaWJ1dGVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uO1xuICAgICAgICAgICAgaWYgKCFkaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGlyOiBkaXJlY3Rpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF07XG4gIH1cbn0pO1xuXG4vLyBzcmMvTm9kZVBvcy50c1xudmFyIE5vZGVQb3MgPSBjbGFzcyBfTm9kZVBvcyB7XG4gIGNvbnN0cnVjdG9yKHBvcywgZWRpdG9yLCBpc0Jsb2NrID0gZmFsc2UsIG5vZGUgPSBudWxsKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IG51bGw7XG4gICAgdGhpcy5hY3R1YWxEZXB0aCA9IG51bGw7XG4gICAgdGhpcy5pc0Jsb2NrID0gaXNCbG9jaztcbiAgICB0aGlzLnJlc29sdmVkUG9zID0gcG9zO1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBub2RlO1xuICB9XG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGUudHlwZS5uYW1lO1xuICB9XG4gIGdldCBub2RlKCkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlIHx8IHRoaXMucmVzb2x2ZWRQb3Mubm9kZSgpO1xuICB9XG4gIGdldCBlbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmVkaXRvci52aWV3LmRvbUF0UG9zKHRoaXMucG9zKS5ub2RlO1xuICB9XG4gIGdldCBkZXB0aCgpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IHRoaXMuYWN0dWFsRGVwdGgpICE9IG51bGwgPyBfYSA6IHRoaXMucmVzb2x2ZWRQb3MuZGVwdGg7XG4gIH1cbiAgZ2V0IHBvcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFBvcy5wb3M7XG4gIH1cbiAgZ2V0IGNvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZS5jb250ZW50O1xuICB9XG4gIHNldCBjb250ZW50KGNvbnRlbnQpIHtcbiAgICBsZXQgZnJvbSA9IHRoaXMuZnJvbTtcbiAgICBsZXQgdG8gPSB0aGlzLnRvO1xuICAgIGlmICh0aGlzLmlzQmxvY2spIHtcbiAgICAgIGlmICh0aGlzLmNvbnRlbnQuc2l6ZSA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBZb3UgY2FuXFx1MjAxOXQgc2V0IGNvbnRlbnQgb24gYSBibG9jayBub2RlLiBUcmllZCB0byBzZXQgY29udGVudCBvbiAke3RoaXMubmFtZX0gYXQgJHt0aGlzLnBvc31gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZnJvbSA9IHRoaXMuZnJvbSArIDE7XG4gICAgICB0byA9IHRoaXMudG8gLSAxO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvci5jb21tYW5kcy5pbnNlcnRDb250ZW50QXQoeyBmcm9tLCB0byB9LCBjb250ZW50KTtcbiAgfVxuICBnZXQgYXR0cmlidXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlLmF0dHJzO1xuICB9XG4gIGdldCB0ZXh0Q29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlLnRleHRDb250ZW50O1xuICB9XG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGUubm9kZVNpemU7XG4gIH1cbiAgZ2V0IGZyb20oKSB7XG4gICAgaWYgKHRoaXMuaXNCbG9jaykge1xuICAgICAgcmV0dXJuIHRoaXMucG9zO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFBvcy5zdGFydCh0aGlzLnJlc29sdmVkUG9zLmRlcHRoKTtcbiAgfVxuICBnZXQgcmFuZ2UoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZyb206IHRoaXMuZnJvbSxcbiAgICAgIHRvOiB0aGlzLnRvXG4gICAgfTtcbiAgfVxuICBnZXQgdG8oKSB7XG4gICAgaWYgKHRoaXMuaXNCbG9jaykge1xuICAgICAgcmV0dXJuIHRoaXMucG9zICsgdGhpcy5zaXplO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFBvcy5lbmQodGhpcy5yZXNvbHZlZFBvcy5kZXB0aCkgKyAodGhpcy5ub2RlLmlzVGV4dCA/IDAgOiAxKTtcbiAgfVxuICBnZXQgcGFyZW50KCkge1xuICAgIGlmICh0aGlzLmRlcHRoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50UG9zID0gdGhpcy5yZXNvbHZlZFBvcy5zdGFydCh0aGlzLnJlc29sdmVkUG9zLmRlcHRoIC0gMSk7XG4gICAgY29uc3QgJHBvcyA9IHRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUocGFyZW50UG9zKTtcbiAgICByZXR1cm4gbmV3IF9Ob2RlUG9zKCRwb3MsIHRoaXMuZWRpdG9yKTtcbiAgfVxuICBnZXQgYmVmb3JlKCkge1xuICAgIGxldCAkcG9zID0gdGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZSh0aGlzLmZyb20gLSAodGhpcy5pc0Jsb2NrID8gMSA6IDIpKTtcbiAgICBpZiAoJHBvcy5kZXB0aCAhPT0gdGhpcy5kZXB0aCkge1xuICAgICAgJHBvcyA9IHRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUodGhpcy5mcm9tIC0gMyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgX05vZGVQb3MoJHBvcywgdGhpcy5lZGl0b3IpO1xuICB9XG4gIGdldCBhZnRlcigpIHtcbiAgICBsZXQgJHBvcyA9IHRoaXMucmVzb2x2ZWRQb3MuZG9jLnJlc29sdmUodGhpcy50byArICh0aGlzLmlzQmxvY2sgPyAyIDogMSkpO1xuICAgIGlmICgkcG9zLmRlcHRoICE9PSB0aGlzLmRlcHRoKSB7XG4gICAgICAkcG9zID0gdGhpcy5yZXNvbHZlZFBvcy5kb2MucmVzb2x2ZSh0aGlzLnRvICsgMyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgX05vZGVQb3MoJHBvcywgdGhpcy5lZGl0b3IpO1xuICB9XG4gIGdldCBjaGlsZHJlbigpIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFtdO1xuICAgIHRoaXMubm9kZS5jb250ZW50LmZvckVhY2goKG5vZGUsIG9mZnNldCkgPT4ge1xuICAgICAgY29uc3QgaXNCbG9jayA9IG5vZGUuaXNCbG9jayAmJiAhbm9kZS5pc1RleHRibG9jaztcbiAgICAgIGNvbnN0IGlzTm9uVGV4dEF0b20gPSBub2RlLmlzQXRvbSAmJiAhbm9kZS5pc1RleHQ7XG4gICAgICBjb25zdCBpc0lubGluZSA9IG5vZGUuaXNJbmxpbmU7XG4gICAgICBjb25zdCB0YXJnZXRQb3MgPSB0aGlzLnBvcyArIG9mZnNldCArIChpc05vblRleHRBdG9tID8gMCA6IDEpO1xuICAgICAgaWYgKHRhcmdldFBvcyA8IDAgfHwgdGFyZ2V0UG9zID4gdGhpcy5yZXNvbHZlZFBvcy5kb2Mubm9kZVNpemUgLSAyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0ICRwb3MgPSB0aGlzLnJlc29sdmVkUG9zLmRvYy5yZXNvbHZlKHRhcmdldFBvcyk7XG4gICAgICBpZiAoIWlzQmxvY2sgJiYgIWlzSW5saW5lICYmICRwb3MuZGVwdGggPD0gdGhpcy5kZXB0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjaGlsZE5vZGVQb3MgPSBuZXcgX05vZGVQb3MoJHBvcywgdGhpcy5lZGl0b3IsIGlzQmxvY2ssIGlzQmxvY2sgfHwgaXNJbmxpbmUgPyBub2RlIDogbnVsbCk7XG4gICAgICBpZiAoaXNCbG9jaykge1xuICAgICAgICBjaGlsZE5vZGVQb3MuYWN0dWFsRGVwdGggPSB0aGlzLmRlcHRoICsgMTtcbiAgICAgIH1cbiAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGROb2RlUG9zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgZ2V0IGZpcnN0Q2hpbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5bMF0gfHwgbnVsbDtcbiAgfVxuICBnZXQgbGFzdENoaWxkKCkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICByZXR1cm4gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0gfHwgbnVsbDtcbiAgfVxuICBjbG9zZXN0KHNlbGVjdG9yLCBhdHRyaWJ1dGVzID0ge30pIHtcbiAgICBsZXQgbm9kZSA9IG51bGw7XG4gICAgbGV0IGN1cnJlbnROb2RlID0gdGhpcy5wYXJlbnQ7XG4gICAgd2hpbGUgKGN1cnJlbnROb2RlICYmICFub2RlKSB7XG4gICAgICBpZiAoY3VycmVudE5vZGUubm9kZS50eXBlLm5hbWUgPT09IHNlbGVjdG9yKSB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3Qgbm9kZUF0dHJpYnV0ZXMgPSBjdXJyZW50Tm9kZS5ub2RlLmF0dHJzO1xuICAgICAgICAgIGNvbnN0IGF0dHJLZXlzID0gT2JqZWN0LmtleXMoYXR0cmlidXRlcyk7XG4gICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGF0dHJLZXlzLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gYXR0cktleXNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKG5vZGVBdHRyaWJ1dGVzW2tleV0gIT09IGF0dHJpYnV0ZXNba2V5XSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZSA9IGN1cnJlbnROb2RlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgcXVlcnlTZWxlY3RvcihzZWxlY3RvciwgYXR0cmlidXRlcyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvciwgYXR0cmlidXRlcywgdHJ1ZSlbMF0gfHwgbnVsbDtcbiAgfVxuICBxdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yLCBhdHRyaWJ1dGVzID0ge30sIGZpcnN0SXRlbU9ubHkgPSBmYWxzZSkge1xuICAgIGxldCBub2RlcyA9IFtdO1xuICAgIGlmICghdGhpcy5jaGlsZHJlbiB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cbiAgICBjb25zdCBhdHRyS2V5cyA9IE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpO1xuICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGRQb3MpID0+IHtcbiAgICAgIGlmIChmaXJzdEl0ZW1Pbmx5ICYmIG5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkUG9zLm5vZGUudHlwZS5uYW1lID09PSBzZWxlY3Rvcikge1xuICAgICAgICBjb25zdCBkb2VzQWxsQXR0cmlidXRlc01hdGNoID0gYXR0cktleXMuZXZlcnkoKGtleSkgPT4gYXR0cmlidXRlc1trZXldID09PSBjaGlsZFBvcy5ub2RlLmF0dHJzW2tleV0pO1xuICAgICAgICBpZiAoZG9lc0FsbEF0dHJpYnV0ZXNNYXRjaCkge1xuICAgICAgICAgIG5vZGVzLnB1c2goY2hpbGRQb3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZmlyc3RJdGVtT25seSAmJiBub2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG5vZGVzID0gbm9kZXMuY29uY2F0KGNoaWxkUG9zLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IsIGF0dHJpYnV0ZXMsIGZpcnN0SXRlbU9ubHkpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cbiAgc2V0QXR0cmlidXRlKGF0dHJpYnV0ZXMpIHtcbiAgICBjb25zdCB7IHRyIH0gPSB0aGlzLmVkaXRvci5zdGF0ZTtcbiAgICB0ci5zZXROb2RlTWFya3VwKHRoaXMuZnJvbSwgdm9pZCAwLCB7XG4gICAgICAuLi50aGlzLm5vZGUuYXR0cnMsXG4gICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgfSk7XG4gICAgdGhpcy5lZGl0b3Iudmlldy5kaXNwYXRjaCh0cik7XG4gIH1cbn07XG5cbi8vIHNyYy9zdHlsZS50c1xudmFyIHN0eWxlID0gYC5Qcm9zZU1pcnJvciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLlByb3NlTWlycm9yIHtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIHdoaXRlLXNwYWNlOiBicmVhay1zcGFjZXM7XG4gIC13ZWJraXQtZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9uZTtcbiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9uZTtcbiAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIiAwOyAvKiB0aGUgYWJvdmUgZG9lc24ndCBzZWVtIHRvIHdvcmsgaW4gRWRnZSAqL1xufVxuXG4uUHJvc2VNaXJyb3IgW2NvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJdIHtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuLlByb3NlTWlycm9yIFtjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiXSBbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXSB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuLlByb3NlTWlycm9yIHByZSB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuaW1nLlByb3NlTWlycm9yLXNlcGFyYXRvciB7XG4gIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAwICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMCAhaW1wb3J0YW50O1xufVxuXG4uUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uUHJvc2VNaXJyb3ItZ2FwY3Vyc29yOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMnB4O1xuICB3aWR0aDogMjBweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrO1xuICBhbmltYXRpb246IFByb3NlTWlycm9yLWN1cnNvci1ibGluayAxLjFzIHN0ZXBzKDIsIHN0YXJ0KSBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBQcm9zZU1pcnJvci1jdXJzb3ItYmxpbmsge1xuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG59XG5cbi5Qcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uICo6OnNlbGVjdGlvbiB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uUHJvc2VNaXJyb3ItaGlkZXNlbGVjdGlvbiAqOjotbW96LXNlbGVjdGlvbiB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uUHJvc2VNaXJyb3ItaGlkZXNlbGVjdGlvbiAqIHtcbiAgY2FyZXQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uUHJvc2VNaXJyb3ItZm9jdXNlZCAuUHJvc2VNaXJyb3ItZ2FwY3Vyc29yIHtcbiAgZGlzcGxheTogYmxvY2s7XG59YDtcblxuLy8gc3JjL3V0aWxpdGllcy9jcmVhdGVTdHlsZVRhZy50c1xuZnVuY3Rpb24gY3JlYXRlU3R5bGVUYWcoc3R5bGUyLCBub25jZSwgc3VmZml4KSB7XG4gIGNvbnN0IHRpcHRhcFN0eWxlVGFnID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc3R5bGVbZGF0YS10aXB0YXAtc3R5bGUke3N1ZmZpeCA/IGAtJHtzdWZmaXh9YCA6IFwiXCJ9XWApO1xuICBpZiAodGlwdGFwU3R5bGVUYWcgIT09IG51bGwpIHtcbiAgICByZXR1cm4gdGlwdGFwU3R5bGVUYWc7XG4gIH1cbiAgY29uc3Qgc3R5bGVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZU5vZGUuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG4gIHN0eWxlTm9kZS5zZXRBdHRyaWJ1dGUoYGRhdGEtdGlwdGFwLXN0eWxlJHtzdWZmaXggPyBgLSR7c3VmZml4fWAgOiBcIlwifWAsIFwiXCIpO1xuICBzdHlsZU5vZGUuaW5uZXJIVE1MID0gc3R5bGUyO1xuICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQoc3R5bGVOb2RlKTtcbiAgcmV0dXJuIHN0eWxlTm9kZTtcbn1cblxuLy8gc3JjL0VkaXRvci50c1xudmFyIEVkaXRvciA9IGNsYXNzIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNzcyA9IG51bGw7XG4gICAgdGhpcy5jbGFzc05hbWUgPSBcInRpcHRhcFwiO1xuICAgIHRoaXMuZWRpdG9yVmlldyA9IG51bGw7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBUaGUgZWRpdG9yIGlzIGNvbnNpZGVyZWQgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIGBjcmVhdGVgIGV2ZW50IGhhcyBiZWVuIGVtaXR0ZWQuXG4gICAgICovXG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5leHRlbnNpb25TdG9yYWdlID0ge307XG4gICAgLyoqXG4gICAgICogQSB1bmlxdWUgSUQgZm9yIHRoaXMgZWRpdG9yIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHRoaXMuaW5zdGFuY2VJZCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDkpO1xuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIGVsZW1lbnQ6IHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIiA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikgOiBudWxsLFxuICAgICAgY29udGVudDogXCJcIixcbiAgICAgIGluamVjdENTUzogdHJ1ZSxcbiAgICAgIGluamVjdE5vbmNlOiB2b2lkIDAsXG4gICAgICBleHRlbnNpb25zOiBbXSxcbiAgICAgIGF1dG9mb2N1czogZmFsc2UsXG4gICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgIHRleHREaXJlY3Rpb246IHZvaWQgMCxcbiAgICAgIGVkaXRvclByb3BzOiB7fSxcbiAgICAgIHBhcnNlT3B0aW9uczoge30sXG4gICAgICBjb3JlRXh0ZW5zaW9uT3B0aW9uczoge30sXG4gICAgICBlbmFibGVJbnB1dFJ1bGVzOiB0cnVlLFxuICAgICAgZW5hYmxlUGFzdGVSdWxlczogdHJ1ZSxcbiAgICAgIGVuYWJsZUNvcmVFeHRlbnNpb25zOiB0cnVlLFxuICAgICAgZW5hYmxlQ29udGVudENoZWNrOiBmYWxzZSxcbiAgICAgIGVtaXRDb250ZW50RXJyb3I6IGZhbHNlLFxuICAgICAgb25CZWZvcmVDcmVhdGU6ICgpID0+IG51bGwsXG4gICAgICBvbkNyZWF0ZTogKCkgPT4gbnVsbCxcbiAgICAgIG9uTW91bnQ6ICgpID0+IG51bGwsXG4gICAgICBvblVubW91bnQ6ICgpID0+IG51bGwsXG4gICAgICBvblVwZGF0ZTogKCkgPT4gbnVsbCxcbiAgICAgIG9uU2VsZWN0aW9uVXBkYXRlOiAoKSA9PiBudWxsLFxuICAgICAgb25UcmFuc2FjdGlvbjogKCkgPT4gbnVsbCxcbiAgICAgIG9uRm9jdXM6ICgpID0+IG51bGwsXG4gICAgICBvbkJsdXI6ICgpID0+IG51bGwsXG4gICAgICBvbkRlc3Ryb3k6ICgpID0+IG51bGwsXG4gICAgICBvbkNvbnRlbnRFcnJvcjogKHsgZXJyb3IgfSkgPT4ge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0sXG4gICAgICBvblBhc3RlOiAoKSA9PiBudWxsLFxuICAgICAgb25Ecm9wOiAoKSA9PiBudWxsLFxuICAgICAgb25EZWxldGU6ICgpID0+IG51bGwsXG4gICAgICBlbmFibGVFeHRlbnNpb25EaXNwYXRjaFRyYW5zYWN0aW9uOiB0cnVlXG4gICAgfTtcbiAgICB0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb24gPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzZXQgb2YgdXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggcG9zaXRpb25zIGFuZCByYW5nZXMuXG4gICAgICovXG4gICAgdGhpcy51dGlscyA9IHtcbiAgICAgIGdldFVwZGF0ZWRQb3NpdGlvbixcbiAgICAgIGNyZWF0ZU1hcHBhYmxlUG9zaXRpb25cbiAgICB9O1xuICAgIHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICB0aGlzLmNyZWF0ZUV4dGVuc2lvbk1hbmFnZXIoKTtcbiAgICB0aGlzLmNyZWF0ZUNvbW1hbmRNYW5hZ2VyKCk7XG4gICAgdGhpcy5jcmVhdGVTY2hlbWEoKTtcbiAgICB0aGlzLm9uKFwiYmVmb3JlQ3JlYXRlXCIsIHRoaXMub3B0aW9ucy5vbkJlZm9yZUNyZWF0ZSk7XG4gICAgdGhpcy5lbWl0KFwiYmVmb3JlQ3JlYXRlXCIsIHsgZWRpdG9yOiB0aGlzIH0pO1xuICAgIHRoaXMub24oXCJtb3VudFwiLCB0aGlzLm9wdGlvbnMub25Nb3VudCk7XG4gICAgdGhpcy5vbihcInVubW91bnRcIiwgdGhpcy5vcHRpb25zLm9uVW5tb3VudCk7XG4gICAgdGhpcy5vbihcImNvbnRlbnRFcnJvclwiLCB0aGlzLm9wdGlvbnMub25Db250ZW50RXJyb3IpO1xuICAgIHRoaXMub24oXCJjcmVhdGVcIiwgdGhpcy5vcHRpb25zLm9uQ3JlYXRlKTtcbiAgICB0aGlzLm9uKFwidXBkYXRlXCIsIHRoaXMub3B0aW9ucy5vblVwZGF0ZSk7XG4gICAgdGhpcy5vbihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLm9wdGlvbnMub25TZWxlY3Rpb25VcGRhdGUpO1xuICAgIHRoaXMub24oXCJ0cmFuc2FjdGlvblwiLCB0aGlzLm9wdGlvbnMub25UcmFuc2FjdGlvbik7XG4gICAgdGhpcy5vbihcImZvY3VzXCIsIHRoaXMub3B0aW9ucy5vbkZvY3VzKTtcbiAgICB0aGlzLm9uKFwiYmx1clwiLCB0aGlzLm9wdGlvbnMub25CbHVyKTtcbiAgICB0aGlzLm9uKFwiZGVzdHJveVwiLCB0aGlzLm9wdGlvbnMub25EZXN0cm95KTtcbiAgICB0aGlzLm9uKFwiZHJvcFwiLCAoeyBldmVudCwgc2xpY2UsIG1vdmVkIH0pID0+IHRoaXMub3B0aW9ucy5vbkRyb3AoZXZlbnQsIHNsaWNlLCBtb3ZlZCkpO1xuICAgIHRoaXMub24oXCJwYXN0ZVwiLCAoeyBldmVudCwgc2xpY2UgfSkgPT4gdGhpcy5vcHRpb25zLm9uUGFzdGUoZXZlbnQsIHNsaWNlKSk7XG4gICAgdGhpcy5vbihcImRlbGV0ZVwiLCB0aGlzLm9wdGlvbnMub25EZWxldGUpO1xuICAgIGNvbnN0IGluaXRpYWxEb2MgPSB0aGlzLmNyZWF0ZURvYygpO1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHJlc29sdmVGb2N1c1Bvc2l0aW9uKGluaXRpYWxEb2MsIHRoaXMub3B0aW9ucy5hdXRvZm9jdXMpO1xuICAgIHRoaXMuZWRpdG9yU3RhdGUgPSBFZGl0b3JTdGF0ZS5jcmVhdGUoe1xuICAgICAgZG9jOiBpbml0aWFsRG9jLFxuICAgICAgc2NoZW1hOiB0aGlzLnNjaGVtYSxcbiAgICAgIHNlbGVjdGlvbjogc2VsZWN0aW9uIHx8IHZvaWQgMFxuICAgIH0pO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZWxlbWVudCkge1xuICAgICAgdGhpcy5tb3VudCh0aGlzLm9wdGlvbnMuZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBBdHRhY2ggdGhlIGVkaXRvciB0byB0aGUgRE9NLCBjcmVhdGluZyBhIG5ldyBlZGl0b3Igdmlldy5cbiAgICovXG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgW3RpcHRhcCBlcnJvcl06IFRoZSBlZGl0b3IgY2Fubm90IGJlIG1vdW50ZWQgYmVjYXVzZSB0aGVyZSBpcyBubyAnZG9jdW1lbnQnIGRlZmluZWQgaW4gdGhpcyBlbnZpcm9ubWVudC5gXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZVZpZXcoZWwpO1xuICAgIHRoaXMuZW1pdChcIm1vdW50XCIsIHsgZWRpdG9yOiB0aGlzIH0pO1xuICAgIGlmICh0aGlzLmNzcyAmJiAhZG9jdW1lbnQuaGVhZC5jb250YWlucyh0aGlzLmNzcykpIHtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5jc3MpO1xuICAgIH1cbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9mb2N1cyAhPT0gZmFsc2UgJiYgdGhpcy5vcHRpb25zLmF1dG9mb2N1cyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbW1hbmRzLmZvY3VzKHRoaXMub3B0aW9ucy5hdXRvZm9jdXMpO1xuICAgICAgfVxuICAgICAgdGhpcy5lbWl0KFwiY3JlYXRlXCIsIHsgZWRpdG9yOiB0aGlzIH0pO1xuICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9LCAwKTtcbiAgfVxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBlZGl0b3IgZnJvbSB0aGUgRE9NLCBidXQgc3RpbGwgYWxsb3cgcmVtb3VudGluZyBhdCBhIGRpZmZlcmVudCBwb2ludCBpbiB0aW1lXG4gICAqL1xuICB1bm1vdW50KCkge1xuICAgIGlmICh0aGlzLmVkaXRvclZpZXcpIHtcbiAgICAgIGNvbnN0IGRvbSA9IHRoaXMuZWRpdG9yVmlldy5kb207XG4gICAgICBpZiAoZG9tID09IG51bGwgPyB2b2lkIDAgOiBkb20uZWRpdG9yKSB7XG4gICAgICAgIGRlbGV0ZSBkb20uZWRpdG9yO1xuICAgICAgfVxuICAgICAgdGhpcy5lZGl0b3JWaWV3LmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5lZGl0b3JWaWV3ID0gbnVsbDtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5jc3MgJiYgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3RoaXMuY2xhc3NOYW1lfWApLmxlbmd0aCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNzcy5yZW1vdmUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHRoaXMuY3NzLnJlbW92ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3NzLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICB0aGlzLmNzcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuY3NzKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIHJlbW92ZSBDU1MgZWxlbWVudDpcIiwgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNzcyA9IG51bGw7XG4gICAgdGhpcy5lbWl0KFwidW5tb3VudFwiLCB7IGVkaXRvcjogdGhpcyB9KTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZWRpdG9yIHN0b3JhZ2UuXG4gICAqL1xuICBnZXQgc3RvcmFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbnNpb25TdG9yYWdlO1xuICB9XG4gIC8qKlxuICAgKiBBbiBvYmplY3Qgb2YgYWxsIHJlZ2lzdGVyZWQgY29tbWFuZHMuXG4gICAqL1xuICBnZXQgY29tbWFuZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbWFuZE1hbmFnZXIuY29tbWFuZHM7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNvbW1hbmQgY2hhaW4gdG8gY2FsbCBtdWx0aXBsZSBjb21tYW5kcyBhdCBvbmNlLlxuICAgKi9cbiAgY2hhaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbWFuZE1hbmFnZXIuY2hhaW4oKTtcbiAgfVxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBjb21tYW5kIG9yIGEgY29tbWFuZCBjaGFpbiBjYW4gYmUgZXhlY3V0ZWQuIFdpdGhvdXQgZXhlY3V0aW5nIGl0LlxuICAgKi9cbiAgY2FuKCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNhbigpO1xuICB9XG4gIC8qKlxuICAgKiBJbmplY3QgQ1NTIHN0eWxlcy5cbiAgICovXG4gIGluamVjdENTUygpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmluamVjdENTUyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMuY3NzID0gY3JlYXRlU3R5bGVUYWcoc3R5bGUsIHRoaXMub3B0aW9ucy5pbmplY3ROb25jZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBVcGRhdGUgZWRpdG9yIG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIEEgbGlzdCBvZiBvcHRpb25zXG4gICAqL1xuICBzZXRPcHRpb25zKG9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuICAgIGlmICghdGhpcy5lZGl0b3JWaWV3IHx8ICF0aGlzLnN0YXRlIHx8IHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5lZGl0b3JQcm9wcykge1xuICAgICAgdGhpcy52aWV3LnNldFByb3BzKHRoaXMub3B0aW9ucy5lZGl0b3JQcm9wcyk7XG4gICAgfVxuICAgIHRoaXMudmlldy51cGRhdGVTdGF0ZSh0aGlzLnN0YXRlKTtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIGVkaXRhYmxlIHN0YXRlIG9mIHRoZSBlZGl0b3IuXG4gICAqL1xuICBzZXRFZGl0YWJsZShlZGl0YWJsZSwgZW1pdFVwZGF0ZSA9IHRydWUpIHtcbiAgICB0aGlzLnNldE9wdGlvbnMoeyBlZGl0YWJsZSB9KTtcbiAgICBpZiAoZW1pdFVwZGF0ZSkge1xuICAgICAgdGhpcy5lbWl0KFwidXBkYXRlXCIsIHsgZWRpdG9yOiB0aGlzLCB0cmFuc2FjdGlvbjogdGhpcy5zdGF0ZS50ciwgYXBwZW5kZWRUcmFuc2FjdGlvbnM6IFtdIH0pO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBlZGl0b3IgaXMgZWRpdGFibGUuXG4gICAqL1xuICBnZXQgaXNFZGl0YWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmVkaXRhYmxlICYmIHRoaXMudmlldyAmJiB0aGlzLnZpZXcuZWRpdGFibGU7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVkaXRvciBzdGF0ZS5cbiAgICovXG4gIGdldCB2aWV3KCkge1xuICAgIGlmICh0aGlzLmVkaXRvclZpZXcpIHtcbiAgICAgIHJldHVybiB0aGlzLmVkaXRvclZpZXc7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHJveHkoXG4gICAgICB7XG4gICAgICAgIHN0YXRlOiB0aGlzLmVkaXRvclN0YXRlLFxuICAgICAgICB1cGRhdGVTdGF0ZTogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgdGhpcy5lZGl0b3JTdGF0ZSA9IHN0YXRlO1xuICAgICAgICB9LFxuICAgICAgICBkaXNwYXRjaDogKHRyKSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaFRyYW5zYWN0aW9uKHRyKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gU3R1YiBzb21lIGNvbW1vbmx5IGFjY2Vzc2VkIHByb3BlcnRpZXMgdG8gcHJldmVudCBlcnJvcnNcbiAgICAgICAgY29tcG9zaW5nOiBmYWxzZSxcbiAgICAgICAgZHJhZ2dpbmc6IG51bGwsXG4gICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICBpc0Rlc3Ryb3llZDogZmFsc2VcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGdldDogKG9iaiwga2V5KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZWRpdG9yVmlldykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yVmlld1trZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoa2V5ID09PSBcInN0YXRlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVkaXRvclN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoa2V5IGluIG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KG9iaiwga2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFt0aXB0YXAgZXJyb3JdOiBUaGUgZWRpdG9yIHZpZXcgaXMgbm90IGF2YWlsYWJsZS4gQ2Fubm90IGFjY2VzcyB2aWV3Wycke2tleX0nXS4gVGhlIGVkaXRvciBtYXkgbm90IGJlIG1vdW50ZWQgeWV0LmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZWRpdG9yIHN0YXRlLlxuICAgKi9cbiAgZ2V0IHN0YXRlKCkge1xuICAgIGlmICh0aGlzLmVkaXRvclZpZXcpIHtcbiAgICAgIHRoaXMuZWRpdG9yU3RhdGUgPSB0aGlzLnZpZXcuc3RhdGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmVkaXRvclN0YXRlO1xuICB9XG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIFByb3NlTWlycm9yIHBsdWdpbi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiBBIFByb3NlTWlycm9yIHBsdWdpblxuICAgKiBAcGFyYW0gaGFuZGxlUGx1Z2lucyBDb250cm9sIGhvdyB0byBtZXJnZSB0aGUgcGx1Z2luIGludG8gdGhlIGV4aXN0aW5nIHBsdWdpbnMuXG4gICAqIEByZXR1cm5zIFRoZSBuZXcgZWRpdG9yIHN0YXRlXG4gICAqL1xuICByZWdpc3RlclBsdWdpbihwbHVnaW4sIGhhbmRsZVBsdWdpbnMpIHtcbiAgICBjb25zdCBwbHVnaW5zID0gaXNGdW5jdGlvbihoYW5kbGVQbHVnaW5zKSA/IGhhbmRsZVBsdWdpbnMocGx1Z2luLCBbLi4udGhpcy5zdGF0ZS5wbHVnaW5zXSkgOiBbLi4udGhpcy5zdGF0ZS5wbHVnaW5zLCBwbHVnaW5dO1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7IHBsdWdpbnMgfSk7XG4gICAgdGhpcy52aWV3LnVwZGF0ZVN0YXRlKHN0YXRlKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXIgYSBQcm9zZU1pcnJvciBwbHVnaW4uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lT3JQbHVnaW5LZXlUb1JlbW92ZSBUaGUgcGx1Z2lucyBuYW1lXG4gICAqIEByZXR1cm5zIFRoZSBuZXcgZWRpdG9yIHN0YXRlIG9yIHVuZGVmaW5lZCBpZiB0aGUgZWRpdG9yIGlzIGRlc3Ryb3llZFxuICAgKi9cbiAgdW5yZWdpc3RlclBsdWdpbihuYW1lT3JQbHVnaW5LZXlUb1JlbW92ZSkge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICBjb25zdCBwcmV2UGx1Z2lucyA9IHRoaXMuc3RhdGUucGx1Z2lucztcbiAgICBsZXQgcGx1Z2lucyA9IHByZXZQbHVnaW5zO1xuICAgIFtdLmNvbmNhdChuYW1lT3JQbHVnaW5LZXlUb1JlbW92ZSkuZm9yRWFjaCgobmFtZU9yUGx1Z2luS2V5KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gdHlwZW9mIG5hbWVPclBsdWdpbktleSA9PT0gXCJzdHJpbmdcIiA/IGAke25hbWVPclBsdWdpbktleX0kYCA6IG5hbWVPclBsdWdpbktleS5rZXk7XG4gICAgICBwbHVnaW5zID0gcGx1Z2lucy5maWx0ZXIoKHBsdWdpbikgPT4gIXBsdWdpbi5rZXkuc3RhcnRzV2l0aChuYW1lKSk7XG4gICAgfSk7XG4gICAgaWYgKHByZXZQbHVnaW5zLmxlbmd0aCA9PT0gcGx1Z2lucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7XG4gICAgICBwbHVnaW5zXG4gICAgfSk7XG4gICAgdGhpcy52aWV3LnVwZGF0ZVN0YXRlKHN0YXRlKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZXh0ZW5zaW9uIG1hbmFnZXIuXG4gICAqL1xuICBjcmVhdGVFeHRlbnNpb25NYW5hZ2VyKCkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgY29yZUV4dGVuc2lvbnMgPSB0aGlzLm9wdGlvbnMuZW5hYmxlQ29yZUV4dGVuc2lvbnMgPyBbXG4gICAgICBFZGl0YWJsZSxcbiAgICAgIENsaXBib2FyZFRleHRTZXJpYWxpemVyLmNvbmZpZ3VyZSh7XG4gICAgICAgIGJsb2NrU2VwYXJhdG9yOiAoX2IgPSAoX2EgPSB0aGlzLm9wdGlvbnMuY29yZUV4dGVuc2lvbk9wdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jbGlwYm9hcmRUZXh0U2VyaWFsaXplcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmJsb2NrU2VwYXJhdG9yXG4gICAgICB9KSxcbiAgICAgIENvbW1hbmRzLFxuICAgICAgRm9jdXNFdmVudHMsXG4gICAgICBLZXltYXAsXG4gICAgICBUYWJpbmRleCxcbiAgICAgIERyb3AsXG4gICAgICBQYXN0ZSxcbiAgICAgIERlbGV0ZSxcbiAgICAgIFRleHREaXJlY3Rpb24uY29uZmlndXJlKHtcbiAgICAgICAgZGlyZWN0aW9uOiB0aGlzLm9wdGlvbnMudGV4dERpcmVjdGlvblxuICAgICAgfSlcbiAgICBdLmZpbHRlcigoZXh0KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5lbmFibGVDb3JlRXh0ZW5zaW9ucyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmVuYWJsZUNvcmVFeHRlbnNpb25zW2V4dC5uYW1lXSAhPT0gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KSA6IFtdO1xuICAgIGNvbnN0IGFsbEV4dGVuc2lvbnMgPSBbLi4uY29yZUV4dGVuc2lvbnMsIC4uLnRoaXMub3B0aW9ucy5leHRlbnNpb25zXS5maWx0ZXIoKGV4dGVuc2lvbikgPT4ge1xuICAgICAgcmV0dXJuIFtcImV4dGVuc2lvblwiLCBcIm5vZGVcIiwgXCJtYXJrXCJdLmluY2x1ZGVzKGV4dGVuc2lvbiA9PSBudWxsID8gdm9pZCAwIDogZXh0ZW5zaW9uLnR5cGUpO1xuICAgIH0pO1xuICAgIHRoaXMuZXh0ZW5zaW9uTWFuYWdlciA9IG5ldyBFeHRlbnNpb25NYW5hZ2VyKGFsbEV4dGVuc2lvbnMsIHRoaXMpO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGNvbW1hbmQgbWFuYWdlci5cbiAgICovXG4gIGNyZWF0ZUNvbW1hbmRNYW5hZ2VyKCkge1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIgPSBuZXcgQ29tbWFuZE1hbmFnZXIoe1xuICAgICAgZWRpdG9yOiB0aGlzXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQcm9zZU1pcnJvciBzY2hlbWEuXG4gICAqL1xuICBjcmVhdGVTY2hlbWEoKSB7XG4gICAgdGhpcy5zY2hlbWEgPSB0aGlzLmV4dGVuc2lvbk1hbmFnZXIuc2NoZW1hO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBpbml0aWFsIGRvY3VtZW50LlxuICAgKi9cbiAgY3JlYXRlRG9jKCkge1xuICAgIGxldCBkb2M7XG4gICAgdHJ5IHtcbiAgICAgIGRvYyA9IGNyZWF0ZURvY3VtZW50KHRoaXMub3B0aW9ucy5jb250ZW50LCB0aGlzLnNjaGVtYSwgdGhpcy5vcHRpb25zLnBhcnNlT3B0aW9ucywge1xuICAgICAgICBlcnJvck9uSW52YWxpZENvbnRlbnQ6IHRoaXMub3B0aW9ucy5lbmFibGVDb250ZW50Q2hlY2tcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBFcnJvcikgfHwgIVtcIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEpTT04gY29udGVudFwiLCBcIlt0aXB0YXAgZXJyb3JdOiBJbnZhbGlkIEhUTUwgY29udGVudFwiXS5pbmNsdWRlcyhlLm1lc3NhZ2UpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICB0aGlzLmVtaXQoXCJjb250ZW50RXJyb3JcIiwge1xuICAgICAgICBlZGl0b3I6IHRoaXMsXG4gICAgICAgIGVycm9yOiBlLFxuICAgICAgICBkaXNhYmxlQ29sbGFib3JhdGlvbjogKCkgPT4ge1xuICAgICAgICAgIGlmIChcImNvbGxhYm9yYXRpb25cIiBpbiB0aGlzLnN0b3JhZ2UgJiYgdHlwZW9mIHRoaXMuc3RvcmFnZS5jb2xsYWJvcmF0aW9uID09PSBcIm9iamVjdFwiICYmIHRoaXMuc3RvcmFnZS5jb2xsYWJvcmF0aW9uKSB7XG4gICAgICAgICAgICA7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2UuY29sbGFib3JhdGlvbi5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMgPSB0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5maWx0ZXIoKGV4dGVuc2lvbikgPT4gZXh0ZW5zaW9uLm5hbWUgIT09IFwiY29sbGFib3JhdGlvblwiKTtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUV4dGVuc2lvbk1hbmFnZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkb2MgPSBjcmVhdGVEb2N1bWVudCh0aGlzLm9wdGlvbnMuY29udGVudCwgdGhpcy5zY2hlbWEsIHRoaXMub3B0aW9ucy5wYXJzZU9wdGlvbnMsIHtcbiAgICAgICAgZXJyb3JPbkludmFsaWRDb250ZW50OiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBkb2M7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQcm9zZU1pcnJvciB2aWV3LlxuICAgKi9cbiAgY3JlYXRlVmlldyhlbGVtZW50KSB7XG4gICAgY29uc3QgeyBlZGl0b3JQcm9wcywgZW5hYmxlRXh0ZW5zaW9uRGlzcGF0Y2hUcmFuc2FjdGlvbiB9ID0gdGhpcy5vcHRpb25zO1xuICAgIGNvbnN0IGJhc2VEaXNwYXRjaCA9IGVkaXRvclByb3BzLmRpc3BhdGNoVHJhbnNhY3Rpb24gfHwgdGhpcy5kaXNwYXRjaFRyYW5zYWN0aW9uLmJpbmQodGhpcyk7XG4gICAgY29uc3QgZGlzcGF0Y2ggPSBlbmFibGVFeHRlbnNpb25EaXNwYXRjaFRyYW5zYWN0aW9uID8gdGhpcy5leHRlbnNpb25NYW5hZ2VyLmRpc3BhdGNoVHJhbnNhY3Rpb24oYmFzZURpc3BhdGNoKSA6IGJhc2VEaXNwYXRjaDtcbiAgICB0aGlzLmVkaXRvclZpZXcgPSBuZXcgRWRpdG9yVmlldyhlbGVtZW50LCB7XG4gICAgICAuLi5lZGl0b3JQcm9wcyxcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgLy8gYWRkIGByb2xlPVwidGV4dGJveFwiYCB0byB0aGUgZWRpdG9yIGVsZW1lbnRcbiAgICAgICAgcm9sZTogXCJ0ZXh0Ym94XCIsXG4gICAgICAgIC4uLmVkaXRvclByb3BzID09IG51bGwgPyB2b2lkIDAgOiBlZGl0b3JQcm9wcy5hdHRyaWJ1dGVzXG4gICAgICB9LFxuICAgICAgZGlzcGF0Y2hUcmFuc2FjdGlvbjogZGlzcGF0Y2gsXG4gICAgICBzdGF0ZTogdGhpcy5lZGl0b3JTdGF0ZSxcbiAgICAgIG1hcmtWaWV3czogdGhpcy5leHRlbnNpb25NYW5hZ2VyLm1hcmtWaWV3cyxcbiAgICAgIG5vZGVWaWV3czogdGhpcy5leHRlbnNpb25NYW5hZ2VyLm5vZGVWaWV3c1xuICAgIH0pO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5zdGF0ZS5yZWNvbmZpZ3VyZSh7XG4gICAgICBwbHVnaW5zOiB0aGlzLmV4dGVuc2lvbk1hbmFnZXIucGx1Z2luc1xuICAgIH0pO1xuICAgIHRoaXMudmlldy51cGRhdGVTdGF0ZShuZXdTdGF0ZSk7XG4gICAgdGhpcy5wcmVwZW5kQ2xhc3MoKTtcbiAgICB0aGlzLmluamVjdENTUygpO1xuICAgIGNvbnN0IGRvbSA9IHRoaXMudmlldy5kb207XG4gICAgZG9tLmVkaXRvciA9IHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYWxsIG5vZGUgYW5kIG1hcmsgdmlld3MuXG4gICAqL1xuICBjcmVhdGVOb2RlVmlld3MoKSB7XG4gICAgaWYgKHRoaXMudmlldy5pc0Rlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZpZXcuc2V0UHJvcHMoe1xuICAgICAgbWFya1ZpZXdzOiB0aGlzLmV4dGVuc2lvbk1hbmFnZXIubWFya1ZpZXdzLFxuICAgICAgbm9kZVZpZXdzOiB0aGlzLmV4dGVuc2lvbk1hbmFnZXIubm9kZVZpZXdzXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFByZXBlbmQgY2xhc3MgbmFtZSB0byBlbGVtZW50LlxuICAgKi9cbiAgcHJlcGVuZENsYXNzKCkge1xuICAgIHRoaXMudmlldy5kb20uY2xhc3NOYW1lID0gYCR7dGhpcy5jbGFzc05hbWV9ICR7dGhpcy52aWV3LmRvbS5jbGFzc05hbWV9YDtcbiAgfVxuICBjYXB0dXJlVHJhbnNhY3Rpb24oZm4pIHtcbiAgICB0aGlzLmlzQ2FwdHVyaW5nVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAgIGZuKCk7XG4gICAgdGhpcy5pc0NhcHR1cmluZ1RyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgY29uc3QgdHIgPSB0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb247XG4gICAgdGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uID0gbnVsbDtcbiAgICByZXR1cm4gdHI7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBvdmVyIHdoaWNoIHRvIHNlbmQgdHJhbnNhY3Rpb25zIChzdGF0ZSB1cGRhdGVzKSBwcm9kdWNlZCBieSB0aGUgdmlldy5cbiAgICpcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIEFuIGVkaXRvciBzdGF0ZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgZGlzcGF0Y2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbikge1xuICAgIGlmICh0aGlzLnZpZXcuaXNEZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNDYXB0dXJpbmdUcmFuc2FjdGlvbikge1xuICAgICAgaWYgKCF0aGlzLmNhcHR1cmVkVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgdGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRyYW5zYWN0aW9uLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5jYXB0dXJlZFRyYW5zYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc3RlcChzdGVwKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7IHN0YXRlLCB0cmFuc2FjdGlvbnMgfSA9IHRoaXMuc3RhdGUuYXBwbHlUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgY29uc3Qgc2VsZWN0aW9uSGFzQ2hhbmdlZCA9ICF0aGlzLnN0YXRlLnNlbGVjdGlvbi5lcShzdGF0ZS5zZWxlY3Rpb24pO1xuICAgIGNvbnN0IHJvb3RUcldhc0FwcGxpZWQgPSB0cmFuc2FjdGlvbnMuaW5jbHVkZXModHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgdGhpcy5lbWl0KFwiYmVmb3JlVHJhbnNhY3Rpb25cIiwge1xuICAgICAgZWRpdG9yOiB0aGlzLFxuICAgICAgdHJhbnNhY3Rpb24sXG4gICAgICBuZXh0U3RhdGU6IHN0YXRlXG4gICAgfSk7XG4gICAgaWYgKCFyb290VHJXYXNBcHBsaWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlldy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgdGhpcy5lbWl0KFwidHJhbnNhY3Rpb25cIiwge1xuICAgICAgZWRpdG9yOiB0aGlzLFxuICAgICAgdHJhbnNhY3Rpb24sXG4gICAgICBhcHBlbmRlZFRyYW5zYWN0aW9uczogdHJhbnNhY3Rpb25zLnNsaWNlKDEpXG4gICAgfSk7XG4gICAgaWYgKHNlbGVjdGlvbkhhc0NoYW5nZWQpIHtcbiAgICAgIHRoaXMuZW1pdChcInNlbGVjdGlvblVwZGF0ZVwiLCB7XG4gICAgICAgIGVkaXRvcjogdGhpcyxcbiAgICAgICAgdHJhbnNhY3Rpb25cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBtb3N0UmVjZW50Rm9jdXNUciA9IHRyYW5zYWN0aW9ucy5maW5kTGFzdCgodHIpID0+IHRyLmdldE1ldGEoXCJmb2N1c1wiKSB8fCB0ci5nZXRNZXRhKFwiYmx1clwiKSk7XG4gICAgY29uc3QgZm9jdXMyID0gbW9zdFJlY2VudEZvY3VzVHIgPT0gbnVsbCA/IHZvaWQgMCA6IG1vc3RSZWNlbnRGb2N1c1RyLmdldE1ldGEoXCJmb2N1c1wiKTtcbiAgICBjb25zdCBibHVyMiA9IG1vc3RSZWNlbnRGb2N1c1RyID09IG51bGwgPyB2b2lkIDAgOiBtb3N0UmVjZW50Rm9jdXNUci5nZXRNZXRhKFwiYmx1clwiKTtcbiAgICBpZiAoZm9jdXMyKSB7XG4gICAgICB0aGlzLmVtaXQoXCJmb2N1c1wiLCB7XG4gICAgICAgIGVkaXRvcjogdGhpcyxcbiAgICAgICAgZXZlbnQ6IGZvY3VzMi5ldmVudCxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgdHJhbnNhY3Rpb246IG1vc3RSZWNlbnRGb2N1c1RyXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGJsdXIyKSB7XG4gICAgICB0aGlzLmVtaXQoXCJibHVyXCIsIHtcbiAgICAgICAgZWRpdG9yOiB0aGlzLFxuICAgICAgICBldmVudDogYmx1cjIuZXZlbnQsXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIHRyYW5zYWN0aW9uOiBtb3N0UmVjZW50Rm9jdXNUclxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0cmFuc2FjdGlvbi5nZXRNZXRhKFwicHJldmVudFVwZGF0ZVwiKSB8fCAhdHJhbnNhY3Rpb25zLnNvbWUoKHRyKSA9PiB0ci5kb2NDaGFuZ2VkKSB8fCBwcmV2U3RhdGUuZG9jLmVxKHN0YXRlLmRvYykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbWl0KFwidXBkYXRlXCIsIHtcbiAgICAgIGVkaXRvcjogdGhpcyxcbiAgICAgIHRyYW5zYWN0aW9uLFxuICAgICAgYXBwZW5kZWRUcmFuc2FjdGlvbnM6IHRyYW5zYWN0aW9ucy5zbGljZSgxKVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgYXR0cmlidXRlcyBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG5vZGUgb3IgbWFyay5cbiAgICovXG4gIGdldEF0dHJpYnV0ZXMobmFtZU9yVHlwZSkge1xuICAgIHJldHVybiBnZXRBdHRyaWJ1dGVzKHRoaXMuc3RhdGUsIG5hbWVPclR5cGUpO1xuICB9XG4gIGlzQWN0aXZlKG5hbWVPckF0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNPclVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgbmFtZU9yQXR0cmlidXRlcyA9PT0gXCJzdHJpbmdcIiA/IG5hbWVPckF0dHJpYnV0ZXMgOiBudWxsO1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0eXBlb2YgbmFtZU9yQXR0cmlidXRlcyA9PT0gXCJzdHJpbmdcIiA/IGF0dHJpYnV0ZXNPclVuZGVmaW5lZCA6IG5hbWVPckF0dHJpYnV0ZXM7XG4gICAgcmV0dXJuIGlzQWN0aXZlKHRoaXMuc3RhdGUsIG5hbWUsIGF0dHJpYnV0ZXMpO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIGRvY3VtZW50IGFzIEpTT04uXG4gICAqL1xuICBnZXRKU09OKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmRvYy50b0pTT04oKTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBkb2N1bWVudCBhcyBIVE1MLlxuICAgKi9cbiAgZ2V0SFRNTCgpIHtcbiAgICByZXR1cm4gZ2V0SFRNTEZyb21GcmFnbWVudCh0aGlzLnN0YXRlLmRvYy5jb250ZW50LCB0aGlzLnNjaGVtYSk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgZG9jdW1lbnQgYXMgdGV4dC5cbiAgICovXG4gIGdldFRleHQob3B0aW9ucykge1xuICAgIGNvbnN0IHsgYmxvY2tTZXBhcmF0b3IgPSBcIlxcblxcblwiLCB0ZXh0U2VyaWFsaXplcnMgPSB7fSB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgICByZXR1cm4gZ2V0VGV4dCh0aGlzLnN0YXRlLmRvYywge1xuICAgICAgYmxvY2tTZXBhcmF0b3IsXG4gICAgICB0ZXh0U2VyaWFsaXplcnM6IHtcbiAgICAgICAgLi4uZ2V0VGV4dFNlcmlhbGl6ZXJzRnJvbVNjaGVtYSh0aGlzLnNjaGVtYSksXG4gICAgICAgIC4uLnRleHRTZXJpYWxpemVyc1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGVyZSBpcyBubyBjb250ZW50LlxuICAgKi9cbiAgZ2V0IGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIGlzTm9kZUVtcHR5KHRoaXMuc3RhdGUuZG9jKTtcbiAgfVxuICAvKipcbiAgICogRGVzdHJveSB0aGUgZWRpdG9yLlxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmVtaXQoXCJkZXN0cm95XCIpO1xuICAgIHRoaXMudW5tb3VudCgpO1xuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBlZGl0b3IgaXMgYWxyZWFkeSBkZXN0cm95ZWQuXG4gICAqL1xuICBnZXQgaXNEZXN0cm95ZWQoKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5lZGl0b3JWaWV3KSA9PSBudWxsID8gdm9pZCAwIDogX2EuaXNEZXN0cm95ZWQpICE9IG51bGwgPyBfYiA6IHRydWU7XG4gIH1cbiAgJG5vZGUoc2VsZWN0b3IsIGF0dHJpYnV0ZXMpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuICgoX2EgPSB0aGlzLiRkb2MpID09IG51bGwgPyB2b2lkIDAgOiBfYS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yLCBhdHRyaWJ1dGVzKSkgfHwgbnVsbDtcbiAgfVxuICAkbm9kZXMoc2VsZWN0b3IsIGF0dHJpYnV0ZXMpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuICgoX2EgPSB0aGlzLiRkb2MpID09IG51bGwgPyB2b2lkIDAgOiBfYS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yLCBhdHRyaWJ1dGVzKSkgfHwgbnVsbDtcbiAgfVxuICAkcG9zKHBvcykge1xuICAgIGNvbnN0ICRwb3MgPSB0aGlzLnN0YXRlLmRvYy5yZXNvbHZlKHBvcyk7XG4gICAgcmV0dXJuIG5ldyBOb2RlUG9zKCRwb3MsIHRoaXMpO1xuICB9XG4gIGdldCAkZG9jKCkge1xuICAgIHJldHVybiB0aGlzLiRwb3MoMCk7XG4gIH1cbn07XG5cbi8vIHNyYy9pbnB1dFJ1bGVzL21hcmtJbnB1dFJ1bGUudHNcbmZ1bmN0aW9uIG1hcmtJbnB1dFJ1bGUoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgSW5wdXRSdWxlKHtcbiAgICBmaW5kOiBjb25maWcuZmluZCxcbiAgICBoYW5kbGVyOiAoeyBzdGF0ZSwgcmFuZ2UsIG1hdGNoIH0pID0+IHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBjYWxsT3JSZXR1cm4oY29uZmlnLmdldEF0dHJpYnV0ZXMsIHZvaWQgMCwgbWF0Y2gpO1xuICAgICAgaWYgKGF0dHJpYnV0ZXMgPT09IGZhbHNlIHx8IGF0dHJpYnV0ZXMgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCB7IHRyIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGNhcHR1cmVHcm91cCA9IG1hdGNoW21hdGNoLmxlbmd0aCAtIDFdO1xuICAgICAgY29uc3QgZnVsbE1hdGNoID0gbWF0Y2hbMF07XG4gICAgICBpZiAoY2FwdHVyZUdyb3VwKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0U3BhY2VzID0gZnVsbE1hdGNoLnNlYXJjaCgvXFxTLyk7XG4gICAgICAgIGNvbnN0IHRleHRTdGFydCA9IHJhbmdlLmZyb20gKyBmdWxsTWF0Y2guaW5kZXhPZihjYXB0dXJlR3JvdXApO1xuICAgICAgICBjb25zdCB0ZXh0RW5kID0gdGV4dFN0YXJ0ICsgY2FwdHVyZUdyb3VwLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZXhjbHVkZWRNYXJrcyA9IGdldE1hcmtzQmV0d2VlbihyYW5nZS5mcm9tLCByYW5nZS50bywgc3RhdGUuZG9jKS5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBleGNsdWRlZCA9IGl0ZW0ubWFyay50eXBlLmV4Y2x1ZGVkO1xuICAgICAgICAgIHJldHVybiBleGNsdWRlZC5maW5kKCh0eXBlKSA9PiB0eXBlID09PSBjb25maWcudHlwZSAmJiB0eXBlICE9PSBpdGVtLm1hcmsudHlwZSk7XG4gICAgICAgIH0pLmZpbHRlcigoaXRlbSkgPT4gaXRlbS50byA+IHRleHRTdGFydCk7XG4gICAgICAgIGlmIChleGNsdWRlZE1hcmtzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0RW5kIDwgcmFuZ2UudG8pIHtcbiAgICAgICAgICB0ci5kZWxldGUodGV4dEVuZCwgcmFuZ2UudG8pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0U3RhcnQgPiByYW5nZS5mcm9tKSB7XG4gICAgICAgICAgdHIuZGVsZXRlKHJhbmdlLmZyb20gKyBzdGFydFNwYWNlcywgdGV4dFN0YXJ0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXJrRW5kID0gcmFuZ2UuZnJvbSArIHN0YXJ0U3BhY2VzICsgY2FwdHVyZUdyb3VwLmxlbmd0aDtcbiAgICAgICAgdHIuYWRkTWFyayhyYW5nZS5mcm9tICsgc3RhcnRTcGFjZXMsIG1hcmtFbmQsIGNvbmZpZy50eXBlLmNyZWF0ZShhdHRyaWJ1dGVzIHx8IHt9KSk7XG4gICAgICAgIHRyLnJlbW92ZVN0b3JlZE1hcmsoY29uZmlnLnR5cGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdW5kb2FibGU6IGNvbmZpZy51bmRvYWJsZVxuICB9KTtcbn1cblxuLy8gc3JjL2lucHV0UnVsZXMvbm9kZUlucHV0UnVsZS50c1xuZnVuY3Rpb24gbm9kZUlucHV0UnVsZShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBJbnB1dFJ1bGUoe1xuICAgIGZpbmQ6IGNvbmZpZy5maW5kLFxuICAgIGhhbmRsZXI6ICh7IHN0YXRlLCByYW5nZSwgbWF0Y2ggfSkgPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGNhbGxPclJldHVybihjb25maWcuZ2V0QXR0cmlidXRlcywgdm9pZCAwLCBtYXRjaCkgfHwge307XG4gICAgICBjb25zdCB7IHRyIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcmFuZ2UuZnJvbTtcbiAgICAgIGxldCBlbmQgPSByYW5nZS50bztcbiAgICAgIGNvbnN0IG5ld05vZGUgPSBjb25maWcudHlwZS5jcmVhdGUoYXR0cmlidXRlcyk7XG4gICAgICBpZiAobWF0Y2hbMV0pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gbWF0Y2hbMF0ubGFzdEluZGV4T2YobWF0Y2hbMV0pO1xuICAgICAgICBsZXQgbWF0Y2hTdGFydCA9IHN0YXJ0ICsgb2Zmc2V0O1xuICAgICAgICBpZiAobWF0Y2hTdGFydCA+IGVuZCkge1xuICAgICAgICAgIG1hdGNoU3RhcnQgPSBlbmQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kID0gbWF0Y2hTdGFydCArIG1hdGNoWzFdLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0Q2hhciA9IG1hdGNoWzBdW21hdGNoWzBdLmxlbmd0aCAtIDFdO1xuICAgICAgICB0ci5pbnNlcnRUZXh0KGxhc3RDaGFyLCBzdGFydCArIG1hdGNoWzBdLmxlbmd0aCAtIDEpO1xuICAgICAgICB0ci5yZXBsYWNlV2l0aChtYXRjaFN0YXJ0LCBlbmQsIG5ld05vZGUpO1xuICAgICAgfSBlbHNlIGlmIChtYXRjaFswXSkge1xuICAgICAgICBjb25zdCBpbnNlcnRpb25TdGFydCA9IGNvbmZpZy50eXBlLmlzSW5saW5lID8gc3RhcnQgOiBzdGFydCAtIDE7XG4gICAgICAgIHRyLmluc2VydChpbnNlcnRpb25TdGFydCwgY29uZmlnLnR5cGUuY3JlYXRlKGF0dHJpYnV0ZXMpKS5kZWxldGUodHIubWFwcGluZy5tYXAoc3RhcnQpLCB0ci5tYXBwaW5nLm1hcChlbmQpKTtcbiAgICAgIH1cbiAgICAgIHRyLnNjcm9sbEludG9WaWV3KCk7XG4gICAgfSxcbiAgICB1bmRvYWJsZTogY29uZmlnLnVuZG9hYmxlXG4gIH0pO1xufVxuXG4vLyBzcmMvaW5wdXRSdWxlcy90ZXh0YmxvY2tUeXBlSW5wdXRSdWxlLnRzXG5mdW5jdGlvbiB0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlKGNvbmZpZykge1xuICByZXR1cm4gbmV3IElucHV0UnVsZSh7XG4gICAgZmluZDogY29uZmlnLmZpbmQsXG4gICAgaGFuZGxlcjogKHsgc3RhdGUsIHJhbmdlLCBtYXRjaCB9KSA9PiB7XG4gICAgICBjb25zdCAkc3RhcnQgPSBzdGF0ZS5kb2MucmVzb2x2ZShyYW5nZS5mcm9tKTtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBjYWxsT3JSZXR1cm4oY29uZmlnLmdldEF0dHJpYnV0ZXMsIHZvaWQgMCwgbWF0Y2gpIHx8IHt9O1xuICAgICAgaWYgKCEkc3RhcnQubm9kZSgtMSkuY2FuUmVwbGFjZVdpdGgoJHN0YXJ0LmluZGV4KC0xKSwgJHN0YXJ0LmluZGV4QWZ0ZXIoLTEpLCBjb25maWcudHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBzdGF0ZS50ci5kZWxldGUocmFuZ2UuZnJvbSwgcmFuZ2UudG8pLnNldEJsb2NrVHlwZShyYW5nZS5mcm9tLCByYW5nZS5mcm9tLCBjb25maWcudHlwZSwgYXR0cmlidXRlcyk7XG4gICAgfSxcbiAgICB1bmRvYWJsZTogY29uZmlnLnVuZG9hYmxlXG4gIH0pO1xufVxuXG4vLyBzcmMvaW5wdXRSdWxlcy90ZXh0SW5wdXRSdWxlLnRzXG5mdW5jdGlvbiB0ZXh0SW5wdXRSdWxlKGNvbmZpZykge1xuICByZXR1cm4gbmV3IElucHV0UnVsZSh7XG4gICAgZmluZDogY29uZmlnLmZpbmQsXG4gICAgaGFuZGxlcjogKHsgc3RhdGUsIHJhbmdlLCBtYXRjaCB9KSA9PiB7XG4gICAgICBsZXQgaW5zZXJ0ID0gY29uZmlnLnJlcGxhY2U7XG4gICAgICBsZXQgc3RhcnQgPSByYW5nZS5mcm9tO1xuICAgICAgY29uc3QgZW5kID0gcmFuZ2UudG87XG4gICAgICBpZiAobWF0Y2hbMV0pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gbWF0Y2hbMF0ubGFzdEluZGV4T2YobWF0Y2hbMV0pO1xuICAgICAgICBpbnNlcnQgKz0gbWF0Y2hbMF0uc2xpY2Uob2Zmc2V0ICsgbWF0Y2hbMV0ubGVuZ3RoKTtcbiAgICAgICAgc3RhcnQgKz0gb2Zmc2V0O1xuICAgICAgICBjb25zdCBjdXRPZmYgPSBzdGFydCAtIGVuZDtcbiAgICAgICAgaWYgKGN1dE9mZiA+IDApIHtcbiAgICAgICAgICBpbnNlcnQgPSBtYXRjaFswXS5zbGljZShvZmZzZXQgLSBjdXRPZmYsIG9mZnNldCkgKyBpbnNlcnQ7XG4gICAgICAgICAgc3RhcnQgPSBlbmQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YXRlLnRyLmluc2VydFRleHQoaW5zZXJ0LCBzdGFydCwgZW5kKTtcbiAgICB9LFxuICAgIHVuZG9hYmxlOiBjb25maWcudW5kb2FibGVcbiAgfSk7XG59XG5cbi8vIHNyYy9pbnB1dFJ1bGVzL3dyYXBwaW5nSW5wdXRSdWxlLnRzXG5pbXBvcnQgeyBjYW5Kb2luIGFzIGNhbkpvaW4yLCBmaW5kV3JhcHBpbmcgfSBmcm9tIFwiQHRpcHRhcC9wbS90cmFuc2Zvcm1cIjtcbmZ1bmN0aW9uIHdyYXBwaW5nSW5wdXRSdWxlKGNvbmZpZykge1xuICByZXR1cm4gbmV3IElucHV0UnVsZSh7XG4gICAgZmluZDogY29uZmlnLmZpbmQsXG4gICAgaGFuZGxlcjogKHsgc3RhdGUsIHJhbmdlLCBtYXRjaCwgY2hhaW4gfSkgPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGNhbGxPclJldHVybihjb25maWcuZ2V0QXR0cmlidXRlcywgdm9pZCAwLCBtYXRjaCkgfHwge307XG4gICAgICBjb25zdCB0ciA9IHN0YXRlLnRyLmRlbGV0ZShyYW5nZS5mcm9tLCByYW5nZS50byk7XG4gICAgICBjb25zdCAkc3RhcnQgPSB0ci5kb2MucmVzb2x2ZShyYW5nZS5mcm9tKTtcbiAgICAgIGNvbnN0IGJsb2NrUmFuZ2UgPSAkc3RhcnQuYmxvY2tSYW5nZSgpO1xuICAgICAgY29uc3Qgd3JhcHBpbmcgPSBibG9ja1JhbmdlICYmIGZpbmRXcmFwcGluZyhibG9ja1JhbmdlLCBjb25maWcudHlwZSwgYXR0cmlidXRlcyk7XG4gICAgICBpZiAoIXdyYXBwaW5nKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdHIud3JhcChibG9ja1JhbmdlLCB3cmFwcGluZyk7XG4gICAgICBpZiAoY29uZmlnLmtlZXBNYXJrcyAmJiBjb25maWcuZWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uLCBzdG9yZWRNYXJrcyB9ID0gc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgc3BsaXR0YWJsZU1hcmtzIH0gPSBjb25maWcuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXI7XG4gICAgICAgIGNvbnN0IG1hcmtzID0gc3RvcmVkTWFya3MgfHwgc2VsZWN0aW9uLiR0by5wYXJlbnRPZmZzZXQgJiYgc2VsZWN0aW9uLiRmcm9tLm1hcmtzKCk7XG4gICAgICAgIGlmIChtYXJrcykge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkTWFya3MgPSBtYXJrcy5maWx0ZXIoKG1hcmspID0+IHNwbGl0dGFibGVNYXJrcy5pbmNsdWRlcyhtYXJrLnR5cGUubmFtZSkpO1xuICAgICAgICAgIHRyLmVuc3VyZU1hcmtzKGZpbHRlcmVkTWFya3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLmtlZXBBdHRyaWJ1dGVzKSB7XG4gICAgICAgIGNvbnN0IG5vZGVUeXBlID0gY29uZmlnLnR5cGUubmFtZSA9PT0gXCJidWxsZXRMaXN0XCIgfHwgY29uZmlnLnR5cGUubmFtZSA9PT0gXCJvcmRlcmVkTGlzdFwiID8gXCJsaXN0SXRlbVwiIDogXCJ0YXNrTGlzdFwiO1xuICAgICAgICBjaGFpbigpLnVwZGF0ZUF0dHJpYnV0ZXMobm9kZVR5cGUsIGF0dHJpYnV0ZXMpLnJ1bigpO1xuICAgICAgfVxuICAgICAgY29uc3QgYmVmb3JlID0gdHIuZG9jLnJlc29sdmUocmFuZ2UuZnJvbSAtIDEpLm5vZGVCZWZvcmU7XG4gICAgICBpZiAoYmVmb3JlICYmIGJlZm9yZS50eXBlID09PSBjb25maWcudHlwZSAmJiBjYW5Kb2luMih0ci5kb2MsIHJhbmdlLmZyb20gLSAxKSAmJiAoIWNvbmZpZy5qb2luUHJlZGljYXRlIHx8IGNvbmZpZy5qb2luUHJlZGljYXRlKG1hdGNoLCBiZWZvcmUpKSkge1xuICAgICAgICB0ci5qb2luKHJhbmdlLmZyb20gLSAxKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHVuZG9hYmxlOiBjb25maWcudW5kb2FibGVcbiAgfSk7XG59XG5cbi8vIHNyYy9qc3gtcnVudGltZS50c1xuZnVuY3Rpb24gRnJhZ21lbnQ2KHByb3BzKSB7XG4gIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cbnZhciBoID0gKHRhZywgYXR0cmlidXRlcykgPT4ge1xuICBpZiAodGFnID09PSBcInNsb3RcIikge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0YWcgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiB0YWcoYXR0cmlidXRlcyk7XG4gIH1cbiAgY29uc3QgeyBjaGlsZHJlbiwgLi4ucmVzdCB9ID0gYXR0cmlidXRlcyAhPSBudWxsID8gYXR0cmlidXRlcyA6IHt9O1xuICBpZiAodGFnID09PSBcInN2Z1wiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU1ZHIGVsZW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSBKU1ggc3ludGF4LCB1c2UgdGhlIGFycmF5IHN5bnRheCBpbnN0ZWFkXCIpO1xuICB9XG4gIHJldHVybiBbdGFnLCByZXN0LCBjaGlsZHJlbl07XG59O1xuXG4vLyBzcmMvbGliL1Jlc2l6YWJsZU5vZGVWaWV3LnRzXG52YXIgaXNUb3VjaEV2ZW50ID0gKGUpID0+IHtcbiAgcmV0dXJuIFwidG91Y2hlc1wiIGluIGU7XG59O1xudmFyIFJlc2l6YWJsZU5vZGVWaWV3ID0gY2xhc3Mge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBSZXNpemFibGVOb2RlVmlldyBpbnN0YW5jZS5cbiAgICpcbiAgICogVGhlIGNvbnN0cnVjdG9yIHNldHMgdXAgdGhlIHJlc2l6ZSBoYW5kbGVzLCBhcHBsaWVzIGluaXRpYWwgc2l6aW5nIGZyb21cbiAgICogbm9kZSBhdHRyaWJ1dGVzLCBhbmQgY29uZmlndXJlcyBhbGwgcmVzaXplIGJlaGF2aW9yIG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgcmVzaXphYmxlIG5vZGUgdmlld1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIC8qKiBBY3RpdmUgcmVzaXplIGhhbmRsZSBkaXJlY3Rpb25zICovXG4gICAgdGhpcy5kaXJlY3Rpb25zID0gW1wiYm90dG9tLWxlZnRcIiwgXCJib3R0b20tcmlnaHRcIiwgXCJ0b3AtbGVmdFwiLCBcInRvcC1yaWdodFwiXTtcbiAgICAvKiogTWluaW11bSBhbGxvd2VkIGRpbWVuc2lvbnMgKi9cbiAgICB0aGlzLm1pblNpemUgPSB7XG4gICAgICBoZWlnaHQ6IDgsXG4gICAgICB3aWR0aDogOFxuICAgIH07XG4gICAgLyoqIFdoZXRoZXIgdG8gYWx3YXlzIHByZXNlcnZlIGFzcGVjdCByYXRpbyAqL1xuICAgIHRoaXMucHJlc2VydmVBc3BlY3RSYXRpbyA9IGZhbHNlO1xuICAgIC8qKiBDU1MgY2xhc3MgbmFtZXMgZm9yIGVsZW1lbnRzICovXG4gICAgdGhpcy5jbGFzc05hbWVzID0ge1xuICAgICAgY29udGFpbmVyOiBcIlwiLFxuICAgICAgd3JhcHBlcjogXCJcIixcbiAgICAgIGhhbmRsZTogXCJcIixcbiAgICAgIHJlc2l6aW5nOiBcIlwiXG4gICAgfTtcbiAgICAvKiogSW5pdGlhbCB3aWR0aCBvZiB0aGUgZWxlbWVudCAoZm9yIGFzcGVjdCByYXRpbyBjYWxjdWxhdGlvbikgKi9cbiAgICB0aGlzLmluaXRpYWxXaWR0aCA9IDA7XG4gICAgLyoqIEluaXRpYWwgaGVpZ2h0IG9mIHRoZSBlbGVtZW50IChmb3IgYXNwZWN0IHJhdGlvIGNhbGN1bGF0aW9uKSAqL1xuICAgIHRoaXMuaW5pdGlhbEhlaWdodCA9IDA7XG4gICAgLyoqIENhbGN1bGF0ZWQgYXNwZWN0IHJhdGlvICh3aWR0aCAvIGhlaWdodCkgKi9cbiAgICB0aGlzLmFzcGVjdFJhdGlvID0gMTtcbiAgICAvKiogV2hldGhlciBhIHJlc2l6ZSBvcGVyYXRpb24gaXMgY3VycmVudGx5IGFjdGl2ZSAqL1xuICAgIHRoaXMuaXNSZXNpemluZyA9IGZhbHNlO1xuICAgIC8qKiBUaGUgaGFuZGxlIGN1cnJlbnRseSBiZWluZyBkcmFnZ2VkICovXG4gICAgdGhpcy5hY3RpdmVIYW5kbGUgPSBudWxsO1xuICAgIC8qKiBTdGFydGluZyBtb3VzZSBYIHBvc2l0aW9uIHdoZW4gcmVzaXplIGJlZ2FuICovXG4gICAgdGhpcy5zdGFydFggPSAwO1xuICAgIC8qKiBTdGFydGluZyBtb3VzZSBZIHBvc2l0aW9uIHdoZW4gcmVzaXplIGJlZ2FuICovXG4gICAgdGhpcy5zdGFydFkgPSAwO1xuICAgIC8qKiBFbGVtZW50IHdpZHRoIHdoZW4gcmVzaXplIGJlZ2FuICovXG4gICAgdGhpcy5zdGFydFdpZHRoID0gMDtcbiAgICAvKiogRWxlbWVudCBoZWlnaHQgd2hlbiByZXNpemUgYmVnYW4gKi9cbiAgICB0aGlzLnN0YXJ0SGVpZ2h0ID0gMDtcbiAgICAvKiogV2hldGhlciBTaGlmdCBrZXkgaXMgY3VycmVudGx5IHByZXNzZWQgKGZvciB0ZW1wb3JhcnkgYXNwZWN0IHJhdGlvIGxvY2spICovXG4gICAgdGhpcy5pc1NoaWZ0S2V5UHJlc3NlZCA9IGZhbHNlO1xuICAgIC8qKiBMYXN0IGtub3duIGVkaXRhYmxlIHN0YXRlIG9mIHRoZSBlZGl0b3IgKi9cbiAgICB0aGlzLmxhc3RFZGl0YWJsZVN0YXRlID0gdm9pZCAwO1xuICAgIC8qKiBNYXAgb2YgaGFuZGxlIGVsZW1lbnRzIGJ5IGRpcmVjdGlvbiAqL1xuICAgIHRoaXMuaGFuZGxlTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIG1vdXNlIG1vdmVtZW50IGR1cmluZyBhbiBhY3RpdmUgcmVzaXplLlxuICAgICAqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgZGVsdGEgZnJvbSB0aGUgc3RhcnRpbmcgcG9zaXRpb24sIGNvbXB1dGVzIG5ldyBkaW1lbnNpb25zXG4gICAgICogYmFzZWQgb24gdGhlIGFjdGl2ZSBoYW5kbGUgZGlyZWN0aW9uLCBhcHBsaWVzIGNvbnN0cmFpbnRzIGFuZCBhc3BlY3QgcmF0aW8sXG4gICAgICogdGhlbiB1cGRhdGVzIHRoZSBlbGVtZW50J3Mgc3R5bGUgYW5kIGNhbGxzIHRoZSBvblJlc2l6ZSBjYWxsYmFjay5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBtb3VzZSBtb3ZlIGV2ZW50XG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVNb3VzZU1vdmUgPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nIHx8ICF0aGlzLmFjdGl2ZUhhbmRsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkZWx0YVggPSBldmVudC5jbGllbnRYIC0gdGhpcy5zdGFydFg7XG4gICAgICBjb25zdCBkZWx0YVkgPSBldmVudC5jbGllbnRZIC0gdGhpcy5zdGFydFk7XG4gICAgICB0aGlzLmhhbmRsZVJlc2l6ZShkZWx0YVgsIGRlbHRhWSk7XG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZVRvdWNoTW92ZSA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzUmVzaXppbmcgfHwgIXRoaXMuYWN0aXZlSGFuZGxlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTtcbiAgICAgIGlmICghdG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVsdGFYID0gdG91Y2guY2xpZW50WCAtIHRoaXMuc3RhcnRYO1xuICAgICAgY29uc3QgZGVsdGFZID0gdG91Y2guY2xpZW50WSAtIHRoaXMuc3RhcnRZO1xuICAgICAgdGhpcy5oYW5kbGVSZXNpemUoZGVsdGFYLCBkZWx0YVkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ29tcGxldGVzIHRoZSByZXNpemUgb3BlcmF0aW9uIHdoZW4gdGhlIG1vdXNlIGJ1dHRvbiBpcyByZWxlYXNlZC5cbiAgICAgKlxuICAgICAqIENhcHR1cmVzIGZpbmFsIGRpbWVuc2lvbnMsIGNhbGxzIHRoZSBvbkNvbW1pdCBjYWxsYmFjayB0byBwZXJzaXN0IGNoYW5nZXMsXG4gICAgICogcmVtb3ZlcyB0aGUgcmVzaXppbmcgc3RhdGUgYW5kIGNsYXNzLCBhbmQgY2xlYW5zIHVwIGRvY3VtZW50LWxldmVsIGxpc3RlbmVycy5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZU1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNSZXNpemluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBmaW5hbFdpZHRoID0gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgY29uc3QgZmluYWxIZWlnaHQgPSB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgdGhpcy5vbkNvbW1pdChmaW5hbFdpZHRoLCBmaW5hbEhlaWdodCk7XG4gICAgICB0aGlzLmlzUmVzaXppbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuYWN0aXZlSGFuZGxlID0gbnVsbDtcbiAgICAgIHRoaXMuY29udGFpbmVyLmRhdGFzZXQucmVzaXplU3RhdGUgPSBcImZhbHNlXCI7XG4gICAgICBpZiAodGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nKTtcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5oYW5kbGVNb3VzZVVwKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgdGhpcy5oYW5kbGVLZXlVcCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBUcmFja3MgU2hpZnQga2V5IHN0YXRlIHRvIGVuYWJsZSB0ZW1wb3JhcnkgYXNwZWN0IHJhdGlvIGxvY2tpbmcuXG4gICAgICpcbiAgICAgKiBXaGVuIFNoaWZ0IGlzIHByZXNzZWQgZHVyaW5nIHJlc2l6ZSwgYXNwZWN0IHJhdGlvIGlzIHByZXNlcnZlZCBldmVuIGlmXG4gICAgICogcHJlc2VydmVBc3BlY3RSYXRpbyBpcyBmYWxzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBrZXlib2FyZCBldmVudFxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJTaGlmdFwiKSB7XG4gICAgICAgIHRoaXMuaXNTaGlmdEtleVByZXNzZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogVHJhY2tzIFNoaWZ0IGtleSByZWxlYXNlIHRvIGRpc2FibGUgdGVtcG9yYXJ5IGFzcGVjdCByYXRpbyBsb2NraW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGtleWJvYXJkIGV2ZW50XG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVLZXlVcCA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJTaGlmdFwiKSB7XG4gICAgICAgIHRoaXMuaXNTaGlmdEtleVByZXNzZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgIHRoaXMubm9kZSA9IG9wdGlvbnMubm9kZTtcbiAgICB0aGlzLmVkaXRvciA9IG9wdGlvbnMuZWRpdG9yO1xuICAgIHRoaXMuZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudDtcbiAgICB0aGlzLmNvbnRlbnRFbGVtZW50ID0gb3B0aW9ucy5jb250ZW50RWxlbWVudDtcbiAgICB0aGlzLmdldFBvcyA9IG9wdGlvbnMuZ2V0UG9zO1xuICAgIHRoaXMub25SZXNpemUgPSBvcHRpb25zLm9uUmVzaXplO1xuICAgIHRoaXMub25Db21taXQgPSBvcHRpb25zLm9uQ29tbWl0O1xuICAgIHRoaXMub25VcGRhdGUgPSBvcHRpb25zLm9uVXBkYXRlO1xuICAgIGlmICgoX2EgPSBvcHRpb25zLm9wdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfYS5taW4pIHtcbiAgICAgIHRoaXMubWluU2l6ZSA9IHtcbiAgICAgICAgLi4udGhpcy5taW5TaXplLFxuICAgICAgICAuLi5vcHRpb25zLm9wdGlvbnMubWluXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoKF9iID0gb3B0aW9ucy5vcHRpb25zKSA9PSBudWxsID8gdm9pZCAwIDogX2IubWF4KSB7XG4gICAgICB0aGlzLm1heFNpemUgPSBvcHRpb25zLm9wdGlvbnMubWF4O1xuICAgIH1cbiAgICBpZiAoKF9jID0gb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5vcHRpb25zKSA9PSBudWxsID8gdm9pZCAwIDogX2MuZGlyZWN0aW9ucykge1xuICAgICAgdGhpcy5kaXJlY3Rpb25zID0gb3B0aW9ucy5vcHRpb25zLmRpcmVjdGlvbnM7XG4gICAgfVxuICAgIGlmICgoX2QgPSBvcHRpb25zLm9wdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfZC5wcmVzZXJ2ZUFzcGVjdFJhdGlvKSB7XG4gICAgICB0aGlzLnByZXNlcnZlQXNwZWN0UmF0aW8gPSBvcHRpb25zLm9wdGlvbnMucHJlc2VydmVBc3BlY3RSYXRpbztcbiAgICB9XG4gICAgaWYgKChfZSA9IG9wdGlvbnMub3B0aW9ucykgPT0gbnVsbCA/IHZvaWQgMCA6IF9lLmNsYXNzTmFtZSkge1xuICAgICAgdGhpcy5jbGFzc05hbWVzID0ge1xuICAgICAgICBjb250YWluZXI6IG9wdGlvbnMub3B0aW9ucy5jbGFzc05hbWUuY29udGFpbmVyIHx8IFwiXCIsXG4gICAgICAgIHdyYXBwZXI6IG9wdGlvbnMub3B0aW9ucy5jbGFzc05hbWUud3JhcHBlciB8fCBcIlwiLFxuICAgICAgICBoYW5kbGU6IG9wdGlvbnMub3B0aW9ucy5jbGFzc05hbWUuaGFuZGxlIHx8IFwiXCIsXG4gICAgICAgIHJlc2l6aW5nOiBvcHRpb25zLm9wdGlvbnMuY2xhc3NOYW1lLnJlc2l6aW5nIHx8IFwiXCJcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICgoX2YgPSBvcHRpb25zLm9wdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfZi5jcmVhdGVDdXN0b21IYW5kbGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlQ3VzdG9tSGFuZGxlID0gb3B0aW9ucy5vcHRpb25zLmNyZWF0ZUN1c3RvbUhhbmRsZTtcbiAgICB9XG4gICAgdGhpcy53cmFwcGVyID0gdGhpcy5jcmVhdGVXcmFwcGVyKCk7XG4gICAgdGhpcy5jb250YWluZXIgPSB0aGlzLmNyZWF0ZUNvbnRhaW5lcigpO1xuICAgIHRoaXMuYXBwbHlJbml0aWFsU2l6ZSgpO1xuICAgIHRoaXMuYXR0YWNoSGFuZGxlcygpO1xuICAgIHRoaXMuZWRpdG9yLm9uKFwidXBkYXRlXCIsIHRoaXMuaGFuZGxlRWRpdG9yVXBkYXRlLmJpbmQodGhpcykpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0b3AtbGV2ZWwgRE9NIG5vZGUgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBlZGl0b3IuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIFByb3NlTWlycm9yIE5vZGVWaWV3IGludGVyZmFjZS4gVGhlIGNvbnRhaW5lclxuICAgKiBpbmNsdWRlcyB0aGUgd3JhcHBlciwgaGFuZGxlcywgYW5kIHRoZSBhY3R1YWwgY29udGVudCBlbGVtZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY29udGFpbmVyIGVsZW1lbnQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgZWRpdG9yXG4gICAqL1xuICBnZXQgZG9tKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcjtcbiAgfVxuICBnZXQgY29udGVudERPTSgpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IHRoaXMuY29udGVudEVsZW1lbnQpICE9IG51bGwgPyBfYSA6IG51bGw7XG4gIH1cbiAgaGFuZGxlRWRpdG9yVXBkYXRlKCkge1xuICAgIGNvbnN0IGlzRWRpdGFibGUgPSB0aGlzLmVkaXRvci5pc0VkaXRhYmxlO1xuICAgIGlmIChpc0VkaXRhYmxlID09PSB0aGlzLmxhc3RFZGl0YWJsZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFzdEVkaXRhYmxlU3RhdGUgPSBpc0VkaXRhYmxlO1xuICAgIGlmICghaXNFZGl0YWJsZSkge1xuICAgICAgdGhpcy5yZW1vdmVIYW5kbGVzKCk7XG4gICAgfSBlbHNlIGlmIChpc0VkaXRhYmxlICYmIHRoaXMuaGFuZGxlTWFwLnNpemUgPT09IDApIHtcbiAgICAgIHRoaXMuYXR0YWNoSGFuZGxlcygpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIG5vZGUncyBjb250ZW50IG9yIGF0dHJpYnV0ZXMgY2hhbmdlLlxuICAgKlxuICAgKiBVcGRhdGVzIHRoZSBpbnRlcm5hbCBub2RlIHJlZmVyZW5jZS4gSWYgYSBjdXN0b20gYG9uVXBkYXRlYCBjYWxsYmFja1xuICAgKiB3YXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgY2FsbGVkIHRvIGhhbmRsZSBhZGRpdGlvbmFsIHVwZGF0ZSBsb2dpYy5cbiAgICpcbiAgICogQHBhcmFtIG5vZGUgLSBUaGUgbmV3L3VwZGF0ZWQgbm9kZVxuICAgKiBAcGFyYW0gZGVjb3JhdGlvbnMgLSBOb2RlIGRlY29yYXRpb25zXG4gICAqIEBwYXJhbSBpbm5lckRlY29yYXRpb25zIC0gSW5uZXIgZGVjb3JhdGlvbnNcbiAgICogQHJldHVybnMgYGZhbHNlYCBpZiB0aGUgbm9kZSB0eXBlIGhhcyBjaGFuZ2VkIChyZXF1aXJlcyBmdWxsIHJlYnVpbGQpLCBvdGhlcndpc2UgdGhlIHJlc3VsdCBvZiBgb25VcGRhdGVgIG9yIGB0cnVlYFxuICAgKi9cbiAgdXBkYXRlKG5vZGUsIGRlY29yYXRpb25zLCBpbm5lckRlY29yYXRpb25zKSB7XG4gICAgaWYgKG5vZGUudHlwZSAhPT0gdGhpcy5ub2RlLnR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICBpZiAodGhpcy5vblVwZGF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMub25VcGRhdGUobm9kZSwgZGVjb3JhdGlvbnMsIGlubmVyRGVjb3JhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvKipcbiAgICogQ2xlYW51cCBtZXRob2QgY2FsbGVkIHdoZW4gdGhlIG5vZGUgdmlldyBpcyBiZWluZyByZW1vdmVkLlxuICAgKlxuICAgKiBSZW1vdmVzIGFsbCBldmVudCBsaXN0ZW5lcnMgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuIFRoaXMgaXMgcmVxdWlyZWRcbiAgICogYnkgdGhlIFByb3NlTWlycm9yIE5vZGVWaWV3IGludGVyZmFjZS4gSWYgYSByZXNpemUgaXMgYWN0aXZlIHdoZW5cbiAgICogZGVzdHJveSBpcyBjYWxsZWQsIGl0IHdpbGwgYmUgcHJvcGVybHkgY2FuY2VsbGVkLlxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5pc1Jlc2l6aW5nKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lci5kYXRhc2V0LnJlc2l6ZVN0YXRlID0gXCJmYWxzZVwiO1xuICAgICAgaWYgKHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZykge1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2xhc3NOYW1lcy5yZXNpemluZyk7XG4gICAgICB9XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMuaGFuZGxlTW91c2VNb3ZlKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuaGFuZGxlTW91c2VVcCk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmhhbmRsZUtleURvd24pO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsIHRoaXMuaGFuZGxlS2V5VXApO1xuICAgICAgdGhpcy5pc1Jlc2l6aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmFjdGl2ZUhhbmRsZSA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuZWRpdG9yLm9mZihcInVwZGF0ZVwiLCB0aGlzLmhhbmRsZUVkaXRvclVwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmNvbnRhaW5lci5yZW1vdmUoKTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgb3V0ZXIgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqXG4gICAqIFRoZSBjb250YWluZXIgaXMgdGhlIHRvcC1sZXZlbCBlbGVtZW50IHJldHVybmVkIGJ5IHRoZSBOb2RlVmlldyBhbmRcbiAgICogd3JhcHMgdGhlIGVudGlyZSByZXNpemFibGUgbm9kZS4gSXQncyBzZXQgdXAgd2l0aCBmbGV4Ym94IHRvIGhhbmRsZVxuICAgKiBhbGlnbm1lbnQgYW5kIGluY2x1ZGVzIGRhdGEgYXR0cmlidXRlcyBmb3Igc3R5bGluZyBhbmQgaWRlbnRpZmljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjb250YWluZXIgZWxlbWVudFxuICAgKi9cbiAgY3JlYXRlQ29udGFpbmVyKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGVsZW1lbnQuZGF0YXNldC5yZXNpemVDb250YWluZXIgPSBcIlwiO1xuICAgIGVsZW1lbnQuZGF0YXNldC5ub2RlID0gdGhpcy5ub2RlLnR5cGUubmFtZTtcbiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcbiAgICBpZiAodGhpcy5jbGFzc05hbWVzLmNvbnRhaW5lcikge1xuICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZXMuY29udGFpbmVyO1xuICAgIH1cbiAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMud3JhcHBlcik7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHdyYXBwZXIgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBjb250ZW50IGFuZCBoYW5kbGVzLlxuICAgKlxuICAgKiBUaGUgd3JhcHBlciB1c2VzIHJlbGF0aXZlIHBvc2l0aW9uaW5nIHNvIHRoYXQgcmVzaXplIGhhbmRsZXMgY2FuIGJlXG4gICAqIHBvc2l0aW9uZWQgYWJzb2x1dGVseSB3aXRoaW4gaXQuIFRoaXMgaXMgdGhlIGRpcmVjdCBwYXJlbnQgb2YgdGhlXG4gICAqIGNvbnRlbnQgZWxlbWVudCBiZWluZyBtYWRlIHJlc2l6YWJsZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHdyYXBwZXIgZWxlbWVudFxuICAgKi9cbiAgY3JlYXRlV3JhcHBlcigpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICBlbGVtZW50LmRhdGFzZXQucmVzaXplV3JhcHBlciA9IFwiXCI7XG4gICAgaWYgKHRoaXMuY2xhc3NOYW1lcy53cmFwcGVyKSB7XG4gICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lcy53cmFwcGVyO1xuICAgIH1cbiAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByZXNpemUgaGFuZGxlIGVsZW1lbnQgZm9yIGEgc3BlY2lmaWMgZGlyZWN0aW9uLlxuICAgKlxuICAgKiBFYWNoIGhhbmRsZSBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYW5kIGluY2x1ZGVzIGEgZGF0YSBhdHRyaWJ1dGVcbiAgICogaWRlbnRpZnlpbmcgaXRzIGRpcmVjdGlvbiBmb3Igc3R5bGluZyBwdXJwb3Nlcy5cbiAgICpcbiAgICogQHBhcmFtIGRpcmVjdGlvbiAtIFRoZSByZXNpemUgZGlyZWN0aW9uIGZvciB0aGlzIGhhbmRsZVxuICAgKiBAcmV0dXJucyBUaGUgaGFuZGxlIGVsZW1lbnRcbiAgICovXG4gIGNyZWF0ZUhhbmRsZShkaXJlY3Rpb24pIHtcbiAgICBjb25zdCBoYW5kbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGhhbmRsZS5kYXRhc2V0LnJlc2l6ZUhhbmRsZSA9IGRpcmVjdGlvbjtcbiAgICBoYW5kbGUuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgaWYgKHRoaXMuY2xhc3NOYW1lcy5oYW5kbGUpIHtcbiAgICAgIGhhbmRsZS5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZXMuaGFuZGxlO1xuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG4gIC8qKlxuICAgKiBQb3NpdGlvbnMgYSBoYW5kbGUgZWxlbWVudCBhY2NvcmRpbmcgdG8gaXRzIGRpcmVjdGlvbi5cbiAgICpcbiAgICogQ29ybmVyIGhhbmRsZXMgKGUuZy4sICd0b3AtbGVmdCcpIGFyZSBwb3NpdGlvbmVkIGF0IHRoZSBpbnRlcnNlY3Rpb25cbiAgICogb2YgdHdvIGVkZ2VzLiBFZGdlIGhhbmRsZXMgKGUuZy4sICd0b3AnKSBzcGFuIHRoZSBmdWxsIHdpZHRoIG9yIGhlaWdodC5cbiAgICpcbiAgICogQHBhcmFtIGhhbmRsZSAtIFRoZSBoYW5kbGUgZWxlbWVudCB0byBwb3NpdGlvblxuICAgKiBAcGFyYW0gZGlyZWN0aW9uIC0gVGhlIGRpcmVjdGlvbiBkZXRlcm1pbmluZyB0aGUgcG9zaXRpb25cbiAgICovXG4gIHBvc2l0aW9uSGFuZGxlKGhhbmRsZSwgZGlyZWN0aW9uKSB7XG4gICAgY29uc3QgaXNUb3AgPSBkaXJlY3Rpb24uaW5jbHVkZXMoXCJ0b3BcIik7XG4gICAgY29uc3QgaXNCb3R0b20gPSBkaXJlY3Rpb24uaW5jbHVkZXMoXCJib3R0b21cIik7XG4gICAgY29uc3QgaXNMZWZ0ID0gZGlyZWN0aW9uLmluY2x1ZGVzKFwibGVmdFwiKTtcbiAgICBjb25zdCBpc1JpZ2h0ID0gZGlyZWN0aW9uLmluY2x1ZGVzKFwicmlnaHRcIik7XG4gICAgaWYgKGlzVG9wKSB7XG4gICAgICBoYW5kbGUuc3R5bGUudG9wID0gXCIwXCI7XG4gICAgfVxuICAgIGlmIChpc0JvdHRvbSkge1xuICAgICAgaGFuZGxlLnN0eWxlLmJvdHRvbSA9IFwiMFwiO1xuICAgIH1cbiAgICBpZiAoaXNMZWZ0KSB7XG4gICAgICBoYW5kbGUuc3R5bGUubGVmdCA9IFwiMFwiO1xuICAgIH1cbiAgICBpZiAoaXNSaWdodCkge1xuICAgICAgaGFuZGxlLnN0eWxlLnJpZ2h0ID0gXCIwXCI7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IFwidG9wXCIgfHwgZGlyZWN0aW9uID09PSBcImJvdHRvbVwiKSB7XG4gICAgICBoYW5kbGUuc3R5bGUubGVmdCA9IFwiMFwiO1xuICAgICAgaGFuZGxlLnN0eWxlLnJpZ2h0ID0gXCIwXCI7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IFwibGVmdFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJyaWdodFwiKSB7XG4gICAgICBoYW5kbGUuc3R5bGUudG9wID0gXCIwXCI7XG4gICAgICBoYW5kbGUuc3R5bGUuYm90dG9tID0gXCIwXCI7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCBhdHRhY2hlcyBhbGwgcmVzaXplIGhhbmRsZXMgdG8gdGhlIHdyYXBwZXIuXG4gICAqXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggdGhlIGNvbmZpZ3VyZWQgZGlyZWN0aW9ucywgY3JlYXRlcyBhIGhhbmRsZSBmb3IgZWFjaCxcbiAgICogcG9zaXRpb25zIGl0LCBhdHRhY2hlcyB0aGUgbW91c2Vkb3duIGxpc3RlbmVyLCBhbmQgYXBwZW5kcyBpdCB0byB0aGUgRE9NLlxuICAgKi9cbiAgYXR0YWNoSGFuZGxlcygpIHtcbiAgICB0aGlzLmRpcmVjdGlvbnMuZm9yRWFjaCgoZGlyZWN0aW9uKSA9PiB7XG4gICAgICBsZXQgaGFuZGxlO1xuICAgICAgaWYgKHRoaXMuY3JlYXRlQ3VzdG9tSGFuZGxlKSB7XG4gICAgICAgIGhhbmRsZSA9IHRoaXMuY3JlYXRlQ3VzdG9tSGFuZGxlKGRpcmVjdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGUgPSB0aGlzLmNyZWF0ZUhhbmRsZShkaXJlY3Rpb24pO1xuICAgICAgfVxuICAgICAgaWYgKCEoaGFuZGxlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW1Jlc2l6YWJsZU5vZGVWaWV3XSBjcmVhdGVDdXN0b21IYW5kbGUoXCIke2RpcmVjdGlvbn1cIikgZGlkIG5vdCByZXR1cm4gYW4gSFRNTEVsZW1lbnQuIEZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGhhbmRsZS5gXG4gICAgICAgICk7XG4gICAgICAgIGhhbmRsZSA9IHRoaXMuY3JlYXRlSGFuZGxlKGRpcmVjdGlvbik7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuY3JlYXRlQ3VzdG9tSGFuZGxlKSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25IYW5kbGUoaGFuZGxlLCBkaXJlY3Rpb24pO1xuICAgICAgfVxuICAgICAgaGFuZGxlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgKGV2ZW50KSA9PiB0aGlzLmhhbmRsZVJlc2l6ZVN0YXJ0KGV2ZW50LCBkaXJlY3Rpb24pKTtcbiAgICAgIGhhbmRsZS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCAoZXZlbnQpID0+IHRoaXMuaGFuZGxlUmVzaXplU3RhcnQoZXZlbnQsIGRpcmVjdGlvbikpO1xuICAgICAgdGhpcy5oYW5kbGVNYXAuc2V0KGRpcmVjdGlvbiwgaGFuZGxlKTtcbiAgICAgIHRoaXMud3JhcHBlci5hcHBlbmRDaGlsZChoYW5kbGUpO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCByZXNpemUgaGFuZGxlcyBmcm9tIHRoZSB3cmFwcGVyLlxuICAgKlxuICAgKiBDbGVhbnMgdXAgdGhlIGhhbmRsZSBtYXAgYW5kIHJlbW92ZXMgZWFjaCBoYW5kbGUgZWxlbWVudCBmcm9tIHRoZSBET00uXG4gICAqL1xuICByZW1vdmVIYW5kbGVzKCkge1xuICAgIHRoaXMuaGFuZGxlTWFwLmZvckVhY2goKGVsKSA9PiBlbC5yZW1vdmUoKSk7XG4gICAgdGhpcy5oYW5kbGVNYXAuY2xlYXIoKTtcbiAgfVxuICAvKipcbiAgICogQXBwbGllcyBpbml0aWFsIHNpemluZyBmcm9tIG5vZGUgYXR0cmlidXRlcyB0byB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogSWYgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgZXhpc3Qgb24gdGhlIG5vZGUsIHRoZXkncmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC5cbiAgICogT3RoZXJ3aXNlLCB0aGUgZWxlbWVudCdzIG5hdHVyYWwvY3VycmVudCBkaW1lbnNpb25zIGFyZSBtZWFzdXJlZC4gVGhlIGFzcGVjdFxuICAgKiByYXRpbyBpcyBjYWxjdWxhdGVkIGZvciBsYXRlciB1c2UgaW4gYXNwZWN0LXJhdGlvLXByZXNlcnZpbmcgcmVzaXplcy5cbiAgICovXG4gIGFwcGx5SW5pdGlhbFNpemUoKSB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLm5vZGUuYXR0cnMud2lkdGg7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5ub2RlLmF0dHJzLmhlaWdodDtcbiAgICBpZiAod2lkdGgpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgIHRoaXMuaW5pdGlhbFdpZHRoID0gd2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbFdpZHRoID0gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIH1cbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICAgIHRoaXMuaW5pdGlhbEhlaWdodCA9IGhlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsSGVpZ2h0ID0gdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5pdGlhbFdpZHRoID4gMCAmJiB0aGlzLmluaXRpYWxIZWlnaHQgPiAwKSB7XG4gICAgICB0aGlzLmFzcGVjdFJhdGlvID0gdGhpcy5pbml0aWFsV2lkdGggLyB0aGlzLmluaXRpYWxIZWlnaHQ7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBJbml0aWF0ZXMgYSByZXNpemUgb3BlcmF0aW9uIHdoZW4gYSBoYW5kbGUgaXMgY2xpY2tlZC5cbiAgICpcbiAgICogQ2FwdHVyZXMgdGhlIHN0YXJ0aW5nIG1vdXNlIHBvc2l0aW9uIGFuZCBlbGVtZW50IGRpbWVuc2lvbnMsIHNldHMgdXBcbiAgICogdGhlIHJlc2l6ZSBzdGF0ZSwgYWRkcyB0aGUgcmVzaXppbmcgY2xhc3MgYW5kIHN0YXRlIGF0dHJpYnV0ZSwgYW5kXG4gICAqIGF0dGFjaGVzIGRvY3VtZW50LWxldmVsIGxpc3RlbmVycyBmb3IgbW91c2UgbW92ZW1lbnQgYW5kIGtleWJvYXJkIGlucHV0LlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgbW91c2UgZG93biBldmVudFxuICAgKiBAcGFyYW0gZGlyZWN0aW9uIC0gVGhlIGRpcmVjdGlvbiBvZiB0aGUgaGFuZGxlIGJlaW5nIGRyYWdnZWRcbiAgICovXG4gIGhhbmRsZVJlc2l6ZVN0YXJ0KGV2ZW50LCBkaXJlY3Rpb24pIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaXNSZXNpemluZyA9IHRydWU7XG4gICAgdGhpcy5hY3RpdmVIYW5kbGUgPSBkaXJlY3Rpb247XG4gICAgaWYgKGlzVG91Y2hFdmVudChldmVudCkpIHtcbiAgICAgIHRoaXMuc3RhcnRYID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgdGhpcy5zdGFydFkgPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICAgIHRoaXMuc3RhcnRZID0gZXZlbnQuY2xpZW50WTtcbiAgICB9XG4gICAgdGhpcy5zdGFydFdpZHRoID0gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIHRoaXMuc3RhcnRIZWlnaHQgPSB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgIGlmICh0aGlzLnN0YXJ0V2lkdGggPiAwICYmIHRoaXMuc3RhcnRIZWlnaHQgPiAwKSB7XG4gICAgICB0aGlzLmFzcGVjdFJhdGlvID0gdGhpcy5zdGFydFdpZHRoIC8gdGhpcy5zdGFydEhlaWdodDtcbiAgICB9XG4gICAgY29uc3QgcG9zID0gdGhpcy5nZXRQb3MoKTtcbiAgICBpZiAocG9zICE9PSB2b2lkIDApIHtcbiAgICB9XG4gICAgdGhpcy5jb250YWluZXIuZGF0YXNldC5yZXNpemVTdGF0ZSA9IFwidHJ1ZVwiO1xuICAgIGlmICh0aGlzLmNsYXNzTmFtZXMucmVzaXppbmcpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLnJlc2l6aW5nKTtcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0aGlzLmhhbmRsZVRvdWNoTW92ZSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5oYW5kbGVNb3VzZVVwKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmhhbmRsZUtleURvd24pO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCB0aGlzLmhhbmRsZUtleVVwKTtcbiAgfVxuICBoYW5kbGVSZXNpemUoZGVsdGFYLCBkZWx0YVkpIHtcbiAgICBpZiAoIXRoaXMuYWN0aXZlSGFuZGxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZFByZXNlcnZlQXNwZWN0UmF0aW8gPSB0aGlzLnByZXNlcnZlQXNwZWN0UmF0aW8gfHwgdGhpcy5pc1NoaWZ0S2V5UHJlc3NlZDtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMuY2FsY3VsYXRlTmV3RGltZW5zaW9ucyh0aGlzLmFjdGl2ZUhhbmRsZSwgZGVsdGFYLCBkZWx0YVkpO1xuICAgIGNvbnN0IGNvbnN0cmFpbmVkID0gdGhpcy5hcHBseUNvbnN0cmFpbnRzKHdpZHRoLCBoZWlnaHQsIHNob3VsZFByZXNlcnZlQXNwZWN0UmF0aW8pO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke2NvbnN0cmFpbmVkLndpZHRofXB4YDtcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7Y29uc3RyYWluZWQuaGVpZ2h0fXB4YDtcbiAgICBpZiAodGhpcy5vblJlc2l6ZSkge1xuICAgICAgdGhpcy5vblJlc2l6ZShjb25zdHJhaW5lZC53aWR0aCwgY29uc3RyYWluZWQuaGVpZ2h0KTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgbmV3IGRpbWVuc2lvbnMgYmFzZWQgb24gbW91c2UgZGVsdGEgYW5kIHJlc2l6ZSBkaXJlY3Rpb24uXG4gICAqXG4gICAqIFRha2VzIHRoZSBzdGFydGluZyBkaW1lbnNpb25zIGFuZCBhcHBsaWVzIHRoZSBtb3VzZSBtb3ZlbWVudCBkZWx0YVxuICAgKiBhY2NvcmRpbmcgdG8gdGhlIGhhbmRsZSBkaXJlY3Rpb24uIEZvciBjb3JuZXIgaGFuZGxlcywgYm90aCBkaW1lbnNpb25zXG4gICAqIGFyZSBhZmZlY3RlZC4gRm9yIGVkZ2UgaGFuZGxlcywgb25seSBvbmUgZGltZW5zaW9uIGNoYW5nZXMuIElmIGFzcGVjdFxuICAgKiByYXRpbyBzaG91bGQgYmUgcHJlc2VydmVkLCBkZWxlZ2F0ZXMgdG8gYXBwbHlBc3BlY3RSYXRpby5cbiAgICpcbiAgICogQHBhcmFtIGRpcmVjdGlvbiAtIFRoZSBhY3RpdmUgcmVzaXplIGhhbmRsZSBkaXJlY3Rpb25cbiAgICogQHBhcmFtIGRlbHRhWCAtIEhvcml6b250YWwgbW91c2UgbW92ZW1lbnQgc2luY2UgcmVzaXplIHN0YXJ0XG4gICAqIEBwYXJhbSBkZWx0YVkgLSBWZXJ0aWNhbCBtb3VzZSBtb3ZlbWVudCBzaW5jZSByZXNpemUgc3RhcnRcbiAgICogQHJldHVybnMgVGhlIGNhbGN1bGF0ZWQgd2lkdGggYW5kIGhlaWdodFxuICAgKi9cbiAgY2FsY3VsYXRlTmV3RGltZW5zaW9ucyhkaXJlY3Rpb24sIGRlbHRhWCwgZGVsdGFZKSB7XG4gICAgbGV0IG5ld1dpZHRoID0gdGhpcy5zdGFydFdpZHRoO1xuICAgIGxldCBuZXdIZWlnaHQgPSB0aGlzLnN0YXJ0SGVpZ2h0O1xuICAgIGNvbnN0IGlzUmlnaHQgPSBkaXJlY3Rpb24uaW5jbHVkZXMoXCJyaWdodFwiKTtcbiAgICBjb25zdCBpc0xlZnQgPSBkaXJlY3Rpb24uaW5jbHVkZXMoXCJsZWZ0XCIpO1xuICAgIGNvbnN0IGlzQm90dG9tID0gZGlyZWN0aW9uLmluY2x1ZGVzKFwiYm90dG9tXCIpO1xuICAgIGNvbnN0IGlzVG9wID0gZGlyZWN0aW9uLmluY2x1ZGVzKFwidG9wXCIpO1xuICAgIGlmIChpc1JpZ2h0KSB7XG4gICAgICBuZXdXaWR0aCA9IHRoaXMuc3RhcnRXaWR0aCArIGRlbHRhWDtcbiAgICB9IGVsc2UgaWYgKGlzTGVmdCkge1xuICAgICAgbmV3V2lkdGggPSB0aGlzLnN0YXJ0V2lkdGggLSBkZWx0YVg7XG4gICAgfVxuICAgIGlmIChpc0JvdHRvbSkge1xuICAgICAgbmV3SGVpZ2h0ID0gdGhpcy5zdGFydEhlaWdodCArIGRlbHRhWTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wKSB7XG4gICAgICBuZXdIZWlnaHQgPSB0aGlzLnN0YXJ0SGVpZ2h0IC0gZGVsdGFZO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSBcInJpZ2h0XCIgfHwgZGlyZWN0aW9uID09PSBcImxlZnRcIikge1xuICAgICAgbmV3V2lkdGggPSB0aGlzLnN0YXJ0V2lkdGggKyAoaXNSaWdodCA/IGRlbHRhWCA6IC1kZWx0YVgpO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSBcInRvcFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJib3R0b21cIikge1xuICAgICAgbmV3SGVpZ2h0ID0gdGhpcy5zdGFydEhlaWdodCArIChpc0JvdHRvbSA/IGRlbHRhWSA6IC1kZWx0YVkpO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gdGhpcy5wcmVzZXJ2ZUFzcGVjdFJhdGlvIHx8IHRoaXMuaXNTaGlmdEtleVByZXNzZWQ7XG4gICAgaWYgKHNob3VsZFByZXNlcnZlQXNwZWN0UmF0aW8pIHtcbiAgICAgIHJldHVybiB0aGlzLmFwcGx5QXNwZWN0UmF0aW8obmV3V2lkdGgsIG5ld0hlaWdodCwgZGlyZWN0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgd2lkdGg6IG5ld1dpZHRoLCBoZWlnaHQ6IG5ld0hlaWdodCB9O1xuICB9XG4gIC8qKlxuICAgKiBBcHBsaWVzIG1pbi9tYXggY29uc3RyYWludHMgdG8gZGltZW5zaW9ucy5cbiAgICpcbiAgICogV2hlbiBhc3BlY3QgcmF0aW8gaXMgTk9UIHByZXNlcnZlZCwgY29uc3RyYWludHMgYXJlIGFwcGxpZWQgaW5kZXBlbmRlbnRseVxuICAgKiB0byB3aWR0aCBhbmQgaGVpZ2h0LiBXaGVuIGFzcGVjdCByYXRpbyBJUyBwcmVzZXJ2ZWQsIGNvbnN0cmFpbnRzIGFyZVxuICAgKiBhcHBsaWVkIHdoaWxlIG1haW50YWluaW5nIHRoZSBhc3BlY3QgcmF0aW/igJRpZiBvbmUgZGltZW5zaW9uIGhpdHMgYSBsaW1pdCxcbiAgICogdGhlIG90aGVyIGlzIHJlY2FsY3VsYXRlZCBwcm9wb3J0aW9uYWxseS5cbiAgICpcbiAgICogVGhpcyBlbnN1cmVzIHRoYXQgYXNwZWN0IHJhdGlvIGlzIG5ldmVyIGJyb2tlbiB3aGVuIGNvbnN0cmFpbmVkLlxuICAgKlxuICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgdW5jb25zdHJhaW5lZCB3aWR0aFxuICAgKiBAcGFyYW0gaGVpZ2h0IC0gVGhlIHVuY29uc3RyYWluZWQgaGVpZ2h0XG4gICAqIEBwYXJhbSBwcmVzZXJ2ZUFzcGVjdFJhdGlvIC0gV2hldGhlciB0byBtYWludGFpbiBhc3BlY3QgcmF0aW8gd2hpbGUgY29uc3RyYWluaW5nXG4gICAqIEByZXR1cm5zIFRoZSBjb25zdHJhaW5lZCBkaW1lbnNpb25zXG4gICAqL1xuICBhcHBseUNvbnN0cmFpbnRzKHdpZHRoLCBoZWlnaHQsIHByZXNlcnZlQXNwZWN0UmF0aW8pIHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgaWYgKCFwcmVzZXJ2ZUFzcGVjdFJhdGlvKSB7XG4gICAgICBsZXQgY29uc3RyYWluZWRXaWR0aDIgPSBNYXRoLm1heCh0aGlzLm1pblNpemUud2lkdGgsIHdpZHRoKTtcbiAgICAgIGxldCBjb25zdHJhaW5lZEhlaWdodDIgPSBNYXRoLm1heCh0aGlzLm1pblNpemUuaGVpZ2h0LCBoZWlnaHQpO1xuICAgICAgaWYgKChfYSA9IHRoaXMubWF4U2l6ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLndpZHRoKSB7XG4gICAgICAgIGNvbnN0cmFpbmVkV2lkdGgyID0gTWF0aC5taW4odGhpcy5tYXhTaXplLndpZHRoLCBjb25zdHJhaW5lZFdpZHRoMik7XG4gICAgICB9XG4gICAgICBpZiAoKF9iID0gdGhpcy5tYXhTaXplKSA9PSBudWxsID8gdm9pZCAwIDogX2IuaGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0cmFpbmVkSGVpZ2h0MiA9IE1hdGgubWluKHRoaXMubWF4U2l6ZS5oZWlnaHQsIGNvbnN0cmFpbmVkSGVpZ2h0Mik7XG4gICAgICB9XG4gICAgICByZXR1cm4geyB3aWR0aDogY29uc3RyYWluZWRXaWR0aDIsIGhlaWdodDogY29uc3RyYWluZWRIZWlnaHQyIH07XG4gICAgfVxuICAgIGxldCBjb25zdHJhaW5lZFdpZHRoID0gd2lkdGg7XG4gICAgbGV0IGNvbnN0cmFpbmVkSGVpZ2h0ID0gaGVpZ2h0O1xuICAgIGlmIChjb25zdHJhaW5lZFdpZHRoIDwgdGhpcy5taW5TaXplLndpZHRoKSB7XG4gICAgICBjb25zdHJhaW5lZFdpZHRoID0gdGhpcy5taW5TaXplLndpZHRoO1xuICAgICAgY29uc3RyYWluZWRIZWlnaHQgPSBjb25zdHJhaW5lZFdpZHRoIC8gdGhpcy5hc3BlY3RSYXRpbztcbiAgICB9XG4gICAgaWYgKGNvbnN0cmFpbmVkSGVpZ2h0IDwgdGhpcy5taW5TaXplLmhlaWdodCkge1xuICAgICAgY29uc3RyYWluZWRIZWlnaHQgPSB0aGlzLm1pblNpemUuaGVpZ2h0O1xuICAgICAgY29uc3RyYWluZWRXaWR0aCA9IGNvbnN0cmFpbmVkSGVpZ2h0ICogdGhpcy5hc3BlY3RSYXRpbztcbiAgICB9XG4gICAgaWYgKCgoX2MgPSB0aGlzLm1heFNpemUpID09IG51bGwgPyB2b2lkIDAgOiBfYy53aWR0aCkgJiYgY29uc3RyYWluZWRXaWR0aCA+IHRoaXMubWF4U2l6ZS53aWR0aCkge1xuICAgICAgY29uc3RyYWluZWRXaWR0aCA9IHRoaXMubWF4U2l6ZS53aWR0aDtcbiAgICAgIGNvbnN0cmFpbmVkSGVpZ2h0ID0gY29uc3RyYWluZWRXaWR0aCAvIHRoaXMuYXNwZWN0UmF0aW87XG4gICAgfVxuICAgIGlmICgoKF9kID0gdGhpcy5tYXhTaXplKSA9PSBudWxsID8gdm9pZCAwIDogX2QuaGVpZ2h0KSAmJiBjb25zdHJhaW5lZEhlaWdodCA+IHRoaXMubWF4U2l6ZS5oZWlnaHQpIHtcbiAgICAgIGNvbnN0cmFpbmVkSGVpZ2h0ID0gdGhpcy5tYXhTaXplLmhlaWdodDtcbiAgICAgIGNvbnN0cmFpbmVkV2lkdGggPSBjb25zdHJhaW5lZEhlaWdodCAqIHRoaXMuYXNwZWN0UmF0aW87XG4gICAgfVxuICAgIHJldHVybiB7IHdpZHRoOiBjb25zdHJhaW5lZFdpZHRoLCBoZWlnaHQ6IGNvbnN0cmFpbmVkSGVpZ2h0IH07XG4gIH1cbiAgLyoqXG4gICAqIEFkanVzdHMgZGltZW5zaW9ucyB0byBtYWludGFpbiB0aGUgb3JpZ2luYWwgYXNwZWN0IHJhdGlvLlxuICAgKlxuICAgKiBGb3IgaG9yaXpvbnRhbCBoYW5kbGVzIChsZWZ0L3JpZ2h0KSwgdXNlcyB3aWR0aCBhcyB0aGUgcHJpbWFyeSBkaW1lbnNpb25cbiAgICogYW5kIGNhbGN1bGF0ZXMgaGVpZ2h0IGZyb20gaXQuIEZvciB2ZXJ0aWNhbCBoYW5kbGVzICh0b3AvYm90dG9tKSwgdXNlc1xuICAgKiBoZWlnaHQgYXMgcHJpbWFyeSBhbmQgY2FsY3VsYXRlcyB3aWR0aC4gRm9yIGNvcm5lciBoYW5kbGVzLCB1c2VzIHdpZHRoXG4gICAqIGFzIHRoZSBwcmltYXJ5IGRpbWVuc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIHdpZHRoIC0gVGhlIG5ldyB3aWR0aFxuICAgKiBAcGFyYW0gaGVpZ2h0IC0gVGhlIG5ldyBoZWlnaHRcbiAgICogQHBhcmFtIGRpcmVjdGlvbiAtIFRoZSBhY3RpdmUgcmVzaXplIGRpcmVjdGlvblxuICAgKiBAcmV0dXJucyBEaW1lbnNpb25zIGFkanVzdGVkIHRvIHByZXNlcnZlIGFzcGVjdCByYXRpb1xuICAgKi9cbiAgYXBwbHlBc3BlY3RSYXRpbyh3aWR0aCwgaGVpZ2h0LCBkaXJlY3Rpb24pIHtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT09IFwibGVmdFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJyaWdodFwiO1xuICAgIGNvbnN0IGlzVmVydGljYWwgPSBkaXJlY3Rpb24gPT09IFwidG9wXCIgfHwgZGlyZWN0aW9uID09PSBcImJvdHRvbVwiO1xuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHdpZHRoIC8gdGhpcy5hc3BlY3RSYXRpb1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGlzVmVydGljYWwpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiBoZWlnaHQgKiB0aGlzLmFzcGVjdFJhdGlvLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodDogd2lkdGggLyB0aGlzLmFzcGVjdFJhdGlvXG4gICAgfTtcbiAgfVxufTtcbnZhciBSZXNpemFibGVOb2RldmlldyA9IFJlc2l6YWJsZU5vZGVWaWV3O1xuXG4vLyBzcmMvdXRpbGl0aWVzL2Nhbkluc2VydE5vZGUudHNcbmltcG9ydCB7IE5vZGVTZWxlY3Rpb24gYXMgTm9kZVNlbGVjdGlvbjQgfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xuZnVuY3Rpb24gY2FuSW5zZXJ0Tm9kZShzdGF0ZSwgbm9kZVR5cGUpIHtcbiAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IHN0YXRlO1xuICBjb25zdCB7ICRmcm9tIH0gPSBzZWxlY3Rpb247XG4gIGlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uNCkge1xuICAgIGNvbnN0IGluZGV4ID0gJGZyb20uaW5kZXgoKTtcbiAgICBjb25zdCBwYXJlbnQgPSAkZnJvbS5wYXJlbnQ7XG4gICAgcmV0dXJuIHBhcmVudC5jYW5SZXBsYWNlV2l0aChpbmRleCwgaW5kZXggKyAxLCBub2RlVHlwZSk7XG4gIH1cbiAgbGV0IGRlcHRoID0gJGZyb20uZGVwdGg7XG4gIHdoaWxlIChkZXB0aCA+PSAwKSB7XG4gICAgY29uc3QgaW5kZXggPSAkZnJvbS5pbmRleChkZXB0aCk7XG4gICAgY29uc3QgcGFyZW50ID0gJGZyb20ubm9kZShkZXB0aCk7XG4gICAgY29uc3QgbWF0Y2ggPSBwYXJlbnQuY29udGVudE1hdGNoQXQoaW5kZXgpO1xuICAgIGlmIChtYXRjaC5tYXRjaFR5cGUobm9kZVR5cGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZGVwdGggLT0gMTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIHNyYy91dGlsaXRpZXMvZXNjYXBlRm9yUmVnRXgudHNcbmZ1bmN0aW9uIGVzY2FwZUZvclJlZ0V4KHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1stL1xcXFxeJCorPy4oKXxbXFxde31dL2csIFwiXFxcXCQmXCIpO1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL2lzRmlyZWZveC50c1xuZnVuY3Rpb24gaXNGaXJlZm94KCkge1xuICByZXR1cm4gdHlwZW9mIG5hdmlnYXRvciAhPT0gXCJ1bmRlZmluZWRcIiA/IC9GaXJlZm94Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpIDogZmFsc2U7XG59XG5cbi8vIHNyYy91dGlsaXRpZXMvaXNTdHJpbmcudHNcbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG59XG5cbi8vIHNyYy91dGlsaXRpZXMvbWFya2Rvd24vaW5kZXgudHNcbnZhciBtYXJrZG93bl9leHBvcnRzID0ge307XG5fX2V4cG9ydChtYXJrZG93bl9leHBvcnRzLCB7XG4gIGNyZWF0ZUF0b21CbG9ja01hcmtkb3duU3BlYzogKCkgPT4gY3JlYXRlQXRvbUJsb2NrTWFya2Rvd25TcGVjLFxuICBjcmVhdGVCbG9ja01hcmtkb3duU3BlYzogKCkgPT4gY3JlYXRlQmxvY2tNYXJrZG93blNwZWMsXG4gIGNyZWF0ZUlubGluZU1hcmtkb3duU3BlYzogKCkgPT4gY3JlYXRlSW5saW5lTWFya2Rvd25TcGVjLFxuICBwYXJzZUF0dHJpYnV0ZXM6ICgpID0+IHBhcnNlQXR0cmlidXRlcyxcbiAgcGFyc2VJbmRlbnRlZEJsb2NrczogKCkgPT4gcGFyc2VJbmRlbnRlZEJsb2NrcyxcbiAgcmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50OiAoKSA9PiByZW5kZXJOZXN0ZWRNYXJrZG93bkNvbnRlbnQsXG4gIHNlcmlhbGl6ZUF0dHJpYnV0ZXM6ICgpID0+IHNlcmlhbGl6ZUF0dHJpYnV0ZXNcbn0pO1xuXG4vLyBzcmMvdXRpbGl0aWVzL21hcmtkb3duL2F0dHJpYnV0ZVV0aWxzLnRzXG5mdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZXMoYXR0clN0cmluZykge1xuICBpZiAoIShhdHRyU3RyaW5nID09IG51bGwgPyB2b2lkIDAgOiBhdHRyU3RyaW5nLnRyaW0oKSkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICBjb25zdCBxdW90ZWRTdHJpbmdzID0gW107XG4gIGNvbnN0IHRlbXBTdHJpbmcgPSBhdHRyU3RyaW5nLnJlcGxhY2UoL1tcIiddKFteXCInXSopW1wiJ10vZywgKG1hdGNoKSA9PiB7XG4gICAgcXVvdGVkU3RyaW5ncy5wdXNoKG1hdGNoKTtcbiAgICByZXR1cm4gYF9fUVVPVEVEXyR7cXVvdGVkU3RyaW5ncy5sZW5ndGggLSAxfV9fYDtcbiAgfSk7XG4gIGNvbnN0IGNsYXNzTWF0Y2hlcyA9IHRlbXBTdHJpbmcubWF0Y2goLyg/Ol58XFxzKVxcLihbYS16QS1aXVtcXHctXSopL2cpO1xuICBpZiAoY2xhc3NNYXRjaGVzKSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzTWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiBtYXRjaC50cmltKCkuc2xpY2UoMSkpO1xuICAgIGF0dHJpYnV0ZXMuY2xhc3MgPSBjbGFzc2VzLmpvaW4oXCIgXCIpO1xuICB9XG4gIGNvbnN0IGlkTWF0Y2ggPSB0ZW1wU3RyaW5nLm1hdGNoKC8oPzpefFxccykjKFthLXpBLVpdW1xcdy1dKikvKTtcbiAgaWYgKGlkTWF0Y2gpIHtcbiAgICBhdHRyaWJ1dGVzLmlkID0gaWRNYXRjaFsxXTtcbiAgfVxuICBjb25zdCBrdlJlZ2V4ID0gLyhbYS16QS1aXVtcXHctXSopXFxzKj1cXHMqKF9fUVVPVEVEX1xcZCtfXykvZztcbiAgY29uc3Qga3ZNYXRjaGVzID0gQXJyYXkuZnJvbSh0ZW1wU3RyaW5nLm1hdGNoQWxsKGt2UmVnZXgpKTtcbiAga3ZNYXRjaGVzLmZvckVhY2goKFssIGtleSwgcXVvdGVkUmVmXSkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBxdW90ZWRJbmRleCA9IHBhcnNlSW50KCgoX2EgPSBxdW90ZWRSZWYubWF0Y2goL19fUVVPVEVEXyhcXGQrKV9fLykpID09IG51bGwgPyB2b2lkIDAgOiBfYVsxXSkgfHwgXCIwXCIsIDEwKTtcbiAgICBjb25zdCBxdW90ZWRWYWx1ZSA9IHF1b3RlZFN0cmluZ3NbcXVvdGVkSW5kZXhdO1xuICAgIGlmIChxdW90ZWRWYWx1ZSkge1xuICAgICAgYXR0cmlidXRlc1trZXldID0gcXVvdGVkVmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGNsZWFuU3RyaW5nID0gdGVtcFN0cmluZy5yZXBsYWNlKC8oPzpefFxccylcXC4oW2EtekEtWl1bXFx3LV0qKS9nLCBcIlwiKS5yZXBsYWNlKC8oPzpefFxccykjKFthLXpBLVpdW1xcdy1dKikvZywgXCJcIikucmVwbGFjZSgvKFthLXpBLVpdW1xcdy1dKilcXHMqPVxccypfX1FVT1RFRF9cXGQrX18vZywgXCJcIikudHJpbSgpO1xuICBpZiAoY2xlYW5TdHJpbmcpIHtcbiAgICBjb25zdCBib29sZWFuQXR0cnMgPSBjbGVhblN0cmluZy5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKTtcbiAgICBib29sZWFuQXR0cnMuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgaWYgKGF0dHIubWF0Y2goL15bYS16QS1aXVtcXHctXSokLykpIHtcbiAgICAgICAgYXR0cmlidXRlc1thdHRyXSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpIHtcbiAgaWYgKCFhdHRyaWJ1dGVzIHx8IE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIGNvbnN0IHBhcnRzID0gW107XG4gIGlmIChhdHRyaWJ1dGVzLmNsYXNzKSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IFN0cmluZyhhdHRyaWJ1dGVzLmNsYXNzKS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKTtcbiAgICBjbGFzc2VzLmZvckVhY2goKGNscykgPT4gcGFydHMucHVzaChgLiR7Y2xzfWApKTtcbiAgfVxuICBpZiAoYXR0cmlidXRlcy5pZCkge1xuICAgIHBhcnRzLnB1c2goYCMke2F0dHJpYnV0ZXMuaWR9YCk7XG4gIH1cbiAgT2JqZWN0LmVudHJpZXMoYXR0cmlidXRlcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKGtleSA9PT0gXCJjbGFzc1wiIHx8IGtleSA9PT0gXCJpZFwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgcGFydHMucHVzaChrZXkpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHBhcnRzLnB1c2goYCR7a2V5fT1cIiR7U3RyaW5nKHZhbHVlKX1cImApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwYXJ0cy5qb2luKFwiIFwiKTtcbn1cblxuLy8gc3JjL3V0aWxpdGllcy9tYXJrZG93bi9jcmVhdGVBdG9tQmxvY2tNYXJrZG93blNwZWMudHNcbmZ1bmN0aW9uIGNyZWF0ZUF0b21CbG9ja01hcmtkb3duU3BlYyhvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBub2RlTmFtZSxcbiAgICBuYW1lOiBtYXJrZG93bk5hbWUsXG4gICAgcGFyc2VBdHRyaWJ1dGVzOiBwYXJzZUF0dHJpYnV0ZXMyID0gcGFyc2VBdHRyaWJ1dGVzLFxuICAgIHNlcmlhbGl6ZUF0dHJpYnV0ZXM6IHNlcmlhbGl6ZUF0dHJpYnV0ZXMyID0gc2VyaWFsaXplQXR0cmlidXRlcyxcbiAgICBkZWZhdWx0QXR0cmlidXRlcyA9IHt9LFxuICAgIHJlcXVpcmVkQXR0cmlidXRlcyA9IFtdLFxuICAgIGFsbG93ZWRBdHRyaWJ1dGVzXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBibG9ja05hbWUgPSBtYXJrZG93bk5hbWUgfHwgbm9kZU5hbWU7XG4gIGNvbnN0IGZpbHRlckF0dHJpYnV0ZXMgPSAoYXR0cnMpID0+IHtcbiAgICBpZiAoIWFsbG93ZWRBdHRyaWJ1dGVzKSB7XG4gICAgICByZXR1cm4gYXR0cnM7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlcmVkID0ge307XG4gICAgYWxsb3dlZEF0dHJpYnV0ZXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5IGluIGF0dHJzKSB7XG4gICAgICAgIGZpbHRlcmVkW2tleV0gPSBhdHRyc1trZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBwYXJzZU1hcmtkb3duOiAodG9rZW4sIGgyKSA9PiB7XG4gICAgICBjb25zdCBhdHRycyA9IHsgLi4uZGVmYXVsdEF0dHJpYnV0ZXMsIC4uLnRva2VuLmF0dHJpYnV0ZXMgfTtcbiAgICAgIHJldHVybiBoMi5jcmVhdGVOb2RlKG5vZGVOYW1lLCBhdHRycywgW10pO1xuICAgIH0sXG4gICAgbWFya2Rvd25Ub2tlbml6ZXI6IHtcbiAgICAgIG5hbWU6IG5vZGVOYW1lLFxuICAgICAgbGV2ZWw6IFwiYmxvY2tcIixcbiAgICAgIHN0YXJ0KHNyYykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXjo6OiR7YmxvY2tOYW1lfSg/OlxcXFxzfCQpYCwgXCJtXCIpO1xuICAgICAgICBjb25zdCBpbmRleCA9IChfYSA9IHNyYy5tYXRjaChyZWdleCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pbmRleDtcbiAgICAgICAgcmV0dXJuIGluZGV4ICE9PSB2b2lkIDAgPyBpbmRleCA6IC0xO1xuICAgICAgfSxcbiAgICAgIHRva2VuaXplKHNyYywgX3Rva2VucywgX2xleGVyKSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXjo6OiR7YmxvY2tOYW1lfSg/OlxcXFxzK1xcXFx7KFtefV0qKVxcXFx9KT9cXFxccyo6OjooPzpcXFxcbnwkKWApO1xuICAgICAgICBjb25zdCBtYXRjaCA9IHNyYy5tYXRjaChyZWdleCk7XG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF0dHJTdHJpbmcgPSBtYXRjaFsxXSB8fCBcIlwiO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gcGFyc2VBdHRyaWJ1dGVzMihhdHRyU3RyaW5nKTtcbiAgICAgICAgY29uc3QgbWlzc2luZ1JlcXVpcmVkID0gcmVxdWlyZWRBdHRyaWJ1dGVzLmZpbmQoKHJlcXVpcmVkKSA9PiAhKHJlcXVpcmVkIGluIGF0dHJpYnV0ZXMpKTtcbiAgICAgICAgaWYgKG1pc3NpbmdSZXF1aXJlZCkge1xuICAgICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBub2RlTmFtZSxcbiAgICAgICAgICByYXc6IG1hdGNoWzBdLFxuICAgICAgICAgIGF0dHJpYnV0ZXNcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlbmRlck1hcmtkb3duOiAobm9kZSkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRBdHRycyA9IGZpbHRlckF0dHJpYnV0ZXMobm9kZS5hdHRycyB8fCB7fSk7XG4gICAgICBjb25zdCBhdHRycyA9IHNlcmlhbGl6ZUF0dHJpYnV0ZXMyKGZpbHRlcmVkQXR0cnMpO1xuICAgICAgY29uc3QgYXR0clN0cmluZyA9IGF0dHJzID8gYCB7JHthdHRyc319YCA6IFwiXCI7XG4gICAgICByZXR1cm4gYDo6OiR7YmxvY2tOYW1lfSR7YXR0clN0cmluZ30gOjo6YDtcbiAgICB9XG4gIH07XG59XG5cbi8vIHNyYy91dGlsaXRpZXMvbWFya2Rvd24vY3JlYXRlQmxvY2tNYXJrZG93blNwZWMudHNcbmZ1bmN0aW9uIGNyZWF0ZUJsb2NrTWFya2Rvd25TcGVjKG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIG5vZGVOYW1lLFxuICAgIG5hbWU6IG1hcmtkb3duTmFtZSxcbiAgICBnZXRDb250ZW50LFxuICAgIHBhcnNlQXR0cmlidXRlczogcGFyc2VBdHRyaWJ1dGVzMiA9IHBhcnNlQXR0cmlidXRlcyxcbiAgICBzZXJpYWxpemVBdHRyaWJ1dGVzOiBzZXJpYWxpemVBdHRyaWJ1dGVzMiA9IHNlcmlhbGl6ZUF0dHJpYnV0ZXMsXG4gICAgZGVmYXVsdEF0dHJpYnV0ZXMgPSB7fSxcbiAgICBjb250ZW50ID0gXCJibG9ja1wiLFxuICAgIGFsbG93ZWRBdHRyaWJ1dGVzXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBibG9ja05hbWUgPSBtYXJrZG93bk5hbWUgfHwgbm9kZU5hbWU7XG4gIGNvbnN0IGZpbHRlckF0dHJpYnV0ZXMgPSAoYXR0cnMpID0+IHtcbiAgICBpZiAoIWFsbG93ZWRBdHRyaWJ1dGVzKSB7XG4gICAgICByZXR1cm4gYXR0cnM7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlcmVkID0ge307XG4gICAgYWxsb3dlZEF0dHJpYnV0ZXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5IGluIGF0dHJzKSB7XG4gICAgICAgIGZpbHRlcmVkW2tleV0gPSBhdHRyc1trZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBwYXJzZU1hcmtkb3duOiAodG9rZW4sIGgyKSA9PiB7XG4gICAgICBsZXQgbm9kZUNvbnRlbnQ7XG4gICAgICBpZiAoZ2V0Q29udGVudCkge1xuICAgICAgICBjb25zdCBjb250ZW50UmVzdWx0ID0gZ2V0Q29udGVudCh0b2tlbik7XG4gICAgICAgIG5vZGVDb250ZW50ID0gdHlwZW9mIGNvbnRlbnRSZXN1bHQgPT09IFwic3RyaW5nXCIgPyBbeyB0eXBlOiBcInRleHRcIiwgdGV4dDogY29udGVudFJlc3VsdCB9XSA6IGNvbnRlbnRSZXN1bHQ7XG4gICAgICB9IGVsc2UgaWYgKGNvbnRlbnQgPT09IFwiYmxvY2tcIikge1xuICAgICAgICBub2RlQ29udGVudCA9IGgyLnBhcnNlQ2hpbGRyZW4odG9rZW4udG9rZW5zIHx8IFtdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVDb250ZW50ID0gaDIucGFyc2VJbmxpbmUodG9rZW4udG9rZW5zIHx8IFtdKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGF0dHJzID0geyAuLi5kZWZhdWx0QXR0cmlidXRlcywgLi4udG9rZW4uYXR0cmlidXRlcyB9O1xuICAgICAgcmV0dXJuIGgyLmNyZWF0ZU5vZGUobm9kZU5hbWUsIGF0dHJzLCBub2RlQ29udGVudCk7XG4gICAgfSxcbiAgICBtYXJrZG93blRva2VuaXplcjoge1xuICAgICAgbmFtZTogbm9kZU5hbWUsXG4gICAgICBsZXZlbDogXCJibG9ja1wiLFxuICAgICAgc3RhcnQoc3JjKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeOjo6JHtibG9ja05hbWV9YCwgXCJtXCIpO1xuICAgICAgICBjb25zdCBpbmRleCA9IChfYSA9IHNyYy5tYXRjaChyZWdleCkpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pbmRleDtcbiAgICAgICAgcmV0dXJuIGluZGV4ICE9PSB2b2lkIDAgPyBpbmRleCA6IC0xO1xuICAgICAgfSxcbiAgICAgIHRva2VuaXplKHNyYywgX3Rva2VucywgbGV4ZXIpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBvcGVuaW5nUmVnZXggPSBuZXcgUmVnRXhwKGBeOjo6JHtibG9ja05hbWV9KD86XFxcXHMrXFxcXHsoW159XSopXFxcXH0pP1xcXFxzKlxcXFxuYCk7XG4gICAgICAgIGNvbnN0IG9wZW5pbmdNYXRjaCA9IHNyYy5tYXRjaChvcGVuaW5nUmVnZXgpO1xuICAgICAgICBpZiAoIW9wZW5pbmdNYXRjaCkge1xuICAgICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW29wZW5pbmdUYWcsIGF0dHJTdHJpbmcgPSBcIlwiXSA9IG9wZW5pbmdNYXRjaDtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHBhcnNlQXR0cmlidXRlczIoYXR0clN0cmluZyk7XG4gICAgICAgIGxldCBsZXZlbCA9IDE7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gb3BlbmluZ1RhZy5sZW5ndGg7XG4gICAgICAgIGxldCBtYXRjaGVkQ29udGVudCA9IFwiXCI7XG4gICAgICAgIGNvbnN0IGJsb2NrUGF0dGVybiA9IC9eOjo6KFtcXHctXSopKFxccy4qKT8vZ207XG4gICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IHNyYy5zbGljZShwb3NpdGlvbik7XG4gICAgICAgIGJsb2NrUGF0dGVybi5sYXN0SW5kZXggPSAwO1xuICAgICAgICBmb3IgKDsgOyApIHtcbiAgICAgICAgICBjb25zdCBtYXRjaCA9IGJsb2NrUGF0dGVybi5leGVjKHJlbWFpbmluZyk7XG4gICAgICAgICAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbWF0Y2hQb3MgPSBtYXRjaC5pbmRleDtcbiAgICAgICAgICBjb25zdCBibG9ja1R5cGUgPSBtYXRjaFsxXTtcbiAgICAgICAgICBpZiAoKF9hID0gbWF0Y2hbMl0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5lbmRzV2l0aChcIjo6OlwiKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChibG9ja1R5cGUpIHtcbiAgICAgICAgICAgIGxldmVsICs9IDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldmVsIC09IDE7XG4gICAgICAgICAgICBpZiAobGV2ZWwgPT09IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgcmF3Q29udGVudCA9IHJlbWFpbmluZy5zbGljZSgwLCBtYXRjaFBvcyk7XG4gICAgICAgICAgICAgIG1hdGNoZWRDb250ZW50ID0gcmF3Q29udGVudC50cmltKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGZ1bGxNYXRjaCA9IHNyYy5zbGljZSgwLCBwb3NpdGlvbiArIG1hdGNoUG9zICsgbWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICAgICAgbGV0IGNvbnRlbnRUb2tlbnMgPSBbXTtcbiAgICAgICAgICAgICAgaWYgKG1hdGNoZWRDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQgPT09IFwiYmxvY2tcIikge1xuICAgICAgICAgICAgICAgICAgY29udGVudFRva2VucyA9IGxleGVyLmJsb2NrVG9rZW5zKHJhd0NvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgY29udGVudFRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4udGV4dCAmJiAoIXRva2VuLnRva2VucyB8fCB0b2tlbi50b2tlbnMubGVuZ3RoID09PSAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnRva2VucyA9IGxleGVyLmlubGluZVRva2Vucyh0b2tlbi50ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB3aGlsZSAoY29udGVudFRva2Vucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RUb2tlbiA9IGNvbnRlbnRUb2tlbnNbY29udGVudFRva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RUb2tlbi50eXBlID09PSBcInBhcmFncmFwaFwiICYmICghbGFzdFRva2VuLnRleHQgfHwgbGFzdFRva2VuLnRleHQudHJpbSgpID09PSBcIlwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUb2tlbnMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29udGVudFRva2VucyA9IGxleGVyLmlubGluZVRva2VucyhtYXRjaGVkQ29udGVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogbm9kZU5hbWUsXG4gICAgICAgICAgICAgICAgcmF3OiBmdWxsTWF0Y2gsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBtYXRjaGVkQ29udGVudCxcbiAgICAgICAgICAgICAgICB0b2tlbnM6IGNvbnRlbnRUb2tlbnNcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlbmRlck1hcmtkb3duOiAobm9kZSwgaDIpID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkQXR0cnMgPSBmaWx0ZXJBdHRyaWJ1dGVzKG5vZGUuYXR0cnMgfHwge30pO1xuICAgICAgY29uc3QgYXR0cnMgPSBzZXJpYWxpemVBdHRyaWJ1dGVzMihmaWx0ZXJlZEF0dHJzKTtcbiAgICAgIGNvbnN0IGF0dHJTdHJpbmcgPSBhdHRycyA/IGAgeyR7YXR0cnN9fWAgOiBcIlwiO1xuICAgICAgY29uc3QgcmVuZGVyZWRDb250ZW50ID0gaDIucmVuZGVyQ2hpbGRyZW4obm9kZS5jb250ZW50IHx8IFtdLCBcIlxcblxcblwiKTtcbiAgICAgIHJldHVybiBgOjo6JHtibG9ja05hbWV9JHthdHRyU3RyaW5nfVxuXG4ke3JlbmRlcmVkQ29udGVudH1cblxuOjo6YDtcbiAgICB9XG4gIH07XG59XG5cbi8vIHNyYy91dGlsaXRpZXMvbWFya2Rvd24vY3JlYXRlSW5saW5lTWFya2Rvd25TcGVjLnRzXG5mdW5jdGlvbiBwYXJzZVNob3J0Y29kZUF0dHJpYnV0ZXMoYXR0clN0cmluZykge1xuICBpZiAoIWF0dHJTdHJpbmcudHJpbSgpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgY29uc3QgcmVnZXggPSAvKFxcdyspPSg/OlwiKFteXCJdKilcInwnKFteJ10qKScpL2c7XG4gIGxldCBtYXRjaCA9IHJlZ2V4LmV4ZWMoYXR0clN0cmluZyk7XG4gIHdoaWxlIChtYXRjaCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IFssIGtleSwgZG91YmxlUXVvdGVkLCBzaW5nbGVRdW90ZWRdID0gbWF0Y2g7XG4gICAgYXR0cmlidXRlc1trZXldID0gZG91YmxlUXVvdGVkIHx8IHNpbmdsZVF1b3RlZDtcbiAgICBtYXRjaCA9IHJlZ2V4LmV4ZWMoYXR0clN0cmluZyk7XG4gIH1cbiAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVTaG9ydGNvZGVBdHRyaWJ1dGVzKGF0dHJzKSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhhdHRycykuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB2b2lkIDAgJiYgdmFsdWUgIT09IG51bGwpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PVwiJHt2YWx1ZX1cImApLmpvaW4oXCIgXCIpO1xufVxuZnVuY3Rpb24gY3JlYXRlSW5saW5lTWFya2Rvd25TcGVjKG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIG5vZGVOYW1lLFxuICAgIG5hbWU6IHNob3J0Y29kZU5hbWUsXG4gICAgZ2V0Q29udGVudCxcbiAgICBwYXJzZUF0dHJpYnV0ZXM6IHBhcnNlQXR0cmlidXRlczIgPSBwYXJzZVNob3J0Y29kZUF0dHJpYnV0ZXMsXG4gICAgc2VyaWFsaXplQXR0cmlidXRlczogc2VyaWFsaXplQXR0cmlidXRlczIgPSBzZXJpYWxpemVTaG9ydGNvZGVBdHRyaWJ1dGVzLFxuICAgIGRlZmF1bHRBdHRyaWJ1dGVzID0ge30sXG4gICAgc2VsZkNsb3NpbmcgPSBmYWxzZSxcbiAgICBhbGxvd2VkQXR0cmlidXRlc1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2hvcnRjb2RlID0gc2hvcnRjb2RlTmFtZSB8fCBub2RlTmFtZTtcbiAgY29uc3QgZmlsdGVyQXR0cmlidXRlcyA9IChhdHRycykgPT4ge1xuICAgIGlmICghYWxsb3dlZEF0dHJpYnV0ZXMpIHtcbiAgICAgIHJldHVybiBhdHRycztcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyZWQgPSB7fTtcbiAgICBhbGxvd2VkQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyKSA9PiB7XG4gICAgICBjb25zdCBhdHRyTmFtZSA9IHR5cGVvZiBhdHRyID09PSBcInN0cmluZ1wiID8gYXR0ciA6IGF0dHIubmFtZTtcbiAgICAgIGNvbnN0IHNraXBJZkRlZmF1bHQgPSB0eXBlb2YgYXR0ciA9PT0gXCJzdHJpbmdcIiA/IHZvaWQgMCA6IGF0dHIuc2tpcElmRGVmYXVsdDtcbiAgICAgIGlmIChhdHRyTmFtZSBpbiBhdHRycykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJzW2F0dHJOYW1lXTtcbiAgICAgICAgaWYgKHNraXBJZkRlZmF1bHQgIT09IHZvaWQgMCAmJiB2YWx1ZSA9PT0gc2tpcElmRGVmYXVsdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJlZFthdHRyTmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH07XG4gIGNvbnN0IGVzY2FwZWRTaG9ydGNvZGUgPSBzaG9ydGNvZGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpO1xuICByZXR1cm4ge1xuICAgIHBhcnNlTWFya2Rvd246ICh0b2tlbiwgaDIpID0+IHtcbiAgICAgIGNvbnN0IGF0dHJzID0geyAuLi5kZWZhdWx0QXR0cmlidXRlcywgLi4udG9rZW4uYXR0cmlidXRlcyB9O1xuICAgICAgaWYgKHNlbGZDbG9zaW5nKSB7XG4gICAgICAgIHJldHVybiBoMi5jcmVhdGVOb2RlKG5vZGVOYW1lLCBhdHRycyk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZW50ID0gZ2V0Q29udGVudCA/IGdldENvbnRlbnQodG9rZW4pIDogdG9rZW4uY29udGVudCB8fCBcIlwiO1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGgyLmNyZWF0ZU5vZGUobm9kZU5hbWUsIGF0dHJzLCBbaDIuY3JlYXRlVGV4dE5vZGUoY29udGVudCldKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoMi5jcmVhdGVOb2RlKG5vZGVOYW1lLCBhdHRycywgW10pO1xuICAgIH0sXG4gICAgbWFya2Rvd25Ub2tlbml6ZXI6IHtcbiAgICAgIG5hbWU6IG5vZGVOYW1lLFxuICAgICAgbGV2ZWw6IFwiaW5saW5lXCIsXG4gICAgICBzdGFydChzcmMpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRQYXR0ZXJuID0gc2VsZkNsb3NpbmcgPyBuZXcgUmVnRXhwKGBcXFxcWyR7ZXNjYXBlZFNob3J0Y29kZX1cXFxccypbXlxcXFxdXSpcXFxcXWApIDogbmV3IFJlZ0V4cChgXFxcXFske2VzY2FwZWRTaG9ydGNvZGV9XFxcXHMqW15cXFxcXV0qXFxcXF1bXFxcXHNcXFxcU10qP1xcXFxbXFxcXC8ke2VzY2FwZWRTaG9ydGNvZGV9XFxcXF1gKTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBzcmMubWF0Y2goc3RhcnRQYXR0ZXJuKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBtYXRjaCA9PSBudWxsID8gdm9pZCAwIDogbWF0Y2guaW5kZXg7XG4gICAgICAgIHJldHVybiBpbmRleCAhPT0gdm9pZCAwID8gaW5kZXggOiAtMTtcbiAgICAgIH0sXG4gICAgICB0b2tlbml6ZShzcmMsIF90b2tlbnMsIF9sZXhlcikge1xuICAgICAgICBjb25zdCB0b2tlblBhdHRlcm4gPSBzZWxmQ2xvc2luZyA/IG5ldyBSZWdFeHAoYF5cXFxcWyR7ZXNjYXBlZFNob3J0Y29kZX1cXFxccyooW15cXFxcXV0qKVxcXFxdYCkgOiBuZXcgUmVnRXhwKGBeXFxcXFske2VzY2FwZWRTaG9ydGNvZGV9XFxcXHMqKFteXFxcXF1dKilcXFxcXShbXFxcXHNcXFxcU10qPylcXFxcW1xcXFwvJHtlc2NhcGVkU2hvcnRjb2RlfVxcXFxdYCk7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gc3JjLm1hdGNoKHRva2VuUGF0dGVybik7XG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb250ZW50ID0gXCJcIjtcbiAgICAgICAgbGV0IGF0dHJTdHJpbmcgPSBcIlwiO1xuICAgICAgICBpZiAoc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgICBjb25zdCBbLCBhdHRyc10gPSBtYXRjaDtcbiAgICAgICAgICBhdHRyU3RyaW5nID0gYXR0cnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgWywgYXR0cnMsIGNvbnRlbnRNYXRjaF0gPSBtYXRjaDtcbiAgICAgICAgICBhdHRyU3RyaW5nID0gYXR0cnM7XG4gICAgICAgICAgY29udGVudCA9IGNvbnRlbnRNYXRjaCB8fCBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBwYXJzZUF0dHJpYnV0ZXMyKGF0dHJTdHJpbmcudHJpbSgpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBub2RlTmFtZSxcbiAgICAgICAgICByYXc6IG1hdGNoWzBdLFxuICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQudHJpbSgpLFxuICAgICAgICAgIGF0dHJpYnV0ZXNcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlbmRlck1hcmtkb3duOiAobm9kZSkgPT4ge1xuICAgICAgbGV0IGNvbnRlbnQgPSBcIlwiO1xuICAgICAgaWYgKGdldENvbnRlbnQpIHtcbiAgICAgICAgY29udGVudCA9IGdldENvbnRlbnQobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUuY29udGVudCAmJiBub2RlLmNvbnRlbnQubGVuZ3RoID4gMCkge1xuICAgICAgICBjb250ZW50ID0gbm9kZS5jb250ZW50LmZpbHRlcigoY2hpbGQpID0+IGNoaWxkLnR5cGUgPT09IFwidGV4dFwiKS5tYXAoKGNoaWxkKSA9PiBjaGlsZC50ZXh0KS5qb2luKFwiXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyZWRBdHRycyA9IGZpbHRlckF0dHJpYnV0ZXMobm9kZS5hdHRycyB8fCB7fSk7XG4gICAgICBjb25zdCBhdHRycyA9IHNlcmlhbGl6ZUF0dHJpYnV0ZXMyKGZpbHRlcmVkQXR0cnMpO1xuICAgICAgY29uc3QgYXR0clN0cmluZyA9IGF0dHJzID8gYCAke2F0dHJzfWAgOiBcIlwiO1xuICAgICAgaWYgKHNlbGZDbG9zaW5nKSB7XG4gICAgICAgIHJldHVybiBgWyR7c2hvcnRjb2RlfSR7YXR0clN0cmluZ31dYDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBgWyR7c2hvcnRjb2RlfSR7YXR0clN0cmluZ31dJHtjb250ZW50fVsvJHtzaG9ydGNvZGV9XWA7XG4gICAgfVxuICB9O1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL21hcmtkb3duL3BhcnNlSW5kZW50ZWRCbG9ja3MudHNcbmZ1bmN0aW9uIHBhcnNlSW5kZW50ZWRCbG9ja3Moc3JjLCBjb25maWcsIGxleGVyKSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgY29uc3QgbGluZXMgPSBzcmMuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IGl0ZW1zID0gW107XG4gIGxldCB0b3RhbFJhdyA9IFwiXCI7XG4gIGxldCBpID0gMDtcbiAgY29uc3QgYmFzZUluZGVudFNpemUgPSBjb25maWcuYmFzZUluZGVudFNpemUgfHwgMjtcbiAgd2hpbGUgKGkgPCBsaW5lcy5sZW5ndGgpIHtcbiAgICBjb25zdCBjdXJyZW50TGluZSA9IGxpbmVzW2ldO1xuICAgIGNvbnN0IGl0ZW1NYXRjaCA9IGN1cnJlbnRMaW5lLm1hdGNoKGNvbmZpZy5pdGVtUGF0dGVybik7XG4gICAgaWYgKCFpdGVtTWF0Y2gpIHtcbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50TGluZS50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICB0b3RhbFJhdyA9IGAke3RvdGFsUmF3fSR7Y3VycmVudExpbmV9XG5gO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGl0ZW1EYXRhID0gY29uZmlnLmV4dHJhY3RJdGVtRGF0YShpdGVtTWF0Y2gpO1xuICAgIGNvbnN0IHsgaW5kZW50TGV2ZWwsIG1haW5Db250ZW50IH0gPSBpdGVtRGF0YTtcbiAgICB0b3RhbFJhdyA9IGAke3RvdGFsUmF3fSR7Y3VycmVudExpbmV9XG5gO1xuICAgIGNvbnN0IGl0ZW1Db250ZW50ID0gW21haW5Db250ZW50XTtcbiAgICBpICs9IDE7XG4gICAgd2hpbGUgKGkgPCBsaW5lcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5leHRMaW5lID0gbGluZXNbaV07XG4gICAgICBpZiAobmV4dExpbmUudHJpbSgpID09PSBcIlwiKSB7XG4gICAgICAgIGNvbnN0IG5leHROb25FbXB0eUluZGV4ID0gbGluZXMuc2xpY2UoaSArIDEpLmZpbmRJbmRleCgobCkgPT4gbC50cmltKCkgIT09IFwiXCIpO1xuICAgICAgICBpZiAobmV4dE5vbkVtcHR5SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV4dE5vbkVtcHR5ID0gbGluZXNbaSArIDEgKyBuZXh0Tm9uRW1wdHlJbmRleF07XG4gICAgICAgIGNvbnN0IG5leHRJbmRlbnQyID0gKChfYiA9IChfYSA9IG5leHROb25FbXB0eS5tYXRjaCgvXihcXHMqKS8pKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMV0pID09IG51bGwgPyB2b2lkIDAgOiBfYi5sZW5ndGgpIHx8IDA7XG4gICAgICAgIGlmIChuZXh0SW5kZW50MiA+IGluZGVudExldmVsKSB7XG4gICAgICAgICAgaXRlbUNvbnRlbnQucHVzaChuZXh0TGluZSk7XG4gICAgICAgICAgdG90YWxSYXcgPSBgJHt0b3RhbFJhd30ke25leHRMaW5lfVxuYDtcbiAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG5leHRJbmRlbnQgPSAoKF9kID0gKF9jID0gbmV4dExpbmUubWF0Y2goL14oXFxzKikvKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jWzFdKSA9PSBudWxsID8gdm9pZCAwIDogX2QubGVuZ3RoKSB8fCAwO1xuICAgICAgaWYgKG5leHRJbmRlbnQgPiBpbmRlbnRMZXZlbCkge1xuICAgICAgICBpdGVtQ29udGVudC5wdXNoKG5leHRMaW5lKTtcbiAgICAgICAgdG90YWxSYXcgPSBgJHt0b3RhbFJhd30ke25leHRMaW5lfVxuYDtcbiAgICAgICAgaSArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBuZXN0ZWRUb2tlbnM7XG4gICAgY29uc3QgbmVzdGVkQ29udGVudCA9IGl0ZW1Db250ZW50LnNsaWNlKDEpO1xuICAgIGlmIChuZXN0ZWRDb250ZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRlZGVudGVkTmVzdGVkID0gbmVzdGVkQ29udGVudC5tYXAoKG5lc3RlZExpbmUpID0+IG5lc3RlZExpbmUuc2xpY2UoaW5kZW50TGV2ZWwgKyBiYXNlSW5kZW50U2l6ZSkpLmpvaW4oXCJcXG5cIik7XG4gICAgICBpZiAoZGVkZW50ZWROZXN0ZWQudHJpbSgpKSB7XG4gICAgICAgIGlmIChjb25maWcuY3VzdG9tTmVzdGVkUGFyc2VyKSB7XG4gICAgICAgICAgbmVzdGVkVG9rZW5zID0gY29uZmlnLmN1c3RvbU5lc3RlZFBhcnNlcihkZWRlbnRlZE5lc3RlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmVzdGVkVG9rZW5zID0gbGV4ZXIuYmxvY2tUb2tlbnMoZGVkZW50ZWROZXN0ZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHRva2VuID0gY29uZmlnLmNyZWF0ZVRva2VuKGl0ZW1EYXRhLCBuZXN0ZWRUb2tlbnMpO1xuICAgIGl0ZW1zLnB1c2godG9rZW4pO1xuICB9XG4gIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXRlbXMsXG4gICAgcmF3OiB0b3RhbFJhd1xuICB9O1xufVxuXG4vLyBzcmMvdXRpbGl0aWVzL21hcmtkb3duL3JlbmRlck5lc3RlZE1hcmtkb3duQ29udGVudC50c1xuZnVuY3Rpb24gcmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50KG5vZGUsIGgyLCBwcmVmaXhPckdlbmVyYXRvciwgY3R4KSB7XG4gIGlmICghbm9kZSB8fCAhQXJyYXkuaXNBcnJheShub2RlLmNvbnRlbnQpKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgY29uc3QgcHJlZml4ID0gdHlwZW9mIHByZWZpeE9yR2VuZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBwcmVmaXhPckdlbmVyYXRvcihjdHgpIDogcHJlZml4T3JHZW5lcmF0b3I7XG4gIGNvbnN0IFtjb250ZW50LCAuLi5jaGlsZHJlbl0gPSBub2RlLmNvbnRlbnQ7XG4gIGNvbnN0IG1haW5Db250ZW50ID0gaDIucmVuZGVyQ2hpbGRyZW4oW2NvbnRlbnRdKTtcbiAgY29uc3Qgb3V0cHV0ID0gW2Ake3ByZWZpeH0ke21haW5Db250ZW50fWBdO1xuICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZENvbnRlbnQgPSBoMi5yZW5kZXJDaGlsZHJlbihbY2hpbGRdKTtcbiAgICAgIGlmIChjaGlsZENvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgaW5kZW50ZWRDaGlsZCA9IGNoaWxkQ29udGVudC5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmUpID0+IGxpbmUgPyBoMi5pbmRlbnQobGluZSkgOiBcIlwiKS5qb2luKFwiXFxuXCIpO1xuICAgICAgICBvdXRwdXQucHVzaChpbmRlbnRlZENoaWxkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oXCJcXG5cIik7XG59XG5cbi8vIHNyYy9NYXJrVmlldy50c1xuZnVuY3Rpb24gdXBkYXRlTWFya1ZpZXdBdHRyaWJ1dGVzKGNoZWNrTWFyaywgZWRpdG9yLCBhdHRycyA9IHt9KSB7XG4gIGNvbnN0IHsgc3RhdGUgfSA9IGVkaXRvcjtcbiAgY29uc3QgeyBkb2MsIHRyIH0gPSBzdGF0ZTtcbiAgY29uc3QgdGhpc01hcmsgPSBjaGVja01hcms7XG4gIGRvYy5kZXNjZW5kYW50cygobm9kZSwgcG9zKSA9PiB7XG4gICAgY29uc3QgZnJvbSA9IHRyLm1hcHBpbmcubWFwKHBvcyk7XG4gICAgY29uc3QgdG8gPSB0ci5tYXBwaW5nLm1hcChwb3MpICsgbm9kZS5ub2RlU2l6ZTtcbiAgICBsZXQgZm91bmRNYXJrID0gbnVsbDtcbiAgICBub2RlLm1hcmtzLmZvckVhY2goKG1hcmspID0+IHtcbiAgICAgIGlmIChtYXJrICE9PSB0aGlzTWFyaykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBmb3VuZE1hcmsgPSBtYXJrO1xuICAgIH0pO1xuICAgIGlmICghZm91bmRNYXJrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBuZWVkc1VwZGF0ZSA9IGZhbHNlO1xuICAgIE9iamVjdC5rZXlzKGF0dHJzKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICBpZiAoYXR0cnNba10gIT09IGZvdW5kTWFyay5hdHRyc1trXSkge1xuICAgICAgICBuZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKG5lZWRzVXBkYXRlKSB7XG4gICAgICBjb25zdCB1cGRhdGVkTWFyayA9IGNoZWNrTWFyay50eXBlLmNyZWF0ZSh7XG4gICAgICAgIC4uLmNoZWNrTWFyay5hdHRycyxcbiAgICAgICAgLi4uYXR0cnNcbiAgICAgIH0pO1xuICAgICAgdHIucmVtb3ZlTWFyayhmcm9tLCB0bywgY2hlY2tNYXJrLnR5cGUpO1xuICAgICAgdHIuYWRkTWFyayhmcm9tLCB0bywgdXBkYXRlZE1hcmspO1xuICAgIH1cbiAgfSk7XG4gIGlmICh0ci5kb2NDaGFuZ2VkKSB7XG4gICAgZWRpdG9yLnZpZXcuZGlzcGF0Y2godHIpO1xuICB9XG59XG52YXIgTWFya1ZpZXcgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGNvbXBvbmVudCwgcHJvcHMsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmVkaXRvciA9IHByb3BzLmVkaXRvcjtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgICB0aGlzLm1hcmsgPSBwcm9wcy5tYXJrO1xuICAgIHRoaXMuSFRNTEF0dHJpYnV0ZXMgPSBwcm9wcy5IVE1MQXR0cmlidXRlcztcbiAgfVxuICBnZXQgZG9tKCkge1xuICAgIHJldHVybiB0aGlzLmVkaXRvci52aWV3LmRvbTtcbiAgfVxuICBnZXQgY29udGVudERPTSgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBtYXJrIGluIHRoZSBkb2N1bWVudC5cbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIHRvIHVwZGF0ZS5cbiAgICovXG4gIHVwZGF0ZUF0dHJpYnV0ZXMoYXR0cnMsIGNoZWNrTWFyaykge1xuICAgIHVwZGF0ZU1hcmtWaWV3QXR0cmlidXRlcyhjaGVja01hcmsgfHwgdGhpcy5tYXJrLCB0aGlzLmVkaXRvciwgYXR0cnMpO1xuICB9XG4gIGlnbm9yZU11dGF0aW9uKG11dGF0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmRvbSB8fCAhdGhpcy5jb250ZW50RE9NKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuaWdub3JlTXV0YXRpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pZ25vcmVNdXRhdGlvbih7IG11dGF0aW9uIH0pO1xuICAgIH1cbiAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gXCJzZWxlY3Rpb25cIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5kb20uY29udGFpbnMobXV0YXRpb24udGFyZ2V0KSAmJiBtdXRhdGlvbi50eXBlID09PSBcImNoaWxkTGlzdFwiICYmIChpc2lPUygpIHx8IGlzQW5kcm9pZCgpKSAmJiB0aGlzLmVkaXRvci5pc0ZvY3VzZWQpIHtcbiAgICAgIGNvbnN0IGNoYW5nZWROb2RlcyA9IFsuLi5BcnJheS5mcm9tKG11dGF0aW9uLmFkZGVkTm9kZXMpLCAuLi5BcnJheS5mcm9tKG11dGF0aW9uLnJlbW92ZWROb2RlcyldO1xuICAgICAgaWYgKGNoYW5nZWROb2Rlcy5ldmVyeSgobm9kZSkgPT4gbm9kZS5pc0NvbnRlbnRFZGl0YWJsZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5jb250ZW50RE9NID09PSBtdXRhdGlvbi50YXJnZXQgJiYgbXV0YXRpb24udHlwZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb250ZW50RE9NLmNvbnRhaW5zKG11dGF0aW9uLnRhcmdldCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cbi8vIHNyYy9Ob2RlLnRzXG52YXIgTm9kZTMgPSBjbGFzcyBfTm9kZSBleHRlbmRzIEV4dGVuZGFibGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIHRoaXMudHlwZSA9IFwibm9kZVwiO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgTm9kZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gY29uZmlnIC0gTm9kZSBjb25maWd1cmF0aW9uIG9iamVjdCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKGNvbmZpZyA9IHt9KSB7XG4gICAgY29uc3QgcmVzb2x2ZWRDb25maWcgPSB0eXBlb2YgY29uZmlnID09PSBcImZ1bmN0aW9uXCIgPyBjb25maWcoKSA6IGNvbmZpZztcbiAgICByZXR1cm4gbmV3IF9Ob2RlKHJlc29sdmVkQ29uZmlnKTtcbiAgfVxuICBjb25maWd1cmUob3B0aW9ucykge1xuICAgIHJldHVybiBzdXBlci5jb25maWd1cmUob3B0aW9ucyk7XG4gIH1cbiAgZXh0ZW5kKGV4dGVuZGVkQ29uZmlnKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRDb25maWcgPSB0eXBlb2YgZXh0ZW5kZWRDb25maWcgPT09IFwiZnVuY3Rpb25cIiA/IGV4dGVuZGVkQ29uZmlnKCkgOiBleHRlbmRlZENvbmZpZztcbiAgICByZXR1cm4gc3VwZXIuZXh0ZW5kKHJlc29sdmVkQ29uZmlnKTtcbiAgfVxufTtcblxuLy8gc3JjL05vZGVWaWV3LnRzXG5pbXBvcnQgeyBOb2RlU2VsZWN0aW9uIGFzIE5vZGVTZWxlY3Rpb241IH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbnZhciBOb2RlVmlldyA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoY29tcG9uZW50LCBwcm9wcywgb3B0aW9ucykge1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHRoaXMuZWRpdG9yID0gcHJvcHMuZWRpdG9yO1xuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIHN0b3BFdmVudDogbnVsbCxcbiAgICAgIGlnbm9yZU11dGF0aW9uOiBudWxsLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG4gICAgdGhpcy5leHRlbnNpb24gPSBwcm9wcy5leHRlbnNpb247XG4gICAgdGhpcy5ub2RlID0gcHJvcHMubm9kZTtcbiAgICB0aGlzLmRlY29yYXRpb25zID0gcHJvcHMuZGVjb3JhdGlvbnM7XG4gICAgdGhpcy5pbm5lckRlY29yYXRpb25zID0gcHJvcHMuaW5uZXJEZWNvcmF0aW9ucztcbiAgICB0aGlzLnZpZXcgPSBwcm9wcy52aWV3O1xuICAgIHRoaXMuSFRNTEF0dHJpYnV0ZXMgPSBwcm9wcy5IVE1MQXR0cmlidXRlcztcbiAgICB0aGlzLmdldFBvcyA9IHByb3BzLmdldFBvcztcbiAgICB0aGlzLm1vdW50KCk7XG4gIH1cbiAgbW91bnQoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGdldCBkb20oKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLnZpZXcuZG9tO1xuICB9XG4gIGdldCBjb250ZW50RE9NKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIG9uRHJhZ1N0YXJ0KGV2ZW50KSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nO1xuICAgIGNvbnN0IHsgdmlldyB9ID0gdGhpcy5lZGl0b3I7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IGRyYWdIYW5kbGUgPSB0YXJnZXQubm9kZVR5cGUgPT09IDMgPyAoX2EgPSB0YXJnZXQucGFyZW50RWxlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNsb3Nlc3QoXCJbZGF0YS1kcmFnLWhhbmRsZV1cIikgOiB0YXJnZXQuY2xvc2VzdChcIltkYXRhLWRyYWctaGFuZGxlXVwiKTtcbiAgICBpZiAoIXRoaXMuZG9tIHx8ICgoX2IgPSB0aGlzLmNvbnRlbnRET00pID09IG51bGwgPyB2b2lkIDAgOiBfYi5jb250YWlucyh0YXJnZXQpKSB8fCAhZHJhZ0hhbmRsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgeCA9IDA7XG4gICAgbGV0IHkgPSAwO1xuICAgIGlmICh0aGlzLmRvbSAhPT0gZHJhZ0hhbmRsZSkge1xuICAgICAgY29uc3QgZG9tQm94ID0gdGhpcy5kb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBoYW5kbGVCb3ggPSBkcmFnSGFuZGxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgb2Zmc2V0WCA9IChfZCA9IGV2ZW50Lm9mZnNldFgpICE9IG51bGwgPyBfZCA6IChfYyA9IGV2ZW50Lm5hdGl2ZUV2ZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2Mub2Zmc2V0WDtcbiAgICAgIGNvbnN0IG9mZnNldFkgPSAoX2YgPSBldmVudC5vZmZzZXRZKSAhPSBudWxsID8gX2YgOiAoX2UgPSBldmVudC5uYXRpdmVFdmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lLm9mZnNldFk7XG4gICAgICB4ID0gaGFuZGxlQm94LnggLSBkb21Cb3gueCArIG9mZnNldFg7XG4gICAgICB5ID0gaGFuZGxlQm94LnkgLSBkb21Cb3gueSArIG9mZnNldFk7XG4gICAgfVxuICAgIGNvbnN0IGNsb25lZE5vZGUgPSB0aGlzLmRvbS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRvbUJveCA9IHRoaXMuZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY2xvbmVkTm9kZS5zdHlsZS53aWR0aCA9IGAke01hdGgucm91bmQoZG9tQm94LndpZHRoKX1weGA7XG4gICAgICBjbG9uZWROb2RlLnN0eWxlLmhlaWdodCA9IGAke01hdGgucm91bmQoZG9tQm94LmhlaWdodCl9cHhgO1xuICAgICAgY2xvbmVkTm9kZS5zdHlsZS5ib3hTaXppbmcgPSBcImJvcmRlci1ib3hcIjtcbiAgICAgIGNsb25lZE5vZGUuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwibm9uZVwiO1xuICAgIH0gY2F0Y2gge1xuICAgIH1cbiAgICBsZXQgZHJhZ0ltYWdlV3JhcHBlciA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGRyYWdJbWFnZVdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgZHJhZ0ltYWdlV3JhcHBlci5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICAgIGRyYWdJbWFnZVdyYXBwZXIuc3R5bGUudG9wID0gXCItOTk5OXB4XCI7XG4gICAgICBkcmFnSW1hZ2VXcmFwcGVyLnN0eWxlLmxlZnQgPSBcIi05OTk5cHhcIjtcbiAgICAgIGRyYWdJbWFnZVdyYXBwZXIuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwibm9uZVwiO1xuICAgICAgZHJhZ0ltYWdlV3JhcHBlci5hcHBlbmRDaGlsZChjbG9uZWROb2RlKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZHJhZ0ltYWdlV3JhcHBlcik7XG4gICAgICAoX2cgPSBldmVudC5kYXRhVHJhbnNmZXIpID09IG51bGwgPyB2b2lkIDAgOiBfZy5zZXREcmFnSW1hZ2UoY2xvbmVkTm9kZSwgeCwgeSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChkcmFnSW1hZ2VXcmFwcGVyKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkcmFnSW1hZ2VXcmFwcGVyID09IG51bGwgPyB2b2lkIDAgOiBkcmFnSW1hZ2VXcmFwcGVyLnJlbW92ZSgpO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHBvcyA9IHRoaXMuZ2V0UG9zKCk7XG4gICAgaWYgKHR5cGVvZiBwb3MgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gTm9kZVNlbGVjdGlvbjUuY3JlYXRlKHZpZXcuc3RhdGUuZG9jLCBwb3MpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdmlldy5zdGF0ZS50ci5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTtcbiAgICB2aWV3LmRpc3BhdGNoKHRyYW5zYWN0aW9uKTtcbiAgfVxuICBzdG9wRXZlbnQoZXZlbnQpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKCF0aGlzLmRvbSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5zdG9wRXZlbnQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zdG9wRXZlbnQoeyBldmVudCB9KTtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IGlzSW5FbGVtZW50ID0gdGhpcy5kb20uY29udGFpbnModGFyZ2V0KSAmJiAhKChfYSA9IHRoaXMuY29udGVudERPTSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbnRhaW5zKHRhcmdldCkpO1xuICAgIGlmICghaXNJbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaXNEcmFnRXZlbnQgPSBldmVudC50eXBlLnN0YXJ0c1dpdGgoXCJkcmFnXCIpO1xuICAgIGNvbnN0IGlzRHJvcEV2ZW50ID0gZXZlbnQudHlwZSA9PT0gXCJkcm9wXCI7XG4gICAgY29uc3QgaXNJbnB1dCA9IFtcIklOUFVUXCIsIFwiQlVUVE9OXCIsIFwiU0VMRUNUXCIsIFwiVEVYVEFSRUFcIl0uaW5jbHVkZXModGFyZ2V0LnRhZ05hbWUpIHx8IHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZTtcbiAgICBpZiAoaXNJbnB1dCAmJiAhaXNEcm9wRXZlbnQgJiYgIWlzRHJhZ0V2ZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgeyBpc0VkaXRhYmxlIH0gPSB0aGlzLmVkaXRvcjtcbiAgICBjb25zdCB7IGlzRHJhZ2dpbmcgfSA9IHRoaXM7XG4gICAgY29uc3QgaXNEcmFnZ2FibGUgPSAhIXRoaXMubm9kZS50eXBlLnNwZWMuZHJhZ2dhYmxlO1xuICAgIGNvbnN0IGlzU2VsZWN0YWJsZSA9IE5vZGVTZWxlY3Rpb241LmlzU2VsZWN0YWJsZSh0aGlzLm5vZGUpO1xuICAgIGNvbnN0IGlzQ29weUV2ZW50ID0gZXZlbnQudHlwZSA9PT0gXCJjb3B5XCI7XG4gICAgY29uc3QgaXNQYXN0ZUV2ZW50ID0gZXZlbnQudHlwZSA9PT0gXCJwYXN0ZVwiO1xuICAgIGNvbnN0IGlzQ3V0RXZlbnQgPSBldmVudC50eXBlID09PSBcImN1dFwiO1xuICAgIGNvbnN0IGlzQ2xpY2tFdmVudCA9IGV2ZW50LnR5cGUgPT09IFwibW91c2Vkb3duXCI7XG4gICAgaWYgKCFpc0RyYWdnYWJsZSAmJiBpc1NlbGVjdGFibGUgJiYgaXNEcmFnRXZlbnQgJiYgZXZlbnQudGFyZ2V0ID09PSB0aGlzLmRvbSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGlzRHJhZ2dhYmxlICYmIGlzRHJhZ0V2ZW50ICYmICFpc0RyYWdnaW5nICYmIGV2ZW50LnRhcmdldCA9PT0gdGhpcy5kb20pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpc0RyYWdnYWJsZSAmJiBpc0VkaXRhYmxlICYmICFpc0RyYWdnaW5nICYmIGlzQ2xpY2tFdmVudCkge1xuICAgICAgY29uc3QgZHJhZ0hhbmRsZSA9IHRhcmdldC5jbG9zZXN0KFwiW2RhdGEtZHJhZy1oYW5kbGVdXCIpO1xuICAgICAgY29uc3QgaXNWYWxpZERyYWdIYW5kbGUgPSBkcmFnSGFuZGxlICYmICh0aGlzLmRvbSA9PT0gZHJhZ0hhbmRsZSB8fCB0aGlzLmRvbS5jb250YWlucyhkcmFnSGFuZGxlKSk7XG4gICAgICBpZiAoaXNWYWxpZERyYWdIYW5kbGUpIHtcbiAgICAgICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICBcImRyYWdlbmRcIixcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgb25jZTogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgXCJkcm9wXCIsXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IG9uY2U6IHRydWUgfVxuICAgICAgICApO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgIFwibW91c2V1cFwiLFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBvbmNlOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzRHJhZ2dpbmcgfHwgaXNEcm9wRXZlbnQgfHwgaXNDb3B5RXZlbnQgfHwgaXNQYXN0ZUV2ZW50IHx8IGlzQ3V0RXZlbnQgfHwgaXNDbGlja0V2ZW50ICYmIGlzU2VsZWN0YWJsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBET00gW211dGF0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTXV0YXRpb25PYnNlcnZlcikgb3IgYSBzZWxlY3Rpb24gY2hhbmdlIGhhcHBlbnMgd2l0aGluIHRoZSB2aWV3LlxuICAgKiBAcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGVkaXRvciBzaG91bGQgcmUtcmVhZCB0aGUgc2VsZWN0aW9uIG9yIHJlLXBhcnNlIHRoZSByYW5nZSBhcm91bmQgdGhlIG11dGF0aW9uXG4gICAqIEByZXR1cm4gYHRydWVgIGlmIGl0IGNhbiBzYWZlbHkgYmUgaWdub3JlZC5cbiAgICovXG4gIGlnbm9yZU11dGF0aW9uKG11dGF0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmRvbSB8fCAhdGhpcy5jb250ZW50RE9NKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuaWdub3JlTXV0YXRpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pZ25vcmVNdXRhdGlvbih7IG11dGF0aW9uIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5ub2RlLmlzTGVhZiB8fCB0aGlzLm5vZGUuaXNBdG9tKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG11dGF0aW9uLnR5cGUgPT09IFwic2VsZWN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZG9tLmNvbnRhaW5zKG11dGF0aW9uLnRhcmdldCkgJiYgbXV0YXRpb24udHlwZSA9PT0gXCJjaGlsZExpc3RcIiAmJiAoaXNpT1MoKSB8fCBpc0FuZHJvaWQoKSkgJiYgdGhpcy5lZGl0b3IuaXNGb2N1c2VkKSB7XG4gICAgICBjb25zdCBjaGFuZ2VkTm9kZXMgPSBbLi4uQXJyYXkuZnJvbShtdXRhdGlvbi5hZGRlZE5vZGVzKSwgLi4uQXJyYXkuZnJvbShtdXRhdGlvbi5yZW1vdmVkTm9kZXMpXTtcbiAgICAgIGlmIChjaGFuZ2VkTm9kZXMuZXZlcnkoKG5vZGUpID0+IG5vZGUuaXNDb250ZW50RWRpdGFibGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuY29udGVudERPTSA9PT0gbXV0YXRpb24udGFyZ2V0ICYmIG11dGF0aW9uLnR5cGUgPT09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29udGVudERPTS5jb250YWlucyhtdXRhdGlvbi50YXJnZXQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHByb3NlbWlycm9yIG5vZGUuXG4gICAqL1xuICB1cGRhdGVBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpIHtcbiAgICB0aGlzLmVkaXRvci5jb21tYW5kcy5jb21tYW5kKCh7IHRyIH0pID0+IHtcbiAgICAgIGNvbnN0IHBvcyA9IHRoaXMuZ2V0UG9zKCk7XG4gICAgICBpZiAodHlwZW9mIHBvcyAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0ci5zZXROb2RlTWFya3VwKHBvcywgdm9pZCAwLCB7XG4gICAgICAgIC4uLnRoaXMubm9kZS5hdHRycyxcbiAgICAgICAgLi4uYXR0cmlidXRlc1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRGVsZXRlIHRoZSBub2RlLlxuICAgKi9cbiAgZGVsZXRlTm9kZSgpIHtcbiAgICBjb25zdCBmcm9tID0gdGhpcy5nZXRQb3MoKTtcbiAgICBpZiAodHlwZW9mIGZyb20gIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdG8gPSBmcm9tICsgdGhpcy5ub2RlLm5vZGVTaXplO1xuICAgIHRoaXMuZWRpdG9yLmNvbW1hbmRzLmRlbGV0ZVJhbmdlKHsgZnJvbSwgdG8gfSk7XG4gIH1cbn07XG5cbi8vIHNyYy9wYXN0ZVJ1bGVzL21hcmtQYXN0ZVJ1bGUudHNcbmZ1bmN0aW9uIG1hcmtQYXN0ZVJ1bGUoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgUGFzdGVSdWxlKHtcbiAgICBmaW5kOiBjb25maWcuZmluZCxcbiAgICBoYW5kbGVyOiAoeyBzdGF0ZSwgcmFuZ2UsIG1hdGNoLCBwYXN0ZUV2ZW50IH0pID0+IHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBjYWxsT3JSZXR1cm4oY29uZmlnLmdldEF0dHJpYnV0ZXMsIHZvaWQgMCwgbWF0Y2gsIHBhc3RlRXZlbnQpO1xuICAgICAgaWYgKGF0dHJpYnV0ZXMgPT09IGZhbHNlIHx8IGF0dHJpYnV0ZXMgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCB7IHRyIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGNhcHR1cmVHcm91cCA9IG1hdGNoW21hdGNoLmxlbmd0aCAtIDFdO1xuICAgICAgY29uc3QgZnVsbE1hdGNoID0gbWF0Y2hbMF07XG4gICAgICBsZXQgbWFya0VuZCA9IHJhbmdlLnRvO1xuICAgICAgaWYgKGNhcHR1cmVHcm91cCkge1xuICAgICAgICBjb25zdCBzdGFydFNwYWNlcyA9IGZ1bGxNYXRjaC5zZWFyY2goL1xcUy8pO1xuICAgICAgICBjb25zdCB0ZXh0U3RhcnQgPSByYW5nZS5mcm9tICsgZnVsbE1hdGNoLmluZGV4T2YoY2FwdHVyZUdyb3VwKTtcbiAgICAgICAgY29uc3QgdGV4dEVuZCA9IHRleHRTdGFydCArIGNhcHR1cmVHcm91cC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGV4Y2x1ZGVkTWFya3MgPSBnZXRNYXJrc0JldHdlZW4ocmFuZ2UuZnJvbSwgcmFuZ2UudG8sIHN0YXRlLmRvYykuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXhjbHVkZWQgPSBpdGVtLm1hcmsudHlwZS5leGNsdWRlZDtcbiAgICAgICAgICByZXR1cm4gZXhjbHVkZWQuZmluZCgodHlwZSkgPT4gdHlwZSA9PT0gY29uZmlnLnR5cGUgJiYgdHlwZSAhPT0gaXRlbS5tYXJrLnR5cGUpO1xuICAgICAgICB9KS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udG8gPiB0ZXh0U3RhcnQpO1xuICAgICAgICBpZiAoZXhjbHVkZWRNYXJrcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGV4dEVuZCA8IHJhbmdlLnRvKSB7XG4gICAgICAgICAgdHIuZGVsZXRlKHRleHRFbmQsIHJhbmdlLnRvKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGV4dFN0YXJ0ID4gcmFuZ2UuZnJvbSkge1xuICAgICAgICAgIHRyLmRlbGV0ZShyYW5nZS5mcm9tICsgc3RhcnRTcGFjZXMsIHRleHRTdGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgbWFya0VuZCA9IHJhbmdlLmZyb20gKyBzdGFydFNwYWNlcyArIGNhcHR1cmVHcm91cC5sZW5ndGg7XG4gICAgICAgIHRyLmFkZE1hcmsocmFuZ2UuZnJvbSArIHN0YXJ0U3BhY2VzLCBtYXJrRW5kLCBjb25maWcudHlwZS5jcmVhdGUoYXR0cmlidXRlcyB8fCB7fSkpO1xuICAgICAgICB0ci5yZW1vdmVTdG9yZWRNYXJrKGNvbmZpZy50eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vLyBzcmMvcGFzdGVSdWxlcy9ub2RlUGFzdGVSdWxlLnRzXG5mdW5jdGlvbiBub2RlUGFzdGVSdWxlKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFBhc3RlUnVsZSh7XG4gICAgZmluZDogY29uZmlnLmZpbmQsXG4gICAgaGFuZGxlcih7IG1hdGNoLCBjaGFpbiwgcmFuZ2UsIHBhc3RlRXZlbnQgfSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGNhbGxPclJldHVybihjb25maWcuZ2V0QXR0cmlidXRlcywgdm9pZCAwLCBtYXRjaCwgcGFzdGVFdmVudCk7XG4gICAgICBjb25zdCBjb250ZW50ID0gY2FsbE9yUmV0dXJuKGNvbmZpZy5nZXRDb250ZW50LCB2b2lkIDAsIGF0dHJpYnV0ZXMpO1xuICAgICAgaWYgKGF0dHJpYnV0ZXMgPT09IGZhbHNlIHx8IGF0dHJpYnV0ZXMgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBub2RlID0geyB0eXBlOiBjb25maWcudHlwZS5uYW1lLCBhdHRyczogYXR0cmlidXRlcyB9O1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgbm9kZS5jb250ZW50ID0gY29udGVudDtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaC5pbnB1dCkge1xuICAgICAgICBjaGFpbigpLmRlbGV0ZVJhbmdlKHJhbmdlKS5pbnNlcnRDb250ZW50QXQocmFuZ2UuZnJvbSwgbm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLy8gc3JjL3Bhc3RlUnVsZXMvdGV4dFBhc3RlUnVsZS50c1xuZnVuY3Rpb24gdGV4dFBhc3RlUnVsZShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQYXN0ZVJ1bGUoe1xuICAgIGZpbmQ6IGNvbmZpZy5maW5kLFxuICAgIGhhbmRsZXI6ICh7IHN0YXRlLCByYW5nZSwgbWF0Y2ggfSkgPT4ge1xuICAgICAgbGV0IGluc2VydCA9IGNvbmZpZy5yZXBsYWNlO1xuICAgICAgbGV0IHN0YXJ0ID0gcmFuZ2UuZnJvbTtcbiAgICAgIGNvbnN0IGVuZCA9IHJhbmdlLnRvO1xuICAgICAgaWYgKG1hdGNoWzFdKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IG1hdGNoWzBdLmxhc3RJbmRleE9mKG1hdGNoWzFdKTtcbiAgICAgICAgaW5zZXJ0ICs9IG1hdGNoWzBdLnNsaWNlKG9mZnNldCArIG1hdGNoWzFdLmxlbmd0aCk7XG4gICAgICAgIHN0YXJ0ICs9IG9mZnNldDtcbiAgICAgICAgY29uc3QgY3V0T2ZmID0gc3RhcnQgLSBlbmQ7XG4gICAgICAgIGlmIChjdXRPZmYgPiAwKSB7XG4gICAgICAgICAgaW5zZXJ0ID0gbWF0Y2hbMF0uc2xpY2Uob2Zmc2V0IC0gY3V0T2ZmLCBvZmZzZXQpICsgaW5zZXJ0O1xuICAgICAgICAgIHN0YXJ0ID0gZW5kO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGF0ZS50ci5pbnNlcnRUZXh0KGluc2VydCwgc3RhcnQsIGVuZCk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gc3JjL1RyYWNrZXIudHNcbnZhciBUcmFja2VyID0gY2xhc3Mge1xuICBjb25zdHJ1Y3Rvcih0cmFuc2FjdGlvbikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gdGhpcy50cmFuc2FjdGlvbi5zdGVwcy5sZW5ndGg7XG4gIH1cbiAgbWFwKHBvc2l0aW9uKSB7XG4gICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBtYXBwZWRQb3NpdGlvbiA9IHRoaXMudHJhbnNhY3Rpb24uc3RlcHMuc2xpY2UodGhpcy5jdXJyZW50U3RlcCkucmVkdWNlKChuZXdQb3NpdGlvbiwgc3RlcCkgPT4ge1xuICAgICAgY29uc3QgbWFwUmVzdWx0ID0gc3RlcC5nZXRNYXAoKS5tYXBSZXN1bHQobmV3UG9zaXRpb24pO1xuICAgICAgaWYgKG1hcFJlc3VsdC5kZWxldGVkKSB7XG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcFJlc3VsdC5wb3M7XG4gICAgfSwgcG9zaXRpb24pO1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogbWFwcGVkUG9zaXRpb24sXG4gICAgICBkZWxldGVkXG4gICAgfTtcbiAgfVxufTtcbmV4cG9ydCB7XG4gIENvbW1hbmRNYW5hZ2VyLFxuICBFZGl0b3IsXG4gIEV4dGVuZGFibGUsXG4gIEV4dGVuc2lvbixcbiAgRnJhZ21lbnQ2IGFzIEZyYWdtZW50LFxuICBJbnB1dFJ1bGUsXG4gIE1hcHBhYmxlUG9zaXRpb24sXG4gIE1hcmssXG4gIE1hcmtWaWV3LFxuICBOb2RlMyBhcyBOb2RlLFxuICBOb2RlUG9zLFxuICBOb2RlVmlldyxcbiAgUGFzdGVSdWxlLFxuICBSZXNpemFibGVOb2RlVmlldyxcbiAgUmVzaXphYmxlTm9kZXZpZXcsXG4gIFRyYWNrZXIsXG4gIGNhbGxPclJldHVybixcbiAgY2FuSW5zZXJ0Tm9kZSxcbiAgY29tYmluZVRyYW5zYWN0aW9uU3RlcHMsXG4gIGNvbW1hbmRzX2V4cG9ydHMgYXMgY29tbWFuZHMsXG4gIGNyZWF0ZUF0b21CbG9ja01hcmtkb3duU3BlYyxcbiAgY3JlYXRlQmxvY2tNYXJrZG93blNwZWMsXG4gIGNyZWF0ZUNoYWluYWJsZVN0YXRlLFxuICBjcmVhdGVEb2N1bWVudCxcbiAgaCBhcyBjcmVhdGVFbGVtZW50LFxuICBjcmVhdGVJbmxpbmVNYXJrZG93blNwZWMsXG4gIGNyZWF0ZU1hcHBhYmxlUG9zaXRpb24sXG4gIGNyZWF0ZU5vZGVGcm9tQ29udGVudCxcbiAgY3JlYXRlU3R5bGVUYWcsXG4gIGRlZmF1bHRCbG9ja0F0LFxuICBkZWxldGVQcm9wcyxcbiAgZWxlbWVudEZyb21TdHJpbmcsXG4gIGVzY2FwZUZvclJlZ0V4LFxuICBleHRlbnNpb25zX2V4cG9ydHMgYXMgZXh0ZW5zaW9ucyxcbiAgZmluZENoaWxkcmVuLFxuICBmaW5kQ2hpbGRyZW5JblJhbmdlLFxuICBmaW5kRHVwbGljYXRlcyxcbiAgZmluZFBhcmVudE5vZGUsXG4gIGZpbmRQYXJlbnROb2RlQ2xvc2VzdFRvUG9zLFxuICBmbGF0dGVuRXh0ZW5zaW9ucyxcbiAgZnJvbVN0cmluZyxcbiAgZ2VuZXJhdGVIVE1MLFxuICBnZW5lcmF0ZUpTT04sXG4gIGdlbmVyYXRlVGV4dCxcbiAgZ2V0QXR0cmlidXRlcyxcbiAgZ2V0QXR0cmlidXRlc0Zyb21FeHRlbnNpb25zLFxuICBnZXRDaGFuZ2VkUmFuZ2VzLFxuICBnZXREZWJ1Z0pTT04sXG4gIGdldEV4dGVuc2lvbkZpZWxkLFxuICBnZXRIVE1MRnJvbUZyYWdtZW50LFxuICBnZXRNYXJrQXR0cmlidXRlcyxcbiAgZ2V0TWFya1JhbmdlLFxuICBnZXRNYXJrVHlwZSxcbiAgZ2V0TWFya3NCZXR3ZWVuLFxuICBnZXROb2RlQXRQb3NpdGlvbixcbiAgZ2V0Tm9kZUF0dHJpYnV0ZXMsXG4gIGdldE5vZGVUeXBlLFxuICBnZXRSZW5kZXJlZEF0dHJpYnV0ZXMsXG4gIGdldFNjaGVtYSxcbiAgZ2V0U2NoZW1hQnlSZXNvbHZlZEV4dGVuc2lvbnMsXG4gIGdldFNjaGVtYVR5cGVCeU5hbWUsXG4gIGdldFNjaGVtYVR5cGVOYW1lQnlOYW1lLFxuICBnZXRTcGxpdHRlZEF0dHJpYnV0ZXMsXG4gIGdldFRleHQsXG4gIGdldFRleHRCZXR3ZWVuLFxuICBnZXRUZXh0Q29udGVudEZyb21Ob2RlcyxcbiAgZ2V0VGV4dFNlcmlhbGl6ZXJzRnJvbVNjaGVtYSxcbiAgZ2V0VXBkYXRlZFBvc2l0aW9uLFxuICBoLFxuICBpbmplY3RFeHRlbnNpb25BdHRyaWJ1dGVzVG9QYXJzZVJ1bGUsXG4gIGlucHV0UnVsZXNQbHVnaW4sXG4gIGlzQWN0aXZlLFxuICBpc0FuZHJvaWQsXG4gIGlzQXRFbmRPZk5vZGUsXG4gIGlzQXRTdGFydE9mTm9kZSxcbiAgaXNFbXB0eU9iamVjdCxcbiAgaXNFeHRlbnNpb25SdWxlc0VuYWJsZWQsXG4gIGlzRmlyZWZveCxcbiAgaXNGdW5jdGlvbixcbiAgaXNMaXN0LFxuICBpc01hY09TLFxuICBpc01hcmtBY3RpdmUsXG4gIGlzTm9kZUFjdGl2ZSxcbiAgaXNOb2RlRW1wdHksXG4gIGlzTm9kZVNlbGVjdGlvbixcbiAgaXNOdW1iZXIsXG4gIGlzUGxhaW5PYmplY3QsXG4gIGlzUmVnRXhwLFxuICBpc1NhZmFyaSxcbiAgaXNTdHJpbmcsXG4gIGlzVGV4dFNlbGVjdGlvbixcbiAgaXNpT1MsXG4gIG1hcmtJbnB1dFJ1bGUsXG4gIG1hcmtQYXN0ZVJ1bGUsXG4gIG1hcmtkb3duX2V4cG9ydHMgYXMgbWFya2Rvd24sXG4gIG1lcmdlQXR0cmlidXRlcyxcbiAgbWVyZ2VEZWVwLFxuICBtaW5NYXgsXG4gIG5vZGVJbnB1dFJ1bGUsXG4gIG5vZGVQYXN0ZVJ1bGUsXG4gIG9iamVjdEluY2x1ZGVzLFxuICBwYXJzZUF0dHJpYnV0ZXMsXG4gIHBhcnNlSW5kZW50ZWRCbG9ja3MsXG4gIHBhc3RlUnVsZXNQbHVnaW4sXG4gIHBvc1RvRE9NUmVjdCxcbiAgcmVtb3ZlRHVwbGljYXRlcyxcbiAgcmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50LFxuICByZXNvbHZlRXh0ZW5zaW9ucyxcbiAgcmVzb2x2ZUZvY3VzUG9zaXRpb24sXG4gIHJld3JpdGVVbmtub3duQ29udGVudCxcbiAgc2VsZWN0aW9uVG9JbnNlcnRpb25FbmQsXG4gIHNlcmlhbGl6ZUF0dHJpYnV0ZXMsXG4gIHNvcnRFeHRlbnNpb25zLFxuICBzcGxpdEV4dGVuc2lvbnMsXG4gIHRleHRJbnB1dFJ1bGUsXG4gIHRleHRQYXN0ZVJ1bGUsXG4gIHRleHRibG9ja1R5cGVJbnB1dFJ1bGUsXG4gIHVwZGF0ZU1hcmtWaWV3QXR0cmlidXRlcyxcbiAgd3JhcHBpbmdJbnB1dFJ1bGVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js ***!
|
||
\*******************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Fragment: () => (/* binding */ Fragment),\n/* harmony export */ createElement: () => (/* binding */ h),\n/* harmony export */ h: () => (/* binding */ h),\n/* harmony export */ jsx: () => (/* binding */ h),\n/* harmony export */ jsxDEV: () => (/* binding */ h),\n/* harmony export */ jsxs: () => (/* binding */ h)\n/* harmony export */ });\n// src/jsx-runtime.ts\nfunction Fragment(props) {\n return props.children;\n}\nvar h = (tag, attributes) => {\n if (tag === \"slot\") {\n return 0;\n }\n if (tag instanceof Function) {\n return tag(attributes);\n }\n const { children, ...rest } = attributes != null ? attributes : {};\n if (tag === \"svg\") {\n throw new Error(\"SVG elements are not supported in the JSX syntax, use the array syntax instead\");\n }\n return [tag, rest, children];\n};\n\n//# sourceMappingURL=jsx-runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2NvcmUvZGlzdC9qc3gtcnVudGltZS9qc3gtcnVudGltZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxvQkFBb0I7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXGNvcmVcXGRpc3RcXGpzeC1ydW50aW1lXFxqc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvanN4LXJ1bnRpbWUudHNcbmZ1bmN0aW9uIEZyYWdtZW50KHByb3BzKSB7XG4gIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cbnZhciBoID0gKHRhZywgYXR0cmlidXRlcykgPT4ge1xuICBpZiAodGFnID09PSBcInNsb3RcIikge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0YWcgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiB0YWcoYXR0cmlidXRlcyk7XG4gIH1cbiAgY29uc3QgeyBjaGlsZHJlbiwgLi4ucmVzdCB9ID0gYXR0cmlidXRlcyAhPSBudWxsID8gYXR0cmlidXRlcyA6IHt9O1xuICBpZiAodGFnID09PSBcInN2Z1wiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU1ZHIGVsZW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSBKU1ggc3ludGF4LCB1c2UgdGhlIGFycmF5IHN5bnRheCBpbnN0ZWFkXCIpO1xuICB9XG4gIHJldHVybiBbdGFnLCByZXN0LCBjaGlsZHJlbl07XG59O1xuZXhwb3J0IHtcbiAgRnJhZ21lbnQsXG4gIGggYXMgY3JlYXRlRWxlbWVudCxcbiAgaCxcbiAgaCBhcyBqc3gsXG4gIGggYXMganN4REVWLFxuICBoIGFzIGpzeHNcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1qc3gtcnVudGltZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-blockquote/dist/index.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-blockquote/dist/index.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Blockquote: () => (/* binding */ Blockquote),\n/* harmony export */ \"default\": () => (/* binding */ index_default),\n/* harmony export */ inputRegex: () => (/* binding */ inputRegex)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n/* harmony import */ var _tiptap_core_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tiptap/core/jsx-runtime */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js\");\n// src/blockquote.tsx\n\n\nvar inputRegex = /^\\s*>\\s$/;\nvar Blockquote = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"blockquote\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n content: \"block+\",\n group: \"block\",\n defining: true,\n parseHTML() {\n return [{ tag: \"blockquote\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return /* @__PURE__ */ (0,_tiptap_core_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"blockquote\", { ...(0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), children: /* @__PURE__ */ (0,_tiptap_core_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"slot\", {}) });\n },\n parseMarkdown: (token, helpers) => {\n return helpers.createNode(\"blockquote\", void 0, helpers.parseChildren(token.tokens || []));\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n const prefix = \">\";\n const result = [];\n node.content.forEach((child) => {\n const childContent = h.renderChildren([child]);\n const lines = childContent.split(\"\\n\");\n const linesWithPrefix = lines.map((line) => {\n if (line.trim() === \"\") {\n return prefix;\n }\n return `${prefix} ${line}`;\n });\n result.push(linesWithPrefix.join(\"\\n\"));\n });\n return result.join(`\n${prefix}\n`);\n },\n addCommands() {\n return {\n setBlockquote: () => ({ commands }) => {\n return commands.wrapIn(this.name);\n },\n toggleBlockquote: () => ({ commands }) => {\n return commands.toggleWrap(this.name);\n },\n unsetBlockquote: () => ({ commands }) => {\n return commands.lift(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-b\": () => this.editor.commands.toggleBlockquote()\n };\n },\n addInputRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.wrappingInputRule)({\n find: inputRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Blockquote;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1ibG9ja3F1b3RlL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUN3RTtBQUN6QjtBQUMvQztBQUNBLGlCQUFpQiw4Q0FBSTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxtQkFBbUI7QUFDakMsR0FBRztBQUNILGVBQWUsZ0JBQWdCO0FBQy9CLDJCQUEyQiw2REFBRyxpQkFBaUIsR0FBRyw2REFBZSx5RUFBeUUsNkRBQUcsV0FBVyxHQUFHO0FBQzNKLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFFBQVEsRUFBRSxLQUFLO0FBQ2pDLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLEVBQUU7QUFDRjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsOEJBQThCLFVBQVU7QUFDeEM7QUFDQSxPQUFPO0FBQ1AsaUNBQWlDLFVBQVU7QUFDM0M7QUFDQSxPQUFPO0FBQ1AsZ0NBQWdDLFVBQVU7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLCtEQUFpQjtBQUN2QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFLRTtBQUNGIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAdGlwdGFwXFxleHRlbnNpb24tYmxvY2txdW90ZVxcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2Jsb2NrcXVvdGUudHN4XG5pbXBvcnQgeyBtZXJnZUF0dHJpYnV0ZXMsIE5vZGUsIHdyYXBwaW5nSW5wdXRSdWxlIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsganN4IH0gZnJvbSBcIkB0aXB0YXAvY29yZS9qc3gtcnVudGltZVwiO1xudmFyIGlucHV0UmVnZXggPSAvXlxccyo+XFxzJC87XG52YXIgQmxvY2txdW90ZSA9IE5vZGUuY3JlYXRlKHtcbiAgbmFtZTogXCJibG9ja3F1b3RlXCIsXG4gIGFkZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEhUTUxBdHRyaWJ1dGVzOiB7fVxuICAgIH07XG4gIH0sXG4gIGNvbnRlbnQ6IFwiYmxvY2srXCIsXG4gIGdyb3VwOiBcImJsb2NrXCIsXG4gIGRlZmluaW5nOiB0cnVlLFxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFt7IHRhZzogXCJibG9ja3F1b3RlXCIgfV07XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJibG9ja3F1b3RlXCIsIHsgLi4ubWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcywgSFRNTEF0dHJpYnV0ZXMpLCBjaGlsZHJlbjogLyogQF9fUFVSRV9fICovIGpzeChcInNsb3RcIiwge30pIH0pO1xuICB9LFxuICBwYXJzZU1hcmtkb3duOiAodG9rZW4sIGhlbHBlcnMpID0+IHtcbiAgICByZXR1cm4gaGVscGVycy5jcmVhdGVOb2RlKFwiYmxvY2txdW90ZVwiLCB2b2lkIDAsIGhlbHBlcnMucGFyc2VDaGlsZHJlbih0b2tlbi50b2tlbnMgfHwgW10pKTtcbiAgfSxcbiAgcmVuZGVyTWFya2Rvd246IChub2RlLCBoKSA9PiB7XG4gICAgaWYgKCFub2RlLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBjb25zdCBwcmVmaXggPSBcIj5cIjtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBub2RlLmNvbnRlbnQuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkQ29udGVudCA9IGgucmVuZGVyQ2hpbGRyZW4oW2NoaWxkXSk7XG4gICAgICBjb25zdCBsaW5lcyA9IGNoaWxkQ29udGVudC5zcGxpdChcIlxcblwiKTtcbiAgICAgIGNvbnN0IGxpbmVzV2l0aFByZWZpeCA9IGxpbmVzLm1hcCgobGluZSkgPT4ge1xuICAgICAgICBpZiAobGluZS50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgICAgICByZXR1cm4gcHJlZml4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtwcmVmaXh9ICR7bGluZX1gO1xuICAgICAgfSk7XG4gICAgICByZXN1bHQucHVzaChsaW5lc1dpdGhQcmVmaXguam9pbihcIlxcblwiKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdC5qb2luKGBcbiR7cHJlZml4fVxuYCk7XG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRCbG9ja3F1b3RlOiAoKSA9PiAoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgICAgIHJldHVybiBjb21tYW5kcy53cmFwSW4odGhpcy5uYW1lKTtcbiAgICAgIH0sXG4gICAgICB0b2dnbGVCbG9ja3F1b3RlOiAoKSA9PiAoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgICAgIHJldHVybiBjb21tYW5kcy50b2dnbGVXcmFwKHRoaXMubmFtZSk7XG4gICAgICB9LFxuICAgICAgdW5zZXRCbG9ja3F1b3RlOiAoKSA9PiAoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgICAgIHJldHVybiBjb21tYW5kcy5saWZ0KHRoaXMubmFtZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiTW9kLVNoaWZ0LWJcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQmxvY2txdW90ZSgpXG4gICAgfTtcbiAgfSxcbiAgYWRkSW5wdXRSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgd3JhcHBpbmdJbnB1dFJ1bGUoe1xuICAgICAgICBmaW5kOiBpbnB1dFJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pXG4gICAgXTtcbiAgfVxufSk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIGluZGV4X2RlZmF1bHQgPSBCbG9ja3F1b3RlO1xuZXhwb3J0IHtcbiAgQmxvY2txdW90ZSxcbiAgaW5kZXhfZGVmYXVsdCBhcyBkZWZhdWx0LFxuICBpbnB1dFJlZ2V4XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-blockquote/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-bold/dist/index.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-bold/dist/index.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Bold: () => (/* binding */ Bold),\n/* harmony export */ \"default\": () => (/* binding */ index_default),\n/* harmony export */ starInputRegex: () => (/* binding */ starInputRegex),\n/* harmony export */ starPasteRegex: () => (/* binding */ starPasteRegex),\n/* harmony export */ underscoreInputRegex: () => (/* binding */ underscoreInputRegex),\n/* harmony export */ underscorePasteRegex: () => (/* binding */ underscorePasteRegex)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n/* harmony import */ var _tiptap_core_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tiptap/core/jsx-runtime */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js\");\n// src/bold.tsx\n\n\nvar starInputRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))$/;\nvar starPasteRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))/g;\nvar underscoreInputRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))$/;\nvar underscorePasteRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))/g;\nvar Bold = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Mark.create({\n name: \"bold\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n parseHTML() {\n return [\n {\n tag: \"strong\"\n },\n {\n tag: \"b\",\n getAttrs: (node) => node.style.fontWeight !== \"normal\" && null\n },\n {\n style: \"font-weight=400\",\n clearMark: (mark) => mark.type.name === this.name\n },\n {\n style: \"font-weight\",\n getAttrs: (value) => /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return /* @__PURE__ */ (0,_tiptap_core_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"strong\", { ...(0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), children: /* @__PURE__ */ (0,_tiptap_core_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"slot\", {}) });\n },\n markdownTokenName: \"strong\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"bold\", helpers.parseInline(token.tokens || []));\n },\n renderMarkdown: (node, h) => {\n return `**${h.renderChildren(node)}**`;\n },\n addCommands() {\n return {\n setBold: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleBold: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetBold: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-b\": () => this.editor.commands.toggleBold(),\n \"Mod-B\": () => this.editor.commands.toggleBold()\n };\n },\n addInputRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markInputRule)({\n find: starInputRegex,\n type: this.type\n }),\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markInputRule)({\n find: underscoreInputRegex,\n type: this.type\n })\n ];\n },\n addPasteRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markPasteRule)({\n find: starPasteRegex,\n type: this.type\n }),\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markPasteRule)({\n find: underscorePasteRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Bold;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1ib2xkL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNtRjtBQUNwQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsOENBQUk7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLGtEQUFrRCxHQUFHO0FBQ3JEO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsZUFBZSxnQkFBZ0I7QUFDL0IsMkJBQTJCLDZEQUFHLGFBQWEsR0FBRyw2REFBZSx5RUFBeUUsNkRBQUcsV0FBVyxHQUFHO0FBQ3ZKLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxnQkFBZ0IsdUJBQXVCO0FBQ3ZDLEdBQUc7QUFDSDtBQUNBO0FBQ0Esd0JBQXdCLFVBQVU7QUFDbEM7QUFDQSxPQUFPO0FBQ1AsMkJBQTJCLFVBQVU7QUFDckM7QUFDQSxPQUFPO0FBQ1AsMEJBQTBCLFVBQVU7QUFDcEM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sMkRBQWE7QUFDbkI7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNLDJEQUFhO0FBQ25CO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sMkRBQWE7QUFDbkI7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNLDJEQUFhO0FBQ25CO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQVFFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXGV4dGVuc2lvbi1ib2xkXFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvYm9sZC50c3hcbmltcG9ydCB7IE1hcmssIG1hcmtJbnB1dFJ1bGUsIG1hcmtQYXN0ZVJ1bGUsIG1lcmdlQXR0cmlidXRlcyB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IGpzeCB9IGZyb20gXCJAdGlwdGFwL2NvcmUvanN4LXJ1bnRpbWVcIjtcbnZhciBzdGFySW5wdXRSZWdleCA9IC8oPzpefFxccykoXFwqXFwqKD8hXFxzK1xcKlxcKikoKD86W14qXSspKVxcKlxcKig/IVxccytcXCpcXCopKSQvO1xudmFyIHN0YXJQYXN0ZVJlZ2V4ID0gLyg/Ol58XFxzKShcXCpcXCooPyFcXHMrXFwqXFwqKSgoPzpbXipdKykpXFwqXFwqKD8hXFxzK1xcKlxcKikpL2c7XG52YXIgdW5kZXJzY29yZUlucHV0UmVnZXggPSAvKD86XnxcXHMpKF9fKD8hXFxzK19fKSgoPzpbXl9dKykpX18oPyFcXHMrX18pKSQvO1xudmFyIHVuZGVyc2NvcmVQYXN0ZVJlZ2V4ID0gLyg/Ol58XFxzKShfXyg/IVxccytfXykoKD86W15fXSspKV9fKD8hXFxzK19fKSkvZztcbnZhciBCb2xkID0gTWFyay5jcmVhdGUoe1xuICBuYW1lOiBcImJvbGRcIixcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgSFRNTEF0dHJpYnV0ZXM6IHt9XG4gICAgfTtcbiAgfSxcbiAgcGFyc2VIVE1MKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRhZzogXCJzdHJvbmdcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGFnOiBcImJcIixcbiAgICAgICAgZ2V0QXR0cnM6IChub2RlKSA9PiBub2RlLnN0eWxlLmZvbnRXZWlnaHQgIT09IFwibm9ybWFsXCIgJiYgbnVsbFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3R5bGU6IFwiZm9udC13ZWlnaHQ9NDAwXCIsXG4gICAgICAgIGNsZWFyTWFyazogKG1hcmspID0+IG1hcmsudHlwZS5uYW1lID09PSB0aGlzLm5hbWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN0eWxlOiBcImZvbnQtd2VpZ2h0XCIsXG4gICAgICAgIGdldEF0dHJzOiAodmFsdWUpID0+IC9eKGJvbGQoZXIpP3xbNS05XVxcZHsyLH0pJC8udGVzdCh2YWx1ZSkgJiYgbnVsbFxuICAgICAgfVxuICAgIF07XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJzdHJvbmdcIiwgeyAuLi5tZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLCBIVE1MQXR0cmlidXRlcyksIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwic2xvdFwiLCB7fSkgfSk7XG4gIH0sXG4gIG1hcmtkb3duVG9rZW5OYW1lOiBcInN0cm9uZ1wiLFxuICBwYXJzZU1hcmtkb3duOiAodG9rZW4sIGhlbHBlcnMpID0+IHtcbiAgICByZXR1cm4gaGVscGVycy5hcHBseU1hcmsoXCJib2xkXCIsIGhlbHBlcnMucGFyc2VJbmxpbmUodG9rZW4udG9rZW5zIHx8IFtdKSk7XG4gIH0sXG4gIHJlbmRlck1hcmtkb3duOiAobm9kZSwgaCkgPT4ge1xuICAgIHJldHVybiBgKioke2gucmVuZGVyQ2hpbGRyZW4obm9kZSl9KipgO1xuICB9LFxuICBhZGRDb21tYW5kcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2V0Qm9sZDogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMuc2V0TWFyayh0aGlzLm5hbWUpO1xuICAgICAgfSxcbiAgICAgIHRvZ2dsZUJvbGQ6ICgpID0+ICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLnRvZ2dsZU1hcmsodGhpcy5uYW1lKTtcbiAgICAgIH0sXG4gICAgICB1bnNldEJvbGQ6ICgpID0+ICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLnVuc2V0TWFyayh0aGlzLm5hbWUpO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGFkZEtleWJvYXJkU2hvcnRjdXRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBcIk1vZC1iXCI6ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJvbGQoKSxcbiAgICAgIFwiTW9kLUJcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQm9sZCgpXG4gICAgfTtcbiAgfSxcbiAgYWRkSW5wdXRSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbWFya0lucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IHN0YXJJbnB1dFJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pLFxuICAgICAgbWFya0lucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IHVuZGVyc2NvcmVJbnB1dFJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pXG4gICAgXTtcbiAgfSxcbiAgYWRkUGFzdGVSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbWFya1Bhc3RlUnVsZSh7XG4gICAgICAgIGZpbmQ6IHN0YXJQYXN0ZVJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pLFxuICAgICAgbWFya1Bhc3RlUnVsZSh7XG4gICAgICAgIGZpbmQ6IHVuZGVyc2NvcmVQYXN0ZVJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pXG4gICAgXTtcbiAgfVxufSk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIGluZGV4X2RlZmF1bHQgPSBCb2xkO1xuZXhwb3J0IHtcbiAgQm9sZCxcbiAgaW5kZXhfZGVmYXVsdCBhcyBkZWZhdWx0LFxuICBzdGFySW5wdXRSZWdleCxcbiAgc3RhclBhc3RlUmVnZXgsXG4gIHVuZGVyc2NvcmVJbnB1dFJlZ2V4LFxuICB1bmRlcnNjb3JlUGFzdGVSZWdleFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-bold/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-code-block/dist/index.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-code-block/dist/index.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CodeBlock: () => (/* binding */ CodeBlock),\n/* harmony export */ backtickInputRegex: () => (/* binding */ backtickInputRegex),\n/* harmony export */ \"default\": () => (/* binding */ index_default),\n/* harmony export */ tildeInputRegex: () => (/* binding */ tildeInputRegex)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n/* harmony import */ var _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/pm/state */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/state/index.js\");\n// src/code-block.ts\n\n\nvar DEFAULT_TAB_SIZE = 4;\nvar backtickInputRegex = /^```([a-z]+)?[\\s\\n]$/;\nvar tildeInputRegex = /^~~~([a-z]+)?[\\s\\n]$/;\nvar CodeBlock = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Node.create({\n name: \"codeBlock\",\n addOptions() {\n return {\n languageClassPrefix: \"language-\",\n exitOnTripleEnter: true,\n exitOnArrowDown: true,\n defaultLanguage: null,\n enableTabIndentation: false,\n tabSize: DEFAULT_TAB_SIZE,\n HTMLAttributes: {}\n };\n },\n content: \"text*\",\n marks: \"\",\n group: \"block\",\n code: true,\n defining: true,\n addAttributes() {\n return {\n language: {\n default: this.options.defaultLanguage,\n parseHTML: (element) => {\n var _a;\n const { languageClassPrefix } = this.options;\n if (!languageClassPrefix) {\n return null;\n }\n const classNames = [...((_a = element.firstElementChild) == null ? void 0 : _a.classList) || []];\n const languages = classNames.filter((className) => className.startsWith(languageClassPrefix)).map((className) => className.replace(languageClassPrefix, \"\"));\n const language = languages[0];\n if (!language) {\n return null;\n }\n return language;\n },\n rendered: false\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: \"pre\",\n preserveWhitespace: \"full\"\n }\n ];\n },\n renderHTML({ node, HTMLAttributes }) {\n return [\n \"pre\",\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes),\n [\n \"code\",\n {\n class: node.attrs.language ? this.options.languageClassPrefix + node.attrs.language : null\n },\n 0\n ]\n ];\n },\n markdownTokenName: \"code\",\n parseMarkdown: (token, helpers) => {\n var _a;\n if (((_a = token.raw) == null ? void 0 : _a.startsWith(\"```\")) === false && token.codeBlockStyle !== \"indented\") {\n return [];\n }\n return helpers.createNode(\n \"codeBlock\",\n { language: token.lang || null },\n token.text ? [helpers.createTextNode(token.text)] : []\n );\n },\n renderMarkdown: (node, h) => {\n var _a;\n let output = \"\";\n const language = ((_a = node.attrs) == null ? void 0 : _a.language) || \"\";\n if (!node.content) {\n output = `\\`\\`\\`${language}\n\n\\`\\`\\``;\n } else {\n const lines = [`\\`\\`\\`${language}`, h.renderChildren(node.content), \"```\"];\n output = lines.join(\"\\n\");\n }\n return output;\n },\n addCommands() {\n return {\n setCodeBlock: (attributes) => ({ commands }) => {\n return commands.setNode(this.name, attributes);\n },\n toggleCodeBlock: (attributes) => ({ commands }) => {\n return commands.toggleNode(this.name, \"paragraph\", attributes);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Alt-c\": () => this.editor.commands.toggleCodeBlock(),\n // remove code block when at start of document or code block is empty\n Backspace: () => {\n const { empty, $anchor } = this.editor.state.selection;\n const isAtStart = $anchor.pos === 1;\n if (!empty || $anchor.parent.type.name !== this.name) {\n return false;\n }\n if (isAtStart || !$anchor.parent.textContent.length) {\n return this.editor.commands.clearNodes();\n }\n return false;\n },\n // handle tab indentation\n Tab: ({ editor }) => {\n var _a;\n if (!this.options.enableTabIndentation) {\n return false;\n }\n const tabSize = (_a = this.options.tabSize) != null ? _a : DEFAULT_TAB_SIZE;\n const { state } = editor;\n const { selection } = state;\n const { $from, empty } = selection;\n if ($from.parent.type !== this.type) {\n return false;\n }\n const indent = \" \".repeat(tabSize);\n if (empty) {\n return editor.commands.insertContent(indent);\n }\n return editor.commands.command(({ tr }) => {\n const { from, to } = selection;\n const text = state.doc.textBetween(from, to, \"\\n\", \"\\n\");\n const lines = text.split(\"\\n\");\n const indentedText = lines.map((line) => indent + line).join(\"\\n\");\n tr.replaceWith(from, to, state.schema.text(indentedText));\n return true;\n });\n },\n // handle shift+tab reverse indentation\n \"Shift-Tab\": ({ editor }) => {\n var _a;\n if (!this.options.enableTabIndentation) {\n return false;\n }\n const tabSize = (_a = this.options.tabSize) != null ? _a : DEFAULT_TAB_SIZE;\n const { state } = editor;\n const { selection } = state;\n const { $from, empty } = selection;\n if ($from.parent.type !== this.type) {\n return false;\n }\n if (empty) {\n return editor.commands.command(({ tr }) => {\n var _a2;\n const { pos } = $from;\n const codeBlockStart = $from.start();\n const codeBlockEnd = $from.end();\n const allText = state.doc.textBetween(codeBlockStart, codeBlockEnd, \"\\n\", \"\\n\");\n const lines = allText.split(\"\\n\");\n let currentLineIndex = 0;\n let charCount = 0;\n const relativeCursorPos = pos - codeBlockStart;\n for (let i = 0; i < lines.length; i += 1) {\n if (charCount + lines[i].length >= relativeCursorPos) {\n currentLineIndex = i;\n break;\n }\n charCount += lines[i].length + 1;\n }\n const currentLine = lines[currentLineIndex];\n const leadingSpaces = ((_a2 = currentLine.match(/^ */)) == null ? void 0 : _a2[0]) || \"\";\n const spacesToRemove = Math.min(leadingSpaces.length, tabSize);\n if (spacesToRemove === 0) {\n return true;\n }\n let lineStartPos = codeBlockStart;\n for (let i = 0; i < currentLineIndex; i += 1) {\n lineStartPos += lines[i].length + 1;\n }\n tr.delete(lineStartPos, lineStartPos + spacesToRemove);\n const cursorPosInLine = pos - lineStartPos;\n if (cursorPosInLine <= spacesToRemove) {\n tr.setSelection(_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.TextSelection.create(tr.doc, lineStartPos));\n }\n return true;\n });\n }\n return editor.commands.command(({ tr }) => {\n const { from, to } = selection;\n const text = state.doc.textBetween(from, to, \"\\n\", \"\\n\");\n const lines = text.split(\"\\n\");\n const reverseIndentText = lines.map((line) => {\n var _a2;\n const leadingSpaces = ((_a2 = line.match(/^ */)) == null ? void 0 : _a2[0]) || \"\";\n const spacesToRemove = Math.min(leadingSpaces.length, tabSize);\n return line.slice(spacesToRemove);\n }).join(\"\\n\");\n tr.replaceWith(from, to, state.schema.text(reverseIndentText));\n return true;\n });\n },\n // exit node on triple enter\n Enter: ({ editor }) => {\n if (!this.options.exitOnTripleEnter) {\n return false;\n }\n const { state } = editor;\n const { selection } = state;\n const { $from, empty } = selection;\n if (!empty || $from.parent.type !== this.type) {\n return false;\n }\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;\n const endsWithDoubleNewline = $from.parent.textContent.endsWith(\"\\n\\n\");\n if (!isAtEnd || !endsWithDoubleNewline) {\n return false;\n }\n return editor.chain().command(({ tr }) => {\n tr.delete($from.pos - 2, $from.pos);\n return true;\n }).exitCode().run();\n },\n // exit node on arrow down\n ArrowDown: ({ editor }) => {\n if (!this.options.exitOnArrowDown) {\n return false;\n }\n const { state } = editor;\n const { selection, doc } = state;\n const { $from, empty } = selection;\n if (!empty || $from.parent.type !== this.type) {\n return false;\n }\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;\n if (!isAtEnd) {\n return false;\n }\n const after = $from.after();\n if (after === void 0) {\n return false;\n }\n const nodeAfter = doc.nodeAt(after);\n if (nodeAfter) {\n return editor.commands.command(({ tr }) => {\n tr.setSelection(_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.Selection.near(doc.resolve(after)));\n return true;\n });\n }\n return editor.commands.exitCode();\n }\n };\n },\n addInputRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.textblockTypeInputRule)({\n find: backtickInputRegex,\n type: this.type,\n getAttributes: (match) => ({\n language: match[1]\n })\n }),\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.textblockTypeInputRule)({\n find: tildeInputRegex,\n type: this.type,\n getAttributes: (match) => ({\n language: match[1]\n })\n })\n ];\n },\n addProseMirrorPlugins() {\n return [\n // this plugin creates a code block for pasted content from VS Code\n // we can also detect the copied code language\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.PluginKey(\"codeBlockVSCodeHandler\"),\n props: {\n handlePaste: (view, event) => {\n if (!event.clipboardData) {\n return false;\n }\n if (this.editor.isActive(this.type.name)) {\n return false;\n }\n const text = event.clipboardData.getData(\"text/plain\");\n const vscode = event.clipboardData.getData(\"vscode-editor-data\");\n const vscodeData = vscode ? JSON.parse(vscode) : void 0;\n const language = vscodeData == null ? void 0 : vscodeData.mode;\n if (!text || !language) {\n return false;\n }\n const { tr, schema } = view.state;\n const textNode = schema.text(text.replace(/\\r\\n?/g, \"\\n\"));\n tr.replaceSelectionWith(this.type.create({ language }, textNode));\n if (tr.selection.$from.parent.type !== this.type) {\n tr.setSelection(_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.TextSelection.near(tr.doc.resolve(Math.max(0, tr.selection.from - 2))));\n }\n tr.setMeta(\"paste\", true);\n view.dispatch(tr);\n return true;\n }\n }\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = CodeBlock;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1jb2RlLWJsb2NrL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDNkU7QUFDRTtBQUMvRTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQUk7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHNCQUFzQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsZUFBZSxzQkFBc0I7QUFDckM7QUFDQTtBQUNBLE1BQU0sNkRBQWU7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhCQUE4QjtBQUN0QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0EsTUFBTTtBQUNOLDhCQUE4QixTQUFTO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLFVBQVU7QUFDakQ7QUFDQSxPQUFPO0FBQ1AsMENBQTBDLFVBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRO0FBQ3hCLGdCQUFnQixZQUFZO0FBQzVCLGdCQUFnQixlQUFlO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLElBQUk7QUFDOUMsa0JBQWtCLFdBQVc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxzQkFBc0IsUUFBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFFBQVE7QUFDeEIsZ0JBQWdCLFlBQVk7QUFDNUIsZ0JBQWdCLGVBQWU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsSUFBSTtBQUNoRDtBQUNBLG9CQUFvQixNQUFNO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGtCQUFrQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzQkFBc0I7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QiwyREFBYTtBQUMzQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsMENBQTBDLElBQUk7QUFDOUMsa0JBQWtCLFdBQVc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsWUFBWTtBQUM1QixnQkFBZ0IsZUFBZTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLElBQUk7QUFDN0M7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsaUJBQWlCO0FBQ2pDLGdCQUFnQixlQUFlO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLElBQUk7QUFDaEQsNEJBQTRCLHVEQUFTO0FBQ3JDO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLG9FQUFzQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsTUFBTSxvRUFBc0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxvREFBTTtBQUNoQixpQkFBaUIsdURBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGFBQWE7QUFDakM7QUFDQSx1REFBdUQsVUFBVTtBQUNqRTtBQUNBLDhCQUE4QiwyREFBYTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQU1FO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXGV4dGVuc2lvbi1jb2RlLWJsb2NrXFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvY29kZS1ibG9jay50c1xuaW1wb3J0IHsgbWVyZ2VBdHRyaWJ1dGVzLCBOb2RlLCB0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgUGx1Z2luLCBQbHVnaW5LZXksIFNlbGVjdGlvbiwgVGV4dFNlbGVjdGlvbiB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG52YXIgREVGQVVMVF9UQUJfU0laRSA9IDQ7XG52YXIgYmFja3RpY2tJbnB1dFJlZ2V4ID0gL15gYGAoW2Etel0rKT9bXFxzXFxuXSQvO1xudmFyIHRpbGRlSW5wdXRSZWdleCA9IC9efn5+KFthLXpdKyk/W1xcc1xcbl0kLztcbnZhciBDb2RlQmxvY2sgPSBOb2RlLmNyZWF0ZSh7XG4gIG5hbWU6IFwiY29kZUJsb2NrXCIsXG4gIGFkZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhbmd1YWdlQ2xhc3NQcmVmaXg6IFwibGFuZ3VhZ2UtXCIsXG4gICAgICBleGl0T25UcmlwbGVFbnRlcjogdHJ1ZSxcbiAgICAgIGV4aXRPbkFycm93RG93bjogdHJ1ZSxcbiAgICAgIGRlZmF1bHRMYW5ndWFnZTogbnVsbCxcbiAgICAgIGVuYWJsZVRhYkluZGVudGF0aW9uOiBmYWxzZSxcbiAgICAgIHRhYlNpemU6IERFRkFVTFRfVEFCX1NJWkUsXG4gICAgICBIVE1MQXR0cmlidXRlczoge31cbiAgICB9O1xuICB9LFxuICBjb250ZW50OiBcInRleHQqXCIsXG4gIG1hcmtzOiBcIlwiLFxuICBncm91cDogXCJibG9ja1wiLFxuICBjb2RlOiB0cnVlLFxuICBkZWZpbmluZzogdHJ1ZSxcbiAgYWRkQXR0cmlidXRlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgZGVmYXVsdDogdGhpcy5vcHRpb25zLmRlZmF1bHRMYW5ndWFnZSxcbiAgICAgICAgcGFyc2VIVE1MOiAoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICBjb25zdCB7IGxhbmd1YWdlQ2xhc3NQcmVmaXggfSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgICBpZiAoIWxhbmd1YWdlQ2xhc3NQcmVmaXgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBjbGFzc05hbWVzID0gWy4uLigoX2EgPSBlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2xhc3NMaXN0KSB8fCBbXV07XG4gICAgICAgICAgY29uc3QgbGFuZ3VhZ2VzID0gY2xhc3NOYW1lcy5maWx0ZXIoKGNsYXNzTmFtZSkgPT4gY2xhc3NOYW1lLnN0YXJ0c1dpdGgobGFuZ3VhZ2VDbGFzc1ByZWZpeCkpLm1hcCgoY2xhc3NOYW1lKSA9PiBjbGFzc05hbWUucmVwbGFjZShsYW5ndWFnZUNsYXNzUHJlZml4LCBcIlwiKSk7XG4gICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBsYW5ndWFnZXNbMF07XG4gICAgICAgICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBsYW5ndWFnZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyZWQ6IGZhbHNlXG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgcGFyc2VIVE1MKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRhZzogXCJwcmVcIixcbiAgICAgICAgcHJlc2VydmVXaGl0ZXNwYWNlOiBcImZ1bGxcIlxuICAgICAgfVxuICAgIF07XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBub2RlLCBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFwicHJlXCIsXG4gICAgICBtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLCBIVE1MQXR0cmlidXRlcyksXG4gICAgICBbXG4gICAgICAgIFwiY29kZVwiLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3M6IG5vZGUuYXR0cnMubGFuZ3VhZ2UgPyB0aGlzLm9wdGlvbnMubGFuZ3VhZ2VDbGFzc1ByZWZpeCArIG5vZGUuYXR0cnMubGFuZ3VhZ2UgOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIDBcbiAgICAgIF1cbiAgICBdO1xuICB9LFxuICBtYXJrZG93blRva2VuTmFtZTogXCJjb2RlXCIsXG4gIHBhcnNlTWFya2Rvd246ICh0b2tlbiwgaGVscGVycykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpZiAoKChfYSA9IHRva2VuLnJhdykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnN0YXJ0c1dpdGgoXCJgYGBcIikpID09PSBmYWxzZSAmJiB0b2tlbi5jb2RlQmxvY2tTdHlsZSAhPT0gXCJpbmRlbnRlZFwiKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBoZWxwZXJzLmNyZWF0ZU5vZGUoXG4gICAgICBcImNvZGVCbG9ja1wiLFxuICAgICAgeyBsYW5ndWFnZTogdG9rZW4ubGFuZyB8fCBudWxsIH0sXG4gICAgICB0b2tlbi50ZXh0ID8gW2hlbHBlcnMuY3JlYXRlVGV4dE5vZGUodG9rZW4udGV4dCldIDogW11cbiAgICApO1xuICB9LFxuICByZW5kZXJNYXJrZG93bjogKG5vZGUsIGgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgbGV0IG91dHB1dCA9IFwiXCI7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSAoKF9hID0gbm9kZS5hdHRycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmxhbmd1YWdlKSB8fCBcIlwiO1xuICAgIGlmICghbm9kZS5jb250ZW50KSB7XG4gICAgICBvdXRwdXQgPSBgXFxgXFxgXFxgJHtsYW5ndWFnZX1cblxuXFxgXFxgXFxgYDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGluZXMgPSBbYFxcYFxcYFxcYCR7bGFuZ3VhZ2V9YCwgaC5yZW5kZXJDaGlsZHJlbihub2RlLmNvbnRlbnQpLCBcImBgYFwiXTtcbiAgICAgIG91dHB1dCA9IGxpbmVzLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRDb2RlQmxvY2s6IChhdHRyaWJ1dGVzKSA9PiAoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgICAgIHJldHVybiBjb21tYW5kcy5zZXROb2RlKHRoaXMubmFtZSwgYXR0cmlidXRlcyk7XG4gICAgICB9LFxuICAgICAgdG9nZ2xlQ29kZUJsb2NrOiAoYXR0cmlidXRlcykgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMudG9nZ2xlTm9kZSh0aGlzLm5hbWUsIFwicGFyYWdyYXBoXCIsIGF0dHJpYnV0ZXMpO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGFkZEtleWJvYXJkU2hvcnRjdXRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBcIk1vZC1BbHQtY1wiOiAoKSA9PiB0aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVDb2RlQmxvY2soKSxcbiAgICAgIC8vIHJlbW92ZSBjb2RlIGJsb2NrIHdoZW4gYXQgc3RhcnQgb2YgZG9jdW1lbnQgb3IgY29kZSBibG9jayBpcyBlbXB0eVxuICAgICAgQmFja3NwYWNlOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZW1wdHksICRhbmNob3IgfSA9IHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcbiAgICAgICAgY29uc3QgaXNBdFN0YXJ0ID0gJGFuY2hvci5wb3MgPT09IDE7XG4gICAgICAgIGlmICghZW1wdHkgfHwgJGFuY2hvci5wYXJlbnQudHlwZS5uYW1lICE9PSB0aGlzLm5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQXRTdGFydCB8fCAhJGFuY2hvci5wYXJlbnQudGV4dENvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmNvbW1hbmRzLmNsZWFyTm9kZXMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuICAgICAgLy8gaGFuZGxlIHRhYiBpbmRlbnRhdGlvblxuICAgICAgVGFiOiAoeyBlZGl0b3IgfSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmVuYWJsZVRhYkluZGVudGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYlNpemUgPSAoX2EgPSB0aGlzLm9wdGlvbnMudGFiU2l6ZSkgIT0gbnVsbCA/IF9hIDogREVGQVVMVF9UQUJfU0laRTtcbiAgICAgICAgY29uc3QgeyBzdGF0ZSB9ID0gZWRpdG9yO1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgJGZyb20sIGVtcHR5IH0gPSBzZWxlY3Rpb247XG4gICAgICAgIGlmICgkZnJvbS5wYXJlbnQudHlwZSAhPT0gdGhpcy50eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGVudCA9IFwiIFwiLnJlcGVhdCh0YWJTaXplKTtcbiAgICAgICAgaWYgKGVtcHR5KSB7XG4gICAgICAgICAgcmV0dXJuIGVkaXRvci5jb21tYW5kcy5pbnNlcnRDb250ZW50KGluZGVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVkaXRvci5jb21tYW5kcy5jb21tYW5kKCh7IHRyIH0pID0+IHtcbiAgICAgICAgICBjb25zdCB7IGZyb20sIHRvIH0gPSBzZWxlY3Rpb247XG4gICAgICAgICAgY29uc3QgdGV4dCA9IHN0YXRlLmRvYy50ZXh0QmV0d2Vlbihmcm9tLCB0bywgXCJcXG5cIiwgXCJcXG5cIik7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICAgIGNvbnN0IGluZGVudGVkVGV4dCA9IGxpbmVzLm1hcCgobGluZSkgPT4gaW5kZW50ICsgbGluZSkuam9pbihcIlxcblwiKTtcbiAgICAgICAgICB0ci5yZXBsYWNlV2l0aChmcm9tLCB0bywgc3RhdGUuc2NoZW1hLnRleHQoaW5kZW50ZWRUZXh0KSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIC8vIGhhbmRsZSBzaGlmdCt0YWIgcmV2ZXJzZSBpbmRlbnRhdGlvblxuICAgICAgXCJTaGlmdC1UYWJcIjogKHsgZWRpdG9yIH0pID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5lbmFibGVUYWJJbmRlbnRhdGlvbikge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YWJTaXplID0gKF9hID0gdGhpcy5vcHRpb25zLnRhYlNpemUpICE9IG51bGwgPyBfYSA6IERFRkFVTFRfVEFCX1NJWkU7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUgfSA9IGVkaXRvcjtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IHN0YXRlO1xuICAgICAgICBjb25zdCB7ICRmcm9tLCBlbXB0eSB9ID0gc2VsZWN0aW9uO1xuICAgICAgICBpZiAoJGZyb20ucGFyZW50LnR5cGUgIT09IHRoaXMudHlwZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW1wdHkpIHtcbiAgICAgICAgICByZXR1cm4gZWRpdG9yLmNvbW1hbmRzLmNvbW1hbmQoKHsgdHIgfSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hMjtcbiAgICAgICAgICAgIGNvbnN0IHsgcG9zIH0gPSAkZnJvbTtcbiAgICAgICAgICAgIGNvbnN0IGNvZGVCbG9ja1N0YXJ0ID0gJGZyb20uc3RhcnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvZGVCbG9ja0VuZCA9ICRmcm9tLmVuZCgpO1xuICAgICAgICAgICAgY29uc3QgYWxsVGV4dCA9IHN0YXRlLmRvYy50ZXh0QmV0d2Vlbihjb2RlQmxvY2tTdGFydCwgY29kZUJsb2NrRW5kLCBcIlxcblwiLCBcIlxcblwiKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gYWxsVGV4dC5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgICAgIGxldCBjdXJyZW50TGluZUluZGV4ID0gMDtcbiAgICAgICAgICAgIGxldCBjaGFyQ291bnQgPSAwO1xuICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVDdXJzb3JQb3MgPSBwb3MgLSBjb2RlQmxvY2tTdGFydDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgaWYgKGNoYXJDb3VudCArIGxpbmVzW2ldLmxlbmd0aCA+PSByZWxhdGl2ZUN1cnNvclBvcykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRMaW5lSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNoYXJDb3VudCArPSBsaW5lc1tpXS5sZW5ndGggKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3VycmVudExpbmUgPSBsaW5lc1tjdXJyZW50TGluZUluZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGxlYWRpbmdTcGFjZXMgPSAoKF9hMiA9IGN1cnJlbnRMaW5lLm1hdGNoKC9eICovKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMlswXSkgfHwgXCJcIjtcbiAgICAgICAgICAgIGNvbnN0IHNwYWNlc1RvUmVtb3ZlID0gTWF0aC5taW4obGVhZGluZ1NwYWNlcy5sZW5ndGgsIHRhYlNpemUpO1xuICAgICAgICAgICAgaWYgKHNwYWNlc1RvUmVtb3ZlID09PSAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGxpbmVTdGFydFBvcyA9IGNvZGVCbG9ja1N0YXJ0O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50TGluZUluZGV4OyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgbGluZVN0YXJ0UG9zICs9IGxpbmVzW2ldLmxlbmd0aCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ci5kZWxldGUobGluZVN0YXJ0UG9zLCBsaW5lU3RhcnRQb3MgKyBzcGFjZXNUb1JlbW92ZSk7XG4gICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NJbkxpbmUgPSBwb3MgLSBsaW5lU3RhcnRQb3M7XG4gICAgICAgICAgICBpZiAoY3Vyc29yUG9zSW5MaW5lIDw9IHNwYWNlc1RvUmVtb3ZlKSB7XG4gICAgICAgICAgICAgIHRyLnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLmNyZWF0ZSh0ci5kb2MsIGxpbmVTdGFydFBvcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVkaXRvci5jb21tYW5kcy5jb21tYW5kKCh7IHRyIH0pID0+IHtcbiAgICAgICAgICBjb25zdCB7IGZyb20sIHRvIH0gPSBzZWxlY3Rpb247XG4gICAgICAgICAgY29uc3QgdGV4dCA9IHN0YXRlLmRvYy50ZXh0QmV0d2Vlbihmcm9tLCB0bywgXCJcXG5cIiwgXCJcXG5cIik7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICAgIGNvbnN0IHJldmVyc2VJbmRlbnRUZXh0ID0gbGluZXMubWFwKChsaW5lKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EyO1xuICAgICAgICAgICAgY29uc3QgbGVhZGluZ1NwYWNlcyA9ICgoX2EyID0gbGluZS5tYXRjaCgvXiAqLykpID09IG51bGwgPyB2b2lkIDAgOiBfYTJbMF0pIHx8IFwiXCI7XG4gICAgICAgICAgICBjb25zdCBzcGFjZXNUb1JlbW92ZSA9IE1hdGgubWluKGxlYWRpbmdTcGFjZXMubGVuZ3RoLCB0YWJTaXplKTtcbiAgICAgICAgICAgIHJldHVybiBsaW5lLnNsaWNlKHNwYWNlc1RvUmVtb3ZlKTtcbiAgICAgICAgICB9KS5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgIHRyLnJlcGxhY2VXaXRoKGZyb20sIHRvLCBzdGF0ZS5zY2hlbWEudGV4dChyZXZlcnNlSW5kZW50VGV4dCkpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICAvLyBleGl0IG5vZGUgb24gdHJpcGxlIGVudGVyXG4gICAgICBFbnRlcjogKHsgZWRpdG9yIH0pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZXhpdE9uVHJpcGxlRW50ZXIpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBzdGF0ZSB9ID0gZWRpdG9yO1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgJGZyb20sIGVtcHR5IH0gPSBzZWxlY3Rpb247XG4gICAgICAgIGlmICghZW1wdHkgfHwgJGZyb20ucGFyZW50LnR5cGUgIT09IHRoaXMudHlwZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0F0RW5kID0gJGZyb20ucGFyZW50T2Zmc2V0ID09PSAkZnJvbS5wYXJlbnQubm9kZVNpemUgLSAyO1xuICAgICAgICBjb25zdCBlbmRzV2l0aERvdWJsZU5ld2xpbmUgPSAkZnJvbS5wYXJlbnQudGV4dENvbnRlbnQuZW5kc1dpdGgoXCJcXG5cXG5cIik7XG4gICAgICAgIGlmICghaXNBdEVuZCB8fCAhZW5kc1dpdGhEb3VibGVOZXdsaW5lKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlZGl0b3IuY2hhaW4oKS5jb21tYW5kKCh7IHRyIH0pID0+IHtcbiAgICAgICAgICB0ci5kZWxldGUoJGZyb20ucG9zIC0gMiwgJGZyb20ucG9zKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkuZXhpdENvZGUoKS5ydW4oKTtcbiAgICAgIH0sXG4gICAgICAvLyBleGl0IG5vZGUgb24gYXJyb3cgZG93blxuICAgICAgQXJyb3dEb3duOiAoeyBlZGl0b3IgfSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5leGl0T25BcnJvd0Rvd24pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBzdGF0ZSB9ID0gZWRpdG9yO1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiwgZG9jIH0gPSBzdGF0ZTtcbiAgICAgICAgY29uc3QgeyAkZnJvbSwgZW1wdHkgfSA9IHNlbGVjdGlvbjtcbiAgICAgICAgaWYgKCFlbXB0eSB8fCAkZnJvbS5wYXJlbnQudHlwZSAhPT0gdGhpcy50eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzQXRFbmQgPSAkZnJvbS5wYXJlbnRPZmZzZXQgPT09ICRmcm9tLnBhcmVudC5ub2RlU2l6ZSAtIDI7XG4gICAgICAgIGlmICghaXNBdEVuZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZnRlciA9ICRmcm9tLmFmdGVyKCk7XG4gICAgICAgIGlmIChhZnRlciA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vZGVBZnRlciA9IGRvYy5ub2RlQXQoYWZ0ZXIpO1xuICAgICAgICBpZiAobm9kZUFmdGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGVkaXRvci5jb21tYW5kcy5jb21tYW5kKCh7IHRyIH0pID0+IHtcbiAgICAgICAgICAgIHRyLnNldFNlbGVjdGlvbihTZWxlY3Rpb24ubmVhcihkb2MucmVzb2x2ZShhZnRlcikpKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlZGl0b3IuY29tbWFuZHMuZXhpdENvZGUoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBhZGRJbnB1dFJ1bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICB0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlKHtcbiAgICAgICAgZmluZDogYmFja3RpY2tJbnB1dFJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIGdldEF0dHJpYnV0ZXM6IChtYXRjaCkgPT4gKHtcbiAgICAgICAgICBsYW5ndWFnZTogbWF0Y2hbMV1cbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgdGV4dGJsb2NrVHlwZUlucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IHRpbGRlSW5wdXRSZWdleCxcbiAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVzOiAobWF0Y2gpID0+ICh7XG4gICAgICAgICAgbGFuZ3VhZ2U6IG1hdGNoWzFdXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIF07XG4gIH0sXG4gIGFkZFByb3NlTWlycm9yUGx1Z2lucygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gdGhpcyBwbHVnaW4gY3JlYXRlcyBhIGNvZGUgYmxvY2sgZm9yIHBhc3RlZCBjb250ZW50IGZyb20gVlMgQ29kZVxuICAgICAgLy8gd2UgY2FuIGFsc28gZGV0ZWN0IHRoZSBjb3BpZWQgY29kZSBsYW5ndWFnZVxuICAgICAgbmV3IFBsdWdpbih7XG4gICAgICAgIGtleTogbmV3IFBsdWdpbktleShcImNvZGVCbG9ja1ZTQ29kZUhhbmRsZXJcIiksXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgaGFuZGxlUGFzdGU6ICh2aWV3LCBldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFldmVudC5jbGlwYm9hcmREYXRhKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvci5pc0FjdGl2ZSh0aGlzLnR5cGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvcGxhaW5cIik7XG4gICAgICAgICAgICBjb25zdCB2c2NvZGUgPSBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoXCJ2c2NvZGUtZWRpdG9yLWRhdGFcIik7XG4gICAgICAgICAgICBjb25zdCB2c2NvZGVEYXRhID0gdnNjb2RlID8gSlNPTi5wYXJzZSh2c2NvZGUpIDogdm9pZCAwO1xuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB2c2NvZGVEYXRhID09IG51bGwgPyB2b2lkIDAgOiB2c2NvZGVEYXRhLm1vZGU7XG4gICAgICAgICAgICBpZiAoIXRleHQgfHwgIWxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgdHIsIHNjaGVtYSB9ID0gdmlldy5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHRleHROb2RlID0gc2NoZW1hLnRleHQodGV4dC5yZXBsYWNlKC9cXHJcXG4/L2csIFwiXFxuXCIpKTtcbiAgICAgICAgICAgIHRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKHRoaXMudHlwZS5jcmVhdGUoeyBsYW5ndWFnZSB9LCB0ZXh0Tm9kZSkpO1xuICAgICAgICAgICAgaWYgKHRyLnNlbGVjdGlvbi4kZnJvbS5wYXJlbnQudHlwZSAhPT0gdGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgIHRyLnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLm5lYXIodHIuZG9jLnJlc29sdmUoTWF0aC5tYXgoMCwgdHIuc2VsZWN0aW9uLmZyb20gLSAyKSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyLnNldE1ldGEoXCJwYXN0ZVwiLCB0cnVlKTtcbiAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF07XG4gIH1cbn0pO1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBpbmRleF9kZWZhdWx0ID0gQ29kZUJsb2NrO1xuZXhwb3J0IHtcbiAgQ29kZUJsb2NrLFxuICBiYWNrdGlja0lucHV0UmVnZXgsXG4gIGluZGV4X2RlZmF1bHQgYXMgZGVmYXVsdCxcbiAgdGlsZGVJbnB1dFJlZ2V4XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-code-block/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-code/dist/index.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-code/dist/index.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Code: () => (/* binding */ Code),\n/* harmony export */ \"default\": () => (/* binding */ index_default),\n/* harmony export */ inputRegex: () => (/* binding */ inputRegex),\n/* harmony export */ pasteRegex: () => (/* binding */ pasteRegex)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n// src/code.ts\n\nvar inputRegex = /(^|[^`])`([^`]+)`(?!`)$/;\nvar pasteRegex = /(^|[^`])`([^`]+)`(?!`)/g;\nvar Code = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Mark.create({\n name: \"code\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n excludes: \"_\",\n code: true,\n exitable: true,\n parseHTML() {\n return [{ tag: \"code\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"code\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"codespan\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"code\", [{ type: \"text\", text: token.text || \"\" }]);\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return `\\`${h.renderChildren(node.content)}\\``;\n },\n addCommands() {\n return {\n setCode: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleCode: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetCode: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-e\": () => this.editor.commands.toggleCode()\n };\n },\n addInputRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markInputRule)({\n find: inputRegex,\n type: this.type\n })\n ];\n },\n addPasteRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markPasteRule)({\n find: pasteRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Code;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1jb2RlL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNtRjtBQUNuRjtBQUNBO0FBQ0EsV0FBVyw4Q0FBSTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGFBQWE7QUFDM0IsR0FBRztBQUNILGVBQWUsZ0JBQWdCO0FBQy9CLG9CQUFvQiw2REFBZTtBQUNuQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLHdDQUF3QyxzQ0FBc0M7QUFDOUUsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLCtCQUErQjtBQUMvQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLHdCQUF3QixVQUFVO0FBQ2xDO0FBQ0EsT0FBTztBQUNQLDJCQUEyQixVQUFVO0FBQ3JDO0FBQ0EsT0FBTztBQUNQLDBCQUEwQixVQUFVO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSwyREFBYTtBQUNuQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDJEQUFhO0FBQ25CO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQU1FO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXGV4dGVuc2lvbi1jb2RlXFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvY29kZS50c1xuaW1wb3J0IHsgTWFyaywgbWFya0lucHV0UnVsZSwgbWFya1Bhc3RlUnVsZSwgbWVyZ2VBdHRyaWJ1dGVzIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xudmFyIGlucHV0UmVnZXggPSAvKF58W15gXSlgKFteYF0rKWAoPyFgKSQvO1xudmFyIHBhc3RlUmVnZXggPSAvKF58W15gXSlgKFteYF0rKWAoPyFgKS9nO1xudmFyIENvZGUgPSBNYXJrLmNyZWF0ZSh7XG4gIG5hbWU6IFwiY29kZVwiLFxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBIVE1MQXR0cmlidXRlczoge31cbiAgICB9O1xuICB9LFxuICBleGNsdWRlczogXCJfXCIsXG4gIGNvZGU6IHRydWUsXG4gIGV4aXRhYmxlOiB0cnVlLFxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFt7IHRhZzogXCJjb2RlXCIgfV07XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIFtcImNvZGVcIiwgbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcywgSFRNTEF0dHJpYnV0ZXMpLCAwXTtcbiAgfSxcbiAgbWFya2Rvd25Ub2tlbk5hbWU6IFwiY29kZXNwYW5cIixcbiAgcGFyc2VNYXJrZG93bjogKHRva2VuLCBoZWxwZXJzKSA9PiB7XG4gICAgcmV0dXJuIGhlbHBlcnMuYXBwbHlNYXJrKFwiY29kZVwiLCBbeyB0eXBlOiBcInRleHRcIiwgdGV4dDogdG9rZW4udGV4dCB8fCBcIlwiIH1dKTtcbiAgfSxcbiAgcmVuZGVyTWFya2Rvd246IChub2RlLCBoKSA9PiB7XG4gICAgaWYgKCFub2RlLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gYFxcYCR7aC5yZW5kZXJDaGlsZHJlbihub2RlLmNvbnRlbnQpfVxcYGA7XG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRDb2RlOiAoKSA9PiAoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgICAgIHJldHVybiBjb21tYW5kcy5zZXRNYXJrKHRoaXMubmFtZSk7XG4gICAgICB9LFxuICAgICAgdG9nZ2xlQ29kZTogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMudG9nZ2xlTWFyayh0aGlzLm5hbWUpO1xuICAgICAgfSxcbiAgICAgIHVuc2V0Q29kZTogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMudW5zZXRNYXJrKHRoaXMubmFtZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiTW9kLWVcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlQ29kZSgpXG4gICAgfTtcbiAgfSxcbiAgYWRkSW5wdXRSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbWFya0lucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IGlucHV0UmVnZXgsXG4gICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgfSlcbiAgICBdO1xuICB9LFxuICBhZGRQYXN0ZVJ1bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBtYXJrUGFzdGVSdWxlKHtcbiAgICAgICAgZmluZDogcGFzdGVSZWdleCxcbiAgICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgICB9KVxuICAgIF07XG4gIH1cbn0pO1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBpbmRleF9kZWZhdWx0ID0gQ29kZTtcbmV4cG9ydCB7XG4gIENvZGUsXG4gIGluZGV4X2RlZmF1bHQgYXMgZGVmYXVsdCxcbiAgaW5wdXRSZWdleCxcbiAgcGFzdGVSZWdleFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-code/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-document/dist/index.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-document/dist/index.js ***!
|
||
\***************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Document: () => (/* binding */ Document),\n/* harmony export */ \"default\": () => (/* binding */ index_default)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n// src/document.ts\n\nvar Document = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"doc\",\n topNode: true,\n content: \"block+\",\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return h.renderChildren(node.content, \"\\n\\n\");\n }\n});\n\n// src/index.ts\nvar index_default = Document;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1kb2N1bWVudC9kaXN0L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ29DO0FBQ3BDLGVBQWUsOENBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBSUU7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHRpcHRhcFxcZXh0ZW5zaW9uLWRvY3VtZW50XFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvZG9jdW1lbnQudHNcbmltcG9ydCB7IE5vZGUgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG52YXIgRG9jdW1lbnQgPSBOb2RlLmNyZWF0ZSh7XG4gIG5hbWU6IFwiZG9jXCIsXG4gIHRvcE5vZGU6IHRydWUsXG4gIGNvbnRlbnQ6IFwiYmxvY2srXCIsXG4gIHJlbmRlck1hcmtkb3duOiAobm9kZSwgaCkgPT4ge1xuICAgIGlmICghbm9kZS5jb250ZW50KSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIGgucmVuZGVyQ2hpbGRyZW4obm9kZS5jb250ZW50LCBcIlxcblxcblwiKTtcbiAgfVxufSk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIGluZGV4X2RlZmF1bHQgPSBEb2N1bWVudDtcbmV4cG9ydCB7XG4gIERvY3VtZW50LFxuICBpbmRleF9kZWZhdWx0IGFzIGRlZmF1bHRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-document/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-hard-break/dist/index.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-hard-break/dist/index.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HardBreak: () => (/* binding */ HardBreak),\n/* harmony export */ \"default\": () => (/* binding */ index_default)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n// src/hard-break.ts\n\nvar HardBreak = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"hardBreak\",\n markdownTokenName: \"br\",\n addOptions() {\n return {\n keepMarks: true,\n HTMLAttributes: {}\n };\n },\n inline: true,\n group: \"inline\",\n selectable: false,\n linebreakReplacement: true,\n parseHTML() {\n return [{ tag: \"br\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"br\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes)];\n },\n renderText() {\n return \"\\n\";\n },\n renderMarkdown: () => ` \n`,\n parseMarkdown: () => {\n return {\n type: \"hardBreak\"\n };\n },\n addCommands() {\n return {\n setHardBreak: () => ({ commands, chain, state, editor }) => {\n return commands.first([\n () => commands.exitCode(),\n () => commands.command(() => {\n const { selection, storedMarks } = state;\n if (selection.$from.parent.type.spec.isolating) {\n return false;\n }\n const { keepMarks } = this.options;\n const { splittableMarks } = editor.extensionManager;\n const marks = storedMarks || selection.$to.parentOffset && selection.$from.marks();\n return chain().insertContent({ type: this.name }).command(({ tr, dispatch }) => {\n if (dispatch && marks && keepMarks) {\n const filteredMarks = marks.filter((mark) => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n }\n return true;\n }).run();\n })\n ]);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => this.editor.commands.setHardBreak(),\n \"Shift-Enter\": () => this.editor.commands.setHardBreak()\n };\n }\n});\n\n// src/index.ts\nvar index_default = HardBreak;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1oYXJkLWJyZWFrL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDcUQ7QUFDckQsZ0JBQWdCLDhDQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFdBQVc7QUFDekIsR0FBRztBQUNILGVBQWUsZ0JBQWdCO0FBQy9CLGtCQUFrQiw2REFBZTtBQUNqQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDZCQUE2QixnQ0FBZ0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHlCQUF5QjtBQUM3QztBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsWUFBWTtBQUNoQyxvQkFBb0Isa0JBQWtCO0FBQ3RDO0FBQ0EsMkNBQTJDLGlCQUFpQixhQUFhLGNBQWM7QUFDdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUlFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXGV4dGVuc2lvbi1oYXJkLWJyZWFrXFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvaGFyZC1icmVhay50c1xuaW1wb3J0IHsgbWVyZ2VBdHRyaWJ1dGVzLCBOb2RlIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xudmFyIEhhcmRCcmVhayA9IE5vZGUuY3JlYXRlKHtcbiAgbmFtZTogXCJoYXJkQnJlYWtcIixcbiAgbWFya2Rvd25Ub2tlbk5hbWU6IFwiYnJcIixcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2VlcE1hcmtzOiB0cnVlLFxuICAgICAgSFRNTEF0dHJpYnV0ZXM6IHt9XG4gICAgfTtcbiAgfSxcbiAgaW5saW5lOiB0cnVlLFxuICBncm91cDogXCJpbmxpbmVcIixcbiAgc2VsZWN0YWJsZTogZmFsc2UsXG4gIGxpbmVicmVha1JlcGxhY2VtZW50OiB0cnVlLFxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFt7IHRhZzogXCJiclwiIH1dO1xuICB9LFxuICByZW5kZXJIVE1MKHsgSFRNTEF0dHJpYnV0ZXMgfSkge1xuICAgIHJldHVybiBbXCJiclwiLCBtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLCBIVE1MQXR0cmlidXRlcyldO1xuICB9LFxuICByZW5kZXJUZXh0KCkge1xuICAgIHJldHVybiBcIlxcblwiO1xuICB9LFxuICByZW5kZXJNYXJrZG93bjogKCkgPT4gYCAgXG5gLFxuICBwYXJzZU1hcmtkb3duOiAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiaGFyZEJyZWFrXCJcbiAgICB9O1xuICB9LFxuICBhZGRDb21tYW5kcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2V0SGFyZEJyZWFrOiAoKSA9PiAoeyBjb21tYW5kcywgY2hhaW4sIHN0YXRlLCBlZGl0b3IgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMuZmlyc3QoW1xuICAgICAgICAgICgpID0+IGNvbW1hbmRzLmV4aXRDb2RlKCksXG4gICAgICAgICAgKCkgPT4gY29tbWFuZHMuY29tbWFuZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiwgc3RvcmVkTWFya3MgfSA9IHN0YXRlO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi4kZnJvbS5wYXJlbnQudHlwZS5zcGVjLmlzb2xhdGluZykge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IGtlZXBNYXJrcyB9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICAgICAgY29uc3QgeyBzcGxpdHRhYmxlTWFya3MgfSA9IGVkaXRvci5leHRlbnNpb25NYW5hZ2VyO1xuICAgICAgICAgICAgY29uc3QgbWFya3MgPSBzdG9yZWRNYXJrcyB8fCBzZWxlY3Rpb24uJHRvLnBhcmVudE9mZnNldCAmJiBzZWxlY3Rpb24uJGZyb20ubWFya3MoKTtcbiAgICAgICAgICAgIHJldHVybiBjaGFpbigpLmluc2VydENvbnRlbnQoeyB0eXBlOiB0aGlzLm5hbWUgfSkuY29tbWFuZCgoeyB0ciwgZGlzcGF0Y2ggfSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZGlzcGF0Y2ggJiYgbWFya3MgJiYga2VlcE1hcmtzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRNYXJrcyA9IG1hcmtzLmZpbHRlcigobWFyaykgPT4gc3BsaXR0YWJsZU1hcmtzLmluY2x1ZGVzKG1hcmsudHlwZS5uYW1lKSk7XG4gICAgICAgICAgICAgICAgdHIuZW5zdXJlTWFya3MoZmlsdGVyZWRNYXJrcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KS5ydW4oKTtcbiAgICAgICAgICB9KVxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBhZGRLZXlib2FyZFNob3J0Y3V0cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJNb2QtRW50ZXJcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMuc2V0SGFyZEJyZWFrKCksXG4gICAgICBcIlNoaWZ0LUVudGVyXCI6ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnNldEhhcmRCcmVhaygpXG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIGluZGV4X2RlZmF1bHQgPSBIYXJkQnJlYWs7XG5leHBvcnQge1xuICBIYXJkQnJlYWssXG4gIGluZGV4X2RlZmF1bHQgYXMgZGVmYXVsdFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-hard-break/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-heading/dist/index.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-heading/dist/index.js ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Heading: () => (/* binding */ Heading),\n/* harmony export */ \"default\": () => (/* binding */ index_default)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n// src/heading.ts\n\nvar Heading = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"heading\",\n addOptions() {\n return {\n levels: [1, 2, 3, 4, 5, 6],\n HTMLAttributes: {}\n };\n },\n content: \"inline*\",\n group: \"block\",\n defining: true,\n addAttributes() {\n return {\n level: {\n default: 1,\n rendered: false\n }\n };\n },\n parseHTML() {\n return this.options.levels.map((level) => ({\n tag: `h${level}`,\n attrs: { level }\n }));\n },\n renderHTML({ node, HTMLAttributes }) {\n const hasLevel = this.options.levels.includes(node.attrs.level);\n const level = hasLevel ? node.attrs.level : this.options.levels[0];\n return [`h${level}`, (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n parseMarkdown: (token, helpers) => {\n return helpers.createNode(\"heading\", { level: token.depth || 1 }, helpers.parseInline(token.tokens || []));\n },\n renderMarkdown: (node, h) => {\n var _a;\n const level = ((_a = node.attrs) == null ? void 0 : _a.level) ? parseInt(node.attrs.level, 10) : 1;\n const headingChars = \"#\".repeat(level);\n if (!node.content) {\n return \"\";\n }\n return `${headingChars} ${h.renderChildren(node.content)}`;\n },\n addCommands() {\n return {\n setHeading: (attributes) => ({ commands }) => {\n if (!this.options.levels.includes(attributes.level)) {\n return false;\n }\n return commands.setNode(this.name, attributes);\n },\n toggleHeading: (attributes) => ({ commands }) => {\n if (!this.options.levels.includes(attributes.level)) {\n return false;\n }\n return commands.toggleNode(this.name, \"paragraph\", attributes);\n }\n };\n },\n addKeyboardShortcuts() {\n return this.options.levels.reduce(\n (items, level) => ({\n ...items,\n ...{\n [`Mod-Alt-${level}`]: () => this.editor.commands.toggleHeading({ level })\n }\n }),\n {}\n );\n },\n addInputRules() {\n return this.options.levels.map((level) => {\n return (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.textblockTypeInputRule)({\n find: new RegExp(`^(#{${Math.min(...this.options.levels)},${level}})\\\\s$`),\n type: this.type,\n getAttributes: {\n level\n }\n });\n });\n }\n});\n\n// src/index.ts\nvar index_default = Heading;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1oZWFkaW5nL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDNkU7QUFDN0UsY0FBYyw4Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlO0FBQ2YsS0FBSztBQUNMLEdBQUc7QUFDSCxlQUFlLHNCQUFzQjtBQUNyQztBQUNBO0FBQ0EsZ0JBQWdCLE1BQU0sR0FBRyw2REFBZTtBQUN4QyxHQUFHO0FBQ0g7QUFDQSwyQ0FBMkMseUJBQXlCO0FBQ3BFLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsY0FBYyxFQUFFLCtCQUErQjtBQUM3RCxHQUFHO0FBQ0g7QUFDQTtBQUNBLHFDQUFxQyxVQUFVO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHdDQUF3QyxVQUFVO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLE1BQU0sK0NBQStDLE9BQU87QUFDbEY7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsYUFBYSxvRUFBc0I7QUFDbkMsOEJBQThCLEVBQUUsaUNBQWlDLEdBQUcsT0FBTztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFJRTtBQUNGIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAdGlwdGFwXFxleHRlbnNpb24taGVhZGluZ1xcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2hlYWRpbmcudHNcbmltcG9ydCB7IG1lcmdlQXR0cmlidXRlcywgTm9kZSwgdGV4dGJsb2NrVHlwZUlucHV0UnVsZSB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbnZhciBIZWFkaW5nID0gTm9kZS5jcmVhdGUoe1xuICBuYW1lOiBcImhlYWRpbmdcIixcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGV2ZWxzOiBbMSwgMiwgMywgNCwgNSwgNl0sXG4gICAgICBIVE1MQXR0cmlidXRlczoge31cbiAgICB9O1xuICB9LFxuICBjb250ZW50OiBcImlubGluZSpcIixcbiAgZ3JvdXA6IFwiYmxvY2tcIixcbiAgZGVmaW5pbmc6IHRydWUsXG4gIGFkZEF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxldmVsOiB7XG4gICAgICAgIGRlZmF1bHQ6IDEsXG4gICAgICAgIHJlbmRlcmVkOiBmYWxzZVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIHBhcnNlSFRNTCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxldmVscy5tYXAoKGxldmVsKSA9PiAoe1xuICAgICAgdGFnOiBgaCR7bGV2ZWx9YCxcbiAgICAgIGF0dHJzOiB7IGxldmVsIH1cbiAgICB9KSk7XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBub2RlLCBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgY29uc3QgaGFzTGV2ZWwgPSB0aGlzLm9wdGlvbnMubGV2ZWxzLmluY2x1ZGVzKG5vZGUuYXR0cnMubGV2ZWwpO1xuICAgIGNvbnN0IGxldmVsID0gaGFzTGV2ZWwgPyBub2RlLmF0dHJzLmxldmVsIDogdGhpcy5vcHRpb25zLmxldmVsc1swXTtcbiAgICByZXR1cm4gW2BoJHtsZXZlbH1gLCBtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLCBIVE1MQXR0cmlidXRlcyksIDBdO1xuICB9LFxuICBwYXJzZU1hcmtkb3duOiAodG9rZW4sIGhlbHBlcnMpID0+IHtcbiAgICByZXR1cm4gaGVscGVycy5jcmVhdGVOb2RlKFwiaGVhZGluZ1wiLCB7IGxldmVsOiB0b2tlbi5kZXB0aCB8fCAxIH0sIGhlbHBlcnMucGFyc2VJbmxpbmUodG9rZW4udG9rZW5zIHx8IFtdKSk7XG4gIH0sXG4gIHJlbmRlck1hcmtkb3duOiAobm9kZSwgaCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsZXZlbCA9ICgoX2EgPSBub2RlLmF0dHJzKSA9PSBudWxsID8gdm9pZCAwIDogX2EubGV2ZWwpID8gcGFyc2VJbnQobm9kZS5hdHRycy5sZXZlbCwgMTApIDogMTtcbiAgICBjb25zdCBoZWFkaW5nQ2hhcnMgPSBcIiNcIi5yZXBlYXQobGV2ZWwpO1xuICAgIGlmICghbm9kZS5jb250ZW50KSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIGAke2hlYWRpbmdDaGFyc30gJHtoLnJlbmRlckNoaWxkcmVuKG5vZGUuY29udGVudCl9YDtcbiAgfSxcbiAgYWRkQ29tbWFuZHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldEhlYWRpbmc6IChhdHRyaWJ1dGVzKSA9PiAoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmxldmVscy5pbmNsdWRlcyhhdHRyaWJ1dGVzLmxldmVsKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tbWFuZHMuc2V0Tm9kZSh0aGlzLm5hbWUsIGF0dHJpYnV0ZXMpO1xuICAgICAgfSxcbiAgICAgIHRvZ2dsZUhlYWRpbmc6IChhdHRyaWJ1dGVzKSA9PiAoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmxldmVscy5pbmNsdWRlcyhhdHRyaWJ1dGVzLmxldmVsKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tbWFuZHMudG9nZ2xlTm9kZSh0aGlzLm5hbWUsIFwicGFyYWdyYXBoXCIsIGF0dHJpYnV0ZXMpO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGFkZEtleWJvYXJkU2hvcnRjdXRzKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGV2ZWxzLnJlZHVjZShcbiAgICAgIChpdGVtcywgbGV2ZWwpID0+ICh7XG4gICAgICAgIC4uLml0ZW1zLFxuICAgICAgICAuLi57XG4gICAgICAgICAgW2BNb2QtQWx0LSR7bGV2ZWx9YF06ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUhlYWRpbmcoeyBsZXZlbCB9KVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcbiAgfSxcbiAgYWRkSW5wdXRSdWxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxldmVscy5tYXAoKGxldmVsKSA9PiB7XG4gICAgICByZXR1cm4gdGV4dGJsb2NrVHlwZUlucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IG5ldyBSZWdFeHAoYF4oI3ske01hdGgubWluKC4uLnRoaXMub3B0aW9ucy5sZXZlbHMpfSwke2xldmVsfX0pXFxcXHMkYCksXG4gICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgZ2V0QXR0cmlidXRlczoge1xuICAgICAgICAgIGxldmVsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59KTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgaW5kZXhfZGVmYXVsdCA9IEhlYWRpbmc7XG5leHBvcnQge1xuICBIZWFkaW5nLFxuICBpbmRleF9kZWZhdWx0IGFzIGRlZmF1bHRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-heading/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-horizontal-rule/dist/index.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-horizontal-rule/dist/index.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HorizontalRule: () => (/* binding */ HorizontalRule),\n/* harmony export */ \"default\": () => (/* binding */ index_default)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n/* harmony import */ var _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/pm/state */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/state/index.js\");\n// src/horizontal-rule.ts\n\n\nvar HorizontalRule = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Node.create({\n name: \"horizontalRule\",\n addOptions() {\n return {\n HTMLAttributes: {},\n nextNodeType: \"paragraph\"\n };\n },\n group: \"block\",\n parseHTML() {\n return [{ tag: \"hr\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"hr\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes)];\n },\n markdownTokenName: \"hr\",\n parseMarkdown: (token, helpers) => {\n return helpers.createNode(\"horizontalRule\");\n },\n renderMarkdown: () => {\n return \"---\";\n },\n addCommands() {\n return {\n setHorizontalRule: () => ({ chain, state }) => {\n if (!(0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.canInsertNode)(state, state.schema.nodes[this.name])) {\n return false;\n }\n const { selection } = state;\n const { $to: $originTo } = selection;\n const currentChain = chain();\n if ((0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.isNodeSelection)(selection)) {\n currentChain.insertContentAt($originTo.pos, {\n type: this.name\n });\n } else {\n currentChain.insertContent({ type: this.name });\n }\n return currentChain.command(({ state: chainState, tr, dispatch }) => {\n if (dispatch) {\n const { $to } = tr.selection;\n const posAfter = $to.end();\n if ($to.nodeAfter) {\n if ($to.nodeAfter.isTextblock) {\n tr.setSelection(_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.TextSelection.create(tr.doc, $to.pos + 1));\n } else if ($to.nodeAfter.isBlock) {\n tr.setSelection(_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.NodeSelection.create(tr.doc, $to.pos));\n } else {\n tr.setSelection(_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.TextSelection.create(tr.doc, $to.pos));\n }\n } else {\n const nodeType = chainState.schema.nodes[this.options.nextNodeType] || $to.parent.type.contentMatch.defaultType;\n const node = nodeType == null ? void 0 : nodeType.create();\n if (node) {\n tr.insert(posAfter, node);\n tr.setSelection(_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.TextSelection.create(tr.doc, posAfter + 1));\n }\n }\n tr.scrollIntoView();\n }\n return true;\n }).run();\n }\n };\n },\n addInputRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.nodeInputRule)({\n find: /^(?:---|—-|___\\s|\\*\\*\\*\\s)$/,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = HorizontalRule;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1ob3Jpem9udGFsLXJ1bGUvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDb0c7QUFDcEM7QUFDaEUscUJBQXFCLDhDQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLFdBQVc7QUFDekIsR0FBRztBQUNILGVBQWUsZ0JBQWdCO0FBQy9CLGtCQUFrQiw2REFBZTtBQUNqQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtDQUFrQyxjQUFjO0FBQ2hELGFBQWEsMkRBQWE7QUFDMUI7QUFDQTtBQUNBLGdCQUFnQixZQUFZO0FBQzVCLGdCQUFnQixpQkFBaUI7QUFDakM7QUFDQSxZQUFZLDZEQUFlO0FBQzNCO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsVUFBVTtBQUNWLHVDQUF1QyxpQkFBaUI7QUFDeEQ7QUFDQSx1Q0FBdUMsaUNBQWlDO0FBQ3hFO0FBQ0Esb0JBQW9CLE1BQU07QUFDMUI7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLDJEQUFhO0FBQzdDLGdCQUFnQjtBQUNoQixnQ0FBZ0MsMkRBQWE7QUFDN0MsZ0JBQWdCO0FBQ2hCLGdDQUFnQywyREFBYTtBQUM3QztBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQywyREFBYTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sMkRBQWE7QUFDbkI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBSUU7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHRpcHRhcFxcZXh0ZW5zaW9uLWhvcml6b250YWwtcnVsZVxcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2hvcml6b250YWwtcnVsZS50c1xuaW1wb3J0IHsgY2FuSW5zZXJ0Tm9kZSwgaXNOb2RlU2VsZWN0aW9uLCBtZXJnZUF0dHJpYnV0ZXMsIE5vZGUsIG5vZGVJbnB1dFJ1bGUgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBOb2RlU2VsZWN0aW9uLCBUZXh0U2VsZWN0aW9uIH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbnZhciBIb3Jpem9udGFsUnVsZSA9IE5vZGUuY3JlYXRlKHtcbiAgbmFtZTogXCJob3Jpem9udGFsUnVsZVwiLFxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBIVE1MQXR0cmlidXRlczoge30sXG4gICAgICBuZXh0Tm9kZVR5cGU6IFwicGFyYWdyYXBoXCJcbiAgICB9O1xuICB9LFxuICBncm91cDogXCJibG9ja1wiLFxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFt7IHRhZzogXCJoclwiIH1dO1xuICB9LFxuICByZW5kZXJIVE1MKHsgSFRNTEF0dHJpYnV0ZXMgfSkge1xuICAgIHJldHVybiBbXCJoclwiLCBtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLCBIVE1MQXR0cmlidXRlcyldO1xuICB9LFxuICBtYXJrZG93blRva2VuTmFtZTogXCJoclwiLFxuICBwYXJzZU1hcmtkb3duOiAodG9rZW4sIGhlbHBlcnMpID0+IHtcbiAgICByZXR1cm4gaGVscGVycy5jcmVhdGVOb2RlKFwiaG9yaXpvbnRhbFJ1bGVcIik7XG4gIH0sXG4gIHJlbmRlck1hcmtkb3duOiAoKSA9PiB7XG4gICAgcmV0dXJuIFwiLS0tXCI7XG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRIb3Jpem9udGFsUnVsZTogKCkgPT4gKHsgY2hhaW4sIHN0YXRlIH0pID0+IHtcbiAgICAgICAgaWYgKCFjYW5JbnNlcnROb2RlKHN0YXRlLCBzdGF0ZS5zY2hlbWEubm9kZXNbdGhpcy5uYW1lXSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IHN0YXRlO1xuICAgICAgICBjb25zdCB7ICR0bzogJG9yaWdpblRvIH0gPSBzZWxlY3Rpb247XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDaGFpbiA9IGNoYWluKCk7XG4gICAgICAgIGlmIChpc05vZGVTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgICAgIGN1cnJlbnRDaGFpbi5pbnNlcnRDb250ZW50QXQoJG9yaWdpblRvLnBvcywge1xuICAgICAgICAgICAgdHlwZTogdGhpcy5uYW1lXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudENoYWluLmluc2VydENvbnRlbnQoeyB0eXBlOiB0aGlzLm5hbWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRDaGFpbi5jb21tYW5kKCh7IHN0YXRlOiBjaGFpblN0YXRlLCB0ciwgZGlzcGF0Y2ggfSkgPT4ge1xuICAgICAgICAgIGlmIChkaXNwYXRjaCkge1xuICAgICAgICAgICAgY29uc3QgeyAkdG8gfSA9IHRyLnNlbGVjdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IHBvc0FmdGVyID0gJHRvLmVuZCgpO1xuICAgICAgICAgICAgaWYgKCR0by5ub2RlQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgaWYgKCR0by5ub2RlQWZ0ZXIuaXNUZXh0YmxvY2spIHtcbiAgICAgICAgICAgICAgICB0ci5zZXRTZWxlY3Rpb24oVGV4dFNlbGVjdGlvbi5jcmVhdGUodHIuZG9jLCAkdG8ucG9zICsgMSkpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCR0by5ub2RlQWZ0ZXIuaXNCbG9jaykge1xuICAgICAgICAgICAgICAgIHRyLnNldFNlbGVjdGlvbihOb2RlU2VsZWN0aW9uLmNyZWF0ZSh0ci5kb2MsICR0by5wb3MpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0ci5zZXRTZWxlY3Rpb24oVGV4dFNlbGVjdGlvbi5jcmVhdGUodHIuZG9jLCAkdG8ucG9zKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5vZGVUeXBlID0gY2hhaW5TdGF0ZS5zY2hlbWEubm9kZXNbdGhpcy5vcHRpb25zLm5leHROb2RlVHlwZV0gfHwgJHRvLnBhcmVudC50eXBlLmNvbnRlbnRNYXRjaC5kZWZhdWx0VHlwZTtcbiAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVUeXBlID09IG51bGwgPyB2b2lkIDAgOiBub2RlVHlwZS5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICB0ci5pbnNlcnQocG9zQWZ0ZXIsIG5vZGUpO1xuICAgICAgICAgICAgICAgIHRyLnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLmNyZWF0ZSh0ci5kb2MsIHBvc0FmdGVyICsgMSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ci5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkucnVuKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgYWRkSW5wdXRSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbm9kZUlucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IC9eKD86LS0tfOKAlC18X19fXFxzfFxcKlxcKlxcKlxccykkLyxcbiAgICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgICB9KVxuICAgIF07XG4gIH1cbn0pO1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBpbmRleF9kZWZhdWx0ID0gSG9yaXpvbnRhbFJ1bGU7XG5leHBvcnQge1xuICBIb3Jpem9udGFsUnVsZSxcbiAgaW5kZXhfZGVmYXVsdCBhcyBkZWZhdWx0XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-horizontal-rule/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-italic/dist/index.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-italic/dist/index.js ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Italic: () => (/* binding */ Italic),\n/* harmony export */ \"default\": () => (/* binding */ index_default),\n/* harmony export */ starInputRegex: () => (/* binding */ starInputRegex),\n/* harmony export */ starPasteRegex: () => (/* binding */ starPasteRegex),\n/* harmony export */ underscoreInputRegex: () => (/* binding */ underscoreInputRegex),\n/* harmony export */ underscorePasteRegex: () => (/* binding */ underscorePasteRegex)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n// src/italic.ts\n\nvar starInputRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))$/;\nvar starPasteRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))/g;\nvar underscoreInputRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))$/;\nvar underscorePasteRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))/g;\nvar Italic = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Mark.create({\n name: \"italic\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n parseHTML() {\n return [\n {\n tag: \"em\"\n },\n {\n tag: \"i\",\n getAttrs: (node) => node.style.fontStyle !== \"normal\" && null\n },\n {\n style: \"font-style=normal\",\n clearMark: (mark) => mark.type.name === this.name\n },\n {\n style: \"font-style=italic\"\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"em\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setItalic: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleItalic: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetItalic: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n markdownTokenName: \"em\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"italic\", helpers.parseInline(token.tokens || []));\n },\n renderMarkdown: (node, h) => {\n return `*${h.renderChildren(node)}*`;\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-i\": () => this.editor.commands.toggleItalic(),\n \"Mod-I\": () => this.editor.commands.toggleItalic()\n };\n },\n addInputRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markInputRule)({\n find: starInputRegex,\n type: this.type\n }),\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markInputRule)({\n find: underscoreInputRegex,\n type: this.type\n })\n ];\n },\n addPasteRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markPasteRule)({\n find: starPasteRegex,\n type: this.type\n }),\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markPasteRule)({\n find: underscorePasteRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Italic;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1pdGFsaWMvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDbUY7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDhDQUFJO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxlQUFlLGdCQUFnQjtBQUMvQixrQkFBa0IsNkRBQWU7QUFDakMsR0FBRztBQUNIO0FBQ0E7QUFDQSwwQkFBMEIsVUFBVTtBQUNwQztBQUNBLE9BQU87QUFDUCw2QkFBNkIsVUFBVTtBQUN2QztBQUNBLE9BQU87QUFDUCw0QkFBNEIsVUFBVTtBQUN0QztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZSx1QkFBdUI7QUFDdEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sMkRBQWE7QUFDbkI7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNLDJEQUFhO0FBQ25CO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sMkRBQWE7QUFDbkI7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNLDJEQUFhO0FBQ25CO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQVFFO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXGV4dGVuc2lvbi1pdGFsaWNcXGRpc3RcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9pdGFsaWMudHNcbmltcG9ydCB7IE1hcmssIG1hcmtJbnB1dFJ1bGUsIG1hcmtQYXN0ZVJ1bGUsIG1lcmdlQXR0cmlidXRlcyB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbnZhciBzdGFySW5wdXRSZWdleCA9IC8oPzpefFxccykoXFwqKD8hXFxzK1xcKikoKD86W14qXSspKVxcKig/IVxccytcXCopKSQvO1xudmFyIHN0YXJQYXN0ZVJlZ2V4ID0gLyg/Ol58XFxzKShcXCooPyFcXHMrXFwqKSgoPzpbXipdKykpXFwqKD8hXFxzK1xcKikpL2c7XG52YXIgdW5kZXJzY29yZUlucHV0UmVnZXggPSAvKD86XnxcXHMpKF8oPyFcXHMrXykoKD86W15fXSspKV8oPyFcXHMrXykpJC87XG52YXIgdW5kZXJzY29yZVBhc3RlUmVnZXggPSAvKD86XnxcXHMpKF8oPyFcXHMrXykoKD86W15fXSspKV8oPyFcXHMrXykpL2c7XG52YXIgSXRhbGljID0gTWFyay5jcmVhdGUoe1xuICBuYW1lOiBcIml0YWxpY1wiLFxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBIVE1MQXR0cmlidXRlczoge31cbiAgICB9O1xuICB9LFxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGFnOiBcImVtXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRhZzogXCJpXCIsXG4gICAgICAgIGdldEF0dHJzOiAobm9kZSkgPT4gbm9kZS5zdHlsZS5mb250U3R5bGUgIT09IFwibm9ybWFsXCIgJiYgbnVsbFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3R5bGU6IFwiZm9udC1zdHlsZT1ub3JtYWxcIixcbiAgICAgICAgY2xlYXJNYXJrOiAobWFyaykgPT4gbWFyay50eXBlLm5hbWUgPT09IHRoaXMubmFtZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3R5bGU6IFwiZm9udC1zdHlsZT1pdGFsaWNcIlxuICAgICAgfVxuICAgIF07XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIFtcImVtXCIsIG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsIEhUTUxBdHRyaWJ1dGVzKSwgMF07XG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRJdGFsaWM6ICgpID0+ICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLnNldE1hcmsodGhpcy5uYW1lKTtcbiAgICAgIH0sXG4gICAgICB0b2dnbGVJdGFsaWM6ICgpID0+ICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLnRvZ2dsZU1hcmsodGhpcy5uYW1lKTtcbiAgICAgIH0sXG4gICAgICB1bnNldEl0YWxpYzogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMudW5zZXRNYXJrKHRoaXMubmFtZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWFya2Rvd25Ub2tlbk5hbWU6IFwiZW1cIixcbiAgcGFyc2VNYXJrZG93bjogKHRva2VuLCBoZWxwZXJzKSA9PiB7XG4gICAgcmV0dXJuIGhlbHBlcnMuYXBwbHlNYXJrKFwiaXRhbGljXCIsIGhlbHBlcnMucGFyc2VJbmxpbmUodG9rZW4udG9rZW5zIHx8IFtdKSk7XG4gIH0sXG4gIHJlbmRlck1hcmtkb3duOiAobm9kZSwgaCkgPT4ge1xuICAgIHJldHVybiBgKiR7aC5yZW5kZXJDaGlsZHJlbihub2RlKX0qYDtcbiAgfSxcbiAgYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiTW9kLWlcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlSXRhbGljKCksXG4gICAgICBcIk1vZC1JXCI6ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUl0YWxpYygpXG4gICAgfTtcbiAgfSxcbiAgYWRkSW5wdXRSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbWFya0lucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IHN0YXJJbnB1dFJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pLFxuICAgICAgbWFya0lucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IHVuZGVyc2NvcmVJbnB1dFJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pXG4gICAgXTtcbiAgfSxcbiAgYWRkUGFzdGVSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbWFya1Bhc3RlUnVsZSh7XG4gICAgICAgIGZpbmQ6IHN0YXJQYXN0ZVJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pLFxuICAgICAgbWFya1Bhc3RlUnVsZSh7XG4gICAgICAgIGZpbmQ6IHVuZGVyc2NvcmVQYXN0ZVJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pXG4gICAgXTtcbiAgfVxufSk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIGluZGV4X2RlZmF1bHQgPSBJdGFsaWM7XG5leHBvcnQge1xuICBJdGFsaWMsXG4gIGluZGV4X2RlZmF1bHQgYXMgZGVmYXVsdCxcbiAgc3RhcklucHV0UmVnZXgsXG4gIHN0YXJQYXN0ZVJlZ2V4LFxuICB1bmRlcnNjb3JlSW5wdXRSZWdleCxcbiAgdW5kZXJzY29yZVBhc3RlUmVnZXhcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-italic/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-link/dist/index.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-link/dist/index.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Link: () => (/* binding */ Link),\n/* harmony export */ \"default\": () => (/* binding */ index_default),\n/* harmony export */ isAllowedUri: () => (/* binding */ isAllowedUri),\n/* harmony export */ pasteRegex: () => (/* binding */ pasteRegex)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n/* harmony import */ var linkifyjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! linkifyjs */ \"(app-pages-browser)/./node_modules/linkifyjs/dist/linkify.mjs\");\n/* harmony import */ var _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tiptap/pm/state */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/state/index.js\");\n// src/link.ts\n\n\n\n// src/helpers/autolink.ts\n\n\n\n\n// src/helpers/whitespace.ts\nvar UNICODE_WHITESPACE_PATTERN = \"[\\0- \\xA0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]\";\nvar UNICODE_WHITESPACE_REGEX = new RegExp(UNICODE_WHITESPACE_PATTERN);\nvar UNICODE_WHITESPACE_REGEX_END = new RegExp(`${UNICODE_WHITESPACE_PATTERN}$`);\nvar UNICODE_WHITESPACE_REGEX_GLOBAL = new RegExp(UNICODE_WHITESPACE_PATTERN, \"g\");\n\n// src/helpers/autolink.ts\nfunction isValidLinkStructure(tokens) {\n if (tokens.length === 1) {\n return tokens[0].isLink;\n }\n if (tokens.length === 3 && tokens[1].isLink) {\n return [\"()\", \"[]\"].includes(tokens[0].value + tokens[2].value);\n }\n return false;\n}\nfunction autolink(options) {\n return new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_1__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_1__.PluginKey(\"autolink\"),\n appendTransaction: (transactions, oldState, newState) => {\n const docChanges = transactions.some((transaction) => transaction.docChanged) && !oldState.doc.eq(newState.doc);\n const preventAutolink = transactions.some((transaction) => transaction.getMeta(\"preventAutolink\"));\n if (!docChanges || preventAutolink) {\n return;\n }\n const { tr } = newState;\n const transform = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_2__.combineTransactionSteps)(oldState.doc, [...transactions]);\n const changes = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_2__.getChangedRanges)(transform);\n changes.forEach(({ newRange }) => {\n const nodesInChangedRanges = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_2__.findChildrenInRange)(newState.doc, newRange, (node) => node.isTextblock);\n let textBlock;\n let textBeforeWhitespace;\n if (nodesInChangedRanges.length > 1) {\n textBlock = nodesInChangedRanges[0];\n textBeforeWhitespace = newState.doc.textBetween(\n textBlock.pos,\n textBlock.pos + textBlock.node.nodeSize,\n void 0,\n \" \"\n );\n } else if (nodesInChangedRanges.length) {\n const endText = newState.doc.textBetween(newRange.from, newRange.to, \" \", \" \");\n if (!UNICODE_WHITESPACE_REGEX_END.test(endText)) {\n return;\n }\n textBlock = nodesInChangedRanges[0];\n textBeforeWhitespace = newState.doc.textBetween(textBlock.pos, newRange.to, void 0, \" \");\n }\n if (textBlock && textBeforeWhitespace) {\n const wordsBeforeWhitespace = textBeforeWhitespace.split(UNICODE_WHITESPACE_REGEX).filter(Boolean);\n if (wordsBeforeWhitespace.length <= 0) {\n return false;\n }\n const lastWordBeforeSpace = wordsBeforeWhitespace[wordsBeforeWhitespace.length - 1];\n const lastWordAndBlockOffset = textBlock.pos + textBeforeWhitespace.lastIndexOf(lastWordBeforeSpace);\n if (!lastWordBeforeSpace) {\n return false;\n }\n const linksBeforeSpace = (0,linkifyjs__WEBPACK_IMPORTED_MODULE_0__.tokenize)(lastWordBeforeSpace).map((t) => t.toObject(options.defaultProtocol));\n if (!isValidLinkStructure(linksBeforeSpace)) {\n return false;\n }\n linksBeforeSpace.filter((link) => link.isLink).map((link) => ({\n ...link,\n from: lastWordAndBlockOffset + link.start + 1,\n to: lastWordAndBlockOffset + link.end + 1\n })).filter((link) => {\n if (!newState.schema.marks.code) {\n return true;\n }\n return !newState.doc.rangeHasMark(link.from, link.to, newState.schema.marks.code);\n }).filter((link) => options.validate(link.value)).filter((link) => options.shouldAutoLink(link.value)).forEach((link) => {\n if ((0,_tiptap_core__WEBPACK_IMPORTED_MODULE_2__.getMarksBetween)(link.from, link.to, newState.doc).some((item) => item.mark.type === options.type)) {\n return;\n }\n tr.addMark(\n link.from,\n link.to,\n options.type.create({\n href: link.href\n })\n );\n });\n }\n });\n if (!tr.steps.length) {\n return;\n }\n return tr;\n }\n });\n}\n\n// src/helpers/clickHandler.ts\n\n\nfunction clickHandler(options) {\n return new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_1__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_1__.PluginKey(\"handleClickLink\"),\n props: {\n handleClick: (view, pos, event) => {\n var _a, _b;\n if (event.button !== 0) {\n return false;\n }\n if (!view.editable) {\n return false;\n }\n let link = null;\n if (event.target instanceof HTMLAnchorElement) {\n link = event.target;\n } else {\n const target = event.target;\n if (!target) {\n return false;\n }\n const root = options.editor.view.dom;\n link = target.closest(\"a\");\n if (link && !root.contains(link)) {\n link = null;\n }\n }\n if (!link) {\n return false;\n }\n let handled = false;\n if (options.enableClickSelection) {\n const commandResult = options.editor.commands.extendMarkRange(options.type.name);\n handled = commandResult;\n }\n if (options.openOnClick) {\n const attrs = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_2__.getAttributes)(view.state, options.type.name);\n const href = (_a = link.href) != null ? _a : attrs.href;\n const target = (_b = link.target) != null ? _b : attrs.target;\n if (href) {\n window.open(href, target);\n handled = true;\n }\n }\n return handled;\n }\n }\n });\n}\n\n// src/helpers/pasteHandler.ts\n\n\nfunction pasteHandler(options) {\n return new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_1__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_1__.PluginKey(\"handlePasteLink\"),\n props: {\n handlePaste: (view, _event, slice) => {\n const { shouldAutoLink } = options;\n const { state } = view;\n const { selection } = state;\n const { empty } = selection;\n if (empty) {\n return false;\n }\n let textContent = \"\";\n slice.content.forEach((node) => {\n textContent += node.textContent;\n });\n const link = (0,linkifyjs__WEBPACK_IMPORTED_MODULE_0__.find)(textContent, { defaultProtocol: options.defaultProtocol }).find(\n (item) => item.isLink && item.value === textContent\n );\n if (!textContent || !link || shouldAutoLink !== void 0 && !shouldAutoLink(link.value)) {\n return false;\n }\n return options.editor.commands.setMark(options.type, {\n href: link.href\n });\n }\n }\n });\n}\n\n// src/link.ts\nvar pasteRegex = /https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z]{2,}\\b(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)/gi;\nfunction isAllowedUri(uri, protocols) {\n const allowedProtocols = [\"http\", \"https\", \"ftp\", \"ftps\", \"mailto\", \"tel\", \"callto\", \"sms\", \"cid\", \"xmpp\"];\n if (protocols) {\n protocols.forEach((protocol) => {\n const nextProtocol = typeof protocol === \"string\" ? protocol : protocol.scheme;\n if (nextProtocol) {\n allowedProtocols.push(nextProtocol);\n }\n });\n }\n return !uri || uri.replace(UNICODE_WHITESPACE_REGEX_GLOBAL, \"\").match(\n new RegExp(\n // eslint-disable-next-line no-useless-escape\n `^(?:(?:${allowedProtocols.join(\"|\")}):|[^a-z]|[a-z0-9+.-]+(?:[^a-z+.-:]|$))`,\n \"i\"\n )\n );\n}\nvar Link = _tiptap_core__WEBPACK_IMPORTED_MODULE_2__.Mark.create({\n name: \"link\",\n priority: 1e3,\n keepOnSplit: false,\n exitable: true,\n onCreate() {\n if (this.options.validate && !this.options.shouldAutoLink) {\n this.options.shouldAutoLink = this.options.validate;\n console.warn(\"The `validate` option is deprecated. Rename to the `shouldAutoLink` option instead.\");\n }\n this.options.protocols.forEach((protocol) => {\n if (typeof protocol === \"string\") {\n (0,linkifyjs__WEBPACK_IMPORTED_MODULE_0__.registerCustomProtocol)(protocol);\n return;\n }\n (0,linkifyjs__WEBPACK_IMPORTED_MODULE_0__.registerCustomProtocol)(protocol.scheme, protocol.optionalSlashes);\n });\n },\n onDestroy() {\n (0,linkifyjs__WEBPACK_IMPORTED_MODULE_0__.reset)();\n },\n inclusive() {\n return this.options.autolink;\n },\n addOptions() {\n return {\n openOnClick: true,\n enableClickSelection: false,\n linkOnPaste: true,\n autolink: true,\n protocols: [],\n defaultProtocol: \"http\",\n HTMLAttributes: {\n target: \"_blank\",\n rel: \"noopener noreferrer nofollow\",\n class: null\n },\n isAllowedUri: (url, ctx) => !!isAllowedUri(url, ctx.protocols),\n validate: (url) => !!url,\n shouldAutoLink: (url) => {\n const hasProtocol = /^[a-z][a-z0-9+.-]*:\\/\\//i.test(url);\n const hasMaybeProtocol = /^[a-z][a-z0-9+.-]*:/i.test(url);\n if (hasProtocol || hasMaybeProtocol && !url.includes(\"@\")) {\n return true;\n }\n const urlWithoutUserinfo = url.includes(\"@\") ? url.split(\"@\").pop() : url;\n const hostname = urlWithoutUserinfo.split(/[/?#:]/)[0];\n if (/^\\d{1,3}(\\.\\d{1,3}){3}$/.test(hostname)) {\n return false;\n }\n if (!/\\./.test(hostname)) {\n return false;\n }\n return true;\n }\n };\n },\n addAttributes() {\n return {\n href: {\n default: null,\n parseHTML(element) {\n return element.getAttribute(\"href\");\n }\n },\n target: {\n default: this.options.HTMLAttributes.target\n },\n rel: {\n default: this.options.HTMLAttributes.rel\n },\n class: {\n default: this.options.HTMLAttributes.class\n },\n title: {\n default: null\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: \"a[href]\",\n getAttrs: (dom) => {\n const href = dom.getAttribute(\"href\");\n if (!href || !this.options.isAllowedUri(href, {\n defaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n protocols: this.options.protocols,\n defaultProtocol: this.options.defaultProtocol\n })) {\n return false;\n }\n return null;\n }\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n if (!this.options.isAllowedUri(HTMLAttributes.href, {\n defaultValidate: (href) => !!isAllowedUri(href, this.options.protocols),\n protocols: this.options.protocols,\n defaultProtocol: this.options.defaultProtocol\n })) {\n return [\"a\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_2__.mergeAttributes)(this.options.HTMLAttributes, { ...HTMLAttributes, href: \"\" }), 0];\n }\n return [\"a\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_2__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"link\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"link\", helpers.parseInline(token.tokens || []), {\n href: token.href,\n title: token.title || null\n });\n },\n renderMarkdown: (node, h) => {\n var _a, _b, _c, _d;\n const href = (_b = (_a = node.attrs) == null ? void 0 : _a.href) != null ? _b : \"\";\n const title = (_d = (_c = node.attrs) == null ? void 0 : _c.title) != null ? _d : \"\";\n const text = h.renderChildren(node);\n return title ? `[${text}](${href} \"${title}\")` : `[${text}](${href})`;\n },\n addCommands() {\n return {\n setLink: (attributes) => ({ chain }) => {\n const { href } = attributes;\n if (!this.options.isAllowedUri(href, {\n defaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n protocols: this.options.protocols,\n defaultProtocol: this.options.defaultProtocol\n })) {\n return false;\n }\n return chain().setMark(this.name, attributes).setMeta(\"preventAutolink\", true).run();\n },\n toggleLink: (attributes) => ({ chain }) => {\n const { href } = attributes || {};\n if (href && !this.options.isAllowedUri(href, {\n defaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n protocols: this.options.protocols,\n defaultProtocol: this.options.defaultProtocol\n })) {\n return false;\n }\n return chain().toggleMark(this.name, attributes, { extendEmptyMarkRange: true }).setMeta(\"preventAutolink\", true).run();\n },\n unsetLink: () => ({ chain }) => {\n return chain().unsetMark(this.name, { extendEmptyMarkRange: true }).setMeta(\"preventAutolink\", true).run();\n }\n };\n },\n addPasteRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_2__.markPasteRule)({\n find: (text) => {\n const foundLinks = [];\n if (text) {\n const { protocols, defaultProtocol } = this.options;\n const links = (0,linkifyjs__WEBPACK_IMPORTED_MODULE_0__.find)(text).filter(\n (item) => item.isLink && this.options.isAllowedUri(item.value, {\n defaultValidate: (href) => !!isAllowedUri(href, protocols),\n protocols,\n defaultProtocol\n })\n );\n if (links.length) {\n links.forEach((link) => {\n if (!this.options.shouldAutoLink(link.value)) {\n return;\n }\n foundLinks.push({\n text: link.value,\n data: {\n href: link.href\n },\n index: link.start\n });\n });\n }\n }\n return foundLinks;\n },\n type: this.type,\n getAttributes: (match) => {\n var _a;\n return {\n href: (_a = match.data) == null ? void 0 : _a.href\n };\n }\n })\n ];\n },\n addProseMirrorPlugins() {\n const plugins = [];\n const { protocols, defaultProtocol } = this.options;\n if (this.options.autolink) {\n plugins.push(\n autolink({\n type: this.type,\n defaultProtocol: this.options.defaultProtocol,\n validate: (url) => this.options.isAllowedUri(url, {\n defaultValidate: (href) => !!isAllowedUri(href, protocols),\n protocols,\n defaultProtocol\n }),\n shouldAutoLink: this.options.shouldAutoLink\n })\n );\n }\n plugins.push(\n clickHandler({\n type: this.type,\n editor: this.editor,\n openOnClick: this.options.openOnClick === \"whenNotEditable\" ? true : this.options.openOnClick,\n enableClickSelection: this.options.enableClickSelection\n })\n );\n if (this.options.linkOnPaste) {\n plugins.push(\n pasteHandler({\n editor: this.editor,\n defaultProtocol: this.options.defaultProtocol,\n type: this.type,\n shouldAutoLink: this.options.shouldAutoLink\n })\n );\n }\n return plugins;\n }\n});\n\n// src/index.ts\nvar index_default = Link;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1saW5rL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ29FO0FBQ0s7O0FBRXpFO0FBQytHO0FBQzFEO0FBQ2hCOztBQUVyQztBQUNBO0FBQ0E7QUFDQSxpREFBaUQsMkJBQTJCO0FBQzVFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9EQUFNO0FBQ25CLGFBQWEsdURBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxLQUFLO0FBQ25CLHdCQUF3QixxRUFBdUI7QUFDL0Msc0JBQXNCLDhEQUFnQjtBQUN0Qyx5QkFBeUIsVUFBVTtBQUNuQyxxQ0FBcUMsaUVBQW1CO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsbURBQVE7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsZ0JBQWdCLDZEQUFlO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDNkM7QUFDaUM7QUFDOUU7QUFDQSxhQUFhLG9EQUFPO0FBQ3BCLGFBQWEsdURBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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bkI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDZCQUE2QjtBQUNqRCwwQkFBMEIsK0NBQUs7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQSxpQkFBaUI7QUFDakIsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsWUFBWSw2QkFBNkI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQU1FO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXGV4dGVuc2lvbi1saW5rXFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGluay50c1xuaW1wb3J0IHsgTWFyaywgbWFya1Bhc3RlUnVsZSwgbWVyZ2VBdHRyaWJ1dGVzIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgZmluZCBhcyBmaW5kMiwgcmVnaXN0ZXJDdXN0b21Qcm90b2NvbCwgcmVzZXQgfSBmcm9tIFwibGlua2lmeWpzXCI7XG5cbi8vIHNyYy9oZWxwZXJzL2F1dG9saW5rLnRzXG5pbXBvcnQgeyBjb21iaW5lVHJhbnNhY3Rpb25TdGVwcywgZmluZENoaWxkcmVuSW5SYW5nZSwgZ2V0Q2hhbmdlZFJhbmdlcywgZ2V0TWFya3NCZXR3ZWVuIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgUGx1Z2luLCBQbHVnaW5LZXkgfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xuaW1wb3J0IHsgdG9rZW5pemUgfSBmcm9tIFwibGlua2lmeWpzXCI7XG5cbi8vIHNyYy9oZWxwZXJzL3doaXRlc3BhY2UudHNcbnZhciBVTklDT0RFX1dISVRFU1BBQ0VfUEFUVEVSTiA9IFwiW1xcMC0gXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDAtXFx1MjAyOVxcdTIwNUZcXHUzMDAwXVwiO1xudmFyIFVOSUNPREVfV0hJVEVTUEFDRV9SRUdFWCA9IG5ldyBSZWdFeHAoVU5JQ09ERV9XSElURVNQQUNFX1BBVFRFUk4pO1xudmFyIFVOSUNPREVfV0hJVEVTUEFDRV9SRUdFWF9FTkQgPSBuZXcgUmVnRXhwKGAke1VOSUNPREVfV0hJVEVTUEFDRV9QQVRURVJOfSRgKTtcbnZhciBVTklDT0RFX1dISVRFU1BBQ0VfUkVHRVhfR0xPQkFMID0gbmV3IFJlZ0V4cChVTklDT0RFX1dISVRFU1BBQ0VfUEFUVEVSTiwgXCJnXCIpO1xuXG4vLyBzcmMvaGVscGVycy9hdXRvbGluay50c1xuZnVuY3Rpb24gaXNWYWxpZExpbmtTdHJ1Y3R1cmUodG9rZW5zKSB7XG4gIGlmICh0b2tlbnMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHRva2Vuc1swXS5pc0xpbms7XG4gIH1cbiAgaWYgKHRva2Vucy5sZW5ndGggPT09IDMgJiYgdG9rZW5zWzFdLmlzTGluaykge1xuICAgIHJldHVybiBbXCIoKVwiLCBcIltdXCJdLmluY2x1ZGVzKHRva2Vuc1swXS52YWx1ZSArIHRva2Vuc1syXS52YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gYXV0b2xpbmsob3B0aW9ucykge1xuICByZXR1cm4gbmV3IFBsdWdpbih7XG4gICAga2V5OiBuZXcgUGx1Z2luS2V5KFwiYXV0b2xpbmtcIiksXG4gICAgYXBwZW5kVHJhbnNhY3Rpb246ICh0cmFuc2FjdGlvbnMsIG9sZFN0YXRlLCBuZXdTdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgZG9jQ2hhbmdlcyA9IHRyYW5zYWN0aW9ucy5zb21lKCh0cmFuc2FjdGlvbikgPT4gdHJhbnNhY3Rpb24uZG9jQ2hhbmdlZCkgJiYgIW9sZFN0YXRlLmRvYy5lcShuZXdTdGF0ZS5kb2MpO1xuICAgICAgY29uc3QgcHJldmVudEF1dG9saW5rID0gdHJhbnNhY3Rpb25zLnNvbWUoKHRyYW5zYWN0aW9uKSA9PiB0cmFuc2FjdGlvbi5nZXRNZXRhKFwicHJldmVudEF1dG9saW5rXCIpKTtcbiAgICAgIGlmICghZG9jQ2hhbmdlcyB8fCBwcmV2ZW50QXV0b2xpbmspIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgeyB0ciB9ID0gbmV3U3RhdGU7XG4gICAgICBjb25zdCB0cmFuc2Zvcm0gPSBjb21iaW5lVHJhbnNhY3Rpb25TdGVwcyhvbGRTdGF0ZS5kb2MsIFsuLi50cmFuc2FjdGlvbnNdKTtcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSBnZXRDaGFuZ2VkUmFuZ2VzKHRyYW5zZm9ybSk7XG4gICAgICBjaGFuZ2VzLmZvckVhY2goKHsgbmV3UmFuZ2UgfSkgPT4ge1xuICAgICAgICBjb25zdCBub2Rlc0luQ2hhbmdlZFJhbmdlcyA9IGZpbmRDaGlsZHJlbkluUmFuZ2UobmV3U3RhdGUuZG9jLCBuZXdSYW5nZSwgKG5vZGUpID0+IG5vZGUuaXNUZXh0YmxvY2spO1xuICAgICAgICBsZXQgdGV4dEJsb2NrO1xuICAgICAgICBsZXQgdGV4dEJlZm9yZVdoaXRlc3BhY2U7XG4gICAgICAgIGlmIChub2Rlc0luQ2hhbmdlZFJhbmdlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGV4dEJsb2NrID0gbm9kZXNJbkNoYW5nZWRSYW5nZXNbMF07XG4gICAgICAgICAgdGV4dEJlZm9yZVdoaXRlc3BhY2UgPSBuZXdTdGF0ZS5kb2MudGV4dEJldHdlZW4oXG4gICAgICAgICAgICB0ZXh0QmxvY2sucG9zLFxuICAgICAgICAgICAgdGV4dEJsb2NrLnBvcyArIHRleHRCbG9jay5ub2RlLm5vZGVTaXplLFxuICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgXCIgXCJcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKG5vZGVzSW5DaGFuZ2VkUmFuZ2VzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGVuZFRleHQgPSBuZXdTdGF0ZS5kb2MudGV4dEJldHdlZW4obmV3UmFuZ2UuZnJvbSwgbmV3UmFuZ2UudG8sIFwiIFwiLCBcIiBcIik7XG4gICAgICAgICAgaWYgKCFVTklDT0RFX1dISVRFU1BBQ0VfUkVHRVhfRU5ELnRlc3QoZW5kVGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGV4dEJsb2NrID0gbm9kZXNJbkNoYW5nZWRSYW5nZXNbMF07XG4gICAgICAgICAgdGV4dEJlZm9yZVdoaXRlc3BhY2UgPSBuZXdTdGF0ZS5kb2MudGV4dEJldHdlZW4odGV4dEJsb2NrLnBvcywgbmV3UmFuZ2UudG8sIHZvaWQgMCwgXCIgXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0QmxvY2sgJiYgdGV4dEJlZm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgICBjb25zdCB3b3Jkc0JlZm9yZVdoaXRlc3BhY2UgPSB0ZXh0QmVmb3JlV2hpdGVzcGFjZS5zcGxpdChVTklDT0RFX1dISVRFU1BBQ0VfUkVHRVgpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICBpZiAod29yZHNCZWZvcmVXaGl0ZXNwYWNlLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGxhc3RXb3JkQmVmb3JlU3BhY2UgPSB3b3Jkc0JlZm9yZVdoaXRlc3BhY2Vbd29yZHNCZWZvcmVXaGl0ZXNwYWNlLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGNvbnN0IGxhc3RXb3JkQW5kQmxvY2tPZmZzZXQgPSB0ZXh0QmxvY2sucG9zICsgdGV4dEJlZm9yZVdoaXRlc3BhY2UubGFzdEluZGV4T2YobGFzdFdvcmRCZWZvcmVTcGFjZSk7XG4gICAgICAgICAgaWYgKCFsYXN0V29yZEJlZm9yZVNwYWNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGxpbmtzQmVmb3JlU3BhY2UgPSB0b2tlbml6ZShsYXN0V29yZEJlZm9yZVNwYWNlKS5tYXAoKHQpID0+IHQudG9PYmplY3Qob3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wpKTtcbiAgICAgICAgICBpZiAoIWlzVmFsaWRMaW5rU3RydWN0dXJlKGxpbmtzQmVmb3JlU3BhY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxpbmtzQmVmb3JlU3BhY2UuZmlsdGVyKChsaW5rKSA9PiBsaW5rLmlzTGluaykubWFwKChsaW5rKSA9PiAoe1xuICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgIGZyb206IGxhc3RXb3JkQW5kQmxvY2tPZmZzZXQgKyBsaW5rLnN0YXJ0ICsgMSxcbiAgICAgICAgICAgIHRvOiBsYXN0V29yZEFuZEJsb2NrT2Zmc2V0ICsgbGluay5lbmQgKyAxXG4gICAgICAgICAgfSkpLmZpbHRlcigobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKCFuZXdTdGF0ZS5zY2hlbWEubWFya3MuY29kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhbmV3U3RhdGUuZG9jLnJhbmdlSGFzTWFyayhsaW5rLmZyb20sIGxpbmsudG8sIG5ld1N0YXRlLnNjaGVtYS5tYXJrcy5jb2RlKTtcbiAgICAgICAgICB9KS5maWx0ZXIoKGxpbmspID0+IG9wdGlvbnMudmFsaWRhdGUobGluay52YWx1ZSkpLmZpbHRlcigobGluaykgPT4gb3B0aW9ucy5zaG91bGRBdXRvTGluayhsaW5rLnZhbHVlKSkuZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKGdldE1hcmtzQmV0d2VlbihsaW5rLmZyb20sIGxpbmsudG8sIG5ld1N0YXRlLmRvYykuc29tZSgoaXRlbSkgPT4gaXRlbS5tYXJrLnR5cGUgPT09IG9wdGlvbnMudHlwZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHIuYWRkTWFyayhcbiAgICAgICAgICAgICAgbGluay5mcm9tLFxuICAgICAgICAgICAgICBsaW5rLnRvLFxuICAgICAgICAgICAgICBvcHRpb25zLnR5cGUuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICBocmVmOiBsaW5rLmhyZWZcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKCF0ci5zdGVwcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRyO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIHNyYy9oZWxwZXJzL2NsaWNrSGFuZGxlci50c1xuaW1wb3J0IHsgZ2V0QXR0cmlidXRlcyB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IFBsdWdpbiBhcyBQbHVnaW4yLCBQbHVnaW5LZXkgYXMgUGx1Z2luS2V5MiB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG5mdW5jdGlvbiBjbGlja0hhbmRsZXIob3B0aW9ucykge1xuICByZXR1cm4gbmV3IFBsdWdpbjIoe1xuICAgIGtleTogbmV3IFBsdWdpbktleTIoXCJoYW5kbGVDbGlja0xpbmtcIiksXG4gICAgcHJvcHM6IHtcbiAgICAgIGhhbmRsZUNsaWNrOiAodmlldywgcG9zLCBldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmlldy5lZGl0YWJsZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGluayA9IG51bGw7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCkge1xuICAgICAgICAgIGxpbmsgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJvb3QgPSBvcHRpb25zLmVkaXRvci52aWV3LmRvbTtcbiAgICAgICAgICBsaW5rID0gdGFyZ2V0LmNsb3Nlc3QoXCJhXCIpO1xuICAgICAgICAgIGlmIChsaW5rICYmICFyb290LmNvbnRhaW5zKGxpbmspKSB7XG4gICAgICAgICAgICBsaW5rID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFsaW5rKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBoYW5kbGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChvcHRpb25zLmVuYWJsZUNsaWNrU2VsZWN0aW9uKSB7XG4gICAgICAgICAgY29uc3QgY29tbWFuZFJlc3VsdCA9IG9wdGlvbnMuZWRpdG9yLmNvbW1hbmRzLmV4dGVuZE1hcmtSYW5nZShvcHRpb25zLnR5cGUubmFtZSk7XG4gICAgICAgICAgaGFuZGxlZCA9IGNvbW1hbmRSZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMub3Blbk9uQ2xpY2spIHtcbiAgICAgICAgICBjb25zdCBhdHRycyA9IGdldEF0dHJpYnV0ZXModmlldy5zdGF0ZSwgb3B0aW9ucy50eXBlLm5hbWUpO1xuICAgICAgICAgIGNvbnN0IGhyZWYgPSAoX2EgPSBsaW5rLmhyZWYpICE9IG51bGwgPyBfYSA6IGF0dHJzLmhyZWY7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gKF9iID0gbGluay50YXJnZXQpICE9IG51bGwgPyBfYiA6IGF0dHJzLnRhcmdldDtcbiAgICAgICAgICBpZiAoaHJlZikge1xuICAgICAgICAgICAgd2luZG93Lm9wZW4oaHJlZiwgdGFyZ2V0KTtcbiAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlZDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vLyBzcmMvaGVscGVycy9wYXN0ZUhhbmRsZXIudHNcbmltcG9ydCB7IFBsdWdpbiBhcyBQbHVnaW4zLCBQbHVnaW5LZXkgYXMgUGx1Z2luS2V5MyB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG5pbXBvcnQgeyBmaW5kIH0gZnJvbSBcImxpbmtpZnlqc1wiO1xuZnVuY3Rpb24gcGFzdGVIYW5kbGVyKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBQbHVnaW4zKHtcbiAgICBrZXk6IG5ldyBQbHVnaW5LZXkzKFwiaGFuZGxlUGFzdGVMaW5rXCIpLFxuICAgIHByb3BzOiB7XG4gICAgICBoYW5kbGVQYXN0ZTogKHZpZXcsIF9ldmVudCwgc2xpY2UpID0+IHtcbiAgICAgICAgY29uc3QgeyBzaG91bGRBdXRvTGluayB9ID0gb3B0aW9ucztcbiAgICAgICAgY29uc3QgeyBzdGF0ZSB9ID0gdmlldztcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IHN0YXRlO1xuICAgICAgICBjb25zdCB7IGVtcHR5IH0gPSBzZWxlY3Rpb247XG4gICAgICAgIGlmIChlbXB0eSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdGV4dENvbnRlbnQgPSBcIlwiO1xuICAgICAgICBzbGljZS5jb250ZW50LmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICB0ZXh0Q29udGVudCArPSBub2RlLnRleHRDb250ZW50O1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbGluayA9IGZpbmQodGV4dENvbnRlbnQsIHsgZGVmYXVsdFByb3RvY29sOiBvcHRpb25zLmRlZmF1bHRQcm90b2NvbCB9KS5maW5kKFxuICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmlzTGluayAmJiBpdGVtLnZhbHVlID09PSB0ZXh0Q29udGVudFxuICAgICAgICApO1xuICAgICAgICBpZiAoIXRleHRDb250ZW50IHx8ICFsaW5rIHx8IHNob3VsZEF1dG9MaW5rICE9PSB2b2lkIDAgJiYgIXNob3VsZEF1dG9MaW5rKGxpbmsudmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zLmVkaXRvci5jb21tYW5kcy5zZXRNYXJrKG9wdGlvbnMudHlwZSwge1xuICAgICAgICAgIGhyZWY6IGxpbmsuaHJlZlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vLyBzcmMvbGluay50c1xudmFyIHBhc3RlUmVnZXggPSAvaHR0cHM/OlxcL1xcLyg/Ond3d1xcLik/Wy1hLXpBLVowLTlAOiUuXyt+Iz1dezEsMjU2fVxcLlthLXpBLVpdezIsfVxcYig/OlstYS16QS1aMC05QDolLl8rfiM9PyEmL10qKSg/OlstYS16QS1aMC05QDolLl8rfiM9PyEmL10qKS9naTtcbmZ1bmN0aW9uIGlzQWxsb3dlZFVyaSh1cmksIHByb3RvY29scykge1xuICBjb25zdCBhbGxvd2VkUHJvdG9jb2xzID0gW1wiaHR0cFwiLCBcImh0dHBzXCIsIFwiZnRwXCIsIFwiZnRwc1wiLCBcIm1haWx0b1wiLCBcInRlbFwiLCBcImNhbGx0b1wiLCBcInNtc1wiLCBcImNpZFwiLCBcInhtcHBcIl07XG4gIGlmIChwcm90b2NvbHMpIHtcbiAgICBwcm90b2NvbHMuZm9yRWFjaCgocHJvdG9jb2wpID0+IHtcbiAgICAgIGNvbnN0IG5leHRQcm90b2NvbCA9IHR5cGVvZiBwcm90b2NvbCA9PT0gXCJzdHJpbmdcIiA/IHByb3RvY29sIDogcHJvdG9jb2wuc2NoZW1lO1xuICAgICAgaWYgKG5leHRQcm90b2NvbCkge1xuICAgICAgICBhbGxvd2VkUHJvdG9jb2xzLnB1c2gobmV4dFByb3RvY29sKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gIXVyaSB8fCB1cmkucmVwbGFjZShVTklDT0RFX1dISVRFU1BBQ0VfUkVHRVhfR0xPQkFMLCBcIlwiKS5tYXRjaChcbiAgICBuZXcgUmVnRXhwKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtZXNjYXBlXG4gICAgICBgXig/Oig/OiR7YWxsb3dlZFByb3RvY29scy5qb2luKFwifFwiKX0pOnxbXmEtel18W2EtejAtOSsuLV0rKD86W15hLXorLi06XXwkKSlgLFxuICAgICAgXCJpXCJcbiAgICApXG4gICk7XG59XG52YXIgTGluayA9IE1hcmsuY3JlYXRlKHtcbiAgbmFtZTogXCJsaW5rXCIsXG4gIHByaW9yaXR5OiAxZTMsXG4gIGtlZXBPblNwbGl0OiBmYWxzZSxcbiAgZXhpdGFibGU6IHRydWUsXG4gIG9uQ3JlYXRlKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMudmFsaWRhdGUgJiYgIXRoaXMub3B0aW9ucy5zaG91bGRBdXRvTGluaykge1xuICAgICAgdGhpcy5vcHRpb25zLnNob3VsZEF1dG9MaW5rID0gdGhpcy5vcHRpb25zLnZhbGlkYXRlO1xuICAgICAgY29uc29sZS53YXJuKFwiVGhlIGB2YWxpZGF0ZWAgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIFJlbmFtZSB0byB0aGUgYHNob3VsZEF1dG9MaW5rYCBvcHRpb24gaW5zdGVhZC5cIik7XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucy5wcm90b2NvbHMuZm9yRWFjaCgocHJvdG9jb2wpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcHJvdG9jb2wgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmVnaXN0ZXJDdXN0b21Qcm90b2NvbChwcm90b2NvbCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlZ2lzdGVyQ3VzdG9tUHJvdG9jb2wocHJvdG9jb2wuc2NoZW1lLCBwcm90b2NvbC5vcHRpb25hbFNsYXNoZXMpO1xuICAgIH0pO1xuICB9LFxuICBvbkRlc3Ryb3koKSB7XG4gICAgcmVzZXQoKTtcbiAgfSxcbiAgaW5jbHVzaXZlKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXV0b2xpbms7XG4gIH0sXG4gIGFkZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9wZW5PbkNsaWNrOiB0cnVlLFxuICAgICAgZW5hYmxlQ2xpY2tTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgbGlua09uUGFzdGU6IHRydWUsXG4gICAgICBhdXRvbGluazogdHJ1ZSxcbiAgICAgIHByb3RvY29sczogW10sXG4gICAgICBkZWZhdWx0UHJvdG9jb2w6IFwiaHR0cFwiLFxuICAgICAgSFRNTEF0dHJpYnV0ZXM6IHtcbiAgICAgICAgdGFyZ2V0OiBcIl9ibGFua1wiLFxuICAgICAgICByZWw6IFwibm9vcGVuZXIgbm9yZWZlcnJlciBub2ZvbGxvd1wiLFxuICAgICAgICBjbGFzczogbnVsbFxuICAgICAgfSxcbiAgICAgIGlzQWxsb3dlZFVyaTogKHVybCwgY3R4KSA9PiAhIWlzQWxsb3dlZFVyaSh1cmwsIGN0eC5wcm90b2NvbHMpLFxuICAgICAgdmFsaWRhdGU6ICh1cmwpID0+ICEhdXJsLFxuICAgICAgc2hvdWxkQXV0b0xpbms6ICh1cmwpID0+IHtcbiAgICAgICAgY29uc3QgaGFzUHJvdG9jb2wgPSAvXlthLXpdW2EtejAtOSsuLV0qOlxcL1xcLy9pLnRlc3QodXJsKTtcbiAgICAgICAgY29uc3QgaGFzTWF5YmVQcm90b2NvbCA9IC9eW2Etel1bYS16MC05Ky4tXSo6L2kudGVzdCh1cmwpO1xuICAgICAgICBpZiAoaGFzUHJvdG9jb2wgfHwgaGFzTWF5YmVQcm90b2NvbCAmJiAhdXJsLmluY2x1ZGVzKFwiQFwiKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVybFdpdGhvdXRVc2VyaW5mbyA9IHVybC5pbmNsdWRlcyhcIkBcIikgPyB1cmwuc3BsaXQoXCJAXCIpLnBvcCgpIDogdXJsO1xuICAgICAgICBjb25zdCBob3N0bmFtZSA9IHVybFdpdGhvdXRVc2VyaW5mby5zcGxpdCgvWy8/IzpdLylbMF07XG4gICAgICAgIGlmICgvXlxcZHsxLDN9KFxcLlxcZHsxLDN9KXszfSQvLnRlc3QoaG9zdG5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghL1xcLi8udGVzdChob3N0bmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgYWRkQXR0cmlidXRlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaHJlZjoge1xuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICBwYXJzZUhUTUwoZWxlbWVudCkge1xuICAgICAgICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgZGVmYXVsdDogdGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLnRhcmdldFxuICAgICAgfSxcbiAgICAgIHJlbDoge1xuICAgICAgICBkZWZhdWx0OiB0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMucmVsXG4gICAgICB9LFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgZGVmYXVsdDogdGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLmNsYXNzXG4gICAgICB9LFxuICAgICAgdGl0bGU6IHtcbiAgICAgICAgZGVmYXVsdDogbnVsbFxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIHBhcnNlSFRNTCgpIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0YWc6IFwiYVtocmVmXVwiLFxuICAgICAgICBnZXRBdHRyczogKGRvbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGhyZWYgPSBkb20uZ2V0QXR0cmlidXRlKFwiaHJlZlwiKTtcbiAgICAgICAgICBpZiAoIWhyZWYgfHwgIXRoaXMub3B0aW9ucy5pc0FsbG93ZWRVcmkoaHJlZiwge1xuICAgICAgICAgICAgZGVmYXVsdFZhbGlkYXRlOiAodXJsKSA9PiAhIWlzQWxsb3dlZFVyaSh1cmwsIHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLFxuICAgICAgICAgICAgcHJvdG9jb2xzOiB0aGlzLm9wdGlvbnMucHJvdG9jb2xzLFxuICAgICAgICAgICAgZGVmYXVsdFByb3RvY29sOiB0aGlzLm9wdGlvbnMuZGVmYXVsdFByb3RvY29sXG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdO1xuICB9LFxuICByZW5kZXJIVE1MKHsgSFRNTEF0dHJpYnV0ZXMgfSkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShIVE1MQXR0cmlidXRlcy5ocmVmLCB7XG4gICAgICBkZWZhdWx0VmFsaWRhdGU6IChocmVmKSA9PiAhIWlzQWxsb3dlZFVyaShocmVmLCB0aGlzLm9wdGlvbnMucHJvdG9jb2xzKSxcbiAgICAgIHByb3RvY29sczogdGhpcy5vcHRpb25zLnByb3RvY29scyxcbiAgICAgIGRlZmF1bHRQcm90b2NvbDogdGhpcy5vcHRpb25zLmRlZmF1bHRQcm90b2NvbFxuICAgIH0pKSB7XG4gICAgICByZXR1cm4gW1wiYVwiLCBtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLCB7IC4uLkhUTUxBdHRyaWJ1dGVzLCBocmVmOiBcIlwiIH0pLCAwXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcImFcIiwgbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcywgSFRNTEF0dHJpYnV0ZXMpLCAwXTtcbiAgfSxcbiAgbWFya2Rvd25Ub2tlbk5hbWU6IFwibGlua1wiLFxuICBwYXJzZU1hcmtkb3duOiAodG9rZW4sIGhlbHBlcnMpID0+IHtcbiAgICByZXR1cm4gaGVscGVycy5hcHBseU1hcmsoXCJsaW5rXCIsIGhlbHBlcnMucGFyc2VJbmxpbmUodG9rZW4udG9rZW5zIHx8IFtdKSwge1xuICAgICAgaHJlZjogdG9rZW4uaHJlZixcbiAgICAgIHRpdGxlOiB0b2tlbi50aXRsZSB8fCBudWxsXG4gICAgfSk7XG4gIH0sXG4gIHJlbmRlck1hcmtkb3duOiAobm9kZSwgaCkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICBjb25zdCBocmVmID0gKF9iID0gKF9hID0gbm9kZS5hdHRycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmhyZWYpICE9IG51bGwgPyBfYiA6IFwiXCI7XG4gICAgY29uc3QgdGl0bGUgPSAoX2QgPSAoX2MgPSBub2RlLmF0dHJzKSA9PSBudWxsID8gdm9pZCAwIDogX2MudGl0bGUpICE9IG51bGwgPyBfZCA6IFwiXCI7XG4gICAgY29uc3QgdGV4dCA9IGgucmVuZGVyQ2hpbGRyZW4obm9kZSk7XG4gICAgcmV0dXJuIHRpdGxlID8gYFske3RleHR9XSgke2hyZWZ9IFwiJHt0aXRsZX1cIilgIDogYFske3RleHR9XSgke2hyZWZ9KWA7XG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRMaW5rOiAoYXR0cmlidXRlcykgPT4gKHsgY2hhaW4gfSkgPT4ge1xuICAgICAgICBjb25zdCB7IGhyZWYgfSA9IGF0dHJpYnV0ZXM7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShocmVmLCB7XG4gICAgICAgICAgZGVmYXVsdFZhbGlkYXRlOiAodXJsKSA9PiAhIWlzQWxsb3dlZFVyaSh1cmwsIHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLFxuICAgICAgICAgIHByb3RvY29sczogdGhpcy5vcHRpb25zLnByb3RvY29scyxcbiAgICAgICAgICBkZWZhdWx0UHJvdG9jb2w6IHRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2xcbiAgICAgICAgfSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYWluKCkuc2V0TWFyayh0aGlzLm5hbWUsIGF0dHJpYnV0ZXMpLnNldE1ldGEoXCJwcmV2ZW50QXV0b2xpbmtcIiwgdHJ1ZSkucnVuKCk7XG4gICAgICB9LFxuICAgICAgdG9nZ2xlTGluazogKGF0dHJpYnV0ZXMpID0+ICh7IGNoYWluIH0pID0+IHtcbiAgICAgICAgY29uc3QgeyBocmVmIH0gPSBhdHRyaWJ1dGVzIHx8IHt9O1xuICAgICAgICBpZiAoaHJlZiAmJiAhdGhpcy5vcHRpb25zLmlzQWxsb3dlZFVyaShocmVmLCB7XG4gICAgICAgICAgZGVmYXVsdFZhbGlkYXRlOiAodXJsKSA9PiAhIWlzQWxsb3dlZFVyaSh1cmwsIHRoaXMub3B0aW9ucy5wcm90b2NvbHMpLFxuICAgICAgICAgIHByb3RvY29sczogdGhpcy5vcHRpb25zLnByb3RvY29scyxcbiAgICAgICAgICBkZWZhdWx0UHJvdG9jb2w6IHRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2xcbiAgICAgICAgfSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYWluKCkudG9nZ2xlTWFyayh0aGlzLm5hbWUsIGF0dHJpYnV0ZXMsIHsgZXh0ZW5kRW1wdHlNYXJrUmFuZ2U6IHRydWUgfSkuc2V0TWV0YShcInByZXZlbnRBdXRvbGlua1wiLCB0cnVlKS5ydW4oKTtcbiAgICAgIH0sXG4gICAgICB1bnNldExpbms6ICgpID0+ICh7IGNoYWluIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNoYWluKCkudW5zZXRNYXJrKHRoaXMubmFtZSwgeyBleHRlbmRFbXB0eU1hcmtSYW5nZTogdHJ1ZSB9KS5zZXRNZXRhKFwicHJldmVudEF1dG9saW5rXCIsIHRydWUpLnJ1bigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGFkZFBhc3RlUnVsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG1hcmtQYXN0ZVJ1bGUoe1xuICAgICAgICBmaW5kOiAodGV4dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZvdW5kTGlua3MgPSBbXTtcbiAgICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgY29uc3QgeyBwcm90b2NvbHMsIGRlZmF1bHRQcm90b2NvbCB9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICAgICAgY29uc3QgbGlua3MgPSBmaW5kMih0ZXh0KS5maWx0ZXIoXG4gICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmlzTGluayAmJiB0aGlzLm9wdGlvbnMuaXNBbGxvd2VkVXJpKGl0ZW0udmFsdWUsIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsaWRhdGU6IChocmVmKSA9PiAhIWlzQWxsb3dlZFVyaShocmVmLCBwcm90b2NvbHMpLFxuICAgICAgICAgICAgICAgIHByb3RvY29scyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0UHJvdG9jb2xcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobGlua3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5zaG91bGRBdXRvTGluayhsaW5rLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3VuZExpbmtzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgdGV4dDogbGluay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogbGluay5ocmVmXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaW5kZXg6IGxpbmsuc3RhcnRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmb3VuZExpbmtzO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIGdldEF0dHJpYnV0ZXM6IChtYXRjaCkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaHJlZjogKF9hID0gbWF0Y2guZGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmhyZWZcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIF07XG4gIH0sXG4gIGFkZFByb3NlTWlycm9yUGx1Z2lucygpIHtcbiAgICBjb25zdCBwbHVnaW5zID0gW107XG4gICAgY29uc3QgeyBwcm90b2NvbHMsIGRlZmF1bHRQcm90b2NvbCB9ID0gdGhpcy5vcHRpb25zO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b2xpbmspIHtcbiAgICAgIHBsdWdpbnMucHVzaChcbiAgICAgICAgYXV0b2xpbmsoe1xuICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICBkZWZhdWx0UHJvdG9jb2w6IHRoaXMub3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wsXG4gICAgICAgICAgdmFsaWRhdGU6ICh1cmwpID0+IHRoaXMub3B0aW9ucy5pc0FsbG93ZWRVcmkodXJsLCB7XG4gICAgICAgICAgICBkZWZhdWx0VmFsaWRhdGU6IChocmVmKSA9PiAhIWlzQWxsb3dlZFVyaShocmVmLCBwcm90b2NvbHMpLFxuICAgICAgICAgICAgcHJvdG9jb2xzLFxuICAgICAgICAgICAgZGVmYXVsdFByb3RvY29sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc2hvdWxkQXV0b0xpbms6IHRoaXMub3B0aW9ucy5zaG91bGRBdXRvTGlua1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcGx1Z2lucy5wdXNoKFxuICAgICAgY2xpY2tIYW5kbGVyKHtcbiAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgICBvcGVuT25DbGljazogdGhpcy5vcHRpb25zLm9wZW5PbkNsaWNrID09PSBcIndoZW5Ob3RFZGl0YWJsZVwiID8gdHJ1ZSA6IHRoaXMub3B0aW9ucy5vcGVuT25DbGljayxcbiAgICAgICAgZW5hYmxlQ2xpY2tTZWxlY3Rpb246IHRoaXMub3B0aW9ucy5lbmFibGVDbGlja1NlbGVjdGlvblxuICAgICAgfSlcbiAgICApO1xuICAgIGlmICh0aGlzLm9wdGlvbnMubGlua09uUGFzdGUpIHtcbiAgICAgIHBsdWdpbnMucHVzaChcbiAgICAgICAgcGFzdGVIYW5kbGVyKHtcbiAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgICAgIGRlZmF1bHRQcm90b2NvbDogdGhpcy5vcHRpb25zLmRlZmF1bHRQcm90b2NvbCxcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgc2hvdWxkQXV0b0xpbms6IHRoaXMub3B0aW9ucy5zaG91bGRBdXRvTGlua1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBsdWdpbnM7XG4gIH1cbn0pO1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBpbmRleF9kZWZhdWx0ID0gTGluaztcbmV4cG9ydCB7XG4gIExpbmssXG4gIGluZGV4X2RlZmF1bHQgYXMgZGVmYXVsdCxcbiAgaXNBbGxvd2VkVXJpLFxuICBwYXN0ZVJlZ2V4XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-link/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-list/dist/index.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-list/dist/index.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BulletList: () => (/* binding */ BulletList),\n/* harmony export */ ListItem: () => (/* binding */ ListItem),\n/* harmony export */ ListKeymap: () => (/* binding */ ListKeymap),\n/* harmony export */ ListKit: () => (/* binding */ ListKit),\n/* harmony export */ OrderedList: () => (/* binding */ OrderedList),\n/* harmony export */ TaskItem: () => (/* binding */ TaskItem),\n/* harmony export */ TaskList: () => (/* binding */ TaskList),\n/* harmony export */ bulletListInputRegex: () => (/* binding */ bulletListInputRegex),\n/* harmony export */ inputRegex: () => (/* binding */ inputRegex),\n/* harmony export */ listHelpers: () => (/* binding */ listHelpers_exports),\n/* harmony export */ orderedListInputRegex: () => (/* binding */ orderedListInputRegex)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\nvar __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/bullet-list/bullet-list.ts\n\nvar ListItemName = \"listItem\";\nvar TextStyleName = \"textStyle\";\nvar bulletListInputRegex = /^\\s*([-+*])\\s$/;\nvar BulletList = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"bulletList\",\n addOptions() {\n return {\n itemTypeName: \"listItem\",\n HTMLAttributes: {},\n keepMarks: false,\n keepAttributes: false\n };\n },\n group: \"block list\",\n content() {\n return `${this.options.itemTypeName}+`;\n },\n parseHTML() {\n return [{ tag: \"ul\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"ul\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"list\",\n parseMarkdown: (token, helpers) => {\n if (token.type !== \"list\" || token.ordered) {\n return [];\n }\n return {\n type: \"bulletList\",\n content: token.items ? helpers.parseChildren(token.items) : []\n };\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return h.renderChildren(node.content, \"\\n\");\n },\n markdownOptions: {\n indentsContent: true\n },\n addCommands() {\n return {\n toggleBulletList: () => ({ commands, chain }) => {\n if (this.options.keepAttributes) {\n return chain().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(ListItemName, this.editor.getAttributes(TextStyleName)).run();\n }\n return commands.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-8\": () => this.editor.commands.toggleBulletList()\n };\n },\n addInputRules() {\n let inputRule = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.wrappingInputRule)({\n find: bulletListInputRegex,\n type: this.type\n });\n if (this.options.keepMarks || this.options.keepAttributes) {\n inputRule = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.wrappingInputRule)({\n find: bulletListInputRegex,\n type: this.type,\n keepMarks: this.options.keepMarks,\n keepAttributes: this.options.keepAttributes,\n getAttributes: () => {\n return this.editor.getAttributes(TextStyleName);\n },\n editor: this.editor\n });\n }\n return [inputRule];\n }\n});\n\n// src/item/list-item.ts\n\nvar ListItem = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"listItem\",\n addOptions() {\n return {\n HTMLAttributes: {},\n bulletListTypeName: \"bulletList\",\n orderedListTypeName: \"orderedList\"\n };\n },\n content: \"paragraph block*\",\n defining: true,\n parseHTML() {\n return [\n {\n tag: \"li\"\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"li\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"list_item\",\n parseMarkdown: (token, helpers) => {\n if (token.type !== \"list_item\") {\n return [];\n }\n let content = [];\n if (token.tokens && token.tokens.length > 0) {\n const hasParagraphTokens = token.tokens.some((t) => t.type === \"paragraph\");\n if (hasParagraphTokens) {\n content = helpers.parseChildren(token.tokens);\n } else {\n const firstToken = token.tokens[0];\n if (firstToken && firstToken.type === \"text\" && firstToken.tokens && firstToken.tokens.length > 0) {\n const inlineContent = helpers.parseInline(firstToken.tokens);\n content = [\n {\n type: \"paragraph\",\n content: inlineContent\n }\n ];\n if (token.tokens.length > 1) {\n const remainingTokens = token.tokens.slice(1);\n const additionalContent = helpers.parseChildren(remainingTokens);\n content.push(...additionalContent);\n }\n } else {\n content = helpers.parseChildren(token.tokens);\n }\n }\n }\n if (content.length === 0) {\n content = [\n {\n type: \"paragraph\",\n content: []\n }\n ];\n }\n return {\n type: \"listItem\",\n content\n };\n },\n renderMarkdown: (node, h, ctx) => {\n return (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.renderNestedMarkdownContent)(\n node,\n h,\n (context) => {\n var _a, _b;\n if (context.parentType === \"bulletList\") {\n return \"- \";\n }\n if (context.parentType === \"orderedList\") {\n const start = ((_b = (_a = context.meta) == null ? void 0 : _a.parentAttrs) == null ? void 0 : _b.start) || 1;\n return `${start + context.index}. `;\n }\n return \"- \";\n },\n ctx\n );\n },\n addKeyboardShortcuts() {\n return {\n Enter: () => this.editor.commands.splitListItem(this.name),\n Tab: () => this.editor.commands.sinkListItem(this.name),\n \"Shift-Tab\": () => this.editor.commands.liftListItem(this.name)\n };\n }\n});\n\n// src/keymap/list-keymap.ts\n\n\n// src/keymap/listHelpers/index.ts\nvar listHelpers_exports = {};\n__export(listHelpers_exports, {\n findListItemPos: () => findListItemPos,\n getNextListDepth: () => getNextListDepth,\n handleBackspace: () => handleBackspace,\n handleDelete: () => handleDelete,\n hasListBefore: () => hasListBefore,\n hasListItemAfter: () => hasListItemAfter,\n hasListItemBefore: () => hasListItemBefore,\n listItemHasSubList: () => listItemHasSubList,\n nextListIsDeeper: () => nextListIsDeeper,\n nextListIsHigher: () => nextListIsHigher\n});\n\n// src/keymap/listHelpers/findListItemPos.ts\n\nvar findListItemPos = (typeOrName, state) => {\n const { $from } = state.selection;\n const nodeType = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.getNodeType)(typeOrName, state.schema);\n let currentNode = null;\n let currentDepth = $from.depth;\n let currentPos = $from.pos;\n let targetDepth = null;\n while (currentDepth > 0 && targetDepth === null) {\n currentNode = $from.node(currentDepth);\n if (currentNode.type === nodeType) {\n targetDepth = currentDepth;\n } else {\n currentDepth -= 1;\n currentPos -= 1;\n }\n }\n if (targetDepth === null) {\n return null;\n }\n return { $pos: state.doc.resolve(currentPos), depth: targetDepth };\n};\n\n// src/keymap/listHelpers/getNextListDepth.ts\n\nvar getNextListDepth = (typeOrName, state) => {\n const listItemPos = findListItemPos(typeOrName, state);\n if (!listItemPos) {\n return false;\n }\n const [, depth] = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.getNodeAtPosition)(state, typeOrName, listItemPos.$pos.pos + 4);\n return depth;\n};\n\n// src/keymap/listHelpers/handleBackspace.ts\n\n\n// src/keymap/listHelpers/hasListBefore.ts\nvar hasListBefore = (editorState, name, parentListTypes) => {\n const { $anchor } = editorState.selection;\n const previousNodePos = Math.max(0, $anchor.pos - 2);\n const previousNode = editorState.doc.resolve(previousNodePos).node();\n if (!previousNode || !parentListTypes.includes(previousNode.type.name)) {\n return false;\n }\n return true;\n};\n\n// src/keymap/listHelpers/hasListItemBefore.ts\nvar hasListItemBefore = (typeOrName, state) => {\n var _a;\n const { $anchor } = state.selection;\n const $targetPos = state.doc.resolve($anchor.pos - 2);\n if ($targetPos.index() === 0) {\n return false;\n }\n if (((_a = $targetPos.nodeBefore) == null ? void 0 : _a.type.name) !== typeOrName) {\n return false;\n }\n return true;\n};\n\n// src/keymap/listHelpers/listItemHasSubList.ts\n\nvar listItemHasSubList = (typeOrName, state, node) => {\n if (!node) {\n return false;\n }\n const nodeType = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.getNodeType)(typeOrName, state.schema);\n let hasSubList = false;\n node.descendants((child) => {\n if (child.type === nodeType) {\n hasSubList = true;\n }\n });\n return hasSubList;\n};\n\n// src/keymap/listHelpers/handleBackspace.ts\nvar handleBackspace = (editor, name, parentListTypes) => {\n if (editor.commands.undoInputRule()) {\n return true;\n }\n if (editor.state.selection.from !== editor.state.selection.to) {\n return false;\n }\n if (!(0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.isNodeActive)(editor.state, name) && hasListBefore(editor.state, name, parentListTypes)) {\n const { $anchor } = editor.state.selection;\n const $listPos = editor.state.doc.resolve($anchor.before() - 1);\n const listDescendants = [];\n $listPos.node().descendants((node, pos) => {\n if (node.type.name === name) {\n listDescendants.push({ node, pos });\n }\n });\n const lastItem = listDescendants.at(-1);\n if (!lastItem) {\n return false;\n }\n const $lastItemPos = editor.state.doc.resolve($listPos.start() + lastItem.pos + 1);\n return editor.chain().cut({ from: $anchor.start() - 1, to: $anchor.end() + 1 }, $lastItemPos.end()).joinForward().run();\n }\n if (!(0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.isNodeActive)(editor.state, name)) {\n return false;\n }\n if (!(0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.isAtStartOfNode)(editor.state)) {\n return false;\n }\n const listItemPos = findListItemPos(name, editor.state);\n if (!listItemPos) {\n return false;\n }\n const $prev = editor.state.doc.resolve(listItemPos.$pos.pos - 2);\n const prevNode = $prev.node(listItemPos.depth);\n const previousListItemHasSubList = listItemHasSubList(name, editor.state, prevNode);\n if (hasListItemBefore(name, editor.state) && !previousListItemHasSubList) {\n return editor.commands.joinItemBackward();\n }\n return editor.chain().liftListItem(name).run();\n};\n\n// src/keymap/listHelpers/handleDelete.ts\n\n\n// src/keymap/listHelpers/nextListIsDeeper.ts\nvar nextListIsDeeper = (typeOrName, state) => {\n const listDepth = getNextListDepth(typeOrName, state);\n const listItemPos = findListItemPos(typeOrName, state);\n if (!listItemPos || !listDepth) {\n return false;\n }\n if (listDepth > listItemPos.depth) {\n return true;\n }\n return false;\n};\n\n// src/keymap/listHelpers/nextListIsHigher.ts\nvar nextListIsHigher = (typeOrName, state) => {\n const listDepth = getNextListDepth(typeOrName, state);\n const listItemPos = findListItemPos(typeOrName, state);\n if (!listItemPos || !listDepth) {\n return false;\n }\n if (listDepth < listItemPos.depth) {\n return true;\n }\n return false;\n};\n\n// src/keymap/listHelpers/handleDelete.ts\nvar handleDelete = (editor, name) => {\n if (!(0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.isNodeActive)(editor.state, name)) {\n return false;\n }\n if (!(0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.isAtEndOfNode)(editor.state, name)) {\n return false;\n }\n const { selection } = editor.state;\n const { $from, $to } = selection;\n if (!selection.empty && $from.sameParent($to)) {\n return false;\n }\n if (nextListIsDeeper(name, editor.state)) {\n return editor.chain().focus(editor.state.selection.from + 4).lift(name).joinBackward().run();\n }\n if (nextListIsHigher(name, editor.state)) {\n return editor.chain().joinForward().joinBackward().run();\n }\n return editor.commands.joinItemForward();\n};\n\n// src/keymap/listHelpers/hasListItemAfter.ts\nvar hasListItemAfter = (typeOrName, state) => {\n var _a;\n const { $anchor } = state.selection;\n const $targetPos = state.doc.resolve($anchor.pos - $anchor.parentOffset - 2);\n if ($targetPos.index() === $targetPos.parent.childCount - 1) {\n return false;\n }\n if (((_a = $targetPos.nodeAfter) == null ? void 0 : _a.type.name) !== typeOrName) {\n return false;\n }\n return true;\n};\n\n// src/keymap/list-keymap.ts\nvar ListKeymap = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Extension.create({\n name: \"listKeymap\",\n addOptions() {\n return {\n listTypes: [\n {\n itemName: \"listItem\",\n wrapperNames: [\"bulletList\", \"orderedList\"]\n },\n {\n itemName: \"taskItem\",\n wrapperNames: [\"taskList\"]\n }\n ]\n };\n },\n addKeyboardShortcuts() {\n return {\n Delete: ({ editor }) => {\n let handled = false;\n this.options.listTypes.forEach(({ itemName }) => {\n if (editor.state.schema.nodes[itemName] === void 0) {\n return;\n }\n if (handleDelete(editor, itemName)) {\n handled = true;\n }\n });\n return handled;\n },\n \"Mod-Delete\": ({ editor }) => {\n let handled = false;\n this.options.listTypes.forEach(({ itemName }) => {\n if (editor.state.schema.nodes[itemName] === void 0) {\n return;\n }\n if (handleDelete(editor, itemName)) {\n handled = true;\n }\n });\n return handled;\n },\n Backspace: ({ editor }) => {\n let handled = false;\n this.options.listTypes.forEach(({ itemName, wrapperNames }) => {\n if (editor.state.schema.nodes[itemName] === void 0) {\n return;\n }\n if (handleBackspace(editor, itemName, wrapperNames)) {\n handled = true;\n }\n });\n return handled;\n },\n \"Mod-Backspace\": ({ editor }) => {\n let handled = false;\n this.options.listTypes.forEach(({ itemName, wrapperNames }) => {\n if (editor.state.schema.nodes[itemName] === void 0) {\n return;\n }\n if (handleBackspace(editor, itemName, wrapperNames)) {\n handled = true;\n }\n });\n return handled;\n }\n };\n }\n});\n\n// src/kit/index.ts\n\n\n// src/ordered-list/ordered-list.ts\n\n\n// src/ordered-list/utils.ts\nvar ORDERED_LIST_ITEM_REGEX = /^(\\s*)(\\d+)\\.\\s+(.*)$/;\nvar INDENTED_LINE_REGEX = /^\\s/;\nfunction collectOrderedListItems(lines) {\n const listItems = [];\n let currentLineIndex = 0;\n let consumed = 0;\n while (currentLineIndex < lines.length) {\n const line = lines[currentLineIndex];\n const match = line.match(ORDERED_LIST_ITEM_REGEX);\n if (!match) {\n break;\n }\n const [, indent, number, content] = match;\n const indentLevel = indent.length;\n let itemContent = content;\n let nextLineIndex = currentLineIndex + 1;\n const itemLines = [line];\n while (nextLineIndex < lines.length) {\n const nextLine = lines[nextLineIndex];\n const nextMatch = nextLine.match(ORDERED_LIST_ITEM_REGEX);\n if (nextMatch) {\n break;\n }\n if (nextLine.trim() === \"\") {\n itemLines.push(nextLine);\n itemContent += \"\\n\";\n nextLineIndex += 1;\n } else if (nextLine.match(INDENTED_LINE_REGEX)) {\n itemLines.push(nextLine);\n itemContent += `\n${nextLine.slice(indentLevel + 2)}`;\n nextLineIndex += 1;\n } else {\n break;\n }\n }\n listItems.push({\n indent: indentLevel,\n number: parseInt(number, 10),\n content: itemContent.trim(),\n raw: itemLines.join(\"\\n\")\n });\n consumed = nextLineIndex;\n currentLineIndex = nextLineIndex;\n }\n return [listItems, consumed];\n}\nfunction buildNestedStructure(items, baseIndent, lexer) {\n var _a;\n const result = [];\n let currentIndex = 0;\n while (currentIndex < items.length) {\n const item = items[currentIndex];\n if (item.indent === baseIndent) {\n const contentLines = item.content.split(\"\\n\");\n const mainText = ((_a = contentLines[0]) == null ? void 0 : _a.trim()) || \"\";\n const tokens = [];\n if (mainText) {\n tokens.push({\n type: \"paragraph\",\n raw: mainText,\n tokens: lexer.inlineTokens(mainText)\n });\n }\n const additionalContent = contentLines.slice(1).join(\"\\n\").trim();\n if (additionalContent) {\n const blockTokens = lexer.blockTokens(additionalContent);\n tokens.push(...blockTokens);\n }\n let lookAheadIndex = currentIndex + 1;\n const nestedItems = [];\n while (lookAheadIndex < items.length && items[lookAheadIndex].indent > baseIndent) {\n nestedItems.push(items[lookAheadIndex]);\n lookAheadIndex += 1;\n }\n if (nestedItems.length > 0) {\n const nextIndent = Math.min(...nestedItems.map((nestedItem) => nestedItem.indent));\n const nestedListItems = buildNestedStructure(nestedItems, nextIndent, lexer);\n tokens.push({\n type: \"list\",\n ordered: true,\n start: nestedItems[0].number,\n items: nestedListItems,\n raw: nestedItems.map((nestedItem) => nestedItem.raw).join(\"\\n\")\n });\n }\n result.push({\n type: \"list_item\",\n raw: item.raw,\n tokens\n });\n currentIndex = lookAheadIndex;\n } else {\n currentIndex += 1;\n }\n }\n return result;\n}\nfunction parseListItems(items, helpers) {\n return items.map((item) => {\n if (item.type !== \"list_item\") {\n return helpers.parseChildren([item])[0];\n }\n const content = [];\n if (item.tokens && item.tokens.length > 0) {\n item.tokens.forEach((itemToken) => {\n if (itemToken.type === \"paragraph\" || itemToken.type === \"list\" || itemToken.type === \"blockquote\" || itemToken.type === \"code\") {\n content.push(...helpers.parseChildren([itemToken]));\n } else if (itemToken.type === \"text\" && itemToken.tokens) {\n const inlineContent = helpers.parseChildren([itemToken]);\n content.push({\n type: \"paragraph\",\n content: inlineContent\n });\n } else {\n const parsed = helpers.parseChildren([itemToken]);\n if (parsed.length > 0) {\n content.push(...parsed);\n }\n }\n });\n }\n return {\n type: \"listItem\",\n content\n };\n });\n}\n\n// src/ordered-list/ordered-list.ts\nvar ListItemName2 = \"listItem\";\nvar TextStyleName2 = \"textStyle\";\nvar orderedListInputRegex = /^(\\d+)\\.\\s$/;\nvar OrderedList = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"orderedList\",\n addOptions() {\n return {\n itemTypeName: \"listItem\",\n HTMLAttributes: {},\n keepMarks: false,\n keepAttributes: false\n };\n },\n group: \"block list\",\n content() {\n return `${this.options.itemTypeName}+`;\n },\n addAttributes() {\n return {\n start: {\n default: 1,\n parseHTML: (element) => {\n return element.hasAttribute(\"start\") ? parseInt(element.getAttribute(\"start\") || \"\", 10) : 1;\n }\n },\n type: {\n default: null,\n parseHTML: (element) => element.getAttribute(\"type\")\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: \"ol\"\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n const { start, ...attributesWithoutStart } = HTMLAttributes;\n return start === 1 ? [\"ol\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, attributesWithoutStart), 0] : [\"ol\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"list\",\n parseMarkdown: (token, helpers) => {\n if (token.type !== \"list\" || !token.ordered) {\n return [];\n }\n const startValue = token.start || 1;\n const content = token.items ? parseListItems(token.items, helpers) : [];\n if (startValue !== 1) {\n return {\n type: \"orderedList\",\n attrs: { start: startValue },\n content\n };\n }\n return {\n type: \"orderedList\",\n content\n };\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return h.renderChildren(node.content, \"\\n\");\n },\n markdownTokenizer: {\n name: \"orderedList\",\n level: \"block\",\n start: (src) => {\n const match = src.match(/^(\\s*)(\\d+)\\.\\s+/);\n const index = match == null ? void 0 : match.index;\n return index !== void 0 ? index : -1;\n },\n tokenize: (src, _tokens, lexer) => {\n var _a;\n const lines = src.split(\"\\n\");\n const [listItems, consumed] = collectOrderedListItems(lines);\n if (listItems.length === 0) {\n return void 0;\n }\n const items = buildNestedStructure(listItems, 0, lexer);\n if (items.length === 0) {\n return void 0;\n }\n const startValue = ((_a = listItems[0]) == null ? void 0 : _a.number) || 1;\n return {\n type: \"list\",\n ordered: true,\n start: startValue,\n items,\n raw: lines.slice(0, consumed).join(\"\\n\")\n };\n }\n },\n markdownOptions: {\n indentsContent: true\n },\n addCommands() {\n return {\n toggleOrderedList: () => ({ commands, chain }) => {\n if (this.options.keepAttributes) {\n return chain().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(ListItemName2, this.editor.getAttributes(TextStyleName2)).run();\n }\n return commands.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-7\": () => this.editor.commands.toggleOrderedList()\n };\n },\n addInputRules() {\n let inputRule = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.wrappingInputRule)({\n find: orderedListInputRegex,\n type: this.type,\n getAttributes: (match) => ({ start: +match[1] }),\n joinPredicate: (match, node) => node.childCount + node.attrs.start === +match[1]\n });\n if (this.options.keepMarks || this.options.keepAttributes) {\n inputRule = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.wrappingInputRule)({\n find: orderedListInputRegex,\n type: this.type,\n keepMarks: this.options.keepMarks,\n keepAttributes: this.options.keepAttributes,\n getAttributes: (match) => ({ start: +match[1], ...this.editor.getAttributes(TextStyleName2) }),\n joinPredicate: (match, node) => node.childCount + node.attrs.start === +match[1],\n editor: this.editor\n });\n }\n return [inputRule];\n }\n});\n\n// src/task-item/task-item.ts\n\nvar inputRegex = /^\\s*(\\[([( |x])?\\])\\s$/;\nvar TaskItem = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"taskItem\",\n addOptions() {\n return {\n nested: false,\n HTMLAttributes: {},\n taskListTypeName: \"taskList\",\n a11y: void 0\n };\n },\n content() {\n return this.options.nested ? \"paragraph block*\" : \"paragraph+\";\n },\n defining: true,\n addAttributes() {\n return {\n checked: {\n default: false,\n keepOnSplit: false,\n parseHTML: (element) => {\n const dataChecked = element.getAttribute(\"data-checked\");\n return dataChecked === \"\" || dataChecked === \"true\";\n },\n renderHTML: (attributes) => ({\n \"data-checked\": attributes.checked\n })\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: `li[data-type=\"${this.name}\"]`,\n priority: 51\n }\n ];\n },\n renderHTML({ node, HTMLAttributes }) {\n return [\n \"li\",\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes, {\n \"data-type\": this.name\n }),\n [\n \"label\",\n [\n \"input\",\n {\n type: \"checkbox\",\n checked: node.attrs.checked ? \"checked\" : null\n }\n ],\n [\"span\"]\n ],\n [\"div\", 0]\n ];\n },\n parseMarkdown: (token, h) => {\n const content = [];\n if (token.tokens && token.tokens.length > 0) {\n content.push(h.createNode(\"paragraph\", {}, h.parseInline(token.tokens)));\n } else if (token.text) {\n content.push(h.createNode(\"paragraph\", {}, [h.createNode(\"text\", { text: token.text })]));\n } else {\n content.push(h.createNode(\"paragraph\", {}, []));\n }\n if (token.nestedTokens && token.nestedTokens.length > 0) {\n const nestedContent = h.parseChildren(token.nestedTokens);\n content.push(...nestedContent);\n }\n return h.createNode(\"taskItem\", { checked: token.checked || false }, content);\n },\n renderMarkdown: (node, h) => {\n var _a;\n const checkedChar = ((_a = node.attrs) == null ? void 0 : _a.checked) ? \"x\" : \" \";\n const prefix = `- [${checkedChar}] `;\n return (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.renderNestedMarkdownContent)(node, h, prefix);\n },\n addKeyboardShortcuts() {\n const shortcuts = {\n Enter: () => this.editor.commands.splitListItem(this.name),\n \"Shift-Tab\": () => this.editor.commands.liftListItem(this.name)\n };\n if (!this.options.nested) {\n return shortcuts;\n }\n return {\n ...shortcuts,\n Tab: () => this.editor.commands.sinkListItem(this.name)\n };\n },\n addNodeView() {\n return ({ node, HTMLAttributes, getPos, editor }) => {\n const listItem = document.createElement(\"li\");\n const checkboxWrapper = document.createElement(\"label\");\n const checkboxStyler = document.createElement(\"span\");\n const checkbox = document.createElement(\"input\");\n const content = document.createElement(\"div\");\n const updateA11Y = (currentNode) => {\n var _a, _b;\n checkbox.ariaLabel = ((_b = (_a = this.options.a11y) == null ? void 0 : _a.checkboxLabel) == null ? void 0 : _b.call(_a, currentNode, checkbox.checked)) || `Task item checkbox for ${currentNode.textContent || \"empty task item\"}`;\n };\n updateA11Y(node);\n checkboxWrapper.contentEditable = \"false\";\n checkbox.type = \"checkbox\";\n checkbox.addEventListener(\"mousedown\", (event) => event.preventDefault());\n checkbox.addEventListener(\"change\", (event) => {\n if (!editor.isEditable && !this.options.onReadOnlyChecked) {\n checkbox.checked = !checkbox.checked;\n return;\n }\n const { checked } = event.target;\n if (editor.isEditable && typeof getPos === \"function\") {\n editor.chain().focus(void 0, { scrollIntoView: false }).command(({ tr }) => {\n const position = getPos();\n if (typeof position !== \"number\") {\n return false;\n }\n const currentNode = tr.doc.nodeAt(position);\n tr.setNodeMarkup(position, void 0, {\n ...currentNode == null ? void 0 : currentNode.attrs,\n checked\n });\n return true;\n }).run();\n }\n if (!editor.isEditable && this.options.onReadOnlyChecked) {\n if (!this.options.onReadOnlyChecked(node, checked)) {\n checkbox.checked = !checkbox.checked;\n }\n }\n });\n Object.entries(this.options.HTMLAttributes).forEach(([key, value]) => {\n listItem.setAttribute(key, value);\n });\n listItem.dataset.checked = node.attrs.checked;\n checkbox.checked = node.attrs.checked;\n checkboxWrapper.append(checkbox, checkboxStyler);\n listItem.append(checkboxWrapper, content);\n Object.entries(HTMLAttributes).forEach(([key, value]) => {\n listItem.setAttribute(key, value);\n });\n let prevRenderedAttributeKeys = new Set(Object.keys(HTMLAttributes));\n return {\n dom: listItem,\n contentDOM: content,\n update: (updatedNode) => {\n if (updatedNode.type !== this.type) {\n return false;\n }\n listItem.dataset.checked = updatedNode.attrs.checked;\n checkbox.checked = updatedNode.attrs.checked;\n updateA11Y(updatedNode);\n const extensionAttributes = editor.extensionManager.attributes;\n const newHTMLAttributes = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.getRenderedAttributes)(updatedNode, extensionAttributes);\n const newKeys = new Set(Object.keys(newHTMLAttributes));\n const staticAttrs = this.options.HTMLAttributes;\n prevRenderedAttributeKeys.forEach((key) => {\n if (!newKeys.has(key)) {\n if (key in staticAttrs) {\n listItem.setAttribute(key, staticAttrs[key]);\n } else {\n listItem.removeAttribute(key);\n }\n }\n });\n Object.entries(newHTMLAttributes).forEach(([key, value]) => {\n if (value === null || value === void 0) {\n if (key in staticAttrs) {\n listItem.setAttribute(key, staticAttrs[key]);\n } else {\n listItem.removeAttribute(key);\n }\n } else {\n listItem.setAttribute(key, value);\n }\n });\n prevRenderedAttributeKeys = newKeys;\n return true;\n }\n };\n };\n },\n addInputRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.wrappingInputRule)({\n find: inputRegex,\n type: this.type,\n getAttributes: (match) => ({\n checked: match[match.length - 1] === \"x\"\n })\n })\n ];\n }\n});\n\n// src/task-list/task-list.ts\n\nvar TaskList = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"taskList\",\n addOptions() {\n return {\n itemTypeName: \"taskItem\",\n HTMLAttributes: {}\n };\n },\n group: \"block list\",\n content() {\n return `${this.options.itemTypeName}+`;\n },\n parseHTML() {\n return [\n {\n tag: `ul[data-type=\"${this.name}\"]`,\n priority: 51\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"ul\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes, { \"data-type\": this.name }), 0];\n },\n parseMarkdown: (token, h) => {\n return h.createNode(\"taskList\", {}, h.parseChildren(token.items || []));\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return h.renderChildren(node.content, \"\\n\");\n },\n markdownTokenizer: {\n name: \"taskList\",\n level: \"block\",\n start(src) {\n var _a;\n const index = (_a = src.match(/^\\s*[-+*]\\s+\\[([ xX])\\]\\s+/)) == null ? void 0 : _a.index;\n return index !== void 0 ? index : -1;\n },\n tokenize(src, tokens, lexer) {\n const parseTaskListContent = (content) => {\n const nestedResult = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.parseIndentedBlocks)(\n content,\n {\n itemPattern: /^(\\s*)([-+*])\\s+\\[([ xX])\\]\\s+(.*)$/,\n extractItemData: (match) => ({\n indentLevel: match[1].length,\n mainContent: match[4],\n checked: match[3].toLowerCase() === \"x\"\n }),\n createToken: (data, nestedTokens) => ({\n type: \"taskItem\",\n raw: \"\",\n mainContent: data.mainContent,\n indentLevel: data.indentLevel,\n checked: data.checked,\n text: data.mainContent,\n tokens: lexer.inlineTokens(data.mainContent),\n nestedTokens\n }),\n // Allow recursive nesting\n customNestedParser: parseTaskListContent\n },\n lexer\n );\n if (nestedResult) {\n return [\n {\n type: \"taskList\",\n raw: nestedResult.raw,\n items: nestedResult.items\n }\n ];\n }\n return lexer.blockTokens(content);\n };\n const result = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.parseIndentedBlocks)(\n src,\n {\n itemPattern: /^(\\s*)([-+*])\\s+\\[([ xX])\\]\\s+(.*)$/,\n extractItemData: (match) => ({\n indentLevel: match[1].length,\n mainContent: match[4],\n checked: match[3].toLowerCase() === \"x\"\n }),\n createToken: (data, nestedTokens) => ({\n type: \"taskItem\",\n raw: \"\",\n mainContent: data.mainContent,\n indentLevel: data.indentLevel,\n checked: data.checked,\n text: data.mainContent,\n tokens: lexer.inlineTokens(data.mainContent),\n nestedTokens\n }),\n // Use the recursive parser for nested content\n customNestedParser: parseTaskListContent\n },\n lexer\n );\n if (!result) {\n return void 0;\n }\n return {\n type: \"taskList\",\n raw: result.raw,\n items: result.items\n };\n }\n },\n markdownOptions: {\n indentsContent: true\n },\n addCommands() {\n return {\n toggleTaskList: () => ({ commands }) => {\n return commands.toggleList(this.name, this.options.itemTypeName);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-9\": () => this.editor.commands.toggleTaskList()\n };\n }\n});\n\n// src/kit/index.ts\nvar ListKit = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Extension.create({\n name: \"listKit\",\n addExtensions() {\n const extensions = [];\n if (this.options.bulletList !== false) {\n extensions.push(BulletList.configure(this.options.bulletList));\n }\n if (this.options.listItem !== false) {\n extensions.push(ListItem.configure(this.options.listItem));\n }\n if (this.options.listKeymap !== false) {\n extensions.push(ListKeymap.configure(this.options.listKeymap));\n }\n if (this.options.orderedList !== false) {\n extensions.push(OrderedList.configure(this.options.orderedList));\n }\n if (this.options.taskItem !== false) {\n extensions.push(TaskItem.configure(this.options.taskItem));\n }\n if (this.options.taskList !== false) {\n extensions.push(TaskList.configure(this.options.taskList));\n }\n return extensions;\n }\n});\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1saXN0L2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtDQUFrQztBQUNoRTs7QUFFQTtBQUN3RTtBQUN4RTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOENBQUk7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLDBCQUEwQjtBQUN4QyxHQUFHO0FBQ0g7QUFDQSxjQUFjLFdBQVc7QUFDekIsR0FBRztBQUNILGVBQWUsZ0JBQWdCO0FBQy9CLGtCQUFrQiw2REFBZTtBQUNqQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsaUNBQWlDLGlCQUFpQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQkFBb0IsK0RBQWlCO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrQkFBa0IsK0RBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQytHO0FBQy9HLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGVBQWUsZ0JBQWdCO0FBQy9CLGtCQUFrQiw2REFBZ0I7QUFDbEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxXQUFXLHlFQUEyQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0JBQXNCO0FBQzFDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUMyQztBQUMzQztBQUNBLFVBQVUsUUFBUTtBQUNsQixtQkFBbUIseURBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLCtEQUFpQjtBQUNyQztBQUNBOztBQUVBO0FBQzZEOztBQUU3RDtBQUNBO0FBQ0EsVUFBVSxVQUFVO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsVUFBVTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDMkQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIseURBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLDBEQUFZO0FBQ25CLFlBQVksVUFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixXQUFXO0FBQzFDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msa0RBQWtEO0FBQ2xGO0FBQ0EsT0FBTywwREFBWTtBQUNuQjtBQUNBO0FBQ0EsT0FBTyw2REFBZTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQzRFOztBQUU1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPLDBEQUFhO0FBQ3BCO0FBQ0E7QUFDQSxPQUFPLDJEQUFhO0FBQ3BCO0FBQ0E7QUFDQSxVQUFVLFlBQVk7QUFDdEIsVUFBVSxhQUFhO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVSxVQUFVO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixtREFBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0EsMENBQTBDLFVBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQLHVCQUF1QixRQUFRO0FBQy9CO0FBQ0EsMENBQTBDLFVBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0EsMENBQTBDLHdCQUF3QjtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsMEJBQTBCLFFBQVE7QUFDbEM7QUFDQSwwQ0FBMEMsd0JBQXdCO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDdUQ7O0FBRXZEO0FBQzJIOztBQUUzSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsRUFBRSxnQ0FBZ0M7QUFDbEM7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDhDQUFLO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYywwQkFBMEI7QUFDeEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGVBQWUsZ0JBQWdCO0FBQy9CLFlBQVksbUNBQW1DO0FBQy9DLGdDQUFnQyw2REFBZ0IsbUVBQW1FLDZEQUFnQjtBQUNuSSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUJBQW1CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxrQ0FBa0MsaUJBQWlCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG9CQUFvQiwrREFBa0I7QUFDdEM7QUFDQTtBQUNBLG1DQUFtQyxrQkFBa0I7QUFDckQ7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrQkFBa0IsK0RBQWtCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGdFQUFnRTtBQUNyRztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFPc0I7QUFDdEI7QUFDQSxlQUFlLDhDQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLFVBQVU7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGVBQWUsc0JBQXNCO0FBQ3JDO0FBQ0E7QUFDQSxNQUFNLDZEQUFnQjtBQUN0QjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0MsTUFBTTtBQUNOLCtDQUErQywwQkFBMEIsa0JBQWtCO0FBQzNGLE1BQU07QUFDTiwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxpQ0FBaUM7QUFDdkUsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixZQUFZO0FBQ3JDLFdBQVcseUVBQTRCO0FBQ3ZDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLHNDQUFzQztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhMQUE4TCw2Q0FBNkM7QUFDM087QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsVUFBVTtBQUMxQjtBQUNBLHlDQUF5Qyx1QkFBdUIsYUFBYSxJQUFJO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxtRUFBcUI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSwrREFBa0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ3VHO0FBQ3ZHLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLDBCQUEwQjtBQUN4QyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLFVBQVU7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGVBQWUsZ0JBQWdCO0FBQy9CLGtCQUFrQiw2REFBZ0IsZ0RBQWdELHdCQUF3QjtBQUMxRyxHQUFHO0FBQ0g7QUFDQSxzQ0FBc0M7QUFDdEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLDZCQUE2QixpRUFBbUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsaUVBQW1CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0JBQStCLFVBQVU7QUFDekM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EsY0FBYyxtREFBVTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQWFDO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXGV4dGVuc2lvbi1saXN0XFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7XG4gIGZvciAodmFyIG5hbWUgaW4gYWxsKVxuICAgIF9fZGVmUHJvcCh0YXJnZXQsIG5hbWUsIHsgZ2V0OiBhbGxbbmFtZV0sIGVudW1lcmFibGU6IHRydWUgfSk7XG59O1xuXG4vLyBzcmMvYnVsbGV0LWxpc3QvYnVsbGV0LWxpc3QudHNcbmltcG9ydCB7IG1lcmdlQXR0cmlidXRlcywgTm9kZSwgd3JhcHBpbmdJbnB1dFJ1bGUgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG52YXIgTGlzdEl0ZW1OYW1lID0gXCJsaXN0SXRlbVwiO1xudmFyIFRleHRTdHlsZU5hbWUgPSBcInRleHRTdHlsZVwiO1xudmFyIGJ1bGxldExpc3RJbnB1dFJlZ2V4ID0gL15cXHMqKFstKypdKVxccyQvO1xudmFyIEJ1bGxldExpc3QgPSBOb2RlLmNyZWF0ZSh7XG4gIG5hbWU6IFwiYnVsbGV0TGlzdFwiLFxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtVHlwZU5hbWU6IFwibGlzdEl0ZW1cIixcbiAgICAgIEhUTUxBdHRyaWJ1dGVzOiB7fSxcbiAgICAgIGtlZXBNYXJrczogZmFsc2UsXG4gICAgICBrZWVwQXR0cmlidXRlczogZmFsc2VcbiAgICB9O1xuICB9LFxuICBncm91cDogXCJibG9jayBsaXN0XCIsXG4gIGNvbnRlbnQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWV9K2A7XG4gIH0sXG4gIHBhcnNlSFRNTCgpIHtcbiAgICByZXR1cm4gW3sgdGFnOiBcInVsXCIgfV07XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIFtcInVsXCIsIG1lcmdlQXR0cmlidXRlcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsIEhUTUxBdHRyaWJ1dGVzKSwgMF07XG4gIH0sXG4gIG1hcmtkb3duVG9rZW5OYW1lOiBcImxpc3RcIixcbiAgcGFyc2VNYXJrZG93bjogKHRva2VuLCBoZWxwZXJzKSA9PiB7XG4gICAgaWYgKHRva2VuLnR5cGUgIT09IFwibGlzdFwiIHx8IHRva2VuLm9yZGVyZWQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiYnVsbGV0TGlzdFwiLFxuICAgICAgY29udGVudDogdG9rZW4uaXRlbXMgPyBoZWxwZXJzLnBhcnNlQ2hpbGRyZW4odG9rZW4uaXRlbXMpIDogW11cbiAgICB9O1xuICB9LFxuICByZW5kZXJNYXJrZG93bjogKG5vZGUsIGgpID0+IHtcbiAgICBpZiAoIW5vZGUuY29udGVudCkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBoLnJlbmRlckNoaWxkcmVuKG5vZGUuY29udGVudCwgXCJcXG5cIik7XG4gIH0sXG4gIG1hcmtkb3duT3B0aW9uczoge1xuICAgIGluZGVudHNDb250ZW50OiB0cnVlXG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0b2dnbGVCdWxsZXRMaXN0OiAoKSA9PiAoeyBjb21tYW5kcywgY2hhaW4gfSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNoYWluKCkudG9nZ2xlTGlzdCh0aGlzLm5hbWUsIHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsIHRoaXMub3B0aW9ucy5rZWVwTWFya3MpLnVwZGF0ZUF0dHJpYnV0ZXMoTGlzdEl0ZW1OYW1lLCB0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFRleHRTdHlsZU5hbWUpKS5ydW4oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tbWFuZHMudG9nZ2xlTGlzdCh0aGlzLm5hbWUsIHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsIHRoaXMub3B0aW9ucy5rZWVwTWFya3MpO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGFkZEtleWJvYXJkU2hvcnRjdXRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBcIk1vZC1TaGlmdC04XCI6ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZUJ1bGxldExpc3QoKVxuICAgIH07XG4gIH0sXG4gIGFkZElucHV0UnVsZXMoKSB7XG4gICAgbGV0IGlucHV0UnVsZSA9IHdyYXBwaW5nSW5wdXRSdWxlKHtcbiAgICAgIGZpbmQ6IGJ1bGxldExpc3RJbnB1dFJlZ2V4LFxuICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgfSk7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5rZWVwTWFya3MgfHwgdGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzKSB7XG4gICAgICBpbnB1dFJ1bGUgPSB3cmFwcGluZ0lucHV0UnVsZSh7XG4gICAgICAgIGZpbmQ6IGJ1bGxldExpc3RJbnB1dFJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIGtlZXBNYXJrczogdGhpcy5vcHRpb25zLmtlZXBNYXJrcyxcbiAgICAgICAga2VlcEF0dHJpYnV0ZXM6IHRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcyxcbiAgICAgICAgZ2V0QXR0cmlidXRlczogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFRleHRTdHlsZU5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIFtpbnB1dFJ1bGVdO1xuICB9XG59KTtcblxuLy8gc3JjL2l0ZW0vbGlzdC1pdGVtLnRzXG5pbXBvcnQgeyBtZXJnZUF0dHJpYnV0ZXMgYXMgbWVyZ2VBdHRyaWJ1dGVzMiwgTm9kZSBhcyBOb2RlMiwgcmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50IH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xudmFyIExpc3RJdGVtID0gTm9kZTIuY3JlYXRlKHtcbiAgbmFtZTogXCJsaXN0SXRlbVwiLFxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBIVE1MQXR0cmlidXRlczoge30sXG4gICAgICBidWxsZXRMaXN0VHlwZU5hbWU6IFwiYnVsbGV0TGlzdFwiLFxuICAgICAgb3JkZXJlZExpc3RUeXBlTmFtZTogXCJvcmRlcmVkTGlzdFwiXG4gICAgfTtcbiAgfSxcbiAgY29udGVudDogXCJwYXJhZ3JhcGggYmxvY2sqXCIsXG4gIGRlZmluaW5nOiB0cnVlLFxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGFnOiBcImxpXCJcbiAgICAgIH1cbiAgICBdO1xuICB9LFxuICByZW5kZXJIVE1MKHsgSFRNTEF0dHJpYnV0ZXMgfSkge1xuICAgIHJldHVybiBbXCJsaVwiLCBtZXJnZUF0dHJpYnV0ZXMyKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcywgSFRNTEF0dHJpYnV0ZXMpLCAwXTtcbiAgfSxcbiAgbWFya2Rvd25Ub2tlbk5hbWU6IFwibGlzdF9pdGVtXCIsXG4gIHBhcnNlTWFya2Rvd246ICh0b2tlbiwgaGVscGVycykgPT4ge1xuICAgIGlmICh0b2tlbi50eXBlICE9PSBcImxpc3RfaXRlbVwiKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGxldCBjb250ZW50ID0gW107XG4gICAgaWYgKHRva2VuLnRva2VucyAmJiB0b2tlbi50b2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaGFzUGFyYWdyYXBoVG9rZW5zID0gdG9rZW4udG9rZW5zLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gXCJwYXJhZ3JhcGhcIik7XG4gICAgICBpZiAoaGFzUGFyYWdyYXBoVG9rZW5zKSB7XG4gICAgICAgIGNvbnRlbnQgPSBoZWxwZXJzLnBhcnNlQ2hpbGRyZW4odG9rZW4udG9rZW5zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpcnN0VG9rZW4gPSB0b2tlbi50b2tlbnNbMF07XG4gICAgICAgIGlmIChmaXJzdFRva2VuICYmIGZpcnN0VG9rZW4udHlwZSA9PT0gXCJ0ZXh0XCIgJiYgZmlyc3RUb2tlbi50b2tlbnMgJiYgZmlyc3RUb2tlbi50b2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGlubGluZUNvbnRlbnQgPSBoZWxwZXJzLnBhcnNlSW5saW5lKGZpcnN0VG9rZW4udG9rZW5zKTtcbiAgICAgICAgICBjb250ZW50ID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcInBhcmFncmFwaFwiLFxuICAgICAgICAgICAgICBjb250ZW50OiBpbmxpbmVDb250ZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXTtcbiAgICAgICAgICBpZiAodG9rZW4udG9rZW5zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1Rva2VucyA9IHRva2VuLnRva2Vucy5zbGljZSgxKTtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDb250ZW50ID0gaGVscGVycy5wYXJzZUNoaWxkcmVuKHJlbWFpbmluZ1Rva2Vucyk7XG4gICAgICAgICAgICBjb250ZW50LnB1c2goLi4uYWRkaXRpb25hbENvbnRlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250ZW50ID0gaGVscGVycy5wYXJzZUNoaWxkcmVuKHRva2VuLnRva2Vucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbnRlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250ZW50ID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJwYXJhZ3JhcGhcIixcbiAgICAgICAgICBjb250ZW50OiBbXVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJsaXN0SXRlbVwiLFxuICAgICAgY29udGVudFxuICAgIH07XG4gIH0sXG4gIHJlbmRlck1hcmtkb3duOiAobm9kZSwgaCwgY3R4KSA9PiB7XG4gICAgcmV0dXJuIHJlbmRlck5lc3RlZE1hcmtkb3duQ29udGVudChcbiAgICAgIG5vZGUsXG4gICAgICBoLFxuICAgICAgKGNvbnRleHQpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKGNvbnRleHQucGFyZW50VHlwZSA9PT0gXCJidWxsZXRMaXN0XCIpIHtcbiAgICAgICAgICByZXR1cm4gXCItIFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250ZXh0LnBhcmVudFR5cGUgPT09IFwib3JkZXJlZExpc3RcIikge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gKChfYiA9IChfYSA9IGNvbnRleHQubWV0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnBhcmVudEF0dHJzKSA9PSBudWxsID8gdm9pZCAwIDogX2Iuc3RhcnQpIHx8IDE7XG4gICAgICAgICAgcmV0dXJuIGAke3N0YXJ0ICsgY29udGV4dC5pbmRleH0uIGA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiLSBcIjtcbiAgICAgIH0sXG4gICAgICBjdHhcbiAgICApO1xuICB9LFxuICBhZGRLZXlib2FyZFNob3J0Y3V0cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgRW50ZXI6ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnNwbGl0TGlzdEl0ZW0odGhpcy5uYW1lKSxcbiAgICAgIFRhYjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMuc2lua0xpc3RJdGVtKHRoaXMubmFtZSksXG4gICAgICBcIlNoaWZ0LVRhYlwiOiAoKSA9PiB0aGlzLmVkaXRvci5jb21tYW5kcy5saWZ0TGlzdEl0ZW0odGhpcy5uYW1lKVxuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMva2V5bWFwL2xpc3Qta2V5bWFwLnRzXG5pbXBvcnQgeyBFeHRlbnNpb24gfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5cbi8vIHNyYy9rZXltYXAvbGlzdEhlbHBlcnMvaW5kZXgudHNcbnZhciBsaXN0SGVscGVyc19leHBvcnRzID0ge307XG5fX2V4cG9ydChsaXN0SGVscGVyc19leHBvcnRzLCB7XG4gIGZpbmRMaXN0SXRlbVBvczogKCkgPT4gZmluZExpc3RJdGVtUG9zLFxuICBnZXROZXh0TGlzdERlcHRoOiAoKSA9PiBnZXROZXh0TGlzdERlcHRoLFxuICBoYW5kbGVCYWNrc3BhY2U6ICgpID0+IGhhbmRsZUJhY2tzcGFjZSxcbiAgaGFuZGxlRGVsZXRlOiAoKSA9PiBoYW5kbGVEZWxldGUsXG4gIGhhc0xpc3RCZWZvcmU6ICgpID0+IGhhc0xpc3RCZWZvcmUsXG4gIGhhc0xpc3RJdGVtQWZ0ZXI6ICgpID0+IGhhc0xpc3RJdGVtQWZ0ZXIsXG4gIGhhc0xpc3RJdGVtQmVmb3JlOiAoKSA9PiBoYXNMaXN0SXRlbUJlZm9yZSxcbiAgbGlzdEl0ZW1IYXNTdWJMaXN0OiAoKSA9PiBsaXN0SXRlbUhhc1N1Ykxpc3QsXG4gIG5leHRMaXN0SXNEZWVwZXI6ICgpID0+IG5leHRMaXN0SXNEZWVwZXIsXG4gIG5leHRMaXN0SXNIaWdoZXI6ICgpID0+IG5leHRMaXN0SXNIaWdoZXJcbn0pO1xuXG4vLyBzcmMva2V5bWFwL2xpc3RIZWxwZXJzL2ZpbmRMaXN0SXRlbVBvcy50c1xuaW1wb3J0IHsgZ2V0Tm9kZVR5cGUgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG52YXIgZmluZExpc3RJdGVtUG9zID0gKHR5cGVPck5hbWUsIHN0YXRlKSA9PiB7XG4gIGNvbnN0IHsgJGZyb20gfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgY29uc3Qgbm9kZVR5cGUgPSBnZXROb2RlVHlwZSh0eXBlT3JOYW1lLCBzdGF0ZS5zY2hlbWEpO1xuICBsZXQgY3VycmVudE5vZGUgPSBudWxsO1xuICBsZXQgY3VycmVudERlcHRoID0gJGZyb20uZGVwdGg7XG4gIGxldCBjdXJyZW50UG9zID0gJGZyb20ucG9zO1xuICBsZXQgdGFyZ2V0RGVwdGggPSBudWxsO1xuICB3aGlsZSAoY3VycmVudERlcHRoID4gMCAmJiB0YXJnZXREZXB0aCA9PT0gbnVsbCkge1xuICAgIGN1cnJlbnROb2RlID0gJGZyb20ubm9kZShjdXJyZW50RGVwdGgpO1xuICAgIGlmIChjdXJyZW50Tm9kZS50eXBlID09PSBub2RlVHlwZSkge1xuICAgICAgdGFyZ2V0RGVwdGggPSBjdXJyZW50RGVwdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnREZXB0aCAtPSAxO1xuICAgICAgY3VycmVudFBvcyAtPSAxO1xuICAgIH1cbiAgfVxuICBpZiAodGFyZ2V0RGVwdGggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4geyAkcG9zOiBzdGF0ZS5kb2MucmVzb2x2ZShjdXJyZW50UG9zKSwgZGVwdGg6IHRhcmdldERlcHRoIH07XG59O1xuXG4vLyBzcmMva2V5bWFwL2xpc3RIZWxwZXJzL2dldE5leHRMaXN0RGVwdGgudHNcbmltcG9ydCB7IGdldE5vZGVBdFBvc2l0aW9uIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xudmFyIGdldE5leHRMaXN0RGVwdGggPSAodHlwZU9yTmFtZSwgc3RhdGUpID0+IHtcbiAgY29uc3QgbGlzdEl0ZW1Qb3MgPSBmaW5kTGlzdEl0ZW1Qb3ModHlwZU9yTmFtZSwgc3RhdGUpO1xuICBpZiAoIWxpc3RJdGVtUG9zKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IFssIGRlcHRoXSA9IGdldE5vZGVBdFBvc2l0aW9uKHN0YXRlLCB0eXBlT3JOYW1lLCBsaXN0SXRlbVBvcy4kcG9zLnBvcyArIDQpO1xuICByZXR1cm4gZGVwdGg7XG59O1xuXG4vLyBzcmMva2V5bWFwL2xpc3RIZWxwZXJzL2hhbmRsZUJhY2tzcGFjZS50c1xuaW1wb3J0IHsgaXNBdFN0YXJ0T2ZOb2RlLCBpc05vZGVBY3RpdmUgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5cbi8vIHNyYy9rZXltYXAvbGlzdEhlbHBlcnMvaGFzTGlzdEJlZm9yZS50c1xudmFyIGhhc0xpc3RCZWZvcmUgPSAoZWRpdG9yU3RhdGUsIG5hbWUsIHBhcmVudExpc3RUeXBlcykgPT4ge1xuICBjb25zdCB7ICRhbmNob3IgfSA9IGVkaXRvclN0YXRlLnNlbGVjdGlvbjtcbiAgY29uc3QgcHJldmlvdXNOb2RlUG9zID0gTWF0aC5tYXgoMCwgJGFuY2hvci5wb3MgLSAyKTtcbiAgY29uc3QgcHJldmlvdXNOb2RlID0gZWRpdG9yU3RhdGUuZG9jLnJlc29sdmUocHJldmlvdXNOb2RlUG9zKS5ub2RlKCk7XG4gIGlmICghcHJldmlvdXNOb2RlIHx8ICFwYXJlbnRMaXN0VHlwZXMuaW5jbHVkZXMocHJldmlvdXNOb2RlLnR5cGUubmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBzcmMva2V5bWFwL2xpc3RIZWxwZXJzL2hhc0xpc3RJdGVtQmVmb3JlLnRzXG52YXIgaGFzTGlzdEl0ZW1CZWZvcmUgPSAodHlwZU9yTmFtZSwgc3RhdGUpID0+IHtcbiAgdmFyIF9hO1xuICBjb25zdCB7ICRhbmNob3IgfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgY29uc3QgJHRhcmdldFBvcyA9IHN0YXRlLmRvYy5yZXNvbHZlKCRhbmNob3IucG9zIC0gMik7XG4gIGlmICgkdGFyZ2V0UG9zLmluZGV4KCkgPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCgoX2EgPSAkdGFyZ2V0UG9zLm5vZGVCZWZvcmUpID09IG51bGwgPyB2b2lkIDAgOiBfYS50eXBlLm5hbWUpICE9PSB0eXBlT3JOYW1lKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gc3JjL2tleW1hcC9saXN0SGVscGVycy9saXN0SXRlbUhhc1N1Ykxpc3QudHNcbmltcG9ydCB7IGdldE5vZGVUeXBlIGFzIGdldE5vZGVUeXBlMiB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbnZhciBsaXN0SXRlbUhhc1N1Ykxpc3QgPSAodHlwZU9yTmFtZSwgc3RhdGUsIG5vZGUpID0+IHtcbiAgaWYgKCFub2RlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IG5vZGVUeXBlID0gZ2V0Tm9kZVR5cGUyKHR5cGVPck5hbWUsIHN0YXRlLnNjaGVtYSk7XG4gIGxldCBoYXNTdWJMaXN0ID0gZmFsc2U7XG4gIG5vZGUuZGVzY2VuZGFudHMoKGNoaWxkKSA9PiB7XG4gICAgaWYgKGNoaWxkLnR5cGUgPT09IG5vZGVUeXBlKSB7XG4gICAgICBoYXNTdWJMaXN0ID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gaGFzU3ViTGlzdDtcbn07XG5cbi8vIHNyYy9rZXltYXAvbGlzdEhlbHBlcnMvaGFuZGxlQmFja3NwYWNlLnRzXG52YXIgaGFuZGxlQmFja3NwYWNlID0gKGVkaXRvciwgbmFtZSwgcGFyZW50TGlzdFR5cGVzKSA9PiB7XG4gIGlmIChlZGl0b3IuY29tbWFuZHMudW5kb0lucHV0UnVsZSgpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGVkaXRvci5zdGF0ZS5zZWxlY3Rpb24uZnJvbSAhPT0gZWRpdG9yLnN0YXRlLnNlbGVjdGlvbi50bykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWlzTm9kZUFjdGl2ZShlZGl0b3Iuc3RhdGUsIG5hbWUpICYmIGhhc0xpc3RCZWZvcmUoZWRpdG9yLnN0YXRlLCBuYW1lLCBwYXJlbnRMaXN0VHlwZXMpKSB7XG4gICAgY29uc3QgeyAkYW5jaG9yIH0gPSBlZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xuICAgIGNvbnN0ICRsaXN0UG9zID0gZWRpdG9yLnN0YXRlLmRvYy5yZXNvbHZlKCRhbmNob3IuYmVmb3JlKCkgLSAxKTtcbiAgICBjb25zdCBsaXN0RGVzY2VuZGFudHMgPSBbXTtcbiAgICAkbGlzdFBvcy5ub2RlKCkuZGVzY2VuZGFudHMoKG5vZGUsIHBvcykgPT4ge1xuICAgICAgaWYgKG5vZGUudHlwZS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgIGxpc3REZXNjZW5kYW50cy5wdXNoKHsgbm9kZSwgcG9zIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGxhc3RJdGVtID0gbGlzdERlc2NlbmRhbnRzLmF0KC0xKTtcbiAgICBpZiAoIWxhc3RJdGVtKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0ICRsYXN0SXRlbVBvcyA9IGVkaXRvci5zdGF0ZS5kb2MucmVzb2x2ZSgkbGlzdFBvcy5zdGFydCgpICsgbGFzdEl0ZW0ucG9zICsgMSk7XG4gICAgcmV0dXJuIGVkaXRvci5jaGFpbigpLmN1dCh7IGZyb206ICRhbmNob3Iuc3RhcnQoKSAtIDEsIHRvOiAkYW5jaG9yLmVuZCgpICsgMSB9LCAkbGFzdEl0ZW1Qb3MuZW5kKCkpLmpvaW5Gb3J3YXJkKCkucnVuKCk7XG4gIH1cbiAgaWYgKCFpc05vZGVBY3RpdmUoZWRpdG9yLnN0YXRlLCBuYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWlzQXRTdGFydE9mTm9kZShlZGl0b3Iuc3RhdGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGxpc3RJdGVtUG9zID0gZmluZExpc3RJdGVtUG9zKG5hbWUsIGVkaXRvci5zdGF0ZSk7XG4gIGlmICghbGlzdEl0ZW1Qb3MpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgJHByZXYgPSBlZGl0b3Iuc3RhdGUuZG9jLnJlc29sdmUobGlzdEl0ZW1Qb3MuJHBvcy5wb3MgLSAyKTtcbiAgY29uc3QgcHJldk5vZGUgPSAkcHJldi5ub2RlKGxpc3RJdGVtUG9zLmRlcHRoKTtcbiAgY29uc3QgcHJldmlvdXNMaXN0SXRlbUhhc1N1Ykxpc3QgPSBsaXN0SXRlbUhhc1N1Ykxpc3QobmFtZSwgZWRpdG9yLnN0YXRlLCBwcmV2Tm9kZSk7XG4gIGlmIChoYXNMaXN0SXRlbUJlZm9yZShuYW1lLCBlZGl0b3Iuc3RhdGUpICYmICFwcmV2aW91c0xpc3RJdGVtSGFzU3ViTGlzdCkge1xuICAgIHJldHVybiBlZGl0b3IuY29tbWFuZHMuam9pbkl0ZW1CYWNrd2FyZCgpO1xuICB9XG4gIHJldHVybiBlZGl0b3IuY2hhaW4oKS5saWZ0TGlzdEl0ZW0obmFtZSkucnVuKCk7XG59O1xuXG4vLyBzcmMva2V5bWFwL2xpc3RIZWxwZXJzL2hhbmRsZURlbGV0ZS50c1xuaW1wb3J0IHsgaXNBdEVuZE9mTm9kZSwgaXNOb2RlQWN0aXZlIGFzIGlzTm9kZUFjdGl2ZTIgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5cbi8vIHNyYy9rZXltYXAvbGlzdEhlbHBlcnMvbmV4dExpc3RJc0RlZXBlci50c1xudmFyIG5leHRMaXN0SXNEZWVwZXIgPSAodHlwZU9yTmFtZSwgc3RhdGUpID0+IHtcbiAgY29uc3QgbGlzdERlcHRoID0gZ2V0TmV4dExpc3REZXB0aCh0eXBlT3JOYW1lLCBzdGF0ZSk7XG4gIGNvbnN0IGxpc3RJdGVtUG9zID0gZmluZExpc3RJdGVtUG9zKHR5cGVPck5hbWUsIHN0YXRlKTtcbiAgaWYgKCFsaXN0SXRlbVBvcyB8fCAhbGlzdERlcHRoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChsaXN0RGVwdGggPiBsaXN0SXRlbVBvcy5kZXB0aCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8vIHNyYy9rZXltYXAvbGlzdEhlbHBlcnMvbmV4dExpc3RJc0hpZ2hlci50c1xudmFyIG5leHRMaXN0SXNIaWdoZXIgPSAodHlwZU9yTmFtZSwgc3RhdGUpID0+IHtcbiAgY29uc3QgbGlzdERlcHRoID0gZ2V0TmV4dExpc3REZXB0aCh0eXBlT3JOYW1lLCBzdGF0ZSk7XG4gIGNvbnN0IGxpc3RJdGVtUG9zID0gZmluZExpc3RJdGVtUG9zKHR5cGVPck5hbWUsIHN0YXRlKTtcbiAgaWYgKCFsaXN0SXRlbVBvcyB8fCAhbGlzdERlcHRoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChsaXN0RGVwdGggPCBsaXN0SXRlbVBvcy5kZXB0aCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8vIHNyYy9rZXltYXAvbGlzdEhlbHBlcnMvaGFuZGxlRGVsZXRlLnRzXG52YXIgaGFuZGxlRGVsZXRlID0gKGVkaXRvciwgbmFtZSkgPT4ge1xuICBpZiAoIWlzTm9kZUFjdGl2ZTIoZWRpdG9yLnN0YXRlLCBuYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWlzQXRFbmRPZk5vZGUoZWRpdG9yLnN0YXRlLCBuYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZWRpdG9yLnN0YXRlO1xuICBjb25zdCB7ICRmcm9tLCAkdG8gfSA9IHNlbGVjdGlvbjtcbiAgaWYgKCFzZWxlY3Rpb24uZW1wdHkgJiYgJGZyb20uc2FtZVBhcmVudCgkdG8pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChuZXh0TGlzdElzRGVlcGVyKG5hbWUsIGVkaXRvci5zdGF0ZSkpIHtcbiAgICByZXR1cm4gZWRpdG9yLmNoYWluKCkuZm9jdXMoZWRpdG9yLnN0YXRlLnNlbGVjdGlvbi5mcm9tICsgNCkubGlmdChuYW1lKS5qb2luQmFja3dhcmQoKS5ydW4oKTtcbiAgfVxuICBpZiAobmV4dExpc3RJc0hpZ2hlcihuYW1lLCBlZGl0b3Iuc3RhdGUpKSB7XG4gICAgcmV0dXJuIGVkaXRvci5jaGFpbigpLmpvaW5Gb3J3YXJkKCkuam9pbkJhY2t3YXJkKCkucnVuKCk7XG4gIH1cbiAgcmV0dXJuIGVkaXRvci5jb21tYW5kcy5qb2luSXRlbUZvcndhcmQoKTtcbn07XG5cbi8vIHNyYy9rZXltYXAvbGlzdEhlbHBlcnMvaGFzTGlzdEl0ZW1BZnRlci50c1xudmFyIGhhc0xpc3RJdGVtQWZ0ZXIgPSAodHlwZU9yTmFtZSwgc3RhdGUpID0+IHtcbiAgdmFyIF9hO1xuICBjb25zdCB7ICRhbmNob3IgfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgY29uc3QgJHRhcmdldFBvcyA9IHN0YXRlLmRvYy5yZXNvbHZlKCRhbmNob3IucG9zIC0gJGFuY2hvci5wYXJlbnRPZmZzZXQgLSAyKTtcbiAgaWYgKCR0YXJnZXRQb3MuaW5kZXgoKSA9PT0gJHRhcmdldFBvcy5wYXJlbnQuY2hpbGRDb3VudCAtIDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCgoX2EgPSAkdGFyZ2V0UG9zLm5vZGVBZnRlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnR5cGUubmFtZSkgIT09IHR5cGVPck5hbWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBzcmMva2V5bWFwL2xpc3Qta2V5bWFwLnRzXG52YXIgTGlzdEtleW1hcCA9IEV4dGVuc2lvbi5jcmVhdGUoe1xuICBuYW1lOiBcImxpc3RLZXltYXBcIixcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGlzdFR5cGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpdGVtTmFtZTogXCJsaXN0SXRlbVwiLFxuICAgICAgICAgIHdyYXBwZXJOYW1lczogW1wiYnVsbGV0TGlzdFwiLCBcIm9yZGVyZWRMaXN0XCJdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpdGVtTmFtZTogXCJ0YXNrSXRlbVwiLFxuICAgICAgICAgIHdyYXBwZXJOYW1lczogW1widGFza0xpc3RcIl1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH0sXG4gIGFkZEtleWJvYXJkU2hvcnRjdXRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBEZWxldGU6ICh7IGVkaXRvciB9KSA9PiB7XG4gICAgICAgIGxldCBoYW5kbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoeyBpdGVtTmFtZSB9KSA9PiB7XG4gICAgICAgICAgaWYgKGVkaXRvci5zdGF0ZS5zY2hlbWEubm9kZXNbaXRlbU5hbWVdID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZURlbGV0ZShlZGl0b3IsIGl0ZW1OYW1lKSkge1xuICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZWQ7XG4gICAgICB9LFxuICAgICAgXCJNb2QtRGVsZXRlXCI6ICh7IGVkaXRvciB9KSA9PiB7XG4gICAgICAgIGxldCBoYW5kbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3B0aW9ucy5saXN0VHlwZXMuZm9yRWFjaCgoeyBpdGVtTmFtZSB9KSA9PiB7XG4gICAgICAgICAgaWYgKGVkaXRvci5zdGF0ZS5zY2hlbWEubm9kZXNbaXRlbU5hbWVdID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZURlbGV0ZShlZGl0b3IsIGl0ZW1OYW1lKSkge1xuICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZWQ7XG4gICAgICB9LFxuICAgICAgQmFja3NwYWNlOiAoeyBlZGl0b3IgfSkgPT4ge1xuICAgICAgICBsZXQgaGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMubGlzdFR5cGVzLmZvckVhY2goKHsgaXRlbU5hbWUsIHdyYXBwZXJOYW1lcyB9KSA9PiB7XG4gICAgICAgICAgaWYgKGVkaXRvci5zdGF0ZS5zY2hlbWEubm9kZXNbaXRlbU5hbWVdID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZUJhY2tzcGFjZShlZGl0b3IsIGl0ZW1OYW1lLCB3cmFwcGVyTmFtZXMpKSB7XG4gICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaGFuZGxlZDtcbiAgICAgIH0sXG4gICAgICBcIk1vZC1CYWNrc3BhY2VcIjogKHsgZWRpdG9yIH0pID0+IHtcbiAgICAgICAgbGV0IGhhbmRsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcHRpb25zLmxpc3RUeXBlcy5mb3JFYWNoKCh7IGl0ZW1OYW1lLCB3cmFwcGVyTmFtZXMgfSkgPT4ge1xuICAgICAgICAgIGlmIChlZGl0b3Iuc3RhdGUuc2NoZW1hLm5vZGVzW2l0ZW1OYW1lXSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVCYWNrc3BhY2UoZWRpdG9yLCBpdGVtTmFtZSwgd3JhcHBlck5hbWVzKSkge1xuICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZWQ7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9raXQvaW5kZXgudHNcbmltcG9ydCB7IEV4dGVuc2lvbiBhcyBFeHRlbnNpb24yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuXG4vLyBzcmMvb3JkZXJlZC1saXN0L29yZGVyZWQtbGlzdC50c1xuaW1wb3J0IHsgbWVyZ2VBdHRyaWJ1dGVzIGFzIG1lcmdlQXR0cmlidXRlczMsIE5vZGUgYXMgTm9kZTMsIHdyYXBwaW5nSW5wdXRSdWxlIGFzIHdyYXBwaW5nSW5wdXRSdWxlMiB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcblxuLy8gc3JjL29yZGVyZWQtbGlzdC91dGlscy50c1xudmFyIE9SREVSRURfTElTVF9JVEVNX1JFR0VYID0gL14oXFxzKikoXFxkKylcXC5cXHMrKC4qKSQvO1xudmFyIElOREVOVEVEX0xJTkVfUkVHRVggPSAvXlxccy87XG5mdW5jdGlvbiBjb2xsZWN0T3JkZXJlZExpc3RJdGVtcyhsaW5lcykge1xuICBjb25zdCBsaXN0SXRlbXMgPSBbXTtcbiAgbGV0IGN1cnJlbnRMaW5lSW5kZXggPSAwO1xuICBsZXQgY29uc3VtZWQgPSAwO1xuICB3aGlsZSAoY3VycmVudExpbmVJbmRleCA8IGxpbmVzLmxlbmd0aCkge1xuICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tjdXJyZW50TGluZUluZGV4XTtcbiAgICBjb25zdCBtYXRjaCA9IGxpbmUubWF0Y2goT1JERVJFRF9MSVNUX0lURU1fUkVHRVgpO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBbLCBpbmRlbnQsIG51bWJlciwgY29udGVudF0gPSBtYXRjaDtcbiAgICBjb25zdCBpbmRlbnRMZXZlbCA9IGluZGVudC5sZW5ndGg7XG4gICAgbGV0IGl0ZW1Db250ZW50ID0gY29udGVudDtcbiAgICBsZXQgbmV4dExpbmVJbmRleCA9IGN1cnJlbnRMaW5lSW5kZXggKyAxO1xuICAgIGNvbnN0IGl0ZW1MaW5lcyA9IFtsaW5lXTtcbiAgICB3aGlsZSAobmV4dExpbmVJbmRleCA8IGxpbmVzLmxlbmd0aCkge1xuICAgICAgY29uc3QgbmV4dExpbmUgPSBsaW5lc1tuZXh0TGluZUluZGV4XTtcbiAgICAgIGNvbnN0IG5leHRNYXRjaCA9IG5leHRMaW5lLm1hdGNoKE9SREVSRURfTElTVF9JVEVNX1JFR0VYKTtcbiAgICAgIGlmIChuZXh0TWF0Y2gpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAobmV4dExpbmUudHJpbSgpID09PSBcIlwiKSB7XG4gICAgICAgIGl0ZW1MaW5lcy5wdXNoKG5leHRMaW5lKTtcbiAgICAgICAgaXRlbUNvbnRlbnQgKz0gXCJcXG5cIjtcbiAgICAgICAgbmV4dExpbmVJbmRleCArPSAxO1xuICAgICAgfSBlbHNlIGlmIChuZXh0TGluZS5tYXRjaChJTkRFTlRFRF9MSU5FX1JFR0VYKSkge1xuICAgICAgICBpdGVtTGluZXMucHVzaChuZXh0TGluZSk7XG4gICAgICAgIGl0ZW1Db250ZW50ICs9IGBcbiR7bmV4dExpbmUuc2xpY2UoaW5kZW50TGV2ZWwgKyAyKX1gO1xuICAgICAgICBuZXh0TGluZUluZGV4ICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgbGlzdEl0ZW1zLnB1c2goe1xuICAgICAgaW5kZW50OiBpbmRlbnRMZXZlbCxcbiAgICAgIG51bWJlcjogcGFyc2VJbnQobnVtYmVyLCAxMCksXG4gICAgICBjb250ZW50OiBpdGVtQ29udGVudC50cmltKCksXG4gICAgICByYXc6IGl0ZW1MaW5lcy5qb2luKFwiXFxuXCIpXG4gICAgfSk7XG4gICAgY29uc3VtZWQgPSBuZXh0TGluZUluZGV4O1xuICAgIGN1cnJlbnRMaW5lSW5kZXggPSBuZXh0TGluZUluZGV4O1xuICB9XG4gIHJldHVybiBbbGlzdEl0ZW1zLCBjb25zdW1lZF07XG59XG5mdW5jdGlvbiBidWlsZE5lc3RlZFN0cnVjdHVyZShpdGVtcywgYmFzZUluZGVudCwgbGV4ZXIpIHtcbiAgdmFyIF9hO1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgbGV0IGN1cnJlbnRJbmRleCA9IDA7XG4gIHdoaWxlIChjdXJyZW50SW5kZXggPCBpdGVtcy5sZW5ndGgpIHtcbiAgICBjb25zdCBpdGVtID0gaXRlbXNbY3VycmVudEluZGV4XTtcbiAgICBpZiAoaXRlbS5pbmRlbnQgPT09IGJhc2VJbmRlbnQpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnRMaW5lcyA9IGl0ZW0uY29udGVudC5zcGxpdChcIlxcblwiKTtcbiAgICAgIGNvbnN0IG1haW5UZXh0ID0gKChfYSA9IGNvbnRlbnRMaW5lc1swXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnRyaW0oKSkgfHwgXCJcIjtcbiAgICAgIGNvbnN0IHRva2VucyA9IFtdO1xuICAgICAgaWYgKG1haW5UZXh0KSB7XG4gICAgICAgIHRva2Vucy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBcInBhcmFncmFwaFwiLFxuICAgICAgICAgIHJhdzogbWFpblRleHQsXG4gICAgICAgICAgdG9rZW5zOiBsZXhlci5pbmxpbmVUb2tlbnMobWFpblRleHQpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRkaXRpb25hbENvbnRlbnQgPSBjb250ZW50TGluZXMuc2xpY2UoMSkuam9pbihcIlxcblwiKS50cmltKCk7XG4gICAgICBpZiAoYWRkaXRpb25hbENvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgYmxvY2tUb2tlbnMgPSBsZXhlci5ibG9ja1Rva2VucyhhZGRpdGlvbmFsQ29udGVudCk7XG4gICAgICAgIHRva2Vucy5wdXNoKC4uLmJsb2NrVG9rZW5zKTtcbiAgICAgIH1cbiAgICAgIGxldCBsb29rQWhlYWRJbmRleCA9IGN1cnJlbnRJbmRleCArIDE7XG4gICAgICBjb25zdCBuZXN0ZWRJdGVtcyA9IFtdO1xuICAgICAgd2hpbGUgKGxvb2tBaGVhZEluZGV4IDwgaXRlbXMubGVuZ3RoICYmIGl0ZW1zW2xvb2tBaGVhZEluZGV4XS5pbmRlbnQgPiBiYXNlSW5kZW50KSB7XG4gICAgICAgIG5lc3RlZEl0ZW1zLnB1c2goaXRlbXNbbG9va0FoZWFkSW5kZXhdKTtcbiAgICAgICAgbG9va0FoZWFkSW5kZXggKz0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IG5leHRJbmRlbnQgPSBNYXRoLm1pbiguLi5uZXN0ZWRJdGVtcy5tYXAoKG5lc3RlZEl0ZW0pID0+IG5lc3RlZEl0ZW0uaW5kZW50KSk7XG4gICAgICAgIGNvbnN0IG5lc3RlZExpc3RJdGVtcyA9IGJ1aWxkTmVzdGVkU3RydWN0dXJlKG5lc3RlZEl0ZW1zLCBuZXh0SW5kZW50LCBsZXhlcik7XG4gICAgICAgIHRva2Vucy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgICBvcmRlcmVkOiB0cnVlLFxuICAgICAgICAgIHN0YXJ0OiBuZXN0ZWRJdGVtc1swXS5udW1iZXIsXG4gICAgICAgICAgaXRlbXM6IG5lc3RlZExpc3RJdGVtcyxcbiAgICAgICAgICByYXc6IG5lc3RlZEl0ZW1zLm1hcCgobmVzdGVkSXRlbSkgPT4gbmVzdGVkSXRlbS5yYXcpLmpvaW4oXCJcXG5cIilcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIHR5cGU6IFwibGlzdF9pdGVtXCIsXG4gICAgICAgIHJhdzogaXRlbS5yYXcsXG4gICAgICAgIHRva2Vuc1xuICAgICAgfSk7XG4gICAgICBjdXJyZW50SW5kZXggPSBsb29rQWhlYWRJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEluZGV4ICs9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBwYXJzZUxpc3RJdGVtcyhpdGVtcywgaGVscGVycykge1xuICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgaWYgKGl0ZW0udHlwZSAhPT0gXCJsaXN0X2l0ZW1cIikge1xuICAgICAgcmV0dXJuIGhlbHBlcnMucGFyc2VDaGlsZHJlbihbaXRlbV0pWzBdO1xuICAgIH1cbiAgICBjb25zdCBjb250ZW50ID0gW107XG4gICAgaWYgKGl0ZW0udG9rZW5zICYmIGl0ZW0udG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIGl0ZW0udG9rZW5zLmZvckVhY2goKGl0ZW1Ub2tlbikgPT4ge1xuICAgICAgICBpZiAoaXRlbVRva2VuLnR5cGUgPT09IFwicGFyYWdyYXBoXCIgfHwgaXRlbVRva2VuLnR5cGUgPT09IFwibGlzdFwiIHx8IGl0ZW1Ub2tlbi50eXBlID09PSBcImJsb2NrcXVvdGVcIiB8fCBpdGVtVG9rZW4udHlwZSA9PT0gXCJjb2RlXCIpIHtcbiAgICAgICAgICBjb250ZW50LnB1c2goLi4uaGVscGVycy5wYXJzZUNoaWxkcmVuKFtpdGVtVG9rZW5dKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbVRva2VuLnR5cGUgPT09IFwidGV4dFwiICYmIGl0ZW1Ub2tlbi50b2tlbnMpIHtcbiAgICAgICAgICBjb25zdCBpbmxpbmVDb250ZW50ID0gaGVscGVycy5wYXJzZUNoaWxkcmVuKFtpdGVtVG9rZW5dKTtcbiAgICAgICAgICBjb250ZW50LnB1c2goe1xuICAgICAgICAgICAgdHlwZTogXCJwYXJhZ3JhcGhcIixcbiAgICAgICAgICAgIGNvbnRlbnQ6IGlubGluZUNvbnRlbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBoZWxwZXJzLnBhcnNlQ2hpbGRyZW4oW2l0ZW1Ub2tlbl0pO1xuICAgICAgICAgIGlmIChwYXJzZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29udGVudC5wdXNoKC4uLnBhcnNlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwibGlzdEl0ZW1cIixcbiAgICAgIGNvbnRlbnRcbiAgICB9O1xuICB9KTtcbn1cblxuLy8gc3JjL29yZGVyZWQtbGlzdC9vcmRlcmVkLWxpc3QudHNcbnZhciBMaXN0SXRlbU5hbWUyID0gXCJsaXN0SXRlbVwiO1xudmFyIFRleHRTdHlsZU5hbWUyID0gXCJ0ZXh0U3R5bGVcIjtcbnZhciBvcmRlcmVkTGlzdElucHV0UmVnZXggPSAvXihcXGQrKVxcLlxccyQvO1xudmFyIE9yZGVyZWRMaXN0ID0gTm9kZTMuY3JlYXRlKHtcbiAgbmFtZTogXCJvcmRlcmVkTGlzdFwiLFxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtVHlwZU5hbWU6IFwibGlzdEl0ZW1cIixcbiAgICAgIEhUTUxBdHRyaWJ1dGVzOiB7fSxcbiAgICAgIGtlZXBNYXJrczogZmFsc2UsXG4gICAgICBrZWVwQXR0cmlidXRlczogZmFsc2VcbiAgICB9O1xuICB9LFxuICBncm91cDogXCJibG9jayBsaXN0XCIsXG4gIGNvbnRlbnQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWV9K2A7XG4gIH0sXG4gIGFkZEF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIGRlZmF1bHQ6IDEsXG4gICAgICAgIHBhcnNlSFRNTDogKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJzdGFydFwiKSA/IHBhcnNlSW50KGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwic3RhcnRcIikgfHwgXCJcIiwgMTApIDogMTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgcGFyc2VIVE1MOiAoZWxlbWVudCkgPT4gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpXG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgcGFyc2VIVE1MKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRhZzogXCJvbFwiXG4gICAgICB9XG4gICAgXTtcbiAgfSxcbiAgcmVuZGVySFRNTCh7IEhUTUxBdHRyaWJ1dGVzIH0pIHtcbiAgICBjb25zdCB7IHN0YXJ0LCAuLi5hdHRyaWJ1dGVzV2l0aG91dFN0YXJ0IH0gPSBIVE1MQXR0cmlidXRlcztcbiAgICByZXR1cm4gc3RhcnQgPT09IDEgPyBbXCJvbFwiLCBtZXJnZUF0dHJpYnV0ZXMzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcywgYXR0cmlidXRlc1dpdGhvdXRTdGFydCksIDBdIDogW1wib2xcIiwgbWVyZ2VBdHRyaWJ1dGVzMyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsIEhUTUxBdHRyaWJ1dGVzKSwgMF07XG4gIH0sXG4gIG1hcmtkb3duVG9rZW5OYW1lOiBcImxpc3RcIixcbiAgcGFyc2VNYXJrZG93bjogKHRva2VuLCBoZWxwZXJzKSA9PiB7XG4gICAgaWYgKHRva2VuLnR5cGUgIT09IFwibGlzdFwiIHx8ICF0b2tlbi5vcmRlcmVkKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0VmFsdWUgPSB0b2tlbi5zdGFydCB8fCAxO1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0b2tlbi5pdGVtcyA/IHBhcnNlTGlzdEl0ZW1zKHRva2VuLml0ZW1zLCBoZWxwZXJzKSA6IFtdO1xuICAgIGlmIChzdGFydFZhbHVlICE9PSAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcIm9yZGVyZWRMaXN0XCIsXG4gICAgICAgIGF0dHJzOiB7IHN0YXJ0OiBzdGFydFZhbHVlIH0sXG4gICAgICAgIGNvbnRlbnRcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIm9yZGVyZWRMaXN0XCIsXG4gICAgICBjb250ZW50XG4gICAgfTtcbiAgfSxcbiAgcmVuZGVyTWFya2Rvd246IChub2RlLCBoKSA9PiB7XG4gICAgaWYgKCFub2RlLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gaC5yZW5kZXJDaGlsZHJlbihub2RlLmNvbnRlbnQsIFwiXFxuXCIpO1xuICB9LFxuICBtYXJrZG93blRva2VuaXplcjoge1xuICAgIG5hbWU6IFwib3JkZXJlZExpc3RcIixcbiAgICBsZXZlbDogXCJibG9ja1wiLFxuICAgIHN0YXJ0OiAoc3JjKSA9PiB7XG4gICAgICBjb25zdCBtYXRjaCA9IHNyYy5tYXRjaCgvXihcXHMqKShcXGQrKVxcLlxccysvKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gbWF0Y2ggPT0gbnVsbCA/IHZvaWQgMCA6IG1hdGNoLmluZGV4O1xuICAgICAgcmV0dXJuIGluZGV4ICE9PSB2b2lkIDAgPyBpbmRleCA6IC0xO1xuICAgIH0sXG4gICAgdG9rZW5pemU6IChzcmMsIF90b2tlbnMsIGxleGVyKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCBsaW5lcyA9IHNyYy5zcGxpdChcIlxcblwiKTtcbiAgICAgIGNvbnN0IFtsaXN0SXRlbXMsIGNvbnN1bWVkXSA9IGNvbGxlY3RPcmRlcmVkTGlzdEl0ZW1zKGxpbmVzKTtcbiAgICAgIGlmIChsaXN0SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtcyA9IGJ1aWxkTmVzdGVkU3RydWN0dXJlKGxpc3RJdGVtcywgMCwgbGV4ZXIpO1xuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdm9pZCAwO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9ICgoX2EgPSBsaXN0SXRlbXNbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5udW1iZXIpIHx8IDE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgb3JkZXJlZDogdHJ1ZSxcbiAgICAgICAgc3RhcnQ6IHN0YXJ0VmFsdWUsXG4gICAgICAgIGl0ZW1zLFxuICAgICAgICByYXc6IGxpbmVzLnNsaWNlKDAsIGNvbnN1bWVkKS5qb2luKFwiXFxuXCIpXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgbWFya2Rvd25PcHRpb25zOiB7XG4gICAgaW5kZW50c0NvbnRlbnQ6IHRydWVcbiAgfSxcbiAgYWRkQ29tbWFuZHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvZ2dsZU9yZGVyZWRMaXN0OiAoKSA9PiAoeyBjb21tYW5kcywgY2hhaW4gfSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmtlZXBBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNoYWluKCkudG9nZ2xlTGlzdCh0aGlzLm5hbWUsIHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUsIHRoaXMub3B0aW9ucy5rZWVwTWFya3MpLnVwZGF0ZUF0dHJpYnV0ZXMoTGlzdEl0ZW1OYW1lMiwgdGhpcy5lZGl0b3IuZ2V0QXR0cmlidXRlcyhUZXh0U3R5bGVOYW1lMikpLnJ1bigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21tYW5kcy50b2dnbGVMaXN0KHRoaXMubmFtZSwgdGhpcy5vcHRpb25zLml0ZW1UeXBlTmFtZSwgdGhpcy5vcHRpb25zLmtlZXBNYXJrcyk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiTW9kLVNoaWZ0LTdcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlT3JkZXJlZExpc3QoKVxuICAgIH07XG4gIH0sXG4gIGFkZElucHV0UnVsZXMoKSB7XG4gICAgbGV0IGlucHV0UnVsZSA9IHdyYXBwaW5nSW5wdXRSdWxlMih7XG4gICAgICBmaW5kOiBvcmRlcmVkTGlzdElucHV0UmVnZXgsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBnZXRBdHRyaWJ1dGVzOiAobWF0Y2gpID0+ICh7IHN0YXJ0OiArbWF0Y2hbMV0gfSksXG4gICAgICBqb2luUHJlZGljYXRlOiAobWF0Y2gsIG5vZGUpID0+IG5vZGUuY2hpbGRDb3VudCArIG5vZGUuYXR0cnMuc3RhcnQgPT09ICttYXRjaFsxXVxuICAgIH0pO1xuICAgIGlmICh0aGlzLm9wdGlvbnMua2VlcE1hcmtzIHx8IHRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcykge1xuICAgICAgaW5wdXRSdWxlID0gd3JhcHBpbmdJbnB1dFJ1bGUyKHtcbiAgICAgICAgZmluZDogb3JkZXJlZExpc3RJbnB1dFJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIGtlZXBNYXJrczogdGhpcy5vcHRpb25zLmtlZXBNYXJrcyxcbiAgICAgICAga2VlcEF0dHJpYnV0ZXM6IHRoaXMub3B0aW9ucy5rZWVwQXR0cmlidXRlcyxcbiAgICAgICAgZ2V0QXR0cmlidXRlczogKG1hdGNoKSA9PiAoeyBzdGFydDogK21hdGNoWzFdLCAuLi50aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKFRleHRTdHlsZU5hbWUyKSB9KSxcbiAgICAgICAgam9pblByZWRpY2F0ZTogKG1hdGNoLCBub2RlKSA9PiBub2RlLmNoaWxkQ291bnQgKyBub2RlLmF0dHJzLnN0YXJ0ID09PSArbWF0Y2hbMV0sXG4gICAgICAgIGVkaXRvcjogdGhpcy5lZGl0b3JcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gW2lucHV0UnVsZV07XG4gIH1cbn0pO1xuXG4vLyBzcmMvdGFzay1pdGVtL3Rhc2staXRlbS50c1xuaW1wb3J0IHtcbiAgZ2V0UmVuZGVyZWRBdHRyaWJ1dGVzLFxuICBtZXJnZUF0dHJpYnV0ZXMgYXMgbWVyZ2VBdHRyaWJ1dGVzNCxcbiAgTm9kZSBhcyBOb2RlNCxcbiAgcmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50IGFzIHJlbmRlck5lc3RlZE1hcmtkb3duQ29udGVudDIsXG4gIHdyYXBwaW5nSW5wdXRSdWxlIGFzIHdyYXBwaW5nSW5wdXRSdWxlM1xufSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG52YXIgaW5wdXRSZWdleCA9IC9eXFxzKihcXFsoWyggfHhdKT9cXF0pXFxzJC87XG52YXIgVGFza0l0ZW0gPSBOb2RlNC5jcmVhdGUoe1xuICBuYW1lOiBcInRhc2tJdGVtXCIsXG4gIGFkZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5lc3RlZDogZmFsc2UsXG4gICAgICBIVE1MQXR0cmlidXRlczoge30sXG4gICAgICB0YXNrTGlzdFR5cGVOYW1lOiBcInRhc2tMaXN0XCIsXG4gICAgICBhMTF5OiB2b2lkIDBcbiAgICB9O1xuICB9LFxuICBjb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubmVzdGVkID8gXCJwYXJhZ3JhcGggYmxvY2sqXCIgOiBcInBhcmFncmFwaCtcIjtcbiAgfSxcbiAgZGVmaW5pbmc6IHRydWUsXG4gIGFkZEF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNoZWNrZWQ6IHtcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIGtlZXBPblNwbGl0OiBmYWxzZSxcbiAgICAgICAgcGFyc2VIVE1MOiAoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGFDaGVja2VkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWNoZWNrZWRcIik7XG4gICAgICAgICAgcmV0dXJuIGRhdGFDaGVja2VkID09PSBcIlwiIHx8IGRhdGFDaGVja2VkID09PSBcInRydWVcIjtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVySFRNTDogKGF0dHJpYnV0ZXMpID0+ICh7XG4gICAgICAgICAgXCJkYXRhLWNoZWNrZWRcIjogYXR0cmlidXRlcy5jaGVja2VkXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgcGFyc2VIVE1MKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRhZzogYGxpW2RhdGEtdHlwZT1cIiR7dGhpcy5uYW1lfVwiXWAsXG4gICAgICAgIHByaW9yaXR5OiA1MVxuICAgICAgfVxuICAgIF07XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBub2RlLCBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFwibGlcIixcbiAgICAgIG1lcmdlQXR0cmlidXRlczQodGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLCBIVE1MQXR0cmlidXRlcywge1xuICAgICAgICBcImRhdGEtdHlwZVwiOiB0aGlzLm5hbWVcbiAgICAgIH0pLFxuICAgICAgW1xuICAgICAgICBcImxhYmVsXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBcImlucHV0XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICAgICAgY2hlY2tlZDogbm9kZS5hdHRycy5jaGVja2VkID8gXCJjaGVja2VkXCIgOiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbXCJzcGFuXCJdXG4gICAgICBdLFxuICAgICAgW1wiZGl2XCIsIDBdXG4gICAgXTtcbiAgfSxcbiAgcGFyc2VNYXJrZG93bjogKHRva2VuLCBoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IFtdO1xuICAgIGlmICh0b2tlbi50b2tlbnMgJiYgdG9rZW4udG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnRlbnQucHVzaChoLmNyZWF0ZU5vZGUoXCJwYXJhZ3JhcGhcIiwge30sIGgucGFyc2VJbmxpbmUodG9rZW4udG9rZW5zKSkpO1xuICAgIH0gZWxzZSBpZiAodG9rZW4udGV4dCkge1xuICAgICAgY29udGVudC5wdXNoKGguY3JlYXRlTm9kZShcInBhcmFncmFwaFwiLCB7fSwgW2guY3JlYXRlTm9kZShcInRleHRcIiwgeyB0ZXh0OiB0b2tlbi50ZXh0IH0pXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50LnB1c2goaC5jcmVhdGVOb2RlKFwicGFyYWdyYXBoXCIsIHt9LCBbXSkpO1xuICAgIH1cbiAgICBpZiAodG9rZW4ubmVzdGVkVG9rZW5zICYmIHRva2VuLm5lc3RlZFRva2Vucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBuZXN0ZWRDb250ZW50ID0gaC5wYXJzZUNoaWxkcmVuKHRva2VuLm5lc3RlZFRva2Vucyk7XG4gICAgICBjb250ZW50LnB1c2goLi4ubmVzdGVkQ29udGVudCk7XG4gICAgfVxuICAgIHJldHVybiBoLmNyZWF0ZU5vZGUoXCJ0YXNrSXRlbVwiLCB7IGNoZWNrZWQ6IHRva2VuLmNoZWNrZWQgfHwgZmFsc2UgfSwgY29udGVudCk7XG4gIH0sXG4gIHJlbmRlck1hcmtkb3duOiAobm9kZSwgaCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBjaGVja2VkQ2hhciA9ICgoX2EgPSBub2RlLmF0dHJzKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2hlY2tlZCkgPyBcInhcIiA6IFwiIFwiO1xuICAgIGNvbnN0IHByZWZpeCA9IGAtIFske2NoZWNrZWRDaGFyfV0gYDtcbiAgICByZXR1cm4gcmVuZGVyTmVzdGVkTWFya2Rvd25Db250ZW50Mihub2RlLCBoLCBwcmVmaXgpO1xuICB9LFxuICBhZGRLZXlib2FyZFNob3J0Y3V0cygpIHtcbiAgICBjb25zdCBzaG9ydGN1dHMgPSB7XG4gICAgICBFbnRlcjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMuc3BsaXRMaXN0SXRlbSh0aGlzLm5hbWUpLFxuICAgICAgXCJTaGlmdC1UYWJcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMubGlmdExpc3RJdGVtKHRoaXMubmFtZSlcbiAgICB9O1xuICAgIGlmICghdGhpcy5vcHRpb25zLm5lc3RlZCkge1xuICAgICAgcmV0dXJuIHNob3J0Y3V0cztcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNob3J0Y3V0cyxcbiAgICAgIFRhYjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMuc2lua0xpc3RJdGVtKHRoaXMubmFtZSlcbiAgICB9O1xuICB9LFxuICBhZGROb2RlVmlldygpIHtcbiAgICByZXR1cm4gKHsgbm9kZSwgSFRNTEF0dHJpYnV0ZXMsIGdldFBvcywgZWRpdG9yIH0pID0+IHtcbiAgICAgIGNvbnN0IGxpc3RJdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpO1xuICAgICAgY29uc3QgY2hlY2tib3hXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxhYmVsXCIpO1xuICAgICAgY29uc3QgY2hlY2tib3hTdHlsZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICAgICAgY29uc3QgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICBjb25zdCB1cGRhdGVBMTFZID0gKGN1cnJlbnROb2RlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNoZWNrYm94LmFyaWFMYWJlbCA9ICgoX2IgPSAoX2EgPSB0aGlzLm9wdGlvbnMuYTExeSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNoZWNrYm94TGFiZWwpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBjdXJyZW50Tm9kZSwgY2hlY2tib3guY2hlY2tlZCkpIHx8IGBUYXNrIGl0ZW0gY2hlY2tib3ggZm9yICR7Y3VycmVudE5vZGUudGV4dENvbnRlbnQgfHwgXCJlbXB0eSB0YXNrIGl0ZW1cIn1gO1xuICAgICAgfTtcbiAgICAgIHVwZGF0ZUExMVkobm9kZSk7XG4gICAgICBjaGVja2JveFdyYXBwZXIuY29udGVudEVkaXRhYmxlID0gXCJmYWxzZVwiO1xuICAgICAgY2hlY2tib3gudHlwZSA9IFwiY2hlY2tib3hcIjtcbiAgICAgIGNoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtcbiAgICAgIGNoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZWRpdG9yLmlzRWRpdGFibGUgJiYgIXRoaXMub3B0aW9ucy5vblJlYWRPbmx5Q2hlY2tlZCkge1xuICAgICAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSAhY2hlY2tib3guY2hlY2tlZDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBjaGVja2VkIH0gPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGlmIChlZGl0b3IuaXNFZGl0YWJsZSAmJiB0eXBlb2YgZ2V0UG9zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cyh2b2lkIDAsIHsgc2Nyb2xsSW50b1ZpZXc6IGZhbHNlIH0pLmNvbW1hbmQoKHsgdHIgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBnZXRQb3MoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcG9zaXRpb24gIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3VycmVudE5vZGUgPSB0ci5kb2Mubm9kZUF0KHBvc2l0aW9uKTtcbiAgICAgICAgICAgIHRyLnNldE5vZGVNYXJrdXAocG9zaXRpb24sIHZvaWQgMCwge1xuICAgICAgICAgICAgICAuLi5jdXJyZW50Tm9kZSA9PSBudWxsID8gdm9pZCAwIDogY3VycmVudE5vZGUuYXR0cnMsXG4gICAgICAgICAgICAgIGNoZWNrZWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSkucnVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlZGl0b3IuaXNFZGl0YWJsZSAmJiB0aGlzLm9wdGlvbnMub25SZWFkT25seUNoZWNrZWQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5vblJlYWRPbmx5Q2hlY2tlZChub2RlLCBjaGVja2VkKSkge1xuICAgICAgICAgICAgY2hlY2tib3guY2hlY2tlZCA9ICFjaGVja2JveC5jaGVja2VkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBsaXN0SXRlbS5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIGxpc3RJdGVtLmRhdGFzZXQuY2hlY2tlZCA9IG5vZGUuYXR0cnMuY2hlY2tlZDtcbiAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSBub2RlLmF0dHJzLmNoZWNrZWQ7XG4gICAgICBjaGVja2JveFdyYXBwZXIuYXBwZW5kKGNoZWNrYm94LCBjaGVja2JveFN0eWxlcik7XG4gICAgICBsaXN0SXRlbS5hcHBlbmQoY2hlY2tib3hXcmFwcGVyLCBjb250ZW50KTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKEhUTUxBdHRyaWJ1dGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgbGlzdEl0ZW0uc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgICBsZXQgcHJldlJlbmRlcmVkQXR0cmlidXRlS2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoSFRNTEF0dHJpYnV0ZXMpKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRvbTogbGlzdEl0ZW0sXG4gICAgICAgIGNvbnRlbnRET006IGNvbnRlbnQsXG4gICAgICAgIHVwZGF0ZTogKHVwZGF0ZWROb2RlKSA9PiB7XG4gICAgICAgICAgaWYgKHVwZGF0ZWROb2RlLnR5cGUgIT09IHRoaXMudHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsaXN0SXRlbS5kYXRhc2V0LmNoZWNrZWQgPSB1cGRhdGVkTm9kZS5hdHRycy5jaGVja2VkO1xuICAgICAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSB1cGRhdGVkTm9kZS5hdHRycy5jaGVja2VkO1xuICAgICAgICAgIHVwZGF0ZUExMVkodXBkYXRlZE5vZGUpO1xuICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbkF0dHJpYnV0ZXMgPSBlZGl0b3IuZXh0ZW5zaW9uTWFuYWdlci5hdHRyaWJ1dGVzO1xuICAgICAgICAgIGNvbnN0IG5ld0hUTUxBdHRyaWJ1dGVzID0gZ2V0UmVuZGVyZWRBdHRyaWJ1dGVzKHVwZGF0ZWROb2RlLCBleHRlbnNpb25BdHRyaWJ1dGVzKTtcbiAgICAgICAgICBjb25zdCBuZXdLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyhuZXdIVE1MQXR0cmlidXRlcykpO1xuICAgICAgICAgIGNvbnN0IHN0YXRpY0F0dHJzID0gdGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzO1xuICAgICAgICAgIHByZXZSZW5kZXJlZEF0dHJpYnV0ZUtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIW5ld0tleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgaWYgKGtleSBpbiBzdGF0aWNBdHRycykge1xuICAgICAgICAgICAgICAgIGxpc3RJdGVtLnNldEF0dHJpYnV0ZShrZXksIHN0YXRpY0F0dHJzW2tleV0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpc3RJdGVtLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMobmV3SFRNTEF0dHJpYnV0ZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgaWYgKGtleSBpbiBzdGF0aWNBdHRycykge1xuICAgICAgICAgICAgICAgIGxpc3RJdGVtLnNldEF0dHJpYnV0ZShrZXksIHN0YXRpY0F0dHJzW2tleV0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpc3RJdGVtLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaXN0SXRlbS5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJldlJlbmRlcmVkQXR0cmlidXRlS2V5cyA9IG5ld0tleXM7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgfSxcbiAgYWRkSW5wdXRSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgd3JhcHBpbmdJbnB1dFJ1bGUzKHtcbiAgICAgICAgZmluZDogaW5wdXRSZWdleCxcbiAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVzOiAobWF0Y2gpID0+ICh7XG4gICAgICAgICAgY2hlY2tlZDogbWF0Y2hbbWF0Y2gubGVuZ3RoIC0gMV0gPT09IFwieFwiXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIF07XG4gIH1cbn0pO1xuXG4vLyBzcmMvdGFzay1saXN0L3Rhc2stbGlzdC50c1xuaW1wb3J0IHsgbWVyZ2VBdHRyaWJ1dGVzIGFzIG1lcmdlQXR0cmlidXRlczUsIE5vZGUgYXMgTm9kZTUsIHBhcnNlSW5kZW50ZWRCbG9ja3MgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG52YXIgVGFza0xpc3QgPSBOb2RlNS5jcmVhdGUoe1xuICBuYW1lOiBcInRhc2tMaXN0XCIsXG4gIGFkZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1UeXBlTmFtZTogXCJ0YXNrSXRlbVwiLFxuICAgICAgSFRNTEF0dHJpYnV0ZXM6IHt9XG4gICAgfTtcbiAgfSxcbiAgZ3JvdXA6IFwiYmxvY2sgbGlzdFwiLFxuICBjb250ZW50KCkge1xuICAgIHJldHVybiBgJHt0aGlzLm9wdGlvbnMuaXRlbVR5cGVOYW1lfStgO1xuICB9LFxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGFnOiBgdWxbZGF0YS10eXBlPVwiJHt0aGlzLm5hbWV9XCJdYCxcbiAgICAgICAgcHJpb3JpdHk6IDUxXG4gICAgICB9XG4gICAgXTtcbiAgfSxcbiAgcmVuZGVySFRNTCh7IEhUTUxBdHRyaWJ1dGVzIH0pIHtcbiAgICByZXR1cm4gW1widWxcIiwgbWVyZ2VBdHRyaWJ1dGVzNSh0aGlzLm9wdGlvbnMuSFRNTEF0dHJpYnV0ZXMsIEhUTUxBdHRyaWJ1dGVzLCB7IFwiZGF0YS10eXBlXCI6IHRoaXMubmFtZSB9KSwgMF07XG4gIH0sXG4gIHBhcnNlTWFya2Rvd246ICh0b2tlbiwgaCkgPT4ge1xuICAgIHJldHVybiBoLmNyZWF0ZU5vZGUoXCJ0YXNrTGlzdFwiLCB7fSwgaC5wYXJzZUNoaWxkcmVuKHRva2VuLml0ZW1zIHx8IFtdKSk7XG4gIH0sXG4gIHJlbmRlck1hcmtkb3duOiAobm9kZSwgaCkgPT4ge1xuICAgIGlmICghbm9kZS5jb250ZW50KSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIGgucmVuZGVyQ2hpbGRyZW4obm9kZS5jb250ZW50LCBcIlxcblwiKTtcbiAgfSxcbiAgbWFya2Rvd25Ub2tlbml6ZXI6IHtcbiAgICBuYW1lOiBcInRhc2tMaXN0XCIsXG4gICAgbGV2ZWw6IFwiYmxvY2tcIixcbiAgICBzdGFydChzcmMpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGNvbnN0IGluZGV4ID0gKF9hID0gc3JjLm1hdGNoKC9eXFxzKlstKypdXFxzK1xcWyhbIHhYXSlcXF1cXHMrLykpID09IG51bGwgPyB2b2lkIDAgOiBfYS5pbmRleDtcbiAgICAgIHJldHVybiBpbmRleCAhPT0gdm9pZCAwID8gaW5kZXggOiAtMTtcbiAgICB9LFxuICAgIHRva2VuaXplKHNyYywgdG9rZW5zLCBsZXhlcikge1xuICAgICAgY29uc3QgcGFyc2VUYXNrTGlzdENvbnRlbnQgPSAoY29udGVudCkgPT4ge1xuICAgICAgICBjb25zdCBuZXN0ZWRSZXN1bHQgPSBwYXJzZUluZGVudGVkQmxvY2tzKFxuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaXRlbVBhdHRlcm46IC9eKFxccyopKFstKypdKVxccytcXFsoWyB4WF0pXFxdXFxzKyguKikkLyxcbiAgICAgICAgICAgIGV4dHJhY3RJdGVtRGF0YTogKG1hdGNoKSA9PiAoe1xuICAgICAgICAgICAgICBpbmRlbnRMZXZlbDogbWF0Y2hbMV0ubGVuZ3RoLFxuICAgICAgICAgICAgICBtYWluQ29udGVudDogbWF0Y2hbNF0sXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IG1hdGNoWzNdLnRvTG93ZXJDYXNlKCkgPT09IFwieFwiXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNyZWF0ZVRva2VuOiAoZGF0YSwgbmVzdGVkVG9rZW5zKSA9PiAoe1xuICAgICAgICAgICAgICB0eXBlOiBcInRhc2tJdGVtXCIsXG4gICAgICAgICAgICAgIHJhdzogXCJcIixcbiAgICAgICAgICAgICAgbWFpbkNvbnRlbnQ6IGRhdGEubWFpbkNvbnRlbnQsXG4gICAgICAgICAgICAgIGluZGVudExldmVsOiBkYXRhLmluZGVudExldmVsLFxuICAgICAgICAgICAgICBjaGVja2VkOiBkYXRhLmNoZWNrZWQsXG4gICAgICAgICAgICAgIHRleHQ6IGRhdGEubWFpbkNvbnRlbnQsXG4gICAgICAgICAgICAgIHRva2VuczogbGV4ZXIuaW5saW5lVG9rZW5zKGRhdGEubWFpbkNvbnRlbnQpLFxuICAgICAgICAgICAgICBuZXN0ZWRUb2tlbnNcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLy8gQWxsb3cgcmVjdXJzaXZlIG5lc3RpbmdcbiAgICAgICAgICAgIGN1c3RvbU5lc3RlZFBhcnNlcjogcGFyc2VUYXNrTGlzdENvbnRlbnRcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxleGVyXG4gICAgICAgICk7XG4gICAgICAgIGlmIChuZXN0ZWRSZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcInRhc2tMaXN0XCIsXG4gICAgICAgICAgICAgIHJhdzogbmVzdGVkUmVzdWx0LnJhdyxcbiAgICAgICAgICAgICAgaXRlbXM6IG5lc3RlZFJlc3VsdC5pdGVtc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxleGVyLmJsb2NrVG9rZW5zKGNvbnRlbnQpO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlSW5kZW50ZWRCbG9ja3MoXG4gICAgICAgIHNyYyxcbiAgICAgICAge1xuICAgICAgICAgIGl0ZW1QYXR0ZXJuOiAvXihcXHMqKShbLSsqXSlcXHMrXFxbKFsgeFhdKVxcXVxccysoLiopJC8sXG4gICAgICAgICAgZXh0cmFjdEl0ZW1EYXRhOiAobWF0Y2gpID0+ICh7XG4gICAgICAgICAgICBpbmRlbnRMZXZlbDogbWF0Y2hbMV0ubGVuZ3RoLFxuICAgICAgICAgICAgbWFpbkNvbnRlbnQ6IG1hdGNoWzRdLFxuICAgICAgICAgICAgY2hlY2tlZDogbWF0Y2hbM10udG9Mb3dlckNhc2UoKSA9PT0gXCJ4XCJcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjcmVhdGVUb2tlbjogKGRhdGEsIG5lc3RlZFRva2VucykgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwidGFza0l0ZW1cIixcbiAgICAgICAgICAgIHJhdzogXCJcIixcbiAgICAgICAgICAgIG1haW5Db250ZW50OiBkYXRhLm1haW5Db250ZW50LFxuICAgICAgICAgICAgaW5kZW50TGV2ZWw6IGRhdGEuaW5kZW50TGV2ZWwsXG4gICAgICAgICAgICBjaGVja2VkOiBkYXRhLmNoZWNrZWQsXG4gICAgICAgICAgICB0ZXh0OiBkYXRhLm1haW5Db250ZW50LFxuICAgICAgICAgICAgdG9rZW5zOiBsZXhlci5pbmxpbmVUb2tlbnMoZGF0YS5tYWluQ29udGVudCksXG4gICAgICAgICAgICBuZXN0ZWRUb2tlbnNcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvLyBVc2UgdGhlIHJlY3Vyc2l2ZSBwYXJzZXIgZm9yIG5lc3RlZCBjb250ZW50XG4gICAgICAgICAgY3VzdG9tTmVzdGVkUGFyc2VyOiBwYXJzZVRhc2tMaXN0Q29udGVudFxuICAgICAgICB9LFxuICAgICAgICBsZXhlclxuICAgICAgKTtcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInRhc2tMaXN0XCIsXG4gICAgICAgIHJhdzogcmVzdWx0LnJhdyxcbiAgICAgICAgaXRlbXM6IHJlc3VsdC5pdGVtc1xuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIG1hcmtkb3duT3B0aW9uczoge1xuICAgIGluZGVudHNDb250ZW50OiB0cnVlXG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0b2dnbGVUYXNrTGlzdDogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMudG9nZ2xlTGlzdCh0aGlzLm5hbWUsIHRoaXMub3B0aW9ucy5pdGVtVHlwZU5hbWUpO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGFkZEtleWJvYXJkU2hvcnRjdXRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBcIk1vZC1TaGlmdC05XCI6ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZVRhc2tMaXN0KClcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL2tpdC9pbmRleC50c1xudmFyIExpc3RLaXQgPSBFeHRlbnNpb24yLmNyZWF0ZSh7XG4gIG5hbWU6IFwibGlzdEtpdFwiLFxuICBhZGRFeHRlbnNpb25zKCkge1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBbXTtcbiAgICBpZiAodGhpcy5vcHRpb25zLmJ1bGxldExpc3QgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbnNpb25zLnB1c2goQnVsbGV0TGlzdC5jb25maWd1cmUodGhpcy5vcHRpb25zLmJ1bGxldExpc3QpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5saXN0SXRlbSAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChMaXN0SXRlbS5jb25maWd1cmUodGhpcy5vcHRpb25zLmxpc3RJdGVtKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMubGlzdEtleW1hcCAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChMaXN0S2V5bWFwLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMubGlzdEtleW1hcCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0ICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKE9yZGVyZWRMaXN0LmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMub3JkZXJlZExpc3QpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy50YXNrSXRlbSAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChUYXNrSXRlbS5jb25maWd1cmUodGhpcy5vcHRpb25zLnRhc2tJdGVtKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMudGFza0xpc3QgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbnNpb25zLnB1c2goVGFza0xpc3QuY29uZmlndXJlKHRoaXMub3B0aW9ucy50YXNrTGlzdCkpO1xuICAgIH1cbiAgICByZXR1cm4gZXh0ZW5zaW9ucztcbiAgfVxufSk7XG5leHBvcnQge1xuICBCdWxsZXRMaXN0LFxuICBMaXN0SXRlbSxcbiAgTGlzdEtleW1hcCxcbiAgTGlzdEtpdCxcbiAgT3JkZXJlZExpc3QsXG4gIFRhc2tJdGVtLFxuICBUYXNrTGlzdCxcbiAgYnVsbGV0TGlzdElucHV0UmVnZXgsXG4gIGlucHV0UmVnZXgsXG4gIGxpc3RIZWxwZXJzX2V4cG9ydHMgYXMgbGlzdEhlbHBlcnMsXG4gIG9yZGVyZWRMaXN0SW5wdXRSZWdleFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-list/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-paragraph/dist/index.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-paragraph/dist/index.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Paragraph: () => (/* binding */ Paragraph),\n/* harmony export */ \"default\": () => (/* binding */ index_default)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n// src/paragraph.ts\n\nvar EMPTY_PARAGRAPH_MARKDOWN = \" \";\nvar NBSP_CHAR = \"\\xA0\";\nvar Paragraph = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"paragraph\",\n priority: 1e3,\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n group: \"block\",\n content: \"inline*\",\n parseHTML() {\n return [{ tag: \"p\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"p\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n parseMarkdown: (token, helpers) => {\n const tokens = token.tokens || [];\n if (tokens.length === 1 && tokens[0].type === \"image\") {\n return helpers.parseChildren([tokens[0]]);\n }\n const content = helpers.parseInline(tokens);\n if (content.length === 1 && content[0].type === \"text\" && (content[0].text === EMPTY_PARAGRAPH_MARKDOWN || content[0].text === NBSP_CHAR)) {\n return helpers.createNode(\"paragraph\", void 0, []);\n }\n return helpers.createNode(\"paragraph\", void 0, content);\n },\n renderMarkdown: (node, h) => {\n if (!node) {\n return \"\";\n }\n const content = Array.isArray(node.content) ? node.content : [];\n if (content.length === 0) {\n return EMPTY_PARAGRAPH_MARKDOWN;\n }\n return h.renderChildren(content);\n },\n addCommands() {\n return {\n setParagraph: () => ({ commands }) => {\n return commands.setNode(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Alt-0\": () => this.editor.commands.setParagraph()\n };\n }\n});\n\n// src/index.ts\nvar index_default = Paragraph;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1wYXJhZ3JhcGgvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNxRDtBQUNyRCxzQ0FBc0M7QUFDdEM7QUFDQSxnQkFBZ0IsOENBQUk7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGNBQWMsVUFBVTtBQUN4QixHQUFHO0FBQ0gsZUFBZSxnQkFBZ0I7QUFDL0IsaUJBQWlCLDZEQUFlO0FBQ2hDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDZCQUE2QixVQUFVO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBSUU7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHRpcHRhcFxcZXh0ZW5zaW9uLXBhcmFncmFwaFxcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3BhcmFncmFwaC50c1xuaW1wb3J0IHsgbWVyZ2VBdHRyaWJ1dGVzLCBOb2RlIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xudmFyIEVNUFRZX1BBUkFHUkFQSF9NQVJLRE9XTiA9IFwiJm5ic3A7XCI7XG52YXIgTkJTUF9DSEFSID0gXCJcXHhBMFwiO1xudmFyIFBhcmFncmFwaCA9IE5vZGUuY3JlYXRlKHtcbiAgbmFtZTogXCJwYXJhZ3JhcGhcIixcbiAgcHJpb3JpdHk6IDFlMyxcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgSFRNTEF0dHJpYnV0ZXM6IHt9XG4gICAgfTtcbiAgfSxcbiAgZ3JvdXA6IFwiYmxvY2tcIixcbiAgY29udGVudDogXCJpbmxpbmUqXCIsXG4gIHBhcnNlSFRNTCgpIHtcbiAgICByZXR1cm4gW3sgdGFnOiBcInBcIiB9XTtcbiAgfSxcbiAgcmVuZGVySFRNTCh7IEhUTUxBdHRyaWJ1dGVzIH0pIHtcbiAgICByZXR1cm4gW1wicFwiLCBtZXJnZUF0dHJpYnV0ZXModGhpcy5vcHRpb25zLkhUTUxBdHRyaWJ1dGVzLCBIVE1MQXR0cmlidXRlcyksIDBdO1xuICB9LFxuICBwYXJzZU1hcmtkb3duOiAodG9rZW4sIGhlbHBlcnMpID0+IHtcbiAgICBjb25zdCB0b2tlbnMgPSB0b2tlbi50b2tlbnMgfHwgW107XG4gICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDEgJiYgdG9rZW5zWzBdLnR5cGUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgcmV0dXJuIGhlbHBlcnMucGFyc2VDaGlsZHJlbihbdG9rZW5zWzBdXSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRlbnQgPSBoZWxwZXJzLnBhcnNlSW5saW5lKHRva2Vucyk7XG4gICAgaWYgKGNvbnRlbnQubGVuZ3RoID09PSAxICYmIGNvbnRlbnRbMF0udHlwZSA9PT0gXCJ0ZXh0XCIgJiYgKGNvbnRlbnRbMF0udGV4dCA9PT0gRU1QVFlfUEFSQUdSQVBIX01BUktET1dOIHx8IGNvbnRlbnRbMF0udGV4dCA9PT0gTkJTUF9DSEFSKSkge1xuICAgICAgcmV0dXJuIGhlbHBlcnMuY3JlYXRlTm9kZShcInBhcmFncmFwaFwiLCB2b2lkIDAsIFtdKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlbHBlcnMuY3JlYXRlTm9kZShcInBhcmFncmFwaFwiLCB2b2lkIDAsIGNvbnRlbnQpO1xuICB9LFxuICByZW5kZXJNYXJrZG93bjogKG5vZGUsIGgpID0+IHtcbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBjb25zdCBjb250ZW50ID0gQXJyYXkuaXNBcnJheShub2RlLmNvbnRlbnQpID8gbm9kZS5jb250ZW50IDogW107XG4gICAgaWYgKGNvbnRlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gRU1QVFlfUEFSQUdSQVBIX01BUktET1dOO1xuICAgIH1cbiAgICByZXR1cm4gaC5yZW5kZXJDaGlsZHJlbihjb250ZW50KTtcbiAgfSxcbiAgYWRkQ29tbWFuZHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldFBhcmFncmFwaDogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMuc2V0Tm9kZSh0aGlzLm5hbWUpO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGFkZEtleWJvYXJkU2hvcnRjdXRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBcIk1vZC1BbHQtMFwiOiAoKSA9PiB0aGlzLmVkaXRvci5jb21tYW5kcy5zZXRQYXJhZ3JhcGgoKVxuICAgIH07XG4gIH1cbn0pO1xuXG4vLyBzcmMvaW5kZXgudHNcbnZhciBpbmRleF9kZWZhdWx0ID0gUGFyYWdyYXBoO1xuZXhwb3J0IHtcbiAgUGFyYWdyYXBoLFxuICBpbmRleF9kZWZhdWx0IGFzIGRlZmF1bHRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-paragraph/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-strike/dist/index.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-strike/dist/index.js ***!
|
||
\*************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Strike: () => (/* binding */ Strike),\n/* harmony export */ \"default\": () => (/* binding */ index_default),\n/* harmony export */ inputRegex: () => (/* binding */ inputRegex),\n/* harmony export */ pasteRegex: () => (/* binding */ pasteRegex)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n// src/strike.ts\n\nvar inputRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))$/;\nvar pasteRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))/g;\nvar Strike = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Mark.create({\n name: \"strike\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n parseHTML() {\n return [\n {\n tag: \"s\"\n },\n {\n tag: \"del\"\n },\n {\n tag: \"strike\"\n },\n {\n style: \"text-decoration\",\n consuming: false,\n getAttrs: (style) => style.includes(\"line-through\") ? {} : false\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"s\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"del\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"strike\", helpers.parseInline(token.tokens || []));\n },\n renderMarkdown: (node, h) => {\n return `~~${h.renderChildren(node)}~~`;\n },\n addCommands() {\n return {\n setStrike: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleStrike: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetStrike: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-s\": () => this.editor.commands.toggleStrike()\n };\n },\n addInputRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markInputRule)({\n find: inputRegex,\n type: this.type\n })\n ];\n },\n addPasteRules() {\n return [\n (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.markPasteRule)({\n find: pasteRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Strike;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi1zdHJpa2UvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ21GO0FBQ25GO0FBQ0E7QUFDQSxhQUFhLDhDQUFJO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTtBQUNqRTtBQUNBO0FBQ0EsR0FBRztBQUNILGVBQWUsZ0JBQWdCO0FBQy9CLGlCQUFpQiw2REFBZTtBQUNoQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZ0JBQWdCLHVCQUF1QjtBQUN2QyxHQUFHO0FBQ0g7QUFDQTtBQUNBLDBCQUEwQixVQUFVO0FBQ3BDO0FBQ0EsT0FBTztBQUNQLDZCQUE2QixVQUFVO0FBQ3ZDO0FBQ0EsT0FBTztBQUNQLDRCQUE0QixVQUFVO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSwyREFBYTtBQUNuQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDJEQUFhO0FBQ25CO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQU1FO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXGV4dGVuc2lvbi1zdHJpa2VcXGRpc3RcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9zdHJpa2UudHNcbmltcG9ydCB7IE1hcmssIG1hcmtJbnB1dFJ1bGUsIG1hcmtQYXN0ZVJ1bGUsIG1lcmdlQXR0cmlidXRlcyB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbnZhciBpbnB1dFJlZ2V4ID0gLyg/Ol58XFxzKSh+fig/IVxccyt+fikoKD86W15+XSspKX5+KD8hXFxzK35+KSkkLztcbnZhciBwYXN0ZVJlZ2V4ID0gLyg/Ol58XFxzKSh+fig/IVxccyt+fikoKD86W15+XSspKX5+KD8hXFxzK35+KSkvZztcbnZhciBTdHJpa2UgPSBNYXJrLmNyZWF0ZSh7XG4gIG5hbWU6IFwic3RyaWtlXCIsXG4gIGFkZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEhUTUxBdHRyaWJ1dGVzOiB7fVxuICAgIH07XG4gIH0sXG4gIHBhcnNlSFRNTCgpIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0YWc6IFwic1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0YWc6IFwiZGVsXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRhZzogXCJzdHJpa2VcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3R5bGU6IFwidGV4dC1kZWNvcmF0aW9uXCIsXG4gICAgICAgIGNvbnN1bWluZzogZmFsc2UsXG4gICAgICAgIGdldEF0dHJzOiAoc3R5bGUpID0+IHN0eWxlLmluY2x1ZGVzKFwibGluZS10aHJvdWdoXCIpID8ge30gOiBmYWxzZVxuICAgICAgfVxuICAgIF07XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIFtcInNcIiwgbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcywgSFRNTEF0dHJpYnV0ZXMpLCAwXTtcbiAgfSxcbiAgbWFya2Rvd25Ub2tlbk5hbWU6IFwiZGVsXCIsXG4gIHBhcnNlTWFya2Rvd246ICh0b2tlbiwgaGVscGVycykgPT4ge1xuICAgIHJldHVybiBoZWxwZXJzLmFwcGx5TWFyayhcInN0cmlrZVwiLCBoZWxwZXJzLnBhcnNlSW5saW5lKHRva2VuLnRva2VucyB8fCBbXSkpO1xuICB9LFxuICByZW5kZXJNYXJrZG93bjogKG5vZGUsIGgpID0+IHtcbiAgICByZXR1cm4gYH5+JHtoLnJlbmRlckNoaWxkcmVuKG5vZGUpfX5+YDtcbiAgfSxcbiAgYWRkQ29tbWFuZHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldFN0cmlrZTogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMuc2V0TWFyayh0aGlzLm5hbWUpO1xuICAgICAgfSxcbiAgICAgIHRvZ2dsZVN0cmlrZTogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMudG9nZ2xlTWFyayh0aGlzLm5hbWUpO1xuICAgICAgfSxcbiAgICAgIHVuc2V0U3RyaWtlOiAoKSA9PiAoeyBjb21tYW5kcyB9KSA9PiB7XG4gICAgICAgIHJldHVybiBjb21tYW5kcy51bnNldE1hcmsodGhpcy5uYW1lKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBhZGRLZXlib2FyZFNob3J0Y3V0cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJNb2QtU2hpZnQtc1wiOiAoKSA9PiB0aGlzLmVkaXRvci5jb21tYW5kcy50b2dnbGVTdHJpa2UoKVxuICAgIH07XG4gIH0sXG4gIGFkZElucHV0UnVsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG1hcmtJbnB1dFJ1bGUoe1xuICAgICAgICBmaW5kOiBpbnB1dFJlZ2V4LFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pXG4gICAgXTtcbiAgfSxcbiAgYWRkUGFzdGVSdWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbWFya1Bhc3RlUnVsZSh7XG4gICAgICAgIGZpbmQ6IHBhc3RlUmVnZXgsXG4gICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgfSlcbiAgICBdO1xuICB9XG59KTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgaW5kZXhfZGVmYXVsdCA9IFN0cmlrZTtcbmV4cG9ydCB7XG4gIFN0cmlrZSxcbiAgaW5kZXhfZGVmYXVsdCBhcyBkZWZhdWx0LFxuICBpbnB1dFJlZ2V4LFxuICBwYXN0ZVJlZ2V4XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-strike/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-text/dist/index.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-text/dist/index.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Text: () => (/* binding */ Text),\n/* harmony export */ \"default\": () => (/* binding */ index_default)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n// src/text.ts\n\nvar Text = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Node.create({\n name: \"text\",\n group: \"inline\",\n parseMarkdown: (token) => {\n return {\n type: \"text\",\n text: token.text || \"\"\n };\n },\n renderMarkdown: (node) => node.text || \"\"\n});\n\n// src/index.ts\nvar index_default = Text;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi10ZXh0L2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDb0M7QUFDcEMsV0FBVyw4Q0FBSTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBSUU7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHRpcHRhcFxcZXh0ZW5zaW9uLXRleHRcXGRpc3RcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy90ZXh0LnRzXG5pbXBvcnQgeyBOb2RlIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xudmFyIFRleHQgPSBOb2RlLmNyZWF0ZSh7XG4gIG5hbWU6IFwidGV4dFwiLFxuICBncm91cDogXCJpbmxpbmVcIixcbiAgcGFyc2VNYXJrZG93bjogKHRva2VuKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgdGV4dDogdG9rZW4udGV4dCB8fCBcIlwiXG4gICAgfTtcbiAgfSxcbiAgcmVuZGVyTWFya2Rvd246IChub2RlKSA9PiBub2RlLnRleHQgfHwgXCJcIlxufSk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIGluZGV4X2RlZmF1bHQgPSBUZXh0O1xuZXhwb3J0IHtcbiAgVGV4dCxcbiAgaW5kZXhfZGVmYXVsdCBhcyBkZWZhdWx0XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-text/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extension-underline/dist/index.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/@tiptap/extension-underline/dist/index.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Underline: () => (/* binding */ Underline),\n/* harmony export */ \"default\": () => (/* binding */ index_default)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n// src/underline.ts\n\nvar Underline = _tiptap_core__WEBPACK_IMPORTED_MODULE_0__.Mark.create({\n name: \"underline\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n parseHTML() {\n return [\n {\n tag: \"u\"\n },\n {\n style: \"text-decoration\",\n consuming: false,\n getAttrs: (style) => style.includes(\"underline\") ? {} : false\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"u\", (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_0__.mergeAttributes)(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n parseMarkdown(token, helpers) {\n return helpers.applyMark(this.name || \"underline\", helpers.parseInline(token.tokens || []));\n },\n renderMarkdown(node, helpers) {\n return `++${helpers.renderChildren(node)}++`;\n },\n markdownTokenizer: {\n name: \"underline\",\n level: \"inline\",\n start(src) {\n return src.indexOf(\"++\");\n },\n tokenize(src, _tokens, lexer) {\n const rule = /^(\\+\\+)([\\s\\S]+?)(\\+\\+)/;\n const match = rule.exec(src);\n if (!match) {\n return void 0;\n }\n const innerContent = match[2].trim();\n return {\n type: \"underline\",\n raw: match[0],\n text: innerContent,\n tokens: lexer.inlineTokens(innerContent)\n };\n }\n },\n addCommands() {\n return {\n setUnderline: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleUnderline: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetUnderline: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-u\": () => this.editor.commands.toggleUnderline(),\n \"Mod-U\": () => this.editor.commands.toggleUnderline()\n };\n }\n});\n\n// src/index.ts\nvar index_default = Underline;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbi11bmRlcmxpbmUvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNxRDtBQUNyRCxnQkFBZ0IsOENBQUk7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBLEdBQUc7QUFDSCxlQUFlLGdCQUFnQjtBQUMvQixpQkFBaUIsNkRBQWU7QUFDaEMsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxnQkFBZ0IsNkJBQTZCO0FBQzdDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDZCQUE2QixVQUFVO0FBQ3ZDO0FBQ0EsT0FBTztBQUNQLGdDQUFnQyxVQUFVO0FBQzFDO0FBQ0EsT0FBTztBQUNQLCtCQUErQixVQUFVO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFJRTtBQUNGIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAdGlwdGFwXFxleHRlbnNpb24tdW5kZXJsaW5lXFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvdW5kZXJsaW5lLnRzXG5pbXBvcnQgeyBNYXJrLCBtZXJnZUF0dHJpYnV0ZXMgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG52YXIgVW5kZXJsaW5lID0gTWFyay5jcmVhdGUoe1xuICBuYW1lOiBcInVuZGVybGluZVwiLFxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBIVE1MQXR0cmlidXRlczoge31cbiAgICB9O1xuICB9LFxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGFnOiBcInVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3R5bGU6IFwidGV4dC1kZWNvcmF0aW9uXCIsXG4gICAgICAgIGNvbnN1bWluZzogZmFsc2UsXG4gICAgICAgIGdldEF0dHJzOiAoc3R5bGUpID0+IHN0eWxlLmluY2x1ZGVzKFwidW5kZXJsaW5lXCIpID8ge30gOiBmYWxzZVxuICAgICAgfVxuICAgIF07XG4gIH0sXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIFtcInVcIiwgbWVyZ2VBdHRyaWJ1dGVzKHRoaXMub3B0aW9ucy5IVE1MQXR0cmlidXRlcywgSFRNTEF0dHJpYnV0ZXMpLCAwXTtcbiAgfSxcbiAgcGFyc2VNYXJrZG93bih0b2tlbiwgaGVscGVycykge1xuICAgIHJldHVybiBoZWxwZXJzLmFwcGx5TWFyayh0aGlzLm5hbWUgfHwgXCJ1bmRlcmxpbmVcIiwgaGVscGVycy5wYXJzZUlubGluZSh0b2tlbi50b2tlbnMgfHwgW10pKTtcbiAgfSxcbiAgcmVuZGVyTWFya2Rvd24obm9kZSwgaGVscGVycykge1xuICAgIHJldHVybiBgKyske2hlbHBlcnMucmVuZGVyQ2hpbGRyZW4obm9kZSl9KytgO1xuICB9LFxuICBtYXJrZG93blRva2VuaXplcjoge1xuICAgIG5hbWU6IFwidW5kZXJsaW5lXCIsXG4gICAgbGV2ZWw6IFwiaW5saW5lXCIsXG4gICAgc3RhcnQoc3JjKSB7XG4gICAgICByZXR1cm4gc3JjLmluZGV4T2YoXCIrK1wiKTtcbiAgICB9LFxuICAgIHRva2VuaXplKHNyYywgX3Rva2VucywgbGV4ZXIpIHtcbiAgICAgIGNvbnN0IHJ1bGUgPSAvXihcXCtcXCspKFtcXHNcXFNdKz8pKFxcK1xcKykvO1xuICAgICAgY29uc3QgbWF0Y2ggPSBydWxlLmV4ZWMoc3JjKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlubmVyQ29udGVudCA9IG1hdGNoWzJdLnRyaW0oKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwidW5kZXJsaW5lXCIsXG4gICAgICAgIHJhdzogbWF0Y2hbMF0sXG4gICAgICAgIHRleHQ6IGlubmVyQ29udGVudCxcbiAgICAgICAgdG9rZW5zOiBsZXhlci5pbmxpbmVUb2tlbnMoaW5uZXJDb250ZW50KVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRVbmRlcmxpbmU6ICgpID0+ICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLnNldE1hcmsodGhpcy5uYW1lKTtcbiAgICAgIH0sXG4gICAgICB0b2dnbGVVbmRlcmxpbmU6ICgpID0+ICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLnRvZ2dsZU1hcmsodGhpcy5uYW1lKTtcbiAgICAgIH0sXG4gICAgICB1bnNldFVuZGVybGluZTogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMudW5zZXRNYXJrKHRoaXMubmFtZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiTW9kLXVcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMudG9nZ2xlVW5kZXJsaW5lKCksXG4gICAgICBcIk1vZC1VXCI6ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnRvZ2dsZVVuZGVybGluZSgpXG4gICAgfTtcbiAgfVxufSk7XG5cbi8vIHNyYy9pbmRleC50c1xudmFyIGluZGV4X2RlZmF1bHQgPSBVbmRlcmxpbmU7XG5leHBvcnQge1xuICBVbmRlcmxpbmUsXG4gIGluZGV4X2RlZmF1bHQgYXMgZGVmYXVsdFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extension-underline/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/extensions/dist/index.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/@tiptap/extensions/dist/index.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CharacterCount: () => (/* binding */ CharacterCount),\n/* harmony export */ Dropcursor: () => (/* binding */ Dropcursor),\n/* harmony export */ Focus: () => (/* binding */ Focus),\n/* harmony export */ Gapcursor: () => (/* binding */ Gapcursor),\n/* harmony export */ Placeholder: () => (/* binding */ Placeholder),\n/* harmony export */ Selection: () => (/* binding */ Selection),\n/* harmony export */ TrailingNode: () => (/* binding */ TrailingNode),\n/* harmony export */ UndoRedo: () => (/* binding */ UndoRedo),\n/* harmony export */ preparePlaceholderAttribute: () => (/* binding */ preparePlaceholderAttribute)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n/* harmony import */ var _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/pm/state */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/state/index.js\");\n/* harmony import */ var _tiptap_pm_dropcursor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tiptap/pm/dropcursor */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/dropcursor/index.js\");\n/* harmony import */ var _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tiptap/pm/view */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/view/index.js\");\n/* harmony import */ var _tiptap_pm_gapcursor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tiptap/pm/gapcursor */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/gapcursor/index.js\");\n/* harmony import */ var _tiptap_pm_history__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tiptap/pm/history */ \"(app-pages-browser)/./node_modules/@tiptap/pm/dist/history/index.js\");\n// src/character-count/character-count.ts\n\n\nvar CharacterCount = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Extension.create({\n name: \"characterCount\",\n addOptions() {\n return {\n limit: null,\n mode: \"textSize\",\n textCounter: (text) => text.length,\n wordCounter: (text) => text.split(\" \").filter((word) => word !== \"\").length\n };\n },\n addStorage() {\n return {\n characters: () => 0,\n words: () => 0\n };\n },\n onBeforeCreate() {\n this.storage.characters = (options) => {\n const node = (options == null ? void 0 : options.node) || this.editor.state.doc;\n const mode = (options == null ? void 0 : options.mode) || this.options.mode;\n if (mode === \"textSize\") {\n const text = node.textBetween(0, node.content.size, void 0, \" \");\n return this.options.textCounter(text);\n }\n return node.nodeSize;\n };\n this.storage.words = (options) => {\n const node = (options == null ? void 0 : options.node) || this.editor.state.doc;\n const text = node.textBetween(0, node.content.size, \" \", \" \");\n return this.options.wordCounter(text);\n };\n },\n addProseMirrorPlugins() {\n let initialEvaluationDone = false;\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.PluginKey(\"characterCount\"),\n appendTransaction: (transactions, oldState, newState) => {\n if (initialEvaluationDone) {\n return;\n }\n const limit = this.options.limit;\n if (limit === null || limit === void 0 || limit === 0) {\n initialEvaluationDone = true;\n return;\n }\n const initialContentSize = this.storage.characters({ node: newState.doc });\n if (initialContentSize > limit) {\n const over = initialContentSize - limit;\n const from = 0;\n const to = over;\n console.warn(\n `[CharacterCount] Initial content exceeded limit of ${limit} characters. Content was automatically trimmed.`\n );\n const tr = newState.tr.deleteRange(from, to);\n initialEvaluationDone = true;\n return tr;\n }\n initialEvaluationDone = true;\n },\n filterTransaction: (transaction, state) => {\n const limit = this.options.limit;\n if (!transaction.docChanged || limit === 0 || limit === null || limit === void 0) {\n return true;\n }\n const oldSize = this.storage.characters({ node: state.doc });\n const newSize = this.storage.characters({ node: transaction.doc });\n if (newSize <= limit) {\n return true;\n }\n if (oldSize > limit && newSize > limit && newSize <= oldSize) {\n return true;\n }\n if (oldSize > limit && newSize > limit && newSize > oldSize) {\n return false;\n }\n const isPaste = transaction.getMeta(\"paste\");\n if (!isPaste) {\n return false;\n }\n const pos = transaction.selection.$head.pos;\n const over = newSize - limit;\n const from = pos - over;\n const to = pos;\n transaction.deleteRange(from, to);\n const updatedSize = this.storage.characters({ node: transaction.doc });\n if (updatedSize > limit) {\n return false;\n }\n return true;\n }\n })\n ];\n }\n});\n\n// src/drop-cursor/drop-cursor.ts\n\n\nvar Dropcursor = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Extension.create({\n name: \"dropCursor\",\n addOptions() {\n return {\n color: \"currentColor\",\n width: 1,\n class: void 0\n };\n },\n addProseMirrorPlugins() {\n return [(0,_tiptap_pm_dropcursor__WEBPACK_IMPORTED_MODULE_2__.dropCursor)(this.options)];\n }\n});\n\n// src/focus/focus.ts\n\n\n\nvar Focus = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Extension.create({\n name: \"focus\",\n addOptions() {\n return {\n className: \"has-focus\",\n mode: \"all\"\n };\n },\n addProseMirrorPlugins() {\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.PluginKey(\"focus\"),\n props: {\n decorations: ({ doc, selection }) => {\n const { isEditable, isFocused } = this.editor;\n const { anchor } = selection;\n const decorations = [];\n if (!isEditable || !isFocused) {\n return _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_3__.DecorationSet.create(doc, []);\n }\n let maxLevels = 0;\n if (this.options.mode === \"deepest\") {\n doc.descendants((node, pos) => {\n if (node.isText) {\n return;\n }\n const isCurrent = anchor >= pos && anchor <= pos + node.nodeSize - 1;\n if (!isCurrent) {\n return false;\n }\n maxLevels += 1;\n });\n }\n let currentLevel = 0;\n doc.descendants((node, pos) => {\n if (node.isText) {\n return false;\n }\n const isCurrent = anchor >= pos && anchor <= pos + node.nodeSize - 1;\n if (!isCurrent) {\n return false;\n }\n currentLevel += 1;\n const outOfScope = this.options.mode === \"deepest\" && maxLevels - currentLevel > 0 || this.options.mode === \"shallowest\" && currentLevel > 1;\n if (outOfScope) {\n return this.options.mode === \"deepest\";\n }\n decorations.push(\n _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_3__.Decoration.node(pos, pos + node.nodeSize, {\n class: this.options.className\n })\n );\n });\n return _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_3__.DecorationSet.create(doc, decorations);\n }\n }\n })\n ];\n }\n});\n\n// src/gap-cursor/gap-cursor.ts\n\n\nvar Gapcursor = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Extension.create({\n name: \"gapCursor\",\n addProseMirrorPlugins() {\n return [(0,_tiptap_pm_gapcursor__WEBPACK_IMPORTED_MODULE_4__.gapCursor)()];\n },\n extendNodeSchema(extension) {\n var _a;\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage\n };\n return {\n allowGapCursor: (_a = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.callOrReturn)((0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.getExtensionField)(extension, \"allowGapCursor\", context))) != null ? _a : null\n };\n }\n});\n\n// src/placeholder/placeholder.ts\n\n\n\nvar DEFAULT_DATA_ATTRIBUTE = \"placeholder\";\nfunction preparePlaceholderAttribute(attr) {\n return attr.replace(/\\s+/g, \"-\").replace(/[^a-zA-Z0-9-]/g, \"\").replace(/^[0-9-]+/, \"\").replace(/^-+/, \"\").toLowerCase();\n}\nvar Placeholder = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Extension.create({\n name: \"placeholder\",\n addOptions() {\n return {\n emptyEditorClass: \"is-editor-empty\",\n emptyNodeClass: \"is-empty\",\n dataAttribute: DEFAULT_DATA_ATTRIBUTE,\n placeholder: \"Write something \\u2026\",\n showOnlyWhenEditable: true,\n showOnlyCurrent: true,\n includeChildren: false\n };\n },\n addProseMirrorPlugins() {\n const dataAttribute = this.options.dataAttribute ? `data-${preparePlaceholderAttribute(this.options.dataAttribute)}` : `data-${DEFAULT_DATA_ATTRIBUTE}`;\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.PluginKey(\"placeholder\"),\n props: {\n decorations: ({ doc, selection }) => {\n const active = this.editor.isEditable || !this.options.showOnlyWhenEditable;\n const { anchor } = selection;\n const decorations = [];\n if (!active) {\n return null;\n }\n const isEmptyDoc = this.editor.isEmpty;\n doc.descendants((node, pos) => {\n const hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize;\n const isEmpty = !node.isLeaf && (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.isNodeEmpty)(node);\n if ((hasAnchor || !this.options.showOnlyCurrent) && isEmpty) {\n const classes = [this.options.emptyNodeClass];\n if (isEmptyDoc) {\n classes.push(this.options.emptyEditorClass);\n }\n const decoration = _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_3__.Decoration.node(pos, pos + node.nodeSize, {\n class: classes.join(\" \"),\n [dataAttribute]: typeof this.options.placeholder === \"function\" ? this.options.placeholder({\n editor: this.editor,\n node,\n pos,\n hasAnchor\n }) : this.options.placeholder\n });\n decorations.push(decoration);\n }\n return this.options.includeChildren;\n });\n return _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_3__.DecorationSet.create(doc, decorations);\n }\n }\n })\n ];\n }\n});\n\n// src/selection/selection.ts\n\n\n\nvar Selection = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Extension.create({\n name: \"selection\",\n addOptions() {\n return {\n className: \"selection\"\n };\n },\n addProseMirrorPlugins() {\n const { editor, options } = this;\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.Plugin({\n key: new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.PluginKey(\"selection\"),\n props: {\n decorations(state) {\n if (state.selection.empty || editor.isFocused || !editor.isEditable || (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_1__.isNodeSelection)(state.selection) || editor.view.dragging) {\n return null;\n }\n return _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_3__.DecorationSet.create(state.doc, [\n _tiptap_pm_view__WEBPACK_IMPORTED_MODULE_3__.Decoration.inline(state.selection.from, state.selection.to, {\n class: options.className\n })\n ]);\n }\n }\n })\n ];\n }\n});\n\n// src/trailing-node/trailing-node.ts\n\n\nfunction nodeEqualsType({ types, node }) {\n return node && Array.isArray(types) && types.includes(node.type) || (node == null ? void 0 : node.type) === types;\n}\nvar TrailingNode = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Extension.create({\n name: \"trailingNode\",\n addOptions() {\n return {\n node: void 0,\n notAfter: []\n };\n },\n addProseMirrorPlugins() {\n var _a;\n const plugin = new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.PluginKey(this.name);\n const defaultNode = this.options.node || ((_a = this.editor.schema.topNodeType.contentMatch.defaultType) == null ? void 0 : _a.name) || \"paragraph\";\n const disabledNodes = Object.entries(this.editor.schema.nodes).map(([, value]) => value).filter((node) => (this.options.notAfter || []).concat(defaultNode).includes(node.name));\n return [\n new _tiptap_pm_state__WEBPACK_IMPORTED_MODULE_0__.Plugin({\n key: plugin,\n appendTransaction: (_, __, state) => {\n const { doc, tr, schema } = state;\n const shouldInsertNodeAtEnd = plugin.getState(state);\n const endPosition = doc.content.size;\n const type = schema.nodes[defaultNode];\n if (!shouldInsertNodeAtEnd) {\n return;\n }\n return tr.insert(endPosition, type.create());\n },\n state: {\n init: (_, state) => {\n const lastNode = state.tr.doc.lastChild;\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\n },\n apply: (tr, value) => {\n if (!tr.docChanged) {\n return value;\n }\n if (tr.getMeta(\"__uniqueIDTransaction\")) {\n return value;\n }\n const lastNode = tr.doc.lastChild;\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\n }\n }\n })\n ];\n }\n});\n\n// src/undo-redo/undo-redo.ts\n\n\nvar UndoRedo = _tiptap_core__WEBPACK_IMPORTED_MODULE_1__.Extension.create({\n name: \"undoRedo\",\n addOptions() {\n return {\n depth: 100,\n newGroupDelay: 500\n };\n },\n addCommands() {\n return {\n undo: () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_history__WEBPACK_IMPORTED_MODULE_5__.undo)(state, dispatch);\n },\n redo: () => ({ state, dispatch }) => {\n return (0,_tiptap_pm_history__WEBPACK_IMPORTED_MODULE_5__.redo)(state, dispatch);\n }\n };\n },\n addProseMirrorPlugins() {\n return [(0,_tiptap_pm_history__WEBPACK_IMPORTED_MODULE_5__.history)(this.options)];\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-z\": () => this.editor.commands.undo(),\n \"Shift-Mod-z\": () => this.editor.commands.redo(),\n \"Mod-y\": () => this.editor.commands.redo(),\n // Russian keyboard layouts\n \"Mod-\\u044F\": () => this.editor.commands.undo(),\n \"Shift-Mod-\\u044F\": () => this.editor.commands.redo()\n };\n }\n});\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL2V4dGVuc2lvbnMvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUN5QztBQUNZO0FBQ3JELHFCQUFxQixtREFBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLFVBQVUsb0RBQU07QUFDaEIsaUJBQWlCLHVEQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxvQkFBb0I7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSxPQUFPO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGlCQUFpQjtBQUNyRSxvREFBb0QsdUJBQXVCO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCx1QkFBdUI7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUN1RDtBQUNKO0FBQ25ELGlCQUFpQixtREFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLFlBQVksaUVBQVU7QUFDdEI7QUFDQSxDQUFDOztBQUVEO0FBQ3VEO0FBQ3VCO0FBQ2xCO0FB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QWUsbURBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsaUJBQWlCO0FBQ3RDLGVBQWUsd0RBQUk7QUFDbkIsT0FBTztBQUNQLHFCQUFxQixpQkFBaUI7QUFDdEMsZUFBZSx3REFBSTtBQUNuQjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsWUFBWSwyREFBTztBQUNuQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBV0M7QUFDRiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHRpcHRhcFxcZXh0ZW5zaW9uc1xcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2NoYXJhY3Rlci1jb3VudC9jaGFyYWN0ZXItY291bnQudHNcbmltcG9ydCB7IEV4dGVuc2lvbiB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IFBsdWdpbiwgUGx1Z2luS2V5IH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbnZhciBDaGFyYWN0ZXJDb3VudCA9IEV4dGVuc2lvbi5jcmVhdGUoe1xuICBuYW1lOiBcImNoYXJhY3RlckNvdW50XCIsXG4gIGFkZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbWl0OiBudWxsLFxuICAgICAgbW9kZTogXCJ0ZXh0U2l6ZVwiLFxuICAgICAgdGV4dENvdW50ZXI6ICh0ZXh0KSA9PiB0ZXh0Lmxlbmd0aCxcbiAgICAgIHdvcmRDb3VudGVyOiAodGV4dCkgPT4gdGV4dC5zcGxpdChcIiBcIikuZmlsdGVyKCh3b3JkKSA9PiB3b3JkICE9PSBcIlwiKS5sZW5ndGhcbiAgICB9O1xuICB9LFxuICBhZGRTdG9yYWdlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjaGFyYWN0ZXJzOiAoKSA9PiAwLFxuICAgICAgd29yZHM6ICgpID0+IDBcbiAgICB9O1xuICB9LFxuICBvbkJlZm9yZUNyZWF0ZSgpIHtcbiAgICB0aGlzLnN0b3JhZ2UuY2hhcmFjdGVycyA9IChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubm9kZSkgfHwgdGhpcy5lZGl0b3Iuc3RhdGUuZG9jO1xuICAgICAgY29uc3QgbW9kZSA9IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLm1vZGUpIHx8IHRoaXMub3B0aW9ucy5tb2RlO1xuICAgICAgaWYgKG1vZGUgPT09IFwidGV4dFNpemVcIikge1xuICAgICAgICBjb25zdCB0ZXh0ID0gbm9kZS50ZXh0QmV0d2VlbigwLCBub2RlLmNvbnRlbnQuc2l6ZSwgdm9pZCAwLCBcIiBcIik7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMudGV4dENvdW50ZXIodGV4dCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZS5ub2RlU2l6ZTtcbiAgICB9O1xuICAgIHRoaXMuc3RvcmFnZS53b3JkcyA9IChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubm9kZSkgfHwgdGhpcy5lZGl0b3Iuc3RhdGUuZG9jO1xuICAgICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dEJldHdlZW4oMCwgbm9kZS5jb250ZW50LnNpemUsIFwiIFwiLCBcIiBcIik7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLndvcmRDb3VudGVyKHRleHQpO1xuICAgIH07XG4gIH0sXG4gIGFkZFByb3NlTWlycm9yUGx1Z2lucygpIHtcbiAgICBsZXQgaW5pdGlhbEV2YWx1YXRpb25Eb25lID0gZmFsc2U7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBQbHVnaW4oe1xuICAgICAgICBrZXk6IG5ldyBQbHVnaW5LZXkoXCJjaGFyYWN0ZXJDb3VudFwiKSxcbiAgICAgICAgYXBwZW5kVHJhbnNhY3Rpb246ICh0cmFuc2FjdGlvbnMsIG9sZFN0YXRlLCBuZXdTdGF0ZSkgPT4ge1xuICAgICAgICAgIGlmIChpbml0aWFsRXZhbHVhdGlvbkRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbGltaXQgPSB0aGlzLm9wdGlvbnMubGltaXQ7XG4gICAgICAgICAgaWYgKGxpbWl0ID09PSBudWxsIHx8IGxpbWl0ID09PSB2b2lkIDAgfHwgbGltaXQgPT09IDApIHtcbiAgICAgICAgICAgIGluaXRpYWxFdmFsdWF0aW9uRG9uZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGluaXRpYWxDb250ZW50U2l6ZSA9IHRoaXMuc3RvcmFnZS5jaGFyYWN0ZXJzKHsgbm9kZTogbmV3U3RhdGUuZG9jIH0pO1xuICAgICAgICAgIGlmIChpbml0aWFsQ29udGVudFNpemUgPiBsaW1pdCkge1xuICAgICAgICAgICAgY29uc3Qgb3ZlciA9IGluaXRpYWxDb250ZW50U2l6ZSAtIGxpbWl0O1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IDA7XG4gICAgICAgICAgICBjb25zdCB0byA9IG92ZXI7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgIGBbQ2hhcmFjdGVyQ291bnRdIEluaXRpYWwgY29udGVudCBleGNlZWRlZCBsaW1pdCBvZiAke2xpbWl0fSBjaGFyYWN0ZXJzLiBDb250ZW50IHdhcyBhdXRvbWF0aWNhbGx5IHRyaW1tZWQuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHRyID0gbmV3U3RhdGUudHIuZGVsZXRlUmFuZ2UoZnJvbSwgdG8pO1xuICAgICAgICAgICAgaW5pdGlhbEV2YWx1YXRpb25Eb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5pdGlhbEV2YWx1YXRpb25Eb25lID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyVHJhbnNhY3Rpb246ICh0cmFuc2FjdGlvbiwgc3RhdGUpID0+IHtcbiAgICAgICAgICBjb25zdCBsaW1pdCA9IHRoaXMub3B0aW9ucy5saW1pdDtcbiAgICAgICAgICBpZiAoIXRyYW5zYWN0aW9uLmRvY0NoYW5nZWQgfHwgbGltaXQgPT09IDAgfHwgbGltaXQgPT09IG51bGwgfHwgbGltaXQgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG9sZFNpemUgPSB0aGlzLnN0b3JhZ2UuY2hhcmFjdGVycyh7IG5vZGU6IHN0YXRlLmRvYyB9KTtcbiAgICAgICAgICBjb25zdCBuZXdTaXplID0gdGhpcy5zdG9yYWdlLmNoYXJhY3RlcnMoeyBub2RlOiB0cmFuc2FjdGlvbi5kb2MgfSk7XG4gICAgICAgICAgaWYgKG5ld1NpemUgPD0gbGltaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob2xkU2l6ZSA+IGxpbWl0ICYmIG5ld1NpemUgPiBsaW1pdCAmJiBuZXdTaXplIDw9IG9sZFNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob2xkU2l6ZSA+IGxpbWl0ICYmIG5ld1NpemUgPiBsaW1pdCAmJiBuZXdTaXplID4gb2xkU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc1Bhc3RlID0gdHJhbnNhY3Rpb24uZ2V0TWV0YShcInBhc3RlXCIpO1xuICAgICAgICAgIGlmICghaXNQYXN0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBwb3MgPSB0cmFuc2FjdGlvbi5zZWxlY3Rpb24uJGhlYWQucG9zO1xuICAgICAgICAgIGNvbnN0IG92ZXIgPSBuZXdTaXplIC0gbGltaXQ7XG4gICAgICAgICAgY29uc3QgZnJvbSA9IHBvcyAtIG92ZXI7XG4gICAgICAgICAgY29uc3QgdG8gPSBwb3M7XG4gICAgICAgICAgdHJhbnNhY3Rpb24uZGVsZXRlUmFuZ2UoZnJvbSwgdG8pO1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTaXplID0gdGhpcy5zdG9yYWdlLmNoYXJhY3RlcnMoeyBub2RlOiB0cmFuc2FjdGlvbi5kb2MgfSk7XG4gICAgICAgICAgaWYgKHVwZGF0ZWRTaXplID4gbGltaXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgXTtcbiAgfVxufSk7XG5cbi8vIHNyYy9kcm9wLWN1cnNvci9kcm9wLWN1cnNvci50c1xuaW1wb3J0IHsgRXh0ZW5zaW9uIGFzIEV4dGVuc2lvbjIgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBkcm9wQ3Vyc29yIH0gZnJvbSBcIkB0aXB0YXAvcG0vZHJvcGN1cnNvclwiO1xudmFyIERyb3BjdXJzb3IgPSBFeHRlbnNpb24yLmNyZWF0ZSh7XG4gIG5hbWU6IFwiZHJvcEN1cnNvclwiLFxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgY2xhc3M6IHZvaWQgMFxuICAgIH07XG4gIH0sXG4gIGFkZFByb3NlTWlycm9yUGx1Z2lucygpIHtcbiAgICByZXR1cm4gW2Ryb3BDdXJzb3IodGhpcy5vcHRpb25zKV07XG4gIH1cbn0pO1xuXG4vLyBzcmMvZm9jdXMvZm9jdXMudHNcbmltcG9ydCB7IEV4dGVuc2lvbiBhcyBFeHRlbnNpb24zIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgUGx1Z2luIGFzIFBsdWdpbjIsIFBsdWdpbktleSBhcyBQbHVnaW5LZXkyIH0gZnJvbSBcIkB0aXB0YXAvcG0vc3RhdGVcIjtcbmltcG9ydCB7IERlY29yYXRpb24sIERlY29yYXRpb25TZXQgfSBmcm9tIFwiQHRpcHRhcC9wbS92aWV3XCI7XG52YXIgRm9jdXMgPSBFeHRlbnNpb24zLmNyZWF0ZSh7XG4gIG5hbWU6IFwiZm9jdXNcIixcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NOYW1lOiBcImhhcy1mb2N1c1wiLFxuICAgICAgbW9kZTogXCJhbGxcIlxuICAgIH07XG4gIH0sXG4gIGFkZFByb3NlTWlycm9yUGx1Z2lucygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbmV3IFBsdWdpbjIoe1xuICAgICAgICBrZXk6IG5ldyBQbHVnaW5LZXkyKFwiZm9jdXNcIiksXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgZGVjb3JhdGlvbnM6ICh7IGRvYywgc2VsZWN0aW9uIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgaXNFZGl0YWJsZSwgaXNGb2N1c2VkIH0gPSB0aGlzLmVkaXRvcjtcbiAgICAgICAgICAgIGNvbnN0IHsgYW5jaG9yIH0gPSBzZWxlY3Rpb247XG4gICAgICAgICAgICBjb25zdCBkZWNvcmF0aW9ucyA9IFtdO1xuICAgICAgICAgICAgaWYgKCFpc0VkaXRhYmxlIHx8ICFpc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIERlY29yYXRpb25TZXQuY3JlYXRlKGRvYywgW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IG1heExldmVscyA9IDA7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1vZGUgPT09IFwiZGVlcGVzdFwiKSB7XG4gICAgICAgICAgICAgIGRvYy5kZXNjZW5kYW50cygobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuaXNUZXh0KSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudCA9IGFuY2hvciA+PSBwb3MgJiYgYW5jaG9yIDw9IHBvcyArIG5vZGUubm9kZVNpemUgLSAxO1xuICAgICAgICAgICAgICAgIGlmICghaXNDdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1heExldmVscyArPSAxO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBjdXJyZW50TGV2ZWwgPSAwO1xuICAgICAgICAgICAgZG9jLmRlc2NlbmRhbnRzKChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG5vZGUuaXNUZXh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudCA9IGFuY2hvciA+PSBwb3MgJiYgYW5jaG9yIDw9IHBvcyArIG5vZGUubm9kZVNpemUgLSAxO1xuICAgICAgICAgICAgICBpZiAoIWlzQ3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgICAgICAgICAgICAgY29uc3Qgb3V0T2ZTY29wZSA9IHRoaXMub3B0aW9ucy5tb2RlID09PSBcImRlZXBlc3RcIiAmJiBtYXhMZXZlbHMgLSBjdXJyZW50TGV2ZWwgPiAwIHx8IHRoaXMub3B0aW9ucy5tb2RlID09PSBcInNoYWxsb3dlc3RcIiAmJiBjdXJyZW50TGV2ZWwgPiAxO1xuICAgICAgICAgICAgICBpZiAob3V0T2ZTY29wZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMubW9kZSA9PT0gXCJkZWVwZXN0XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGVjb3JhdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICBEZWNvcmF0aW9uLm5vZGUocG9zLCBwb3MgKyBub2RlLm5vZGVTaXplLCB7XG4gICAgICAgICAgICAgICAgICBjbGFzczogdGhpcy5vcHRpb25zLmNsYXNzTmFtZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBEZWNvcmF0aW9uU2V0LmNyZWF0ZShkb2MsIGRlY29yYXRpb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgXTtcbiAgfVxufSk7XG5cbi8vIHNyYy9nYXAtY3Vyc29yL2dhcC1jdXJzb3IudHNcbmltcG9ydCB7IGNhbGxPclJldHVybiwgRXh0ZW5zaW9uIGFzIEV4dGVuc2lvbjQsIGdldEV4dGVuc2lvbkZpZWxkIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgZ2FwQ3Vyc29yIH0gZnJvbSBcIkB0aXB0YXAvcG0vZ2FwY3Vyc29yXCI7XG52YXIgR2FwY3Vyc29yID0gRXh0ZW5zaW9uNC5jcmVhdGUoe1xuICBuYW1lOiBcImdhcEN1cnNvclwiLFxuICBhZGRQcm9zZU1pcnJvclBsdWdpbnMoKSB7XG4gICAgcmV0dXJuIFtnYXBDdXJzb3IoKV07XG4gIH0sXG4gIGV4dGVuZE5vZGVTY2hlbWEoZXh0ZW5zaW9uKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICBuYW1lOiBleHRlbnNpb24ubmFtZSxcbiAgICAgIG9wdGlvbnM6IGV4dGVuc2lvbi5vcHRpb25zLFxuICAgICAgc3RvcmFnZTogZXh0ZW5zaW9uLnN0b3JhZ2VcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBhbGxvd0dhcEN1cnNvcjogKF9hID0gY2FsbE9yUmV0dXJuKGdldEV4dGVuc2lvbkZpZWxkKGV4dGVuc2lvbiwgXCJhbGxvd0dhcEN1cnNvclwiLCBjb250ZXh0KSkpICE9IG51bGwgPyBfYSA6IG51bGxcbiAgICB9O1xuICB9XG59KTtcblxuLy8gc3JjL3BsYWNlaG9sZGVyL3BsYWNlaG9sZGVyLnRzXG5pbXBvcnQgeyBFeHRlbnNpb24gYXMgRXh0ZW5zaW9uNSwgaXNOb2RlRW1wdHkgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBQbHVnaW4gYXMgUGx1Z2luMywgUGx1Z2luS2V5IGFzIFBsdWdpbktleTMgfSBmcm9tIFwiQHRpcHRhcC9wbS9zdGF0ZVwiO1xuaW1wb3J0IHsgRGVjb3JhdGlvbiBhcyBEZWNvcmF0aW9uMiwgRGVjb3JhdGlvblNldCBhcyBEZWNvcmF0aW9uU2V0MiB9IGZyb20gXCJAdGlwdGFwL3BtL3ZpZXdcIjtcbnZhciBERUZBVUxUX0RBVEFfQVRUUklCVVRFID0gXCJwbGFjZWhvbGRlclwiO1xuZnVuY3Rpb24gcHJlcGFyZVBsYWNlaG9sZGVyQXR0cmlidXRlKGF0dHIpIHtcbiAgcmV0dXJuIGF0dHIucmVwbGFjZSgvXFxzKy9nLCBcIi1cIikucmVwbGFjZSgvW15hLXpBLVowLTktXS9nLCBcIlwiKS5yZXBsYWNlKC9eWzAtOS1dKy8sIFwiXCIpLnJlcGxhY2UoL14tKy8sIFwiXCIpLnRvTG93ZXJDYXNlKCk7XG59XG52YXIgUGxhY2Vob2xkZXIgPSBFeHRlbnNpb241LmNyZWF0ZSh7XG4gIG5hbWU6IFwicGxhY2Vob2xkZXJcIixcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW1wdHlFZGl0b3JDbGFzczogXCJpcy1lZGl0b3ItZW1wdHlcIixcbiAgICAgIGVtcHR5Tm9kZUNsYXNzOiBcImlzLWVtcHR5XCIsXG4gICAgICBkYXRhQXR0cmlidXRlOiBERUZBVUxUX0RBVEFfQVRUUklCVVRFLFxuICAgICAgcGxhY2Vob2xkZXI6IFwiV3JpdGUgc29tZXRoaW5nIFxcdTIwMjZcIixcbiAgICAgIHNob3dPbmx5V2hlbkVkaXRhYmxlOiB0cnVlLFxuICAgICAgc2hvd09ubHlDdXJyZW50OiB0cnVlLFxuICAgICAgaW5jbHVkZUNoaWxkcmVuOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGFkZFByb3NlTWlycm9yUGx1Z2lucygpIHtcbiAgICBjb25zdCBkYXRhQXR0cmlidXRlID0gdGhpcy5vcHRpb25zLmRhdGFBdHRyaWJ1dGUgPyBgZGF0YS0ke3ByZXBhcmVQbGFjZWhvbGRlckF0dHJpYnV0ZSh0aGlzLm9wdGlvbnMuZGF0YUF0dHJpYnV0ZSl9YCA6IGBkYXRhLSR7REVGQVVMVF9EQVRBX0FUVFJJQlVURX1gO1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGx1Z2luMyh7XG4gICAgICAgIGtleTogbmV3IFBsdWdpbktleTMoXCJwbGFjZWhvbGRlclwiKSxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBkZWNvcmF0aW9uczogKHsgZG9jLCBzZWxlY3Rpb24gfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gdGhpcy5lZGl0b3IuaXNFZGl0YWJsZSB8fCAhdGhpcy5vcHRpb25zLnNob3dPbmx5V2hlbkVkaXRhYmxlO1xuICAgICAgICAgICAgY29uc3QgeyBhbmNob3IgfSA9IHNlbGVjdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IGRlY29yYXRpb25zID0gW107XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzRW1wdHlEb2MgPSB0aGlzLmVkaXRvci5pc0VtcHR5O1xuICAgICAgICAgICAgZG9jLmRlc2NlbmRhbnRzKChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaGFzQW5jaG9yID0gYW5jaG9yID49IHBvcyAmJiBhbmNob3IgPD0gcG9zICsgbm9kZS5ub2RlU2l6ZTtcbiAgICAgICAgICAgICAgY29uc3QgaXNFbXB0eSA9ICFub2RlLmlzTGVhZiAmJiBpc05vZGVFbXB0eShub2RlKTtcbiAgICAgICAgICAgICAgaWYgKChoYXNBbmNob3IgfHwgIXRoaXMub3B0aW9ucy5zaG93T25seUN1cnJlbnQpICYmIGlzRW1wdHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFzc2VzID0gW3RoaXMub3B0aW9ucy5lbXB0eU5vZGVDbGFzc107XG4gICAgICAgICAgICAgICAgaWYgKGlzRW1wdHlEb2MpIHtcbiAgICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaCh0aGlzLm9wdGlvbnMuZW1wdHlFZGl0b3JDbGFzcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlY29yYXRpb24gPSBEZWNvcmF0aW9uMi5ub2RlKHBvcywgcG9zICsgbm9kZS5ub2RlU2l6ZSwge1xuICAgICAgICAgICAgICAgICAgY2xhc3M6IGNsYXNzZXMuam9pbihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBbZGF0YUF0dHJpYnV0ZV06IHR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIgPT09IFwiZnVuY3Rpb25cIiA/IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcih7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5lZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIHBvcyxcbiAgICAgICAgICAgICAgICAgICAgaGFzQW5jaG9yXG4gICAgICAgICAgICAgICAgICB9KSA6IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGRlY29yYXRpb25zLnB1c2goZGVjb3JhdGlvbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pbmNsdWRlQ2hpbGRyZW47XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBEZWNvcmF0aW9uU2V0Mi5jcmVhdGUoZG9jLCBkZWNvcmF0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF07XG4gIH1cbn0pO1xuXG4vLyBzcmMvc2VsZWN0aW9uL3NlbGVjdGlvbi50c1xuaW1wb3J0IHsgRXh0ZW5zaW9uIGFzIEV4dGVuc2lvbjYsIGlzTm9kZVNlbGVjdGlvbiB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IFBsdWdpbiBhcyBQbHVnaW40LCBQbHVnaW5LZXkgYXMgUGx1Z2luS2V5NCB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG5pbXBvcnQgeyBEZWNvcmF0aW9uIGFzIERlY29yYXRpb24zLCBEZWNvcmF0aW9uU2V0IGFzIERlY29yYXRpb25TZXQzIH0gZnJvbSBcIkB0aXB0YXAvcG0vdmlld1wiO1xudmFyIFNlbGVjdGlvbiA9IEV4dGVuc2lvbjYuY3JlYXRlKHtcbiAgbmFtZTogXCJzZWxlY3Rpb25cIixcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NOYW1lOiBcInNlbGVjdGlvblwiXG4gICAgfTtcbiAgfSxcbiAgYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCkge1xuICAgIGNvbnN0IHsgZWRpdG9yLCBvcHRpb25zIH0gPSB0aGlzO1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGx1Z2luNCh7XG4gICAgICAgIGtleTogbmV3IFBsdWdpbktleTQoXCJzZWxlY3Rpb25cIiksXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgZGVjb3JhdGlvbnMoc3RhdGUpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb24uZW1wdHkgfHwgZWRpdG9yLmlzRm9jdXNlZCB8fCAhZWRpdG9yLmlzRWRpdGFibGUgfHwgaXNOb2RlU2VsZWN0aW9uKHN0YXRlLnNlbGVjdGlvbikgfHwgZWRpdG9yLnZpZXcuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gRGVjb3JhdGlvblNldDMuY3JlYXRlKHN0YXRlLmRvYywgW1xuICAgICAgICAgICAgICBEZWNvcmF0aW9uMy5pbmxpbmUoc3RhdGUuc2VsZWN0aW9uLmZyb20sIHN0YXRlLnNlbGVjdGlvbi50bywge1xuICAgICAgICAgICAgICAgIGNsYXNzOiBvcHRpb25zLmNsYXNzTmFtZVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF07XG4gIH1cbn0pO1xuXG4vLyBzcmMvdHJhaWxpbmctbm9kZS90cmFpbGluZy1ub2RlLnRzXG5pbXBvcnQgeyBFeHRlbnNpb24gYXMgRXh0ZW5zaW9uNyB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IFBsdWdpbiBhcyBQbHVnaW41LCBQbHVnaW5LZXkgYXMgUGx1Z2luS2V5NSB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG5mdW5jdGlvbiBub2RlRXF1YWxzVHlwZSh7IHR5cGVzLCBub2RlIH0pIHtcbiAgcmV0dXJuIG5vZGUgJiYgQXJyYXkuaXNBcnJheSh0eXBlcykgJiYgdHlwZXMuaW5jbHVkZXMobm9kZS50eXBlKSB8fCAobm9kZSA9PSBudWxsID8gdm9pZCAwIDogbm9kZS50eXBlKSA9PT0gdHlwZXM7XG59XG52YXIgVHJhaWxpbmdOb2RlID0gRXh0ZW5zaW9uNy5jcmVhdGUoe1xuICBuYW1lOiBcInRyYWlsaW5nTm9kZVwiLFxuICBhZGRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBub2RlOiB2b2lkIDAsXG4gICAgICBub3RBZnRlcjogW11cbiAgICB9O1xuICB9LFxuICBhZGRQcm9zZU1pcnJvclBsdWdpbnMoKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHBsdWdpbiA9IG5ldyBQbHVnaW5LZXk1KHRoaXMubmFtZSk7XG4gICAgY29uc3QgZGVmYXVsdE5vZGUgPSB0aGlzLm9wdGlvbnMubm9kZSB8fCAoKF9hID0gdGhpcy5lZGl0b3Iuc2NoZW1hLnRvcE5vZGVUeXBlLmNvbnRlbnRNYXRjaC5kZWZhdWx0VHlwZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLm5hbWUpIHx8IFwicGFyYWdyYXBoXCI7XG4gICAgY29uc3QgZGlzYWJsZWROb2RlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuZWRpdG9yLnNjaGVtYS5ub2RlcykubWFwKChbLCB2YWx1ZV0pID0+IHZhbHVlKS5maWx0ZXIoKG5vZGUpID0+ICh0aGlzLm9wdGlvbnMubm90QWZ0ZXIgfHwgW10pLmNvbmNhdChkZWZhdWx0Tm9kZSkuaW5jbHVkZXMobm9kZS5uYW1lKSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBQbHVnaW41KHtcbiAgICAgICAga2V5OiBwbHVnaW4sXG4gICAgICAgIGFwcGVuZFRyYW5zYWN0aW9uOiAoXywgX18sIHN0YXRlKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBkb2MsIHRyLCBzY2hlbWEgfSA9IHN0YXRlO1xuICAgICAgICAgIGNvbnN0IHNob3VsZEluc2VydE5vZGVBdEVuZCA9IHBsdWdpbi5nZXRTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgY29uc3QgZW5kUG9zaXRpb24gPSBkb2MuY29udGVudC5zaXplO1xuICAgICAgICAgIGNvbnN0IHR5cGUgPSBzY2hlbWEubm9kZXNbZGVmYXVsdE5vZGVdO1xuICAgICAgICAgIGlmICghc2hvdWxkSW5zZXJ0Tm9kZUF0RW5kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0ci5pbnNlcnQoZW5kUG9zaXRpb24sIHR5cGUuY3JlYXRlKCkpO1xuICAgICAgICB9LFxuICAgICAgICBzdGF0ZToge1xuICAgICAgICAgIGluaXQ6IChfLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFzdE5vZGUgPSBzdGF0ZS50ci5kb2MubGFzdENoaWxkO1xuICAgICAgICAgICAgcmV0dXJuICFub2RlRXF1YWxzVHlwZSh7IG5vZGU6IGxhc3ROb2RlLCB0eXBlczogZGlzYWJsZWROb2RlcyB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFwcGx5OiAodHIsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRyLmRvY0NoYW5nZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRyLmdldE1ldGEoXCJfX3VuaXF1ZUlEVHJhbnNhY3Rpb25cIikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFzdE5vZGUgPSB0ci5kb2MubGFzdENoaWxkO1xuICAgICAgICAgICAgcmV0dXJuICFub2RlRXF1YWxzVHlwZSh7IG5vZGU6IGxhc3ROb2RlLCB0eXBlczogZGlzYWJsZWROb2RlcyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgXTtcbiAgfVxufSk7XG5cbi8vIHNyYy91bmRvLXJlZG8vdW5kby1yZWRvLnRzXG5pbXBvcnQgeyBFeHRlbnNpb24gYXMgRXh0ZW5zaW9uOCB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IGhpc3RvcnksIHJlZG8sIHVuZG8gfSBmcm9tIFwiQHRpcHRhcC9wbS9oaXN0b3J5XCI7XG52YXIgVW5kb1JlZG8gPSBFeHRlbnNpb244LmNyZWF0ZSh7XG4gIG5hbWU6IFwidW5kb1JlZG9cIixcbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVwdGg6IDEwMCxcbiAgICAgIG5ld0dyb3VwRGVsYXk6IDUwMFxuICAgIH07XG4gIH0sXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB1bmRvOiAoKSA9PiAoeyBzdGF0ZSwgZGlzcGF0Y2ggfSkgPT4ge1xuICAgICAgICByZXR1cm4gdW5kbyhzdGF0ZSwgZGlzcGF0Y2gpO1xuICAgICAgfSxcbiAgICAgIHJlZG86ICgpID0+ICh7IHN0YXRlLCBkaXNwYXRjaCB9KSA9PiB7XG4gICAgICAgIHJldHVybiByZWRvKHN0YXRlLCBkaXNwYXRjaCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgYWRkUHJvc2VNaXJyb3JQbHVnaW5zKCkge1xuICAgIHJldHVybiBbaGlzdG9yeSh0aGlzLm9wdGlvbnMpXTtcbiAgfSxcbiAgYWRkS2V5Ym9hcmRTaG9ydGN1dHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiTW9kLXpcIjogKCkgPT4gdGhpcy5lZGl0b3IuY29tbWFuZHMudW5kbygpLFxuICAgICAgXCJTaGlmdC1Nb2QtelwiOiAoKSA9PiB0aGlzLmVkaXRvci5jb21tYW5kcy5yZWRvKCksXG4gICAgICBcIk1vZC15XCI6ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnJlZG8oKSxcbiAgICAgIC8vIFJ1c3NpYW4ga2V5Ym9hcmQgbGF5b3V0c1xuICAgICAgXCJNb2QtXFx1MDQ0RlwiOiAoKSA9PiB0aGlzLmVkaXRvci5jb21tYW5kcy51bmRvKCksXG4gICAgICBcIlNoaWZ0LU1vZC1cXHUwNDRGXCI6ICgpID0+IHRoaXMuZWRpdG9yLmNvbW1hbmRzLnJlZG8oKVxuICAgIH07XG4gIH1cbn0pO1xuZXhwb3J0IHtcbiAgQ2hhcmFjdGVyQ291bnQsXG4gIERyb3BjdXJzb3IsXG4gIEZvY3VzLFxuICBHYXBjdXJzb3IsXG4gIFBsYWNlaG9sZGVyLFxuICBTZWxlY3Rpb24sXG4gIFRyYWlsaW5nTm9kZSxcbiAgVW5kb1JlZG8sXG4gIHByZXBhcmVQbGFjZWhvbGRlckF0dHJpYnV0ZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/extensions/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/commands/index.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/commands/index.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ autoJoin: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.autoJoin),\n/* harmony export */ baseKeymap: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.baseKeymap),\n/* harmony export */ chainCommands: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.chainCommands),\n/* harmony export */ createParagraphNear: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.createParagraphNear),\n/* harmony export */ deleteSelection: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.deleteSelection),\n/* harmony export */ exitCode: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.exitCode),\n/* harmony export */ joinBackward: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.joinBackward),\n/* harmony export */ joinDown: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.joinDown),\n/* harmony export */ joinForward: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.joinForward),\n/* harmony export */ joinTextblockBackward: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.joinTextblockBackward),\n/* harmony export */ joinTextblockForward: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.joinTextblockForward),\n/* harmony export */ joinUp: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.joinUp),\n/* harmony export */ lift: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.lift),\n/* harmony export */ liftEmptyBlock: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.liftEmptyBlock),\n/* harmony export */ macBaseKeymap: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.macBaseKeymap),\n/* harmony export */ newlineInCode: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.newlineInCode),\n/* harmony export */ pcBaseKeymap: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.pcBaseKeymap),\n/* harmony export */ selectAll: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.selectAll),\n/* harmony export */ selectNodeBackward: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.selectNodeBackward),\n/* harmony export */ selectNodeForward: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.selectNodeForward),\n/* harmony export */ selectParentNode: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.selectParentNode),\n/* harmony export */ selectTextblockEnd: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.selectTextblockEnd),\n/* harmony export */ selectTextblockStart: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.selectTextblockStart),\n/* harmony export */ setBlockType: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.setBlockType),\n/* harmony export */ splitBlock: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.splitBlock),\n/* harmony export */ splitBlockAs: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.splitBlockAs),\n/* harmony export */ splitBlockKeepMarks: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.splitBlockKeepMarks),\n/* harmony export */ toggleMark: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.toggleMark),\n/* harmony export */ wrapIn: () => (/* reexport safe */ prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__.wrapIn)\n/* harmony export */ });\n/* harmony import */ var prosemirror_commands__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-commands */ \"(app-pages-browser)/./node_modules/prosemirror-commands/dist/index.js\");\n// commands/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3QvY29tbWFuZHMvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDcUMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXHBtXFxkaXN0XFxjb21tYW5kc1xcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gY29tbWFuZHMvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gXCJwcm9zZW1pcnJvci1jb21tYW5kc1wiO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/commands/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/dropcursor/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/dropcursor/index.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ dropCursor: () => (/* reexport safe */ prosemirror_dropcursor__WEBPACK_IMPORTED_MODULE_0__.dropCursor)\n/* harmony export */ });\n/* harmony import */ var prosemirror_dropcursor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-dropcursor */ \"(app-pages-browser)/./node_modules/prosemirror-dropcursor/dist/index.js\");\n// dropcursor/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3QvZHJvcGN1cnNvci9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ3VDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAdGlwdGFwXFxwbVxcZGlzdFxcZHJvcGN1cnNvclxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZHJvcGN1cnNvci9pbmRleC50c1xuZXhwb3J0ICogZnJvbSBcInByb3NlbWlycm9yLWRyb3BjdXJzb3JcIjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/dropcursor/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/gapcursor/index.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/gapcursor/index.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GapCursor: () => (/* reexport safe */ prosemirror_gapcursor__WEBPACK_IMPORTED_MODULE_0__.GapCursor),\n/* harmony export */ gapCursor: () => (/* reexport safe */ prosemirror_gapcursor__WEBPACK_IMPORTED_MODULE_0__.gapCursor)\n/* harmony export */ });\n/* harmony import */ var prosemirror_gapcursor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-gapcursor */ \"(app-pages-browser)/./node_modules/prosemirror-gapcursor/dist/index.js\");\n// gapcursor/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3QvZ2FwY3Vyc29yL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ3NDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAdGlwdGFwXFxwbVxcZGlzdFxcZ2FwY3Vyc29yXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnYXBjdXJzb3IvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gXCJwcm9zZW1pcnJvci1nYXBjdXJzb3JcIjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/gapcursor/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/history/index.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/history/index.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ closeHistory: () => (/* reexport safe */ prosemirror_history__WEBPACK_IMPORTED_MODULE_0__.closeHistory),\n/* harmony export */ history: () => (/* reexport safe */ prosemirror_history__WEBPACK_IMPORTED_MODULE_0__.history),\n/* harmony export */ isHistoryTransaction: () => (/* reexport safe */ prosemirror_history__WEBPACK_IMPORTED_MODULE_0__.isHistoryTransaction),\n/* harmony export */ redo: () => (/* reexport safe */ prosemirror_history__WEBPACK_IMPORTED_MODULE_0__.redo),\n/* harmony export */ redoDepth: () => (/* reexport safe */ prosemirror_history__WEBPACK_IMPORTED_MODULE_0__.redoDepth),\n/* harmony export */ redoNoScroll: () => (/* reexport safe */ prosemirror_history__WEBPACK_IMPORTED_MODULE_0__.redoNoScroll),\n/* harmony export */ undo: () => (/* reexport safe */ prosemirror_history__WEBPACK_IMPORTED_MODULE_0__.undo),\n/* harmony export */ undoDepth: () => (/* reexport safe */ prosemirror_history__WEBPACK_IMPORTED_MODULE_0__.undoDepth),\n/* harmony export */ undoNoScroll: () => (/* reexport safe */ prosemirror_history__WEBPACK_IMPORTED_MODULE_0__.undoNoScroll)\n/* harmony export */ });\n/* harmony import */ var prosemirror_history__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-history */ \"(app-pages-browser)/./node_modules/prosemirror-history/dist/index.js\");\n// history/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3QvaGlzdG9yeS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDb0MiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXHBtXFxkaXN0XFxoaXN0b3J5XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBoaXN0b3J5L2luZGV4LnRzXG5leHBvcnQgKiBmcm9tIFwicHJvc2VtaXJyb3ItaGlzdG9yeVwiO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/history/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/keymap/index.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/keymap/index.js ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ keydownHandler: () => (/* reexport safe */ prosemirror_keymap__WEBPACK_IMPORTED_MODULE_0__.keydownHandler),\n/* harmony export */ keymap: () => (/* reexport safe */ prosemirror_keymap__WEBPACK_IMPORTED_MODULE_0__.keymap)\n/* harmony export */ });\n/* harmony import */ var prosemirror_keymap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-keymap */ \"(app-pages-browser)/./node_modules/prosemirror-keymap/dist/index.js\");\n// keymap/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3Qva2V5bWFwL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ21DIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAdGlwdGFwXFxwbVxcZGlzdFxca2V5bWFwXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBrZXltYXAvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gXCJwcm9zZW1pcnJvci1rZXltYXBcIjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/keymap/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/model/index.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/model/index.js ***!
|
||
\*****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ContentMatch: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.ContentMatch),\n/* harmony export */ DOMParser: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.DOMParser),\n/* harmony export */ DOMSerializer: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.DOMSerializer),\n/* harmony export */ Fragment: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment),\n/* harmony export */ Mark: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Mark),\n/* harmony export */ MarkType: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.MarkType),\n/* harmony export */ Node: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Node),\n/* harmony export */ NodeRange: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.NodeRange),\n/* harmony export */ NodeType: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.NodeType),\n/* harmony export */ ReplaceError: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.ReplaceError),\n/* harmony export */ ResolvedPos: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.ResolvedPos),\n/* harmony export */ Schema: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Schema),\n/* harmony export */ Slice: () => (/* reexport safe */ prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice)\n/* harmony export */ });\n/* harmony import */ var prosemirror_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-model */ \"(app-pages-browser)/./node_modules/prosemirror-model/dist/index.js\");\n// model/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3QvbW9kZWwvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNrQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHRpcHRhcFxccG1cXGRpc3RcXG1vZGVsXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb2RlbC9pbmRleC50c1xuZXhwb3J0ICogZnJvbSBcInByb3NlbWlycm9yLW1vZGVsXCI7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/model/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/schema-list/index.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/schema-list/index.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addListNodes: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.addListNodes),\n/* harmony export */ bulletList: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.bulletList),\n/* harmony export */ liftListItem: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.liftListItem),\n/* harmony export */ listItem: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.listItem),\n/* harmony export */ orderedList: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.orderedList),\n/* harmony export */ sinkListItem: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.sinkListItem),\n/* harmony export */ splitListItem: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.splitListItem),\n/* harmony export */ splitListItemKeepMarks: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.splitListItemKeepMarks),\n/* harmony export */ wrapInList: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.wrapInList),\n/* harmony export */ wrapRangeInList: () => (/* reexport safe */ prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__.wrapRangeInList)\n/* harmony export */ });\n/* harmony import */ var prosemirror_schema_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-schema-list */ \"(app-pages-browser)/./node_modules/prosemirror-schema-list/dist/index.js\");\n// schema-list/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3Qvc2NoZW1hLWxpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUN3QyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHRpcHRhcFxccG1cXGRpc3RcXHNjaGVtYS1saXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzY2hlbWEtbGlzdC9pbmRleC50c1xuZXhwb3J0ICogZnJvbSBcInByb3NlbWlycm9yLXNjaGVtYS1saXN0XCI7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/schema-list/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/state/index.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/state/index.js ***!
|
||
\*****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AllSelection: () => (/* reexport safe */ prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.AllSelection),\n/* harmony export */ EditorState: () => (/* reexport safe */ prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.EditorState),\n/* harmony export */ NodeSelection: () => (/* reexport safe */ prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.NodeSelection),\n/* harmony export */ Plugin: () => (/* reexport safe */ prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.Plugin),\n/* harmony export */ PluginKey: () => (/* reexport safe */ prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.PluginKey),\n/* harmony export */ Selection: () => (/* reexport safe */ prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.Selection),\n/* harmony export */ SelectionRange: () => (/* reexport safe */ prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.SelectionRange),\n/* harmony export */ TextSelection: () => (/* reexport safe */ prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.TextSelection),\n/* harmony export */ Transaction: () => (/* reexport safe */ prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.Transaction)\n/* harmony export */ });\n/* harmony import */ var prosemirror_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-state */ \"(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js\");\n// state/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3Qvc3RhdGUvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ2tDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAdGlwdGFwXFxwbVxcZGlzdFxcc3RhdGVcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHN0YXRlL2luZGV4LnRzXG5leHBvcnQgKiBmcm9tIFwicHJvc2VtaXJyb3Itc3RhdGVcIjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/state/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/transform/index.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/transform/index.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AddMarkStep: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.AddMarkStep),\n/* harmony export */ AddNodeMarkStep: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.AddNodeMarkStep),\n/* harmony export */ AttrStep: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.AttrStep),\n/* harmony export */ DocAttrStep: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.DocAttrStep),\n/* harmony export */ MapResult: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.MapResult),\n/* harmony export */ Mapping: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.Mapping),\n/* harmony export */ RemoveMarkStep: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.RemoveMarkStep),\n/* harmony export */ RemoveNodeMarkStep: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.RemoveNodeMarkStep),\n/* harmony export */ ReplaceAroundStep: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.ReplaceAroundStep),\n/* harmony export */ ReplaceStep: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.ReplaceStep),\n/* harmony export */ Step: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.Step),\n/* harmony export */ StepMap: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.StepMap),\n/* harmony export */ StepResult: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.StepResult),\n/* harmony export */ Transform: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.Transform),\n/* harmony export */ TransformError: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.TransformError),\n/* harmony export */ canJoin: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canJoin),\n/* harmony export */ canSplit: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canSplit),\n/* harmony export */ dropPoint: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.dropPoint),\n/* harmony export */ findWrapping: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.findWrapping),\n/* harmony export */ insertPoint: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.insertPoint),\n/* harmony export */ joinPoint: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.joinPoint),\n/* harmony export */ liftTarget: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.liftTarget),\n/* harmony export */ replaceStep: () => (/* reexport safe */ prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.replaceStep)\n/* harmony export */ });\n/* harmony import */ var prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-transform */ \"(app-pages-browser)/./node_modules/prosemirror-transform/dist/index.js\");\n// transform/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3QvdHJhbnNmb3JtL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ3NDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAdGlwdGFwXFxwbVxcZGlzdFxcdHJhbnNmb3JtXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc2Zvcm0vaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gXCJwcm9zZW1pcnJvci10cmFuc2Zvcm1cIjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/transform/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/pm/dist/view/index.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/@tiptap/pm/dist/view/index.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Decoration: () => (/* reexport safe */ prosemirror_view__WEBPACK_IMPORTED_MODULE_0__.Decoration),\n/* harmony export */ DecorationSet: () => (/* reexport safe */ prosemirror_view__WEBPACK_IMPORTED_MODULE_0__.DecorationSet),\n/* harmony export */ EditorView: () => (/* reexport safe */ prosemirror_view__WEBPACK_IMPORTED_MODULE_0__.EditorView),\n/* harmony export */ __endComposition: () => (/* reexport safe */ prosemirror_view__WEBPACK_IMPORTED_MODULE_0__.__endComposition),\n/* harmony export */ __parseFromClipboard: () => (/* reexport safe */ prosemirror_view__WEBPACK_IMPORTED_MODULE_0__.__parseFromClipboard)\n/* harmony export */ });\n/* harmony import */ var prosemirror_view__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-view */ \"(app-pages-browser)/./node_modules/prosemirror-view/dist/index.js\");\n// view/index.ts\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3BtL2Rpc3Qvdmlldy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNpQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcQHRpcHRhcFxccG1cXGRpc3RcXHZpZXdcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHZpZXcvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gXCJwcm9zZW1pcnJvci12aWV3XCI7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/pm/dist/view/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/react/dist/index.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/@tiptap/react/dist/index.js ***!
|
||
\**************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CommandManager: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.CommandManager),\n/* harmony export */ Editor: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.Editor),\n/* harmony export */ EditorConsumer: () => (/* binding */ EditorConsumer),\n/* harmony export */ EditorContent: () => (/* binding */ EditorContent),\n/* harmony export */ EditorContext: () => (/* binding */ EditorContext),\n/* harmony export */ EditorProvider: () => (/* binding */ EditorProvider),\n/* harmony export */ Extendable: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.Extendable),\n/* harmony export */ Extension: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.Extension),\n/* harmony export */ Fragment: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.Fragment),\n/* harmony export */ InputRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.InputRule),\n/* harmony export */ MappablePosition: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.MappablePosition),\n/* harmony export */ Mark: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.Mark),\n/* harmony export */ MarkView: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.MarkView),\n/* harmony export */ MarkViewContent: () => (/* binding */ MarkViewContent),\n/* harmony export */ Node: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.Node),\n/* harmony export */ NodePos: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.NodePos),\n/* harmony export */ NodeView: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.NodeView),\n/* harmony export */ NodeViewContent: () => (/* binding */ NodeViewContent),\n/* harmony export */ NodeViewWrapper: () => (/* binding */ NodeViewWrapper),\n/* harmony export */ PasteRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.PasteRule),\n/* harmony export */ PureEditorContent: () => (/* binding */ PureEditorContent),\n/* harmony export */ ReactMarkView: () => (/* binding */ ReactMarkView),\n/* harmony export */ ReactMarkViewContext: () => (/* binding */ ReactMarkViewContext),\n/* harmony export */ ReactMarkViewRenderer: () => (/* binding */ ReactMarkViewRenderer),\n/* harmony export */ ReactNodeView: () => (/* binding */ ReactNodeView),\n/* harmony export */ ReactNodeViewContentProvider: () => (/* binding */ ReactNodeViewContentProvider),\n/* harmony export */ ReactNodeViewContext: () => (/* binding */ ReactNodeViewContext),\n/* harmony export */ ReactNodeViewRenderer: () => (/* binding */ ReactNodeViewRenderer),\n/* harmony export */ ReactRenderer: () => (/* binding */ ReactRenderer),\n/* harmony export */ ResizableNodeView: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.ResizableNodeView),\n/* harmony export */ ResizableNodeview: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.ResizableNodeview),\n/* harmony export */ Tiptap: () => (/* binding */ Tiptap),\n/* harmony export */ TiptapContent: () => (/* binding */ TiptapContent),\n/* harmony export */ TiptapContext: () => (/* binding */ TiptapContext),\n/* harmony export */ TiptapWrapper: () => (/* binding */ TiptapWrapper),\n/* harmony export */ Tracker: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.Tracker),\n/* harmony export */ callOrReturn: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.callOrReturn),\n/* harmony export */ canInsertNode: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.canInsertNode),\n/* harmony export */ combineTransactionSteps: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.combineTransactionSteps),\n/* harmony export */ commands: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.commands),\n/* harmony export */ createAtomBlockMarkdownSpec: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.createAtomBlockMarkdownSpec),\n/* harmony export */ createBlockMarkdownSpec: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.createBlockMarkdownSpec),\n/* harmony export */ createChainableState: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.createChainableState),\n/* harmony export */ createDocument: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.createDocument),\n/* harmony export */ createElement: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.createElement),\n/* harmony export */ createInlineMarkdownSpec: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.createInlineMarkdownSpec),\n/* harmony export */ createMappablePosition: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.createMappablePosition),\n/* harmony export */ createNodeFromContent: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.createNodeFromContent),\n/* harmony export */ createStyleTag: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.createStyleTag),\n/* harmony export */ defaultBlockAt: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.defaultBlockAt),\n/* harmony export */ deleteProps: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.deleteProps),\n/* harmony export */ elementFromString: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.elementFromString),\n/* harmony export */ escapeForRegEx: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.escapeForRegEx),\n/* harmony export */ extensions: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.extensions),\n/* harmony export */ findChildren: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.findChildren),\n/* harmony export */ findChildrenInRange: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.findChildrenInRange),\n/* harmony export */ findDuplicates: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.findDuplicates),\n/* harmony export */ findParentNode: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.findParentNode),\n/* harmony export */ findParentNodeClosestToPos: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.findParentNodeClosestToPos),\n/* harmony export */ flattenExtensions: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.flattenExtensions),\n/* harmony export */ fromString: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.fromString),\n/* harmony export */ generateHTML: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.generateHTML),\n/* harmony export */ generateJSON: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.generateJSON),\n/* harmony export */ generateText: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.generateText),\n/* harmony export */ getAttributes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getAttributes),\n/* harmony export */ getAttributesFromExtensions: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getAttributesFromExtensions),\n/* harmony export */ getChangedRanges: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getChangedRanges),\n/* harmony export */ getDebugJSON: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getDebugJSON),\n/* harmony export */ getExtensionField: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getExtensionField),\n/* harmony export */ getHTMLFromFragment: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getHTMLFromFragment),\n/* harmony export */ getMarkAttributes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getMarkAttributes),\n/* harmony export */ getMarkRange: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getMarkRange),\n/* harmony export */ getMarkType: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getMarkType),\n/* harmony export */ getMarksBetween: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getMarksBetween),\n/* harmony export */ getNodeAtPosition: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getNodeAtPosition),\n/* harmony export */ getNodeAttributes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getNodeAttributes),\n/* harmony export */ getNodeType: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getNodeType),\n/* harmony export */ getRenderedAttributes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getRenderedAttributes),\n/* harmony export */ getSchema: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getSchema),\n/* harmony export */ getSchemaByResolvedExtensions: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getSchemaByResolvedExtensions),\n/* harmony export */ getSchemaTypeByName: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getSchemaTypeByName),\n/* harmony export */ getSchemaTypeNameByName: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getSchemaTypeNameByName),\n/* harmony export */ getSplittedAttributes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getSplittedAttributes),\n/* harmony export */ getText: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getText),\n/* harmony export */ getTextBetween: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getTextBetween),\n/* harmony export */ getTextContentFromNodes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getTextContentFromNodes),\n/* harmony export */ getTextSerializersFromSchema: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getTextSerializersFromSchema),\n/* harmony export */ getUpdatedPosition: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getUpdatedPosition),\n/* harmony export */ h: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.h),\n/* harmony export */ injectExtensionAttributesToParseRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.injectExtensionAttributesToParseRule),\n/* harmony export */ inputRulesPlugin: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.inputRulesPlugin),\n/* harmony export */ isActive: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isActive),\n/* harmony export */ isAndroid: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isAndroid),\n/* harmony export */ isAtEndOfNode: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isAtEndOfNode),\n/* harmony export */ isAtStartOfNode: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isAtStartOfNode),\n/* harmony export */ isEmptyObject: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isEmptyObject),\n/* harmony export */ isExtensionRulesEnabled: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isExtensionRulesEnabled),\n/* harmony export */ isFirefox: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isFirefox),\n/* harmony export */ isFunction: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isFunction),\n/* harmony export */ isList: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isList),\n/* harmony export */ isMacOS: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isMacOS),\n/* harmony export */ isMarkActive: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isMarkActive),\n/* harmony export */ isNodeActive: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isNodeActive),\n/* harmony export */ isNodeEmpty: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isNodeEmpty),\n/* harmony export */ isNodeSelection: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isNodeSelection),\n/* harmony export */ isNumber: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isNumber),\n/* harmony export */ isPlainObject: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isPlainObject),\n/* harmony export */ isRegExp: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isRegExp),\n/* harmony export */ isSafari: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isSafari),\n/* harmony export */ isString: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isString),\n/* harmony export */ isTextSelection: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isTextSelection),\n/* harmony export */ isiOS: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.isiOS),\n/* harmony export */ markInputRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.markInputRule),\n/* harmony export */ markPasteRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.markPasteRule),\n/* harmony export */ markdown: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.markdown),\n/* harmony export */ mergeAttributes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.mergeAttributes),\n/* harmony export */ mergeDeep: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.mergeDeep),\n/* harmony export */ minMax: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.minMax),\n/* harmony export */ nodeInputRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.nodeInputRule),\n/* harmony export */ nodePasteRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.nodePasteRule),\n/* harmony export */ objectIncludes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.objectIncludes),\n/* harmony export */ parseAttributes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.parseAttributes),\n/* harmony export */ parseIndentedBlocks: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.parseIndentedBlocks),\n/* harmony export */ pasteRulesPlugin: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.pasteRulesPlugin),\n/* harmony export */ posToDOMRect: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.posToDOMRect),\n/* harmony export */ removeDuplicates: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.removeDuplicates),\n/* harmony export */ renderNestedMarkdownContent: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.renderNestedMarkdownContent),\n/* harmony export */ resolveExtensions: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.resolveExtensions),\n/* harmony export */ resolveFocusPosition: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.resolveFocusPosition),\n/* harmony export */ rewriteUnknownContent: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.rewriteUnknownContent),\n/* harmony export */ selectionToInsertionEnd: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.selectionToInsertionEnd),\n/* harmony export */ serializeAttributes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.serializeAttributes),\n/* harmony export */ sortExtensions: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.sortExtensions),\n/* harmony export */ splitExtensions: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.splitExtensions),\n/* harmony export */ textInputRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.textInputRule),\n/* harmony export */ textPasteRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.textPasteRule),\n/* harmony export */ textblockTypeInputRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.textblockTypeInputRule),\n/* harmony export */ updateMarkViewAttributes: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.updateMarkViewAttributes),\n/* harmony export */ useCurrentEditor: () => (/* binding */ useCurrentEditor),\n/* harmony export */ useEditor: () => (/* binding */ useEditor),\n/* harmony export */ useEditorState: () => (/* binding */ useEditorState),\n/* harmony export */ useReactNodeView: () => (/* binding */ useReactNodeView),\n/* harmony export */ useTiptap: () => (/* binding */ useTiptap),\n/* harmony export */ useTiptapState: () => (/* binding */ useTiptapState),\n/* harmony export */ wrappingInputRule: () => (/* reexport safe */ _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.wrappingInputRule)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-dom/index.js\");\n/* harmony import */ var use_sync_external_store_shim_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! use-sync-external-store/shim/index.js */ \"(app-pages-browser)/./node_modules/use-sync-external-store/shim/index.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n/* harmony import */ var fast_equals__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! fast-equals */ \"(app-pages-browser)/./node_modules/fast-equals/dist/es/index.mjs\");\n/* harmony import */ var use_sync_external_store_shim_with_selector_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! use-sync-external-store/shim/with-selector.js */ \"(app-pages-browser)/./node_modules/use-sync-external-store/shim/with-selector.js\");\n// src/Context.tsx\n\n\n// src/EditorContent.tsx\n\n\n\n\nvar mergeRefs = (...refs) => {\n return (node) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ;\n ref.current = node;\n }\n });\n };\n};\nvar Portals = ({ contentComponent }) => {\n const renderers = (0,use_sync_external_store_shim_index_js__WEBPACK_IMPORTED_MODULE_2__.useSyncExternalStore)(\n contentComponent.subscribe,\n contentComponent.getSnapshot,\n contentComponent.getServerSnapshot\n );\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, { children: Object.values(renderers) });\n};\nfunction getInstance() {\n const subscribers = /* @__PURE__ */ new Set();\n let renderers = {};\n return {\n /**\n * Subscribe to the editor instance's changes.\n */\n subscribe(callback) {\n subscribers.add(callback);\n return () => {\n subscribers.delete(callback);\n };\n },\n getSnapshot() {\n return renderers;\n },\n getServerSnapshot() {\n return renderers;\n },\n /**\n * Adds a new NodeView Renderer to the editor.\n */\n setRenderer(id, renderer) {\n renderers = {\n ...renderers,\n [id]: react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal(renderer.reactElement, renderer.element, id)\n };\n subscribers.forEach((subscriber) => subscriber());\n },\n /**\n * Removes a NodeView Renderer from the editor.\n */\n removeRenderer(id) {\n const nextRenderers = { ...renderers };\n delete nextRenderers[id];\n renderers = nextRenderers;\n subscribers.forEach((subscriber) => subscriber());\n }\n };\n}\nvar PureEditorContent = class extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props) {\n var _a;\n super(props);\n this.editorContentRef = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n this.initialized = false;\n this.state = {\n hasContentComponentInitialized: Boolean((_a = props.editor) == null ? void 0 : _a.contentComponent)\n };\n }\n componentDidMount() {\n this.init();\n }\n componentDidUpdate() {\n this.init();\n }\n init() {\n var _a;\n const editor = this.props.editor;\n if (editor && !editor.isDestroyed && ((_a = editor.view.dom) == null ? void 0 : _a.parentNode)) {\n if (editor.contentComponent) {\n return;\n }\n const element = this.editorContentRef.current;\n element.append(...editor.view.dom.parentNode.childNodes);\n editor.setOptions({\n element\n });\n editor.contentComponent = getInstance();\n if (!this.state.hasContentComponentInitialized) {\n this.unsubscribeToContentComponent = editor.contentComponent.subscribe(() => {\n this.setState((prevState) => {\n if (!prevState.hasContentComponentInitialized) {\n return {\n hasContentComponentInitialized: true\n };\n }\n return prevState;\n });\n if (this.unsubscribeToContentComponent) {\n this.unsubscribeToContentComponent();\n }\n });\n }\n editor.createNodeViews();\n this.initialized = true;\n }\n }\n componentWillUnmount() {\n var _a;\n const editor = this.props.editor;\n if (!editor) {\n return;\n }\n this.initialized = false;\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {}\n });\n }\n if (this.unsubscribeToContentComponent) {\n this.unsubscribeToContentComponent();\n }\n editor.contentComponent = null;\n try {\n if (!((_a = editor.view.dom) == null ? void 0 : _a.parentNode)) {\n return;\n }\n const newElement = document.createElement(\"div\");\n newElement.append(...editor.view.dom.parentNode.childNodes);\n editor.setOptions({\n element: newElement\n });\n } catch {\n }\n }\n render() {\n const { editor, innerRef, ...rest } = this.props;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, { children: [\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\"div\", { ref: mergeRefs(innerRef, this.editorContentRef), ...rest }),\n (editor == null ? void 0 : editor.contentComponent) && /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Portals, { contentComponent: editor.contentComponent })\n ] });\n }\n};\nvar EditorContentWithKey = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(\n (props, ref) => {\n const key = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {\n return Math.floor(Math.random() * 4294967295).toString();\n }, [props.editor]);\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(PureEditorContent, {\n key,\n innerRef: ref,\n ...props\n });\n }\n);\nvar EditorContent = react__WEBPACK_IMPORTED_MODULE_0__.memo(EditorContentWithKey);\n\n// src/useEditor.ts\n\n\n\n\n// src/useEditorState.ts\n\n\n\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;\nvar EditorStateManager = class {\n constructor(initialEditor) {\n this.transactionNumber = 0;\n this.lastTransactionNumber = 0;\n this.subscribers = /* @__PURE__ */ new Set();\n this.editor = initialEditor;\n this.lastSnapshot = { editor: initialEditor, transactionNumber: 0 };\n this.getSnapshot = this.getSnapshot.bind(this);\n this.getServerSnapshot = this.getServerSnapshot.bind(this);\n this.watch = this.watch.bind(this);\n this.subscribe = this.subscribe.bind(this);\n }\n /**\n * Get the current editor instance.\n */\n getSnapshot() {\n if (this.transactionNumber === this.lastTransactionNumber) {\n return this.lastSnapshot;\n }\n this.lastTransactionNumber = this.transactionNumber;\n this.lastSnapshot = { editor: this.editor, transactionNumber: this.transactionNumber };\n return this.lastSnapshot;\n }\n /**\n * Always disable the editor on the server-side.\n */\n getServerSnapshot() {\n return { editor: null, transactionNumber: 0 };\n }\n /**\n * Subscribe to the editor instance's changes.\n */\n subscribe(callback) {\n this.subscribers.add(callback);\n return () => {\n this.subscribers.delete(callback);\n };\n }\n /**\n * Watch the editor instance for changes.\n */\n watch(nextEditor) {\n this.editor = nextEditor;\n if (this.editor) {\n const fn = () => {\n this.transactionNumber += 1;\n this.subscribers.forEach((callback) => callback());\n };\n const currentEditor = this.editor;\n currentEditor.on(\"transaction\", fn);\n return () => {\n currentEditor.off(\"transaction\", fn);\n };\n }\n return void 0;\n }\n};\nfunction useEditorState(options) {\n var _a;\n const [editorStateManager] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(() => new EditorStateManager(options.editor));\n const selectedState = (0,use_sync_external_store_shim_with_selector_js__WEBPACK_IMPORTED_MODULE_4__.useSyncExternalStoreWithSelector)(\n editorStateManager.subscribe,\n editorStateManager.getSnapshot,\n editorStateManager.getServerSnapshot,\n options.selector,\n (_a = options.equalityFn) != null ? _a : fast_equals__WEBPACK_IMPORTED_MODULE_5__.deepEqual\n );\n useIsomorphicLayoutEffect(() => {\n return editorStateManager.watch(options.editor);\n }, [options.editor, editorStateManager]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(selectedState);\n return selectedState;\n}\n\n// src/useEditor.ts\nvar isDev = \"development\" !== \"production\";\nvar isSSR = typeof window === \"undefined\";\nvar isNext = isSSR || Boolean(typeof window !== \"undefined\" && window.next);\nvar EditorInstanceManager = class _EditorInstanceManager {\n constructor(options) {\n /**\n * The current editor instance.\n */\n this.editor = null;\n /**\n * The subscriptions to notify when the editor instance\n * has been created or destroyed.\n */\n this.subscriptions = /* @__PURE__ */ new Set();\n /**\n * Whether the editor has been mounted.\n */\n this.isComponentMounted = false;\n /**\n * The most recent dependencies array.\n */\n this.previousDeps = null;\n /**\n * The unique instance ID. This is used to identify the editor instance. And will be re-generated for each new instance.\n */\n this.instanceId = \"\";\n this.options = options;\n this.subscriptions = /* @__PURE__ */ new Set();\n this.setEditor(this.getInitialEditor());\n this.scheduleDestroy();\n this.getEditor = this.getEditor.bind(this);\n this.getServerSnapshot = this.getServerSnapshot.bind(this);\n this.subscribe = this.subscribe.bind(this);\n this.refreshEditorInstance = this.refreshEditorInstance.bind(this);\n this.scheduleDestroy = this.scheduleDestroy.bind(this);\n this.onRender = this.onRender.bind(this);\n this.createEditor = this.createEditor.bind(this);\n }\n setEditor(editor) {\n this.editor = editor;\n this.instanceId = Math.random().toString(36).slice(2, 9);\n this.subscriptions.forEach((cb) => cb());\n }\n getInitialEditor() {\n if (this.options.current.immediatelyRender === void 0) {\n if (isSSR || isNext) {\n if (isDev) {\n throw new Error(\n \"Tiptap Error: SSR has been detected, please set `immediatelyRender` explicitly to `false` to avoid hydration mismatches.\"\n );\n }\n return null;\n }\n return this.createEditor();\n }\n if (this.options.current.immediatelyRender && isSSR && isDev) {\n throw new Error(\n \"Tiptap Error: SSR has been detected, and `immediatelyRender` has been set to `true` this is an unsupported configuration that may result in errors, explicitly set `immediatelyRender` to `false` to avoid hydration mismatches.\"\n );\n }\n if (this.options.current.immediatelyRender) {\n return this.createEditor();\n }\n return null;\n }\n /**\n * Create a new editor instance. And attach event listeners.\n */\n createEditor() {\n const optionsToApply = {\n ...this.options.current,\n // Always call the most recent version of the callback function by default\n onBeforeCreate: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onBeforeCreate) == null ? void 0 : _b.call(_a, ...args);\n },\n onBlur: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onBlur) == null ? void 0 : _b.call(_a, ...args);\n },\n onCreate: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onCreate) == null ? void 0 : _b.call(_a, ...args);\n },\n onDestroy: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onDestroy) == null ? void 0 : _b.call(_a, ...args);\n },\n onFocus: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onFocus) == null ? void 0 : _b.call(_a, ...args);\n },\n onSelectionUpdate: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onSelectionUpdate) == null ? void 0 : _b.call(_a, ...args);\n },\n onTransaction: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onTransaction) == null ? void 0 : _b.call(_a, ...args);\n },\n onUpdate: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onUpdate) == null ? void 0 : _b.call(_a, ...args);\n },\n onContentError: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onContentError) == null ? void 0 : _b.call(_a, ...args);\n },\n onDrop: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onDrop) == null ? void 0 : _b.call(_a, ...args);\n },\n onPaste: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onPaste) == null ? void 0 : _b.call(_a, ...args);\n },\n onDelete: (...args) => {\n var _a, _b;\n return (_b = (_a = this.options.current).onDelete) == null ? void 0 : _b.call(_a, ...args);\n }\n };\n const editor = new _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.Editor(optionsToApply);\n return editor;\n }\n /**\n * Get the current editor instance.\n */\n getEditor() {\n return this.editor;\n }\n /**\n * Always disable the editor on the server-side.\n */\n getServerSnapshot() {\n return null;\n }\n /**\n * Subscribe to the editor instance's changes.\n */\n subscribe(onStoreChange) {\n this.subscriptions.add(onStoreChange);\n return () => {\n this.subscriptions.delete(onStoreChange);\n };\n }\n static compareOptions(a, b) {\n return Object.keys(a).every((key) => {\n if ([\n \"onCreate\",\n \"onBeforeCreate\",\n \"onDestroy\",\n \"onUpdate\",\n \"onTransaction\",\n \"onFocus\",\n \"onBlur\",\n \"onSelectionUpdate\",\n \"onContentError\",\n \"onDrop\",\n \"onPaste\"\n ].includes(key)) {\n return true;\n }\n if (key === \"extensions\" && a.extensions && b.extensions) {\n if (a.extensions.length !== b.extensions.length) {\n return false;\n }\n return a.extensions.every((extension, index) => {\n var _a;\n if (extension !== ((_a = b.extensions) == null ? void 0 : _a[index])) {\n return false;\n }\n return true;\n });\n }\n if (a[key] !== b[key]) {\n return false;\n }\n return true;\n });\n }\n /**\n * On each render, we will create, update, or destroy the editor instance.\n * @param deps The dependencies to watch for changes\n * @returns A cleanup function\n */\n onRender(deps) {\n return () => {\n this.isComponentMounted = true;\n clearTimeout(this.scheduledDestructionTimeout);\n if (this.editor && !this.editor.isDestroyed && deps.length === 0) {\n if (!_EditorInstanceManager.compareOptions(this.options.current, this.editor.options)) {\n this.editor.setOptions({\n ...this.options.current,\n editable: this.editor.isEditable\n });\n }\n } else {\n this.refreshEditorInstance(deps);\n }\n return () => {\n this.isComponentMounted = false;\n this.scheduleDestroy();\n };\n };\n }\n /**\n * Recreate the editor instance if the dependencies have changed.\n */\n refreshEditorInstance(deps) {\n if (this.editor && !this.editor.isDestroyed) {\n if (this.previousDeps === null) {\n this.previousDeps = deps;\n return;\n }\n const depsAreEqual = this.previousDeps.length === deps.length && this.previousDeps.every((dep, index) => dep === deps[index]);\n if (depsAreEqual) {\n return;\n }\n }\n if (this.editor && !this.editor.isDestroyed) {\n this.editor.destroy();\n }\n this.setEditor(this.createEditor());\n this.previousDeps = deps;\n }\n /**\n * Schedule the destruction of the editor instance.\n * This will only destroy the editor if it was not mounted on the next tick.\n * This is to avoid destroying the editor instance when it's actually still mounted.\n */\n scheduleDestroy() {\n const currentInstanceId = this.instanceId;\n const currentEditor = this.editor;\n this.scheduledDestructionTimeout = setTimeout(() => {\n if (this.isComponentMounted && this.instanceId === currentInstanceId) {\n if (currentEditor) {\n currentEditor.setOptions(this.options.current);\n }\n return;\n }\n if (currentEditor && !currentEditor.isDestroyed) {\n currentEditor.destroy();\n if (this.instanceId === currentInstanceId) {\n this.setEditor(null);\n }\n }\n }, 1);\n }\n};\nfunction useEditor(options = {}, deps = []) {\n const mostRecentOptions = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(options);\n mostRecentOptions.current = options;\n const [instanceManager] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(() => new EditorInstanceManager(mostRecentOptions));\n const editor = (0,use_sync_external_store_shim_index_js__WEBPACK_IMPORTED_MODULE_2__.useSyncExternalStore)(\n instanceManager.subscribe,\n instanceManager.getEditor,\n instanceManager.getServerSnapshot\n );\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(editor);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(instanceManager.onRender(deps));\n useEditorState({\n editor,\n selector: ({ transactionNumber }) => {\n if (options.shouldRerenderOnTransaction === false || options.shouldRerenderOnTransaction === void 0) {\n return null;\n }\n if (options.immediatelyRender && transactionNumber === 0) {\n return 0;\n }\n return transactionNumber + 1;\n }\n });\n return editor;\n}\n\n// src/Context.tsx\n\nvar EditorContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({\n editor: null\n});\nvar EditorConsumer = EditorContext.Consumer;\nvar useCurrentEditor = () => (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(EditorContext);\nfunction EditorProvider({\n children,\n slotAfter,\n slotBefore,\n editorContainerProps = {},\n ...editorOptions\n}) {\n const editor = useEditor(editorOptions);\n const contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => ({ editor }), [editor]);\n if (!editor) {\n return null;\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(EditorContext.Provider, { value: contextValue, children: [\n slotBefore,\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(EditorConsumer, { children: ({ editor: currentEditor }) => /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(EditorContent, { editor: currentEditor, ...editorContainerProps }) }),\n children,\n slotAfter\n ] });\n}\n\n// src/useReactNodeView.ts\n\nvar ReactNodeViewContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({\n onDragStart: () => {\n },\n nodeViewContentChildren: void 0,\n nodeViewContentRef: () => {\n }\n});\nvar ReactNodeViewContentProvider = ({ children, content }) => {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(ReactNodeViewContext.Provider, { value: { nodeViewContentChildren: content } }, children);\n};\nvar useReactNodeView = () => (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ReactNodeViewContext);\n\n// src/NodeViewContent.tsx\n\nfunction NodeViewContent({\n as: Tag = \"div\",\n ...props\n}) {\n const { nodeViewContentRef, nodeViewContentChildren } = useReactNodeView();\n return (\n // @ts-ignore\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\n Tag,\n {\n ...props,\n ref: nodeViewContentRef,\n \"data-node-view-content\": \"\",\n style: {\n whiteSpace: \"pre-wrap\",\n ...props.style\n },\n children: nodeViewContentChildren\n }\n )\n );\n}\n\n// src/NodeViewWrapper.tsx\n\n\nvar NodeViewWrapper = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, ref) => {\n const { onDragStart } = useReactNodeView();\n const Tag = props.as || \"div\";\n return (\n // @ts-ignore\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(\n Tag,\n {\n ...props,\n ref,\n \"data-node-view-wrapper\": \"\",\n onDragStart,\n style: {\n whiteSpace: \"normal\",\n ...props.style\n }\n }\n )\n );\n});\n\n// src/ReactMarkViewRenderer.tsx\n\n\n\n// src/ReactRenderer.tsx\n\n\n\nfunction isClassComponent(Component) {\n return !!(typeof Component === \"function\" && Component.prototype && Component.prototype.isReactComponent);\n}\nfunction isForwardRefComponent(Component) {\n return !!(typeof Component === \"object\" && Component.$$typeof && (Component.$$typeof.toString() === \"Symbol(react.forward_ref)\" || Component.$$typeof.description === \"react.forward_ref\"));\n}\nfunction isMemoComponent(Component) {\n return !!(typeof Component === \"object\" && Component.$$typeof && (Component.$$typeof.toString() === \"Symbol(react.memo)\" || Component.$$typeof.description === \"react.memo\"));\n}\nfunction canReceiveRef(Component) {\n if (isClassComponent(Component)) {\n return true;\n }\n if (isForwardRefComponent(Component)) {\n return true;\n }\n if (isMemoComponent(Component)) {\n const wrappedComponent = Component.type;\n if (wrappedComponent) {\n return isClassComponent(wrappedComponent) || isForwardRefComponent(wrappedComponent);\n }\n }\n return false;\n}\nfunction isReact19Plus() {\n try {\n if (react__WEBPACK_IMPORTED_MODULE_0__.version) {\n const majorVersion = parseInt(react__WEBPACK_IMPORTED_MODULE_0__.version.split(\".\")[0], 10);\n return majorVersion >= 19;\n }\n } catch {\n }\n return false;\n}\nvar ReactRenderer = class {\n /**\n * Immediately creates element and renders the provided React component.\n */\n constructor(component, { editor, props = {}, as = \"div\", className = \"\" }) {\n this.ref = null;\n /**\n * Flag to track if the renderer has been destroyed, preventing queued or asynchronous renders from executing after teardown.\n */\n this.destroyed = false;\n this.id = Math.floor(Math.random() * 4294967295).toString();\n this.component = component;\n this.editor = editor;\n this.props = props;\n this.element = document.createElement(as);\n this.element.classList.add(\"react-renderer\");\n if (className) {\n this.element.classList.add(...className.split(\" \"));\n }\n if (this.editor.isInitialized) {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_1__.flushSync)(() => {\n this.render();\n });\n } else {\n queueMicrotask(() => {\n if (this.destroyed) {\n return;\n }\n this.render();\n });\n }\n }\n /**\n * Render the React component.\n */\n render() {\n var _a;\n if (this.destroyed) {\n return;\n }\n const Component = this.component;\n const props = this.props;\n const editor = this.editor;\n const isReact19 = isReact19Plus();\n const componentCanReceiveRef = canReceiveRef(Component);\n const elementProps = { ...props };\n if (elementProps.ref && !(isReact19 || componentCanReceiveRef)) {\n delete elementProps.ref;\n }\n if (!elementProps.ref && (isReact19 || componentCanReceiveRef)) {\n elementProps.ref = (ref) => {\n this.ref = ref;\n };\n }\n this.reactElement = /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Component, { ...elementProps });\n (_a = editor == null ? void 0 : editor.contentComponent) == null ? void 0 : _a.setRenderer(this.id, this);\n }\n /**\n * Re-renders the React component with new props.\n */\n updateProps(props = {}) {\n if (this.destroyed) {\n return;\n }\n this.props = {\n ...this.props,\n ...props\n };\n this.render();\n }\n /**\n * Destroy the React component.\n */\n destroy() {\n var _a;\n this.destroyed = true;\n const editor = this.editor;\n (_a = editor == null ? void 0 : editor.contentComponent) == null ? void 0 : _a.removeRenderer(this.id);\n try {\n if (this.element && this.element.parentNode) {\n this.element.parentNode.removeChild(this.element);\n }\n } catch {\n }\n }\n /**\n * Update the attributes of the element that holds the React component.\n */\n updateAttributes(attributes) {\n Object.keys(attributes).forEach((key) => {\n this.element.setAttribute(key, attributes[key]);\n });\n }\n};\n\n// src/ReactMarkViewRenderer.tsx\n\nvar ReactMarkViewContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext({\n markViewContentRef: () => {\n }\n});\nvar MarkViewContent = (props) => {\n const { as: Tag = \"span\", ...rest } = props;\n const { markViewContentRef } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(ReactMarkViewContext);\n return (\n // @ts-ignore\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Tag, { ...rest, ref: markViewContentRef, \"data-mark-view-content\": \"\" })\n );\n};\nvar ReactMarkView = class extends _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.MarkView {\n constructor(component, props, options) {\n super(component, props, options);\n const { as = \"span\", attrs, className = \"\" } = options || {};\n const componentProps = { ...props, updateAttributes: this.updateAttributes.bind(this) };\n this.contentDOMElement = document.createElement(\"span\");\n const markViewContentRef = (el) => {\n if (el && !el.contains(this.contentDOMElement)) {\n el.appendChild(this.contentDOMElement);\n }\n };\n const context = {\n markViewContentRef\n };\n const ReactMarkViewProvider = react__WEBPACK_IMPORTED_MODULE_0__.memo((componentProps2) => {\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ReactMarkViewContext.Provider, { value: context, children: react__WEBPACK_IMPORTED_MODULE_0__.createElement(component, componentProps2) });\n });\n ReactMarkViewProvider.displayName = \"ReactMarkView\";\n this.renderer = new ReactRenderer(ReactMarkViewProvider, {\n editor: props.editor,\n props: componentProps,\n as,\n className: `mark-${props.mark.type.name} ${className}`.trim()\n });\n if (attrs) {\n this.renderer.updateAttributes(attrs);\n }\n }\n get dom() {\n return this.renderer.element;\n }\n get contentDOM() {\n return this.contentDOMElement;\n }\n};\nfunction ReactMarkViewRenderer(component, options = {}) {\n return (props) => new ReactMarkView(component, props, options);\n}\n\n// src/ReactNodeViewRenderer.tsx\n\n\n\nvar ReactNodeView = class extends _tiptap_core__WEBPACK_IMPORTED_MODULE_6__.NodeView {\n constructor(component, props, options) {\n super(component, props, options);\n /**\n * The requestAnimationFrame ID used for selection updates.\n */\n this.selectionRafId = null;\n this.cachedExtensionWithSyncedStorage = null;\n if (!this.node.isLeaf) {\n if (this.options.contentDOMElementTag) {\n this.contentDOMElement = document.createElement(this.options.contentDOMElementTag);\n } else {\n this.contentDOMElement = document.createElement(this.node.isInline ? \"span\" : \"div\");\n }\n this.contentDOMElement.dataset.nodeViewContentReact = \"\";\n this.contentDOMElement.dataset.nodeViewWrapper = \"\";\n this.contentDOMElement.style.whiteSpace = \"inherit\";\n const contentTarget = this.dom.querySelector(\"[data-node-view-content]\");\n if (!contentTarget) {\n return;\n }\n contentTarget.appendChild(this.contentDOMElement);\n }\n }\n /**\n * Returns a proxy of the extension that redirects storage access to the editor's mutable storage.\n * This preserves the original prototype chain (instanceof checks, methods like configure/extend work).\n * Cached to avoid proxy creation on every update.\n */\n get extensionWithSyncedStorage() {\n if (!this.cachedExtensionWithSyncedStorage) {\n const editor = this.editor;\n const extension = this.extension;\n this.cachedExtensionWithSyncedStorage = new Proxy(extension, {\n get(target, prop, receiver) {\n var _a;\n if (prop === \"storage\") {\n return (_a = editor.storage[extension.name]) != null ? _a : {};\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n return this.cachedExtensionWithSyncedStorage;\n }\n /**\n * Setup the React component.\n * Called on initialization.\n */\n mount() {\n const props = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n innerDecorations: this.innerDecorations,\n view: this.view,\n selected: false,\n extension: this.extensionWithSyncedStorage,\n HTMLAttributes: this.HTMLAttributes,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n ref: (0,react__WEBPACK_IMPORTED_MODULE_0__.createRef)()\n };\n if (!this.component.displayName) {\n const capitalizeFirstChar = (string) => {\n return string.charAt(0).toUpperCase() + string.substring(1);\n };\n this.component.displayName = capitalizeFirstChar(this.extension.name);\n }\n const onDragStart = this.onDragStart.bind(this);\n const nodeViewContentRef = (element) => {\n if (element && this.contentDOMElement && element.firstChild !== this.contentDOMElement) {\n if (element.hasAttribute(\"data-node-view-wrapper\")) {\n element.removeAttribute(\"data-node-view-wrapper\");\n }\n element.appendChild(this.contentDOMElement);\n }\n };\n const context = { onDragStart, nodeViewContentRef };\n const Component = this.component;\n const ReactNodeViewProvider = (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)((componentProps) => {\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ReactNodeViewContext.Provider, { value: context, children: (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Component, componentProps) });\n });\n ReactNodeViewProvider.displayName = \"ReactNodeView\";\n let as = this.node.isInline ? \"span\" : \"div\";\n if (this.options.as) {\n as = this.options.as;\n }\n const { className = \"\" } = this.options;\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.renderer = new ReactRenderer(ReactNodeViewProvider, {\n editor: this.editor,\n props,\n as,\n className: `node-${this.node.type.name} ${className}`.trim()\n });\n this.editor.on(\"selectionUpdate\", this.handleSelectionUpdate);\n this.updateElementAttributes();\n }\n /**\n * Return the DOM element.\n * This is the element that will be used to display the node view.\n */\n get dom() {\n var _a;\n if (this.renderer.element.firstElementChild && !((_a = this.renderer.element.firstElementChild) == null ? void 0 : _a.hasAttribute(\"data-node-view-wrapper\"))) {\n throw Error(\"Please use the NodeViewWrapper component for your node view.\");\n }\n return this.renderer.element;\n }\n /**\n * Return the content DOM element.\n * This is the element that will be used to display the rich-text content of the node.\n */\n get contentDOM() {\n if (this.node.isLeaf) {\n return null;\n }\n return this.contentDOMElement;\n }\n /**\n * On editor selection update, check if the node is selected.\n * If it is, call `selectNode`, otherwise call `deselectNode`.\n */\n handleSelectionUpdate() {\n if (this.selectionRafId) {\n cancelAnimationFrame(this.selectionRafId);\n this.selectionRafId = null;\n }\n this.selectionRafId = requestAnimationFrame(() => {\n this.selectionRafId = null;\n const { from, to } = this.editor.state.selection;\n const pos = this.getPos();\n if (typeof pos !== \"number\") {\n return;\n }\n if (from <= pos && to >= pos + this.node.nodeSize) {\n if (this.renderer.props.selected) {\n return;\n }\n this.selectNode();\n } else {\n if (!this.renderer.props.selected) {\n return;\n }\n this.deselectNode();\n }\n });\n }\n /**\n * On update, update the React component.\n * To prevent unnecessary updates, the `update` option can be used.\n */\n update(node, decorations, innerDecorations) {\n const rerenderComponent = (props) => {\n this.renderer.updateProps(props);\n if (typeof this.options.attrs === \"function\") {\n this.updateElementAttributes();\n }\n };\n if (node.type !== this.node.type) {\n return false;\n }\n if (typeof this.options.update === \"function\") {\n const oldNode = this.node;\n const oldDecorations = this.decorations;\n const oldInnerDecorations = this.innerDecorations;\n this.node = node;\n this.decorations = decorations;\n this.innerDecorations = innerDecorations;\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n oldInnerDecorations,\n innerDecorations,\n updateProps: () => rerenderComponent({ node, decorations, innerDecorations, extension: this.extensionWithSyncedStorage })\n });\n }\n if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n return true;\n }\n this.node = node;\n this.decorations = decorations;\n this.innerDecorations = innerDecorations;\n rerenderComponent({ node, decorations, innerDecorations, extension: this.extensionWithSyncedStorage });\n return true;\n }\n /**\n * Select the node.\n * Add the `selected` prop and the `ProseMirror-selectednode` class.\n */\n selectNode() {\n this.renderer.updateProps({\n selected: true\n });\n this.renderer.element.classList.add(\"ProseMirror-selectednode\");\n }\n /**\n * Deselect the node.\n * Remove the `selected` prop and the `ProseMirror-selectednode` class.\n */\n deselectNode() {\n this.renderer.updateProps({\n selected: false\n });\n this.renderer.element.classList.remove(\"ProseMirror-selectednode\");\n }\n /**\n * Destroy the React component instance.\n */\n destroy() {\n this.renderer.destroy();\n this.editor.off(\"selectionUpdate\", this.handleSelectionUpdate);\n this.contentDOMElement = null;\n if (this.selectionRafId) {\n cancelAnimationFrame(this.selectionRafId);\n this.selectionRafId = null;\n }\n }\n /**\n * Update the attributes of the top-level element that holds the React component.\n * Applying the attributes defined in the `attrs` option.\n */\n updateElementAttributes() {\n if (this.options.attrs) {\n let attrsObj = {};\n if (typeof this.options.attrs === \"function\") {\n const extensionAttributes = this.editor.extensionManager.attributes;\n const HTMLAttributes = (0,_tiptap_core__WEBPACK_IMPORTED_MODULE_6__.getRenderedAttributes)(this.node, extensionAttributes);\n attrsObj = this.options.attrs({ node: this.node, HTMLAttributes });\n } else {\n attrsObj = this.options.attrs;\n }\n this.renderer.updateAttributes(attrsObj);\n }\n }\n};\nfunction ReactNodeViewRenderer(component, options) {\n return (props) => {\n if (!props.editor.contentComponent) {\n return {};\n }\n return new ReactNodeView(component, props, options);\n };\n}\n\n// src/Tiptap.tsx\n\n\nvar TiptapContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({\n get editor() {\n throw new Error(\"useTiptap must be used within a <Tiptap> provider\");\n }\n});\nTiptapContext.displayName = \"TiptapContext\";\nvar useTiptap = () => (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(TiptapContext);\nfunction useTiptapState(selector, equalityFn) {\n const { editor } = useTiptap();\n return useEditorState({\n editor,\n selector,\n equalityFn\n });\n}\nfunction TiptapWrapper({ editor, instance, children }) {\n const resolvedEditor = editor != null ? editor : instance;\n if (!resolvedEditor) {\n throw new Error(\"Tiptap: An editor instance is required. Pass a non-null `editor` prop.\");\n }\n const tiptapContextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => ({ editor: resolvedEditor }), [resolvedEditor]);\n const legacyContextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => ({ editor: resolvedEditor }), [resolvedEditor]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(EditorContext.Provider, { value: legacyContextValue, children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(TiptapContext.Provider, { value: tiptapContextValue, children }) });\n}\nTiptapWrapper.displayName = \"Tiptap\";\nfunction TiptapContent({ ...rest }) {\n const { editor } = useTiptap();\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(EditorContent, { editor, ...rest });\n}\nTiptapContent.displayName = \"Tiptap.Content\";\nvar Tiptap = Object.assign(TiptapWrapper, {\n /**\n * The Tiptap Content component that renders the EditorContent with the editor instance from the context.\n * @see TiptapContent\n */\n Content: TiptapContent\n});\n\n// src/index.ts\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3JlYWN0L2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUMyRDs7QUFFM0Q7QUFDMEM7QUFDVDtBQUM0QztBQUNyQjtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsaUJBQWlCLGtCQUFrQjtBQUNuQyxvQkFBb0IsMkZBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHNEQUFHLENBQUMsdURBQVEsSUFBSSxvQ0FBb0M7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbURBQXFCO0FBQ25DO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLDRDQUFlO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw0Q0FBZTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7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VUFBVSxTQUFTO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EseUJBQXlCLDRCQUE0QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw4Q0FBUSxVQUFVLHdCQUF3QjtBQUN2RSw2QkFBNkIsOENBQVEsVUFBVSx3QkFBd0I7QUFDdkUseUJBQXlCLHNEQUFJLDJCQUEyQixxREFBcUQsc0RBQUksMkJBQTJCLHFDQUFxQyxHQUFHO0FBQ3BMO0FBQ0E7QUFDQSx5QkFBeUIsU0FBUztBQUNsQyxVQUFVLFNBQVM7QUFDbkIseUJBQXlCLHNEQUFJLGtCQUFrQixpQkFBaUI7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDNkI7QUE0QjNCO0FBQ0YiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXEB0aXB0YXBcXHJlYWN0XFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvQ29udGV4dC50c3hcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gc3JjL0VkaXRvckNvbnRlbnQudHN4XG5pbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IHVzZVN5bmNFeHRlcm5hbFN0b3JlIH0gZnJvbSBcInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vaW5kZXguanNcIjtcbmltcG9ydCB7IEZyYWdtZW50LCBqc3gsIGpzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBtZXJnZVJlZnMgPSAoLi4ucmVmcykgPT4ge1xuICByZXR1cm4gKG5vZGUpID0+IHtcbiAgICByZWZzLmZvckVhY2goKHJlZikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZWYobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKHJlZikge1xuICAgICAgICA7XG4gICAgICAgIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn07XG52YXIgUG9ydGFscyA9ICh7IGNvbnRlbnRDb21wb25lbnQgfSkgPT4ge1xuICBjb25zdCByZW5kZXJlcnMgPSB1c2VTeW5jRXh0ZXJuYWxTdG9yZShcbiAgICBjb250ZW50Q29tcG9uZW50LnN1YnNjcmliZSxcbiAgICBjb250ZW50Q29tcG9uZW50LmdldFNuYXBzaG90LFxuICAgIGNvbnRlbnRDb21wb25lbnQuZ2V0U2VydmVyU25hcHNob3RcbiAgKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRnJhZ21lbnQsIHsgY2hpbGRyZW46IE9iamVjdC52YWx1ZXMocmVuZGVyZXJzKSB9KTtcbn07XG5mdW5jdGlvbiBnZXRJbnN0YW5jZSgpIHtcbiAgY29uc3Qgc3Vic2NyaWJlcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgcmVuZGVyZXJzID0ge307XG4gIHJldHVybiB7XG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlIHRvIHRoZSBlZGl0b3IgaW5zdGFuY2UncyBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHN1YnNjcmliZShjYWxsYmFjaykge1xuICAgICAgc3Vic2NyaWJlcnMuYWRkKGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHN1YnNjcmliZXJzLmRlbGV0ZShjYWxsYmFjayk7XG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0U25hcHNob3QoKSB7XG4gICAgICByZXR1cm4gcmVuZGVyZXJzO1xuICAgIH0sXG4gICAgZ2V0U2VydmVyU25hcHNob3QoKSB7XG4gICAgICByZXR1cm4gcmVuZGVyZXJzO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQWRkcyBhIG5ldyBOb2RlVmlldyBSZW5kZXJlciB0byB0aGUgZWRpdG9yLlxuICAgICAqL1xuICAgIHNldFJlbmRlcmVyKGlkLCByZW5kZXJlcikge1xuICAgICAgcmVuZGVyZXJzID0ge1xuICAgICAgICAuLi5yZW5kZXJlcnMsXG4gICAgICAgIFtpZF06IFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChyZW5kZXJlci5yZWFjdEVsZW1lbnQsIHJlbmRlcmVyLmVsZW1lbnQsIGlkKVxuICAgICAgfTtcbiAgICAgIHN1YnNjcmliZXJzLmZvckVhY2goKHN1YnNjcmliZXIpID0+IHN1YnNjcmliZXIoKSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgTm9kZVZpZXcgUmVuZGVyZXIgZnJvbSB0aGUgZWRpdG9yLlxuICAgICAqL1xuICAgIHJlbW92ZVJlbmRlcmVyKGlkKSB7XG4gICAgICBjb25zdCBuZXh0UmVuZGVyZXJzID0geyAuLi5yZW5kZXJlcnMgfTtcbiAgICAgIGRlbGV0ZSBuZXh0UmVuZGVyZXJzW2lkXTtcbiAgICAgIHJlbmRlcmVycyA9IG5leHRSZW5kZXJlcnM7XG4gICAgICBzdWJzY3JpYmVycy5mb3JFYWNoKChzdWJzY3JpYmVyKSA9PiBzdWJzY3JpYmVyKCkpO1xuICAgIH1cbiAgfTtcbn1cbnZhciBQdXJlRWRpdG9yQ29udGVudCA9IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICB2YXIgX2E7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuZWRpdG9yQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgaGFzQ29udGVudENvbXBvbmVudEluaXRpYWxpemVkOiBCb29sZWFuKChfYSA9IHByb3BzLmVkaXRvcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNvbnRlbnRDb21wb25lbnQpXG4gICAgfTtcbiAgfVxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cbiAgaW5pdCgpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5wcm9wcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvciAmJiAhZWRpdG9yLmlzRGVzdHJveWVkICYmICgoX2EgPSBlZGl0b3Iudmlldy5kb20pID09IG51bGwgPyB2b2lkIDAgOiBfYS5wYXJlbnROb2RlKSkge1xuICAgICAgaWYgKGVkaXRvci5jb250ZW50Q29tcG9uZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVkaXRvckNvbnRlbnRSZWYuY3VycmVudDtcbiAgICAgIGVsZW1lbnQuYXBwZW5kKC4uLmVkaXRvci52aWV3LmRvbS5wYXJlbnROb2RlLmNoaWxkTm9kZXMpO1xuICAgICAgZWRpdG9yLnNldE9wdGlvbnMoe1xuICAgICAgICBlbGVtZW50XG4gICAgICB9KTtcbiAgICAgIGVkaXRvci5jb250ZW50Q29tcG9uZW50ID0gZ2V0SW5zdGFuY2UoKTtcbiAgICAgIGlmICghdGhpcy5zdGF0ZS5oYXNDb250ZW50Q29tcG9uZW50SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZVRvQ29udGVudENvbXBvbmVudCA9IGVkaXRvci5jb250ZW50Q29tcG9uZW50LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXByZXZTdGF0ZS5oYXNDb250ZW50Q29tcG9uZW50SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBoYXNDb250ZW50Q29tcG9uZW50SW5pdGlhbGl6ZWQ6IHRydWVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwcmV2U3RhdGU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHRoaXMudW5zdWJzY3JpYmVUb0NvbnRlbnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmVUb0NvbnRlbnRDb21wb25lbnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWRpdG9yLmNyZWF0ZU5vZGVWaWV3cygpO1xuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICB9XG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnByb3BzLmVkaXRvcjtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgaWYgKCFlZGl0b3IuaXNEZXN0cm95ZWQpIHtcbiAgICAgIGVkaXRvci52aWV3LnNldFByb3BzKHtcbiAgICAgICAgbm9kZVZpZXdzOiB7fVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVuc3Vic2NyaWJlVG9Db250ZW50Q29tcG9uZW50KSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlVG9Db250ZW50Q29tcG9uZW50KCk7XG4gICAgfVxuICAgIGVkaXRvci5jb250ZW50Q29tcG9uZW50ID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAgaWYgKCEoKF9hID0gZWRpdG9yLnZpZXcuZG9tKSA9PSBudWxsID8gdm9pZCAwIDogX2EucGFyZW50Tm9kZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICBuZXdFbGVtZW50LmFwcGVuZCguLi5lZGl0b3Iudmlldy5kb20ucGFyZW50Tm9kZS5jaGlsZE5vZGVzKTtcbiAgICAgIGVkaXRvci5zZXRPcHRpb25zKHtcbiAgICAgICAgZWxlbWVudDogbmV3RWxlbWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgfVxuICB9XG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGVkaXRvciwgaW5uZXJSZWYsIC4uLnJlc3QgfSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKEZyYWdtZW50LCB7IGNoaWxkcmVuOiBbXG4gICAgICAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgcmVmOiBtZXJnZVJlZnMoaW5uZXJSZWYsIHRoaXMuZWRpdG9yQ29udGVudFJlZiksIC4uLnJlc3QgfSksXG4gICAgICAoZWRpdG9yID09IG51bGwgPyB2b2lkIDAgOiBlZGl0b3IuY29udGVudENvbXBvbmVudCkgJiYgLyogQF9fUFVSRV9fICovIGpzeChQb3J0YWxzLCB7IGNvbnRlbnRDb21wb25lbnQ6IGVkaXRvci5jb250ZW50Q29tcG9uZW50IH0pXG4gICAgXSB9KTtcbiAgfVxufTtcbnZhciBFZGl0b3JDb250ZW50V2l0aEtleSA9IGZvcndhcmRSZWYoXG4gIChwcm9wcywgcmVmKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNDI5NDk2NzI5NSkudG9TdHJpbmcoKTtcbiAgICB9LCBbcHJvcHMuZWRpdG9yXSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHVyZUVkaXRvckNvbnRlbnQsIHtcbiAgICAgIGtleSxcbiAgICAgIGlubmVyUmVmOiByZWYsXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG4pO1xudmFyIEVkaXRvckNvbnRlbnQgPSBSZWFjdC5tZW1vKEVkaXRvckNvbnRlbnRXaXRoS2V5KTtcblxuLy8gc3JjL3VzZUVkaXRvci50c1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgdXNlRGVidWdWYWx1ZSBhcyB1c2VEZWJ1Z1ZhbHVlMiwgdXNlRWZmZWN0IGFzIHVzZUVmZmVjdDIsIHVzZVJlZiwgdXNlU3RhdGUgYXMgdXNlU3RhdGUyIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZSBhcyB1c2VTeW5jRXh0ZXJuYWxTdG9yZTIgfSBmcm9tIFwidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbS9pbmRleC5qc1wiO1xuXG4vLyBzcmMvdXNlRWRpdG9yU3RhdGUudHNcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gXCJmYXN0LWVxdWFsc1wiO1xuaW1wb3J0IHsgdXNlRGVidWdWYWx1ZSwgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciB9IGZyb20gXCJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZS9zaGltL3dpdGgtc2VsZWN0b3IuanNcIjtcbnZhciB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHVzZUxheW91dEVmZmVjdCA6IHVzZUVmZmVjdDtcbnZhciBFZGl0b3JTdGF0ZU1hbmFnZXIgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGluaXRpYWxFZGl0b3IpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uTnVtYmVyID0gMDtcbiAgICB0aGlzLmxhc3RUcmFuc2FjdGlvbk51bWJlciA9IDA7XG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgdGhpcy5lZGl0b3IgPSBpbml0aWFsRWRpdG9yO1xuICAgIHRoaXMubGFzdFNuYXBzaG90ID0geyBlZGl0b3I6IGluaXRpYWxFZGl0b3IsIHRyYW5zYWN0aW9uTnVtYmVyOiAwIH07XG4gICAgdGhpcy5nZXRTbmFwc2hvdCA9IHRoaXMuZ2V0U25hcHNob3QuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFNlcnZlclNuYXBzaG90ID0gdGhpcy5nZXRTZXJ2ZXJTbmFwc2hvdC5iaW5kKHRoaXMpO1xuICAgIHRoaXMud2F0Y2ggPSB0aGlzLndhdGNoLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zdWJzY3JpYmUgPSB0aGlzLnN1YnNjcmliZS5iaW5kKHRoaXMpO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgZWRpdG9yIGluc3RhbmNlLlxuICAgKi9cbiAgZ2V0U25hcHNob3QoKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb25OdW1iZXIgPT09IHRoaXMubGFzdFRyYW5zYWN0aW9uTnVtYmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYXN0U25hcHNob3Q7XG4gICAgfVxuICAgIHRoaXMubGFzdFRyYW5zYWN0aW9uTnVtYmVyID0gdGhpcy50cmFuc2FjdGlvbk51bWJlcjtcbiAgICB0aGlzLmxhc3RTbmFwc2hvdCA9IHsgZWRpdG9yOiB0aGlzLmVkaXRvciwgdHJhbnNhY3Rpb25OdW1iZXI6IHRoaXMudHJhbnNhY3Rpb25OdW1iZXIgfTtcbiAgICByZXR1cm4gdGhpcy5sYXN0U25hcHNob3Q7XG4gIH1cbiAgLyoqXG4gICAqIEFsd2F5cyBkaXNhYmxlIHRoZSBlZGl0b3Igb24gdGhlIHNlcnZlci1zaWRlLlxuICAgKi9cbiAgZ2V0U2VydmVyU25hcHNob3QoKSB7XG4gICAgcmV0dXJuIHsgZWRpdG9yOiBudWxsLCB0cmFuc2FjdGlvbk51bWJlcjogMCB9O1xuICB9XG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIGVkaXRvciBpbnN0YW5jZSdzIGNoYW5nZXMuXG4gICAqL1xuICBzdWJzY3JpYmUoY2FsbGJhY2spIHtcbiAgICB0aGlzLnN1YnNjcmliZXJzLmFkZChjYWxsYmFjayk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlcnMuZGVsZXRlKGNhbGxiYWNrKTtcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBXYXRjaCB0aGUgZWRpdG9yIGluc3RhbmNlIGZvciBjaGFuZ2VzLlxuICAgKi9cbiAgd2F0Y2gobmV4dEVkaXRvcikge1xuICAgIHRoaXMuZWRpdG9yID0gbmV4dEVkaXRvcjtcbiAgICBpZiAodGhpcy5lZGl0b3IpIHtcbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uTnVtYmVyICs9IDE7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaCgoY2FsbGJhY2spID0+IGNhbGxiYWNrKCkpO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGN1cnJlbnRFZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICAgIGN1cnJlbnRFZGl0b3Iub24oXCJ0cmFuc2FjdGlvblwiLCBmbik7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjdXJyZW50RWRpdG9yLm9mZihcInRyYW5zYWN0aW9uXCIsIGZuKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbn07XG5mdW5jdGlvbiB1c2VFZGl0b3JTdGF0ZShvcHRpb25zKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgW2VkaXRvclN0YXRlTWFuYWdlcl0gPSB1c2VTdGF0ZSgoKSA9PiBuZXcgRWRpdG9yU3RhdGVNYW5hZ2VyKG9wdGlvbnMuZWRpdG9yKSk7XG4gIGNvbnN0IHNlbGVjdGVkU3RhdGUgPSB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvcihcbiAgICBlZGl0b3JTdGF0ZU1hbmFnZXIuc3Vic2NyaWJlLFxuICAgIGVkaXRvclN0YXRlTWFuYWdlci5nZXRTbmFwc2hvdCxcbiAgICBlZGl0b3JTdGF0ZU1hbmFnZXIuZ2V0U2VydmVyU25hcHNob3QsXG4gICAgb3B0aW9ucy5zZWxlY3RvcixcbiAgICAoX2EgPSBvcHRpb25zLmVxdWFsaXR5Rm4pICE9IG51bGwgPyBfYSA6IGRlZXBFcXVhbFxuICApO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gZWRpdG9yU3RhdGVNYW5hZ2VyLndhdGNoKG9wdGlvbnMuZWRpdG9yKTtcbiAgfSwgW29wdGlvbnMuZWRpdG9yLCBlZGl0b3JTdGF0ZU1hbmFnZXJdKTtcbiAgdXNlRGVidWdWYWx1ZShzZWxlY3RlZFN0YXRlKTtcbiAgcmV0dXJuIHNlbGVjdGVkU3RhdGU7XG59XG5cbi8vIHNyYy91c2VFZGl0b3IudHNcbnZhciBpc0RldiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIjtcbnZhciBpc1NTUiA9IHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCI7XG52YXIgaXNOZXh0ID0gaXNTU1IgfHwgQm9vbGVhbih0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5uZXh0KTtcbnZhciBFZGl0b3JJbnN0YW5jZU1hbmFnZXIgPSBjbGFzcyBfRWRpdG9ySW5zdGFuY2VNYW5hZ2VyIHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIC8qKlxuICAgICAqIFRoZSBjdXJyZW50IGVkaXRvciBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICB0aGlzLmVkaXRvciA9IG51bGw7XG4gICAgLyoqXG4gICAgICogVGhlIHN1YnNjcmlwdGlvbnMgdG8gbm90aWZ5IHdoZW4gdGhlIGVkaXRvciBpbnN0YW5jZVxuICAgICAqIGhhcyBiZWVuIGNyZWF0ZWQgb3IgZGVzdHJveWVkLlxuICAgICAqL1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZWRpdG9yIGhhcyBiZWVuIG1vdW50ZWQuXG4gICAgICovXG4gICAgdGhpcy5pc0NvbXBvbmVudE1vdW50ZWQgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBUaGUgbW9zdCByZWNlbnQgZGVwZW5kZW5jaWVzIGFycmF5LlxuICAgICAqL1xuICAgIHRoaXMucHJldmlvdXNEZXBzID0gbnVsbDtcbiAgICAvKipcbiAgICAgKiBUaGUgdW5pcXVlIGluc3RhbmNlIElELiBUaGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGVkaXRvciBpbnN0YW5jZS4gQW5kIHdpbGwgYmUgcmUtZ2VuZXJhdGVkIGZvciBlYWNoIG5ldyBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICB0aGlzLmluc3RhbmNlSWQgPSBcIlwiO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICB0aGlzLnNldEVkaXRvcih0aGlzLmdldEluaXRpYWxFZGl0b3IoKSk7XG4gICAgdGhpcy5zY2hlZHVsZURlc3Ryb3koKTtcbiAgICB0aGlzLmdldEVkaXRvciA9IHRoaXMuZ2V0RWRpdG9yLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRTZXJ2ZXJTbmFwc2hvdCA9IHRoaXMuZ2V0U2VydmVyU25hcHNob3QuYmluZCh0aGlzKTtcbiAgICB0aGlzLnN1YnNjcmliZSA9IHRoaXMuc3Vic2NyaWJlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZWZyZXNoRWRpdG9ySW5zdGFuY2UgPSB0aGlzLnJlZnJlc2hFZGl0b3JJbnN0YW5jZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2NoZWR1bGVEZXN0cm95ID0gdGhpcy5zY2hlZHVsZURlc3Ryb3kuYmluZCh0aGlzKTtcbiAgICB0aGlzLm9uUmVuZGVyID0gdGhpcy5vblJlbmRlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY3JlYXRlRWRpdG9yID0gdGhpcy5jcmVhdGVFZGl0b3IuYmluZCh0aGlzKTtcbiAgfVxuICBzZXRFZGl0b3IoZWRpdG9yKSB7XG4gICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgdGhpcy5pbnN0YW5jZUlkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKGNiKSA9PiBjYigpKTtcbiAgfVxuICBnZXRJbml0aWFsRWRpdG9yKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VycmVudC5pbW1lZGlhdGVseVJlbmRlciA9PT0gdm9pZCAwKSB7XG4gICAgICBpZiAoaXNTU1IgfHwgaXNOZXh0KSB7XG4gICAgICAgIGlmIChpc0Rldikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwiVGlwdGFwIEVycm9yOiBTU1IgaGFzIGJlZW4gZGV0ZWN0ZWQsIHBsZWFzZSBzZXQgYGltbWVkaWF0ZWx5UmVuZGVyYCBleHBsaWNpdGx5IHRvIGBmYWxzZWAgdG8gYXZvaWQgaHlkcmF0aW9uIG1pc21hdGNoZXMuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRWRpdG9yKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VycmVudC5pbW1lZGlhdGVseVJlbmRlciAmJiBpc1NTUiAmJiBpc0Rldikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlRpcHRhcCBFcnJvcjogU1NSIGhhcyBiZWVuIGRldGVjdGVkLCBhbmQgYGltbWVkaWF0ZWx5UmVuZGVyYCBoYXMgYmVlbiBzZXQgdG8gYHRydWVgIHRoaXMgaXMgYW4gdW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbiB0aGF0IG1heSByZXN1bHQgaW4gZXJyb3JzLCBleHBsaWNpdGx5IHNldCBgaW1tZWRpYXRlbHlSZW5kZXJgIHRvIGBmYWxzZWAgdG8gYXZvaWQgaHlkcmF0aW9uIG1pc21hdGNoZXMuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VycmVudC5pbW1lZGlhdGVseVJlbmRlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRWRpdG9yKCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgZWRpdG9yIGluc3RhbmNlLiBBbmQgYXR0YWNoIGV2ZW50IGxpc3RlbmVycy5cbiAgICovXG4gIGNyZWF0ZUVkaXRvcigpIHtcbiAgICBjb25zdCBvcHRpb25zVG9BcHBseSA9IHtcbiAgICAgIC4uLnRoaXMub3B0aW9ucy5jdXJyZW50LFxuICAgICAgLy8gQWx3YXlzIGNhbGwgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGJ5IGRlZmF1bHRcbiAgICAgIG9uQmVmb3JlQ3JlYXRlOiAoLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5vcHRpb25zLmN1cnJlbnQpLm9uQmVmb3JlQ3JlYXRlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgLi4uYXJncyk7XG4gICAgICB9LFxuICAgICAgb25CbHVyOiAoLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5vcHRpb25zLmN1cnJlbnQpLm9uQmx1cikgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIG9uQ3JlYXRlOiAoLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5vcHRpb25zLmN1cnJlbnQpLm9uQ3JlYXRlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgLi4uYXJncyk7XG4gICAgICB9LFxuICAgICAgb25EZXN0cm95OiAoLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5vcHRpb25zLmN1cnJlbnQpLm9uRGVzdHJveSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIG9uRm9jdXM6ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzLm9wdGlvbnMuY3VycmVudCkub25Gb2N1cykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIG9uU2VsZWN0aW9uVXBkYXRlOiAoLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5vcHRpb25zLmN1cnJlbnQpLm9uU2VsZWN0aW9uVXBkYXRlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgLi4uYXJncyk7XG4gICAgICB9LFxuICAgICAgb25UcmFuc2FjdGlvbjogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IHRoaXMub3B0aW9ucy5jdXJyZW50KS5vblRyYW5zYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgLi4uYXJncyk7XG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzLm9wdGlvbnMuY3VycmVudCkub25VcGRhdGUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCAuLi5hcmdzKTtcbiAgICAgIH0sXG4gICAgICBvbkNvbnRlbnRFcnJvcjogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IHRoaXMub3B0aW9ucy5jdXJyZW50KS5vbkNvbnRlbnRFcnJvcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIG9uRHJvcDogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IHRoaXMub3B0aW9ucy5jdXJyZW50KS5vbkRyb3ApID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCAuLi5hcmdzKTtcbiAgICAgIH0sXG4gICAgICBvblBhc3RlOiAoLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5vcHRpb25zLmN1cnJlbnQpLm9uUGFzdGUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCAuLi5hcmdzKTtcbiAgICAgIH0sXG4gICAgICBvbkRlbGV0ZTogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IHRoaXMub3B0aW9ucy5jdXJyZW50KS5vbkRlbGV0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIC4uLmFyZ3MpO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgZWRpdG9yID0gbmV3IEVkaXRvcihvcHRpb25zVG9BcHBseSk7XG4gICAgcmV0dXJuIGVkaXRvcjtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IGVkaXRvciBpbnN0YW5jZS5cbiAgICovXG4gIGdldEVkaXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0b3I7XG4gIH1cbiAgLyoqXG4gICAqIEFsd2F5cyBkaXNhYmxlIHRoZSBlZGl0b3Igb24gdGhlIHNlcnZlci1zaWRlLlxuICAgKi9cbiAgZ2V0U2VydmVyU25hcHNob3QoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aGUgZWRpdG9yIGluc3RhbmNlJ3MgY2hhbmdlcy5cbiAgICovXG4gIHN1YnNjcmliZShvblN0b3JlQ2hhbmdlKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChvblN0b3JlQ2hhbmdlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmRlbGV0ZShvblN0b3JlQ2hhbmdlKTtcbiAgICB9O1xuICB9XG4gIHN0YXRpYyBjb21wYXJlT3B0aW9ucyhhLCBiKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGEpLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgIGlmIChbXG4gICAgICAgIFwib25DcmVhdGVcIixcbiAgICAgICAgXCJvbkJlZm9yZUNyZWF0ZVwiLFxuICAgICAgICBcIm9uRGVzdHJveVwiLFxuICAgICAgICBcIm9uVXBkYXRlXCIsXG4gICAgICAgIFwib25UcmFuc2FjdGlvblwiLFxuICAgICAgICBcIm9uRm9jdXNcIixcbiAgICAgICAgXCJvbkJsdXJcIixcbiAgICAgICAgXCJvblNlbGVjdGlvblVwZGF0ZVwiLFxuICAgICAgICBcIm9uQ29udGVudEVycm9yXCIsXG4gICAgICAgIFwib25Ecm9wXCIsXG4gICAgICAgIFwib25QYXN0ZVwiXG4gICAgICBdLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoa2V5ID09PSBcImV4dGVuc2lvbnNcIiAmJiBhLmV4dGVuc2lvbnMgJiYgYi5leHRlbnNpb25zKSB7XG4gICAgICAgIGlmIChhLmV4dGVuc2lvbnMubGVuZ3RoICE9PSBiLmV4dGVuc2lvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhLmV4dGVuc2lvbnMuZXZlcnkoKGV4dGVuc2lvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgaWYgKGV4dGVuc2lvbiAhPT0gKChfYSA9IGIuZXh0ZW5zaW9ucykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hW2luZGV4XSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGFba2V5XSAhPT0gYltrZXldKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBPbiBlYWNoIHJlbmRlciwgd2Ugd2lsbCBjcmVhdGUsIHVwZGF0ZSwgb3IgZGVzdHJveSB0aGUgZWRpdG9yIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gZGVwcyBUaGUgZGVwZW5kZW5jaWVzIHRvIHdhdGNoIGZvciBjaGFuZ2VzXG4gICAqIEByZXR1cm5zIEEgY2xlYW51cCBmdW5jdGlvblxuICAgKi9cbiAgb25SZW5kZXIoZGVwcykge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aGlzLmlzQ29tcG9uZW50TW91bnRlZCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zY2hlZHVsZWREZXN0cnVjdGlvblRpbWVvdXQpO1xuICAgICAgaWYgKHRoaXMuZWRpdG9yICYmICF0aGlzLmVkaXRvci5pc0Rlc3Ryb3llZCAmJiBkZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoIV9FZGl0b3JJbnN0YW5jZU1hbmFnZXIuY29tcGFyZU9wdGlvbnModGhpcy5vcHRpb25zLmN1cnJlbnQsIHRoaXMuZWRpdG9yLm9wdGlvbnMpKSB7XG4gICAgICAgICAgdGhpcy5lZGl0b3Iuc2V0T3B0aW9ucyh7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY3VycmVudCxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0aGlzLmVkaXRvci5pc0VkaXRhYmxlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVmcmVzaEVkaXRvckluc3RhbmNlKGRlcHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdGhpcy5pc0NvbXBvbmVudE1vdW50ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZURlc3Ryb3koKTtcbiAgICAgIH07XG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogUmVjcmVhdGUgdGhlIGVkaXRvciBpbnN0YW5jZSBpZiB0aGUgZGVwZW5kZW5jaWVzIGhhdmUgY2hhbmdlZC5cbiAgICovXG4gIHJlZnJlc2hFZGl0b3JJbnN0YW5jZShkZXBzKSB7XG4gICAgaWYgKHRoaXMuZWRpdG9yICYmICF0aGlzLmVkaXRvci5pc0Rlc3Ryb3llZCkge1xuICAgICAgaWYgKHRoaXMucHJldmlvdXNEZXBzID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNEZXBzID0gZGVwcztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVwc0FyZUVxdWFsID0gdGhpcy5wcmV2aW91c0RlcHMubGVuZ3RoID09PSBkZXBzLmxlbmd0aCAmJiB0aGlzLnByZXZpb3VzRGVwcy5ldmVyeSgoZGVwLCBpbmRleCkgPT4gZGVwID09PSBkZXBzW2luZGV4XSk7XG4gICAgICBpZiAoZGVwc0FyZUVxdWFsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZWRpdG9yICYmICF0aGlzLmVkaXRvci5pc0Rlc3Ryb3llZCkge1xuICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xuICAgIH1cbiAgICB0aGlzLnNldEVkaXRvcih0aGlzLmNyZWF0ZUVkaXRvcigpKTtcbiAgICB0aGlzLnByZXZpb3VzRGVwcyA9IGRlcHM7XG4gIH1cbiAgLyoqXG4gICAqIFNjaGVkdWxlIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgZWRpdG9yIGluc3RhbmNlLlxuICAgKiBUaGlzIHdpbGwgb25seSBkZXN0cm95IHRoZSBlZGl0b3IgaWYgaXQgd2FzIG5vdCBtb3VudGVkIG9uIHRoZSBuZXh0IHRpY2suXG4gICAqIFRoaXMgaXMgdG8gYXZvaWQgZGVzdHJveWluZyB0aGUgZWRpdG9yIGluc3RhbmNlIHdoZW4gaXQncyBhY3R1YWxseSBzdGlsbCBtb3VudGVkLlxuICAgKi9cbiAgc2NoZWR1bGVEZXN0cm95KCkge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZUlkID0gdGhpcy5pbnN0YW5jZUlkO1xuICAgIGNvbnN0IGN1cnJlbnRFZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICB0aGlzLnNjaGVkdWxlZERlc3RydWN0aW9uVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNDb21wb25lbnRNb3VudGVkICYmIHRoaXMuaW5zdGFuY2VJZCA9PT0gY3VycmVudEluc3RhbmNlSWQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRFZGl0b3IpIHtcbiAgICAgICAgICBjdXJyZW50RWRpdG9yLnNldE9wdGlvbnModGhpcy5vcHRpb25zLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50RWRpdG9yICYmICFjdXJyZW50RWRpdG9yLmlzRGVzdHJveWVkKSB7XG4gICAgICAgIGN1cnJlbnRFZGl0b3IuZGVzdHJveSgpO1xuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZUlkID09PSBjdXJyZW50SW5zdGFuY2VJZCkge1xuICAgICAgICAgIHRoaXMuc2V0RWRpdG9yKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMSk7XG4gIH1cbn07XG5mdW5jdGlvbiB1c2VFZGl0b3Iob3B0aW9ucyA9IHt9LCBkZXBzID0gW10pIHtcbiAgY29uc3QgbW9zdFJlY2VudE9wdGlvbnMgPSB1c2VSZWYob3B0aW9ucyk7XG4gIG1vc3RSZWNlbnRPcHRpb25zLmN1cnJlbnQgPSBvcHRpb25zO1xuICBjb25zdCBbaW5zdGFuY2VNYW5hZ2VyXSA9IHVzZVN0YXRlMigoKSA9PiBuZXcgRWRpdG9ySW5zdGFuY2VNYW5hZ2VyKG1vc3RSZWNlbnRPcHRpb25zKSk7XG4gIGNvbnN0IGVkaXRvciA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlMihcbiAgICBpbnN0YW5jZU1hbmFnZXIuc3Vic2NyaWJlLFxuICAgIGluc3RhbmNlTWFuYWdlci5nZXRFZGl0b3IsXG4gICAgaW5zdGFuY2VNYW5hZ2VyLmdldFNlcnZlclNuYXBzaG90XG4gICk7XG4gIHVzZURlYnVnVmFsdWUyKGVkaXRvcik7XG4gIHVzZUVmZmVjdDIoaW5zdGFuY2VNYW5hZ2VyLm9uUmVuZGVyKGRlcHMpKTtcbiAgdXNlRWRpdG9yU3RhdGUoe1xuICAgIGVkaXRvcixcbiAgICBzZWxlY3RvcjogKHsgdHJhbnNhY3Rpb25OdW1iZXIgfSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbnMuc2hvdWxkUmVyZW5kZXJPblRyYW5zYWN0aW9uID09PSBmYWxzZSB8fCBvcHRpb25zLnNob3VsZFJlcmVuZGVyT25UcmFuc2FjdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlbHlSZW5kZXIgJiYgdHJhbnNhY3Rpb25OdW1iZXIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJhbnNhY3Rpb25OdW1iZXIgKyAxO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBlZGl0b3I7XG59XG5cbi8vIHNyYy9Db250ZXh0LnRzeFxuaW1wb3J0IHsganN4IGFzIGpzeDIsIGpzeHMgYXMganN4czIgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBFZGl0b3JDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7XG4gIGVkaXRvcjogbnVsbFxufSk7XG52YXIgRWRpdG9yQ29uc3VtZXIgPSBFZGl0b3JDb250ZXh0LkNvbnN1bWVyO1xudmFyIHVzZUN1cnJlbnRFZGl0b3IgPSAoKSA9PiB1c2VDb250ZXh0KEVkaXRvckNvbnRleHQpO1xuZnVuY3Rpb24gRWRpdG9yUHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbiAgc2xvdEFmdGVyLFxuICBzbG90QmVmb3JlLFxuICBlZGl0b3JDb250YWluZXJQcm9wcyA9IHt9LFxuICAuLi5lZGl0b3JPcHRpb25zXG59KSB7XG4gIGNvbnN0IGVkaXRvciA9IHVzZUVkaXRvcihlZGl0b3JPcHRpb25zKTtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gdXNlTWVtbygoKSA9PiAoeyBlZGl0b3IgfSksIFtlZGl0b3JdKTtcbiAgaWYgKCFlZGl0b3IpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeHMyKEVkaXRvckNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbnRleHRWYWx1ZSwgY2hpbGRyZW46IFtcbiAgICBzbG90QmVmb3JlLFxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3gyKEVkaXRvckNvbnN1bWVyLCB7IGNoaWxkcmVuOiAoeyBlZGl0b3I6IGN1cnJlbnRFZGl0b3IgfSkgPT4gLyogQF9fUFVSRV9fICovIGpzeDIoRWRpdG9yQ29udGVudCwgeyBlZGl0b3I6IGN1cnJlbnRFZGl0b3IsIC4uLmVkaXRvckNvbnRhaW5lclByb3BzIH0pIH0pLFxuICAgIGNoaWxkcmVuLFxuICAgIHNsb3RBZnRlclxuICBdIH0pO1xufVxuXG4vLyBzcmMvdXNlUmVhY3ROb2RlVmlldy50c1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCBhcyBjcmVhdGVDb250ZXh0MiwgY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyB1c2VDb250ZXh0MiB9IGZyb20gXCJyZWFjdFwiO1xudmFyIFJlYWN0Tm9kZVZpZXdDb250ZXh0ID0gY3JlYXRlQ29udGV4dDIoe1xuICBvbkRyYWdTdGFydDogKCkgPT4ge1xuICB9LFxuICBub2RlVmlld0NvbnRlbnRDaGlsZHJlbjogdm9pZCAwLFxuICBub2RlVmlld0NvbnRlbnRSZWY6ICgpID0+IHtcbiAgfVxufSk7XG52YXIgUmVhY3ROb2RlVmlld0NvbnRlbnRQcm92aWRlciA9ICh7IGNoaWxkcmVuLCBjb250ZW50IH0pID0+IHtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoUmVhY3ROb2RlVmlld0NvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHsgbm9kZVZpZXdDb250ZW50Q2hpbGRyZW46IGNvbnRlbnQgfSB9LCBjaGlsZHJlbik7XG59O1xudmFyIHVzZVJlYWN0Tm9kZVZpZXcgPSAoKSA9PiB1c2VDb250ZXh0MihSZWFjdE5vZGVWaWV3Q29udGV4dCk7XG5cbi8vIHNyYy9Ob2RlVmlld0NvbnRlbnQudHN4XG5pbXBvcnQgeyBqc3ggYXMganN4MyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZnVuY3Rpb24gTm9kZVZpZXdDb250ZW50KHtcbiAgYXM6IFRhZyA9IFwiZGl2XCIsXG4gIC4uLnByb3BzXG59KSB7XG4gIGNvbnN0IHsgbm9kZVZpZXdDb250ZW50UmVmLCBub2RlVmlld0NvbnRlbnRDaGlsZHJlbiB9ID0gdXNlUmVhY3ROb2RlVmlldygpO1xuICByZXR1cm4gKFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAvKiBAX19QVVJFX18gKi8ganN4MyhcbiAgICAgIFRhZyxcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIHJlZjogbm9kZVZpZXdDb250ZW50UmVmLFxuICAgICAgICBcImRhdGEtbm9kZS12aWV3LWNvbnRlbnRcIjogXCJcIixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICB3aGl0ZVNwYWNlOiBcInByZS13cmFwXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IG5vZGVWaWV3Q29udGVudENoaWxkcmVuXG4gICAgICB9XG4gICAgKVxuICApO1xufVxuXG4vLyBzcmMvTm9kZVZpZXdXcmFwcGVyLnRzeFxuaW1wb3J0IFJlYWN0MyBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGpzeCBhcyBqc3g0IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG52YXIgTm9kZVZpZXdXcmFwcGVyID0gUmVhY3QzLmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBvbkRyYWdTdGFydCB9ID0gdXNlUmVhY3ROb2RlVmlldygpO1xuICBjb25zdCBUYWcgPSBwcm9wcy5hcyB8fCBcImRpdlwiO1xuICByZXR1cm4gKFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAvKiBAX19QVVJFX18gKi8ganN4NChcbiAgICAgIFRhZyxcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIHJlZixcbiAgICAgICAgXCJkYXRhLW5vZGUtdmlldy13cmFwcGVyXCI6IFwiXCIsXG4gICAgICAgIG9uRHJhZ1N0YXJ0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHdoaXRlU3BhY2U6IFwibm9ybWFsXCIsXG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcbiAgKTtcbn0pO1xuXG4vLyBzcmMvUmVhY3RNYXJrVmlld1JlbmRlcmVyLnRzeFxuaW1wb3J0IHsgTWFya1ZpZXcgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgUmVhY3Q0IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBzcmMvUmVhY3RSZW5kZXJlci50c3hcbmltcG9ydCB7IHZlcnNpb24gYXMgcmVhY3RWZXJzaW9uIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmbHVzaFN5bmMgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBqc3ggYXMganN4NSB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZnVuY3Rpb24gaXNDbGFzc0NvbXBvbmVudChDb21wb25lbnQpIHtcbiAgcmV0dXJuICEhKHR5cGVvZiBDb21wb25lbnQgPT09IFwiZnVuY3Rpb25cIiAmJiBDb21wb25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7XG59XG5mdW5jdGlvbiBpc0ZvcndhcmRSZWZDb21wb25lbnQoQ29tcG9uZW50KSB7XG4gIHJldHVybiAhISh0eXBlb2YgQ29tcG9uZW50ID09PSBcIm9iamVjdFwiICYmIENvbXBvbmVudC4kJHR5cGVvZiAmJiAoQ29tcG9uZW50LiQkdHlwZW9mLnRvU3RyaW5nKCkgPT09IFwiU3ltYm9sKHJlYWN0LmZvcndhcmRfcmVmKVwiIHx8IENvbXBvbmVudC4kJHR5cGVvZi5kZXNjcmlwdGlvbiA9PT0gXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSk7XG59XG5mdW5jdGlvbiBpc01lbW9Db21wb25lbnQoQ29tcG9uZW50KSB7XG4gIHJldHVybiAhISh0eXBlb2YgQ29tcG9uZW50ID09PSBcIm9iamVjdFwiICYmIENvbXBvbmVudC4kJHR5cGVvZiAmJiAoQ29tcG9uZW50LiQkdHlwZW9mLnRvU3RyaW5nKCkgPT09IFwiU3ltYm9sKHJlYWN0Lm1lbW8pXCIgfHwgQ29tcG9uZW50LiQkdHlwZW9mLmRlc2NyaXB0aW9uID09PSBcInJlYWN0Lm1lbW9cIikpO1xufVxuZnVuY3Rpb24gY2FuUmVjZWl2ZVJlZihDb21wb25lbnQpIHtcbiAgaWYgKGlzQ2xhc3NDb21wb25lbnQoQ29tcG9uZW50KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0ZvcndhcmRSZWZDb21wb25lbnQoQ29tcG9uZW50KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc01lbW9Db21wb25lbnQoQ29tcG9uZW50KSkge1xuICAgIGNvbnN0IHdyYXBwZWRDb21wb25lbnQgPSBDb21wb25lbnQudHlwZTtcbiAgICBpZiAod3JhcHBlZENvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIGlzQ2xhc3NDb21wb25lbnQod3JhcHBlZENvbXBvbmVudCkgfHwgaXNGb3J3YXJkUmVmQ29tcG9uZW50KHdyYXBwZWRDb21wb25lbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc1JlYWN0MTlQbHVzKCkge1xuICB0cnkge1xuICAgIGlmIChyZWFjdFZlcnNpb24pIHtcbiAgICAgIGNvbnN0IG1ham9yVmVyc2lvbiA9IHBhcnNlSW50KHJlYWN0VmVyc2lvbi5zcGxpdChcIi5cIilbMF0sIDEwKTtcbiAgICAgIHJldHVybiBtYWpvclZlcnNpb24gPj0gMTk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG52YXIgUmVhY3RSZW5kZXJlciA9IGNsYXNzIHtcbiAgLyoqXG4gICAqIEltbWVkaWF0ZWx5IGNyZWF0ZXMgZWxlbWVudCBhbmQgcmVuZGVycyB0aGUgcHJvdmlkZWQgUmVhY3QgY29tcG9uZW50LlxuICAgKi9cbiAgY29uc3RydWN0b3IoY29tcG9uZW50LCB7IGVkaXRvciwgcHJvcHMgPSB7fSwgYXMgPSBcImRpdlwiLCBjbGFzc05hbWUgPSBcIlwiIH0pIHtcbiAgICB0aGlzLnJlZiA9IG51bGw7XG4gICAgLyoqXG4gICAgICogRmxhZyB0byB0cmFjayBpZiB0aGUgcmVuZGVyZXIgaGFzIGJlZW4gZGVzdHJveWVkLCBwcmV2ZW50aW5nIHF1ZXVlZCBvciBhc3luY2hyb25vdXMgcmVuZGVycyBmcm9tIGV4ZWN1dGluZyBhZnRlciB0ZWFyZG93bi5cbiAgICAgKi9cbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuaWQgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA0Mjk0OTY3Mjk1KS50b1N0cmluZygpO1xuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGFzKTtcbiAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInJlYWN0LXJlbmRlcmVyXCIpO1xuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzTmFtZS5zcGxpdChcIiBcIikpO1xuICAgIH1cbiAgICBpZiAodGhpcy5lZGl0b3IuaXNJbml0aWFsaXplZCkge1xuICAgICAgZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIFJlYWN0IGNvbXBvbmVudC5cbiAgICovXG4gIHJlbmRlcigpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IENvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50O1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBjb25zdCBpc1JlYWN0MTkgPSBpc1JlYWN0MTlQbHVzKCk7XG4gICAgY29uc3QgY29tcG9uZW50Q2FuUmVjZWl2ZVJlZiA9IGNhblJlY2VpdmVSZWYoQ29tcG9uZW50KTtcbiAgICBjb25zdCBlbGVtZW50UHJvcHMgPSB7IC4uLnByb3BzIH07XG4gICAgaWYgKGVsZW1lbnRQcm9wcy5yZWYgJiYgIShpc1JlYWN0MTkgfHwgY29tcG9uZW50Q2FuUmVjZWl2ZVJlZikpIHtcbiAgICAgIGRlbGV0ZSBlbGVtZW50UHJvcHMucmVmO1xuICAgIH1cbiAgICBpZiAoIWVsZW1lbnRQcm9wcy5yZWYgJiYgKGlzUmVhY3QxOSB8fCBjb21wb25lbnRDYW5SZWNlaXZlUmVmKSkge1xuICAgICAgZWxlbWVudFByb3BzLnJlZiA9IChyZWYpID0+IHtcbiAgICAgICAgdGhpcy5yZWYgPSByZWY7XG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLnJlYWN0RWxlbWVudCA9IC8qIEBfX1BVUkVfXyAqLyBqc3g1KENvbXBvbmVudCwgeyAuLi5lbGVtZW50UHJvcHMgfSk7XG4gICAgKF9hID0gZWRpdG9yID09IG51bGwgPyB2b2lkIDAgOiBlZGl0b3IuY29udGVudENvbXBvbmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnNldFJlbmRlcmVyKHRoaXMuaWQsIHRoaXMpO1xuICB9XG4gIC8qKlxuICAgKiBSZS1yZW5kZXJzIHRoZSBSZWFjdCBjb21wb25lbnQgd2l0aCBuZXcgcHJvcHMuXG4gICAqL1xuICB1cGRhdGVQcm9wcyhwcm9wcyA9IHt9KSB7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucHJvcHMgPSB7XG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgLi4ucHJvcHNcbiAgICB9O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cbiAgLyoqXG4gICAqIERlc3Ryb3kgdGhlIFJlYWN0IGNvbXBvbmVudC5cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdmFyIF9hO1xuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICAoX2EgPSBlZGl0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IGVkaXRvci5jb250ZW50Q29tcG9uZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2EucmVtb3ZlUmVuZGVyZXIodGhpcy5pZCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmVsZW1lbnQgJiYgdGhpcy5lbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgYXR0cmlidXRlcyBvZiB0aGUgZWxlbWVudCB0aGF0IGhvbGRzIHRoZSBSZWFjdCBjb21wb25lbnQuXG4gICAqL1xuICB1cGRhdGVBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpIHtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICAgIH0pO1xuICB9XG59O1xuXG4vLyBzcmMvUmVhY3RNYXJrVmlld1JlbmRlcmVyLnRzeFxuaW1wb3J0IHsganN4IGFzIGpzeDYgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBSZWFjdE1hcmtWaWV3Q29udGV4dCA9IFJlYWN0NC5jcmVhdGVDb250ZXh0KHtcbiAgbWFya1ZpZXdDb250ZW50UmVmOiAoKSA9PiB7XG4gIH1cbn0pO1xudmFyIE1hcmtWaWV3Q29udGVudCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGFzOiBUYWcgPSBcInNwYW5cIiwgLi4ucmVzdCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgbWFya1ZpZXdDb250ZW50UmVmIH0gPSBSZWFjdDQudXNlQ29udGV4dChSZWFjdE1hcmtWaWV3Q29udGV4dCk7XG4gIHJldHVybiAoXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIC8qIEBfX1BVUkVfXyAqLyBqc3g2KFRhZywgeyAuLi5yZXN0LCByZWY6IG1hcmtWaWV3Q29udGVudFJlZiwgXCJkYXRhLW1hcmstdmlldy1jb250ZW50XCI6IFwiXCIgfSlcbiAgKTtcbn07XG52YXIgUmVhY3RNYXJrVmlldyA9IGNsYXNzIGV4dGVuZHMgTWFya1ZpZXcge1xuICBjb25zdHJ1Y3Rvcihjb21wb25lbnQsIHByb3BzLCBvcHRpb25zKSB7XG4gICAgc3VwZXIoY29tcG9uZW50LCBwcm9wcywgb3B0aW9ucyk7XG4gICAgY29uc3QgeyBhcyA9IFwic3BhblwiLCBhdHRycywgY2xhc3NOYW1lID0gXCJcIiB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCBjb21wb25lbnRQcm9wcyA9IHsgLi4ucHJvcHMsIHVwZGF0ZUF0dHJpYnV0ZXM6IHRoaXMudXBkYXRlQXR0cmlidXRlcy5iaW5kKHRoaXMpIH07XG4gICAgdGhpcy5jb250ZW50RE9NRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIGNvbnN0IG1hcmtWaWV3Q29udGVudFJlZiA9IChlbCkgPT4ge1xuICAgICAgaWYgKGVsICYmICFlbC5jb250YWlucyh0aGlzLmNvbnRlbnRET01FbGVtZW50KSkge1xuICAgICAgICBlbC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRET01FbGVtZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICBtYXJrVmlld0NvbnRlbnRSZWZcbiAgICB9O1xuICAgIGNvbnN0IFJlYWN0TWFya1ZpZXdQcm92aWRlciA9IFJlYWN0NC5tZW1vKChjb21wb25lbnRQcm9wczIpID0+IHtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4NihSZWFjdE1hcmtWaWV3Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dCwgY2hpbGRyZW46IFJlYWN0NC5jcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgY29tcG9uZW50UHJvcHMyKSB9KTtcbiAgICB9KTtcbiAgICBSZWFjdE1hcmtWaWV3UHJvdmlkZXIuZGlzcGxheU5hbWUgPSBcIlJlYWN0TWFya1ZpZXdcIjtcbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IFJlYWN0UmVuZGVyZXIoUmVhY3RNYXJrVmlld1Byb3ZpZGVyLCB7XG4gICAgICBlZGl0b3I6IHByb3BzLmVkaXRvcixcbiAgICAgIHByb3BzOiBjb21wb25lbnRQcm9wcyxcbiAgICAgIGFzLFxuICAgICAgY2xhc3NOYW1lOiBgbWFyay0ke3Byb3BzLm1hcmsudHlwZS5uYW1lfSAke2NsYXNzTmFtZX1gLnRyaW0oKVxuICAgIH0pO1xuICAgIGlmIChhdHRycykge1xuICAgICAgdGhpcy5yZW5kZXJlci51cGRhdGVBdHRyaWJ1dGVzKGF0dHJzKTtcbiAgICB9XG4gIH1cbiAgZ2V0IGRvbSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlci5lbGVtZW50O1xuICB9XG4gIGdldCBjb250ZW50RE9NKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRET01FbGVtZW50O1xuICB9XG59O1xuZnVuY3Rpb24gUmVhY3RNYXJrVmlld1JlbmRlcmVyKGNvbXBvbmVudCwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiAocHJvcHMpID0+IG5ldyBSZWFjdE1hcmtWaWV3KGNvbXBvbmVudCwgcHJvcHMsIG9wdGlvbnMpO1xufVxuXG4vLyBzcmMvUmVhY3ROb2RlVmlld1JlbmRlcmVyLnRzeFxuaW1wb3J0IHsgZ2V0UmVuZGVyZWRBdHRyaWJ1dGVzLCBOb2RlVmlldyB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgYXMgY3JlYXRlRWxlbWVudDIsIGNyZWF0ZVJlZiwgbWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsganN4IGFzIGpzeDcgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBSZWFjdE5vZGVWaWV3ID0gY2xhc3MgZXh0ZW5kcyBOb2RlVmlldyB7XG4gIGNvbnN0cnVjdG9yKGNvbXBvbmVudCwgcHJvcHMsIG9wdGlvbnMpIHtcbiAgICBzdXBlcihjb21wb25lbnQsIHByb3BzLCBvcHRpb25zKTtcbiAgICAvKipcbiAgICAgKiBUaGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIElEIHVzZWQgZm9yIHNlbGVjdGlvbiB1cGRhdGVzLlxuICAgICAqL1xuICAgIHRoaXMuc2VsZWN0aW9uUmFmSWQgPSBudWxsO1xuICAgIHRoaXMuY2FjaGVkRXh0ZW5zaW9uV2l0aFN5bmNlZFN0b3JhZ2UgPSBudWxsO1xuICAgIGlmICghdGhpcy5ub2RlLmlzTGVhZikge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb250ZW50RE9NRWxlbWVudFRhZykge1xuICAgICAgICB0aGlzLmNvbnRlbnRET01FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLm9wdGlvbnMuY29udGVudERPTUVsZW1lbnRUYWcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb250ZW50RE9NRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5ub2RlLmlzSW5saW5lID8gXCJzcGFuXCIgOiBcImRpdlwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGVudERPTUVsZW1lbnQuZGF0YXNldC5ub2RlVmlld0NvbnRlbnRSZWFjdCA9IFwiXCI7XG4gICAgICB0aGlzLmNvbnRlbnRET01FbGVtZW50LmRhdGFzZXQubm9kZVZpZXdXcmFwcGVyID0gXCJcIjtcbiAgICAgIHRoaXMuY29udGVudERPTUVsZW1lbnQuc3R5bGUud2hpdGVTcGFjZSA9IFwiaW5oZXJpdFwiO1xuICAgICAgY29uc3QgY29udGVudFRhcmdldCA9IHRoaXMuZG9tLnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1ub2RlLXZpZXctY29udGVudF1cIik7XG4gICAgICBpZiAoIWNvbnRlbnRUYXJnZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29udGVudFRhcmdldC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRET01FbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgYSBwcm94eSBvZiB0aGUgZXh0ZW5zaW9uIHRoYXQgcmVkaXJlY3RzIHN0b3JhZ2UgYWNjZXNzIHRvIHRoZSBlZGl0b3IncyBtdXRhYmxlIHN0b3JhZ2UuXG4gICAqIFRoaXMgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBwcm90b3R5cGUgY2hhaW4gKGluc3RhbmNlb2YgY2hlY2tzLCBtZXRob2RzIGxpa2UgY29uZmlndXJlL2V4dGVuZCB3b3JrKS5cbiAgICogQ2FjaGVkIHRvIGF2b2lkIHByb3h5IGNyZWF0aW9uIG9uIGV2ZXJ5IHVwZGF0ZS5cbiAgICovXG4gIGdldCBleHRlbnNpb25XaXRoU3luY2VkU3RvcmFnZSgpIHtcbiAgICBpZiAoIXRoaXMuY2FjaGVkRXh0ZW5zaW9uV2l0aFN5bmNlZFN0b3JhZ2UpIHtcbiAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gdGhpcy5leHRlbnNpb247XG4gICAgICB0aGlzLmNhY2hlZEV4dGVuc2lvbldpdGhTeW5jZWRTdG9yYWdlID0gbmV3IFByb3h5KGV4dGVuc2lvbiwge1xuICAgICAgICBnZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICBpZiAocHJvcCA9PT0gXCJzdG9yYWdlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiAoX2EgPSBlZGl0b3Iuc3RvcmFnZVtleHRlbnNpb24ubmFtZV0pICE9IG51bGwgPyBfYSA6IHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYWNoZWRFeHRlbnNpb25XaXRoU3luY2VkU3RvcmFnZTtcbiAgfVxuICAvKipcbiAgICogU2V0dXAgdGhlIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQ2FsbGVkIG9uIGluaXRpYWxpemF0aW9uLlxuICAgKi9cbiAgbW91bnQoKSB7XG4gICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgbm9kZTogdGhpcy5ub2RlLFxuICAgICAgZGVjb3JhdGlvbnM6IHRoaXMuZGVjb3JhdGlvbnMsXG4gICAgICBpbm5lckRlY29yYXRpb25zOiB0aGlzLmlubmVyRGVjb3JhdGlvbnMsXG4gICAgICB2aWV3OiB0aGlzLnZpZXcsXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICBleHRlbnNpb246IHRoaXMuZXh0ZW5zaW9uV2l0aFN5bmNlZFN0b3JhZ2UsXG4gICAgICBIVE1MQXR0cmlidXRlczogdGhpcy5IVE1MQXR0cmlidXRlcyxcbiAgICAgIGdldFBvczogKCkgPT4gdGhpcy5nZXRQb3MoKSxcbiAgICAgIHVwZGF0ZUF0dHJpYnV0ZXM6IChhdHRyaWJ1dGVzID0ge30pID0+IHRoaXMudXBkYXRlQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSxcbiAgICAgIGRlbGV0ZU5vZGU6ICgpID0+IHRoaXMuZGVsZXRlTm9kZSgpLFxuICAgICAgcmVmOiBjcmVhdGVSZWYoKVxuICAgIH07XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudC5kaXNwbGF5TmFtZSkge1xuICAgICAgY29uc3QgY2FwaXRhbGl6ZUZpcnN0Q2hhciA9IChzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zdWJzdHJpbmcoMSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5jb21wb25lbnQuZGlzcGxheU5hbWUgPSBjYXBpdGFsaXplRmlyc3RDaGFyKHRoaXMuZXh0ZW5zaW9uLm5hbWUpO1xuICAgIH1cbiAgICBjb25zdCBvbkRyYWdTdGFydCA9IHRoaXMub25EcmFnU3RhcnQuYmluZCh0aGlzKTtcbiAgICBjb25zdCBub2RlVmlld0NvbnRlbnRSZWYgPSAoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQgJiYgdGhpcy5jb250ZW50RE9NRWxlbWVudCAmJiBlbGVtZW50LmZpcnN0Q2hpbGQgIT09IHRoaXMuY29udGVudERPTUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKFwiZGF0YS1ub2RlLXZpZXctd3JhcHBlclwiKSkge1xuICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS1ub2RlLXZpZXctd3JhcHBlclwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY29udGVudERPTUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgY29udGV4dCA9IHsgb25EcmFnU3RhcnQsIG5vZGVWaWV3Q29udGVudFJlZiB9O1xuICAgIGNvbnN0IENvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50O1xuICAgIGNvbnN0IFJlYWN0Tm9kZVZpZXdQcm92aWRlciA9IG1lbW8oKGNvbXBvbmVudFByb3BzKSA9PiB7XG4gICAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeDcoUmVhY3ROb2RlVmlld0NvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbnRleHQsIGNoaWxkcmVuOiBjcmVhdGVFbGVtZW50MihDb21wb25lbnQsIGNvbXBvbmVudFByb3BzKSB9KTtcbiAgICB9KTtcbiAgICBSZWFjdE5vZGVWaWV3UHJvdmlkZXIuZGlzcGxheU5hbWUgPSBcIlJlYWN0Tm9kZVZpZXdcIjtcbiAgICBsZXQgYXMgPSB0aGlzLm5vZGUuaXNJbmxpbmUgPyBcInNwYW5cIiA6IFwiZGl2XCI7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5hcykge1xuICAgICAgYXMgPSB0aGlzLm9wdGlvbnMuYXM7XG4gICAgfVxuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gXCJcIiB9ID0gdGhpcy5vcHRpb25zO1xuICAgIHRoaXMuaGFuZGxlU2VsZWN0aW9uVXBkYXRlID0gdGhpcy5oYW5kbGVTZWxlY3Rpb25VcGRhdGUuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IFJlYWN0UmVuZGVyZXIoUmVhY3ROb2RlVmlld1Byb3ZpZGVyLCB7XG4gICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgcHJvcHMsXG4gICAgICBhcyxcbiAgICAgIGNsYXNzTmFtZTogYG5vZGUtJHt0aGlzLm5vZGUudHlwZS5uYW1lfSAke2NsYXNzTmFtZX1gLnRyaW0oKVxuICAgIH0pO1xuICAgIHRoaXMuZWRpdG9yLm9uKFwic2VsZWN0aW9uVXBkYXRlXCIsIHRoaXMuaGFuZGxlU2VsZWN0aW9uVXBkYXRlKTtcbiAgICB0aGlzLnVwZGF0ZUVsZW1lbnRBdHRyaWJ1dGVzKCk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgRE9NIGVsZW1lbnQuXG4gICAqIFRoaXMgaXMgdGhlIGVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSB0aGUgbm9kZSB2aWV3LlxuICAgKi9cbiAgZ2V0IGRvbSgpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHRoaXMucmVuZGVyZXIuZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCAmJiAhKChfYSA9IHRoaXMucmVuZGVyZXIuZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmhhc0F0dHJpYnV0ZShcImRhdGEtbm9kZS12aWV3LXdyYXBwZXJcIikpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIlBsZWFzZSB1c2UgdGhlIE5vZGVWaWV3V3JhcHBlciBjb21wb25lbnQgZm9yIHlvdXIgbm9kZSB2aWV3LlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXIuZWxlbWVudDtcbiAgfVxuICAvKipcbiAgICogUmV0dXJuIHRoZSBjb250ZW50IERPTSBlbGVtZW50LlxuICAgKiBUaGlzIGlzIHRoZSBlbGVtZW50IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRpc3BsYXkgdGhlIHJpY2gtdGV4dCBjb250ZW50IG9mIHRoZSBub2RlLlxuICAgKi9cbiAgZ2V0IGNvbnRlbnRET00oKSB7XG4gICAgaWYgKHRoaXMubm9kZS5pc0xlYWYpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb250ZW50RE9NRWxlbWVudDtcbiAgfVxuICAvKipcbiAgICogT24gZWRpdG9yIHNlbGVjdGlvbiB1cGRhdGUsIGNoZWNrIGlmIHRoZSBub2RlIGlzIHNlbGVjdGVkLlxuICAgKiBJZiBpdCBpcywgY2FsbCBgc2VsZWN0Tm9kZWAsIG90aGVyd2lzZSBjYWxsIGBkZXNlbGVjdE5vZGVgLlxuICAgKi9cbiAgaGFuZGxlU2VsZWN0aW9uVXBkYXRlKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblJhZklkKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnNlbGVjdGlvblJhZklkKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uUmFmSWQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvblJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uUmFmSWQgPSBudWxsO1xuICAgICAgY29uc3QgeyBmcm9tLCB0byB9ID0gdGhpcy5lZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgY29uc3QgcG9zID0gdGhpcy5nZXRQb3MoKTtcbiAgICAgIGlmICh0eXBlb2YgcG9zICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChmcm9tIDw9IHBvcyAmJiB0byA+PSBwb3MgKyB0aGlzLm5vZGUubm9kZVNpemUpIHtcbiAgICAgICAgaWYgKHRoaXMucmVuZGVyZXIucHJvcHMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3ROb2RlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMucmVuZGVyZXIucHJvcHMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXNlbGVjdE5vZGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogT24gdXBkYXRlLCB1cGRhdGUgdGhlIFJlYWN0IGNvbXBvbmVudC5cbiAgICogVG8gcHJldmVudCB1bm5lY2Vzc2FyeSB1cGRhdGVzLCB0aGUgYHVwZGF0ZWAgb3B0aW9uIGNhbiBiZSB1c2VkLlxuICAgKi9cbiAgdXBkYXRlKG5vZGUsIGRlY29yYXRpb25zLCBpbm5lckRlY29yYXRpb25zKSB7XG4gICAgY29uc3QgcmVyZW5kZXJDb21wb25lbnQgPSAocHJvcHMpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIudXBkYXRlUHJvcHMocHJvcHMpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYXR0cnMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLnVwZGF0ZUVsZW1lbnRBdHRyaWJ1dGVzKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAobm9kZS50eXBlICE9PSB0aGlzLm5vZGUudHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy51cGRhdGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY29uc3Qgb2xkTm9kZSA9IHRoaXMubm9kZTtcbiAgICAgIGNvbnN0IG9sZERlY29yYXRpb25zID0gdGhpcy5kZWNvcmF0aW9ucztcbiAgICAgIGNvbnN0IG9sZElubmVyRGVjb3JhdGlvbnMgPSB0aGlzLmlubmVyRGVjb3JhdGlvbnM7XG4gICAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgICAgdGhpcy5kZWNvcmF0aW9ucyA9IGRlY29yYXRpb25zO1xuICAgICAgdGhpcy5pbm5lckRlY29yYXRpb25zID0gaW5uZXJEZWNvcmF0aW9ucztcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMudXBkYXRlKHtcbiAgICAgICAgb2xkTm9kZSxcbiAgICAgICAgb2xkRGVjb3JhdGlvbnMsXG4gICAgICAgIG5ld05vZGU6IG5vZGUsXG4gICAgICAgIG5ld0RlY29yYXRpb25zOiBkZWNvcmF0aW9ucyxcbiAgICAgICAgb2xkSW5uZXJEZWNvcmF0aW9ucyxcbiAgICAgICAgaW5uZXJEZWNvcmF0aW9ucyxcbiAgICAgICAgdXBkYXRlUHJvcHM6ICgpID0+IHJlcmVuZGVyQ29tcG9uZW50KHsgbm9kZSwgZGVjb3JhdGlvbnMsIGlubmVyRGVjb3JhdGlvbnMsIGV4dGVuc2lvbjogdGhpcy5leHRlbnNpb25XaXRoU3luY2VkU3RvcmFnZSB9KVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChub2RlID09PSB0aGlzLm5vZGUgJiYgdGhpcy5kZWNvcmF0aW9ucyA9PT0gZGVjb3JhdGlvbnMgJiYgdGhpcy5pbm5lckRlY29yYXRpb25zID09PSBpbm5lckRlY29yYXRpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLmRlY29yYXRpb25zID0gZGVjb3JhdGlvbnM7XG4gICAgdGhpcy5pbm5lckRlY29yYXRpb25zID0gaW5uZXJEZWNvcmF0aW9ucztcbiAgICByZXJlbmRlckNvbXBvbmVudCh7IG5vZGUsIGRlY29yYXRpb25zLCBpbm5lckRlY29yYXRpb25zLCBleHRlbnNpb246IHRoaXMuZXh0ZW5zaW9uV2l0aFN5bmNlZFN0b3JhZ2UgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLyoqXG4gICAqIFNlbGVjdCB0aGUgbm9kZS5cbiAgICogQWRkIHRoZSBgc2VsZWN0ZWRgIHByb3AgYW5kIHRoZSBgUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlYCBjbGFzcy5cbiAgICovXG4gIHNlbGVjdE5vZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci51cGRhdGVQcm9wcyh7XG4gICAgICBzZWxlY3RlZDogdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMucmVuZGVyZXIuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlXCIpO1xuICB9XG4gIC8qKlxuICAgKiBEZXNlbGVjdCB0aGUgbm9kZS5cbiAgICogUmVtb3ZlIHRoZSBgc2VsZWN0ZWRgIHByb3AgYW5kIHRoZSBgUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlYCBjbGFzcy5cbiAgICovXG4gIGRlc2VsZWN0Tm9kZSgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnVwZGF0ZVByb3BzKHtcbiAgICAgIHNlbGVjdGVkOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMucmVuZGVyZXIuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlXCIpO1xuICB9XG4gIC8qKlxuICAgKiBEZXN0cm95IHRoZSBSZWFjdCBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMucmVuZGVyZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuZWRpdG9yLm9mZihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLmhhbmRsZVNlbGVjdGlvblVwZGF0ZSk7XG4gICAgdGhpcy5jb250ZW50RE9NRWxlbWVudCA9IG51bGw7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uUmFmSWQpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2VsZWN0aW9uUmFmSWQpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25SYWZJZCA9IG51bGw7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHRvcC1sZXZlbCBlbGVtZW50IHRoYXQgaG9sZHMgdGhlIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQXBwbHlpbmcgdGhlIGF0dHJpYnV0ZXMgZGVmaW5lZCBpbiB0aGUgYGF0dHJzYCBvcHRpb24uXG4gICAqL1xuICB1cGRhdGVFbGVtZW50QXR0cmlidXRlcygpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmF0dHJzKSB7XG4gICAgICBsZXQgYXR0cnNPYmogPSB7fTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLmF0dHJzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uQXR0cmlidXRlcyA9IHRoaXMuZWRpdG9yLmV4dGVuc2lvbk1hbmFnZXIuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgSFRNTEF0dHJpYnV0ZXMgPSBnZXRSZW5kZXJlZEF0dHJpYnV0ZXModGhpcy5ub2RlLCBleHRlbnNpb25BdHRyaWJ1dGVzKTtcbiAgICAgICAgYXR0cnNPYmogPSB0aGlzLm9wdGlvbnMuYXR0cnMoeyBub2RlOiB0aGlzLm5vZGUsIEhUTUxBdHRyaWJ1dGVzIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0cnNPYmogPSB0aGlzLm9wdGlvbnMuYXR0cnM7XG4gICAgICB9XG4gICAgICB0aGlzLnJlbmRlcmVyLnVwZGF0ZUF0dHJpYnV0ZXMoYXR0cnNPYmopO1xuICAgIH1cbiAgfVxufTtcbmZ1bmN0aW9uIFJlYWN0Tm9kZVZpZXdSZW5kZXJlcihjb21wb25lbnQsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIChwcm9wcykgPT4ge1xuICAgIGlmICghcHJvcHMuZWRpdG9yLmNvbnRlbnRDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSZWFjdE5vZGVWaWV3KGNvbXBvbmVudCwgcHJvcHMsIG9wdGlvbnMpO1xuICB9O1xufVxuXG4vLyBzcmMvVGlwdGFwLnRzeFxuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCBhcyBjcmVhdGVDb250ZXh0MywgdXNlQ29udGV4dCBhcyB1c2VDb250ZXh0MywgdXNlTWVtbyBhcyB1c2VNZW1vMiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsganN4IGFzIGpzeDggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBUaXB0YXBDb250ZXh0ID0gY3JlYXRlQ29udGV4dDMoe1xuICBnZXQgZWRpdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVRpcHRhcCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgPFRpcHRhcD4gcHJvdmlkZXJcIik7XG4gIH1cbn0pO1xuVGlwdGFwQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiVGlwdGFwQ29udGV4dFwiO1xudmFyIHVzZVRpcHRhcCA9ICgpID0+IHVzZUNvbnRleHQzKFRpcHRhcENvbnRleHQpO1xuZnVuY3Rpb24gdXNlVGlwdGFwU3RhdGUoc2VsZWN0b3IsIGVxdWFsaXR5Rm4pIHtcbiAgY29uc3QgeyBlZGl0b3IgfSA9IHVzZVRpcHRhcCgpO1xuICByZXR1cm4gdXNlRWRpdG9yU3RhdGUoe1xuICAgIGVkaXRvcixcbiAgICBzZWxlY3RvcixcbiAgICBlcXVhbGl0eUZuXG4gIH0pO1xufVxuZnVuY3Rpb24gVGlwdGFwV3JhcHBlcih7IGVkaXRvciwgaW5zdGFuY2UsIGNoaWxkcmVuIH0pIHtcbiAgY29uc3QgcmVzb2x2ZWRFZGl0b3IgPSBlZGl0b3IgIT0gbnVsbCA/IGVkaXRvciA6IGluc3RhbmNlO1xuICBpZiAoIXJlc29sdmVkRWRpdG9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVGlwdGFwOiBBbiBlZGl0b3IgaW5zdGFuY2UgaXMgcmVxdWlyZWQuIFBhc3MgYSBub24tbnVsbCBgZWRpdG9yYCBwcm9wLlwiKTtcbiAgfVxuICBjb25zdCB0aXB0YXBDb250ZXh0VmFsdWUgPSB1c2VNZW1vMigoKSA9PiAoeyBlZGl0b3I6IHJlc29sdmVkRWRpdG9yIH0pLCBbcmVzb2x2ZWRFZGl0b3JdKTtcbiAgY29uc3QgbGVnYWN5Q29udGV4dFZhbHVlID0gdXNlTWVtbzIoKCkgPT4gKHsgZWRpdG9yOiByZXNvbHZlZEVkaXRvciB9KSwgW3Jlc29sdmVkRWRpdG9yXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4OChFZGl0b3JDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBsZWdhY3lDb250ZXh0VmFsdWUsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4OChUaXB0YXBDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB0aXB0YXBDb250ZXh0VmFsdWUsIGNoaWxkcmVuIH0pIH0pO1xufVxuVGlwdGFwV3JhcHBlci5kaXNwbGF5TmFtZSA9IFwiVGlwdGFwXCI7XG5mdW5jdGlvbiBUaXB0YXBDb250ZW50KHsgLi4ucmVzdCB9KSB7XG4gIGNvbnN0IHsgZWRpdG9yIH0gPSB1c2VUaXB0YXAoKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3g4KEVkaXRvckNvbnRlbnQsIHsgZWRpdG9yLCAuLi5yZXN0IH0pO1xufVxuVGlwdGFwQ29udGVudC5kaXNwbGF5TmFtZSA9IFwiVGlwdGFwLkNvbnRlbnRcIjtcbnZhciBUaXB0YXAgPSBPYmplY3QuYXNzaWduKFRpcHRhcFdyYXBwZXIsIHtcbiAgLyoqXG4gICAqIFRoZSBUaXB0YXAgQ29udGVudCBjb21wb25lbnQgdGhhdCByZW5kZXJzIHRoZSBFZGl0b3JDb250ZW50IHdpdGggdGhlIGVkaXRvciBpbnN0YW5jZSBmcm9tIHRoZSBjb250ZXh0LlxuICAgKiBAc2VlIFRpcHRhcENvbnRlbnRcbiAgICovXG4gIENvbnRlbnQ6IFRpcHRhcENvbnRlbnRcbn0pO1xuXG4vLyBzcmMvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmV4cG9ydCB7XG4gIEVkaXRvckNvbnN1bWVyLFxuICBFZGl0b3JDb250ZW50LFxuICBFZGl0b3JDb250ZXh0LFxuICBFZGl0b3JQcm92aWRlcixcbiAgTWFya1ZpZXdDb250ZW50LFxuICBOb2RlVmlld0NvbnRlbnQsXG4gIE5vZGVWaWV3V3JhcHBlcixcbiAgUHVyZUVkaXRvckNvbnRlbnQsXG4gIFJlYWN0TWFya1ZpZXcsXG4gIFJlYWN0TWFya1ZpZXdDb250ZXh0LFxuICBSZWFjdE1hcmtWaWV3UmVuZGVyZXIsXG4gIFJlYWN0Tm9kZVZpZXcsXG4gIFJlYWN0Tm9kZVZpZXdDb250ZW50UHJvdmlkZXIsXG4gIFJlYWN0Tm9kZVZpZXdDb250ZXh0LFxuICBSZWFjdE5vZGVWaWV3UmVuZGVyZXIsXG4gIFJlYWN0UmVuZGVyZXIsXG4gIFRpcHRhcCxcbiAgVGlwdGFwQ29udGVudCxcbiAgVGlwdGFwQ29udGV4dCxcbiAgVGlwdGFwV3JhcHBlcixcbiAgdXNlQ3VycmVudEVkaXRvcixcbiAgdXNlRWRpdG9yLFxuICB1c2VFZGl0b3JTdGF0ZSxcbiAgdXNlUmVhY3ROb2RlVmlldyxcbiAgdXNlVGlwdGFwLFxuICB1c2VUaXB0YXBTdGF0ZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/react/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/@tiptap/starter-kit/dist/index.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/@tiptap/starter-kit/dist/index.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StarterKit: () => (/* binding */ StarterKit),\n/* harmony export */ \"default\": () => (/* binding */ index_default)\n/* harmony export */ });\n/* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @tiptap/core */ \"(app-pages-browser)/./node_modules/@tiptap/core/dist/index.js\");\n/* harmony import */ var _tiptap_extension_blockquote__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiptap/extension-blockquote */ \"(app-pages-browser)/./node_modules/@tiptap/extension-blockquote/dist/index.js\");\n/* harmony import */ var _tiptap_extension_bold__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tiptap/extension-bold */ \"(app-pages-browser)/./node_modules/@tiptap/extension-bold/dist/index.js\");\n/* harmony import */ var _tiptap_extension_code__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tiptap/extension-code */ \"(app-pages-browser)/./node_modules/@tiptap/extension-code/dist/index.js\");\n/* harmony import */ var _tiptap_extension_code_block__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tiptap/extension-code-block */ \"(app-pages-browser)/./node_modules/@tiptap/extension-code-block/dist/index.js\");\n/* harmony import */ var _tiptap_extension_document__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tiptap/extension-document */ \"(app-pages-browser)/./node_modules/@tiptap/extension-document/dist/index.js\");\n/* harmony import */ var _tiptap_extension_hard_break__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tiptap/extension-hard-break */ \"(app-pages-browser)/./node_modules/@tiptap/extension-hard-break/dist/index.js\");\n/* harmony import */ var _tiptap_extension_heading__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @tiptap/extension-heading */ \"(app-pages-browser)/./node_modules/@tiptap/extension-heading/dist/index.js\");\n/* harmony import */ var _tiptap_extension_horizontal_rule__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @tiptap/extension-horizontal-rule */ \"(app-pages-browser)/./node_modules/@tiptap/extension-horizontal-rule/dist/index.js\");\n/* harmony import */ var _tiptap_extension_italic__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @tiptap/extension-italic */ \"(app-pages-browser)/./node_modules/@tiptap/extension-italic/dist/index.js\");\n/* harmony import */ var _tiptap_extension_link__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @tiptap/extension-link */ \"(app-pages-browser)/./node_modules/@tiptap/extension-link/dist/index.js\");\n/* harmony import */ var _tiptap_extension_list__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @tiptap/extension-list */ \"(app-pages-browser)/./node_modules/@tiptap/extension-list/dist/index.js\");\n/* harmony import */ var _tiptap_extension_paragraph__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @tiptap/extension-paragraph */ \"(app-pages-browser)/./node_modules/@tiptap/extension-paragraph/dist/index.js\");\n/* harmony import */ var _tiptap_extension_strike__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @tiptap/extension-strike */ \"(app-pages-browser)/./node_modules/@tiptap/extension-strike/dist/index.js\");\n/* harmony import */ var _tiptap_extension_text__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @tiptap/extension-text */ \"(app-pages-browser)/./node_modules/@tiptap/extension-text/dist/index.js\");\n/* harmony import */ var _tiptap_extension_underline__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @tiptap/extension-underline */ \"(app-pages-browser)/./node_modules/@tiptap/extension-underline/dist/index.js\");\n/* harmony import */ var _tiptap_extensions__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @tiptap/extensions */ \"(app-pages-browser)/./node_modules/@tiptap/extensions/dist/index.js\");\n// src/starter-kit.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar StarterKit = _tiptap_core__WEBPACK_IMPORTED_MODULE_16__.Extension.create({\n name: \"starterKit\",\n addExtensions() {\n var _a, _b, _c, _d;\n const extensions = [];\n if (this.options.bold !== false) {\n extensions.push(_tiptap_extension_bold__WEBPACK_IMPORTED_MODULE_1__.Bold.configure(this.options.bold));\n }\n if (this.options.blockquote !== false) {\n extensions.push(_tiptap_extension_blockquote__WEBPACK_IMPORTED_MODULE_0__.Blockquote.configure(this.options.blockquote));\n }\n if (this.options.bulletList !== false) {\n extensions.push(_tiptap_extension_list__WEBPACK_IMPORTED_MODULE_10__.BulletList.configure(this.options.bulletList));\n }\n if (this.options.code !== false) {\n extensions.push(_tiptap_extension_code__WEBPACK_IMPORTED_MODULE_2__.Code.configure(this.options.code));\n }\n if (this.options.codeBlock !== false) {\n extensions.push(_tiptap_extension_code_block__WEBPACK_IMPORTED_MODULE_3__.CodeBlock.configure(this.options.codeBlock));\n }\n if (this.options.document !== false) {\n extensions.push(_tiptap_extension_document__WEBPACK_IMPORTED_MODULE_4__.Document.configure(this.options.document));\n }\n if (this.options.dropcursor !== false) {\n extensions.push(_tiptap_extensions__WEBPACK_IMPORTED_MODULE_15__.Dropcursor.configure(this.options.dropcursor));\n }\n if (this.options.gapcursor !== false) {\n extensions.push(_tiptap_extensions__WEBPACK_IMPORTED_MODULE_15__.Gapcursor.configure(this.options.gapcursor));\n }\n if (this.options.hardBreak !== false) {\n extensions.push(_tiptap_extension_hard_break__WEBPACK_IMPORTED_MODULE_5__.HardBreak.configure(this.options.hardBreak));\n }\n if (this.options.heading !== false) {\n extensions.push(_tiptap_extension_heading__WEBPACK_IMPORTED_MODULE_6__.Heading.configure(this.options.heading));\n }\n if (this.options.undoRedo !== false) {\n extensions.push(_tiptap_extensions__WEBPACK_IMPORTED_MODULE_15__.UndoRedo.configure(this.options.undoRedo));\n }\n if (this.options.horizontalRule !== false) {\n extensions.push(_tiptap_extension_horizontal_rule__WEBPACK_IMPORTED_MODULE_7__.HorizontalRule.configure(this.options.horizontalRule));\n }\n if (this.options.italic !== false) {\n extensions.push(_tiptap_extension_italic__WEBPACK_IMPORTED_MODULE_8__.Italic.configure(this.options.italic));\n }\n if (this.options.listItem !== false) {\n extensions.push(_tiptap_extension_list__WEBPACK_IMPORTED_MODULE_10__.ListItem.configure(this.options.listItem));\n }\n if (this.options.listKeymap !== false) {\n extensions.push(_tiptap_extension_list__WEBPACK_IMPORTED_MODULE_10__.ListKeymap.configure((_a = this.options) == null ? void 0 : _a.listKeymap));\n }\n if (this.options.link !== false) {\n extensions.push(_tiptap_extension_link__WEBPACK_IMPORTED_MODULE_9__.Link.configure((_b = this.options) == null ? void 0 : _b.link));\n }\n if (this.options.orderedList !== false) {\n extensions.push(_tiptap_extension_list__WEBPACK_IMPORTED_MODULE_10__.OrderedList.configure(this.options.orderedList));\n }\n if (this.options.paragraph !== false) {\n extensions.push(_tiptap_extension_paragraph__WEBPACK_IMPORTED_MODULE_11__.Paragraph.configure(this.options.paragraph));\n }\n if (this.options.strike !== false) {\n extensions.push(_tiptap_extension_strike__WEBPACK_IMPORTED_MODULE_12__.Strike.configure(this.options.strike));\n }\n if (this.options.text !== false) {\n extensions.push(_tiptap_extension_text__WEBPACK_IMPORTED_MODULE_13__.Text.configure(this.options.text));\n }\n if (this.options.underline !== false) {\n extensions.push(_tiptap_extension_underline__WEBPACK_IMPORTED_MODULE_14__.Underline.configure((_c = this.options) == null ? void 0 : _c.underline));\n }\n if (this.options.trailingNode !== false) {\n extensions.push(_tiptap_extensions__WEBPACK_IMPORTED_MODULE_15__.TrailingNode.configure((_d = this.options) == null ? void 0 : _d.trailingNode));\n }\n return extensions;\n }\n});\n\n// src/index.ts\nvar index_default = StarterKit;\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AdGlwdGFwL3N0YXJ0ZXIta2l0L2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ3lDO0FBQ2lCO0FBQ1o7QUFDQTtBQUNXO0FBQ0g7QUFDRztBQUNMO0FBQ2U7QUFDakI7QUFDSjtBQUN5QztBQUMvQjtBQUNOO0FBQ0o7QUFDVTtBQUMyQjtBQUNuRixpQkFBaUIsb0RBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix3REFBSTtBQUMxQjtBQUNBO0FBQ0Esc0JBQXNCLG9FQUFVO0FBQ2hDO0FBQ0E7QUFDQSxzQkFBc0IsK0RBQVU7QUFDaEM7QUFDQTtBQUNBLHNCQUFzQix3REFBSTtBQUMxQjtBQUNBO0FBQ0Esc0JBQXNCLG1FQUFTO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0IsZ0VBQVE7QUFDOUI7QUFDQTtBQUNBLHNCQUFzQiwyREFBVTtBQUNoQztBQUNBO0FBQ0Esc0JBQXNCLDBEQUFTO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0IsbUVBQVM7QUFDL0I7QUFDQTtBQUNBLHNCQUFzQiw4REFBTztBQUM3QjtBQUNBO0FBQ0Esc0JBQXNCLHlEQUFRO0FBQzlCO0FBQ0E7QUFDQSxzQkFBc0IsNkVBQWM7QUFDcEM7QUFDQTtBQUNBLHNCQUFzQiw0REFBTTtBQUM1QjtBQUNBO0FBQ0Esc0JBQXNCLDZEQUFRO0FBQzlCO0FBQ0E7QUFDQSxzQkFBc0IsK0RBQVU7QUFDaEM7QUFDQTtBQUNBLHNCQUFzQix3REFBSTtBQUMxQjtBQUNBO0FBQ0Esc0JBQXNCLGdFQUFXO0FBQ2pDO0FBQ0E7QUFDQSxzQkFBc0IsbUVBQVM7QUFDL0I7QUFDQTtBQUNBLHNCQUFzQiw2REFBTTtBQUM1QjtBQUNBO0FBQ0Esc0JBQXNCLHlEQUFJO0FBQzFCO0FBQ0E7QUFDQSxzQkFBc0IsbUVBQVM7QUFDL0I7QUFDQTtBQUNBLHNCQUFzQiw2REFBWTtBQUNsQztBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFJRTtBQUNGIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxAdGlwdGFwXFxzdGFydGVyLWtpdFxcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3N0YXJ0ZXIta2l0LnRzXG5pbXBvcnQgeyBFeHRlbnNpb24gfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBCbG9ja3F1b3RlIH0gZnJvbSBcIkB0aXB0YXAvZXh0ZW5zaW9uLWJsb2NrcXVvdGVcIjtcbmltcG9ydCB7IEJvbGQgfSBmcm9tIFwiQHRpcHRhcC9leHRlbnNpb24tYm9sZFwiO1xuaW1wb3J0IHsgQ29kZSB9IGZyb20gXCJAdGlwdGFwL2V4dGVuc2lvbi1jb2RlXCI7XG5pbXBvcnQgeyBDb2RlQmxvY2sgfSBmcm9tIFwiQHRpcHRhcC9leHRlbnNpb24tY29kZS1ibG9ja1wiO1xuaW1wb3J0IHsgRG9jdW1lbnQgfSBmcm9tIFwiQHRpcHRhcC9leHRlbnNpb24tZG9jdW1lbnRcIjtcbmltcG9ydCB7IEhhcmRCcmVhayB9IGZyb20gXCJAdGlwdGFwL2V4dGVuc2lvbi1oYXJkLWJyZWFrXCI7XG5pbXBvcnQgeyBIZWFkaW5nIH0gZnJvbSBcIkB0aXB0YXAvZXh0ZW5zaW9uLWhlYWRpbmdcIjtcbmltcG9ydCB7IEhvcml6b250YWxSdWxlIH0gZnJvbSBcIkB0aXB0YXAvZXh0ZW5zaW9uLWhvcml6b250YWwtcnVsZVwiO1xuaW1wb3J0IHsgSXRhbGljIH0gZnJvbSBcIkB0aXB0YXAvZXh0ZW5zaW9uLWl0YWxpY1wiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCJAdGlwdGFwL2V4dGVuc2lvbi1saW5rXCI7XG5pbXBvcnQgeyBCdWxsZXRMaXN0LCBMaXN0SXRlbSwgTGlzdEtleW1hcCwgT3JkZXJlZExpc3QgfSBmcm9tIFwiQHRpcHRhcC9leHRlbnNpb24tbGlzdFwiO1xuaW1wb3J0IHsgUGFyYWdyYXBoIH0gZnJvbSBcIkB0aXB0YXAvZXh0ZW5zaW9uLXBhcmFncmFwaFwiO1xuaW1wb3J0IHsgU3RyaWtlIH0gZnJvbSBcIkB0aXB0YXAvZXh0ZW5zaW9uLXN0cmlrZVwiO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gXCJAdGlwdGFwL2V4dGVuc2lvbi10ZXh0XCI7XG5pbXBvcnQgeyBVbmRlcmxpbmUgfSBmcm9tIFwiQHRpcHRhcC9leHRlbnNpb24tdW5kZXJsaW5lXCI7XG5pbXBvcnQgeyBEcm9wY3Vyc29yLCBHYXBjdXJzb3IsIFRyYWlsaW5nTm9kZSwgVW5kb1JlZG8gfSBmcm9tIFwiQHRpcHRhcC9leHRlbnNpb25zXCI7XG52YXIgU3RhcnRlcktpdCA9IEV4dGVuc2lvbi5jcmVhdGUoe1xuICBuYW1lOiBcInN0YXJ0ZXJLaXRcIixcbiAgYWRkRXh0ZW5zaW9ucygpIHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IFtdO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuYm9sZCAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChCb2xkLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuYm9sZCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmJsb2NrcXVvdGUgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbnNpb25zLnB1c2goQmxvY2txdW90ZS5jb25maWd1cmUodGhpcy5vcHRpb25zLmJsb2NrcXVvdGUpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5idWxsZXRMaXN0ICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKEJ1bGxldExpc3QuY29uZmlndXJlKHRoaXMub3B0aW9ucy5idWxsZXRMaXN0KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuY29kZSAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChDb2RlLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuY29kZSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmNvZGVCbG9jayAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChDb2RlQmxvY2suY29uZmlndXJlKHRoaXMub3B0aW9ucy5jb2RlQmxvY2spKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5kb2N1bWVudCAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChEb2N1bWVudC5jb25maWd1cmUodGhpcy5vcHRpb25zLmRvY3VtZW50KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuZHJvcGN1cnNvciAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChEcm9wY3Vyc29yLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuZHJvcGN1cnNvcikpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmdhcGN1cnNvciAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChHYXBjdXJzb3IuY29uZmlndXJlKHRoaXMub3B0aW9ucy5nYXBjdXJzb3IpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5oYXJkQnJlYWsgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbnNpb25zLnB1c2goSGFyZEJyZWFrLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuaGFyZEJyZWFrKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVhZGluZyAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChIZWFkaW5nLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMuaGVhZGluZykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLnVuZG9SZWRvICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKFVuZG9SZWRvLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMudW5kb1JlZG8pKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5ob3Jpem9udGFsUnVsZSAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChIb3Jpem9udGFsUnVsZS5jb25maWd1cmUodGhpcy5vcHRpb25zLmhvcml6b250YWxSdWxlKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXRhbGljICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKEl0YWxpYy5jb25maWd1cmUodGhpcy5vcHRpb25zLml0YWxpYykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmxpc3RJdGVtICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKExpc3RJdGVtLmNvbmZpZ3VyZSh0aGlzLm9wdGlvbnMubGlzdEl0ZW0pKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5saXN0S2V5bWFwICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKExpc3RLZXltYXAuY29uZmlndXJlKChfYSA9IHRoaXMub3B0aW9ucykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmxpc3RLZXltYXApKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5saW5rICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKExpbmsuY29uZmlndXJlKChfYiA9IHRoaXMub3B0aW9ucykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmxpbmspKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vcmRlcmVkTGlzdCAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChPcmRlcmVkTGlzdC5jb25maWd1cmUodGhpcy5vcHRpb25zLm9yZGVyZWRMaXN0KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMucGFyYWdyYXBoICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKFBhcmFncmFwaC5jb25maWd1cmUodGhpcy5vcHRpb25zLnBhcmFncmFwaCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLnN0cmlrZSAhPT0gZmFsc2UpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChTdHJpa2UuY29uZmlndXJlKHRoaXMub3B0aW9ucy5zdHJpa2UpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy50ZXh0ICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKFRleHQuY29uZmlndXJlKHRoaXMub3B0aW9ucy50ZXh0KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMudW5kZXJsaW5lICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKFVuZGVybGluZS5jb25maWd1cmUoKF9jID0gdGhpcy5vcHRpb25zKSA9PSBudWxsID8gdm9pZCAwIDogX2MudW5kZXJsaW5lKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMudHJhaWxpbmdOb2RlICE9PSBmYWxzZSkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKFRyYWlsaW5nTm9kZS5jb25maWd1cmUoKF9kID0gdGhpcy5vcHRpb25zKSA9PSBudWxsID8gdm9pZCAwIDogX2QudHJhaWxpbmdOb2RlKSk7XG4gICAgfVxuICAgIHJldHVybiBleHRlbnNpb25zO1xuICB9XG59KTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgaW5kZXhfZGVmYXVsdCA9IFN0YXJ0ZXJLaXQ7XG5leHBvcnQge1xuICBTdGFydGVyS2l0LFxuICBpbmRleF9kZWZhdWx0IGFzIGRlZmF1bHRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@tiptap/starter-kit/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/adapters/adapters.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/axios/lib/adapters/adapters.js ***!
|
||
\*****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _http_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./http.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/null.js\");\n/* harmony import */ var _xhr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./xhr.js */ \"(app-pages-browser)/./node_modules/axios/lib/adapters/xhr.js\");\n/* harmony import */ var _fetch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fetch.js */ \"(app-pages-browser)/./node_modules/axios/lib/adapters/fetch.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n\n\n\n\n\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: _http_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n xhr: _xhr_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n fetch: {\n get: _fetch_js__WEBPACK_IMPORTED_MODULE_2__.getFetch,\n }\n};\n\n// Assign adapter names for easier debugging and identification\n_utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => _utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = _utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (_utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMvYWRhcHRlcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWdDO0FBQ0k7QUFDRjtBQUNTO0FBQ0k7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxRQUFRLGdEQUFXO0FBQ25CLE9BQU8sK0NBQVU7QUFDakI7QUFDQSxTQUFTLCtDQUFxQjtBQUM5QjtBQUNBOztBQUVBO0FBQ0EsaURBQUs7QUFDTDtBQUNBO0FBQ0EsMENBQTBDLE9BQU87QUFDakQsTUFBTTtBQUNOO0FBQ0E7QUFDQSwrQ0FBK0MsT0FBTztBQUN0RDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWE7QUFDYjtBQUNBLHNDQUFzQyxPQUFPOztBQUU3QztBQUNBO0FBQ0E7QUFDQSxXQUFXLHFCQUFxQjtBQUNoQyxhQUFhO0FBQ2I7QUFDQSxzQ0FBc0MsaURBQUs7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHdDQUF3QztBQUNuRCxXQUFXLFFBQVE7QUFDbkIsWUFBWSxZQUFZO0FBQ3hCLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0EsYUFBYSxpREFBSzs7QUFFbEIsVUFBVSxTQUFTO0FBQ25CO0FBQ0E7O0FBRUE7O0FBRUEsa0JBQWtCLFlBQVk7QUFDOUI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLDJEQUFVLHFCQUFxQixHQUFHO0FBQ3BEO0FBQ0E7O0FBRUEsb0JBQW9CLGlEQUFLO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDLElBQUk7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsY0FBYywyREFBVTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLENBQUMsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcYWRhcHRlcnNcXGFkYXB0ZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgaHR0cEFkYXB0ZXIgZnJvbSAnLi9odHRwLmpzJztcbmltcG9ydCB4aHJBZGFwdGVyIGZyb20gJy4veGhyLmpzJztcbmltcG9ydCAqIGFzIGZldGNoQWRhcHRlciBmcm9tICcuL2ZldGNoLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gXCIuLi9jb3JlL0F4aW9zRXJyb3IuanNcIjtcblxuLyoqXG4gKiBLbm93biBhZGFwdGVycyBtYXBwaW5nLlxuICogUHJvdmlkZXMgZW52aXJvbm1lbnQtc3BlY2lmaWMgYWRhcHRlcnMgZm9yIEF4aW9zOlxuICogLSBgaHR0cGAgZm9yIE5vZGUuanNcbiAqIC0gYHhocmAgZm9yIGJyb3dzZXJzXG4gKiAtIGBmZXRjaGAgZm9yIGZldGNoIEFQSS1iYXNlZCByZXF1ZXN0c1xuICogXG4gKiBAdHlwZSB7T2JqZWN0PHN0cmluZywgRnVuY3Rpb258T2JqZWN0Pn1cbiAqL1xuY29uc3Qga25vd25BZGFwdGVycyA9IHtcbiAgaHR0cDogaHR0cEFkYXB0ZXIsXG4gIHhocjogeGhyQWRhcHRlcixcbiAgZmV0Y2g6IHtcbiAgICBnZXQ6IGZldGNoQWRhcHRlci5nZXRGZXRjaCxcbiAgfVxufTtcblxuLy8gQXNzaWduIGFkYXB0ZXIgbmFtZXMgZm9yIGVhc2llciBkZWJ1Z2dpbmcgYW5kIGlkZW50aWZpY2F0aW9uXG51dGlscy5mb3JFYWNoKGtub3duQWRhcHRlcnMsIChmbiwgdmFsdWUpID0+IHtcbiAgaWYgKGZuKSB7XG4gICAgdHJ5IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbiwgJ25hbWUnLCB7IHZhbHVlIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sICdhZGFwdGVyTmFtZScsIHsgdmFsdWUgfSk7XG4gIH1cbn0pO1xuXG4vKipcbiAqIFJlbmRlciBhIHJlamVjdGlvbiByZWFzb24gc3RyaW5nIGZvciB1bmtub3duIG9yIHVuc3VwcG9ydGVkIGFkYXB0ZXJzXG4gKiBcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb25cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmNvbnN0IHJlbmRlclJlYXNvbiA9IChyZWFzb24pID0+IGAtICR7cmVhc29ufWA7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGFkYXB0ZXIgaXMgcmVzb2x2ZWQgKGZ1bmN0aW9uLCBudWxsLCBvciBmYWxzZSlcbiAqIFxuICogQHBhcmFtIHtGdW5jdGlvbnxudWxsfGZhbHNlfSBhZGFwdGVyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuY29uc3QgaXNSZXNvbHZlZEhhbmRsZSA9IChhZGFwdGVyKSA9PiB1dGlscy5pc0Z1bmN0aW9uKGFkYXB0ZXIpIHx8IGFkYXB0ZXIgPT09IG51bGwgfHwgYWRhcHRlciA9PT0gZmFsc2U7XG5cbi8qKlxuICogR2V0IHRoZSBmaXJzdCBzdWl0YWJsZSBhZGFwdGVyIGZyb20gdGhlIHByb3ZpZGVkIGxpc3QuXG4gKiBUcmllcyBlYWNoIGFkYXB0ZXIgaW4gb3JkZXIgdW50aWwgYSBzdXBwb3J0ZWQgb25lIGlzIGZvdW5kLlxuICogVGhyb3dzIGFuIEF4aW9zRXJyb3IgaWYgbm8gYWRhcHRlciBpcyBzdWl0YWJsZS5cbiAqIFxuICogQHBhcmFtIHtBcnJheTxzdHJpbmd8RnVuY3Rpb24+fHN0cmluZ3xGdW5jdGlvbn0gYWRhcHRlcnMgLSBBZGFwdGVyKHMpIGJ5IG5hbWUgb3IgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQXhpb3MgcmVxdWVzdCBjb25maWd1cmF0aW9uXG4gKiBAdGhyb3dzIHtBeGlvc0Vycm9yfSBJZiBubyBzdWl0YWJsZSBhZGFwdGVyIGlzIGF2YWlsYWJsZVxuICogQHJldHVybnMge0Z1bmN0aW9ufSBUaGUgcmVzb2x2ZWQgYWRhcHRlciBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBnZXRBZGFwdGVyKGFkYXB0ZXJzLCBjb25maWcpIHtcbiAgYWRhcHRlcnMgPSB1dGlscy5pc0FycmF5KGFkYXB0ZXJzKSA/IGFkYXB0ZXJzIDogW2FkYXB0ZXJzXTtcblxuICBjb25zdCB7IGxlbmd0aCB9ID0gYWRhcHRlcnM7XG4gIGxldCBuYW1lT3JBZGFwdGVyO1xuICBsZXQgYWRhcHRlcjtcblxuICBjb25zdCByZWplY3RlZFJlYXNvbnMgPSB7fTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgbmFtZU9yQWRhcHRlciA9IGFkYXB0ZXJzW2ldO1xuICAgIGxldCBpZDtcblxuICAgIGFkYXB0ZXIgPSBuYW1lT3JBZGFwdGVyO1xuXG4gICAgaWYgKCFpc1Jlc29sdmVkSGFuZGxlKG5hbWVPckFkYXB0ZXIpKSB7XG4gICAgICBhZGFwdGVyID0ga25vd25BZGFwdGVyc1soaWQgPSBTdHJpbmcobmFtZU9yQWRhcHRlcikpLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgICBpZiAoYWRhcHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKGBVbmtub3duIGFkYXB0ZXIgJyR7aWR9J2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhZGFwdGVyICYmICh1dGlscy5pc0Z1bmN0aW9uKGFkYXB0ZXIpIHx8IChhZGFwdGVyID0gYWRhcHRlci5nZXQoY29uZmlnKSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZWplY3RlZFJlYXNvbnNbaWQgfHwgJyMnICsgaV0gPSBhZGFwdGVyO1xuICB9XG5cbiAgaWYgKCFhZGFwdGVyKSB7XG4gICAgY29uc3QgcmVhc29ucyA9IE9iamVjdC5lbnRyaWVzKHJlamVjdGVkUmVhc29ucylcbiAgICAgIC5tYXAoKFtpZCwgc3RhdGVdKSA9PiBgYWRhcHRlciAke2lkfSBgICtcbiAgICAgICAgKHN0YXRlID09PSBmYWxzZSA/ICdpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCcgOiAnaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQnKVxuICAgICAgKTtcblxuICAgIGxldCBzID0gbGVuZ3RoID9cbiAgICAgIChyZWFzb25zLmxlbmd0aCA+IDEgPyAnc2luY2UgOlxcbicgKyByZWFzb25zLm1hcChyZW5kZXJSZWFzb24pLmpvaW4oJ1xcbicpIDogJyAnICsgcmVuZGVyUmVhc29uKHJlYXNvbnNbMF0pKSA6XG4gICAgICAnYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQnO1xuXG4gICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoXG4gICAgICBgVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCBgICsgcyxcbiAgICAgICdFUlJfTk9UX1NVUFBPUlQnXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBhZGFwdGVyO1xufVxuXG4vKipcbiAqIEV4cG9ydHMgQXhpb3MgYWRhcHRlcnMgYW5kIHV0aWxpdHkgdG8gcmVzb2x2ZSBhbiBhZGFwdGVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIFJlc29sdmUgYW4gYWRhcHRlciBmcm9tIGEgbGlzdCBvZiBhZGFwdGVyIG5hbWVzIG9yIGZ1bmN0aW9ucy5cbiAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgKi9cbiAgZ2V0QWRhcHRlcixcblxuICAvKipcbiAgICogRXhwb3NlcyBhbGwga25vd24gYWRhcHRlcnNcbiAgICogQHR5cGUge09iamVjdDxzdHJpbmcsIEZ1bmN0aW9ufE9iamVjdD59XG4gICAqL1xuICBhZGFwdGVyczoga25vd25BZGFwdGVyc1xufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/adapters/adapters.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/adapters/fetch.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/axios/lib/adapters/fetch.js ***!
|
||
\**************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getFetch: () => (/* binding */ getFetch)\n/* harmony export */ });\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/index.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _helpers_composeSignals_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers/composeSignals.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/composeSignals.js\");\n/* harmony import */ var _helpers_trackStream_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../helpers/trackStream.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/trackStream.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../helpers/progressEventReducer.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/progressEventReducer.js\");\n/* harmony import */ var _helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers/resolveConfig.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/resolveConfig.js\");\n/* harmony import */ var _core_settle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/settle.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/settle.js\");\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].global);\n\nconst {\n ReadableStream, TextEncoder\n} = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(_platform_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](`Response type '${type}' is not supported`, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isBlob(body)) {\n return body.size;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isSpecCompliantForm(body)) {\n const _request = new Request(_platform_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArrayBufferView(body) || _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = (0,_helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = (0,_helpers_composeSignals_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.progressEventDecorator)(\n requestContentLength,\n (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.progressEventReducer)((0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.asyncDecorator)(onUploadProgress))\n );\n\n data = (0,_helpers_trackStream_js__WEBPACK_IMPORTED_MODULE_6__.trackStream)(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.progressEventDecorator)(\n responseContentLength,\n (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.progressEventReducer)((0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.asyncDecorator)(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n (0,_helpers_trackStream_js__WEBPACK_IMPORTED_MODULE_6__.trackStream)(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n (0,_core_settle_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(resolve, reject, {\n data: responseData,\n headers: _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Network Error', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ERR_NETWORK, config, request, err && err.response),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].from(err, err && err.code, config, request, err && err.response);\n }\n }\n}\n\nconst seedCache = new Map();\n\nconst getFetch = (config) => {\n let env = (config && config.env) || {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (adapter);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMvZmV0Y2guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBNEM7QUFDWjtBQUNlO0FBQ1c7QUFDSjtBQUNIO0FBQzZEO0FBQ3hEO0FBQ2pCOztBQUV2Qzs7QUFFQSxPQUFPLFlBQVksRUFBRSxpREFBSzs7QUFFMUIsMEJBQTBCLGtCQUFrQjtBQUM1QztBQUNBLENBQUMsR0FBRyxpREFBSzs7QUFFVDtBQUNBO0FBQ0EsRUFBRSxFQUFFLGlEQUFLOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSxpREFBSztBQUNiO0FBQ0EsR0FBRzs7QUFFSCxTQUFTLG9DQUFvQztBQUM3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsdUNBQXVDLDBEQUFRO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxlQUFlLGlEQUFLOztBQUVwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtCQUFrQiwyREFBVSxtQkFBbUIsS0FBSyxxQkFBcUIsMkRBQVU7QUFDbkYsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsaURBQUs7QUFDYjtBQUNBOztBQUVBLFFBQVEsaURBQUs7QUFDYixtQ0FBbUMsMERBQVE7QUFDM0M7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBLFFBQVEsaURBQUssNEJBQTRCLGlEQUFLO0FBQzlDO0FBQ0E7O0FBRUEsUUFBUSxpREFBSztBQUNiO0FBQ0E7O0FBRUEsUUFBUSxpREFBSztBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixpREFBSzs7QUFFeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxFQUFFLHFFQUFhOztBQUVyQjs7QUFFQTs7QUFFQSx5QkFBeUIsc0VBQWM7O0FBRXZDOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7O0FBRUEsWUFBWSxpREFBSztBQUNqQjtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDLHdGQUFzQjtBQUM1RDtBQUNBLFlBQVksc0ZBQW9CLENBQUMsZ0ZBQWM7QUFDL0M7O0FBRUEsaUJBQWlCLG9FQUFXO0FBQzVCO0FBQ0E7O0FBRUEsV0FBVyxpREFBSztBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVCxzQ0FBc0MsaURBQUs7O0FBRTNDLDBEQUEwRCx3RkFBc0I7QUFDaEY7QUFDQSxVQUFVLHNGQUFvQixDQUFDLGdGQUFjO0FBQzdDOztBQUVBO0FBQ0EsVUFBVSxvRUFBVztBQUNyQjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSx5Q0FBeUMsaURBQUs7O0FBRTlDOztBQUVBO0FBQ0EsUUFBUSwyREFBTTtBQUNkO0FBQ0EsbUJBQW1CLDZEQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBLGNBQWMsMkRBQVUsa0JBQWtCLDJEQUFVO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsWUFBWSwyREFBVTtBQUN0QjtBQUNBO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBLFNBQVMsMEJBQTBCO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxhZGFwdGVyc1xcZmV0Y2guanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBsYXRmb3JtIGZyb20gXCIuLi9wbGF0Zm9ybS9pbmRleC5qc1wiO1xuaW1wb3J0IHV0aWxzIGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSBcIi4uL2NvcmUvQXhpb3NFcnJvci5qc1wiO1xuaW1wb3J0IGNvbXBvc2VTaWduYWxzIGZyb20gXCIuLi9oZWxwZXJzL2NvbXBvc2VTaWduYWxzLmpzXCI7XG5pbXBvcnQge3RyYWNrU3RyZWFtfSBmcm9tIFwiLi4vaGVscGVycy90cmFja1N0cmVhbS5qc1wiO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tIFwiLi4vY29yZS9BeGlvc0hlYWRlcnMuanNcIjtcbmltcG9ydCB7cHJvZ3Jlc3NFdmVudFJlZHVjZXIsIHByb2dyZXNzRXZlbnREZWNvcmF0b3IsIGFzeW5jRGVjb3JhdG9yfSBmcm9tIFwiLi4vaGVscGVycy9wcm9ncmVzc0V2ZW50UmVkdWNlci5qc1wiO1xuaW1wb3J0IHJlc29sdmVDb25maWcgZnJvbSBcIi4uL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qc1wiO1xuaW1wb3J0IHNldHRsZSBmcm9tIFwiLi4vY29yZS9zZXR0bGUuanNcIjtcblxuY29uc3QgREVGQVVMVF9DSFVOS19TSVpFID0gNjQgKiAxMDI0O1xuXG5jb25zdCB7aXNGdW5jdGlvbn0gPSB1dGlscztcblxuY29uc3QgZ2xvYmFsRmV0Y2hBUEkgPSAoKHtSZXF1ZXN0LCBSZXNwb25zZX0pID0+ICh7XG4gIFJlcXVlc3QsIFJlc3BvbnNlXG59KSkodXRpbHMuZ2xvYmFsKTtcblxuY29uc3Qge1xuICBSZWFkYWJsZVN0cmVhbSwgVGV4dEVuY29kZXJcbn0gPSB1dGlscy5nbG9iYWw7XG5cblxuY29uc3QgdGVzdCA9IChmbiwgLi4uYXJncykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiAhIWZuKC4uLmFyZ3MpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuY29uc3QgZmFjdG9yeSA9IChlbnYpID0+IHtcbiAgZW52ID0gdXRpbHMubWVyZ2UuY2FsbCh7XG4gICAgc2tpcFVuZGVmaW5lZDogdHJ1ZVxuICB9LCBnbG9iYWxGZXRjaEFQSSwgZW52KTtcblxuICBjb25zdCB7ZmV0Y2g6IGVudkZldGNoLCBSZXF1ZXN0LCBSZXNwb25zZX0gPSBlbnY7XG4gIGNvbnN0IGlzRmV0Y2hTdXBwb3J0ZWQgPSBlbnZGZXRjaCA/IGlzRnVuY3Rpb24oZW52RmV0Y2gpIDogdHlwZW9mIGZldGNoID09PSAnZnVuY3Rpb24nO1xuICBjb25zdCBpc1JlcXVlc3RTdXBwb3J0ZWQgPSBpc0Z1bmN0aW9uKFJlcXVlc3QpO1xuICBjb25zdCBpc1Jlc3BvbnNlU3VwcG9ydGVkID0gaXNGdW5jdGlvbihSZXNwb25zZSk7XG5cbiAgaWYgKCFpc0ZldGNoU3VwcG9ydGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaXNSZWFkYWJsZVN0cmVhbVN1cHBvcnRlZCA9IGlzRmV0Y2hTdXBwb3J0ZWQgJiYgaXNGdW5jdGlvbihSZWFkYWJsZVN0cmVhbSk7XG5cbiAgY29uc3QgZW5jb2RlVGV4dCA9IGlzRmV0Y2hTdXBwb3J0ZWQgJiYgKHR5cGVvZiBUZXh0RW5jb2RlciA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgICAoKGVuY29kZXIpID0+IChzdHIpID0+IGVuY29kZXIuZW5jb2RlKHN0cikpKG5ldyBUZXh0RW5jb2RlcigpKSA6XG4gICAgICBhc3luYyAoc3RyKSA9PiBuZXcgVWludDhBcnJheShhd2FpdCBuZXcgUmVxdWVzdChzdHIpLmFycmF5QnVmZmVyKCkpXG4gICk7XG5cbiAgY29uc3Qgc3VwcG9ydHNSZXF1ZXN0U3RyZWFtID0gaXNSZXF1ZXN0U3VwcG9ydGVkICYmIGlzUmVhZGFibGVTdHJlYW1TdXBwb3J0ZWQgJiYgdGVzdCgoKSA9PiB7XG4gICAgbGV0IGR1cGxleEFjY2Vzc2VkID0gZmFsc2U7XG5cbiAgICBjb25zdCBoYXNDb250ZW50VHlwZSA9IG5ldyBSZXF1ZXN0KHBsYXRmb3JtLm9yaWdpbiwge1xuICAgICAgYm9keTogbmV3IFJlYWRhYmxlU3RyZWFtKCksXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGdldCBkdXBsZXgoKSB7XG4gICAgICAgIGR1cGxleEFjY2Vzc2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuICdoYWxmJztcbiAgICAgIH0sXG4gICAgfSkuaGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpO1xuXG4gICAgcmV0dXJuIGR1cGxleEFjY2Vzc2VkICYmICFoYXNDb250ZW50VHlwZTtcbiAgfSk7XG5cbiAgY29uc3Qgc3VwcG9ydHNSZXNwb25zZVN0cmVhbSA9IGlzUmVzcG9uc2VTdXBwb3J0ZWQgJiYgaXNSZWFkYWJsZVN0cmVhbVN1cHBvcnRlZCAmJlxuICAgIHRlc3QoKCkgPT4gdXRpbHMuaXNSZWFkYWJsZVN0cmVhbShuZXcgUmVzcG9uc2UoJycpLmJvZHkpKTtcblxuICBjb25zdCByZXNvbHZlcnMgPSB7XG4gICAgc3RyZWFtOiBzdXBwb3J0c1Jlc3BvbnNlU3RyZWFtICYmICgocmVzKSA9PiByZXMuYm9keSlcbiAgfTtcblxuICBpc0ZldGNoU3VwcG9ydGVkICYmICgoKCkgPT4ge1xuICAgIFsndGV4dCcsICdhcnJheUJ1ZmZlcicsICdibG9iJywgJ2Zvcm1EYXRhJywgJ3N0cmVhbSddLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAhcmVzb2x2ZXJzW3R5cGVdICYmIChyZXNvbHZlcnNbdHlwZV0gPSAocmVzLCBjb25maWcpID0+IHtcbiAgICAgICAgbGV0IG1ldGhvZCA9IHJlcyAmJiByZXNbdHlwZV07XG5cbiAgICAgICAgaWYgKG1ldGhvZCkge1xuICAgICAgICAgIHJldHVybiBtZXRob2QuY2FsbChyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoYFJlc3BvbnNlIHR5cGUgJyR7dHlwZX0nIGlzIG5vdCBzdXBwb3J0ZWRgLCBBeGlvc0Vycm9yLkVSUl9OT1RfU1VQUE9SVCwgY29uZmlnKTtcbiAgICAgIH0pXG4gICAgfSk7XG4gIH0pKCkpO1xuXG4gIGNvbnN0IGdldEJvZHlMZW5ndGggPSBhc3luYyAoYm9keSkgPT4ge1xuICAgIGlmIChib2R5ID09IG51bGwpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0Jsb2IoYm9keSkpIHtcbiAgICAgIHJldHVybiBib2R5LnNpemU7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzU3BlY0NvbXBsaWFudEZvcm0oYm9keSkpIHtcbiAgICAgIGNvbnN0IF9yZXF1ZXN0ID0gbmV3IFJlcXVlc3QocGxhdGZvcm0ub3JpZ2luLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gKGF3YWl0IF9yZXF1ZXN0LmFycmF5QnVmZmVyKCkpLmJ5dGVMZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpIHx8IHV0aWxzLmlzQXJyYXlCdWZmZXIoYm9keSkpIHtcbiAgICAgIHJldHVybiBib2R5LmJ5dGVMZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKGJvZHkpKSB7XG4gICAgICBib2R5ID0gYm9keSArICcnO1xuICAgIH1cblxuICAgIGlmICh1dGlscy5pc1N0cmluZyhib2R5KSkge1xuICAgICAgcmV0dXJuIChhd2FpdCBlbmNvZGVUZXh0KGJvZHkpKS5ieXRlTGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVCb2R5TGVuZ3RoID0gYXN5bmMgKGhlYWRlcnMsIGJvZHkpID0+IHtcbiAgICBjb25zdCBsZW5ndGggPSB1dGlscy50b0Zpbml0ZU51bWJlcihoZWFkZXJzLmdldENvbnRlbnRMZW5ndGgoKSk7XG5cbiAgICByZXR1cm4gbGVuZ3RoID09IG51bGwgPyBnZXRCb2R5TGVuZ3RoKGJvZHkpIDogbGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIGFzeW5jIChjb25maWcpID0+IHtcbiAgICBsZXQge1xuICAgICAgdXJsLFxuICAgICAgbWV0aG9kLFxuICAgICAgZGF0YSxcbiAgICAgIHNpZ25hbCxcbiAgICAgIGNhbmNlbFRva2VuLFxuICAgICAgdGltZW91dCxcbiAgICAgIG9uRG93bmxvYWRQcm9ncmVzcyxcbiAgICAgIG9uVXBsb2FkUHJvZ3Jlc3MsXG4gICAgICByZXNwb25zZVR5cGUsXG4gICAgICBoZWFkZXJzLFxuICAgICAgd2l0aENyZWRlbnRpYWxzID0gJ3NhbWUtb3JpZ2luJyxcbiAgICAgIGZldGNoT3B0aW9uc1xuICAgIH0gPSByZXNvbHZlQ29uZmlnKGNvbmZpZyk7XG5cbiAgICBsZXQgX2ZldGNoID0gZW52RmV0Y2ggfHwgZmV0Y2g7XG5cbiAgICByZXNwb25zZVR5cGUgPSByZXNwb25zZVR5cGUgPyAocmVzcG9uc2VUeXBlICsgJycpLnRvTG93ZXJDYXNlKCkgOiAndGV4dCc7XG5cbiAgICBsZXQgY29tcG9zZWRTaWduYWwgPSBjb21wb3NlU2lnbmFscyhbc2lnbmFsLCBjYW5jZWxUb2tlbiAmJiBjYW5jZWxUb2tlbi50b0Fib3J0U2lnbmFsKCldLCB0aW1lb3V0KTtcblxuICAgIGxldCByZXF1ZXN0ID0gbnVsbDtcblxuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gY29tcG9zZWRTaWduYWwgJiYgY29tcG9zZWRTaWduYWwudW5zdWJzY3JpYmUgJiYgKCgpID0+IHtcbiAgICAgIGNvbXBvc2VkU2lnbmFsLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG5cbiAgICBsZXQgcmVxdWVzdENvbnRlbnRMZW5ndGg7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICBvblVwbG9hZFByb2dyZXNzICYmIHN1cHBvcnRzUmVxdWVzdFN0cmVhbSAmJiBtZXRob2QgIT09ICdnZXQnICYmIG1ldGhvZCAhPT0gJ2hlYWQnICYmXG4gICAgICAgIChyZXF1ZXN0Q29udGVudExlbmd0aCA9IGF3YWl0IHJlc29sdmVCb2R5TGVuZ3RoKGhlYWRlcnMsIGRhdGEpKSAhPT0gMFxuICAgICAgKSB7XG4gICAgICAgIGxldCBfcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgICAgZHVwbGV4OiBcImhhbGZcIlxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgY29udGVudFR5cGVIZWFkZXI7XG5cbiAgICAgICAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZGF0YSkgJiYgKGNvbnRlbnRUeXBlSGVhZGVyID0gX3JlcXVlc3QuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSkge1xuICAgICAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoY29udGVudFR5cGVIZWFkZXIpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3JlcXVlc3QuYm9keSkge1xuICAgICAgICAgIGNvbnN0IFtvblByb2dyZXNzLCBmbHVzaF0gPSBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yKFxuICAgICAgICAgICAgcmVxdWVzdENvbnRlbnRMZW5ndGgsXG4gICAgICAgICAgICBwcm9ncmVzc0V2ZW50UmVkdWNlcihhc3luY0RlY29yYXRvcihvblVwbG9hZFByb2dyZXNzKSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZGF0YSA9IHRyYWNrU3RyZWFtKF9yZXF1ZXN0LmJvZHksIERFRkFVTFRfQ0hVTktfU0laRSwgb25Qcm9ncmVzcywgZmx1c2gpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghdXRpbHMuaXNTdHJpbmcod2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHMgPSB3aXRoQ3JlZGVudGlhbHMgPyAnaW5jbHVkZScgOiAnb21pdCc7XG4gICAgICB9XG5cbiAgICAgIC8vIENsb3VkZmxhcmUgV29ya2VycyB0aHJvd3Mgd2hlbiBjcmVkZW50aWFscyBhcmUgZGVmaW5lZFxuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jbG91ZGZsYXJlL3dvcmtlcmQvaXNzdWVzLzkwMlxuICAgICAgY29uc3QgaXNDcmVkZW50aWFsc1N1cHBvcnRlZCA9IGlzUmVxdWVzdFN1cHBvcnRlZCAmJiBcImNyZWRlbnRpYWxzXCIgaW4gUmVxdWVzdC5wcm90b3R5cGU7XG5cbiAgICAgIGNvbnN0IHJlc29sdmVkT3B0aW9ucyA9IHtcbiAgICAgICAgLi4uZmV0Y2hPcHRpb25zLFxuICAgICAgICBzaWduYWw6IGNvbXBvc2VkU2lnbmFsLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZC50b1VwcGVyQ2FzZSgpLFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLm5vcm1hbGl6ZSgpLnRvSlNPTigpLFxuICAgICAgICBib2R5OiBkYXRhLFxuICAgICAgICBkdXBsZXg6IFwiaGFsZlwiLFxuICAgICAgICBjcmVkZW50aWFsczogaXNDcmVkZW50aWFsc1N1cHBvcnRlZCA/IHdpdGhDcmVkZW50aWFscyA6IHVuZGVmaW5lZFxuICAgICAgfTtcblxuICAgICAgcmVxdWVzdCA9IGlzUmVxdWVzdFN1cHBvcnRlZCAmJiBuZXcgUmVxdWVzdCh1cmwsIHJlc29sdmVkT3B0aW9ucyk7XG5cbiAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IChpc1JlcXVlc3RTdXBwb3J0ZWQgPyBfZmV0Y2gocmVxdWVzdCwgZmV0Y2hPcHRpb25zKSA6IF9mZXRjaCh1cmwsIHJlc29sdmVkT3B0aW9ucykpO1xuXG4gICAgICBjb25zdCBpc1N0cmVhbVJlc3BvbnNlID0gc3VwcG9ydHNSZXNwb25zZVN0cmVhbSAmJiAocmVzcG9uc2VUeXBlID09PSAnc3RyZWFtJyB8fCByZXNwb25zZVR5cGUgPT09ICdyZXNwb25zZScpO1xuXG4gICAgICBpZiAoc3VwcG9ydHNSZXNwb25zZVN0cmVhbSAmJiAob25Eb3dubG9hZFByb2dyZXNzIHx8IChpc1N0cmVhbVJlc3BvbnNlICYmIHVuc3Vic2NyaWJlKSkpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuXG4gICAgICAgIFsnc3RhdHVzJywgJ3N0YXR1c1RleHQnLCAnaGVhZGVycyddLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgICAgb3B0aW9uc1twcm9wXSA9IHJlc3BvbnNlW3Byb3BdO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZXNwb25zZUNvbnRlbnRMZW5ndGggPSB1dGlscy50b0Zpbml0ZU51bWJlcihyZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC1sZW5ndGgnKSk7XG5cbiAgICAgICAgY29uc3QgW29uUHJvZ3Jlc3MsIGZsdXNoXSA9IG9uRG93bmxvYWRQcm9ncmVzcyAmJiBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yKFxuICAgICAgICAgIHJlc3BvbnNlQ29udGVudExlbmd0aCxcbiAgICAgICAgICBwcm9ncmVzc0V2ZW50UmVkdWNlcihhc3luY0RlY29yYXRvcihvbkRvd25sb2FkUHJvZ3Jlc3MpLCB0cnVlKVxuICAgICAgICApIHx8IFtdO1xuXG4gICAgICAgIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKFxuICAgICAgICAgIHRyYWNrU3RyZWFtKHJlc3BvbnNlLmJvZHksIERFRkFVTFRfQ0hVTktfU0laRSwgb25Qcm9ncmVzcywgKCkgPT4ge1xuICAgICAgICAgICAgZmx1c2ggJiYgZmx1c2goKTtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlICYmIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXNwb25zZVR5cGUgPSByZXNwb25zZVR5cGUgfHwgJ3RleHQnO1xuXG4gICAgICBsZXQgcmVzcG9uc2VEYXRhID0gYXdhaXQgcmVzb2x2ZXJzW3V0aWxzLmZpbmRLZXkocmVzb2x2ZXJzLCByZXNwb25zZVR5cGUpIHx8ICd0ZXh0J10ocmVzcG9uc2UsIGNvbmZpZyk7XG5cbiAgICAgICFpc1N0cmVhbVJlc3BvbnNlICYmIHVuc3Vic2NyaWJlICYmIHVuc3Vic2NyaWJlKCk7XG5cbiAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHtcbiAgICAgICAgICBkYXRhOiByZXNwb25zZURhdGEsXG4gICAgICAgICAgaGVhZGVyczogQXhpb3NIZWFkZXJzLmZyb20ocmVzcG9uc2UuaGVhZGVycyksXG4gICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgcmVxdWVzdFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHVuc3Vic2NyaWJlICYmIHVuc3Vic2NyaWJlKCk7XG5cbiAgICAgIGlmIChlcnIgJiYgZXJyLm5hbWUgPT09ICdUeXBlRXJyb3InICYmIC9Mb2FkIGZhaWxlZHxmZXRjaC9pLnRlc3QoZXJyLm1lc3NhZ2UpKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgbmV3IEF4aW9zRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBBeGlvc0Vycm9yLkVSUl9ORVRXT1JLLCBjb25maWcsIHJlcXVlc3QsIGVyciAmJiBlcnIucmVzcG9uc2UpLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhdXNlOiBlcnIuY2F1c2UgfHwgZXJyXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHRocm93IEF4aW9zRXJyb3IuZnJvbShlcnIsIGVyciAmJiBlcnIuY29kZSwgY29uZmlnLCByZXF1ZXN0LCBlcnIgJiYgZXJyLnJlc3BvbnNlKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3Qgc2VlZENhY2hlID0gbmV3IE1hcCgpO1xuXG5leHBvcnQgY29uc3QgZ2V0RmV0Y2ggPSAoY29uZmlnKSA9PiB7XG4gIGxldCBlbnYgPSAoY29uZmlnICYmIGNvbmZpZy5lbnYpIHx8IHt9O1xuICBjb25zdCB7ZmV0Y2gsIFJlcXVlc3QsIFJlc3BvbnNlfSA9IGVudjtcbiAgY29uc3Qgc2VlZHMgPSBbXG4gICAgUmVxdWVzdCwgUmVzcG9uc2UsIGZldGNoXG4gIF07XG5cbiAgbGV0IGxlbiA9IHNlZWRzLmxlbmd0aCwgaSA9IGxlbixcbiAgICBzZWVkLCB0YXJnZXQsIG1hcCA9IHNlZWRDYWNoZTtcblxuICB3aGlsZSAoaS0tKSB7XG4gICAgc2VlZCA9IHNlZWRzW2ldO1xuICAgIHRhcmdldCA9IG1hcC5nZXQoc2VlZCk7XG5cbiAgICB0YXJnZXQgPT09IHVuZGVmaW5lZCAmJiBtYXAuc2V0KHNlZWQsIHRhcmdldCA9IChpID8gbmV3IE1hcCgpIDogZmFjdG9yeShlbnYpKSlcblxuICAgIG1hcCA9IHRhcmdldDtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59O1xuXG5jb25zdCBhZGFwdGVyID0gZ2V0RmV0Y2goKTtcblxuZXhwb3J0IGRlZmF1bHQgYWRhcHRlcjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/adapters/fetch.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/adapters/xhr.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/axios/lib/adapters/xhr.js ***!
|
||
\************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _core_settle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/settle.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/settle.js\");\n/* harmony import */ var _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../defaults/transitional.js */ \"(app-pages-browser)/./node_modules/axios/lib/defaults/transitional.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../cancel/CanceledError.js */ \"(app-pages-browser)/./node_modules/axios/lib/cancel/CanceledError.js\");\n/* harmony import */ var _helpers_parseProtocol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../helpers/parseProtocol.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/parseProtocol.js\");\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../platform/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/index.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../helpers/progressEventReducer.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/progressEventReducer.js\");\n/* harmony import */ var _helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/resolveConfig.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/resolveConfig.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = (0,_helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(config);\n let requestData = _config.data;\n const requestHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n (0,_core_settle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Request aborted', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](msg, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ETIMEDOUT : _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n _utils_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_6__.progressEventReducer)(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_6__.progressEventReducer)(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"](null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = (0,_helpers_parseProtocol_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_config.url);\n\n if (protocol && _platform_index_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"].protocols.indexOf(protocol) === -1) {\n reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unsupported protocol ' + protocol + ':', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQWdDO0FBQ087QUFDd0I7QUFDaEI7QUFDUTtBQUNDO0FBQ1o7QUFDTztBQUNxQjtBQUNoQjs7QUFFeEQ7O0FBRUEsaUVBQWU7QUFDZjtBQUNBLG9CQUFvQixxRUFBYTtBQUNqQztBQUNBLDJCQUEyQiw2REFBWTtBQUN2QyxTQUFTLG9EQUFvRDtBQUM3RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0M7QUFDcEMsd0NBQXdDOztBQUV4Qzs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qiw2REFBWTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSwyREFBTTtBQUNaO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQiwyREFBVSxvQkFBb0IsMkRBQVU7O0FBRXpEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBLHVCQUF1QiwyREFBVSxNQUFNLDJEQUFVO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxpRUFBb0I7QUFDdkU7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJEQUFVO0FBQzNCO0FBQ0EsMkNBQTJDLDJEQUFVLGFBQWEsMkRBQVU7QUFDNUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxpREFBSztBQUNYO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsU0FBUyxpREFBSztBQUNkO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0QyxzRkFBb0I7QUFDaEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDLHNGQUFvQjs7QUFFNUQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxnRUFBYTtBQUN6RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIscUVBQWE7O0FBRWxDLG9CQUFvQiwwREFBUTtBQUM1QixpQkFBaUIsMkRBQVUsMkNBQTJDLDJEQUFVO0FBQ2hGO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcYWRhcHRlcnNcXHhoci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IHNldHRsZSBmcm9tICcuLi9jb3JlL3NldHRsZS5qcyc7XG5pbXBvcnQgdHJhbnNpdGlvbmFsRGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMvdHJhbnNpdGlvbmFsLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4uL2NvcmUvQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgQ2FuY2VsZWRFcnJvciBmcm9tICcuLi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyc7XG5pbXBvcnQgcGFyc2VQcm90b2NvbCBmcm9tICcuLi9oZWxwZXJzL3BhcnNlUHJvdG9jb2wuanMnO1xuaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4uL3BsYXRmb3JtL2luZGV4LmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSAnLi4vY29yZS9BeGlvc0hlYWRlcnMuanMnO1xuaW1wb3J0IHtwcm9ncmVzc0V2ZW50UmVkdWNlcn0gZnJvbSAnLi4vaGVscGVycy9wcm9ncmVzc0V2ZW50UmVkdWNlci5qcyc7XG5pbXBvcnQgcmVzb2x2ZUNvbmZpZyBmcm9tIFwiLi4vaGVscGVycy9yZXNvbHZlQ29uZmlnLmpzXCI7XG5cbmNvbnN0IGlzWEhSQWRhcHRlclN1cHBvcnRlZCA9IHR5cGVvZiBYTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGlzWEhSQWRhcHRlclN1cHBvcnRlZCAmJiBmdW5jdGlvbiAoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBkaXNwYXRjaFhoclJlcXVlc3QocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgY29uc3QgX2NvbmZpZyA9IHJlc29sdmVDb25maWcoY29uZmlnKTtcbiAgICBsZXQgcmVxdWVzdERhdGEgPSBfY29uZmlnLmRhdGE7XG4gICAgY29uc3QgcmVxdWVzdEhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShfY29uZmlnLmhlYWRlcnMpLm5vcm1hbGl6ZSgpO1xuICAgIGxldCB7cmVzcG9uc2VUeXBlLCBvblVwbG9hZFByb2dyZXNzLCBvbkRvd25sb2FkUHJvZ3Jlc3N9ID0gX2NvbmZpZztcbiAgICBsZXQgb25DYW5jZWxlZDtcbiAgICBsZXQgdXBsb2FkVGhyb3R0bGVkLCBkb3dubG9hZFRocm90dGxlZDtcbiAgICBsZXQgZmx1c2hVcGxvYWQsIGZsdXNoRG93bmxvYWQ7XG5cbiAgICBmdW5jdGlvbiBkb25lKCkge1xuICAgICAgZmx1c2hVcGxvYWQgJiYgZmx1c2hVcGxvYWQoKTsgLy8gZmx1c2ggZXZlbnRzXG4gICAgICBmbHVzaERvd25sb2FkICYmIGZsdXNoRG93bmxvYWQoKTsgLy8gZmx1c2ggZXZlbnRzXG5cbiAgICAgIF9jb25maWcuY2FuY2VsVG9rZW4gJiYgX2NvbmZpZy5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShvbkNhbmNlbGVkKTtcblxuICAgICAgX2NvbmZpZy5zaWduYWwgJiYgX2NvbmZpZy5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcbiAgICB9XG5cbiAgICBsZXQgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgcmVxdWVzdC5vcGVuKF9jb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksIF9jb25maWcudXJsLCB0cnVlKTtcblxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gX2NvbmZpZy50aW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gb25sb2FkZW5kKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIFByZXBhcmUgdGhlIHJlc3BvbnNlXG4gICAgICBjb25zdCByZXNwb25zZUhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShcbiAgICAgICAgJ2dldEFsbFJlc3BvbnNlSGVhZGVycycgaW4gcmVxdWVzdCAmJiByZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG4gICAgICApO1xuICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gIXJlc3BvbnNlVHlwZSB8fCByZXNwb25zZVR5cGUgPT09ICd0ZXh0JyB8fCByZXNwb25zZVR5cGUgPT09ICdqc29uJyA/XG4gICAgICAgIHJlcXVlc3QucmVzcG9uc2VUZXh0IDogcmVxdWVzdC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiByZXNwb25zZURhdGEsXG4gICAgICAgIHN0YXR1czogcmVxdWVzdC5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcXVlc3Quc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2VIZWFkZXJzLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIHNldHRsZShmdW5jdGlvbiBfcmVzb2x2ZSh2YWx1ZSkge1xuICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgZnVuY3Rpb24gX3JlamVjdChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIHJlc3BvbnNlKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCdvbmxvYWRlbmQnIGluIHJlcXVlc3QpIHtcbiAgICAgIC8vIFVzZSBvbmxvYWRlbmQgaWYgYXZhaWxhYmxlXG4gICAgICByZXF1ZXN0Lm9ubG9hZGVuZCA9IG9ubG9hZGVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGlzdGVuIGZvciByZWFkeSBzdGF0ZSB0byBlbXVsYXRlIG9ubG9hZGVuZFxuICAgICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVMb2FkKCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdC5yZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIHJlcXVlc3QgZXJyb3JlZCBvdXQgYW5kIHdlIGRpZG4ndCBnZXQgYSByZXNwb25zZSwgdGhpcyB3aWxsIGJlXG4gICAgICAgIC8vIGhhbmRsZWQgYnkgb25lcnJvciBpbnN0ZWFkXG4gICAgICAgIC8vIFdpdGggb25lIGV4Y2VwdGlvbjogcmVxdWVzdCB0aGF0IHVzaW5nIGZpbGU6IHByb3RvY29sLCBtb3N0IGJyb3dzZXJzXG4gICAgICAgIC8vIHdpbGwgcmV0dXJuIHN0YXR1cyBhcyAwIGV2ZW4gdGhvdWdoIGl0J3MgYSBzdWNjZXNzZnVsIHJlcXVlc3RcbiAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAwICYmICEocmVxdWVzdC5yZXNwb25zZVVSTCAmJiByZXF1ZXN0LnJlc3BvbnNlVVJMLmluZGV4T2YoJ2ZpbGU6JykgPT09IDApKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlYWR5c3RhdGUgaGFuZGxlciBpcyBjYWxsaW5nIGJlZm9yZSBvbmVycm9yIG9yIG9udGltZW91dCBoYW5kbGVycyxcbiAgICAgICAgLy8gc28gd2Ugc2hvdWxkIGNhbGwgb25sb2FkZW5kIG9uIHRoZSBuZXh0ICd0aWNrJ1xuICAgICAgICBzZXRUaW1lb3V0KG9ubG9hZGVuZCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBicm93c2VyIHJlcXVlc3QgY2FuY2VsbGF0aW9uIChhcyBvcHBvc2VkIHRvIGEgbWFudWFsIGNhbmNlbGxhdGlvbilcbiAgICByZXF1ZXN0Lm9uYWJvcnQgPSBmdW5jdGlvbiBoYW5kbGVBYm9ydCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcignUmVxdWVzdCBhYm9ydGVkJywgQXhpb3NFcnJvci5FQ09OTkFCT1JURUQsIGNvbmZpZywgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xuICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcihldmVudCkge1xuICAgICAgIC8vIEJyb3dzZXJzIGRlbGl2ZXIgYSBQcm9ncmVzc0V2ZW50IGluIFhIUiBvbmVycm9yXG4gICAgICAgLy8gKG1lc3NhZ2UgbWF5IGJlIGVtcHR5OyB3aGVuIHByZXNlbnQsIHN1cmZhY2UgaXQpXG4gICAgICAgLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9lcnJvcl9ldmVudFxuICAgICAgIGNvbnN0IG1zZyA9IGV2ZW50ICYmIGV2ZW50Lm1lc3NhZ2UgPyBldmVudC5tZXNzYWdlIDogJ05ldHdvcmsgRXJyb3InO1xuICAgICAgIGNvbnN0IGVyciA9IG5ldyBBeGlvc0Vycm9yKG1zZywgQXhpb3NFcnJvci5FUlJfTkVUV09SSywgY29uZmlnLCByZXF1ZXN0KTtcbiAgICAgICAvLyBhdHRhY2ggdGhlIHVuZGVybHlpbmcgZXZlbnQgZm9yIGNvbnN1bWVycyB3aG8gd2FudCBkZXRhaWxzXG4gICAgICAgZXJyLmV2ZW50ID0gZXZlbnQgfHwgbnVsbDtcbiAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuICAgIFxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgbGV0IHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBfY29uZmlnLnRpbWVvdXQgPyAndGltZW91dCBvZiAnICsgX2NvbmZpZy50aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJyA6ICd0aW1lb3V0IGV4Y2VlZGVkJztcbiAgICAgIGNvbnN0IHRyYW5zaXRpb25hbCA9IF9jb25maWcudHJhbnNpdGlvbmFsIHx8IHRyYW5zaXRpb25hbERlZmF1bHRzO1xuICAgICAgaWYgKF9jb25maWcudGltZW91dEVycm9yTWVzc2FnZSkge1xuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlID0gX2NvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlLFxuICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/IEF4aW9zRXJyb3IuRVRJTUVET1VUIDogQXhpb3NFcnJvci5FQ09OTkFCT1JURUQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgIHJlcXVlc3REYXRhID09PSB1bmRlZmluZWQgJiYgcmVxdWVzdEhlYWRlcnMuc2V0Q29udGVudFR5cGUobnVsbCk7XG5cbiAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycy50b0pTT04oKSwgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xuICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoX2NvbmZpZy53aXRoQ3JlZGVudGlhbHMpKSB7XG4gICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9ICEhX2NvbmZpZy53aXRoQ3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlc3BvbnNlVHlwZSB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmIChyZXNwb25zZVR5cGUgJiYgcmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gX2NvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmIChvbkRvd25sb2FkUHJvZ3Jlc3MpIHtcbiAgICAgIChbZG93bmxvYWRUaHJvdHRsZWQsIGZsdXNoRG93bmxvYWRdID0gcHJvZ3Jlc3NFdmVudFJlZHVjZXIob25Eb3dubG9hZFByb2dyZXNzLCB0cnVlKSk7XG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgZG93bmxvYWRUaHJvdHRsZWQpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKG9uVXBsb2FkUHJvZ3Jlc3MgJiYgcmVxdWVzdC51cGxvYWQpIHtcbiAgICAgIChbdXBsb2FkVGhyb3R0bGVkLCBmbHVzaFVwbG9hZF0gPSBwcm9ncmVzc0V2ZW50UmVkdWNlcihvblVwbG9hZFByb2dyZXNzKSk7XG5cbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdXBsb2FkVGhyb3R0bGVkKTtcblxuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVuZCcsIGZsdXNoVXBsb2FkKTtcbiAgICB9XG5cbiAgICBpZiAoX2NvbmZpZy5jYW5jZWxUb2tlbiB8fCBfY29uZmlnLnNpZ25hbCkge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG9uQ2FuY2VsZWQgPSBjYW5jZWwgPT4ge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KCFjYW5jZWwgfHwgY2FuY2VsLnR5cGUgPyBuZXcgQ2FuY2VsZWRFcnJvcihudWxsLCBjb25maWcsIHJlcXVlc3QpIDogY2FuY2VsKTtcbiAgICAgICAgcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIF9jb25maWcuY2FuY2VsVG9rZW4gJiYgX2NvbmZpZy5jYW5jZWxUb2tlbi5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG4gICAgICBpZiAoX2NvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgX2NvbmZpZy5zaWduYWwuYWJvcnRlZCA/IG9uQ2FuY2VsZWQoKSA6IF9jb25maWcuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSBwYXJzZVByb3RvY29sKF9jb25maWcudXJsKTtcblxuICAgIGlmIChwcm90b2NvbCAmJiBwbGF0Zm9ybS5wcm90b2NvbHMuaW5kZXhPZihwcm90b2NvbCkgPT09IC0xKSB7XG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ1Vuc3VwcG9ydGVkIHByb3RvY29sICcgKyBwcm90b2NvbCArICc6JywgQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsIGNvbmZpZykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuXG4gICAgLy8gU2VuZCB0aGUgcmVxdWVzdFxuICAgIHJlcXVlc3Quc2VuZChyZXF1ZXN0RGF0YSB8fCBudWxsKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/adapters/xhr.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/axios.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/axios/lib/axios.js ***!
|
||
\*****************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _helpers_bind_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers/bind.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/bind.js\");\n/* harmony import */ var _core_Axios_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/Axios.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/Axios.js\");\n/* harmony import */ var _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./core/mergeConfig.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/mergeConfig.js\");\n/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./defaults/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/defaults/index.js\");\n/* harmony import */ var _helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./helpers/formDataToJSON.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/formDataToJSON.js\");\n/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cancel/CanceledError.js */ \"(app-pages-browser)/./node_modules/axios/lib/cancel/CanceledError.js\");\n/* harmony import */ var _cancel_CancelToken_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cancel/CancelToken.js */ \"(app-pages-browser)/./node_modules/axios/lib/cancel/CancelToken.js\");\n/* harmony import */ var _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./cancel/isCancel.js */ \"(app-pages-browser)/./node_modules/axios/lib/cancel/isCancel.js\");\n/* harmony import */ var _env_data_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./env/data.js */ \"(app-pages-browser)/./node_modules/axios/lib/env/data.js\");\n/* harmony import */ var _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./helpers/toFormData.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/toFormData.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./core/AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _helpers_spread_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./helpers/spread.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/spread.js\");\n/* harmony import */ var _helpers_isAxiosError_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./helpers/isAxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/isAxiosError.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./core/AxiosHeaders.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./adapters/adapters.js */ \"(app-pages-browser)/./node_modules/axios/lib/adapters/adapters.js\");\n/* harmony import */ var _helpers_HttpStatusCode_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./helpers/HttpStatusCode.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/HttpStatusCode.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new _core_Axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](defaultConfig);\n const instance = (0,_helpers_bind_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_core_Axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype.request, context);\n\n // Copy axios.prototype to instance\n _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(instance, _core_Axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance((0,_core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(_defaults_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = _core_Axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n\n// Expose Cancel & CancelToken\naxios.CanceledError = _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\naxios.CancelToken = _cancel_CancelToken_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\naxios.isCancel = _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\naxios.VERSION = _env_data_js__WEBPACK_IMPORTED_MODULE_8__.VERSION;\naxios.toFormData = _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\n\n// Expose AxiosError class\naxios.AxiosError = _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = _helpers_spread_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n\n// Expose isAxiosError\naxios.isAxiosError = _helpers_isAxiosError_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"];\n\n// Expose mergeConfig\naxios.mergeConfig = _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n\naxios.AxiosHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"];\n\naxios.formToJSON = thing => (0,_helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(_utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"].getAdapter;\n\naxios.HttpStatusCode = _helpers_HttpStatusCode_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"];\n\naxios.default = axios;\n\n// this module should only have a default export\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (axios);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWE7O0FBRWtCO0FBQ007QUFDRDtBQUNZO0FBQ0w7QUFDYztBQUNIO0FBQ0o7QUFDTjtBQUNOO0FBQ1c7QUFDSDtBQUNMO0FBQ1k7QUFDSDtBQUNKO0FBQ1c7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0Esc0JBQXNCLHNEQUFLO0FBQzNCLG1CQUFtQiw0REFBSSxDQUFDLHNEQUFLOztBQUU3QjtBQUNBLEVBQUUsaURBQUssa0JBQWtCLHNEQUFLLHNCQUFzQixpQkFBaUI7O0FBRXJFO0FBQ0EsRUFBRSxpREFBSyxrQ0FBa0MsaUJBQWlCOztBQUUxRDtBQUNBO0FBQ0EsMEJBQTBCLGdFQUFXO0FBQ3JDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIsMERBQVE7O0FBRXJDO0FBQ0EsY0FBYyxzREFBSzs7QUFFbkI7QUFDQSxzQkFBc0IsZ0VBQWE7QUFDbkMsb0JBQW9CLDhEQUFXO0FBQy9CLGlCQUFpQiwyREFBUTtBQUN6QixnQkFBZ0IsaURBQU87QUFDdkIsbUJBQW1CLDhEQUFVOztBQUU3QjtBQUNBLG1CQUFtQiw0REFBVTs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLDJEQUFNOztBQUVyQjtBQUNBLHFCQUFxQixpRUFBWTs7QUFFakM7QUFDQSxvQkFBb0IsNERBQVc7O0FBRS9CLHFCQUFxQiw4REFBWTs7QUFFakMsNEJBQTRCLHVFQUFjLENBQUMsaURBQUs7O0FBRWhELG1CQUFtQiw4REFBUTs7QUFFM0IsdUJBQXVCLG1FQUFjOztBQUVyQzs7QUFFQTtBQUNBLGlFQUFlLEtBQUsiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGF4aW9zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMuanMnO1xuaW1wb3J0IGJpbmQgZnJvbSAnLi9oZWxwZXJzL2JpbmQuanMnO1xuaW1wb3J0IEF4aW9zIGZyb20gJy4vY29yZS9BeGlvcy5qcyc7XG5pbXBvcnQgbWVyZ2VDb25maWcgZnJvbSAnLi9jb3JlL21lcmdlQ29uZmlnLmpzJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuL2RlZmF1bHRzL2luZGV4LmpzJztcbmltcG9ydCBmb3JtRGF0YVRvSlNPTiBmcm9tICcuL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMnO1xuaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSAnLi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyc7XG5pbXBvcnQgQ2FuY2VsVG9rZW4gZnJvbSAnLi9jYW5jZWwvQ2FuY2VsVG9rZW4uanMnO1xuaW1wb3J0IGlzQ2FuY2VsIGZyb20gJy4vY2FuY2VsL2lzQ2FuY2VsLmpzJztcbmltcG9ydCB7VkVSU0lPTn0gZnJvbSAnLi9lbnYvZGF0YS5qcyc7XG5pbXBvcnQgdG9Gb3JtRGF0YSBmcm9tICcuL2hlbHBlcnMvdG9Gb3JtRGF0YS5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuL2NvcmUvQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgc3ByZWFkIGZyb20gJy4vaGVscGVycy9zcHJlYWQuanMnO1xuaW1wb3J0IGlzQXhpb3NFcnJvciBmcm9tICcuL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSBcIi4vY29yZS9BeGlvc0hlYWRlcnMuanNcIjtcbmltcG9ydCBhZGFwdGVycyBmcm9tICcuL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzJztcbmltcG9ydCBIdHRwU3RhdHVzQ29kZSBmcm9tICcuL2hlbHBlcnMvSHR0cFN0YXR1c0NvZGUuanMnO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKlxuICogQHJldHVybnMge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5mdW5jdGlvbiBjcmVhdGVJbnN0YW5jZShkZWZhdWx0Q29uZmlnKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQXhpb3MoZGVmYXVsdENvbmZpZyk7XG4gIGNvbnN0IGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQsIHthbGxPd25LZXlzOiB0cnVlfSk7XG5cbiAgLy8gQ29weSBjb250ZXh0IHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgY29udGV4dCwgbnVsbCwge2FsbE93bktleXM6IHRydWV9KTtcblxuICAvLyBGYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2VzXG4gIGluc3RhbmNlLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpbnN0YW5jZUNvbmZpZykge1xuICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhkZWZhdWx0Q29uZmlnLCBpbnN0YW5jZUNvbmZpZykpO1xuICB9O1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG5jb25zdCBheGlvcyA9IGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRzKTtcblxuLy8gRXhwb3NlIEF4aW9zIGNsYXNzIHRvIGFsbG93IGNsYXNzIGluaGVyaXRhbmNlXG5heGlvcy5BeGlvcyA9IEF4aW9zO1xuXG4vLyBFeHBvc2UgQ2FuY2VsICYgQ2FuY2VsVG9rZW5cbmF4aW9zLkNhbmNlbGVkRXJyb3IgPSBDYW5jZWxlZEVycm9yO1xuYXhpb3MuQ2FuY2VsVG9rZW4gPSBDYW5jZWxUb2tlbjtcbmF4aW9zLmlzQ2FuY2VsID0gaXNDYW5jZWw7XG5heGlvcy5WRVJTSU9OID0gVkVSU0lPTjtcbmF4aW9zLnRvRm9ybURhdGEgPSB0b0Zvcm1EYXRhO1xuXG4vLyBFeHBvc2UgQXhpb3NFcnJvciBjbGFzc1xuYXhpb3MuQXhpb3NFcnJvciA9IEF4aW9zRXJyb3I7XG5cbi8vIGFsaWFzIGZvciBDYW5jZWxlZEVycm9yIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5heGlvcy5DYW5jZWwgPSBheGlvcy5DYW5jZWxlZEVycm9yO1xuXG4vLyBFeHBvc2UgYWxsL3NwcmVhZFxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuXG5heGlvcy5zcHJlYWQgPSBzcHJlYWQ7XG5cbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcbmF4aW9zLmlzQXhpb3NFcnJvciA9IGlzQXhpb3NFcnJvcjtcblxuLy8gRXhwb3NlIG1lcmdlQ29uZmlnXG5heGlvcy5tZXJnZUNvbmZpZyA9IG1lcmdlQ29uZmlnO1xuXG5heGlvcy5BeGlvc0hlYWRlcnMgPSBBeGlvc0hlYWRlcnM7XG5cbmF4aW9zLmZvcm1Ub0pTT04gPSB0aGluZyA9PiBmb3JtRGF0YVRvSlNPTih1dGlscy5pc0hUTUxGb3JtKHRoaW5nKSA/IG5ldyBGb3JtRGF0YSh0aGluZykgOiB0aGluZyk7XG5cbmF4aW9zLmdldEFkYXB0ZXIgPSBhZGFwdGVycy5nZXRBZGFwdGVyO1xuXG5heGlvcy5IdHRwU3RhdHVzQ29kZSA9IEh0dHBTdGF0dXNDb2RlO1xuXG5heGlvcy5kZWZhdWx0ID0gYXhpb3M7XG5cbi8vIHRoaXMgbW9kdWxlIHNob3VsZCBvbmx5IGhhdmUgYSBkZWZhdWx0IGV4cG9ydFxuZXhwb3J0IGRlZmF1bHQgYXhpb3NcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/axios.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/cancel/CancelToken.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/axios/lib/cancel/CancelToken.js ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _CanceledError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CanceledError.js */ \"(app-pages-browser)/./node_modules/axios/lib/cancel/CanceledError.js\");\n\n\n\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new _CanceledError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CancelToken);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWE7O0FBRWtDOztBQUUvQztBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLHlEQUFhO0FBQ3RDO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFdBQVcsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcY2FuY2VsXFxDYW5jZWxUb2tlbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4vQ2FuY2VsZWRFcnJvci5qcyc7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBleGVjdXRvciBUaGUgZXhlY3V0b3IgZnVuY3Rpb24uXG4gKlxuICogQHJldHVybnMge0NhbmNlbFRva2VufVxuICovXG5jbGFzcyBDYW5jZWxUb2tlbiB7XG4gIGNvbnN0cnVjdG9yKGV4ZWN1dG9yKSB7XG4gICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIGxldCByZXNvbHZlUHJvbWlzZTtcblxuICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VFeGVjdXRvcihyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b2tlbiA9IHRoaXM7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuKGNhbmNlbCA9PiB7XG4gICAgICBpZiAoIXRva2VuLl9saXN0ZW5lcnMpIHJldHVybjtcblxuICAgICAgbGV0IGkgPSB0b2tlbi5fbGlzdGVuZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgdG9rZW4uX2xpc3RlbmVyc1tpXShjYW5jZWwpO1xuICAgICAgfVxuICAgICAgdG9rZW4uX2xpc3RlbmVycyA9IG51bGw7XG4gICAgfSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuID0gb25mdWxmaWxsZWQgPT4ge1xuICAgICAgbGV0IF9yZXNvbHZlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgdG9rZW4uc3Vic2NyaWJlKHJlc29sdmUpO1xuICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB9KS50aGVuKG9uZnVsZmlsbGVkKTtcblxuICAgICAgcHJvbWlzZS5jYW5jZWwgPSBmdW5jdGlvbiByZWplY3QoKSB7XG4gICAgICAgIHRva2VuLnVuc3Vic2NyaWJlKF9yZXNvbHZlKTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG5cbiAgICBleGVjdXRvcihmdW5jdGlvbiBjYW5jZWwobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KSB7XG4gICAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAgIC8vIENhbmNlbGxhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRva2VuLnJlYXNvbiA9IG5ldyBDYW5jZWxlZEVycm9yKG1lc3NhZ2UsIGNvbmZpZywgcmVxdWVzdCk7XG4gICAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93cyBhIGBDYW5jZWxlZEVycm9yYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICAgKi9cbiAgdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICAgIHRocm93IHRoaXMucmVhc29uO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcbiAgICovXG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgICBsaXN0ZW5lcih0aGlzLnJlYXNvbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xpc3RlbmVycykge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN1YnNjcmliZSBmcm9tIHRoZSBjYW5jZWwgc2lnbmFsXG4gICAqL1xuXG4gIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgdG9BYm9ydFNpZ25hbCgpIHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgY29uc3QgYWJvcnQgPSAoZXJyKSA9PiB7XG4gICAgICBjb250cm9sbGVyLmFib3J0KGVycik7XG4gICAgfTtcblxuICAgIHRoaXMuc3Vic2NyaWJlKGFib3J0KTtcblxuICAgIGNvbnRyb2xsZXIuc2lnbmFsLnVuc3Vic2NyaWJlID0gKCkgPT4gdGhpcy51bnN1YnNjcmliZShhYm9ydCk7XG5cbiAgICByZXR1cm4gY29udHJvbGxlci5zaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICAgKiBjYW5jZWxzIHRoZSBgQ2FuY2VsVG9rZW5gLlxuICAgKi9cbiAgc3RhdGljIHNvdXJjZSgpIHtcbiAgICBsZXQgY2FuY2VsO1xuICAgIGNvbnN0IHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICAgIGNhbmNlbCA9IGM7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuLFxuICAgICAgY2FuY2VsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYW5jZWxUb2tlbjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/cancel/CancelToken.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/cancel/CanceledError.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/axios/lib/cancel/CanceledError.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n\n\n\n\nclass CanceledError extends _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CanceledError);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbGVkRXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBYTs7QUFFa0M7O0FBRS9DLDRCQUE0QiwyREFBVTtBQUN0QztBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEIsYUFBYSxTQUFTO0FBQ3RCLGFBQWEsU0FBUztBQUN0QjtBQUNBLGVBQWUsZUFBZTtBQUM5QjtBQUNBO0FBQ0Esa0RBQWtELDJEQUFVO0FBQzVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcY2FuY2VsXFxDYW5jZWxlZEVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcblxuY2xhc3MgQ2FuY2VsZWRFcnJvciBleHRlbmRzIEF4aW9zRXJyb3Ige1xuICAvKipcbiAgICogQSBgQ2FuY2VsZWRFcnJvcmAgaXMgYW4gb2JqZWN0IHRoYXQgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGNhbmNlbGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7T2JqZWN0PX0gY29uZmlnIFRoZSBjb25maWcuXG4gICAqIEBwYXJhbSB7T2JqZWN0PX0gcmVxdWVzdCBUaGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybnMge0NhbmNlbGVkRXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICAgKi9cbiAgY29uc3RydWN0b3IobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KSB7XG4gICAgc3VwZXIobWVzc2FnZSA9PSBudWxsID8gJ2NhbmNlbGVkJyA6IG1lc3NhZ2UsIEF4aW9zRXJyb3IuRVJSX0NBTkNFTEVELCBjb25maWcsIHJlcXVlc3QpO1xuICAgIHRoaXMubmFtZSA9ICdDYW5jZWxlZEVycm9yJztcbiAgICB0aGlzLl9fQ0FOQ0VMX18gPSB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhbmNlbGVkRXJyb3I7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/cancel/CanceledError.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/cancel/isCancel.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/axios/lib/cancel/isCancel.js ***!
|
||
\***************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ isCancel)\n/* harmony export */ });\n\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBYTs7QUFFRTtBQUNmO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGNhbmNlbFxcaXNDYW5jZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0NhbmNlbCh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX19DQU5DRUxfXyk7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/cancel/isCancel.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/core/Axios.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/axios/lib/core/Axios.js ***!
|
||
\**********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../helpers/buildURL.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/buildURL.js\");\n/* harmony import */ var _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./InterceptorManager.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/InterceptorManager.js\");\n/* harmony import */ var _dispatchRequest_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dispatchRequest.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/dispatchRequest.js\");\n/* harmony import */ var _mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mergeConfig.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/mergeConfig.js\");\n/* harmony import */ var _buildFullPath_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./buildFullPath.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/buildFullPath.js\");\n/* harmony import */ var _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/validator.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/validator.js\");\n/* harmony import */ var _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AxiosHeaders.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../defaults/transitional.js */ \"(app-pages-browser)/./node_modules/axios/lib/defaults/transitional.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst validators = _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](),\n response: new _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = (0,_mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && _utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].merge(\n headers.common,\n headers[config.method]\n );\n\n headers && _utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n const legacyInterceptorReqResOrdering = transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [_dispatchRequest_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = _dispatchRequest_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = (0,_mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this.defaults, config);\n const fullPath = (0,_buildFullPath_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(config.baseURL, config.url, config.allowAbsoluteUrls);\n return (0,_helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\n_utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request((0,_mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\n_utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request((0,_mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Axios);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQWE7O0FBRW1CO0FBQ2M7QUFDVztBQUNOO0FBQ1I7QUFDSTtBQUNDO0FBQ0g7QUFDa0I7O0FBRS9ELG1CQUFtQiw2REFBUzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOERBQWtCO0FBQ3JDLG9CQUFvQiw4REFBa0I7QUFDdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGVBQWU7QUFDNUIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQSxhQUFhLDJEQUFXOztBQUV4QixXQUFXLHlDQUF5Qzs7QUFFcEQ7QUFDQSxNQUFNLDZEQUFTO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxVQUFVLGlEQUFLO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLFFBQVEsNkRBQVM7QUFDakI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBLElBQUksNkRBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0Esb0NBQW9DLGlEQUFLO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLGlEQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHdEQUFZOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxrREFBa0QsaUVBQW9CO0FBQ3RFOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsMkRBQWU7QUFDcEM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0IsMkRBQWU7QUFDL0IsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGFBQWEsMkRBQVc7QUFDeEIscUJBQXFCLDZEQUFhO0FBQ2xDLFdBQVcsZ0VBQVE7QUFDbkI7QUFDQTs7QUFFQTtBQUNBLGlEQUFLO0FBQ0w7QUFDQTtBQUNBLHdCQUF3QiwyREFBVyxhQUFhO0FBQ2hEO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsS0FBSztBQUNMO0FBQ0EsQ0FBQzs7QUFFRCxpREFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMkRBQVcsYUFBYTtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxVQUFVLElBQUk7QUFDZDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVELGlFQUFlLEtBQUssRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcY29yZVxcQXhpb3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IGJ1aWxkVVJMIGZyb20gJy4uL2hlbHBlcnMvYnVpbGRVUkwuanMnO1xuaW1wb3J0IEludGVyY2VwdG9yTWFuYWdlciBmcm9tICcuL0ludGVyY2VwdG9yTWFuYWdlci5qcyc7XG5pbXBvcnQgZGlzcGF0Y2hSZXF1ZXN0IGZyb20gJy4vZGlzcGF0Y2hSZXF1ZXN0LmpzJztcbmltcG9ydCBtZXJnZUNvbmZpZyBmcm9tICcuL21lcmdlQ29uZmlnLmpzJztcbmltcG9ydCBidWlsZEZ1bGxQYXRoIGZyb20gJy4vYnVpbGRGdWxsUGF0aC5qcyc7XG5pbXBvcnQgdmFsaWRhdG9yIGZyb20gJy4uL2hlbHBlcnMvdmFsaWRhdG9yLmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSAnLi9BeGlvc0hlYWRlcnMuanMnO1xuaW1wb3J0IHRyYW5zaXRpb25hbERlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzL3RyYW5zaXRpb25hbC5qcyc7XG5cbmNvbnN0IHZhbGlkYXRvcnMgPSB2YWxpZGF0b3IudmFsaWRhdG9ycztcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaW5zdGFuY2VDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuY2xhc3MgQXhpb3Mge1xuICBjb25zdHJ1Y3RvcihpbnN0YW5jZUNvbmZpZykge1xuICAgIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZyB8fCB7fTtcbiAgICB0aGlzLmludGVyY2VwdG9ycyA9IHtcbiAgICAgIHJlcXVlc3Q6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKSxcbiAgICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIGEgcmVxdWVzdFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGNvbmZpZ09yVXJsIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAgICogQHBhcmFtIHs/T2JqZWN0fSBjb25maWdcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICAgKi9cbiAgYXN5bmMgcmVxdWVzdChjb25maWdPclVybCwgY29uZmlnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9yZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGxldCBkdW1teSA9IHt9O1xuXG4gICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlID8gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZHVtbXkpIDogKGR1bW15ID0gbmV3IEVycm9yKCkpO1xuXG4gICAgICAgIC8vIHNsaWNlIG9mZiB0aGUgRXJyb3I6IC4uLiBsaW5lXG4gICAgICAgIGNvbnN0IHN0YWNrID0gZHVtbXkuc3RhY2sgPyBkdW1teS5zdGFjay5yZXBsYWNlKC9eLitcXG4vLCAnJykgOiAnJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIWVyci5zdGFjaykge1xuICAgICAgICAgICAgZXJyLnN0YWNrID0gc3RhY2s7XG4gICAgICAgICAgICAvLyBtYXRjaCB3aXRob3V0IHRoZSAyIHRvcCBzdGFjayBsaW5lc1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhY2sgJiYgIVN0cmluZyhlcnIuc3RhY2spLmVuZHNXaXRoKHN0YWNrLnJlcGxhY2UoL14uK1xcbi4rXFxuLywgJycpKSkge1xuICAgICAgICAgICAgZXJyLnN0YWNrICs9ICdcXG4nICsgc3RhY2tcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpZ25vcmUgdGhlIGNhc2Ugd2hlcmUgXCJzdGFja1wiIGlzIGFuIHVuLXdyaXRhYmxlIHByb3BlcnR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIF9yZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICAvLyBBbGxvdyBmb3IgYXhpb3MoJ2V4YW1wbGUvdXJsJ1ssIGNvbmZpZ10pIGEgbGEgZmV0Y2ggQVBJXG4gICAgaWYgKHR5cGVvZiBjb25maWdPclVybCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgICAgIGNvbmZpZy51cmwgPSBjb25maWdPclVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnID0gY29uZmlnT3JVcmwgfHwge307XG4gICAgfVxuXG4gICAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcblxuICAgIGNvbnN0IHt0cmFuc2l0aW9uYWwsIHBhcmFtc1NlcmlhbGl6ZXIsIGhlYWRlcnN9ID0gY29uZmlnO1xuXG4gICAgaWYgKHRyYW5zaXRpb25hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyh0cmFuc2l0aW9uYWwsIHtcbiAgICAgICAgc2lsZW50SlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICAgIGZvcmNlZEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgICBjbGFyaWZ5VGltZW91dEVycm9yOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgICBsZWdhY3lJbnRlcmNlcHRvclJlcVJlc09yZGVyaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pXG4gICAgICB9LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtc1NlcmlhbGl6ZXIgIT0gbnVsbCkge1xuICAgICAgaWYgKHV0aWxzLmlzRnVuY3Rpb24ocGFyYW1zU2VyaWFsaXplcikpIHtcbiAgICAgICAgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIgPSB7XG4gICAgICAgICAgc2VyaWFsaXplOiBwYXJhbXNTZXJpYWxpemVyXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHBhcmFtc1NlcmlhbGl6ZXIsIHtcbiAgICAgICAgICBlbmNvZGU6IHZhbGlkYXRvcnMuZnVuY3Rpb24sXG4gICAgICAgICAgc2VyaWFsaXplOiB2YWxpZGF0b3JzLmZ1bmN0aW9uXG4gICAgICAgIH0sIHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCBjb25maWcuYWxsb3dBYnNvbHV0ZVVybHNcbiAgICBpZiAoY29uZmlnLmFsbG93QWJzb2x1dGVVcmxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdHMuYWxsb3dBYnNvbHV0ZVVybHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uZmlnLmFsbG93QWJzb2x1dGVVcmxzID0gdGhpcy5kZWZhdWx0cy5hbGxvd0Fic29sdXRlVXJscztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnLmFsbG93QWJzb2x1dGVVcmxzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyhjb25maWcsIHtcbiAgICAgIGJhc2VVcmw6IHZhbGlkYXRvcnMuc3BlbGxpbmcoJ2Jhc2VVUkwnKSxcbiAgICAgIHdpdGhYc3JmVG9rZW46IHZhbGlkYXRvcnMuc3BlbGxpbmcoJ3dpdGhYU1JGVG9rZW4nKVxuICAgIH0sIHRydWUpO1xuXG4gICAgLy8gU2V0IGNvbmZpZy5tZXRob2RcbiAgICBjb25maWcubWV0aG9kID0gKGNvbmZpZy5tZXRob2QgfHwgdGhpcy5kZWZhdWx0cy5tZXRob2QgfHwgJ2dldCcpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBGbGF0dGVuIGhlYWRlcnNcbiAgICBsZXQgY29udGV4dEhlYWRlcnMgPSBoZWFkZXJzICYmIHV0aWxzLm1lcmdlKFxuICAgICAgaGVhZGVycy5jb21tb24sXG4gICAgICBoZWFkZXJzW2NvbmZpZy5tZXRob2RdXG4gICAgKTtcblxuICAgIGhlYWRlcnMgJiYgdXRpbHMuZm9yRWFjaChcbiAgICAgIFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJywgJ2NvbW1vbiddLFxuICAgICAgKG1ldGhvZCkgPT4ge1xuICAgICAgICBkZWxldGUgaGVhZGVyc1ttZXRob2RdO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25maWcuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5jb25jYXQoY29udGV4dEhlYWRlcnMsIGhlYWRlcnMpO1xuXG4gICAgLy8gZmlsdGVyIG91dCBza2lwcGVkIGludGVyY2VwdG9yc1xuICAgIGNvbnN0IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluID0gW107XG4gICAgbGV0IHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHRydWU7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uIHVuc2hpZnRSZXF1ZXN0SW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgICBpZiAodHlwZW9mIGludGVyY2VwdG9yLnJ1bldoZW4gPT09ICdmdW5jdGlvbicgJiYgaW50ZXJjZXB0b3IucnVuV2hlbihjb25maWcpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyAmJiBpbnRlcmNlcHRvci5zeW5jaHJvbm91cztcblxuICAgICAgY29uc3QgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbCB8fCB0cmFuc2l0aW9uYWxEZWZhdWx0cztcbiAgICAgIGNvbnN0IGxlZ2FjeUludGVyY2VwdG9yUmVxUmVzT3JkZXJpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLmxlZ2FjeUludGVyY2VwdG9yUmVxUmVzT3JkZXJpbmc7XG5cbiAgICAgIGlmIChsZWdhY3lJbnRlcmNlcHRvclJlcVJlc09yZGVyaW5nKSB7XG4gICAgICAgIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5wdXNoKGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluID0gW107XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbiBwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICAgIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5wdXNoKGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgbGV0IHByb21pc2U7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBsZW47XG5cbiAgICBpZiAoIXN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycykge1xuICAgICAgY29uc3QgY2hhaW4gPSBbZGlzcGF0Y2hSZXF1ZXN0LmJpbmQodGhpcyksIHVuZGVmaW5lZF07XG4gICAgICBjaGFpbi51bnNoaWZ0KC4uLnJlcXVlc3RJbnRlcmNlcHRvckNoYWluKTtcbiAgICAgIGNoYWluLnB1c2goLi4ucmVzcG9uc2VJbnRlcmNlcHRvckNoYWluKTtcbiAgICAgIGxlbiA9IGNoYWluLmxlbmd0aDtcblxuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjb25maWcpO1xuXG4gICAgICB3aGlsZSAoaSA8IGxlbikge1xuICAgICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluW2krK10sIGNoYWluW2krK10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICBsZW4gPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5sZW5ndGg7XG5cbiAgICBsZXQgbmV3Q29uZmlnID0gY29uZmlnO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIGNvbnN0IG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW5baSsrXTtcbiAgICAgIGNvbnN0IG9uUmVqZWN0ZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbltpKytdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3Q29uZmlnID0gb25GdWxmaWxsZWQobmV3Q29uZmlnKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uUmVqZWN0ZWQuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0LmNhbGwodGhpcywgbmV3Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICBpID0gMDtcbiAgICBsZW4gPSByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4ocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluW2krK10sIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbltpKytdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIGdldFVyaShjb25maWcpIHtcbiAgICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCwgY29uZmlnLmFsbG93QWJzb2x1dGVVcmxzKTtcbiAgICByZXR1cm4gYnVpbGRVUkwoZnVsbFBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKTtcbiAgfVxufVxuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybCxcbiAgICAgIGRhdGE6IChjb25maWcgfHwge30pLmRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cblxuICBmdW5jdGlvbiBnZW5lcmF0ZUhUVFBNZXRob2QoaXNGb3JtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGh0dHBNZXRob2QodXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogaXNGb3JtID8ge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSdcbiAgICAgICAgfSA6IHt9LFxuICAgICAgICB1cmwsXG4gICAgICAgIGRhdGFcbiAgICAgIH0pKTtcbiAgICB9O1xuICB9XG5cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBnZW5lcmF0ZUhUVFBNZXRob2QoKTtcblxuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kICsgJ0Zvcm0nXSA9IGdlbmVyYXRlSFRUUE1ldGhvZCh0cnVlKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBBeGlvcztcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/core/Axios.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/axios/lib/core/AxiosError.js ***!
|
||
\***************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n\n\n\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AxiosError);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvc0Vycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWE7O0FBRW1COztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkIsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkI7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlEQUFLO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsVUFBVSxFQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxjb3JlXFxBeGlvc0Vycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcblxuY2xhc3MgQXhpb3NFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBzdGF0aWMgZnJvbShlcnJvciwgY29kZSwgY29uZmlnLCByZXF1ZXN0LCByZXNwb25zZSwgY3VzdG9tUHJvcHMpIHtcbiAgICAgICAgY29uc3QgYXhpb3NFcnJvciA9IG5ldyBBeGlvc0Vycm9yKGVycm9yLm1lc3NhZ2UsIGNvZGUgfHwgZXJyb3IuY29kZSwgY29uZmlnLCByZXF1ZXN0LCByZXNwb25zZSk7XG4gICAgICAgIGF4aW9zRXJyb3IuY2F1c2UgPSBlcnJvcjtcbiAgICAgICAgYXhpb3NFcnJvci5uYW1lID0gZXJyb3IubmFtZTtcbiAgICAgICAgY3VzdG9tUHJvcHMgJiYgT2JqZWN0LmFzc2lnbihheGlvc0Vycm9yLCBjdXN0b21Qcm9wcyk7XG4gICAgICAgIHJldHVybiBheGlvc0Vycm9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtjb25maWddIFRoZSBjb25maWcuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdBeGlvc0Vycm9yJztcbiAgICAgICAgdGhpcy5pc0F4aW9zRXJyb3IgPSB0cnVlO1xuICAgICAgICBjb2RlICYmICh0aGlzLmNvZGUgPSBjb2RlKTtcbiAgICAgICAgY29uZmlnICYmICh0aGlzLmNvbmZpZyA9IGNvbmZpZyk7XG4gICAgICAgIHJlcXVlc3QgJiYgKHRoaXMucmVxdWVzdCA9IHJlcXVlc3QpO1xuICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLy8gU3RhbmRhcmRcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIC8vIE1pY3Jvc29mdFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBudW1iZXI6IHRoaXMubnVtYmVyLFxuICAgICAgICAgICAgLy8gTW96aWxsYVxuICAgICAgICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXG4gICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG4gICAgICAgICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxuICAgICAgICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICAgICAgICAvLyBBeGlvc1xuICAgICAgICAgICAgY29uZmlnOiB1dGlscy50b0pTT05PYmplY3QodGhpcy5jb25maWcpLFxuICAgICAgICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbi8vIFRoaXMgY2FuIGJlIGNoYW5nZWQgdG8gc3RhdGljIHByb3BlcnRpZXMgYXMgc29vbiBhcyB0aGUgcGFyc2VyIG9wdGlvbnMgaW4gLmVzbGludC5janMgYXJlIHVwZGF0ZWQuXG5BeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFID0gJ0VSUl9CQURfT1BUSU9OX1ZBTFVFJztcbkF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT04gPSAnRVJSX0JBRF9PUFRJT04nO1xuQXhpb3NFcnJvci5FQ09OTkFCT1JURUQgPSAnRUNPTk5BQk9SVEVEJztcbkF4aW9zRXJyb3IuRVRJTUVET1VUID0gJ0VUSU1FRE9VVCc7XG5BeGlvc0Vycm9yLkVSUl9ORVRXT1JLID0gJ0VSUl9ORVRXT1JLJztcbkF4aW9zRXJyb3IuRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyA9ICdFUlJfRlJfVE9PX01BTllfUkVESVJFQ1RTJztcbkF4aW9zRXJyb3IuRVJSX0RFUFJFQ0FURUQgPSAnRVJSX0RFUFJFQ0FURUQnO1xuQXhpb3NFcnJvci5FUlJfQkFEX1JFU1BPTlNFID0gJ0VSUl9CQURfUkVTUE9OU0UnO1xuQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QgPSAnRVJSX0JBRF9SRVFVRVNUJztcbkF4aW9zRXJyb3IuRVJSX0NBTkNFTEVEID0gJ0VSUl9DQU5DRUxFRCc7XG5BeGlvc0Vycm9yLkVSUl9OT1RfU1VQUE9SVCA9ICdFUlJfTk9UX1NVUFBPUlQnO1xuQXhpb3NFcnJvci5FUlJfSU5WQUxJRF9VUkwgPSAnRVJSX0lOVkFMSURfVVJMJztcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3NFcnJvcjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/axios/lib/core/AxiosHeaders.js ***!
|
||
\*****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _helpers_parseHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/parseHeaders.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/parseHeaders.js\");\n\n\n\n\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(value)) return;\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders((0,_helpers_parseHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(header), valueOrRewrite);\n } else if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(header) && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(this, (value, header) => {\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\n_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\n_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].freezeMethods(AxiosHeaders);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AxiosHeaders);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvc0hlYWRlcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWE7O0FBRW1CO0FBQ3NCOztBQUV0RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxpREFBSztBQUNkOztBQUVBO0FBQ0E7QUFDQSwyQkFBMkIsbUJBQW1CO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsTUFBTSxpREFBSztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLE9BQU8saURBQUs7O0FBRVosTUFBTSxpREFBSztBQUNYO0FBQ0E7O0FBRUEsTUFBTSxpREFBSztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLHVCQUF1QixpREFBSzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLGlEQUFLOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0saURBQUs7O0FBRVgsUUFBUSxpREFBSztBQUNiO0FBQ0EsTUFBTSxRQUFRLGlEQUFLO0FBQ25CLGlCQUFpQixvRUFBWTtBQUM3QixNQUFNLFNBQVMsaURBQUsscUJBQXFCLGlEQUFLO0FBQzlDLGtCQUFrQjtBQUNsQjtBQUNBLGFBQWEsaURBQUs7QUFDbEI7QUFDQTs7QUFFQTtBQUNBLFdBQVcsaURBQUs7QUFDaEI7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsaURBQUs7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLGlEQUFLO0FBQ2pCO0FBQ0E7O0FBRUEsWUFBWSxpREFBSztBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsaURBQUs7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQixpREFBSzs7QUFFekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLGlEQUFLO0FBQ2I7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksaURBQUs7QUFDVCxrQkFBa0IsaURBQUs7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLElBQUksaURBQUs7QUFDVCxzRUFBc0UsaURBQUs7QUFDM0UsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSSxpREFBSzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxpREFBSyw2Q0FBNkMsTUFBTTtBQUN4RCxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpREFBSzs7QUFFTCxpRUFBZSxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGNvcmVcXEF4aW9zSGVhZGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgcGFyc2VIZWFkZXJzIGZyb20gJy4uL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzJztcblxuY29uc3QgJGludGVybmFscyA9IFN5bWJvbCgnaW50ZXJuYWxzJyk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlcihoZWFkZXIpIHtcbiAgcmV0dXJuIGhlYWRlciAmJiBTdHJpbmcoaGVhZGVyKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHV0aWxzLmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKG5vcm1hbGl6ZVZhbHVlKSA6IFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVG9rZW5zKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCB0b2tlbnNSRSA9IC8oW15cXHMsOz1dKylcXHMqKD86PVxccyooW14sO10rKSk/L2c7XG4gIGxldCBtYXRjaDtcblxuICB3aGlsZSAoKG1hdGNoID0gdG9rZW5zUkUuZXhlYyhzdHIpKSkge1xuICAgIHRva2Vuc1ttYXRjaFsxXV0gPSBtYXRjaFsyXTtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59XG5cbmNvbnN0IGlzVmFsaWRIZWFkZXJOYW1lID0gKHN0cikgPT4gL15bLV9hLXpBLVowLTleYHx+LCEjJCUmJyorLl0rJC8udGVzdChzdHIudHJpbSgpKTtcblxuZnVuY3Rpb24gbWF0Y2hIZWFkZXJWYWx1ZShjb250ZXh0LCB2YWx1ZSwgaGVhZGVyLCBmaWx0ZXIsIGlzSGVhZGVyTmFtZUZpbHRlcikge1xuICBpZiAodXRpbHMuaXNGdW5jdGlvbihmaWx0ZXIpKSB7XG4gICAgcmV0dXJuIGZpbHRlci5jYWxsKHRoaXMsIHZhbHVlLCBoZWFkZXIpO1xuICB9XG5cbiAgaWYgKGlzSGVhZGVyTmFtZUZpbHRlcikge1xuICAgIHZhbHVlID0gaGVhZGVyO1xuICB9XG5cbiAgaWYgKCF1dGlscy5pc1N0cmluZyh2YWx1ZSkpIHJldHVybjtcblxuICBpZiAodXRpbHMuaXNTdHJpbmcoZmlsdGVyKSkge1xuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKGZpbHRlcikgIT09IC0xO1xuICB9XG5cbiAgaWYgKHV0aWxzLmlzUmVnRXhwKGZpbHRlcikpIHtcbiAgICByZXR1cm4gZmlsdGVyLnRlc3QodmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEhlYWRlcihoZWFkZXIpIHtcbiAgcmV0dXJuIGhlYWRlci50cmltKClcbiAgICAudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxcZF0pKFxcdyopL2csICh3LCBjaGFyLCBzdHIpID0+IHtcbiAgICAgIHJldHVybiBjaGFyLnRvVXBwZXJDYXNlKCkgKyBzdHI7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQWNjZXNzb3JzKG9iaiwgaGVhZGVyKSB7XG4gIGNvbnN0IGFjY2Vzc29yTmFtZSA9IHV0aWxzLnRvQ2FtZWxDYXNlKCcgJyArIGhlYWRlcik7XG5cbiAgWydnZXQnLCAnc2V0JywgJ2hhcyddLmZvckVhY2gobWV0aG9kTmFtZSA9PiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgbWV0aG9kTmFtZSArIGFjY2Vzc29yTmFtZSwge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uKGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbWV0aG9kTmFtZV0uY2FsbCh0aGlzLCBoZWFkZXIsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgICAgfSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9KTtcbn1cblxuY2xhc3MgQXhpb3NIZWFkZXJzIHtcbiAgY29uc3RydWN0b3IoaGVhZGVycykge1xuICAgIGhlYWRlcnMgJiYgdGhpcy5zZXQoaGVhZGVycyk7XG4gIH1cblxuICBzZXQoaGVhZGVyLCB2YWx1ZU9yUmV3cml0ZSwgcmV3cml0ZSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gc2V0SGVhZGVyKF92YWx1ZSwgX2hlYWRlciwgX3Jld3JpdGUpIHtcbiAgICAgIGNvbnN0IGxIZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmICghbEhlYWRlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkoc2VsZiwgbEhlYWRlcik7XG5cbiAgICAgIGlmKCFrZXkgfHwgc2VsZltrZXldID09PSB1bmRlZmluZWQgfHwgX3Jld3JpdGUgPT09IHRydWUgfHwgKF9yZXdyaXRlID09PSB1bmRlZmluZWQgJiYgc2VsZltrZXldICE9PSBmYWxzZSkpIHtcbiAgICAgICAgc2VsZltrZXkgfHwgX2hlYWRlcl0gPSBub3JtYWxpemVWYWx1ZShfdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNldEhlYWRlcnMgPSAoaGVhZGVycywgX3Jld3JpdGUpID0+XG4gICAgICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIChfdmFsdWUsIF9oZWFkZXIpID0+IHNldEhlYWRlcihfdmFsdWUsIF9oZWFkZXIsIF9yZXdyaXRlKSk7XG5cbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChoZWFkZXIpIHx8IGhlYWRlciBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpIHtcbiAgICAgIHNldEhlYWRlcnMoaGVhZGVyLCB2YWx1ZU9yUmV3cml0ZSlcbiAgICB9IGVsc2UgaWYodXRpbHMuaXNTdHJpbmcoaGVhZGVyKSAmJiAoaGVhZGVyID0gaGVhZGVyLnRyaW0oKSkgJiYgIWlzVmFsaWRIZWFkZXJOYW1lKGhlYWRlcikpIHtcbiAgICAgIHNldEhlYWRlcnMocGFyc2VIZWFkZXJzKGhlYWRlciksIHZhbHVlT3JSZXdyaXRlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzT2JqZWN0KGhlYWRlcikgJiYgdXRpbHMuaXNJdGVyYWJsZShoZWFkZXIpKSB7XG4gICAgICBsZXQgb2JqID0ge30sIGRlc3QsIGtleTtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgaGVhZGVyKSB7XG4gICAgICAgIGlmICghdXRpbHMuaXNBcnJheShlbnRyeSkpIHtcbiAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ09iamVjdCBpdGVyYXRvciBtdXN0IHJldHVybiBhIGtleS12YWx1ZSBwYWlyJyk7XG4gICAgICAgIH1cblxuICAgICAgICBvYmpba2V5ID0gZW50cnlbMF1dID0gKGRlc3QgPSBvYmpba2V5XSkgP1xuICAgICAgICAgICh1dGlscy5pc0FycmF5KGRlc3QpID8gWy4uLmRlc3QsIGVudHJ5WzFdXSA6IFtkZXN0LCBlbnRyeVsxXV0pIDogZW50cnlbMV07XG4gICAgICB9XG5cbiAgICAgIHNldEhlYWRlcnMob2JqLCB2YWx1ZU9yUmV3cml0ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVyICE9IG51bGwgJiYgc2V0SGVhZGVyKHZhbHVlT3JSZXdyaXRlLCBoZWFkZXIsIHJld3JpdGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KGhlYWRlciwgcGFyc2VyKSB7XG4gICAgaGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKGhlYWRlcik7XG5cbiAgICBpZiAoaGVhZGVyKSB7XG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHRoaXMsIGhlYWRlcik7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzW2tleV07XG5cbiAgICAgICAgaWYgKCFwYXJzZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyc2VyID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5zKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1dGlscy5pc0Z1bmN0aW9uKHBhcnNlcikpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLmNhbGwodGhpcywgdmFsdWUsIGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXRpbHMuaXNSZWdFeHAocGFyc2VyKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZXIuZXhlYyh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhcyhoZWFkZXIsIG1hdGNoZXIpIHtcbiAgICBoZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoaGVhZGVyKTtcblxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkodGhpcywgaGVhZGVyKTtcblxuICAgICAgcmV0dXJuICEhKGtleSAmJiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCAmJiAoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZSh0aGlzLCB0aGlzW2tleV0sIGtleSwgbWF0Y2hlcikpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBkZWxldGUoaGVhZGVyLCBtYXRjaGVyKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGRlbGV0ZUhlYWRlcihfaGVhZGVyKSB7XG4gICAgICBfaGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKF9oZWFkZXIpO1xuXG4gICAgICBpZiAoX2hlYWRlcikge1xuICAgICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHNlbGYsIF9oZWFkZXIpO1xuXG4gICAgICAgIGlmIChrZXkgJiYgKCFtYXRjaGVyIHx8IG1hdGNoSGVhZGVyVmFsdWUoc2VsZiwgc2VsZltrZXldLCBrZXksIG1hdGNoZXIpKSkge1xuICAgICAgICAgIGRlbGV0ZSBzZWxmW2tleV07XG5cbiAgICAgICAgICBkZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0FycmF5KGhlYWRlcikpIHtcbiAgICAgIGhlYWRlci5mb3JFYWNoKGRlbGV0ZUhlYWRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZUhlYWRlcihoZWFkZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkO1xuICB9XG5cbiAgY2xlYXIobWF0Y2hlcikge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKTtcbiAgICBsZXQgaSA9IGtleXMubGVuZ3RoO1xuICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgaWYoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZSh0aGlzLCB0aGlzW2tleV0sIGtleSwgbWF0Y2hlciwgdHJ1ZSkpIHtcbiAgICAgICAgZGVsZXRlIHRoaXNba2V5XTtcbiAgICAgICAgZGVsZXRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICBub3JtYWxpemUoZm9ybWF0KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgaGVhZGVycyA9IHt9O1xuXG4gICAgdXRpbHMuZm9yRWFjaCh0aGlzLCAodmFsdWUsIGhlYWRlcikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleShoZWFkZXJzLCBoZWFkZXIpO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHNlbGZba2V5XSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgZGVsZXRlIHNlbGZbaGVhZGVyXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBub3JtYWxpemVkID0gZm9ybWF0ID8gZm9ybWF0SGVhZGVyKGhlYWRlcikgOiBTdHJpbmcoaGVhZGVyKS50cmltKCk7XG5cbiAgICAgIGlmIChub3JtYWxpemVkICE9PSBoZWFkZXIpIHtcbiAgICAgICAgZGVsZXRlIHNlbGZbaGVhZGVyXTtcbiAgICAgIH1cblxuICAgICAgc2VsZltub3JtYWxpemVkXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgaGVhZGVyc1tub3JtYWxpemVkXSA9IHRydWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbmNhdCguLi50YXJnZXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsIC4uLnRhcmdldHMpO1xuICB9XG5cbiAgdG9KU09OKGFzU3RyaW5ncykge1xuICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICB1dGlscy5mb3JFYWNoKHRoaXMsICh2YWx1ZSwgaGVhZGVyKSA9PiB7XG4gICAgICB2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSBmYWxzZSAmJiAob2JqW2hlYWRlcl0gPSBhc1N0cmluZ3MgJiYgdXRpbHMuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5qb2luKCcsICcpIDogdmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbaGVhZGVyLCB2YWx1ZV0pID0+IGhlYWRlciArICc6ICcgKyB2YWx1ZSkuam9pbignXFxuJyk7XG4gIH1cblxuICBnZXRTZXRDb29raWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KFwic2V0LWNvb2tpZVwiKSB8fCBbXTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0F4aW9zSGVhZGVycyc7XG4gIH1cblxuICBzdGF0aWMgZnJvbSh0aGluZykge1xuICAgIHJldHVybiB0aGluZyBpbnN0YW5jZW9mIHRoaXMgPyB0aGluZyA6IG5ldyB0aGlzKHRoaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyBjb25jYXQoZmlyc3QsIC4uLnRhcmdldHMpIHtcbiAgICBjb25zdCBjb21wdXRlZCA9IG5ldyB0aGlzKGZpcnN0KTtcblxuICAgIHRhcmdldHMuZm9yRWFjaCgodGFyZ2V0KSA9PiBjb21wdXRlZC5zZXQodGFyZ2V0KSk7XG5cbiAgICByZXR1cm4gY29tcHV0ZWQ7XG4gIH1cblxuICBzdGF0aWMgYWNjZXNzb3IoaGVhZGVyKSB7XG4gICAgY29uc3QgaW50ZXJuYWxzID0gdGhpc1skaW50ZXJuYWxzXSA9ICh0aGlzWyRpbnRlcm5hbHNdID0ge1xuICAgICAgYWNjZXNzb3JzOiB7fVxuICAgIH0pO1xuXG4gICAgY29uc3QgYWNjZXNzb3JzID0gaW50ZXJuYWxzLmFjY2Vzc29ycztcbiAgICBjb25zdCBwcm90b3R5cGUgPSB0aGlzLnByb3RvdHlwZTtcblxuICAgIGZ1bmN0aW9uIGRlZmluZUFjY2Vzc29yKF9oZWFkZXIpIHtcbiAgICAgIGNvbnN0IGxIZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmICghYWNjZXNzb3JzW2xIZWFkZXJdKSB7XG4gICAgICAgIGJ1aWxkQWNjZXNzb3JzKHByb3RvdHlwZSwgX2hlYWRlcik7XG4gICAgICAgIGFjY2Vzc29yc1tsSGVhZGVyXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdXRpbHMuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyLmZvckVhY2goZGVmaW5lQWNjZXNzb3IpIDogZGVmaW5lQWNjZXNzb3IoaGVhZGVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbkF4aW9zSGVhZGVycy5hY2Nlc3NvcihbJ0NvbnRlbnQtVHlwZScsICdDb250ZW50LUxlbmd0aCcsICdBY2NlcHQnLCAnQWNjZXB0LUVuY29kaW5nJywgJ1VzZXItQWdlbnQnLCAnQXV0aG9yaXphdGlvbiddKTtcblxuLy8gcmVzZXJ2ZWQgbmFtZXMgaG90Zml4XG51dGlscy5yZWR1Y2VEZXNjcmlwdG9ycyhBeGlvc0hlYWRlcnMucHJvdG90eXBlLCAoe3ZhbHVlfSwga2V5KSA9PiB7XG4gIGxldCBtYXBwZWQgPSBrZXlbMF0udG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTsgLy8gbWFwIGBzZXRgID0+IGBTZXRgXG4gIHJldHVybiB7XG4gICAgZ2V0OiAoKSA9PiB2YWx1ZSxcbiAgICBzZXQoaGVhZGVyVmFsdWUpIHtcbiAgICAgIHRoaXNbbWFwcGVkXSA9IGhlYWRlclZhbHVlO1xuICAgIH1cbiAgfVxufSk7XG5cbnV0aWxzLmZyZWV6ZU1ldGhvZHMoQXhpb3NIZWFkZXJzKTtcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3NIZWFkZXJzO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/core/InterceptorManager.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/axios/lib/core/InterceptorManager.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n\n\n\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (InterceptorManager);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9JbnRlcmNlcHRvck1hbmFnZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBYTs7QUFFbUI7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLFVBQVU7QUFDdkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QjtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsSUFBSSxpREFBSztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLGlFQUFlLGtCQUFrQixFQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxjb3JlXFxJbnRlcmNlcHRvck1hbmFnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuXG5jbGFzcyBJbnRlcmNlcHRvck1hbmFnZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhhbmRsZXJzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGludGVyY2VwdG9yIHRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHJlamVjdGAgZm9yIGEgYFByb21pc2VgXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgaW50ZXJjZXB0b3IsIHN5bmNocm9ub3VzIGFuZCBydW5XaGVuXG4gICAqXG4gICAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAgICovXG4gIHVzZShmdWxmaWxsZWQsIHJlamVjdGVkLCBvcHRpb25zKSB7XG4gICAgdGhpcy5oYW5kbGVycy5wdXNoKHtcbiAgICAgIGZ1bGZpbGxlZCxcbiAgICAgIHJlamVjdGVkLFxuICAgICAgc3luY2hyb25vdXM6IG9wdGlvbnMgPyBvcHRpb25zLnN5bmNocm9ub3VzIDogZmFsc2UsXG4gICAgICBydW5XaGVuOiBvcHRpb25zID8gb3B0aW9ucy5ydW5XaGVuIDogbnVsbFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBlamVjdChpZCkge1xuICAgIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xuICAgICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgaW50ZXJjZXB0b3JzIGZyb20gdGhlIHN0YWNrXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgIHRoaXMuaGFuZGxlcnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXRlcmF0ZSBvdmVyIGFsbCB0aGUgcmVnaXN0ZXJlZCBpbnRlcmNlcHRvcnNcbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAgICogaW50ZXJjZXB0b3JzIHRoYXQgbWF5IGhhdmUgYmVjb21lIGBudWxsYCBjYWxsaW5nIGBlamVjdGAuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZm9yRWFjaChmbikge1xuICAgIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xuICAgICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgICAgZm4oaCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSW50ZXJjZXB0b3JNYW5hZ2VyO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/core/InterceptorManager.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/core/buildFullPath.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/axios/lib/core/buildFullPath.js ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ buildFullPath)\n/* harmony export */ });\n/* harmony import */ var _helpers_isAbsoluteURL_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/isAbsoluteURL.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/isAbsoluteURL.js\");\n/* harmony import */ var _helpers_combineURLs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/combineURLs.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/combineURLs.js\");\n\n\n\n\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !(0,_helpers_isAbsoluteURL_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return (0,_helpers_combineURLs_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(baseURL, requestedURL);\n }\n return requestedURL;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9idWlsZEZ1bGxQYXRoLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFhOztBQUUyQztBQUNKOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNlO0FBQ2YsdUJBQXVCLHFFQUFhO0FBQ3BDO0FBQ0EsV0FBVyxtRUFBVztBQUN0QjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGNvcmVcXGJ1aWxkRnVsbFBhdGguanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgaXNBYnNvbHV0ZVVSTCBmcm9tICcuLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanMnO1xuaW1wb3J0IGNvbWJpbmVVUkxzIGZyb20gJy4uL2hlbHBlcnMvY29tYmluZVVSTHMuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXG4gKiBJZiB0aGUgcmVxdWVzdFVSTCBpcyBhYnNvbHV0ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1ZXN0ZWRVUkwgdW50b3VjaGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3RlZFVSTCBBYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwgdG8gY29tYmluZVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBmdWxsIHBhdGhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRGdWxsUGF0aChiYXNlVVJMLCByZXF1ZXN0ZWRVUkwsIGFsbG93QWJzb2x1dGVVcmxzKSB7XG4gIGxldCBpc1JlbGF0aXZlVXJsID0gIWlzQWJzb2x1dGVVUkwocmVxdWVzdGVkVVJMKTtcbiAgaWYgKGJhc2VVUkwgJiYgKGlzUmVsYXRpdmVVcmwgfHwgYWxsb3dBYnNvbHV0ZVVybHMgPT0gZmFsc2UpKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3RlZFVSTDtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/core/buildFullPath.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/core/dispatchRequest.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/axios/lib/core/dispatchRequest.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ dispatchRequest)\n/* harmony export */ });\n/* harmony import */ var _transformData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transformData.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/transformData.js\");\n/* harmony import */ var _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../cancel/isCancel.js */ \"(app-pages-browser)/./node_modules/axios/lib/cancel/isCancel.js\");\n/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../defaults/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/defaults/index.js\");\n/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cancel/CanceledError.js */ \"(app-pages-browser)/./node_modules/axios/lib/cancel/CanceledError.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../adapters/adapters.js */ \"(app-pages-browser)/./node_modules/axios/lib/adapters/adapters.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(config.headers);\n\n // Transform request data\n config.data = _transformData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getAdapter(config.adapter || _defaults_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!(0,_cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9kaXNwYXRjaFJlcXVlc3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFhOztBQUVrQztBQUNGO0FBQ0Q7QUFDVztBQUNKO0FBQ0o7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYyxnRUFBYTtBQUMzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNlO0FBQ2Y7O0FBRUEsbUJBQW1CLDZEQUFZOztBQUUvQjtBQUNBLGdCQUFnQix5REFBYTtBQUM3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtCQUFrQiw2REFBUSw4QkFBOEIsMERBQVE7O0FBRWhFO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IseURBQWE7QUFDakM7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLDZEQUFZOztBQUVuQztBQUNBLEdBQUc7QUFDSCxTQUFTLCtEQUFRO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQSwrQkFBK0IseURBQWE7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsNkRBQVk7QUFDOUM7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcY29yZVxcZGlzcGF0Y2hSZXF1ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHRyYW5zZm9ybURhdGEgZnJvbSAnLi90cmFuc2Zvcm1EYXRhLmpzJztcbmltcG9ydCBpc0NhbmNlbCBmcm9tICcuLi9jYW5jZWwvaXNDYW5jZWwuanMnO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzL2luZGV4LmpzJztcbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4uL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSAnLi4vY29yZS9BeGlvc0hlYWRlcnMuanMnO1xuaW1wb3J0IGFkYXB0ZXJzIGZyb20gXCIuLi9hZGFwdGVycy9hZGFwdGVycy5qc1wiO1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxlZEVycm9yYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5zaWduYWwgJiYgY29uZmlnLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IENhbmNlbGVkRXJyb3IobnVsbCwgY29uZmlnKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpc3BhdGNoUmVxdWVzdChjb25maWcpIHtcbiAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gIGNvbmZpZy5oZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oY29uZmlnLmhlYWRlcnMpO1xuXG4gIC8vIFRyYW5zZm9ybSByZXF1ZXN0IGRhdGFcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgY29uZmlnLFxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XG4gICk7XG5cbiAgaWYgKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXS5pbmRleE9mKGNvbmZpZy5tZXRob2QpICE9PSAtMSkge1xuICAgIGNvbmZpZy5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLCBmYWxzZSk7XG4gIH1cblxuICBjb25zdCBhZGFwdGVyID0gYWRhcHRlcnMuZ2V0QWRhcHRlcihjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cy5hZGFwdGVyLCBjb25maWcpO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgY29uZmlnLFxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlLFxuICAgICAgcmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmVzcG9uc2UuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKHJlc3BvbnNlLmhlYWRlcnMpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XG4gICAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgICBpZiAocmVhc29uICYmIHJlYXNvbi5yZXNwb25zZSkge1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZVxuICAgICAgICApO1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/core/dispatchRequest.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/core/mergeConfig.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/axios/lib/core/mergeConfig.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ mergeConfig)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AxiosHeaders.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js\");\n\n\n\n\n\nconst headersToObject = (thing) =>\n thing instanceof _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPlainObject(target) && _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPlainObject(source)) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].merge.call({ caseless }, target, source);\n } else if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPlainObject(source)) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].merge({}, source);\n } else if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].forEach(\n Object.keys({ ...config1, ...config2 }),\n function computeConfigValue(prop) {\n if (\n prop === \"__proto__\" ||\n prop === \"constructor\" ||\n prop === \"prototype\"\n )\n return;\n const merge = _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hasOwnProp(mergeMap, prop)\n ? mergeMap[prop]\n : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(configValue) && merge !== mergeDirectKeys) ||\n (config[prop] = configValue);\n },\n );\n\n return config;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9tZXJnZUNvbmZpZy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBYTs7QUFFbUI7QUFDYTs7QUFFN0M7QUFDQSxtQkFBbUIsd0RBQVksS0FBSyxXQUFXOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsaURBQUssMEJBQTBCLGlEQUFLO0FBQzVDLGFBQWEsaURBQUssY0FBYyxVQUFVO0FBQzFDLE1BQU0sU0FBUyxpREFBSztBQUNwQixhQUFhLGlEQUFLLFNBQVM7QUFDM0IsTUFBTSxTQUFTLGlEQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxpREFBSztBQUNkO0FBQ0EsTUFBTSxVQUFVLGlEQUFLO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxpREFBSztBQUNkO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxpREFBSztBQUNkO0FBQ0EsTUFBTSxVQUFVLGlEQUFLO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLGlEQUFLO0FBQ1Asa0JBQWtCLHdCQUF3QjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpREFBSztBQUN6QjtBQUNBO0FBQ0E7QUFDQSxPQUFPLGlEQUFLO0FBQ1o7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcY29yZVxcbWVyZ2VDb25maWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSBcIi4vQXhpb3NIZWFkZXJzLmpzXCI7XG5cbmNvbnN0IGhlYWRlcnNUb09iamVjdCA9ICh0aGluZykgPT5cbiAgdGhpbmcgaW5zdGFuY2VvZiBBeGlvc0hlYWRlcnMgPyB7IC4uLnRoaW5nIH0gOiB0aGluZztcblxuLyoqXG4gKiBDb25maWctc3BlY2lmaWMgbWVyZ2UtZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIG5ldyBjb25maWctb2JqZWN0XG4gKiBieSBtZXJnaW5nIHR3byBjb25maWd1cmF0aW9uIG9iamVjdHMgdG9nZXRoZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzFcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcyXG4gKlxuICogQHJldHVybnMge09iamVjdH0gTmV3IG9iamVjdCByZXN1bHRpbmcgZnJvbSBtZXJnaW5nIGNvbmZpZzIgdG8gY29uZmlnMVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZUNvbmZpZyhjb25maWcxLCBjb25maWcyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcbiAgY29uc3QgY29uZmlnID0ge307XG5cbiAgZnVuY3Rpb24gZ2V0TWVyZ2VkVmFsdWUodGFyZ2V0LCBzb3VyY2UsIHByb3AsIGNhc2VsZXNzKSB7XG4gICAgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3QodGFyZ2V0KSAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZS5jYWxsKHsgY2FzZWxlc3MgfSwgdGFyZ2V0LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMoYSwgYiwgcHJvcCwgY2FzZWxlc3MpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoYSwgYiwgcHJvcCwgY2FzZWxlc3MpO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGEpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBhLCBwcm9wLCBjYXNlbGVzcyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIoYSwgYikge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYikpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKGEsIGIpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBiKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChhKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGlyZWN0S2V5cyhhLCBiLCBwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGEsIGIpO1xuICAgIH0gZWxzZSBpZiAocHJvcCBpbiBjb25maWcxKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBhKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZXJnZU1hcCA9IHtcbiAgICB1cmw6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgbWV0aG9kOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIGRhdGE6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgYmFzZVVSTDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc2Zvcm1SZXF1ZXN0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRyYW5zZm9ybVJlc3BvbnNlOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHBhcmFtc1NlcmlhbGl6ZXI6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdGltZW91dDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0aW1lb3V0TWVzc2FnZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB3aXRoQ3JlZGVudGlhbHM6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgd2l0aFhTUkZUb2tlbjogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBhZGFwdGVyOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHJlc3BvbnNlVHlwZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB4c3JmQ29va2llTmFtZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB4c3JmSGVhZGVyTmFtZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBvblVwbG9hZFByb2dyZXNzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG9uRG93bmxvYWRQcm9ncmVzczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBkZWNvbXByZXNzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG1heENvbnRlbnRMZW5ndGg6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgbWF4Qm9keUxlbmd0aDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBiZWZvcmVSZWRpcmVjdDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc3BvcnQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgaHR0cEFnZW50OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGh0dHBzQWdlbnQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgY2FuY2VsVG9rZW46IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgc29ja2V0UGF0aDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICByZXNwb25zZUVuY29kaW5nOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHZhbGlkYXRlU3RhdHVzOiBtZXJnZURpcmVjdEtleXMsXG4gICAgaGVhZGVyczogKGEsIGIsIHByb3ApID0+XG4gICAgICBtZXJnZURlZXBQcm9wZXJ0aWVzKGhlYWRlcnNUb09iamVjdChhKSwgaGVhZGVyc1RvT2JqZWN0KGIpLCBwcm9wLCB0cnVlKSxcbiAgfTtcblxuICB1dGlscy5mb3JFYWNoKFxuICAgIE9iamVjdC5rZXlzKHsgLi4uY29uZmlnMSwgLi4uY29uZmlnMiB9KSxcbiAgICBmdW5jdGlvbiBjb21wdXRlQ29uZmlnVmFsdWUocHJvcCkge1xuICAgICAgaWYgKFxuICAgICAgICBwcm9wID09PSBcIl9fcHJvdG9fX1wiIHx8XG4gICAgICAgIHByb3AgPT09IFwiY29uc3RydWN0b3JcIiB8fFxuICAgICAgICBwcm9wID09PSBcInByb3RvdHlwZVwiXG4gICAgICApXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IG1lcmdlID0gdXRpbHMuaGFzT3duUHJvcChtZXJnZU1hcCwgcHJvcClcbiAgICAgICAgPyBtZXJnZU1hcFtwcm9wXVxuICAgICAgICA6IG1lcmdlRGVlcFByb3BlcnRpZXM7XG4gICAgICBjb25zdCBjb25maWdWYWx1ZSA9IG1lcmdlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0sIHByb3ApO1xuICAgICAgKHV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZ1ZhbHVlKSAmJiBtZXJnZSAhPT0gbWVyZ2VEaXJlY3RLZXlzKSB8fFxuICAgICAgICAoY29uZmlnW3Byb3BdID0gY29uZmlnVmFsdWUpO1xuICAgIH0sXG4gICk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/core/mergeConfig.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/core/settle.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/axios/lib/core/settle.js ***!
|
||
\***********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ settle)\n/* harmony export */ });\n/* harmony import */ var _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n\n\n\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](\n 'Request failed with status code ' + response.status,\n [_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].ERR_BAD_REQUEST, _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9zZXR0bGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBYTs7QUFFNEI7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osZUFBZSxzREFBVTtBQUN6QjtBQUNBLE9BQU8sc0RBQVUsa0JBQWtCLHNEQUFVO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcY29yZVxcc2V0dGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi9BeGlvc0Vycm9yLmpzJztcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKSB7XG4gIGNvbnN0IHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICBbQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcihyZXNwb25zZS5zdGF0dXMgLyAxMDApIC0gNF0sXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/core/settle.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/core/transformData.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/axios/lib/core/transformData.js ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ transformData)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../defaults/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/defaults/index.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js\");\n\n\n\n\n\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || _defaults_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n const context = response || config;\n const headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(context.headers);\n let data = context.data;\n\n _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBYTs7QUFFbUI7QUFDWTtBQUNPOztBQUVuRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdCQUFnQjtBQUMzQixXQUFXLFNBQVM7QUFDcEI7QUFDQSxhQUFhLEdBQUc7QUFDaEI7QUFDZTtBQUNmLHlCQUF5QiwwREFBUTtBQUNqQztBQUNBLGtCQUFrQiw2REFBWTtBQUM5Qjs7QUFFQSxFQUFFLGlEQUFLO0FBQ1A7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGNvcmVcXHRyYW5zZm9ybURhdGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzL2luZGV4LmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSAnLi4vY29yZS9BeGlvc0hlYWRlcnMuanMnO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2VcbiAqXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXG4gKiBAcGFyYW0gez9PYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZSBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZm5zLCByZXNwb25zZSkge1xuICBjb25zdCBjb25maWcgPSB0aGlzIHx8IGRlZmF1bHRzO1xuICBjb25zdCBjb250ZXh0ID0gcmVzcG9uc2UgfHwgY29uZmlnO1xuICBjb25zdCBoZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oY29udGV4dC5oZWFkZXJzKTtcbiAgbGV0IGRhdGEgPSBjb250ZXh0LmRhdGE7XG5cbiAgdXRpbHMuZm9yRWFjaChmbnMsIGZ1bmN0aW9uIHRyYW5zZm9ybShmbikge1xuICAgIGRhdGEgPSBmbi5jYWxsKGNvbmZpZywgZGF0YSwgaGVhZGVycy5ub3JtYWxpemUoKSwgcmVzcG9uc2UgPyByZXNwb25zZS5zdGF0dXMgOiB1bmRlZmluZWQpO1xuICB9KTtcblxuICBoZWFkZXJzLm5vcm1hbGl6ZSgpO1xuXG4gIHJldHVybiBkYXRhO1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/core/transformData.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/defaults/index.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/axios/lib/defaults/index.js ***!
|
||
\**************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _transitional_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transitional.js */ \"(app-pages-browser)/./node_modules/axios/lib/defaults/transitional.js\");\n/* harmony import */ var _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers/toFormData.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/toFormData.js\");\n/* harmony import */ var _helpers_toURLEncodedForm_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers/toURLEncodedForm.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/toURLEncodedForm.js\");\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../platform/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/index.js\");\n/* harmony import */ var _helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers/formDataToJSON.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/formDataToJSON.js\");\n\n\n\n\n\n\n\n\n\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: _transitional_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(data);\n\n if (isObjectPayload && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify((0,_helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(data)) : data;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArrayBuffer(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isBuffer(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isStream(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFile(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isBlob(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isReadableStream(data)\n ) {\n return data;\n }\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArrayBufferView(data)) {\n return data.buffer;\n }\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return (0,_helpers_toURLEncodedForm_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(data, this.formSerializer).toString();\n }\n\n if ((isFileList = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return (0,_helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isResponse(data) || _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isReadableStream(data)) {\n return data;\n }\n\n if (data && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].from(e, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: _platform_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].classes.FormData,\n Blob: _platform_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\n_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (defaults);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBYTs7QUFFbUI7QUFDZTtBQUNNO0FBQ0g7QUFDWTtBQUNsQjtBQUNjOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxNQUFNLGlEQUFLO0FBQ1g7QUFDQTtBQUNBLGFBQWEsaURBQUs7QUFDbEIsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxnQkFBZ0Isd0RBQW9COztBQUVwQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsaURBQUs7O0FBRWpDLDJCQUEyQixpREFBSztBQUNoQztBQUNBOztBQUVBLHVCQUF1QixpREFBSzs7QUFFNUI7QUFDQSxpREFBaUQsc0VBQWM7QUFDL0Q7O0FBRUEsUUFBUSxpREFBSztBQUNiLE1BQU0saURBQUs7QUFDWCxNQUFNLGlEQUFLO0FBQ1gsTUFBTSxpREFBSztBQUNYLE1BQU0saURBQUs7QUFDWCxNQUFNLGlEQUFLO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsUUFBUSxpREFBSztBQUNiO0FBQ0E7QUFDQSxRQUFRLGlEQUFLO0FBQ2IsZ0VBQWdFO0FBQ2hFO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGVBQWUsd0VBQWdCO0FBQy9COztBQUVBLHdCQUF3QixpREFBSztBQUM3Qjs7QUFFQSxlQUFlLGtFQUFVO0FBQ3pCLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSxpREFBSyxxQkFBcUIsaURBQUs7QUFDdkM7QUFDQTs7QUFFQSxnQkFBZ0IsaURBQUs7QUFDckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxrQkFBa0IsMkRBQVUsU0FBUywyREFBVTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGNBQWMsMERBQVE7QUFDdEIsVUFBVSwwREFBUTtBQUNsQixHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlEQUFLO0FBQ0w7QUFDQSxDQUFDOztBQUVELGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcZGVmYXVsdHNcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4uL2NvcmUvQXhpb3NFcnJvci5qcyc7XG5pbXBvcnQgdHJhbnNpdGlvbmFsRGVmYXVsdHMgZnJvbSAnLi90cmFuc2l0aW9uYWwuanMnO1xuaW1wb3J0IHRvRm9ybURhdGEgZnJvbSAnLi4vaGVscGVycy90b0Zvcm1EYXRhLmpzJztcbmltcG9ydCB0b1VSTEVuY29kZWRGb3JtIGZyb20gJy4uL2hlbHBlcnMvdG9VUkxFbmNvZGVkRm9ybS5qcyc7XG5pbXBvcnQgcGxhdGZvcm0gZnJvbSAnLi4vcGxhdGZvcm0vaW5kZXguanMnO1xuaW1wb3J0IGZvcm1EYXRhVG9KU09OIGZyb20gJy4uL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMnO1xuXG4vKipcbiAqIEl0IHRha2VzIGEgc3RyaW5nLCB0cmllcyB0byBwYXJzZSBpdCwgYW5kIGlmIGl0IGZhaWxzLCBpdCByZXR1cm5zIHRoZSBzdHJpbmdpZmllZCB2ZXJzaW9uXG4gKiBvZiB0aGUgaW5wdXRcbiAqXG4gKiBAcGFyYW0ge2FueX0gcmF3VmFsdWUgLSBUaGUgdmFsdWUgdG8gYmUgc3RyaW5naWZpZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJzZXIgLSBBIGZ1bmN0aW9uIHRoYXQgcGFyc2VzIGEgc3RyaW5nIGludG8gYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVuY29kZXIgLSBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSB2YWx1ZSBhbmQgcmV0dXJucyBhIHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHN0cmluZ2lmaWVkIHZlcnNpb24gb2YgdGhlIHJhd1ZhbHVlLlxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlTYWZlbHkocmF3VmFsdWUsIHBhcnNlciwgZW5jb2Rlcikge1xuICBpZiAodXRpbHMuaXNTdHJpbmcocmF3VmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIChwYXJzZXIgfHwgSlNPTi5wYXJzZSkocmF3VmFsdWUpO1xuICAgICAgcmV0dXJuIHV0aWxzLnRyaW0ocmF3VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm5hbWUgIT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGVuY29kZXIgfHwgSlNPTi5zdHJpbmdpZnkpKHJhd1ZhbHVlKTtcbn1cblxuY29uc3QgZGVmYXVsdHMgPSB7XG5cbiAgdHJhbnNpdGlvbmFsOiB0cmFuc2l0aW9uYWxEZWZhdWx0cyxcblxuICBhZGFwdGVyOiBbJ3hocicsICdodHRwJywgJ2ZldGNoJ10sXG5cbiAgdHJhbnNmb3JtUmVxdWVzdDogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlcXVlc3QoZGF0YSwgaGVhZGVycykge1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gaGVhZGVycy5nZXRDb250ZW50VHlwZSgpIHx8ICcnO1xuICAgIGNvbnN0IGhhc0pTT05Db250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSA+IC0xO1xuICAgIGNvbnN0IGlzT2JqZWN0UGF5bG9hZCA9IHV0aWxzLmlzT2JqZWN0KGRhdGEpO1xuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCAmJiB1dGlscy5pc0hUTUxGb3JtKGRhdGEpKSB7XG4gICAgICBkYXRhID0gbmV3IEZvcm1EYXRhKGRhdGEpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRm9ybURhdGEgPSB1dGlscy5pc0Zvcm1EYXRhKGRhdGEpO1xuXG4gICAgaWYgKGlzRm9ybURhdGEpIHtcbiAgICAgIHJldHVybiBoYXNKU09OQ29udGVudFR5cGUgPyBKU09OLnN0cmluZ2lmeShmb3JtRGF0YVRvSlNPTihkYXRhKSkgOiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc1JlYWRhYmxlU3RyZWFtKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZSgnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnLCBmYWxzZSk7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCBpc0ZpbGVMaXN0O1xuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCkge1xuICAgICAgaWYgKGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRvVVJMRW5jb2RlZEZvcm0oZGF0YSwgdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKChpc0ZpbGVMaXN0ID0gdXRpbHMuaXNGaWxlTGlzdChkYXRhKSkgfHwgY29udGVudFR5cGUuaW5kZXhPZignbXVsdGlwYXJ0L2Zvcm0tZGF0YScpID4gLTEpIHtcbiAgICAgICAgY29uc3QgX0Zvcm1EYXRhID0gdGhpcy5lbnYgJiYgdGhpcy5lbnYuRm9ybURhdGE7XG5cbiAgICAgICAgcmV0dXJuIHRvRm9ybURhdGEoXG4gICAgICAgICAgaXNGaWxlTGlzdCA/IHsnZmlsZXNbXSc6IGRhdGF9IDogZGF0YSxcbiAgICAgICAgICBfRm9ybURhdGEgJiYgbmV3IF9Gb3JtRGF0YSgpLFxuICAgICAgICAgIHRoaXMuZm9ybVNlcmlhbGl6ZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3RQYXlsb2FkIHx8IGhhc0pTT05Db250ZW50VHlwZSApIHtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL2pzb24nLCBmYWxzZSk7XG4gICAgICByZXR1cm4gc3RyaW5naWZ5U2FmZWx5KGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICBjb25zdCB0cmFuc2l0aW9uYWwgPSB0aGlzLnRyYW5zaXRpb25hbCB8fCBkZWZhdWx0cy50cmFuc2l0aW9uYWw7XG4gICAgY29uc3QgZm9yY2VkSlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLmZvcmNlZEpTT05QYXJzaW5nO1xuICAgIGNvbnN0IEpTT05SZXF1ZXN0ZWQgPSB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xuXG4gICAgaWYgKHV0aWxzLmlzUmVzcG9uc2UoZGF0YSkgfHwgdXRpbHMuaXNSZWFkYWJsZVN0cmVhbShkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgKChmb3JjZWRKU09OUGFyc2luZyAmJiAhdGhpcy5yZXNwb25zZVR5cGUpIHx8IEpTT05SZXF1ZXN0ZWQpKSB7XG4gICAgICBjb25zdCBzaWxlbnRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuc2lsZW50SlNPTlBhcnNpbmc7XG4gICAgICBjb25zdCBzdHJpY3RKU09OUGFyc2luZyA9ICFzaWxlbnRKU09OUGFyc2luZyAmJiBKU09OUmVxdWVzdGVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhLCB0aGlzLnBhcnNlUmV2aXZlcik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChzdHJpY3RKU09OUGFyc2luZykge1xuICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgICAgIHRocm93IEF4aW9zRXJyb3IuZnJvbShlLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0UsIHRoaXMsIG51bGwsIHRoaXMucmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcblxuICBlbnY6IHtcbiAgICBGb3JtRGF0YTogcGxhdGZvcm0uY2xhc3Nlcy5Gb3JtRGF0YSxcbiAgICBCbG9iOiBwbGF0Zm9ybS5jbGFzc2VzLkJsb2JcbiAgfSxcblxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICB9LFxuXG4gIGhlYWRlcnM6IHtcbiAgICBjb21tb246IHtcbiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJyxcbiAgICAgICdDb250ZW50LVR5cGUnOiB1bmRlZmluZWRcbiAgICB9XG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgKG1ldGhvZCkgPT4ge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0cztcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/defaults/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/defaults/transitional.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/axios/lib/defaults/transitional.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvdHJhbnNpdGlvbmFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBYTs7QUFFYixpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxkZWZhdWx0c1xcdHJhbnNpdGlvbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBzaWxlbnRKU09OUGFyc2luZzogdHJ1ZSxcbiAgZm9yY2VkSlNPTlBhcnNpbmc6IHRydWUsXG4gIGNsYXJpZnlUaW1lb3V0RXJyb3I6IGZhbHNlLFxuICBsZWdhY3lJbnRlcmNlcHRvclJlcVJlc09yZGVyaW5nOiB0cnVlXG59O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/defaults/transitional.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/env/data.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/axios/lib/env/data.js ***!
|
||
\********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ VERSION: () => (/* binding */ VERSION)\n/* harmony export */ });\nconst VERSION = \"1.13.5\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZW52L2RhdGEuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxlbnZcXGRhdGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIjEuMTMuNVwiOyJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/env/data.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/AxiosURLSearchParams.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _toFormData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toFormData.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/toFormData.js\");\n\n\n\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && (0,_toFormData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AxiosURLSearchParams);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9BeGlvc1VSTFNlYXJjaFBhcmFtcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFhOztBQUU0Qjs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxQkFBcUI7QUFDaEMsV0FBVyxxQkFBcUI7QUFDaEM7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBLFlBQVksMERBQVU7QUFDdEI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxvQkFBb0IsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xcQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdG9Gb3JtRGF0YSBmcm9tICcuL3RvRm9ybURhdGEuanMnO1xuXG4vKipcbiAqIEl0IGVuY29kZXMgYSBzdHJpbmcgYnkgcmVwbGFjaW5nIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBpbiB0aGUgdW5yZXNlcnZlZCBzZXQgd2l0aFxuICogdGhlaXIgcGVyY2VudC1lbmNvZGVkIGVxdWl2YWxlbnRzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBzdHJpbmcgdG8gZW5jb2RlLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbmNvZGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZW5jb2RlKHN0cikge1xuICBjb25zdCBjaGFyTWFwID0ge1xuICAgICchJzogJyUyMScsXG4gICAgXCInXCI6ICclMjcnLFxuICAgICcoJzogJyUyOCcsXG4gICAgJyknOiAnJTI5JyxcbiAgICAnfic6ICclN0UnLFxuICAgICclMjAnOiAnKycsXG4gICAgJyUwMCc6ICdcXHgwMCdcbiAgfTtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLCBmdW5jdGlvbiByZXBsYWNlcihtYXRjaCkge1xuICAgIHJldHVybiBjaGFyTWFwW21hdGNoXTtcbiAgfSk7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBwYXJhbXMgb2JqZWN0IGFuZCBjb252ZXJ0cyBpdCB0byBhIEZvcm1EYXRhIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gYmUgY29udmVydGVkIHRvIGEgRm9ybURhdGEgb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBhbnk+fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IHBhc3NlZCB0byB0aGUgQXhpb3MgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIEF4aW9zVVJMU2VhcmNoUGFyYW1zKHBhcmFtcywgb3B0aW9ucykge1xuICB0aGlzLl9wYWlycyA9IFtdO1xuXG4gIHBhcmFtcyAmJiB0b0Zvcm1EYXRhKHBhcmFtcywgdGhpcywgb3B0aW9ucyk7XG59XG5cbmNvbnN0IHByb3RvdHlwZSA9IEF4aW9zVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcblxucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuICB0aGlzLl9wYWlycy5wdXNoKFtuYW1lLCB2YWx1ZV0pO1xufTtcblxucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoZW5jb2Rlcikge1xuICBjb25zdCBfZW5jb2RlID0gZW5jb2RlciA/IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGVuY29kZXIuY2FsbCh0aGlzLCB2YWx1ZSwgZW5jb2RlKTtcbiAgfSA6IGVuY29kZTtcblxuICByZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uIGVhY2gocGFpcikge1xuICAgIHJldHVybiBfZW5jb2RlKHBhaXJbMF0pICsgJz0nICsgX2VuY29kZShwYWlyWzFdKTtcbiAgfSwgJycpLmpvaW4oJyYnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF4aW9zVVJMU2VhcmNoUGFyYW1zO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/HttpStatusCode.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/HttpStatusCode.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HttpStatusCode);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9IdHRwU3RhdHVzQ29kZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpRUFBZSxjQUFjLEVBQUMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGhlbHBlcnNcXEh0dHBTdGF0dXNDb2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEh0dHBTdGF0dXNDb2RlID0ge1xuICBDb250aW51ZTogMTAwLFxuICBTd2l0Y2hpbmdQcm90b2NvbHM6IDEwMSxcbiAgUHJvY2Vzc2luZzogMTAyLFxuICBFYXJseUhpbnRzOiAxMDMsXG4gIE9rOiAyMDAsXG4gIENyZWF0ZWQ6IDIwMSxcbiAgQWNjZXB0ZWQ6IDIwMixcbiAgTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOiAyMDMsXG4gIE5vQ29udGVudDogMjA0LFxuICBSZXNldENvbnRlbnQ6IDIwNSxcbiAgUGFydGlhbENvbnRlbnQ6IDIwNixcbiAgTXVsdGlTdGF0dXM6IDIwNyxcbiAgQWxyZWFkeVJlcG9ydGVkOiAyMDgsXG4gIEltVXNlZDogMjI2LFxuICBNdWx0aXBsZUNob2ljZXM6IDMwMCxcbiAgTW92ZWRQZXJtYW5lbnRseTogMzAxLFxuICBGb3VuZDogMzAyLFxuICBTZWVPdGhlcjogMzAzLFxuICBOb3RNb2RpZmllZDogMzA0LFxuICBVc2VQcm94eTogMzA1LFxuICBVbnVzZWQ6IDMwNixcbiAgVGVtcG9yYXJ5UmVkaXJlY3Q6IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3Q6IDMwOCxcbiAgQmFkUmVxdWVzdDogNDAwLFxuICBVbmF1dGhvcml6ZWQ6IDQwMSxcbiAgUGF5bWVudFJlcXVpcmVkOiA0MDIsXG4gIEZvcmJpZGRlbjogNDAzLFxuICBOb3RGb3VuZDogNDA0LFxuICBNZXRob2ROb3RBbGxvd2VkOiA0MDUsXG4gIE5vdEFjY2VwdGFibGU6IDQwNixcbiAgUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOiA0MDcsXG4gIFJlcXVlc3RUaW1lb3V0OiA0MDgsXG4gIENvbmZsaWN0OiA0MDksXG4gIEdvbmU6IDQxMCxcbiAgTGVuZ3RoUmVxdWlyZWQ6IDQxMSxcbiAgUHJlY29uZGl0aW9uRmFpbGVkOiA0MTIsXG4gIFBheWxvYWRUb29MYXJnZTogNDEzLFxuICBVcmlUb29Mb25nOiA0MTQsXG4gIFVuc3VwcG9ydGVkTWVkaWFUeXBlOiA0MTUsXG4gIFJhbmdlTm90U2F0aXNmaWFibGU6IDQxNixcbiAgRXhwZWN0YXRpb25GYWlsZWQ6IDQxNyxcbiAgSW1BVGVhcG90OiA0MTgsXG4gIE1pc2RpcmVjdGVkUmVxdWVzdDogNDIxLFxuICBVbnByb2Nlc3NhYmxlRW50aXR5OiA0MjIsXG4gIExvY2tlZDogNDIzLFxuICBGYWlsZWREZXBlbmRlbmN5OiA0MjQsXG4gIFRvb0Vhcmx5OiA0MjUsXG4gIFVwZ3JhZGVSZXF1aXJlZDogNDI2LFxuICBQcmVjb25kaXRpb25SZXF1aXJlZDogNDI4LFxuICBUb29NYW55UmVxdWVzdHM6IDQyOSxcbiAgUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOiA0MzEsXG4gIFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOiA0NTEsXG4gIEludGVybmFsU2VydmVyRXJyb3I6IDUwMCxcbiAgTm90SW1wbGVtZW50ZWQ6IDUwMSxcbiAgQmFkR2F0ZXdheTogNTAyLFxuICBTZXJ2aWNlVW5hdmFpbGFibGU6IDUwMyxcbiAgR2F0ZXdheVRpbWVvdXQ6IDUwNCxcbiAgSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6IDUwNSxcbiAgVmFyaWFudEFsc29OZWdvdGlhdGVzOiA1MDYsXG4gIEluc3VmZmljaWVudFN0b3JhZ2U6IDUwNyxcbiAgTG9vcERldGVjdGVkOiA1MDgsXG4gIE5vdEV4dGVuZGVkOiA1MTAsXG4gIE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOiA1MTEsXG4gIFdlYlNlcnZlcklzRG93bjogNTIxLFxuICBDb25uZWN0aW9uVGltZWRPdXQ6IDUyMixcbiAgT3JpZ2luSXNVbnJlYWNoYWJsZTogNTIzLFxuICBUaW1lb3V0T2NjdXJyZWQ6IDUyNCxcbiAgU3NsSGFuZHNoYWtlRmFpbGVkOiA1MjUsXG4gIEludmFsaWRTc2xDZXJ0aWZpY2F0ZTogNTI2LFxufTtcblxuT2JqZWN0LmVudHJpZXMoSHR0cFN0YXR1c0NvZGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICBIdHRwU3RhdHVzQ29kZVt2YWx1ZV0gPSBrZXk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgSHR0cFN0YXR1c0NvZGU7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/HttpStatusCode.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/bind.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/bind.js ***!
|
||
\************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ bind)\n/* harmony export */ });\n\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxHQUFHO0FBQ2QsYUFBYSxVQUFVO0FBQ3ZCO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xcYmluZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlIGEgYm91bmQgdmVyc2lvbiBvZiBhIGZ1bmN0aW9uIHdpdGggYSBzcGVjaWZpZWQgYHRoaXNgIGNvbnRleHRcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiAtIFRoZSBmdW5jdGlvbiB0byBiaW5kXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgLSBUaGUgdmFsdWUgdG8gYmUgcGFzc2VkIGFzIHRoZSBgdGhpc2AgcGFyYW1ldGVyXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgbmV3IGZ1bmN0aW9uIHRoYXQgd2lsbCBjYWxsIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYHRoaXNgIGNvbnRleHRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/bind.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/buildURL.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/buildURL.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ buildURL)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/AxiosURLSearchParams.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js\");\n\n\n\n\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = options && options.encode || encode;\n\n const _options = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(options) ? {\n serialize: options\n } : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isURLSearchParams(params) ?\n params.toString() :\n new _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBYTs7QUFFbUI7QUFDc0M7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLG9CQUFvQjtBQUMvQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNlO0FBQ2Y7QUFDQTtBQUNBOztBQUVBOztBQUVBLG1CQUFtQixpREFBSztBQUN4QjtBQUNBLElBQUk7O0FBRUo7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSix1QkFBdUIsaURBQUs7QUFDNUI7QUFDQSxVQUFVLHdFQUFvQjtBQUM5Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xcYnVpbGRVUkwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IEF4aW9zVVJMU2VhcmNoUGFyYW1zIGZyb20gJy4uL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMnO1xuXG4vKipcbiAqIEl0IHJlcGxhY2VzIGFsbCBpbnN0YW5jZXMgb2YgdGhlIGNoYXJhY3RlcnMgYDpgLCBgJGAsIGAsYCwgYCtgLCBgW2AsIGFuZCBgXWAgd2l0aCB0aGVpclxuICogVVJJIGVuY29kZWQgY291bnRlcnBhcnRzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCBUaGUgdmFsdWUgdG8gYmUgZW5jb2RlZC5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW5jb2RlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIFVSTCBieSBhcHBlbmRpbmcgcGFyYW1zIHRvIHRoZSBlbmRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBiYXNlIG9mIHRoZSB1cmwgKGUuZy4sIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbSlcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBUaGUgcGFyYW1zIHRvIGJlIGFwcGVuZGVkXG4gKiBAcGFyYW0gez8ob2JqZWN0fEZ1bmN0aW9uKX0gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkVVJMKHVybCwgcGFyYW1zLCBvcHRpb25zKSB7XG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIGNvbnN0IF9lbmNvZGUgPSBvcHRpb25zICYmIG9wdGlvbnMuZW5jb2RlIHx8IGVuY29kZTtcblxuICBjb25zdCBfb3B0aW9ucyA9IHV0aWxzLmlzRnVuY3Rpb24ob3B0aW9ucykgPyB7XG4gICAgc2VyaWFsaXplOiBvcHRpb25zXG4gIH0gOiBvcHRpb25zO1xuXG4gIGNvbnN0IHNlcmlhbGl6ZUZuID0gX29wdGlvbnMgJiYgX29wdGlvbnMuc2VyaWFsaXplO1xuXG4gIGxldCBzZXJpYWxpemVkUGFyYW1zO1xuXG4gIGlmIChzZXJpYWxpemVGbikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBzZXJpYWxpemVGbihwYXJhbXMsIF9vcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gdXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSA/XG4gICAgICBwYXJhbXMudG9TdHJpbmcoKSA6XG4gICAgICBuZXcgQXhpb3NVUkxTZWFyY2hQYXJhbXMocGFyYW1zLCBfb3B0aW9ucykudG9TdHJpbmcoX2VuY29kZSk7XG4gIH1cblxuICBpZiAoc2VyaWFsaXplZFBhcmFtcykge1xuICAgIGNvbnN0IGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZihcIiNcIik7XG5cbiAgICBpZiAoaGFzaG1hcmtJbmRleCAhPT0gLTEpIHtcbiAgICAgIHVybCA9IHVybC5zbGljZSgwLCBoYXNobWFya0luZGV4KTtcbiAgICB9XG4gICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVkUGFyYW1zO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/buildURL.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/combineURLs.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/combineURLs.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ combineURLs)\n/* harmony export */ });\n\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21iaW5lVVJMcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGhlbHBlcnNcXGNvbWJpbmVVUkxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIHNwZWNpZmllZCBVUkxzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVVUkwgVGhlIHJlbGF0aXZlIFVSTFxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLz9cXC8kLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/combineURLs.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/composeSignals.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/composeSignals.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cancel/CanceledError.js */ \"(app-pages-browser)/./node_modules/axios/lib/cancel/CanceledError.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n\n\n\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? err : new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](`timeout of ${timeout}ms exceeded`, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].asap(unsubscribe);\n\n return signal;\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (composeSignals);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21wb3NlU2lnbmFscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXVEO0FBQ1I7QUFDZjs7QUFFaEM7QUFDQSxTQUFTLFFBQVE7O0FBRWpCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QywyREFBVSxhQUFhLGdFQUFhO0FBQzVFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQiwyREFBVSxlQUFlLFFBQVEsY0FBYywyREFBVTtBQUMzRSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsV0FBVyxRQUFROztBQUVuQiwrQkFBK0IsaURBQUs7O0FBRXBDO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxjQUFjLEVBQUMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGhlbHBlcnNcXGNvbXBvc2VTaWduYWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gXCIuLi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qc1wiO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSBcIi4uL2NvcmUvQXhpb3NFcnJvci5qc1wiO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcblxuY29uc3QgY29tcG9zZVNpZ25hbHMgPSAoc2lnbmFscywgdGltZW91dCkgPT4ge1xuICBjb25zdCB7bGVuZ3RofSA9IChzaWduYWxzID0gc2lnbmFscyA/IHNpZ25hbHMuZmlsdGVyKEJvb2xlYW4pIDogW10pO1xuXG4gIGlmICh0aW1lb3V0IHx8IGxlbmd0aCkge1xuICAgIGxldCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgbGV0IGFib3J0ZWQ7XG5cbiAgICBjb25zdCBvbmFib3J0ID0gZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgaWYgKCFhYm9ydGVkKSB7XG4gICAgICAgIGFib3J0ZWQgPSB0cnVlO1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICBjb25zdCBlcnIgPSByZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHJlYXNvbiA6IHRoaXMucmVhc29uO1xuICAgICAgICBjb250cm9sbGVyLmFib3J0KGVyciBpbnN0YW5jZW9mIEF4aW9zRXJyb3IgPyBlcnIgOiBuZXcgQ2FuY2VsZWRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHRpbWVyID0gdGltZW91dCAmJiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRpbWVyID0gbnVsbDtcbiAgICAgIG9uYWJvcnQobmV3IEF4aW9zRXJyb3IoYHRpbWVvdXQgb2YgJHt0aW1lb3V0fW1zIGV4Y2VlZGVkYCwgQXhpb3NFcnJvci5FVElNRURPVVQpKVxuICAgIH0sIHRpbWVvdXQpXG5cbiAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICAgIGlmIChzaWduYWxzKSB7XG4gICAgICAgIHRpbWVyICYmIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIHRpbWVyID0gbnVsbDtcbiAgICAgICAgc2lnbmFscy5mb3JFYWNoKHNpZ25hbCA9PiB7XG4gICAgICAgICAgc2lnbmFsLnVuc3Vic2NyaWJlID8gc2lnbmFsLnVuc3Vic2NyaWJlKG9uYWJvcnQpIDogc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25hYm9ydCk7XG4gICAgICAgIH0pO1xuICAgICAgICBzaWduYWxzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzaWduYWxzLmZvckVhY2goKHNpZ25hbCkgPT4gc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25hYm9ydCkpO1xuXG4gICAgY29uc3Qge3NpZ25hbH0gPSBjb250cm9sbGVyO1xuXG4gICAgc2lnbmFsLnVuc3Vic2NyaWJlID0gKCkgPT4gdXRpbHMuYXNhcCh1bnN1YnNjcmliZSk7XG5cbiAgICByZXR1cm4gc2lnbmFsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2VTaWduYWxzO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/composeSignals.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/cookies.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/cookies.js ***!
|
||
\***************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../platform/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/index.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFnQztBQUNZOztBQUU1QyxpRUFBZSwwREFBUTs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLEtBQUssR0FBRywwQkFBMEI7O0FBRTNELFVBQVUsaURBQUs7QUFDZiwrQkFBK0IsZ0NBQWdDO0FBQy9EO0FBQ0EsVUFBVSxpREFBSztBQUNmLDRCQUE0QixLQUFLO0FBQ2pDO0FBQ0EsVUFBVSxpREFBSztBQUNmLDhCQUE4QixPQUFPO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpREFBSztBQUNmLGdDQUFnQyxTQUFTO0FBQ3pDOztBQUVBLHVDQUF1QztBQUN2QyxLQUFLOztBQUVMO0FBQ0E7QUFDQSw2REFBNkQsa0JBQWtCO0FBQy9FO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGhlbHBlcnNcXGNvb2tpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudiA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIHN1cHBvcnQgZG9jdW1lbnQuY29va2llXG4gIHtcbiAgICB3cml0ZShuYW1lLCB2YWx1ZSwgZXhwaXJlcywgcGF0aCwgZG9tYWluLCBzZWN1cmUsIHNhbWVTaXRlKSB7XG4gICAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuXG4gICAgICBjb25zdCBjb29raWUgPSBbYCR7bmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUpfWBdO1xuXG4gICAgICBpZiAodXRpbHMuaXNOdW1iZXIoZXhwaXJlcykpIHtcbiAgICAgICAgY29va2llLnB1c2goYGV4cGlyZXM9JHtuZXcgRGF0ZShleHBpcmVzKS50b1VUQ1N0cmluZygpfWApO1xuICAgICAgfVxuICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKHBhdGgpKSB7XG4gICAgICAgIGNvb2tpZS5wdXNoKGBwYXRoPSR7cGF0aH1gKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dGlscy5pc1N0cmluZyhkb21haW4pKSB7XG4gICAgICAgIGNvb2tpZS5wdXNoKGBkb21haW49JHtkb21haW59YCk7XG4gICAgICB9XG4gICAgICBpZiAoc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dGlscy5pc1N0cmluZyhzYW1lU2l0ZSkpIHtcbiAgICAgICAgY29va2llLnB1c2goYFNhbWVTaXRlPSR7c2FtZVNpdGV9YCk7XG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZS5qb2luKCc7ICcpO1xuICAgIH0sXG5cbiAgICByZWFkKG5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyg/Ol58OyApJyArIG5hbWUgKyAnPShbXjtdKiknKSk7XG4gICAgICByZXR1cm4gbWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMV0pIDogbnVsbDtcbiAgICB9LFxuXG4gICAgcmVtb3ZlKG5hbWUpIHtcbiAgICAgIHRoaXMud3JpdGUobmFtZSwgJycsIERhdGUubm93KCkgLSA4NjQwMDAwMCwgJy8nKTtcbiAgICB9XG4gIH1cblxuICA6XG5cbiAgLy8gTm9uLXN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICB7XG4gICAgd3JpdGUoKSB7fSxcbiAgICByZWFkKCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICByZW1vdmUoKSB7fVxuICB9O1xuXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/cookies.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/formDataToJSON.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/formDataToJSON.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n\n\n\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(target) ? target.length : name;\n\n if (isLast) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFormData(formData) && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(formData.entries)) {\n const obj = {};\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (formDataToJSON);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9mb3JtRGF0YVRvSlNPTi5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFhOztBQUVtQjs7QUFFaEM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGlEQUFLO0FBQ2Q7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsU0FBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsNEJBQTRCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0IsaURBQUs7O0FBRXpCO0FBQ0EsVUFBVSxpREFBSztBQUNmO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwwQkFBMEIsaURBQUs7QUFDL0I7QUFDQTs7QUFFQTs7QUFFQSxrQkFBa0IsaURBQUs7QUFDdkI7QUFDQTs7QUFFQTtBQUNBOztBQUVBLE1BQU0saURBQUsseUJBQXlCLGlEQUFLO0FBQ3pDOztBQUVBLElBQUksaURBQUs7QUFDVDtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlFQUFlLGNBQWMsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xcZm9ybURhdGFUb0pTT04uanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuXG4vKipcbiAqIEl0IHRha2VzIGEgc3RyaW5nIGxpa2UgYGZvb1t4XVt5XVt6XWAgYW5kIHJldHVybnMgYW4gYXJyYXkgbGlrZSBgWydmb28nLCAneCcsICd5JywgJ3onXVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmdzLlxuICovXG5mdW5jdGlvbiBwYXJzZVByb3BQYXRoKG5hbWUpIHtcbiAgLy8gZm9vW3hdW3ldW3pdXG4gIC8vIGZvby54LnkuelxuICAvLyBmb28teC15LXpcbiAgLy8gZm9vIHggeSB6XG4gIHJldHVybiB1dGlscy5tYXRjaEFsbCgvXFx3K3xcXFsoXFx3KildL2csIG5hbWUpLm1hcChtYXRjaCA9PiB7XG4gICAgcmV0dXJuIG1hdGNoWzBdID09PSAnW10nID8gJycgOiBtYXRjaFsxXSB8fCBtYXRjaFswXTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhbiBhcnJheSB0byBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtBcnJheTxhbnk+fSBhcnIgLSBUaGUgYXJyYXkgdG8gY29udmVydCB0byBhbiBvYmplY3QuXG4gKlxuICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlIHNhbWUga2V5cyBhbmQgdmFsdWVzIGFzIHRoZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlUb09iamVjdChhcnIpIHtcbiAgY29uc3Qgb2JqID0ge307XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnIpO1xuICBsZXQgaTtcbiAgY29uc3QgbGVuID0ga2V5cy5sZW5ndGg7XG4gIGxldCBrZXk7XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07XG4gICAgb2JqW2tleV0gPSBhcnJba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgRm9ybURhdGEgb2JqZWN0IGFuZCByZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybURhdGEgVGhlIEZvcm1EYXRhIG9iamVjdCB0byBjb252ZXJ0IHRvIEpTT04uXG4gKlxuICogQHJldHVybnMge09iamVjdDxzdHJpbmcsIGFueT4gfCBudWxsfSBUaGUgY29udmVydGVkIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZm9ybURhdGFUb0pTT04oZm9ybURhdGEpIHtcbiAgZnVuY3Rpb24gYnVpbGRQYXRoKHBhdGgsIHZhbHVlLCB0YXJnZXQsIGluZGV4KSB7XG4gICAgbGV0IG5hbWUgPSBwYXRoW2luZGV4KytdO1xuXG4gICAgaWYgKG5hbWUgPT09ICdfX3Byb3RvX18nKSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IGlzTnVtZXJpY0tleSA9IE51bWJlci5pc0Zpbml0ZSgrbmFtZSk7XG4gICAgY29uc3QgaXNMYXN0ID0gaW5kZXggPj0gcGF0aC5sZW5ndGg7XG4gICAgbmFtZSA9ICFuYW1lICYmIHV0aWxzLmlzQXJyYXkodGFyZ2V0KSA/IHRhcmdldC5sZW5ndGggOiBuYW1lO1xuXG4gICAgaWYgKGlzTGFzdCkge1xuICAgICAgaWYgKHV0aWxzLmhhc093blByb3AodGFyZ2V0LCBuYW1lKSkge1xuICAgICAgICB0YXJnZXRbbmFtZV0gPSBbdGFyZ2V0W25hbWVdLCB2YWx1ZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc051bWVyaWNLZXk7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXRbbmFtZV0gfHwgIXV0aWxzLmlzT2JqZWN0KHRhcmdldFtuYW1lXSkpIHtcbiAgICAgIHRhcmdldFtuYW1lXSA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGJ1aWxkUGF0aChwYXRoLCB2YWx1ZSwgdGFyZ2V0W25hbWVdLCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0ICYmIHV0aWxzLmlzQXJyYXkodGFyZ2V0W25hbWVdKSkge1xuICAgICAgdGFyZ2V0W25hbWVdID0gYXJyYXlUb09iamVjdCh0YXJnZXRbbmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiAhaXNOdW1lcmljS2V5O1xuICB9XG5cbiAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZm9ybURhdGEpICYmIHV0aWxzLmlzRnVuY3Rpb24oZm9ybURhdGEuZW50cmllcykpIHtcbiAgICBjb25zdCBvYmogPSB7fTtcblxuICAgIHV0aWxzLmZvckVhY2hFbnRyeShmb3JtRGF0YSwgKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICBidWlsZFBhdGgocGFyc2VQcm9wUGF0aChuYW1lKSwgdmFsdWUsIG9iaiwgMCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1EYXRhVG9KU09OO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/formDataToJSON.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/isAbsoluteURL.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ isAbsoluteURL)\n/* harmony export */ });\n\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxoZWxwZXJzXFxpc0Fic29sdXRlVVJMLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxuICAvLyBSRkMgMzk4NiBkZWZpbmVzIHNjaGVtZSBuYW1lIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBhbmQgZm9sbG93ZWRcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXG4gIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAvXihbYS16XVthLXpcXGQrXFwtLl0qOik/XFwvXFwvL2kudGVzdCh1cmwpO1xufVxuXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/isAbsoluteURL.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/isAxiosError.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/isAxiosError.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ isAxiosError)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n\n\n\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(payload) && (payload.isAxiosError === true);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0F4aW9zRXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBYTs7QUFFbUI7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ2U7QUFDZixTQUFTLGlEQUFLO0FBQ2QiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGhlbHBlcnNcXGlzQXhpb3NFcnJvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvc1xuICpcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiB1dGlscy5pc09iamVjdChwYXlsb2FkKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/isAxiosError.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/isURLSameOrigin.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../platform/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/index.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, _platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].origin),\n _platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].navigator && /(msie|trident)/i.test(_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].navigator.userAgent)\n) : () => true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc1VSTFNhbWVPcmlnaW4uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEM7O0FBRTVDLGlFQUFlLDBEQUFRO0FBQ3ZCLHFCQUFxQiwwREFBUTs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxVQUFVLDBEQUFRO0FBQ2xCLEVBQUUsMERBQVEscUNBQXFDLDBEQUFRO0FBQ3ZELGNBQWMsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xcaXNVUkxTYW1lT3JpZ2luLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudiA/ICgob3JpZ2luLCBpc01TSUUpID0+ICh1cmwpID0+IHtcbiAgdXJsID0gbmV3IFVSTCh1cmwsIHBsYXRmb3JtLm9yaWdpbik7XG5cbiAgcmV0dXJuIChcbiAgICBvcmlnaW4ucHJvdG9jb2wgPT09IHVybC5wcm90b2NvbCAmJlxuICAgIG9yaWdpbi5ob3N0ID09PSB1cmwuaG9zdCAmJlxuICAgIChpc01TSUUgfHwgb3JpZ2luLnBvcnQgPT09IHVybC5wb3J0KVxuICApO1xufSkoXG4gIG5ldyBVUkwocGxhdGZvcm0ub3JpZ2luKSxcbiAgcGxhdGZvcm0ubmF2aWdhdG9yICYmIC8obXNpZXx0cmlkZW50KS9pLnRlc3QocGxhdGZvcm0ubmF2aWdhdG9yLnVzZXJBZ2VudClcbikgOiAoKSA9PiB0cnVlO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/isURLSameOrigin.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/null.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/null.js ***!
|
||
\************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// eslint-disable-next-line strict\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (null);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9udWxsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBLGlFQUFlLElBQUksRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xcbnVsbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RyaWN0XG5leHBvcnQgZGVmYXVsdCBudWxsO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/null.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/parseHeaders.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/parseHeaders.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n\n\n\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBYTs7QUFFbUI7O0FBRWhDO0FBQ0E7QUFDQSwwQkFBMEIsaURBQUs7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxoZWxwZXJzXFxwYXJzZUhlYWRlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuXG4vLyBSYXdBeGlvc0hlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG5jb25zdCBpZ25vcmVEdXBsaWNhdGVPZiA9IHV0aWxzLnRvT2JqZWN0U2V0KFtcbiAgJ2FnZScsICdhdXRob3JpemF0aW9uJywgJ2NvbnRlbnQtbGVuZ3RoJywgJ2NvbnRlbnQtdHlwZScsICdldGFnJyxcbiAgJ2V4cGlyZXMnLCAnZnJvbScsICdob3N0JywgJ2lmLW1vZGlmaWVkLXNpbmNlJywgJ2lmLXVubW9kaWZpZWQtc2luY2UnLFxuICAnbGFzdC1tb2RpZmllZCcsICdsb2NhdGlvbicsICdtYXgtZm9yd2FyZHMnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICdyZWZlcmVyJywgJ3JldHJ5LWFmdGVyJywgJ3VzZXItYWdlbnQnXG5dKTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHJhd0hlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IEhlYWRlcnMgcGFyc2VkIGludG8gYW4gb2JqZWN0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IHJhd0hlYWRlcnMgPT4ge1xuICBjb25zdCBwYXJzZWQgPSB7fTtcbiAgbGV0IGtleTtcbiAgbGV0IHZhbDtcbiAgbGV0IGk7XG5cbiAgcmF3SGVhZGVycyAmJiByYXdIZWFkZXJzLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGtleSA9IGxpbmUuc3Vic3RyaW5nKDAsIGkpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IGxpbmUuc3Vic3RyaW5nKGkgKyAxKS50cmltKCk7XG5cbiAgICBpZiAoIWtleSB8fCAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2Zba2V5XSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgIGlmIChwYXJzZWRba2V5XSkge1xuICAgICAgICBwYXJzZWRba2V5XS5wdXNoKHZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRba2V5XSA9IFt2YWxdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/parseHeaders.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/parseProtocol.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/parseProtocol.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ parseProtocol)\n/* harmony export */ });\n\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZVByb3RvY29sLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBYTs7QUFFRTtBQUNmLDBCQUEwQixLQUFLO0FBQy9CO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGhlbHBlcnNcXHBhcnNlUHJvdG9jb2wuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZVByb3RvY29sKHVybCkge1xuICBjb25zdCBtYXRjaCA9IC9eKFstK1xcd117MSwyNX0pKDo/XFwvXFwvfDopLy5leGVjKHVybCk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/parseProtocol.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/progressEventReducer.js":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/progressEventReducer.js ***!
|
||
\****************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ asyncDecorator: () => (/* binding */ asyncDecorator),\n/* harmony export */ progressEventDecorator: () => (/* binding */ progressEventDecorator),\n/* harmony export */ progressEventReducer: () => (/* binding */ progressEventReducer)\n/* harmony export */ });\n/* harmony import */ var _speedometer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./speedometer.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/speedometer.js\");\n/* harmony import */ var _throttle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./throttle.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/throttle.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n\n\n\n\nconst progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = (0,_speedometer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(50, 250);\n\n return (0,_throttle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nconst progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nconst asyncDecorator = (fn) => (...args) => _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].asap(() => fn(...args));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wcm9ncmVzc0V2ZW50UmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBMkM7QUFDTjtBQUNMOztBQUV6QjtBQUNQO0FBQ0EsdUJBQXVCLDJEQUFXOztBQUVsQyxTQUFTLHdEQUFRO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVPLDRDQUE0QyxpREFBSyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xccHJvZ3Jlc3NFdmVudFJlZHVjZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNwZWVkb21ldGVyIGZyb20gXCIuL3NwZWVkb21ldGVyLmpzXCI7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcIi4vdGhyb3R0bGUuanNcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGNvbnN0IHByb2dyZXNzRXZlbnRSZWR1Y2VyID0gKGxpc3RlbmVyLCBpc0Rvd25sb2FkU3RyZWFtLCBmcmVxID0gMykgPT4ge1xuICBsZXQgYnl0ZXNOb3RpZmllZCA9IDA7XG4gIGNvbnN0IF9zcGVlZG9tZXRlciA9IHNwZWVkb21ldGVyKDUwLCAyNTApO1xuXG4gIHJldHVybiB0aHJvdHRsZShlID0+IHtcbiAgICBjb25zdCBsb2FkZWQgPSBlLmxvYWRlZDtcbiAgICBjb25zdCB0b3RhbCA9IGUubGVuZ3RoQ29tcHV0YWJsZSA/IGUudG90YWwgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcHJvZ3Jlc3NCeXRlcyA9IGxvYWRlZCAtIGJ5dGVzTm90aWZpZWQ7XG4gICAgY29uc3QgcmF0ZSA9IF9zcGVlZG9tZXRlcihwcm9ncmVzc0J5dGVzKTtcbiAgICBjb25zdCBpblJhbmdlID0gbG9hZGVkIDw9IHRvdGFsO1xuXG4gICAgYnl0ZXNOb3RpZmllZCA9IGxvYWRlZDtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBsb2FkZWQsXG4gICAgICB0b3RhbCxcbiAgICAgIHByb2dyZXNzOiB0b3RhbCA/IChsb2FkZWQgLyB0b3RhbCkgOiB1bmRlZmluZWQsXG4gICAgICBieXRlczogcHJvZ3Jlc3NCeXRlcyxcbiAgICAgIHJhdGU6IHJhdGUgPyByYXRlIDogdW5kZWZpbmVkLFxuICAgICAgZXN0aW1hdGVkOiByYXRlICYmIHRvdGFsICYmIGluUmFuZ2UgPyAodG90YWwgLSBsb2FkZWQpIC8gcmF0ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGV2ZW50OiBlLFxuICAgICAgbGVuZ3RoQ29tcHV0YWJsZTogdG90YWwgIT0gbnVsbCxcbiAgICAgIFtpc0Rvd25sb2FkU3RyZWFtID8gJ2Rvd25sb2FkJyA6ICd1cGxvYWQnXTogdHJ1ZVxuICAgIH07XG5cbiAgICBsaXN0ZW5lcihkYXRhKTtcbiAgfSwgZnJlcSk7XG59XG5cbmV4cG9ydCBjb25zdCBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yID0gKHRvdGFsLCB0aHJvdHRsZWQpID0+IHtcbiAgY29uc3QgbGVuZ3RoQ29tcHV0YWJsZSA9IHRvdGFsICE9IG51bGw7XG5cbiAgcmV0dXJuIFsobG9hZGVkKSA9PiB0aHJvdHRsZWRbMF0oe1xuICAgIGxlbmd0aENvbXB1dGFibGUsXG4gICAgdG90YWwsXG4gICAgbG9hZGVkXG4gIH0pLCB0aHJvdHRsZWRbMV1dO1xufVxuXG5leHBvcnQgY29uc3QgYXN5bmNEZWNvcmF0b3IgPSAoZm4pID0+ICguLi5hcmdzKSA9PiB1dGlscy5hc2FwKCgpID0+IGZuKC4uLmFyZ3MpKTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/progressEventReducer.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/resolveConfig.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/resolveConfig.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../platform/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/index.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isURLSameOrigin.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/isURLSameOrigin.js\");\n/* harmony import */ var _cookies_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./cookies.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/cookies.js\");\n/* harmony import */ var _core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/buildFullPath.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/buildFullPath.js\");\n/* harmony import */ var _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/mergeConfig.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/mergeConfig.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _buildURL_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./buildURL.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/buildURL.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((config) => {\n const newConfig = (0,_core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(headers);\n\n newConfig.url = (0,_buildURL_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isFormData(data)) {\n if (_platform_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hasStandardBrowserEnv || _platform_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (_utils_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (_platform_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hasStandardBrowserEnv) {\n withXSRFToken && _utils_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && (0,_isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && _cookies_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9yZXNvbHZlQ29uZmlnLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUE0QztBQUNaO0FBQ21CO0FBQ2hCO0FBQ2tCO0FBQ0o7QUFDRTtBQUNkOztBQUVyQyxpRUFBZTtBQUNmLG9CQUFvQixnRUFBVyxHQUFHOztBQUVsQyxRQUFRLHFFQUFxRTs7QUFFN0UsZ0NBQWdDLDZEQUFZOztBQUU1QyxrQkFBa0Isd0RBQVEsQ0FBQyxrRUFBYTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0saURBQUs7QUFDWCxRQUFRLDBEQUFRLDBCQUEwQiwwREFBUTtBQUNsRCx5Q0FBeUM7QUFDekMsTUFBTSxTQUFTLGlEQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSwwREFBUTtBQUNkLHFCQUFxQixpREFBSzs7QUFFMUIscURBQXFELCtEQUFlO0FBQ3BFO0FBQ0EsNERBQTRELG1EQUFPOztBQUVuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xccmVzb2x2ZUNvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGxhdGZvcm0gZnJvbSBcIi4uL3BsYXRmb3JtL2luZGV4LmpzXCI7XG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgaXNVUkxTYW1lT3JpZ2luIGZyb20gXCIuL2lzVVJMU2FtZU9yaWdpbi5qc1wiO1xuaW1wb3J0IGNvb2tpZXMgZnJvbSBcIi4vY29va2llcy5qc1wiO1xuaW1wb3J0IGJ1aWxkRnVsbFBhdGggZnJvbSBcIi4uL2NvcmUvYnVpbGRGdWxsUGF0aC5qc1wiO1xuaW1wb3J0IG1lcmdlQ29uZmlnIGZyb20gXCIuLi9jb3JlL21lcmdlQ29uZmlnLmpzXCI7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gXCIuLi9jb3JlL0F4aW9zSGVhZGVycy5qc1wiO1xuaW1wb3J0IGJ1aWxkVVJMIGZyb20gXCIuL2J1aWxkVVJMLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChjb25maWcpID0+IHtcbiAgY29uc3QgbmV3Q29uZmlnID0gbWVyZ2VDb25maWcoe30sIGNvbmZpZyk7XG5cbiAgbGV0IHsgZGF0YSwgd2l0aFhTUkZUb2tlbiwgeHNyZkhlYWRlck5hbWUsIHhzcmZDb29raWVOYW1lLCBoZWFkZXJzLCBhdXRoIH0gPSBuZXdDb25maWc7XG5cbiAgbmV3Q29uZmlnLmhlYWRlcnMgPSBoZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oaGVhZGVycyk7XG5cbiAgbmV3Q29uZmlnLnVybCA9IGJ1aWxkVVJMKGJ1aWxkRnVsbFBhdGgobmV3Q29uZmlnLmJhc2VVUkwsIG5ld0NvbmZpZy51cmwsIG5ld0NvbmZpZy5hbGxvd0Fic29sdXRlVXJscyksIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKTtcblxuICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gIGlmIChhdXRoKSB7XG4gICAgaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArXG4gICAgICBidG9hKChhdXRoLnVzZXJuYW1lIHx8ICcnKSArICc6JyArIChhdXRoLnBhc3N3b3JkID8gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGF1dGgucGFzc3dvcmQpKSA6ICcnKSlcbiAgICApO1xuICB9XG5cbiAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZGF0YSkpIHtcbiAgICBpZiAocGxhdGZvcm0uaGFzU3RhbmRhcmRCcm93c2VyRW52IHx8IHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudikge1xuICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZSh1bmRlZmluZWQpOyAvLyBicm93c2VyIGhhbmRsZXMgaXRcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzRnVuY3Rpb24oZGF0YS5nZXRIZWFkZXJzKSkge1xuICAgICAgLy8gTm9kZS5qcyBGb3JtRGF0YSAobGlrZSBmb3JtLWRhdGEgcGFja2FnZSlcbiAgICAgIGNvbnN0IGZvcm1IZWFkZXJzID0gZGF0YS5nZXRIZWFkZXJzKCk7XG4gICAgICAvLyBPbmx5IHNldCBzYWZlIGhlYWRlcnMgdG8gYXZvaWQgb3ZlcndyaXRpbmcgc2VjdXJpdHkgaGVhZGVyc1xuICAgICAgY29uc3QgYWxsb3dlZEhlYWRlcnMgPSBbJ2NvbnRlbnQtdHlwZScsICdjb250ZW50LWxlbmd0aCddO1xuICAgICAgT2JqZWN0LmVudHJpZXMoZm9ybUhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKGFsbG93ZWRIZWFkZXJzLmluY2x1ZGVzKGtleS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgIGhlYWRlcnMuc2V0KGtleSwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9ICBcblxuICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgLy8gVGhpcyBpcyBvbmx5IGRvbmUgaWYgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG5cbiAgaWYgKHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudikge1xuICAgIHdpdGhYU1JGVG9rZW4gJiYgdXRpbHMuaXNGdW5jdGlvbih3aXRoWFNSRlRva2VuKSAmJiAod2l0aFhTUkZUb2tlbiA9IHdpdGhYU1JGVG9rZW4obmV3Q29uZmlnKSk7XG5cbiAgICBpZiAod2l0aFhTUkZUb2tlbiB8fCAod2l0aFhTUkZUb2tlbiAhPT0gZmFsc2UgJiYgaXNVUkxTYW1lT3JpZ2luKG5ld0NvbmZpZy51cmwpKSkge1xuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICBjb25zdCB4c3JmVmFsdWUgPSB4c3JmSGVhZGVyTmFtZSAmJiB4c3JmQ29va2llTmFtZSAmJiBjb29raWVzLnJlYWQoeHNyZkNvb2tpZU5hbWUpO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIGhlYWRlcnMuc2V0KHhzcmZIZWFkZXJOYW1lLCB4c3JmVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdDb25maWc7XG59XG5cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/resolveConfig.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/speedometer.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/speedometer.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (speedometer);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcGVlZG9tZXRlci5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWE7O0FBRWI7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFdBQVcsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xcc3BlZWRvbWV0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENhbGN1bGF0ZSBkYXRhIG1heFJhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbc2FtcGxlc0NvdW50PSAxMF1cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbWluPSAxMDAwXVxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBzcGVlZG9tZXRlcihzYW1wbGVzQ291bnQsIG1pbikge1xuICBzYW1wbGVzQ291bnQgPSBzYW1wbGVzQ291bnQgfHwgMTA7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IEFycmF5KHNhbXBsZXNDb3VudCk7XG4gIGNvbnN0IHRpbWVzdGFtcHMgPSBuZXcgQXJyYXkoc2FtcGxlc0NvdW50KTtcbiAgbGV0IGhlYWQgPSAwO1xuICBsZXQgdGFpbCA9IDA7XG4gIGxldCBmaXJzdFNhbXBsZVRTO1xuXG4gIG1pbiA9IG1pbiAhPT0gdW5kZWZpbmVkID8gbWluIDogMTAwMDtcblxuICByZXR1cm4gZnVuY3Rpb24gcHVzaChjaHVua0xlbmd0aCkge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICBjb25zdCBzdGFydGVkQXQgPSB0aW1lc3RhbXBzW3RhaWxdO1xuXG4gICAgaWYgKCFmaXJzdFNhbXBsZVRTKSB7XG4gICAgICBmaXJzdFNhbXBsZVRTID0gbm93O1xuICAgIH1cblxuICAgIGJ5dGVzW2hlYWRdID0gY2h1bmtMZW5ndGg7XG4gICAgdGltZXN0YW1wc1toZWFkXSA9IG5vdztcblxuICAgIGxldCBpID0gdGFpbDtcbiAgICBsZXQgYnl0ZXNDb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoaSAhPT0gaGVhZCkge1xuICAgICAgYnl0ZXNDb3VudCArPSBieXRlc1tpKytdO1xuICAgICAgaSA9IGkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaGVhZCA9IChoZWFkICsgMSkgJSBzYW1wbGVzQ291bnQ7XG5cbiAgICBpZiAoaGVhZCA9PT0gdGFpbCkge1xuICAgICAgdGFpbCA9ICh0YWlsICsgMSkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaWYgKG5vdyAtIGZpcnN0U2FtcGxlVFMgPCBtaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXNzZWQgPSBzdGFydGVkQXQgJiYgbm93IC0gc3RhcnRlZEF0O1xuXG4gICAgcmV0dXJuIHBhc3NlZCA/IE1hdGgucm91bmQoYnl0ZXNDb3VudCAqIDEwMDAgLyBwYXNzZWQpIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBzcGVlZG9tZXRlcjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/speedometer.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/spread.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/spread.js ***!
|
||
\**************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ spread)\n/* harmony export */ });\n\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcHJlYWQuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQjtBQUNBLGFBQWE7QUFDYjtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGhlbHBlcnNcXHNwcmVhZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU3ludGFjdGljIHN1Z2FyIGZvciBpbnZva2luZyBhIGZ1bmN0aW9uIGFuZCBleHBhbmRpbmcgYW4gYXJyYXkgZm9yIGFyZ3VtZW50cy5cbiAqXG4gKiBDb21tb24gdXNlIGNhc2Ugd291bGQgYmUgdG8gdXNlIGBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHlgLlxuICpcbiAqICBgYGBqc1xuICogIGZ1bmN0aW9uIGYoeCwgeSwgeikge31cbiAqICBjb25zdCBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKlxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoYXJyKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/spread.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/throttle.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/throttle.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (throttle);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90aHJvdHRsZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xcdGhyb3R0bGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaHJvdHRsZSBkZWNvcmF0b3JcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcGFyYW0ge051bWJlcn0gZnJlcVxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlKGZuLCBmcmVxKSB7XG4gIGxldCB0aW1lc3RhbXAgPSAwO1xuICBsZXQgdGhyZXNob2xkID0gMTAwMCAvIGZyZXE7XG4gIGxldCBsYXN0QXJncztcbiAgbGV0IHRpbWVyO1xuXG4gIGNvbnN0IGludm9rZSA9IChhcmdzLCBub3cgPSBEYXRlLm5vdygpKSA9PiB7XG4gICAgdGltZXN0YW1wID0gbm93O1xuICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICB0aW1lciA9IG51bGw7XG4gICAgfVxuICAgIGZuKC4uLmFyZ3MpO1xuICB9XG5cbiAgY29uc3QgdGhyb3R0bGVkID0gKC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHBhc3NlZCA9IG5vdyAtIHRpbWVzdGFtcDtcbiAgICBpZiAoIHBhc3NlZCA+PSB0aHJlc2hvbGQpIHtcbiAgICAgIGludm9rZShhcmdzLCBub3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0QXJncyA9IGFyZ3M7XG4gICAgICBpZiAoIXRpbWVyKSB7XG4gICAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGltZXIgPSBudWxsO1xuICAgICAgICAgIGludm9rZShsYXN0QXJncylcbiAgICAgICAgfSwgdGhyZXNob2xkIC0gcGFzc2VkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBmbHVzaCA9ICgpID0+IGxhc3RBcmdzICYmIGludm9rZShsYXN0QXJncyk7XG5cbiAgcmV0dXJuIFt0aHJvdHRsZWQsIGZsdXNoXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdGhyb3R0bGU7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/throttle.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/toFormData.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/toFormData.js ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _platform_node_classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/node/classes/FormData.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/null.js\");\n/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"(app-pages-browser)/./node_modules/next/dist/compiled/buffer/index.js\")[\"Buffer\"];\n\n\n\n\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\n\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isPlainObject(thing) || _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toFlatObject(_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (_platform_node_classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isSpecCompliantForm(formData);\n\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isDate(value)) {\n return value.toISOString();\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isBlob(value)) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Blob is not supported. Use a Buffer instead.');\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArrayBuffer(value) || _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(value) && isFlatArray(value)) ||\n ((_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFileList(value) || _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].endsWith(key, '[]')) && (arr = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(value, function each(el, key) {\n const result = !(_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUndefined(el) || el === null) && visitor.call(\n formData, el, _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toFormData);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b0Zvcm1EYXRhLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWE7O0FBRW1CO0FBQ2U7QUFDL0M7QUFDb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUyxpREFBSyx5QkFBeUIsaURBQUs7QUFDNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxTQUFTLGlEQUFLO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxTQUFTLGlEQUFLO0FBQ2Q7O0FBRUEsbUJBQW1CLGlEQUFLLGNBQWMsaURBQUssSUFBSTtBQUMvQztBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsa0JBQWtCO0FBQzdCLFdBQVcsUUFBUTtBQUNuQixXQUFXLHFCQUFxQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8saURBQUs7QUFDWjtBQUNBOztBQUVBO0FBQ0EsOEJBQThCLDBFQUFnQjs7QUFFOUM7QUFDQSxZQUFZLGlEQUFLO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLFlBQVksaURBQUs7QUFDakIsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsaURBQUs7O0FBRWhDLE9BQU8saURBQUs7QUFDWjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSxpREFBSztBQUNiO0FBQ0E7O0FBRUEsUUFBUSxpREFBSztBQUNiO0FBQ0E7O0FBRUEsb0JBQW9CLGlEQUFLO0FBQ3pCLGdCQUFnQiwyREFBVTtBQUMxQjs7QUFFQSxRQUFRLGlEQUFLLHlCQUF5QixpREFBSztBQUMzQyx5RUFBeUUsTUFBTTtBQUMvRTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsR0FBRztBQUNoQixhQUFhLGVBQWU7QUFDNUIsYUFBYSxzQkFBc0I7QUFDbkMsWUFBWTtBQUNaO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVUsaURBQUssa0JBQWtCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLFNBQVMsaURBQUs7QUFDZCxVQUFVLGlEQUFLLHNCQUFzQixpREFBSyxnQ0FBZ0MsaURBQUs7QUFDL0U7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxpREFBSztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsUUFBUSxpREFBSzs7QUFFYjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsSUFBSSxpREFBSztBQUNULHVCQUF1QixpREFBSztBQUM1QixzQkFBc0IsaURBQUs7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBLE9BQU8saURBQUs7QUFDWjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsaUVBQWUsVUFBVSxFQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxoZWxwZXJzXFx0b0Zvcm1EYXRhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4uL2NvcmUvQXhpb3NFcnJvci5qcyc7XG4vLyB0ZW1wb3JhcnkgaG90Zml4IHRvIGF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXMgdW50aWwgQXhpb3NVUkxTZWFyY2hQYXJhbXMgaXMgcmVmYWN0b3JlZFxuaW1wb3J0IFBsYXRmb3JtRm9ybURhdGEgZnJvbSAnLi4vcGxhdGZvcm0vbm9kZS9jbGFzc2VzL0Zvcm1EYXRhLmpzJztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiB0aGluZyBpcyBhIGFycmF5IG9yIGpzIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGhpbmcgLSBUaGUgb2JqZWN0IG9yIGFycmF5IHRvIGJlIHZpc2l0ZWQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmlzaXRhYmxlKHRoaW5nKSB7XG4gIHJldHVybiB1dGlscy5pc1BsYWluT2JqZWN0KHRoaW5nKSB8fCB1dGlscy5pc0FycmF5KHRoaW5nKTtcbn1cblxuLyoqXG4gKiBJdCByZW1vdmVzIHRoZSBicmFja2V0cyBmcm9tIHRoZSBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSBvZiB0aGUgcGFyYW1ldGVyLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBrZXkgd2l0aG91dCB0aGUgYnJhY2tldHMuXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUJyYWNrZXRzKGtleSkge1xuICByZXR1cm4gdXRpbHMuZW5kc1dpdGgoa2V5LCAnW10nKSA/IGtleS5zbGljZSgwLCAtMikgOiBrZXk7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBwYXRoLCBhIGtleSwgYW5kIGEgYm9vbGVhbiwgYW5kIHJldHVybnMgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IGtleS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBjdXJyZW50IG9iamVjdCBiZWluZyBpdGVyYXRlZCBvdmVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGRvdHMgLSBJZiB0cnVlLCB0aGUga2V5IHdpbGwgYmUgcmVuZGVyZWQgd2l0aCBkb3RzIGluc3RlYWQgb2YgYnJhY2tldHMuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHBhdGggdG8gdGhlIGN1cnJlbnQga2V5LlxuICovXG5mdW5jdGlvbiByZW5kZXJLZXkocGF0aCwga2V5LCBkb3RzKSB7XG4gIGlmICghcGF0aCkgcmV0dXJuIGtleTtcbiAgcmV0dXJuIHBhdGguY29uY2F0KGtleSkubWFwKGZ1bmN0aW9uIGVhY2godG9rZW4sIGkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICB0b2tlbiA9IHJlbW92ZUJyYWNrZXRzKHRva2VuKTtcbiAgICByZXR1cm4gIWRvdHMgJiYgaSA/ICdbJyArIHRva2VuICsgJ10nIDogdG9rZW47XG4gIH0pLmpvaW4oZG90cyA/ICcuJyA6ICcnKTtcbn1cblxuLyoqXG4gKiBJZiB0aGUgYXJyYXkgaXMgYW4gYXJyYXkgYW5kIG5vbmUgb2YgaXRzIGVsZW1lbnRzIGFyZSB2aXNpdGFibGUsIHRoZW4gaXQncyBhIGZsYXQgYXJyYXkuXG4gKlxuICogQHBhcmFtIHtBcnJheTxhbnk+fSBhcnIgLSBUaGUgYXJyYXkgdG8gY2hlY2tcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNGbGF0QXJyYXkoYXJyKSB7XG4gIHJldHVybiB1dGlscy5pc0FycmF5KGFycikgJiYgIWFyci5zb21lKGlzVmlzaXRhYmxlKTtcbn1cblxuY29uc3QgcHJlZGljYXRlcyA9IHV0aWxzLnRvRmxhdE9iamVjdCh1dGlscywge30sIG51bGwsIGZ1bmN0aW9uIGZpbHRlcihwcm9wKSB7XG4gIHJldHVybiAvXmlzW0EtWl0vLnRlc3QocHJvcCk7XG59KTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgZGF0YSBvYmplY3QgdG8gRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcGFyYW0gez9PYmplY3R9IFtmb3JtRGF0YV1cbiAqIEBwYXJhbSB7P09iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy52aXNpdG9yXVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5tZXRhVG9rZW5zID0gdHJ1ZV1cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuZG90cyA9IGZhbHNlXVxuICogQHBhcmFtIHs/Qm9vbGVhbn0gW29wdGlvbnMuaW5kZXhlcyA9IGZhbHNlXVxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKiovXG5cbi8qKlxuICogSXQgY29udmVydHMgYW4gb2JqZWN0IGludG8gYSBGb3JtRGF0YSBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdDxhbnksIGFueT59IG9iaiAtIFRoZSBvYmplY3QgdG8gY29udmVydCB0byBmb3JtIGRhdGEuXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybURhdGEgLSBUaGUgRm9ybURhdGEgb2JqZWN0IHRvIGFwcGVuZCB0by5cbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIHRvRm9ybURhdGEob2JqLCBmb3JtRGF0YSwgb3B0aW9ucykge1xuICBpZiAoIXV0aWxzLmlzT2JqZWN0KG9iaikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBmb3JtRGF0YSA9IGZvcm1EYXRhIHx8IG5ldyAoUGxhdGZvcm1Gb3JtRGF0YSB8fCBGb3JtRGF0YSkoKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgb3B0aW9ucyA9IHV0aWxzLnRvRmxhdE9iamVjdChvcHRpb25zLCB7XG4gICAgbWV0YVRva2VuczogdHJ1ZSxcbiAgICBkb3RzOiBmYWxzZSxcbiAgICBpbmRleGVzOiBmYWxzZVxuICB9LCBmYWxzZSwgZnVuY3Rpb24gZGVmaW5lZChvcHRpb24sIHNvdXJjZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lcS1udWxsLGVxZXFlcVxuICAgIHJldHVybiAhdXRpbHMuaXNVbmRlZmluZWQoc291cmNlW29wdGlvbl0pO1xuICB9KTtcblxuICBjb25zdCBtZXRhVG9rZW5zID0gb3B0aW9ucy5tZXRhVG9rZW5zO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgY29uc3QgdmlzaXRvciA9IG9wdGlvbnMudmlzaXRvciB8fCBkZWZhdWx0VmlzaXRvcjtcbiAgY29uc3QgZG90cyA9IG9wdGlvbnMuZG90cztcbiAgY29uc3QgaW5kZXhlcyA9IG9wdGlvbnMuaW5kZXhlcztcbiAgY29uc3QgX0Jsb2IgPSBvcHRpb25zLkJsb2IgfHwgdHlwZW9mIEJsb2IgIT09ICd1bmRlZmluZWQnICYmIEJsb2I7XG4gIGNvbnN0IHVzZUJsb2IgPSBfQmxvYiAmJiB1dGlscy5pc1NwZWNDb21wbGlhbnRGb3JtKGZvcm1EYXRhKTtcblxuICBpZiAoIXV0aWxzLmlzRnVuY3Rpb24odmlzaXRvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2aXNpdG9yIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgZnVuY3Rpb24gY29udmVydFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gJyc7XG5cbiAgICBpZiAodXRpbHMuaXNEYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQm9vbGVhbih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICghdXNlQmxvYiAmJiB1dGlscy5pc0Jsb2IodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlcih2YWx1ZSkgfHwgdXRpbHMuaXNUeXBlZEFycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHVzZUJsb2IgJiYgdHlwZW9mIEJsb2IgPT09ICdmdW5jdGlvbicgPyBuZXcgQmxvYihbdmFsdWVdKSA6IEJ1ZmZlci5mcm9tKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCB2aXNpdG9yLlxuICAgKlxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0ga2V5XG4gICAqIEBwYXJhbSB7QXJyYXk8U3RyaW5nfE51bWJlcj59IHBhdGhcbiAgICogQHRoaXMge0Zvcm1EYXRhfVxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gcmV0dXJuIHRydWUgdG8gdmlzaXQgdGhlIGVhY2ggcHJvcCBvZiB0aGUgdmFsdWUgcmVjdXJzaXZlbHlcbiAgICovXG4gIGZ1bmN0aW9uIGRlZmF1bHRWaXNpdG9yKHZhbHVlLCBrZXksIHBhdGgpIHtcbiAgICBsZXQgYXJyID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUgJiYgIXBhdGggJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHV0aWxzLmVuZHNXaXRoKGtleSwgJ3t9JykpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGtleSA9IG1ldGFUb2tlbnMgPyBrZXkgOiBrZXkuc2xpY2UoMCwgLTIpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodXRpbHMuaXNBcnJheSh2YWx1ZSkgJiYgaXNGbGF0QXJyYXkodmFsdWUpKSB8fFxuICAgICAgICAoKHV0aWxzLmlzRmlsZUxpc3QodmFsdWUpIHx8IHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykpICYmIChhcnIgPSB1dGlscy50b0FycmF5KHZhbHVlKSlcbiAgICAgICAgKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAga2V5ID0gcmVtb3ZlQnJhY2tldHMoa2V5KTtcblxuICAgICAgICBhcnIuZm9yRWFjaChmdW5jdGlvbiBlYWNoKGVsLCBpbmRleCkge1xuICAgICAgICAgICEodXRpbHMuaXNVbmRlZmluZWQoZWwpIHx8IGVsID09PSBudWxsKSAmJiBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmVzdGVkLXRlcm5hcnlcbiAgICAgICAgICAgIGluZGV4ZXMgPT09IHRydWUgPyByZW5kZXJLZXkoW2tleV0sIGluZGV4LCBkb3RzKSA6IChpbmRleGVzID09PSBudWxsID8ga2V5IDoga2V5ICsgJ1tdJyksXG4gICAgICAgICAgICBjb252ZXJ0VmFsdWUoZWwpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNWaXNpdGFibGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQocmVuZGVyS2V5KHBhdGgsIGtleSwgZG90cyksIGNvbnZlcnRWYWx1ZSh2YWx1ZSkpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc3RhY2sgPSBbXTtcblxuICBjb25zdCBleHBvc2VkSGVscGVycyA9IE9iamVjdC5hc3NpZ24ocHJlZGljYXRlcywge1xuICAgIGRlZmF1bHRWaXNpdG9yLFxuICAgIGNvbnZlcnRWYWx1ZSxcbiAgICBpc1Zpc2l0YWJsZVxuICB9KTtcblxuICBmdW5jdGlvbiBidWlsZCh2YWx1ZSwgcGF0aCkge1xuICAgIGlmICh1dGlscy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVybjtcblxuICAgIGlmIChzdGFjay5pbmRleE9mKHZhbHVlKSAhPT0gLTEpIHtcbiAgICAgIHRocm93IEVycm9yKCdDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gJyArIHBhdGguam9pbignLicpKTtcbiAgICB9XG5cbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcblxuICAgIHV0aWxzLmZvckVhY2godmFsdWUsIGZ1bmN0aW9uIGVhY2goZWwsIGtleSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gISh1dGlscy5pc1VuZGVmaW5lZChlbCkgfHwgZWwgPT09IG51bGwpICYmIHZpc2l0b3IuY2FsbChcbiAgICAgICAgZm9ybURhdGEsIGVsLCB1dGlscy5pc1N0cmluZyhrZXkpID8ga2V5LnRyaW0oKSA6IGtleSwgcGF0aCwgZXhwb3NlZEhlbHBlcnNcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgYnVpbGQoZWwsIHBhdGggPyBwYXRoLmNvbmNhdChrZXkpIDogW2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3RhY2sucG9wKCk7XG4gIH1cblxuICBpZiAoIXV0aWxzLmlzT2JqZWN0KG9iaikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkYXRhIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cblxuICBidWlsZChvYmopO1xuXG4gIHJldHVybiBmb3JtRGF0YTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9Gb3JtRGF0YTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/toFormData.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/toURLEncodedForm.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/toURLEncodedForm.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ toURLEncodedForm)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _toFormData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toFormData.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/toFormData.js\");\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/index.js\");\n\n\n\n\n\n\nfunction toURLEncodedForm(data, options) {\n return (0,_toFormData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, new _platform_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (_platform_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isNode && _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b1VSTEVuY29kZWRGb3JtLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBYTs7QUFFbUI7QUFDUztBQUNHOztBQUU3QjtBQUNmLFNBQVMsMERBQVUsV0FBVywwREFBUTtBQUN0QztBQUNBLFVBQVUsMERBQVEsV0FBVyxpREFBSztBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXGhlbHBlcnNcXHRvVVJMRW5jb2RlZEZvcm0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IHRvRm9ybURhdGEgZnJvbSAnLi90b0Zvcm1EYXRhLmpzJztcbmltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvVVJMRW5jb2RlZEZvcm0oZGF0YSwgb3B0aW9ucykge1xuICByZXR1cm4gdG9Gb3JtRGF0YShkYXRhLCBuZXcgcGxhdGZvcm0uY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMoKSwge1xuICAgIHZpc2l0b3I6IGZ1bmN0aW9uKHZhbHVlLCBrZXksIHBhdGgsIGhlbHBlcnMpIHtcbiAgICAgIGlmIChwbGF0Zm9ybS5pc05vZGUgJiYgdXRpbHMuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKGtleSwgdmFsdWUudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGVscGVycy5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/toURLEncodedForm.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/trackStream.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/trackStream.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ readBytes: () => (/* binding */ readBytes),\n/* harmony export */ streamChunk: () => (/* binding */ streamChunk),\n/* harmony export */ trackStream: () => (/* binding */ trackStream)\n/* harmony export */ });\n\nconst streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nconst readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nconst trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90cmFja1N0cmVhbS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ087QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWCxhQUFhLGFBQWE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsYUFBYTs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxoZWxwZXJzXFx0cmFja1N0cmVhbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBjb25zdCBzdHJlYW1DaHVuayA9IGZ1bmN0aW9uKiAoY2h1bmssIGNodW5rU2l6ZSkge1xuICBsZXQgbGVuID0gY2h1bmsuYnl0ZUxlbmd0aDtcblxuICBpZiAoIWNodW5rU2l6ZSB8fCBsZW4gPCBjaHVua1NpemUpIHtcbiAgICB5aWVsZCBjaHVuaztcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgcG9zID0gMDtcbiAgbGV0IGVuZDtcblxuICB3aGlsZSAocG9zIDwgbGVuKSB7XG4gICAgZW5kID0gcG9zICsgY2h1bmtTaXplO1xuICAgIHlpZWxkIGNodW5rLnNsaWNlKHBvcywgZW5kKTtcbiAgICBwb3MgPSBlbmQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlYWRCeXRlcyA9IGFzeW5jIGZ1bmN0aW9uKiAoaXRlcmFibGUsIGNodW5rU2l6ZSkge1xuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHJlYWRTdHJlYW0oaXRlcmFibGUpKSB7XG4gICAgeWllbGQqIHN0cmVhbUNodW5rKGNodW5rLCBjaHVua1NpemUpO1xuICB9XG59XG5cbmNvbnN0IHJlYWRTdHJlYW0gPSBhc3luYyBmdW5jdGlvbiogKHN0cmVhbSkge1xuICBpZiAoc3RyZWFtW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSkge1xuICAgIHlpZWxkKiBzdHJlYW07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpO1xuICB0cnkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IHtkb25lLCB2YWx1ZX0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB5aWVsZCB2YWx1ZTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcmVhZGVyLmNhbmNlbCgpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB0cmFja1N0cmVhbSA9IChzdHJlYW0sIGNodW5rU2l6ZSwgb25Qcm9ncmVzcywgb25GaW5pc2gpID0+IHtcbiAgY29uc3QgaXRlcmF0b3IgPSByZWFkQnl0ZXMoc3RyZWFtLCBjaHVua1NpemUpO1xuXG4gIGxldCBieXRlcyA9IDA7XG4gIGxldCBkb25lO1xuICBsZXQgX29uRmluaXNoID0gKGUpID0+IHtcbiAgICBpZiAoIWRvbmUpIHtcbiAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgb25GaW5pc2ggJiYgb25GaW5pc2goZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgYXN5bmMgcHVsbChjb250cm9sbGVyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7ZG9uZSwgdmFsdWV9ID0gYXdhaXQgaXRlcmF0b3IubmV4dCgpO1xuXG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICBfb25GaW5pc2goKTtcbiAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxlbiA9IHZhbHVlLmJ5dGVMZW5ndGg7XG4gICAgICAgIGlmIChvblByb2dyZXNzKSB7XG4gICAgICAgICAgbGV0IGxvYWRlZEJ5dGVzID0gYnl0ZXMgKz0gbGVuO1xuICAgICAgICAgIG9uUHJvZ3Jlc3MobG9hZGVkQnl0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9vbkZpbmlzaChlcnIpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfSxcbiAgICBjYW5jZWwocmVhc29uKSB7XG4gICAgICBfb25GaW5pc2gocmVhc29uKTtcbiAgICAgIHJldHVybiBpdGVyYXRvci5yZXR1cm4oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBoaWdoV2F0ZXJNYXJrOiAyXG4gIH0pXG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/trackStream.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/helpers/validator.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/axios/lib/helpers/validator.js ***!
|
||
\*****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _env_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../env/data.js */ \"(app-pages-browser)/./node_modules/axios/lib/env/data.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosError.js */ \"(app-pages-browser)/./node_modules/axios/lib/core/AxiosError.js\");\n\n\n\n\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + _env_data_js__WEBPACK_IMPORTED_MODULE_0__.VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('options must be an object', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('option ' + opt + ' must be ' + result, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unknown option ' + opt, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ERR_BAD_OPTION);\n }\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n assertOptions,\n validators\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy92YWxpZGF0b3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWE7O0FBRTBCO0FBQ1E7O0FBRS9DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsbUJBQW1CO0FBQzlCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlEQUFPO0FBQy9COztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBVTtBQUMxQjtBQUNBLFFBQVEsMkRBQVU7QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLEtBQUssNkJBQTZCLGdCQUFnQjtBQUN0RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckI7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBLGNBQWMsMkRBQVUsOEJBQThCLDJEQUFVO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJEQUFVLHlDQUF5QywyREFBVTtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBVSwwQkFBMEIsMkRBQVU7QUFDOUQ7QUFDQTtBQUNBOztBQUVBLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBLENBQUMsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcaGVscGVyc1xcdmFsaWRhdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHtWRVJTSU9OfSBmcm9tICcuLi9lbnYvZGF0YS5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuXG5jb25zdCB2YWxpZGF0b3JzID0ge307XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5bJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlcicsICdmdW5jdGlvbicsICdzdHJpbmcnLCAnc3ltYm9sJ10uZm9yRWFjaCgodHlwZSwgaSkgPT4ge1xuICB2YWxpZGF0b3JzW3R5cGVdID0gZnVuY3Rpb24gdmFsaWRhdG9yKHRoaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gdHlwZSB8fCAnYScgKyAoaSA8IDEgPyAnbiAnIDogJyAnKSArIHR5cGU7XG4gIH07XG59KTtcblxuY29uc3QgZGVwcmVjYXRlZFdhcm5pbmdzID0ge307XG5cbi8qKlxuICogVHJhbnNpdGlvbmFsIG9wdGlvbiB2YWxpZGF0b3JcbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufGJvb2xlYW4/fSB2YWxpZGF0b3IgLSBzZXQgdG8gZmFsc2UgaWYgdGhlIHRyYW5zaXRpb25hbCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZFxuICogQHBhcmFtIHtzdHJpbmc/fSB2ZXJzaW9uIC0gZGVwcmVjYXRlZCB2ZXJzaW9uIC8gcmVtb3ZlZCBzaW5jZSB2ZXJzaW9uXG4gKiBAcGFyYW0ge3N0cmluZz99IG1lc3NhZ2UgLSBzb21lIG1lc3NhZ2Ugd2l0aCBhZGRpdGlvbmFsIGluZm9cbiAqXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gKi9cbnZhbGlkYXRvcnMudHJhbnNpdGlvbmFsID0gZnVuY3Rpb24gdHJhbnNpdGlvbmFsKHZhbGlkYXRvciwgdmVyc2lvbiwgbWVzc2FnZSkge1xuICBmdW5jdGlvbiBmb3JtYXRNZXNzYWdlKG9wdCwgZGVzYykge1xuICAgIHJldHVybiAnW0F4aW9zIHYnICsgVkVSU0lPTiArICddIFRyYW5zaXRpb25hbCBvcHRpb24gXFwnJyArIG9wdCArICdcXCcnICsgZGVzYyArIChtZXNzYWdlID8gJy4gJyArIG1lc3NhZ2UgOiAnJyk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICByZXR1cm4gKHZhbHVlLCBvcHQsIG9wdHMpID0+IHtcbiAgICBpZiAodmFsaWRhdG9yID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoXG4gICAgICAgIGZvcm1hdE1lc3NhZ2Uob3B0LCAnIGhhcyBiZWVuIHJlbW92ZWQnICsgKHZlcnNpb24gPyAnIGluICcgKyB2ZXJzaW9uIDogJycpKSxcbiAgICAgICAgQXhpb3NFcnJvci5FUlJfREVQUkVDQVRFRFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodmVyc2lvbiAmJiAhZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0pIHtcbiAgICAgIGRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdID0gdHJ1ZTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGZvcm1hdE1lc3NhZ2UoXG4gICAgICAgICAgb3B0LFxuICAgICAgICAgICcgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2JyArIHZlcnNpb24gKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0b3IgPyB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0cykgOiB0cnVlO1xuICB9O1xufTtcblxudmFsaWRhdG9ycy5zcGVsbGluZyA9IGZ1bmN0aW9uIHNwZWxsaW5nKGNvcnJlY3RTcGVsbGluZykge1xuICByZXR1cm4gKHZhbHVlLCBvcHQpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUud2FybihgJHtvcHR9IGlzIGxpa2VseSBhIG1pc3NwZWxsaW5nIG9mICR7Y29ycmVjdFNwZWxsaW5nfWApO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG4vKipcbiAqIEFzc2VydCBvYmplY3QncyBwcm9wZXJ0aWVzIHR5cGVcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYVxuICogQHBhcmFtIHtib29sZWFuP30gYWxsb3dVbmtub3duXG4gKlxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRPcHRpb25zKG9wdGlvbnMsIHNjaGVtYSwgYWxsb3dVbmtub3duKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT05fVkFMVUUpO1xuICB9XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgbGV0IGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBjb25zdCBvcHQgPSBrZXlzW2ldO1xuICAgIGNvbnN0IHZhbGlkYXRvciA9IHNjaGVtYVtvcHRdO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9uc1tvcHRdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0aW9ucyk7XG4gICAgICBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XG4gICAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdvcHRpb24gJyArIG9wdCArICcgbXVzdCBiZSAnICsgcmVzdWx0LCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWxsb3dVbmtub3duICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignVW5rbm93biBvcHRpb24gJyArIG9wdCwgQXhpb3NFcnJvci5FUlJfQkFEX09QVElPTik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgYXNzZXJ0T3B0aW9ucyxcbiAgdmFsaWRhdG9yc1xufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/helpers/validator.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/platform/browser/classes/Blob.js":
|
||
/*!*****************************************************************!*\
|
||
!*** ./node_modules/axios/lib/platform/browser/classes/Blob.js ***!
|
||
\*****************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (typeof Blob !== 'undefined' ? Blob : null);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL0Jsb2IuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFZOztBQUVaLGlFQUFlLHlDQUF5QyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxccGxhdGZvcm1cXGJyb3dzZXJcXGNsYXNzZXNcXEJsb2IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydCBkZWZhdWx0IHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJyA/IEJsb2IgOiBudWxsXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/platform/browser/classes/Blob.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/platform/browser/classes/FormData.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/axios/lib/platform/browser/classes/FormData.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (typeof FormData !== 'undefined' ? FormData : null);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL0Zvcm1EYXRhLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBYTs7QUFFYixpRUFBZSxpREFBaUQsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxccGxhdGZvcm1cXGJyb3dzZXJcXGNsYXNzZXNcXEZvcm1EYXRhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGRlZmF1bHQgdHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJyA/IEZvcm1EYXRhIDogbnVsbDtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/platform/browser/classes/FormData.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../helpers/AxiosURLSearchParams.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (typeof URLSearchParams !== 'undefined' ? URLSearchParams : _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL1VSTFNlYXJjaFBhcmFtcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFhOztBQUUrRDtBQUM1RSxpRUFBZSwyREFBMkQsd0VBQW9CLEVBQUMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXHBsYXRmb3JtXFxicm93c2VyXFxjbGFzc2VzXFxVUkxTZWFyY2hQYXJhbXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgQXhpb3NVUkxTZWFyY2hQYXJhbXMgZnJvbSAnLi4vLi4vLi4vaGVscGVycy9BeGlvc1VSTFNlYXJjaFBhcmFtcy5qcyc7XG5leHBvcnQgZGVmYXVsdCB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zICE9PSAndW5kZWZpbmVkJyA/IFVSTFNlYXJjaFBhcmFtcyA6IEF4aW9zVVJMU2VhcmNoUGFyYW1zO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/platform/browser/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/axios/lib/platform/browser/index.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _classes_URLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./classes/URLSearchParams.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js\");\n/* harmony import */ var _classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./classes/FormData.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/browser/classes/FormData.js\");\n/* harmony import */ var _classes_Blob_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./classes/Blob.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/browser/classes/Blob.js\");\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n isBrowser: true,\n classes: {\n URLSearchParams: _classes_URLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n FormData: _classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Blob: _classes_Blob_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBEO0FBQ2Q7QUFDUjs7QUFFcEMsaUVBQWU7QUFDZjtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLFlBQVk7QUFDWixRQUFRO0FBQ1IsR0FBRztBQUNIO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxwbGF0Zm9ybVxcYnJvd3NlclxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFVSTFNlYXJjaFBhcmFtcyBmcm9tICcuL2NsYXNzZXMvVVJMU2VhcmNoUGFyYW1zLmpzJ1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJy4vY2xhc3Nlcy9Gb3JtRGF0YS5qcydcbmltcG9ydCBCbG9iIGZyb20gJy4vY2xhc3Nlcy9CbG9iLmpzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlzQnJvd3NlcjogdHJ1ZSxcbiAgY2xhc3Nlczoge1xuICAgIFVSTFNlYXJjaFBhcmFtcyxcbiAgICBGb3JtRGF0YSxcbiAgICBCbG9iXG4gIH0sXG4gIHByb3RvY29sczogWydodHRwJywgJ2h0dHBzJywgJ2ZpbGUnLCAnYmxvYicsICd1cmwnLCAnZGF0YSddXG59O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/platform/browser/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/platform/common/utils.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/axios/lib/platform/common/utils.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ hasBrowserEnv: () => (/* binding */ hasBrowserEnv),\n/* harmony export */ hasStandardBrowserEnv: () => (/* binding */ hasStandardBrowserEnv),\n/* harmony export */ hasStandardBrowserWebWorkerEnv: () => (/* binding */ hasStandardBrowserWebWorkerEnv),\n/* harmony export */ navigator: () => (/* binding */ _navigator),\n/* harmony export */ origin: () => (/* binding */ origin)\n/* harmony export */ });\nconst hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vY29tbW9uL3V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7O0FBUUMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGF4aW9zXFxsaWJcXHBsYXRmb3JtXFxjb21tb25cXHV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGhhc0Jyb3dzZXJFbnYgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuXG5jb25zdCBfbmF2aWdhdG9yID0gdHlwZW9mIG5hdmlnYXRvciA9PT0gJ29iamVjdCcgJiYgbmF2aWdhdG9yIHx8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAqXG4gKiBUaGlzIGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyLCBhbmQgcmVhY3QtbmF0aXZlLlxuICogQm90aCBlbnZpcm9ubWVudHMgc3VwcG9ydCBYTUxIdHRwUmVxdWVzdCwgYnV0IG5vdCBmdWxseSBzdGFuZGFyZCBnbG9iYWxzLlxuICpcbiAqIHdlYiB3b3JrZXJzOlxuICogIHR5cGVvZiB3aW5kb3cgLT4gdW5kZWZpbmVkXG4gKiAgdHlwZW9mIGRvY3VtZW50IC0+IHVuZGVmaW5lZFxuICpcbiAqIHJlYWN0LW5hdGl2ZTpcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnUmVhY3ROYXRpdmUnXG4gKiBuYXRpdmVzY3JpcHRcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnTmF0aXZlU2NyaXB0JyBvciAnTlMnXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGhhc1N0YW5kYXJkQnJvd3NlckVudiA9IGhhc0Jyb3dzZXJFbnYgJiZcbiAgKCFfbmF2aWdhdG9yIHx8IFsnUmVhY3ROYXRpdmUnLCAnTmF0aXZlU2NyaXB0JywgJ05TJ10uaW5kZXhPZihfbmF2aWdhdG9yLnByb2R1Y3QpIDwgMCk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIHdlYldvcmtlciBlbnZpcm9ubWVudFxuICpcbiAqIEFsdGhvdWdoIHRoZSBgaXNTdGFuZGFyZEJyb3dzZXJFbnZgIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdFxuICogYGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyYCwgdGhlIFdlYldvcmtlciB3aWxsIHN0aWxsIGJlXG4gKiBmaWx0ZXJlZCBvdXQgZHVlIHRvIGl0cyBqdWRnbWVudCBzdGFuZGFyZFxuICogYHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdgLlxuICogVGhpcyBsZWFkcyB0byBhIHByb2JsZW0gd2hlbiBheGlvcyBwb3N0IGBGb3JtRGF0YWAgaW4gd2ViV29ya2VyXG4gKi9cbmNvbnN0IGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudiA9ICgoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSAmJlxuICAgIHR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHMgPT09ICdmdW5jdGlvbidcbiAgKTtcbn0pKCk7XG5cbmNvbnN0IG9yaWdpbiA9IGhhc0Jyb3dzZXJFbnYgJiYgd2luZG93LmxvY2F0aW9uLmhyZWYgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnO1xuXG5leHBvcnQge1xuICBoYXNCcm93c2VyRW52LFxuICBoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYsXG4gIGhhc1N0YW5kYXJkQnJvd3NlckVudixcbiAgX25hdmlnYXRvciBhcyBuYXZpZ2F0b3IsXG4gIG9yaWdpblxufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/platform/common/utils.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/platform/index.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/axios/lib/platform/index.js ***!
|
||
\**************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node/index.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/browser/index.js\");\n/* harmony import */ var _common_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common/utils.js */ \"(app-pages-browser)/./node_modules/axios/lib/platform/common/utils.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n ..._common_utils_js__WEBPACK_IMPORTED_MODULE_0__,\n ..._node_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXVDO0FBQ0k7O0FBRTNDLGlFQUFlO0FBQ2YsS0FBSyw2Q0FBSztBQUNWLEtBQUssc0RBQVE7QUFDYixDQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxheGlvc1xcbGliXFxwbGF0Zm9ybVxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4vbm9kZS9pbmRleC5qcyc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL2NvbW1vbi91dGlscy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLi4udXRpbHMsXG4gIC4uLnBsYXRmb3JtXG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/platform/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/axios/lib/utils.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/axios/lib/utils.js ***!
|
||
\*****************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _helpers_bind_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/bind.js */ \"(app-pages-browser)/./node_modules/axios/lib/helpers/bind.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"(app-pages-browser)/./node_modules/next/dist/build/polyfills/process.js\");\n\n\n\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest(\"undefined\");\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest(\"ArrayBuffer\");\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest(\"string\");\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest(\"function\");\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest(\"number\");\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === \"object\";\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== \"object\") {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return (\n Object.keys(val).length === 0 &&\n Object.getPrototypeOf(val) === Object.prototype\n );\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest(\"Date\");\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest(\"File\");\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest(\"Blob\");\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest(\"FileList\");\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return (\n thing &&\n ((typeof FormData === \"function\" && thing instanceof FormData) ||\n (isFunction(thing.append) &&\n ((kind = kindOf(thing)) === \"formdata\" ||\n // detect form-data instance\n (kind === \"object\" &&\n isFunction(thing.toString) &&\n thing.toString() === \"[object FormData]\"))))\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest(\"URLSearchParams\");\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n \"ReadableStream\",\n \"Request\",\n \"Response\",\n \"Headers\",\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) =>\n str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array<unknown>} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === \"undefined\") {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== \"object\") {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys\n ? Object.getOwnPropertyNames(obj)\n : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\"\n ? self\n : typeof window !== \"undefined\"\n ? window\n : global;\n})();\n\nconst isContextDefined = (context) =>\n !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: (0,_helpers_bind_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys },\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(\n superConstructor.prototype,\n descriptors,\n );\n Object.defineProperty(constructor.prototype, \"constructor\", {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, \"super\", {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (\n (!propFilter || propFilter(prop, sourceObj, destObj)) &&\n !merged[prop]\n ) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (\n sourceObj &&\n (!filter || filter(sourceObj, destObj)) &&\n sourceObj !== Object.prototype\n );\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== \"undefined\" && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest(\"HTMLFormElement\");\n\nconst toCamelCase = (str) => {\n return str\n .toLowerCase()\n .replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest(\"RegExp\");\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (\n isFunction(obj) &&\n [\"arguments\", \"caller\", \"callee\"].indexOf(name) !== -1\n ) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if (\"writable\" in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString)\n ? define(arrayOrString)\n : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value))\n ? value\n : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === \"FormData\" &&\n thing[iterator]\n );\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!(\"toJSON\" in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst isAsyncFn = kindOfTest(\"AsyncFunction\");\n\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n \"message\",\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false,\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === \"function\", isFunction(_global.postMessage));\n\nconst asap =\n typeof queueMicrotask !== \"undefined\"\n ? queueMicrotask.bind(_global)\n : (typeof process !== \"undefined\" && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvdXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWE7O0FBRXdCOztBQUVyQzs7QUFFQSxRQUFRLFdBQVc7QUFDbkIsUUFBUSxpQkFBaUI7QUFDekIsUUFBUSx3QkFBd0I7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0EsUUFBUSxVQUFVOztBQUVsQjtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZDtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2Q7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZDtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2Q7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZDtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2Q7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZDtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2Q7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZDtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNB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O0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGNBQWM7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFdBQVcsY0FBYztBQUNoQztBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPLG9CQUFvQixPQUFPOztBQUVoRDs7QUFFQTs7QUFFQSxpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcYXhpb3NcXGxpYlxcdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBiaW5kIGZyb20gXCIuL2hlbHBlcnMvYmluZC5qc1wiO1xuXG4vLyB1dGlscyBpcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBoZWxwZXIgZnVuY3Rpb25zIG5vbi1zcGVjaWZpYyB0byBheGlvc1xuXG5jb25zdCB7IHRvU3RyaW5nIH0gPSBPYmplY3QucHJvdG90eXBlO1xuY29uc3QgeyBnZXRQcm90b3R5cGVPZiB9ID0gT2JqZWN0O1xuY29uc3QgeyBpdGVyYXRvciwgdG9TdHJpbmdUYWcgfSA9IFN5bWJvbDtcblxuY29uc3Qga2luZE9mID0gKChjYWNoZSkgPT4gKHRoaW5nKSA9PiB7XG4gIGNvbnN0IHN0ciA9IHRvU3RyaW5nLmNhbGwodGhpbmcpO1xuICByZXR1cm4gY2FjaGVbc3RyXSB8fCAoY2FjaGVbc3RyXSA9IHN0ci5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKSk7XG59KShPYmplY3QuY3JlYXRlKG51bGwpKTtcblxuY29uc3Qga2luZE9mVGVzdCA9ICh0eXBlKSA9PiB7XG4gIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiAodGhpbmcpID0+IGtpbmRPZih0aGluZykgPT09IHR5cGU7XG59O1xuXG5jb25zdCB0eXBlT2ZUZXN0ID0gKHR5cGUpID0+ICh0aGluZykgPT4gdHlwZW9mIHRoaW5nID09PSB0eXBlO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgbm9uLW51bGwgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1VuZGVmaW5lZCA9IHR5cGVPZlRlc3QoXCJ1bmRlZmluZWRcIik7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCdWZmZXIodmFsKSB7XG4gIHJldHVybiAoXG4gICAgdmFsICE9PSBudWxsICYmXG4gICAgIWlzVW5kZWZpbmVkKHZhbCkgJiZcbiAgICB2YWwuY29uc3RydWN0b3IgIT09IG51bGwgJiZcbiAgICAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKSAmJlxuICAgIGlzRnVuY3Rpb24odmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKSAmJlxuICAgIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNBcnJheUJ1ZmZlciA9IGtpbmRPZlRlc3QoXCJBcnJheUJ1ZmZlclwiKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICBsZXQgcmVzdWx0O1xuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSBcInVuZGVmaW5lZFwiICYmIEFycmF5QnVmZmVyLmlzVmlldykge1xuICAgIHJlc3VsdCA9IEFycmF5QnVmZmVyLmlzVmlldyh2YWwpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IHZhbCAmJiB2YWwuYnVmZmVyICYmIGlzQXJyYXlCdWZmZXIodmFsLmJ1ZmZlcik7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmluZ1xuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1N0cmluZyA9IHR5cGVPZlRlc3QoXCJzdHJpbmdcIik7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGdW5jdGlvbiA9IHR5cGVPZlRlc3QoXCJmdW5jdGlvblwiKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIE51bWJlclxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc051bWJlciA9IHR5cGVPZlRlc3QoXCJudW1iZXJcIik7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHsqfSB0aGluZyBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzT2JqZWN0ID0gKHRoaW5nKSA9PiB0aGluZyAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpbmcgPT09IFwib2JqZWN0XCI7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCb29sZWFuXG4gKlxuICogQHBhcmFtIHsqfSB0aGluZyBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCb29sZWFuLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNCb29sZWFuID0gKHRoaW5nKSA9PiB0aGluZyA9PT0gdHJ1ZSB8fCB0aGluZyA9PT0gZmFsc2U7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNQbGFpbk9iamVjdCA9ICh2YWwpID0+IHtcbiAgaWYgKGtpbmRPZih2YWwpICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YodmFsKTtcbiAgcmV0dXJuIChcbiAgICAocHJvdG90eXBlID09PSBudWxsIHx8XG4gICAgICBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGUgfHxcbiAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpID09PSBudWxsKSAmJlxuICAgICEodG9TdHJpbmdUYWcgaW4gdmFsKSAmJlxuICAgICEoaXRlcmF0b3IgaW4gdmFsKVxuICApO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBlbXB0eSBvYmplY3QgKHNhZmVseSBoYW5kbGVzIEJ1ZmZlcnMpXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBlbXB0eSBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0VtcHR5T2JqZWN0ID0gKHZhbCkgPT4ge1xuICAvLyBFYXJseSByZXR1cm4gZm9yIG5vbi1vYmplY3RzIG9yIEJ1ZmZlcnMgdG8gcHJldmVudCBSYW5nZUVycm9yXG4gIGlmICghaXNPYmplY3QodmFsKSB8fCBpc0J1ZmZlcih2YWwpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgT2JqZWN0LmtleXModmFsKS5sZW5ndGggPT09IDAgJiZcbiAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwpID09PSBPYmplY3QucHJvdG90eXBlXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIEZhbGxiYWNrIGZvciBhbnkgb3RoZXIgb2JqZWN0cyB0aGF0IG1pZ2h0IGNhdXNlIFJhbmdlRXJyb3Igd2l0aCBPYmplY3Qua2V5cygpXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBEYXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNEYXRlID0ga2luZE9mVGVzdChcIkRhdGVcIik7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0ZpbGUgPSBraW5kT2ZUZXN0KFwiRmlsZVwiKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzQmxvYiA9IGtpbmRPZlRlc3QoXCJCbG9iXCIpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZUxpc3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRmlsZUxpc3QgPSBraW5kT2ZUZXN0KFwiRmlsZUxpc3RcIik7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNTdHJlYW0gPSAodmFsKSA9PiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0geyp9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gRm9ybURhdGEsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Zvcm1EYXRhID0gKHRoaW5nKSA9PiB7XG4gIGxldCBraW5kO1xuICByZXR1cm4gKFxuICAgIHRoaW5nICYmXG4gICAgKCh0eXBlb2YgRm9ybURhdGEgPT09IFwiZnVuY3Rpb25cIiAmJiB0aGluZyBpbnN0YW5jZW9mIEZvcm1EYXRhKSB8fFxuICAgICAgKGlzRnVuY3Rpb24odGhpbmcuYXBwZW5kKSAmJlxuICAgICAgICAoKGtpbmQgPSBraW5kT2YodGhpbmcpKSA9PT0gXCJmb3JtZGF0YVwiIHx8XG4gICAgICAgICAgLy8gZGV0ZWN0IGZvcm0tZGF0YSBpbnN0YW5jZVxuICAgICAgICAgIChraW5kID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBpc0Z1bmN0aW9uKHRoaW5nLnRvU3RyaW5nKSAmJlxuICAgICAgICAgICAgdGhpbmcudG9TdHJpbmcoKSA9PT0gXCJbb2JqZWN0IEZvcm1EYXRhXVwiKSkpKVxuICApO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzVVJMU2VhcmNoUGFyYW1zID0ga2luZE9mVGVzdChcIlVSTFNlYXJjaFBhcmFtc1wiKTtcblxuY29uc3QgW2lzUmVhZGFibGVTdHJlYW0sIGlzUmVxdWVzdCwgaXNSZXNwb25zZSwgaXNIZWFkZXJzXSA9IFtcbiAgXCJSZWFkYWJsZVN0cmVhbVwiLFxuICBcIlJlcXVlc3RcIixcbiAgXCJSZXNwb25zZVwiLFxuICBcIkhlYWRlcnNcIixcbl0ubWFwKGtpbmRPZlRlc3QpO1xuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFN0cmluZyBmcmVlZCBvZiBleGNlc3Mgd2hpdGVzcGFjZVxuICovXG5jb25zdCB0cmltID0gKHN0cikgPT5cbiAgc3RyLnRyaW0gPyBzdHIudHJpbSgpIDogc3RyLnJlcGxhY2UoL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLCBcIlwiKTtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0IGludm9raW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGluZGV4LCBhbmQgY29tcGxldGUgYXJyYXkgZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBrZXksIGFuZCBjb21wbGV0ZSBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXk8dW5rbm93bj59IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBjYWxsYmFjayB0byBpbnZva2UgZm9yIGVhY2ggaXRlbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYWxsT3duS2V5cyA9IGZhbHNlXVxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChvYmosIGZuLCB7IGFsbE93bktleXMgPSBmYWxzZSB9ID0ge30pIHtcbiAgLy8gRG9uJ3QgYm90aGVyIGlmIG5vIHZhbHVlIHByb3ZpZGVkXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBpO1xuICBsZXQgbDtcblxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcbiAgaWYgKHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yIChpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2ldLCBpLCBvYmopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBCdWZmZXIgY2hlY2tcbiAgICBpZiAoaXNCdWZmZXIob2JqKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xuICAgIGNvbnN0IGtleXMgPSBhbGxPd25LZXlzXG4gICAgICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iailcbiAgICAgIDogT2JqZWN0LmtleXMob2JqKTtcbiAgICBjb25zdCBsZW4gPSBrZXlzLmxlbmd0aDtcbiAgICBsZXQga2V5O1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kS2V5KG9iaiwga2V5KSB7XG4gIGlmIChpc0J1ZmZlcihvYmopKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGxldCBpID0ga2V5cy5sZW5ndGg7XG4gIGxldCBfa2V5O1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIF9rZXkgPSBrZXlzW2ldO1xuICAgIGlmIChrZXkgPT09IF9rZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgcmV0dXJuIF9rZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5jb25zdCBfZ2xvYmFsID0gKCgpID0+IHtcbiAgLyplc2xpbnQgbm8tdW5kZWY6MCovXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIGdsb2JhbFRoaXM7XG4gIHJldHVybiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIlxuICAgID8gc2VsZlxuICAgIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgPyB3aW5kb3dcbiAgICAgIDogZ2xvYmFsO1xufSkoKTtcblxuY29uc3QgaXNDb250ZXh0RGVmaW5lZCA9IChjb250ZXh0KSA9PlxuICAhaXNVbmRlZmluZWQoY29udGV4dCkgJiYgY29udGV4dCAhPT0gX2dsb2JhbDtcblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIGNvbnN0IHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XG4gIGNvbnN0IHsgY2FzZWxlc3MsIHNraXBVbmRlZmluZWQgfSA9IChpc0NvbnRleHREZWZpbmVkKHRoaXMpICYmIHRoaXMpIHx8IHt9O1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgY29uc3QgYXNzaWduVmFsdWUgPSAodmFsLCBrZXkpID0+IHtcbiAgICAvLyBTa2lwIGRhbmdlcm91cyBwcm9wZXJ0eSBuYW1lcyB0byBwcmV2ZW50IHByb3RvdHlwZSBwb2xsdXRpb25cbiAgICBpZiAoa2V5ID09PSBcIl9fcHJvdG9fX1wiIHx8IGtleSA9PT0gXCJjb25zdHJ1Y3RvclwiIHx8IGtleSA9PT0gXCJwcm90b3R5cGVcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldEtleSA9IChjYXNlbGVzcyAmJiBmaW5kS2V5KHJlc3VsdCwga2V5KSkgfHwga2V5O1xuICAgIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdFt0YXJnZXRLZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gbWVyZ2UocmVzdWx0W3RhcmdldEtleV0sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gbWVyZ2Uoe30sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJlc3VsdFt0YXJnZXRLZXldID0gdmFsLnNsaWNlKCk7XG4gICAgfSBlbHNlIGlmICghc2tpcFVuZGVmaW5lZCB8fCAhaXNVbmRlZmluZWQodmFsKSkge1xuICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWw7XG4gICAgfVxuICB9O1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGFyZ3VtZW50c1tpXSAmJiBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmFsbE93bktleXNdXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIHZhbHVlIG9mIG9iamVjdCBhXG4gKi9cbmNvbnN0IGV4dGVuZCA9IChhLCBiLCB0aGlzQXJnLCB7IGFsbE93bktleXMgfSA9IHt9KSA9PiB7XG4gIGZvckVhY2goXG4gICAgYixcbiAgICAodmFsLCBrZXkpID0+IHtcbiAgICAgIGlmICh0aGlzQXJnICYmIGlzRnVuY3Rpb24odmFsKSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwga2V5LCB7XG4gICAgICAgICAgdmFsdWU6IGJpbmQodmFsLCB0aGlzQXJnKSxcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwga2V5LCB7XG4gICAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IGFsbE93bktleXMgfSxcbiAgKTtcbiAgcmV0dXJuIGE7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBieXRlIG9yZGVyIG1hcmtlci4gVGhpcyBjYXRjaGVzIEVGIEJCIEJGICh0aGUgVVRGLTggQk9NKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IHdpdGggQk9NXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5jb25zdCBzdHJpcEJPTSA9IChjb250ZW50KSA9PiB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4ZmVmZikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufTtcblxuLyoqXG4gKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXJcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge29iamVjdH0gW3Byb3BzXVxuICogQHBhcmFtIHtvYmplY3R9IFtkZXNjcmlwdG9yc11cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgaW5oZXJpdHMgPSAoY29uc3RydWN0b3IsIHN1cGVyQ29uc3RydWN0b3IsIHByb3BzLCBkZXNjcmlwdG9ycykgPT4ge1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFxuICAgIHN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlLFxuICAgIGRlc2NyaXB0b3JzLFxuICApO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IucHJvdG90eXBlLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICB2YWx1ZTogY29uc3RydWN0b3IsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLCBcInN1cGVyXCIsIHtcbiAgICB2YWx1ZTogc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUsXG4gIH0pO1xuICBwcm9wcyAmJiBPYmplY3QuYXNzaWduKGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvcHMpO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlIG9iamVjdCB3aXRoIGRlZXAgcHJvdG90eXBlIGNoYWluIHRvIGEgZmxhdCBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2VPYmogc291cmNlIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IFtkZXN0T2JqXVxuICogQHBhcmFtIHtGdW5jdGlvbnxCb29sZWFufSBbZmlsdGVyXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3Byb3BGaWx0ZXJdXG4gKlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuY29uc3QgdG9GbGF0T2JqZWN0ID0gKHNvdXJjZU9iaiwgZGVzdE9iaiwgZmlsdGVyLCBwcm9wRmlsdGVyKSA9PiB7XG4gIGxldCBwcm9wcztcbiAgbGV0IGk7XG4gIGxldCBwcm9wO1xuICBjb25zdCBtZXJnZWQgPSB7fTtcblxuICBkZXN0T2JqID0gZGVzdE9iaiB8fCB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVxLW51bGwsZXFlcWVxXG4gIGlmIChzb3VyY2VPYmogPT0gbnVsbCkgcmV0dXJuIGRlc3RPYmo7XG5cbiAgZG8ge1xuICAgIHByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlT2JqKTtcbiAgICBpID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICBwcm9wID0gcHJvcHNbaV07XG4gICAgICBpZiAoXG4gICAgICAgICghcHJvcEZpbHRlciB8fCBwcm9wRmlsdGVyKHByb3AsIHNvdXJjZU9iaiwgZGVzdE9iaikpICYmXG4gICAgICAgICFtZXJnZWRbcHJvcF1cbiAgICAgICkge1xuICAgICAgICBkZXN0T2JqW3Byb3BdID0gc291cmNlT2JqW3Byb3BdO1xuICAgICAgICBtZXJnZWRbcHJvcF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3VyY2VPYmogPSBmaWx0ZXIgIT09IGZhbHNlICYmIGdldFByb3RvdHlwZU9mKHNvdXJjZU9iaik7XG4gIH0gd2hpbGUgKFxuICAgIHNvdXJjZU9iaiAmJlxuICAgICghZmlsdGVyIHx8IGZpbHRlcihzb3VyY2VPYmosIGRlc3RPYmopKSAmJlxuICAgIHNvdXJjZU9iaiAhPT0gT2JqZWN0LnByb3RvdHlwZVxuICApO1xuXG4gIHJldHVybiBkZXN0T2JqO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIG9mIGEgc3BlY2lmaWVkIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWFyY2hTdHJpbmdcbiAqIEBwYXJhbSB7TnVtYmVyfSBbcG9zaXRpb249IDBdXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGVuZHNXaXRoID0gKHN0ciwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbikgPT4ge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHBvc2l0aW9uID09PSB1bmRlZmluZWQgfHwgcG9zaXRpb24gPiBzdHIubGVuZ3RoKSB7XG4gICAgcG9zaXRpb24gPSBzdHIubGVuZ3RoO1xuICB9XG4gIHBvc2l0aW9uIC09IHNlYXJjaFN0cmluZy5sZW5ndGg7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFN0cmluZywgcG9zaXRpb24pO1xuICByZXR1cm4gbGFzdEluZGV4ICE9PSAtMSAmJiBsYXN0SW5kZXggPT09IHBvc2l0aW9uO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIG5ldyBhcnJheSBmcm9tIGFycmF5IGxpa2Ugb2JqZWN0IG9yIG51bGwgaWYgZmFpbGVkXG4gKlxuICogQHBhcmFtIHsqfSBbdGhpbmddXG4gKlxuICogQHJldHVybnMgez9BcnJheX1cbiAqL1xuY29uc3QgdG9BcnJheSA9ICh0aGluZykgPT4ge1xuICBpZiAoIXRoaW5nKSByZXR1cm4gbnVsbDtcbiAgaWYgKGlzQXJyYXkodGhpbmcpKSByZXR1cm4gdGhpbmc7XG4gIGxldCBpID0gdGhpbmcubGVuZ3RoO1xuICBpZiAoIWlzTnVtYmVyKGkpKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgYXJyID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIGFycltpXSA9IHRoaW5nW2ldO1xuICB9XG4gIHJldHVybiBhcnI7XG59O1xuXG4vKipcbiAqIENoZWNraW5nIGlmIHRoZSBVaW50OEFycmF5IGV4aXN0cyBhbmQgaWYgaXQgZG9lcywgaXQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIHRoZVxuICogdGhpbmcgcGFzc2VkIGluIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcGFyYW0ge1R5cGVkQXJyYXl9XG4gKlxuICogQHJldHVybnMge0FycmF5fVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuY29uc3QgaXNUeXBlZEFycmF5ID0gKChUeXBlZEFycmF5KSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiAodGhpbmcpID0+IHtcbiAgICByZXR1cm4gVHlwZWRBcnJheSAmJiB0aGluZyBpbnN0YW5jZW9mIFR5cGVkQXJyYXk7XG4gIH07XG59KSh0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnZXRQcm90b3R5cGVPZihVaW50OEFycmF5KSk7XG5cbi8qKlxuICogRm9yIGVhY2ggZW50cnkgaW4gdGhlIG9iamVjdCwgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUga2V5IGFuZCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdDxhbnksIGFueT59IG9iaiAtIFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBlbnRyeS5cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgZm9yRWFjaEVudHJ5ID0gKG9iaiwgZm4pID0+IHtcbiAgY29uc3QgZ2VuZXJhdG9yID0gb2JqICYmIG9ialtpdGVyYXRvcl07XG5cbiAgY29uc3QgX2l0ZXJhdG9yID0gZ2VuZXJhdG9yLmNhbGwob2JqKTtcblxuICBsZXQgcmVzdWx0O1xuXG4gIHdoaWxlICgocmVzdWx0ID0gX2l0ZXJhdG9yLm5leHQoKSkgJiYgIXJlc3VsdC5kb25lKSB7XG4gICAgY29uc3QgcGFpciA9IHJlc3VsdC52YWx1ZTtcbiAgICBmbi5jYWxsKG9iaiwgcGFpclswXSwgcGFpclsxXSk7XG4gIH1cbn07XG5cbi8qKlxuICogSXQgdGFrZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gYW5kIGEgc3RyaW5nLCBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdGhlIG1hdGNoZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVnRXhwIC0gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCBhZ2FpbnN0LlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBzdHJpbmcgdG8gc2VhcmNoLlxuICpcbiAqIEByZXR1cm5zIHtBcnJheTxib29sZWFuPn1cbiAqL1xuY29uc3QgbWF0Y2hBbGwgPSAocmVnRXhwLCBzdHIpID0+IHtcbiAgbGV0IG1hdGNoZXM7XG4gIGNvbnN0IGFyciA9IFtdO1xuXG4gIHdoaWxlICgobWF0Y2hlcyA9IHJlZ0V4cC5leGVjKHN0cikpICE9PSBudWxsKSB7XG4gICAgYXJyLnB1c2gobWF0Y2hlcyk7XG4gIH1cblxuICByZXR1cm4gYXJyO1xufTtcblxuLyogQ2hlY2tpbmcgaWYgdGhlIGtpbmRPZlRlc3QgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gcGFzc2VkIGFuIEhUTUxGb3JtRWxlbWVudC4gKi9cbmNvbnN0IGlzSFRNTEZvcm0gPSBraW5kT2ZUZXN0KFwiSFRNTEZvcm1FbGVtZW50XCIpO1xuXG5jb25zdCB0b0NhbWVsQ2FzZSA9IChzdHIpID0+IHtcbiAgcmV0dXJuIHN0clxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1stX1xcc10oW2EtelxcZF0pKFxcdyopL2csIGZ1bmN0aW9uIHJlcGxhY2VyKG0sIHAxLCBwMikge1xuICAgICAgcmV0dXJuIHAxLnRvVXBwZXJDYXNlKCkgKyBwMjtcbiAgICB9KTtcbn07XG5cbi8qIENyZWF0aW5nIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGNoZWNrIGlmIGFuIG9iamVjdCBoYXMgYSBwcm9wZXJ0eS4gKi9cbmNvbnN0IGhhc093blByb3BlcnR5ID0gKFxuICAoeyBoYXNPd25Qcm9wZXJ0eSB9KSA9PlxuICAob2JqLCBwcm9wKSA9PlxuICAgIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKVxuKShPYmplY3QucHJvdG90eXBlKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgUmVnRXhwIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzUmVnRXhwID0ga2luZE9mVGVzdChcIlJlZ0V4cFwiKTtcblxuY29uc3QgcmVkdWNlRGVzY3JpcHRvcnMgPSAob2JqLCByZWR1Y2VyKSA9PiB7XG4gIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKTtcbiAgY29uc3QgcmVkdWNlZERlc2NyaXB0b3JzID0ge307XG5cbiAgZm9yRWFjaChkZXNjcmlwdG9ycywgKGRlc2NyaXB0b3IsIG5hbWUpID0+IHtcbiAgICBsZXQgcmV0O1xuICAgIGlmICgocmV0ID0gcmVkdWNlcihkZXNjcmlwdG9yLCBuYW1lLCBvYmopKSAhPT0gZmFsc2UpIHtcbiAgICAgIHJlZHVjZWREZXNjcmlwdG9yc1tuYW1lXSA9IHJldCB8fCBkZXNjcmlwdG9yO1xuICAgIH1cbiAgfSk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMob2JqLCByZWR1Y2VkRGVzY3JpcHRvcnMpO1xufTtcblxuLyoqXG4gKiBNYWtlcyBhbGwgbWV0aG9kcyByZWFkLW9ubHlcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqL1xuXG5jb25zdCBmcmVlemVNZXRob2RzID0gKG9iaikgPT4ge1xuICByZWR1Y2VEZXNjcmlwdG9ycyhvYmosIChkZXNjcmlwdG9yLCBuYW1lKSA9PiB7XG4gICAgLy8gc2tpcCByZXN0cmljdGVkIHByb3BzIGluIHN0cmljdCBtb2RlXG4gICAgaWYgKFxuICAgICAgaXNGdW5jdGlvbihvYmopICYmXG4gICAgICBbXCJhcmd1bWVudHNcIiwgXCJjYWxsZXJcIiwgXCJjYWxsZWVcIl0uaW5kZXhPZihuYW1lKSAhPT0gLTFcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG9ialtuYW1lXTtcblxuICAgIGlmICghaXNGdW5jdGlvbih2YWx1ZSkpIHJldHVybjtcblxuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKFwid3JpdGFibGVcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgICBkZXNjcmlwdG9yLndyaXRhYmxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkZXNjcmlwdG9yLnNldCkge1xuICAgICAgZGVzY3JpcHRvci5zZXQgPSAoKSA9PiB7XG4gICAgICAgIHRocm93IEVycm9yKFwiQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgJ1wiICsgbmFtZSArIFwiJ1wiKTtcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IHRvT2JqZWN0U2V0ID0gKGFycmF5T3JTdHJpbmcsIGRlbGltaXRlcikgPT4ge1xuICBjb25zdCBvYmogPSB7fTtcblxuICBjb25zdCBkZWZpbmUgPSAoYXJyKSA9PiB7XG4gICAgYXJyLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICBvYmpbdmFsdWVdID0gdHJ1ZTtcbiAgICB9KTtcbiAgfTtcblxuICBpc0FycmF5KGFycmF5T3JTdHJpbmcpXG4gICAgPyBkZWZpbmUoYXJyYXlPclN0cmluZylcbiAgICA6IGRlZmluZShTdHJpbmcoYXJyYXlPclN0cmluZykuc3BsaXQoZGVsaW1pdGVyKSk7XG5cbiAgcmV0dXJuIG9iajtcbn07XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuY29uc3QgdG9GaW5pdGVOdW1iZXIgPSAodmFsdWUsIGRlZmF1bHRWYWx1ZSkgPT4ge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBOdW1iZXIuaXNGaW5pdGUoKHZhbHVlID0gK3ZhbHVlKSlcbiAgICA/IHZhbHVlXG4gICAgOiBkZWZhdWx0VmFsdWU7XG59O1xuXG4vKipcbiAqIElmIHRoZSB0aGluZyBpcyBhIEZvcm1EYXRhIG9iamVjdCwgcmV0dXJuIHRydWUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB0aGluZyAtIFRoZSB0aGluZyB0byBjaGVjay5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNTcGVjQ29tcGxpYW50Rm9ybSh0aGluZykge1xuICByZXR1cm4gISEoXG4gICAgdGhpbmcgJiZcbiAgICBpc0Z1bmN0aW9uKHRoaW5nLmFwcGVuZCkgJiZcbiAgICB0aGluZ1t0b1N0cmluZ1RhZ10gPT09IFwiRm9ybURhdGFcIiAmJlxuICAgIHRoaW5nW2l0ZXJhdG9yXVxuICApO1xufVxuXG5jb25zdCB0b0pTT05PYmplY3QgPSAob2JqKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IEFycmF5KDEwKTtcblxuICBjb25zdCB2aXNpdCA9IChzb3VyY2UsIGkpID0+IHtcbiAgICBpZiAoaXNPYmplY3Qoc291cmNlKSkge1xuICAgICAgaWYgKHN0YWNrLmluZGV4T2Yoc291cmNlKSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy9CdWZmZXIgY2hlY2tcbiAgICAgIGlmIChpc0J1ZmZlcihzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghKFwidG9KU09OXCIgaW4gc291cmNlKSkge1xuICAgICAgICBzdGFja1tpXSA9IHNvdXJjZTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gaXNBcnJheShzb3VyY2UpID8gW10gOiB7fTtcblxuICAgICAgICBmb3JFYWNoKHNvdXJjZSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICBjb25zdCByZWR1Y2VkVmFsdWUgPSB2aXNpdCh2YWx1ZSwgaSArIDEpO1xuICAgICAgICAgICFpc1VuZGVmaW5lZChyZWR1Y2VkVmFsdWUpICYmICh0YXJnZXRba2V5XSA9IHJlZHVjZWRWYWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0YWNrW2ldID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfTtcblxuICByZXR1cm4gdmlzaXQob2JqLCAwKTtcbn07XG5cbmNvbnN0IGlzQXN5bmNGbiA9IGtpbmRPZlRlc3QoXCJBc3luY0Z1bmN0aW9uXCIpO1xuXG5jb25zdCBpc1RoZW5hYmxlID0gKHRoaW5nKSA9PlxuICB0aGluZyAmJlxuICAoaXNPYmplY3QodGhpbmcpIHx8IGlzRnVuY3Rpb24odGhpbmcpKSAmJlxuICBpc0Z1bmN0aW9uKHRoaW5nLnRoZW4pICYmXG4gIGlzRnVuY3Rpb24odGhpbmcuY2F0Y2gpO1xuXG4vLyBvcmlnaW5hbCBjb2RlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vRGlnaXRhbEJyYWluSlMvQXhpb3NQcm9taXNlL2Jsb2IvMTZkZWFiMTM3MTBlYzA5Nzc5OTIyMTMxZjNmYTU5NTQzMjBmODNhYi9saWIvdXRpbHMuanMjTDExLUwzNFxuXG5jb25zdCBfc2V0SW1tZWRpYXRlID0gKChzZXRJbW1lZGlhdGVTdXBwb3J0ZWQsIHBvc3RNZXNzYWdlU3VwcG9ydGVkKSA9PiB7XG4gIGlmIChzZXRJbW1lZGlhdGVTdXBwb3J0ZWQpIHtcbiAgICByZXR1cm4gc2V0SW1tZWRpYXRlO1xuICB9XG5cbiAgcmV0dXJuIHBvc3RNZXNzYWdlU3VwcG9ydGVkXG4gICAgPyAoKHRva2VuLCBjYWxsYmFja3MpID0+IHtcbiAgICAgICAgX2dsb2JhbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgIFwibWVzc2FnZVwiLFxuICAgICAgICAgICh7IHNvdXJjZSwgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoc291cmNlID09PSBfZ2xvYmFsICYmIGRhdGEgPT09IHRva2VuKSB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrcy5sZW5ndGggJiYgY2FsbGJhY2tzLnNoaWZ0KCkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAoY2IpID0+IHtcbiAgICAgICAgICBjYWxsYmFja3MucHVzaChjYik7XG4gICAgICAgICAgX2dsb2JhbC5wb3N0TWVzc2FnZSh0b2tlbiwgXCIqXCIpO1xuICAgICAgICB9O1xuICAgICAgfSkoYGF4aW9zQCR7TWF0aC5yYW5kb20oKX1gLCBbXSlcbiAgICA6IChjYikgPT4gc2V0VGltZW91dChjYik7XG59KSh0eXBlb2Ygc2V0SW1tZWRpYXRlID09PSBcImZ1bmN0aW9uXCIsIGlzRnVuY3Rpb24oX2dsb2JhbC5wb3N0TWVzc2FnZSkpO1xuXG5jb25zdCBhc2FwID1cbiAgdHlwZW9mIHF1ZXVlTWljcm90YXNrICE9PSBcInVuZGVmaW5lZFwiXG4gICAgPyBxdWV1ZU1pY3JvdGFzay5iaW5kKF9nbG9iYWwpXG4gICAgOiAodHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5uZXh0VGljaykgfHwgX3NldEltbWVkaWF0ZTtcblxuLy8gKioqKioqKioqKioqKioqKioqKioqXG5cbmNvbnN0IGlzSXRlcmFibGUgPSAodGhpbmcpID0+IHRoaW5nICE9IG51bGwgJiYgaXNGdW5jdGlvbih0aGluZ1tpdGVyYXRvcl0pO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlzQXJyYXksXG4gIGlzQXJyYXlCdWZmZXIsXG4gIGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmcsXG4gIGlzTnVtYmVyLFxuICBpc0Jvb2xlYW4sXG4gIGlzT2JqZWN0LFxuICBpc1BsYWluT2JqZWN0LFxuICBpc0VtcHR5T2JqZWN0LFxuICBpc1JlYWRhYmxlU3RyZWFtLFxuICBpc1JlcXVlc3QsXG4gIGlzUmVzcG9uc2UsXG4gIGlzSGVhZGVycyxcbiAgaXNVbmRlZmluZWQsXG4gIGlzRGF0ZSxcbiAgaXNGaWxlLFxuICBpc0Jsb2IsXG4gIGlzUmVnRXhwLFxuICBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbSxcbiAgaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzVHlwZWRBcnJheSxcbiAgaXNGaWxlTGlzdCxcbiAgZm9yRWFjaCxcbiAgbWVyZ2UsXG4gIGV4dGVuZCxcbiAgdHJpbSxcbiAgc3RyaXBCT00sXG4gIGluaGVyaXRzLFxuICB0b0ZsYXRPYmplY3QsXG4gIGtpbmRPZixcbiAga2luZE9mVGVzdCxcbiAgZW5kc1dpdGgsXG4gIHRvQXJyYXksXG4gIGZvckVhY2hFbnRyeSxcbiAgbWF0Y2hBbGwsXG4gIGlzSFRNTEZvcm0sXG4gIGhhc093blByb3BlcnR5LFxuICBoYXNPd25Qcm9wOiBoYXNPd25Qcm9wZXJ0eSwgLy8gYW4gYWxpYXMgdG8gYXZvaWQgRVNMaW50IG5vLXByb3RvdHlwZS1idWlsdGlucyBkZXRlY3Rpb25cbiAgcmVkdWNlRGVzY3JpcHRvcnMsXG4gIGZyZWV6ZU1ldGhvZHMsXG4gIHRvT2JqZWN0U2V0LFxuICB0b0NhbWVsQ2FzZSxcbiAgbm9vcCxcbiAgdG9GaW5pdGVOdW1iZXIsXG4gIGZpbmRLZXksXG4gIGdsb2JhbDogX2dsb2JhbCxcbiAgaXNDb250ZXh0RGVmaW5lZCxcbiAgaXNTcGVjQ29tcGxpYW50Rm9ybSxcbiAgdG9KU09OT2JqZWN0LFxuICBpc0FzeW5jRm4sXG4gIGlzVGhlbmFibGUsXG4gIHNldEltbWVkaWF0ZTogX3NldEltbWVkaWF0ZSxcbiAgYXNhcCxcbiAgaXNJdGVyYWJsZSxcbn07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/axios/lib/utils.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/class-variance-authority/dist/index.mjs":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/class-variance-authority/dist/index.mjs ***!
|
||
\**************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cva: () => (/* binding */ cva),\n/* harmony export */ cx: () => (/* binding */ cx)\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ \"(app-pages-browser)/./node_modules/clsx/dist/clsx.mjs\");\n/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ \nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nconst cx = clsx__WEBPACK_IMPORTED_MODULE_0__.clsx;\nconst cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jbGFzcy12YXJpYW5jZS1hdXRob3JpdHkvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBZ0M7QUFDaEMsK0RBQStELE1BQU07QUFDOUQsV0FBVyxzQ0FBSTtBQUNmO0FBQ1A7QUFDQTtBQUNBLGdCQUFnQiw0QkFBNEI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFJO0FBQ2I7QUFDQSxrQkFBa0Isb0VBQW9FO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XFxkaXN0XFxpbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgMjAyMiBKb2UgQmVsbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjBcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlXG4gKiBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICogV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gKiB0aGUgTGljZW5zZS5cbiAqLyBpbXBvcnQgeyBjbHN4IH0gZnJvbSBcImNsc3hcIjtcbmNvbnN0IGZhbHN5VG9TdHJpbmcgPSAodmFsdWUpPT50eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiID8gYCR7dmFsdWV9YCA6IHZhbHVlID09PSAwID8gXCIwXCIgOiB2YWx1ZTtcbmV4cG9ydCBjb25zdCBjeCA9IGNsc3g7XG5leHBvcnQgY29uc3QgY3ZhID0gKGJhc2UsIGNvbmZpZyk9Pihwcm9wcyk9PntcbiAgICAgICAgdmFyIF9jb25maWdfY29tcG91bmRWYXJpYW50cztcbiAgICAgICAgaWYgKChjb25maWcgPT09IG51bGwgfHwgY29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb25maWcudmFyaWFudHMpID09IG51bGwpIHJldHVybiBjeChiYXNlLCBwcm9wcyA9PT0gbnVsbCB8fCBwcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJvcHMuY2xhc3MsIHByb3BzID09PSBudWxsIHx8IHByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcm9wcy5jbGFzc05hbWUpO1xuICAgICAgICBjb25zdCB7IHZhcmlhbnRzLCBkZWZhdWx0VmFyaWFudHMgfSA9IGNvbmZpZztcbiAgICAgICAgY29uc3QgZ2V0VmFyaWFudENsYXNzTmFtZXMgPSBPYmplY3Qua2V5cyh2YXJpYW50cykubWFwKCh2YXJpYW50KT0+e1xuICAgICAgICAgICAgY29uc3QgdmFyaWFudFByb3AgPSBwcm9wcyA9PT0gbnVsbCB8fCBwcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJvcHNbdmFyaWFudF07XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFyaWFudFByb3AgPSBkZWZhdWx0VmFyaWFudHMgPT09IG51bGwgfHwgZGVmYXVsdFZhcmlhbnRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0VmFyaWFudHNbdmFyaWFudF07XG4gICAgICAgICAgICBpZiAodmFyaWFudFByb3AgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgdmFyaWFudEtleSA9IGZhbHN5VG9TdHJpbmcodmFyaWFudFByb3ApIHx8IGZhbHN5VG9TdHJpbmcoZGVmYXVsdFZhcmlhbnRQcm9wKTtcbiAgICAgICAgICAgIHJldHVybiB2YXJpYW50c1t2YXJpYW50XVt2YXJpYW50S2V5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHByb3BzV2l0aG91dFVuZGVmaW5lZCA9IHByb3BzICYmIE9iamVjdC5lbnRyaWVzKHByb3BzKS5yZWR1Y2UoKGFjYywgcGFyYW0pPT57XG4gICAgICAgICAgICBsZXQgW2tleSwgdmFsdWVdID0gcGFyYW07XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuICAgICAgICBjb25zdCBnZXRDb21wb3VuZFZhcmlhbnRDbGFzc05hbWVzID0gY29uZmlnID09PSBudWxsIHx8IGNvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9jb25maWdfY29tcG91bmRWYXJpYW50cyA9IGNvbmZpZy5jb21wb3VuZFZhcmlhbnRzKSA9PT0gbnVsbCB8fCBfY29uZmlnX2NvbXBvdW5kVmFyaWFudHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb25maWdfY29tcG91bmRWYXJpYW50cy5yZWR1Y2UoKGFjYywgcGFyYW0pPT57XG4gICAgICAgICAgICBsZXQgeyBjbGFzczogY3ZDbGFzcywgY2xhc3NOYW1lOiBjdkNsYXNzTmFtZSwgLi4uY29tcG91bmRWYXJpYW50T3B0aW9ucyB9ID0gcGFyYW07XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29tcG91bmRWYXJpYW50T3B0aW9ucykuZXZlcnkoKHBhcmFtKT0+e1xuICAgICAgICAgICAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBwYXJhbTtcbiAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5pbmNsdWRlcyh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRWYXJpYW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHJvcHNXaXRob3V0VW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVtrZXldKSA6ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRWYXJpYW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHJvcHNXaXRob3V0VW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSlba2V5XSA9PT0gdmFsdWU7XG4gICAgICAgICAgICB9KSA/IFtcbiAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgY3ZDbGFzcyxcbiAgICAgICAgICAgICAgICBjdkNsYXNzTmFtZVxuICAgICAgICAgICAgXSA6IGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgICAgICByZXR1cm4gY3goYmFzZSwgZ2V0VmFyaWFudENsYXNzTmFtZXMsIGdldENvbXBvdW5kVmFyaWFudENsYXNzTmFtZXMsIHByb3BzID09PSBudWxsIHx8IHByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcm9wcy5jbGFzcywgcHJvcHMgPT09IG51bGwgfHwgcHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByb3BzLmNsYXNzTmFtZSk7XG4gICAgfTtcblxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/class-variance-authority/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/clsx/dist/clsx.mjs":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/clsx/dist/clsx.mjs ***!
|
||
\*****************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clsx: () => (/* binding */ clsx),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (clsx);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jbHN4L2Rpc3QvY2xzeC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxjQUFjLGFBQWEsK0NBQStDLGdEQUFnRCxlQUFlLFFBQVEsSUFBSSwwQ0FBMEMseUNBQXlDLFNBQWdCLGdCQUFnQix3Q0FBd0MsSUFBSSxtREFBbUQsU0FBUyxpRUFBZSxJQUFJIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxjbHN4XFxkaXN0XFxjbHN4Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiByKGUpe3ZhciB0LGYsbj1cIlwiO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZSluKz1lO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGUpaWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIG89ZS5sZW5ndGg7Zm9yKHQ9MDt0PG87dCsrKWVbdF0mJihmPXIoZVt0XSkpJiYobiYmKG4rPVwiIFwiKSxuKz1mKX1lbHNlIGZvcihmIGluIGUpZVtmXSYmKG4mJihuKz1cIiBcIiksbis9Zik7cmV0dXJuIG59ZXhwb3J0IGZ1bmN0aW9uIGNsc3goKXtmb3IodmFyIGUsdCxmPTAsbj1cIlwiLG89YXJndW1lbnRzLmxlbmd0aDtmPG87ZisrKShlPWFyZ3VtZW50c1tmXSkmJih0PXIoZSkpJiYobiYmKG4rPVwiIFwiKSxuKz10KTtyZXR1cm4gbn1leHBvcnQgZGVmYXVsdCBjbHN4OyJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/clsx/dist/clsx.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/fast-equals/dist/es/index.mjs":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/fast-equals/dist/es/index.mjs ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ circularDeepEqual: () => (/* binding */ circularDeepEqual),\n/* harmony export */ circularShallowEqual: () => (/* binding */ circularShallowEqual),\n/* harmony export */ createCustomEqual: () => (/* binding */ createCustomEqual),\n/* harmony export */ deepEqual: () => (/* binding */ deepEqual),\n/* harmony export */ sameValueZeroEqual: () => (/* binding */ sameValueZeroEqual),\n/* harmony export */ shallowEqual: () => (/* binding */ shallowEqual),\n/* harmony export */ strictCircularDeepEqual: () => (/* binding */ strictCircularDeepEqual),\n/* harmony export */ strictCircularShallowEqual: () => (/* binding */ strictCircularShallowEqual),\n/* harmony export */ strictDeepEqual: () => (/* binding */ strictDeepEqual),\n/* harmony export */ strictShallowEqual: () => (/* binding */ strictShallowEqual)\n/* harmony export */ });\nconst { getOwnPropertyNames, getOwnPropertySymbols } = Object;\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst { hasOwnProperty } = Object.prototype;\n/**\n * Combine two comparators into a single comparators.\n */\nfunction combineComparators(comparatorA, comparatorB) {\n return function isEqual(a, b, state) {\n return comparatorA(a, b, state) && comparatorB(a, b, state);\n };\n}\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nfunction createIsCircular(areItemsEqual) {\n return function isCircular(a, b, state) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, state);\n }\n const { cache } = state;\n const cachedA = cache.get(a);\n const cachedB = cache.get(b);\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n cache.set(a, b);\n cache.set(b, a);\n const result = areItemsEqual(a, b, state);\n cache.delete(a);\n cache.delete(b);\n return result;\n };\n}\n/**\n * Get the `@@toStringTag` of the value, if it exists.\n */\nfunction getShortTag(value) {\n return value != null ? value[Symbol.toStringTag] : undefined;\n}\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nfunction getStrictProperties(object) {\n return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));\n}\n/**\n * Whether the object contains the property passed as an own property.\n */\nconst hasOwn = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nObject.hasOwn || ((object, property) => hasOwnProperty.call(object, property));\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nfunction sameValueZeroEqual(a, b) {\n return a === b || (!a && !b && a !== a && b !== b);\n}\n\nconst PREACT_VNODE = '__v';\nconst PREACT_OWNER = '__o';\nconst REACT_OWNER = '_owner';\nconst { getOwnPropertyDescriptor, keys } = Object;\n/**\n * Whether the array buffers are equal in value.\n */\nfunction areArrayBuffersEqual(a, b) {\n return a.byteLength === b.byteLength && areTypedArraysEqual(new Uint8Array(a), new Uint8Array(b));\n}\n/**\n * Whether the arrays are equal in value.\n */\nfunction areArraysEqual(a, b, state) {\n let index = a.length;\n if (b.length !== index) {\n return false;\n }\n while (index-- > 0) {\n if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the dataviews are equal in value.\n */\nfunction areDataViewsEqual(a, b) {\n return (a.byteLength === b.byteLength\n && areTypedArraysEqual(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)));\n}\n/**\n * Whether the dates passed are equal in value.\n */\nfunction areDatesEqual(a, b) {\n return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n/**\n * Whether the errors passed are equal in value.\n */\nfunction areErrorsEqual(a, b) {\n return a.name === b.name && a.message === b.message && a.cause === b.cause && a.stack === b.stack;\n}\n/**\n * Whether the functions passed are equal in value.\n */\nfunction areFunctionsEqual(a, b) {\n return a === b;\n}\n/**\n * Whether the `Map`s are equal in value.\n */\nfunction areMapsEqual(a, b, state) {\n const size = a.size;\n if (size !== b.size) {\n return false;\n }\n if (!size) {\n return true;\n }\n const matchedIndices = new Array(size);\n const aIterable = a.entries();\n let aResult;\n let bResult;\n let index = 0;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n const bIterable = b.entries();\n let hasMatch = false;\n let matchIndex = 0;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n if (matchedIndices[matchIndex]) {\n matchIndex++;\n continue;\n }\n const aEntry = aResult.value;\n const bEntry = bResult.value;\n if (state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state)\n && state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)) {\n hasMatch = matchedIndices[matchIndex] = true;\n break;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n index++;\n }\n return true;\n}\n/**\n * Whether the numbers are equal in value.\n */\nconst areNumbersEqual = sameValueZeroEqual;\n/**\n * Whether the objects are equal in value.\n */\nfunction areObjectsEqual(a, b, state) {\n const properties = keys(a);\n let index = properties.length;\n if (keys(b).length !== index) {\n return false;\n }\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n if (!isPropertyEqual(a, b, state, properties[index])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nfunction areObjectsEqualStrict(a, b, state) {\n const properties = getStrictProperties(a);\n let index = properties.length;\n if (getStrictProperties(b).length !== index) {\n return false;\n }\n let property;\n let descriptorA;\n let descriptorB;\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index];\n if (!isPropertyEqual(a, b, state, property)) {\n return false;\n }\n descriptorA = getOwnPropertyDescriptor(a, property);\n descriptorB = getOwnPropertyDescriptor(b, property);\n if ((descriptorA || descriptorB)\n && (!descriptorA\n || !descriptorB\n || descriptorA.configurable !== descriptorB.configurable\n || descriptorA.enumerable !== descriptorB.enumerable\n || descriptorA.writable !== descriptorB.writable)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nfunction arePrimitiveWrappersEqual(a, b) {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n/**\n * Whether the regexps passed are equal in value.\n */\nfunction areRegExpsEqual(a, b) {\n return a.source === b.source && a.flags === b.flags;\n}\n/**\n * Whether the `Set`s are equal in value.\n */\nfunction areSetsEqual(a, b, state) {\n const size = a.size;\n if (size !== b.size) {\n return false;\n }\n if (!size) {\n return true;\n }\n const matchedIndices = new Array(size);\n const aIterable = a.values();\n let aResult;\n let bResult;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n const bIterable = b.values();\n let hasMatch = false;\n let matchIndex = 0;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n if (!matchedIndices[matchIndex]\n && state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state)) {\n hasMatch = matchedIndices[matchIndex] = true;\n break;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the TypedArray instances are equal in value.\n */\nfunction areTypedArraysEqual(a, b) {\n let index = a.byteLength;\n if (b.byteLength !== index || a.byteOffset !== b.byteOffset) {\n return false;\n }\n while (index-- > 0) {\n if (a[index] !== b[index]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the URL instances are equal in value.\n */\nfunction areUrlsEqual(a, b) {\n return (a.hostname === b.hostname\n && a.pathname === b.pathname\n && a.protocol === b.protocol\n && a.port === b.port\n && a.hash === b.hash\n && a.username === b.username\n && a.password === b.password);\n}\nfunction isPropertyEqual(a, b, state, property) {\n if ((property === REACT_OWNER || property === PREACT_OWNER || property === PREACT_VNODE)\n && (a.$$typeof || b.$$typeof)) {\n return true;\n }\n return hasOwn(b, property) && state.equals(a[property], b[property], property, property, a, b, state);\n}\n\nconst ARRAY_BUFFER_TAG = '[object ArrayBuffer]';\nconst ARGUMENTS_TAG = '[object Arguments]';\nconst BOOLEAN_TAG = '[object Boolean]';\nconst DATA_VIEW_TAG = '[object DataView]';\nconst DATE_TAG = '[object Date]';\nconst ERROR_TAG = '[object Error]';\nconst MAP_TAG = '[object Map]';\nconst NUMBER_TAG = '[object Number]';\nconst OBJECT_TAG = '[object Object]';\nconst REG_EXP_TAG = '[object RegExp]';\nconst SET_TAG = '[object Set]';\nconst STRING_TAG = '[object String]';\nconst TYPED_ARRAY_TAGS = {\n '[object Int8Array]': true,\n '[object Uint8Array]': true,\n '[object Uint8ClampedArray]': true,\n '[object Int16Array]': true,\n '[object Uint16Array]': true,\n '[object Int32Array]': true,\n '[object Uint32Array]': true,\n '[object Float16Array]': true,\n '[object Float32Array]': true,\n '[object Float64Array]': true,\n '[object BigInt64Array]': true,\n '[object BigUint64Array]': true,\n};\nconst URL_TAG = '[object URL]';\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nfunction createEqualityComparator({ areArrayBuffersEqual, areArraysEqual, areDataViewsEqual, areDatesEqual, areErrorsEqual, areFunctionsEqual, areMapsEqual, areNumbersEqual, areObjectsEqual, arePrimitiveWrappersEqual, areRegExpsEqual, areSetsEqual, areTypedArraysEqual, areUrlsEqual, unknownTagComparators, }) {\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n return function comparator(a, b, state) {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\n // If either of the items are nullish and fail the strictly equal check\n // above, then they must be unequal.\n if (a == null || b == null) {\n return false;\n }\n const type = typeof a;\n if (type !== typeof b) {\n return false;\n }\n if (type !== 'object') {\n if (type === 'number') {\n return areNumbersEqual(a, b, state);\n }\n if (type === 'function') {\n return areFunctionsEqual(a, b, state);\n }\n // If a primitive value that is not strictly equal, it must be unequal.\n return false;\n }\n const constructor = a.constructor;\n // Checks are listed in order of commonality of use-case:\n // 1. Common complex object types (plain object, array)\n // 2. Common data values (date, regexp)\n // 3. Less-common complex object types (map, set)\n // 4. Less-common data values (promise, primitive wrappers)\n // Inherently this is both subjective and assumptive, however\n // when reviewing comparable libraries in the wild this order\n // appears to be generally consistent.\n // Constructors should match, otherwise there is potential for false positives\n // between class and subclass or custom object and POJO.\n if (constructor !== b.constructor) {\n return false;\n }\n // `isPlainObject` only checks against the object's own realm. Cross-realm\n // comparisons are rare, and will be handled in the ultimate fallback, so\n // we can avoid capturing the string tag.\n if (constructor === Object) {\n return areObjectsEqual(a, b, state);\n }\n // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n // the string tag or doing an `instanceof` check.\n if (Array.isArray(a)) {\n return areArraysEqual(a, b, state);\n }\n // Try to fast-path equality checks for other complex object types in the\n // same realm to avoid capturing the string tag. Strict equality is used\n // instead of `instanceof` because it is more performant for the common\n // use-case. If someone is subclassing a native class, it will be handled\n // with the string tag comparison.\n if (constructor === Date) {\n return areDatesEqual(a, b, state);\n }\n if (constructor === RegExp) {\n return areRegExpsEqual(a, b, state);\n }\n if (constructor === Map) {\n return areMapsEqual(a, b, state);\n }\n if (constructor === Set) {\n return areSetsEqual(a, b, state);\n }\n // Since this is a custom object, capture the string tag to determing its type.\n // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n const tag = toString.call(a);\n if (tag === DATE_TAG) {\n return areDatesEqual(a, b, state);\n }\n // For RegExp, the properties are not enumerable, and therefore will give false positives if\n // tested like a standard object.\n if (tag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, state);\n }\n if (tag === MAP_TAG) {\n return areMapsEqual(a, b, state);\n }\n if (tag === SET_TAG) {\n return areSetsEqual(a, b, state);\n }\n if (tag === OBJECT_TAG) {\n // The exception for value comparison is custom `Promise`-like class instances. These should\n // be treated the same as standard `Promise` objects, which means strict equality, and if\n // it reaches this point then that strict equality comparison has already failed.\n return typeof a.then !== 'function' && typeof b.then !== 'function' && areObjectsEqual(a, b, state);\n }\n // If a URL tag, it should be tested explicitly. Like RegExp, the properties are not\n // enumerable, and therefore will give false positives if tested like a standard object.\n if (tag === URL_TAG) {\n return areUrlsEqual(a, b, state);\n }\n // If an error tag, it should be tested explicitly. Like RegExp, the properties are not\n // enumerable, and therefore will give false positives if tested like a standard object.\n if (tag === ERROR_TAG) {\n return areErrorsEqual(a, b, state);\n }\n // If an arguments tag, it should be treated as a standard object.\n if (tag === ARGUMENTS_TAG) {\n return areObjectsEqual(a, b, state);\n }\n if (TYPED_ARRAY_TAGS[tag]) {\n return areTypedArraysEqual(a, b, state);\n }\n if (tag === ARRAY_BUFFER_TAG) {\n return areArrayBuffersEqual(a, b, state);\n }\n if (tag === DATA_VIEW_TAG) {\n return areDataViewsEqual(a, b, state);\n }\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\n // types.\n if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n return arePrimitiveWrappersEqual(a, b, state);\n }\n if (unknownTagComparators) {\n let unknownTagComparator = unknownTagComparators[tag];\n if (!unknownTagComparator) {\n const shortTag = getShortTag(a);\n if (shortTag) {\n unknownTagComparator = unknownTagComparators[shortTag];\n }\n }\n // If the custom config has an unknown tag comparator that matches the captured tag or the\n // @@toStringTag, it is the source of truth for whether the values are equal.\n if (unknownTagComparator) {\n return unknownTagComparator(a, b, state);\n }\n }\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n // comparison that can be made.\n // - For types that can be introspected, but rarely have requirements to be compared\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n // use-cases (may be included in a future release, if requested enough).\n // - For types that can be introspected but do not have an objective definition of what\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n // In all cases, these decisions should be reevaluated based on changes to the language and\n // common development practices.\n return false;\n };\n}\n/**\n * Create the configuration object used for building comparators.\n */\nfunction createEqualityComparatorConfig({ circular, createCustomConfig, strict, }) {\n let config = {\n areArrayBuffersEqual,\n areArraysEqual: strict ? areObjectsEqualStrict : areArraysEqual,\n areDataViewsEqual,\n areDatesEqual: areDatesEqual,\n areErrorsEqual: areErrorsEqual,\n areFunctionsEqual: areFunctionsEqual,\n areMapsEqual: strict ? combineComparators(areMapsEqual, areObjectsEqualStrict) : areMapsEqual,\n areNumbersEqual: areNumbersEqual,\n areObjectsEqual: strict ? areObjectsEqualStrict : areObjectsEqual,\n arePrimitiveWrappersEqual: arePrimitiveWrappersEqual,\n areRegExpsEqual: areRegExpsEqual,\n areSetsEqual: strict ? combineComparators(areSetsEqual, areObjectsEqualStrict) : areSetsEqual,\n areTypedArraysEqual: strict\n ? combineComparators(areTypedArraysEqual, areObjectsEqualStrict)\n : areTypedArraysEqual,\n areUrlsEqual: areUrlsEqual,\n unknownTagComparators: undefined,\n };\n if (createCustomConfig) {\n config = Object.assign({}, config, createCustomConfig(config));\n }\n if (circular) {\n const areArraysEqual = createIsCircular(config.areArraysEqual);\n const areMapsEqual = createIsCircular(config.areMapsEqual);\n const areObjectsEqual = createIsCircular(config.areObjectsEqual);\n const areSetsEqual = createIsCircular(config.areSetsEqual);\n config = Object.assign({}, config, {\n areArraysEqual,\n areMapsEqual,\n areObjectsEqual,\n areSetsEqual,\n });\n }\n return config;\n}\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nfunction createInternalEqualityComparator(compare) {\n return function (a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {\n return compare(a, b, state);\n };\n}\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nfunction createIsEqual({ circular, comparator, createState, equals, strict }) {\n if (createState) {\n return function isEqual(a, b) {\n const { cache = circular ? new WeakMap() : undefined, meta } = createState();\n return comparator(a, b, {\n cache,\n equals,\n meta,\n strict,\n });\n };\n }\n if (circular) {\n return function isEqual(a, b) {\n return comparator(a, b, {\n cache: new WeakMap(),\n equals,\n meta: undefined,\n strict,\n });\n };\n }\n const state = {\n cache: undefined,\n equals,\n meta: undefined,\n strict,\n };\n return function isEqual(a, b) {\n return comparator(a, b, state);\n };\n}\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nconst deepEqual = createCustomEqual();\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nconst strictDeepEqual = createCustomEqual({ strict: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nconst circularDeepEqual = createCustomEqual({ circular: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nconst strictCircularDeepEqual = createCustomEqual({\n circular: true,\n strict: true,\n});\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nconst shallowEqual = createCustomEqual({\n createInternalComparator: () => sameValueZeroEqual,\n});\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nconst strictShallowEqual = createCustomEqual({\n strict: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nconst circularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nconst strictCircularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n strict: true,\n});\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nfunction createCustomEqual(options = {}) {\n const { circular = false, createInternalComparator: createCustomInternalComparator, createState, strict = false, } = options;\n const config = createEqualityComparatorConfig(options);\n const comparator = createEqualityComparator(config);\n const equals = createCustomInternalComparator\n ? createCustomInternalComparator(comparator)\n : createInternalEqualityComparator(comparator);\n return createIsEqual({ circular, comparator, createState, equals, strict });\n}\n\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9mYXN0LWVxdWFscy9kaXN0L2VzL2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsUUFBUSw2Q0FBNkM7QUFDckQ7QUFDQSxRQUFRLGlCQUFpQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsaUNBQWlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLGdSQUFnUjtBQUNwVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLHVDQUF1QztBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsbURBQW1EO0FBQzVFO0FBQ0E7QUFDQSxvQkFBb0IscURBQXFEO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxjQUFjO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxnQkFBZ0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QyxZQUFZLDJHQUEyRztBQUN2SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG1EQUFtRDtBQUM5RTs7QUFFNk07QUFDN00iLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXGZhc3QtZXF1YWxzXFxkaXN0XFxlc1xcaW5kZXgubWpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgZ2V0T3duUHJvcGVydHlOYW1lcywgZ2V0T3duUHJvcGVydHlTeW1ib2xzIH0gPSBPYmplY3Q7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG5jb25zdCB7IGhhc093blByb3BlcnR5IH0gPSBPYmplY3QucHJvdG90eXBlO1xuLyoqXG4gKiBDb21iaW5lIHR3byBjb21wYXJhdG9ycyBpbnRvIGEgc2luZ2xlIGNvbXBhcmF0b3JzLlxuICovXG5mdW5jdGlvbiBjb21iaW5lQ29tcGFyYXRvcnMoY29tcGFyYXRvckEsIGNvbXBhcmF0b3JCKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGlzRXF1YWwoYSwgYiwgc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBhcmF0b3JBKGEsIGIsIHN0YXRlKSAmJiBjb21wYXJhdG9yQihhLCBiLCBzdGF0ZSk7XG4gICAgfTtcbn1cbi8qKlxuICogV3JhcCB0aGUgcHJvdmlkZWQgYGFyZUl0ZW1zRXF1YWxgIG1ldGhvZCB0byBtYW5hZ2UgdGhlIGNpcmN1bGFyIHN0YXRlLCBhbGxvd2luZ1xuICogZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgdG8gYmUgc2FmZWx5IGluY2x1ZGVkIGluIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgY3JlYXRpbmdcbiAqIHN0YWNrIG92ZXJmbG93cy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSXNDaXJjdWxhcihhcmVJdGVtc0VxdWFsKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGlzQ2lyY3VsYXIoYSwgYiwgc3RhdGUpIHtcbiAgICAgICAgaWYgKCFhIHx8ICFiIHx8IHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmVJdGVtc0VxdWFsKGEsIGIsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGNhY2hlIH0gPSBzdGF0ZTtcbiAgICAgICAgY29uc3QgY2FjaGVkQSA9IGNhY2hlLmdldChhKTtcbiAgICAgICAgY29uc3QgY2FjaGVkQiA9IGNhY2hlLmdldChiKTtcbiAgICAgICAgaWYgKGNhY2hlZEEgJiYgY2FjaGVkQikge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZEEgPT09IGIgJiYgY2FjaGVkQiA9PT0gYTtcbiAgICAgICAgfVxuICAgICAgICBjYWNoZS5zZXQoYSwgYik7XG4gICAgICAgIGNhY2hlLnNldChiLCBhKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXJlSXRlbXNFcXVhbChhLCBiLCBzdGF0ZSk7XG4gICAgICAgIGNhY2hlLmRlbGV0ZShhKTtcbiAgICAgICAgY2FjaGUuZGVsZXRlKGIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG59XG4vKipcbiAqIEdldCB0aGUgYEBAdG9TdHJpbmdUYWdgIG9mIHRoZSB2YWx1ZSwgaWYgaXQgZXhpc3RzLlxuICovXG5mdW5jdGlvbiBnZXRTaG9ydFRhZyh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsID8gdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXSA6IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogR2V0IHRoZSBwcm9wZXJ0aWVzIHRvIHN0cmljdGx5IGV4YW1pbmUsIHdoaWNoIGluY2x1ZGUgYm90aCBvd24gcHJvcGVydGllcyB0aGF0IGFyZVxuICogbm90IGVudW1lcmFibGUgYW5kIHN5bWJvbCBwcm9wZXJ0aWVzLlxuICovXG5mdW5jdGlvbiBnZXRTdHJpY3RQcm9wZXJ0aWVzKG9iamVjdCkge1xuICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpKTtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgb2JqZWN0IGNvbnRhaW5zIHRoZSBwcm9wZXJ0eSBwYXNzZWQgYXMgYW4gb3duIHByb3BlcnR5LlxuICovXG5jb25zdCBoYXNPd24gPSBcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG5PYmplY3QuaGFzT3duIHx8ICgob2JqZWN0LCBwcm9wZXJ0eSkgPT4gaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KSk7XG4vKipcbiAqIFdoZXRoZXIgdGhlIHZhbHVlcyBwYXNzZWQgYXJlIHN0cmljdGx5IGVxdWFsIG9yIGJvdGggTmFOLlxuICovXG5mdW5jdGlvbiBzYW1lVmFsdWVaZXJvRXF1YWwoYSwgYikge1xuICAgIHJldHVybiBhID09PSBiIHx8ICghYSAmJiAhYiAmJiBhICE9PSBhICYmIGIgIT09IGIpO1xufVxuXG5jb25zdCBQUkVBQ1RfVk5PREUgPSAnX192JztcbmNvbnN0IFBSRUFDVF9PV05FUiA9ICdfX28nO1xuY29uc3QgUkVBQ1RfT1dORVIgPSAnX293bmVyJztcbmNvbnN0IHsgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBrZXlzIH0gPSBPYmplY3Q7XG4vKipcbiAqIFdoZXRoZXIgdGhlIGFycmF5IGJ1ZmZlcnMgYXJlIGVxdWFsIGluIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcmVBcnJheUJ1ZmZlcnNFcXVhbChhLCBiKSB7XG4gICAgcmV0dXJuIGEuYnl0ZUxlbmd0aCA9PT0gYi5ieXRlTGVuZ3RoICYmIGFyZVR5cGVkQXJyYXlzRXF1YWwobmV3IFVpbnQ4QXJyYXkoYSksIG5ldyBVaW50OEFycmF5KGIpKTtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgYXJyYXlzIGFyZSBlcXVhbCBpbiB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJlQXJyYXlzRXF1YWwoYSwgYiwgc3RhdGUpIHtcbiAgICBsZXQgaW5kZXggPSBhLmxlbmd0aDtcbiAgICBpZiAoYi5sZW5ndGggIT09IGluZGV4KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgd2hpbGUgKGluZGV4LS0gPiAwKSB7XG4gICAgICAgIGlmICghc3RhdGUuZXF1YWxzKGFbaW5kZXhdLCBiW2luZGV4XSwgaW5kZXgsIGluZGV4LCBhLCBiLCBzdGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgZGF0YXZpZXdzIGFyZSBlcXVhbCBpbiB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJlRGF0YVZpZXdzRXF1YWwoYSwgYikge1xuICAgIHJldHVybiAoYS5ieXRlTGVuZ3RoID09PSBiLmJ5dGVMZW5ndGhcbiAgICAgICAgJiYgYXJlVHlwZWRBcnJheXNFcXVhbChuZXcgVWludDhBcnJheShhLmJ1ZmZlciwgYS5ieXRlT2Zmc2V0LCBhLmJ5dGVMZW5ndGgpLCBuZXcgVWludDhBcnJheShiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpKSk7XG59XG4vKipcbiAqIFdoZXRoZXIgdGhlIGRhdGVzIHBhc3NlZCBhcmUgZXF1YWwgaW4gdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFyZURhdGVzRXF1YWwoYSwgYikge1xuICAgIHJldHVybiBzYW1lVmFsdWVaZXJvRXF1YWwoYS5nZXRUaW1lKCksIGIuZ2V0VGltZSgpKTtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgZXJyb3JzIHBhc3NlZCBhcmUgZXF1YWwgaW4gdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFyZUVycm9yc0VxdWFsKGEsIGIpIHtcbiAgICByZXR1cm4gYS5uYW1lID09PSBiLm5hbWUgJiYgYS5tZXNzYWdlID09PSBiLm1lc3NhZ2UgJiYgYS5jYXVzZSA9PT0gYi5jYXVzZSAmJiBhLnN0YWNrID09PSBiLnN0YWNrO1xufVxuLyoqXG4gKiBXaGV0aGVyIHRoZSBmdW5jdGlvbnMgcGFzc2VkIGFyZSBlcXVhbCBpbiB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJlRnVuY3Rpb25zRXF1YWwoYSwgYikge1xuICAgIHJldHVybiBhID09PSBiO1xufVxuLyoqXG4gKiBXaGV0aGVyIHRoZSBgTWFwYHMgYXJlIGVxdWFsIGluIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcmVNYXBzRXF1YWwoYSwgYiwgc3RhdGUpIHtcbiAgICBjb25zdCBzaXplID0gYS5zaXplO1xuICAgIGlmIChzaXplICE9PSBiLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXNpemUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoZWRJbmRpY2VzID0gbmV3IEFycmF5KHNpemUpO1xuICAgIGNvbnN0IGFJdGVyYWJsZSA9IGEuZW50cmllcygpO1xuICAgIGxldCBhUmVzdWx0O1xuICAgIGxldCBiUmVzdWx0O1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICB3aGlsZSAoKGFSZXN1bHQgPSBhSXRlcmFibGUubmV4dCgpKSkge1xuICAgICAgICBpZiAoYVJlc3VsdC5kb25lKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiSXRlcmFibGUgPSBiLmVudHJpZXMoKTtcbiAgICAgICAgbGV0IGhhc01hdGNoID0gZmFsc2U7XG4gICAgICAgIGxldCBtYXRjaEluZGV4ID0gMDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgd2hpbGUgKChiUmVzdWx0ID0gYkl0ZXJhYmxlLm5leHQoKSkpIHtcbiAgICAgICAgICAgIGlmIChiUmVzdWx0LmRvbmUpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaGVkSW5kaWNlc1ttYXRjaEluZGV4XSkge1xuICAgICAgICAgICAgICAgIG1hdGNoSW5kZXgrKztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFFbnRyeSA9IGFSZXN1bHQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBiRW50cnkgPSBiUmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgaWYgKHN0YXRlLmVxdWFscyhhRW50cnlbMF0sIGJFbnRyeVswXSwgaW5kZXgsIG1hdGNoSW5kZXgsIGEsIGIsIHN0YXRlKVxuICAgICAgICAgICAgICAgICYmIHN0YXRlLmVxdWFscyhhRW50cnlbMV0sIGJFbnRyeVsxXSwgYUVudHJ5WzBdLCBiRW50cnlbMF0sIGEsIGIsIHN0YXRlKSkge1xuICAgICAgICAgICAgICAgIGhhc01hdGNoID0gbWF0Y2hlZEluZGljZXNbbWF0Y2hJbmRleF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWF0Y2hJbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaGFzTWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCsrO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgbnVtYmVycyBhcmUgZXF1YWwgaW4gdmFsdWUuXG4gKi9cbmNvbnN0IGFyZU51bWJlcnNFcXVhbCA9IHNhbWVWYWx1ZVplcm9FcXVhbDtcbi8qKlxuICogV2hldGhlciB0aGUgb2JqZWN0cyBhcmUgZXF1YWwgaW4gdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFyZU9iamVjdHNFcXVhbChhLCBiLCBzdGF0ZSkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBrZXlzKGEpO1xuICAgIGxldCBpbmRleCA9IHByb3BlcnRpZXMubGVuZ3RoO1xuICAgIGlmIChrZXlzKGIpLmxlbmd0aCAhPT0gaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBEZWNyZW1lbnRpbmcgYHdoaWxlYCBzaG93ZWQgZmFzdGVyIHJlc3VsdHMgdGhhbiBlaXRoZXIgaW5jcmVtZW50aW5nIG9yXG4gICAgLy8gZGVjcmVtZW50aW5nIGBmb3JgIGxvb3AgYW5kIHRoYW4gYW4gaW5jcmVtZW50aW5nIGB3aGlsZWAgbG9vcC4gRGVjbGFyYXRpdmVcbiAgICAvLyBtZXRob2RzIGxpa2UgYHNvbWVgIC8gYGV2ZXJ5YCB3ZXJlIG5vdCB1c2VkIHRvIGF2b2lkIGluY3VycmluZyB0aGUgZ2FyYmFnZVxuICAgIC8vIGNvc3Qgb2YgYW5vbnltb3VzIGNhbGxiYWNrcy5cbiAgICB3aGlsZSAoaW5kZXgtLSA+IDApIHtcbiAgICAgICAgaWYgKCFpc1Byb3BlcnR5RXF1YWwoYSwgYiwgc3RhdGUsIHByb3BlcnRpZXNbaW5kZXhdKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLyoqXG4gKiBXaGV0aGVyIHRoZSBvYmplY3RzIGFyZSBlcXVhbCBpbiB2YWx1ZSB3aXRoIHN0cmljdCBwcm9wZXJ0eSBjaGVja2luZy5cbiAqL1xuZnVuY3Rpb24gYXJlT2JqZWN0c0VxdWFsU3RyaWN0KGEsIGIsIHN0YXRlKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IGdldFN0cmljdFByb3BlcnRpZXMoYSk7XG4gICAgbGV0IGluZGV4ID0gcHJvcGVydGllcy5sZW5ndGg7XG4gICAgaWYgKGdldFN0cmljdFByb3BlcnRpZXMoYikubGVuZ3RoICE9PSBpbmRleCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBwcm9wZXJ0eTtcbiAgICBsZXQgZGVzY3JpcHRvckE7XG4gICAgbGV0IGRlc2NyaXB0b3JCO1xuICAgIC8vIERlY3JlbWVudGluZyBgd2hpbGVgIHNob3dlZCBmYXN0ZXIgcmVzdWx0cyB0aGFuIGVpdGhlciBpbmNyZW1lbnRpbmcgb3JcbiAgICAvLyBkZWNyZW1lbnRpbmcgYGZvcmAgbG9vcCBhbmQgdGhhbiBhbiBpbmNyZW1lbnRpbmcgYHdoaWxlYCBsb29wLiBEZWNsYXJhdGl2ZVxuICAgIC8vIG1ldGhvZHMgbGlrZSBgc29tZWAgLyBgZXZlcnlgIHdlcmUgbm90IHVzZWQgdG8gYXZvaWQgaW5jdXJyaW5nIHRoZSBnYXJiYWdlXG4gICAgLy8gY29zdCBvZiBhbm9ueW1vdXMgY2FsbGJhY2tzLlxuICAgIHdoaWxlIChpbmRleC0tID4gMCkge1xuICAgICAgICBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaW5kZXhdO1xuICAgICAgICBpZiAoIWlzUHJvcGVydHlFcXVhbChhLCBiLCBzdGF0ZSwgcHJvcGVydHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZGVzY3JpcHRvckEgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSwgcHJvcGVydHkpO1xuICAgICAgICBkZXNjcmlwdG9yQiA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihiLCBwcm9wZXJ0eSk7XG4gICAgICAgIGlmICgoZGVzY3JpcHRvckEgfHwgZGVzY3JpcHRvckIpXG4gICAgICAgICAgICAmJiAoIWRlc2NyaXB0b3JBXG4gICAgICAgICAgICAgICAgfHwgIWRlc2NyaXB0b3JCXG4gICAgICAgICAgICAgICAgfHwgZGVzY3JpcHRvckEuY29uZmlndXJhYmxlICE9PSBkZXNjcmlwdG9yQi5jb25maWd1cmFibGVcbiAgICAgICAgICAgICAgICB8fCBkZXNjcmlwdG9yQS5lbnVtZXJhYmxlICE9PSBkZXNjcmlwdG9yQi5lbnVtZXJhYmxlXG4gICAgICAgICAgICAgICAgfHwgZGVzY3JpcHRvckEud3JpdGFibGUgIT09IGRlc2NyaXB0b3JCLndyaXRhYmxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLyoqXG4gKiBXaGV0aGVyIHRoZSBwcmltaXRpdmUgd3JhcHBlcnMgcGFzc2VkIGFyZSBlcXVhbCBpbiB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJlUHJpbWl0aXZlV3JhcHBlcnNFcXVhbChhLCBiKSB7XG4gICAgcmV0dXJuIHNhbWVWYWx1ZVplcm9FcXVhbChhLnZhbHVlT2YoKSwgYi52YWx1ZU9mKCkpO1xufVxuLyoqXG4gKiBXaGV0aGVyIHRoZSByZWdleHBzIHBhc3NlZCBhcmUgZXF1YWwgaW4gdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFyZVJlZ0V4cHNFcXVhbChhLCBiKSB7XG4gICAgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xufVxuLyoqXG4gKiBXaGV0aGVyIHRoZSBgU2V0YHMgYXJlIGVxdWFsIGluIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcmVTZXRzRXF1YWwoYSwgYiwgc3RhdGUpIHtcbiAgICBjb25zdCBzaXplID0gYS5zaXplO1xuICAgIGlmIChzaXplICE9PSBiLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXNpemUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoZWRJbmRpY2VzID0gbmV3IEFycmF5KHNpemUpO1xuICAgIGNvbnN0IGFJdGVyYWJsZSA9IGEudmFsdWVzKCk7XG4gICAgbGV0IGFSZXN1bHQ7XG4gICAgbGV0IGJSZXN1bHQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICB3aGlsZSAoKGFSZXN1bHQgPSBhSXRlcmFibGUubmV4dCgpKSkge1xuICAgICAgICBpZiAoYVJlc3VsdC5kb25lKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiSXRlcmFibGUgPSBiLnZhbHVlcygpO1xuICAgICAgICBsZXQgaGFzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgbGV0IG1hdGNoSW5kZXggPSAwO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgICAgICB3aGlsZSAoKGJSZXN1bHQgPSBiSXRlcmFibGUubmV4dCgpKSkge1xuICAgICAgICAgICAgaWYgKGJSZXN1bHQuZG9uZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtYXRjaGVkSW5kaWNlc1ttYXRjaEluZGV4XVxuICAgICAgICAgICAgICAgICYmIHN0YXRlLmVxdWFscyhhUmVzdWx0LnZhbHVlLCBiUmVzdWx0LnZhbHVlLCBhUmVzdWx0LnZhbHVlLCBiUmVzdWx0LnZhbHVlLCBhLCBiLCBzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICBoYXNNYXRjaCA9IG1hdGNoZWRJbmRpY2VzW21hdGNoSW5kZXhdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1hdGNoSW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc01hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vKipcbiAqIFdoZXRoZXIgdGhlIFR5cGVkQXJyYXkgaW5zdGFuY2VzIGFyZSBlcXVhbCBpbiB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJlVHlwZWRBcnJheXNFcXVhbChhLCBiKSB7XG4gICAgbGV0IGluZGV4ID0gYS5ieXRlTGVuZ3RoO1xuICAgIGlmIChiLmJ5dGVMZW5ndGggIT09IGluZGV4IHx8IGEuYnl0ZU9mZnNldCAhPT0gYi5ieXRlT2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgd2hpbGUgKGluZGV4LS0gPiAwKSB7XG4gICAgICAgIGlmIChhW2luZGV4XSAhPT0gYltpbmRleF0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgVVJMIGluc3RhbmNlcyBhcmUgZXF1YWwgaW4gdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFyZVVybHNFcXVhbChhLCBiKSB7XG4gICAgcmV0dXJuIChhLmhvc3RuYW1lID09PSBiLmhvc3RuYW1lXG4gICAgICAgICYmIGEucGF0aG5hbWUgPT09IGIucGF0aG5hbWVcbiAgICAgICAgJiYgYS5wcm90b2NvbCA9PT0gYi5wcm90b2NvbFxuICAgICAgICAmJiBhLnBvcnQgPT09IGIucG9ydFxuICAgICAgICAmJiBhLmhhc2ggPT09IGIuaGFzaFxuICAgICAgICAmJiBhLnVzZXJuYW1lID09PSBiLnVzZXJuYW1lXG4gICAgICAgICYmIGEucGFzc3dvcmQgPT09IGIucGFzc3dvcmQpO1xufVxuZnVuY3Rpb24gaXNQcm9wZXJ0eUVxdWFsKGEsIGIsIHN0YXRlLCBwcm9wZXJ0eSkge1xuICAgIGlmICgocHJvcGVydHkgPT09IFJFQUNUX09XTkVSIHx8IHByb3BlcnR5ID09PSBQUkVBQ1RfT1dORVIgfHwgcHJvcGVydHkgPT09IFBSRUFDVF9WTk9ERSlcbiAgICAgICAgJiYgKGEuJCR0eXBlb2YgfHwgYi4kJHR5cGVvZikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBoYXNPd24oYiwgcHJvcGVydHkpICYmIHN0YXRlLmVxdWFscyhhW3Byb3BlcnR5XSwgYltwcm9wZXJ0eV0sIHByb3BlcnR5LCBwcm9wZXJ0eSwgYSwgYiwgc3RhdGUpO1xufVxuXG5jb25zdCBBUlJBWV9CVUZGRVJfVEFHID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbmNvbnN0IEFSR1VNRU5UU19UQUcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcbmNvbnN0IEJPT0xFQU5fVEFHID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuY29uc3QgREFUQV9WSUVXX1RBRyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5jb25zdCBEQVRFX1RBRyA9ICdbb2JqZWN0IERhdGVdJztcbmNvbnN0IEVSUk9SX1RBRyA9ICdbb2JqZWN0IEVycm9yXSc7XG5jb25zdCBNQVBfVEFHID0gJ1tvYmplY3QgTWFwXSc7XG5jb25zdCBOVU1CRVJfVEFHID0gJ1tvYmplY3QgTnVtYmVyXSc7XG5jb25zdCBPQkpFQ1RfVEFHID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5jb25zdCBSRUdfRVhQX1RBRyA9ICdbb2JqZWN0IFJlZ0V4cF0nO1xuY29uc3QgU0VUX1RBRyA9ICdbb2JqZWN0IFNldF0nO1xuY29uc3QgU1RSSU5HX1RBRyA9ICdbb2JqZWN0IFN0cmluZ10nO1xuY29uc3QgVFlQRURfQVJSQVlfVEFHUyA9IHtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJzogdHJ1ZSxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XSc6IHRydWUsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJzogdHJ1ZSxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XSc6IHRydWUsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJzogdHJ1ZSxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XSc6IHRydWUsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJzogdHJ1ZSxcbiAgICAnW29iamVjdCBGbG9hdDE2QXJyYXldJzogdHJ1ZSxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJzogdHJ1ZSxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJzogdHJ1ZSxcbiAgICAnW29iamVjdCBCaWdJbnQ2NEFycmF5XSc6IHRydWUsXG4gICAgJ1tvYmplY3QgQmlnVWludDY0QXJyYXldJzogdHJ1ZSxcbn07XG5jb25zdCBVUkxfVEFHID0gJ1tvYmplY3QgVVJMXSc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENyZWF0ZSBhIGNvbXBhcmF0b3IgbWV0aG9kIGJhc2VkIG9uIHRoZSB0eXBlLXNwZWNpZmljIGVxdWFsaXR5IGNvbXBhcmF0b3JzIHBhc3NlZC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRXF1YWxpdHlDb21wYXJhdG9yKHsgYXJlQXJyYXlCdWZmZXJzRXF1YWwsIGFyZUFycmF5c0VxdWFsLCBhcmVEYXRhVmlld3NFcXVhbCwgYXJlRGF0ZXNFcXVhbCwgYXJlRXJyb3JzRXF1YWwsIGFyZUZ1bmN0aW9uc0VxdWFsLCBhcmVNYXBzRXF1YWwsIGFyZU51bWJlcnNFcXVhbCwgYXJlT2JqZWN0c0VxdWFsLCBhcmVQcmltaXRpdmVXcmFwcGVyc0VxdWFsLCBhcmVSZWdFeHBzRXF1YWwsIGFyZVNldHNFcXVhbCwgYXJlVHlwZWRBcnJheXNFcXVhbCwgYXJlVXJsc0VxdWFsLCB1bmtub3duVGFnQ29tcGFyYXRvcnMsIH0pIHtcbiAgICAvKipcbiAgICAgKiBjb21wYXJlIHRoZSB2YWx1ZSBvZiB0aGUgdHdvIG9iamVjdHMgYW5kIHJldHVybiB0cnVlIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQgaW4gdmFsdWVzXG4gICAgICovXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNvbXBhcmF0b3IoYSwgYiwgc3RhdGUpIHtcbiAgICAgICAgLy8gSWYgdGhlIGl0ZW1zIGFyZSBzdHJpY3RseSBlcXVhbCwgbm8gbmVlZCB0byBkbyBhIHZhbHVlIGNvbXBhcmlzb24uXG4gICAgICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBlaXRoZXIgb2YgdGhlIGl0ZW1zIGFyZSBudWxsaXNoIGFuZCBmYWlsIHRoZSBzdHJpY3RseSBlcXVhbCBjaGVja1xuICAgICAgICAvLyBhYm92ZSwgdGhlbiB0aGV5IG11c3QgYmUgdW5lcXVhbC5cbiAgICAgICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGE7XG4gICAgICAgIGlmICh0eXBlICE9PSB0eXBlb2YgYikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFyZU51bWJlcnNFcXVhbChhLCBiLCBzdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcmVGdW5jdGlvbnNFcXVhbChhLCBiLCBzdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiBhIHByaW1pdGl2ZSB2YWx1ZSB0aGF0IGlzIG5vdCBzdHJpY3RseSBlcXVhbCwgaXQgbXVzdCBiZSB1bmVxdWFsLlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gYS5jb25zdHJ1Y3RvcjtcbiAgICAgICAgLy8gQ2hlY2tzIGFyZSBsaXN0ZWQgaW4gb3JkZXIgb2YgY29tbW9uYWxpdHkgb2YgdXNlLWNhc2U6XG4gICAgICAgIC8vICAgMS4gQ29tbW9uIGNvbXBsZXggb2JqZWN0IHR5cGVzIChwbGFpbiBvYmplY3QsIGFycmF5KVxuICAgICAgICAvLyAgIDIuIENvbW1vbiBkYXRhIHZhbHVlcyAoZGF0ZSwgcmVnZXhwKVxuICAgICAgICAvLyAgIDMuIExlc3MtY29tbW9uIGNvbXBsZXggb2JqZWN0IHR5cGVzIChtYXAsIHNldClcbiAgICAgICAgLy8gICA0LiBMZXNzLWNvbW1vbiBkYXRhIHZhbHVlcyAocHJvbWlzZSwgcHJpbWl0aXZlIHdyYXBwZXJzKVxuICAgICAgICAvLyBJbmhlcmVudGx5IHRoaXMgaXMgYm90aCBzdWJqZWN0aXZlIGFuZCBhc3N1bXB0aXZlLCBob3dldmVyXG4gICAgICAgIC8vIHdoZW4gcmV2aWV3aW5nIGNvbXBhcmFibGUgbGlicmFyaWVzIGluIHRoZSB3aWxkIHRoaXMgb3JkZXJcbiAgICAgICAgLy8gYXBwZWFycyB0byBiZSBnZW5lcmFsbHkgY29uc2lzdGVudC5cbiAgICAgICAgLy8gQ29uc3RydWN0b3JzIHNob3VsZCBtYXRjaCwgb3RoZXJ3aXNlIHRoZXJlIGlzIHBvdGVudGlhbCBmb3IgZmFsc2UgcG9zaXRpdmVzXG4gICAgICAgIC8vIGJldHdlZW4gY2xhc3MgYW5kIHN1YmNsYXNzIG9yIGN1c3RvbSBvYmplY3QgYW5kIFBPSk8uXG4gICAgICAgIGlmIChjb25zdHJ1Y3RvciAhPT0gYi5jb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGBpc1BsYWluT2JqZWN0YCBvbmx5IGNoZWNrcyBhZ2FpbnN0IHRoZSBvYmplY3QncyBvd24gcmVhbG0uIENyb3NzLXJlYWxtXG4gICAgICAgIC8vIGNvbXBhcmlzb25zIGFyZSByYXJlLCBhbmQgd2lsbCBiZSBoYW5kbGVkIGluIHRoZSB1bHRpbWF0ZSBmYWxsYmFjaywgc29cbiAgICAgICAgLy8gd2UgY2FuIGF2b2lkIGNhcHR1cmluZyB0aGUgc3RyaW5nIHRhZy5cbiAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmVPYmplY3RzRXF1YWwoYSwgYiwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGBpc0FycmF5KClgIHdvcmtzIG9uIHN1YmNsYXNzZXMgYW5kIGlzIGNyb3NzLXJlYWxtLCBzbyB3ZSBjYW4gYXZvaWQgY2FwdHVyaW5nXG4gICAgICAgIC8vIHRoZSBzdHJpbmcgdGFnIG9yIGRvaW5nIGFuIGBpbnN0YW5jZW9mYCBjaGVjay5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmVBcnJheXNFcXVhbChhLCBiLCBzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVHJ5IHRvIGZhc3QtcGF0aCBlcXVhbGl0eSBjaGVja3MgZm9yIG90aGVyIGNvbXBsZXggb2JqZWN0IHR5cGVzIGluIHRoZVxuICAgICAgICAvLyBzYW1lIHJlYWxtIHRvIGF2b2lkIGNhcHR1cmluZyB0aGUgc3RyaW5nIHRhZy4gU3RyaWN0IGVxdWFsaXR5IGlzIHVzZWRcbiAgICAgICAgLy8gaW5zdGVhZCBvZiBgaW5zdGFuY2VvZmAgYmVjYXVzZSBpdCBpcyBtb3JlIHBlcmZvcm1hbnQgZm9yIHRoZSBjb21tb25cbiAgICAgICAgLy8gdXNlLWNhc2UuIElmIHNvbWVvbmUgaXMgc3ViY2xhc3NpbmcgYSBuYXRpdmUgY2xhc3MsIGl0IHdpbGwgYmUgaGFuZGxlZFxuICAgICAgICAvLyB3aXRoIHRoZSBzdHJpbmcgdGFnIGNvbXBhcmlzb24uXG4gICAgICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZURhdGVzRXF1YWwoYSwgYiwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gUmVnRXhwKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJlUmVnRXhwc0VxdWFsKGEsIGIsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uc3RydWN0b3IgPT09IE1hcCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZU1hcHNFcXVhbChhLCBiLCBzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBTZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmVTZXRzRXF1YWwoYSwgYiwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBjdXN0b20gb2JqZWN0LCBjYXB0dXJlIHRoZSBzdHJpbmcgdGFnIHRvIGRldGVybWluZyBpdHMgdHlwZS5cbiAgICAgICAgLy8gVGhpcyBpcyByZWFzb25hYmx5IHBlcmZvcm1hbnQgaW4gbW9kZXJuIGVudmlyb25tZW50cyBsaWtlIHY4IGFuZCBTcGlkZXJNb25rZXkuXG4gICAgICAgIGNvbnN0IHRhZyA9IHRvU3RyaW5nLmNhbGwoYSk7XG4gICAgICAgIGlmICh0YWcgPT09IERBVEVfVEFHKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJlRGF0ZXNFcXVhbChhLCBiLCBzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yIFJlZ0V4cCwgdGhlIHByb3BlcnRpZXMgYXJlIG5vdCBlbnVtZXJhYmxlLCBhbmQgdGhlcmVmb3JlIHdpbGwgZ2l2ZSBmYWxzZSBwb3NpdGl2ZXMgaWZcbiAgICAgICAgLy8gdGVzdGVkIGxpa2UgYSBzdGFuZGFyZCBvYmplY3QuXG4gICAgICAgIGlmICh0YWcgPT09IFJFR19FWFBfVEFHKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJlUmVnRXhwc0VxdWFsKGEsIGIsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09PSBNQVBfVEFHKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJlTWFwc0VxdWFsKGEsIGIsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09PSBTRVRfVEFHKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJlU2V0c0VxdWFsKGEsIGIsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09PSBPQkpFQ1RfVEFHKSB7XG4gICAgICAgICAgICAvLyBUaGUgZXhjZXB0aW9uIGZvciB2YWx1ZSBjb21wYXJpc29uIGlzIGN1c3RvbSBgUHJvbWlzZWAtbGlrZSBjbGFzcyBpbnN0YW5jZXMuIFRoZXNlIHNob3VsZFxuICAgICAgICAgICAgLy8gYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBzdGFuZGFyZCBgUHJvbWlzZWAgb2JqZWN0cywgd2hpY2ggbWVhbnMgc3RyaWN0IGVxdWFsaXR5LCBhbmQgaWZcbiAgICAgICAgICAgIC8vIGl0IHJlYWNoZXMgdGhpcyBwb2ludCB0aGVuIHRoYXQgc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb24gaGFzIGFscmVhZHkgZmFpbGVkLlxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBhLnRoZW4gIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGIudGhlbiAhPT0gJ2Z1bmN0aW9uJyAmJiBhcmVPYmplY3RzRXF1YWwoYSwgYiwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGEgVVJMIHRhZywgaXQgc2hvdWxkIGJlIHRlc3RlZCBleHBsaWNpdGx5LiBMaWtlIFJlZ0V4cCwgdGhlIHByb3BlcnRpZXMgYXJlIG5vdFxuICAgICAgICAvLyBlbnVtZXJhYmxlLCBhbmQgdGhlcmVmb3JlIHdpbGwgZ2l2ZSBmYWxzZSBwb3NpdGl2ZXMgaWYgdGVzdGVkIGxpa2UgYSBzdGFuZGFyZCBvYmplY3QuXG4gICAgICAgIGlmICh0YWcgPT09IFVSTF9UQUcpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmVVcmxzRXF1YWwoYSwgYiwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGFuIGVycm9yIHRhZywgaXQgc2hvdWxkIGJlIHRlc3RlZCBleHBsaWNpdGx5LiBMaWtlIFJlZ0V4cCwgdGhlIHByb3BlcnRpZXMgYXJlIG5vdFxuICAgICAgICAvLyBlbnVtZXJhYmxlLCBhbmQgdGhlcmVmb3JlIHdpbGwgZ2l2ZSBmYWxzZSBwb3NpdGl2ZXMgaWYgdGVzdGVkIGxpa2UgYSBzdGFuZGFyZCBvYmplY3QuXG4gICAgICAgIGlmICh0YWcgPT09IEVSUk9SX1RBRykge1xuICAgICAgICAgICAgcmV0dXJuIGFyZUVycm9yc0VxdWFsKGEsIGIsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBhbiBhcmd1bWVudHMgdGFnLCBpdCBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIHN0YW5kYXJkIG9iamVjdC5cbiAgICAgICAgaWYgKHRhZyA9PT0gQVJHVU1FTlRTX1RBRykge1xuICAgICAgICAgICAgcmV0dXJuIGFyZU9iamVjdHNFcXVhbChhLCBiLCBzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFRZUEVEX0FSUkFZX1RBR1NbdGFnXSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZVR5cGVkQXJyYXlzRXF1YWwoYSwgYiwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT09IEFSUkFZX0JVRkZFUl9UQUcpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmVBcnJheUJ1ZmZlcnNFcXVhbChhLCBiLCBzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZyA9PT0gREFUQV9WSUVXX1RBRykge1xuICAgICAgICAgICAgcmV0dXJuIGFyZURhdGFWaWV3c0VxdWFsKGEsIGIsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBcyB0aGUgcGVudWx0aW1hdGUgZmFsbGJhY2ssIGNoZWNrIGlmIHRoZSB2YWx1ZXMgcGFzc2VkIGFyZSBwcmltaXRpdmUgd3JhcHBlcnMuIFRoaXNcbiAgICAgICAgLy8gaXMgdmVyeSByYXJlIGluIG1vZGVybiBKUywgd2hpY2ggaXMgd2h5IGl0IGlzIGRlcHJpb3JpdGl6ZWQgY29tcGFyZWQgdG8gYWxsIG90aGVyIG9iamVjdFxuICAgICAgICAvLyB0eXBlcy5cbiAgICAgICAgaWYgKHRhZyA9PT0gQk9PTEVBTl9UQUcgfHwgdGFnID09PSBOVU1CRVJfVEFHIHx8IHRhZyA9PT0gU1RSSU5HX1RBRykge1xuICAgICAgICAgICAgcmV0dXJuIGFyZVByaW1pdGl2ZVdyYXBwZXJzRXF1YWwoYSwgYiwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bmtub3duVGFnQ29tcGFyYXRvcnMpIHtcbiAgICAgICAgICAgIGxldCB1bmtub3duVGFnQ29tcGFyYXRvciA9IHVua25vd25UYWdDb21wYXJhdG9yc1t0YWddO1xuICAgICAgICAgICAgaWYgKCF1bmtub3duVGFnQ29tcGFyYXRvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3J0VGFnID0gZ2V0U2hvcnRUYWcoYSk7XG4gICAgICAgICAgICAgICAgaWYgKHNob3J0VGFnKSB7XG4gICAgICAgICAgICAgICAgICAgIHVua25vd25UYWdDb21wYXJhdG9yID0gdW5rbm93blRhZ0NvbXBhcmF0b3JzW3Nob3J0VGFnXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgY3VzdG9tIGNvbmZpZyBoYXMgYW4gdW5rbm93biB0YWcgY29tcGFyYXRvciB0aGF0IG1hdGNoZXMgdGhlIGNhcHR1cmVkIHRhZyBvciB0aGVcbiAgICAgICAgICAgIC8vIEBAdG9TdHJpbmdUYWcsIGl0IGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHdoZXRoZXIgdGhlIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICAgICAgICBpZiAodW5rbm93blRhZ0NvbXBhcmF0b3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5rbm93blRhZ0NvbXBhcmF0b3IoYSwgYiwgc3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIG5vdCBtYXRjaGluZyBhbnkgdGFncyB0aGF0IHJlcXVpcmUgYSBzcGVjaWZpYyB0eXBlIG9mIGNvbXBhcmlzb24sIHRoZW4gd2UgaGFyZC1jb2RlIGZhbHNlIGJlY2F1c2VcbiAgICAgICAgLy8gdGhlIG9ubHkgdGhpbmcgcmVtYWluaW5nIGlzIHN0cmljdCBlcXVhbGl0eSwgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBjb21wYXJlZC4gVGhpcyBpcyBmb3IgYSBmZXcgcmVhc29uczpcbiAgICAgICAgLy8gICAtIENlcnRhaW4gdHlwZXMgdGhhdCBjYW5ub3QgYmUgaW50cm9zcGVjdGVkIChlLmcuLCBgV2Vha01hcGApLiBGb3IgdGhlc2UgdHlwZXMsIHRoaXMgaXMgdGhlIG9ubHlcbiAgICAgICAgLy8gICAgIGNvbXBhcmlzb24gdGhhdCBjYW4gYmUgbWFkZS5cbiAgICAgICAgLy8gICAtIEZvciB0eXBlcyB0aGF0IGNhbiBiZSBpbnRyb3NwZWN0ZWQsIGJ1dCByYXJlbHkgaGF2ZSByZXF1aXJlbWVudHMgdG8gYmUgY29tcGFyZWRcbiAgICAgICAgLy8gICAgIChgQXJyYXlCdWZmZXJgLCBgRGF0YVZpZXdgLCBldGMuKSwgdGhlIGNvc3QgaXMgYXZvaWRlZCB0byBwcmlvcml0aXplIHRoZSBjb21tb25cbiAgICAgICAgLy8gICAgIHVzZS1jYXNlcyAobWF5IGJlIGluY2x1ZGVkIGluIGEgZnV0dXJlIHJlbGVhc2UsIGlmIHJlcXVlc3RlZCBlbm91Z2gpLlxuICAgICAgICAvLyAgIC0gRm9yIHR5cGVzIHRoYXQgY2FuIGJlIGludHJvc3BlY3RlZCBidXQgZG8gbm90IGhhdmUgYW4gb2JqZWN0aXZlIGRlZmluaXRpb24gb2Ygd2hhdFxuICAgICAgICAvLyAgICAgZXF1YWxpdHkgaXMgKGBFcnJvcmAsIGV0Yy4pLCB0aGUgc3ViamVjdGl2ZSBkZWNpc2lvbiBpcyB0byBiZSBjb25zZXJ2YXRpdmUgYW5kIHN0cmljdGx5IGNvbXBhcmUuXG4gICAgICAgIC8vIEluIGFsbCBjYXNlcywgdGhlc2UgZGVjaXNpb25zIHNob3VsZCBiZSByZWV2YWx1YXRlZCBiYXNlZCBvbiBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZSBhbmRcbiAgICAgICAgLy8gY29tbW9uIGRldmVsb3BtZW50IHByYWN0aWNlcy5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG59XG4vKipcbiAqIENyZWF0ZSB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgdXNlZCBmb3IgYnVpbGRpbmcgY29tcGFyYXRvcnMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUVxdWFsaXR5Q29tcGFyYXRvckNvbmZpZyh7IGNpcmN1bGFyLCBjcmVhdGVDdXN0b21Db25maWcsIHN0cmljdCwgfSkge1xuICAgIGxldCBjb25maWcgPSB7XG4gICAgICAgIGFyZUFycmF5QnVmZmVyc0VxdWFsLFxuICAgICAgICBhcmVBcnJheXNFcXVhbDogc3RyaWN0ID8gYXJlT2JqZWN0c0VxdWFsU3RyaWN0IDogYXJlQXJyYXlzRXF1YWwsXG4gICAgICAgIGFyZURhdGFWaWV3c0VxdWFsLFxuICAgICAgICBhcmVEYXRlc0VxdWFsOiBhcmVEYXRlc0VxdWFsLFxuICAgICAgICBhcmVFcnJvcnNFcXVhbDogYXJlRXJyb3JzRXF1YWwsXG4gICAgICAgIGFyZUZ1bmN0aW9uc0VxdWFsOiBhcmVGdW5jdGlvbnNFcXVhbCxcbiAgICAgICAgYXJlTWFwc0VxdWFsOiBzdHJpY3QgPyBjb21iaW5lQ29tcGFyYXRvcnMoYXJlTWFwc0VxdWFsLCBhcmVPYmplY3RzRXF1YWxTdHJpY3QpIDogYXJlTWFwc0VxdWFsLFxuICAgICAgICBhcmVOdW1iZXJzRXF1YWw6IGFyZU51bWJlcnNFcXVhbCxcbiAgICAgICAgYXJlT2JqZWN0c0VxdWFsOiBzdHJpY3QgPyBhcmVPYmplY3RzRXF1YWxTdHJpY3QgOiBhcmVPYmplY3RzRXF1YWwsXG4gICAgICAgIGFyZVByaW1pdGl2ZVdyYXBwZXJzRXF1YWw6IGFyZVByaW1pdGl2ZVdyYXBwZXJzRXF1YWwsXG4gICAgICAgIGFyZVJlZ0V4cHNFcXVhbDogYXJlUmVnRXhwc0VxdWFsLFxuICAgICAgICBhcmVTZXRzRXF1YWw6IHN0cmljdCA/IGNvbWJpbmVDb21wYXJhdG9ycyhhcmVTZXRzRXF1YWwsIGFyZU9iamVjdHNFcXVhbFN0cmljdCkgOiBhcmVTZXRzRXF1YWwsXG4gICAgICAgIGFyZVR5cGVkQXJyYXlzRXF1YWw6IHN0cmljdFxuICAgICAgICAgICAgPyBjb21iaW5lQ29tcGFyYXRvcnMoYXJlVHlwZWRBcnJheXNFcXVhbCwgYXJlT2JqZWN0c0VxdWFsU3RyaWN0KVxuICAgICAgICAgICAgOiBhcmVUeXBlZEFycmF5c0VxdWFsLFxuICAgICAgICBhcmVVcmxzRXF1YWw6IGFyZVVybHNFcXVhbCxcbiAgICAgICAgdW5rbm93blRhZ0NvbXBhcmF0b3JzOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgICBpZiAoY3JlYXRlQ3VzdG9tQ29uZmlnKSB7XG4gICAgICAgIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZywgY3JlYXRlQ3VzdG9tQ29uZmlnKGNvbmZpZykpO1xuICAgIH1cbiAgICBpZiAoY2lyY3VsYXIpIHtcbiAgICAgICAgY29uc3QgYXJlQXJyYXlzRXF1YWwgPSBjcmVhdGVJc0NpcmN1bGFyKGNvbmZpZy5hcmVBcnJheXNFcXVhbCk7XG4gICAgICAgIGNvbnN0IGFyZU1hcHNFcXVhbCA9IGNyZWF0ZUlzQ2lyY3VsYXIoY29uZmlnLmFyZU1hcHNFcXVhbCk7XG4gICAgICAgIGNvbnN0IGFyZU9iamVjdHNFcXVhbCA9IGNyZWF0ZUlzQ2lyY3VsYXIoY29uZmlnLmFyZU9iamVjdHNFcXVhbCk7XG4gICAgICAgIGNvbnN0IGFyZVNldHNFcXVhbCA9IGNyZWF0ZUlzQ2lyY3VsYXIoY29uZmlnLmFyZVNldHNFcXVhbCk7XG4gICAgICAgIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZywge1xuICAgICAgICAgICAgYXJlQXJyYXlzRXF1YWwsXG4gICAgICAgICAgICBhcmVNYXBzRXF1YWwsXG4gICAgICAgICAgICBhcmVPYmplY3RzRXF1YWwsXG4gICAgICAgICAgICBhcmVTZXRzRXF1YWwsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlnO1xufVxuLyoqXG4gKiBEZWZhdWx0IGVxdWFsaXR5IGNvbXBhcmF0b3IgcGFzcy10aHJvdWdoLCB1c2VkIGFzIHRoZSBzdGFuZGFyZCBgaXNFcXVhbGAgY3JlYXRvciBmb3JcbiAqIHVzZSBpbnNpZGUgdGhlIGJ1aWx0IGNvbXBhcmF0b3IuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUludGVybmFsRXF1YWxpdHlDb21wYXJhdG9yKGNvbXBhcmUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIF9pbmRleE9yS2V5QSwgX2luZGV4T3JLZXlCLCBfcGFyZW50QSwgX3BhcmVudEIsIHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBjb21wYXJlKGEsIGIsIHN0YXRlKTtcbiAgICB9O1xufVxuLyoqXG4gKiBDcmVhdGUgdGhlIGBpc0VxdWFsYCBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBjb25zdW1pbmcgYXBwbGljYXRpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUlzRXF1YWwoeyBjaXJjdWxhciwgY29tcGFyYXRvciwgY3JlYXRlU3RhdGUsIGVxdWFscywgc3RyaWN0IH0pIHtcbiAgICBpZiAoY3JlYXRlU3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzRXF1YWwoYSwgYikge1xuICAgICAgICAgICAgY29uc3QgeyBjYWNoZSA9IGNpcmN1bGFyID8gbmV3IFdlYWtNYXAoKSA6IHVuZGVmaW5lZCwgbWV0YSB9ID0gY3JlYXRlU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBjb21wYXJhdG9yKGEsIGIsIHtcbiAgICAgICAgICAgICAgICBjYWNoZSxcbiAgICAgICAgICAgICAgICBlcXVhbHMsXG4gICAgICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgICAgICAgICBzdHJpY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNpcmN1bGFyKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBpc0VxdWFsKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBjb21wYXJhdG9yKGEsIGIsIHtcbiAgICAgICAgICAgICAgICBjYWNoZTogbmV3IFdlYWtNYXAoKSxcbiAgICAgICAgICAgICAgICBlcXVhbHMsXG4gICAgICAgICAgICAgICAgbWV0YTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHN0cmljdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgICAgY2FjaGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZXF1YWxzLFxuICAgICAgICBtZXRhOiB1bmRlZmluZWQsXG4gICAgICAgIHN0cmljdCxcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiBpc0VxdWFsKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBhcmF0b3IoYSwgYiwgc3RhdGUpO1xuICAgIH07XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaXRlbXMgcGFzc2VkIGFyZSBkZWVwbHktZXF1YWwgaW4gdmFsdWUuXG4gKi9cbmNvbnN0IGRlZXBFcXVhbCA9IGNyZWF0ZUN1c3RvbUVxdWFsKCk7XG4vKipcbiAqIFdoZXRoZXIgdGhlIGl0ZW1zIHBhc3NlZCBhcmUgZGVlcGx5LWVxdWFsIGluIHZhbHVlIGJhc2VkIG9uIHN0cmljdCBjb21wYXJpc29uLlxuICovXG5jb25zdCBzdHJpY3REZWVwRXF1YWwgPSBjcmVhdGVDdXN0b21FcXVhbCh7IHN0cmljdDogdHJ1ZSB9KTtcbi8qKlxuICogV2hldGhlciB0aGUgaXRlbXMgcGFzc2VkIGFyZSBkZWVwbHktZXF1YWwgaW4gdmFsdWUsIGluY2x1ZGluZyBjaXJjdWxhciByZWZlcmVuY2VzLlxuICovXG5jb25zdCBjaXJjdWxhckRlZXBFcXVhbCA9IGNyZWF0ZUN1c3RvbUVxdWFsKHsgY2lyY3VsYXI6IHRydWUgfSk7XG4vKipcbiAqIFdoZXRoZXIgdGhlIGl0ZW1zIHBhc3NlZCBhcmUgZGVlcGx5LWVxdWFsIGluIHZhbHVlLCBpbmNsdWRpbmcgY2lyY3VsYXIgcmVmZXJlbmNlcyxcbiAqIGJhc2VkIG9uIHN0cmljdCBjb21wYXJpc29uLlxuICovXG5jb25zdCBzdHJpY3RDaXJjdWxhckRlZXBFcXVhbCA9IGNyZWF0ZUN1c3RvbUVxdWFsKHtcbiAgICBjaXJjdWxhcjogdHJ1ZSxcbiAgICBzdHJpY3Q6IHRydWUsXG59KTtcbi8qKlxuICogV2hldGhlciB0aGUgaXRlbXMgcGFzc2VkIGFyZSBzaGFsbG93bHktZXF1YWwgaW4gdmFsdWUuXG4gKi9cbmNvbnN0IHNoYWxsb3dFcXVhbCA9IGNyZWF0ZUN1c3RvbUVxdWFsKHtcbiAgICBjcmVhdGVJbnRlcm5hbENvbXBhcmF0b3I6ICgpID0+IHNhbWVWYWx1ZVplcm9FcXVhbCxcbn0pO1xuLyoqXG4gKiBXaGV0aGVyIHRoZSBpdGVtcyBwYXNzZWQgYXJlIHNoYWxsb3dseS1lcXVhbCBpbiB2YWx1ZSBiYXNlZCBvbiBzdHJpY3QgY29tcGFyaXNvblxuICovXG5jb25zdCBzdHJpY3RTaGFsbG93RXF1YWwgPSBjcmVhdGVDdXN0b21FcXVhbCh7XG4gICAgc3RyaWN0OiB0cnVlLFxuICAgIGNyZWF0ZUludGVybmFsQ29tcGFyYXRvcjogKCkgPT4gc2FtZVZhbHVlWmVyb0VxdWFsLFxufSk7XG4vKipcbiAqIFdoZXRoZXIgdGhlIGl0ZW1zIHBhc3NlZCBhcmUgc2hhbGxvd2x5LWVxdWFsIGluIHZhbHVlLCBpbmNsdWRpbmcgY2lyY3VsYXIgcmVmZXJlbmNlcy5cbiAqL1xuY29uc3QgY2lyY3VsYXJTaGFsbG93RXF1YWwgPSBjcmVhdGVDdXN0b21FcXVhbCh7XG4gICAgY2lyY3VsYXI6IHRydWUsXG4gICAgY3JlYXRlSW50ZXJuYWxDb21wYXJhdG9yOiAoKSA9PiBzYW1lVmFsdWVaZXJvRXF1YWwsXG59KTtcbi8qKlxuICogV2hldGhlciB0aGUgaXRlbXMgcGFzc2VkIGFyZSBzaGFsbG93bHktZXF1YWwgaW4gdmFsdWUsIGluY2x1ZGluZyBjaXJjdWxhciByZWZlcmVuY2VzLFxuICogYmFzZWQgb24gc3RyaWN0IGNvbXBhcmlzb24uXG4gKi9cbmNvbnN0IHN0cmljdENpcmN1bGFyU2hhbGxvd0VxdWFsID0gY3JlYXRlQ3VzdG9tRXF1YWwoe1xuICAgIGNpcmN1bGFyOiB0cnVlLFxuICAgIGNyZWF0ZUludGVybmFsQ29tcGFyYXRvcjogKCkgPT4gc2FtZVZhbHVlWmVyb0VxdWFsLFxuICAgIHN0cmljdDogdHJ1ZSxcbn0pO1xuLyoqXG4gKiBDcmVhdGUgYSBjdXN0b20gZXF1YWxpdHkgY29tcGFyaXNvbiBtZXRob2QuXG4gKlxuICogVGhpcyBjYW4gYmUgZG9uZSB0byBjcmVhdGUgdmVyeSB0YXJnZXRlZCBjb21wYXJpc29ucyBpbiBleHRyZW1lIGhvdC1wYXRoIHNjZW5hcmlvc1xuICogd2hlcmUgdGhlIHN0YW5kYXJkIG1ldGhvZHMgYXJlIG5vdCBwZXJmb3JtYW50IGVub3VnaCwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgdG8gcHJvdmlkZVxuICogc3VwcG9ydCBmb3IgbGVnYWN5IGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBzdXBwb3J0IGV4cGVjdGVkIGZlYXR1cmVzIGxpa2VcbiAqIGBSZWdFeHAucHJvdG90eXBlLmZsYWdzYCBvdXQgb2YgdGhlIGJveC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ3VzdG9tRXF1YWwob3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBjaXJjdWxhciA9IGZhbHNlLCBjcmVhdGVJbnRlcm5hbENvbXBhcmF0b3I6IGNyZWF0ZUN1c3RvbUludGVybmFsQ29tcGFyYXRvciwgY3JlYXRlU3RhdGUsIHN0cmljdCA9IGZhbHNlLCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBjb25maWcgPSBjcmVhdGVFcXVhbGl0eUNvbXBhcmF0b3JDb25maWcob3B0aW9ucyk7XG4gICAgY29uc3QgY29tcGFyYXRvciA9IGNyZWF0ZUVxdWFsaXR5Q29tcGFyYXRvcihjb25maWcpO1xuICAgIGNvbnN0IGVxdWFscyA9IGNyZWF0ZUN1c3RvbUludGVybmFsQ29tcGFyYXRvclxuICAgICAgICA/IGNyZWF0ZUN1c3RvbUludGVybmFsQ29tcGFyYXRvcihjb21wYXJhdG9yKVxuICAgICAgICA6IGNyZWF0ZUludGVybmFsRXF1YWxpdHlDb21wYXJhdG9yKGNvbXBhcmF0b3IpO1xuICAgIHJldHVybiBjcmVhdGVJc0VxdWFsKHsgY2lyY3VsYXIsIGNvbXBhcmF0b3IsIGNyZWF0ZVN0YXRlLCBlcXVhbHMsIHN0cmljdCB9KTtcbn1cblxuZXhwb3J0IHsgY2lyY3VsYXJEZWVwRXF1YWwsIGNpcmN1bGFyU2hhbGxvd0VxdWFsLCBjcmVhdGVDdXN0b21FcXVhbCwgZGVlcEVxdWFsLCBzYW1lVmFsdWVaZXJvRXF1YWwsIHNoYWxsb3dFcXVhbCwgc3RyaWN0Q2lyY3VsYXJEZWVwRXF1YWwsIHN0cmljdENpcmN1bGFyU2hhbGxvd0VxdWFsLCBzdHJpY3REZWVwRXF1YWwsIHN0cmljdFNoYWxsb3dFcXVhbCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/fast-equals/dist/es/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/linkifyjs/dist/linkify.mjs":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/linkifyjs/dist/linkify.mjs ***!
|
||
\*************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MultiToken: () => (/* binding */ MultiToken),\n/* harmony export */ Options: () => (/* binding */ Options),\n/* harmony export */ State: () => (/* binding */ State),\n/* harmony export */ createTokenClass: () => (/* binding */ createTokenClass),\n/* harmony export */ find: () => (/* binding */ find),\n/* harmony export */ init: () => (/* binding */ init),\n/* harmony export */ multi: () => (/* binding */ multi),\n/* harmony export */ options: () => (/* binding */ options),\n/* harmony export */ regexp: () => (/* binding */ regexp),\n/* harmony export */ registerCustomProtocol: () => (/* binding */ registerCustomProtocol),\n/* harmony export */ registerPlugin: () => (/* binding */ registerPlugin),\n/* harmony export */ registerTokenPlugin: () => (/* binding */ registerTokenPlugin),\n/* harmony export */ reset: () => (/* binding */ reset),\n/* harmony export */ stringToArray: () => (/* binding */ stringToArray),\n/* harmony export */ test: () => (/* binding */ test),\n/* harmony export */ text: () => (/* binding */ multi),\n/* harmony export */ tokenize: () => (/* binding */ tokenize)\n/* harmony export */ });\n// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Final possible email states\n const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */\n ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // Closing bracket component. This character WILL be included in the URL\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9saW5raWZ5anMvZGlzdC9saW5raWZ5Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsd0JBQXdCO0FBQ3ZDOztBQUVBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsZ0JBQWdCO0FBQzNCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxnQkFBZ0I7QUFDM0IsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsZ0JBQWdCO0FBQzNCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSxXQUFXO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZDtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLGVBQWUsNkJBQTZCO0FBQzVDLGVBQWU7QUFDZixrQkFBa0I7QUFDbEIsYUFBYSxzQkFBc0I7QUFDbkM7QUFDQSxhQUFhLFdBQVc7QUFD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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsZUFBZTtBQUMxQjtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELE9BQU87QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUJBQW1CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUU4TSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbGlua2lmeWpzXFxkaXN0XFxsaW5raWZ5Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQgRE8gTk9UIEVESVQgRElSRUNUTFlcbi8vIFNlZSB1cGRhdGUtdGxkcy5qcyBmb3IgZW5jb2RpbmcvZGVjb2RpbmcgZm9ybWF0XG4vLyBodHRwczovL2RhdGEuaWFuYS5vcmcvVExEL3RsZHMtYWxwaGEtYnktZG9tYWluLnR4dFxuY29uc3QgZW5jb2RlZFRsZHMgPSAnYWFhMXJwM2JiMG90dDN2aWU0YzFsZTJvZ2FkbzV1ZGhhYmk3YzBhZGVteTVjZW50dXJlNm91bnRhbnQwczlvMXRvcjRkMHMxdWx0NGUwZzFybzJ0bmE0ZjBsMXJpY2E1ZzBha2hhbjVlbmN5NWkwZzFyYnVzM2ZvcmNlNXRlbDVrZG4zbDBpYmFiYTRwYXk0bGZpbmFuejZzdGF0ZTV5MnNhY2UzdG9tNW0wYXpvbjRlcmljYW5leHByZXNzN2ZhbWlseTExeDJmYW0zaWNhM3N0ZXJkYW04bmFseXRpY3M3ZHJvaWQ1cXVhbjR6Mm8wbDJwYXJ0bWVudHM4cDBsZTRxMHVhcmVsbGU4cjBhYjFtY280Y2hpM215MnBhMnQwZTNzMGRhMmlhMnNvY2lhdGVzOXQwaGxldGE1dG9ybmV5N3UwY3Rpb241ZGkwYmxlM28zc3Bvc3Q1dGhvcjNvMHM0dzBzMngwYTJ6MHVyZTViYTBieTJpZHUzbmFtZXg0ZDFrMnIwY2Vsb25hNWxheWNhcmQ0czVlZm9vdDVnYWluczZzZWJhbGw1a2V0YmFsbDh1aGF1czV5ZXJuNWIwYzF0MXZhM2NnMW4yZDFlMGF0czJ1dHk0ZXIycmxpbjRzdDBidXk1dDJmMWcxaDBhcnRpNWkwYmxlM2Qxa2UybmcwbzNvMXoyajFsYWNrMGZyaWRheTlvY2tidXN0ZXI4ZzFvbWJlcmc3dWUzbTBzMXcybjBwcGFyaWJhczlvMGF0czNlaHJpbmdlcjhmYTJtMW5kMm8wazBpbmc1c2NoMnRpazJvbjR0MXV0aXF1ZTZ4MnIwYWRlc2NvNmlkZ2VzdG9uZTlvYWR3YXk1a2VyM3RoZXI1dXNzZWxzN3MxdDF1aWxkMGVyczZzaW5lc3M2eTF6ejN2MXcxeTF6MGgzY2EwYjFmZTJsMGwxdmlua2xlaW45bTBlcmEzcDJub24zcGV0b3duNWl0YWwwb25lOHIwYXZhbjRkczJlMGVyMHM0czJzYTFlMWgxaW5vNHQwZXJpbmc1aG9saWM3YmExbjFyZTNjMWQxZW50ZXI0bzFybjNmMGExZDJnMWgwYW5lbDJuZWw0cml0eTRzZTJ0MmVhcDNpbnRhaTVyaXN0bWFzNm9tZTR1cmNoNWkwcHJpYW5pNnJjbGU0c2NvM3RhZGVsNGkwYzJ5M2sxbDBhaW1zNGVhbmluZzZpY2sybmljMXF1ZTZvdGhpbmc1dWQzdWIwbWVkNm0xbjFvMGFjaDNkZXMzZmZlZTRsbGVnZTRvZ25lNW0wbWJhbms0dW5pdHk2cGFueTJyZTN1dGVyNXNlYzRuZG9zM3N0cnVjdGlvbjh1bHRpbmc3dGFjdDNyYWN0b3JzOW9raW5nNGwxcDJyc2ljYTV1bnRyeTRwb24wczRyc2VzNnBhMnIwZWRpdDBjYXJkNHVuaW9uOWlja2V0NW93bjNzMXVpc2UwczZ1MGlzaW5lbGxhOXYxdzF4MXkwbXJ1M291M3oyZGFkMW5jZTN0YTFlMWluZzNzdW40eTJjbGszZHMyZTBhbDBlcjJzM2dyZWU0bGl2ZXJ5NWwxb2l0dGU1dGEzbW9jcmF0Nm50YWwyaXN0NXNpMGduNHYyaGwyaWFtb25kczZldDJnaXRhbDVyZWN0MG9yeTdzY291bnQzdmVyNWgyeTJqMWsxbTFucDJvMGNzMXRvcjRnMW1haW5zNXQxd25sb2FkN3JpdmU0dHYydWJhaTNubG9wNHBvbnQ0cmJhbjV2YWcycjJ6MmVhcnRoM3QyYzBvMmRla2EzdTBjYXRpb244ZTFnMW1haWwzZXJjazVuZXJneTRnaW5lZXIwaW5nOXRlcnByaXNlczEwcHNvbjRxdWlwbWVudDhyMGljc3NvbjZuaTNzMHExdGF0ZTV0MXUwcm92aXNpb244czJ2ZW50czV4Y2hhbmdlNnBlcnQzb3NlZDRyZXNzNXRyYXNwYWNlMTBmYWdlMmlsMXJ3aW5kczZ0aDNtaWx5NG4wczJybTBlcnM1c2hpb240dDNlZGV4M2VkYmFjazZycmFyaTNlcm82aTBkZWxpdHk1bzJsbTJuYWwxbmNlMWlhbDdyZTBzdG9uZTZtZGFsZTZzaDBpbmc1dDBuZXNzNmoxazFsaWNrcjNnaHRzNHIyb3Jpc3Q0d2VyczV5Mm0xbzBvMGQxdGJhbGw2cmQxZXgyc2FsZTR1bTN1bmRhdGlvbjh4MnIwZWUxc2VuaXVzN2wxb2dhbnM0bnRpZXI3dHIydWppdHN1NW4wZDJybml0dXJlN3Rib2w1eWkzZ2EwbDBsZXJ5M28xdXA0bWUwczNwMXJkZW40eTJiMGl6M2QwbjJlMGExbnQwaW5nNW9yZ2U1ZjFnMGVlM2gxaTBmdDBzM3ZlczJpbmc1bDBhc3MzZTFvYmFsMm80bTBhaWwzYmgybzF4Mm4xb2RhZGR5NWxkMHBvaW50NmYybzBkeWVhcjVnMGxlNHAxdDF2MnAxcTFyMGFpbmdlcjVwaGljczV0aXM0ZWVuM2lwZTNvY2VyeTR1cDRzMXQxdTBjY2kzZ2UyaWRlMnRhcnM1cnUzdzF5MmhhaXIybWJ1cmc1bmdvdXQ1dXMzYm8yZGZjMGJhbms3ZWFsdGgwY2FyZThscDFzaW5raTZyZTFtZXM1aXBob3A0c2FtaXRzdTd0YWNoaTV2MmswdDJtMW4xb2NrZXk0bGRpbmdzNWlkYXk1bWVkZXBvdDVnb29kczVzMGVuc2U3bmRhM3JzZTNzcGl0YWw1dDBpbmc1dDBlbHMzbWFpbDV1c2UzdzJyMXNiYzN0MXUwZ2hlczV5YXR0M3VuZGFpN2libTJjYmMyZTF1MmQxZTBlZTNmbTJrYW5vNGwxbTBhbWF0NGRiMm1vMGJpbGllbjluMGMxZHVzdHJpZXM4ZmluaXRpNW8yZzFrMXN0aXR1dGU2dXJhbmNlNGU0dDBlcm5hdGlvbmFsMTB1aXQ0dmVzdG1lbnRzMTBvMXBpcmFuZ2E3cTFyMGlzaDRzMG1haWxpNXQwYW5idWw3dDBhdTJ2M2phZ3VhcjR2YTNjYjJlMGVwMnR6dDN3ZWxyeTZpbzJsbDJtMHAybmoybzBiczF1cmc0dDF5MnAwbW9yZ2FuNnJzM3VlZ29zNG5pcGVyN2thdWZlbjVkZGkzZTBycnlob3RlbHM2cHJvcGVydGllczE0ZmgyZzFoMWkwYTFkczJtMW5kbGU0dGNoZW41d2kzbTFuMW9lbG4zbWF0c3U1c2hlcjVwMG1nMm4ycjBkMWVkM3Vva2dyb3VwOHcxeTBvdG80ejJsYTBjYWl4YTVtYm9yZ2hpbmk4ZXIzbmQwcm92ZXI2eGVzczVzYWxsZTV0MGlubzNyb2JlNXcweWVyNWIxYzFkczJlYXNlM2NsZXJjNWZyYWs0Z2FsMm8yeHVzNGdidDNpMGRsMmZlMGluc3VyYW5jZTlzdHlsZTdnaHRpbmc2a2UybGx5M21pdGVkNG8ybmNvbG40azJ2ZTFpbmc1azFsYzFwMm9hbjBzM2NrZXIzdXMzbDFuZG9uNHR0ZTFvM3ZlM3BsMGZpbmFuY2lhbDExcjFzMXQwZDBhM3UwbmRiZWNrNnhlMXVyeTV2MXkybWEwZHJpZDRpZjFzb240a2V1cDRuMGFnZW1lbnQ3Z28zcDFya2V0MGluZzNzNHJpb3R0NXNoYWxsczd0dGVsNWJhMmMwa2luc2V5N2QxZTBkMGlhM2V0Mmxib3VybmU3bWUxb3JpYWw2bjB1MnJja21zZDdnMWgxaWFtaTNjcm9zb2Z0N2wxbmkxdDJ0MHN1YmlzaGk5azFsMGIxczJtMGEybjFvMGJpMGxlNGRhMmUxaTFtMW5hc2gzZXkyc3RlcjVybW9uM3RnYWdlNnNjb3c0dG8wcmN5Y2xlczl2MGllNHAxcTFyMXMwZDJ0MG4xcjJ1MHNldW0zaWM0djF3MXgxeTF6Mm5hMGIxZ295YTRtZTJ2eTNiYTJjMWUwYzF0MGJhbms0ZmxpeDR3b3JrNXVzdGFyNXcwczJ4dDBkaXJlY3Q3dXM0ZjBsMmcwbzJoazJpMGNvMmtlMW9uM25qYTNzc2FuMXk1bDFvMGtpYTNydG9uNHcwcnV6M3R2NHAxcjBhMXcydHQydTF5YzJ6Mm9iaTFzZXJ2ZXI3ZmZpY2U1a2luYXdhNmxheWFuMGdyb3VwOWxvM20wZWdhNG5lMWcxbDBpbmU1b28ycGVuM3JhY2xlM25nZTRnMGFuaWM1aWdpbnM2c2FrYTR0c3VrYTR0MnZoM3BhMGdlMm5hc29uaWM3cmlzMnMxdG5lcnM0czF5M3kyY2N3M2UwdDJmMGl6ZXI1ZzFoMGFybWFjeTZkMWlsaXBzNW9uZTJ0bzBncmFwaHk2czR5c2lvNWljczF0ZXQydXJlczZkMW4wZzFrMm9uZWVyNXp6YTRrMWwwYWNlMnkwc3RhdGlvbjl1bWJpbmc1czNtMW4wYzJvaGwya2VyM2xpdGllNXJuMnN0M3IwYXhpM2VzczNpbWUzbzBkMHVjdGlvbnM4ZjFncmVzc2l2ZThtbzJwZXJ0aWVzM3k1dGVjdGlvbjh1MGRlbnRpYWw5czF0MXViMncwYzJ5MnFhMXBvbjN1ZWJlYzNzdDVyYWNpbmc0ZGlvNGUwYWQxbGVzdGF0ZTZ0b3IyeTRjaXBlczVkMHN0b25lNXVtYnJlbGxhOWhhYjNpc2UwbjN0MmxpYW5jZTZuMHQwYWxzNXBhaXIzb3J0M3VibGljYW44c3QwYXVyYW50OHZpZXcwczV4cm90aDZpY2gwYXJkbGk2b2gzbDFvMXAybzBja3MzZGVvM2dlcnM0b20zczB2cDN1MGdieTNocjJuMncwZTJ5dWt5dTZzYTBhcmxhbmQ2ZmUwdHk0a3VyYTRsZTFvbjNtc2NsdWI0dW5nNW5kdmlrMGNvcm9tYW50MTJvZmk0cDFybDJzMXZlMnhvM2IwaTFzMmMwYjFoYWVmZmxlcjdtaWR0NG9sYXJzaGlwczhvbDN1bGUzd2FyejVpZW5jZTVvdDNkMWUwYXJjaDN0MmN1cmUxaXR5NmVrMmxlY3Q0bmVyM3J2aWNlczZ2ZW4zdzF4MHkzZnIyZzFoMGFuZ3JpbGE2cnAzZWxsM2lhMWtzaGE1b2VzMnAwcGluZzV1amkzdzNpMGxrMm5hMWdsZXM1dGUzajFrMGkwbjJ5MHBlNGwwaW5nNG0wYXJ0M2lsZTRuMGNmM28wY2NlcjNpYWw0ZnRiYW5rNHdhcmU2aHUybGFyMnV0aW9uczduZzF5MnkycGEwY2Uzb3J0MnQzcjBsMnMxdDBhZGEycGxlczRyMXRlYmFuazRmYXJtN2MwZ3JvdXA2b2NraG9sbTZyYWdlM2UzcmVhbTR1ZGlvMnkzeWxlNHUwY2tzM3BwbGllczN5Mm9ydDVyZjFnZXJ5NXp1a2k1djF3YXRjaDRpc3M0eDF5MGRuZXk0c3RlbXM2ejJ0YWIxaXBlaTRsazJvYmFvNHJnZXQ0dGFtb3RvcnM2cjJ0b280eDBpM2MwaTJkMGsyZWFtMmNoMG5vbG9neThsMW1hc2VrNW5uaXM0dmEzZjFnMWgwZDFlYXRlcjJyZTZpYWEyY2tldHM1ZW5kYTRwczJyZXMyb2w0ajBtYXh4NHgyazBtYXh4NWwxbTBhbGw0bjFvMGRheTNreW8zb2xzM3AxcmF5M3NoaWJhNXRhbDN1cnMzd24yeW90YTNzM3IwYWRlMWluZzRpbmluZzV2ZWwwZXJzMGluc3VyYW5jZTE2dXN0M3YydDF1YmUyaTFuZXMzc2h1NHYwczJ3MXoydWExYmFuazNzMmcxazFuaWNvbTN2ZXJzaXR5OG8yb2wycHMyczF5MXoydmEwY2F0aW9uczduYTFndWFyZDdjMWUwZ2FzM250dXJlczZyaXNpZ241bcO2Z2Vuc2JlcmF0ZXIydW5nMTRzaWNoZXJ1bmcxMHQyZzFpMGFqZXM0ZGVvM2cxa2luZzRsbGFzNG4xcDFyZ2luNHNhMWlvbjR2YTFvM2xhYW5kZXJlbjluMW9ka2EzbHZvM3RlMWluZzNvMnlhZ2U1dTJ3YWxlczJtYXJ0NHRlcjRuZzBnb3U1dGNoMGVzNmVhdGhlcjBjaGFubmVsMTJiY2FtM2VyMnNpdGU1ZDBkaW5nNWlibzJyM2YxaG9zd2hvNmllbjJraTJsbGlhbWhpbGw5bjBkb3dzNGUxbmVyczZtZTJvbHRlcnNrbHV3ZXIxMW9kc2lkZTZyazBzMmxkM3cyczF0YzFmM3hib3gzZXJveDRpaHVhbjRuMnh4Mnl6M3lhY2h0czRob28zbWF4dW41bmRleDVlMW9kb2Jhc2hpN2dhMmtvaGFtYTZ1MHR1YmU2dDF1bjN6YTBwcG9zNHJhM2VybzNpcDJtMW9uZTN1ZXJpY2g2dzInO1xuLy8gSW50ZXJuYXRpb25hbGl6ZWQgZG9tYWluIG5hbWVzIGNvbnRhaW5pbmcgbm9uLUFTQ0lJXG5jb25zdCBlbmNvZGVkVXRsZHMgPSAnzrXOuzHPhTLQsdCzMdC10Lsz0LTQtdGC0Lg00LXRjjLQutCw0YLQvtC70LjQujbQvtC8M9C80LrQtDLQvtC9MdGB0LrQstCwNtC+0L3Qu9Cw0LnQvTXRgNCzM9GA0YPRgTLRhDLRgdCw0LnRgjPRgNCxM9GD0LrRgDPSm9Cw0Lcz1bDVodW1M9eZ16nXqNeQ15w116fXldedM9in2KjZiNi42KjZijXYsdin2YXZg9mINdmE2KfYsdiv2YY02KjYrdix2YrZhjXYrNiy2KfYptixNdiz2LnZiNiv2YrYqTbYudmE2YrYp9mGNdmF2LrYsdioNdmF2KfYsdin2Ko124zYsdin2YY12KjYp9ix2Koy2LLYp9ixNNmK2KrZgzPavtin2LHYqjXYqtmI2YbYszTYs9mI2K/Yp9mGM9ix2YrYqTXYtNio2YPYqTTYudix2KfZgjLYqDLZhdin2YY02YHZhNiz2LfZitmGNtmC2LfYsTPZg9in2KvZiNmE2YrZgzbZiNmFM9mF2LXYsTLZhNmK2LPZitinNdmI2LHZitiq2KfZhtmK2Kc32YLYuTTZh9mF2LHYp9mHNdm+2Kfaqdiz2KrYp9mGN9qA2KfYsdiqNOCkleClieCkrjPgpKjgpYfgpJ8z4KSt4KS+4KSw4KSkMOCkruCljTPgpYvgpKQ14KS44KSC4KSX4KSg4KSoNeCmrOCmvuCmguCmsuCmvjXgpq3gpr7gprDgpqQy4Kew4KakNOCoreCovuCosOCopDTgqq3gqr7gqrDgqqQ04Kyt4Ky+4Kyw4KykNOCuh+CuqOCvjeCupOCuv+Cur+CuvjbgrrLgrpngr43grpXgr4g24K6a4K6/4K6Z4K+N4K6V4K6q4K+N4K6q4K+C4K6w4K+NMTHgsK3gsL7gsLDgsKTgsY014LKt4LK+4LKw4LKkNOC0reC0vuC0sOC0pOC0gjXgtr3gtoLgtprgt4804LiE4Lit4LihM+C5hOC4l+C4ojPguqXgurLguqcz4YOS4YOUMuOBv+OCk+OBqjPjgqLjg57jgr7jg7M044Kv44Op44Km44OJNOOCsOODvOOCsOODqzTjgrPjg6Ay44K544OI44KiM+OCu+ODvOODqzPjg5XjgqHjg4Pjgrfjg6fjg7M244Od44Kk44Oz44OINOS4lueVjDLkuK3kv6Ex5Zu9MeWcizHmlofnvZEz5Lqa6ams6YCKM+S8geS4mjLkvZvlsbEy5L+h5oGvMuWBpeW6tzLlhavljaYy5YWs5Y+4MeebijLlj7Dmub4x54GjMuWVhuWfjjHlupcx5qCHMuWYiemHjDDlpKfphZLlupc15Zyo57q/MuWkp+aLvzLlpKnkuLvmlZkz5aix5LmQMuWutumbuzLlub/kuJwy5b6u5Y2aMuaFiOWWhDLmiJHniLHkvaAz5omL5py6MuaLm+iBmDLmlL/liqEx5bqcMuaWsOWKoOWdoTLpl7sy5pe25bCaMuabuOexjTLmnLrmnoQy5reh6ams6ZShM+a4uOaIjzLmvrPploAy54K555yLMuenu+WKqDLnu4Tnu4fmnLrmnoQ0572R5Z2AMeW6lzHnq5kx57ucMuiBlOmAmjLosLfmrYwy6LSt54mpMumAmuiyqTLpm4blm6Iy6Zu76KiK55uI56eRNOmjnuWIqea1pjPpo5/lk4Ey6aSQ5Y6FMummmeagvOmHjOaLiTPmuK8y64u364S3Mey7tDLsgrzshLEy7ZWc6rWtMic7XG5cbi8qKlxuICogRmluaXRlIFN0YXRlIE1hY2hpbmUgZ2VuZXJhdGlvbiB1dGlsaXRpZXNcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7eyBbZ3JvdXA6IHN0cmluZ106IFRbXSB9fSBDb2xsZWN0aW9uc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge3sgW2dyb3VwOiBzdHJpbmddOiB0cnVlIH19IEZsYWdzXG4gKi9cblxuLy8gS2V5cyBpbiBzY2FubmVyIENvbGxlY3Rpb25zIGluc3RhbmNlc1xuY29uc3QgbnVtZXJpYyA9ICdudW1lcmljJztcbmNvbnN0IGFzY2lpID0gJ2FzY2lpJztcbmNvbnN0IGFscGhhID0gJ2FscGhhJztcbmNvbnN0IGFzY2lpbnVtZXJpYyA9ICdhc2NpaW51bWVyaWMnO1xuY29uc3QgYWxwaGFudW1lcmljID0gJ2FscGhhbnVtZXJpYyc7XG5jb25zdCBkb21haW4gPSAnZG9tYWluJztcbmNvbnN0IGVtb2ppID0gJ2Vtb2ppJztcbmNvbnN0IHNjaGVtZSA9ICdzY2hlbWUnO1xuY29uc3Qgc2xhc2hzY2hlbWUgPSAnc2xhc2hzY2hlbWUnO1xuY29uc3Qgd2hpdGVzcGFjZSA9ICd3aGl0ZXNwYWNlJztcblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7Q29sbGVjdGlvbnM8VD59IGdyb3VwcyB0byByZWdpc3RlciBpblxuICogQHJldHVybnMge1RbXX0gQ3VycmVudCBsaXN0IG9mIHRva2VucyBpbiB0aGUgZ2l2ZW4gY29sbGVjdGlvblxuICovXG5mdW5jdGlvbiByZWdpc3Rlckdyb3VwKG5hbWUsIGdyb3Vwcykge1xuICBpZiAoIShuYW1lIGluIGdyb3VwcykpIHtcbiAgICBncm91cHNbbmFtZV0gPSBbXTtcbiAgfVxuICByZXR1cm4gZ3JvdXBzW25hbWVdO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1R9IHQgdG9rZW4gdG8gYWRkXG4gKiBAcGFyYW0ge0NvbGxlY3Rpb25zPFQ+fSBncm91cHNcbiAqIEBwYXJhbSB7RmxhZ3N9IGZsYWdzXG4gKi9cbmZ1bmN0aW9uIGFkZFRvR3JvdXBzKHQsIGZsYWdzLCBncm91cHMpIHtcbiAgaWYgKGZsYWdzW251bWVyaWNdKSB7XG4gICAgZmxhZ3NbYXNjaWludW1lcmljXSA9IHRydWU7XG4gICAgZmxhZ3NbYWxwaGFudW1lcmljXSA9IHRydWU7XG4gIH1cbiAgaWYgKGZsYWdzW2FzY2lpXSkge1xuICAgIGZsYWdzW2FzY2lpbnVtZXJpY10gPSB0cnVlO1xuICAgIGZsYWdzW2FscGhhXSA9IHRydWU7XG4gIH1cbiAgaWYgKGZsYWdzW2FzY2lpbnVtZXJpY10pIHtcbiAgICBmbGFnc1thbHBoYW51bWVyaWNdID0gdHJ1ZTtcbiAgfVxuICBpZiAoZmxhZ3NbYWxwaGFdKSB7XG4gICAgZmxhZ3NbYWxwaGFudW1lcmljXSA9IHRydWU7XG4gIH1cbiAgaWYgKGZsYWdzW2FscGhhbnVtZXJpY10pIHtcbiAgICBmbGFnc1tkb21haW5dID0gdHJ1ZTtcbiAgfVxuICBpZiAoZmxhZ3NbZW1vamldKSB7XG4gICAgZmxhZ3NbZG9tYWluXSA9IHRydWU7XG4gIH1cbiAgZm9yIChjb25zdCBrIGluIGZsYWdzKSB7XG4gICAgY29uc3QgZ3JvdXAgPSByZWdpc3Rlckdyb3VwKGssIGdyb3Vwcyk7XG4gICAgaWYgKGdyb3VwLmluZGV4T2YodCkgPCAwKSB7XG4gICAgICBncm91cC5wdXNoKHQpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1R9IHQgdG9rZW4gdG8gY2hlY2tcbiAqIEBwYXJhbSB7Q29sbGVjdGlvbnM8VD59IGdyb3Vwc1xuICogQHJldHVybnMge0ZsYWdzfSBncm91cCBmbGFncyB0aGF0IGNvbnRhaW4gdGhpcyB0b2tlblxuICovXG5mdW5jdGlvbiBmbGFnc0ZvclRva2VuKHQsIGdyb3Vwcykge1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgZm9yIChjb25zdCBjIGluIGdyb3Vwcykge1xuICAgIGlmIChncm91cHNbY10uaW5kZXhPZih0KSA+PSAwKSB7XG4gICAgICByZXN1bHRbY10gPSB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7bnVsbCB8IFQgfSBUcmFuc2l0aW9uXG4gKi9cblxuLyoqXG4gKiBEZWZpbmUgYSBiYXNpYyBzdGF0ZSBtYWNoaW5lIHN0YXRlLiBqIGlzIHRoZSBsaXN0IG9mIGNoYXJhY3RlciB0cmFuc2l0aW9ucyxcbiAqIGpyIGlzIHRoZSBsaXN0IG9mIHJlZ2V4LW1hdGNoIHRyYW5zaXRpb25zLCBqZCBpcyB0aGUgZGVmYXVsdCBzdGF0ZSB0b1xuICogdHJhbnNpdGlvbiB0byB0IGlzIHRoZSBhY2NlcHRpbmcgdG9rZW4gdHlwZSwgaWYgYW55LiBJZiB0aGlzIGlzIHRoZSB0ZXJtaW5hbFxuICogc3RhdGUsIHRoZW4gaXQgZG9lcyBub3QgZW1pdCBhIHRva2VuLlxuICpcbiAqIFRoZSB0ZW1wbGF0ZSB0eXBlIFQgcmVwcmVzZW50cyB0aGUgdHlwZSBvZiB0aGUgdG9rZW4gdGhpcyBzdGF0ZSBhY2NlcHRzLiBUaGlzXG4gKiBzaG91bGQgYmUgYSBzdHJpbmcgKHN1Y2ggYXMgb2YgdGhlIHRva2VuIGV4cG9ydHMgaW4gYHRleHQuanNgKSBvciBhXG4gKiBNdWx0aVRva2VuIHN1YmNsYXNzIChmcm9tIGBtdWx0aS5qc2ApXG4gKlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7VH0gW3Rva2VuXSBUb2tlbiB0aGF0IHRoaXMgc3RhdGUgZW1pdHNcbiAqL1xuZnVuY3Rpb24gU3RhdGUodG9rZW4gPSBudWxsKSB7XG4gIC8vIHRoaXMubiA9IG51bGw7IC8vIERFQlVHOiBTdGF0ZSBuYW1lXG4gIC8qKiBAdHlwZSB7eyBbaW5wdXQ6IHN0cmluZ106IFN0YXRlPFQ+IH19IGogKi9cbiAgdGhpcy5qID0ge307IC8vIElNUExFTUVOVEFUSU9OIDFcbiAgLy8gdGhpcy5qID0gW107IC8vIElNUExFTUVOVEFUSU9OIDJcbiAgLyoqIEB0eXBlIHtbUmVnRXhwLCBTdGF0ZTxUPl1bXX0ganIgKi9cbiAgdGhpcy5qciA9IFtdO1xuICAvKiogQHR5cGUgez9TdGF0ZTxUPn0gamQgKi9cbiAgdGhpcy5qZCA9IG51bGw7XG4gIC8qKiBAdHlwZSB7P1R9IHQgKi9cbiAgdGhpcy50ID0gdG9rZW47XG59XG5cbi8qKlxuICogU2Nhbm5lciB0b2tlbiBncm91cHNcbiAqIEB0eXBlIENvbGxlY3Rpb25zPHN0cmluZz5cbiAqL1xuU3RhdGUuZ3JvdXBzID0ge307XG5TdGF0ZS5wcm90b3R5cGUgPSB7XG4gIGFjY2VwdHMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50O1xuICB9LFxuICAvKipcbiAgICogRm9sbG93IGFuIGV4aXN0aW5nIHRyYW5zaXRpb24gZnJvbSB0aGUgZ2l2ZW4gaW5wdXQgdG8gdGhlIG5leHQgc3RhdGUuXG4gICAqIERvZXMgbm90IG11dGF0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlucHV0IGNoYXJhY3RlciBvciB0b2tlbiB0eXBlIHRvIHRyYW5zaXRpb24gb25cbiAgICogQHJldHVybnMgez9TdGF0ZTxUPn0gdGhlIG5leHQgc3RhdGUsIGlmIGFueVxuICAgKi9cbiAgZ28oaW5wdXQpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXM7XG4gICAgY29uc3QgbmV4dFN0YXRlID0gc3RhdGUualtpbnB1dF07XG4gICAgaWYgKG5leHRTdGF0ZSkge1xuICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0ZS5qci5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcmVnZXggPSBzdGF0ZS5qcltpXVswXTtcbiAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHN0YXRlLmpyW2ldWzFdOyAvLyBub3RlOiBtaWdodCBiZSBlbXB0eSB0byBwcmV2ZW50IGRlZmF1bHQganVtcFxuICAgICAgaWYgKG5leHRTdGF0ZSAmJiByZWdleC50ZXN0KGlucHV0KSkge1xuICAgICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBOb3doZXJlIGxlZnQgdG8ganVtcCEgUmV0dXJuIGRlZmF1bHQsIGlmIGFueVxuICAgIHJldHVybiBzdGF0ZS5qZDtcbiAgfSxcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHN0YXRlIGhhcyBhIHRyYW5zaXRpb24gZm9yIHRoZSBnaXZlbiBpbnB1dC4gU2V0IHRoZSBzZWNvbmRcbiAgICogYXJndW1lbnQgdG8gdHJ1ZSB0byBvbmx5IGxvb2sgZm9yIGFuIGV4YWN0IG1hdGNoIChhbmQgbm90IGEgZGVmYXVsdCBvclxuICAgKiByZWd1bGFyLWV4cHJlc3Npb24tYmFzZWQgdHJhbnNpdGlvbilcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlucHV0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZXhhY3RPbmx5XG4gICAqL1xuICBoYXMoaW5wdXQsIGV4YWN0T25seSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4YWN0T25seSA/IGlucHV0IGluIHRoaXMuaiA6ICEhdGhpcy5nbyhpbnB1dCk7XG4gIH0sXG4gIC8qKlxuICAgKiBTaG9ydCBmb3IgXCJ0cmFuc2l0aW9uIGFsbFwiOyBjcmVhdGUgYSB0cmFuc2l0aW9uIGZyb20gdGhlIGFycmF5IG9mIGl0ZW1zXG4gICAqIGluIHRoZSBnaXZlbiBsaXN0IHRvIHRoZSBzYW1lIGZpbmFsIHJlc3VsdGluZyBzdGF0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gaW5wdXRzIEdyb3VwIG9mIGlucHV0cyB0byB0cmFuc2l0aW9uIG9uXG4gICAqIEBwYXJhbSB7VHJhbnNpdGlvbjxUPiB8IFN0YXRlPFQ+fSBbbmV4dF0gVHJhbnNpdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSB7RmxhZ3N9IFtmbGFnc10gQ29sbGVjdGlvbnMgZmxhZ3MgdG8gYWRkIHRva2VuIHRvXG4gICAqIEBwYXJhbSB7Q29sbGVjdGlvbnM8VD59IFtncm91cHNdIE1hc3RlciBsaXN0IG9mIHRva2VuIGdyb3Vwc1xuICAgKi9cbiAgdGEoaW5wdXRzLCBuZXh0LCBmbGFncywgZ3JvdXBzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMudHQoaW5wdXRzW2ldLCBuZXh0LCBmbGFncywgZ3JvdXBzKTtcbiAgICB9XG4gIH0sXG4gIC8qKlxuICAgKiBTaG9ydCBmb3IgXCJ0YWtlIHJlZ2V4cCB0cmFuc2l0aW9uXCI7IGRlZmluZXMgYSB0cmFuc2l0aW9uIGZvciB0aGlzIHN0YXRlXG4gICAqIHdoZW4gaXQgZW5jb3VudGVycyBhIHRva2VuIHdoaWNoIG1hdGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXhwIFJlZ3VsYXIgZXhwcmVzc2lvbiB0cmFuc2l0aW9uIChwb3B1bGF0ZSBmaXJzdClcbiAgICogQHBhcmFtIHtUIHwgU3RhdGU8VD59IFtuZXh0XSBUcmFuc2l0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIHtGbGFnc30gW2ZsYWdzXSBDb2xsZWN0aW9ucyBmbGFncyB0byBhZGQgdG9rZW4gdG9cbiAgICogQHBhcmFtIHtDb2xsZWN0aW9uczxUPn0gW2dyb3Vwc10gTWFzdGVyIGxpc3Qgb2YgdG9rZW4gZ3JvdXBzXG4gICAqIEByZXR1cm5zIHtTdGF0ZTxUPn0gdGFrZW4gYWZ0ZXIgdGhlIGdpdmVuIGlucHV0XG4gICAqL1xuICB0cihyZWdleHAsIG5leHQsIGZsYWdzLCBncm91cHMpIHtcbiAgICBncm91cHMgPSBncm91cHMgfHwgU3RhdGUuZ3JvdXBzO1xuICAgIGxldCBuZXh0U3RhdGU7XG4gICAgaWYgKG5leHQgJiYgbmV4dC5qKSB7XG4gICAgICBuZXh0U3RhdGUgPSBuZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUb2tlbiB3aXRoIG1heWJlIHRva2VuIGdyb3Vwc1xuICAgICAgbmV4dFN0YXRlID0gbmV3IFN0YXRlKG5leHQpO1xuICAgICAgaWYgKGZsYWdzICYmIGdyb3Vwcykge1xuICAgICAgICBhZGRUb0dyb3VwcyhuZXh0LCBmbGFncywgZ3JvdXBzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5qci5wdXNoKFtyZWdleHAsIG5leHRTdGF0ZV0pO1xuICAgIHJldHVybiBuZXh0U3RhdGU7XG4gIH0sXG4gIC8qKlxuICAgKiBTaG9ydCBmb3IgXCJ0YWtlIHRyYW5zaXRpb25zXCIsIHdpbGwgdGFrZSBhcyBtYW55IHNlcXVlbnRpYWwgdHJhbnNpdGlvbnMgYXNcbiAgICogdGhlIGxlbmd0aCBvZiB0aGUgZ2l2ZW4gaW5wdXQgYW5kIHJldHVybnMgdGhlXG4gICAqIHJlc3VsdGluZyBmaW5hbCBzdGF0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gaW5wdXRcbiAgICogQHBhcmFtIHtUIHwgU3RhdGU8VD59IFtuZXh0XSBUcmFuc2l0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIHtGbGFnc30gW2ZsYWdzXSBDb2xsZWN0aW9ucyBmbGFncyB0byBhZGQgdG9rZW4gdG9cbiAgICogQHBhcmFtIHtDb2xsZWN0aW9uczxUPn0gW2dyb3Vwc10gTWFzdGVyIGxpc3Qgb2YgdG9rZW4gZ3JvdXBzXG4gICAqIEByZXR1cm5zIHtTdGF0ZTxUPn0gdGFrZW4gYWZ0ZXIgdGhlIGdpdmVuIGlucHV0XG4gICAqL1xuICB0cyhpbnB1dCwgbmV4dCwgZmxhZ3MsIGdyb3Vwcykge1xuICAgIGxldCBzdGF0ZSA9IHRoaXM7XG4gICAgY29uc3QgbGVuID0gaW5wdXQubGVuZ3RoO1xuICAgIGlmICghbGVuKSB7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuIC0gMTsgaSsrKSB7XG4gICAgICBzdGF0ZSA9IHN0YXRlLnR0KGlucHV0W2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlLnR0KGlucHV0W2xlbiAtIDFdLCBuZXh0LCBmbGFncywgZ3JvdXBzKTtcbiAgfSxcbiAgLyoqXG4gICAqIFNob3J0IGZvciBcInRha2UgdHJhbnNpdGlvblwiLCB0aGlzIGlzIGEgbWV0aG9kIGZvciBidWlsZGluZy93b3JraW5nIHdpdGhcbiAgICogc3RhdGUgbWFjaGluZXMuXG4gICAqXG4gICAqIElmIGEgc3RhdGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoZSBnaXZlbiBpbnB1dCwgcmV0dXJucyBpdC5cbiAgICpcbiAgICogSWYgYSB0b2tlbiBpcyBzcGVjaWZpZWQsIHRoYXQgc3RhdGUgd2lsbCBlbWl0IHRoYXQgdG9rZW4gd2hlbiByZWFjaGVkIGJ5XG4gICAqIHRoZSBsaW5raWZ5IGVuZ2luZS5cbiAgICpcbiAgICogSWYgbm8gc3RhdGUgZXhpc3RzLCBpdCB3aWxsIGJlIGluaXRpYWxpemVkIHdpdGggc29tZSBkZWZhdWx0IHRyYW5zaXRpb25zXG4gICAqIHRoYXQgcmVzZW1ibGUgZXhpc3RpbmcgZGVmYXVsdCB0cmFuc2l0aW9ucy5cbiAgICpcbiAgICogSWYgYSBzdGF0ZSBpcyBnaXZlbiBmb3IgdGhlIHNlY29uZCBhcmd1bWVudCwgdGhhdCBzdGF0ZSB3aWxsIGJlXG4gICAqIHRyYW5zaXRpb25lZCB0byBvbiB0aGUgZ2l2ZW4gaW5wdXQgcmVnYXJkbGVzcyBvZiB3aGF0IHRoYXQgaW5wdXRcbiAgICogcHJldmlvdXNseSBkaWQuXG4gICAqXG4gICAqIFNwZWNpZnkgYSB0b2tlbiBncm91cCBmbGFncyB0byBkZWZpbmUgZ3JvdXBzIHRoYXQgdGhpcyB0b2tlbiBiZWxvbmdzIHRvLlxuICAgKiBUaGUgdG9rZW4gd2lsbCBiZSBhZGRlZCB0byBjb3JyZXNwb25kaW5nIGVudGlyZXMgaW4gdGhlIGdpdmVuIGdyb3Vwc1xuICAgKiBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCBjaGFyYWN0ZXIsIHRva2VuIHR5cGUgdG8gdHJhbnNpdGlvbiBvblxuICAgKiBAcGFyYW0ge1QgfCBTdGF0ZTxUPn0gW25leHRdIFRyYW5zaXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0ge0ZsYWdzfSBbZmxhZ3NdIENvbGxlY3Rpb25zIGZsYWdzIHRvIGFkZCB0b2tlbiB0b1xuICAgKiBAcGFyYW0ge0NvbGxlY3Rpb25zPFQ+fSBbZ3JvdXBzXSBNYXN0ZXIgbGlzdCBvZiBncm91cHNcbiAgICogQHJldHVybnMge1N0YXRlPFQ+fSB0YWtlbiBhZnRlciB0aGUgZ2l2ZW4gaW5wdXRcbiAgICovXG4gIHR0KGlucHV0LCBuZXh0LCBmbGFncywgZ3JvdXBzKSB7XG4gICAgZ3JvdXBzID0gZ3JvdXBzIHx8IFN0YXRlLmdyb3VwcztcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXM7XG5cbiAgICAvLyBDaGVjayBpZiBleGlzdGluZyBzdGF0ZSBnaXZlbiwganVzdCBhIGJhc2ljIHRyYW5zaXRpb25cbiAgICBpZiAobmV4dCAmJiBuZXh0LmopIHtcbiAgICAgIHN0YXRlLmpbaW5wdXRdID0gbmV4dDtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH1cbiAgICBjb25zdCB0ID0gbmV4dDtcblxuICAgIC8vIFRha2UgdGhlIHRyYW5zaXRpb24gd2l0aCB0aGUgdXN1YWwgZGVmYXVsdCBtZWNoYW5pc21zIGFuZCB1c2UgdGhhdCBhc1xuICAgIC8vIGEgdGVtcGxhdGUgZm9yIGNyZWF0aW5nIHRoZSBuZXh0IHN0YXRlXG4gICAgbGV0IG5leHRTdGF0ZSxcbiAgICAgIHRlbXBsYXRlU3RhdGUgPSBzdGF0ZS5nbyhpbnB1dCk7XG4gICAgaWYgKHRlbXBsYXRlU3RhdGUpIHtcbiAgICAgIG5leHRTdGF0ZSA9IG5ldyBTdGF0ZSgpO1xuICAgICAgT2JqZWN0LmFzc2lnbihuZXh0U3RhdGUuaiwgdGVtcGxhdGVTdGF0ZS5qKTtcbiAgICAgIG5leHRTdGF0ZS5qci5wdXNoLmFwcGx5KG5leHRTdGF0ZS5qciwgdGVtcGxhdGVTdGF0ZS5qcik7XG4gICAgICBuZXh0U3RhdGUuamQgPSB0ZW1wbGF0ZVN0YXRlLmpkO1xuICAgICAgbmV4dFN0YXRlLnQgPSB0ZW1wbGF0ZVN0YXRlLnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRTdGF0ZSA9IG5ldyBTdGF0ZSgpO1xuICAgIH1cbiAgICBpZiAodCkge1xuICAgICAgLy8gRW5zdXJlIG5ld2x5IHRva2VuIGlzIGluIHRoZSBzYW1lIGdyb3VwcyBhcyB0aGUgb2xkIHRva2VuXG4gICAgICBpZiAoZ3JvdXBzKSB7XG4gICAgICAgIGlmIChuZXh0U3RhdGUudCAmJiB0eXBlb2YgbmV4dFN0YXRlLnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc3QgYWxsRmxhZ3MgPSBPYmplY3QuYXNzaWduKGZsYWdzRm9yVG9rZW4obmV4dFN0YXRlLnQsIGdyb3VwcyksIGZsYWdzKTtcbiAgICAgICAgICBhZGRUb0dyb3Vwcyh0LCBhbGxGbGFncywgZ3JvdXBzKTtcbiAgICAgICAgfSBlbHNlIGlmIChmbGFncykge1xuICAgICAgICAgIGFkZFRvR3JvdXBzKHQsIGZsYWdzLCBncm91cHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuZXh0U3RhdGUudCA9IHQ7IC8vIG92ZXJ3cml0ZSBhbnl0aGluZyB0aGF0IHdhcyBwcmV2aW91c2x5IHRoZXJlXG4gICAgfVxuICAgIHN0YXRlLmpbaW5wdXRdID0gbmV4dFN0YXRlO1xuICAgIHJldHVybiBuZXh0U3RhdGU7XG4gIH1cbn07XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMgdG8gaW1wcm92ZSBtaW5pZmljYXRpb24gKG5vdCBleHBvcnRlZCBvdXRzaWRlIGxpbmtpZnlqcyBtb2R1bGUpXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7U3RhdGU8VD59IHN0YXRlXG4gKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBpbnB1dFxuICogQHBhcmFtIHtGbGFnc30gW2ZsYWdzXVxuICogQHBhcmFtIHtDb2xsZWN0aW9uczxUPn0gW2dyb3Vwc11cbiAqL1xuY29uc3QgdGEgPSAoc3RhdGUsIGlucHV0LCBuZXh0LCBmbGFncywgZ3JvdXBzKSA9PiBzdGF0ZS50YShpbnB1dCwgbmV4dCwgZmxhZ3MsIGdyb3Vwcyk7XG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7U3RhdGU8VD59IHN0YXRlXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXhwXG4gKiBAcGFyYW0ge1QgfCBTdGF0ZTxUPn0gW25leHRdXG4gKiBAcGFyYW0ge0ZsYWdzfSBbZmxhZ3NdXG4gKiBAcGFyYW0ge0NvbGxlY3Rpb25zPFQ+fSBbZ3JvdXBzXVxuICovXG5jb25zdCB0ciA9IChzdGF0ZSwgcmVnZXhwLCBuZXh0LCBmbGFncywgZ3JvdXBzKSA9PiBzdGF0ZS50cihyZWdleHAsIG5leHQsIGZsYWdzLCBncm91cHMpO1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1N0YXRlPFQ+fSBzdGF0ZVxuICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gaW5wdXRcbiAqIEBwYXJhbSB7VCB8IFN0YXRlPFQ+fSBbbmV4dF1cbiAqIEBwYXJhbSB7RmxhZ3N9IFtmbGFnc11cbiAqIEBwYXJhbSB7Q29sbGVjdGlvbnM8VD59IFtncm91cHNdXG4gKi9cbmNvbnN0IHRzID0gKHN0YXRlLCBpbnB1dCwgbmV4dCwgZmxhZ3MsIGdyb3VwcykgPT4gc3RhdGUudHMoaW5wdXQsIG5leHQsIGZsYWdzLCBncm91cHMpO1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1N0YXRlPFQ+fSBzdGF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0XG4gKiBAcGFyYW0ge1QgfCBTdGF0ZTxUPn0gW25leHRdXG4gKiBAcGFyYW0ge0NvbGxlY3Rpb25zPFQ+fSBbZ3JvdXBzXVxuICogQHBhcmFtIHtGbGFnc30gW2ZsYWdzXVxuICovXG5jb25zdCB0dCA9IChzdGF0ZSwgaW5wdXQsIG5leHQsIGZsYWdzLCBncm91cHMpID0+IHN0YXRlLnR0KGlucHV0LCBuZXh0LCBmbGFncywgZ3JvdXBzKTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuVGV4dCBUb2tlbnNcbklkZW50aWZpZXJzIGZvciB0b2tlbiBvdXRwdXRzIGZyb20gdGhlIHJlZ2V4cCBzY2FubmVyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vIEEgdmFsaWQgd2ViIGRvbWFpbiB0b2tlblxuY29uc3QgV09SRCA9ICdXT1JEJzsgLy8gb25seSBjb250YWlucyBhLXpcbmNvbnN0IFVXT1JEID0gJ1VXT1JEJzsgLy8gY29udGFpbnMgbGV0dGVycyBvdGhlciB0aGFuIGEteiwgdXNlZCBmb3IgSUROXG5jb25zdCBBU0NJSU5VTUVSSUNBTCA9ICdBU0NJSU5VTUVSSUNBTCc7IC8vIGNvbnRhaW5zIGEteiwgMC05XG5jb25zdCBBTFBIQU5VTUVSSUNBTCA9ICdBTFBIQU5VTUVSSUNBTCc7IC8vIGNvbnRhaW5zIG51bWJlcnMgYW5kIGxldHRlcnMgb3RoZXIgdGhhbiBhLXosIHVzZWQgZm9yIElETlxuXG4vLyBTcGVjaWFsIGNhc2Ugb2Ygd29yZFxuY29uc3QgTE9DQUxIT1NUID0gJ0xPQ0FMSE9TVCc7XG5cbi8vIFZhbGlkIHRvcC1sZXZlbCBkb21haW4sIHNwZWNpYWwgY2FzZSBvZiBXT1JEIChzZWUgdGxkcy5qcylcbmNvbnN0IFRMRCA9ICdUTEQnO1xuXG4vLyBWYWxpZCBJRE4gVExELCBzcGVjaWFsIGNhc2Ugb2YgVVdPUkQgKHNlZSB0bGRzLmpzKVxuY29uc3QgVVRMRCA9ICdVVExEJztcblxuLy8gVGhlIHNjaGVtZSBwb3J0aW9uIG9mIGEgd2ViIFVSSSBwcm90b2NvbC4gU3VwcG9ydGVkIHR5cGVzIGluY2x1ZGU6IGBtYWlsdG9gLFxuLy8gYGZpbGVgLCBhbmQgdXNlci1kZWZpbmVkIGN1c3RvbSBwcm90b2NvbHMuIExpbWl0ZWQgdG8gc2NoZW1lcyB0aGF0IGNvbnRhaW5cbi8vIG9ubHkgbGV0dGVyc1xuY29uc3QgU0NIRU1FID0gJ1NDSEVNRSc7XG5cbi8vIFNpbWlsYXIgdG8gU0NIRU1FLCBleGNlcHQgbWFrZXMgZGlzdGluY3Rpb24gZm9yIHNjaGVtZXMgdGhhdCBtdXN0IGFsd2F5cyBiZVxuLy8gZm9sbG93ZWQgYnkgYDovL2AsIG5vdCBqdXN0IGA6YC4gU3VwcG9ydGVkIHR5cGVzIGluY2x1ZGUgYGh0dHBgLCBgaHR0cHNgLFxuLy8gYGZ0cGAsIGBmdHBzYFxuY29uc3QgU0xBU0hfU0NIRU1FID0gJ1NMQVNIX1NDSEVNRSc7XG5cbi8vIEFueSBzZXF1ZW5jZSBvZiBkaWdpdHMgMC05XG5jb25zdCBOVU0gPSAnTlVNJztcblxuLy8gQW55IG51bWJlciBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IG5ld2xpbmVcbmNvbnN0IFdTID0gJ1dTJztcblxuLy8gTmV3IGxpbmUgKHVuaXggc3R5bGUpXG5jb25zdCBOTCA9ICdOTCc7IC8vIFxcblxuXG4vLyBPcGVuaW5nL2Nsb3NpbmcgYnJhY2tldCBjbGFzc2VzXG4vLyBUT0RPOiBSZW5hbWUgT1BFTiAtPiBMRUZUIGFuZCBDTE9TRSAtPiBSSUdIVCBpbiB2NSB0byBmaXQgd2l0aCBVbmljb2RlIG5hbWVzXG4vLyBBbHNvIHJlbmFtZSBhbmdsZSBicmFja2VzIHRvIExFU1NUSEFOIGFuZCBHUkVBVEVSIFRIQU5cbmNvbnN0IE9QRU5CUkFDRSA9ICdPUEVOQlJBQ0UnOyAvLyB7XG5jb25zdCBDTE9TRUJSQUNFID0gJ0NMT1NFQlJBQ0UnOyAvLyB9XG5jb25zdCBPUEVOQlJBQ0tFVCA9ICdPUEVOQlJBQ0tFVCc7IC8vIFtcbmNvbnN0IENMT1NFQlJBQ0tFVCA9ICdDTE9TRUJSQUNLRVQnOyAvLyBdXG5jb25zdCBPUEVOUEFSRU4gPSAnT1BFTlBBUkVOJzsgLy8gKFxuY29uc3QgQ0xPU0VQQVJFTiA9ICdDTE9TRVBBUkVOJzsgLy8gKVxuY29uc3QgT1BFTkFOR0xFQlJBQ0tFVCA9ICdPUEVOQU5HTEVCUkFDS0VUJzsgLy8gPFxuY29uc3QgQ0xPU0VBTkdMRUJSQUNLRVQgPSAnQ0xPU0VBTkdMRUJSQUNLRVQnOyAvLyA+XG5jb25zdCBGVUxMV0lEVEhMRUZUUEFSRU4gPSAnRlVMTFdJRFRITEVGVFBBUkVOJzsgLy8g77yIXG5jb25zdCBGVUxMV0lEVEhSSUdIVFBBUkVOID0gJ0ZVTExXSURUSFJJR0hUUEFSRU4nOyAvLyDvvIlcbmNvbnN0IExFRlRDT1JORVJCUkFDS0VUID0gJ0xFRlRDT1JORVJCUkFDS0VUJzsgLy8g44CMXG5jb25zdCBSSUdIVENPUk5FUkJSQUNLRVQgPSAnUklHSFRDT1JORVJCUkFDS0VUJzsgLy8g44CNXG5jb25zdCBMRUZUV0hJVEVDT1JORVJCUkFDS0VUID0gJ0xFRlRXSElURUNPUk5FUkJSQUNLRVQnOyAvLyDjgI5cbmNvbnN0IFJJR0hUV0hJVEVDT1JORVJCUkFDS0VUID0gJ1JJR0hUV0hJVEVDT1JORVJCUkFDS0VUJzsgLy8g44CPXG5jb25zdCBGVUxMV0lEVEhMRVNTVEhBTiA9ICdGVUxMV0lEVEhMRVNTVEhBTic7IC8vIO+8nFxuY29uc3QgRlVMTFdJRFRIR1JFQVRFUlRIQU4gPSAnRlVMTFdJRFRIR1JFQVRFUlRIQU4nOyAvLyDvvJ5cblxuLy8gVmFyaW91cyBzeW1ib2xzXG5jb25zdCBBTVBFUlNBTkQgPSAnQU1QRVJTQU5EJzsgLy8gJlxuY29uc3QgQVBPU1RST1BIRSA9ICdBUE9TVFJPUEhFJzsgLy8gJ1xuY29uc3QgQVNURVJJU0sgPSAnQVNURVJJU0snOyAvLyAqXG5jb25zdCBBVCA9ICdBVCc7IC8vIEBcbmNvbnN0IEJBQ0tTTEFTSCA9ICdCQUNLU0xBU0gnOyAvLyBcXFxuY29uc3QgQkFDS1RJQ0sgPSAnQkFDS1RJQ0snOyAvLyBgXG5jb25zdCBDQVJFVCA9ICdDQVJFVCc7IC8vIF5cbmNvbnN0IENPTE9OID0gJ0NPTE9OJzsgLy8gOlxuY29uc3QgQ09NTUEgPSAnQ09NTUEnOyAvLyAsXG5jb25zdCBET0xMQVIgPSAnRE9MTEFSJzsgLy8gJFxuY29uc3QgRE9UID0gJ0RPVCc7IC8vIC5cbmNvbnN0IEVRVUFMUyA9ICdFUVVBTFMnOyAvLyA9XG5jb25zdCBFWENMQU1BVElPTiA9ICdFWENMQU1BVElPTic7IC8vICFcbmNvbnN0IEhZUEhFTiA9ICdIWVBIRU4nOyAvLyAtXG5jb25zdCBQRVJDRU5UID0gJ1BFUkNFTlQnOyAvLyAlXG5jb25zdCBQSVBFID0gJ1BJUEUnOyAvLyB8XG5jb25zdCBQTFVTID0gJ1BMVVMnOyAvLyArXG5jb25zdCBQT1VORCA9ICdQT1VORCc7IC8vICNcbmNvbnN0IFFVRVJZID0gJ1FVRVJZJzsgLy8gP1xuY29uc3QgUVVPVEUgPSAnUVVPVEUnOyAvLyBcIlxuY29uc3QgRlVMTFdJRFRITUlERExFRE9UID0gJ0ZVTExXSURUSE1JRERMRURPVCc7IC8vIOODu1xuXG5jb25zdCBTRU1JID0gJ1NFTUknOyAvLyA7XG5jb25zdCBTTEFTSCA9ICdTTEFTSCc7IC8vIC9cbmNvbnN0IFRJTERFID0gJ1RJTERFJzsgLy8gflxuY29uc3QgVU5ERVJTQ09SRSA9ICdVTkRFUlNDT1JFJzsgLy8gX1xuXG4vLyBFbW9qaSBzeW1ib2xcbmNvbnN0IEVNT0pJJDEgPSAnRU1PSkknO1xuXG4vLyBEZWZhdWx0IHRva2VuIC0gYW55dGhpbmcgdGhhdCBpcyBub3Qgb25lIG9mIHRoZSBhYm92ZVxuY29uc3QgU1lNID0gJ1NZTSc7XG5cbnZhciB0ayA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcblx0X19wcm90b19fOiBudWxsLFxuXHRBTFBIQU5VTUVSSUNBTDogQUxQSEFOVU1FUklDQUwsXG5cdEFNUEVSU0FORDogQU1QRVJTQU5ELFxuXHRBUE9TVFJPUEhFOiBBUE9TVFJPUEhFLFxuXHRBU0NJSU5VTUVSSUNBTDogQVNDSUlOVU1FUklDQUwsXG5cdEFTVEVSSVNLOiBBU1RFUklTSyxcblx0QVQ6IEFULFxuXHRCQUNLU0xBU0g6IEJBQ0tTTEFTSCxcblx0QkFDS1RJQ0s6IEJBQ0tUSUNLLFxuXHRDQVJFVDogQ0FSRVQsXG5cdENMT1NFQU5HTEVCUkFDS0VUOiBDTE9TRUFOR0xFQlJBQ0tFVCxcblx0Q0xPU0VCUkFDRTogQ0xPU0VCUkFDRSxcblx0Q0xPU0VCUkFDS0VUOiBDTE9TRUJSQUNLRVQsXG5cdENMT1NFUEFSRU46IENMT1NFUEFSRU4sXG5cdENPTE9OOiBDT0xPTixcblx0Q09NTUE6IENPTU1BLFxuXHRET0xMQVI6IERPTExBUixcblx0RE9UOiBET1QsXG5cdEVNT0pJOiBFTU9KSSQxLFxuXHRFUVVBTFM6IEVRVUFMUyxcblx0RVhDTEFNQVRJT046IEVYQ0xBTUFUSU9OLFxuXHRGVUxMV0lEVEhHUkVBVEVSVEhBTjogRlVMTFdJRFRIR1JFQVRFUlRIQU4sXG5cdEZVTExXSURUSExFRlRQQVJFTjogRlVMTFdJRFRITEVGVFBBUkVOLFxuXHRGVUxMV0lEVEhMRVNTVEhBTjogRlVMTFdJRFRITEVTU1RIQU4sXG5cdEZVTExXSURUSE1JRERMRURPVDogRlVMTFdJRFRITUlERExFRE9ULFxuXHRGVUxMV0lEVEhSSUdIVFBBUkVOOiBGVUxMV0lEVEhSSUdIVFBBUkVOLFxuXHRIWVBIRU46IEhZUEhFTixcblx0TEVGVENPUk5FUkJSQUNLRVQ6IExFRlRDT1JORVJCUkFDS0VULFxuXHRMRUZUV0hJVEVDT1JORVJCUkFDS0VUOiBMRUZUV0hJVEVDT1JORVJCUkFDS0VULFxuXHRMT0NBTEhPU1Q6IExPQ0FMSE9TVCxcblx0Tkw6IE5MLFxuXHROVU06IE5VTSxcblx0T1BFTkFOR0xFQlJBQ0tFVDogT1BFTkFOR0xFQlJBQ0tFVCxcblx0T1BFTkJSQUNFOiBPUEVOQlJBQ0UsXG5cdE9QRU5CUkFDS0VUOiBPUEVOQlJBQ0tFVCxcblx0T1BFTlBBUkVOOiBPUEVOUEFSRU4sXG5cdFBFUkNFTlQ6IFBFUkNFTlQsXG5cdFBJUEU6IFBJUEUsXG5cdFBMVVM6IFBMVVMsXG5cdFBPVU5EOiBQT1VORCxcblx0UVVFUlk6IFFVRVJZLFxuXHRRVU9URTogUVVPVEUsXG5cdFJJR0hUQ09STkVSQlJBQ0tFVDogUklHSFRDT1JORVJCUkFDS0VULFxuXHRSSUdIVFdISVRFQ09STkVSQlJBQ0tFVDogUklHSFRXSElURUNPUk5FUkJSQUNLRVQsXG5cdFNDSEVNRTogU0NIRU1FLFxuXHRTRU1JOiBTRU1JLFxuXHRTTEFTSDogU0xBU0gsXG5cdFNMQVNIX1NDSEVNRTogU0xBU0hfU0NIRU1FLFxuXHRTWU06IFNZTSxcblx0VElMREU6IFRJTERFLFxuXHRUTEQ6IFRMRCxcblx0VU5ERVJTQ09SRTogVU5ERVJTQ09SRSxcblx0VVRMRDogVVRMRCxcblx0VVdPUkQ6IFVXT1JELFxuXHRXT1JEOiBXT1JELFxuXHRXUzogV1Ncbn0pO1xuXG4vLyBOb3RlIHRoYXQgdGhlc2UgdHdvIFVuaWNvZGUgb25lcyBleHBhbmQgaW50byBhIHJlYWxseSBiaWcgb25lIHdpdGggQmFiZWxcbmNvbnN0IEFTQ0lJX0xFVFRFUiA9IC9bYS16XS87XG5jb25zdCBMRVRURVIgPSAvXFxwe0x9L3U7IC8vIEFueSBVbmljb2RlIGNoYXJhY3RlciB3aXRoIGxldHRlciBkYXRhIHR5cGVcbmNvbnN0IEVNT0pJID0gL1xccHtFbW9qaX0vdTsgLy8gQW55IFVuaWNvZGUgZW1vamkgY2hhcmFjdGVyXG5jb25zdCBFTU9KSV9WQVJJQVRJT04kMSA9IC9cXHVmZTBmLztcbmNvbnN0IERJR0lUID0gL1xcZC87XG5jb25zdCBTUEFDRSA9IC9cXHMvO1xuXG52YXIgcmVnZXhwID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuXHRfX3Byb3RvX186IG51bGwsXG5cdEFTQ0lJX0xFVFRFUjogQVNDSUlfTEVUVEVSLFxuXHRESUdJVDogRElHSVQsXG5cdEVNT0pJOiBFTU9KSSxcblx0RU1PSklfVkFSSUFUSU9OOiBFTU9KSV9WQVJJQVRJT04kMSxcblx0TEVUVEVSOiBMRVRURVIsXG5cdFNQQUNFOiBTUEFDRVxufSk7XG5cbi8qKlxuXHRUaGUgc2Nhbm5lciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdGhhdCB0YWtlcyBhIHN0cmluZyBvZiB0ZXh0IGFzIGlucHV0LCBhbmRcblx0b3V0cHV0cyBhbiBhcnJheSBvZiB0b2tlbnMgaW5zdGFuY2VzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGVhc3kgVVJMIHBhcnNpbmcuXG4qL1xuXG5jb25zdCBDUiA9ICdcXHInOyAvLyBjYXJyaWFnZS1yZXR1cm4gY2hhcmFjdGVyXG5jb25zdCBMRiA9ICdcXG4nOyAvLyBsaW5lLWZlZWQgY2hhcmFjdGVyXG5jb25zdCBFTU9KSV9WQVJJQVRJT04gPSAnXFx1ZmUwZic7IC8vIFZhcmlhdGlvbiBzZWxlY3RvciwgZm9sbG93cyBoZWFydCBhbmQgb3RoZXJzXG5jb25zdCBFTU9KSV9KT0lORVIgPSAnXFx1MjAwZCc7IC8vIHplcm8td2lkdGggam9pbmVyXG5jb25zdCBPQkpFQ1RfUkVQTEFDRU1FTlQgPSAnXFx1ZmZmYyc7IC8vIHdoaXRlc3BhY2UgcGxhY2Vob2xkZXIgdGhhdCBzb21ldGltZXMgYXBwZWFycyBpbiByaWNoIHRleHQgZWRpdG9yc1xuXG5sZXQgdGxkcyA9IG51bGwsXG4gIHV0bGRzID0gbnVsbDsgLy8gZG9uJ3QgY2hhbmdlIHNvIG9ubHkgaGF2ZSB0byBiZSBjb21wdXRlZCBvbmNlXG5cbi8qKlxuICogU2Nhbm5lciBvdXRwdXQgdG9rZW46XG4gKiAtIGB0YCBpcyB0aGUgdG9rZW4gbmFtZSAoZS5nLiwgJ05VTScsICdFTU9KSScsICdUTEQnKVxuICogLSBgdmAgaXMgdGhlIHZhbHVlIG9mIHRoZSB0b2tlbiAoZS5nLiwgJzEyMycsICfinaTvuI8nLCAnY29tJylcbiAqIC0gYHNgIGlzIHRoZSBzdGFydCBpbmRleCBvZiB0aGUgdG9rZW4gaW4gdGhlIG9yaWdpbmFsIHN0cmluZ1xuICogLSBgZWAgaXMgdGhlIGVuZCBpbmRleCBvZiB0aGUgdG9rZW4gaW4gdGhlIG9yaWdpbmFsIHN0cmluZ1xuICogQHR5cGVkZWYge3t0OiBzdHJpbmcsIHY6IHN0cmluZywgczogbnVtYmVyLCBlOiBudW1iZXJ9fSBUb2tlblxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHt7IFtjb2xsZWN0aW9uOiBzdHJpbmddOiBUW10gfX0gQ29sbGVjdGlvbnNcbiAqL1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIHNjYW5uZXIgY2hhcmFjdGVyLWJhc2VkIHN0YXRlIG1hY2hpbmUgZm9yIHRoZSBnaXZlbiBzdGFydFxuICogc3RhdGVcbiAqIEBwYXJhbSB7W3N0cmluZywgYm9vbGVhbl1bXX0gY3VzdG9tU2NoZW1lcyBMaXN0IG9mIGN1c3RvbSBzY2hlbWVzLCB3aGVyZSBlYWNoXG4gKiBpdGVtIGlzIGEgbGVuZ3RoLTIgdHVwbGUgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBzZXQgdG8gdGhlIHN0cmluZyBzY2hlbWUsIGFuZFxuICogdGhlIHNlY29uZCBlbGVtZW50IHNldCB0byBgdHJ1ZWAgaWYgdGhlIGA6Ly9gIGFmdGVyIHRoZSBzY2hlbWUgaXMgb3B0aW9uYWxcbiAqL1xuZnVuY3Rpb24gaW5pdCQyKGN1c3RvbVNjaGVtZXMgPSBbXSkge1xuICAvLyBGcmVxdWVudGx5IHVzZWQgc3RhdGVzIChuYW1lIGFyZ3VtZW50IHJlbW92ZWQgZHVyaW5nIG1pbmlmaWNhdGlvbilcbiAgLyoqIEB0eXBlIENvbGxlY3Rpb25zPHN0cmluZz4gKi9cbiAgY29uc3QgZ3JvdXBzID0ge307IC8vIG9mIHRva2Vuc1xuICBTdGF0ZS5ncm91cHMgPSBncm91cHM7XG4gIC8qKiBAdHlwZSBTdGF0ZTxzdHJpbmc+ICovXG4gIGNvbnN0IFN0YXJ0ID0gbmV3IFN0YXRlKCk7XG4gIGlmICh0bGRzID09IG51bGwpIHtcbiAgICB0bGRzID0gZGVjb2RlVGxkcyhlbmNvZGVkVGxkcyk7XG4gIH1cbiAgaWYgKHV0bGRzID09IG51bGwpIHtcbiAgICB1dGxkcyA9IGRlY29kZVRsZHMoZW5jb2RlZFV0bGRzKTtcbiAgfVxuXG4gIC8vIFN0YXRlcyBmb3Igc3BlY2lhbCBVUkwgc3ltYm9scyB0aGF0IGFjY2VwdCBpbW1lZGlhdGVseSBhZnRlciBzdGFydFxuICB0dChTdGFydCwgXCInXCIsIEFQT1NUUk9QSEUpO1xuICB0dChTdGFydCwgJ3snLCBPUEVOQlJBQ0UpO1xuICB0dChTdGFydCwgJ30nLCBDTE9TRUJSQUNFKTtcbiAgdHQoU3RhcnQsICdbJywgT1BFTkJSQUNLRVQpO1xuICB0dChTdGFydCwgJ10nLCBDTE9TRUJSQUNLRVQpO1xuICB0dChTdGFydCwgJygnLCBPUEVOUEFSRU4pO1xuICB0dChTdGFydCwgJyknLCBDTE9TRVBBUkVOKTtcbiAgdHQoU3RhcnQsICc8JywgT1BFTkFOR0xFQlJBQ0tFVCk7XG4gIHR0KFN0YXJ0LCAnPicsIENMT1NFQU5HTEVCUkFDS0VUKTtcbiAgdHQoU3RhcnQsICfvvIgnLCBGVUxMV0lEVEhMRUZUUEFSRU4pO1xuICB0dChTdGFydCwgJ++8iScsIEZVTExXSURUSFJJR0hUUEFSRU4pO1xuICB0dChTdGFydCwgJ+OAjCcsIExFRlRDT1JORVJCUkFDS0VUKTtcbiAgdHQoU3RhcnQsICfjgI0nLCBSSUdIVENPUk5FUkJSQUNLRVQpO1xuICB0dChTdGFydCwgJ+OAjicsIExFRlRXSElURUNPUk5FUkJSQUNLRVQpO1xuICB0dChTdGFydCwgJ+OAjycsIFJJR0hUV0hJVEVDT1JORVJCUkFDS0VUKTtcbiAgdHQoU3RhcnQsICfvvJwnLCBGVUxMV0lEVEhMRVNTVEhBTik7XG4gIHR0KFN0YXJ0LCAn77yeJywgRlVMTFdJRFRIR1JFQVRFUlRIQU4pO1xuICB0dChTdGFydCwgJyYnLCBBTVBFUlNBTkQpO1xuICB0dChTdGFydCwgJyonLCBBU1RFUklTSyk7XG4gIHR0KFN0YXJ0LCAnQCcsIEFUKTtcbiAgdHQoU3RhcnQsICdgJywgQkFDS1RJQ0spO1xuICB0dChTdGFydCwgJ14nLCBDQVJFVCk7XG4gIHR0KFN0YXJ0LCAnOicsIENPTE9OKTtcbiAgdHQoU3RhcnQsICcsJywgQ09NTUEpO1xuICB0dChTdGFydCwgJyQnLCBET0xMQVIpO1xuICB0dChTdGFydCwgJy4nLCBET1QpO1xuICB0dChTdGFydCwgJz0nLCBFUVVBTFMpO1xuICB0dChTdGFydCwgJyEnLCBFWENMQU1BVElPTik7XG4gIHR0KFN0YXJ0LCAnLScsIEhZUEhFTik7XG4gIHR0KFN0YXJ0LCAnJScsIFBFUkNFTlQpO1xuICB0dChTdGFydCwgJ3wnLCBQSVBFKTtcbiAgdHQoU3RhcnQsICcrJywgUExVUyk7XG4gIHR0KFN0YXJ0LCAnIycsIFBPVU5EKTtcbiAgdHQoU3RhcnQsICc/JywgUVVFUlkpO1xuICB0dChTdGFydCwgJ1wiJywgUVVPVEUpO1xuICB0dChTdGFydCwgJy8nLCBTTEFTSCk7XG4gIHR0KFN0YXJ0LCAnOycsIFNFTUkpO1xuICB0dChTdGFydCwgJ34nLCBUSUxERSk7XG4gIHR0KFN0YXJ0LCAnXycsIFVOREVSU0NPUkUpO1xuICB0dChTdGFydCwgJ1xcXFwnLCBCQUNLU0xBU0gpO1xuICB0dChTdGFydCwgJ+ODuycsIEZVTExXSURUSE1JRERMRURPVCk7XG4gIGNvbnN0IE51bSA9IHRyKFN0YXJ0LCBESUdJVCwgTlVNLCB7XG4gICAgW251bWVyaWNdOiB0cnVlXG4gIH0pO1xuICB0cihOdW0sIERJR0lULCBOdW0pO1xuICBjb25zdCBBc2NpaW51bWVyaWMgPSB0cihOdW0sIEFTQ0lJX0xFVFRFUiwgQVNDSUlOVU1FUklDQUwsIHtcbiAgICBbYXNjaWludW1lcmljXTogdHJ1ZVxuICB9KTtcbiAgY29uc3QgQWxwaGFudW1lcmljID0gdHIoTnVtLCBMRVRURVIsIEFMUEhBTlVNRVJJQ0FMLCB7XG4gICAgW2FscGhhbnVtZXJpY106IHRydWVcbiAgfSk7XG5cbiAgLy8gU3RhdGUgd2hpY2ggZW1pdHMgYSB3b3JkIHRva2VuXG4gIGNvbnN0IFdvcmQgPSB0cihTdGFydCwgQVNDSUlfTEVUVEVSLCBXT1JELCB7XG4gICAgW2FzY2lpXTogdHJ1ZVxuICB9KTtcbiAgdHIoV29yZCwgRElHSVQsIEFzY2lpbnVtZXJpYyk7XG4gIHRyKFdvcmQsIEFTQ0lJX0xFVFRFUiwgV29yZCk7XG4gIHRyKEFzY2lpbnVtZXJpYywgRElHSVQsIEFzY2lpbnVtZXJpYyk7XG4gIHRyKEFzY2lpbnVtZXJpYywgQVNDSUlfTEVUVEVSLCBBc2NpaW51bWVyaWMpO1xuXG4gIC8vIFNhbWUgYXMgcHJldmlvdXMsIGJ1dCBzcGVjaWZpYyB0byBub24tZnNtLmFzY2lpIGFscGhhYmV0IHdvcmRzXG4gIGNvbnN0IFVXb3JkID0gdHIoU3RhcnQsIExFVFRFUiwgVVdPUkQsIHtcbiAgICBbYWxwaGFdOiB0cnVlXG4gIH0pO1xuICB0cihVV29yZCwgQVNDSUlfTEVUVEVSKTsgLy8gTm9uLWFjY2VwdGluZ1xuICB0cihVV29yZCwgRElHSVQsIEFscGhhbnVtZXJpYyk7XG4gIHRyKFVXb3JkLCBMRVRURVIsIFVXb3JkKTtcbiAgdHIoQWxwaGFudW1lcmljLCBESUdJVCwgQWxwaGFudW1lcmljKTtcbiAgdHIoQWxwaGFudW1lcmljLCBBU0NJSV9MRVRURVIpOyAvLyBOb24tYWNjZXB0aW5nXG4gIHRyKEFscGhhbnVtZXJpYywgTEVUVEVSLCBBbHBoYW51bWVyaWMpOyAvLyBOb24tYWNjZXB0aW5nXG5cbiAgLy8gV2hpdGVzcGFjZSBqdW1wc1xuICAvLyBUb2tlbnMgb2Ygb25seSBub24tbmV3bGluZSB3aGl0ZXNwYWNlIGFyZSBhcmJpdHJhcmlseSBsb25nXG4gIC8vIElmIGFueSB3aGl0ZXNwYWNlIGV4Y2VwdCBuZXdsaW5lLCBtb3JlIHdoaXRlc3BhY2UhXG4gIGNvbnN0IE5sID0gdHQoU3RhcnQsIExGLCBOTCwge1xuICAgIFt3aGl0ZXNwYWNlXTogdHJ1ZVxuICB9KTtcbiAgY29uc3QgQ3IgPSB0dChTdGFydCwgQ1IsIFdTLCB7XG4gICAgW3doaXRlc3BhY2VdOiB0cnVlXG4gIH0pO1xuICBjb25zdCBXcyA9IHRyKFN0YXJ0LCBTUEFDRSwgV1MsIHtcbiAgICBbd2hpdGVzcGFjZV06IHRydWVcbiAgfSk7XG4gIHR0KFN0YXJ0LCBPQkpFQ1RfUkVQTEFDRU1FTlQsIFdzKTtcbiAgdHQoQ3IsIExGLCBObCk7IC8vIFxcclxcblxuICB0dChDciwgT0JKRUNUX1JFUExBQ0VNRU5ULCBXcyk7XG4gIHRyKENyLCBTUEFDRSwgV3MpO1xuICB0dChXcywgQ1IpOyAvLyBub24tYWNjZXB0aW5nIHN0YXRlIHRvIGF2b2lkIG1peGluZyB3aGl0ZXNwYWNlc1xuICB0dChXcywgTEYpOyAvLyBub24tYWNjZXB0aW5nIHN0YXRlIHRvIGF2b2lkIG1peGluZyB3aGl0ZXNwYWNlc1xuICB0cihXcywgU1BBQ0UsIFdzKTtcbiAgdHQoV3MsIE9CSkVDVF9SRVBMQUNFTUVOVCwgV3MpO1xuXG4gIC8vIEVtb2ppIHRva2Vucy4gVGhleSBhcmUgbm90IGdyb3VwZWQgYnkgdGhlIHNjYW5uZXIgZXhjZXB0IGluIGNhc2VzIHdoZXJlIGFcbiAgLy8gemVyby13aWR0aCBqb2luZXIgaXMgcHJlc2VudFxuICBjb25zdCBFbW9qaSA9IHRyKFN0YXJ0LCBFTU9KSSwgRU1PSkkkMSwge1xuICAgIFtlbW9qaV06IHRydWVcbiAgfSk7XG4gIHR0KEVtb2ppLCAnIycpOyAvLyBubyB0cmFuc2l0aW9uLCBlbW9qaSByZWdleCBzZWVtcyB0byBtYXRjaCAjXG4gIHRyKEVtb2ppLCBFTU9KSSwgRW1vamkpO1xuICB0dChFbW9qaSwgRU1PSklfVkFSSUFUSU9OLCBFbW9qaSk7XG4gIC8vIHR0KFN0YXJ0LCBFTU9KSV9WQVJJQVRJT04sIEVtb2ppKTsgLy8gVGhpcyBvbmUgaXMgc2tldGNoeVxuXG4gIGNvbnN0IEVtb2ppSm9pbmVyID0gdHQoRW1vamksIEVNT0pJX0pPSU5FUik7XG4gIHR0KEVtb2ppSm9pbmVyLCAnIycpO1xuICB0cihFbW9qaUpvaW5lciwgRU1PSkksIEVtb2ppKTtcbiAgLy8gdHQoRW1vamlKb2luZXIsIEVNT0pJX1ZBUklBVElPTiwgRW1vamkpOyAvLyBhbHNvIHNrZXRjaHlcblxuICAvLyBHZW5lcmF0ZXMgc3RhdGVzIGZvciB0b3AtbGV2ZWwgZG9tYWluc1xuICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBtb3N0IGFjY3VyYXRlIHdoZW4gdGxkcyBhcmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyXG4gIGNvbnN0IHdvcmRqciA9IFtbQVNDSUlfTEVUVEVSLCBXb3JkXSwgW0RJR0lULCBBc2NpaW51bWVyaWNdXTtcbiAgY29uc3QgdXdvcmRqciA9IFtbQVNDSUlfTEVUVEVSLCBudWxsXSwgW0xFVFRFUiwgVVdvcmRdLCBbRElHSVQsIEFscGhhbnVtZXJpY11dO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRsZHMubGVuZ3RoOyBpKyspIHtcbiAgICBmYXN0dHMoU3RhcnQsIHRsZHNbaV0sIFRMRCwgV09SRCwgd29yZGpyKTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHV0bGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZmFzdHRzKFN0YXJ0LCB1dGxkc1tpXSwgVVRMRCwgVVdPUkQsIHV3b3JkanIpO1xuICB9XG4gIGFkZFRvR3JvdXBzKFRMRCwge1xuICAgIHRsZDogdHJ1ZSxcbiAgICBhc2NpaTogdHJ1ZVxuICB9LCBncm91cHMpO1xuICBhZGRUb0dyb3VwcyhVVExELCB7XG4gICAgdXRsZDogdHJ1ZSxcbiAgICBhbHBoYTogdHJ1ZVxuICB9LCBncm91cHMpO1xuXG4gIC8vIENvbGxlY3QgdGhlIHN0YXRlcyBnZW5lcmF0ZWQgYnkgZGlmZmVyZW50IHByb3RvY29scy4gTk9URTogSWYgYW55IG5ldyBUTERzXG4gIC8vIGdldCBhZGRlZCB0aGF0IGFyZSBhbHNvIHByb3RvY29scywgc2V0IHRoZSB0b2tlbiB0byBiZSB0aGUgc2FtZSBhcyB0aGVcbiAgLy8gcHJvdG9jb2wgdG8gZW5zdXJlIHBhcnNpbmcgd29ya3MgYXMgZXhwZWN0ZWQuXG4gIGZhc3R0cyhTdGFydCwgJ2ZpbGUnLCBTQ0hFTUUsIFdPUkQsIHdvcmRqcik7XG4gIGZhc3R0cyhTdGFydCwgJ21haWx0bycsIFNDSEVNRSwgV09SRCwgd29yZGpyKTtcbiAgZmFzdHRzKFN0YXJ0LCAnaHR0cCcsIFNMQVNIX1NDSEVNRSwgV09SRCwgd29yZGpyKTtcbiAgZmFzdHRzKFN0YXJ0LCAnaHR0cHMnLCBTTEFTSF9TQ0hFTUUsIFdPUkQsIHdvcmRqcik7XG4gIGZhc3R0cyhTdGFydCwgJ2Z0cCcsIFNMQVNIX1NDSEVNRSwgV09SRCwgd29yZGpyKTtcbiAgZmFzdHRzKFN0YXJ0LCAnZnRwcycsIFNMQVNIX1NDSEVNRSwgV09SRCwgd29yZGpyKTtcbiAgYWRkVG9Hcm91cHMoU0NIRU1FLCB7XG4gICAgc2NoZW1lOiB0cnVlLFxuICAgIGFzY2lpOiB0cnVlXG4gIH0sIGdyb3Vwcyk7XG4gIGFkZFRvR3JvdXBzKFNMQVNIX1NDSEVNRSwge1xuICAgIHNsYXNoc2NoZW1lOiB0cnVlLFxuICAgIGFzY2lpOiB0cnVlXG4gIH0sIGdyb3Vwcyk7XG5cbiAgLy8gUmVnaXN0ZXIgY3VzdG9tIHNjaGVtZXMuIEFzc3VtZXMgZWFjaCBzY2hlbWUgaXMgYXNjaWludW1lcmljIHdpdGggaHlwaGVuc1xuICBjdXN0b21TY2hlbWVzID0gY3VzdG9tU2NoZW1lcy5zb3J0KChhLCBiKSA9PiBhWzBdID4gYlswXSA/IDEgOiAtMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY3VzdG9tU2NoZW1lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHNjaCA9IGN1c3RvbVNjaGVtZXNbaV1bMF07XG4gICAgY29uc3Qgb3B0aW9uYWxTbGFzaFNsYXNoID0gY3VzdG9tU2NoZW1lc1tpXVsxXTtcbiAgICBjb25zdCBmbGFncyA9IG9wdGlvbmFsU2xhc2hTbGFzaCA/IHtcbiAgICAgIFtzY2hlbWVdOiB0cnVlXG4gICAgfSA6IHtcbiAgICAgIFtzbGFzaHNjaGVtZV06IHRydWVcbiAgICB9O1xuICAgIGlmIChzY2guaW5kZXhPZignLScpID49IDApIHtcbiAgICAgIGZsYWdzW2RvbWFpbl0gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIUFTQ0lJX0xFVFRFUi50ZXN0KHNjaCkpIHtcbiAgICAgIGZsYWdzW251bWVyaWNdID0gdHJ1ZTsgLy8gbnVtYmVycyBvbmx5XG4gICAgfSBlbHNlIGlmIChESUdJVC50ZXN0KHNjaCkpIHtcbiAgICAgIGZsYWdzW2FzY2lpbnVtZXJpY10gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGFnc1thc2NpaV0gPSB0cnVlO1xuICAgIH1cbiAgICB0cyhTdGFydCwgc2NoLCBzY2gsIGZsYWdzKTtcbiAgfVxuXG4gIC8vIExvY2FsaG9zdCB0b2tlblxuICB0cyhTdGFydCwgJ2xvY2FsaG9zdCcsIExPQ0FMSE9TVCwge1xuICAgIGFzY2lpOiB0cnVlXG4gIH0pO1xuXG4gIC8vIFNldCBkZWZhdWx0IHRyYW5zaXRpb24gZm9yIHN0YXJ0IHN0YXRlIChzb21lIHN5bWJvbClcbiAgU3RhcnQuamQgPSBuZXcgU3RhdGUoU1lNKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDogU3RhcnQsXG4gICAgdG9rZW5zOiBPYmplY3QuYXNzaWduKHtcbiAgICAgIGdyb3Vwc1xuICAgIH0sIHRrKVxuICB9O1xufVxuXG4vKipcblx0R2l2ZW4gYSBzdHJpbmcsIHJldHVybnMgYW4gYXJyYXkgb2YgVE9LRU4gaW5zdGFuY2VzIHJlcHJlc2VudGluZyB0aGVcblx0Y29tcG9zaXRpb24gb2YgdGhhdCBzdHJpbmcuXG5cblx0QG1ldGhvZCBydW5cblx0QHBhcmFtIHtTdGF0ZTxzdHJpbmc+fSBzdGFydCBzY2FubmVyIHN0YXJ0aW5nIHN0YXRlXG5cdEBwYXJhbSB7c3RyaW5nfSBzdHIgaW5wdXQgc3RyaW5nIHRvIHNjYW5cblx0QHJldHVybiB7VG9rZW5bXX0gbGlzdCBvZiB0b2tlbnMsIGVhY2ggd2l0aCBhIHR5cGUgYW5kIHZhbHVlXG4qL1xuZnVuY3Rpb24gcnVuJDEoc3RhcnQsIHN0cikge1xuICAvLyBTdGF0ZSBtYWNoaW5lIGlzIG5vdCBjYXNlIHNlbnNpdGl2ZSwgc28gaW5wdXQgaXMgdG9rZW5pemVkIGluIGxvd2VyY2FzZWRcbiAgLy8gZm9ybSAoc3RpbGwgcmV0dXJucyByZWd1bGFyIGNhc2UpLiBVc2VzIHNlbGVjdGl2ZSBgdG9Mb3dlckNhc2VgIGJlY2F1c2VcbiAgLy8gbG93ZXJjYXNpbmcgdGhlIGVudGlyZSBzdHJpbmcgY2F1c2VzIHRoZSBsZW5ndGggYW5kIGNoYXJhY3RlciBwb3NpdGlvbiB0b1xuICAvLyB2YXJ5IGluIHNvbWUgbm9uLUVuZ2xpc2ggc3RyaW5ncyB3aXRoIFY4LWJhc2VkIHJ1bnRpbWVzLlxuICBjb25zdCBpdGVyYWJsZSA9IHN0cmluZ1RvQXJyYXkoc3RyLnJlcGxhY2UoL1tBLVpdL2csIGMgPT4gYy50b0xvd2VyQ2FzZSgpKSk7XG4gIGNvbnN0IGNoYXJDb3VudCA9IGl0ZXJhYmxlLmxlbmd0aDsgLy8gPD0gbGVuIGlmIHRoZXJlIGFyZSBlbW9qaXMsIGV0Y1xuICBjb25zdCB0b2tlbnMgPSBbXTsgLy8gcmV0dXJuIHZhbHVlXG5cbiAgLy8gY3Vyc29yIHRocm91Z2ggdGhlIHN0cmluZyBpdHNlbGYsIGFjY291bnRpbmcgZm9yIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gIC8vIHdpZHRoIHdpdGggbGVuZ3RoIDIgc3VjaCBhcyBlbW9qaXNcbiAgbGV0IGN1cnNvciA9IDA7XG5cbiAgLy8gQ3Vyc29yIHRocm91Z2ggdGhlIGFycmF5LXJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJpbmdcbiAgbGV0IGNoYXJDdXJzb3IgPSAwO1xuXG4gIC8vIFRva2VuaXplIHRoZSBzdHJpbmdcbiAgd2hpbGUgKGNoYXJDdXJzb3IgPCBjaGFyQ291bnQpIHtcbiAgICBsZXQgc3RhdGUgPSBzdGFydDtcbiAgICBsZXQgbmV4dFN0YXRlID0gbnVsbDtcbiAgICBsZXQgdG9rZW5MZW5ndGggPSAwO1xuICAgIGxldCBsYXRlc3RBY2NlcHRpbmcgPSBudWxsO1xuICAgIGxldCBzaW5jZUFjY2VwdHMgPSAtMTtcbiAgICBsZXQgY2hhcnNTaW5jZUFjY2VwdHMgPSAtMTtcbiAgICB3aGlsZSAoY2hhckN1cnNvciA8IGNoYXJDb3VudCAmJiAobmV4dFN0YXRlID0gc3RhdGUuZ28oaXRlcmFibGVbY2hhckN1cnNvcl0pKSkge1xuICAgICAgc3RhdGUgPSBuZXh0U3RhdGU7XG5cbiAgICAgIC8vIEtlZXAgdHJhY2sgb2YgdGhlIGxhdGVzdCBhY2NlcHRpbmcgc3RhdGVcbiAgICAgIGlmIChzdGF0ZS5hY2NlcHRzKCkpIHtcbiAgICAgICAgc2luY2VBY2NlcHRzID0gMDtcbiAgICAgICAgY2hhcnNTaW5jZUFjY2VwdHMgPSAwO1xuICAgICAgICBsYXRlc3RBY2NlcHRpbmcgPSBzdGF0ZTtcbiAgICAgIH0gZWxzZSBpZiAoc2luY2VBY2NlcHRzID49IDApIHtcbiAgICAgICAgc2luY2VBY2NlcHRzICs9IGl0ZXJhYmxlW2NoYXJDdXJzb3JdLmxlbmd0aDtcbiAgICAgICAgY2hhcnNTaW5jZUFjY2VwdHMrKztcbiAgICAgIH1cbiAgICAgIHRva2VuTGVuZ3RoICs9IGl0ZXJhYmxlW2NoYXJDdXJzb3JdLmxlbmd0aDtcbiAgICAgIGN1cnNvciArPSBpdGVyYWJsZVtjaGFyQ3Vyc29yXS5sZW5ndGg7XG4gICAgICBjaGFyQ3Vyc29yKys7XG4gICAgfVxuXG4gICAgLy8gUm9sbCBiYWNrIHRvIHRoZSBsYXRlc3QgYWNjZXB0aW5nIHN0YXRlXG4gICAgY3Vyc29yIC09IHNpbmNlQWNjZXB0cztcbiAgICBjaGFyQ3Vyc29yIC09IGNoYXJzU2luY2VBY2NlcHRzO1xuICAgIHRva2VuTGVuZ3RoIC09IHNpbmNlQWNjZXB0cztcblxuICAgIC8vIE5vIG1vcmUganVtcHMsIGp1c3QgbWFrZSBhIG5ldyB0b2tlbiBmcm9tIHRoZSBsYXN0IGFjY2VwdGluZyBvbmVcbiAgICB0b2tlbnMucHVzaCh7XG4gICAgICB0OiBsYXRlc3RBY2NlcHRpbmcudCxcbiAgICAgIC8vIHRva2VuIHR5cGUvbmFtZVxuICAgICAgdjogc3RyLnNsaWNlKGN1cnNvciAtIHRva2VuTGVuZ3RoLCBjdXJzb3IpLFxuICAgICAgLy8gc3RyaW5nIHZhbHVlXG4gICAgICBzOiBjdXJzb3IgLSB0b2tlbkxlbmd0aCxcbiAgICAgIC8vIHN0YXJ0IGluZGV4XG4gICAgICBlOiBjdXJzb3IgLy8gZW5kIGluZGV4IChleGNsdWRpbmcpXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgU3RyaW5nIHRvIGFuIEFycmF5IG9mIGNoYXJhY3RlcnMsIHRha2luZyBpbnRvIGFjY291bnQgdGhhdCBzb21lXG4gKiBjaGFyYWN0ZXJzIGxpa2UgZW1vamlzIHRha2UgdXAgdHdvIHN0cmluZyBpbmRleGVzLlxuICpcbiAqIEFkYXB0ZWQgZnJvbSBjb3JlLWpzIChNSVQgbGljZW5zZSlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvMmQ2OWNmNWY5OWFiM2VhMzQ2M2MzOTVkZjgxZTVhMTViNjhmNDlkOS9wYWNrYWdlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlLmpzXG4gKlxuICogQGZ1bmN0aW9uIHN0cmluZ1RvQXJyYXlcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX1cbiAqL1xuZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHIpIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGNvbnN0IGxlbiA9IHN0ci5sZW5ndGg7XG4gIGxldCBpbmRleCA9IDA7XG4gIHdoaWxlIChpbmRleCA8IGxlbikge1xuICAgIGxldCBmaXJzdCA9IHN0ci5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICBsZXQgc2Vjb25kO1xuICAgIGxldCBjaGFyID0gZmlyc3QgPCAweGQ4MDAgfHwgZmlyc3QgPiAweGRiZmYgfHwgaW5kZXggKyAxID09PSBsZW4gfHwgKHNlY29uZCA9IHN0ci5jaGFyQ29kZUF0KGluZGV4ICsgMSkpIDwgMHhkYzAwIHx8IHNlY29uZCA+IDB4ZGZmZiA/IHN0cltpbmRleF0gLy8gc2luZ2xlIGNoYXJhY3RlclxuICAgIDogc3RyLnNsaWNlKGluZGV4LCBpbmRleCArIDIpOyAvLyB0d28taW5kZXggY2hhcmFjdGVyc1xuICAgIHJlc3VsdC5wdXNoKGNoYXIpO1xuICAgIGluZGV4ICs9IGNoYXIubGVuZ3RoO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRmFzdCB2ZXJzaW9uIG9mIHRzIGZ1bmN0aW9uIGZvciB3aGVuIHRyYW5zaXRpb24gZGVmYXVsdHMgYXJlIHdlbGwga25vd25cbiAqIEBwYXJhbSB7U3RhdGU8c3RyaW5nPn0gc3RhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dFxuICogQHBhcmFtIHtzdHJpbmd9IHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWZhdWx0dFxuICogQHBhcmFtIHtbUmVnRXhwLCBTdGF0ZTxzdHJpbmc+XVtdfSBqclxuICogQHJldHVybnMge1N0YXRlPHN0cmluZz59XG4gKi9cbmZ1bmN0aW9uIGZhc3R0cyhzdGF0ZSwgaW5wdXQsIHQsIGRlZmF1bHR0LCBqcikge1xuICBsZXQgbmV4dDtcbiAgY29uc3QgbGVuID0gaW5wdXQubGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbiAtIDE7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBpbnB1dFtpXTtcbiAgICBpZiAoc3RhdGUualtjaGFyXSkge1xuICAgICAgbmV4dCA9IHN0YXRlLmpbY2hhcl07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQgPSBuZXcgU3RhdGUoZGVmYXVsdHQpO1xuICAgICAgbmV4dC5qciA9IGpyLnNsaWNlKCk7XG4gICAgICBzdGF0ZS5qW2NoYXJdID0gbmV4dDtcbiAgICB9XG4gICAgc3RhdGUgPSBuZXh0O1xuICB9XG4gIG5leHQgPSBuZXcgU3RhdGUodCk7XG4gIG5leHQuanIgPSBqci5zbGljZSgpO1xuICBzdGF0ZS5qW2lucHV0W2xlbiAtIDFdXSA9IG5leHQ7XG4gIHJldHVybiBuZXh0O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFRvcC1MZXZlbCBEb21haW4gbmFtZXMgZW5jb2RlZCBpbiB1cGRhdGUtdGxkcy5qcyBiYWNrXG4gKiBpbnRvIGEgbGlzdCBvZiBzdHJpbmdzLlxuICogQHBhcmFtIHtzdHJ9IGVuY29kZWQgZW5jb2RlZCBUTERzIHN0cmluZ1xuICogQHJldHVybnMge3N0cltdfSBvcmlnaW5hbCBUTERzIGxpc3RcbiAqL1xuZnVuY3Rpb24gZGVjb2RlVGxkcyhlbmNvZGVkKSB7XG4gIGNvbnN0IHdvcmRzID0gW107XG4gIGNvbnN0IHN0YWNrID0gW107XG4gIGxldCBpID0gMDtcbiAgbGV0IGRpZ2l0cyA9ICcwMTIzNDU2Nzg5JztcbiAgd2hpbGUgKGkgPCBlbmNvZGVkLmxlbmd0aCkge1xuICAgIGxldCBwb3BEaWdpdENvdW50ID0gMDtcbiAgICB3aGlsZSAoZGlnaXRzLmluZGV4T2YoZW5jb2RlZFtpICsgcG9wRGlnaXRDb3VudF0pID49IDApIHtcbiAgICAgIHBvcERpZ2l0Q291bnQrKzsgLy8gZW5jb3VudGVyZWQgc29tZSBkaWdpdHMsIGhhdmUgdG8gcG9wIHRvIGdvIG9uZSBsZXZlbCB1cCB0cmllXG4gICAgfVxuICAgIGlmIChwb3BEaWdpdENvdW50ID4gMCkge1xuICAgICAgd29yZHMucHVzaChzdGFjay5qb2luKCcnKSk7IC8vIHdoYXRldmVyIHByZWNlZGVkIHRoZSBwb3AgZGlnaXRzIG11c3QgYmUgYSB3b3JkXG4gICAgICBmb3IgKGxldCBwb3BDb3VudCA9IHBhcnNlSW50KGVuY29kZWQuc3Vic3RyaW5nKGksIGkgKyBwb3BEaWdpdENvdW50KSwgMTApOyBwb3BDb3VudCA+IDA7IHBvcENvdW50LS0pIHtcbiAgICAgICAgc3RhY2sucG9wKCk7XG4gICAgICB9XG4gICAgICBpICs9IHBvcERpZ2l0Q291bnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YWNrLnB1c2goZW5jb2RlZFtpXSk7IC8vIGRyb3AgZG93biBhIGxldmVsIGludG8gdGhlIHRyaWVcbiAgICAgIGkrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHdvcmRzO1xufVxuXG4vKipcbiAqIEFuIG9iamVjdCB3aGVyZSBlYWNoIGtleSBpcyBhIHZhbGlkIERPTSBFdmVudCBOYW1lIHN1Y2ggYXMgYGNsaWNrYCBvciBgZm9jdXNgXG4gKiBhbmQgZWFjaCB2YWx1ZSBpcyBhbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uLlxuICpcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FbGVtZW50I2V2ZW50c1xuICogQHR5cGVkZWYgez97IFtldmVudDogc3RyaW5nXTogRnVuY3Rpb24gfX0gRXZlbnRMaXN0ZW5lcnNcbiAqL1xuXG4vKipcbiAqIEFsbCBmb3JtYXR0ZWQgcHJvcGVydGllcyByZXF1aXJlZCB0byByZW5kZXIgYSBsaW5rLCBpbmNsdWRpbmcgYHRhZ05hbWVgLFxuICogYGF0dHJpYnV0ZXNgLCBgY29udGVudGAgYW5kIGBldmVudExpc3RlbmVyc2AuXG4gKiBAdHlwZWRlZiB7eyB0YWdOYW1lOiBhbnksIGF0dHJpYnV0ZXM6IHtbYXR0cjogc3RyaW5nXTogYW55fSwgY29udGVudDogc3RyaW5nLFxuICogZXZlbnRMaXN0ZW5lcnM6IEV2ZW50TGlzdGVuZXJzIH19IEludGVybWVkaWF0ZVJlcHJlc2VudGF0aW9uXG4gKi9cblxuLyoqXG4gKiBTcGVjaWZ5IGVpdGhlciBhbiBvYmplY3QgZGVzY3JpYmVkIGJ5IHRoZSB0ZW1wbGF0ZSB0eXBlIGBPYCBvciBhIGZ1bmN0aW9uLlxuICpcbiAqIFRoZSBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyB2YWx1ZSAodXN1YWxseSB0aGUgbGluaydzIGhyZWYgYXR0cmlidXRlKSwgdGhlXG4gKiBsaW5rIHR5cGUgKGAndXJsJ2AsIGAnaGFzaHRhZ2AnLCBldGMuKSBhbmQgYW4gaW50ZXJuYWwgdG9rZW4gcmVwcmVzZW50YXRpb25cbiAqIG9mIHRoZSBsaW5rLiBJdCBzaG91bGQgcmV0dXJuIGFuIG9iamVjdCBvZiB0aGUgdGVtcGxhdGUgdHlwZSBgT2BcbiAqIEB0ZW1wbGF0ZSBPXG4gKiBAdHlwZWRlZiB7TyB8ICgodmFsdWU6IHN0cmluZywgdHlwZTogc3RyaW5nLCB0b2tlbjogTXVsdGlUb2tlbikgPT4gTyl9IE9wdE9ialxuICovXG5cbi8qKlxuICogU3BlY2lmeSBlaXRoZXIgYSBmdW5jdGlvbiBkZXNjcmliZWQgYnkgdGVtcGxhdGUgdHlwZSBgRmAgb3IgYW4gb2JqZWN0LlxuICpcbiAqIEVhY2gga2V5IGluIHRoZSBvYmplY3Qgc2hvdWxkIGJlIGEgbGluayB0eXBlIChgJ3VybCdgLCBgJ2hhc2h0YWdgJywgZXRjLikuIEVhY2hcbiAqIHZhbHVlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGggdGVtcGxhdGUgdHlwZSBgRmAgdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGVcbiAqIGNvcnJlc3BvbmRpbmcgbGluayB0eXBlIGlzIGVuY291bnRlcmVkLlxuICogQHRlbXBsYXRlIEZcbiAqIEB0eXBlZGVmIHtGIHwgeyBbdHlwZTogc3RyaW5nXTogRn19IE9wdEZuXG4gKi9cblxuLyoqXG4gKiBTcGVjaWZ5IGVpdGhlciBhIHZhbHVlIHdpdGggdGVtcGxhdGUgdHlwZSBgVmAsIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGBWYCBvclxuICogYW4gb2JqZWN0IHdoZXJlIGVhY2ggdmFsdWUgcmVzb2x2ZXMgdG8gYFZgLlxuICpcbiAqIFRoZSBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyB2YWx1ZSAodXN1YWxseSB0aGUgbGluaydzIGhyZWYgYXR0cmlidXRlKSwgdGhlXG4gKiBsaW5rIHR5cGUgKGAndXJsJ2AsIGAnaGFzaHRhZ2AnLCBldGMuKSBhbmQgYW4gaW50ZXJuYWwgdG9rZW4gcmVwcmVzZW50YXRpb25cbiAqIG9mIHRoZSBsaW5rLiBJdCBzaG91bGQgcmV0dXJuIGFuIG9iamVjdCBvZiB0aGUgdGVtcGxhdGUgdHlwZSBgVmBcbiAqXG4gKiBGb3IgdGhlIG9iamVjdCwgZWFjaCBrZXkgc2hvdWxkIGJlIGEgbGluayB0eXBlIChgJ3VybCdgLCBgJ2hhc2h0YWdgJywgZXRjLikuXG4gKiBFYWNoIHZhbHVlIHNob3VsZCBlaXRoZXIgaGF2ZSB0eXBlIGBWYCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBWLiBUaGlzXG4gKiBmdW5jdGlvbiBzaW1pbGFybHkgdGFrZXMgYSBzdHJpbmcgdmFsdWUgYW5kIGEgdG9rZW4uXG4gKlxuICogRXhhbXBsZSB2YWxpZCB0eXBlcyBmb3IgYE9wdDxzdHJpbmc+YDpcbiAqXG4gKiBgYGBqc1xuICogJ2hlbGxvJ1xuICogKHZhbHVlLCB0eXBlLCB0b2tlbikgPT4gJ3dvcmxkJ1xuICogeyB1cmw6ICdoZWxsbycsIGVtYWlsOiAodmFsdWUsIHRva2VuKSA9PiAnd29ybGQnfVxuICogYGBgXG4gKiBAdGVtcGxhdGUgVlxuICogQHR5cGVkZWYge1YgfCAoKHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgdG9rZW46IE11bHRpVG9rZW4pID0+IFYpIHwgeyBbdHlwZTogc3RyaW5nXTogViB8ICgodmFsdWU6IHN0cmluZywgdG9rZW46IE11bHRpVG9rZW4pID0+IFYpIH19IE9wdFxuICovXG5cbi8qKlxuICogU2VlIGF2YWlsYWJsZSBvcHRpb25zOiBodHRwczovL2xpbmtpZnkuanMub3JnL2RvY3Mvb3B0aW9ucy5odG1sXG4gKiBAdHlwZWRlZiB7e1xuICogXHRkZWZhdWx0UHJvdG9jb2w/OiBzdHJpbmcsXG4gKiAgZXZlbnRzPzogT3B0T2JqPEV2ZW50TGlzdGVuZXJzPixcbiAqIFx0Zm9ybWF0PzogT3B0PHN0cmluZz4sXG4gKiBcdGZvcm1hdEhyZWY/OiBPcHQ8c3RyaW5nPixcbiAqIFx0bmwyYnI/OiBib29sZWFuLFxuICogXHR0YWdOYW1lPzogT3B0PGFueT4sXG4gKiBcdHRhcmdldD86IE9wdDxzdHJpbmc+LFxuICogXHRyZWw/OiBPcHQ8c3RyaW5nPixcbiAqIFx0dmFsaWRhdGU/OiBPcHQ8Ym9vbGVhbj4sXG4gKiBcdHRydW5jYXRlPzogT3B0PG51bWJlcj4sXG4gKiBcdGNsYXNzTmFtZT86IE9wdDxzdHJpbmc+LFxuICogXHRhdHRyaWJ1dGVzPzogT3B0T2JqPCh7IFthdHRyOiBzdHJpbmddOiBhbnkgfSk+LFxuICogIGlnbm9yZVRhZ3M/OiBzdHJpbmdbXSxcbiAqIFx0cmVuZGVyPzogT3B0Rm48KChpcjogSW50ZXJtZWRpYXRlUmVwcmVzZW50YXRpb24pID0+IGFueSk+XG4gKiB9fSBPcHRzXG4gKi9cblxuLyoqXG4gKiBAdHlwZSBSZXF1aXJlZDxPcHRzPlxuICovXG5jb25zdCBkZWZhdWx0cyA9IHtcbiAgZGVmYXVsdFByb3RvY29sOiAnaHR0cCcsXG4gIGV2ZW50czogbnVsbCxcbiAgZm9ybWF0OiBub29wLFxuICBmb3JtYXRIcmVmOiBub29wLFxuICBubDJicjogZmFsc2UsXG4gIHRhZ05hbWU6ICdhJyxcbiAgdGFyZ2V0OiBudWxsLFxuICByZWw6IG51bGwsXG4gIHZhbGlkYXRlOiB0cnVlLFxuICB0cnVuY2F0ZTogSW5maW5pdHksXG4gIGNsYXNzTmFtZTogbnVsbCxcbiAgYXR0cmlidXRlczogbnVsbCxcbiAgaWdub3JlVGFnczogW10sXG4gIHJlbmRlcjogbnVsbFxufTtcblxuLyoqXG4gKiBVdGlsaXR5IGNsYXNzIGZvciBsaW5raWZ5IGludGVyZmFjZXMgdG8gYXBwbHkgc3BlY2lmaWVkXG4gKiB7QGxpbmsgT3B0cyBmb3JtYXR0aW5nIGFuZCByZW5kZXJpbmcgb3B0aW9uc30uXG4gKlxuICogQHBhcmFtIHtPcHRzIHwgT3B0aW9uc30gW29wdHNdIE9wdGlvbiB2YWx1ZSBvdmVycmlkZXMuXG4gKiBAcGFyYW0geyhpcjogSW50ZXJtZWRpYXRlUmVwcmVzZW50YXRpb24pID0+IGFueX0gW2RlZmF1bHRSZW5kZXJdIChGb3JcbiAqICAgaW50ZXJuYWwgdXNlKSBkZWZhdWx0IHJlbmRlciBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgaG93IHRvIGdlbmVyYXRlIGFuXG4gKiAgIEhUTUwgZWxlbWVudCBiYXNlZCBvbiBhIGxpbmsgdG9rZW4ncyBkZXJpdmVkIHRhZ05hbWUsIGF0dHJpYnV0ZXMgYW5kIEhUTUwuXG4gKiAgIFNpbWlsYXIgdG8gcmVuZGVyIG9wdGlvblxuICovXG5mdW5jdGlvbiBPcHRpb25zKG9wdHMsIGRlZmF1bHRSZW5kZXIgPSBudWxsKSB7XG4gIGxldCBvID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMpO1xuICBpZiAob3B0cykge1xuICAgIG8gPSBPYmplY3QuYXNzaWduKG8sIG9wdHMgaW5zdGFuY2VvZiBPcHRpb25zID8gb3B0cy5vIDogb3B0cyk7XG4gIH1cblxuICAvLyBFbnN1cmUgYWxsIGlnbm9yZWQgdGFncyBhcmUgdXBwZXJjYXNlXG4gIGNvbnN0IGlnbm9yZWRUYWdzID0gby5pZ25vcmVUYWdzO1xuICBjb25zdCB1cHBlcmNhc2VJZ25vcmVkVGFncyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGlnbm9yZWRUYWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgdXBwZXJjYXNlSWdub3JlZFRhZ3MucHVzaChpZ25vcmVkVGFnc1tpXS50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuICAvKiogQHByb3RlY3RlZCAqL1xuICB0aGlzLm8gPSBvO1xuICBpZiAoZGVmYXVsdFJlbmRlcikge1xuICAgIHRoaXMuZGVmYXVsdFJlbmRlciA9IGRlZmF1bHRSZW5kZXI7XG4gIH1cbiAgdGhpcy5pZ25vcmVUYWdzID0gdXBwZXJjYXNlSWdub3JlZFRhZ3M7XG59XG5PcHRpb25zLnByb3RvdHlwZSA9IHtcbiAgbzogZGVmYXVsdHMsXG4gIC8qKlxuICAgKiBAdHlwZSBzdHJpbmdbXVxuICAgKi9cbiAgaWdub3JlVGFnczogW10sXG4gIC8qKlxuICAgKiBAcGFyYW0ge0ludGVybWVkaWF0ZVJlcHJlc2VudGF0aW9ufSBpclxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgZGVmYXVsdFJlbmRlcihpcikge1xuICAgIHJldHVybiBpcjtcbiAgfSxcbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiB3aGV0aGVyIGEgdG9rZW4gc2hvdWxkIGJlIGRpc3BsYXllZCBhcyBhXG4gICAqIGxpbmsgYmFzZWQgb24gdGhlIHVzZXIgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtNdWx0aVRva2VufSB0b2tlblxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGNoZWNrKHRva2VuKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCd2YWxpZGF0ZScsIHRva2VuLnRvU3RyaW5nKCksIHRva2VuKTtcbiAgfSxcbiAgLy8gUHJpdmF0ZSBtZXRob2RzXG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYW4gb3B0aW9uJ3MgdmFsdWUgYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZSBvcHRpb24gYW5kIHRoZSBnaXZlblxuICAgKiBwYXJhbXMuIElmIG9wZXJhdG9yIGFuZCB0b2tlbiBhcmUgc3BlY2lmaWVkIGFuZCB0aGUgdGFyZ2V0IG9wdGlvbiBpc1xuICAgKiBjYWxsYWJsZSwgYXV0b21hdGljYWxseSBjYWxscyB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnQuXG4gICAqIEB0ZW1wbGF0ZSB7a2V5b2YgT3B0c30gS1xuICAgKiBAcGFyYW0ge0t9IGtleSBOYW1lIG9mIG9wdGlvbiB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcGVyYXRvcl0gd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHRhcmdldCBvcHRpb24gaWYgaXQncyBhXG4gICAqIGZ1bmN0aW9uLiBJZiBub3Qgc3BlY2lmaWVkLCBSQVcgZnVuY3Rpb24gdmFsdWUgZ2V0cyByZXR1cm5lZFxuICAgKiBAcGFyYW0ge011bHRpVG9rZW59IFt0b2tlbl0gVGhlIHRva2VuIGZyb20gbGlua2lmeS50b2tlbml6ZVxuICAgKiBAcmV0dXJucyB7T3B0c1tLXSB8IGFueX1cbiAgICovXG4gIGdldChrZXksIG9wZXJhdG9yLCB0b2tlbikge1xuICAgIGNvbnN0IGlzQ2FsbGFibGUgPSBvcGVyYXRvciAhPSBudWxsO1xuICAgIGxldCBvcHRpb24gPSB0aGlzLm9ba2V5XTtcbiAgICBpZiAoIW9wdGlvbikge1xuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb24gPSB0b2tlbi50IGluIG9wdGlvbiA/IG9wdGlvblt0b2tlbi50XSA6IGRlZmF1bHRzW2tleV07XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0NhbGxhYmxlKSB7XG4gICAgICAgIG9wdGlvbiA9IG9wdGlvbihvcGVyYXRvciwgdG9rZW4pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0NhbGxhYmxlKSB7XG4gICAgICBvcHRpb24gPSBvcHRpb24ob3BlcmF0b3IsIHRva2VuLnQsIHRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfSxcbiAgLyoqXG4gICAqIEB0ZW1wbGF0ZSB7a2V5b2YgT3B0c30gTFxuICAgKiBAcGFyYW0ge0x9IGtleSBOYW1lIG9mIG9wdGlvbnMgb2JqZWN0IHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wZXJhdG9yXVxuICAgKiBAcGFyYW0ge011bHRpVG9rZW59IFt0b2tlbl1cbiAgICogQHJldHVybnMge09wdHNbTF0gfCBhbnl9XG4gICAqL1xuICBnZXRPYmooa2V5LCBvcGVyYXRvciwgdG9rZW4pIHtcbiAgICBsZXQgb2JqID0gdGhpcy5vW2tleV07XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicgJiYgb3BlcmF0b3IgIT0gbnVsbCkge1xuICAgICAgb2JqID0gb2JqKG9wZXJhdG9yLCB0b2tlbi50LCB0b2tlbik7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoZSBnaXZlbiB0b2tlbiB0byBhIHJlbmRlcmVkIGVsZW1lbnQgdGhhdCBtYXkgYmUgYWRkZWQgdG8gdGhlXG4gICAqIGNhbGxpbmctaW50ZXJmYWNlJ3MgRE9NXG4gICAqIEBwYXJhbSB7TXVsdGlUb2tlbn0gdG9rZW4gVG9rZW4gdG8gcmVuZGVyIHRvIGFuIEhUTUwgZWxlbWVudFxuICAgKiBAcmV0dXJucyB7YW55fSBSZW5kZXIgcmVzdWx0OyBlLmcuLCBIVE1MIHN0cmluZywgRE9NIGVsZW1lbnQsIFJlYWN0XG4gICAqICAgQ29tcG9uZW50LCBldGMuXG4gICAqL1xuICByZW5kZXIodG9rZW4pIHtcbiAgICBjb25zdCBpciA9IHRva2VuLnJlbmRlcih0aGlzKTsgLy8gaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uXG4gICAgY29uc3QgcmVuZGVyRm4gPSB0aGlzLmdldCgncmVuZGVyJywgbnVsbCwgdG9rZW4pIHx8IHRoaXMuZGVmYXVsdFJlbmRlcjtcbiAgICByZXR1cm4gcmVuZGVyRm4oaXIsIHRva2VuLnQsIHRva2VuKTtcbiAgfVxufTtcbmZ1bmN0aW9uIG5vb3AodmFsKSB7XG4gIHJldHVybiB2YWw7XG59XG5cbnZhciBvcHRpb25zID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuXHRfX3Byb3RvX186IG51bGwsXG5cdE9wdGlvbnM6IE9wdGlvbnMsXG5cdGRlZmF1bHRzOiBkZWZhdWx0c1xufSk7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0TXVsdGktVG9rZW5zXG5cdFRva2VucyBjb21wb3NlZCBvZiBhcnJheXMgb2YgVGV4dFRva2Vuc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtUb2tlbltdfSB0b2tlbnNcbiAqL1xuZnVuY3Rpb24gTXVsdGlUb2tlbih2YWx1ZSwgdG9rZW5zKSB7XG4gIHRoaXMudCA9ICd0b2tlbic7XG4gIHRoaXMudiA9IHZhbHVlO1xuICB0aGlzLnRrID0gdG9rZW5zO1xufVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHVzZWQgZm9yIG1hbnVmYWN0dXJpbmcgdG9rZW5zIG9mIHRleHQgdG9rZW5zLiBUaGF0IGlzIHJhdGhlclxuICogdGhhbiB0aGUgdmFsdWUgZm9yIGEgdG9rZW4gYmVpbmcgYSBzbWFsbCBzdHJpbmcgb2YgdGV4dCwgaXQncyB2YWx1ZSBhbiBhcnJheVxuICogb2YgdGV4dCB0b2tlbnMuXG4gKlxuICogVXNlZCBmb3IgZ3JvdXBpbmcgdG9nZXRoZXIgVVJMcywgZW1haWxzLCBoYXNodGFncywgYW5kIG90aGVyIHBvdGVudGlhbFxuICogY3JlYXRpb25zLlxuICogQGNsYXNzIE11bHRpVG9rZW5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gdlxuICogQHByb3BlcnR5IHtUb2tlbltdfSB0a1xuICogQGFic3RyYWN0XG4gKi9cbk11bHRpVG9rZW4ucHJvdG90eXBlID0ge1xuICBpc0xpbms6IGZhbHNlLFxuICAvKipcbiAgICogUmV0dXJuIHRoZSBzdHJpbmcgdGhpcyB0b2tlbiByZXByZXNlbnRzLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy52O1xuICB9LFxuICAvKipcbiAgICogV2hhdCBzaG91bGQgdGhlIHZhbHVlIGZvciB0aGlzIHRva2VuIGJlIGluIHRoZSBgaHJlZmAgSFRNTCBhdHRyaWJ1dGU/XG4gICAqIFJldHVybnMgdGhlIGAudG9TdHJpbmdgIHZhbHVlIGJ5IGRlZmF1bHQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc2NoZW1lXVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0hyZWYoc2NoZW1lKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfSxcbiAgLyoqXG4gICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBGb3JtYXR0aW5nIG9wdGlvbnNcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIHRvRm9ybWF0dGVkU3RyaW5nKG9wdGlvbnMpIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgdHJ1bmNhdGUgPSBvcHRpb25zLmdldCgndHJ1bmNhdGUnLCB2YWwsIHRoaXMpO1xuICAgIGNvbnN0IGZvcm1hdHRlZCA9IG9wdGlvbnMuZ2V0KCdmb3JtYXQnLCB2YWwsIHRoaXMpO1xuICAgIHJldHVybiB0cnVuY2F0ZSAmJiBmb3JtYXR0ZWQubGVuZ3RoID4gdHJ1bmNhdGUgPyBmb3JtYXR0ZWQuc3Vic3RyaW5nKDAsIHRydW5jYXRlKSArICfigKYnIDogZm9ybWF0dGVkO1xuICB9LFxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICB0b0Zvcm1hdHRlZEhyZWYob3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLmdldCgnZm9ybWF0SHJlZicsIHRoaXMudG9IcmVmKG9wdGlvbnMuZ2V0KCdkZWZhdWx0UHJvdG9jb2wnKSksIHRoaXMpO1xuICB9LFxuICAvKipcbiAgICogVGhlIHN0YXJ0IGluZGV4IG9mIHRoaXMgdG9rZW4gaW4gdGhlIG9yaWdpbmFsIGlucHV0IHN0cmluZ1xuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKi9cbiAgc3RhcnRJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy50a1swXS5zO1xuICB9LFxuICAvKipcbiAgICogVGhlIGVuZCBpbmRleCBvZiB0aGlzIHRva2VuIGluIHRoZSBvcmlnaW5hbCBpbnB1dCBzdHJpbmcgKHVwIHRvIHRoaXNcbiAgICogaW5kZXggYnV0IG5vdCBpbmNsdWRpbmcgaXQpXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBlbmRJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy50a1t0aGlzLnRrLmxlbmd0aCAtIDFdLmU7XG4gIH0sXG4gIC8qKlxuICBcdFJldHVybnMgYW4gb2JqZWN0ICBvZiByZWxldmFudCB2YWx1ZXMgZm9yIHRoaXMgdG9rZW4sIHdoaWNoIGluY2x1ZGVzIGtleXNcbiAgXHQqIHR5cGUgLSBLaW5kIG9mIHRva2VuICgndXJsJywgJ2VtYWlsJywgZXRjLilcbiAgXHQqIHZhbHVlIC0gT3JpZ2luYWwgdGV4dFxuICBcdCogaHJlZiAtIFRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYW5jaG9yIHRhZydzIGhyZWZcbiAgXHRcdGF0dHJpYnV0ZVxuICBcdFx0QG1ldGhvZCB0b09iamVjdFxuICBcdEBwYXJhbSB7c3RyaW5nfSBbcHJvdG9jb2xdIGAnaHR0cCdgIGJ5IGRlZmF1bHRcbiAgKi9cbiAgdG9PYmplY3QocHJvdG9jb2wgPSBkZWZhdWx0cy5kZWZhdWx0UHJvdG9jb2wpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdGhpcy50LFxuICAgICAgdmFsdWU6IHRoaXMudG9TdHJpbmcoKSxcbiAgICAgIGlzTGluazogdGhpcy5pc0xpbmssXG4gICAgICBocmVmOiB0aGlzLnRvSHJlZihwcm90b2NvbCksXG4gICAgICBzdGFydDogdGhpcy5zdGFydEluZGV4KCksXG4gICAgICBlbmQ6IHRoaXMuZW5kSW5kZXgoKVxuICAgIH07XG4gIH0sXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgRm9ybWF0dGluZyBvcHRpb25cbiAgICovXG4gIHRvRm9ybWF0dGVkT2JqZWN0KG9wdGlvbnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdGhpcy50LFxuICAgICAgdmFsdWU6IHRoaXMudG9Gb3JtYXR0ZWRTdHJpbmcob3B0aW9ucyksXG4gICAgICBpc0xpbms6IHRoaXMuaXNMaW5rLFxuICAgICAgaHJlZjogdGhpcy50b0Zvcm1hdHRlZEhyZWYob3B0aW9ucyksXG4gICAgICBzdGFydDogdGhpcy5zdGFydEluZGV4KCksXG4gICAgICBlbmQ6IHRoaXMuZW5kSW5kZXgoKVxuICAgIH07XG4gIH0sXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgdG9rZW4gc2hvdWxkIGJlIHJlbmRlcmVkIGFzIGEgbGluayBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG9wdGlvbnNcbiAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgdmFsaWRhdGUob3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLmdldCgndmFsaWRhdGUnLCB0aGlzLnRvU3RyaW5nKCksIHRoaXMpO1xuICB9LFxuICAvKipcbiAgICogUmV0dXJuIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgaG93IHRoaXMgbGluayBzaG91bGQgYmUgcmVuZGVyZWQuXG4gICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBGb3JtYXR0aW5uZyBvcHRpb25zXG4gICAqL1xuICByZW5kZXIob3B0aW9ucykge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcztcbiAgICBjb25zdCBocmVmID0gdGhpcy50b0hyZWYob3B0aW9ucy5nZXQoJ2RlZmF1bHRQcm90b2NvbCcpKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRIcmVmID0gb3B0aW9ucy5nZXQoJ2Zvcm1hdEhyZWYnLCBocmVmLCB0aGlzKTtcbiAgICBjb25zdCB0YWdOYW1lID0gb3B0aW9ucy5nZXQoJ3RhZ05hbWUnLCBocmVmLCB0b2tlbik7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMudG9Gb3JtYXR0ZWRTdHJpbmcob3B0aW9ucyk7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IG9wdGlvbnMuZ2V0KCdjbGFzc05hbWUnLCBocmVmLCB0b2tlbik7XG4gICAgY29uc3QgdGFyZ2V0ID0gb3B0aW9ucy5nZXQoJ3RhcmdldCcsIGhyZWYsIHRva2VuKTtcbiAgICBjb25zdCByZWwgPSBvcHRpb25zLmdldCgncmVsJywgaHJlZiwgdG9rZW4pO1xuICAgIGNvbnN0IGF0dHJzID0gb3B0aW9ucy5nZXRPYmooJ2F0dHJpYnV0ZXMnLCBocmVmLCB0b2tlbik7XG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSBvcHRpb25zLmdldE9iaignZXZlbnRzJywgaHJlZiwgdG9rZW4pO1xuICAgIGF0dHJpYnV0ZXMuaHJlZiA9IGZvcm1hdHRlZEhyZWY7XG4gICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgYXR0cmlidXRlcy5jbGFzcyA9IGNsYXNzTmFtZTtcbiAgICB9XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgYXR0cmlidXRlcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgfVxuICAgIGlmIChyZWwpIHtcbiAgICAgIGF0dHJpYnV0ZXMucmVsID0gcmVsO1xuICAgIH1cbiAgICBpZiAoYXR0cnMpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYXR0cmlidXRlcywgYXR0cnMpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdGFnTmFtZSxcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICBjb250ZW50LFxuICAgICAgZXZlbnRMaXN0ZW5lcnNcbiAgICB9O1xuICB9XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyB0b2tlbiB0aGF0IGNhbiBiZSBlbWl0dGVkIGJ5IHRoZSBwYXJzZXIgc3RhdGUgbWFjaGluZVxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgcmVhZGFibGUgdHlwZSBvZiB0aGUgdG9rZW5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBwcm9wZXJ0aWVzIHRvIGFzc2lnbiBvciBvdmVycmlkZSwgaW5jbHVkaW5nIGlzTGluayA9IHRydWUgb3IgZmFsc2VcbiAqIEByZXR1cm5zIHtuZXcgKHZhbHVlOiBzdHJpbmcsIHRva2VuczogVG9rZW5bXSkgPT4gTXVsdGlUb2tlbn0gbmV3IHRva2VuIGNsYXNzXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVRva2VuQ2xhc3ModHlwZSwgcHJvcHMpIHtcbiAgY2xhc3MgVG9rZW4gZXh0ZW5kcyBNdWx0aVRva2VuIHtcbiAgICBjb25zdHJ1Y3Rvcih2YWx1ZSwgdG9rZW5zKSB7XG4gICAgICBzdXBlcih2YWx1ZSwgdG9rZW5zKTtcbiAgICAgIHRoaXMudCA9IHR5cGU7XG4gICAgfVxuICB9XG4gIGZvciAoY29uc3QgcCBpbiBwcm9wcykge1xuICAgIFRva2VuLnByb3RvdHlwZVtwXSA9IHByb3BzW3BdO1xuICB9XG4gIFRva2VuLnQgPSB0eXBlO1xuICByZXR1cm4gVG9rZW47XG59XG5cbi8qKlxuXHRSZXByZXNlbnRzIGEgbGlzdCBvZiB0b2tlbnMgbWFraW5nIHVwIGEgdmFsaWQgZW1haWwgYWRkcmVzc1xuKi9cbmNvbnN0IEVtYWlsID0gY3JlYXRlVG9rZW5DbGFzcygnZW1haWwnLCB7XG4gIGlzTGluazogdHJ1ZSxcbiAgdG9IcmVmKCkge1xuICAgIHJldHVybiAnbWFpbHRvOicgKyB0aGlzLnRvU3RyaW5nKCk7XG4gIH1cbn0pO1xuXG4vKipcblx0UmVwcmVzZW50cyBzb21lIHBsYWluIHRleHRcbiovXG5jb25zdCBUZXh0ID0gY3JlYXRlVG9rZW5DbGFzcygndGV4dCcpO1xuXG4vKipcblx0TXVsdGktbGluZWJyZWFrIHRva2VuIC0gcmVwcmVzZW50cyBhIGxpbmUgYnJlYWtcblx0QGNsYXNzIE5sXG4qL1xuY29uc3QgTmwgPSBjcmVhdGVUb2tlbkNsYXNzKCdubCcpO1xuXG4vKipcblx0UmVwcmVzZW50cyBhIGxpc3Qgb2YgdGV4dCB0b2tlbnMgbWFraW5nIHVwIGEgdmFsaWQgVVJMXG5cdEBjbGFzcyBVcmxcbiovXG5jb25zdCBVcmwgPSBjcmVhdGVUb2tlbkNsYXNzKCd1cmwnLCB7XG4gIGlzTGluazogdHJ1ZSxcbiAgLyoqXG4gIFx0TG93ZXJjYXNlcyByZWxldmFudCBwYXJ0cyBvZiB0aGUgZG9tYWluIGFuZCBhZGRzIHRoZSBwcm90b2NvbCBpZlxuICBcdHJlcXVpcmVkLiBOb3RlIHRoYXQgdGhpcyB3aWxsIG5vdCBlc2NhcGUgdW5zYWZlIEhUTUwgY2hhcmFjdGVycyBpbiB0aGVcbiAgXHRVUkwuXG4gIFx0XHRAcGFyYW0ge3N0cmluZ30gW3NjaGVtZV0gZGVmYXVsdCBzY2hlbWUgKGUuZy4sICdodHRwcycpXG4gIFx0QHJldHVybiB7c3RyaW5nfSB0aGUgZnVsbCBocmVmXG4gICovXG4gIHRvSHJlZihzY2hlbWUgPSBkZWZhdWx0cy5kZWZhdWx0UHJvdG9jb2wpIHtcbiAgICAvLyBDaGVjayBpZiBhbHJlYWR5IGhhcyBhIHByZWZpeCBzY2hlbWVcbiAgICByZXR1cm4gdGhpcy5oYXNQcm90b2NvbCgpID8gdGhpcy52IDogYCR7c2NoZW1lfTovLyR7dGhpcy52fWA7XG4gIH0sXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRoaXMgVVJMIHRva2VuIGhhcyBhIHByb3RvY29sXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBoYXNQcm90b2NvbCgpIHtcbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnRrO1xuICAgIHJldHVybiB0b2tlbnMubGVuZ3RoID49IDIgJiYgdG9rZW5zWzBdLnQgIT09IExPQ0FMSE9TVCAmJiB0b2tlbnNbMV0udCA9PT0gQ09MT047XG4gIH1cbn0pO1xuXG52YXIgbXVsdGkgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG5cdF9fcHJvdG9fXzogbnVsbCxcblx0QmFzZTogTXVsdGlUb2tlbixcblx0RW1haWw6IEVtYWlsLFxuXHRNdWx0aVRva2VuOiBNdWx0aVRva2VuLFxuXHRObDogTmwsXG5cdFRleHQ6IFRleHQsXG5cdFVybDogVXJsLFxuXHRjcmVhdGVUb2tlbkNsYXNzOiBjcmVhdGVUb2tlbkNsYXNzXG59KTtcblxuLyoqXG5cdE5vdCBleGFjdGx5IHBhcnNlciwgbW9yZSBsaWtlIHRoZSBzZWNvbmQtc3RhZ2Ugc2Nhbm5lciAoYWx0aG91Z2ggd2UgY2FuXG5cdHRoZW9yZXRpY2FsbHkgaG90c3dhcCB0aGUgY29kZSBoZXJlIHdpdGggYSByZWFsIHBhcnNlciBpbiB0aGUgZnV0dXJlLi4uIGJ1dFxuXHRmb3IgYSBsaXR0bGUgVVJMLWZpbmRpbmcgdXRpbGl0eSBhYnN0cmFjdCBzeW50YXggdHJlZXMgbWF5IGJlIGEgbGl0dGxlXG5cdG92ZXJraWxsKS5cblxuXHRVUkwgZm9ybWF0OiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VSSV9zY2hlbWVcblx0RW1haWwgZm9ybWF0OiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtYWlsQWRkcmVzcyAobGlua3MgdG8gUkZDIGluXG5cdHJlZmVyZW5jZSlcblxuXHRAbW9kdWxlIGxpbmtpZnlcblx0QHN1Ym1vZHVsZSBwYXJzZXJcblx0QG1haW4gcnVuXG4qL1xuXG5jb25zdCBtYWtlU3RhdGUgPSBhcmcgPT4gbmV3IFN0YXRlKGFyZyk7XG5cbi8qKlxuICogR2VuZXJhdGUgdGhlIHBhcnNlciBtdWx0aSB0b2tlbi1iYXNlZCBzdGF0ZSBtYWNoaW5lXG4gKiBAcGFyYW0ge3sgZ3JvdXBzOiBDb2xsZWN0aW9uczxzdHJpbmc+IH19IHRva2Vuc1xuICovXG5mdW5jdGlvbiBpbml0JDEoe1xuICBncm91cHNcbn0pIHtcbiAgLy8gVHlwZXMgb2YgY2hhcmFjdGVycyB0aGUgVVJMIGNhbiBkZWZpbml0ZWx5IGVuZCBpblxuICBjb25zdCBxc0FjY2VwdGluZyA9IGdyb3Vwcy5kb21haW4uY29uY2F0KFtBTVBFUlNBTkQsIEFTVEVSSVNLLCBBVCwgQkFDS1NMQVNILCBCQUNLVElDSywgQ0FSRVQsIERPTExBUiwgRVFVQUxTLCBIWVBIRU4sIE5VTSwgUEVSQ0VOVCwgUElQRSwgUExVUywgUE9VTkQsIFNMQVNILCBTWU0sIFRJTERFLCBVTkRFUlNDT1JFXSk7XG5cbiAgLy8gVHlwZXMgb2YgdG9rZW5zIHRoYXQgY2FuIGZvbGxvdyBhIFVSTCBhbmQgYmUgcGFydCBvZiB0aGUgcXVlcnkgc3RyaW5nXG4gIC8vIGJ1dCBjYW5ub3QgYmUgdGhlIHZlcnkgbGFzdCBjaGFyYWN0ZXJzXG4gIC8vIENoYXJhY3RlcnMgdGhhdCBjYW5ub3QgYXBwZWFyIGluIHRoZSBVUkwgYXQgYWxsIHNob3VsZCBiZSBleGNsdWRlZFxuICBjb25zdCBxc05vbkFjY2VwdGluZyA9IFtBUE9TVFJPUEhFLCBDT0xPTiwgQ09NTUEsIERPVCwgRVhDTEFNQVRJT04sIFBFUkNFTlQsIFFVRVJZLCBRVU9URSwgU0VNSSwgT1BFTkFOR0xFQlJBQ0tFVCwgQ0xPU0VBTkdMRUJSQUNLRVQsIE9QRU5CUkFDRSwgQ0xPU0VCUkFDRSwgQ0xPU0VCUkFDS0VULCBPUEVOQlJBQ0tFVCwgT1BFTlBBUkVOLCBDTE9TRVBBUkVOLCBGVUxMV0lEVEhMRUZUUEFSRU4sIEZVTExXSURUSFJJR0hUUEFSRU4sIExFRlRDT1JORVJCUkFDS0VULCBSSUdIVENPUk5FUkJSQUNLRVQsIExFRlRXSElURUNPUk5FUkJSQUNLRVQsIFJJR0hUV0hJVEVDT1JORVJCUkFDS0VULCBGVUxMV0lEVEhMRVNTVEhBTiwgRlVMTFdJRFRIR1JFQVRFUlRIQU5dO1xuXG4gIC8vIEZvciBhZGRyZXNzZXMgd2l0aG91dCB0aGUgbWFpbHRvIHByZWZpeFxuICAvLyBUb2tlbnMgYWxsb3dlZCBpbiB0aGUgbG9jYWxwYXJ0IG9mIHRoZSBlbWFpbFxuICBjb25zdCBsb2NhbHBhcnRBY2NlcHRpbmcgPSBbQU1QRVJTQU5ELCBBUE9TVFJPUEhFLCBBU1RFUklTSywgQkFDS1NMQVNILCBCQUNLVElDSywgQ0FSRVQsIERPTExBUiwgRVFVQUxTLCBIWVBIRU4sIE9QRU5CUkFDRSwgQ0xPU0VCUkFDRSwgUEVSQ0VOVCwgUElQRSwgUExVUywgUE9VTkQsIFFVRVJZLCBTTEFTSCwgU1lNLCBUSUxERSwgVU5ERVJTQ09SRV07XG5cbiAgLy8gVGhlIHVuaXZlcnNhbCBzdGFydGluZyBzdGF0ZS5cbiAgLyoqXG4gICAqIEB0eXBlIFN0YXRlPFRva2VuPlxuICAgKi9cbiAgY29uc3QgU3RhcnQgPSBtYWtlU3RhdGUoKTtcbiAgY29uc3QgTG9jYWxwYXJ0ID0gdHQoU3RhcnQsIFRJTERFKTsgLy8gTG9jYWwgcGFydCBvZiB0aGUgZW1haWwgYWRkcmVzc1xuICB0YShMb2NhbHBhcnQsIGxvY2FscGFydEFjY2VwdGluZywgTG9jYWxwYXJ0KTtcbiAgdGEoTG9jYWxwYXJ0LCBncm91cHMuZG9tYWluLCBMb2NhbHBhcnQpO1xuICBjb25zdCBEb21haW4gPSBtYWtlU3RhdGUoKSxcbiAgICBTY2hlbWUgPSBtYWtlU3RhdGUoKSxcbiAgICBTbGFzaFNjaGVtZSA9IG1ha2VTdGF0ZSgpO1xuICB0YShTdGFydCwgZ3JvdXBzLmRvbWFpbiwgRG9tYWluKTsgLy8gcGFyc2VkIHN0cmluZyBlbmRzIHdpdGggYSBwb3RlbnRpYWwgZG9tYWluIG5hbWUgKEEpXG4gIHRhKFN0YXJ0LCBncm91cHMuc2NoZW1lLCBTY2hlbWUpOyAvLyBlLmcuLCAnbWFpbHRvJ1xuICB0YShTdGFydCwgZ3JvdXBzLnNsYXNoc2NoZW1lLCBTbGFzaFNjaGVtZSk7IC8vIGUuZy4sICdodHRwJ1xuXG4gIHRhKERvbWFpbiwgbG9jYWxwYXJ0QWNjZXB0aW5nLCBMb2NhbHBhcnQpO1xuICB0YShEb21haW4sIGdyb3Vwcy5kb21haW4sIERvbWFpbik7XG4gIGNvbnN0IExvY2FscGFydEF0ID0gdHQoRG9tYWluLCBBVCk7IC8vIExvY2FsIHBhcnQgb2YgdGhlIGVtYWlsIGFkZHJlc3MgcGx1cyBAXG5cbiAgdHQoTG9jYWxwYXJ0LCBBVCwgTG9jYWxwYXJ0QXQpOyAvLyBjbG9zZSB0byBhbiBlbWFpbCBhZGRyZXNzIG5vd1xuXG4gIC8vIExvY2FsIHBhcnQgb2YgYW4gZW1haWwgYWRkcmVzcyBjYW4gYmUgZS5nLiAnaHR0cCcgb3IgJ21haWx0bydcbiAgdHQoU2NoZW1lLCBBVCwgTG9jYWxwYXJ0QXQpO1xuICB0dChTbGFzaFNjaGVtZSwgQVQsIExvY2FscGFydEF0KTtcbiAgY29uc3QgTG9jYWxwYXJ0RG90ID0gdHQoTG9jYWxwYXJ0LCBET1QpOyAvLyBMb2NhbCBwYXJ0IG9mIHRoZSBlbWFpbCBhZGRyZXNzIHBsdXMgJy4nIChsb2NhbHBhcnQgY2Fubm90IGVuZCBpbiAuKVxuICB0YShMb2NhbHBhcnREb3QsIGxvY2FscGFydEFjY2VwdGluZywgTG9jYWxwYXJ0KTtcbiAgdGEoTG9jYWxwYXJ0RG90LCBncm91cHMuZG9tYWluLCBMb2NhbHBhcnQpO1xuICBjb25zdCBFbWFpbERvbWFpbiA9IG1ha2VTdGF0ZSgpO1xuICB0YShMb2NhbHBhcnRBdCwgZ3JvdXBzLmRvbWFpbiwgRW1haWxEb21haW4pOyAvLyBwYXJzZWQgc3RyaW5nIHN0YXJ0cyB3aXRoIGxvY2FsIGVtYWlsIGluZm8gKyBAIHdpdGggYSBwb3RlbnRpYWwgZG9tYWluIG5hbWVcbiAgdGEoRW1haWxEb21haW4sIGdyb3Vwcy5kb21haW4sIEVtYWlsRG9tYWluKTtcbiAgY29uc3QgRW1haWxEb21haW5Eb3QgPSB0dChFbWFpbERvbWFpbiwgRE9UKTsgLy8gZG9tYWluIGZvbGxvd2VkIGJ5IERPVFxuICB0YShFbWFpbERvbWFpbkRvdCwgZ3JvdXBzLmRvbWFpbiwgRW1haWxEb21haW4pO1xuICBjb25zdCBFbWFpbCQxID0gbWFrZVN0YXRlKEVtYWlsKTsgLy8gUG9zc2libGUgZW1haWwgYWRkcmVzcyAoY291bGQgaGF2ZSBtb3JlIHRsZHMpXG4gIHRhKEVtYWlsRG9tYWluRG90LCBncm91cHMudGxkLCBFbWFpbCQxKTtcbiAgdGEoRW1haWxEb21haW5Eb3QsIGdyb3Vwcy51dGxkLCBFbWFpbCQxKTtcbiAgdHQoTG9jYWxwYXJ0QXQsIExPQ0FMSE9TVCwgRW1haWwkMSk7XG5cbiAgLy8gSHlwaGVuIGNhbiBqdW1wIGJhY2sgdG8gYSBkb21haW4gbmFtZVxuICBjb25zdCBFbWFpbERvbWFpbkh5cGhlbiA9IHR0KEVtYWlsRG9tYWluLCBIWVBIRU4pOyAvLyBwYXJzZWQgc3RyaW5nIHN0YXJ0cyB3aXRoIGxvY2FsIGVtYWlsIGluZm8gKyBAIHdpdGggYSBwb3RlbnRpYWwgZG9tYWluIG5hbWVcbiAgdHQoRW1haWxEb21haW5IeXBoZW4sIEhZUEhFTiwgRW1haWxEb21haW5IeXBoZW4pO1xuICB0YShFbWFpbERvbWFpbkh5cGhlbiwgZ3JvdXBzLmRvbWFpbiwgRW1haWxEb21haW4pO1xuICB0YShFbWFpbCQxLCBncm91cHMuZG9tYWluLCBFbWFpbERvbWFpbik7XG4gIHR0KEVtYWlsJDEsIERPVCwgRW1haWxEb21haW5Eb3QpO1xuICB0dChFbWFpbCQxLCBIWVBIRU4sIEVtYWlsRG9tYWluSHlwaGVuKTtcblxuICAvLyBGaW5hbCBwb3NzaWJsZSBlbWFpbCBzdGF0ZXNcbiAgY29uc3QgRW1haWxDb2xvbiA9IHR0KEVtYWlsJDEsIENPTE9OKTsgLy8gVVJMIGZvbGxvd2VkIGJ5IGNvbG9uIChwb3RlbnRpYWwgcG9ydCBudW1iZXIgaGVyZSlcbiAgLypjb25zdCBFbWFpbENvbG9uUG9ydCA9ICovXG4gIHRhKEVtYWlsQ29sb24sIGdyb3Vwcy5udW1lcmljLCBFbWFpbCk7IC8vIFVSTCBmb2xsb3dlZCBieSBjb2xvbiBhbmQgcG9ydCBudW1iZXJcblxuICAvLyBBY2NvdW50IGZvciBkb3RzIGFuZCBoeXBoZW5zLiBIeXBoZW5zIGFyZSB1c3VhbGx5IHBhcnRzIG9mIGRvbWFpbiBuYW1lc1xuICAvLyAoYnV0IG5vdCBUTERzKVxuICBjb25zdCBEb21haW5IeXBoZW4gPSB0dChEb21haW4sIEhZUEhFTik7IC8vIGRvbWFpbiBmb2xsb3dlZCBieSBoeXBoZW5cbiAgY29uc3QgRG9tYWluRG90ID0gdHQoRG9tYWluLCBET1QpOyAvLyBkb21haW4gZm9sbG93ZWQgYnkgRE9UXG4gIHR0KERvbWFpbkh5cGhlbiwgSFlQSEVOLCBEb21haW5IeXBoZW4pO1xuICB0YShEb21haW5IeXBoZW4sIGdyb3Vwcy5kb21haW4sIERvbWFpbik7XG4gIHRhKERvbWFpbkRvdCwgbG9jYWxwYXJ0QWNjZXB0aW5nLCBMb2NhbHBhcnQpO1xuICB0YShEb21haW5Eb3QsIGdyb3Vwcy5kb21haW4sIERvbWFpbik7XG4gIGNvbnN0IERvbWFpbkRvdFRsZCA9IG1ha2VTdGF0ZShVcmwpOyAvLyBTaW1wbGVzdCBwb3NzaWJsZSBVUkwgd2l0aCBubyBxdWVyeSBzdHJpbmdcbiAgdGEoRG9tYWluRG90LCBncm91cHMudGxkLCBEb21haW5Eb3RUbGQpO1xuICB0YShEb21haW5Eb3QsIGdyb3Vwcy51dGxkLCBEb21haW5Eb3RUbGQpO1xuICB0YShEb21haW5Eb3RUbGQsIGdyb3Vwcy5kb21haW4sIERvbWFpbik7XG4gIHRhKERvbWFpbkRvdFRsZCwgbG9jYWxwYXJ0QWNjZXB0aW5nLCBMb2NhbHBhcnQpO1xuICB0dChEb21haW5Eb3RUbGQsIERPVCwgRG9tYWluRG90KTtcbiAgdHQoRG9tYWluRG90VGxkLCBIWVBIRU4sIERvbWFpbkh5cGhlbik7XG4gIHR0KERvbWFpbkRvdFRsZCwgQVQsIExvY2FscGFydEF0KTtcbiAgY29uc3QgRG9tYWluRG90VGxkQ29sb24gPSB0dChEb21haW5Eb3RUbGQsIENPTE9OKTsgLy8gVVJMIGZvbGxvd2VkIGJ5IGNvbG9uIChwb3RlbnRpYWwgcG9ydCBudW1iZXIgaGVyZSlcbiAgY29uc3QgRG9tYWluRG90VGxkQ29sb25Qb3J0ID0gbWFrZVN0YXRlKFVybCk7IC8vIFRMRCBmb2xsb3dlZCBieSBhIHBvcnQgbnVtYmVyXG4gIHRhKERvbWFpbkRvdFRsZENvbG9uLCBncm91cHMubnVtZXJpYywgRG9tYWluRG90VGxkQ29sb25Qb3J0KTtcblxuICAvLyBMb25nIFVSTCB3aXRoIG9wdGlvbmFsIHBvcnQgYW5kIG1heWJlIHF1ZXJ5IHN0cmluZ1xuICBjb25zdCBVcmwkMSA9IG1ha2VTdGF0ZShVcmwpO1xuXG4gIC8vIFVSTCB3aXRoIGV4dHJhIHN5bWJvbHMgYXQgdGhlIGVuZCwgZm9sbG93ZWQgYnkgYW4gb3BlbmluZyBicmFja2V0XG4gIGNvbnN0IFVybE5vbmFjY2VwdCA9IG1ha2VTdGF0ZSgpOyAvLyBVUkwgZm9sbG93ZWQgYnkgc29tZSBzeW1ib2xzICh3aWxsIG5vdCBiZSBwYXJ0IG9mIHRoZSBmaW5hbCBVUkwpXG5cbiAgLy8gUXVlcnkgc3RyaW5nc1xuICB0YShVcmwkMSwgcXNBY2NlcHRpbmcsIFVybCQxKTtcbiAgdGEoVXJsJDEsIHFzTm9uQWNjZXB0aW5nLCBVcmxOb25hY2NlcHQpO1xuICB0YShVcmxOb25hY2NlcHQsIHFzQWNjZXB0aW5nLCBVcmwkMSk7XG4gIHRhKFVybE5vbmFjY2VwdCwgcXNOb25BY2NlcHRpbmcsIFVybE5vbmFjY2VwdCk7XG5cbiAgLy8gQmVjb21lIHJlYWwgVVJMcyBhZnRlciBgU0xBU0hgIG9yIGBDT0xPTiBOVU0gU0xBU0hgXG4gIC8vIEhlcmUgd29ya3Mgd2l0aCBvciB3aXRob3V0IHNjaGVtZTovLyBwcmVmaXhcbiAgdHQoRG9tYWluRG90VGxkLCBTTEFTSCwgVXJsJDEpO1xuICB0dChEb21haW5Eb3RUbGRDb2xvblBvcnQsIFNMQVNILCBVcmwkMSk7XG5cbiAgLy8gTm90ZSB0aGF0IGRvbWFpbnMgdGhhdCBiZWdpbiB3aXRoIHNjaGVtZXMgYXJlIHRyZWF0ZWQgc2xpZ2hseSBkaWZmZXJlbnRseVxuICBjb25zdCBTY2hlbWVDb2xvbiA9IHR0KFNjaGVtZSwgQ09MT04pOyAvLyBlLmcuLCAnbWFpbHRvOidcbiAgY29uc3QgU2xhc2hTY2hlbWVDb2xvbiA9IHR0KFNsYXNoU2NoZW1lLCBDT0xPTik7IC8vIGUuZy4sICdodHRwOidcbiAgY29uc3QgU2xhc2hTY2hlbWVDb2xvblNsYXNoID0gdHQoU2xhc2hTY2hlbWVDb2xvbiwgU0xBU0gpOyAvLyBlLmcuLCAnaHR0cDovJ1xuXG4gIGNvbnN0IFVyaVByZWZpeCA9IHR0KFNsYXNoU2NoZW1lQ29sb25TbGFzaCwgU0xBU0gpOyAvLyBlLmcuLCAnaHR0cDovLydcblxuICAvLyBTY2hlbWUgc3RhdGVzIGNhbiB0cmFuc2l0aW9uIHRvIGRvbWFpbiBzdGF0ZXNcbiAgdGEoU2NoZW1lLCBncm91cHMuZG9tYWluLCBEb21haW4pO1xuICB0dChTY2hlbWUsIERPVCwgRG9tYWluRG90KTtcbiAgdHQoU2NoZW1lLCBIWVBIRU4sIERvbWFpbkh5cGhlbik7XG4gIHRhKFNsYXNoU2NoZW1lLCBncm91cHMuZG9tYWluLCBEb21haW4pO1xuICB0dChTbGFzaFNjaGVtZSwgRE9ULCBEb21haW5Eb3QpO1xuICB0dChTbGFzaFNjaGVtZSwgSFlQSEVOLCBEb21haW5IeXBoZW4pO1xuXG4gIC8vIEZvcmNlIFVSTCB3aXRoIHNjaGVtZSBwcmVmaXggZm9sbG93ZWQgYnkgYW55dGhpbmcgc2FuZVxuICB0YShTY2hlbWVDb2xvbiwgZ3JvdXBzLmRvbWFpbiwgVXJsJDEpO1xuICB0dChTY2hlbWVDb2xvbiwgU0xBU0gsIFVybCQxKTtcbiAgdHQoU2NoZW1lQ29sb24sIFFVRVJZLCBVcmwkMSk7XG4gIHRhKFVyaVByZWZpeCwgZ3JvdXBzLmRvbWFpbiwgVXJsJDEpO1xuICB0YShVcmlQcmVmaXgsIHFzQWNjZXB0aW5nLCBVcmwkMSk7XG4gIHR0KFVyaVByZWZpeCwgU0xBU0gsIFVybCQxKTtcbiAgY29uc3QgYnJhY2tldFBhaXJzID0gW1tPUEVOQlJBQ0UsIENMT1NFQlJBQ0VdLFxuICAvLyB7fVxuICBbT1BFTkJSQUNLRVQsIENMT1NFQlJBQ0tFVF0sXG4gIC8vIFtdXG4gIFtPUEVOUEFSRU4sIENMT1NFUEFSRU5dLFxuICAvLyAoKVxuICBbT1BFTkFOR0xFQlJBQ0tFVCwgQ0xPU0VBTkdMRUJSQUNLRVRdLFxuICAvLyA8PlxuICBbRlVMTFdJRFRITEVGVFBBUkVOLCBGVUxMV0lEVEhSSUdIVFBBUkVOXSxcbiAgLy8g77yI77yJXG4gIFtMRUZUQ09STkVSQlJBQ0tFVCwgUklHSFRDT1JORVJCUkFDS0VUXSxcbiAgLy8g44CM44CNXG4gIFtMRUZUV0hJVEVDT1JORVJCUkFDS0VULCBSSUdIVFdISVRFQ09STkVSQlJBQ0tFVF0sXG4gIC8vIOOAjuOAj1xuICBbRlVMTFdJRFRITEVTU1RIQU4sIEZVTExXSURUSEdSRUFURVJUSEFOXSAvLyDvvJzvvJ5cbiAgXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBicmFja2V0UGFpcnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBbT1BFTiwgQ0xPU0VdID0gYnJhY2tldFBhaXJzW2ldO1xuICAgIGNvbnN0IFVybE9wZW4gPSB0dChVcmwkMSwgT1BFTik7IC8vIFVSTCBmb2xsb3dlZCBieSBvcGVuIGJyYWNrZXRcblxuICAgIC8vIENvbnRpbnVlIG5vdCBhY2NlcHRpbmcgZm9yIG9wZW4gYnJhY2tldHNcbiAgICB0dChVcmxOb25hY2NlcHQsIE9QRU4sIFVybE9wZW4pO1xuXG4gICAgLy8gQ2xvc2luZyBicmFja2V0IGNvbXBvbmVudC4gVGhpcyBjaGFyYWN0ZXIgV0lMTCBiZSBpbmNsdWRlZCBpbiB0aGUgVVJMXG4gICAgdHQoVXJsT3BlbiwgQ0xPU0UsIFVybCQxKTtcblxuICAgIC8vIFVSTCB0aGF0IGJlaW5ncyB3aXRoIGFuIG9wZW5pbmcgYnJhY2tldCwgZm9sbG93ZWQgYnkgYSBzeW1ib2xzLlxuICAgIC8vIE5vdGUgdGhhdCB0aGUgZmluYWwgc3RhdGUgY2FuIHN0aWxsIGJlIGBVcmxPcGVuYCAoaWYgdGhlIFVSTCBoYXMgYVxuICAgIC8vIHNpbmdsZSBvcGVuaW5nIGJyYWNrZXQgZm9yIHNvbWUgcmVhc29uKS5cbiAgICBjb25zdCBVcmxPcGVuUSA9IG1ha2VTdGF0ZShVcmwpO1xuICAgIHRhKFVybE9wZW4sIHFzQWNjZXB0aW5nLCBVcmxPcGVuUSk7XG4gICAgY29uc3QgVXJsT3BlblN5bXMgPSBtYWtlU3RhdGUoKTsgLy8gVXJsT3BlbiBmb2xsb3dlZCBieSBzb21lIHN5bWJvbHMgaXQgY2Fubm90IGVuZCBpdFxuICAgIHRhKFVybE9wZW4sIHFzTm9uQWNjZXB0aW5nKTtcblxuICAgIC8vIFVSTCB0aGF0IGJlZ2lucyB3aXRoIGFuIG9wZW5pbmcgYnJhY2tldCwgZm9sbG93ZWQgYnkgc29tZSBzeW1ib2xzXG4gICAgdGEoVXJsT3BlblEsIHFzQWNjZXB0aW5nLCBVcmxPcGVuUSk7XG4gICAgdGEoVXJsT3BlblEsIHFzTm9uQWNjZXB0aW5nLCBVcmxPcGVuU3ltcyk7XG4gICAgdGEoVXJsT3BlblN5bXMsIHFzQWNjZXB0aW5nLCBVcmxPcGVuUSk7XG4gICAgdGEoVXJsT3BlblN5bXMsIHFzTm9uQWNjZXB0aW5nLCBVcmxPcGVuU3ltcyk7XG5cbiAgICAvLyBDbG9zZSBicmFjZS9icmFja2V0IHRvIGJlY29tZSByZWd1bGFyIFVSTFxuICAgIHR0KFVybE9wZW5RLCBDTE9TRSwgVXJsJDEpO1xuICAgIHR0KFVybE9wZW5TeW1zLCBDTE9TRSwgVXJsJDEpO1xuICB9XG4gIHR0KFN0YXJ0LCBMT0NBTEhPU1QsIERvbWFpbkRvdFRsZCk7IC8vIGxvY2FsaG9zdCBpcyBhIHZhbGlkIFVSTCBzdGF0ZVxuICB0dChTdGFydCwgTkwsIE5sKTsgLy8gc2luZ2xlIG5ldyBsaW5lXG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogU3RhcnQsXG4gICAgdG9rZW5zOiB0a1xuICB9O1xufVxuXG4vKipcbiAqIFJ1biB0aGUgcGFyc2VyIHN0YXRlIG1hY2hpbmUgb24gYSBsaXN0IG9mIHNjYW5uZWQgc3RyaW5nLWJhc2VkIHRva2VucyB0b1xuICogY3JlYXRlIGEgbGlzdCBvZiBtdWx0aSB0b2tlbnMsIGVhY2ggb2Ygd2hpY2ggcmVwcmVzZW50cyBhIFVSTCwgZW1haWwgYWRkcmVzcyxcbiAqIHBsYWluIHRleHQsIGV0Yy5cbiAqXG4gKiBAcGFyYW0ge1N0YXRlPE11bHRpVG9rZW4+fSBzdGFydCBwYXJzZXIgc3RhcnQgc3RhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCB0aGUgb3JpZ2luYWwgaW5wdXQgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZ2l2ZW4gdG9rZW5zXG4gKiBAcGFyYW0ge1Rva2VuW119IHRva2VucyBsaXN0IG9mIHNjYW5uZWQgdG9rZW5zXG4gKiBAcmV0dXJucyB7TXVsdGlUb2tlbltdfVxuICovXG5mdW5jdGlvbiBydW4oc3RhcnQsIGlucHV0LCB0b2tlbnMpIHtcbiAgbGV0IGxlbiA9IHRva2Vucy5sZW5ndGg7XG4gIGxldCBjdXJzb3IgPSAwO1xuICBsZXQgbXVsdGlzID0gW107XG4gIGxldCB0ZXh0VG9rZW5zID0gW107XG4gIHdoaWxlIChjdXJzb3IgPCBsZW4pIHtcbiAgICBsZXQgc3RhdGUgPSBzdGFydDtcbiAgICBsZXQgc2Vjb25kU3RhdGUgPSBudWxsO1xuICAgIGxldCBuZXh0U3RhdGUgPSBudWxsO1xuICAgIGxldCBtdWx0aUxlbmd0aCA9IDA7XG4gICAgbGV0IGxhdGVzdEFjY2VwdGluZyA9IG51bGw7XG4gICAgbGV0IHNpbmNlQWNjZXB0cyA9IC0xO1xuICAgIHdoaWxlIChjdXJzb3IgPCBsZW4gJiYgIShzZWNvbmRTdGF0ZSA9IHN0YXRlLmdvKHRva2Vuc1tjdXJzb3JdLnQpKSkge1xuICAgICAgLy8gU3RhcnRpbmcgdG9rZW5zIHdpdGggbm93aGVyZSB0byBqdW1wIHRvLlxuICAgICAgLy8gQ29uc2lkZXIgdGhlc2UgdG8gYmUganVzdCBwbGFpbiB0ZXh0XG4gICAgICB0ZXh0VG9rZW5zLnB1c2godG9rZW5zW2N1cnNvcisrXSk7XG4gICAgfVxuICAgIHdoaWxlIChjdXJzb3IgPCBsZW4gJiYgKG5leHRTdGF0ZSA9IHNlY29uZFN0YXRlIHx8IHN0YXRlLmdvKHRva2Vuc1tjdXJzb3JdLnQpKSkge1xuICAgICAgLy8gR2V0IHRoZSBuZXh0IHN0YXRlXG4gICAgICBzZWNvbmRTdGF0ZSA9IG51bGw7XG4gICAgICBzdGF0ZSA9IG5leHRTdGF0ZTtcblxuICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgbGF0ZXN0IGFjY2VwdGluZyBzdGF0ZVxuICAgICAgaWYgKHN0YXRlLmFjY2VwdHMoKSkge1xuICAgICAgICBzaW5jZUFjY2VwdHMgPSAwO1xuICAgICAgICBsYXRlc3RBY2NlcHRpbmcgPSBzdGF0ZTtcbiAgICAgIH0gZWxzZSBpZiAoc2luY2VBY2NlcHRzID49IDApIHtcbiAgICAgICAgc2luY2VBY2NlcHRzKys7XG4gICAgICB9XG4gICAgICBjdXJzb3IrKztcbiAgICAgIG11bHRpTGVuZ3RoKys7XG4gICAgfVxuICAgIGlmIChzaW5jZUFjY2VwdHMgPCAwKSB7XG4gICAgICAvLyBObyBhY2NlcHRpbmcgc3RhdGUgd2FzIGZvdW5kLCBwYXJ0IG9mIGEgcmVndWxhciB0ZXh0IHRva2VuIGFkZFxuICAgICAgLy8gdGhlIGZpcnN0IHRleHQgdG9rZW4gdG8gdGhlIHRleHQgdG9rZW5zIGFycmF5IGFuZCB0cnkgYWdhaW4gZnJvbVxuICAgICAgLy8gdGhlIG5leHRcbiAgICAgIGN1cnNvciAtPSBtdWx0aUxlbmd0aDtcbiAgICAgIGlmIChjdXJzb3IgPCBsZW4pIHtcbiAgICAgICAgdGV4dFRva2Vucy5wdXNoKHRva2Vuc1tjdXJzb3JdKTtcbiAgICAgICAgY3Vyc29yKys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFjY2VwdGluZyBzdGF0ZSFcbiAgICAgIC8vIEZpcnN0IGNsb3NlIG9mZiB0aGUgdGV4dFRva2VucyAoaWYgYXZhaWxhYmxlKVxuICAgICAgaWYgKHRleHRUb2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBtdWx0aXMucHVzaChpbml0TXVsdGlUb2tlbihUZXh0LCBpbnB1dCwgdGV4dFRva2VucykpO1xuICAgICAgICB0ZXh0VG9rZW5zID0gW107XG4gICAgICB9XG5cbiAgICAgIC8vIFJvbGwgYmFjayB0byB0aGUgbGF0ZXN0IGFjY2VwdGluZyBzdGF0ZVxuICAgICAgY3Vyc29yIC09IHNpbmNlQWNjZXB0cztcbiAgICAgIG11bHRpTGVuZ3RoIC09IHNpbmNlQWNjZXB0cztcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IG11bHRpdG9rZW5cbiAgICAgIGNvbnN0IE11bHRpID0gbGF0ZXN0QWNjZXB0aW5nLnQ7XG4gICAgICBjb25zdCBzdWJ0b2tlbnMgPSB0b2tlbnMuc2xpY2UoY3Vyc29yIC0gbXVsdGlMZW5ndGgsIGN1cnNvcik7XG4gICAgICBtdWx0aXMucHVzaChpbml0TXVsdGlUb2tlbihNdWx0aSwgaW5wdXQsIHN1YnRva2VucykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpbmFsbHkgY2xvc2Ugb2ZmIHRoZSB0ZXh0VG9rZW5zIChpZiBhdmFpbGFibGUpXG4gIGlmICh0ZXh0VG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICBtdWx0aXMucHVzaChpbml0TXVsdGlUb2tlbihUZXh0LCBpbnB1dCwgdGV4dFRva2VucykpO1xuICB9XG4gIHJldHVybiBtdWx0aXM7XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgaW5zdGFudGlhdGluZyBhIG5ldyBtdWx0aXRva2VuIHdpdGggYWxsIHRoZSByZWxldmFudFxuICogZmllbGRzIGR1cmluZyBwYXJzaW5nLlxuICogQHBhcmFtIHtuZXcgKHZhbHVlOiBzdHJpbmcsIHRva2VuczogVG9rZW5bXSkgPT4gTXVsdGlUb2tlbn0gTXVsdGkgY2xhc3MgdG8gaW5zdGFudGlhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCBvcmlnaW5hbCBpbnB1dCBzdHJpbmdcbiAqIEBwYXJhbSB7VG9rZW5bXX0gdG9rZW5zIGNvbnNlY3V0aXZlIHRva2VucyBzY2FubmVkIGZyb20gaW5wdXQgc3RyaW5nXG4gKiBAcmV0dXJucyB7TXVsdGlUb2tlbn1cbiAqL1xuZnVuY3Rpb24gaW5pdE11bHRpVG9rZW4oTXVsdGksIGlucHV0LCB0b2tlbnMpIHtcbiAgY29uc3Qgc3RhcnRJZHggPSB0b2tlbnNbMF0ucztcbiAgY29uc3QgZW5kSWR4ID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXS5lO1xuICBjb25zdCB2YWx1ZSA9IGlucHV0LnNsaWNlKHN0YXJ0SWR4LCBlbmRJZHgpO1xuICByZXR1cm4gbmV3IE11bHRpKHZhbHVlLCB0b2tlbnMpO1xufVxuXG5jb25zdCB3YXJuID0gdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUgJiYgY29uc29sZS53YXJuIHx8ICgoKSA9PiB7fSk7XG5jb25zdCB3YXJuQWR2aWNlID0gJ3VudGlsIG1hbnVhbCBjYWxsIG9mIGxpbmtpZnkuaW5pdCgpLiBSZWdpc3RlciBhbGwgc2NoZW1lcyBhbmQgcGx1Z2lucyBiZWZvcmUgaW52b2tpbmcgbGlua2lmeSB0aGUgZmlyc3QgdGltZS4nO1xuXG4vLyBTaWRlLWVmZmVjdCBpbml0aWFsaXphdGlvbiBzdGF0ZVxuY29uc3QgSU5JVCA9IHtcbiAgc2Nhbm5lcjogbnVsbCxcbiAgcGFyc2VyOiBudWxsLFxuICB0b2tlblF1ZXVlOiBbXSxcbiAgcGx1Z2luUXVldWU6IFtdLFxuICBjdXN0b21TY2hlbWVzOiBbXSxcbiAgaW5pdGlhbGl6ZWQ6IGZhbHNlXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHt7XG4gKiBcdHN0YXJ0OiBTdGF0ZTxzdHJpbmc+LFxuICogXHR0b2tlbnM6IHsgZ3JvdXBzOiBDb2xsZWN0aW9uczxzdHJpbmc+IH0gJiB0eXBlb2YgdGtcbiAqIH19IFNjYW5uZXJJbml0XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7e1xuICogXHRzdGFydDogU3RhdGU8TXVsdGlUb2tlbj4sXG4gKiBcdHRva2VuczogdHlwZW9mIG11bHRpXG4gKiB9fSBQYXJzZXJJbml0XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KGFyZzogeyBzY2FubmVyOiBTY2FubmVySW5pdCB9KSA9PiB2b2lkfSBUb2tlblBsdWdpblxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhhcmc6IHsgc2Nhbm5lcjogU2Nhbm5lckluaXQsIHBhcnNlcjogUGFyc2VySW5pdCB9KSA9PiB2b2lkfSBQbHVnaW5cbiAqL1xuXG4vKipcbiAqIERlLXJlZ2lzdGVyIGFsbCBwbHVnaW5zIGFuZCByZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUtbWFjaGluZS4gVXNlZCBmb3JcbiAqIHRlc3Rpbmc7IG5vdCByZXF1aXJlZCBpbiBwcmFjdGljZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHJlc2V0KCkge1xuICBTdGF0ZS5ncm91cHMgPSB7fTtcbiAgSU5JVC5zY2FubmVyID0gbnVsbDtcbiAgSU5JVC5wYXJzZXIgPSBudWxsO1xuICBJTklULnRva2VuUXVldWUgPSBbXTtcbiAgSU5JVC5wbHVnaW5RdWV1ZSA9IFtdO1xuICBJTklULmN1c3RvbVNjaGVtZXMgPSBbXTtcbiAgSU5JVC5pbml0aWFsaXplZCA9IGZhbHNlO1xuICByZXR1cm4gSU5JVDtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIHRva2VuIHBsdWdpbiB0byBhbGxvdyB0aGUgc2Nhbm5lciB0byByZWNvZ25pemUgYWRkaXRpb25hbCB0b2tlblxuICogdHlwZXMgYmVmb3JlIHRoZSBwYXJzZXIgc3RhdGUgbWFjaGluZSBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSByZXN1bHRzLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgb2YgcGx1Z2luIHRvIHJlZ2lzdGVyXG4gKiBAcGFyYW0ge1Rva2VuUGx1Z2lufSBwbHVnaW4gZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBzY2FubmVyIHN0YXRlIG1hY2hpbmVcbiAqIGFuZCBhdmFpbGFibGUgc2Nhbm5lciB0b2tlbnMgYW5kIGNvbGxlY3Rpb25zIGFuZCBleHRlbmRzIHRoZSBzdGF0ZSBtYWNoaW5lIHRvXG4gKiByZWNvZ25pemUgYWRkaXRpb25hbCB0b2tlbnMgb3IgZ3JvdXBzLlxuICovXG5mdW5jdGlvbiByZWdpc3RlclRva2VuUGx1Z2luKG5hbWUsIHBsdWdpbikge1xuICBpZiAodHlwZW9mIHBsdWdpbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgbGlua2lmeWpzOiBJbnZhbGlkIHRva2VuIHBsdWdpbiAke3BsdWdpbn0gKGV4cGVjdHMgZnVuY3Rpb24pYCk7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBJTklULnRva2VuUXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobmFtZSA9PT0gSU5JVC50b2tlblF1ZXVlW2ldWzBdKSB7XG4gICAgICB3YXJuKGBsaW5raWZ5anM6IHRva2VuIHBsdWdpbiBcIiR7bmFtZX1cIiBhbHJlYWR5IHJlZ2lzdGVyZWQgLSB3aWxsIGJlIG92ZXJ3cml0dGVuYCk7XG4gICAgICBJTklULnRva2VuUXVldWVbaV0gPSBbbmFtZSwgcGx1Z2luXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgSU5JVC50b2tlblF1ZXVlLnB1c2goW25hbWUsIHBsdWdpbl0pO1xuICBpZiAoSU5JVC5pbml0aWFsaXplZCkge1xuICAgIHdhcm4oYGxpbmtpZnlqczogYWxyZWFkeSBpbml0aWFsaXplZCAtIHdpbGwgbm90IHJlZ2lzdGVyIHRva2VuIHBsdWdpbiBcIiR7bmFtZX1cIiAke3dhcm5BZHZpY2V9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIGxpbmtpZnkgcGx1Z2luXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBvZiBwbHVnaW4gdG8gcmVnaXN0ZXJcbiAqIEBwYXJhbSB7UGx1Z2lufSBwbHVnaW4gZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBwYXJzZXIgc3RhdGUgbWFjaGluZSBhbmRcbiAqIGV4dGVuZHMgdGhlIHBhcnNlciB0byByZWNvZ25pemUgYWRkaXRpb25hbCBsaW5rIHR5cGVzXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyUGx1Z2luKG5hbWUsIHBsdWdpbikge1xuICBpZiAodHlwZW9mIHBsdWdpbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgbGlua2lmeWpzOiBJbnZhbGlkIHBsdWdpbiAke3BsdWdpbn0gKGV4cGVjdHMgZnVuY3Rpb24pYCk7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBJTklULnBsdWdpblF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKG5hbWUgPT09IElOSVQucGx1Z2luUXVldWVbaV1bMF0pIHtcbiAgICAgIHdhcm4oYGxpbmtpZnlqczogcGx1Z2luIFwiJHtuYW1lfVwiIGFscmVhZHkgcmVnaXN0ZXJlZCAtIHdpbGwgYmUgb3ZlcndyaXR0ZW5gKTtcbiAgICAgIElOSVQucGx1Z2luUXVldWVbaV0gPSBbbmFtZSwgcGx1Z2luXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgSU5JVC5wbHVnaW5RdWV1ZS5wdXNoKFtuYW1lLCBwbHVnaW5dKTtcbiAgaWYgKElOSVQuaW5pdGlhbGl6ZWQpIHtcbiAgICB3YXJuKGBsaW5raWZ5anM6IGFscmVhZHkgaW5pdGlhbGl6ZWQgLSB3aWxsIG5vdCByZWdpc3RlciBwbHVnaW4gXCIke25hbWV9XCIgJHt3YXJuQWR2aWNlfWApO1xuICB9XG59XG5cbi8qKlxuICogRGV0ZWN0IFVSTHMgd2l0aCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgcHJvdG9jb2wuIEFueXRoaW5nIHdpdGggZm9ybWF0XG4gKiBcInByb3RvY29sOi8vLi4uXCIgd2lsbCBiZSBjb25zaWRlcmVkIGEgbGluay4gSWYgYG9wdGlvbmFsU2xhc2hTbGFzaGAgaXMgc2V0IHRvXG4gKiBgdHJ1ZWAsIGFueXRoaW5nIHdpdGggZm9ybWF0IFwicHJvdG9jb2w6Li4uXCIgd2lsbCBiZSBjb25zaWRlcmVkIGEgbGluay5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbmFsU2xhc2hTbGFzaF1cbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJDdXN0b21Qcm90b2NvbChzY2hlbWUsIG9wdGlvbmFsU2xhc2hTbGFzaCA9IGZhbHNlKSB7XG4gIGlmIChJTklULmluaXRpYWxpemVkKSB7XG4gICAgd2FybihgbGlua2lmeWpzOiBhbHJlYWR5IGluaXRpYWxpemVkIC0gd2lsbCBub3QgcmVnaXN0ZXIgY3VzdG9tIHNjaGVtZSBcIiR7c2NoZW1lfVwiICR7d2FybkFkdmljZX1gKTtcbiAgfVxuICBpZiAoIS9eWzAtOWEtel0rKC1bMC05YS16XSspKiQvLnRlc3Qoc2NoZW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbGlua2lmeWpzOiBpbmNvcnJlY3Qgc2NoZW1lIGZvcm1hdC5cbjEuIE11c3Qgb25seSBjb250YWluIGRpZ2l0cywgbG93ZXJjYXNlIEFTQ0lJIGxldHRlcnMgb3IgXCItXCJcbjIuIENhbm5vdCBzdGFydCBvciBlbmQgd2l0aCBcIi1cIlxuMy4gXCItXCIgY2Fubm90IHJlcGVhdGApO1xuICB9XG4gIElOSVQuY3VzdG9tU2NoZW1lcy5wdXNoKFtzY2hlbWUsIG9wdGlvbmFsU2xhc2hTbGFzaF0pO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGxpbmtpZnkgc3RhdGUgbWFjaGluZS4gQ2FsbGVkIGF1dG9tYXRpY2FsbHkgdGhlIGZpcnN0IHRpbWVcbiAqIGxpbmtpZnkgaXMgY2FsbGVkIG9uIGEgc3RyaW5nLCBidXQgbWF5IGJlIGNhbGxlZCBtYW51YWxseSBhcyB3ZWxsLlxuICovXG5mdW5jdGlvbiBpbml0KCkge1xuICAvLyBJbml0aWFsaXplIHNjYW5uZXIgc3RhdGUgbWFjaGluZSBhbmQgcGx1Z2luc1xuICBJTklULnNjYW5uZXIgPSBpbml0JDIoSU5JVC5jdXN0b21TY2hlbWVzKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBJTklULnRva2VuUXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBJTklULnRva2VuUXVldWVbaV1bMV0oe1xuICAgICAgc2Nhbm5lcjogSU5JVC5zY2FubmVyXG4gICAgfSk7XG4gIH1cblxuICAvLyBJbml0aWFsaXplIHBhcnNlciBzdGF0ZSBtYWNoaW5lIGFuZCBwbHVnaW5zXG4gIElOSVQucGFyc2VyID0gaW5pdCQxKElOSVQuc2Nhbm5lci50b2tlbnMpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IElOSVQucGx1Z2luUXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBJTklULnBsdWdpblF1ZXVlW2ldWzFdKHtcbiAgICAgIHNjYW5uZXI6IElOSVQuc2Nhbm5lcixcbiAgICAgIHBhcnNlcjogSU5JVC5wYXJzZXJcbiAgICB9KTtcbiAgfVxuICBJTklULmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgcmV0dXJuIElOSVQ7XG59XG5cbi8qKlxuICogUGFyc2UgYSBzdHJpbmcgaW50byB0b2tlbnMgdGhhdCByZXByZXNlbnQgbGlua2FibGUgYW5kIG5vbi1saW5rYWJsZSBzdWItY29tcG9uZW50c1xuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7TXVsdGlUb2tlbltdfSB0b2tlbnNcbiAqL1xuZnVuY3Rpb24gdG9rZW5pemUoc3RyKSB7XG4gIGlmICghSU5JVC5pbml0aWFsaXplZCkge1xuICAgIGluaXQoKTtcbiAgfVxuICByZXR1cm4gcnVuKElOSVQucGFyc2VyLnN0YXJ0LCBzdHIsIHJ1biQxKElOSVQuc2Nhbm5lci5zdGFydCwgc3RyKSk7XG59XG50b2tlbml6ZS5zY2FuID0gcnVuJDE7IC8vIGZvciB0ZXN0aW5nXG5cbi8qKlxuICogRmluZCBhIGxpc3Qgb2YgbGlua2FibGUgaXRlbXMgaW4gdGhlIGdpdmVuIHN0cmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgc3RyaW5nIHRvIGZpbmQgbGlua3MgaW5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgT3B0c30gW3R5cGVdIGVpdGhlciBmb3JtYXR0aW5nIG9wdGlvbnMgb3Igc3BlY2lmaWMgdHlwZSBvZlxuICogbGlua3MgdG8gZmluZCwgZS5nLiwgJ3VybCcgb3IgJ2VtYWlsJ1xuICogQHBhcmFtIHtPcHRzfSBbb3B0c10gZm9ybWF0dGluZyBvcHRpb25zIGZvciBmaW5hbCBvdXRwdXQuIENhbm5vdCBiZSBzcGVjaWZpZWRcbiAqIGlmIG9wdHMgYWxyZWFkeSBwcm92aWRlZCBpbiBgdHlwZWAgYXJndW1lbnRcbiAqL1xuZnVuY3Rpb24gZmluZChzdHIsIHR5cGUgPSBudWxsLCBvcHRzID0gbnVsbCkge1xuICBpZiAodHlwZSAmJiB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAob3B0cykge1xuICAgICAgdGhyb3cgRXJyb3IoYGxpbmtpZnlqczogSW52YWxpZCBsaW5rIHR5cGUgJHt0eXBlfTsgbXVzdCBiZSBhIHN0cmluZ2ApO1xuICAgIH1cbiAgICBvcHRzID0gdHlwZTtcbiAgICB0eXBlID0gbnVsbDtcbiAgfVxuICBjb25zdCBvcHRpb25zID0gbmV3IE9wdGlvbnMob3B0cyk7XG4gIGNvbnN0IHRva2VucyA9IHRva2VuaXplKHN0cik7XG4gIGNvbnN0IGZpbHRlcmVkID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgaWYgKHRva2VuLmlzTGluayAmJiAoIXR5cGUgfHwgdG9rZW4udCA9PT0gdHlwZSkgJiYgb3B0aW9ucy5jaGVjayh0b2tlbikpIHtcbiAgICAgIGZpbHRlcmVkLnB1c2godG9rZW4udG9Gb3JtYXR0ZWRPYmplY3Qob3B0aW9ucykpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmlsdGVyZWQ7XG59XG5cbi8qKlxuICogSXMgdGhlIGdpdmVuIHN0cmluZyB2YWxpZCBsaW5rYWJsZSB0ZXh0IG9mIHNvbWUgc29ydC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3RcbiAqIHRyaW0gdGhlIHRleHQgZm9yIHlvdS5cbiAqXG4gKiBPcHRpb25hbGx5IHBhc3MgaW4gYSBzZWNvbmQgYHR5cGVgIHBhcmFtLCB3aGljaCBpcyB0aGUgdHlwZSBvZiBsaW5rIHRvIHRlc3RcbiAqIGZvci5cbiAqXG4gKiBGb3IgZXhhbXBsZSxcbiAqXG4gKiAgICAgbGlua2lmeS50ZXN0KHN0ciwgJ2VtYWlsJyk7XG4gKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgc3RyIGlzIGEgdmFsaWQgZW1haWwuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIHN0cmluZyB0byB0ZXN0IGZvciBsaW5rc1xuICogQHBhcmFtIHtzdHJpbmd9IFt0eXBlXSBvcHRpb25hbCBzcGVjaWZpYyBsaW5rIHR5cGUgdG8gbG9vayBmb3JcbiAqIEByZXR1cm5zIGJvb2xlYW4gdHJ1ZS9mYWxzZVxuICovXG5mdW5jdGlvbiB0ZXN0KHN0ciwgdHlwZSA9IG51bGwpIHtcbiAgY29uc3QgdG9rZW5zID0gdG9rZW5pemUoc3RyKTtcbiAgcmV0dXJuIHRva2Vucy5sZW5ndGggPT09IDEgJiYgdG9rZW5zWzBdLmlzTGluayAmJiAoIXR5cGUgfHwgdG9rZW5zWzBdLnQgPT09IHR5cGUpO1xufVxuXG5leHBvcnQgeyBNdWx0aVRva2VuLCBPcHRpb25zLCBTdGF0ZSwgY3JlYXRlVG9rZW5DbGFzcywgZmluZCwgaW5pdCwgbXVsdGksIG9wdGlvbnMsIHJlZ2V4cCwgcmVnaXN0ZXJDdXN0b21Qcm90b2NvbCwgcmVnaXN0ZXJQbHVnaW4sIHJlZ2lzdGVyVG9rZW5QbHVnaW4sIHJlc2V0LCBzdHJpbmdUb0FycmF5LCB0ZXN0LCBtdWx0aSBhcyB0ZXh0LCB0b2tlbml6ZSB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/linkifyjs/dist/linkify.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/orderedmap/dist/index.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/orderedmap/dist/index.js ***!
|
||
\***********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union<Object, OrderedMap>) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union<Object, OrderedMap>) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union<Object, OrderedMap>) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () → Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union<Object, OrderedMap>) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderedMap);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9vcmRlcmVkbWFwL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQix5QkFBeUI7QUFDN0M7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHlCQUF5QjtBQUM3QztBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isd0JBQXdCO0FBQzVDO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLHNCQUFzQjtBQUM5RDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcb3JkZXJlZG1hcFxcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gOjotIFBlcnNpc3RlbnQgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGFuIG9yZGVyZWQgbWFwcGluZyBmcm9tXG4vLyBzdHJpbmdzIHRvIHZhbHVlcywgd2l0aCBzb21lIGNvbnZlbmllbnQgdXBkYXRlIG1ldGhvZHMuXG5mdW5jdGlvbiBPcmRlcmVkTWFwKGNvbnRlbnQpIHtcbiAgdGhpcy5jb250ZW50ID0gY29udGVudDtcbn1cblxuT3JkZXJlZE1hcC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBPcmRlcmVkTWFwLFxuXG4gIGZpbmQ6IGZ1bmN0aW9uKGtleSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb250ZW50Lmxlbmd0aDsgaSArPSAyKVxuICAgICAgaWYgKHRoaXMuY29udGVudFtpXSA9PT0ga2V5KSByZXR1cm4gaVxuICAgIHJldHVybiAtMVxuICB9LFxuXG4gIC8vIDo6IChzdHJpbmcpIOKGkiA/YW55XG4gIC8vIFJldHJpZXZlIHRoZSB2YWx1ZSBzdG9yZWQgdW5kZXIgYGtleWAsIG9yIHJldHVybiB1bmRlZmluZWQgd2hlblxuICAvLyBubyBzdWNoIGtleSBleGlzdHMuXG4gIGdldDogZnVuY3Rpb24oa2V5KSB7XG4gICAgdmFyIGZvdW5kID0gdGhpcy5maW5kKGtleSk7XG4gICAgcmV0dXJuIGZvdW5kID09IC0xID8gdW5kZWZpbmVkIDogdGhpcy5jb250ZW50W2ZvdW5kICsgMV1cbiAgfSxcblxuICAvLyA6OiAoc3RyaW5nLCBhbnksID9zdHJpbmcpIOKGkiBPcmRlcmVkTWFwXG4gIC8vIENyZWF0ZSBhIG5ldyBtYXAgYnkgcmVwbGFjaW5nIHRoZSB2YWx1ZSBvZiBga2V5YCB3aXRoIGEgbmV3XG4gIC8vIHZhbHVlLCBvciBhZGRpbmcgYSBiaW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIG1hcC4gSWYgYG5ld0tleWAgaXNcbiAgLy8gZ2l2ZW4sIHRoZSBrZXkgb2YgdGhlIGJpbmRpbmcgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoYXQga2V5LlxuICB1cGRhdGU6IGZ1bmN0aW9uKGtleSwgdmFsdWUsIG5ld0tleSkge1xuICAgIHZhciBzZWxmID0gbmV3S2V5ICYmIG5ld0tleSAhPSBrZXkgPyB0aGlzLnJlbW92ZShuZXdLZXkpIDogdGhpcztcbiAgICB2YXIgZm91bmQgPSBzZWxmLmZpbmQoa2V5KSwgY29udGVudCA9IHNlbGYuY29udGVudC5zbGljZSgpO1xuICAgIGlmIChmb3VuZCA9PSAtMSkge1xuICAgICAgY29udGVudC5wdXNoKG5ld0tleSB8fCBrZXksIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudFtmb3VuZCArIDFdID0gdmFsdWU7XG4gICAgICBpZiAobmV3S2V5KSBjb250ZW50W2ZvdW5kXSA9IG5ld0tleTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBPcmRlcmVkTWFwKGNvbnRlbnQpXG4gIH0sXG5cbiAgLy8gOjogKHN0cmluZykg4oaSIE9yZGVyZWRNYXBcbiAgLy8gUmV0dXJuIGEgbWFwIHdpdGggdGhlIGdpdmVuIGtleSByZW1vdmVkLCBpZiBpdCBleGlzdGVkLlxuICByZW1vdmU6IGZ1bmN0aW9uKGtleSkge1xuICAgIHZhciBmb3VuZCA9IHRoaXMuZmluZChrZXkpO1xuICAgIGlmIChmb3VuZCA9PSAtMSkgcmV0dXJuIHRoaXNcbiAgICB2YXIgY29udGVudCA9IHRoaXMuY29udGVudC5zbGljZSgpO1xuICAgIGNvbnRlbnQuc3BsaWNlKGZvdW5kLCAyKTtcbiAgICByZXR1cm4gbmV3IE9yZGVyZWRNYXAoY29udGVudClcbiAgfSxcblxuICAvLyA6OiAoc3RyaW5nLCBhbnkpIOKGkiBPcmRlcmVkTWFwXG4gIC8vIEFkZCBhIG5ldyBrZXkgdG8gdGhlIHN0YXJ0IG9mIHRoZSBtYXAuXG4gIGFkZFRvU3RhcnQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IE9yZGVyZWRNYXAoW2tleSwgdmFsdWVdLmNvbmNhdCh0aGlzLnJlbW92ZShrZXkpLmNvbnRlbnQpKVxuICB9LFxuXG4gIC8vIDo6IChzdHJpbmcsIGFueSkg4oaSIE9yZGVyZWRNYXBcbiAgLy8gQWRkIGEgbmV3IGtleSB0byB0aGUgZW5kIG9mIHRoZSBtYXAuXG4gIGFkZFRvRW5kOiBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG4gICAgdmFyIGNvbnRlbnQgPSB0aGlzLnJlbW92ZShrZXkpLmNvbnRlbnQuc2xpY2UoKTtcbiAgICBjb250ZW50LnB1c2goa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuIG5ldyBPcmRlcmVkTWFwKGNvbnRlbnQpXG4gIH0sXG5cbiAgLy8gOjogKHN0cmluZywgc3RyaW5nLCBhbnkpIOKGkiBPcmRlcmVkTWFwXG4gIC8vIEFkZCBhIGtleSBhZnRlciB0aGUgZ2l2ZW4ga2V5LiBJZiBgcGxhY2VgIGlzIG5vdCBmb3VuZCwgdGhlIG5ld1xuICAvLyBrZXkgaXMgYWRkZWQgdG8gdGhlIGVuZC5cbiAgYWRkQmVmb3JlOiBmdW5jdGlvbihwbGFjZSwga2V5LCB2YWx1ZSkge1xuICAgIHZhciB3aXRob3V0ID0gdGhpcy5yZW1vdmUoa2V5KSwgY29udGVudCA9IHdpdGhvdXQuY29udGVudC5zbGljZSgpO1xuICAgIHZhciBmb3VuZCA9IHdpdGhvdXQuZmluZChwbGFjZSk7XG4gICAgY29udGVudC5zcGxpY2UoZm91bmQgPT0gLTEgPyBjb250ZW50Lmxlbmd0aCA6IGZvdW5kLCAwLCBrZXksIHZhbHVlKTtcbiAgICByZXR1cm4gbmV3IE9yZGVyZWRNYXAoY29udGVudClcbiAgfSxcblxuICAvLyA6OiAoKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSlcbiAgLy8gQ2FsbCB0aGUgZ2l2ZW4gZnVuY3Rpb24gZm9yIGVhY2gga2V5L3ZhbHVlIHBhaXIgaW4gdGhlIG1hcCwgaW5cbiAgLy8gb3JkZXIuXG4gIGZvckVhY2g6IGZ1bmN0aW9uKGYpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY29udGVudC5sZW5ndGg7IGkgKz0gMilcbiAgICAgIGYodGhpcy5jb250ZW50W2ldLCB0aGlzLmNvbnRlbnRbaSArIDFdKTtcbiAgfSxcblxuICAvLyA6OiAodW5pb248T2JqZWN0LCBPcmRlcmVkTWFwPikg4oaSIE9yZGVyZWRNYXBcbiAgLy8gQ3JlYXRlIGEgbmV3IG1hcCBieSBwcmVwZW5kaW5nIHRoZSBrZXlzIGluIHRoaXMgbWFwIHRoYXQgZG9uJ3RcbiAgLy8gYXBwZWFyIGluIGBtYXBgIGJlZm9yZSB0aGUga2V5cyBpbiBgbWFwYC5cbiAgcHJlcGVuZDogZnVuY3Rpb24obWFwKSB7XG4gICAgbWFwID0gT3JkZXJlZE1hcC5mcm9tKG1hcCk7XG4gICAgaWYgKCFtYXAuc2l6ZSkgcmV0dXJuIHRoaXNcbiAgICByZXR1cm4gbmV3IE9yZGVyZWRNYXAobWFwLmNvbnRlbnQuY29uY2F0KHRoaXMuc3VidHJhY3QobWFwKS5jb250ZW50KSlcbiAgfSxcblxuICAvLyA6OiAodW5pb248T2JqZWN0LCBPcmRlcmVkTWFwPikg4oaSIE9yZGVyZWRNYXBcbiAgLy8gQ3JlYXRlIGEgbmV3IG1hcCBieSBhcHBlbmRpbmcgdGhlIGtleXMgaW4gdGhpcyBtYXAgdGhhdCBkb24ndFxuICAvLyBhcHBlYXIgaW4gYG1hcGAgYWZ0ZXIgdGhlIGtleXMgaW4gYG1hcGAuXG4gIGFwcGVuZDogZnVuY3Rpb24obWFwKSB7XG4gICAgbWFwID0gT3JkZXJlZE1hcC5mcm9tKG1hcCk7XG4gICAgaWYgKCFtYXAuc2l6ZSkgcmV0dXJuIHRoaXNcbiAgICByZXR1cm4gbmV3IE9yZGVyZWRNYXAodGhpcy5zdWJ0cmFjdChtYXApLmNvbnRlbnQuY29uY2F0KG1hcC5jb250ZW50KSlcbiAgfSxcblxuICAvLyA6OiAodW5pb248T2JqZWN0LCBPcmRlcmVkTWFwPikg4oaSIE9yZGVyZWRNYXBcbiAgLy8gQ3JlYXRlIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBrZXlzIGluIHRoaXMgbWFwIHRoYXQgZG9uJ3RcbiAgLy8gYXBwZWFyIGluIGBtYXBgLlxuICBzdWJ0cmFjdDogZnVuY3Rpb24obWFwKSB7XG4gICAgdmFyIHJlc3VsdCA9IHRoaXM7XG4gICAgbWFwID0gT3JkZXJlZE1hcC5mcm9tKG1hcCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXAuY29udGVudC5sZW5ndGg7IGkgKz0gMilcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZW1vdmUobWFwLmNvbnRlbnRbaV0pO1xuICAgIHJldHVybiByZXN1bHRcbiAgfSxcblxuICAvLyA6OiAoKSDihpIgT2JqZWN0XG4gIC8vIFR1cm4gb3JkZXJlZCBtYXAgaW50byBhIHBsYWluIG9iamVjdC5cbiAgdG9PYmplY3Q6IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeyByZXN1bHRba2V5XSA9IHZhbHVlOyB9KTtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sXG5cbiAgLy8gOjogbnVtYmVyXG4gIC8vIFRoZSBhbW91bnQgb2Yga2V5cyBpbiB0aGlzIG1hcC5cbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGggPj4gMVxuICB9XG59O1xuXG4vLyA6OiAoP3VuaW9uPE9iamVjdCwgT3JkZXJlZE1hcD4pIOKGkiBPcmRlcmVkTWFwXG4vLyBSZXR1cm4gYSBtYXAgd2l0aCB0aGUgZ2l2ZW4gY29udGVudC4gSWYgbnVsbCwgY3JlYXRlIGFuIGVtcHR5XG4vLyBtYXAuIElmIGdpdmVuIGFuIG9yZGVyZWQgbWFwLCByZXR1cm4gdGhhdCBtYXAgaXRzZWxmLiBJZiBnaXZlbiBhblxuLy8gb2JqZWN0LCBjcmVhdGUgYSBtYXAgZnJvbSB0aGUgb2JqZWN0J3MgcHJvcGVydGllcy5cbk9yZGVyZWRNYXAuZnJvbSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9yZGVyZWRNYXApIHJldHVybiB2YWx1ZVxuICB2YXIgY29udGVudCA9IFtdO1xuICBpZiAodmFsdWUpIGZvciAodmFyIHByb3AgaW4gdmFsdWUpIGNvbnRlbnQucHVzaChwcm9wLCB2YWx1ZVtwcm9wXSk7XG4gIHJldHVybiBuZXcgT3JkZXJlZE1hcChjb250ZW50KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJlZE1hcDtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/orderedmap/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-commands/dist/index.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/prosemirror-commands/dist/index.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ autoJoin: () => (/* binding */ autoJoin),\n/* harmony export */ baseKeymap: () => (/* binding */ baseKeymap),\n/* harmony export */ chainCommands: () => (/* binding */ chainCommands),\n/* harmony export */ createParagraphNear: () => (/* binding */ createParagraphNear),\n/* harmony export */ deleteSelection: () => (/* binding */ deleteSelection),\n/* harmony export */ exitCode: () => (/* binding */ exitCode),\n/* harmony export */ joinBackward: () => (/* binding */ joinBackward),\n/* harmony export */ joinDown: () => (/* binding */ joinDown),\n/* harmony export */ joinForward: () => (/* binding */ joinForward),\n/* harmony export */ joinTextblockBackward: () => (/* binding */ joinTextblockBackward),\n/* harmony export */ joinTextblockForward: () => (/* binding */ joinTextblockForward),\n/* harmony export */ joinUp: () => (/* binding */ joinUp),\n/* harmony export */ lift: () => (/* binding */ lift),\n/* harmony export */ liftEmptyBlock: () => (/* binding */ liftEmptyBlock),\n/* harmony export */ macBaseKeymap: () => (/* binding */ macBaseKeymap),\n/* harmony export */ newlineInCode: () => (/* binding */ newlineInCode),\n/* harmony export */ pcBaseKeymap: () => (/* binding */ pcBaseKeymap),\n/* harmony export */ selectAll: () => (/* binding */ selectAll),\n/* harmony export */ selectNodeBackward: () => (/* binding */ selectNodeBackward),\n/* harmony export */ selectNodeForward: () => (/* binding */ selectNodeForward),\n/* harmony export */ selectParentNode: () => (/* binding */ selectParentNode),\n/* harmony export */ selectTextblockEnd: () => (/* binding */ selectTextblockEnd),\n/* harmony export */ selectTextblockStart: () => (/* binding */ selectTextblockStart),\n/* harmony export */ setBlockType: () => (/* binding */ setBlockType),\n/* harmony export */ splitBlock: () => (/* binding */ splitBlock),\n/* harmony export */ splitBlockAs: () => (/* binding */ splitBlockAs),\n/* harmony export */ splitBlockKeepMarks: () => (/* binding */ splitBlockKeepMarks),\n/* harmony export */ toggleMark: () => (/* binding */ toggleMark),\n/* harmony export */ wrapIn: () => (/* binding */ wrapIn)\n/* harmony export */ });\n/* harmony import */ var prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-transform */ \"(app-pages-browser)/./node_modules/prosemirror-transform/dist/index.js\");\n/* harmony import */ var prosemirror_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prosemirror-model */ \"(app-pages-browser)/./node_modules/prosemirror-model/dist/index.js\");\n/* harmony import */ var prosemirror_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prosemirror-state */ \"(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js\");\n\n\n\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it—if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.liftTarget)(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, -1))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(before))) {\n for (let depth = $cursor.depth;; depth--) {\n let delStep = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.replaceStep)(state.doc, $cursor.before(depth), $cursor.after(depth), prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\")\n ? prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n if (depth == 1 || $cursor.node(depth - 1).childCount > 1)\n break;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.replaceStep)(state.doc, beforePos, afterPos, prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, 1))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(after))) {\n let delStep = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.replaceStep)(state.doc, $cursor.before(), $cursor.after(), prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !(0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canJoin)(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.joinPoint)(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection) {\n if (sel.node.isTextblock || !(0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canJoin)(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.joinPoint)(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.liftTarget)(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if ((0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canSplit)(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.liftTarget)(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !(0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canSplit)(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.depth)\n return false;\n let types = [];\n let splitDepth, deflt, atEnd = false, atStart = false;\n for (let d = $from.depth;; d--) {\n let node = $from.node(d);\n if (node.isBlock) {\n atEnd = $from.end(d) == $from.pos + ($from.depth - d);\n atStart = $from.start(d) == $from.pos - ($from.depth - d);\n deflt = defaultBlockAt($from.node(d - 1).contentMatchAt($from.indexAfter(d - 1)));\n let splitType = splitNode && splitNode($to.parent, atEnd, $from);\n types.unshift(splitType || (atEnd && deflt ? { type: deflt } : null));\n splitDepth = d;\n break;\n }\n else {\n if (d == 1)\n return false;\n types.unshift(null);\n }\n }\n let tr = state.tr;\n if (state.selection instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection || state.selection instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.AllSelection)\n tr.deleteSelection();\n let splitPos = tr.mapping.map($from.pos);\n let can = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canSplit)(tr.doc, splitPos, types.length, types);\n if (!can) {\n types[0] = deflt ? { type: deflt } : null;\n can = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canSplit)(tr.doc, splitPos, types.length, types);\n }\n if (!can)\n return false;\n tr.split(splitPos, types.length, types);\n if (!atEnd && atStart && $from.node(splitDepth).type != deflt) {\n let first = tr.mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);\n if (deflt && $from.node(splitDepth - 1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before(splitDepth)), deflt);\n }\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canJoin)(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr.join($pos.pos).scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch, dir) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n let isolated = before.type.spec.isolating || after.type.spec.isolating;\n if (!isolated && joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = !isolated && $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Fragment.from(conn[i].create(null, wrap));\n wrap = prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Slice(wrap, 1, 0), conn.length, true));\n let $joinAt = tr.doc.resolve(end + 2 * conn.length);\n if ($joinAt.nodeAfter && $joinAt.nodeAfter.type == before.type &&\n (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canJoin)(tr.doc, $joinAt.pos))\n tr.join($joinAt.pos);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = after.type.spec.isolating || (dir > 0 && isolated) ? null : prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.liftTarget)(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new prosemirror_model__WEBPACK_IMPORTED_MODULE_2__.Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.findWrapping)(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type, enterAtoms) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (can || !enterAtoms && node.isAtom && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\nfunction removeInlineAtoms(ranges) {\n let result = [];\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n $from.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (node.isAtom && node.content.size && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos) {\n if (pos + 1 > $from.pos)\n result.push(new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.SelectionRange($from, $from.doc.resolve(pos + 1)));\n $from = $from.doc.resolve(pos + 1 + node.content.size);\n return false;\n }\n });\n if ($from.pos < $to.pos)\n result.push(new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.SelectionRange($from, $to));\n }\n return result;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null, options) {\n let removeWhenPresent = (options && options.removeWhenPresent) !== false;\n let enterAtoms = (options && options.enterInlineAtoms) !== false;\n let dropSpace = !(options && options.includeWhitespace);\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType, enterAtoms))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let add, tr = state.tr;\n if (!enterAtoms)\n ranges = removeInlineAtoms(ranges);\n if (removeWhenPresent) {\n add = !ranges.some(r => state.doc.rangeHasMark(r.$from.pos, r.$to.pos, markType));\n }\n else {\n add = !ranges.every(r => {\n let missing = false;\n tr.doc.nodesBetween(r.$from.pos, r.$to.pos, (node, pos, parent) => {\n if (missing)\n return false;\n missing = !markType.isInSet(node.marks) && !!parent && parent.type.allowsMarkType(markType) &&\n !(node.isText && /^\\s*$/.test(node.textBetween(Math.max(0, r.$from.pos - pos), Math.min(node.nodeSize, r.$to.pos - pos))));\n });\n return !missing;\n });\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (!add) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = dropSpace && start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = dropSpace && end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if ((0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__.canJoin)(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci1jb21tYW5kcy9kaXN0L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTRJO0FBQ3hGO0FBQ3NEOztBQUUxRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxVQUFVO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxpRUFBVTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qyw0REFBYTtBQUNwRCx5Q0FBeUM7QUFDekMsMEJBQTBCLGtFQUFXLHlEQUF5RCxvREFBSztBQUNuRztBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix3REFBUztBQUNuQywwQkFBMEIsNERBQWE7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsd0JBQXdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrRUFBVyxpQ0FBaUMsb0RBQUs7QUFDaEU7QUFD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMGIiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHByb3NlbWlycm9yLWNvbW1hbmRzXFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsaWZ0VGFyZ2V0LCByZXBsYWNlU3RlcCwgUmVwbGFjZVN0ZXAsIGNhbkpvaW4sIGpvaW5Qb2ludCwgY2FuU3BsaXQsIFJlcGxhY2VBcm91bmRTdGVwLCBmaW5kV3JhcHBpbmcgfSBmcm9tICdwcm9zZW1pcnJvci10cmFuc2Zvcm0nO1xuaW1wb3J0IHsgU2xpY2UsIEZyYWdtZW50IH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHsgTm9kZVNlbGVjdGlvbiwgU2VsZWN0aW9uLCBUZXh0U2VsZWN0aW9uLCBBbGxTZWxlY3Rpb24sIFNlbGVjdGlvblJhbmdlIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuXG4vKipcbkRlbGV0ZSB0aGUgc2VsZWN0aW9uLCBpZiB0aGVyZSBpcyBvbmUuXG4qL1xuY29uc3QgZGVsZXRlU2VsZWN0aW9uID0gKHN0YXRlLCBkaXNwYXRjaCkgPT4ge1xuICAgIGlmIChzdGF0ZS5zZWxlY3Rpb24uZW1wdHkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLmRlbGV0ZVNlbGVjdGlvbigpLnNjcm9sbEludG9WaWV3KCkpO1xuICAgIHJldHVybiB0cnVlO1xufTtcbmZ1bmN0aW9uIGF0QmxvY2tTdGFydChzdGF0ZSwgdmlldykge1xuICAgIGxldCB7ICRjdXJzb3IgfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgICBpZiAoISRjdXJzb3IgfHwgKHZpZXcgPyAhdmlldy5lbmRPZlRleHRibG9jayhcImJhY2t3YXJkXCIsIHN0YXRlKVxuICAgICAgICA6ICRjdXJzb3IucGFyZW50T2Zmc2V0ID4gMCkpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHJldHVybiAkY3Vyc29yO1xufVxuLyoqXG5JZiB0aGUgc2VsZWN0aW9uIGlzIGVtcHR5IGFuZCBhdCB0aGUgc3RhcnQgb2YgYSB0ZXh0YmxvY2ssIHRyeSB0b1xucmVkdWNlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoYXQgYmxvY2sgYW5kIHRoZSBvbmUgYmVmb3JlIGl04oCUaWZcbnRoZXJlJ3MgYSBibG9jayBkaXJlY3RseSBiZWZvcmUgaXQgdGhhdCBjYW4gYmUgam9pbmVkLCBqb2luIHRoZW0uXG5JZiBub3QsIHRyeSB0byBtb3ZlIHRoZSBzZWxlY3RlZCBibG9jayBjbG9zZXIgdG8gdGhlIG5leHQgb25lIGluXG50aGUgZG9jdW1lbnQgc3RydWN0dXJlIGJ5IGxpZnRpbmcgaXQgb3V0IG9mIGl0cyBwYXJlbnQgb3IgbW92aW5nIGl0XG5pbnRvIGEgcGFyZW50IG9mIHRoZSBwcmV2aW91cyBibG9jay4gV2lsbCB1c2UgdGhlIHZpZXcgZm9yIGFjY3VyYXRlXG4oYmlkaS1hd2FyZSkgc3RhcnQtb2YtdGV4dGJsb2NrIGRldGVjdGlvbiBpZiBnaXZlbi5cbiovXG5jb25zdCBqb2luQmFja3dhcmQgPSAoc3RhdGUsIGRpc3BhdGNoLCB2aWV3KSA9PiB7XG4gICAgbGV0ICRjdXJzb3IgPSBhdEJsb2NrU3RhcnQoc3RhdGUsIHZpZXcpO1xuICAgIGlmICghJGN1cnNvcilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGxldCAkY3V0ID0gZmluZEN1dEJlZm9yZSgkY3Vyc29yKTtcbiAgICAvLyBJZiB0aGVyZSBpcyBubyBub2RlIGJlZm9yZSB0aGlzLCB0cnkgdG8gbGlmdFxuICAgIGlmICghJGN1dCkge1xuICAgICAgICBsZXQgcmFuZ2UgPSAkY3Vyc29yLmJsb2NrUmFuZ2UoKSwgdGFyZ2V0ID0gcmFuZ2UgJiYgbGlmdFRhcmdldChyYW5nZSk7XG4gICAgICAgIGlmICh0YXJnZXQgPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICAgICAgZGlzcGF0Y2goc3RhdGUudHIubGlmdChyYW5nZSwgdGFyZ2V0KS5zY3JvbGxJbnRvVmlldygpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBiZWZvcmUgPSAkY3V0Lm5vZGVCZWZvcmU7XG4gICAgLy8gQXBwbHkgdGhlIGpvaW5pbmcgYWxnb3JpdGhtXG4gICAgaWYgKGRlbGV0ZUJhcnJpZXIoc3RhdGUsICRjdXQsIGRpc3BhdGNoLCAtMSkpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIC8vIElmIHRoZSBub2RlIGJlbG93IGhhcyBubyBjb250ZW50IGFuZCB0aGUgbm9kZSBhYm92ZSBpc1xuICAgIC8vIHNlbGVjdGFibGUsIGRlbGV0ZSB0aGUgbm9kZSBiZWxvdyBhbmQgc2VsZWN0IHRoZSBvbmUgYWJvdmUuXG4gICAgaWYgKCRjdXJzb3IucGFyZW50LmNvbnRlbnQuc2l6ZSA9PSAwICYmXG4gICAgICAgICh0ZXh0YmxvY2tBdChiZWZvcmUsIFwiZW5kXCIpIHx8IE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKGJlZm9yZSkpKSB7XG4gICAgICAgIGZvciAobGV0IGRlcHRoID0gJGN1cnNvci5kZXB0aDs7IGRlcHRoLS0pIHtcbiAgICAgICAgICAgIGxldCBkZWxTdGVwID0gcmVwbGFjZVN0ZXAoc3RhdGUuZG9jLCAkY3Vyc29yLmJlZm9yZShkZXB0aCksICRjdXJzb3IuYWZ0ZXIoZGVwdGgpLCBTbGljZS5lbXB0eSk7XG4gICAgICAgICAgICBpZiAoZGVsU3RlcCAmJiBkZWxTdGVwLnNsaWNlLnNpemUgPCBkZWxTdGVwLnRvIC0gZGVsU3RlcC5mcm9tKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ciA9IHN0YXRlLnRyLnN0ZXAoZGVsU3RlcCk7XG4gICAgICAgICAgICAgICAgICAgIHRyLnNldFNlbGVjdGlvbih0ZXh0YmxvY2tBdChiZWZvcmUsIFwiZW5kXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFNlbGVjdGlvbi5maW5kRnJvbSh0ci5kb2MucmVzb2x2ZSh0ci5tYXBwaW5nLm1hcCgkY3V0LnBvcywgLTEpKSwgLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IE5vZGVTZWxlY3Rpb24uY3JlYXRlKHRyLmRvYywgJGN1dC5wb3MgLSBiZWZvcmUubm9kZVNpemUpKTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2godHIuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlcHRoID09IDEgfHwgJGN1cnNvci5ub2RlKGRlcHRoIC0gMSkuY2hpbGRDb3VudCA+IDEpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgdGhlIG5vZGUgYmVmb3JlIGlzIGFuIGF0b20sIGRlbGV0ZSBpdFxuICAgIGlmIChiZWZvcmUuaXNBdG9tICYmICRjdXQuZGVwdGggPT0gJGN1cnNvci5kZXB0aCAtIDEpIHtcbiAgICAgICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICAgICAgZGlzcGF0Y2goc3RhdGUudHIuZGVsZXRlKCRjdXQucG9zIC0gYmVmb3JlLm5vZGVTaXplLCAkY3V0LnBvcykuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuLyoqXG5BIG1vcmUgbGltaXRlZCBmb3JtIG9mIFtgam9pbkJhY2t3YXJkYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI2NvbW1hbmRzLmpvaW5CYWNrd2FyZClcbnRoYXQgb25seSB0cmllcyB0byBqb2luIHRoZSBjdXJyZW50IHRleHRibG9jayB0byB0aGUgb25lIGJlZm9yZVxuaXQsIGlmIHRoZSBjdXJzb3IgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgdGV4dGJsb2NrLlxuKi9cbmNvbnN0IGpvaW5UZXh0YmxvY2tCYWNrd2FyZCA9IChzdGF0ZSwgZGlzcGF0Y2gsIHZpZXcpID0+IHtcbiAgICBsZXQgJGN1cnNvciA9IGF0QmxvY2tTdGFydChzdGF0ZSwgdmlldyk7XG4gICAgaWYgKCEkY3Vyc29yKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0ICRjdXQgPSBmaW5kQ3V0QmVmb3JlKCRjdXJzb3IpO1xuICAgIHJldHVybiAkY3V0ID8gam9pblRleHRibG9ja3NBcm91bmQoc3RhdGUsICRjdXQsIGRpc3BhdGNoKSA6IGZhbHNlO1xufTtcbi8qKlxuQSBtb3JlIGxpbWl0ZWQgZm9ybSBvZiBbYGpvaW5Gb3J3YXJkYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI2NvbW1hbmRzLmpvaW5Gb3J3YXJkKVxudGhhdCBvbmx5IHRyaWVzIHRvIGpvaW4gdGhlIGN1cnJlbnQgdGV4dGJsb2NrIHRvIHRoZSBvbmUgYWZ0ZXJcbml0LCBpZiB0aGUgY3Vyc29yIGlzIGF0IHRoZSBlbmQgb2YgYSB0ZXh0YmxvY2suXG4qL1xuY29uc3Qgam9pblRleHRibG9ja0ZvcndhcmQgPSAoc3RhdGUsIGRpc3BhdGNoLCB2aWV3KSA9PiB7XG4gICAgbGV0ICRjdXJzb3IgPSBhdEJsb2NrRW5kKHN0YXRlLCB2aWV3KTtcbiAgICBpZiAoISRjdXJzb3IpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgJGN1dCA9IGZpbmRDdXRBZnRlcigkY3Vyc29yKTtcbiAgICByZXR1cm4gJGN1dCA/IGpvaW5UZXh0YmxvY2tzQXJvdW5kKHN0YXRlLCAkY3V0LCBkaXNwYXRjaCkgOiBmYWxzZTtcbn07XG5mdW5jdGlvbiBqb2luVGV4dGJsb2Nrc0Fyb3VuZChzdGF0ZSwgJGN1dCwgZGlzcGF0Y2gpIHtcbiAgICBsZXQgYmVmb3JlID0gJGN1dC5ub2RlQmVmb3JlLCBiZWZvcmVUZXh0ID0gYmVmb3JlLCBiZWZvcmVQb3MgPSAkY3V0LnBvcyAtIDE7XG4gICAgZm9yICg7ICFiZWZvcmVUZXh0LmlzVGV4dGJsb2NrOyBiZWZvcmVQb3MtLSkge1xuICAgICAgICBpZiAoYmVmb3JlVGV4dC50eXBlLnNwZWMuaXNvbGF0aW5nKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgY2hpbGQgPSBiZWZvcmVUZXh0Lmxhc3RDaGlsZDtcbiAgICAgICAgaWYgKCFjaGlsZClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgYmVmb3JlVGV4dCA9IGNoaWxkO1xuICAgIH1cbiAgICBsZXQgYWZ0ZXIgPSAkY3V0Lm5vZGVBZnRlciwgYWZ0ZXJUZXh0ID0gYWZ0ZXIsIGFmdGVyUG9zID0gJGN1dC5wb3MgKyAxO1xuICAgIGZvciAoOyAhYWZ0ZXJUZXh0LmlzVGV4dGJsb2NrOyBhZnRlclBvcysrKSB7XG4gICAgICAgIGlmIChhZnRlclRleHQudHlwZS5zcGVjLmlzb2xhdGluZylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IGNoaWxkID0gYWZ0ZXJUZXh0LmZpcnN0Q2hpbGQ7XG4gICAgICAgIGlmICghY2hpbGQpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGFmdGVyVGV4dCA9IGNoaWxkO1xuICAgIH1cbiAgICBsZXQgc3RlcCA9IHJlcGxhY2VTdGVwKHN0YXRlLmRvYywgYmVmb3JlUG9zLCBhZnRlclBvcywgU2xpY2UuZW1wdHkpO1xuICAgIGlmICghc3RlcCB8fCBzdGVwLmZyb20gIT0gYmVmb3JlUG9zIHx8XG4gICAgICAgIHN0ZXAgaW5zdGFuY2VvZiBSZXBsYWNlU3RlcCAmJiBzdGVwLnNsaWNlLnNpemUgPj0gYWZ0ZXJQb3MgLSBiZWZvcmVQb3MpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoZGlzcGF0Y2gpIHtcbiAgICAgICAgbGV0IHRyID0gc3RhdGUudHIuc3RlcChzdGVwKTtcbiAgICAgICAgdHIuc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24uY3JlYXRlKHRyLmRvYywgYmVmb3JlUG9zKSk7XG4gICAgICAgIGRpc3BhdGNoKHRyLnNjcm9sbEludG9WaWV3KCkpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHRleHRibG9ja0F0KG5vZGUsIHNpZGUsIG9ubHkgPSBmYWxzZSkge1xuICAgIGZvciAobGV0IHNjYW4gPSBub2RlOyBzY2FuOyBzY2FuID0gKHNpZGUgPT0gXCJzdGFydFwiID8gc2Nhbi5maXJzdENoaWxkIDogc2Nhbi5sYXN0Q2hpbGQpKSB7XG4gICAgICAgIGlmIChzY2FuLmlzVGV4dGJsb2NrKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChvbmx5ICYmIHNjYW4uY2hpbGRDb3VudCAhPSAxKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vKipcbldoZW4gdGhlIHNlbGVjdGlvbiBpcyBlbXB0eSBhbmQgYXQgdGhlIHN0YXJ0IG9mIGEgdGV4dGJsb2NrLCBzZWxlY3RcbnRoZSBub2RlIGJlZm9yZSB0aGF0IHRleHRibG9jaywgaWYgcG9zc2libGUuIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmVcbmJvdW5kIHRvIGtleXMgbGlrZSBiYWNrc3BhY2UsIGFmdGVyXG5bYGpvaW5CYWNrd2FyZGBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNjb21tYW5kcy5qb2luQmFja3dhcmQpIG9yIG90aGVyIGRlbGV0aW5nXG5jb21tYW5kcywgYXMgYSBmYWxsLWJhY2sgYmVoYXZpb3Igd2hlbiB0aGUgc2NoZW1hIGRvZXNuJ3QgYWxsb3dcbmRlbGV0aW9uIGF0IHRoZSBzZWxlY3RlZCBwb2ludC5cbiovXG5jb25zdCBzZWxlY3ROb2RlQmFja3dhcmQgPSAoc3RhdGUsIGRpc3BhdGNoLCB2aWV3KSA9PiB7XG4gICAgbGV0IHsgJGhlYWQsIGVtcHR5IH0gPSBzdGF0ZS5zZWxlY3Rpb24sICRjdXQgPSAkaGVhZDtcbiAgICBpZiAoIWVtcHR5KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCRoZWFkLnBhcmVudC5pc1RleHRibG9jaykge1xuICAgICAgICBpZiAodmlldyA/ICF2aWV3LmVuZE9mVGV4dGJsb2NrKFwiYmFja3dhcmRcIiwgc3RhdGUpIDogJGhlYWQucGFyZW50T2Zmc2V0ID4gMClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgJGN1dCA9IGZpbmRDdXRCZWZvcmUoJGhlYWQpO1xuICAgIH1cbiAgICBsZXQgbm9kZSA9ICRjdXQgJiYgJGN1dC5ub2RlQmVmb3JlO1xuICAgIGlmICghbm9kZSB8fCAhTm9kZVNlbGVjdGlvbi5pc1NlbGVjdGFibGUobm9kZSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLnNldFNlbGVjdGlvbihOb2RlU2VsZWN0aW9uLmNyZWF0ZShzdGF0ZS5kb2MsICRjdXQucG9zIC0gbm9kZS5ub2RlU2l6ZSkpLnNjcm9sbEludG9WaWV3KCkpO1xuICAgIHJldHVybiB0cnVlO1xufTtcbmZ1bmN0aW9uIGZpbmRDdXRCZWZvcmUoJHBvcykge1xuICAgIGlmICghJHBvcy5wYXJlbnQudHlwZS5zcGVjLmlzb2xhdGluZylcbiAgICAgICAgZm9yIChsZXQgaSA9ICRwb3MuZGVwdGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCRwb3MuaW5kZXgoaSkgPiAwKVxuICAgICAgICAgICAgICAgIHJldHVybiAkcG9zLmRvYy5yZXNvbHZlKCRwb3MuYmVmb3JlKGkgKyAxKSk7XG4gICAgICAgICAgICBpZiAoJHBvcy5ub2RlKGkpLnR5cGUuc3BlYy5pc29sYXRpbmcpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGF0QmxvY2tFbmQoc3RhdGUsIHZpZXcpIHtcbiAgICBsZXQgeyAkY3Vyc29yIH0gPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgaWYgKCEkY3Vyc29yIHx8ICh2aWV3ID8gIXZpZXcuZW5kT2ZUZXh0YmxvY2soXCJmb3J3YXJkXCIsIHN0YXRlKVxuICAgICAgICA6ICRjdXJzb3IucGFyZW50T2Zmc2V0IDwgJGN1cnNvci5wYXJlbnQuY29udGVudC5zaXplKSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuICRjdXJzb3I7XG59XG4vKipcbklmIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHkgYW5kIHRoZSBjdXJzb3IgaXMgYXQgdGhlIGVuZCBvZiBhXG50ZXh0YmxvY2ssIHRyeSB0byByZWR1Y2Ugb3IgcmVtb3ZlIHRoZSBib3VuZGFyeSBiZXR3ZWVuIHRoYXQgYmxvY2tcbmFuZCB0aGUgb25lIGFmdGVyIGl0LCBlaXRoZXIgYnkgam9pbmluZyB0aGVtIG9yIGJ5IG1vdmluZyB0aGUgb3RoZXJcbmJsb2NrIGNsb3NlciB0byB0aGlzIG9uZSBpbiB0aGUgdHJlZSBzdHJ1Y3R1cmUuIFdpbGwgdXNlIHRoZSB2aWV3XG5mb3IgYWNjdXJhdGUgc3RhcnQtb2YtdGV4dGJsb2NrIGRldGVjdGlvbiBpZiBnaXZlbi5cbiovXG5jb25zdCBqb2luRm9yd2FyZCA9IChzdGF0ZSwgZGlzcGF0Y2gsIHZpZXcpID0+IHtcbiAgICBsZXQgJGN1cnNvciA9IGF0QmxvY2tFbmQoc3RhdGUsIHZpZXcpO1xuICAgIGlmICghJGN1cnNvcilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGxldCAkY3V0ID0gZmluZEN1dEFmdGVyKCRjdXJzb3IpO1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIG5vZGUgYWZ0ZXIgdGhpcywgdGhlcmUncyBub3RoaW5nIHRvIGRvXG4gICAgaWYgKCEkY3V0KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0IGFmdGVyID0gJGN1dC5ub2RlQWZ0ZXI7XG4gICAgLy8gVHJ5IHRoZSBqb2luaW5nIGFsZ29yaXRobVxuICAgIGlmIChkZWxldGVCYXJyaWVyKHN0YXRlLCAkY3V0LCBkaXNwYXRjaCwgMSkpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIC8vIElmIHRoZSBub2RlIGFib3ZlIGhhcyBubyBjb250ZW50IGFuZCB0aGUgbm9kZSBiZWxvdyBpc1xuICAgIC8vIHNlbGVjdGFibGUsIGRlbGV0ZSB0aGUgbm9kZSBhYm92ZSBhbmQgc2VsZWN0IHRoZSBvbmUgYmVsb3cuXG4gICAgaWYgKCRjdXJzb3IucGFyZW50LmNvbnRlbnQuc2l6ZSA9PSAwICYmXG4gICAgICAgICh0ZXh0YmxvY2tBdChhZnRlciwgXCJzdGFydFwiKSB8fCBOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShhZnRlcikpKSB7XG4gICAgICAgIGxldCBkZWxTdGVwID0gcmVwbGFjZVN0ZXAoc3RhdGUuZG9jLCAkY3Vyc29yLmJlZm9yZSgpLCAkY3Vyc29yLmFmdGVyKCksIFNsaWNlLmVtcHR5KTtcbiAgICAgICAgaWYgKGRlbFN0ZXAgJiYgZGVsU3RlcC5zbGljZS5zaXplIDwgZGVsU3RlcC50byAtIGRlbFN0ZXAuZnJvbSkge1xuICAgICAgICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRyID0gc3RhdGUudHIuc3RlcChkZWxTdGVwKTtcbiAgICAgICAgICAgICAgICB0ci5zZXRTZWxlY3Rpb24odGV4dGJsb2NrQXQoYWZ0ZXIsIFwic3RhcnRcIikgPyBTZWxlY3Rpb24uZmluZEZyb20odHIuZG9jLnJlc29sdmUodHIubWFwcGluZy5tYXAoJGN1dC5wb3MpKSwgMSlcbiAgICAgICAgICAgICAgICAgICAgOiBOb2RlU2VsZWN0aW9uLmNyZWF0ZSh0ci5kb2MsIHRyLm1hcHBpbmcubWFwKCRjdXQucG9zKSkpO1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHRyLnNjcm9sbEludG9WaWV3KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgdGhlIG5leHQgbm9kZSBpcyBhbiBhdG9tLCBkZWxldGUgaXRcbiAgICBpZiAoYWZ0ZXIuaXNBdG9tICYmICRjdXQuZGVwdGggPT0gJGN1cnNvci5kZXB0aCAtIDEpIHtcbiAgICAgICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICAgICAgZGlzcGF0Y2goc3RhdGUudHIuZGVsZXRlKCRjdXQucG9zLCAkY3V0LnBvcyArIGFmdGVyLm5vZGVTaXplKS5zY3JvbGxJbnRvVmlldygpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG4vKipcbldoZW4gdGhlIHNlbGVjdGlvbiBpcyBlbXB0eSBhbmQgYXQgdGhlIGVuZCBvZiBhIHRleHRibG9jaywgc2VsZWN0XG50aGUgbm9kZSBjb21pbmcgYWZ0ZXIgdGhhdCB0ZXh0YmxvY2ssIGlmIHBvc3NpYmxlLiBUaGlzIGlzIGludGVuZGVkXG50byBiZSBib3VuZCB0byBrZXlzIGxpa2UgZGVsZXRlLCBhZnRlclxuW2Bqb2luRm9yd2FyZGBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNjb21tYW5kcy5qb2luRm9yd2FyZCkgYW5kIHNpbWlsYXIgZGVsZXRpbmdcbmNvbW1hbmRzLCB0byBwcm92aWRlIGEgZmFsbC1iYWNrIGJlaGF2aW9yIHdoZW4gdGhlIHNjaGVtYSBkb2Vzbid0XG5hbGxvdyBkZWxldGlvbiBhdCB0aGUgc2VsZWN0ZWQgcG9pbnQuXG4qL1xuY29uc3Qgc2VsZWN0Tm9kZUZvcndhcmQgPSAoc3RhdGUsIGRpc3BhdGNoLCB2aWV3KSA9PiB7XG4gICAgbGV0IHsgJGhlYWQsIGVtcHR5IH0gPSBzdGF0ZS5zZWxlY3Rpb24sICRjdXQgPSAkaGVhZDtcbiAgICBpZiAoIWVtcHR5KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCRoZWFkLnBhcmVudC5pc1RleHRibG9jaykge1xuICAgICAgICBpZiAodmlldyA/ICF2aWV3LmVuZE9mVGV4dGJsb2NrKFwiZm9yd2FyZFwiLCBzdGF0ZSkgOiAkaGVhZC5wYXJlbnRPZmZzZXQgPCAkaGVhZC5wYXJlbnQuY29udGVudC5zaXplKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAkY3V0ID0gZmluZEN1dEFmdGVyKCRoZWFkKTtcbiAgICB9XG4gICAgbGV0IG5vZGUgPSAkY3V0ICYmICRjdXQubm9kZUFmdGVyO1xuICAgIGlmICghbm9kZSB8fCAhTm9kZVNlbGVjdGlvbi5pc1NlbGVjdGFibGUobm9kZSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLnNldFNlbGVjdGlvbihOb2RlU2VsZWN0aW9uLmNyZWF0ZShzdGF0ZS5kb2MsICRjdXQucG9zKSkuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgcmV0dXJuIHRydWU7XG59O1xuZnVuY3Rpb24gZmluZEN1dEFmdGVyKCRwb3MpIHtcbiAgICBpZiAoISRwb3MucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcpXG4gICAgICAgIGZvciAobGV0IGkgPSAkcG9zLmRlcHRoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSAkcG9zLm5vZGUoaSk7XG4gICAgICAgICAgICBpZiAoJHBvcy5pbmRleChpKSArIDEgPCBwYXJlbnQuY2hpbGRDb3VudClcbiAgICAgICAgICAgICAgICByZXR1cm4gJHBvcy5kb2MucmVzb2x2ZSgkcG9zLmFmdGVyKGkgKyAxKSk7XG4gICAgICAgICAgICBpZiAocGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuSm9pbiB0aGUgc2VsZWN0ZWQgYmxvY2sgb3IsIGlmIHRoZXJlIGlzIGEgdGV4dCBzZWxlY3Rpb24sIHRoZVxuY2xvc2VzdCBhbmNlc3RvciBibG9jayBvZiB0aGUgc2VsZWN0aW9uIHRoYXQgY2FuIGJlIGpvaW5lZCwgd2l0aFxudGhlIHNpYmxpbmcgYWJvdmUgaXQuXG4qL1xuY29uc3Qgam9pblVwID0gKHN0YXRlLCBkaXNwYXRjaCkgPT4ge1xuICAgIGxldCBzZWwgPSBzdGF0ZS5zZWxlY3Rpb24sIG5vZGVTZWwgPSBzZWwgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uLCBwb2ludDtcbiAgICBpZiAobm9kZVNlbCkge1xuICAgICAgICBpZiAoc2VsLm5vZGUuaXNUZXh0YmxvY2sgfHwgIWNhbkpvaW4oc3RhdGUuZG9jLCBzZWwuZnJvbSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHBvaW50ID0gc2VsLmZyb207XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBwb2ludCA9IGpvaW5Qb2ludChzdGF0ZS5kb2MsIHNlbC5mcm9tLCAtMSk7XG4gICAgICAgIGlmIChwb2ludCA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZGlzcGF0Y2gpIHtcbiAgICAgICAgbGV0IHRyID0gc3RhdGUudHIuam9pbihwb2ludCk7XG4gICAgICAgIGlmIChub2RlU2VsKVxuICAgICAgICAgICAgdHIuc2V0U2VsZWN0aW9uKE5vZGVTZWxlY3Rpb24uY3JlYXRlKHRyLmRvYywgcG9pbnQgLSBzdGF0ZS5kb2MucmVzb2x2ZShwb2ludCkubm9kZUJlZm9yZS5ub2RlU2l6ZSkpO1xuICAgICAgICBkaXNwYXRjaCh0ci5zY3JvbGxJbnRvVmlldygpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuLyoqXG5Kb2luIHRoZSBzZWxlY3RlZCBibG9jaywgb3IgdGhlIGNsb3Nlc3QgYW5jZXN0b3Igb2YgdGhlIHNlbGVjdGlvblxudGhhdCBjYW4gYmUgam9pbmVkLCB3aXRoIHRoZSBzaWJsaW5nIGFmdGVyIGl0LlxuKi9cbmNvbnN0IGpvaW5Eb3duID0gKHN0YXRlLCBkaXNwYXRjaCkgPT4ge1xuICAgIGxldCBzZWwgPSBzdGF0ZS5zZWxlY3Rpb24sIHBvaW50O1xuICAgIGlmIChzZWwgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uKSB7XG4gICAgICAgIGlmIChzZWwubm9kZS5pc1RleHRibG9jayB8fCAhY2FuSm9pbihzdGF0ZS5kb2MsIHNlbC50bykpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHBvaW50ID0gc2VsLnRvO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcG9pbnQgPSBqb2luUG9pbnQoc3RhdGUuZG9jLCBzZWwudG8sIDEpO1xuICAgICAgICBpZiAocG9pbnQgPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5qb2luKHBvaW50KS5zY3JvbGxJbnRvVmlldygpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbkxpZnQgdGhlIHNlbGVjdGVkIGJsb2NrLCBvciB0aGUgY2xvc2VzdCBhbmNlc3RvciBibG9jayBvZiB0aGVcbnNlbGVjdGlvbiB0aGF0IGNhbiBiZSBsaWZ0ZWQsIG91dCBvZiBpdHMgcGFyZW50IG5vZGUuXG4qL1xuY29uc3QgbGlmdCA9IChzdGF0ZSwgZGlzcGF0Y2gpID0+IHtcbiAgICBsZXQgeyAkZnJvbSwgJHRvIH0gPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgbGV0IHJhbmdlID0gJGZyb20uYmxvY2tSYW5nZSgkdG8pLCB0YXJnZXQgPSByYW5nZSAmJiBsaWZ0VGFyZ2V0KHJhbmdlKTtcbiAgICBpZiAodGFyZ2V0ID09IG51bGwpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLmxpZnQocmFuZ2UsIHRhcmdldCkuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgcmV0dXJuIHRydWU7XG59O1xuLyoqXG5JZiB0aGUgc2VsZWN0aW9uIGlzIGluIGEgbm9kZSB3aG9zZSB0eXBlIGhhcyBhIHRydXRoeVxuW2Bjb2RlYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGVTcGVjLmNvZGUpIHByb3BlcnR5IGluIGl0cyBzcGVjLCByZXBsYWNlIHRoZVxuc2VsZWN0aW9uIHdpdGggYSBuZXdsaW5lIGNoYXJhY3Rlci5cbiovXG5jb25zdCBuZXdsaW5lSW5Db2RlID0gKHN0YXRlLCBkaXNwYXRjaCkgPT4ge1xuICAgIGxldCB7ICRoZWFkLCAkYW5jaG9yIH0gPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgaWYgKCEkaGVhZC5wYXJlbnQudHlwZS5zcGVjLmNvZGUgfHwgISRoZWFkLnNhbWVQYXJlbnQoJGFuY2hvcikpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLmluc2VydFRleHQoXCJcXG5cIikuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgcmV0dXJuIHRydWU7XG59O1xuZnVuY3Rpb24gZGVmYXVsdEJsb2NrQXQobWF0Y2gpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoLmVkZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgIGxldCB7IHR5cGUgfSA9IG1hdGNoLmVkZ2UoaSk7XG4gICAgICAgIGlmICh0eXBlLmlzVGV4dGJsb2NrICYmICF0eXBlLmhhc1JlcXVpcmVkQXR0cnMoKSlcbiAgICAgICAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuV2hlbiB0aGUgc2VsZWN0aW9uIGlzIGluIGEgbm9kZSB3aXRoIGEgdHJ1dGh5XG5bYGNvZGVgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuTm9kZVNwZWMuY29kZSkgcHJvcGVydHkgaW4gaXRzIHNwZWMsIGNyZWF0ZSBhXG5kZWZhdWx0IGJsb2NrIGFmdGVyIHRoZSBjb2RlIGJsb2NrLCBhbmQgbW92ZSB0aGUgY3Vyc29yIHRoZXJlLlxuKi9cbmNvbnN0IGV4aXRDb2RlID0gKHN0YXRlLCBkaXNwYXRjaCkgPT4ge1xuICAgIGxldCB7ICRoZWFkLCAkYW5jaG9yIH0gPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgaWYgKCEkaGVhZC5wYXJlbnQudHlwZS5zcGVjLmNvZGUgfHwgISRoZWFkLnNhbWVQYXJlbnQoJGFuY2hvcikpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgYWJvdmUgPSAkaGVhZC5ub2RlKC0xKSwgYWZ0ZXIgPSAkaGVhZC5pbmRleEFmdGVyKC0xKSwgdHlwZSA9IGRlZmF1bHRCbG9ja0F0KGFib3ZlLmNvbnRlbnRNYXRjaEF0KGFmdGVyKSk7XG4gICAgaWYgKCF0eXBlIHx8ICFhYm92ZS5jYW5SZXBsYWNlV2l0aChhZnRlciwgYWZ0ZXIsIHR5cGUpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgIGxldCBwb3MgPSAkaGVhZC5hZnRlcigpLCB0ciA9IHN0YXRlLnRyLnJlcGxhY2VXaXRoKHBvcywgcG9zLCB0eXBlLmNyZWF0ZUFuZEZpbGwoKSk7XG4gICAgICAgIHRyLnNldFNlbGVjdGlvbihTZWxlY3Rpb24ubmVhcih0ci5kb2MucmVzb2x2ZShwb3MpLCAxKSk7XG4gICAgICAgIGRpc3BhdGNoKHRyLnNjcm9sbEludG9WaWV3KCkpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbklmIGEgYmxvY2sgbm9kZSBpcyBzZWxlY3RlZCwgY3JlYXRlIGFuIGVtcHR5IHBhcmFncmFwaCBiZWZvcmUgKGlmXG5pdCBpcyBpdHMgcGFyZW50J3MgZmlyc3QgY2hpbGQpIG9yIGFmdGVyIGl0LlxuKi9cbmNvbnN0IGNyZWF0ZVBhcmFncmFwaE5lYXIgPSAoc3RhdGUsIGRpc3BhdGNoKSA9PiB7XG4gICAgbGV0IHNlbCA9IHN0YXRlLnNlbGVjdGlvbiwgeyAkZnJvbSwgJHRvIH0gPSBzZWw7XG4gICAgaWYgKHNlbCBpbnN0YW5jZW9mIEFsbFNlbGVjdGlvbiB8fCAkZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudCB8fCAkdG8ucGFyZW50LmlubGluZUNvbnRlbnQpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgdHlwZSA9IGRlZmF1bHRCbG9ja0F0KCR0by5wYXJlbnQuY29udGVudE1hdGNoQXQoJHRvLmluZGV4QWZ0ZXIoKSkpO1xuICAgIGlmICghdHlwZSB8fCAhdHlwZS5pc1RleHRibG9jaylcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChkaXNwYXRjaCkge1xuICAgICAgICBsZXQgc2lkZSA9ICghJGZyb20ucGFyZW50T2Zmc2V0ICYmICR0by5pbmRleCgpIDwgJHRvLnBhcmVudC5jaGlsZENvdW50ID8gJGZyb20gOiAkdG8pLnBvcztcbiAgICAgICAgbGV0IHRyID0gc3RhdGUudHIuaW5zZXJ0KHNpZGUsIHR5cGUuY3JlYXRlQW5kRmlsbCgpKTtcbiAgICAgICAgdHIuc2V0U2VsZWN0aW9uKFRleHRTZWxlY3Rpb24uY3JlYXRlKHRyLmRvYywgc2lkZSArIDEpKTtcbiAgICAgICAgZGlzcGF0Y2godHIuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcbi8qKlxuSWYgdGhlIGN1cnNvciBpcyBpbiBhbiBlbXB0eSB0ZXh0YmxvY2sgdGhhdCBjYW4gYmUgbGlmdGVkLCBsaWZ0IHRoZVxuYmxvY2suXG4qL1xuY29uc3QgbGlmdEVtcHR5QmxvY2sgPSAoc3RhdGUsIGRpc3BhdGNoKSA9PiB7XG4gICAgbGV0IHsgJGN1cnNvciB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgIGlmICghJGN1cnNvciB8fCAkY3Vyc29yLnBhcmVudC5jb250ZW50LnNpemUpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoJGN1cnNvci5kZXB0aCA+IDEgJiYgJGN1cnNvci5hZnRlcigpICE9ICRjdXJzb3IuZW5kKC0xKSkge1xuICAgICAgICBsZXQgYmVmb3JlID0gJGN1cnNvci5iZWZvcmUoKTtcbiAgICAgICAgaWYgKGNhblNwbGl0KHN0YXRlLmRvYywgYmVmb3JlKSkge1xuICAgICAgICAgICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLnNwbGl0KGJlZm9yZSkuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgcmFuZ2UgPSAkY3Vyc29yLmJsb2NrUmFuZ2UoKSwgdGFyZ2V0ID0gcmFuZ2UgJiYgbGlmdFRhcmdldChyYW5nZSk7XG4gICAgaWYgKHRhcmdldCA9PSBudWxsKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5saWZ0KHJhbmdlLCB0YXJnZXQpLnNjcm9sbEludG9WaWV3KCkpO1xuICAgIHJldHVybiB0cnVlO1xufTtcbi8qKlxuQ3JlYXRlIGEgdmFyaWFudCBvZiBbYHNwbGl0QmxvY2tgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jY29tbWFuZHMuc3BsaXRCbG9jaykgdGhhdCB1c2VzXG5hIGN1c3RvbSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIG5ld2x5IHNwbGl0IG9mZiBibG9jay5cbiovXG5mdW5jdGlvbiBzcGxpdEJsb2NrQXMoc3BsaXROb2RlKSB7XG4gICAgcmV0dXJuIChzdGF0ZSwgZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgbGV0IHsgJGZyb20sICR0byB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICBpZiAoc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiAmJiBzdGF0ZS5zZWxlY3Rpb24ubm9kZS5pc0Jsb2NrKSB7XG4gICAgICAgICAgICBpZiAoISRmcm9tLnBhcmVudE9mZnNldCB8fCAhY2FuU3BsaXQoc3RhdGUuZG9jLCAkZnJvbS5wb3MpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChkaXNwYXRjaClcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5zcGxpdCgkZnJvbS5wb3MpLnNjcm9sbEludG9WaWV3KCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEkZnJvbS5kZXB0aClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IHR5cGVzID0gW107XG4gICAgICAgIGxldCBzcGxpdERlcHRoLCBkZWZsdCwgYXRFbmQgPSBmYWxzZSwgYXRTdGFydCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBkID0gJGZyb20uZGVwdGg7OyBkLS0pIHtcbiAgICAgICAgICAgIGxldCBub2RlID0gJGZyb20ubm9kZShkKTtcbiAgICAgICAgICAgIGlmIChub2RlLmlzQmxvY2spIHtcbiAgICAgICAgICAgICAgICBhdEVuZCA9ICRmcm9tLmVuZChkKSA9PSAkZnJvbS5wb3MgKyAoJGZyb20uZGVwdGggLSBkKTtcbiAgICAgICAgICAgICAgICBhdFN0YXJ0ID0gJGZyb20uc3RhcnQoZCkgPT0gJGZyb20ucG9zIC0gKCRmcm9tLmRlcHRoIC0gZCk7XG4gICAgICAgICAgICAgICAgZGVmbHQgPSBkZWZhdWx0QmxvY2tBdCgkZnJvbS5ub2RlKGQgLSAxKS5jb250ZW50TWF0Y2hBdCgkZnJvbS5pbmRleEFmdGVyKGQgLSAxKSkpO1xuICAgICAgICAgICAgICAgIGxldCBzcGxpdFR5cGUgPSBzcGxpdE5vZGUgJiYgc3BsaXROb2RlKCR0by5wYXJlbnQsIGF0RW5kLCAkZnJvbSk7XG4gICAgICAgICAgICAgICAgdHlwZXMudW5zaGlmdChzcGxpdFR5cGUgfHwgKGF0RW5kICYmIGRlZmx0ID8geyB0eXBlOiBkZWZsdCB9IDogbnVsbCkpO1xuICAgICAgICAgICAgICAgIHNwbGl0RGVwdGggPSBkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGQgPT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIHR5cGVzLnVuc2hpZnQobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRyID0gc3RhdGUudHI7XG4gICAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uIHx8IHN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEFsbFNlbGVjdGlvbilcbiAgICAgICAgICAgIHRyLmRlbGV0ZVNlbGVjdGlvbigpO1xuICAgICAgICBsZXQgc3BsaXRQb3MgPSB0ci5tYXBwaW5nLm1hcCgkZnJvbS5wb3MpO1xuICAgICAgICBsZXQgY2FuID0gY2FuU3BsaXQodHIuZG9jLCBzcGxpdFBvcywgdHlwZXMubGVuZ3RoLCB0eXBlcyk7XG4gICAgICAgIGlmICghY2FuKSB7XG4gICAgICAgICAgICB0eXBlc1swXSA9IGRlZmx0ID8geyB0eXBlOiBkZWZsdCB9IDogbnVsbDtcbiAgICAgICAgICAgIGNhbiA9IGNhblNwbGl0KHRyLmRvYywgc3BsaXRQb3MsIHR5cGVzLmxlbmd0aCwgdHlwZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2FuKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0ci5zcGxpdChzcGxpdFBvcywgdHlwZXMubGVuZ3RoLCB0eXBlcyk7XG4gICAgICAgIGlmICghYXRFbmQgJiYgYXRTdGFydCAmJiAkZnJvbS5ub2RlKHNwbGl0RGVwdGgpLnR5cGUgIT0gZGVmbHQpIHtcbiAgICAgICAgICAgIGxldCBmaXJzdCA9IHRyLm1hcHBpbmcubWFwKCRmcm9tLmJlZm9yZShzcGxpdERlcHRoKSksICRmaXJzdCA9IHRyLmRvYy5yZXNvbHZlKGZpcnN0KTtcbiAgICAgICAgICAgIGlmIChkZWZsdCAmJiAkZnJvbS5ub2RlKHNwbGl0RGVwdGggLSAxKS5jYW5SZXBsYWNlV2l0aCgkZmlyc3QuaW5kZXgoKSwgJGZpcnN0LmluZGV4KCkgKyAxLCBkZWZsdCkpXG4gICAgICAgICAgICAgICAgdHIuc2V0Tm9kZU1hcmt1cCh0ci5tYXBwaW5nLm1hcCgkZnJvbS5iZWZvcmUoc3BsaXREZXB0aCkpLCBkZWZsdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICAgICAgZGlzcGF0Y2godHIuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG59XG4vKipcblNwbGl0IHRoZSBwYXJlbnQgYmxvY2sgb2YgdGhlIHNlbGVjdGlvbi4gSWYgdGhlIHNlbGVjdGlvbiBpcyBhIHRleHRcbnNlbGVjdGlvbiwgYWxzbyBkZWxldGUgaXRzIGNvbnRlbnQuXG4qL1xuY29uc3Qgc3BsaXRCbG9jayA9IHNwbGl0QmxvY2tBcygpO1xuLyoqXG5BY3RzIGxpa2UgW2BzcGxpdEJsb2NrYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI2NvbW1hbmRzLnNwbGl0QmxvY2spLCBidXQgd2l0aG91dFxucmVzZXR0aW5nIHRoZSBzZXQgb2YgYWN0aXZlIG1hcmtzIGF0IHRoZSBjdXJzb3IuXG4qL1xuY29uc3Qgc3BsaXRCbG9ja0tlZXBNYXJrcyA9IChzdGF0ZSwgZGlzcGF0Y2gpID0+IHtcbiAgICByZXR1cm4gc3BsaXRCbG9jayhzdGF0ZSwgZGlzcGF0Y2ggJiYgKHRyID0+IHtcbiAgICAgICAgbGV0IG1hcmtzID0gc3RhdGUuc3RvcmVkTWFya3MgfHwgKHN0YXRlLnNlbGVjdGlvbi4kdG8ucGFyZW50T2Zmc2V0ICYmIHN0YXRlLnNlbGVjdGlvbi4kZnJvbS5tYXJrcygpKTtcbiAgICAgICAgaWYgKG1hcmtzKVxuICAgICAgICAgICAgdHIuZW5zdXJlTWFya3MobWFya3MpO1xuICAgICAgICBkaXNwYXRjaCh0cik7XG4gICAgfSkpO1xufTtcbi8qKlxuTW92ZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSBub2RlIHdyYXBwaW5nIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgaWZcbmFueS4gKFdpbGwgbm90IHNlbGVjdCB0aGUgZG9jdW1lbnQgbm9kZS4pXG4qL1xuY29uc3Qgc2VsZWN0UGFyZW50Tm9kZSA9IChzdGF0ZSwgZGlzcGF0Y2gpID0+IHtcbiAgICBsZXQgeyAkZnJvbSwgdG8gfSA9IHN0YXRlLnNlbGVjdGlvbiwgcG9zO1xuICAgIGxldCBzYW1lID0gJGZyb20uc2hhcmVkRGVwdGgodG8pO1xuICAgIGlmIChzYW1lID09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBwb3MgPSAkZnJvbS5iZWZvcmUoc2FtZSk7XG4gICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5zZXRTZWxlY3Rpb24oTm9kZVNlbGVjdGlvbi5jcmVhdGUoc3RhdGUuZG9jLCBwb3MpKSk7XG4gICAgcmV0dXJuIHRydWU7XG59O1xuLyoqXG5TZWxlY3QgdGhlIHdob2xlIGRvY3VtZW50LlxuKi9cbmNvbnN0IHNlbGVjdEFsbCA9IChzdGF0ZSwgZGlzcGF0Y2gpID0+IHtcbiAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLnNldFNlbGVjdGlvbihuZXcgQWxsU2VsZWN0aW9uKHN0YXRlLmRvYykpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5mdW5jdGlvbiBqb2luTWF5YmVDbGVhcihzdGF0ZSwgJHBvcywgZGlzcGF0Y2gpIHtcbiAgICBsZXQgYmVmb3JlID0gJHBvcy5ub2RlQmVmb3JlLCBhZnRlciA9ICRwb3Mubm9kZUFmdGVyLCBpbmRleCA9ICRwb3MuaW5kZXgoKTtcbiAgICBpZiAoIWJlZm9yZSB8fCAhYWZ0ZXIgfHwgIWJlZm9yZS50eXBlLmNvbXBhdGlibGVDb250ZW50KGFmdGVyLnR5cGUpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFiZWZvcmUuY29udGVudC5zaXplICYmICRwb3MucGFyZW50LmNhblJlcGxhY2UoaW5kZXggLSAxLCBpbmRleCkpIHtcbiAgICAgICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICAgICAgZGlzcGF0Y2goc3RhdGUudHIuZGVsZXRlKCRwb3MucG9zIC0gYmVmb3JlLm5vZGVTaXplLCAkcG9zLnBvcykuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoISRwb3MucGFyZW50LmNhblJlcGxhY2UoaW5kZXgsIGluZGV4ICsgMSkgfHwgIShhZnRlci5pc1RleHRibG9jayB8fCBjYW5Kb2luKHN0YXRlLmRvYywgJHBvcy5wb3MpKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChkaXNwYXRjaClcbiAgICAgICAgZGlzcGF0Y2goc3RhdGUudHIuam9pbigkcG9zLnBvcykuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBkZWxldGVCYXJyaWVyKHN0YXRlLCAkY3V0LCBkaXNwYXRjaCwgZGlyKSB7XG4gICAgbGV0IGJlZm9yZSA9ICRjdXQubm9kZUJlZm9yZSwgYWZ0ZXIgPSAkY3V0Lm5vZGVBZnRlciwgY29ubiwgbWF0Y2g7XG4gICAgbGV0IGlzb2xhdGVkID0gYmVmb3JlLnR5cGUuc3BlYy5pc29sYXRpbmcgfHwgYWZ0ZXIudHlwZS5zcGVjLmlzb2xhdGluZztcbiAgICBpZiAoIWlzb2xhdGVkICYmIGpvaW5NYXliZUNsZWFyKHN0YXRlLCAkY3V0LCBkaXNwYXRjaCkpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGxldCBjYW5EZWxBZnRlciA9ICFpc29sYXRlZCAmJiAkY3V0LnBhcmVudC5jYW5SZXBsYWNlKCRjdXQuaW5kZXgoKSwgJGN1dC5pbmRleCgpICsgMSk7XG4gICAgaWYgKGNhbkRlbEFmdGVyICYmXG4gICAgICAgIChjb25uID0gKG1hdGNoID0gYmVmb3JlLmNvbnRlbnRNYXRjaEF0KGJlZm9yZS5jaGlsZENvdW50KSkuZmluZFdyYXBwaW5nKGFmdGVyLnR5cGUpKSAmJlxuICAgICAgICBtYXRjaC5tYXRjaFR5cGUoY29ublswXSB8fCBhZnRlci50eXBlKS52YWxpZEVuZCkge1xuICAgICAgICBpZiAoZGlzcGF0Y2gpIHtcbiAgICAgICAgICAgIGxldCBlbmQgPSAkY3V0LnBvcyArIGFmdGVyLm5vZGVTaXplLCB3cmFwID0gRnJhZ21lbnQuZW1wdHk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gY29ubi5sZW5ndGggLSAxOyBpID49IDA7IGktLSlcbiAgICAgICAgICAgICAgICB3cmFwID0gRnJhZ21lbnQuZnJvbShjb25uW2ldLmNyZWF0ZShudWxsLCB3cmFwKSk7XG4gICAgICAgICAgICB3cmFwID0gRnJhZ21lbnQuZnJvbShiZWZvcmUuY29weSh3cmFwKSk7XG4gICAgICAgICAgICBsZXQgdHIgPSBzdGF0ZS50ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcCgkY3V0LnBvcyAtIDEsIGVuZCwgJGN1dC5wb3MsIGVuZCwgbmV3IFNsaWNlKHdyYXAsIDEsIDApLCBjb25uLmxlbmd0aCwgdHJ1ZSkpO1xuICAgICAgICAgICAgbGV0ICRqb2luQXQgPSB0ci5kb2MucmVzb2x2ZShlbmQgKyAyICogY29ubi5sZW5ndGgpO1xuICAgICAgICAgICAgaWYgKCRqb2luQXQubm9kZUFmdGVyICYmICRqb2luQXQubm9kZUFmdGVyLnR5cGUgPT0gYmVmb3JlLnR5cGUgJiZcbiAgICAgICAgICAgICAgICBjYW5Kb2luKHRyLmRvYywgJGpvaW5BdC5wb3MpKVxuICAgICAgICAgICAgICAgIHRyLmpvaW4oJGpvaW5BdC5wb3MpO1xuICAgICAgICAgICAgZGlzcGF0Y2godHIuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBzZWxBZnRlciA9IGFmdGVyLnR5cGUuc3BlYy5pc29sYXRpbmcgfHwgKGRpciA+IDAgJiYgaXNvbGF0ZWQpID8gbnVsbCA6IFNlbGVjdGlvbi5maW5kRnJvbSgkY3V0LCAxKTtcbiAgICBsZXQgcmFuZ2UgPSBzZWxBZnRlciAmJiBzZWxBZnRlci4kZnJvbS5ibG9ja1JhbmdlKHNlbEFmdGVyLiR0byksIHRhcmdldCA9IHJhbmdlICYmIGxpZnRUYXJnZXQocmFuZ2UpO1xuICAgIGlmICh0YXJnZXQgIT0gbnVsbCAmJiB0YXJnZXQgPj0gJGN1dC5kZXB0aCkge1xuICAgICAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5saWZ0KHJhbmdlLCB0YXJnZXQpLnNjcm9sbEludG9WaWV3KCkpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNhbkRlbEFmdGVyICYmIHRleHRibG9ja0F0KGFmdGVyLCBcInN0YXJ0XCIsIHRydWUpICYmIHRleHRibG9ja0F0KGJlZm9yZSwgXCJlbmRcIikpIHtcbiAgICAgICAgbGV0IGF0ID0gYmVmb3JlLCB3cmFwID0gW107XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIHdyYXAucHVzaChhdCk7XG4gICAgICAgICAgICBpZiAoYXQuaXNUZXh0YmxvY2spXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBhdCA9IGF0Lmxhc3RDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYWZ0ZXJUZXh0ID0gYWZ0ZXIsIGFmdGVyRGVwdGggPSAxO1xuICAgICAgICBmb3IgKDsgIWFmdGVyVGV4dC5pc1RleHRibG9jazsgYWZ0ZXJUZXh0ID0gYWZ0ZXJUZXh0LmZpcnN0Q2hpbGQpXG4gICAgICAgICAgICBhZnRlckRlcHRoKys7XG4gICAgICAgIGlmIChhdC5jYW5SZXBsYWNlKGF0LmNoaWxkQ291bnQsIGF0LmNoaWxkQ291bnQsIGFmdGVyVGV4dC5jb250ZW50KSkge1xuICAgICAgICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVuZCA9IEZyYWdtZW50LmVtcHR5O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB3cmFwLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKVxuICAgICAgICAgICAgICAgICAgICBlbmQgPSBGcmFnbWVudC5mcm9tKHdyYXBbaV0uY29weShlbmQpKTtcbiAgICAgICAgICAgICAgICBsZXQgdHIgPSBzdGF0ZS50ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcCgkY3V0LnBvcyAtIHdyYXAubGVuZ3RoLCAkY3V0LnBvcyArIGFmdGVyLm5vZGVTaXplLCAkY3V0LnBvcyArIGFmdGVyRGVwdGgsICRjdXQucG9zICsgYWZ0ZXIubm9kZVNpemUgLSBhZnRlckRlcHRoLCBuZXcgU2xpY2UoZW5kLCB3cmFwLmxlbmd0aCwgMCksIDAsIHRydWUpKTtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh0ci5zY3JvbGxJbnRvVmlldygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHNlbGVjdFRleHRibG9ja1NpZGUoc2lkZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc3RhdGUsIGRpc3BhdGNoKSB7XG4gICAgICAgIGxldCBzZWwgPSBzdGF0ZS5zZWxlY3Rpb24sICRwb3MgPSBzaWRlIDwgMCA/IHNlbC4kZnJvbSA6IHNlbC4kdG87XG4gICAgICAgIGxldCBkZXB0aCA9ICRwb3MuZGVwdGg7XG4gICAgICAgIHdoaWxlICgkcG9zLm5vZGUoZGVwdGgpLmlzSW5saW5lKSB7XG4gICAgICAgICAgICBpZiAoIWRlcHRoKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGRlcHRoLS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEkcG9zLm5vZGUoZGVwdGgpLmlzVGV4dGJsb2NrKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5zZXRTZWxlY3Rpb24oVGV4dFNlbGVjdGlvbi5jcmVhdGUoc3RhdGUuZG9jLCBzaWRlIDwgMCA/ICRwb3Muc3RhcnQoZGVwdGgpIDogJHBvcy5lbmQoZGVwdGgpKSkpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xufVxuLyoqXG5Nb3ZlcyB0aGUgY3Vyc29yIHRvIHRoZSBzdGFydCBvZiBjdXJyZW50IHRleHQgYmxvY2suXG4qL1xuY29uc3Qgc2VsZWN0VGV4dGJsb2NrU3RhcnQgPSBzZWxlY3RUZXh0YmxvY2tTaWRlKC0xKTtcbi8qKlxuTW92ZXMgdGhlIGN1cnNvciB0byB0aGUgZW5kIG9mIGN1cnJlbnQgdGV4dCBibG9jay5cbiovXG5jb25zdCBzZWxlY3RUZXh0YmxvY2tFbmQgPSBzZWxlY3RUZXh0YmxvY2tTaWRlKDEpO1xuLy8gUGFyYW1ldGVyaXplZCBjb21tYW5kc1xuLyoqXG5XcmFwIHRoZSBzZWxlY3Rpb24gaW4gYSBub2RlIG9mIHRoZSBnaXZlbiB0eXBlIHdpdGggdGhlIGdpdmVuXG5hdHRyaWJ1dGVzLlxuKi9cbmZ1bmN0aW9uIHdyYXBJbihub2RlVHlwZSwgYXR0cnMgPSBudWxsKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzdGF0ZSwgZGlzcGF0Y2gpIHtcbiAgICAgICAgbGV0IHsgJGZyb20sICR0byB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICBsZXQgcmFuZ2UgPSAkZnJvbS5ibG9ja1JhbmdlKCR0byksIHdyYXBwaW5nID0gcmFuZ2UgJiYgZmluZFdyYXBwaW5nKHJhbmdlLCBub2RlVHlwZSwgYXR0cnMpO1xuICAgICAgICBpZiAoIXdyYXBwaW5nKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci53cmFwKHJhbmdlLCB3cmFwcGluZykuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG59XG4vKipcblJldHVybnMgYSBjb21tYW5kIHRoYXQgdHJpZXMgdG8gc2V0IHRoZSBzZWxlY3RlZCB0ZXh0YmxvY2tzIHRvIHRoZVxuZ2l2ZW4gbm9kZSB0eXBlIHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZXMuXG4qL1xuZnVuY3Rpb24gc2V0QmxvY2tUeXBlKG5vZGVUeXBlLCBhdHRycyA9IG51bGwpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHN0YXRlLCBkaXNwYXRjaCkge1xuICAgICAgICBsZXQgYXBwbGljYWJsZSA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlLnNlbGVjdGlvbi5yYW5nZXMubGVuZ3RoICYmICFhcHBsaWNhYmxlOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB7ICRmcm9tOiB7IHBvczogZnJvbSB9LCAkdG86IHsgcG9zOiB0byB9IH0gPSBzdGF0ZS5zZWxlY3Rpb24ucmFuZ2VzW2ldO1xuICAgICAgICAgICAgc3RhdGUuZG9jLm5vZGVzQmV0d2Vlbihmcm9tLCB0bywgKG5vZGUsIHBvcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhcHBsaWNhYmxlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCFub2RlLmlzVGV4dGJsb2NrIHx8IG5vZGUuaGFzTWFya3VwKG5vZGVUeXBlLCBhdHRycykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50eXBlID09IG5vZGVUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRwb3MgPSBzdGF0ZS5kb2MucmVzb2x2ZShwb3MpLCBpbmRleCA9ICRwb3MuaW5kZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSA9ICRwb3MucGFyZW50LmNhblJlcGxhY2VXaXRoKGluZGV4LCBpbmRleCArIDEsIG5vZGVUeXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFwcGxpY2FibGUpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChkaXNwYXRjaCkge1xuICAgICAgICAgICAgbGV0IHRyID0gc3RhdGUudHI7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlLnNlbGVjdGlvbi5yYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgeyAkZnJvbTogeyBwb3M6IGZyb20gfSwgJHRvOiB7IHBvczogdG8gfSB9ID0gc3RhdGUuc2VsZWN0aW9uLnJhbmdlc1tpXTtcbiAgICAgICAgICAgICAgICB0ci5zZXRCbG9ja1R5cGUoZnJvbSwgdG8sIG5vZGVUeXBlLCBhdHRycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXNwYXRjaCh0ci5zY3JvbGxJbnRvVmlldygpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xufVxuZnVuY3Rpb24gbWFya0FwcGxpZXMoZG9jLCByYW5nZXMsIHR5cGUsIGVudGVyQXRvbXMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgeyAkZnJvbSwgJHRvIH0gPSByYW5nZXNbaV07XG4gICAgICAgIGxldCBjYW4gPSAkZnJvbS5kZXB0aCA9PSAwID8gZG9jLmlubGluZUNvbnRlbnQgJiYgZG9jLnR5cGUuYWxsb3dzTWFya1R5cGUodHlwZSkgOiBmYWxzZTtcbiAgICAgICAgZG9jLm5vZGVzQmV0d2VlbigkZnJvbS5wb3MsICR0by5wb3MsIChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgICAgIGlmIChjYW4gfHwgIWVudGVyQXRvbXMgJiYgbm9kZS5pc0F0b20gJiYgbm9kZS5pc0lubGluZSAmJiBwb3MgPj0gJGZyb20ucG9zICYmIHBvcyArIG5vZGUubm9kZVNpemUgPD0gJHRvLnBvcylcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYW4gPSBub2RlLmlubGluZUNvbnRlbnQgJiYgbm9kZS50eXBlLmFsbG93c01hcmtUeXBlKHR5cGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNhbilcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiByZW1vdmVJbmxpbmVBdG9tcyhyYW5nZXMpIHtcbiAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHsgJGZyb20sICR0byB9ID0gcmFuZ2VzW2ldO1xuICAgICAgICAkZnJvbS5kb2Mubm9kZXNCZXR3ZWVuKCRmcm9tLnBvcywgJHRvLnBvcywgKG5vZGUsIHBvcykgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUuaXNBdG9tICYmIG5vZGUuY29udGVudC5zaXplICYmIG5vZGUuaXNJbmxpbmUgJiYgcG9zID49ICRmcm9tLnBvcyAmJiBwb3MgKyBub2RlLm5vZGVTaXplIDw9ICR0by5wb3MpIHtcbiAgICAgICAgICAgICAgICBpZiAocG9zICsgMSA+ICRmcm9tLnBvcylcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFNlbGVjdGlvblJhbmdlKCRmcm9tLCAkZnJvbS5kb2MucmVzb2x2ZShwb3MgKyAxKSkpO1xuICAgICAgICAgICAgICAgICRmcm9tID0gJGZyb20uZG9jLnJlc29sdmUocG9zICsgMSArIG5vZGUuY29udGVudC5zaXplKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoJGZyb20ucG9zIDwgJHRvLnBvcylcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBTZWxlY3Rpb25SYW5nZSgkZnJvbSwgJHRvKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbkNyZWF0ZSBhIGNvbW1hbmQgZnVuY3Rpb24gdGhhdCB0b2dnbGVzIHRoZSBnaXZlbiBtYXJrIHdpdGggdGhlXG5naXZlbiBhdHRyaWJ1dGVzLiBXaWxsIHJldHVybiBgZmFsc2VgIHdoZW4gdGhlIGN1cnJlbnQgc2VsZWN0aW9uXG5kb2Vzbid0IHN1cHBvcnQgdGhhdCBtYXJrLiBUaGlzIHdpbGwgcmVtb3ZlIHRoZSBtYXJrIGlmIGFueSBtYXJrc1xub2YgdGhhdCB0eXBlIGV4aXN0IGluIHRoZSBzZWxlY3Rpb24sIG9yIGFkZCBpdCBvdGhlcndpc2UuIElmIHRoZVxuc2VsZWN0aW9uIGlzIGVtcHR5LCB0aGlzIGFwcGxpZXMgdG8gdGhlIFtzdG9yZWRcbm1hcmtzXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jc3RhdGUuRWRpdG9yU3RhdGUuc3RvcmVkTWFya3MpIGluc3RlYWQgb2YgYSByYW5nZSBvZiB0aGVcbmRvY3VtZW50LlxuKi9cbmZ1bmN0aW9uIHRvZ2dsZU1hcmsobWFya1R5cGUsIGF0dHJzID0gbnVsbCwgb3B0aW9ucykge1xuICAgIGxldCByZW1vdmVXaGVuUHJlc2VudCA9IChvcHRpb25zICYmIG9wdGlvbnMucmVtb3ZlV2hlblByZXNlbnQpICE9PSBmYWxzZTtcbiAgICBsZXQgZW50ZXJBdG9tcyA9IChvcHRpb25zICYmIG9wdGlvbnMuZW50ZXJJbmxpbmVBdG9tcykgIT09IGZhbHNlO1xuICAgIGxldCBkcm9wU3BhY2UgPSAhKG9wdGlvbnMgJiYgb3B0aW9ucy5pbmNsdWRlV2hpdGVzcGFjZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzdGF0ZSwgZGlzcGF0Y2gpIHtcbiAgICAgICAgbGV0IHsgZW1wdHksICRjdXJzb3IsIHJhbmdlcyB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICBpZiAoKGVtcHR5ICYmICEkY3Vyc29yKSB8fCAhbWFya0FwcGxpZXMoc3RhdGUuZG9jLCByYW5nZXMsIG1hcmtUeXBlLCBlbnRlckF0b21zKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgICAgICBpZiAoJGN1cnNvcikge1xuICAgICAgICAgICAgICAgIGlmIChtYXJrVHlwZS5pc0luU2V0KHN0YXRlLnN0b3JlZE1hcmtzIHx8ICRjdXJzb3IubWFya3MoKSkpXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLnJlbW92ZVN0b3JlZE1hcmsobWFya1R5cGUpKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLmFkZFN0b3JlZE1hcmsobWFya1R5cGUuY3JlYXRlKGF0dHJzKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGFkZCwgdHIgPSBzdGF0ZS50cjtcbiAgICAgICAgICAgICAgICBpZiAoIWVudGVyQXRvbXMpXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlcyA9IHJlbW92ZUlubGluZUF0b21zKHJhbmdlcyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlbW92ZVdoZW5QcmVzZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZCA9ICFyYW5nZXMuc29tZShyID0+IHN0YXRlLmRvYy5yYW5nZUhhc01hcmsoci4kZnJvbS5wb3MsIHIuJHRvLnBvcywgbWFya1R5cGUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZCA9ICFyYW5nZXMuZXZlcnkociA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWlzc2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHIuZG9jLm5vZGVzQmV0d2VlbihyLiRmcm9tLnBvcywgci4kdG8ucG9zLCAobm9kZSwgcG9zLCBwYXJlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWlzc2luZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NpbmcgPSAhbWFya1R5cGUuaXNJblNldChub2RlLm1hcmtzKSAmJiAhIXBhcmVudCAmJiBwYXJlbnQudHlwZS5hbGxvd3NNYXJrVHlwZShtYXJrVHlwZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShub2RlLmlzVGV4dCAmJiAvXlxccyokLy50ZXN0KG5vZGUudGV4dEJldHdlZW4oTWF0aC5tYXgoMCwgci4kZnJvbS5wb3MgLSBwb3MpLCBNYXRoLm1pbihub2RlLm5vZGVTaXplLCByLiR0by5wb3MgLSBwb3MpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIW1pc3Npbmc7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgeyAkZnJvbSwgJHRvIH0gPSByYW5nZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghYWRkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ci5yZW1vdmVNYXJrKCRmcm9tLnBvcywgJHRvLnBvcywgbWFya1R5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZyb20gPSAkZnJvbS5wb3MsIHRvID0gJHRvLnBvcywgc3RhcnQgPSAkZnJvbS5ub2RlQWZ0ZXIsIGVuZCA9ICR0by5ub2RlQmVmb3JlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNwYWNlU3RhcnQgPSBkcm9wU3BhY2UgJiYgc3RhcnQgJiYgc3RhcnQuaXNUZXh0ID8gL15cXHMqLy5leGVjKHN0YXJ0LnRleHQpWzBdLmxlbmd0aCA6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3BhY2VFbmQgPSBkcm9wU3BhY2UgJiYgZW5kICYmIGVuZC5pc1RleHQgPyAvXFxzKiQvLmV4ZWMoZW5kLnRleHQpWzBdLmxlbmd0aCA6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJvbSArIHNwYWNlU3RhcnQgPCB0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gKz0gc3BhY2VTdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byAtPSBzcGFjZUVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyLmFkZE1hcmsoZnJvbSwgdG8sIG1hcmtUeXBlLmNyZWF0ZShhdHRycykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHRyLnNjcm9sbEludG9WaWV3KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG59XG5mdW5jdGlvbiB3cmFwRGlzcGF0Y2hGb3JKb2luKGRpc3BhdGNoLCBpc0pvaW5hYmxlKSB7XG4gICAgcmV0dXJuICh0cikgPT4ge1xuICAgICAgICBpZiAoIXRyLmlzR2VuZXJpYylcbiAgICAgICAgICAgIHJldHVybiBkaXNwYXRjaCh0cik7XG4gICAgICAgIGxldCByYW5nZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ci5tYXBwaW5nLm1hcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYXAgPSB0ci5tYXBwaW5nLm1hcHNbaV07XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJhbmdlcy5sZW5ndGg7IGorKylcbiAgICAgICAgICAgICAgICByYW5nZXNbal0gPSBtYXAubWFwKHJhbmdlc1tqXSk7XG4gICAgICAgICAgICBtYXAuZm9yRWFjaCgoX3MsIF9lLCBmcm9tLCB0bykgPT4gcmFuZ2VzLnB1c2goZnJvbSwgdG8pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIGpvaW5hYmxlIHBvaW50cyBleGlzdCBpbnNpZGUgdGhvc2UgcmFuZ2VzLFxuICAgICAgICAvLyBieSBjaGVja2luZyBhbGwgbm9kZSBib3VuZGFyaWVzIGluIHRoZWlyIHBhcmVudCBub2Rlcy5cbiAgICAgICAgbGV0IGpvaW5hYmxlID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgICAgICBsZXQgZnJvbSA9IHJhbmdlc1tpXSwgdG8gPSByYW5nZXNbaSArIDFdO1xuICAgICAgICAgICAgbGV0ICRmcm9tID0gdHIuZG9jLnJlc29sdmUoZnJvbSksIGRlcHRoID0gJGZyb20uc2hhcmVkRGVwdGgodG8pLCBwYXJlbnQgPSAkZnJvbS5ub2RlKGRlcHRoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gJGZyb20uaW5kZXhBZnRlcihkZXB0aCksIHBvcyA9ICRmcm9tLmFmdGVyKGRlcHRoICsgMSk7IHBvcyA8PSB0bzsgKytpbmRleCkge1xuICAgICAgICAgICAgICAgIGxldCBhZnRlciA9IHBhcmVudC5tYXliZUNoaWxkKGluZGV4KTtcbiAgICAgICAgICAgICAgICBpZiAoIWFmdGVyKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggJiYgam9pbmFibGUuaW5kZXhPZihwb3MpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBiZWZvcmUgPSBwYXJlbnQuY2hpbGQoaW5kZXggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJlZm9yZS50eXBlID09IGFmdGVyLnR5cGUgJiYgaXNKb2luYWJsZShiZWZvcmUsIGFmdGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGpvaW5hYmxlLnB1c2gocG9zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcG9zICs9IGFmdGVyLm5vZGVTaXplO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEpvaW4gdGhlIGpvaW5hYmxlIHBvaW50c1xuICAgICAgICBqb2luYWJsZS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICAgIGZvciAobGV0IGkgPSBqb2luYWJsZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKGNhbkpvaW4odHIuZG9jLCBqb2luYWJsZVtpXSkpXG4gICAgICAgICAgICAgICAgdHIuam9pbihqb2luYWJsZVtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZGlzcGF0Y2godHIpO1xuICAgIH07XG59XG4vKipcbldyYXAgYSBjb21tYW5kIHNvIHRoYXQsIHdoZW4gaXQgcHJvZHVjZXMgYSB0cmFuc2Zvcm0gdGhhdCBjYXVzZXNcbnR3byBqb2luYWJsZSBub2RlcyB0byBlbmQgdXAgbmV4dCB0byBlYWNoIG90aGVyLCB0aG9zZSBhcmUgam9pbmVkLlxuTm9kZXMgYXJlIGNvbnNpZGVyZWQgam9pbmFibGUgd2hlbiB0aGV5IGFyZSBvZiB0aGUgc2FtZSB0eXBlIGFuZFxud2hlbiB0aGUgYGlzSm9pbmFibGVgIHByZWRpY2F0ZSByZXR1cm5zIHRydWUgZm9yIHRoZW0gb3IsIGlmIGFuXG5hcnJheSBvZiBzdHJpbmdzIHdhcyBwYXNzZWQsIGlmIHRoZWlyIG5vZGUgdHlwZSBuYW1lIGlzIGluIHRoYXRcbmFycmF5LlxuKi9cbmZ1bmN0aW9uIGF1dG9Kb2luKGNvbW1hbmQsIGlzSm9pbmFibGUpIHtcbiAgICBsZXQgY2FuSm9pbiA9IEFycmF5LmlzQXJyYXkoaXNKb2luYWJsZSkgPyAobm9kZSkgPT4gaXNKb2luYWJsZS5pbmRleE9mKG5vZGUudHlwZS5uYW1lKSA+IC0xXG4gICAgICAgIDogaXNKb2luYWJsZTtcbiAgICByZXR1cm4gKHN0YXRlLCBkaXNwYXRjaCwgdmlldykgPT4gY29tbWFuZChzdGF0ZSwgZGlzcGF0Y2ggJiYgd3JhcERpc3BhdGNoRm9ySm9pbihkaXNwYXRjaCwgY2FuSm9pbiksIHZpZXcpO1xufVxuLyoqXG5Db21iaW5lIGEgbnVtYmVyIG9mIGNvbW1hbmQgZnVuY3Rpb25zIGludG8gYSBzaW5nbGUgZnVuY3Rpb24gKHdoaWNoXG5jYWxscyB0aGVtIG9uZSBieSBvbmUgdW50aWwgb25lIHJldHVybnMgdHJ1ZSkuXG4qL1xuZnVuY3Rpb24gY2hhaW5Db21tYW5kcyguLi5jb21tYW5kcykge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc3RhdGUsIGRpc3BhdGNoLCB2aWV3KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tbWFuZHMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAoY29tbWFuZHNbaV0oc3RhdGUsIGRpc3BhdGNoLCB2aWV3KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG59XG5sZXQgYmFja3NwYWNlID0gY2hhaW5Db21tYW5kcyhkZWxldGVTZWxlY3Rpb24sIGpvaW5CYWNrd2FyZCwgc2VsZWN0Tm9kZUJhY2t3YXJkKTtcbmxldCBkZWwgPSBjaGFpbkNvbW1hbmRzKGRlbGV0ZVNlbGVjdGlvbiwgam9pbkZvcndhcmQsIHNlbGVjdE5vZGVGb3J3YXJkKTtcbi8qKlxuQSBiYXNpYyBrZXltYXAgY29udGFpbmluZyBiaW5kaW5ncyBub3Qgc3BlY2lmaWMgdG8gYW55IHNjaGVtYS5cbkJpbmRzIHRoZSBmb2xsb3dpbmcga2V5cyAod2hlbiBtdWx0aXBsZSBjb21tYW5kcyBhcmUgbGlzdGVkLCB0aGV5XG5hcmUgY2hhaW5lZCB3aXRoIFtgY2hhaW5Db21tYW5kc2BdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNjb21tYW5kcy5jaGFpbkNvbW1hbmRzKSk6XG5cbiogKipFbnRlcioqIHRvIGBuZXdsaW5lSW5Db2RlYCwgYGNyZWF0ZVBhcmFncmFwaE5lYXJgLCBgbGlmdEVtcHR5QmxvY2tgLCBgc3BsaXRCbG9ja2BcbiogKipNb2QtRW50ZXIqKiB0byBgZXhpdENvZGVgXG4qICoqQmFja3NwYWNlKiogYW5kICoqTW9kLUJhY2tzcGFjZSoqIHRvIGBkZWxldGVTZWxlY3Rpb25gLCBgam9pbkJhY2t3YXJkYCwgYHNlbGVjdE5vZGVCYWNrd2FyZGBcbiogKipEZWxldGUqKiBhbmQgKipNb2QtRGVsZXRlKiogdG8gYGRlbGV0ZVNlbGVjdGlvbmAsIGBqb2luRm9yd2FyZGAsIGBzZWxlY3ROb2RlRm9yd2FyZGBcbiogKipNb2QtRGVsZXRlKiogdG8gYGRlbGV0ZVNlbGVjdGlvbmAsIGBqb2luRm9yd2FyZGAsIGBzZWxlY3ROb2RlRm9yd2FyZGBcbiogKipNb2QtYSoqIHRvIGBzZWxlY3RBbGxgXG4qL1xuY29uc3QgcGNCYXNlS2V5bWFwID0ge1xuICAgIFwiRW50ZXJcIjogY2hhaW5Db21tYW5kcyhuZXdsaW5lSW5Db2RlLCBjcmVhdGVQYXJhZ3JhcGhOZWFyLCBsaWZ0RW1wdHlCbG9jaywgc3BsaXRCbG9jayksXG4gICAgXCJNb2QtRW50ZXJcIjogZXhpdENvZGUsXG4gICAgXCJCYWNrc3BhY2VcIjogYmFja3NwYWNlLFxuICAgIFwiTW9kLUJhY2tzcGFjZVwiOiBiYWNrc3BhY2UsXG4gICAgXCJTaGlmdC1CYWNrc3BhY2VcIjogYmFja3NwYWNlLFxuICAgIFwiRGVsZXRlXCI6IGRlbCxcbiAgICBcIk1vZC1EZWxldGVcIjogZGVsLFxuICAgIFwiTW9kLWFcIjogc2VsZWN0QWxsXG59O1xuLyoqXG5BIGNvcHkgb2YgYHBjQmFzZUtleW1hcGAgdGhhdCBhbHNvIGJpbmRzICoqQ3RybC1oKiogbGlrZSBCYWNrc3BhY2UsXG4qKkN0cmwtZCoqIGxpa2UgRGVsZXRlLCAqKkFsdC1CYWNrc3BhY2UqKiBsaWtlIEN0cmwtQmFja3NwYWNlLCBhbmRcbioqQ3RybC1BbHQtQmFja3NwYWNlKiosICoqQWx0LURlbGV0ZSoqLCBhbmQgKipBbHQtZCoqIGxpa2VcbkN0cmwtRGVsZXRlLlxuKi9cbmNvbnN0IG1hY0Jhc2VLZXltYXAgPSB7XG4gICAgXCJDdHJsLWhcIjogcGNCYXNlS2V5bWFwW1wiQmFja3NwYWNlXCJdLFxuICAgIFwiQWx0LUJhY2tzcGFjZVwiOiBwY0Jhc2VLZXltYXBbXCJNb2QtQmFja3NwYWNlXCJdLFxuICAgIFwiQ3RybC1kXCI6IHBjQmFzZUtleW1hcFtcIkRlbGV0ZVwiXSxcbiAgICBcIkN0cmwtQWx0LUJhY2tzcGFjZVwiOiBwY0Jhc2VLZXltYXBbXCJNb2QtRGVsZXRlXCJdLFxuICAgIFwiQWx0LURlbGV0ZVwiOiBwY0Jhc2VLZXltYXBbXCJNb2QtRGVsZXRlXCJdLFxuICAgIFwiQWx0LWRcIjogcGNCYXNlS2V5bWFwW1wiTW9kLURlbGV0ZVwiXSxcbiAgICBcIkN0cmwtYVwiOiBzZWxlY3RUZXh0YmxvY2tTdGFydCxcbiAgICBcIkN0cmwtZVwiOiBzZWxlY3RUZXh0YmxvY2tFbmRcbn07XG5mb3IgKGxldCBrZXkgaW4gcGNCYXNlS2V5bWFwKVxuICAgIG1hY0Jhc2VLZXltYXBba2V5XSA9IHBjQmFzZUtleW1hcFtrZXldO1xuY29uc3QgbWFjID0gdHlwZW9mIG5hdmlnYXRvciAhPSBcInVuZGVmaW5lZFwiID8gL01hY3xpUChob25lfFtvYV1kKS8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIDogdHlwZW9mIG9zICE9IFwidW5kZWZpbmVkXCIgJiYgb3MucGxhdGZvcm0gPyBvcy5wbGF0Zm9ybSgpID09IFwiZGFyd2luXCIgOiBmYWxzZTtcbi8qKlxuRGVwZW5kaW5nIG9uIHRoZSBkZXRlY3RlZCBwbGF0Zm9ybSwgdGhpcyB3aWxsIGhvbGRcbltgcGNCYXNla2V5bWFwYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI2NvbW1hbmRzLnBjQmFzZUtleW1hcCkgb3JcbltgbWFjQmFzZUtleW1hcGBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNjb21tYW5kcy5tYWNCYXNlS2V5bWFwKS5cbiovXG5jb25zdCBiYXNlS2V5bWFwID0gbWFjID8gbWFjQmFzZUtleW1hcCA6IHBjQmFzZUtleW1hcDtcblxuZXhwb3J0IHsgYXV0b0pvaW4sIGJhc2VLZXltYXAsIGNoYWluQ29tbWFuZHMsIGNyZWF0ZVBhcmFncmFwaE5lYXIsIGRlbGV0ZVNlbGVjdGlvbiwgZXhpdENvZGUsIGpvaW5CYWNrd2FyZCwgam9pbkRvd24sIGpvaW5Gb3J3YXJkLCBqb2luVGV4dGJsb2NrQmFja3dhcmQsIGpvaW5UZXh0YmxvY2tGb3J3YXJkLCBqb2luVXAsIGxpZnQsIGxpZnRFbXB0eUJsb2NrLCBtYWNCYXNlS2V5bWFwLCBuZXdsaW5lSW5Db2RlLCBwY0Jhc2VLZXltYXAsIHNlbGVjdEFsbCwgc2VsZWN0Tm9kZUJhY2t3YXJkLCBzZWxlY3ROb2RlRm9yd2FyZCwgc2VsZWN0UGFyZW50Tm9kZSwgc2VsZWN0VGV4dGJsb2NrRW5kLCBzZWxlY3RUZXh0YmxvY2tTdGFydCwgc2V0QmxvY2tUeXBlLCBzcGxpdEJsb2NrLCBzcGxpdEJsb2NrQXMsIHNwbGl0QmxvY2tLZWVwTWFya3MsIHRvZ2dsZU1hcmssIHdyYXBJbiB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-commands/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-dropcursor/dist/index.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/prosemirror-dropcursor/dist/index.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ dropCursor: () => (/* binding */ dropCursor)\n/* harmony export */ });\n/* harmony import */ var prosemirror_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-state */ \"(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js\");\n/* harmony import */ var prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prosemirror-transform */ \"(app-pages-browser)/./node_modules/prosemirror-transform/dist/index.js\");\n\n\n\n/**\nCreate a plugin that, when added to a ProseMirror instance,\ncauses a decoration to show up at the drop position when something\nis dragged over the editor.\n\nNodes may add a `disableDropCursor` property to their spec to\ncontrol the showing of a drop cursor inside them. This may be a\nboolean or a function, which will be called with a view and a\nposition, and should return a boolean.\n*/\nfunction dropCursor(options = {}) {\n return new prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.Plugin({\n view(editorView) { return new DropCursorView(editorView, options); }\n });\n}\nclass DropCursorView {\n constructor(editorView, options) {\n var _a;\n this.editorView = editorView;\n this.cursorPos = null;\n this.element = null;\n this.timeout = -1;\n this.width = (_a = options.width) !== null && _a !== void 0 ? _a : 1;\n this.color = options.color === false ? undefined : (options.color || \"black\");\n this.class = options.class;\n this.handlers = [\"dragover\", \"dragend\", \"drop\", \"dragleave\"].map(name => {\n let handler = (e) => { this[name](e); };\n editorView.dom.addEventListener(name, handler);\n return { name, handler };\n });\n }\n destroy() {\n this.handlers.forEach(({ name, handler }) => this.editorView.dom.removeEventListener(name, handler));\n }\n update(editorView, prevState) {\n if (this.cursorPos != null && prevState.doc != editorView.state.doc) {\n if (this.cursorPos > editorView.state.doc.content.size)\n this.setCursor(null);\n else\n this.updateOverlay();\n }\n }\n setCursor(pos) {\n if (pos == this.cursorPos)\n return;\n this.cursorPos = pos;\n if (pos == null) {\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n }\n else {\n this.updateOverlay();\n }\n }\n updateOverlay() {\n let $pos = this.editorView.state.doc.resolve(this.cursorPos);\n let isBlock = !$pos.parent.inlineContent, rect;\n let editorDOM = this.editorView.dom, editorRect = editorDOM.getBoundingClientRect();\n let scaleX = editorRect.width / editorDOM.offsetWidth, scaleY = editorRect.height / editorDOM.offsetHeight;\n if (isBlock) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter;\n if (before || after) {\n let node = this.editorView.nodeDOM(this.cursorPos - (before ? before.nodeSize : 0));\n if (node) {\n let nodeRect = node.getBoundingClientRect();\n let top = before ? nodeRect.bottom : nodeRect.top;\n if (before && after)\n top = (top + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2;\n let halfWidth = (this.width / 2) * scaleY;\n rect = { left: nodeRect.left, right: nodeRect.right, top: top - halfWidth, bottom: top + halfWidth };\n }\n }\n }\n if (!rect) {\n let coords = this.editorView.coordsAtPos(this.cursorPos);\n let halfWidth = (this.width / 2) * scaleX;\n rect = { left: coords.left - halfWidth, right: coords.left + halfWidth, top: coords.top, bottom: coords.bottom };\n }\n let parent = this.editorView.dom.offsetParent;\n if (!this.element) {\n this.element = parent.appendChild(document.createElement(\"div\"));\n if (this.class)\n this.element.className = this.class;\n this.element.style.cssText = \"position: absolute; z-index: 50; pointer-events: none;\";\n if (this.color) {\n this.element.style.backgroundColor = this.color;\n }\n }\n this.element.classList.toggle(\"prosemirror-dropcursor-block\", isBlock);\n this.element.classList.toggle(\"prosemirror-dropcursor-inline\", !isBlock);\n let parentLeft, parentTop;\n if (!parent || parent == document.body && getComputedStyle(parent).position == \"static\") {\n parentLeft = -pageXOffset;\n parentTop = -pageYOffset;\n }\n else {\n let rect = parent.getBoundingClientRect();\n let parentScaleX = rect.width / parent.offsetWidth, parentScaleY = rect.height / parent.offsetHeight;\n parentLeft = rect.left - parent.scrollLeft * parentScaleX;\n parentTop = rect.top - parent.scrollTop * parentScaleY;\n }\n this.element.style.left = (rect.left - parentLeft) / scaleX + \"px\";\n this.element.style.top = (rect.top - parentTop) / scaleY + \"px\";\n this.element.style.width = (rect.right - rect.left) / scaleX + \"px\";\n this.element.style.height = (rect.bottom - rect.top) / scaleY + \"px\";\n }\n scheduleRemoval(timeout) {\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => this.setCursor(null), timeout);\n }\n dragover(event) {\n if (!this.editorView.editable)\n return;\n let pos = this.editorView.posAtCoords({ left: event.clientX, top: event.clientY });\n let node = pos && pos.inside >= 0 && this.editorView.state.doc.nodeAt(pos.inside);\n let disableDropCursor = node && node.type.spec.disableDropCursor;\n let disabled = typeof disableDropCursor == \"function\"\n ? disableDropCursor(this.editorView, pos, event)\n : disableDropCursor;\n if (pos && !disabled) {\n let target = pos.pos;\n if (this.editorView.dragging && this.editorView.dragging.slice) {\n let point = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.dropPoint)(this.editorView.state.doc, target, this.editorView.dragging.slice);\n if (point != null)\n target = point;\n }\n this.setCursor(target);\n this.scheduleRemoval(5000);\n }\n }\n dragend() {\n this.scheduleRemoval(20);\n }\n drop() {\n this.scheduleRemoval(20);\n }\n dragleave(event) {\n if (!this.editorView.dom.contains(event.relatedTarget))\n this.setCursor(null);\n }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci1kcm9wY3Vyc29yL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTJDO0FBQ087O0FBRWxEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMsZUFBZSxxREFBTTtBQUNyQiwyQkFBMkI7QUFDM0IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBLHFCQUFxQjtBQUNyQixTQUFTO0FBQ1Q7QUFDQTtBQUNBLGlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThELGFBQWEscUJBQXFCO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QseUNBQXlDO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0VBQVM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVzQiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xccHJvc2VtaXJyb3ItZHJvcGN1cnNvclxcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuaW1wb3J0IHsgZHJvcFBvaW50IH0gZnJvbSAncHJvc2VtaXJyb3ItdHJhbnNmb3JtJztcblxuLyoqXG5DcmVhdGUgYSBwbHVnaW4gdGhhdCwgd2hlbiBhZGRlZCB0byBhIFByb3NlTWlycm9yIGluc3RhbmNlLFxuY2F1c2VzIGEgZGVjb3JhdGlvbiB0byBzaG93IHVwIGF0IHRoZSBkcm9wIHBvc2l0aW9uIHdoZW4gc29tZXRoaW5nXG5pcyBkcmFnZ2VkIG92ZXIgdGhlIGVkaXRvci5cblxuTm9kZXMgbWF5IGFkZCBhIGBkaXNhYmxlRHJvcEN1cnNvcmAgcHJvcGVydHkgdG8gdGhlaXIgc3BlYyB0b1xuY29udHJvbCB0aGUgc2hvd2luZyBvZiBhIGRyb3AgY3Vyc29yIGluc2lkZSB0aGVtLiBUaGlzIG1heSBiZSBhXG5ib29sZWFuIG9yIGEgZnVuY3Rpb24sIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggYSB2aWV3IGFuZCBhXG5wb3NpdGlvbiwgYW5kIHNob3VsZCByZXR1cm4gYSBib29sZWFuLlxuKi9cbmZ1bmN0aW9uIGRyb3BDdXJzb3Iob3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBQbHVnaW4oe1xuICAgICAgICB2aWV3KGVkaXRvclZpZXcpIHsgcmV0dXJuIG5ldyBEcm9wQ3Vyc29yVmlldyhlZGl0b3JWaWV3LCBvcHRpb25zKTsgfVxuICAgIH0pO1xufVxuY2xhc3MgRHJvcEN1cnNvclZpZXcge1xuICAgIGNvbnN0cnVjdG9yKGVkaXRvclZpZXcsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLmVkaXRvclZpZXcgPSBlZGl0b3JWaWV3O1xuICAgICAgICB0aGlzLmN1cnNvclBvcyA9IG51bGw7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRoaXMudGltZW91dCA9IC0xO1xuICAgICAgICB0aGlzLndpZHRoID0gKF9hID0gb3B0aW9ucy53aWR0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMTtcbiAgICAgICAgdGhpcy5jb2xvciA9IG9wdGlvbnMuY29sb3IgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogKG9wdGlvbnMuY29sb3IgfHwgXCJibGFja1wiKTtcbiAgICAgICAgdGhpcy5jbGFzcyA9IG9wdGlvbnMuY2xhc3M7XG4gICAgICAgIHRoaXMuaGFuZGxlcnMgPSBbXCJkcmFnb3ZlclwiLCBcImRyYWdlbmRcIiwgXCJkcm9wXCIsIFwiZHJhZ2xlYXZlXCJdLm1hcChuYW1lID0+IHtcbiAgICAgICAgICAgIGxldCBoYW5kbGVyID0gKGUpID0+IHsgdGhpc1tuYW1lXShlKTsgfTtcbiAgICAgICAgICAgIGVkaXRvclZpZXcuZG9tLmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlcik7XG4gICAgICAgICAgICByZXR1cm4geyBuYW1lLCBoYW5kbGVyIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goKHsgbmFtZSwgaGFuZGxlciB9KSA9PiB0aGlzLmVkaXRvclZpZXcuZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlcikpO1xuICAgIH1cbiAgICB1cGRhdGUoZWRpdG9yVmlldywgcHJldlN0YXRlKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnNvclBvcyAhPSBudWxsICYmIHByZXZTdGF0ZS5kb2MgIT0gZWRpdG9yVmlldy5zdGF0ZS5kb2MpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvcyA+IGVkaXRvclZpZXcuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSlcbiAgICAgICAgICAgICAgICB0aGlzLnNldEN1cnNvcihudWxsKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU92ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXRDdXJzb3IocG9zKSB7XG4gICAgICAgIGlmIChwb3MgPT0gdGhpcy5jdXJzb3JQb3MpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuY3Vyc29yUG9zID0gcG9zO1xuICAgICAgICBpZiAocG9zID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdXBkYXRlT3ZlcmxheSgpIHtcbiAgICAgICAgbGV0ICRwb3MgPSB0aGlzLmVkaXRvclZpZXcuc3RhdGUuZG9jLnJlc29sdmUodGhpcy5jdXJzb3JQb3MpO1xuICAgICAgICBsZXQgaXNCbG9jayA9ICEkcG9zLnBhcmVudC5pbmxpbmVDb250ZW50LCByZWN0O1xuICAgICAgICBsZXQgZWRpdG9yRE9NID0gdGhpcy5lZGl0b3JWaWV3LmRvbSwgZWRpdG9yUmVjdCA9IGVkaXRvckRPTS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IHNjYWxlWCA9IGVkaXRvclJlY3Qud2lkdGggLyBlZGl0b3JET00ub2Zmc2V0V2lkdGgsIHNjYWxlWSA9IGVkaXRvclJlY3QuaGVpZ2h0IC8gZWRpdG9yRE9NLm9mZnNldEhlaWdodDtcbiAgICAgICAgaWYgKGlzQmxvY2spIHtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSAkcG9zLm5vZGVCZWZvcmUsIGFmdGVyID0gJHBvcy5ub2RlQWZ0ZXI7XG4gICAgICAgICAgICBpZiAoYmVmb3JlIHx8IGFmdGVyKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLmVkaXRvclZpZXcubm9kZURPTSh0aGlzLmN1cnNvclBvcyAtIChiZWZvcmUgPyBiZWZvcmUubm9kZVNpemUgOiAwKSk7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVSZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRvcCA9IGJlZm9yZSA/IG5vZGVSZWN0LmJvdHRvbSA6IG5vZGVSZWN0LnRvcDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJlZm9yZSAmJiBhZnRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9ICh0b3AgKyB0aGlzLmVkaXRvclZpZXcubm9kZURPTSh0aGlzLmN1cnNvclBvcykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIGxldCBoYWxmV2lkdGggPSAodGhpcy53aWR0aCAvIDIpICogc2NhbGVZO1xuICAgICAgICAgICAgICAgICAgICByZWN0ID0geyBsZWZ0OiBub2RlUmVjdC5sZWZ0LCByaWdodDogbm9kZVJlY3QucmlnaHQsIHRvcDogdG9wIC0gaGFsZldpZHRoLCBib3R0b206IHRvcCArIGhhbGZXaWR0aCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlY3QpIHtcbiAgICAgICAgICAgIGxldCBjb29yZHMgPSB0aGlzLmVkaXRvclZpZXcuY29vcmRzQXRQb3ModGhpcy5jdXJzb3JQb3MpO1xuICAgICAgICAgICAgbGV0IGhhbGZXaWR0aCA9ICh0aGlzLndpZHRoIC8gMikgKiBzY2FsZVg7XG4gICAgICAgICAgICByZWN0ID0geyBsZWZ0OiBjb29yZHMubGVmdCAtIGhhbGZXaWR0aCwgcmlnaHQ6IGNvb3Jkcy5sZWZ0ICsgaGFsZldpZHRoLCB0b3A6IGNvb3Jkcy50b3AsIGJvdHRvbTogY29vcmRzLmJvdHRvbSB9O1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLmVkaXRvclZpZXcuZG9tLm9mZnNldFBhcmVudDtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IHBhcmVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzKVxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSB0aGlzLmNsYXNzO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogNTA7IHBvaW50ZXItZXZlbnRzOiBub25lO1wiO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29sb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShcInByb3NlbWlycm9yLWRyb3BjdXJzb3ItYmxvY2tcIiwgaXNCbG9jayk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFwicHJvc2VtaXJyb3ItZHJvcGN1cnNvci1pbmxpbmVcIiwgIWlzQmxvY2spO1xuICAgICAgICBsZXQgcGFyZW50TGVmdCwgcGFyZW50VG9wO1xuICAgICAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQgPT0gZG9jdW1lbnQuYm9keSAmJiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudCkucG9zaXRpb24gPT0gXCJzdGF0aWNcIikge1xuICAgICAgICAgICAgcGFyZW50TGVmdCA9IC1wYWdlWE9mZnNldDtcbiAgICAgICAgICAgIHBhcmVudFRvcCA9IC1wYWdlWU9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCByZWN0ID0gcGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgbGV0IHBhcmVudFNjYWxlWCA9IHJlY3Qud2lkdGggLyBwYXJlbnQub2Zmc2V0V2lkdGgsIHBhcmVudFNjYWxlWSA9IHJlY3QuaGVpZ2h0IC8gcGFyZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIHBhcmVudExlZnQgPSByZWN0LmxlZnQgLSBwYXJlbnQuc2Nyb2xsTGVmdCAqIHBhcmVudFNjYWxlWDtcbiAgICAgICAgICAgIHBhcmVudFRvcCA9IHJlY3QudG9wIC0gcGFyZW50LnNjcm9sbFRvcCAqIHBhcmVudFNjYWxlWTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubGVmdCA9IChyZWN0LmxlZnQgLSBwYXJlbnRMZWZ0KSAvIHNjYWxlWCArIFwicHhcIjtcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9IChyZWN0LnRvcCAtIHBhcmVudFRvcCkgLyBzY2FsZVkgKyBcInB4XCI7XG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSAvIHNjYWxlWCArIFwicHhcIjtcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKSAvIHNjYWxlWSArIFwicHhcIjtcbiAgICB9XG4gICAgc2NoZWR1bGVSZW1vdmFsKHRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRDdXJzb3IobnVsbCksIHRpbWVvdXQpO1xuICAgIH1cbiAgICBkcmFnb3ZlcihldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yVmlldy5lZGl0YWJsZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHBvcyA9IHRoaXMuZWRpdG9yVmlldy5wb3NBdENvb3Jkcyh7IGxlZnQ6IGV2ZW50LmNsaWVudFgsIHRvcDogZXZlbnQuY2xpZW50WSB9KTtcbiAgICAgICAgbGV0IG5vZGUgPSBwb3MgJiYgcG9zLmluc2lkZSA+PSAwICYmIHRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2Mubm9kZUF0KHBvcy5pbnNpZGUpO1xuICAgICAgICBsZXQgZGlzYWJsZURyb3BDdXJzb3IgPSBub2RlICYmIG5vZGUudHlwZS5zcGVjLmRpc2FibGVEcm9wQ3Vyc29yO1xuICAgICAgICBsZXQgZGlzYWJsZWQgPSB0eXBlb2YgZGlzYWJsZURyb3BDdXJzb3IgPT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICA/IGRpc2FibGVEcm9wQ3Vyc29yKHRoaXMuZWRpdG9yVmlldywgcG9zLCBldmVudClcbiAgICAgICAgICAgIDogZGlzYWJsZURyb3BDdXJzb3I7XG4gICAgICAgIGlmIChwb3MgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gcG9zLnBvcztcbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvclZpZXcuZHJhZ2dpbmcgJiYgdGhpcy5lZGl0b3JWaWV3LmRyYWdnaW5nLnNsaWNlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBvaW50ID0gZHJvcFBvaW50KHRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2MsIHRhcmdldCwgdGhpcy5lZGl0b3JWaWV3LmRyYWdnaW5nLnNsaWNlKTtcbiAgICAgICAgICAgICAgICBpZiAocG9pbnQgIT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gcG9pbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldEN1cnNvcih0YXJnZXQpO1xuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZVJlbW92YWwoNTAwMCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZHJhZ2VuZCgpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZVJlbW92YWwoMjApO1xuICAgIH1cbiAgICBkcm9wKCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlUmVtb3ZhbCgyMCk7XG4gICAgfVxuICAgIGRyYWdsZWF2ZShldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yVmlldy5kb20uY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpXG4gICAgICAgICAgICB0aGlzLnNldEN1cnNvcihudWxsKTtcbiAgICB9XG59XG5cbmV4cG9ydCB7IGRyb3BDdXJzb3IgfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-dropcursor/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-gapcursor/dist/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/prosemirror-gapcursor/dist/index.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GapCursor: () => (/* binding */ GapCursor),\n/* harmony export */ gapCursor: () => (/* binding */ gapCursor)\n/* harmony export */ });\n/* harmony import */ var prosemirror_keymap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prosemirror-keymap */ \"(app-pages-browser)/./node_modules/prosemirror-keymap/dist/index.js\");\n/* harmony import */ var prosemirror_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-state */ \"(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js\");\n/* harmony import */ var prosemirror_model__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prosemirror-model */ \"(app-pages-browser)/./node_modules/prosemirror-model/dist/index.js\");\n/* harmony import */ var prosemirror_view__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prosemirror-view */ \"(app-pages-browser)/./node_modules/prosemirror-view/dist/index.js\");\n\n\n\n\n\n/**\nGap cursor selections are represented using this class. Its\n`$anchor` and `$head` properties both point at the cursor position.\n*/\nclass GapCursor extends prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.Selection {\n /**\n Create a gap cursor.\n */\n constructor($pos) {\n super($pos, $pos);\n }\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.Selection.near($pos);\n }\n content() { return prosemirror_model__WEBPACK_IMPORTED_MODULE_1__.Slice.empty; }\n eq(other) {\n return other instanceof GapCursor && other.head == this.head;\n }\n toJSON() {\n return { type: \"gapcursor\", pos: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for GapCursor.fromJSON\");\n return new GapCursor(doc.resolve(json.pos));\n }\n /**\n @internal\n */\n getBookmark() { return new GapBookmark(this.anchor); }\n /**\n @internal\n */\n static valid($pos) {\n let parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))\n return false;\n let override = parent.type.spec.allowGapCursor;\n if (override != null)\n return override;\n let deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock;\n }\n /**\n @internal\n */\n static findGapCursorFrom($pos, dir, mustMove = false) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos))\n return $pos;\n let pos = $pos.pos, next = null;\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break;\n }\n else if (d == 0) {\n return null;\n }\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search;\n }\n break;\n }\n next = inside;\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n return null;\n }\n }\n}\nGapCursor.prototype.visible = false;\nGapCursor.findFrom = GapCursor.findGapCursorFrom;\nprosemirror_state__WEBPACK_IMPORTED_MODULE_0__.Selection.jsonID(\"gapcursor\", GapCursor);\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos;\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos));\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.Selection.near($pos);\n }\n}\nfunction needsGap(type) {\n return type.isAtom || type.spec.isolating || type.spec.createGapCursor;\n}\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n // See if the node before (or its first ancestor) is closed\n for (let before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || needsGap(before.type))\n return true;\n if (before.inlineContent)\n return false;\n }\n }\n // Hit start of document\n return true;\n}\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || needsGap(after.type))\n return true;\n if (after.inlineContent)\n return false;\n }\n }\n return true;\n}\n\n/**\nCreate a gap cursor plugin. When enabled, this will capture clicks\nnear and arrow-key-motion past places that don't have a normally\nselectable position nearby, and create a gap cursor selection for\nthem. The cursor is drawn as an element with class\n`ProseMirror-gapcursor`. You can either include\n`style/gapcursor.css` from the package's directory or add your own\nstyles to make it visible.\n*/\nfunction gapCursor() {\n return new prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.Plugin({\n props: {\n decorations: drawGapCursor,\n createSelectionBetween(_view, $anchor, $head) {\n return $anchor.pos == $head.pos && GapCursor.valid($head) ? new GapCursor($head) : null;\n },\n handleClick,\n handleKeyDown,\n handleDOMEvents: { beforeinput: beforeinput }\n }\n });\n}\nconst handleKeyDown = (0,prosemirror_keymap__WEBPACK_IMPORTED_MODULE_2__.keydownHandler)({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\nfunction arrow(axis, dir) {\n const dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function (state, dispatch, view) {\n let sel = state.selection;\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0)\n return false;\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n let $found = GapCursor.findGapCursorFrom($start, dir, mustMove);\n if (!$found)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(new GapCursor($found)));\n return true;\n };\n}\nfunction handleClick(view, pos, event) {\n if (!view || !view.editable)\n return false;\n let $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos))\n return false;\n let clickPos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (clickPos && clickPos.inside > -1 && prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.NodeSelection.isSelectable(view.state.doc.nodeAt(clickPos.inside)))\n return false;\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true;\n}\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor))\n return false;\n let { $from } = view.state.selection;\n let insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert)\n return false;\n let frag = prosemirror_model__WEBPACK_IMPORTED_MODULE_1__.Fragment.empty;\n for (let i = insert.length - 1; i >= 0; i--)\n frag = prosemirror_model__WEBPACK_IMPORTED_MODULE_1__.Fragment.from(insert[i].createAndFill(null, frag));\n let tr = view.state.tr.replace($from.pos, $from.pos, new prosemirror_model__WEBPACK_IMPORTED_MODULE_1__.Slice(frag, 0, 0));\n tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_0__.TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false;\n}\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor))\n return null;\n let node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return prosemirror_view__WEBPACK_IMPORTED_MODULE_3__.DecorationSet.create(state.doc, [prosemirror_view__WEBPACK_IMPORTED_MODULE_3__.Decoration.widget(state.selection.head, node, { key: \"gapcursor\" })]);\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci1nYXBjdXJzb3IvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBb0Q7QUFDZ0M7QUFDaEM7QUFDUzs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isd0RBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCx3REFBUztBQUN0RTtBQUNBLGdCQUFnQixPQUFPLG9EQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLHdEQUF3RCw0REFBYTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCx3REFBUztBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsUUFBUTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLFFBQVE7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFEQUFNO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQSxLQUFLO0FBQ0w7QUFDQSxzQkFBc0Isa0VBQWM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0REFBYTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyx5Q0FBeUM7QUFDL0UsNENBQTRDLDREQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLFFBQVE7QUFDbEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSx1REFBUTtBQUN2QixvQ0FBb0MsUUFBUTtBQUM1QyxlQUFlLHVEQUFRO0FBQ3ZCLDZEQUE2RCxvREFBSztBQUNsRSxvQkFBb0IsNERBQWE7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsMkRBQWEsb0JBQW9CLHdEQUFVLHNDQUFzQyxrQkFBa0I7QUFDOUc7O0FBRWdDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxwcm9zZW1pcnJvci1nYXBjdXJzb3JcXGRpc3RcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGtleWRvd25IYW5kbGVyIH0gZnJvbSAncHJvc2VtaXJyb3Ita2V5bWFwJztcbmltcG9ydCB7IFNlbGVjdGlvbiwgTm9kZVNlbGVjdGlvbiwgVGV4dFNlbGVjdGlvbiwgUGx1Z2luIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuaW1wb3J0IHsgU2xpY2UsIEZyYWdtZW50IH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdGlvblNldCwgRGVjb3JhdGlvbiB9IGZyb20gJ3Byb3NlbWlycm9yLXZpZXcnO1xuXG4vKipcbkdhcCBjdXJzb3Igc2VsZWN0aW9ucyBhcmUgcmVwcmVzZW50ZWQgdXNpbmcgdGhpcyBjbGFzcy4gSXRzXG5gJGFuY2hvcmAgYW5kIGAkaGVhZGAgcHJvcGVydGllcyBib3RoIHBvaW50IGF0IHRoZSBjdXJzb3IgcG9zaXRpb24uXG4qL1xuY2xhc3MgR2FwQ3Vyc29yIGV4dGVuZHMgU2VsZWN0aW9uIHtcbiAgICAvKipcbiAgICBDcmVhdGUgYSBnYXAgY3Vyc29yLlxuICAgICovXG4gICAgY29uc3RydWN0b3IoJHBvcykge1xuICAgICAgICBzdXBlcigkcG9zLCAkcG9zKTtcbiAgICB9XG4gICAgbWFwKGRvYywgbWFwcGluZykge1xuICAgICAgICBsZXQgJHBvcyA9IGRvYy5yZXNvbHZlKG1hcHBpbmcubWFwKHRoaXMuaGVhZCkpO1xuICAgICAgICByZXR1cm4gR2FwQ3Vyc29yLnZhbGlkKCRwb3MpID8gbmV3IEdhcEN1cnNvcigkcG9zKSA6IFNlbGVjdGlvbi5uZWFyKCRwb3MpO1xuICAgIH1cbiAgICBjb250ZW50KCkgeyByZXR1cm4gU2xpY2UuZW1wdHk7IH1cbiAgICBlcShvdGhlcikge1xuICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBHYXBDdXJzb3IgJiYgb3RoZXIuaGVhZCA9PSB0aGlzLmhlYWQ7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJnYXBjdXJzb3JcIiwgcG9zOiB0aGlzLmhlYWQgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbUpTT04oZG9jLCBqc29uKSB7XG4gICAgICAgIGlmICh0eXBlb2YganNvbi5wb3MgIT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBpbnB1dCBmb3IgR2FwQ3Vyc29yLmZyb21KU09OXCIpO1xuICAgICAgICByZXR1cm4gbmV3IEdhcEN1cnNvcihkb2MucmVzb2x2ZShqc29uLnBvcykpO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGdldEJvb2ttYXJrKCkgeyByZXR1cm4gbmV3IEdhcEJvb2ttYXJrKHRoaXMuYW5jaG9yKTsgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgc3RhdGljIHZhbGlkKCRwb3MpIHtcbiAgICAgICAgbGV0IHBhcmVudCA9ICRwb3MucGFyZW50O1xuICAgICAgICBpZiAocGFyZW50LmlzVGV4dGJsb2NrIHx8ICFjbG9zZWRCZWZvcmUoJHBvcykgfHwgIWNsb3NlZEFmdGVyKCRwb3MpKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgb3ZlcnJpZGUgPSBwYXJlbnQudHlwZS5zcGVjLmFsbG93R2FwQ3Vyc29yO1xuICAgICAgICBpZiAob3ZlcnJpZGUgIT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBvdmVycmlkZTtcbiAgICAgICAgbGV0IGRlZmx0ID0gcGFyZW50LmNvbnRlbnRNYXRjaEF0KCRwb3MuaW5kZXgoKSkuZGVmYXVsdFR5cGU7XG4gICAgICAgIHJldHVybiBkZWZsdCAmJiBkZWZsdC5pc1RleHRibG9jaztcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzdGF0aWMgZmluZEdhcEN1cnNvckZyb20oJHBvcywgZGlyLCBtdXN0TW92ZSA9IGZhbHNlKSB7XG4gICAgICAgIHNlYXJjaDogZm9yICg7Oykge1xuICAgICAgICAgICAgaWYgKCFtdXN0TW92ZSAmJiBHYXBDdXJzb3IudmFsaWQoJHBvcykpXG4gICAgICAgICAgICAgICAgcmV0dXJuICRwb3M7XG4gICAgICAgICAgICBsZXQgcG9zID0gJHBvcy5wb3MsIG5leHQgPSBudWxsO1xuICAgICAgICAgICAgLy8gU2NhbiB1cCBmcm9tIHRoaXMgcG9zaXRpb25cbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAkcG9zLmRlcHRoOzsgZC0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9ICRwb3Mubm9kZShkKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlyID4gMCA/ICRwb3MuaW5kZXhBZnRlcihkKSA8IHBhcmVudC5jaGlsZENvdW50IDogJHBvcy5pbmRleChkKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHBhcmVudC5jaGlsZChkaXIgPiAwID8gJHBvcy5pbmRleEFmdGVyKGQpIDogJHBvcy5pbmRleChkKSAtIDEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwb3MgKz0gZGlyO1xuICAgICAgICAgICAgICAgIGxldCAkY3VyID0gJHBvcy5kb2MucmVzb2x2ZShwb3MpO1xuICAgICAgICAgICAgICAgIGlmIChHYXBDdXJzb3IudmFsaWQoJGN1cikpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkY3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQW5kIHRoZW4gZG93biBpbnRvIHRoZSBuZXh0IG5vZGVcbiAgICAgICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgICAgICBsZXQgaW5zaWRlID0gZGlyID4gMCA/IG5leHQuZmlyc3RDaGlsZCA6IG5leHQubGFzdENoaWxkO1xuICAgICAgICAgICAgICAgIGlmICghaW5zaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0LmlzQXRvbSAmJiAhbmV4dC5pc1RleHQgJiYgIU5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKG5leHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkcG9zID0gJHBvcy5kb2MucmVzb2x2ZShwb3MgKyBuZXh0Lm5vZGVTaXplICogZGlyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG11c3RNb3ZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBzZWFyY2g7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5leHQgPSBpbnNpZGU7XG4gICAgICAgICAgICAgICAgcG9zICs9IGRpcjtcbiAgICAgICAgICAgICAgICBsZXQgJGN1ciA9ICRwb3MuZG9jLnJlc29sdmUocG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoR2FwQ3Vyc29yLnZhbGlkKCRjdXIpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGN1cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuR2FwQ3Vyc29yLnByb3RvdHlwZS52aXNpYmxlID0gZmFsc2U7XG5HYXBDdXJzb3IuZmluZEZyb20gPSBHYXBDdXJzb3IuZmluZEdhcEN1cnNvckZyb207XG5TZWxlY3Rpb24uanNvbklEKFwiZ2FwY3Vyc29yXCIsIEdhcEN1cnNvcik7XG5jbGFzcyBHYXBCb29rbWFyayB7XG4gICAgY29uc3RydWN0b3IocG9zKSB7XG4gICAgICAgIHRoaXMucG9zID0gcG9zO1xuICAgIH1cbiAgICBtYXAobWFwcGluZykge1xuICAgICAgICByZXR1cm4gbmV3IEdhcEJvb2ttYXJrKG1hcHBpbmcubWFwKHRoaXMucG9zKSk7XG4gICAgfVxuICAgIHJlc29sdmUoZG9jKSB7XG4gICAgICAgIGxldCAkcG9zID0gZG9jLnJlc29sdmUodGhpcy5wb3MpO1xuICAgICAgICByZXR1cm4gR2FwQ3Vyc29yLnZhbGlkKCRwb3MpID8gbmV3IEdhcEN1cnNvcigkcG9zKSA6IFNlbGVjdGlvbi5uZWFyKCRwb3MpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG5lZWRzR2FwKHR5cGUpIHtcbiAgICByZXR1cm4gdHlwZS5pc0F0b20gfHwgdHlwZS5zcGVjLmlzb2xhdGluZyB8fCB0eXBlLnNwZWMuY3JlYXRlR2FwQ3Vyc29yO1xufVxuZnVuY3Rpb24gY2xvc2VkQmVmb3JlKCRwb3MpIHtcbiAgICBmb3IgKGxldCBkID0gJHBvcy5kZXB0aDsgZCA+PSAwOyBkLS0pIHtcbiAgICAgICAgbGV0IGluZGV4ID0gJHBvcy5pbmRleChkKSwgcGFyZW50ID0gJHBvcy5ub2RlKGQpO1xuICAgICAgICAvLyBBdCB0aGUgc3RhcnQgb2YgdGhpcyBwYXJlbnQsIGxvb2sgYXQgbmV4dCBvbmVcbiAgICAgICAgaWYgKGluZGV4ID09IDApIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQudHlwZS5zcGVjLmlzb2xhdGluZylcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNlZSBpZiB0aGUgbm9kZSBiZWZvcmUgKG9yIGl0cyBmaXJzdCBhbmNlc3RvcikgaXMgY2xvc2VkXG4gICAgICAgIGZvciAobGV0IGJlZm9yZSA9IHBhcmVudC5jaGlsZChpbmRleCAtIDEpOzsgYmVmb3JlID0gYmVmb3JlLmxhc3RDaGlsZCkge1xuICAgICAgICAgICAgaWYgKChiZWZvcmUuY2hpbGRDb3VudCA9PSAwICYmICFiZWZvcmUuaW5saW5lQ29udGVudCkgfHwgbmVlZHNHYXAoYmVmb3JlLnR5cGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgaWYgKGJlZm9yZS5pbmxpbmVDb250ZW50KVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBIaXQgc3RhcnQgb2YgZG9jdW1lbnRcbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGNsb3NlZEFmdGVyKCRwb3MpIHtcbiAgICBmb3IgKGxldCBkID0gJHBvcy5kZXB0aDsgZCA+PSAwOyBkLS0pIHtcbiAgICAgICAgbGV0IGluZGV4ID0gJHBvcy5pbmRleEFmdGVyKGQpLCBwYXJlbnQgPSAkcG9zLm5vZGUoZCk7XG4gICAgICAgIGlmIChpbmRleCA9PSBwYXJlbnQuY2hpbGRDb3VudCkge1xuICAgICAgICAgICAgaWYgKHBhcmVudC50eXBlLnNwZWMuaXNvbGF0aW5nKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgYWZ0ZXIgPSBwYXJlbnQuY2hpbGQoaW5kZXgpOzsgYWZ0ZXIgPSBhZnRlci5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBpZiAoKGFmdGVyLmNoaWxkQ291bnQgPT0gMCAmJiAhYWZ0ZXIuaW5saW5lQ29udGVudCkgfHwgbmVlZHNHYXAoYWZ0ZXIudHlwZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAoYWZ0ZXIuaW5saW5lQ29udGVudClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuQ3JlYXRlIGEgZ2FwIGN1cnNvciBwbHVnaW4uIFdoZW4gZW5hYmxlZCwgdGhpcyB3aWxsIGNhcHR1cmUgY2xpY2tzXG5uZWFyIGFuZCBhcnJvdy1rZXktbW90aW9uIHBhc3QgcGxhY2VzIHRoYXQgZG9uJ3QgaGF2ZSBhIG5vcm1hbGx5XG5zZWxlY3RhYmxlIHBvc2l0aW9uIG5lYXJieSwgYW5kIGNyZWF0ZSBhIGdhcCBjdXJzb3Igc2VsZWN0aW9uIGZvclxudGhlbS4gVGhlIGN1cnNvciBpcyBkcmF3biBhcyBhbiBlbGVtZW50IHdpdGggY2xhc3NcbmBQcm9zZU1pcnJvci1nYXBjdXJzb3JgLiBZb3UgY2FuIGVpdGhlciBpbmNsdWRlXG5gc3R5bGUvZ2FwY3Vyc29yLmNzc2AgZnJvbSB0aGUgcGFja2FnZSdzIGRpcmVjdG9yeSBvciBhZGQgeW91ciBvd25cbnN0eWxlcyB0byBtYWtlIGl0IHZpc2libGUuXG4qL1xuZnVuY3Rpb24gZ2FwQ3Vyc29yKCkge1xuICAgIHJldHVybiBuZXcgUGx1Z2luKHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRlY29yYXRpb25zOiBkcmF3R2FwQ3Vyc29yLFxuICAgICAgICAgICAgY3JlYXRlU2VsZWN0aW9uQmV0d2VlbihfdmlldywgJGFuY2hvciwgJGhlYWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJGFuY2hvci5wb3MgPT0gJGhlYWQucG9zICYmIEdhcEN1cnNvci52YWxpZCgkaGVhZCkgPyBuZXcgR2FwQ3Vyc29yKCRoZWFkKSA6IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFuZGxlQ2xpY2ssXG4gICAgICAgICAgICBoYW5kbGVLZXlEb3duLFxuICAgICAgICAgICAgaGFuZGxlRE9NRXZlbnRzOiB7IGJlZm9yZWlucHV0OiBiZWZvcmVpbnB1dCB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmNvbnN0IGhhbmRsZUtleURvd24gPSBrZXlkb3duSGFuZGxlcih7XG4gICAgXCJBcnJvd0xlZnRcIjogYXJyb3coXCJob3JpelwiLCAtMSksXG4gICAgXCJBcnJvd1JpZ2h0XCI6IGFycm93KFwiaG9yaXpcIiwgMSksXG4gICAgXCJBcnJvd1VwXCI6IGFycm93KFwidmVydFwiLCAtMSksXG4gICAgXCJBcnJvd0Rvd25cIjogYXJyb3coXCJ2ZXJ0XCIsIDEpXG59KTtcbmZ1bmN0aW9uIGFycm93KGF4aXMsIGRpcikge1xuICAgIGNvbnN0IGRpclN0ciA9IGF4aXMgPT0gXCJ2ZXJ0XCIgPyAoZGlyID4gMCA/IFwiZG93blwiIDogXCJ1cFwiKSA6IChkaXIgPiAwID8gXCJyaWdodFwiIDogXCJsZWZ0XCIpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoc3RhdGUsIGRpc3BhdGNoLCB2aWV3KSB7XG4gICAgICAgIGxldCBzZWwgPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgICAgIGxldCAkc3RhcnQgPSBkaXIgPiAwID8gc2VsLiR0byA6IHNlbC4kZnJvbSwgbXVzdE1vdmUgPSBzZWwuZW1wdHk7XG4gICAgICAgIGlmIChzZWwgaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoIXZpZXcuZW5kT2ZUZXh0YmxvY2soZGlyU3RyKSB8fCAkc3RhcnQuZGVwdGggPT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBtdXN0TW92ZSA9IGZhbHNlO1xuICAgICAgICAgICAgJHN0YXJ0ID0gc3RhdGUuZG9jLnJlc29sdmUoZGlyID4gMCA/ICRzdGFydC5hZnRlcigpIDogJHN0YXJ0LmJlZm9yZSgpKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgJGZvdW5kID0gR2FwQ3Vyc29yLmZpbmRHYXBDdXJzb3JGcm9tKCRzdGFydCwgZGlyLCBtdXN0TW92ZSk7XG4gICAgICAgIGlmICghJGZvdW5kKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoZGlzcGF0Y2gpXG4gICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5zZXRTZWxlY3Rpb24obmV3IEdhcEN1cnNvcigkZm91bmQpKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG59XG5mdW5jdGlvbiBoYW5kbGVDbGljayh2aWV3LCBwb3MsIGV2ZW50KSB7XG4gICAgaWYgKCF2aWV3IHx8ICF2aWV3LmVkaXRhYmxlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0ICRwb3MgPSB2aWV3LnN0YXRlLmRvYy5yZXNvbHZlKHBvcyk7XG4gICAgaWYgKCFHYXBDdXJzb3IudmFsaWQoJHBvcykpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgY2xpY2tQb3MgPSB2aWV3LnBvc0F0Q29vcmRzKHsgbGVmdDogZXZlbnQuY2xpZW50WCwgdG9wOiBldmVudC5jbGllbnRZIH0pO1xuICAgIGlmIChjbGlja1BvcyAmJiBjbGlja1Bvcy5pbnNpZGUgPiAtMSAmJiBOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZSh2aWV3LnN0YXRlLmRvYy5ub2RlQXQoY2xpY2tQb3MuaW5zaWRlKSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB2aWV3LmRpc3BhdGNoKHZpZXcuc3RhdGUudHIuc2V0U2VsZWN0aW9uKG5ldyBHYXBDdXJzb3IoJHBvcykpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8vIFRoaXMgaXMgYSBoYWNrIHRoYXQsIHdoZW4gYSBjb21wb3NpdGlvbiBzdGFydHMgd2hpbGUgYSBnYXAgY3Vyc29yXG4vLyBpcyBhY3RpdmUsIHF1aWNrbHkgY3JlYXRlcyBhbiBpbmxpbmUgY29udGV4dCBmb3IgdGhlIGNvbXBvc2l0aW9uIHRvXG4vLyBoYXBwZW4gaW4sIHRvIGF2b2lkIGl0IGJlaW5nIGFib3J0ZWQgYnkgdGhlIERPTSBzZWxlY3Rpb24gYmVpbmdcbi8vIG1vdmVkIGludG8gYSB2YWxpZCBwb3NpdGlvbi5cbmZ1bmN0aW9uIGJlZm9yZWlucHV0KHZpZXcsIGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmlucHV0VHlwZSAhPSBcImluc2VydENvbXBvc2l0aW9uVGV4dFwiIHx8ICEodmlldy5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBHYXBDdXJzb3IpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHsgJGZyb20gfSA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuICAgIGxldCBpbnNlcnQgPSAkZnJvbS5wYXJlbnQuY29udGVudE1hdGNoQXQoJGZyb20uaW5kZXgoKSkuZmluZFdyYXBwaW5nKHZpZXcuc3RhdGUuc2NoZW1hLm5vZGVzLnRleHQpO1xuICAgIGlmICghaW5zZXJ0KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0IGZyYWcgPSBGcmFnbWVudC5lbXB0eTtcbiAgICBmb3IgKGxldCBpID0gaW5zZXJ0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKVxuICAgICAgICBmcmFnID0gRnJhZ21lbnQuZnJvbShpbnNlcnRbaV0uY3JlYXRlQW5kRmlsbChudWxsLCBmcmFnKSk7XG4gICAgbGV0IHRyID0gdmlldy5zdGF0ZS50ci5yZXBsYWNlKCRmcm9tLnBvcywgJGZyb20ucG9zLCBuZXcgU2xpY2UoZnJhZywgMCwgMCkpO1xuICAgIHRyLnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLm5lYXIodHIuZG9jLnJlc29sdmUoJGZyb20ucG9zICsgMSkpKTtcbiAgICB2aWV3LmRpc3BhdGNoKHRyKTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBkcmF3R2FwQ3Vyc29yKHN0YXRlKSB7XG4gICAgaWYgKCEoc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgR2FwQ3Vyc29yKSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgbGV0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIG5vZGUuY2xhc3NOYW1lID0gXCJQcm9zZU1pcnJvci1nYXBjdXJzb3JcIjtcbiAgICByZXR1cm4gRGVjb3JhdGlvblNldC5jcmVhdGUoc3RhdGUuZG9jLCBbRGVjb3JhdGlvbi53aWRnZXQoc3RhdGUuc2VsZWN0aW9uLmhlYWQsIG5vZGUsIHsga2V5OiBcImdhcGN1cnNvclwiIH0pXSk7XG59XG5cbmV4cG9ydCB7IEdhcEN1cnNvciwgZ2FwQ3Vyc29yIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-gapcursor/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-history/dist/index.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/prosemirror-history/dist/index.js ***!
|
||
\********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ closeHistory: () => (/* binding */ closeHistory),\n/* harmony export */ history: () => (/* binding */ history),\n/* harmony export */ isHistoryTransaction: () => (/* binding */ isHistoryTransaction),\n/* harmony export */ redo: () => (/* binding */ redo),\n/* harmony export */ redoDepth: () => (/* binding */ redoDepth),\n/* harmony export */ redoNoScroll: () => (/* binding */ redoNoScroll),\n/* harmony export */ undo: () => (/* binding */ undo),\n/* harmony export */ undoDepth: () => (/* binding */ undoDepth),\n/* harmony export */ undoNoScroll: () => (/* binding */ undoNoScroll)\n/* harmony export */ });\n/* harmony import */ var rope_sequence__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rope-sequence */ \"(app-pages-browser)/./node_modules/rope-sequence/dist/index.js\");\n/* harmony import */ var prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prosemirror-transform */ \"(app-pages-browser)/./node_modules/prosemirror-transform/dist/index.js\");\n/* harmony import */ var prosemirror_state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prosemirror-state */ \"(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js\");\n\n\n\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(rope_sequence__WEBPACK_IMPORTED_MODULE_0__[\"default\"].from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(rope_sequence__WEBPACK_IMPORTED_MODULE_0__[\"default\"].empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new prosemirror_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"history\");\nconst closeHistoryKey = new prosemirror_state__WEBPACK_IMPORTED_MODULE_2__.PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new prosemirror_state__WEBPACK_IMPORTED_MODULE_2__.Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command || !view.editable)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n/**\nReturns true if the given transaction was generated by the history\nplugin.\n*/\nfunction isHistoryTransaction(tr) {\n return tr.getMeta(historyKey) != null;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci1oaXN0b3J5L2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQXlDO0FBQ087QUFDTTs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsNEJBQTRCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDBEQUFPO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQywyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLG1DQUFtQyxjQUFjO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQyxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULDBCQUEwQixxREFBWTtBQUN0QztBQUNBO0FBQ0EsMEJBQTBCLHFEQUFZO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsOEJBQThCO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1CQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUVBQXVFLDZCQUE2QjtBQUNwRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG9CQUFvQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsd0RBQVM7QUFDaEMsNEJBQTRCLHdEQUFTO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLGVBQWU7QUFDZjtBQUNBLGVBQWUscURBQU07QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRXFIIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxwcm9zZW1pcnJvci1oaXN0b3J5XFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUm9wZVNlcXVlbmNlIGZyb20gJ3JvcGUtc2VxdWVuY2UnO1xuaW1wb3J0IHsgTWFwcGluZyB9IGZyb20gJ3Byb3NlbWlycm9yLXRyYW5zZm9ybSc7XG5pbXBvcnQgeyBQbHVnaW5LZXksIFBsdWdpbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcblxuLy8gUHJvc2VNaXJyb3IncyBoaXN0b3J5IGlzbid0IHNpbXBseSBhIHdheSB0byByb2xsIGJhY2sgdG8gYSBwcmV2aW91c1xuLy8gc3RhdGUsIGJlY2F1c2UgUHJvc2VNaXJyb3Igc3VwcG9ydHMgYXBwbHlpbmcgY2hhbmdlcyB3aXRob3V0IGFkZGluZ1xuLy8gdGhlbSB0byB0aGUgaGlzdG9yeSAoZm9yIGV4YW1wbGUgZHVyaW5nIGNvbGxhYm9yYXRpb24pLlxuLy9cbi8vIFRvIHRoaXMgZW5kLCBlYWNoICdCcmFuY2gnIChvbmUgZm9yIHRoZSB1bmRvIGhpc3RvcnkgYW5kIG9uZSBmb3Jcbi8vIHRoZSByZWRvIGhpc3RvcnkpIGtlZXBzIGFuIGFycmF5IG9mICdJdGVtcycsIHdoaWNoIGNhbiBvcHRpb25hbGx5XG4vLyBob2xkIGEgc3RlcCAoYW4gYWN0dWFsIHVuZG9hYmxlIGNoYW5nZSksIGFuZCBhbHdheXMgaG9sZCBhIHBvc2l0aW9uXG4vLyBtYXAgKHdoaWNoIGlzIG5lZWRlZCB0byBtb3ZlIGNoYW5nZXMgYmVsb3cgdGhlbSB0byBhcHBseSB0byB0aGVcbi8vIGN1cnJlbnQgZG9jdW1lbnQpLlxuLy9cbi8vIEFuIGl0ZW0gdGhhdCBoYXMgYm90aCBhIHN0ZXAgYW5kIGEgc2VsZWN0aW9uIGJvb2ttYXJrIGlzIHRoZSBzdGFydFxuLy8gb2YgYW4gJ2V2ZW50JyDigJQgYSBncm91cCBvZiBjaGFuZ2VzIHRoYXQgd2lsbCBiZSB1bmRvbmUgb3IgcmVkb25lIGF0XG4vLyBvbmNlLiAoSXQgc3RvcmVzIG9ubHkgdGhlIGJvb2ttYXJrLCBzaW5jZSB0aGF0IHdheSB3ZSBkb24ndCBoYXZlIHRvXG4vLyBwcm92aWRlIGEgZG9jdW1lbnQgdW50aWwgdGhlIHNlbGVjdGlvbiBpcyBhY3R1YWxseSBhcHBsaWVkLCB3aGljaFxuLy8gaXMgdXNlZnVsIHdoZW4gY29tcHJlc3NpbmcuKVxuLy8gVXNlZCB0byBzY2hlZHVsZSBoaXN0b3J5IGNvbXByZXNzaW9uXG5jb25zdCBtYXhfZW1wdHlfaXRlbXMgPSA1MDA7XG5jbGFzcyBCcmFuY2gge1xuICAgIGNvbnN0cnVjdG9yKGl0ZW1zLCBldmVudENvdW50KSB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcbiAgICAgICAgdGhpcy5ldmVudENvdW50ID0gZXZlbnRDb3VudDtcbiAgICB9XG4gICAgLy8gUG9wIHRoZSBsYXRlc3QgZXZlbnQgb2ZmIHRoZSBicmFuY2gncyBoaXN0b3J5IGFuZCBhcHBseSBpdFxuICAgIC8vIHRvIGEgZG9jdW1lbnQgdHJhbnNmb3JtLlxuICAgIHBvcEV2ZW50KHN0YXRlLCBwcmVzZXJ2ZUl0ZW1zKSB7XG4gICAgICAgIGlmICh0aGlzLmV2ZW50Q291bnQgPT0gMClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBsZXQgZW5kID0gdGhpcy5pdGVtcy5sZW5ndGg7XG4gICAgICAgIGZvciAoOzsgZW5kLS0pIHtcbiAgICAgICAgICAgIGxldCBuZXh0ID0gdGhpcy5pdGVtcy5nZXQoZW5kIC0gMSk7XG4gICAgICAgICAgICBpZiAobmV4dC5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAtLWVuZDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVtYXAsIG1hcEZyb207XG4gICAgICAgIGlmIChwcmVzZXJ2ZUl0ZW1zKSB7XG4gICAgICAgICAgICByZW1hcCA9IHRoaXMucmVtYXBwaW5nKGVuZCwgdGhpcy5pdGVtcy5sZW5ndGgpO1xuICAgICAgICAgICAgbWFwRnJvbSA9IHJlbWFwLm1hcHMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0cmFuc2Zvcm0gPSBzdGF0ZS50cjtcbiAgICAgICAgbGV0IHNlbGVjdGlvbiwgcmVtYWluaW5nO1xuICAgICAgICBsZXQgYWRkQWZ0ZXIgPSBbXSwgYWRkQmVmb3JlID0gW107XG4gICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpdGVtLnN0ZXApIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlbWFwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbWFwID0gdGhpcy5yZW1hcHBpbmcoZW5kLCBpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIG1hcEZyb20gPSByZW1hcC5tYXBzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFwRnJvbS0tO1xuICAgICAgICAgICAgICAgIGFkZEJlZm9yZS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZW1hcCkge1xuICAgICAgICAgICAgICAgIGFkZEJlZm9yZS5wdXNoKG5ldyBJdGVtKGl0ZW0ubWFwKSk7XG4gICAgICAgICAgICAgICAgbGV0IHN0ZXAgPSBpdGVtLnN0ZXAubWFwKHJlbWFwLnNsaWNlKG1hcEZyb20pKSwgbWFwO1xuICAgICAgICAgICAgICAgIGlmIChzdGVwICYmIHRyYW5zZm9ybS5tYXliZVN0ZXAoc3RlcCkuZG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcCA9IHRyYW5zZm9ybS5tYXBwaW5nLm1hcHNbdHJhbnNmb3JtLm1hcHBpbmcubWFwcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQWZ0ZXIucHVzaChuZXcgSXRlbShtYXAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhZGRBZnRlci5sZW5ndGggKyBhZGRCZWZvcmUubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcEZyb20tLTtcbiAgICAgICAgICAgICAgICBpZiAobWFwKVxuICAgICAgICAgICAgICAgICAgICByZW1hcC5hcHBlbmRNYXAobWFwLCBtYXBGcm9tKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5tYXliZVN0ZXAoaXRlbS5zdGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9IHJlbWFwID8gaXRlbS5zZWxlY3Rpb24ubWFwKHJlbWFwLnNsaWNlKG1hcEZyb20pKSA6IGl0ZW0uc2VsZWN0aW9uO1xuICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IG5ldyBCcmFuY2godGhpcy5pdGVtcy5zbGljZSgwLCBlbmQpLmFwcGVuZChhZGRCZWZvcmUucmV2ZXJzZSgpLmNvbmNhdChhZGRBZnRlcikpLCB0aGlzLmV2ZW50Q291bnQgLSAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuaXRlbXMubGVuZ3RoLCAwKTtcbiAgICAgICAgcmV0dXJuIHsgcmVtYWluaW5nOiByZW1haW5pbmcsIHRyYW5zZm9ybSwgc2VsZWN0aW9uOiBzZWxlY3Rpb24gfTtcbiAgICB9XG4gICAgLy8gQ3JlYXRlIGEgbmV3IGJyYW5jaCB3aXRoIHRoZSBnaXZlbiB0cmFuc2Zvcm0gYWRkZWQuXG4gICAgYWRkVHJhbnNmb3JtKHRyYW5zZm9ybSwgc2VsZWN0aW9uLCBoaXN0T3B0aW9ucywgcHJlc2VydmVJdGVtcykge1xuICAgICAgICBsZXQgbmV3SXRlbXMgPSBbXSwgZXZlbnRDb3VudCA9IHRoaXMuZXZlbnRDb3VudDtcbiAgICAgICAgbGV0IG9sZEl0ZW1zID0gdGhpcy5pdGVtcywgbGFzdEl0ZW0gPSAhcHJlc2VydmVJdGVtcyAmJiBvbGRJdGVtcy5sZW5ndGggPyBvbGRJdGVtcy5nZXQob2xkSXRlbXMubGVuZ3RoIC0gMSkgOiBudWxsO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyYW5zZm9ybS5zdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHN0ZXAgPSB0cmFuc2Zvcm0uc3RlcHNbaV0uaW52ZXJ0KHRyYW5zZm9ybS5kb2NzW2ldKTtcbiAgICAgICAgICAgIGxldCBpdGVtID0gbmV3IEl0ZW0odHJhbnNmb3JtLm1hcHBpbmcubWFwc1tpXSwgc3RlcCwgc2VsZWN0aW9uKSwgbWVyZ2VkO1xuICAgICAgICAgICAgaWYgKG1lcmdlZCA9IGxhc3RJdGVtICYmIGxhc3RJdGVtLm1lcmdlKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgaXRlbSA9IG1lcmdlZDtcbiAgICAgICAgICAgICAgICBpZiAoaSlcbiAgICAgICAgICAgICAgICAgICAgbmV3SXRlbXMucG9wKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBvbGRJdGVtcyA9IG9sZEl0ZW1zLnNsaWNlKDAsIG9sZEl0ZW1zLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3SXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBldmVudENvdW50Kys7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwcmVzZXJ2ZUl0ZW1zKVxuICAgICAgICAgICAgICAgIGxhc3RJdGVtID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgb3ZlcmZsb3cgPSBldmVudENvdW50IC0gaGlzdE9wdGlvbnMuZGVwdGg7XG4gICAgICAgIGlmIChvdmVyZmxvdyA+IERFUFRIX09WRVJGTE9XKSB7XG4gICAgICAgICAgICBvbGRJdGVtcyA9IGN1dE9mZkV2ZW50cyhvbGRJdGVtcywgb3ZlcmZsb3cpO1xuICAgICAgICAgICAgZXZlbnRDb3VudCAtPSBvdmVyZmxvdztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJyYW5jaChvbGRJdGVtcy5hcHBlbmQobmV3SXRlbXMpLCBldmVudENvdW50KTtcbiAgICB9XG4gICAgcmVtYXBwaW5nKGZyb20sIHRvKSB7XG4gICAgICAgIGxldCBtYXBzID0gbmV3IE1hcHBpbmc7XG4gICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgbGV0IG1pcnJvclBvcyA9IGl0ZW0ubWlycm9yT2Zmc2V0ICE9IG51bGwgJiYgaSAtIGl0ZW0ubWlycm9yT2Zmc2V0ID49IGZyb21cbiAgICAgICAgICAgICAgICA/IG1hcHMubWFwcy5sZW5ndGggLSBpdGVtLm1pcnJvck9mZnNldCA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIG1hcHMuYXBwZW5kTWFwKGl0ZW0ubWFwLCBtaXJyb3JQb3MpO1xuICAgICAgICB9LCBmcm9tLCB0byk7XG4gICAgICAgIHJldHVybiBtYXBzO1xuICAgIH1cbiAgICBhZGRNYXBzKGFycmF5KSB7XG4gICAgICAgIGlmICh0aGlzLmV2ZW50Q291bnQgPT0gMClcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICByZXR1cm4gbmV3IEJyYW5jaCh0aGlzLml0ZW1zLmFwcGVuZChhcnJheS5tYXAobWFwID0+IG5ldyBJdGVtKG1hcCkpKSwgdGhpcy5ldmVudENvdW50KTtcbiAgICB9XG4gICAgLy8gV2hlbiB0aGUgY29sbGFiIG1vZHVsZSByZWNlaXZlcyByZW1vdGUgY2hhbmdlcywgdGhlIGhpc3RvcnkgaGFzXG4gICAgLy8gdG8ga25vdyBhYm91dCB0aG9zZSwgc28gdGhhdCBpdCBjYW4gYWRqdXN0IHRoZSBzdGVwcyB0aGF0IHdlcmVcbiAgICAvLyByZWJhc2VkIG9uIHRvcCBvZiB0aGUgcmVtb3RlIGNoYW5nZXMsIGFuZCBpbmNsdWRlIHRoZSBwb3NpdGlvblxuICAgIC8vIG1hcHMgZm9yIHRoZSByZW1vdGUgY2hhbmdlcyBpbiBpdHMgYXJyYXkgb2YgaXRlbXMuXG4gICAgcmViYXNlZChyZWJhc2VkVHJhbnNmb3JtLCByZWJhc2VkQ291bnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmV2ZW50Q291bnQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgbGV0IHJlYmFzZWRJdGVtcyA9IFtdLCBzdGFydCA9IE1hdGgubWF4KDAsIHRoaXMuaXRlbXMubGVuZ3RoIC0gcmViYXNlZENvdW50KTtcbiAgICAgICAgbGV0IG1hcHBpbmcgPSByZWJhc2VkVHJhbnNmb3JtLm1hcHBpbmc7XG4gICAgICAgIGxldCBuZXdVbnRpbCA9IHJlYmFzZWRUcmFuc2Zvcm0uc3RlcHMubGVuZ3RoO1xuICAgICAgICBsZXQgZXZlbnRDb3VudCA9IHRoaXMuZXZlbnRDb3VudDtcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4geyBpZiAoaXRlbS5zZWxlY3Rpb24pXG4gICAgICAgICAgICBldmVudENvdW50LS07IH0sIHN0YXJ0KTtcbiAgICAgICAgbGV0IGlSZWJhc2VkID0gcmViYXNlZENvdW50O1xuICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBsZXQgcG9zID0gbWFwcGluZy5nZXRNaXJyb3IoLS1pUmViYXNlZCk7XG4gICAgICAgICAgICBpZiAocG9zID09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgbmV3VW50aWwgPSBNYXRoLm1pbihuZXdVbnRpbCwgcG9zKTtcbiAgICAgICAgICAgIGxldCBtYXAgPSBtYXBwaW5nLm1hcHNbcG9zXTtcbiAgICAgICAgICAgIGlmIChpdGVtLnN0ZXApIHtcbiAgICAgICAgICAgICAgICBsZXQgc3RlcCA9IHJlYmFzZWRUcmFuc2Zvcm0uc3RlcHNbcG9zXS5pbnZlcnQocmViYXNlZFRyYW5zZm9ybS5kb2NzW3Bvc10pO1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3Rpb24gPSBpdGVtLnNlbGVjdGlvbiAmJiBpdGVtLnNlbGVjdGlvbi5tYXAobWFwcGluZy5zbGljZShpUmViYXNlZCArIDEsIHBvcykpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50Q291bnQrKztcbiAgICAgICAgICAgICAgICByZWJhc2VkSXRlbXMucHVzaChuZXcgSXRlbShtYXAsIHN0ZXAsIHNlbGVjdGlvbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmViYXNlZEl0ZW1zLnB1c2gobmV3IEl0ZW0obWFwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHN0YXJ0KTtcbiAgICAgICAgbGV0IG5ld01hcHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHJlYmFzZWRDb3VudDsgaSA8IG5ld1VudGlsOyBpKyspXG4gICAgICAgICAgICBuZXdNYXBzLnB1c2gobmV3IEl0ZW0obWFwcGluZy5tYXBzW2ldKSk7XG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbXMuc2xpY2UoMCwgc3RhcnQpLmFwcGVuZChuZXdNYXBzKS5hcHBlbmQocmViYXNlZEl0ZW1zKTtcbiAgICAgICAgbGV0IGJyYW5jaCA9IG5ldyBCcmFuY2goaXRlbXMsIGV2ZW50Q291bnQpO1xuICAgICAgICBpZiAoYnJhbmNoLmVtcHR5SXRlbUNvdW50KCkgPiBtYXhfZW1wdHlfaXRlbXMpXG4gICAgICAgICAgICBicmFuY2ggPSBicmFuY2guY29tcHJlc3ModGhpcy5pdGVtcy5sZW5ndGggLSByZWJhc2VkSXRlbXMubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGJyYW5jaDtcbiAgICB9XG4gICAgZW1wdHlJdGVtQ291bnQoKSB7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHsgaWYgKCFpdGVtLnN0ZXApXG4gICAgICAgICAgICBjb3VudCsrOyB9KTtcbiAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH1cbiAgICAvLyBDb21wcmVzc2luZyBhIGJyYW5jaCBtZWFucyByZXdyaXRpbmcgaXQgdG8gcHVzaCB0aGUgYWlyIChtYXAtb25seVxuICAgIC8vIGl0ZW1zKSBvdXQuIER1cmluZyBjb2xsYWJvcmF0aW9uLCB0aGVzZSBuYXR1cmFsbHkgYWNjdW11bGF0ZVxuICAgIC8vIGJlY2F1c2UgZWFjaCByZW1vdGUgY2hhbmdlIGFkZHMgb25lLiBUaGUgYHVwdG9gIGFyZ3VtZW50IGlzIHVzZWRcbiAgICAvLyB0byBlbnN1cmUgdGhhdCBvbmx5IHRoZSBpdGVtcyBiZWxvdyBhIGdpdmVuIGxldmVsIGFyZSBjb21wcmVzc2VkLFxuICAgIC8vIGJlY2F1c2UgYHJlYmFzZWRgIHJlbGllcyBvbiBhIGNsZWFuLCB1bnRvdWNoZWQgc2V0IG9mIGl0ZW1zIGluXG4gICAgLy8gb3JkZXIgdG8gYXNzb2NpYXRlIG9sZCBpdGVtcyB3aXRoIHJlYmFzZWQgc3RlcHMuXG4gICAgY29tcHJlc3ModXB0byA9IHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIGxldCByZW1hcCA9IHRoaXMucmVtYXBwaW5nKDAsIHVwdG8pLCBtYXBGcm9tID0gcmVtYXAubWFwcy5sZW5ndGg7XG4gICAgICAgIGxldCBpdGVtcyA9IFtdLCBldmVudHMgPSAwO1xuICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpID49IHVwdG8pIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnNlbGVjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpdGVtLnN0ZXApIHtcbiAgICAgICAgICAgICAgICBsZXQgc3RlcCA9IGl0ZW0uc3RlcC5tYXAocmVtYXAuc2xpY2UobWFwRnJvbSkpLCBtYXAgPSBzdGVwICYmIHN0ZXAuZ2V0TWFwKCk7XG4gICAgICAgICAgICAgICAgbWFwRnJvbS0tO1xuICAgICAgICAgICAgICAgIGlmIChtYXApXG4gICAgICAgICAgICAgICAgICAgIHJlbWFwLmFwcGVuZE1hcChtYXAsIG1hcEZyb20pO1xuICAgICAgICAgICAgICAgIGlmIChzdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3Rpb24gPSBpdGVtLnNlbGVjdGlvbiAmJiBpdGVtLnNlbGVjdGlvbi5tYXAocmVtYXAuc2xpY2UobWFwRnJvbSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzKys7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdJdGVtID0gbmV3IEl0ZW0obWFwLmludmVydCgpLCBzdGVwLCBzZWxlY3Rpb24pLCBtZXJnZWQsIGxhc3QgPSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2VkID0gaXRlbXMubGVuZ3RoICYmIGl0ZW1zW2xhc3RdLm1lcmdlKG5ld0l0ZW0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNbbGFzdF0gPSBtZXJnZWQ7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5tYXApIHtcbiAgICAgICAgICAgICAgICBtYXBGcm9tLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuaXRlbXMubGVuZ3RoLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCcmFuY2goUm9wZVNlcXVlbmNlLmZyb20oaXRlbXMucmV2ZXJzZSgpKSwgZXZlbnRzKTtcbiAgICB9XG59XG5CcmFuY2guZW1wdHkgPSBuZXcgQnJhbmNoKFJvcGVTZXF1ZW5jZS5lbXB0eSwgMCk7XG5mdW5jdGlvbiBjdXRPZmZFdmVudHMoaXRlbXMsIG4pIHtcbiAgICBsZXQgY3V0UG9pbnQ7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5zZWxlY3Rpb24gJiYgKG4tLSA9PSAwKSkge1xuICAgICAgICAgICAgY3V0UG9pbnQgPSBpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zLnNsaWNlKGN1dFBvaW50KTtcbn1cbmNsYXNzIEl0ZW0ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8vIFRoZSAoZm9yd2FyZCkgc3RlcCBtYXAgZm9yIHRoaXMgaXRlbS5cbiAgICBtYXAsIFxuICAgIC8vIFRoZSBpbnZlcnRlZCBzdGVwXG4gICAgc3RlcCwgXG4gICAgLy8gSWYgdGhpcyBpcyBub24tbnVsbCwgdGhpcyBpdGVtIGlzIHRoZSBzdGFydCBvZiBhIGdyb3VwLCBhbmRcbiAgICAvLyB0aGlzIHNlbGVjdGlvbiBpcyB0aGUgc3RhcnRpbmcgc2VsZWN0aW9uIGZvciB0aGUgZ3JvdXAgKHRoZSBvbmVcbiAgICAvLyB0aGF0IHdhcyBhY3RpdmUgYmVmb3JlIHRoZSBmaXJzdCBzdGVwIHdhcyBhcHBsaWVkKVxuICAgIHNlbGVjdGlvbiwgXG4gICAgLy8gSWYgdGhpcyBpdGVtIGlzIHRoZSBpbnZlcnNlIG9mIGEgcHJldmlvdXMgbWFwcGluZyBvbiB0aGUgc3RhY2ssXG4gICAgLy8gdGhpcyBwb2ludHMgYXQgdGhlIGludmVyc2UncyBvZmZzZXRcbiAgICBtaXJyb3JPZmZzZXQpIHtcbiAgICAgICAgdGhpcy5tYXAgPSBtYXA7XG4gICAgICAgIHRoaXMuc3RlcCA9IHN0ZXA7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLm1pcnJvck9mZnNldCA9IG1pcnJvck9mZnNldDtcbiAgICB9XG4gICAgbWVyZ2Uob3RoZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcCAmJiBvdGhlci5zdGVwICYmICFvdGhlci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGxldCBzdGVwID0gb3RoZXIuc3RlcC5tZXJnZSh0aGlzLnN0ZXApO1xuICAgICAgICAgICAgaWYgKHN0ZXApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJdGVtKHN0ZXAuZ2V0TWFwKCkuaW52ZXJ0KCksIHN0ZXAsIHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSB2YWx1ZSBvZiB0aGUgc3RhdGUgZmllbGQgdGhhdCB0cmFja3MgdW5kby9yZWRvIGhpc3RvcnkgZm9yIHRoYXRcbi8vIHN0YXRlLiBXaWxsIGJlIHN0b3JlZCBpbiB0aGUgcGx1Z2luIHN0YXRlIHdoZW4gdGhlIGhpc3RvcnkgcGx1Z2luXG4vLyBpcyBhY3RpdmUuXG5jbGFzcyBIaXN0b3J5U3RhdGUge1xuICAgIGNvbnN0cnVjdG9yKGRvbmUsIHVuZG9uZSwgcHJldlJhbmdlcywgcHJldlRpbWUsIHByZXZDb21wb3NpdGlvbikge1xuICAgICAgICB0aGlzLmRvbmUgPSBkb25lO1xuICAgICAgICB0aGlzLnVuZG9uZSA9IHVuZG9uZTtcbiAgICAgICAgdGhpcy5wcmV2UmFuZ2VzID0gcHJldlJhbmdlcztcbiAgICAgICAgdGhpcy5wcmV2VGltZSA9IHByZXZUaW1lO1xuICAgICAgICB0aGlzLnByZXZDb21wb3NpdGlvbiA9IHByZXZDb21wb3NpdGlvbjtcbiAgICB9XG59XG5jb25zdCBERVBUSF9PVkVSRkxPVyA9IDIwO1xuLy8gUmVjb3JkIGEgdHJhbnNmb3JtYXRpb24gaW4gdW5kbyBoaXN0b3J5LlxuZnVuY3Rpb24gYXBwbHlUcmFuc2FjdGlvbihoaXN0b3J5LCBzdGF0ZSwgdHIsIG9wdGlvbnMpIHtcbiAgICBsZXQgaGlzdG9yeVRyID0gdHIuZ2V0TWV0YShoaXN0b3J5S2V5KSwgcmViYXNlZDtcbiAgICBpZiAoaGlzdG9yeVRyKVxuICAgICAgICByZXR1cm4gaGlzdG9yeVRyLmhpc3RvcnlTdGF0ZTtcbiAgICBpZiAodHIuZ2V0TWV0YShjbG9zZUhpc3RvcnlLZXkpKVxuICAgICAgICBoaXN0b3J5ID0gbmV3IEhpc3RvcnlTdGF0ZShoaXN0b3J5LmRvbmUsIGhpc3RvcnkudW5kb25lLCBudWxsLCAwLCAtMSk7XG4gICAgbGV0IGFwcGVuZGVkID0gdHIuZ2V0TWV0YShcImFwcGVuZGVkVHJhbnNhY3Rpb25cIik7XG4gICAgaWYgKHRyLnN0ZXBzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHJldHVybiBoaXN0b3J5O1xuICAgIH1cbiAgICBlbHNlIGlmIChhcHBlbmRlZCAmJiBhcHBlbmRlZC5nZXRNZXRhKGhpc3RvcnlLZXkpKSB7XG4gICAgICAgIGlmIChhcHBlbmRlZC5nZXRNZXRhKGhpc3RvcnlLZXkpLnJlZG8pXG4gICAgICAgICAgICByZXR1cm4gbmV3IEhpc3RvcnlTdGF0ZShoaXN0b3J5LmRvbmUuYWRkVHJhbnNmb3JtKHRyLCB1bmRlZmluZWQsIG9wdGlvbnMsIG11c3RQcmVzZXJ2ZUl0ZW1zKHN0YXRlKSksIGhpc3RvcnkudW5kb25lLCByYW5nZXNGb3IodHIubWFwcGluZy5tYXBzKSwgaGlzdG9yeS5wcmV2VGltZSwgaGlzdG9yeS5wcmV2Q29tcG9zaXRpb24pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbmV3IEhpc3RvcnlTdGF0ZShoaXN0b3J5LmRvbmUsIGhpc3RvcnkudW5kb25lLmFkZFRyYW5zZm9ybSh0ciwgdW5kZWZpbmVkLCBvcHRpb25zLCBtdXN0UHJlc2VydmVJdGVtcyhzdGF0ZSkpLCBudWxsLCBoaXN0b3J5LnByZXZUaW1lLCBoaXN0b3J5LnByZXZDb21wb3NpdGlvbik7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRyLmdldE1ldGEoXCJhZGRUb0hpc3RvcnlcIikgIT09IGZhbHNlICYmICEoYXBwZW5kZWQgJiYgYXBwZW5kZWQuZ2V0TWV0YShcImFkZFRvSGlzdG9yeVwiKSA9PT0gZmFsc2UpKSB7XG4gICAgICAgIC8vIEdyb3VwIHRyYW5zZm9ybXMgdGhhdCBvY2N1ciBpbiBxdWljayBzdWNjZXNzaW9uIGludG8gb25lIGV2ZW50LlxuICAgICAgICBsZXQgY29tcG9zaXRpb24gPSB0ci5nZXRNZXRhKFwiY29tcG9zaXRpb25cIik7XG4gICAgICAgIGxldCBuZXdHcm91cCA9IGhpc3RvcnkucHJldlRpbWUgPT0gMCB8fFxuICAgICAgICAgICAgKCFhcHBlbmRlZCAmJiBoaXN0b3J5LnByZXZDb21wb3NpdGlvbiAhPSBjb21wb3NpdGlvbiAmJlxuICAgICAgICAgICAgICAgIChoaXN0b3J5LnByZXZUaW1lIDwgKHRyLnRpbWUgfHwgMCkgLSBvcHRpb25zLm5ld0dyb3VwRGVsYXkgfHwgIWlzQWRqYWNlbnRUbyh0ciwgaGlzdG9yeS5wcmV2UmFuZ2VzKSkpO1xuICAgICAgICBsZXQgcHJldlJhbmdlcyA9IGFwcGVuZGVkID8gbWFwUmFuZ2VzKGhpc3RvcnkucHJldlJhbmdlcywgdHIubWFwcGluZykgOiByYW5nZXNGb3IodHIubWFwcGluZy5tYXBzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBIaXN0b3J5U3RhdGUoaGlzdG9yeS5kb25lLmFkZFRyYW5zZm9ybSh0ciwgbmV3R3JvdXAgPyBzdGF0ZS5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKSA6IHVuZGVmaW5lZCwgb3B0aW9ucywgbXVzdFByZXNlcnZlSXRlbXMoc3RhdGUpKSwgQnJhbmNoLmVtcHR5LCBwcmV2UmFuZ2VzLCB0ci50aW1lLCBjb21wb3NpdGlvbiA9PSBudWxsID8gaGlzdG9yeS5wcmV2Q29tcG9zaXRpb24gOiBjb21wb3NpdGlvbik7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlYmFzZWQgPSB0ci5nZXRNZXRhKFwicmViYXNlZFwiKSkge1xuICAgICAgICAvLyBVc2VkIGJ5IHRoZSBjb2xsYWIgbW9kdWxlIHRvIHRlbGwgdGhlIGhpc3RvcnkgdGhhdCBzb21lIG9mIGl0c1xuICAgICAgICAvLyBjb250ZW50IGhhcyBiZWVuIHJlYmFzZWQuXG4gICAgICAgIHJldHVybiBuZXcgSGlzdG9yeVN0YXRlKGhpc3RvcnkuZG9uZS5yZWJhc2VkKHRyLCByZWJhc2VkKSwgaGlzdG9yeS51bmRvbmUucmViYXNlZCh0ciwgcmViYXNlZCksIG1hcFJhbmdlcyhoaXN0b3J5LnByZXZSYW5nZXMsIHRyLm1hcHBpbmcpLCBoaXN0b3J5LnByZXZUaW1lLCBoaXN0b3J5LnByZXZDb21wb3NpdGlvbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IEhpc3RvcnlTdGF0ZShoaXN0b3J5LmRvbmUuYWRkTWFwcyh0ci5tYXBwaW5nLm1hcHMpLCBoaXN0b3J5LnVuZG9uZS5hZGRNYXBzKHRyLm1hcHBpbmcubWFwcyksIG1hcFJhbmdlcyhoaXN0b3J5LnByZXZSYW5nZXMsIHRyLm1hcHBpbmcpLCBoaXN0b3J5LnByZXZUaW1lLCBoaXN0b3J5LnByZXZDb21wb3NpdGlvbik7XG4gICAgfVxufVxuZnVuY3Rpb24gaXNBZGphY2VudFRvKHRyYW5zZm9ybSwgcHJldlJhbmdlcykge1xuICAgIGlmICghcHJldlJhbmdlcylcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghdHJhbnNmb3JtLmRvY0NoYW5nZWQpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGxldCBhZGphY2VudCA9IGZhbHNlO1xuICAgIHRyYW5zZm9ybS5tYXBwaW5nLm1hcHNbMF0uZm9yRWFjaCgoc3RhcnQsIGVuZCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZSYW5nZXMubGVuZ3RoOyBpICs9IDIpXG4gICAgICAgICAgICBpZiAoc3RhcnQgPD0gcHJldlJhbmdlc1tpICsgMV0gJiYgZW5kID49IHByZXZSYW5nZXNbaV0pXG4gICAgICAgICAgICAgICAgYWRqYWNlbnQgPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiBhZGphY2VudDtcbn1cbmZ1bmN0aW9uIHJhbmdlc0ZvcihtYXBzKSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBtYXBzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiByZXN1bHQubGVuZ3RoID09IDA7IGktLSlcbiAgICAgICAgbWFwc1tpXS5mb3JFYWNoKChfZnJvbSwgX3RvLCBmcm9tLCB0bykgPT4gcmVzdWx0LnB1c2goZnJvbSwgdG8pKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbWFwUmFuZ2VzKHJhbmdlcywgbWFwcGluZykge1xuICAgIGlmICghcmFuZ2VzKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgbGV0IGZyb20gPSBtYXBwaW5nLm1hcChyYW5nZXNbaV0sIDEpLCB0byA9IG1hcHBpbmcubWFwKHJhbmdlc1tpICsgMV0sIC0xKTtcbiAgICAgICAgaWYgKGZyb20gPD0gdG8pXG4gICAgICAgICAgICByZXN1bHQucHVzaChmcm9tLCB0byk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vLyBBcHBseSB0aGUgbGF0ZXN0IGV2ZW50IGZyb20gb25lIGJyYW5jaCB0byB0aGUgZG9jdW1lbnQgYW5kIHNoaWZ0IHRoZSBldmVudFxuLy8gb250byB0aGUgb3RoZXIgYnJhbmNoLlxuZnVuY3Rpb24gaGlzdFRyYW5zYWN0aW9uKGhpc3RvcnksIHN0YXRlLCByZWRvKSB7XG4gICAgbGV0IHByZXNlcnZlSXRlbXMgPSBtdXN0UHJlc2VydmVJdGVtcyhzdGF0ZSk7XG4gICAgbGV0IGhpc3RPcHRpb25zID0gaGlzdG9yeUtleS5nZXQoc3RhdGUpLnNwZWMuY29uZmlnO1xuICAgIGxldCBwb3AgPSAocmVkbyA/IGhpc3RvcnkudW5kb25lIDogaGlzdG9yeS5kb25lKS5wb3BFdmVudChzdGF0ZSwgcHJlc2VydmVJdGVtcyk7XG4gICAgaWYgKCFwb3ApXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGxldCBzZWxlY3Rpb24gPSBwb3Auc2VsZWN0aW9uLnJlc29sdmUocG9wLnRyYW5zZm9ybS5kb2MpO1xuICAgIGxldCBhZGRlZCA9IChyZWRvID8gaGlzdG9yeS5kb25lIDogaGlzdG9yeS51bmRvbmUpLmFkZFRyYW5zZm9ybShwb3AudHJhbnNmb3JtLCBzdGF0ZS5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKSwgaGlzdE9wdGlvbnMsIHByZXNlcnZlSXRlbXMpO1xuICAgIGxldCBuZXdIaXN0ID0gbmV3IEhpc3RvcnlTdGF0ZShyZWRvID8gYWRkZWQgOiBwb3AucmVtYWluaW5nLCByZWRvID8gcG9wLnJlbWFpbmluZyA6IGFkZGVkLCBudWxsLCAwLCAtMSk7XG4gICAgcmV0dXJuIHBvcC50cmFuc2Zvcm0uc2V0U2VsZWN0aW9uKHNlbGVjdGlvbikuc2V0TWV0YShoaXN0b3J5S2V5LCB7IHJlZG8sIGhpc3RvcnlTdGF0ZTogbmV3SGlzdCB9KTtcbn1cbmxldCBjYWNoZWRQcmVzZXJ2ZUl0ZW1zID0gZmFsc2UsIGNhY2hlZFByZXNlcnZlSXRlbXNQbHVnaW5zID0gbnVsbDtcbi8vIENoZWNrIHdoZXRoZXIgYW55IHBsdWdpbiBpbiB0aGUgZ2l2ZW4gc3RhdGUgaGFzIGFcbi8vIGBoaXN0b3J5UHJlc2VydmVJdGVtc2AgcHJvcGVydHkgaW4gaXRzIHNwZWMsIGluIHdoaWNoIGNhc2Ugd2UgbXVzdFxuLy8gcHJlc2VydmUgc3RlcHMgZXhhY3RseSBhcyB0aGV5IGNhbWUgaW4sIHNvIHRoYXQgdGhleSBjYW4gYmVcbi8vIHJlYmFzZWQuXG5mdW5jdGlvbiBtdXN0UHJlc2VydmVJdGVtcyhzdGF0ZSkge1xuICAgIGxldCBwbHVnaW5zID0gc3RhdGUucGx1Z2lucztcbiAgICBpZiAoY2FjaGVkUHJlc2VydmVJdGVtc1BsdWdpbnMgIT0gcGx1Z2lucykge1xuICAgICAgICBjYWNoZWRQcmVzZXJ2ZUl0ZW1zID0gZmFsc2U7XG4gICAgICAgIGNhY2hlZFByZXNlcnZlSXRlbXNQbHVnaW5zID0gcGx1Z2lucztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgaWYgKHBsdWdpbnNbaV0uc3BlYy5oaXN0b3J5UHJlc2VydmVJdGVtcykge1xuICAgICAgICAgICAgICAgIGNhY2hlZFByZXNlcnZlSXRlbXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2FjaGVkUHJlc2VydmVJdGVtcztcbn1cbi8qKlxuU2V0IGEgZmxhZyBvbiB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24gdGhhdCB3aWxsIHByZXZlbnQgZnVydGhlciBzdGVwc1xuZnJvbSBiZWluZyBhcHBlbmRlZCB0byBhbiBleGlzdGluZyBoaXN0b3J5IGV2ZW50IChzbyB0aGF0IHRoZXlcbnJlcXVpcmUgYSBzZXBhcmF0ZSB1bmRvIGNvbW1hbmQgdG8gdW5kbykuXG4qL1xuZnVuY3Rpb24gY2xvc2VIaXN0b3J5KHRyKSB7XG4gICAgcmV0dXJuIHRyLnNldE1ldGEoY2xvc2VIaXN0b3J5S2V5LCB0cnVlKTtcbn1cbmNvbnN0IGhpc3RvcnlLZXkgPSBuZXcgUGx1Z2luS2V5KFwiaGlzdG9yeVwiKTtcbmNvbnN0IGNsb3NlSGlzdG9yeUtleSA9IG5ldyBQbHVnaW5LZXkoXCJjbG9zZUhpc3RvcnlcIik7XG4vKipcblJldHVybnMgYSBwbHVnaW4gdGhhdCBlbmFibGVzIHRoZSB1bmRvIGhpc3RvcnkgZm9yIGFuIGVkaXRvci4gVGhlXG5wbHVnaW4gd2lsbCB0cmFjayB1bmRvIGFuZCByZWRvIHN0YWNrcywgd2hpY2ggY2FuIGJlIHVzZWQgd2l0aCB0aGVcbltgdW5kb2BdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNoaXN0b3J5LnVuZG8pIGFuZCBbYHJlZG9gXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jaGlzdG9yeS5yZWRvKSBjb21tYW5kcy5cblxuWW91IGNhbiBzZXQgYW4gYFwiYWRkVG9IaXN0b3J5XCJgIFttZXRhZGF0YVxucHJvcGVydHldKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5UcmFuc2FjdGlvbi5zZXRNZXRhKSBvZiBgZmFsc2VgIG9uIGEgdHJhbnNhY3Rpb25cbnRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyByb2xsZWQgYmFjayBieSB1bmRvLlxuKi9cbmZ1bmN0aW9uIGhpc3RvcnkoY29uZmlnID0ge30pIHtcbiAgICBjb25maWcgPSB7IGRlcHRoOiBjb25maWcuZGVwdGggfHwgMTAwLFxuICAgICAgICBuZXdHcm91cERlbGF5OiBjb25maWcubmV3R3JvdXBEZWxheSB8fCA1MDAgfTtcbiAgICByZXR1cm4gbmV3IFBsdWdpbih7XG4gICAgICAgIGtleTogaGlzdG9yeUtleSxcbiAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICAgIGluaXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBIaXN0b3J5U3RhdGUoQnJhbmNoLmVtcHR5LCBCcmFuY2guZW1wdHksIG51bGwsIDAsIC0xKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBseSh0ciwgaGlzdCwgc3RhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwbHlUcmFuc2FjdGlvbihoaXN0LCBzdGF0ZSwgdHIsIGNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGhhbmRsZURPTUV2ZW50czoge1xuICAgICAgICAgICAgICAgIGJlZm9yZWlucHV0KHZpZXcsIGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlucHV0VHlwZSA9IGUuaW5wdXRUeXBlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29tbWFuZCA9IGlucHV0VHlwZSA9PSBcImhpc3RvcnlVbmRvXCIgPyB1bmRvIDogaW5wdXRUeXBlID09IFwiaGlzdG9yeVJlZG9cIiA/IHJlZG8gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbW1hbmQgfHwgIXZpZXcuZWRpdGFibGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1hbmQodmlldy5zdGF0ZSwgdmlldy5kaXNwYXRjaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBidWlsZENvbW1hbmQocmVkbywgc2Nyb2xsKSB7XG4gICAgcmV0dXJuIChzdGF0ZSwgZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgbGV0IGhpc3QgPSBoaXN0b3J5S2V5LmdldFN0YXRlKHN0YXRlKTtcbiAgICAgICAgaWYgKCFoaXN0IHx8IChyZWRvID8gaGlzdC51bmRvbmUgOiBoaXN0LmRvbmUpLmV2ZW50Q291bnQgPT0gMClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgICAgICBsZXQgdHIgPSBoaXN0VHJhbnNhY3Rpb24oaGlzdCwgc3RhdGUsIHJlZG8pO1xuICAgICAgICAgICAgaWYgKHRyKVxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHNjcm9sbCA/IHRyLnNjcm9sbEludG9WaWV3KCkgOiB0cik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbn1cbi8qKlxuQSBjb21tYW5kIGZ1bmN0aW9uIHRoYXQgdW5kb2VzIHRoZSBsYXN0IGNoYW5nZSwgaWYgYW55LlxuKi9cbmNvbnN0IHVuZG8gPSBidWlsZENvbW1hbmQoZmFsc2UsIHRydWUpO1xuLyoqXG5BIGNvbW1hbmQgZnVuY3Rpb24gdGhhdCByZWRvZXMgdGhlIGxhc3QgdW5kb25lIGNoYW5nZSwgaWYgYW55LlxuKi9cbmNvbnN0IHJlZG8gPSBidWlsZENvbW1hbmQodHJ1ZSwgdHJ1ZSk7XG4vKipcbkEgY29tbWFuZCBmdW5jdGlvbiB0aGF0IHVuZG9lcyB0aGUgbGFzdCBjaGFuZ2UuIERvbid0IHNjcm9sbCB0aGVcbnNlbGVjdGlvbiBpbnRvIHZpZXcuXG4qL1xuY29uc3QgdW5kb05vU2Nyb2xsID0gYnVpbGRDb21tYW5kKGZhbHNlLCBmYWxzZSk7XG4vKipcbkEgY29tbWFuZCBmdW5jdGlvbiB0aGF0IHJlZG9lcyB0aGUgbGFzdCB1bmRvbmUgY2hhbmdlLiBEb24ndFxuc2Nyb2xsIHRoZSBzZWxlY3Rpb24gaW50byB2aWV3LlxuKi9cbmNvbnN0IHJlZG9Ob1Njcm9sbCA9IGJ1aWxkQ29tbWFuZCh0cnVlLCBmYWxzZSk7XG4vKipcblRoZSBhbW91bnQgb2YgdW5kb2FibGUgZXZlbnRzIGF2YWlsYWJsZSBpbiBhIGdpdmVuIHN0YXRlLlxuKi9cbmZ1bmN0aW9uIHVuZG9EZXB0aChzdGF0ZSkge1xuICAgIGxldCBoaXN0ID0gaGlzdG9yeUtleS5nZXRTdGF0ZShzdGF0ZSk7XG4gICAgcmV0dXJuIGhpc3QgPyBoaXN0LmRvbmUuZXZlbnRDb3VudCA6IDA7XG59XG4vKipcblRoZSBhbW91bnQgb2YgcmVkb2FibGUgZXZlbnRzIGF2YWlsYWJsZSBpbiBhIGdpdmVuIGVkaXRvciBzdGF0ZS5cbiovXG5mdW5jdGlvbiByZWRvRGVwdGgoc3RhdGUpIHtcbiAgICBsZXQgaGlzdCA9IGhpc3RvcnlLZXkuZ2V0U3RhdGUoc3RhdGUpO1xuICAgIHJldHVybiBoaXN0ID8gaGlzdC51bmRvbmUuZXZlbnRDb3VudCA6IDA7XG59XG4vKipcblJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24gd2FzIGdlbmVyYXRlZCBieSB0aGUgaGlzdG9yeVxucGx1Z2luLlxuKi9cbmZ1bmN0aW9uIGlzSGlzdG9yeVRyYW5zYWN0aW9uKHRyKSB7XG4gICAgcmV0dXJuIHRyLmdldE1ldGEoaGlzdG9yeUtleSkgIT0gbnVsbDtcbn1cblxuZXhwb3J0IHsgY2xvc2VIaXN0b3J5LCBoaXN0b3J5LCBpc0hpc3RvcnlUcmFuc2FjdGlvbiwgcmVkbywgcmVkb0RlcHRoLCByZWRvTm9TY3JvbGwsIHVuZG8sIHVuZG9EZXB0aCwgdW5kb05vU2Nyb2xsIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-history/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-keymap/dist/index.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/prosemirror-keymap/dist/index.js ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ keydownHandler: () => (/* binding */ keydownHandler),\n/* harmony export */ keymap: () => (/* binding */ keymap)\n/* harmony export */ });\n/* harmony import */ var w3c_keyname__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! w3c-keyname */ \"(app-pages-browser)/./node_modules/w3c-keyname/index.js\");\n/* harmony import */ var prosemirror_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prosemirror-state */ \"(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js\");\n\n\n\nconst mac = typeof navigator != \"undefined\" && /Mac|iP(hone|[oa]d)/.test(navigator.platform);\nconst windows = typeof navigator != \"undefined\" && /Win/.test(navigator.platform);\nfunction normalizeKeyName(name) {\n let parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\")\n result = \" \";\n let alt, ctrl, shift, meta;\n for (let i = 0; i < parts.length - 1; i++) {\n let mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod))\n meta = true;\n else if (/^a(lt)?$/i.test(mod))\n alt = true;\n else if (/^(c|ctrl|control)$/i.test(mod))\n ctrl = true;\n else if (/^s(hift)?$/i.test(mod))\n shift = true;\n else if (/^mod$/i.test(mod)) {\n if (mac)\n meta = true;\n else\n ctrl = true;\n }\n else\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n if (alt)\n result = \"Alt-\" + result;\n if (ctrl)\n result = \"Ctrl-\" + result;\n if (meta)\n result = \"Meta-\" + result;\n if (shift)\n result = \"Shift-\" + result;\n return result;\n}\nfunction normalize(map) {\n let copy = Object.create(null);\n for (let prop in map)\n copy[normalizeKeyName(prop)] = map[prop];\n return copy;\n}\nfunction modifiers(name, event, shift = true) {\n if (event.altKey)\n name = \"Alt-\" + name;\n if (event.ctrlKey)\n name = \"Ctrl-\" + name;\n if (event.metaKey)\n name = \"Meta-\" + name;\n if (shift && event.shiftKey)\n name = \"Shift-\" + name;\n return name;\n}\n/**\nCreate a keymap plugin for the given set of bindings.\n\nBindings should map key names to [command](https://prosemirror.net/docs/ref/#commands)-style\nfunctions, which will be called with `(EditorState, dispatch,\nEditorView)` arguments, and should return true when they've handled\nthe key. Note that the view argument isn't part of the command\nprotocol, but can be used as an escape hatch if a binding needs to\ndirectly interact with the UI.\n\nKey names may be strings like `\"Shift-Ctrl-Enter\"`—a key\nidentifier prefixed with zero or more modifiers. Key identifiers\nare based on the strings that can appear in\n[`KeyEvent.key`](https:developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\nUse lowercase letters to refer to letter keys (or uppercase letters\nif you want shift to be held). You may use `\"Space\"` as an alias\nfor the `\" \"` name.\n\nModifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n`a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n`Meta-`) are recognized. For characters that are created by holding\nshift, the `Shift-` prefix is implied, and should not be added\nexplicitly.\n\nYou can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\nother platforms.\n\nYou can add multiple keymap plugins to an editor. The order in\nwhich they appear determines their precedence (the ones early in\nthe array get to dispatch first).\n*/\nfunction keymap(bindings) {\n return new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Plugin({ props: { handleKeyDown: keydownHandler(bindings) } });\n}\n/**\nGiven a set of bindings (using the same format as\n[`keymap`](https://prosemirror.net/docs/ref/#keymap.keymap)), return a [keydown\nhandler](https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown) that handles them.\n*/\nfunction keydownHandler(bindings) {\n let map = normalize(bindings);\n return function (view, event) {\n let name = (0,w3c_keyname__WEBPACK_IMPORTED_MODULE_0__.keyName)(event), baseName, direct = map[modifiers(name, event)];\n if (direct && direct(view.state, view.dispatch, view))\n return true;\n // A character key\n if (name.length == 1 && name != \" \") {\n if (event.shiftKey) {\n // In case the name was already modified by shift, try looking\n // it up without its shift modifier\n let noShift = map[modifiers(name, event, false)];\n if (noShift && noShift(view.state, view.dispatch, view))\n return true;\n }\n if ((event.altKey || event.metaKey || event.ctrlKey) &&\n // Ctrl-Alt may be used for AltGr on Windows\n !(windows && event.ctrlKey && event.altKey) &&\n (baseName = w3c_keyname__WEBPACK_IMPORTED_MODULE_0__.base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060, #1529.\n let fromCode = map[modifiers(baseName, event)];\n if (fromCode && fromCode(view.state, view.dispatch, view))\n return true;\n }\n }\n return false;\n };\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci1rZXltYXAvZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTRDO0FBQ0Q7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUscURBQU0sR0FBRyxTQUFTLDJDQUEyQztBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0RBQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw2Q0FBSTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWtDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxwcm9zZW1pcnJvci1rZXltYXBcXGRpc3RcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGtleU5hbWUsIGJhc2UgfSBmcm9tICd3M2Mta2V5bmFtZSc7XG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5cbmNvbnN0IG1hYyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gXCJ1bmRlZmluZWRcIiAmJiAvTWFjfGlQKGhvbmV8W29hXWQpLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk7XG5jb25zdCB3aW5kb3dzID0gdHlwZW9mIG5hdmlnYXRvciAhPSBcInVuZGVmaW5lZFwiICYmIC9XaW4vLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKTtcbmZ1bmN0aW9uIG5vcm1hbGl6ZUtleU5hbWUobmFtZSkge1xuICAgIGxldCBwYXJ0cyA9IG5hbWUuc3BsaXQoLy0oPyEkKS8pLCByZXN1bHQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICBpZiAocmVzdWx0ID09IFwiU3BhY2VcIilcbiAgICAgICAgcmVzdWx0ID0gXCIgXCI7XG4gICAgbGV0IGFsdCwgY3RybCwgc2hpZnQsIG1ldGE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgbGV0IG1vZCA9IHBhcnRzW2ldO1xuICAgICAgICBpZiAoL14oY21kfG1ldGF8bSkkL2kudGVzdChtb2QpKVxuICAgICAgICAgICAgbWV0YSA9IHRydWU7XG4gICAgICAgIGVsc2UgaWYgKC9eYShsdCk/JC9pLnRlc3QobW9kKSlcbiAgICAgICAgICAgIGFsdCA9IHRydWU7XG4gICAgICAgIGVsc2UgaWYgKC9eKGN8Y3RybHxjb250cm9sKSQvaS50ZXN0KG1vZCkpXG4gICAgICAgICAgICBjdHJsID0gdHJ1ZTtcbiAgICAgICAgZWxzZSBpZiAoL15zKGhpZnQpPyQvaS50ZXN0KG1vZCkpXG4gICAgICAgICAgICBzaGlmdCA9IHRydWU7XG4gICAgICAgIGVsc2UgaWYgKC9ebW9kJC9pLnRlc3QobW9kKSkge1xuICAgICAgICAgICAgaWYgKG1hYylcbiAgICAgICAgICAgICAgICBtZXRhID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjdHJsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgbW9kaWZpZXIgbmFtZTogXCIgKyBtb2QpO1xuICAgIH1cbiAgICBpZiAoYWx0KVxuICAgICAgICByZXN1bHQgPSBcIkFsdC1cIiArIHJlc3VsdDtcbiAgICBpZiAoY3RybClcbiAgICAgICAgcmVzdWx0ID0gXCJDdHJsLVwiICsgcmVzdWx0O1xuICAgIGlmIChtZXRhKVxuICAgICAgICByZXN1bHQgPSBcIk1ldGEtXCIgKyByZXN1bHQ7XG4gICAgaWYgKHNoaWZ0KVxuICAgICAgICByZXN1bHQgPSBcIlNoaWZ0LVwiICsgcmVzdWx0O1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBub3JtYWxpemUobWFwKSB7XG4gICAgbGV0IGNvcHkgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGZvciAobGV0IHByb3AgaW4gbWFwKVxuICAgICAgICBjb3B5W25vcm1hbGl6ZUtleU5hbWUocHJvcCldID0gbWFwW3Byb3BdO1xuICAgIHJldHVybiBjb3B5O1xufVxuZnVuY3Rpb24gbW9kaWZpZXJzKG5hbWUsIGV2ZW50LCBzaGlmdCA9IHRydWUpIHtcbiAgICBpZiAoZXZlbnQuYWx0S2V5KVxuICAgICAgICBuYW1lID0gXCJBbHQtXCIgKyBuYW1lO1xuICAgIGlmIChldmVudC5jdHJsS2V5KVxuICAgICAgICBuYW1lID0gXCJDdHJsLVwiICsgbmFtZTtcbiAgICBpZiAoZXZlbnQubWV0YUtleSlcbiAgICAgICAgbmFtZSA9IFwiTWV0YS1cIiArIG5hbWU7XG4gICAgaWYgKHNoaWZ0ICYmIGV2ZW50LnNoaWZ0S2V5KVxuICAgICAgICBuYW1lID0gXCJTaGlmdC1cIiArIG5hbWU7XG4gICAgcmV0dXJuIG5hbWU7XG59XG4vKipcbkNyZWF0ZSBhIGtleW1hcCBwbHVnaW4gZm9yIHRoZSBnaXZlbiBzZXQgb2YgYmluZGluZ3MuXG5cbkJpbmRpbmdzIHNob3VsZCBtYXAga2V5IG5hbWVzIHRvIFtjb21tYW5kXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jY29tbWFuZHMpLXN0eWxlXG5mdW5jdGlvbnMsIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggYChFZGl0b3JTdGF0ZSwgZGlzcGF0Y2gsXG5FZGl0b3JWaWV3KWAgYXJndW1lbnRzLCBhbmQgc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhleSd2ZSBoYW5kbGVkXG50aGUga2V5LiBOb3RlIHRoYXQgdGhlIHZpZXcgYXJndW1lbnQgaXNuJ3QgcGFydCBvZiB0aGUgY29tbWFuZFxucHJvdG9jb2wsIGJ1dCBjYW4gYmUgdXNlZCBhcyBhbiBlc2NhcGUgaGF0Y2ggaWYgYSBiaW5kaW5nIG5lZWRzIHRvXG5kaXJlY3RseSBpbnRlcmFjdCB3aXRoIHRoZSBVSS5cblxuS2V5IG5hbWVzIG1heSBiZSBzdHJpbmdzIGxpa2UgYFwiU2hpZnQtQ3RybC1FbnRlclwiYOKAlGEga2V5XG5pZGVudGlmaWVyIHByZWZpeGVkIHdpdGggemVybyBvciBtb3JlIG1vZGlmaWVycy4gS2V5IGlkZW50aWZpZXJzXG5hcmUgYmFzZWQgb24gdGhlIHN0cmluZ3MgdGhhdCBjYW4gYXBwZWFyIGluXG5bYEtleUV2ZW50LmtleWBdKGh0dHBzOmRldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkpLlxuVXNlIGxvd2VyY2FzZSBsZXR0ZXJzIHRvIHJlZmVyIHRvIGxldHRlciBrZXlzIChvciB1cHBlcmNhc2UgbGV0dGVyc1xuaWYgeW91IHdhbnQgc2hpZnQgdG8gYmUgaGVsZCkuIFlvdSBtYXkgdXNlIGBcIlNwYWNlXCJgIGFzIGFuIGFsaWFzXG5mb3IgdGhlIGBcIiBcImAgbmFtZS5cblxuTW9kaWZpZXJzIGNhbiBiZSBnaXZlbiBpbiBhbnkgb3JkZXIuIGBTaGlmdC1gIChvciBgcy1gKSwgYEFsdC1gIChvclxuYGEtYCksIGBDdHJsLWAgKG9yIGBjLWAgb3IgYENvbnRyb2wtYCkgYW5kIGBDbWQtYCAob3IgYG0tYCBvclxuYE1ldGEtYCkgYXJlIHJlY29nbml6ZWQuIEZvciBjaGFyYWN0ZXJzIHRoYXQgYXJlIGNyZWF0ZWQgYnkgaG9sZGluZ1xuc2hpZnQsIHRoZSBgU2hpZnQtYCBwcmVmaXggaXMgaW1wbGllZCwgYW5kIHNob3VsZCBub3QgYmUgYWRkZWRcbmV4cGxpY2l0bHkuXG5cbllvdSBjYW4gdXNlIGBNb2QtYCBhcyBhIHNob3J0aGFuZCBmb3IgYENtZC1gIG9uIE1hYyBhbmQgYEN0cmwtYCBvblxub3RoZXIgcGxhdGZvcm1zLlxuXG5Zb3UgY2FuIGFkZCBtdWx0aXBsZSBrZXltYXAgcGx1Z2lucyB0byBhbiBlZGl0b3IuIFRoZSBvcmRlciBpblxud2hpY2ggdGhleSBhcHBlYXIgZGV0ZXJtaW5lcyB0aGVpciBwcmVjZWRlbmNlICh0aGUgb25lcyBlYXJseSBpblxudGhlIGFycmF5IGdldCB0byBkaXNwYXRjaCBmaXJzdCkuXG4qL1xuZnVuY3Rpb24ga2V5bWFwKGJpbmRpbmdzKSB7XG4gICAgcmV0dXJuIG5ldyBQbHVnaW4oeyBwcm9wczogeyBoYW5kbGVLZXlEb3duOiBrZXlkb3duSGFuZGxlcihiaW5kaW5ncykgfSB9KTtcbn1cbi8qKlxuR2l2ZW4gYSBzZXQgb2YgYmluZGluZ3MgKHVzaW5nIHRoZSBzYW1lIGZvcm1hdCBhc1xuW2BrZXltYXBgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8ja2V5bWFwLmtleW1hcCkpLCByZXR1cm4gYSBba2V5ZG93blxuaGFuZGxlcl0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3ZpZXcuRWRpdG9yUHJvcHMuaGFuZGxlS2V5RG93bikgdGhhdCBoYW5kbGVzIHRoZW0uXG4qL1xuZnVuY3Rpb24ga2V5ZG93bkhhbmRsZXIoYmluZGluZ3MpIHtcbiAgICBsZXQgbWFwID0gbm9ybWFsaXplKGJpbmRpbmdzKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHZpZXcsIGV2ZW50KSB7XG4gICAgICAgIGxldCBuYW1lID0ga2V5TmFtZShldmVudCksIGJhc2VOYW1lLCBkaXJlY3QgPSBtYXBbbW9kaWZpZXJzKG5hbWUsIGV2ZW50KV07XG4gICAgICAgIGlmIChkaXJlY3QgJiYgZGlyZWN0KHZpZXcuc3RhdGUsIHZpZXcuZGlzcGF0Y2gsIHZpZXcpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIC8vIEEgY2hhcmFjdGVyIGtleVxuICAgICAgICBpZiAobmFtZS5sZW5ndGggPT0gMSAmJiBuYW1lICE9IFwiIFwiKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIHRoZSBuYW1lIHdhcyBhbHJlYWR5IG1vZGlmaWVkIGJ5IHNoaWZ0LCB0cnkgbG9va2luZ1xuICAgICAgICAgICAgICAgIC8vIGl0IHVwIHdpdGhvdXQgaXRzIHNoaWZ0IG1vZGlmaWVyXG4gICAgICAgICAgICAgICAgbGV0IG5vU2hpZnQgPSBtYXBbbW9kaWZpZXJzKG5hbWUsIGV2ZW50LCBmYWxzZSldO1xuICAgICAgICAgICAgICAgIGlmIChub1NoaWZ0ICYmIG5vU2hpZnQodmlldy5zdGF0ZSwgdmlldy5kaXNwYXRjaCwgdmlldykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChldmVudC5hbHRLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KSAmJlxuICAgICAgICAgICAgICAgIC8vIEN0cmwtQWx0IG1heSBiZSB1c2VkIGZvciBBbHRHciBvbiBXaW5kb3dzXG4gICAgICAgICAgICAgICAgISh3aW5kb3dzICYmIGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuYWx0S2V5KSAmJlxuICAgICAgICAgICAgICAgIChiYXNlTmFtZSA9IGJhc2VbZXZlbnQua2V5Q29kZV0pICYmIGJhc2VOYW1lICE9IG5hbWUpIHtcbiAgICAgICAgICAgICAgICAvLyBUcnkgZmFsbGluZyBiYWNrIHRvIHRoZSBrZXlDb2RlIHdoZW4gdGhlcmUncyBhIG1vZGlmaWVyXG4gICAgICAgICAgICAgICAgLy8gYWN0aXZlIG9yIHRoZSBjaGFyYWN0ZXIgcHJvZHVjZWQgaXNuJ3QgQVNDSUksIGFuZCBvdXIgdGFibGVcbiAgICAgICAgICAgICAgICAvLyBwcm9kdWNlcyBhIGRpZmZlcmVudCBuYW1lIGZyb20gdGhlIHRoZSBrZXlDb2RlLiBTZWUgIzY2OCxcbiAgICAgICAgICAgICAgICAvLyAjMTA2MCwgIzE1MjkuXG4gICAgICAgICAgICAgICAgbGV0IGZyb21Db2RlID0gbWFwW21vZGlmaWVycyhiYXNlTmFtZSwgZXZlbnQpXTtcbiAgICAgICAgICAgICAgICBpZiAoZnJvbUNvZGUgJiYgZnJvbUNvZGUodmlldy5zdGF0ZSwgdmlldy5kaXNwYXRjaCwgdmlldykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xufVxuXG5leHBvcnQgeyBrZXlkb3duSGFuZGxlciwga2V5bWFwIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-keymap/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-model/dist/index.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/prosemirror-model/dist/index.js ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ContentMatch: () => (/* binding */ ContentMatch),\n/* harmony export */ DOMParser: () => (/* binding */ DOMParser),\n/* harmony export */ DOMSerializer: () => (/* binding */ DOMSerializer),\n/* harmony export */ Fragment: () => (/* binding */ Fragment),\n/* harmony export */ Mark: () => (/* binding */ Mark),\n/* harmony export */ MarkType: () => (/* binding */ MarkType),\n/* harmony export */ Node: () => (/* binding */ Node),\n/* harmony export */ NodeRange: () => (/* binding */ NodeRange),\n/* harmony export */ NodeType: () => (/* binding */ NodeType),\n/* harmony export */ ReplaceError: () => (/* binding */ ReplaceError),\n/* harmony export */ ResolvedPos: () => (/* binding */ ResolvedPos),\n/* harmony export */ Schema: () => (/* binding */ Schema),\n/* harmony export */ Slice: () => (/* binding */ Slice)\n/* harmony export */ });\n/* harmony import */ var orderedmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! orderedmap */ \"(app-pages-browser)/./node_modules/orderedmap/dist/index.js\");\n\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n The child nodes in this fragment.\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", first = true;\n this.nodesBetween(from, to, (node, pos) => {\n let nodeText = node.isText ? node.text.slice(Math.max(from, pos) - pos, to - pos)\n : !node.isLeaf ? \"\"\n : leafText ? (typeof leafText === \"function\" ? leafText(node) : leafText)\n : node.type.spec.leafText ? node.type.spec.leafText(node)\n : \"\";\n if (node.isBlock && (node.isLeaf && nodeText || node.isTextblock) && blockSeparator) {\n if (first)\n first = false;\n else\n text += blockSeparator;\n }\n text += nodeText;\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. @internal\n */\n findIndex(pos) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n let mark = type.create(json.attrs);\n type.checkAttrs(mark.attrs);\n return mark;\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are ‘open’ (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment—i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert, child);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent—text nodes are ‘flat’ in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n let cache = resolveCache.get(doc);\n if (cache) {\n for (let i = 0; i < cache.elts.length; i++) {\n let elt = cache.elts[i];\n if (elt.pos == pos)\n return elt;\n }\n }\n else {\n resolveCache.set(doc, cache = new ResolveCache);\n }\n let result = cache.elts[cache.i] = ResolvedPos.resolve(doc, pos);\n cache.i = (cache.i + 1) % resolveCacheSize;\n return result;\n }\n}\nclass ResolveCache {\n constructor() {\n this.elts = [];\n this.i = 0;\n }\n}\nconst resolveCacheSize = 12, resolveCache = new WeakMap();\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](https://prosemirror.net/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The array of this node's child nodes.\n */\n get children() { return this.content.content; }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](https://prosemirror.net/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec.leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise an exception when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n this.type.checkAttrs(this.attrs);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++) {\n let mark = this.marks[i];\n mark.type.checkAttrs(mark.attrs);\n copy = mark.addToSet(copy);\n }\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = undefined;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n let node = schema.nodeType(json.type).create(json.attrs, content, marks);\n node.type.checkAttrs(node.attrs);\n return node;\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_th outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.isInGroup(name))\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction checkAttrs(attrs, values, type, name) {\n for (let name in values)\n if (!(name in attrs))\n throw new RangeError(`Unsupported attribute ${name} for ${type} of type ${name}`);\n for (let name in attrs) {\n let attr = attrs[name];\n if (attr.validate)\n attr.validate(values[name]);\n }\n}\nfunction initAttrs(typeName, attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(typeName, name, attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(name, spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n Return true when this node type is part of the given\n [group](https://prosemirror.net/docs/ref/#model.NodeSpec.group).\n */\n isInGroup(group) {\n return this.groups.indexOf(group) > -1;\n }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n this.checkContent(content);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Throws a RangeError if the given fragment is not valid content for this\n node type.\n @internal\n */\n checkContent(content) {\n if (!this.validContent(content))\n throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"node\", this.name);\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\nfunction validateType(typeName, attrName, type) {\n let types = type.split(\"|\");\n return (value) => {\n let name = value === null ? \"null\" : typeof value;\n if (types.indexOf(name) < 0)\n throw new RangeError(`Expected value of type ${types} for attribute ${attrName} on type ${typeName}, got ${name}`);\n };\n}\n// Attribute descriptors\nclass Attribute {\n constructor(typeName, attrName, options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n this.validate = typeof options.validate == \"string\" ? validateType(typeName, attrName, options.validate) : options.validate;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(name, spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"mark\", this.name);\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n The [linebreak\n replacement](https://prosemirror.net/docs/ref/#model.NodeSpec.linebreakReplacement) node defined\n in this schema, if any.\n */\n this.linebreakReplacement = null;\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n let instanceSpec = this.spec = {};\n for (let prop in spec)\n instanceSpec[prop] = spec[prop];\n instanceSpec.nodes = orderedmap__WEBPACK_IMPORTED_MODULE_0__[\"default\"].from(spec.nodes),\n instanceSpec.marks = orderedmap__WEBPACK_IMPORTED_MODULE_0__[\"default\"].from(spec.marks || {}),\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n if (type.spec.linebreakReplacement) {\n if (this.linebreakReplacement)\n throw new RangeError(\"Multiple linebreak nodes defined\");\n if (!type.isInline || !type.isLeaf)\n throw new RangeError(\"Linebreak replacement nodes must be inline leaf nodes\");\n this.linebreakReplacement = type;\n }\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = json => Node.fromJSON(this, json);\n this.markFromJSON = json => Mark.fromJSON(this, json);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\nfunction isTagRule(rule) { return rule.tag != null; }\nfunction isStyleRule(rule) { return rule.style != null; }\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n let matchedStyles = this.matchedStyles = [];\n rules.forEach(rule => {\n if (isTagRule(rule)) {\n this.tags.push(rule);\n }\n else if (isStyleRule(rule)) {\n let prop = /[^=]*/.exec(rule.style)[0];\n if (matchedStyles.indexOf(prop) < 0)\n matchedStyles.push(prop);\n this.styles.push(rule);\n }\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, Mark.none, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, Mark.none, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.mark || rule.ignore || rule.clearMark))\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.node || rule.ignore || rule.mark))\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.GenericParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, marks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n this.localPreserveWS = false;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom, marks) {\n if (dom.nodeType == 3)\n this.addTextNode(dom, marks);\n else if (dom.nodeType == 1)\n this.addElement(dom, marks);\n }\n addTextNode(dom, marks) {\n let value = dom.nodeValue;\n let top = this.top, preserveWS = (top.options & OPT_PRESERVE_WS_FULL) ? \"full\"\n : this.localPreserveWS || (top.options & OPT_PRESERVE_WS) > 0;\n let { schema } = this.parser;\n if (preserveWS === \"full\" ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!preserveWS) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (preserveWS === \"full\") {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n else if (schema.linebreakReplacement && /[\\r\\n]/.test(value) && this.top.findWrapping(schema.linebreakReplacement.create())) {\n let lines = value.split(/\\r?\\n|\\r/);\n for (let i = 0; i < lines.length; i++) {\n if (i)\n this.insertNode(schema.linebreakReplacement.create(), marks, true);\n if (lines[i])\n this.insertNode(schema.text(lines[i]), marks, !/\\S/.test(lines[i]));\n }\n value = \"\";\n }\n else {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n if (value)\n this.insertNode(schema.text(value), marks, !/\\S/.test(value));\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, marks, matchAfter) {\n let outerWS = this.localPreserveWS, top = this.top;\n if (dom.tagName == \"PRE\" || /pre/.test(dom.style && dom.style.whiteSpace))\n this.localPreserveWS = true;\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n out: if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom, marks);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n if (top.content.length && top.content[0].isInline && this.open) {\n this.open--;\n top = this.top;\n }\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom, marks);\n break out;\n }\n let innerMarks = rule && rule.skip ? marks : this.readStyles(dom, marks);\n if (innerMarks)\n this.addAll(dom, innerMarks);\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n let innerMarks = this.readStyles(dom, marks);\n if (innerMarks)\n this.addElementByRule(dom, rule, innerMarks, rule.consuming === false ? ruleID : undefined);\n }\n this.localPreserveWS = outerWS;\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom, marks) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"), marks);\n }\n // Called for ignored nodes\n ignoreFallback(dom, marks) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"), marks, true);\n }\n // Run any style parser associated with the node's styles. Either\n // return an updated array of marks, or null to indicate some of the\n // styles had a rule with `ignore` set.\n readStyles(dom, marks) {\n let styles = dom.style;\n // Because many properties will only show up in 'normalized' form\n // in `style.item` (i.e. text-decoration becomes\n // text-decoration-line, text-decoration-color, etc), we directly\n // query the styles mentioned in our rules instead of iterating\n // over the items.\n if (styles && styles.length)\n for (let i = 0; i < this.parser.matchedStyles.length; i++) {\n let name = this.parser.matchedStyles[i], value = styles.getPropertyValue(name);\n if (value)\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(name, value, this, after);\n if (!rule)\n break;\n if (rule.ignore)\n return null;\n if (rule.clearMark)\n marks = marks.filter(m => !rule.clearMark(m));\n else\n marks = marks.concat(this.parser.schema.marks[rule.mark].create(rule.attrs));\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return marks;\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, marks, continueAfter) {\n let sync, nodeType;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n let inner = this.enter(nodeType, rule.attrs || null, marks, rule.preserveWhitespace);\n if (inner) {\n sync = true;\n marks = inner;\n }\n }\n else if (!this.insertNode(nodeType.create(rule.attrs), marks, dom.nodeName == \"BR\")) {\n this.leafFallback(dom, marks);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n marks = marks.concat(markType.create(rule.attrs));\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, marks, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node, marks, false));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM, marks);\n this.findAround(dom, contentDOM, false);\n }\n if (sync && this.sync(startIn))\n this.open--;\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, marks, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom, marks);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node, marks, cautious) {\n let route, sync;\n for (let depth = this.open, penalty = 0; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length + penalty)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid) {\n if (cautious)\n break;\n penalty += 2;\n }\n }\n if (!route)\n return null;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n marks = this.enterInner(route[i], null, marks, false);\n return marks;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node, marks, cautious) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n marks = this.enterInner(block, null, marks);\n }\n let innerMarks = this.findPlace(node, marks, cautious);\n if (innerMarks) {\n this.closeExtra();\n let top = this.top;\n if (top.match)\n top.match = top.match.matchType(node.type);\n let nodeMarks = Mark.none;\n for (let m of innerMarks.concat(node.marks))\n if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, node.type))\n nodeMarks = m.addToSet(nodeMarks);\n top.content.push(node.mark(nodeMarks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, marks, preserveWS) {\n let innerMarks = this.findPlace(type.create(attrs), marks, false);\n if (innerMarks)\n innerMarks = this.enterInner(type, attrs, marks, true, preserveWS);\n return innerMarks;\n }\n // Open a node of the given type\n enterInner(type, attrs, marks, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n let applyMarks = Mark.none;\n marks = marks.filter(m => {\n if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, type)) {\n applyMarks = m.addToSet(applyMarks);\n return false;\n }\n return true;\n });\n this.nodes.push(new NodeContext(type, attrs, applyMarks, solid, null, options));\n this.open++;\n return marks;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(!!(this.isOpen || this.options.topOpen));\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--) {\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n else if (this.localPreserveWS) {\n this.nodes[i].options |= OPT_PRESERVE_WS;\n }\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && !next.isInGroup(part)))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = renderSpec(doc(options), this.nodes[node.type.name](node), null, node.attrs);\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && renderSpec(doc(options), toDOM(mark, inline), null, mark.attrs);\n }\n static renderSpec(doc, structure, xmlNS = null, blockArraysIn) {\n return renderSpec(doc, structure, xmlNS, blockArraysIn);\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\nconst suspiciousAttributeCache = new WeakMap();\nfunction suspiciousAttributes(attrs) {\n let value = suspiciousAttributeCache.get(attrs);\n if (value === undefined)\n suspiciousAttributeCache.set(attrs, value = suspiciousAttributesInner(attrs));\n return value;\n}\nfunction suspiciousAttributesInner(attrs) {\n let result = null;\n function scan(value) {\n if (value && typeof value == \"object\") {\n if (Array.isArray(value)) {\n if (typeof value[0] == \"string\") {\n if (!result)\n result = [];\n result.push(value);\n }\n else {\n for (let i = 0; i < value.length; i++)\n scan(value[i]);\n }\n }\n else {\n for (let prop in value)\n scan(value[prop]);\n }\n }\n }\n scan(attrs);\n return result;\n}\nfunction renderSpec(doc, structure, xmlNS, blockArraysIn) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], suspicious;\n if (typeof tagName != \"string\")\n throw new RangeError(\"Invalid array passed to renderSpec\");\n if (blockArraysIn && (suspicious = suspiciousAttributes(blockArraysIn)) &&\n suspicious.indexOf(structure) > -1)\n throw new RangeError(\"Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.\");\n let space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else if (name == \"style\" && dom.style)\n dom.style.cssText = attrs[name];\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = renderSpec(doc, child, xmlNS, blockArraysIn);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci1tb2RlbC9kaXN0L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW9DOztBQUVwQztBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrQ0FBa0M7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsb0JBQW9CO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsVUFBVTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwQkFBMEI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxVQUFVO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHlCQUF5QjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix5QkFBeUI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxLQUFLLHVCQUF1QixLQUFLO0FBQzlFLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGNBQWM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELFdBQVc7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGNBQWM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLDZEQUE2RDtBQUN2RztBQUNBLHlDQUF5Qyw2REFBNkQ7QUFDdEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxnQkFBZ0I7QUFDMUIsVUFBVSxtQ0FBbUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLGdCQUFnQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpR0FBaUc7QUFDakc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGFBQWE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixjQUFjO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFFBQVE7QUFDcEM7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixXQUFXO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QXdCLHVCQUF1QjtBQUMvQyxrQkFBa0IsYUFBYTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELE1BQU0sTUFBTSxNQUFNLFVBQVUsS0FBSztBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCxVQUFVLElBQUksZ0NBQWdDO0FBQzNHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxPQUFPLGdCQUFnQixVQUFVLFVBQVUsU0FBUyxRQUFRLEtBQUs7QUFDNUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtEQUFVO0FBQ3ZDLGlDQUFpQyxrREFBVSxzQkFBc0I7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0JBQWtCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQjtBQUMzQiw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0Qsc0JBQXNCO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSx3QkFBd0I7QUFDekY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msa0JBQWtCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNDQUFzQztBQUNsRTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0pBQW9KLFlBQVk7QUFDaEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsWUFBWTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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dWxlc1xccHJvc2VtaXJyb3ItbW9kZWxcXGRpc3RcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPcmRlcmVkTWFwIGZyb20gJ29yZGVyZWRtYXAnO1xuXG5mdW5jdGlvbiBmaW5kRGlmZlN0YXJ0KGEsIGIsIHBvcykge1xuICAgIGZvciAobGV0IGkgPSAwOzsgaSsrKSB7XG4gICAgICAgIGlmIChpID09IGEuY2hpbGRDb3VudCB8fCBpID09IGIuY2hpbGRDb3VudClcbiAgICAgICAgICAgIHJldHVybiBhLmNoaWxkQ291bnQgPT0gYi5jaGlsZENvdW50ID8gbnVsbCA6IHBvcztcbiAgICAgICAgbGV0IGNoaWxkQSA9IGEuY2hpbGQoaSksIGNoaWxkQiA9IGIuY2hpbGQoaSk7XG4gICAgICAgIGlmIChjaGlsZEEgPT0gY2hpbGRCKSB7XG4gICAgICAgICAgICBwb3MgKz0gY2hpbGRBLm5vZGVTaXplO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGlsZEEuc2FtZU1hcmt1cChjaGlsZEIpKVxuICAgICAgICAgICAgcmV0dXJuIHBvcztcbiAgICAgICAgaWYgKGNoaWxkQS5pc1RleHQgJiYgY2hpbGRBLnRleHQgIT0gY2hpbGRCLnRleHQpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBjaGlsZEEudGV4dFtqXSA9PSBjaGlsZEIudGV4dFtqXTsgaisrKVxuICAgICAgICAgICAgICAgIHBvcysrO1xuICAgICAgICAgICAgcmV0dXJuIHBvcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hpbGRBLmNvbnRlbnQuc2l6ZSB8fCBjaGlsZEIuY29udGVudC5zaXplKSB7XG4gICAgICAgICAgICBsZXQgaW5uZXIgPSBmaW5kRGlmZlN0YXJ0KGNoaWxkQS5jb250ZW50LCBjaGlsZEIuY29udGVudCwgcG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoaW5uZXIgIT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5uZXI7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGNoaWxkQS5ub2RlU2l6ZTtcbiAgICB9XG59XG5mdW5jdGlvbiBmaW5kRGlmZkVuZChhLCBiLCBwb3NBLCBwb3NCKSB7XG4gICAgZm9yIChsZXQgaUEgPSBhLmNoaWxkQ291bnQsIGlCID0gYi5jaGlsZENvdW50OzspIHtcbiAgICAgICAgaWYgKGlBID09IDAgfHwgaUIgPT0gMClcbiAgICAgICAgICAgIHJldHVybiBpQSA9PSBpQiA/IG51bGwgOiB7IGE6IHBvc0EsIGI6IHBvc0IgfTtcbiAgICAgICAgbGV0IGNoaWxkQSA9IGEuY2hpbGQoLS1pQSksIGNoaWxkQiA9IGIuY2hpbGQoLS1pQiksIHNpemUgPSBjaGlsZEEubm9kZVNpemU7XG4gICAgICAgIGlmIChjaGlsZEEgPT0gY2hpbGRCKSB7XG4gICAgICAgICAgICBwb3NBIC09IHNpemU7XG4gICAgICAgICAgICBwb3NCIC09IHNpemU7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoaWxkQS5zYW1lTWFya3VwKGNoaWxkQikpXG4gICAgICAgICAgICByZXR1cm4geyBhOiBwb3NBLCBiOiBwb3NCIH07XG4gICAgICAgIGlmIChjaGlsZEEuaXNUZXh0ICYmIGNoaWxkQS50ZXh0ICE9IGNoaWxkQi50ZXh0KSB7XG4gICAgICAgICAgICBsZXQgc2FtZSA9IDAsIG1pblNpemUgPSBNYXRoLm1pbihjaGlsZEEudGV4dC5sZW5ndGgsIGNoaWxkQi50ZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgICB3aGlsZSAoc2FtZSA8IG1pblNpemUgJiYgY2hpbGRBLnRleHRbY2hpbGRBLnRleHQubGVuZ3RoIC0gc2FtZSAtIDFdID09IGNoaWxkQi50ZXh0W2NoaWxkQi50ZXh0Lmxlbmd0aCAtIHNhbWUgLSAxXSkge1xuICAgICAgICAgICAgICAgIHNhbWUrKztcbiAgICAgICAgICAgICAgICBwb3NBLS07XG4gICAgICAgICAgICAgICAgcG9zQi0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgYTogcG9zQSwgYjogcG9zQiB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGlsZEEuY29udGVudC5zaXplIHx8IGNoaWxkQi5jb250ZW50LnNpemUpIHtcbiAgICAgICAgICAgIGxldCBpbm5lciA9IGZpbmREaWZmRW5kKGNoaWxkQS5jb250ZW50LCBjaGlsZEIuY29udGVudCwgcG9zQSAtIDEsIHBvc0IgLSAxKTtcbiAgICAgICAgICAgIGlmIChpbm5lcilcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5uZXI7XG4gICAgICAgIH1cbiAgICAgICAgcG9zQSAtPSBzaXplO1xuICAgICAgICBwb3NCIC09IHNpemU7XG4gICAgfVxufVxuXG4vKipcbkEgZnJhZ21lbnQgcmVwcmVzZW50cyBhIG5vZGUncyBjb2xsZWN0aW9uIG9mIGNoaWxkIG5vZGVzLlxuXG5MaWtlIG5vZGVzLCBmcmFnbWVudHMgYXJlIHBlcnNpc3RlbnQgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgeW91XG5zaG91bGQgbm90IG11dGF0ZSB0aGVtIG9yIHRoZWlyIGNvbnRlbnQuIFJhdGhlciwgeW91IGNyZWF0ZSBuZXdcbmluc3RhbmNlcyB3aGVuZXZlciBuZWVkZWQuIFRoZSBBUEkgdHJpZXMgdG8gbWFrZSB0aGlzIGVhc3kuXG4qL1xuY2xhc3MgRnJhZ21lbnQge1xuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgVGhlIGNoaWxkIG5vZGVzIGluIHRoaXMgZnJhZ21lbnQuXG4gICAgKi9cbiAgICBjb250ZW50LCBzaXplKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHNpemUgfHwgMDtcbiAgICAgICAgaWYgKHNpemUgPT0gbnVsbClcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udGVudC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICB0aGlzLnNpemUgKz0gY29udGVudFtpXS5ub2RlU2l6ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgSW52b2tlIGEgY2FsbGJhY2sgZm9yIGFsbCBkZXNjZW5kYW50IG5vZGVzIGJldHdlZW4gdGhlIGdpdmVuIHR3b1xuICAgIHBvc2l0aW9ucyAocmVsYXRpdmUgdG8gc3RhcnQgb2YgdGhpcyBmcmFnbWVudCkuIERvZXNuJ3QgZGVzY2VuZFxuICAgIGludG8gYSBub2RlIHdoZW4gdGhlIGNhbGxiYWNrIHJldHVybnMgYGZhbHNlYC5cbiAgICAqL1xuICAgIG5vZGVzQmV0d2Vlbihmcm9tLCB0bywgZiwgbm9kZVN0YXJ0ID0gMCwgcGFyZW50KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBwb3MgPSAwOyBwb3MgPCB0bzsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLmNvbnRlbnRbaV0sIGVuZCA9IHBvcyArIGNoaWxkLm5vZGVTaXplO1xuICAgICAgICAgICAgaWYgKGVuZCA+IGZyb20gJiYgZihjaGlsZCwgbm9kZVN0YXJ0ICsgcG9zLCBwYXJlbnQgfHwgbnVsbCwgaSkgIT09IGZhbHNlICYmIGNoaWxkLmNvbnRlbnQuc2l6ZSkge1xuICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IHBvcyArIDE7XG4gICAgICAgICAgICAgICAgY2hpbGQubm9kZXNCZXR3ZWVuKE1hdGgubWF4KDAsIGZyb20gLSBzdGFydCksIE1hdGgubWluKGNoaWxkLmNvbnRlbnQuc2l6ZSwgdG8gLSBzdGFydCksIGYsIG5vZGVTdGFydCArIHN0YXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvcyA9IGVuZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICBDYWxsIHRoZSBnaXZlbiBjYWxsYmFjayBmb3IgZXZlcnkgZGVzY2VuZGFudCBub2RlLiBgcG9zYCB3aWxsIGJlXG4gICAgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmcmFnbWVudC4gVGhlIGNhbGxiYWNrIG1heSByZXR1cm5cbiAgICBgZmFsc2VgIHRvIHByZXZlbnQgdHJhdmVyc2FsIG9mIGEgZ2l2ZW4gbm9kZSdzIGNoaWxkcmVuLlxuICAgICovXG4gICAgZGVzY2VuZGFudHMoZikge1xuICAgICAgICB0aGlzLm5vZGVzQmV0d2VlbigwLCB0aGlzLnNpemUsIGYpO1xuICAgIH1cbiAgICAvKipcbiAgICBFeHRyYWN0IHRoZSB0ZXh0IGJldHdlZW4gYGZyb21gIGFuZCBgdG9gLiBTZWUgdGhlIHNhbWUgbWV0aG9kIG9uXG4gICAgW2BOb2RlYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGUudGV4dEJldHdlZW4pLlxuICAgICovXG4gICAgdGV4dEJldHdlZW4oZnJvbSwgdG8sIGJsb2NrU2VwYXJhdG9yLCBsZWFmVGV4dCkge1xuICAgICAgICBsZXQgdGV4dCA9IFwiXCIsIGZpcnN0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgICAgIGxldCBub2RlVGV4dCA9IG5vZGUuaXNUZXh0ID8gbm9kZS50ZXh0LnNsaWNlKE1hdGgubWF4KGZyb20sIHBvcykgLSBwb3MsIHRvIC0gcG9zKVxuICAgICAgICAgICAgICAgIDogIW5vZGUuaXNMZWFmID8gXCJcIlxuICAgICAgICAgICAgICAgICAgICA6IGxlYWZUZXh0ID8gKHR5cGVvZiBsZWFmVGV4dCA9PT0gXCJmdW5jdGlvblwiID8gbGVhZlRleHQobm9kZSkgOiBsZWFmVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbm9kZS50eXBlLnNwZWMubGVhZlRleHQgPyBub2RlLnR5cGUuc3BlYy5sZWFmVGV4dChub2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgICAgIGlmIChub2RlLmlzQmxvY2sgJiYgKG5vZGUuaXNMZWFmICYmIG5vZGVUZXh0IHx8IG5vZGUuaXNUZXh0YmxvY2spICYmIGJsb2NrU2VwYXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0KVxuICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGV4dCArPSBibG9ja1NlcGFyYXRvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRleHQgKz0gbm9kZVRleHQ7XG4gICAgICAgIH0sIDApO1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgbmV3IGZyYWdtZW50IGNvbnRhaW5pbmcgdGhlIGNvbWJpbmVkIGNvbnRlbnQgb2YgdGhpc1xuICAgIGZyYWdtZW50IGFuZCB0aGUgb3RoZXIuXG4gICAgKi9cbiAgICBhcHBlbmQob3RoZXIpIHtcbiAgICAgICAgaWYgKCFvdGhlci5zaXplKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIGlmICghdGhpcy5zaXplKVxuICAgICAgICAgICAgcmV0dXJuIG90aGVyO1xuICAgICAgICBsZXQgbGFzdCA9IHRoaXMubGFzdENoaWxkLCBmaXJzdCA9IG90aGVyLmZpcnN0Q2hpbGQsIGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQuc2xpY2UoKSwgaSA9IDA7XG4gICAgICAgIGlmIChsYXN0LmlzVGV4dCAmJiBsYXN0LnNhbWVNYXJrdXAoZmlyc3QpKSB7XG4gICAgICAgICAgICBjb250ZW50W2NvbnRlbnQubGVuZ3RoIC0gMV0gPSBsYXN0LndpdGhUZXh0KGxhc3QudGV4dCArIGZpcnN0LnRleHQpO1xuICAgICAgICAgICAgaSA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICg7IGkgPCBvdGhlci5jb250ZW50Lmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgY29udGVudC5wdXNoKG90aGVyLmNvbnRlbnRbaV0pO1xuICAgICAgICByZXR1cm4gbmV3IEZyYWdtZW50KGNvbnRlbnQsIHRoaXMuc2l6ZSArIG90aGVyLnNpemUpO1xuICAgIH1cbiAgICAvKipcbiAgICBDdXQgb3V0IHRoZSBzdWItZnJhZ21lbnQgYmV0d2VlbiB0aGUgdHdvIGdpdmVuIHBvc2l0aW9ucy5cbiAgICAqL1xuICAgIGN1dChmcm9tLCB0byA9IHRoaXMuc2l6ZSkge1xuICAgICAgICBpZiAoZnJvbSA9PSAwICYmIHRvID09IHRoaXMuc2l6ZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICBsZXQgcmVzdWx0ID0gW10sIHNpemUgPSAwO1xuICAgICAgICBpZiAodG8gPiBmcm9tKVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIHBvcyA9IDA7IHBvcyA8IHRvOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLmNvbnRlbnRbaV0sIGVuZCA9IHBvcyArIGNoaWxkLm5vZGVTaXplO1xuICAgICAgICAgICAgICAgIGlmIChlbmQgPiBmcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPCBmcm9tIHx8IGVuZCA+IHRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuaXNUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQuY3V0KE1hdGgubWF4KDAsIGZyb20gLSBwb3MpLCBNYXRoLm1pbihjaGlsZC50ZXh0Lmxlbmd0aCwgdG8gLSBwb3MpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLmN1dChNYXRoLm1heCgwLCBmcm9tIC0gcG9zIC0gMSksIE1hdGgubWluKGNoaWxkLmNvbnRlbnQuc2l6ZSwgdG8gLSBwb3MgLSAxKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICBzaXplICs9IGNoaWxkLm5vZGVTaXplO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwb3MgPSBlbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRnJhZ21lbnQocmVzdWx0LCBzaXplKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjdXRCeUluZGV4KGZyb20sIHRvKSB7XG4gICAgICAgIGlmIChmcm9tID09IHRvKVxuICAgICAgICAgICAgcmV0dXJuIEZyYWdtZW50LmVtcHR5O1xuICAgICAgICBpZiAoZnJvbSA9PSAwICYmIHRvID09IHRoaXMuY29udGVudC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgcmV0dXJuIG5ldyBGcmFnbWVudCh0aGlzLmNvbnRlbnQuc2xpY2UoZnJvbSwgdG8pKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgbmV3IGZyYWdtZW50IGluIHdoaWNoIHRoZSBub2RlIGF0IHRoZSBnaXZlbiBpbmRleCBpc1xuICAgIHJlcGxhY2VkIGJ5IHRoZSBnaXZlbiBub2RlLlxuICAgICovXG4gICAgcmVwbGFjZUNoaWxkKGluZGV4LCBub2RlKSB7XG4gICAgICAgIGxldCBjdXJyZW50ID0gdGhpcy5jb250ZW50W2luZGV4XTtcbiAgICAgICAgaWYgKGN1cnJlbnQgPT0gbm9kZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICBsZXQgY29weSA9IHRoaXMuY29udGVudC5zbGljZSgpO1xuICAgICAgICBsZXQgc2l6ZSA9IHRoaXMuc2l6ZSArIG5vZGUubm9kZVNpemUgLSBjdXJyZW50Lm5vZGVTaXplO1xuICAgICAgICBjb3B5W2luZGV4XSA9IG5vZGU7XG4gICAgICAgIHJldHVybiBuZXcgRnJhZ21lbnQoY29weSwgc2l6ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIG5ldyBmcmFnbWVudCBieSBwcmVwZW5kaW5nIHRoZSBnaXZlbiBub2RlIHRvIHRoaXNcbiAgICBmcmFnbWVudC5cbiAgICAqL1xuICAgIGFkZFRvU3RhcnQobm9kZSkge1xuICAgICAgICByZXR1cm4gbmV3IEZyYWdtZW50KFtub2RlXS5jb25jYXQodGhpcy5jb250ZW50KSwgdGhpcy5zaXplICsgbm9kZS5ub2RlU2l6ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIG5ldyBmcmFnbWVudCBieSBhcHBlbmRpbmcgdGhlIGdpdmVuIG5vZGUgdG8gdGhpc1xuICAgIGZyYWdtZW50LlxuICAgICovXG4gICAgYWRkVG9FbmQobm9kZSkge1xuICAgICAgICByZXR1cm4gbmV3IEZyYWdtZW50KHRoaXMuY29udGVudC5jb25jYXQobm9kZSksIHRoaXMuc2l6ZSArIG5vZGUubm9kZVNpemUpO1xuICAgIH1cbiAgICAvKipcbiAgICBDb21wYXJlIHRoaXMgZnJhZ21lbnQgdG8gYW5vdGhlciBvbmUuXG4gICAgKi9cbiAgICBlcShvdGhlcikge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50Lmxlbmd0aCAhPSBvdGhlci5jb250ZW50Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbnRlbnQubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29udGVudFtpXS5lcShvdGhlci5jb250ZW50W2ldKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvKipcbiAgICBUaGUgZmlyc3QgY2hpbGQgb2YgdGhlIGZyYWdtZW50LCBvciBgbnVsbGAgaWYgaXQgaXMgZW1wdHkuXG4gICAgKi9cbiAgICBnZXQgZmlyc3RDaGlsZCgpIHsgcmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGggPyB0aGlzLmNvbnRlbnRbMF0gOiBudWxsOyB9XG4gICAgLyoqXG4gICAgVGhlIGxhc3QgY2hpbGQgb2YgdGhlIGZyYWdtZW50LCBvciBgbnVsbGAgaWYgaXQgaXMgZW1wdHkuXG4gICAgKi9cbiAgICBnZXQgbGFzdENoaWxkKCkgeyByZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aCA/IHRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoIC0gMV0gOiBudWxsOyB9XG4gICAgLyoqXG4gICAgVGhlIG51bWJlciBvZiBjaGlsZCBub2RlcyBpbiB0aGlzIGZyYWdtZW50LlxuICAgICovXG4gICAgZ2V0IGNoaWxkQ291bnQoKSB7IHJldHVybiB0aGlzLmNvbnRlbnQubGVuZ3RoOyB9XG4gICAgLyoqXG4gICAgR2V0IHRoZSBjaGlsZCBub2RlIGF0IHRoZSBnaXZlbiBpbmRleC4gUmFpc2UgYW4gZXJyb3Igd2hlbiB0aGVcbiAgICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuXG4gICAgKi9cbiAgICBjaGlsZChpbmRleCkge1xuICAgICAgICBsZXQgZm91bmQgPSB0aGlzLmNvbnRlbnRbaW5kZXhdO1xuICAgICAgICBpZiAoIWZvdW5kKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBcIiArIGluZGV4ICsgXCIgb3V0IG9mIHJhbmdlIGZvciBcIiArIHRoaXMpO1xuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxuICAgIC8qKlxuICAgIEdldCB0aGUgY2hpbGQgbm9kZSBhdCB0aGUgZ2l2ZW4gaW5kZXgsIGlmIGl0IGV4aXN0cy5cbiAgICAqL1xuICAgIG1heWJlQ2hpbGQoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFtpbmRleF0gfHwgbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgQ2FsbCBgZmAgZm9yIGV2ZXJ5IGNoaWxkIG5vZGUsIHBhc3NpbmcgdGhlIG5vZGUsIGl0cyBvZmZzZXRcbiAgICBpbnRvIHRoaXMgcGFyZW50IG5vZGUsIGFuZCBpdHMgaW5kZXguXG4gICAgKi9cbiAgICBmb3JFYWNoKGYpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIHAgPSAwOyBpIDwgdGhpcy5jb250ZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLmNvbnRlbnRbaV07XG4gICAgICAgICAgICBmKGNoaWxkLCBwLCBpKTtcbiAgICAgICAgICAgIHAgKz0gY2hpbGQubm9kZVNpemU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgRmluZCB0aGUgZmlyc3QgcG9zaXRpb24gYXQgd2hpY2ggdGhpcyBmcmFnbWVudCBhbmQgYW5vdGhlclxuICAgIGZyYWdtZW50IGRpZmZlciwgb3IgYG51bGxgIGlmIHRoZXkgYXJlIHRoZSBzYW1lLlxuICAgICovXG4gICAgZmluZERpZmZTdGFydChvdGhlciwgcG9zID0gMCkge1xuICAgICAgICByZXR1cm4gZmluZERpZmZTdGFydCh0aGlzLCBvdGhlciwgcG9zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgRmluZCB0aGUgZmlyc3QgcG9zaXRpb24sIHNlYXJjaGluZyBmcm9tIHRoZSBlbmQsIGF0IHdoaWNoIHRoaXNcbiAgICBmcmFnbWVudCBhbmQgdGhlIGdpdmVuIGZyYWdtZW50IGRpZmZlciwgb3IgYG51bGxgIGlmIHRoZXkgYXJlXG4gICAgdGhlIHNhbWUuIFNpbmNlIHRoaXMgcG9zaXRpb24gd2lsbCBub3QgYmUgdGhlIHNhbWUgaW4gYm90aFxuICAgIG5vZGVzLCBhbiBvYmplY3Qgd2l0aCB0d28gc2VwYXJhdGUgcG9zaXRpb25zIGlzIHJldHVybmVkLlxuICAgICovXG4gICAgZmluZERpZmZFbmQob3RoZXIsIHBvcyA9IHRoaXMuc2l6ZSwgb3RoZXJQb3MgPSBvdGhlci5zaXplKSB7XG4gICAgICAgIHJldHVybiBmaW5kRGlmZkVuZCh0aGlzLCBvdGhlciwgcG9zLCBvdGhlclBvcyk7XG4gICAgfVxuICAgIC8qKlxuICAgIEZpbmQgdGhlIGluZGV4IGFuZCBpbm5lciBvZmZzZXQgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIHJlbGF0aXZlXG4gICAgcG9zaXRpb24gaW4gdGhpcyBmcmFnbWVudC4gVGhlIHJlc3VsdCBvYmplY3Qgd2lsbCBiZSByZXVzZWRcbiAgICAob3ZlcndyaXR0ZW4pIHRoZSBuZXh0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gQGludGVybmFsXG4gICAgKi9cbiAgICBmaW5kSW5kZXgocG9zKSB7XG4gICAgICAgIGlmIChwb3MgPT0gMClcbiAgICAgICAgICAgIHJldHVybiByZXRJbmRleCgwLCBwb3MpO1xuICAgICAgICBpZiAocG9zID09IHRoaXMuc2l6ZSlcbiAgICAgICAgICAgIHJldHVybiByZXRJbmRleCh0aGlzLmNvbnRlbnQubGVuZ3RoLCBwb3MpO1xuICAgICAgICBpZiAocG9zID4gdGhpcy5zaXplIHx8IHBvcyA8IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgUG9zaXRpb24gJHtwb3N9IG91dHNpZGUgb2YgZnJhZ21lbnQgKCR7dGhpc30pYCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBjdXJQb3MgPSAwOzsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY3VyID0gdGhpcy5jaGlsZChpKSwgZW5kID0gY3VyUG9zICsgY3VyLm5vZGVTaXplO1xuICAgICAgICAgICAgaWYgKGVuZCA+PSBwb3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoZW5kID09IHBvcylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldEluZGV4KGkgKyAxLCBlbmQpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXRJbmRleChpLCBjdXJQb3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VyUG9zID0gZW5kO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgIFJldHVybiBhIGRlYnVnZ2luZyBzdHJpbmcgdGhhdCBkZXNjcmliZXMgdGhpcyBmcmFnbWVudC5cbiAgICAqL1xuICAgIHRvU3RyaW5nKCkgeyByZXR1cm4gXCI8XCIgKyB0aGlzLnRvU3RyaW5nSW5uZXIoKSArIFwiPlwiOyB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICB0b1N0cmluZ0lubmVyKCkgeyByZXR1cm4gdGhpcy5jb250ZW50LmpvaW4oXCIsIFwiKTsgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIEpTT04tc2VyaWFsaXplYWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGZyYWdtZW50LlxuICAgICovXG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aCA/IHRoaXMuY29udGVudC5tYXAobiA9PiBuLnRvSlNPTigpKSA6IG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgIERlc2VyaWFsaXplIGEgZnJhZ21lbnQgZnJvbSBpdHMgSlNPTiByZXByZXNlbnRhdGlvbi5cbiAgICAqL1xuICAgIHN0YXRpYyBmcm9tSlNPTihzY2hlbWEsIHZhbHVlKSB7XG4gICAgICAgIGlmICghdmFsdWUpXG4gICAgICAgICAgICByZXR1cm4gRnJhZ21lbnQuZW1wdHk7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkludmFsaWQgaW5wdXQgZm9yIEZyYWdtZW50LmZyb21KU09OXCIpO1xuICAgICAgICByZXR1cm4gbmV3IEZyYWdtZW50KHZhbHVlLm1hcChzY2hlbWEubm9kZUZyb21KU09OKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIEJ1aWxkIGEgZnJhZ21lbnQgZnJvbSBhbiBhcnJheSBvZiBub2Rlcy4gRW5zdXJlcyB0aGF0IGFkamFjZW50XG4gICAgdGV4dCBub2RlcyB3aXRoIHRoZSBzYW1lIG1hcmtzIGFyZSBqb2luZWQgdG9nZXRoZXIuXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbUFycmF5KGFycmF5KSB7XG4gICAgICAgIGlmICghYXJyYXkubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIEZyYWdtZW50LmVtcHR5O1xuICAgICAgICBsZXQgam9pbmVkLCBzaXplID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG5vZGUgPSBhcnJheVtpXTtcbiAgICAgICAgICAgIHNpemUgKz0gbm9kZS5ub2RlU2l6ZTtcbiAgICAgICAgICAgIGlmIChpICYmIG5vZGUuaXNUZXh0ICYmIGFycmF5W2kgLSAxXS5zYW1lTWFya3VwKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFqb2luZWQpXG4gICAgICAgICAgICAgICAgICAgIGpvaW5lZCA9IGFycmF5LnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgICAgIGpvaW5lZFtqb2luZWQubGVuZ3RoIC0gMV0gPSBub2RlXG4gICAgICAgICAgICAgICAgICAgIC53aXRoVGV4dChqb2luZWRbam9pbmVkLmxlbmd0aCAtIDFdLnRleHQgKyBub2RlLnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoam9pbmVkKSB7XG4gICAgICAgICAgICAgICAgam9pbmVkLnB1c2gobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBGcmFnbWVudChqb2luZWQgfHwgYXJyYXksIHNpemUpO1xuICAgIH1cbiAgICAvKipcbiAgICBDcmVhdGUgYSBmcmFnbWVudCBmcm9tIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBpbnRlcnByZXRlZCBhcyBhXG4gICAgc2V0IG9mIG5vZGVzLiBGb3IgYG51bGxgLCBpdCByZXR1cm5zIHRoZSBlbXB0eSBmcmFnbWVudC4gRm9yIGFcbiAgICBmcmFnbWVudCwgdGhlIGZyYWdtZW50IGl0c2VsZi4gRm9yIGEgbm9kZSBvciBhcnJheSBvZiBub2RlcywgYVxuICAgIGZyYWdtZW50IGNvbnRhaW5pbmcgdGhvc2Ugbm9kZXMuXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbShub2Rlcykge1xuICAgICAgICBpZiAoIW5vZGVzKVxuICAgICAgICAgICAgcmV0dXJuIEZyYWdtZW50LmVtcHR5O1xuICAgICAgICBpZiAobm9kZXMgaW5zdGFuY2VvZiBGcmFnbWVudClcbiAgICAgICAgICAgIHJldHVybiBub2RlcztcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbUFycmF5KG5vZGVzKTtcbiAgICAgICAgaWYgKG5vZGVzLmF0dHJzKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGcmFnbWVudChbbm9kZXNdLCBub2Rlcy5ub2RlU2l6ZSk7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiQ2FuIG5vdCBjb252ZXJ0IFwiICsgbm9kZXMgKyBcIiB0byBhIEZyYWdtZW50XCIgK1xuICAgICAgICAgICAgKG5vZGVzLm5vZGVzQmV0d2VlbiA/IFwiIChsb29rcyBsaWtlIG11bHRpcGxlIHZlcnNpb25zIG9mIHByb3NlbWlycm9yLW1vZGVsIHdlcmUgbG9hZGVkKVwiIDogXCJcIikpO1xuICAgIH1cbn1cbi8qKlxuQW4gZW1wdHkgZnJhZ21lbnQuIEludGVuZGVkIHRvIGJlIHJldXNlZCB3aGVuZXZlciBhIG5vZGUgZG9lc24ndFxuY29udGFpbiBhbnl0aGluZyAocmF0aGVyIHRoYW4gYWxsb2NhdGluZyBhIG5ldyBlbXB0eSBmcmFnbWVudCBmb3JcbmVhY2ggbGVhZiBub2RlKS5cbiovXG5GcmFnbWVudC5lbXB0eSA9IG5ldyBGcmFnbWVudChbXSwgMCk7XG5jb25zdCBmb3VuZCA9IHsgaW5kZXg6IDAsIG9mZnNldDogMCB9O1xuZnVuY3Rpb24gcmV0SW5kZXgoaW5kZXgsIG9mZnNldCkge1xuICAgIGZvdW5kLmluZGV4ID0gaW5kZXg7XG4gICAgZm91bmQub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiBmb3VuZDtcbn1cblxuZnVuY3Rpb24gY29tcGFyZURlZXAoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIShhICYmIHR5cGVvZiBhID09IFwib2JqZWN0XCIpIHx8XG4gICAgICAgICEoYiAmJiB0eXBlb2YgYiA9PSBcIm9iamVjdFwiKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGxldCBhcnJheSA9IEFycmF5LmlzQXJyYXkoYSk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYikgIT0gYXJyYXkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAoIWNvbXBhcmVEZWVwKGFbaV0sIGJbaV0pKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZvciAobGV0IHAgaW4gYSlcbiAgICAgICAgICAgIGlmICghKHAgaW4gYikgfHwgIWNvbXBhcmVEZWVwKGFbcF0sIGJbcF0pKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgcCBpbiBiKVxuICAgICAgICAgICAgaWYgKCEocCBpbiBhKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG4vKipcbkEgbWFyayBpcyBhIHBpZWNlIG9mIGluZm9ybWF0aW9uIHRoYXQgY2FuIGJlIGF0dGFjaGVkIHRvIGEgbm9kZSxcbnN1Y2ggYXMgaXQgYmVpbmcgZW1waGFzaXplZCwgaW4gY29kZSBmb250LCBvciBhIGxpbmsuIEl0IGhhcyBhXG50eXBlIGFuZCBvcHRpb25hbGx5IGEgc2V0IG9mIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGZ1cnRoZXJcbmluZm9ybWF0aW9uIChzdWNoIGFzIHRoZSB0YXJnZXQgb2YgdGhlIGxpbmspLiBNYXJrcyBhcmUgY3JlYXRlZFxudGhyb3VnaCBhIGBTY2hlbWFgLCB3aGljaCBjb250cm9scyB3aGljaCB0eXBlcyBleGlzdCBhbmQgd2hpY2hcbmF0dHJpYnV0ZXMgdGhleSBoYXZlLlxuKi9cbmNsYXNzIE1hcmsge1xuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgVGhlIHR5cGUgb2YgdGhpcyBtYXJrLlxuICAgICovXG4gICAgdHlwZSwgXG4gICAgLyoqXG4gICAgVGhlIGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFyay5cbiAgICAqL1xuICAgIGF0dHJzKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMuYXR0cnMgPSBhdHRycztcbiAgICB9XG4gICAgLyoqXG4gICAgR2l2ZW4gYSBzZXQgb2YgbWFya3MsIGNyZWF0ZSBhIG5ldyBzZXQgd2hpY2ggY29udGFpbnMgdGhpcyBvbmUgYXNcbiAgICB3ZWxsLCBpbiB0aGUgcmlnaHQgcG9zaXRpb24uIElmIHRoaXMgbWFyayBpcyBhbHJlYWR5IGluIHRoZSBzZXQsXG4gICAgdGhlIHNldCBpdHNlbGYgaXMgcmV0dXJuZWQuIElmIGFueSBtYXJrcyB0aGF0IGFyZSBzZXQgdG8gYmVcbiAgICBbZXhjbHVzaXZlXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuTWFya1NwZWMuZXhjbHVkZXMpIHdpdGggdGhpcyBtYXJrIGFyZSBwcmVzZW50LFxuICAgIHRob3NlIGFyZSByZXBsYWNlZCBieSB0aGlzIG9uZS5cbiAgICAqL1xuICAgIGFkZFRvU2V0KHNldCkge1xuICAgICAgICBsZXQgY29weSwgcGxhY2VkID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgb3RoZXIgPSBzZXRbaV07XG4gICAgICAgICAgICBpZiAodGhpcy5lcShvdGhlcikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldDtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUuZXhjbHVkZXMob3RoZXIudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNvcHkpXG4gICAgICAgICAgICAgICAgICAgIGNvcHkgPSBzZXQuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvdGhlci50eXBlLmV4Y2x1ZGVzKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwbGFjZWQgJiYgb3RoZXIudHlwZS5yYW5rID4gdGhpcy50eXBlLnJhbmspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb3B5KVxuICAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IHNldC5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgICAgICAgICAgY29weS5wdXNoKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBwbGFjZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29weSlcbiAgICAgICAgICAgICAgICAgICAgY29weS5wdXNoKG90aGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvcHkpXG4gICAgICAgICAgICBjb3B5ID0gc2V0LnNsaWNlKCk7XG4gICAgICAgIGlmICghcGxhY2VkKVxuICAgICAgICAgICAgY29weS5wdXNoKHRoaXMpO1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG4gICAgLyoqXG4gICAgUmVtb3ZlIHRoaXMgbWFyayBmcm9tIHRoZSBnaXZlbiBzZXQsIHJldHVybmluZyBhIG5ldyBzZXQuIElmIHRoaXNcbiAgICBtYXJrIGlzIG5vdCBpbiB0aGUgc2V0LCB0aGUgc2V0IGl0c2VsZiBpcyByZXR1cm5lZC5cbiAgICAqL1xuICAgIHJlbW92ZUZyb21TZXQoc2V0KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgaWYgKHRoaXMuZXEoc2V0W2ldKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0LnNsaWNlKDAsIGkpLmNvbmNhdChzZXQuc2xpY2UoaSArIDEpKTtcbiAgICAgICAgcmV0dXJuIHNldDtcbiAgICB9XG4gICAgLyoqXG4gICAgVGVzdCB3aGV0aGVyIHRoaXMgbWFyayBpcyBpbiB0aGUgZ2l2ZW4gc2V0IG9mIG1hcmtzLlxuICAgICovXG4gICAgaXNJblNldChzZXQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXQubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAodGhpcy5lcShzZXRbaV0pKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgIFRlc3Qgd2hldGhlciB0aGlzIG1hcmsgaGFzIHRoZSBzYW1lIHR5cGUgYW5kIGF0dHJpYnV0ZXMgYXNcbiAgICBhbm90aGVyIG1hcmsuXG4gICAgKi9cbiAgICBlcShvdGhlcikge1xuICAgICAgICByZXR1cm4gdGhpcyA9PSBvdGhlciB8fFxuICAgICAgICAgICAgKHRoaXMudHlwZSA9PSBvdGhlci50eXBlICYmIGNvbXBhcmVEZWVwKHRoaXMuYXR0cnMsIG90aGVyLmF0dHJzKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIENvbnZlcnQgdGhpcyBtYXJrIHRvIGEgSlNPTi1zZXJpYWxpemVhYmxlIHJlcHJlc2VudGF0aW9uLlxuICAgICovXG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgb2JqID0geyB0eXBlOiB0aGlzLnR5cGUubmFtZSB9O1xuICAgICAgICBmb3IgKGxldCBfIGluIHRoaXMuYXR0cnMpIHtcbiAgICAgICAgICAgIG9iai5hdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICAvKipcbiAgICBEZXNlcmlhbGl6ZSBhIG1hcmsgZnJvbSBKU09OLlxuICAgICovXG4gICAgc3RhdGljIGZyb21KU09OKHNjaGVtYSwganNvbikge1xuICAgICAgICBpZiAoIWpzb24pXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkludmFsaWQgaW5wdXQgZm9yIE1hcmsuZnJvbUpTT05cIik7XG4gICAgICAgIGxldCB0eXBlID0gc2NoZW1hLm1hcmtzW2pzb24udHlwZV07XG4gICAgICAgIGlmICghdHlwZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSBpcyBubyBtYXJrIHR5cGUgJHtqc29uLnR5cGV9IGluIHRoaXMgc2NoZW1hYCk7XG4gICAgICAgIGxldCBtYXJrID0gdHlwZS5jcmVhdGUoanNvbi5hdHRycyk7XG4gICAgICAgIHR5cGUuY2hlY2tBdHRycyhtYXJrLmF0dHJzKTtcbiAgICAgICAgcmV0dXJuIG1hcms7XG4gICAgfVxuICAgIC8qKlxuICAgIFRlc3Qgd2hldGhlciB0d28gc2V0cyBvZiBtYXJrcyBhcmUgaWRlbnRpY2FsLlxuICAgICovXG4gICAgc3RhdGljIHNhbWVTZXQoYSwgYikge1xuICAgICAgICBpZiAoYSA9PSBiKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgaWYgKCFhW2ldLmVxKGJbaV0pKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIHByb3Blcmx5IHNvcnRlZCBtYXJrIHNldCBmcm9tIG51bGwsIGEgc2luZ2xlIG1hcmssIG9yIGFuXG4gICAgdW5zb3J0ZWQgYXJyYXkgb2YgbWFya3MuXG4gICAgKi9cbiAgICBzdGF0aWMgc2V0RnJvbShtYXJrcykge1xuICAgICAgICBpZiAoIW1hcmtzIHx8IEFycmF5LmlzQXJyYXkobWFya3MpICYmIG1hcmtzLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIE1hcmsubm9uZTtcbiAgICAgICAgaWYgKG1hcmtzIGluc3RhbmNlb2YgTWFyaylcbiAgICAgICAgICAgIHJldHVybiBbbWFya3NdO1xuICAgICAgICBsZXQgY29weSA9IG1hcmtzLnNsaWNlKCk7XG4gICAgICAgIGNvcHkuc29ydCgoYSwgYikgPT4gYS50eXBlLnJhbmsgLSBiLnR5cGUucmFuayk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbn1cbi8qKlxuVGhlIGVtcHR5IHNldCBvZiBtYXJrcy5cbiovXG5NYXJrLm5vbmUgPSBbXTtcblxuLyoqXG5FcnJvciB0eXBlIHJhaXNlZCBieSBbYE5vZGUucmVwbGFjZWBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlLnJlcGxhY2UpIHdoZW5cbmdpdmVuIGFuIGludmFsaWQgcmVwbGFjZW1lbnQuXG4qL1xuY2xhc3MgUmVwbGFjZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuLypcblJlcGxhY2VFcnJvciA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgbWVzc2FnZTogc3RyaW5nKSB7XG4gIGxldCBlcnIgPSBFcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UpXG4gIDsoZXJyIGFzIGFueSkuX19wcm90b19fID0gUmVwbGFjZUVycm9yLnByb3RvdHlwZVxuICByZXR1cm4gZXJyXG59IGFzIGFueVxuXG5SZXBsYWNlRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG5SZXBsYWNlRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUmVwbGFjZUVycm9yXG5SZXBsYWNlRXJyb3IucHJvdG90eXBlLm5hbWUgPSBcIlJlcGxhY2VFcnJvclwiXG4qL1xuLyoqXG5BIHNsaWNlIHJlcHJlc2VudHMgYSBwaWVjZSBjdXQgb3V0IG9mIGEgbGFyZ2VyIGRvY3VtZW50LiBJdFxuc3RvcmVzIG5vdCBvbmx5IGEgZnJhZ21lbnQsIGJ1dCBhbHNvIHRoZSBkZXB0aCB1cCB0byB3aGljaCBub2RlcyBvblxuYm90aCBzaWRlIGFyZSDigJhvcGVu4oCZIChjdXQgdGhyb3VnaCkuXG4qL1xuY2xhc3MgU2xpY2Uge1xuICAgIC8qKlxuICAgIENyZWF0ZSBhIHNsaWNlLiBXaGVuIHNwZWNpZnlpbmcgYSBub24temVybyBvcGVuIGRlcHRoLCB5b3UgbXVzdFxuICAgIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZSBub2RlcyBvZiBhdCBsZWFzdCB0aGF0IGRlcHRoIGF0IHRoZVxuICAgIGFwcHJvcHJpYXRlIHNpZGUgb2YgdGhlIGZyYWdtZW504oCUaS5lLiBpZiB0aGUgZnJhZ21lbnQgaXMgYW5cbiAgICBlbXB0eSBwYXJhZ3JhcGggbm9kZSwgYG9wZW5TdGFydGAgYW5kIGBvcGVuRW5kYCBjYW4ndCBiZSBncmVhdGVyXG4gICAgdGhhbiAxLlxuICAgIFxuICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIHRoZSBjb250ZW50IG9mIG9wZW4gbm9kZXMgdG8gY29uZm9ybSB0b1xuICAgIHRoZSBzY2hlbWEncyBjb250ZW50IGNvbnN0cmFpbnRzLCB0aG91Z2ggaXQgc2hvdWxkIGJlIGEgdmFsaWRcbiAgICBzdGFydC9lbmQvbWlkZGxlIGZvciBzdWNoIGEgbm9kZSwgZGVwZW5kaW5nIG9uIHdoaWNoIHNpZGVzIGFyZVxuICAgIG9wZW4uXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICBUaGUgc2xpY2UncyBjb250ZW50LlxuICAgICovXG4gICAgY29udGVudCwgXG4gICAgLyoqXG4gICAgVGhlIG9wZW4gZGVwdGggYXQgdGhlIHN0YXJ0IG9mIHRoZSBmcmFnbWVudC5cbiAgICAqL1xuICAgIG9wZW5TdGFydCwgXG4gICAgLyoqXG4gICAgVGhlIG9wZW4gZGVwdGggYXQgdGhlIGVuZC5cbiAgICAqL1xuICAgIG9wZW5FbmQpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gY29udGVudDtcbiAgICAgICAgdGhpcy5vcGVuU3RhcnQgPSBvcGVuU3RhcnQ7XG4gICAgICAgIHRoaXMub3BlbkVuZCA9IG9wZW5FbmQ7XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSBzaXplIHRoaXMgc2xpY2Ugd291bGQgYWRkIHdoZW4gaW5zZXJ0ZWQgaW50byBhIGRvY3VtZW50LlxuICAgICovXG4gICAgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQuc2l6ZSAtIHRoaXMub3BlblN0YXJ0IC0gdGhpcy5vcGVuRW5kO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGluc2VydEF0KHBvcywgZnJhZ21lbnQpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBpbnNlcnRJbnRvKHRoaXMuY29udGVudCwgcG9zICsgdGhpcy5vcGVuU3RhcnQsIGZyYWdtZW50KTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQgJiYgbmV3IFNsaWNlKGNvbnRlbnQsIHRoaXMub3BlblN0YXJ0LCB0aGlzLm9wZW5FbmQpO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHJlbW92ZUJldHdlZW4oZnJvbSwgdG8pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTbGljZShyZW1vdmVSYW5nZSh0aGlzLmNvbnRlbnQsIGZyb20gKyB0aGlzLm9wZW5TdGFydCwgdG8gKyB0aGlzLm9wZW5TdGFydCksIHRoaXMub3BlblN0YXJ0LCB0aGlzLm9wZW5FbmQpO1xuICAgIH1cbiAgICAvKipcbiAgICBUZXN0cyB3aGV0aGVyIHRoaXMgc2xpY2UgaXMgZXF1YWwgdG8gYW5vdGhlciBzbGljZS5cbiAgICAqL1xuICAgIGVxKG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQuZXEob3RoZXIuY29udGVudCkgJiYgdGhpcy5vcGVuU3RhcnQgPT0gb3RoZXIub3BlblN0YXJ0ICYmIHRoaXMub3BlbkVuZCA9PSBvdGhlci5vcGVuRW5kO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50ICsgXCIoXCIgKyB0aGlzLm9wZW5TdGFydCArIFwiLFwiICsgdGhpcy5vcGVuRW5kICsgXCIpXCI7XG4gICAgfVxuICAgIC8qKlxuICAgIENvbnZlcnQgYSBzbGljZSB0byBhIEpTT04tc2VyaWFsaXphYmxlIHJlcHJlc2VudGF0aW9uLlxuICAgICovXG4gICAgdG9KU09OKCkge1xuICAgICAgICBpZiAoIXRoaXMuY29udGVudC5zaXplKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGxldCBqc29uID0geyBjb250ZW50OiB0aGlzLmNvbnRlbnQudG9KU09OKCkgfTtcbiAgICAgICAgaWYgKHRoaXMub3BlblN0YXJ0ID4gMClcbiAgICAgICAgICAgIGpzb24ub3BlblN0YXJ0ID0gdGhpcy5vcGVuU3RhcnQ7XG4gICAgICAgIGlmICh0aGlzLm9wZW5FbmQgPiAwKVxuICAgICAgICAgICAganNvbi5vcGVuRW5kID0gdGhpcy5vcGVuRW5kO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICB9XG4gICAgLyoqXG4gICAgRGVzZXJpYWxpemUgYSBzbGljZSBmcm9tIGl0cyBKU09OIHJlcHJlc2VudGF0aW9uLlxuICAgICovXG4gICAgc3RhdGljIGZyb21KU09OKHNjaGVtYSwganNvbikge1xuICAgICAgICBpZiAoIWpzb24pXG4gICAgICAgICAgICByZXR1cm4gU2xpY2UuZW1wdHk7XG4gICAgICAgIGxldCBvcGVuU3RhcnQgPSBqc29uLm9wZW5TdGFydCB8fCAwLCBvcGVuRW5kID0ganNvbi5vcGVuRW5kIHx8IDA7XG4gICAgICAgIGlmICh0eXBlb2Ygb3BlblN0YXJ0ICE9IFwibnVtYmVyXCIgfHwgdHlwZW9mIG9wZW5FbmQgIT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBpbnB1dCBmb3IgU2xpY2UuZnJvbUpTT05cIik7XG4gICAgICAgIHJldHVybiBuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbUpTT04oc2NoZW1hLCBqc29uLmNvbnRlbnQpLCBvcGVuU3RhcnQsIG9wZW5FbmQpO1xuICAgIH1cbiAgICAvKipcbiAgICBDcmVhdGUgYSBzbGljZSBmcm9tIGEgZnJhZ21lbnQgYnkgdGFraW5nIHRoZSBtYXhpbXVtIHBvc3NpYmxlXG4gICAgb3BlbiB2YWx1ZSBvbiBib3RoIHNpZGUgb2YgdGhlIGZyYWdtZW50LlxuICAgICovXG4gICAgc3RhdGljIG1heE9wZW4oZnJhZ21lbnQsIG9wZW5Jc29sYXRpbmcgPSB0cnVlKSB7XG4gICAgICAgIGxldCBvcGVuU3RhcnQgPSAwLCBvcGVuRW5kID0gMDtcbiAgICAgICAgZm9yIChsZXQgbiA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7IG4gJiYgIW4uaXNMZWFmICYmIChvcGVuSXNvbGF0aW5nIHx8ICFuLnR5cGUuc3BlYy5pc29sYXRpbmcpOyBuID0gbi5maXJzdENoaWxkKVxuICAgICAgICAgICAgb3BlblN0YXJ0Kys7XG4gICAgICAgIGZvciAobGV0IG4gPSBmcmFnbWVudC5sYXN0Q2hpbGQ7IG4gJiYgIW4uaXNMZWFmICYmIChvcGVuSXNvbGF0aW5nIHx8ICFuLnR5cGUuc3BlYy5pc29sYXRpbmcpOyBuID0gbi5sYXN0Q2hpbGQpXG4gICAgICAgICAgICBvcGVuRW5kKys7XG4gICAgICAgIHJldHVybiBuZXcgU2xpY2UoZnJhZ21lbnQsIG9wZW5TdGFydCwgb3BlbkVuZCk7XG4gICAgfVxufVxuLyoqXG5UaGUgZW1wdHkgc2xpY2UuXG4qL1xuU2xpY2UuZW1wdHkgPSBuZXcgU2xpY2UoRnJhZ21lbnQuZW1wdHksIDAsIDApO1xuZnVuY3Rpb24gcmVtb3ZlUmFuZ2UoY29udGVudCwgZnJvbSwgdG8pIHtcbiAgICBsZXQgeyBpbmRleCwgb2Zmc2V0IH0gPSBjb250ZW50LmZpbmRJbmRleChmcm9tKSwgY2hpbGQgPSBjb250ZW50Lm1heWJlQ2hpbGQoaW5kZXgpO1xuICAgIGxldCB7IGluZGV4OiBpbmRleFRvLCBvZmZzZXQ6IG9mZnNldFRvIH0gPSBjb250ZW50LmZpbmRJbmRleCh0byk7XG4gICAgaWYgKG9mZnNldCA9PSBmcm9tIHx8IGNoaWxkLmlzVGV4dCkge1xuICAgICAgICBpZiAob2Zmc2V0VG8gIT0gdG8gJiYgIWNvbnRlbnQuY2hpbGQoaW5kZXhUbykuaXNUZXh0KVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJSZW1vdmluZyBub24tZmxhdCByYW5nZVwiKTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQuY3V0KDAsIGZyb20pLmFwcGVuZChjb250ZW50LmN1dCh0bykpO1xuICAgIH1cbiAgICBpZiAoaW5kZXggIT0gaW5kZXhUbylcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJSZW1vdmluZyBub24tZmxhdCByYW5nZVwiKTtcbiAgICByZXR1cm4gY29udGVudC5yZXBsYWNlQ2hpbGQoaW5kZXgsIGNoaWxkLmNvcHkocmVtb3ZlUmFuZ2UoY2hpbGQuY29udGVudCwgZnJvbSAtIG9mZnNldCAtIDEsIHRvIC0gb2Zmc2V0IC0gMSkpKTtcbn1cbmZ1bmN0aW9uIGluc2VydEludG8oY29udGVudCwgZGlzdCwgaW5zZXJ0LCBwYXJlbnQpIHtcbiAgICBsZXQgeyBpbmRleCwgb2Zmc2V0IH0gPSBjb250ZW50LmZpbmRJbmRleChkaXN0KSwgY2hpbGQgPSBjb250ZW50Lm1heWJlQ2hpbGQoaW5kZXgpO1xuICAgIGlmIChvZmZzZXQgPT0gZGlzdCB8fCBjaGlsZC5pc1RleHQpIHtcbiAgICAgICAgaWYgKHBhcmVudCAmJiAhcGFyZW50LmNhblJlcGxhY2UoaW5kZXgsIGluZGV4LCBpbnNlcnQpKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBjb250ZW50LmN1dCgwLCBkaXN0KS5hcHBlbmQoaW5zZXJ0KS5hcHBlbmQoY29udGVudC5jdXQoZGlzdCkpO1xuICAgIH1cbiAgICBsZXQgaW5uZXIgPSBpbnNlcnRJbnRvKGNoaWxkLmNvbnRlbnQsIGRpc3QgLSBvZmZzZXQgLSAxLCBpbnNlcnQsIGNoaWxkKTtcbiAgICByZXR1cm4gaW5uZXIgJiYgY29udGVudC5yZXBsYWNlQ2hpbGQoaW5kZXgsIGNoaWxkLmNvcHkoaW5uZXIpKTtcbn1cbmZ1bmN0aW9uIHJlcGxhY2UoJGZyb20sICR0bywgc2xpY2UpIHtcbiAgICBpZiAoc2xpY2Uub3BlblN0YXJ0ID4gJGZyb20uZGVwdGgpXG4gICAgICAgIHRocm93IG5ldyBSZXBsYWNlRXJyb3IoXCJJbnNlcnRlZCBjb250ZW50IGRlZXBlciB0aGFuIGluc2VydGlvbiBwb3NpdGlvblwiKTtcbiAgICBpZiAoJGZyb20uZGVwdGggLSBzbGljZS5vcGVuU3RhcnQgIT0gJHRvLmRlcHRoIC0gc2xpY2Uub3BlbkVuZClcbiAgICAgICAgdGhyb3cgbmV3IFJlcGxhY2VFcnJvcihcIkluY29uc2lzdGVudCBvcGVuIGRlcHRoc1wiKTtcbiAgICByZXR1cm4gcmVwbGFjZU91dGVyKCRmcm9tLCAkdG8sIHNsaWNlLCAwKTtcbn1cbmZ1bmN0aW9uIHJlcGxhY2VPdXRlcigkZnJvbSwgJHRvLCBzbGljZSwgZGVwdGgpIHtcbiAgICBsZXQgaW5kZXggPSAkZnJvbS5pbmRleChkZXB0aCksIG5vZGUgPSAkZnJvbS5ub2RlKGRlcHRoKTtcbiAgICBpZiAoaW5kZXggPT0gJHRvLmluZGV4KGRlcHRoKSAmJiBkZXB0aCA8ICRmcm9tLmRlcHRoIC0gc2xpY2Uub3BlblN0YXJ0KSB7XG4gICAgICAgIGxldCBpbm5lciA9IHJlcGxhY2VPdXRlcigkZnJvbSwgJHRvLCBzbGljZSwgZGVwdGggKyAxKTtcbiAgICAgICAgcmV0dXJuIG5vZGUuY29weShub2RlLmNvbnRlbnQucmVwbGFjZUNoaWxkKGluZGV4LCBpbm5lcikpO1xuICAgIH1cbiAgICBlbHNlIGlmICghc2xpY2UuY29udGVudC5zaXplKSB7XG4gICAgICAgIHJldHVybiBjbG9zZShub2RlLCByZXBsYWNlVHdvV2F5KCRmcm9tLCAkdG8sIGRlcHRoKSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFzbGljZS5vcGVuU3RhcnQgJiYgIXNsaWNlLm9wZW5FbmQgJiYgJGZyb20uZGVwdGggPT0gZGVwdGggJiYgJHRvLmRlcHRoID09IGRlcHRoKSB7IC8vIFNpbXBsZSwgZmxhdCBjYXNlXG4gICAgICAgIGxldCBwYXJlbnQgPSAkZnJvbS5wYXJlbnQsIGNvbnRlbnQgPSBwYXJlbnQuY29udGVudDtcbiAgICAgICAgcmV0dXJuIGNsb3NlKHBhcmVudCwgY29udGVudC5jdXQoMCwgJGZyb20ucGFyZW50T2Zmc2V0KS5hcHBlbmQoc2xpY2UuY29udGVudCkuYXBwZW5kKGNvbnRlbnQuY3V0KCR0by5wYXJlbnRPZmZzZXQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBsZXQgeyBzdGFydCwgZW5kIH0gPSBwcmVwYXJlU2xpY2VGb3JSZXBsYWNlKHNsaWNlLCAkZnJvbSk7XG4gICAgICAgIHJldHVybiBjbG9zZShub2RlLCByZXBsYWNlVGhyZWVXYXkoJGZyb20sIHN0YXJ0LCBlbmQsICR0bywgZGVwdGgpKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjaGVja0pvaW4obWFpbiwgc3ViKSB7XG4gICAgaWYgKCFzdWIudHlwZS5jb21wYXRpYmxlQ29udGVudChtYWluLnR5cGUpKVxuICAgICAgICB0aHJvdyBuZXcgUmVwbGFjZUVycm9yKFwiQ2Fubm90IGpvaW4gXCIgKyBzdWIudHlwZS5uYW1lICsgXCIgb250byBcIiArIG1haW4udHlwZS5uYW1lKTtcbn1cbmZ1bmN0aW9uIGpvaW5hYmxlKCRiZWZvcmUsICRhZnRlciwgZGVwdGgpIHtcbiAgICBsZXQgbm9kZSA9ICRiZWZvcmUubm9kZShkZXB0aCk7XG4gICAgY2hlY2tKb2luKG5vZGUsICRhZnRlci5ub2RlKGRlcHRoKSk7XG4gICAgcmV0dXJuIG5vZGU7XG59XG5mdW5jdGlvbiBhZGROb2RlKGNoaWxkLCB0YXJnZXQpIHtcbiAgICBsZXQgbGFzdCA9IHRhcmdldC5sZW5ndGggLSAxO1xuICAgIGlmIChsYXN0ID49IDAgJiYgY2hpbGQuaXNUZXh0ICYmIGNoaWxkLnNhbWVNYXJrdXAodGFyZ2V0W2xhc3RdKSlcbiAgICAgICAgdGFyZ2V0W2xhc3RdID0gY2hpbGQud2l0aFRleHQodGFyZ2V0W2xhc3RdLnRleHQgKyBjaGlsZC50ZXh0KTtcbiAgICBlbHNlXG4gICAgICAgIHRhcmdldC5wdXNoKGNoaWxkKTtcbn1cbmZ1bmN0aW9uIGFkZFJhbmdlKCRzdGFydCwgJGVuZCwgZGVwdGgsIHRhcmdldCkge1xuICAgIGxldCBub2RlID0gKCRlbmQgfHwgJHN0YXJ0KS5ub2RlKGRlcHRoKTtcbiAgICBsZXQgc3RhcnRJbmRleCA9IDAsIGVuZEluZGV4ID0gJGVuZCA/ICRlbmQuaW5kZXgoZGVwdGgpIDogbm9kZS5jaGlsZENvdW50O1xuICAgIGlmICgkc3RhcnQpIHtcbiAgICAgICAgc3RhcnRJbmRleCA9ICRzdGFydC5pbmRleChkZXB0aCk7XG4gICAgICAgIGlmICgkc3RhcnQuZGVwdGggPiBkZXB0aCkge1xuICAgICAgICAgICAgc3RhcnRJbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCRzdGFydC50ZXh0T2Zmc2V0KSB7XG4gICAgICAgICAgICBhZGROb2RlKCRzdGFydC5ub2RlQWZ0ZXIsIHRhcmdldCk7XG4gICAgICAgICAgICBzdGFydEluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPCBlbmRJbmRleDsgaSsrKVxuICAgICAgICBhZGROb2RlKG5vZGUuY2hpbGQoaSksIHRhcmdldCk7XG4gICAgaWYgKCRlbmQgJiYgJGVuZC5kZXB0aCA9PSBkZXB0aCAmJiAkZW5kLnRleHRPZmZzZXQpXG4gICAgICAgIGFkZE5vZGUoJGVuZC5ub2RlQmVmb3JlLCB0YXJnZXQpO1xufVxuZnVuY3Rpb24gY2xvc2Uobm9kZSwgY29udGVudCkge1xuICAgIG5vZGUudHlwZS5jaGVja0NvbnRlbnQoY29udGVudCk7XG4gICAgcmV0dXJuIG5vZGUuY29weShjb250ZW50KTtcbn1cbmZ1bmN0aW9uIHJlcGxhY2VUaHJlZVdheSgkZnJvbSwgJHN0YXJ0LCAkZW5kLCAkdG8sIGRlcHRoKSB7XG4gICAgbGV0IG9wZW5TdGFydCA9ICRmcm9tLmRlcHRoID4gZGVwdGggJiYgam9pbmFibGUoJGZyb20sICRzdGFydCwgZGVwdGggKyAxKTtcbiAgICBsZXQgb3BlbkVuZCA9ICR0by5kZXB0aCA+IGRlcHRoICYmIGpvaW5hYmxlKCRlbmQsICR0bywgZGVwdGggKyAxKTtcbiAgICBsZXQgY29udGVudCA9IFtdO1xuICAgIGFkZFJhbmdlKG51bGwsICRmcm9tLCBkZXB0aCwgY29udGVudCk7XG4gICAgaWYgKG9wZW5TdGFydCAmJiBvcGVuRW5kICYmICRzdGFydC5pbmRleChkZXB0aCkgPT0gJGVuZC5pbmRleChkZXB0aCkpIHtcbiAgICAgICAgY2hlY2tKb2luKG9wZW5TdGFydCwgb3BlbkVuZCk7XG4gICAgICAgIGFkZE5vZGUoY2xvc2Uob3BlblN0YXJ0LCByZXBsYWNlVGhyZWVXYXkoJGZyb20sICRzdGFydCwgJGVuZCwgJHRvLCBkZXB0aCArIDEpKSwgY29udGVudCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAob3BlblN0YXJ0KVxuICAgICAgICAgICAgYWRkTm9kZShjbG9zZShvcGVuU3RhcnQsIHJlcGxhY2VUd29XYXkoJGZyb20sICRzdGFydCwgZGVwdGggKyAxKSksIGNvbnRlbnQpO1xuICAgICAgICBhZGRSYW5nZSgkc3RhcnQsICRlbmQsIGRlcHRoLCBjb250ZW50KTtcbiAgICAgICAgaWYgKG9wZW5FbmQpXG4gICAgICAgICAgICBhZGROb2RlKGNsb3NlKG9wZW5FbmQsIHJlcGxhY2VUd29XYXkoJGVuZCwgJHRvLCBkZXB0aCArIDEpKSwgY29udGVudCk7XG4gICAgfVxuICAgIGFkZFJhbmdlKCR0bywgbnVsbCwgZGVwdGgsIGNvbnRlbnQpO1xuICAgIHJldHVybiBuZXcgRnJhZ21lbnQoY29udGVudCk7XG59XG5mdW5jdGlvbiByZXBsYWNlVHdvV2F5KCRmcm9tLCAkdG8sIGRlcHRoKSB7XG4gICAgbGV0IGNvbnRlbnQgPSBbXTtcbiAgICBhZGRSYW5nZShudWxsLCAkZnJvbSwgZGVwdGgsIGNvbnRlbnQpO1xuICAgIGlmICgkZnJvbS5kZXB0aCA+IGRlcHRoKSB7XG4gICAgICAgIGxldCB0eXBlID0gam9pbmFibGUoJGZyb20sICR0bywgZGVwdGggKyAxKTtcbiAgICAgICAgYWRkTm9kZShjbG9zZSh0eXBlLCByZXBsYWNlVHdvV2F5KCRmcm9tLCAkdG8sIGRlcHRoICsgMSkpLCBjb250ZW50KTtcbiAgICB9XG4gICAgYWRkUmFuZ2UoJHRvLCBudWxsLCBkZXB0aCwgY29udGVudCk7XG4gICAgcmV0dXJuIG5ldyBGcmFnbWVudChjb250ZW50KTtcbn1cbmZ1bmN0aW9uIHByZXBhcmVTbGljZUZvclJlcGxhY2Uoc2xpY2UsICRhbG9uZykge1xuICAgIGxldCBleHRyYSA9ICRhbG9uZy5kZXB0aCAtIHNsaWNlLm9wZW5TdGFydCwgcGFyZW50ID0gJGFsb25nLm5vZGUoZXh0cmEpO1xuICAgIGxldCBub2RlID0gcGFyZW50LmNvcHkoc2xpY2UuY29udGVudCk7XG4gICAgZm9yIChsZXQgaSA9IGV4dHJhIC0gMTsgaSA+PSAwOyBpLS0pXG4gICAgICAgIG5vZGUgPSAkYWxvbmcubm9kZShpKS5jb3B5KEZyYWdtZW50LmZyb20obm9kZSkpO1xuICAgIHJldHVybiB7IHN0YXJ0OiBub2RlLnJlc29sdmVOb0NhY2hlKHNsaWNlLm9wZW5TdGFydCArIGV4dHJhKSxcbiAgICAgICAgZW5kOiBub2RlLnJlc29sdmVOb0NhY2hlKG5vZGUuY29udGVudC5zaXplIC0gc2xpY2Uub3BlbkVuZCAtIGV4dHJhKSB9O1xufVxuXG4vKipcbllvdSBjYW4gW19yZXNvbHZlX10oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGUucmVzb2x2ZSkgYSBwb3NpdGlvbiB0byBnZXQgbW9yZVxuaW5mb3JtYXRpb24gYWJvdXQgaXQuIE9iamVjdHMgb2YgdGhpcyBjbGFzcyByZXByZXNlbnQgc3VjaCBhXG5yZXNvbHZlZCBwb3NpdGlvbiwgcHJvdmlkaW5nIHZhcmlvdXMgcGllY2VzIG9mIGNvbnRleHRcbmluZm9ybWF0aW9uLCBhbmQgc29tZSBoZWxwZXIgbWV0aG9kcy5cblxuVGhyb3VnaG91dCB0aGlzIGludGVyZmFjZSwgbWV0aG9kcyB0aGF0IHRha2UgYW4gb3B0aW9uYWwgYGRlcHRoYFxucGFyYW1ldGVyIHdpbGwgaW50ZXJwcmV0IHVuZGVmaW5lZCBhcyBgdGhpcy5kZXB0aGAgYW5kIG5lZ2F0aXZlXG5udW1iZXJzIGFzIGB0aGlzLmRlcHRoICsgdmFsdWVgLlxuKi9cbmNsYXNzIFJlc29sdmVkUG9zIHtcbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSBwb3NpdGlvbiB0aGF0IHdhcyByZXNvbHZlZC5cbiAgICAqL1xuICAgIHBvcywgXG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBwYXRoLCBcbiAgICAvKipcbiAgICBUaGUgb2Zmc2V0IHRoaXMgcG9zaXRpb24gaGFzIGludG8gaXRzIHBhcmVudCBub2RlLlxuICAgICovXG4gICAgcGFyZW50T2Zmc2V0KSB7XG4gICAgICAgIHRoaXMucG9zID0gcG9zO1xuICAgICAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLnBhcmVudE9mZnNldCA9IHBhcmVudE9mZnNldDtcbiAgICAgICAgdGhpcy5kZXB0aCA9IHBhdGgubGVuZ3RoIC8gMyAtIDE7XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgcmVzb2x2ZURlcHRoKHZhbCkge1xuICAgICAgICBpZiAodmFsID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZXB0aDtcbiAgICAgICAgaWYgKHZhbCA8IDApXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZXB0aCArIHZhbDtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgLyoqXG4gICAgVGhlIHBhcmVudCBub2RlIHRoYXQgdGhlIHBvc2l0aW9uIHBvaW50cyBpbnRvLiBOb3RlIHRoYXQgZXZlbiBpZlxuICAgIGEgcG9zaXRpb24gcG9pbnRzIGludG8gYSB0ZXh0IG5vZGUsIHRoYXQgbm9kZSBpcyBub3QgY29uc2lkZXJlZFxuICAgIHRoZSBwYXJlbnTigJR0ZXh0IG5vZGVzIGFyZSDigJhmbGF04oCZIGluIHRoaXMgbW9kZWwsIGFuZCBoYXZlIG5vIGNvbnRlbnQuXG4gICAgKi9cbiAgICBnZXQgcGFyZW50KCkgeyByZXR1cm4gdGhpcy5ub2RlKHRoaXMuZGVwdGgpOyB9XG4gICAgLyoqXG4gICAgVGhlIHJvb3Qgbm9kZSBpbiB3aGljaCB0aGUgcG9zaXRpb24gd2FzIHJlc29sdmVkLlxuICAgICovXG4gICAgZ2V0IGRvYygpIHsgcmV0dXJuIHRoaXMubm9kZSgwKTsgfVxuICAgIC8qKlxuICAgIFRoZSBhbmNlc3RvciBub2RlIGF0IHRoZSBnaXZlbiBsZXZlbC4gYHAubm9kZShwLmRlcHRoKWAgaXMgdGhlXG4gICAgc2FtZSBhcyBgcC5wYXJlbnRgLlxuICAgICovXG4gICAgbm9kZShkZXB0aCkgeyByZXR1cm4gdGhpcy5wYXRoW3RoaXMucmVzb2x2ZURlcHRoKGRlcHRoKSAqIDNdOyB9XG4gICAgLyoqXG4gICAgVGhlIGluZGV4IGludG8gdGhlIGFuY2VzdG9yIGF0IHRoZSBnaXZlbiBsZXZlbC4gSWYgdGhpcyBwb2ludHNcbiAgICBhdCB0aGUgM3JkIG5vZGUgaW4gdGhlIDJuZCBwYXJhZ3JhcGggb24gdGhlIHRvcCBsZXZlbCwgZm9yXG4gICAgZXhhbXBsZSwgYHAuaW5kZXgoMClgIGlzIDEgYW5kIGBwLmluZGV4KDEpYCBpcyAyLlxuICAgICovXG4gICAgaW5kZXgoZGVwdGgpIHsgcmV0dXJuIHRoaXMucGF0aFt0aGlzLnJlc29sdmVEZXB0aChkZXB0aCkgKiAzICsgMV07IH1cbiAgICAvKipcbiAgICBUaGUgaW5kZXggcG9pbnRpbmcgYWZ0ZXIgdGhpcyBwb3NpdGlvbiBpbnRvIHRoZSBhbmNlc3RvciBhdCB0aGVcbiAgICBnaXZlbiBsZXZlbC5cbiAgICAqL1xuICAgIGluZGV4QWZ0ZXIoZGVwdGgpIHtcbiAgICAgICAgZGVwdGggPSB0aGlzLnJlc29sdmVEZXB0aChkZXB0aCk7XG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4KGRlcHRoKSArIChkZXB0aCA9PSB0aGlzLmRlcHRoICYmICF0aGlzLnRleHRPZmZzZXQgPyAwIDogMSk7XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSAoYWJzb2x1dGUpIHBvc2l0aW9uIGF0IHRoZSBzdGFydCBvZiB0aGUgbm9kZSBhdCB0aGUgZ2l2ZW5cbiAgICBsZXZlbC5cbiAgICAqL1xuICAgIHN0YXJ0KGRlcHRoKSB7XG4gICAgICAgIGRlcHRoID0gdGhpcy5yZXNvbHZlRGVwdGgoZGVwdGgpO1xuICAgICAgICByZXR1cm4gZGVwdGggPT0gMCA/IDAgOiB0aGlzLnBhdGhbZGVwdGggKiAzIC0gMV0gKyAxO1xuICAgIH1cbiAgICAvKipcbiAgICBUaGUgKGFic29sdXRlKSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSBub2RlIGF0IHRoZSBnaXZlblxuICAgIGxldmVsLlxuICAgICovXG4gICAgZW5kKGRlcHRoKSB7XG4gICAgICAgIGRlcHRoID0gdGhpcy5yZXNvbHZlRGVwdGgoZGVwdGgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydChkZXB0aCkgKyB0aGlzLm5vZGUoZGVwdGgpLmNvbnRlbnQuc2l6ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgVGhlIChhYnNvbHV0ZSkgcG9zaXRpb24gZGlyZWN0bHkgYmVmb3JlIHRoZSB3cmFwcGluZyBub2RlIGF0IHRoZVxuICAgIGdpdmVuIGxldmVsLCBvciwgd2hlbiBgZGVwdGhgIGlzIGB0aGlzLmRlcHRoICsgMWAsIHRoZSBvcmlnaW5hbFxuICAgIHBvc2l0aW9uLlxuICAgICovXG4gICAgYmVmb3JlKGRlcHRoKSB7XG4gICAgICAgIGRlcHRoID0gdGhpcy5yZXNvbHZlRGVwdGgoZGVwdGgpO1xuICAgICAgICBpZiAoIWRlcHRoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUaGVyZSBpcyBubyBwb3NpdGlvbiBiZWZvcmUgdGhlIHRvcC1sZXZlbCBub2RlXCIpO1xuICAgICAgICByZXR1cm4gZGVwdGggPT0gdGhpcy5kZXB0aCArIDEgPyB0aGlzLnBvcyA6IHRoaXMucGF0aFtkZXB0aCAqIDMgLSAxXTtcbiAgICB9XG4gICAgLyoqXG4gICAgVGhlIChhYnNvbHV0ZSkgcG9zaXRpb24gZGlyZWN0bHkgYWZ0ZXIgdGhlIHdyYXBwaW5nIG5vZGUgYXQgdGhlXG4gICAgZ2l2ZW4gbGV2ZWwsIG9yIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiB3aGVuIGBkZXB0aGAgaXMgYHRoaXMuZGVwdGggKyAxYC5cbiAgICAqL1xuICAgIGFmdGVyKGRlcHRoKSB7XG4gICAgICAgIGRlcHRoID0gdGhpcy5yZXNvbHZlRGVwdGgoZGVwdGgpO1xuICAgICAgICBpZiAoIWRlcHRoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUaGVyZSBpcyBubyBwb3NpdGlvbiBhZnRlciB0aGUgdG9wLWxldmVsIG5vZGVcIik7XG4gICAgICAgIHJldHVybiBkZXB0aCA9PSB0aGlzLmRlcHRoICsgMSA/IHRoaXMucG9zIDogdGhpcy5wYXRoW2RlcHRoICogMyAtIDFdICsgdGhpcy5wYXRoW2RlcHRoICogM10ubm9kZVNpemU7XG4gICAgfVxuICAgIC8qKlxuICAgIFdoZW4gdGhpcyBwb3NpdGlvbiBwb2ludHMgaW50byBhIHRleHQgbm9kZSwgdGhpcyByZXR1cm5zIHRoZVxuICAgIGRpc3RhbmNlIGJldHdlZW4gdGhlIHBvc2l0aW9uIGFuZCB0aGUgc3RhcnQgb2YgdGhlIHRleHQgbm9kZS5cbiAgICBXaWxsIGJlIHplcm8gZm9yIHBvc2l0aW9ucyB0aGF0IHBvaW50IGJldHdlZW4gbm9kZXMuXG4gICAgKi9cbiAgICBnZXQgdGV4dE9mZnNldCgpIHsgcmV0dXJuIHRoaXMucG9zIC0gdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGggLSAxXTsgfVxuICAgIC8qKlxuICAgIEdldCB0aGUgbm9kZSBkaXJlY3RseSBhZnRlciB0aGUgcG9zaXRpb24sIGlmIGFueS4gSWYgdGhlIHBvc2l0aW9uXG4gICAgcG9pbnRzIGludG8gYSB0ZXh0IG5vZGUsIG9ubHkgdGhlIHBhcnQgb2YgdGhhdCBub2RlIGFmdGVyIHRoZVxuICAgIHBvc2l0aW9uIGlzIHJldHVybmVkLlxuICAgICovXG4gICAgZ2V0IG5vZGVBZnRlcigpIHtcbiAgICAgICAgbGV0IHBhcmVudCA9IHRoaXMucGFyZW50LCBpbmRleCA9IHRoaXMuaW5kZXgodGhpcy5kZXB0aCk7XG4gICAgICAgIGlmIChpbmRleCA9PSBwYXJlbnQuY2hpbGRDb3VudClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBsZXQgZE9mZiA9IHRoaXMucG9zIC0gdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGggLSAxXSwgY2hpbGQgPSBwYXJlbnQuY2hpbGQoaW5kZXgpO1xuICAgICAgICByZXR1cm4gZE9mZiA/IHBhcmVudC5jaGlsZChpbmRleCkuY3V0KGRPZmYpIDogY2hpbGQ7XG4gICAgfVxuICAgIC8qKlxuICAgIEdldCB0aGUgbm9kZSBkaXJlY3RseSBiZWZvcmUgdGhlIHBvc2l0aW9uLCBpZiBhbnkuIElmIHRoZVxuICAgIHBvc2l0aW9uIHBvaW50cyBpbnRvIGEgdGV4dCBub2RlLCBvbmx5IHRoZSBwYXJ0IG9mIHRoYXQgbm9kZVxuICAgIGJlZm9yZSB0aGUgcG9zaXRpb24gaXMgcmV0dXJuZWQuXG4gICAgKi9cbiAgICBnZXQgbm9kZUJlZm9yZSgpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5pbmRleCh0aGlzLmRlcHRoKTtcbiAgICAgICAgbGV0IGRPZmYgPSB0aGlzLnBvcyAtIHRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChkT2ZmKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmNoaWxkKGluZGV4KS5jdXQoMCwgZE9mZik7XG4gICAgICAgIHJldHVybiBpbmRleCA9PSAwID8gbnVsbCA6IHRoaXMucGFyZW50LmNoaWxkKGluZGV4IC0gMSk7XG4gICAgfVxuICAgIC8qKlxuICAgIEdldCB0aGUgcG9zaXRpb24gYXQgdGhlIGdpdmVuIGluZGV4IGluIHRoZSBwYXJlbnQgbm9kZSBhdCB0aGVcbiAgICBnaXZlbiBkZXB0aCAod2hpY2ggZGVmYXVsdHMgdG8gYHRoaXMuZGVwdGhgKS5cbiAgICAqL1xuICAgIHBvc0F0SW5kZXgoaW5kZXgsIGRlcHRoKSB7XG4gICAgICAgIGRlcHRoID0gdGhpcy5yZXNvbHZlRGVwdGgoZGVwdGgpO1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMucGF0aFtkZXB0aCAqIDNdLCBwb3MgPSBkZXB0aCA9PSAwID8gMCA6IHRoaXMucGF0aFtkZXB0aCAqIDMgLSAxXSArIDE7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZXg7IGkrKylcbiAgICAgICAgICAgIHBvcyArPSBub2RlLmNoaWxkKGkpLm5vZGVTaXplO1xuICAgICAgICByZXR1cm4gcG9zO1xuICAgIH1cbiAgICAvKipcbiAgICBHZXQgdGhlIG1hcmtzIGF0IHRoaXMgcG9zaXRpb24sIGZhY3RvcmluZyBpbiB0aGUgc3Vycm91bmRpbmdcbiAgICBtYXJrcycgW2BpbmNsdXNpdmVgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuTWFya1NwZWMuaW5jbHVzaXZlKSBwcm9wZXJ0eS4gSWYgdGhlXG4gICAgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbm9uLWVtcHR5IG5vZGUsIHRoZSBtYXJrcyBvZiB0aGVcbiAgICBub2RlIGFmdGVyIGl0IChpZiBhbnkpIGFyZSByZXR1cm5lZC5cbiAgICAqL1xuICAgIG1hcmtzKCkge1xuICAgICAgICBsZXQgcGFyZW50ID0gdGhpcy5wYXJlbnQsIGluZGV4ID0gdGhpcy5pbmRleCgpO1xuICAgICAgICAvLyBJbiBhbiBlbXB0eSBwYXJlbnQsIHJldHVybiB0aGUgZW1wdHkgYXJyYXlcbiAgICAgICAgaWYgKHBhcmVudC5jb250ZW50LnNpemUgPT0gMClcbiAgICAgICAgICAgIHJldHVybiBNYXJrLm5vbmU7XG4gICAgICAgIC8vIFdoZW4gaW5zaWRlIGEgdGV4dCBub2RlLCBqdXN0IHJldHVybiB0aGUgdGV4dCBub2RlJ3MgbWFya3NcbiAgICAgICAgaWYgKHRoaXMudGV4dE9mZnNldClcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQuY2hpbGQoaW5kZXgpLm1hcmtzO1xuICAgICAgICBsZXQgbWFpbiA9IHBhcmVudC5tYXliZUNoaWxkKGluZGV4IC0gMSksIG90aGVyID0gcGFyZW50Lm1heWJlQ2hpbGQoaW5kZXgpO1xuICAgICAgICAvLyBJZiB0aGUgYGFmdGVyYCBmbGFnIGlzIHRydWUgb2YgdGhlcmUgaXMgbm8gbm9kZSBiZWZvcmUsIG1ha2VcbiAgICAgICAgLy8gdGhlIG5vZGUgYWZ0ZXIgdGhpcyBwb3NpdGlvbiB0aGUgbWFpbiByZWZlcmVuY2UuXG4gICAgICAgIGlmICghbWFpbikge1xuICAgICAgICAgICAgbGV0IHRtcCA9IG1haW47XG4gICAgICAgICAgICBtYWluID0gb3RoZXI7XG4gICAgICAgICAgICBvdGhlciA9IHRtcDtcbiAgICAgICAgfVxuICAgICAgICAvLyBVc2UgYWxsIG1hcmtzIGluIHRoZSBtYWluIG5vZGUsIGV4Y2VwdCB0aG9zZSB0aGF0IGhhdmVcbiAgICAgICAgLy8gYGluY2x1c2l2ZWAgc2V0IHRvIGZhbHNlIGFuZCBhcmUgbm90IHByZXNlbnQgaW4gdGhlIG90aGVyIG5vZGUuXG4gICAgICAgIGxldCBtYXJrcyA9IG1haW4ubWFya3M7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAobWFya3NbaV0udHlwZS5zcGVjLmluY2x1c2l2ZSA9PT0gZmFsc2UgJiYgKCFvdGhlciB8fCAhbWFya3NbaV0uaXNJblNldChvdGhlci5tYXJrcykpKVxuICAgICAgICAgICAgICAgIG1hcmtzID0gbWFya3NbaS0tXS5yZW1vdmVGcm9tU2V0KG1hcmtzKTtcbiAgICAgICAgcmV0dXJuIG1hcmtzO1xuICAgIH1cbiAgICAvKipcbiAgICBHZXQgdGhlIG1hcmtzIGFmdGVyIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBpZiBhbnksIGV4Y2VwdCB0aG9zZVxuICAgIHRoYXQgYXJlIG5vbi1pbmNsdXNpdmUgYW5kIG5vdCBwcmVzZW50IGF0IHBvc2l0aW9uIGAkZW5kYC4gVGhpc1xuICAgIGlzIG1vc3RseSB1c2VmdWwgZm9yIGdldHRpbmcgdGhlIHNldCBvZiBtYXJrcyB0byBwcmVzZXJ2ZSBhZnRlciBhXG4gICAgZGVsZXRpb24uIFdpbGwgcmV0dXJuIGBudWxsYCBpZiB0aGlzIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQgb2ZcbiAgICBpdHMgcGFyZW50IG5vZGUgb3IgaXRzIHBhcmVudCBub2RlIGlzbid0IGEgdGV4dGJsb2NrIChpbiB3aGljaFxuICAgIGNhc2Ugbm8gbWFya3Mgc2hvdWxkIGJlIHByZXNlcnZlZCkuXG4gICAgKi9cbiAgICBtYXJrc0Fjcm9zcygkZW5kKSB7XG4gICAgICAgIGxldCBhZnRlciA9IHRoaXMucGFyZW50Lm1heWJlQ2hpbGQodGhpcy5pbmRleCgpKTtcbiAgICAgICAgaWYgKCFhZnRlciB8fCAhYWZ0ZXIuaXNJbmxpbmUpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgbGV0IG1hcmtzID0gYWZ0ZXIubWFya3MsIG5leHQgPSAkZW5kLnBhcmVudC5tYXliZUNoaWxkKCRlbmQuaW5kZXgoKSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAobWFya3NbaV0udHlwZS5zcGVjLmluY2x1c2l2ZSA9PT0gZmFsc2UgJiYgKCFuZXh0IHx8ICFtYXJrc1tpXS5pc0luU2V0KG5leHQubWFya3MpKSlcbiAgICAgICAgICAgICAgICBtYXJrcyA9IG1hcmtzW2ktLV0ucmVtb3ZlRnJvbVNldChtYXJrcyk7XG4gICAgICAgIHJldHVybiBtYXJrcztcbiAgICB9XG4gICAgLyoqXG4gICAgVGhlIGRlcHRoIHVwIHRvIHdoaWNoIHRoaXMgcG9zaXRpb24gYW5kIHRoZSBnaXZlbiAobm9uLXJlc29sdmVkKVxuICAgIHBvc2l0aW9uIHNoYXJlIHRoZSBzYW1lIHBhcmVudCBub2Rlcy5cbiAgICAqL1xuICAgIHNoYXJlZERlcHRoKHBvcykge1xuICAgICAgICBmb3IgKGxldCBkZXB0aCA9IHRoaXMuZGVwdGg7IGRlcHRoID4gMDsgZGVwdGgtLSlcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0KGRlcHRoKSA8PSBwb3MgJiYgdGhpcy5lbmQoZGVwdGgpID49IHBvcylcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVwdGg7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvKipcbiAgICBSZXR1cm5zIGEgcmFuZ2UgYmFzZWQgb24gdGhlIHBsYWNlIHdoZXJlIHRoaXMgcG9zaXRpb24gYW5kIHRoZVxuICAgIGdpdmVuIHBvc2l0aW9uIGRpdmVyZ2UgYXJvdW5kIGJsb2NrIGNvbnRlbnQuIElmIGJvdGggcG9pbnQgaW50b1xuICAgIHRoZSBzYW1lIHRleHRibG9jaywgZm9yIGV4YW1wbGUsIGEgcmFuZ2UgYXJvdW5kIHRoYXQgdGV4dGJsb2NrXG4gICAgd2lsbCBiZSByZXR1cm5lZC4gSWYgdGhleSBwb2ludCBpbnRvIGRpZmZlcmVudCBibG9ja3MsIHRoZSByYW5nZVxuICAgIGFyb3VuZCB0aG9zZSBibG9ja3MgaW4gdGhlaXIgc2hhcmVkIGFuY2VzdG9yIGlzIHJldHVybmVkLiBZb3UgY2FuXG4gICAgcGFzcyBpbiBhbiBvcHRpb25hbCBwcmVkaWNhdGUgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgcGFyZW50XG4gICAgbm9kZSB0byBzZWUgaWYgYSByYW5nZSBpbnRvIHRoYXQgcGFyZW50IGlzIGFjY2VwdGFibGUuXG4gICAgKi9cbiAgICBibG9ja1JhbmdlKG90aGVyID0gdGhpcywgcHJlZCkge1xuICAgICAgICBpZiAob3RoZXIucG9zIDwgdGhpcy5wb3MpXG4gICAgICAgICAgICByZXR1cm4gb3RoZXIuYmxvY2tSYW5nZSh0aGlzKTtcbiAgICAgICAgZm9yIChsZXQgZCA9IHRoaXMuZGVwdGggLSAodGhpcy5wYXJlbnQuaW5saW5lQ29udGVudCB8fCB0aGlzLnBvcyA9PSBvdGhlci5wb3MgPyAxIDogMCk7IGQgPj0gMDsgZC0tKVxuICAgICAgICAgICAgaWYgKG90aGVyLnBvcyA8PSB0aGlzLmVuZChkKSAmJiAoIXByZWQgfHwgcHJlZCh0aGlzLm5vZGUoZCkpKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE5vZGVSYW5nZSh0aGlzLCBvdGhlciwgZCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICBRdWVyeSB3aGV0aGVyIHRoZSBnaXZlbiBwb3NpdGlvbiBzaGFyZXMgdGhlIHNhbWUgcGFyZW50IG5vZGUuXG4gICAgKi9cbiAgICBzYW1lUGFyZW50KG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcyAtIHRoaXMucGFyZW50T2Zmc2V0ID09IG90aGVyLnBvcyAtIG90aGVyLnBhcmVudE9mZnNldDtcbiAgICB9XG4gICAgLyoqXG4gICAgUmV0dXJuIHRoZSBncmVhdGVyIG9mIHRoaXMgYW5kIHRoZSBnaXZlbiBwb3NpdGlvbi5cbiAgICAqL1xuICAgIG1heChvdGhlcikge1xuICAgICAgICByZXR1cm4gb3RoZXIucG9zID4gdGhpcy5wb3MgPyBvdGhlciA6IHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGlzIGFuZCB0aGUgZ2l2ZW4gcG9zaXRpb24uXG4gICAgKi9cbiAgICBtaW4ob3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIG90aGVyLnBvcyA8IHRoaXMucG9zID8gb3RoZXIgOiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBsZXQgc3RyID0gXCJcIjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5kZXB0aDsgaSsrKVxuICAgICAgICAgICAgc3RyICs9IChzdHIgPyBcIi9cIiA6IFwiXCIpICsgdGhpcy5ub2RlKGkpLnR5cGUubmFtZSArIFwiX1wiICsgdGhpcy5pbmRleChpIC0gMSk7XG4gICAgICAgIHJldHVybiBzdHIgKyBcIjpcIiArIHRoaXMucGFyZW50T2Zmc2V0O1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHN0YXRpYyByZXNvbHZlKGRvYywgcG9zKSB7XG4gICAgICAgIGlmICghKHBvcyA+PSAwICYmIHBvcyA8PSBkb2MuY29udGVudC5zaXplKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiUG9zaXRpb24gXCIgKyBwb3MgKyBcIiBvdXQgb2YgcmFuZ2VcIik7XG4gICAgICAgIGxldCBwYXRoID0gW107XG4gICAgICAgIGxldCBzdGFydCA9IDAsIHBhcmVudE9mZnNldCA9IHBvcztcbiAgICAgICAgZm9yIChsZXQgbm9kZSA9IGRvYzs7KSB7XG4gICAgICAgICAgICBsZXQgeyBpbmRleCwgb2Zmc2V0IH0gPSBub2RlLmNvbnRlbnQuZmluZEluZGV4KHBhcmVudE9mZnNldCk7XG4gICAgICAgICAgICBsZXQgcmVtID0gcGFyZW50T2Zmc2V0IC0gb2Zmc2V0O1xuICAgICAgICAgICAgcGF0aC5wdXNoKG5vZGUsIGluZGV4LCBzdGFydCArIG9mZnNldCk7XG4gICAgICAgICAgICBpZiAoIXJlbSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLmNoaWxkKGluZGV4KTtcbiAgICAgICAgICAgIGlmIChub2RlLmlzVGV4dClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHBhcmVudE9mZnNldCA9IHJlbSAtIDE7XG4gICAgICAgICAgICBzdGFydCArPSBvZmZzZXQgKyAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRQb3MocG9zLCBwYXRoLCBwYXJlbnRPZmZzZXQpO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHN0YXRpYyByZXNvbHZlQ2FjaGVkKGRvYywgcG9zKSB7XG4gICAgICAgIGxldCBjYWNoZSA9IHJlc29sdmVDYWNoZS5nZXQoZG9jKTtcbiAgICAgICAgaWYgKGNhY2hlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhY2hlLmVsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgZWx0ID0gY2FjaGUuZWx0c1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoZWx0LnBvcyA9PSBwb3MpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlQ2FjaGUuc2V0KGRvYywgY2FjaGUgPSBuZXcgUmVzb2x2ZUNhY2hlKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzdWx0ID0gY2FjaGUuZWx0c1tjYWNoZS5pXSA9IFJlc29sdmVkUG9zLnJlc29sdmUoZG9jLCBwb3MpO1xuICAgICAgICBjYWNoZS5pID0gKGNhY2hlLmkgKyAxKSAlIHJlc29sdmVDYWNoZVNpemU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuY2xhc3MgUmVzb2x2ZUNhY2hlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5lbHRzID0gW107XG4gICAgICAgIHRoaXMuaSA9IDA7XG4gICAgfVxufVxuY29uc3QgcmVzb2x2ZUNhY2hlU2l6ZSA9IDEyLCByZXNvbHZlQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuLyoqXG5SZXByZXNlbnRzIGEgZmxhdCByYW5nZSBvZiBjb250ZW50LCBpLmUuIG9uZSB0aGF0IHN0YXJ0cyBhbmRcbmVuZHMgaW4gdGhlIHNhbWUgbm9kZS5cbiovXG5jbGFzcyBOb2RlUmFuZ2Uge1xuICAgIC8qKlxuICAgIENvbnN0cnVjdCBhIG5vZGUgcmFuZ2UuIGAkZnJvbWAgYW5kIGAkdG9gIHNob3VsZCBwb2ludCBpbnRvIHRoZVxuICAgIHNhbWUgbm9kZSB1bnRpbCBhdCBsZWFzdCB0aGUgZ2l2ZW4gYGRlcHRoYCwgc2luY2UgYSBub2RlIHJhbmdlXG4gICAgZGVub3RlcyBhbiBhZGphY2VudCBzZXQgb2Ygbm9kZXMgaW4gYSBzaW5nbGUgcGFyZW50IG5vZGUuXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICBBIHJlc29sdmVkIHBvc2l0aW9uIGFsb25nIHRoZSBzdGFydCBvZiB0aGUgY29udGVudC4gTWF5IGhhdmUgYVxuICAgIGBkZXB0aGAgZ3JlYXRlciB0aGFuIHRoaXMgb2JqZWN0J3MgYGRlcHRoYCBwcm9wZXJ0eSwgc2luY2VcbiAgICB0aGVzZSBhcmUgdGhlIHBvc2l0aW9ucyB0aGF0IHdlcmUgdXNlZCB0byBjb21wdXRlIHRoZSByYW5nZSxcbiAgICBub3QgcmUtcmVzb2x2ZWQgcG9zaXRpb25zIGRpcmVjdGx5IGF0IGl0cyBib3VuZGFyaWVzLlxuICAgICovXG4gICAgJGZyb20sIFxuICAgIC8qKlxuICAgIEEgcG9zaXRpb24gYWxvbmcgdGhlIGVuZCBvZiB0aGUgY29udGVudC4gU2VlXG4gICAgY2F2ZWF0IGZvciBbYCRmcm9tYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGVSYW5nZS4kZnJvbSkuXG4gICAgKi9cbiAgICAkdG8sIFxuICAgIC8qKlxuICAgIFRoZSBkZXB0aCBvZiB0aGUgbm9kZSB0aGF0IHRoaXMgcmFuZ2UgcG9pbnRzIGludG8uXG4gICAgKi9cbiAgICBkZXB0aCkge1xuICAgICAgICB0aGlzLiRmcm9tID0gJGZyb207XG4gICAgICAgIHRoaXMuJHRvID0gJHRvO1xuICAgICAgICB0aGlzLmRlcHRoID0gZGVwdGg7XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSBwb3NpdGlvbiBhdCB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICovXG4gICAgZ2V0IHN0YXJ0KCkgeyByZXR1cm4gdGhpcy4kZnJvbS5iZWZvcmUodGhpcy5kZXB0aCArIDEpOyB9XG4gICAgLyoqXG4gICAgVGhlIHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICovXG4gICAgZ2V0IGVuZCgpIHsgcmV0dXJuIHRoaXMuJHRvLmFmdGVyKHRoaXMuZGVwdGggKyAxKTsgfVxuICAgIC8qKlxuICAgIFRoZSBwYXJlbnQgbm9kZSB0aGF0IHRoZSByYW5nZSBwb2ludHMgaW50by5cbiAgICAqL1xuICAgIGdldCBwYXJlbnQoKSB7IHJldHVybiB0aGlzLiRmcm9tLm5vZGUodGhpcy5kZXB0aCk7IH1cbiAgICAvKipcbiAgICBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIHJhbmdlIGluIHRoZSBwYXJlbnQgbm9kZS5cbiAgICAqL1xuICAgIGdldCBzdGFydEluZGV4KCkgeyByZXR1cm4gdGhpcy4kZnJvbS5pbmRleCh0aGlzLmRlcHRoKTsgfVxuICAgIC8qKlxuICAgIFRoZSBlbmQgaW5kZXggb2YgdGhlIHJhbmdlIGluIHRoZSBwYXJlbnQgbm9kZS5cbiAgICAqL1xuICAgIGdldCBlbmRJbmRleCgpIHsgcmV0dXJuIHRoaXMuJHRvLmluZGV4QWZ0ZXIodGhpcy5kZXB0aCk7IH1cbn1cblxuY29uc3QgZW1wdHlBdHRycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4vKipcblRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIG5vZGUgaW4gdGhlIHRyZWUgdGhhdCBtYWtlcyB1cCBhXG5Qcm9zZU1pcnJvciBkb2N1bWVudC4gU28gYSBkb2N1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBgTm9kZWAsIHdpdGhcbmNoaWxkcmVuIHRoYXQgYXJlIGFsc28gaW5zdGFuY2VzIG9mIGBOb2RlYC5cblxuTm9kZXMgYXJlIHBlcnNpc3RlbnQgZGF0YSBzdHJ1Y3R1cmVzLiBJbnN0ZWFkIG9mIGNoYW5naW5nIHRoZW0sIHlvdVxuY3JlYXRlIG5ldyBvbmVzIHdpdGggdGhlIGNvbnRlbnQgeW91IHdhbnQuIE9sZCBvbmVzIGtlZXAgcG9pbnRpbmdcbmF0IHRoZSBvbGQgZG9jdW1lbnQgc2hhcGUuIFRoaXMgaXMgbWFkZSBjaGVhcGVyIGJ5IHNoYXJpbmdcbnN0cnVjdHVyZSBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBkYXRhIGFzIG11Y2ggYXMgcG9zc2libGUsIHdoaWNoIGFcbnRyZWUgc2hhcGUgbGlrZSB0aGlzICh3aXRob3V0IGJhY2sgcG9pbnRlcnMpIG1ha2VzIGVhc3kuXG5cbioqRG8gbm90KiogZGlyZWN0bHkgbXV0YXRlIHRoZSBwcm9wZXJ0aWVzIG9mIGEgYE5vZGVgIG9iamVjdC4gU2VlXG5bdGhlIGd1aWRlXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL2d1aWRlLyNkb2MpIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuKi9cbmNsYXNzIE5vZGUge1xuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgVGhlIHR5cGUgb2Ygbm9kZSB0aGF0IHRoaXMgaXMuXG4gICAgKi9cbiAgICB0eXBlLCBcbiAgICAvKipcbiAgICBBbiBvYmplY3QgbWFwcGluZyBhdHRyaWJ1dGUgbmFtZXMgdG8gdmFsdWVzLiBUaGUga2luZCBvZlxuICAgIGF0dHJpYnV0ZXMgYWxsb3dlZCBhbmQgcmVxdWlyZWQgYXJlXG4gICAgW2RldGVybWluZWRdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlU3BlYy5hdHRycykgYnkgdGhlIG5vZGUgdHlwZS5cbiAgICAqL1xuICAgIGF0dHJzLCBcbiAgICAvLyBBIGZyYWdtZW50IGhvbGRpbmcgdGhlIG5vZGUncyBjaGlsZHJlbi5cbiAgICBjb250ZW50LCBcbiAgICAvKipcbiAgICBUaGUgbWFya3MgKHRoaW5ncyBsaWtlIHdoZXRoZXIgaXQgaXMgZW1waGFzaXplZCBvciBwYXJ0IG9mIGFcbiAgICBsaW5rKSBhcHBsaWVkIHRvIHRoaXMgbm9kZS5cbiAgICAqL1xuICAgIG1hcmtzID0gTWFyay5ub25lKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMuYXR0cnMgPSBhdHRycztcbiAgICAgICAgdGhpcy5tYXJrcyA9IG1hcmtzO1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50IHx8IEZyYWdtZW50LmVtcHR5O1xuICAgIH1cbiAgICAvKipcbiAgICBUaGUgYXJyYXkgb2YgdGhpcyBub2RlJ3MgY2hpbGQgbm9kZXMuXG4gICAgKi9cbiAgICBnZXQgY2hpbGRyZW4oKSB7IHJldHVybiB0aGlzLmNvbnRlbnQuY29udGVudDsgfVxuICAgIC8qKlxuICAgIFRoZSBzaXplIG9mIHRoaXMgbm9kZSwgYXMgZGVmaW5lZCBieSB0aGUgaW50ZWdlci1iYXNlZCBbaW5kZXhpbmdcbiAgICBzY2hlbWVdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvZ3VpZGUvI2RvYy5pbmRleGluZykuIEZvciB0ZXh0IG5vZGVzLCB0aGlzIGlzIHRoZVxuICAgIGFtb3VudCBvZiBjaGFyYWN0ZXJzLiBGb3Igb3RoZXIgbGVhZiBub2RlcywgaXQgaXMgb25lLiBGb3JcbiAgICBub24tbGVhZiBub2RlcywgaXQgaXMgdGhlIHNpemUgb2YgdGhlIGNvbnRlbnQgcGx1cyB0d28gKHRoZVxuICAgIHN0YXJ0IGFuZCBlbmQgdG9rZW4pLlxuICAgICovXG4gICAgZ2V0IG5vZGVTaXplKCkgeyByZXR1cm4gdGhpcy5pc0xlYWYgPyAxIDogMiArIHRoaXMuY29udGVudC5zaXplOyB9XG4gICAgLyoqXG4gICAgVGhlIG51bWJlciBvZiBjaGlsZHJlbiB0aGF0IHRoZSBub2RlIGhhcy5cbiAgICAqL1xuICAgIGdldCBjaGlsZENvdW50KCkgeyByZXR1cm4gdGhpcy5jb250ZW50LmNoaWxkQ291bnQ7IH1cbiAgICAvKipcbiAgICBHZXQgdGhlIGNoaWxkIG5vZGUgYXQgdGhlIGdpdmVuIGluZGV4LiBSYWlzZXMgYW4gZXJyb3Igd2hlbiB0aGVcbiAgICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuXG4gICAgKi9cbiAgICBjaGlsZChpbmRleCkgeyByZXR1cm4gdGhpcy5jb250ZW50LmNoaWxkKGluZGV4KTsgfVxuICAgIC8qKlxuICAgIEdldCB0aGUgY2hpbGQgbm9kZSBhdCB0aGUgZ2l2ZW4gaW5kZXgsIGlmIGl0IGV4aXN0cy5cbiAgICAqL1xuICAgIG1heWJlQ2hpbGQoaW5kZXgpIHsgcmV0dXJuIHRoaXMuY29udGVudC5tYXliZUNoaWxkKGluZGV4KTsgfVxuICAgIC8qKlxuICAgIENhbGwgYGZgIGZvciBldmVyeSBjaGlsZCBub2RlLCBwYXNzaW5nIHRoZSBub2RlLCBpdHMgb2Zmc2V0XG4gICAgaW50byB0aGlzIHBhcmVudCBub2RlLCBhbmQgaXRzIGluZGV4LlxuICAgICovXG4gICAgZm9yRWFjaChmKSB7IHRoaXMuY29udGVudC5mb3JFYWNoKGYpOyB9XG4gICAgLyoqXG4gICAgSW52b2tlIGEgY2FsbGJhY2sgZm9yIGFsbCBkZXNjZW5kYW50IG5vZGVzIHJlY3Vyc2l2ZWx5IGJldHdlZW5cbiAgICB0aGUgZ2l2ZW4gdHdvIHBvc2l0aW9ucyB0aGF0IGFyZSByZWxhdGl2ZSB0byBzdGFydCBvZiB0aGlzXG4gICAgbm9kZSdzIGNvbnRlbnQuIFRoZSBjYWxsYmFjayBpcyBpbnZva2VkIHdpdGggdGhlIG5vZGUsIGl0c1xuICAgIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBvcmlnaW5hbCBub2RlIChtZXRob2QgcmVjZWl2ZXIpLFxuICAgIGl0cyBwYXJlbnQgbm9kZSwgYW5kIGl0cyBjaGlsZCBpbmRleC4gV2hlbiB0aGUgY2FsbGJhY2sgcmV0dXJuc1xuICAgIGZhbHNlIGZvciBhIGdpdmVuIG5vZGUsIHRoYXQgbm9kZSdzIGNoaWxkcmVuIHdpbGwgbm90IGJlXG4gICAgcmVjdXJzZWQgb3Zlci4gVGhlIGxhc3QgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYVxuICAgIHN0YXJ0aW5nIHBvc2l0aW9uIHRvIGNvdW50IGZyb20uXG4gICAgKi9cbiAgICBub2Rlc0JldHdlZW4oZnJvbSwgdG8sIGYsIHN0YXJ0UG9zID0gMCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCBmLCBzdGFydFBvcywgdGhpcyk7XG4gICAgfVxuICAgIC8qKlxuICAgIENhbGwgdGhlIGdpdmVuIGNhbGxiYWNrIGZvciBldmVyeSBkZXNjZW5kYW50IG5vZGUuIERvZXNuJ3RcbiAgICBkZXNjZW5kIGludG8gYSBub2RlIHdoZW4gdGhlIGNhbGxiYWNrIHJldHVybnMgYGZhbHNlYC5cbiAgICAqL1xuICAgIGRlc2NlbmRhbnRzKGYpIHtcbiAgICAgICAgdGhpcy5ub2Rlc0JldHdlZW4oMCwgdGhpcy5jb250ZW50LnNpemUsIGYpO1xuICAgIH1cbiAgICAvKipcbiAgICBDb25jYXRlbmF0ZXMgYWxsIHRoZSB0ZXh0IG5vZGVzIGZvdW5kIGluIHRoaXMgZnJhZ21lbnQgYW5kIGl0c1xuICAgIGNoaWxkcmVuLlxuICAgICovXG4gICAgZ2V0IHRleHRDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuaXNMZWFmICYmIHRoaXMudHlwZS5zcGVjLmxlYWZUZXh0KVxuICAgICAgICAgICAgPyB0aGlzLnR5cGUuc3BlYy5sZWFmVGV4dCh0aGlzKVxuICAgICAgICAgICAgOiB0aGlzLnRleHRCZXR3ZWVuKDAsIHRoaXMuY29udGVudC5zaXplLCBcIlwiKTtcbiAgICB9XG4gICAgLyoqXG4gICAgR2V0IGFsbCB0ZXh0IGJldHdlZW4gcG9zaXRpb25zIGBmcm9tYCBhbmQgYHRvYC4gV2hlblxuICAgIGBibG9ja1NlcGFyYXRvcmAgaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgaW5zZXJ0ZWQgdG8gc2VwYXJhdGUgdGV4dFxuICAgIGZyb20gZGlmZmVyZW50IGJsb2NrIG5vZGVzLiBJZiBgbGVhZlRleHRgIGlzIGdpdmVuLCBpdCdsbCBiZVxuICAgIGluc2VydGVkIGZvciBldmVyeSBub24tdGV4dCBsZWFmIG5vZGUgZW5jb3VudGVyZWQsIG90aGVyd2lzZVxuICAgIFtgbGVhZlRleHRgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuTm9kZVNwZWMubGVhZlRleHQpIHdpbGwgYmUgdXNlZC5cbiAgICAqL1xuICAgIHRleHRCZXR3ZWVuKGZyb20sIHRvLCBibG9ja1NlcGFyYXRvciwgbGVhZlRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC50ZXh0QmV0d2Vlbihmcm9tLCB0bywgYmxvY2tTZXBhcmF0b3IsIGxlYWZUZXh0KTtcbiAgICB9XG4gICAgLyoqXG4gICAgUmV0dXJucyB0aGlzIG5vZGUncyBmaXJzdCBjaGlsZCwgb3IgYG51bGxgIGlmIHRoZXJlIGFyZSBub1xuICAgIGNoaWxkcmVuLlxuICAgICovXG4gICAgZ2V0IGZpcnN0Q2hpbGQoKSB7IHJldHVybiB0aGlzLmNvbnRlbnQuZmlyc3RDaGlsZDsgfVxuICAgIC8qKlxuICAgIFJldHVybnMgdGhpcyBub2RlJ3MgbGFzdCBjaGlsZCwgb3IgYG51bGxgIGlmIHRoZXJlIGFyZSBub1xuICAgIGNoaWxkcmVuLlxuICAgICovXG4gICAgZ2V0IGxhc3RDaGlsZCgpIHsgcmV0dXJuIHRoaXMuY29udGVudC5sYXN0Q2hpbGQ7IH1cbiAgICAvKipcbiAgICBUZXN0IHdoZXRoZXIgdHdvIG5vZGVzIHJlcHJlc2VudCB0aGUgc2FtZSBwaWVjZSBvZiBkb2N1bWVudC5cbiAgICAqL1xuICAgIGVxKG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzID09IG90aGVyIHx8ICh0aGlzLnNhbWVNYXJrdXAob3RoZXIpICYmIHRoaXMuY29udGVudC5lcShvdGhlci5jb250ZW50KSk7XG4gICAgfVxuICAgIC8qKlxuICAgIENvbXBhcmUgdGhlIG1hcmt1cCAodHlwZSwgYXR0cmlidXRlcywgYW5kIG1hcmtzKSBvZiB0aGlzIG5vZGUgdG9cbiAgICB0aG9zZSBvZiBhbm90aGVyLiBSZXR1cm5zIGB0cnVlYCBpZiBib3RoIGhhdmUgdGhlIHNhbWUgbWFya3VwLlxuICAgICovXG4gICAgc2FtZU1hcmt1cChvdGhlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNNYXJrdXAob3RoZXIudHlwZSwgb3RoZXIuYXR0cnMsIG90aGVyLm1hcmtzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ2hlY2sgd2hldGhlciB0aGlzIG5vZGUncyBtYXJrdXAgY29ycmVzcG9uZCB0byB0aGUgZ2l2ZW4gdHlwZSxcbiAgICBhdHRyaWJ1dGVzLCBhbmQgbWFya3MuXG4gICAgKi9cbiAgICBoYXNNYXJrdXAodHlwZSwgYXR0cnMsIG1hcmtzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT0gdHlwZSAmJlxuICAgICAgICAgICAgY29tcGFyZURlZXAodGhpcy5hdHRycywgYXR0cnMgfHwgdHlwZS5kZWZhdWx0QXR0cnMgfHwgZW1wdHlBdHRycykgJiZcbiAgICAgICAgICAgIE1hcmsuc2FtZVNldCh0aGlzLm1hcmtzLCBtYXJrcyB8fCBNYXJrLm5vbmUpO1xuICAgIH1cbiAgICAvKipcbiAgICBDcmVhdGUgYSBuZXcgbm9kZSB3aXRoIHRoZSBzYW1lIG1hcmt1cCBhcyB0aGlzIG5vZGUsIGNvbnRhaW5pbmdcbiAgICB0aGUgZ2l2ZW4gY29udGVudCAob3IgZW1wdHksIGlmIG5vIGNvbnRlbnQgaXMgZ2l2ZW4pLlxuICAgICovXG4gICAgY29weShjb250ZW50ID0gbnVsbCkge1xuICAgICAgICBpZiAoY29udGVudCA9PSB0aGlzLmNvbnRlbnQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlKHRoaXMudHlwZSwgdGhpcy5hdHRycywgY29udGVudCwgdGhpcy5tYXJrcyk7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBub2RlLCB3aXRoIHRoZSBnaXZlbiBzZXQgb2YgbWFya3MgaW5zdGVhZFxuICAgIG9mIHRoZSBub2RlJ3Mgb3duIG1hcmtzLlxuICAgICovXG4gICAgbWFyayhtYXJrcykge1xuICAgICAgICByZXR1cm4gbWFya3MgPT0gdGhpcy5tYXJrcyA/IHRoaXMgOiBuZXcgTm9kZSh0aGlzLnR5cGUsIHRoaXMuYXR0cnMsIHRoaXMuY29udGVudCwgbWFya3MpO1xuICAgIH1cbiAgICAvKipcbiAgICBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgbm9kZSB3aXRoIG9ubHkgdGhlIGNvbnRlbnQgYmV0d2VlbiB0aGVcbiAgICBnaXZlbiBwb3NpdGlvbnMuIElmIGB0b2AgaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byB0aGUgZW5kIG9mXG4gICAgdGhlIG5vZGUuXG4gICAgKi9cbiAgICBjdXQoZnJvbSwgdG8gPSB0aGlzLmNvbnRlbnQuc2l6ZSkge1xuICAgICAgICBpZiAoZnJvbSA9PSAwICYmIHRvID09IHRoaXMuY29udGVudC5zaXplKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIHJldHVybiB0aGlzLmNvcHkodGhpcy5jb250ZW50LmN1dChmcm9tLCB0bykpO1xuICAgIH1cbiAgICAvKipcbiAgICBDdXQgb3V0IHRoZSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBiZXR3ZWVuIHRoZSBnaXZlbiBwb3NpdGlvbnMsIGFuZFxuICAgIHJldHVybiBpdCBhcyBhIGBTbGljZWAgb2JqZWN0LlxuICAgICovXG4gICAgc2xpY2UoZnJvbSwgdG8gPSB0aGlzLmNvbnRlbnQuc2l6ZSwgaW5jbHVkZVBhcmVudHMgPSBmYWxzZSkge1xuICAgICAgICBpZiAoZnJvbSA9PSB0bylcbiAgICAgICAgICAgIHJldHVybiBTbGljZS5lbXB0eTtcbiAgICAgICAgbGV0ICRmcm9tID0gdGhpcy5yZXNvbHZlKGZyb20pLCAkdG8gPSB0aGlzLnJlc29sdmUodG8pO1xuICAgICAgICBsZXQgZGVwdGggPSBpbmNsdWRlUGFyZW50cyA/IDAgOiAkZnJvbS5zaGFyZWREZXB0aCh0byk7XG4gICAgICAgIGxldCBzdGFydCA9ICRmcm9tLnN0YXJ0KGRlcHRoKSwgbm9kZSA9ICRmcm9tLm5vZGUoZGVwdGgpO1xuICAgICAgICBsZXQgY29udGVudCA9IG5vZGUuY29udGVudC5jdXQoJGZyb20ucG9zIC0gc3RhcnQsICR0by5wb3MgLSBzdGFydCk7XG4gICAgICAgIHJldHVybiBuZXcgU2xpY2UoY29udGVudCwgJGZyb20uZGVwdGggLSBkZXB0aCwgJHRvLmRlcHRoIC0gZGVwdGgpO1xuICAgIH1cbiAgICAvKipcbiAgICBSZXBsYWNlIHRoZSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBiZXR3ZWVuIHRoZSBnaXZlbiBwb3NpdGlvbnMgd2l0aFxuICAgIHRoZSBnaXZlbiBzbGljZS4gVGhlIHNsaWNlIG11c3QgJ2ZpdCcsIG1lYW5pbmcgaXRzIG9wZW4gc2lkZXNcbiAgICBtdXN0IGJlIGFibGUgdG8gY29ubmVjdCB0byB0aGUgc3Vycm91bmRpbmcgY29udGVudCwgYW5kIGl0c1xuICAgIGNvbnRlbnQgbm9kZXMgbXVzdCBiZSB2YWxpZCBjaGlsZHJlbiBmb3IgdGhlIG5vZGUgdGhleSBhcmUgcGxhY2VkXG4gICAgaW50by4gSWYgYW55IG9mIHRoaXMgaXMgdmlvbGF0ZWQsIGFuIGVycm9yIG9mIHR5cGVcbiAgICBbYFJlcGxhY2VFcnJvcmBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5SZXBsYWNlRXJyb3IpIGlzIHRocm93bi5cbiAgICAqL1xuICAgIHJlcGxhY2UoZnJvbSwgdG8sIHNsaWNlKSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlKHRoaXMucmVzb2x2ZShmcm9tKSwgdGhpcy5yZXNvbHZlKHRvKSwgc2xpY2UpO1xuICAgIH1cbiAgICAvKipcbiAgICBGaW5kIHRoZSBub2RlIGRpcmVjdGx5IGFmdGVyIHRoZSBnaXZlbiBwb3NpdGlvbi5cbiAgICAqL1xuICAgIG5vZGVBdChwb3MpIHtcbiAgICAgICAgZm9yIChsZXQgbm9kZSA9IHRoaXM7Oykge1xuICAgICAgICAgICAgbGV0IHsgaW5kZXgsIG9mZnNldCB9ID0gbm9kZS5jb250ZW50LmZpbmRJbmRleChwb3MpO1xuICAgICAgICAgICAgbm9kZSA9IG5vZGUubWF5YmVDaGlsZChpbmRleCk7XG4gICAgICAgICAgICBpZiAoIW5vZGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBpZiAob2Zmc2V0ID09IHBvcyB8fCBub2RlLmlzVGV4dClcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICAgIHBvcyAtPSBvZmZzZXQgKyAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgIEZpbmQgdGhlIChkaXJlY3QpIGNoaWxkIG5vZGUgYWZ0ZXIgdGhlIGdpdmVuIG9mZnNldCwgaWYgYW55LFxuICAgIGFuZCByZXR1cm4gaXQgYWxvbmcgd2l0aCBpdHMgaW5kZXggYW5kIG9mZnNldCByZWxhdGl2ZSB0byB0aGlzXG4gICAgbm9kZS5cbiAgICAqL1xuICAgIGNoaWxkQWZ0ZXIocG9zKSB7XG4gICAgICAgIGxldCB7IGluZGV4LCBvZmZzZXQgfSA9IHRoaXMuY29udGVudC5maW5kSW5kZXgocG9zKTtcbiAgICAgICAgcmV0dXJuIHsgbm9kZTogdGhpcy5jb250ZW50Lm1heWJlQ2hpbGQoaW5kZXgpLCBpbmRleCwgb2Zmc2V0IH07XG4gICAgfVxuICAgIC8qKlxuICAgIEZpbmQgdGhlIChkaXJlY3QpIGNoaWxkIG5vZGUgYmVmb3JlIHRoZSBnaXZlbiBvZmZzZXQsIGlmIGFueSxcbiAgICBhbmQgcmV0dXJuIGl0IGFsb25nIHdpdGggaXRzIGluZGV4IGFuZCBvZmZzZXQgcmVsYXRpdmUgdG8gdGhpc1xuICAgIG5vZGUuXG4gICAgKi9cbiAgICBjaGlsZEJlZm9yZShwb3MpIHtcbiAgICAgICAgaWYgKHBvcyA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHsgbm9kZTogbnVsbCwgaW5kZXg6IDAsIG9mZnNldDogMCB9O1xuICAgICAgICBsZXQgeyBpbmRleCwgb2Zmc2V0IH0gPSB0aGlzLmNvbnRlbnQuZmluZEluZGV4KHBvcyk7XG4gICAgICAgIGlmIChvZmZzZXQgPCBwb3MpXG4gICAgICAgICAgICByZXR1cm4geyBub2RlOiB0aGlzLmNvbnRlbnQuY2hpbGQoaW5kZXgpLCBpbmRleCwgb2Zmc2V0IH07XG4gICAgICAgIGxldCBub2RlID0gdGhpcy5jb250ZW50LmNoaWxkKGluZGV4IC0gMSk7XG4gICAgICAgIHJldHVybiB7IG5vZGUsIGluZGV4OiBpbmRleCAtIDEsIG9mZnNldDogb2Zmc2V0IC0gbm9kZS5ub2RlU2l6ZSB9O1xuICAgIH1cbiAgICAvKipcbiAgICBSZXNvbHZlIHRoZSBnaXZlbiBwb3NpdGlvbiBpbiB0aGUgZG9jdW1lbnQsIHJldHVybmluZyBhblxuICAgIFtvYmplY3RdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5SZXNvbHZlZFBvcykgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBpdHMgY29udGV4dC5cbiAgICAqL1xuICAgIHJlc29sdmUocG9zKSB7IHJldHVybiBSZXNvbHZlZFBvcy5yZXNvbHZlQ2FjaGVkKHRoaXMsIHBvcyk7IH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHJlc29sdmVOb0NhY2hlKHBvcykgeyByZXR1cm4gUmVzb2x2ZWRQb3MucmVzb2x2ZSh0aGlzLCBwb3MpOyB9XG4gICAgLyoqXG4gICAgVGVzdCB3aGV0aGVyIGEgZ2l2ZW4gbWFyayBvciBtYXJrIHR5cGUgb2NjdXJzIGluIHRoaXMgZG9jdW1lbnRcbiAgICBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4gcG9zaXRpb25zLlxuICAgICovXG4gICAgcmFuZ2VIYXNNYXJrKGZyb20sIHRvLCB0eXBlKSB7XG4gICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgICBpZiAodG8gPiBmcm9tKVxuICAgICAgICAgICAgdGhpcy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlLmlzSW5TZXQobm9kZS5tYXJrcykpXG4gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWZvdW5kO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG4gICAgLyoqXG4gICAgVHJ1ZSB3aGVuIHRoaXMgaXMgYSBibG9jayAobm9uLWlubGluZSBub2RlKVxuICAgICovXG4gICAgZ2V0IGlzQmxvY2soKSB7IHJldHVybiB0aGlzLnR5cGUuaXNCbG9jazsgfVxuICAgIC8qKlxuICAgIFRydWUgd2hlbiB0aGlzIGlzIGEgdGV4dGJsb2NrIG5vZGUsIGEgYmxvY2sgbm9kZSB3aXRoIGlubGluZVxuICAgIGNvbnRlbnQuXG4gICAgKi9cbiAgICBnZXQgaXNUZXh0YmxvY2soKSB7IHJldHVybiB0aGlzLnR5cGUuaXNUZXh0YmxvY2s7IH1cbiAgICAvKipcbiAgICBUcnVlIHdoZW4gdGhpcyBub2RlIGFsbG93cyBpbmxpbmUgY29udGVudC5cbiAgICAqL1xuICAgIGdldCBpbmxpbmVDb250ZW50KCkgeyByZXR1cm4gdGhpcy50eXBlLmlubGluZUNvbnRlbnQ7IH1cbiAgICAvKipcbiAgICBUcnVlIHdoZW4gdGhpcyBpcyBhbiBpbmxpbmUgbm9kZSAoYSB0ZXh0IG5vZGUgb3IgYSBub2RlIHRoYXQgY2FuXG4gICAgYXBwZWFyIGFtb25nIHRleHQpLlxuICAgICovXG4gICAgZ2V0IGlzSW5saW5lKCkgeyByZXR1cm4gdGhpcy50eXBlLmlzSW5saW5lOyB9XG4gICAgLyoqXG4gICAgVHJ1ZSB3aGVuIHRoaXMgaXMgYSB0ZXh0IG5vZGUuXG4gICAgKi9cbiAgICBnZXQgaXNUZXh0KCkgeyByZXR1cm4gdGhpcy50eXBlLmlzVGV4dDsgfVxuICAgIC8qKlxuICAgIFRydWUgd2hlbiB0aGlzIGlzIGEgbGVhZiBub2RlLlxuICAgICovXG4gICAgZ2V0IGlzTGVhZigpIHsgcmV0dXJuIHRoaXMudHlwZS5pc0xlYWY7IH1cbiAgICAvKipcbiAgICBUcnVlIHdoZW4gdGhpcyBpcyBhbiBhdG9tLCBpLmUuIHdoZW4gaXQgZG9lcyBub3QgaGF2ZSBkaXJlY3RseVxuICAgIGVkaXRhYmxlIGNvbnRlbnQuIFRoaXMgaXMgdXN1YWxseSB0aGUgc2FtZSBhcyBgaXNMZWFmYCwgYnV0IGNhblxuICAgIGJlIGNvbmZpZ3VyZWQgd2l0aCB0aGUgW2BhdG9tYCBwcm9wZXJ0eV0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGVTcGVjLmF0b20pXG4gICAgb24gYSBub2RlJ3Mgc3BlYyAodHlwaWNhbGx5IHVzZWQgd2hlbiB0aGUgbm9kZSBpcyBkaXNwbGF5ZWQgYXNcbiAgICBhbiB1bmVkaXRhYmxlIFtub2RlIHZpZXddKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyN2aWV3Lk5vZGVWaWV3KSkuXG4gICAgKi9cbiAgICBnZXQgaXNBdG9tKCkgeyByZXR1cm4gdGhpcy50eXBlLmlzQXRvbTsgfVxuICAgIC8qKlxuICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG5vZGUgZm9yIGRlYnVnZ2luZ1xuICAgIHB1cnBvc2VzLlxuICAgICovXG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUuc3BlYy50b0RlYnVnU3RyaW5nKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZS5zcGVjLnRvRGVidWdTdHJpbmcodGhpcyk7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy50eXBlLm5hbWU7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQuc2l6ZSlcbiAgICAgICAgICAgIG5hbWUgKz0gXCIoXCIgKyB0aGlzLmNvbnRlbnQudG9TdHJpbmdJbm5lcigpICsgXCIpXCI7XG4gICAgICAgIHJldHVybiB3cmFwTWFya3ModGhpcy5tYXJrcywgbmFtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgIEdldCB0aGUgY29udGVudCBtYXRjaCBpbiB0aGlzIG5vZGUgYXQgdGhlIGdpdmVuIGluZGV4LlxuICAgICovXG4gICAgY29udGVudE1hdGNoQXQoaW5kZXgpIHtcbiAgICAgICAgbGV0IG1hdGNoID0gdGhpcy50eXBlLmNvbnRlbnRNYXRjaC5tYXRjaEZyYWdtZW50KHRoaXMuY29udGVudCwgMCwgaW5kZXgpO1xuICAgICAgICBpZiAoIW1hdGNoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FsbGVkIGNvbnRlbnRNYXRjaEF0IG9uIGEgbm9kZSB3aXRoIGludmFsaWQgY29udGVudFwiKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH1cbiAgICAvKipcbiAgICBUZXN0IHdoZXRoZXIgcmVwbGFjaW5nIHRoZSByYW5nZSBiZXR3ZWVuIGBmcm9tYCBhbmQgYHRvYCAoYnlcbiAgICBjaGlsZCBpbmRleCkgd2l0aCB0aGUgZ2l2ZW4gcmVwbGFjZW1lbnQgZnJhZ21lbnQgKHdoaWNoIGRlZmF1bHRzXG4gICAgdG8gdGhlIGVtcHR5IGZyYWdtZW50KSB3b3VsZCBsZWF2ZSB0aGUgbm9kZSdzIGNvbnRlbnQgdmFsaWQuIFlvdVxuICAgIGNhbiBvcHRpb25hbGx5IHBhc3MgYHN0YXJ0YCBhbmQgYGVuZGAgaW5kaWNlcyBpbnRvIHRoZVxuICAgIHJlcGxhY2VtZW50IGZyYWdtZW50LlxuICAgICovXG4gICAgY2FuUmVwbGFjZShmcm9tLCB0bywgcmVwbGFjZW1lbnQgPSBGcmFnbWVudC5lbXB0eSwgc3RhcnQgPSAwLCBlbmQgPSByZXBsYWNlbWVudC5jaGlsZENvdW50KSB7XG4gICAgICAgIGxldCBvbmUgPSB0aGlzLmNvbnRlbnRNYXRjaEF0KGZyb20pLm1hdGNoRnJhZ21lbnQocmVwbGFjZW1lbnQsIHN0YXJ0LCBlbmQpO1xuICAgICAgICBsZXQgdHdvID0gb25lICYmIG9uZS5tYXRjaEZyYWdtZW50KHRoaXMuY29udGVudCwgdG8pO1xuICAgICAgICBpZiAoIXR3byB8fCAhdHdvLnZhbGlkRW5kKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKylcbiAgICAgICAgICAgIGlmICghdGhpcy50eXBlLmFsbG93c01hcmtzKHJlcGxhY2VtZW50LmNoaWxkKGkpLm1hcmtzKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvKipcbiAgICBUZXN0IHdoZXRoZXIgcmVwbGFjaW5nIHRoZSByYW5nZSBgZnJvbWAgdG8gYHRvYCAoYnkgaW5kZXgpIHdpdGhcbiAgICBhIG5vZGUgb2YgdGhlIGdpdmVuIHR5cGUgd291bGQgbGVhdmUgdGhlIG5vZGUncyBjb250ZW50IHZhbGlkLlxuICAgICovXG4gICAgY2FuUmVwbGFjZVdpdGgoZnJvbSwgdG8sIHR5cGUsIG1hcmtzKSB7XG4gICAgICAgIGlmIChtYXJrcyAmJiAhdGhpcy50eXBlLmFsbG93c01hcmtzKG1hcmtzKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gdGhpcy5jb250ZW50TWF0Y2hBdChmcm9tKS5tYXRjaFR5cGUodHlwZSk7XG4gICAgICAgIGxldCBlbmQgPSBzdGFydCAmJiBzdGFydC5tYXRjaEZyYWdtZW50KHRoaXMuY29udGVudCwgdG8pO1xuICAgICAgICByZXR1cm4gZW5kID8gZW5kLnZhbGlkRW5kIDogZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgIFRlc3Qgd2hldGhlciB0aGUgZ2l2ZW4gbm9kZSdzIGNvbnRlbnQgY291bGQgYmUgYXBwZW5kZWQgdG8gdGhpc1xuICAgIG5vZGUuIElmIHRoYXQgbm9kZSBpcyBlbXB0eSwgdGhpcyB3aWxsIG9ubHkgcmV0dXJuIHRydWUgaWYgdGhlcmVcbiAgICBpcyBhdCBsZWFzdCBvbmUgbm9kZSB0eXBlIHRoYXQgY2FuIGFwcGVhciBpbiBib3RoIG5vZGVzICh0byBhdm9pZFxuICAgIG1lcmdpbmcgY29tcGxldGVseSBpbmNvbXBhdGlibGUgbm9kZXMpLlxuICAgICovXG4gICAgY2FuQXBwZW5kKG90aGVyKSB7XG4gICAgICAgIGlmIChvdGhlci5jb250ZW50LnNpemUpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYW5SZXBsYWNlKHRoaXMuY2hpbGRDb3VudCwgdGhpcy5jaGlsZENvdW50LCBvdGhlci5jb250ZW50KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZS5jb21wYXRpYmxlQ29udGVudChvdGhlci50eXBlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ2hlY2sgd2hldGhlciB0aGlzIG5vZGUgYW5kIGl0cyBkZXNjZW5kYW50cyBjb25mb3JtIHRvIHRoZVxuICAgIHNjaGVtYSwgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZXkgZG8gbm90LlxuICAgICovXG4gICAgY2hlY2soKSB7XG4gICAgICAgIHRoaXMudHlwZS5jaGVja0NvbnRlbnQodGhpcy5jb250ZW50KTtcbiAgICAgICAgdGhpcy50eXBlLmNoZWNrQXR0cnModGhpcy5hdHRycyk7XG4gICAgICAgIGxldCBjb3B5ID0gTWFyay5ub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFya3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYXJrID0gdGhpcy5tYXJrc1tpXTtcbiAgICAgICAgICAgIG1hcmsudHlwZS5jaGVja0F0dHJzKG1hcmsuYXR0cnMpO1xuICAgICAgICAgICAgY29weSA9IG1hcmsuYWRkVG9TZXQoY29weSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFNYXJrLnNhbWVTZXQoY29weSwgdGhpcy5tYXJrcykpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YWxpZCBjb2xsZWN0aW9uIG9mIG1hcmtzIGZvciBub2RlICR7dGhpcy50eXBlLm5hbWV9OiAke3RoaXMubWFya3MubWFwKG0gPT4gbS50eXBlLm5hbWUpfWApO1xuICAgICAgICB0aGlzLmNvbnRlbnQuZm9yRWFjaChub2RlID0+IG5vZGUuY2hlY2soKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIFJldHVybiBhIEpTT04tc2VyaWFsaXplYWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG5vZGUuXG4gICAgKi9cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCBvYmogPSB7IHR5cGU6IHRoaXMudHlwZS5uYW1lIH07XG4gICAgICAgIGZvciAobGV0IF8gaW4gdGhpcy5hdHRycykge1xuICAgICAgICAgICAgb2JqLmF0dHJzID0gdGhpcy5hdHRycztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQuc2l6ZSlcbiAgICAgICAgICAgIG9iai5jb250ZW50ID0gdGhpcy5jb250ZW50LnRvSlNPTigpO1xuICAgICAgICBpZiAodGhpcy5tYXJrcy5sZW5ndGgpXG4gICAgICAgICAgICBvYmoubWFya3MgPSB0aGlzLm1hcmtzLm1hcChuID0+IG4udG9KU09OKCkpO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICAvKipcbiAgICBEZXNlcmlhbGl6ZSBhIG5vZGUgZnJvbSBpdHMgSlNPTiByZXByZXNlbnRhdGlvbi5cbiAgICAqL1xuICAgIHN0YXRpYyBmcm9tSlNPTihzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgaWYgKCFqc29uKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIGlucHV0IGZvciBOb2RlLmZyb21KU09OXCIpO1xuICAgICAgICBsZXQgbWFya3MgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChqc29uLm1hcmtzKSB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoanNvbi5tYXJrcykpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIG1hcmsgZGF0YSBmb3IgTm9kZS5mcm9tSlNPTlwiKTtcbiAgICAgICAgICAgIG1hcmtzID0ganNvbi5tYXJrcy5tYXAoc2NoZW1hLm1hcmtGcm9tSlNPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGpzb24udHlwZSA9PSBcInRleHRcIikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBqc29uLnRleHQgIT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkludmFsaWQgdGV4dCBub2RlIGluIEpTT05cIik7XG4gICAgICAgICAgICByZXR1cm4gc2NoZW1hLnRleHQoanNvbi50ZXh0LCBtYXJrcyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbnRlbnQgPSBGcmFnbWVudC5mcm9tSlNPTihzY2hlbWEsIGpzb24uY29udGVudCk7XG4gICAgICAgIGxldCBub2RlID0gc2NoZW1hLm5vZGVUeXBlKGpzb24udHlwZSkuY3JlYXRlKGpzb24uYXR0cnMsIGNvbnRlbnQsIG1hcmtzKTtcbiAgICAgICAgbm9kZS50eXBlLmNoZWNrQXR0cnMobm9kZS5hdHRycyk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn1cbk5vZGUucHJvdG90eXBlLnRleHQgPSB1bmRlZmluZWQ7XG5jbGFzcyBUZXh0Tm9kZSBleHRlbmRzIE5vZGUge1xuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgY29uc3RydWN0b3IodHlwZSwgYXR0cnMsIGNvbnRlbnQsIG1hcmtzKSB7XG4gICAgICAgIHN1cGVyKHR5cGUsIGF0dHJzLCBudWxsLCBtYXJrcyk7XG4gICAgICAgIGlmICghY29udGVudClcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiRW1wdHkgdGV4dCBub2RlcyBhcmUgbm90IGFsbG93ZWRcIik7XG4gICAgICAgIHRoaXMudGV4dCA9IGNvbnRlbnQ7XG4gICAgfVxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBpZiAodGhpcy50eXBlLnNwZWMudG9EZWJ1Z1N0cmluZylcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGUuc3BlYy50b0RlYnVnU3RyaW5nKHRoaXMpO1xuICAgICAgICByZXR1cm4gd3JhcE1hcmtzKHRoaXMubWFya3MsIEpTT04uc3RyaW5naWZ5KHRoaXMudGV4dCkpO1xuICAgIH1cbiAgICBnZXQgdGV4dENvbnRlbnQoKSB7IHJldHVybiB0aGlzLnRleHQ7IH1cbiAgICB0ZXh0QmV0d2Vlbihmcm9tLCB0bykgeyByZXR1cm4gdGhpcy50ZXh0LnNsaWNlKGZyb20sIHRvKTsgfVxuICAgIGdldCBub2RlU2l6ZSgpIHsgcmV0dXJuIHRoaXMudGV4dC5sZW5ndGg7IH1cbiAgICBtYXJrKG1hcmtzKSB7XG4gICAgICAgIHJldHVybiBtYXJrcyA9PSB0aGlzLm1hcmtzID8gdGhpcyA6IG5ldyBUZXh0Tm9kZSh0aGlzLnR5cGUsIHRoaXMuYXR0cnMsIHRoaXMudGV4dCwgbWFya3MpO1xuICAgIH1cbiAgICB3aXRoVGV4dCh0ZXh0KSB7XG4gICAgICAgIGlmICh0ZXh0ID09IHRoaXMudGV4dClcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICByZXR1cm4gbmV3IFRleHROb2RlKHRoaXMudHlwZSwgdGhpcy5hdHRycywgdGV4dCwgdGhpcy5tYXJrcyk7XG4gICAgfVxuICAgIGN1dChmcm9tID0gMCwgdG8gPSB0aGlzLnRleHQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChmcm9tID09IDAgJiYgdG8gPT0gdGhpcy50ZXh0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVGV4dCh0aGlzLnRleHQuc2xpY2UoZnJvbSwgdG8pKTtcbiAgICB9XG4gICAgZXEob3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FtZU1hcmt1cChvdGhlcikgJiYgdGhpcy50ZXh0ID09IG90aGVyLnRleHQ7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IGJhc2UgPSBzdXBlci50b0pTT04oKTtcbiAgICAgICAgYmFzZS50ZXh0ID0gdGhpcy50ZXh0O1xuICAgICAgICByZXR1cm4gYmFzZTtcbiAgICB9XG59XG5mdW5jdGlvbiB3cmFwTWFya3MobWFya3MsIHN0cikge1xuICAgIGZvciAobGV0IGkgPSBtYXJrcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSlcbiAgICAgICAgc3RyID0gbWFya3NbaV0udHlwZS5uYW1lICsgXCIoXCIgKyBzdHIgKyBcIilcIjtcbiAgICByZXR1cm4gc3RyO1xufVxuXG4vKipcbkluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudCBhIG1hdGNoIHN0YXRlIG9mIGEgbm9kZSB0eXBlJ3Ncbltjb250ZW50IGV4cHJlc3Npb25dKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlU3BlYy5jb250ZW50KSwgYW5kIGNhbiBiZSB1c2VkIHRvXG5maW5kIG91dCB3aGV0aGVyIGZ1cnRoZXIgY29udGVudCBtYXRjaGVzIGhlcmUsIGFuZCB3aGV0aGVyIGEgZ2l2ZW5cbnBvc2l0aW9uIGlzIGEgdmFsaWQgZW5kIG9mIHRoZSBub2RlLlxuKi9cbmNsYXNzIENvbnRlbnRNYXRjaCB7XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICBUcnVlIHdoZW4gdGhpcyBtYXRjaCBzdGF0ZSByZXByZXNlbnRzIGEgdmFsaWQgZW5kIG9mIHRoZSBub2RlLlxuICAgICovXG4gICAgdmFsaWRFbmQpIHtcbiAgICAgICAgdGhpcy52YWxpZEVuZCA9IHZhbGlkRW5kO1xuICAgICAgICAvKipcbiAgICAgICAgQGludGVybmFsXG4gICAgICAgICovXG4gICAgICAgIHRoaXMubmV4dCA9IFtdO1xuICAgICAgICAvKipcbiAgICAgICAgQGludGVybmFsXG4gICAgICAgICovXG4gICAgICAgIHRoaXMud3JhcENhY2hlID0gW107XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgc3RhdGljIHBhcnNlKHN0cmluZywgbm9kZVR5cGVzKSB7XG4gICAgICAgIGxldCBzdHJlYW0gPSBuZXcgVG9rZW5TdHJlYW0oc3RyaW5nLCBub2RlVHlwZXMpO1xuICAgICAgICBpZiAoc3RyZWFtLm5leHQgPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBDb250ZW50TWF0Y2guZW1wdHk7XG4gICAgICAgIGxldCBleHByID0gcGFyc2VFeHByKHN0cmVhbSk7XG4gICAgICAgIGlmIChzdHJlYW0ubmV4dClcbiAgICAgICAgICAgIHN0cmVhbS5lcnIoXCJVbmV4cGVjdGVkIHRyYWlsaW5nIHRleHRcIik7XG4gICAgICAgIGxldCBtYXRjaCA9IGRmYShuZmEoZXhwcikpO1xuICAgICAgICBjaGVja0ZvckRlYWRFbmRzKG1hdGNoLCBzdHJlYW0pO1xuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfVxuICAgIC8qKlxuICAgIE1hdGNoIGEgbm9kZSB0eXBlLCByZXR1cm5pbmcgYSBtYXRjaCBhZnRlciB0aGF0IG5vZGUgaWZcbiAgICBzdWNjZXNzZnVsLlxuICAgICovXG4gICAgbWF0Y2hUeXBlKHR5cGUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5leHQubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAodGhpcy5uZXh0W2ldLnR5cGUgPT0gdHlwZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0W2ldLm5leHQ7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICBUcnkgdG8gbWF0Y2ggYSBmcmFnbWVudC4gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG1hdGNoIHdoZW5cbiAgICBzdWNjZXNzZnVsLlxuICAgICovXG4gICAgbWF0Y2hGcmFnbWVudChmcmFnLCBzdGFydCA9IDAsIGVuZCA9IGZyYWcuY2hpbGRDb3VudCkge1xuICAgICAgICBsZXQgY3VyID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBjdXIgJiYgaSA8IGVuZDsgaSsrKVxuICAgICAgICAgICAgY3VyID0gY3VyLm1hdGNoVHlwZShmcmFnLmNoaWxkKGkpLnR5cGUpO1xuICAgICAgICByZXR1cm4gY3VyO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGdldCBpbmxpbmVDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZXh0Lmxlbmd0aCAhPSAwICYmIHRoaXMubmV4dFswXS50eXBlLmlzSW5saW5lO1xuICAgIH1cbiAgICAvKipcbiAgICBHZXQgdGhlIGZpcnN0IG1hdGNoaW5nIG5vZGUgdHlwZSBhdCB0aGlzIG1hdGNoIHBvc2l0aW9uIHRoYXQgY2FuXG4gICAgYmUgZ2VuZXJhdGVkLlxuICAgICovXG4gICAgZ2V0IGRlZmF1bHRUeXBlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubmV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSB9ID0gdGhpcy5uZXh0W2ldO1xuICAgICAgICAgICAgaWYgKCEodHlwZS5pc1RleHQgfHwgdHlwZS5oYXNSZXF1aXJlZEF0dHJzKCkpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGNvbXBhdGlibGUob3RoZXIpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5leHQubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG90aGVyLm5leHQubGVuZ3RoOyBqKyspXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubmV4dFtpXS50eXBlID09IG90aGVyLm5leHRbal0udHlwZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgVHJ5IHRvIG1hdGNoIHRoZSBnaXZlbiBmcmFnbWVudCwgYW5kIGlmIHRoYXQgZmFpbHMsIHNlZSBpZiBpdCBjYW5cbiAgICBiZSBtYWRlIHRvIG1hdGNoIGJ5IGluc2VydGluZyBub2RlcyBpbiBmcm9udCBvZiBpdC4gV2hlblxuICAgIHN1Y2Nlc3NmdWwsIHJldHVybiBhIGZyYWdtZW50IG9mIGluc2VydGVkIG5vZGVzICh3aGljaCBtYXkgYmVcbiAgICBlbXB0eSBpZiBub3RoaW5nIGhhZCB0byBiZSBpbnNlcnRlZCkuIFdoZW4gYHRvRW5kYCBpcyB0cnVlLCBvbmx5XG4gICAgcmV0dXJuIGEgZnJhZ21lbnQgaWYgdGhlIHJlc3VsdGluZyBtYXRjaCBnb2VzIHRvIHRoZSBlbmQgb2YgdGhlXG4gICAgY29udGVudCBleHByZXNzaW9uLlxuICAgICovXG4gICAgZmlsbEJlZm9yZShhZnRlciwgdG9FbmQgPSBmYWxzZSwgc3RhcnRJbmRleCA9IDApIHtcbiAgICAgICAgbGV0IHNlZW4gPSBbdGhpc107XG4gICAgICAgIGZ1bmN0aW9uIHNlYXJjaChtYXRjaCwgdHlwZXMpIHtcbiAgICAgICAgICAgIGxldCBmaW5pc2hlZCA9IG1hdGNoLm1hdGNoRnJhZ21lbnQoYWZ0ZXIsIHN0YXJ0SW5kZXgpO1xuICAgICAgICAgICAgaWYgKGZpbmlzaGVkICYmICghdG9FbmQgfHwgZmluaXNoZWQudmFsaWRFbmQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBGcmFnbWVudC5mcm9tKHR5cGVzLm1hcCh0cCA9PiB0cC5jcmVhdGVBbmRGaWxsKCkpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2gubmV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCB7IHR5cGUsIG5leHQgfSA9IG1hdGNoLm5leHRbaV07XG4gICAgICAgICAgICAgICAgaWYgKCEodHlwZS5pc1RleHQgfHwgdHlwZS5oYXNSZXF1aXJlZEF0dHJzKCkpICYmIHNlZW4uaW5kZXhPZihuZXh0KSA9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBzZWVuLnB1c2gobmV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IHNlYXJjaChuZXh0LCB0eXBlcy5jb25jYXQodHlwZSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlYXJjaCh0aGlzLCBbXSk7XG4gICAgfVxuICAgIC8qKlxuICAgIEZpbmQgYSBzZXQgb2Ygd3JhcHBpbmcgbm9kZSB0eXBlcyB0aGF0IHdvdWxkIGFsbG93IGEgbm9kZSBvZiB0aGVcbiAgICBnaXZlbiB0eXBlIHRvIGFwcGVhciBhdCB0aGlzIHBvc2l0aW9uLiBUaGUgcmVzdWx0IG1heSBiZSBlbXB0eVxuICAgICh3aGVuIGl0IGZpdHMgZGlyZWN0bHkpIGFuZCB3aWxsIGJlIG51bGwgd2hlbiBubyBzdWNoIHdyYXBwaW5nXG4gICAgZXhpc3RzLlxuICAgICovXG4gICAgZmluZFdyYXBwaW5nKHRhcmdldCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMud3JhcENhY2hlLmxlbmd0aDsgaSArPSAyKVxuICAgICAgICAgICAgaWYgKHRoaXMud3JhcENhY2hlW2ldID09IHRhcmdldClcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cmFwQ2FjaGVbaSArIDFdO1xuICAgICAgICBsZXQgY29tcHV0ZWQgPSB0aGlzLmNvbXB1dGVXcmFwcGluZyh0YXJnZXQpO1xuICAgICAgICB0aGlzLndyYXBDYWNoZS5wdXNoKHRhcmdldCwgY29tcHV0ZWQpO1xuICAgICAgICByZXR1cm4gY29tcHV0ZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgY29tcHV0ZVdyYXBwaW5nKHRhcmdldCkge1xuICAgICAgICBsZXQgc2VlbiA9IE9iamVjdC5jcmVhdGUobnVsbCksIGFjdGl2ZSA9IFt7IG1hdGNoOiB0aGlzLCB0eXBlOiBudWxsLCB2aWE6IG51bGwgfV07XG4gICAgICAgIHdoaWxlIChhY3RpdmUubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IGFjdGl2ZS5zaGlmdCgpLCBtYXRjaCA9IGN1cnJlbnQubWF0Y2g7XG4gICAgICAgICAgICBpZiAobWF0Y2gubWF0Y2hUeXBlKHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgb2JqID0gY3VycmVudDsgb2JqLnR5cGU7IG9iaiA9IG9iai52aWEpXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG9iai50eXBlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2gubmV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCB7IHR5cGUsIG5leHQgfSA9IG1hdGNoLm5leHRbaV07XG4gICAgICAgICAgICAgICAgaWYgKCF0eXBlLmlzTGVhZiAmJiAhdHlwZS5oYXNSZXF1aXJlZEF0dHJzKCkgJiYgISh0eXBlLm5hbWUgaW4gc2VlbikgJiYgKCFjdXJyZW50LnR5cGUgfHwgbmV4dC52YWxpZEVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlLnB1c2goeyBtYXRjaDogdHlwZS5jb250ZW50TWF0Y2gsIHR5cGUsIHZpYTogY3VycmVudCB9KTtcbiAgICAgICAgICAgICAgICAgICAgc2Vlblt0eXBlLm5hbWVdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSBudW1iZXIgb2Ygb3V0Z29pbmcgZWRnZXMgdGhpcyBub2RlIGhhcyBpbiB0aGUgZmluaXRlXG4gICAgYXV0b21hdG9uIHRoYXQgZGVzY3JpYmVzIHRoZSBjb250ZW50IGV4cHJlc3Npb24uXG4gICAgKi9cbiAgICBnZXQgZWRnZUNvdW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZXh0Lmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgR2V0IHRoZSBfbl/igIt0aCBvdXRnb2luZyBlZGdlIGZyb20gdGhpcyBub2RlIGluIHRoZSBmaW5pdGVcbiAgICBhdXRvbWF0b24gdGhhdCBkZXNjcmliZXMgdGhlIGNvbnRlbnQgZXhwcmVzc2lvbi5cbiAgICAqL1xuICAgIGVkZ2Uobikge1xuICAgICAgICBpZiAobiA+PSB0aGlzLm5leHQubGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFRoZXJlJ3Mgbm8gJHtufXRoIGVkZ2UgaW4gdGhpcyBjb250ZW50IG1hdGNoYCk7XG4gICAgICAgIHJldHVybiB0aGlzLm5leHRbbl07XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIGxldCBzZWVuID0gW107XG4gICAgICAgIGZ1bmN0aW9uIHNjYW4obSkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKG0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtLm5leHQubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgaWYgKHNlZW4uaW5kZXhPZihtLm5leHRbaV0ubmV4dCkgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIHNjYW4obS5uZXh0W2ldLm5leHQpO1xuICAgICAgICB9XG4gICAgICAgIHNjYW4odGhpcyk7XG4gICAgICAgIHJldHVybiBzZWVuLm1hcCgobSwgaSkgPT4ge1xuICAgICAgICAgICAgbGV0IG91dCA9IGkgKyAobS52YWxpZEVuZCA/IFwiKlwiIDogXCIgXCIpICsgXCIgXCI7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG0ubmV4dC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICBvdXQgKz0gKGkgPyBcIiwgXCIgOiBcIlwiKSArIG0ubmV4dFtpXS50eXBlLm5hbWUgKyBcIi0+XCIgKyBzZWVuLmluZGV4T2YobS5uZXh0W2ldLm5leHQpO1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfSkuam9pbihcIlxcblwiKTtcbiAgICB9XG59XG4vKipcbkBpbnRlcm5hbFxuKi9cbkNvbnRlbnRNYXRjaC5lbXB0eSA9IG5ldyBDb250ZW50TWF0Y2godHJ1ZSk7XG5jbGFzcyBUb2tlblN0cmVhbSB7XG4gICAgY29uc3RydWN0b3Ioc3RyaW5nLCBub2RlVHlwZXMpIHtcbiAgICAgICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgICAgIHRoaXMubm9kZVR5cGVzID0gbm9kZVR5cGVzO1xuICAgICAgICB0aGlzLmlubGluZSA9IG51bGw7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy50b2tlbnMgPSBzdHJpbmcuc3BsaXQoL1xccyooPz1cXGJ8XFxXfCQpLyk7XG4gICAgICAgIGlmICh0aGlzLnRva2Vuc1t0aGlzLnRva2Vucy5sZW5ndGggLSAxXSA9PSBcIlwiKVxuICAgICAgICAgICAgdGhpcy50b2tlbnMucG9wKCk7XG4gICAgICAgIGlmICh0aGlzLnRva2Vuc1swXSA9PSBcIlwiKVxuICAgICAgICAgICAgdGhpcy50b2tlbnMuc2hpZnQoKTtcbiAgICB9XG4gICAgZ2V0IG5leHQoKSB7IHJldHVybiB0aGlzLnRva2Vuc1t0aGlzLnBvc107IH1cbiAgICBlYXQodG9rKSB7IHJldHVybiB0aGlzLm5leHQgPT0gdG9rICYmICh0aGlzLnBvcysrIHx8IHRydWUpOyB9XG4gICAgZXJyKHN0cikgeyB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3RyICsgXCIgKGluIGNvbnRlbnQgZXhwcmVzc2lvbiAnXCIgKyB0aGlzLnN0cmluZyArIFwiJylcIik7IH1cbn1cbmZ1bmN0aW9uIHBhcnNlRXhwcihzdHJlYW0pIHtcbiAgICBsZXQgZXhwcnMgPSBbXTtcbiAgICBkbyB7XG4gICAgICAgIGV4cHJzLnB1c2gocGFyc2VFeHByU2VxKHN0cmVhbSkpO1xuICAgIH0gd2hpbGUgKHN0cmVhbS5lYXQoXCJ8XCIpKTtcbiAgICByZXR1cm4gZXhwcnMubGVuZ3RoID09IDEgPyBleHByc1swXSA6IHsgdHlwZTogXCJjaG9pY2VcIiwgZXhwcnMgfTtcbn1cbmZ1bmN0aW9uIHBhcnNlRXhwclNlcShzdHJlYW0pIHtcbiAgICBsZXQgZXhwcnMgPSBbXTtcbiAgICBkbyB7XG4gICAgICAgIGV4cHJzLnB1c2gocGFyc2VFeHByU3Vic2NyaXB0KHN0cmVhbSkpO1xuICAgIH0gd2hpbGUgKHN0cmVhbS5uZXh0ICYmIHN0cmVhbS5uZXh0ICE9IFwiKVwiICYmIHN0cmVhbS5uZXh0ICE9IFwifFwiKTtcbiAgICByZXR1cm4gZXhwcnMubGVuZ3RoID09IDEgPyBleHByc1swXSA6IHsgdHlwZTogXCJzZXFcIiwgZXhwcnMgfTtcbn1cbmZ1bmN0aW9uIHBhcnNlRXhwclN1YnNjcmlwdChzdHJlYW0pIHtcbiAgICBsZXQgZXhwciA9IHBhcnNlRXhwckF0b20oc3RyZWFtKTtcbiAgICBmb3IgKDs7KSB7XG4gICAgICAgIGlmIChzdHJlYW0uZWF0KFwiK1wiKSlcbiAgICAgICAgICAgIGV4cHIgPSB7IHR5cGU6IFwicGx1c1wiLCBleHByIH07XG4gICAgICAgIGVsc2UgaWYgKHN0cmVhbS5lYXQoXCIqXCIpKVxuICAgICAgICAgICAgZXhwciA9IHsgdHlwZTogXCJzdGFyXCIsIGV4cHIgfTtcbiAgICAgICAgZWxzZSBpZiAoc3RyZWFtLmVhdChcIj9cIikpXG4gICAgICAgICAgICBleHByID0geyB0eXBlOiBcIm9wdFwiLCBleHByIH07XG4gICAgICAgIGVsc2UgaWYgKHN0cmVhbS5lYXQoXCJ7XCIpKVxuICAgICAgICAgICAgZXhwciA9IHBhcnNlRXhwclJhbmdlKHN0cmVhbSwgZXhwcik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gZXhwcjtcbn1cbmZ1bmN0aW9uIHBhcnNlTnVtKHN0cmVhbSkge1xuICAgIGlmICgvXFxELy50ZXN0KHN0cmVhbS5uZXh0KSlcbiAgICAgICAgc3RyZWFtLmVycihcIkV4cGVjdGVkIG51bWJlciwgZ290ICdcIiArIHN0cmVhbS5uZXh0ICsgXCInXCIpO1xuICAgIGxldCByZXN1bHQgPSBOdW1iZXIoc3RyZWFtLm5leHQpO1xuICAgIHN0cmVhbS5wb3MrKztcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gcGFyc2VFeHByUmFuZ2Uoc3RyZWFtLCBleHByKSB7XG4gICAgbGV0IG1pbiA9IHBhcnNlTnVtKHN0cmVhbSksIG1heCA9IG1pbjtcbiAgICBpZiAoc3RyZWFtLmVhdChcIixcIikpIHtcbiAgICAgICAgaWYgKHN0cmVhbS5uZXh0ICE9IFwifVwiKVxuICAgICAgICAgICAgbWF4ID0gcGFyc2VOdW0oc3RyZWFtKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF4ID0gLTE7XG4gICAgfVxuICAgIGlmICghc3RyZWFtLmVhdChcIn1cIikpXG4gICAgICAgIHN0cmVhbS5lcnIoXCJVbmNsb3NlZCBicmFjZWQgcmFuZ2VcIik7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJyYW5nZVwiLCBtaW4sIG1heCwgZXhwciB9O1xufVxuZnVuY3Rpb24gcmVzb2x2ZU5hbWUoc3RyZWFtLCBuYW1lKSB7XG4gICAgbGV0IHR5cGVzID0gc3RyZWFtLm5vZGVUeXBlcywgdHlwZSA9IHR5cGVzW25hbWVdO1xuICAgIGlmICh0eXBlKVxuICAgICAgICByZXR1cm4gW3R5cGVdO1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGxldCB0eXBlTmFtZSBpbiB0eXBlcykge1xuICAgICAgICBsZXQgdHlwZSA9IHR5cGVzW3R5cGVOYW1lXTtcbiAgICAgICAgaWYgKHR5cGUuaXNJbkdyb3VwKG5hbWUpKVxuICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZSk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQubGVuZ3RoID09IDApXG4gICAgICAgIHN0cmVhbS5lcnIoXCJObyBub2RlIHR5cGUgb3IgZ3JvdXAgJ1wiICsgbmFtZSArIFwiJyBmb3VuZFwiKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gcGFyc2VFeHByQXRvbShzdHJlYW0pIHtcbiAgICBpZiAoc3RyZWFtLmVhdChcIihcIikpIHtcbiAgICAgICAgbGV0IGV4cHIgPSBwYXJzZUV4cHIoc3RyZWFtKTtcbiAgICAgICAgaWYgKCFzdHJlYW0uZWF0KFwiKVwiKSlcbiAgICAgICAgICAgIHN0cmVhbS5lcnIoXCJNaXNzaW5nIGNsb3NpbmcgcGFyZW5cIik7XG4gICAgICAgIHJldHVybiBleHByO1xuICAgIH1cbiAgICBlbHNlIGlmICghL1xcVy8udGVzdChzdHJlYW0ubmV4dCkpIHtcbiAgICAgICAgbGV0IGV4cHJzID0gcmVzb2x2ZU5hbWUoc3RyZWFtLCBzdHJlYW0ubmV4dCkubWFwKHR5cGUgPT4ge1xuICAgICAgICAgICAgaWYgKHN0cmVhbS5pbmxpbmUgPT0gbnVsbClcbiAgICAgICAgICAgICAgICBzdHJlYW0uaW5saW5lID0gdHlwZS5pc0lubGluZTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHN0cmVhbS5pbmxpbmUgIT0gdHlwZS5pc0lubGluZSlcbiAgICAgICAgICAgICAgICBzdHJlYW0uZXJyKFwiTWl4aW5nIGlubGluZSBhbmQgYmxvY2sgY29udGVudFwiKTtcbiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwibmFtZVwiLCB2YWx1ZTogdHlwZSB9O1xuICAgICAgICB9KTtcbiAgICAgICAgc3RyZWFtLnBvcysrO1xuICAgICAgICByZXR1cm4gZXhwcnMubGVuZ3RoID09IDEgPyBleHByc1swXSA6IHsgdHlwZTogXCJjaG9pY2VcIiwgZXhwcnMgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0cmVhbS5lcnIoXCJVbmV4cGVjdGVkIHRva2VuICdcIiArIHN0cmVhbS5uZXh0ICsgXCInXCIpO1xuICAgIH1cbn1cbi8vIENvbnN0cnVjdCBhbiBORkEgZnJvbSBhbiBleHByZXNzaW9uIGFzIHJldHVybmVkIGJ5IHRoZSBwYXJzZXIuIFRoZVxuLy8gTkZBIGlzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIHN0YXRlcywgd2hpY2ggYXJlIHRoZW1zZWx2ZXNcbi8vIGFycmF5cyBvZiBlZGdlcywgd2hpY2ggYXJlIGB7dGVybSwgdG99YCBvYmplY3RzLiBUaGUgZmlyc3Qgc3RhdGUgaXNcbi8vIHRoZSBlbnRyeSBzdGF0ZSBhbmQgdGhlIGxhc3Qgbm9kZSBpcyB0aGUgc3VjY2VzcyBzdGF0ZS5cbi8vXG4vLyBOb3RlIHRoYXQgdW5saWtlIHR5cGljYWwgTkZBcywgdGhlIGVkZ2Ugb3JkZXJpbmcgaW4gdGhpcyBvbmUgaXNcbi8vIHNpZ25pZmljYW50LCBpbiB0aGF0IGl0IGlzIHVzZWQgdG8gY29udHJ1Y3QgZmlsbGVyIGNvbnRlbnQgd2hlblxuLy8gbmVjZXNzYXJ5LlxuZnVuY3Rpb24gbmZhKGV4cHIpIHtcbiAgICBsZXQgbmZhID0gW1tdXTtcbiAgICBjb25uZWN0KGNvbXBpbGUoZXhwciwgMCksIG5vZGUoKSk7XG4gICAgcmV0dXJuIG5mYTtcbiAgICBmdW5jdGlvbiBub2RlKCkgeyByZXR1cm4gbmZhLnB1c2goW10pIC0gMTsgfVxuICAgIGZ1bmN0aW9uIGVkZ2UoZnJvbSwgdG8sIHRlcm0pIHtcbiAgICAgICAgbGV0IGVkZ2UgPSB7IHRlcm0sIHRvIH07XG4gICAgICAgIG5mYVtmcm9tXS5wdXNoKGVkZ2UpO1xuICAgICAgICByZXR1cm4gZWRnZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY29ubmVjdChlZGdlcywgdG8pIHtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChlZGdlID0+IGVkZ2UudG8gPSB0byk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvbXBpbGUoZXhwciwgZnJvbSkge1xuICAgICAgICBpZiAoZXhwci50eXBlID09IFwiY2hvaWNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBleHByLmV4cHJzLnJlZHVjZSgob3V0LCBleHByKSA9PiBvdXQuY29uY2F0KGNvbXBpbGUoZXhwciwgZnJvbSkpLCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXhwci50eXBlID09IFwic2VxXCIpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSBjb21waWxlKGV4cHIuZXhwcnNbaV0sIGZyb20pO1xuICAgICAgICAgICAgICAgIGlmIChpID09IGV4cHIuZXhwcnMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICAgICAgY29ubmVjdChuZXh0LCBmcm9tID0gbm9kZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHByLnR5cGUgPT0gXCJzdGFyXCIpIHtcbiAgICAgICAgICAgIGxldCBsb29wID0gbm9kZSgpO1xuICAgICAgICAgICAgZWRnZShmcm9tLCBsb29wKTtcbiAgICAgICAgICAgIGNvbm5lY3QoY29tcGlsZShleHByLmV4cHIsIGxvb3ApLCBsb29wKTtcbiAgICAgICAgICAgIHJldHVybiBbZWRnZShsb29wKV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXhwci50eXBlID09IFwicGx1c1wiKSB7XG4gICAgICAgICAgICBsZXQgbG9vcCA9IG5vZGUoKTtcbiAgICAgICAgICAgIGNvbm5lY3QoY29tcGlsZShleHByLmV4cHIsIGZyb20pLCBsb29wKTtcbiAgICAgICAgICAgIGNvbm5lY3QoY29tcGlsZShleHByLmV4cHIsIGxvb3ApLCBsb29wKTtcbiAgICAgICAgICAgIHJldHVybiBbZWRnZShsb29wKV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXhwci50eXBlID09IFwib3B0XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBbZWRnZShmcm9tKV0uY29uY2F0KGNvbXBpbGUoZXhwci5leHByLCBmcm9tKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXhwci50eXBlID09IFwicmFuZ2VcIikge1xuICAgICAgICAgICAgbGV0IGN1ciA9IGZyb207XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4cHIubWluOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IG5vZGUoKTtcbiAgICAgICAgICAgICAgICBjb25uZWN0KGNvbXBpbGUoZXhwci5leHByLCBjdXIpLCBuZXh0KTtcbiAgICAgICAgICAgICAgICBjdXIgPSBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4cHIubWF4ID09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29ubmVjdChjb21waWxlKGV4cHIuZXhwciwgY3VyKSwgY3VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBleHByLm1pbjsgaSA8IGV4cHIubWF4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5leHQgPSBub2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGVkZ2UoY3VyLCBuZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdChjb21waWxlKGV4cHIuZXhwciwgY3VyKSwgbmV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGN1ciA9IG5leHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtlZGdlKGN1cildO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4cHIudHlwZSA9PSBcIm5hbWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIFtlZGdlKGZyb20sIHVuZGVmaW5lZCwgZXhwci52YWx1ZSldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBleHByIHR5cGVcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBjbXAoYSwgYikgeyByZXR1cm4gYiAtIGE7IH1cbi8vIEdldCB0aGUgc2V0IG9mIG5vZGVzIHJlYWNoYWJsZSBieSBudWxsIGVkZ2VzIGZyb20gYG5vZGVgLiBPbWl0XG4vLyBub2RlcyB3aXRoIG9ubHkgYSBzaW5nbGUgbnVsbC1vdXQtZWRnZSwgc2luY2UgdGhleSBtYXkgbGVhZCB0b1xuLy8gbmVlZGxlc3MgZHVwbGljYXRlZCBub2Rlcy5cbmZ1bmN0aW9uIG51bGxGcm9tKG5mYSwgbm9kZSkge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBzY2FuKG5vZGUpO1xuICAgIHJldHVybiByZXN1bHQuc29ydChjbXApO1xuICAgIGZ1bmN0aW9uIHNjYW4obm9kZSkge1xuICAgICAgICBsZXQgZWRnZXMgPSBuZmFbbm9kZV07XG4gICAgICAgIGlmIChlZGdlcy5sZW5ndGggPT0gMSAmJiAhZWRnZXNbMF0udGVybSlcbiAgICAgICAgICAgIHJldHVybiBzY2FuKGVkZ2VzWzBdLnRvKTtcbiAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB7IHRlcm0sIHRvIH0gPSBlZGdlc1tpXTtcbiAgICAgICAgICAgIGlmICghdGVybSAmJiByZXN1bHQuaW5kZXhPZih0bykgPT0gLTEpXG4gICAgICAgICAgICAgICAgc2Nhbih0byk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBDb21waWxlcyBhbiBORkEgYXMgcHJvZHVjZWQgYnkgYG5mYWAgaW50byBhIERGQSwgbW9kZWxlZCBhcyBhIHNldFxuLy8gb2Ygc3RhdGUgb2JqZWN0cyAoYENvbnRlbnRNYXRjaGAgaW5zdGFuY2VzKSB3aXRoIHRyYW5zaXRpb25zXG4vLyBiZXR3ZWVuIHRoZW0uXG5mdW5jdGlvbiBkZmEobmZhKSB7XG4gICAgbGV0IGxhYmVsZWQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHJldHVybiBleHBsb3JlKG51bGxGcm9tKG5mYSwgMCkpO1xuICAgIGZ1bmN0aW9uIGV4cGxvcmUoc3RhdGVzKSB7XG4gICAgICAgIGxldCBvdXQgPSBbXTtcbiAgICAgICAgc3RhdGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBuZmFbbm9kZV0uZm9yRWFjaCgoeyB0ZXJtLCB0byB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0ZXJtKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgbGV0IHNldDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgaWYgKG91dFtpXVswXSA9PSB0ZXJtKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0ID0gb3V0W2ldWzFdO1xuICAgICAgICAgICAgICAgIG51bGxGcm9tKG5mYSwgdG8pLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goW3Rlcm0sIHNldCA9IFtdXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXQuaW5kZXhPZihub2RlKSA9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgc3RhdGUgPSBsYWJlbGVkW3N0YXRlcy5qb2luKFwiLFwiKV0gPSBuZXcgQ29udGVudE1hdGNoKHN0YXRlcy5pbmRleE9mKG5mYS5sZW5ndGggLSAxKSA+IC0xKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBzdGF0ZXMgPSBvdXRbaV1bMV0uc29ydChjbXApO1xuICAgICAgICAgICAgc3RhdGUubmV4dC5wdXNoKHsgdHlwZTogb3V0W2ldWzBdLCBuZXh0OiBsYWJlbGVkW3N0YXRlcy5qb2luKFwiLFwiKV0gfHwgZXhwbG9yZShzdGF0ZXMpIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG59XG5mdW5jdGlvbiBjaGVja0ZvckRlYWRFbmRzKG1hdGNoLCBzdHJlYW0pIHtcbiAgICBmb3IgKGxldCBpID0gMCwgd29yayA9IFttYXRjaF07IGkgPCB3b3JrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBzdGF0ZSA9IHdvcmtbaV0sIGRlYWQgPSAhc3RhdGUudmFsaWRFbmQsIG5vZGVzID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc3RhdGUubmV4dC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSwgbmV4dCB9ID0gc3RhdGUubmV4dFtqXTtcbiAgICAgICAgICAgIG5vZGVzLnB1c2godHlwZS5uYW1lKTtcbiAgICAgICAgICAgIGlmIChkZWFkICYmICEodHlwZS5pc1RleHQgfHwgdHlwZS5oYXNSZXF1aXJlZEF0dHJzKCkpKVxuICAgICAgICAgICAgICAgIGRlYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh3b3JrLmluZGV4T2YobmV4dCkgPT0gLTEpXG4gICAgICAgICAgICAgICAgd29yay5wdXNoKG5leHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWFkKVxuICAgICAgICAgICAgc3RyZWFtLmVycihcIk9ubHkgbm9uLWdlbmVyYXRhYmxlIG5vZGVzIChcIiArIG5vZGVzLmpvaW4oXCIsIFwiKSArIFwiKSBpbiBhIHJlcXVpcmVkIHBvc2l0aW9uIChzZWUgaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9ndWlkZS8jZ2VuZXJhdGFibGUpXCIpO1xuICAgIH1cbn1cblxuLy8gRm9yIG5vZGUgdHlwZXMgd2hlcmUgYWxsIGF0dHJzIGhhdmUgYSBkZWZhdWx0IHZhbHVlIChvciB3aGljaCBkb24ndFxuLy8gaGF2ZSBhbnkgYXR0cmlidXRlcyksIGJ1aWxkIHVwIGEgc2luZ2xlIHJldXNhYmxlIGRlZmF1bHQgYXR0cmlidXRlXG4vLyBvYmplY3QsIGFuZCB1c2UgaXQgZm9yIGFsbCBub2RlcyB0aGF0IGRvbid0IHNwZWNpZnkgc3BlY2lmaWNcbi8vIGF0dHJpYnV0ZXMuXG5mdW5jdGlvbiBkZWZhdWx0QXR0cnMoYXR0cnMpIHtcbiAgICBsZXQgZGVmYXVsdHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGZvciAobGV0IGF0dHJOYW1lIGluIGF0dHJzKSB7XG4gICAgICAgIGxldCBhdHRyID0gYXR0cnNbYXR0ck5hbWVdO1xuICAgICAgICBpZiAoIWF0dHIuaGFzRGVmYXVsdClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBkZWZhdWx0c1thdHRyTmFtZV0gPSBhdHRyLmRlZmF1bHQ7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0cztcbn1cbmZ1bmN0aW9uIGNvbXB1dGVBdHRycyhhdHRycywgdmFsdWUpIHtcbiAgICBsZXQgYnVpbHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGZvciAobGV0IG5hbWUgaW4gYXR0cnMpIHtcbiAgICAgICAgbGV0IGdpdmVuID0gdmFsdWUgJiYgdmFsdWVbbmFtZV07XG4gICAgICAgIGlmIChnaXZlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgYXR0ciA9IGF0dHJzW25hbWVdO1xuICAgICAgICAgICAgaWYgKGF0dHIuaGFzRGVmYXVsdClcbiAgICAgICAgICAgICAgICBnaXZlbiA9IGF0dHIuZGVmYXVsdDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIk5vIHZhbHVlIHN1cHBsaWVkIGZvciBhdHRyaWJ1dGUgXCIgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBidWlsdFtuYW1lXSA9IGdpdmVuO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbHQ7XG59XG5mdW5jdGlvbiBjaGVja0F0dHJzKGF0dHJzLCB2YWx1ZXMsIHR5cGUsIG5hbWUpIHtcbiAgICBmb3IgKGxldCBuYW1lIGluIHZhbHVlcylcbiAgICAgICAgaWYgKCEobmFtZSBpbiBhdHRycykpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVW5zdXBwb3J0ZWQgYXR0cmlidXRlICR7bmFtZX0gZm9yICR7dHlwZX0gb2YgdHlwZSAke25hbWV9YCk7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBhdHRycykge1xuICAgICAgICBsZXQgYXR0ciA9IGF0dHJzW25hbWVdO1xuICAgICAgICBpZiAoYXR0ci52YWxpZGF0ZSlcbiAgICAgICAgICAgIGF0dHIudmFsaWRhdGUodmFsdWVzW25hbWVdKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbml0QXR0cnModHlwZU5hbWUsIGF0dHJzKSB7XG4gICAgbGV0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgaWYgKGF0dHJzKVxuICAgICAgICBmb3IgKGxldCBuYW1lIGluIGF0dHJzKVxuICAgICAgICAgICAgcmVzdWx0W25hbWVdID0gbmV3IEF0dHJpYnV0ZSh0eXBlTmFtZSwgbmFtZSwgYXR0cnNbbmFtZV0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbk5vZGUgdHlwZXMgYXJlIG9iamVjdHMgYWxsb2NhdGVkIG9uY2UgcGVyIGBTY2hlbWFgIGFuZCB1c2VkIHRvXG5bdGFnXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuTm9kZS50eXBlKSBgTm9kZWAgaW5zdGFuY2VzLiBUaGV5IGNvbnRhaW4gaW5mb3JtYXRpb25cbmFib3V0IHRoZSBub2RlIHR5cGUsIHN1Y2ggYXMgaXRzIG5hbWUgYW5kIHdoYXQga2luZCBvZiBub2RlIGl0XG5yZXByZXNlbnRzLlxuKi9cbmNsYXNzIE5vZGVUeXBlIHtcbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSBuYW1lIHRoZSBub2RlIHR5cGUgaGFzIGluIHRoaXMgc2NoZW1hLlxuICAgICovXG4gICAgbmFtZSwgXG4gICAgLyoqXG4gICAgQSBsaW5rIGJhY2sgdG8gdGhlIGBTY2hlbWFgIHRoZSBub2RlIHR5cGUgYmVsb25ncyB0by5cbiAgICAqL1xuICAgIHNjaGVtYSwgXG4gICAgLyoqXG4gICAgVGhlIHNwZWMgdGhhdCB0aGlzIHR5cGUgaXMgYmFzZWQgb25cbiAgICAqL1xuICAgIHNwZWMpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgIHRoaXMuc3BlYyA9IHNwZWM7XG4gICAgICAgIC8qKlxuICAgICAgICBUaGUgc2V0IG9mIG1hcmtzIGFsbG93ZWQgaW4gdGhpcyBub2RlLiBgbnVsbGAgbWVhbnMgYWxsIG1hcmtzXG4gICAgICAgIGFyZSBhbGxvd2VkLlxuICAgICAgICAqL1xuICAgICAgICB0aGlzLm1hcmtTZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmdyb3VwcyA9IHNwZWMuZ3JvdXAgPyBzcGVjLmdyb3VwLnNwbGl0KFwiIFwiKSA6IFtdO1xuICAgICAgICB0aGlzLmF0dHJzID0gaW5pdEF0dHJzKG5hbWUsIHNwZWMuYXR0cnMpO1xuICAgICAgICB0aGlzLmRlZmF1bHRBdHRycyA9IGRlZmF1bHRBdHRycyh0aGlzLmF0dHJzKTtcbiAgICAgICAgdGhpcy5jb250ZW50TWF0Y2ggPSBudWxsO1xuICAgICAgICB0aGlzLmlubGluZUNvbnRlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLmlzQmxvY2sgPSAhKHNwZWMuaW5saW5lIHx8IG5hbWUgPT0gXCJ0ZXh0XCIpO1xuICAgICAgICB0aGlzLmlzVGV4dCA9IG5hbWUgPT0gXCJ0ZXh0XCI7XG4gICAgfVxuICAgIC8qKlxuICAgIFRydWUgaWYgdGhpcyBpcyBhbiBpbmxpbmUgdHlwZS5cbiAgICAqL1xuICAgIGdldCBpc0lubGluZSgpIHsgcmV0dXJuICF0aGlzLmlzQmxvY2s7IH1cbiAgICAvKipcbiAgICBUcnVlIGlmIHRoaXMgaXMgYSB0ZXh0YmxvY2sgdHlwZSwgYSBibG9jayB0aGF0IGNvbnRhaW5zIGlubGluZVxuICAgIGNvbnRlbnQuXG4gICAgKi9cbiAgICBnZXQgaXNUZXh0YmxvY2soKSB7IHJldHVybiB0aGlzLmlzQmxvY2sgJiYgdGhpcy5pbmxpbmVDb250ZW50OyB9XG4gICAgLyoqXG4gICAgVHJ1ZSBmb3Igbm9kZSB0eXBlcyB0aGF0IGFsbG93IG5vIGNvbnRlbnQuXG4gICAgKi9cbiAgICBnZXQgaXNMZWFmKCkgeyByZXR1cm4gdGhpcy5jb250ZW50TWF0Y2ggPT0gQ29udGVudE1hdGNoLmVtcHR5OyB9XG4gICAgLyoqXG4gICAgVHJ1ZSB3aGVuIHRoaXMgbm9kZSBpcyBhbiBhdG9tLCBpLmUuIHdoZW4gaXQgZG9lcyBub3QgaGF2ZVxuICAgIGRpcmVjdGx5IGVkaXRhYmxlIGNvbnRlbnQuXG4gICAgKi9cbiAgICBnZXQgaXNBdG9tKCkgeyByZXR1cm4gdGhpcy5pc0xlYWYgfHwgISF0aGlzLnNwZWMuYXRvbTsgfVxuICAgIC8qKlxuICAgIFJldHVybiB0cnVlIHdoZW4gdGhpcyBub2RlIHR5cGUgaXMgcGFydCBvZiB0aGUgZ2l2ZW5cbiAgICBbZ3JvdXBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlU3BlYy5ncm91cCkuXG4gICAgKi9cbiAgICBpc0luR3JvdXAoZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBzLmluZGV4T2YoZ3JvdXApID4gLTE7XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSBub2RlIHR5cGUncyBbd2hpdGVzcGFjZV0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGVTcGVjLndoaXRlc3BhY2UpIG9wdGlvbi5cbiAgICAqL1xuICAgIGdldCB3aGl0ZXNwYWNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zcGVjLndoaXRlc3BhY2UgfHwgKHRoaXMuc3BlYy5jb2RlID8gXCJwcmVcIiA6IFwibm9ybWFsXCIpO1xuICAgIH1cbiAgICAvKipcbiAgICBUZWxscyB5b3Ugd2hldGhlciB0aGlzIG5vZGUgdHlwZSBoYXMgYW55IHJlcXVpcmVkIGF0dHJpYnV0ZXMuXG4gICAgKi9cbiAgICBoYXNSZXF1aXJlZEF0dHJzKCkge1xuICAgICAgICBmb3IgKGxldCBuIGluIHRoaXMuYXR0cnMpXG4gICAgICAgICAgICBpZiAodGhpcy5hdHRyc1tuXS5pc1JlcXVpcmVkKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgbm9kZSBhbGxvd3Mgc29tZSBvZiB0aGUgc2FtZSBjb250ZW50IGFzXG4gICAgdGhlIGdpdmVuIG5vZGUgdHlwZS5cbiAgICAqL1xuICAgIGNvbXBhdGlibGVDb250ZW50KG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzID09IG90aGVyIHx8IHRoaXMuY29udGVudE1hdGNoLmNvbXBhdGlibGUob3RoZXIuY29udGVudE1hdGNoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjb21wdXRlQXR0cnMoYXR0cnMpIHtcbiAgICAgICAgaWYgKCFhdHRycyAmJiB0aGlzLmRlZmF1bHRBdHRycylcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRBdHRycztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVBdHRycyh0aGlzLmF0dHJzLCBhdHRycyk7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIGBOb2RlYCBvZiB0aGlzIHR5cGUuIFRoZSBnaXZlbiBhdHRyaWJ1dGVzIGFyZVxuICAgIGNoZWNrZWQgYW5kIGRlZmF1bHRlZCAoeW91IGNhbiBwYXNzIGBudWxsYCB0byB1c2UgdGhlIHR5cGUnc1xuICAgIGRlZmF1bHRzIGVudGlyZWx5LCBpZiBubyByZXF1aXJlZCBhdHRyaWJ1dGVzIGV4aXN0KS4gYGNvbnRlbnRgXG4gICAgbWF5IGJlIGEgYEZyYWdtZW50YCwgYSBub2RlLCBhbiBhcnJheSBvZiBub2Rlcywgb3JcbiAgICBgbnVsbGAuIFNpbWlsYXJseSBgbWFya3NgIG1heSBiZSBgbnVsbGAgdG8gZGVmYXVsdCB0byB0aGUgZW1wdHlcbiAgICBzZXQgb2YgbWFya3MuXG4gICAgKi9cbiAgICBjcmVhdGUoYXR0cnMgPSBudWxsLCBjb250ZW50LCBtYXJrcykge1xuICAgICAgICBpZiAodGhpcy5pc1RleHQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb2RlVHlwZS5jcmVhdGUgY2FuJ3QgY29uc3RydWN0IHRleHQgbm9kZXNcIik7XG4gICAgICAgIHJldHVybiBuZXcgTm9kZSh0aGlzLCB0aGlzLmNvbXB1dGVBdHRycyhhdHRycyksIEZyYWdtZW50LmZyb20oY29udGVudCksIE1hcmsuc2V0RnJvbShtYXJrcykpO1xuICAgIH1cbiAgICAvKipcbiAgICBMaWtlIFtgY3JlYXRlYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGVUeXBlLmNyZWF0ZSksIGJ1dCBjaGVjayB0aGUgZ2l2ZW4gY29udGVudFxuICAgIGFnYWluc3QgdGhlIG5vZGUgdHlwZSdzIGNvbnRlbnQgcmVzdHJpY3Rpb25zLCBhbmQgdGhyb3cgYW4gZXJyb3JcbiAgICBpZiBpdCBkb2Vzbid0IG1hdGNoLlxuICAgICovXG4gICAgY3JlYXRlQ2hlY2tlZChhdHRycyA9IG51bGwsIGNvbnRlbnQsIG1hcmtzKSB7XG4gICAgICAgIGNvbnRlbnQgPSBGcmFnbWVudC5mcm9tKGNvbnRlbnQpO1xuICAgICAgICB0aGlzLmNoZWNrQ29udGVudChjb250ZW50KTtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlKHRoaXMsIHRoaXMuY29tcHV0ZUF0dHJzKGF0dHJzKSwgY29udGVudCwgTWFyay5zZXRGcm9tKG1hcmtzKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIExpa2UgW2BjcmVhdGVgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuTm9kZVR5cGUuY3JlYXRlKSwgYnV0IHNlZSBpZiBpdCBpc1xuICAgIG5lY2Vzc2FyeSB0byBhZGQgbm9kZXMgdG8gdGhlIHN0YXJ0IG9yIGVuZCBvZiB0aGUgZ2l2ZW4gZnJhZ21lbnRcbiAgICB0byBtYWtlIGl0IGZpdCB0aGUgbm9kZS4gSWYgbm8gZml0dGluZyB3cmFwcGluZyBjYW4gYmUgZm91bmQsXG4gICAgcmV0dXJuIG51bGwuIE5vdGUgdGhhdCwgZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmVxdWlyZWQgbm9kZXMgY2FuXG4gICAgYWx3YXlzIGJlIGNyZWF0ZWQsIHRoaXMgd2lsbCBhbHdheXMgc3VjY2VlZCBpZiB5b3UgcGFzcyBudWxsIG9yXG4gICAgYEZyYWdtZW50LmVtcHR5YCBhcyBjb250ZW50LlxuICAgICovXG4gICAgY3JlYXRlQW5kRmlsbChhdHRycyA9IG51bGwsIGNvbnRlbnQsIG1hcmtzKSB7XG4gICAgICAgIGF0dHJzID0gdGhpcy5jb21wdXRlQXR0cnMoYXR0cnMpO1xuICAgICAgICBjb250ZW50ID0gRnJhZ21lbnQuZnJvbShjb250ZW50KTtcbiAgICAgICAgaWYgKGNvbnRlbnQuc2l6ZSkge1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IHRoaXMuY29udGVudE1hdGNoLmZpbGxCZWZvcmUoY29udGVudCk7XG4gICAgICAgICAgICBpZiAoIWJlZm9yZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBiZWZvcmUuYXBwZW5kKGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtYXRjaGVkID0gdGhpcy5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudChjb250ZW50KTtcbiAgICAgICAgbGV0IGFmdGVyID0gbWF0Y2hlZCAmJiBtYXRjaGVkLmZpbGxCZWZvcmUoRnJhZ21lbnQuZW1wdHksIHRydWUpO1xuICAgICAgICBpZiAoIWFmdGVyKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBuZXcgTm9kZSh0aGlzLCBhdHRycywgY29udGVudC5hcHBlbmQoYWZ0ZXIpLCBNYXJrLnNldEZyb20obWFya3MpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBmcmFnbWVudCBpcyB2YWxpZCBjb250ZW50IGZvciB0aGlzIG5vZGVcbiAgICB0eXBlLlxuICAgICovXG4gICAgdmFsaWRDb250ZW50KGNvbnRlbnQpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQoY29udGVudCk7XG4gICAgICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQudmFsaWRFbmQpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udGVudC5jaGlsZENvdW50OyBpKyspXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWxsb3dzTWFya3MoY29udGVudC5jaGlsZChpKS5tYXJrcykpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgVGhyb3dzIGEgUmFuZ2VFcnJvciBpZiB0aGUgZ2l2ZW4gZnJhZ21lbnQgaXMgbm90IHZhbGlkIGNvbnRlbnQgZm9yIHRoaXNcbiAgICBub2RlIHR5cGUuXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjaGVja0NvbnRlbnQoY29udGVudCkge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRDb250ZW50KGNvbnRlbnQpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgY29udGVudCBmb3Igbm9kZSAke3RoaXMubmFtZX06ICR7Y29udGVudC50b1N0cmluZygpLnNsaWNlKDAsIDUwKX1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjaGVja0F0dHJzKGF0dHJzKSB7XG4gICAgICAgIGNoZWNrQXR0cnModGhpcy5hdHRycywgYXR0cnMsIFwibm9kZVwiLCB0aGlzLm5hbWUpO1xuICAgIH1cbiAgICAvKipcbiAgICBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBtYXJrIHR5cGUgaXMgYWxsb3dlZCBpbiB0aGlzIG5vZGUuXG4gICAgKi9cbiAgICBhbGxvd3NNYXJrVHlwZShtYXJrVHlwZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXJrU2V0ID09IG51bGwgfHwgdGhpcy5tYXJrU2V0LmluZGV4T2YobWFya1R5cGUpID4gLTE7XG4gICAgfVxuICAgIC8qKlxuICAgIFRlc3Qgd2hldGhlciB0aGUgZ2l2ZW4gc2V0IG9mIG1hcmtzIGFyZSBhbGxvd2VkIGluIHRoaXMgbm9kZS5cbiAgICAqL1xuICAgIGFsbG93c01hcmtzKG1hcmtzKSB7XG4gICAgICAgIGlmICh0aGlzLm1hcmtTZXQgPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgaWYgKCF0aGlzLmFsbG93c01hcmtUeXBlKG1hcmtzW2ldLnR5cGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgIFJlbW92ZXMgdGhlIG1hcmtzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIHRoaXMgbm9kZSBmcm9tIHRoZSBnaXZlbiBzZXQuXG4gICAgKi9cbiAgICBhbGxvd2VkTWFya3MobWFya3MpIHtcbiAgICAgICAgaWYgKHRoaXMubWFya1NldCA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIG1hcmtzO1xuICAgICAgICBsZXQgY29weTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXJrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFsbG93c01hcmtUeXBlKG1hcmtzW2ldLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjb3B5KVxuICAgICAgICAgICAgICAgICAgICBjb3B5ID0gbWFya3Muc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb3B5KSB7XG4gICAgICAgICAgICAgICAgY29weS5wdXNoKG1hcmtzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWNvcHkgPyBtYXJrcyA6IGNvcHkubGVuZ3RoID8gY29weSA6IE1hcmsubm9uZTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzdGF0aWMgY29tcGlsZShub2Rlcywgc2NoZW1hKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChuYW1lLCBzcGVjKSA9PiByZXN1bHRbbmFtZV0gPSBuZXcgTm9kZVR5cGUobmFtZSwgc2NoZW1hLCBzcGVjKSk7XG4gICAgICAgIGxldCB0b3BUeXBlID0gc2NoZW1hLnNwZWMudG9wTm9kZSB8fCBcImRvY1wiO1xuICAgICAgICBpZiAoIXJlc3VsdFt0b3BUeXBlXSlcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiU2NoZW1hIGlzIG1pc3NpbmcgaXRzIHRvcCBub2RlIHR5cGUgKCdcIiArIHRvcFR5cGUgKyBcIicpXCIpO1xuICAgICAgICBpZiAoIXJlc3VsdC50ZXh0KVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJFdmVyeSBzY2hlbWEgbmVlZHMgYSAndGV4dCcgdHlwZVwiKTtcbiAgICAgICAgZm9yIChsZXQgXyBpbiByZXN1bHQudGV4dC5hdHRycylcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVGhlIHRleHQgbm9kZSB0eXBlIHNob3VsZCBub3QgaGF2ZSBhdHRyaWJ1dGVzXCIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlVHlwZSh0eXBlTmFtZSwgYXR0ck5hbWUsIHR5cGUpIHtcbiAgICBsZXQgdHlwZXMgPSB0eXBlLnNwbGl0KFwifFwiKTtcbiAgICByZXR1cm4gKHZhbHVlKSA9PiB7XG4gICAgICAgIGxldCBuYW1lID0gdmFsdWUgPT09IG51bGwgPyBcIm51bGxcIiA6IHR5cGVvZiB2YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVzLmluZGV4T2YobmFtZSkgPCAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEV4cGVjdGVkIHZhbHVlIG9mIHR5cGUgJHt0eXBlc30gZm9yIGF0dHJpYnV0ZSAke2F0dHJOYW1lfSBvbiB0eXBlICR7dHlwZU5hbWV9LCBnb3QgJHtuYW1lfWApO1xuICAgIH07XG59XG4vLyBBdHRyaWJ1dGUgZGVzY3JpcHRvcnNcbmNsYXNzIEF0dHJpYnV0ZSB7XG4gICAgY29uc3RydWN0b3IodHlwZU5hbWUsIGF0dHJOYW1lLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuaGFzRGVmYXVsdCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCBcImRlZmF1bHRcIik7XG4gICAgICAgIHRoaXMuZGVmYXVsdCA9IG9wdGlvbnMuZGVmYXVsdDtcbiAgICAgICAgdGhpcy52YWxpZGF0ZSA9IHR5cGVvZiBvcHRpb25zLnZhbGlkYXRlID09IFwic3RyaW5nXCIgPyB2YWxpZGF0ZVR5cGUodHlwZU5hbWUsIGF0dHJOYW1lLCBvcHRpb25zLnZhbGlkYXRlKSA6IG9wdGlvbnMudmFsaWRhdGU7XG4gICAgfVxuICAgIGdldCBpc1JlcXVpcmVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaGFzRGVmYXVsdDtcbiAgICB9XG59XG4vLyBNYXJrc1xuLyoqXG5MaWtlIG5vZGVzLCBtYXJrcyAod2hpY2ggYXJlIGFzc29jaWF0ZWQgd2l0aCBub2RlcyB0byBzaWduaWZ5XG50aGluZ3MgbGlrZSBlbXBoYXNpcyBvciBiZWluZyBwYXJ0IG9mIGEgbGluaykgYXJlXG5bdGFnZ2VkXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuTWFyay50eXBlKSB3aXRoIHR5cGUgb2JqZWN0cywgd2hpY2ggYXJlXG5pbnN0YW50aWF0ZWQgb25jZSBwZXIgYFNjaGVtYWAuXG4qL1xuY2xhc3MgTWFya1R5cGUge1xuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgVGhlIG5hbWUgb2YgdGhlIG1hcmsgdHlwZS5cbiAgICAqL1xuICAgIG5hbWUsIFxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgcmFuaywgXG4gICAgLyoqXG4gICAgVGhlIHNjaGVtYSB0aGF0IHRoaXMgbWFyayB0eXBlIGluc3RhbmNlIGlzIHBhcnQgb2YuXG4gICAgKi9cbiAgICBzY2hlbWEsIFxuICAgIC8qKlxuICAgIFRoZSBzcGVjIG9uIHdoaWNoIHRoZSB0eXBlIGlzIGJhc2VkLlxuICAgICovXG4gICAgc3BlYykge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnJhbmsgPSByYW5rO1xuICAgICAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgICAgICAgdGhpcy5zcGVjID0gc3BlYztcbiAgICAgICAgdGhpcy5hdHRycyA9IGluaXRBdHRycyhuYW1lLCBzcGVjLmF0dHJzKTtcbiAgICAgICAgdGhpcy5leGNsdWRlZCA9IG51bGw7XG4gICAgICAgIGxldCBkZWZhdWx0cyA9IGRlZmF1bHRBdHRycyh0aGlzLmF0dHJzKTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGRlZmF1bHRzID8gbmV3IE1hcmsodGhpcywgZGVmYXVsdHMpIDogbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgbWFyayBvZiB0aGlzIHR5cGUuIGBhdHRyc2AgbWF5IGJlIGBudWxsYCBvciBhbiBvYmplY3RcbiAgICBjb250YWluaW5nIG9ubHkgc29tZSBvZiB0aGUgbWFyaydzIGF0dHJpYnV0ZXMuIFRoZSBvdGhlcnMsIGlmXG4gICAgdGhleSBoYXZlIGRlZmF1bHRzLCB3aWxsIGJlIGFkZGVkLlxuICAgICovXG4gICAgY3JlYXRlKGF0dHJzID0gbnVsbCkge1xuICAgICAgICBpZiAoIWF0dHJzICYmIHRoaXMuaW5zdGFuY2UpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZTtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXJrKHRoaXMsIGNvbXB1dGVBdHRycyh0aGlzLmF0dHJzLCBhdHRycykpO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHN0YXRpYyBjb21waWxlKG1hcmtzLCBzY2hlbWEpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCksIHJhbmsgPSAwO1xuICAgICAgICBtYXJrcy5mb3JFYWNoKChuYW1lLCBzcGVjKSA9PiByZXN1bHRbbmFtZV0gPSBuZXcgTWFya1R5cGUobmFtZSwgcmFuaysrLCBzY2hlbWEsIHNwZWMpKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgV2hlbiB0aGVyZSBpcyBhIG1hcmsgb2YgdGhpcyB0eXBlIGluIHRoZSBnaXZlbiBzZXQsIGEgbmV3IHNldFxuICAgIHdpdGhvdXQgaXQgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgdGhlIGlucHV0IHNldCBpcyByZXR1cm5lZC5cbiAgICAqL1xuICAgIHJlbW92ZUZyb21TZXQoc2V0KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgaWYgKHNldFtpXS50eXBlID09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICBzZXQgPSBzZXQuc2xpY2UoMCwgaSkuY29uY2F0KHNldC5zbGljZShpICsgMSkpO1xuICAgICAgICAgICAgICAgIGktLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldDtcbiAgICB9XG4gICAgLyoqXG4gICAgVGVzdHMgd2hldGhlciB0aGVyZSBpcyBhIG1hcmsgb2YgdGhpcyB0eXBlIGluIHRoZSBnaXZlbiBzZXQuXG4gICAgKi9cbiAgICBpc0luU2V0KHNldCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNldC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGlmIChzZXRbaV0udHlwZSA9PSB0aGlzKVxuICAgICAgICAgICAgICAgIHJldHVybiBzZXRbaV07XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgY2hlY2tBdHRycyhhdHRycykge1xuICAgICAgICBjaGVja0F0dHJzKHRoaXMuYXR0cnMsIGF0dHJzLCBcIm1hcmtcIiwgdGhpcy5uYW1lKTtcbiAgICB9XG4gICAgLyoqXG4gICAgUXVlcmllcyB3aGV0aGVyIGEgZ2l2ZW4gbWFyayB0eXBlIGlzXG4gICAgW2V4Y2x1ZGVkXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuTWFya1NwZWMuZXhjbHVkZXMpIGJ5IHRoaXMgb25lLlxuICAgICovXG4gICAgZXhjbHVkZXMob3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhjbHVkZWQuaW5kZXhPZihvdGhlcikgPiAtMTtcbiAgICB9XG59XG4vKipcbkEgZG9jdW1lbnQgc2NoZW1hLiBIb2xkcyBbbm9kZV0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGVUeXBlKSBhbmQgW21hcmtcbnR5cGVdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5NYXJrVHlwZSkgb2JqZWN0cyBmb3IgdGhlIG5vZGVzIGFuZCBtYXJrcyB0aGF0IG1heVxub2NjdXIgaW4gY29uZm9ybWluZyBkb2N1bWVudHMsIGFuZCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvclxuY3JlYXRpbmcgYW5kIGRlc2VyaWFsaXppbmcgc3VjaCBkb2N1bWVudHMuXG5cbldoZW4gZ2l2ZW4sIHRoZSB0eXBlIHBhcmFtZXRlcnMgcHJvdmlkZSB0aGUgbmFtZXMgb2YgdGhlIG5vZGVzIGFuZFxubWFya3MgaW4gdGhpcyBzY2hlbWEuXG4qL1xuY2xhc3MgU2NoZW1hIHtcbiAgICAvKipcbiAgICBDb25zdHJ1Y3QgYSBzY2hlbWEgZnJvbSBhIHNjaGVtYSBbc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLlNjaGVtYVNwZWMpLlxuICAgICovXG4gICAgY29uc3RydWN0b3Ioc3BlYykge1xuICAgICAgICAvKipcbiAgICAgICAgVGhlIFtsaW5lYnJlYWtcbiAgICAgICAgcmVwbGFjZW1lbnRdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlU3BlYy5saW5lYnJlYWtSZXBsYWNlbWVudCkgbm9kZSBkZWZpbmVkXG4gICAgICAgIGluIHRoaXMgc2NoZW1hLCBpZiBhbnkuXG4gICAgICAgICovXG4gICAgICAgIHRoaXMubGluZWJyZWFrUmVwbGFjZW1lbnQgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgQW4gb2JqZWN0IGZvciBzdG9yaW5nIHdoYXRldmVyIHZhbHVlcyBtb2R1bGVzIG1heSB3YW50IHRvXG4gICAgICAgIGNvbXB1dGUgYW5kIGNhY2hlIHBlciBzY2hlbWEuIChJZiB5b3Ugd2FudCB0byBzdG9yZSBzb21ldGhpbmdcbiAgICAgICAgaW4gaXQsIHRyeSB0byB1c2UgcHJvcGVydHkgbmFtZXMgdW5saWtlbHkgdG8gY2xhc2guKVxuICAgICAgICAqL1xuICAgICAgICB0aGlzLmNhY2hlZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGxldCBpbnN0YW5jZVNwZWMgPSB0aGlzLnNwZWMgPSB7fTtcbiAgICAgICAgZm9yIChsZXQgcHJvcCBpbiBzcGVjKVxuICAgICAgICAgICAgaW5zdGFuY2VTcGVjW3Byb3BdID0gc3BlY1twcm9wXTtcbiAgICAgICAgaW5zdGFuY2VTcGVjLm5vZGVzID0gT3JkZXJlZE1hcC5mcm9tKHNwZWMubm9kZXMpLFxuICAgICAgICAgICAgaW5zdGFuY2VTcGVjLm1hcmtzID0gT3JkZXJlZE1hcC5mcm9tKHNwZWMubWFya3MgfHwge30pLFxuICAgICAgICAgICAgdGhpcy5ub2RlcyA9IE5vZGVUeXBlLmNvbXBpbGUodGhpcy5zcGVjLm5vZGVzLCB0aGlzKTtcbiAgICAgICAgdGhpcy5tYXJrcyA9IE1hcmtUeXBlLmNvbXBpbGUodGhpcy5zcGVjLm1hcmtzLCB0aGlzKTtcbiAgICAgICAgbGV0IGNvbnRlbnRFeHByQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBmb3IgKGxldCBwcm9wIGluIHRoaXMubm9kZXMpIHtcbiAgICAgICAgICAgIGlmIChwcm9wIGluIHRoaXMubWFya3MpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IocHJvcCArIFwiIGNhbiBub3QgYmUgYm90aCBhIG5vZGUgYW5kIGEgbWFya1wiKTtcbiAgICAgICAgICAgIGxldCB0eXBlID0gdGhpcy5ub2Rlc1twcm9wXSwgY29udGVudEV4cHIgPSB0eXBlLnNwZWMuY29udGVudCB8fCBcIlwiLCBtYXJrRXhwciA9IHR5cGUuc3BlYy5tYXJrcztcbiAgICAgICAgICAgIHR5cGUuY29udGVudE1hdGNoID0gY29udGVudEV4cHJDYWNoZVtjb250ZW50RXhwcl0gfHxcbiAgICAgICAgICAgICAgICAoY29udGVudEV4cHJDYWNoZVtjb250ZW50RXhwcl0gPSBDb250ZW50TWF0Y2gucGFyc2UoY29udGVudEV4cHIsIHRoaXMubm9kZXMpKTtcbiAgICAgICAgICAgIHR5cGUuaW5saW5lQ29udGVudCA9IHR5cGUuY29udGVudE1hdGNoLmlubGluZUNvbnRlbnQ7XG4gICAgICAgICAgICBpZiAodHlwZS5zcGVjLmxpbmVicmVha1JlcGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGluZWJyZWFrUmVwbGFjZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiTXVsdGlwbGUgbGluZWJyZWFrIG5vZGVzIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgaWYgKCF0eXBlLmlzSW5saW5lIHx8ICF0eXBlLmlzTGVhZilcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJMaW5lYnJlYWsgcmVwbGFjZW1lbnQgbm9kZXMgbXVzdCBiZSBpbmxpbmUgbGVhZiBub2Rlc1wiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVicmVha1JlcGxhY2VtZW50ID0gdHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHR5cGUubWFya1NldCA9IG1hcmtFeHByID09IFwiX1wiID8gbnVsbCA6XG4gICAgICAgICAgICAgICAgbWFya0V4cHIgPyBnYXRoZXJNYXJrcyh0aGlzLCBtYXJrRXhwci5zcGxpdChcIiBcIikpIDpcbiAgICAgICAgICAgICAgICAgICAgbWFya0V4cHIgPT0gXCJcIiB8fCAhdHlwZS5pbmxpbmVDb250ZW50ID8gW10gOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IHByb3AgaW4gdGhpcy5tYXJrcykge1xuICAgICAgICAgICAgbGV0IHR5cGUgPSB0aGlzLm1hcmtzW3Byb3BdLCBleGNsID0gdHlwZS5zcGVjLmV4Y2x1ZGVzO1xuICAgICAgICAgICAgdHlwZS5leGNsdWRlZCA9IGV4Y2wgPT0gbnVsbCA/IFt0eXBlXSA6IGV4Y2wgPT0gXCJcIiA/IFtdIDogZ2F0aGVyTWFya3ModGhpcywgZXhjbC5zcGxpdChcIiBcIikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm9kZUZyb21KU09OID0ganNvbiA9PiBOb2RlLmZyb21KU09OKHRoaXMsIGpzb24pO1xuICAgICAgICB0aGlzLm1hcmtGcm9tSlNPTiA9IGpzb24gPT4gTWFyay5mcm9tSlNPTih0aGlzLCBqc29uKTtcbiAgICAgICAgdGhpcy50b3BOb2RlVHlwZSA9IHRoaXMubm9kZXNbdGhpcy5zcGVjLnRvcE5vZGUgfHwgXCJkb2NcIl07XG4gICAgICAgIHRoaXMuY2FjaGVkLndyYXBwaW5ncyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIG5vZGUgaW4gdGhpcyBzY2hlbWEuIFRoZSBgdHlwZWAgbWF5IGJlIGEgc3RyaW5nIG9yIGFcbiAgICBgTm9kZVR5cGVgIGluc3RhbmNlLiBBdHRyaWJ1dGVzIHdpbGwgYmUgZXh0ZW5kZWQgd2l0aCBkZWZhdWx0cyxcbiAgICBgY29udGVudGAgbWF5IGJlIGEgYEZyYWdtZW50YCwgYG51bGxgLCBhIGBOb2RlYCwgb3IgYW4gYXJyYXkgb2ZcbiAgICBub2Rlcy5cbiAgICAqL1xuICAgIG5vZGUodHlwZSwgYXR0cnMgPSBudWxsLCBjb250ZW50LCBtYXJrcykge1xuICAgICAgICBpZiAodHlwZW9mIHR5cGUgPT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgIHR5cGUgPSB0aGlzLm5vZGVUeXBlKHR5cGUpO1xuICAgICAgICBlbHNlIGlmICghKHR5cGUgaW5zdGFuY2VvZiBOb2RlVHlwZSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkludmFsaWQgbm9kZSB0eXBlOiBcIiArIHR5cGUpO1xuICAgICAgICBlbHNlIGlmICh0eXBlLnNjaGVtYSAhPSB0aGlzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJOb2RlIHR5cGUgZnJvbSBkaWZmZXJlbnQgc2NoZW1hIHVzZWQgKFwiICsgdHlwZS5uYW1lICsgXCIpXCIpO1xuICAgICAgICByZXR1cm4gdHlwZS5jcmVhdGVDaGVja2VkKGF0dHJzLCBjb250ZW50LCBtYXJrcyk7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIHRleHQgbm9kZSBpbiB0aGUgc2NoZW1hLiBFbXB0eSB0ZXh0IG5vZGVzIGFyZSBub3RcbiAgICBhbGxvd2VkLlxuICAgICovXG4gICAgdGV4dCh0ZXh0LCBtYXJrcykge1xuICAgICAgICBsZXQgdHlwZSA9IHRoaXMubm9kZXMudGV4dDtcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0Tm9kZSh0eXBlLCB0eXBlLmRlZmF1bHRBdHRycywgdGV4dCwgTWFyay5zZXRGcm9tKG1hcmtzKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIG1hcmsgd2l0aCB0aGUgZ2l2ZW4gdHlwZSBhbmQgYXR0cmlidXRlcy5cbiAgICAqL1xuICAgIG1hcmsodHlwZSwgYXR0cnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0eXBlID09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICB0eXBlID0gdGhpcy5tYXJrc1t0eXBlXTtcbiAgICAgICAgcmV0dXJuIHR5cGUuY3JlYXRlKGF0dHJzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBub2RlVHlwZShuYW1lKSB7XG4gICAgICAgIGxldCBmb3VuZCA9IHRoaXMubm9kZXNbbmFtZV07XG4gICAgICAgIGlmICghZm91bmQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlVua25vd24gbm9kZSB0eXBlOiBcIiArIG5hbWUpO1xuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2F0aGVyTWFya3Moc2NoZW1hLCBtYXJrcykge1xuICAgIGxldCBmb3VuZCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG5hbWUgPSBtYXJrc1tpXSwgbWFyayA9IHNjaGVtYS5tYXJrc1tuYW1lXSwgb2sgPSBtYXJrO1xuICAgICAgICBpZiAobWFyaykge1xuICAgICAgICAgICAgZm91bmQucHVzaChtYXJrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gc2NoZW1hLm1hcmtzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1hcmsgPSBzY2hlbWEubWFya3NbcHJvcF07XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gXCJfXCIgfHwgKG1hcmsuc3BlYy5ncm91cCAmJiBtYXJrLnNwZWMuZ3JvdXAuc3BsaXQoXCIgXCIpLmluZGV4T2YobmFtZSkgPiAtMSkpXG4gICAgICAgICAgICAgICAgICAgIGZvdW5kLnB1c2gob2sgPSBtYXJrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9rKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiVW5rbm93biBtYXJrIHR5cGU6ICdcIiArIG1hcmtzW2ldICsgXCInXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZm91bmQ7XG59XG5cbmZ1bmN0aW9uIGlzVGFnUnVsZShydWxlKSB7IHJldHVybiBydWxlLnRhZyAhPSBudWxsOyB9XG5mdW5jdGlvbiBpc1N0eWxlUnVsZShydWxlKSB7IHJldHVybiBydWxlLnN0eWxlICE9IG51bGw7IH1cbi8qKlxuQSBET00gcGFyc2VyIHJlcHJlc2VudHMgYSBzdHJhdGVneSBmb3IgcGFyc2luZyBET00gY29udGVudCBpbnRvIGFcblByb3NlTWlycm9yIGRvY3VtZW50IGNvbmZvcm1pbmcgdG8gYSBnaXZlbiBzY2hlbWEuIEl0cyBiZWhhdmlvciBpc1xuZGVmaW5lZCBieSBhbiBhcnJheSBvZiBbcnVsZXNdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5QYXJzZVJ1bGUpLlxuKi9cbmNsYXNzIERPTVBhcnNlciB7XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgcGFyc2VyIHRoYXQgdGFyZ2V0cyB0aGUgZ2l2ZW4gc2NoZW1hLCB1c2luZyB0aGUgZ2l2ZW5cbiAgICBwYXJzaW5nIHJ1bGVzLlxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgVGhlIHNjaGVtYSBpbnRvIHdoaWNoIHRoZSBwYXJzZXIgcGFyc2VzLlxuICAgICovXG4gICAgc2NoZW1hLCBcbiAgICAvKipcbiAgICBUaGUgc2V0IG9mIFtwYXJzZSBydWxlc10oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLlBhcnNlUnVsZSkgdGhhdCB0aGUgcGFyc2VyXG4gICAgdXNlcywgaW4gb3JkZXIgb2YgcHJlY2VkZW5jZS5cbiAgICAqL1xuICAgIHJ1bGVzKSB7XG4gICAgICAgIHRoaXMuc2NoZW1hID0gc2NoZW1hO1xuICAgICAgICB0aGlzLnJ1bGVzID0gcnVsZXM7XG4gICAgICAgIC8qKlxuICAgICAgICBAaW50ZXJuYWxcbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy50YWdzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICBAaW50ZXJuYWxcbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy5zdHlsZXMgPSBbXTtcbiAgICAgICAgbGV0IG1hdGNoZWRTdHlsZXMgPSB0aGlzLm1hdGNoZWRTdHlsZXMgPSBbXTtcbiAgICAgICAgcnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgICAgIGlmIChpc1RhZ1J1bGUocnVsZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhZ3MucHVzaChydWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzU3R5bGVSdWxlKHJ1bGUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByb3AgPSAvW149XSovLmV4ZWMocnVsZS5zdHlsZSlbMF07XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRTdHlsZXMuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZWRTdHlsZXMucHVzaChwcm9wKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0eWxlcy5wdXNoKHJ1bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gT25seSBub3JtYWxpemUgbGlzdCBlbGVtZW50cyB3aGVuIGxpc3RzIGluIHRoZSBzY2hlbWEgY2FuJ3QgZGlyZWN0bHkgY29udGFpbiB0aGVtc2VsdmVzXG4gICAgICAgIHRoaXMubm9ybWFsaXplTGlzdHMgPSAhdGhpcy50YWdzLnNvbWUociA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eKHVsfG9sKVxcYi8udGVzdChyLnRhZykgfHwgIXIubm9kZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBsZXQgbm9kZSA9IHNjaGVtYS5ub2Rlc1tyLm5vZGVdO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY29udGVudE1hdGNoLm1hdGNoVHlwZShub2RlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgIFBhcnNlIGEgZG9jdW1lbnQgZnJvbSB0aGUgY29udGVudCBvZiBhIERPTSBub2RlLlxuICAgICovXG4gICAgcGFyc2UoZG9tLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgbGV0IGNvbnRleHQgPSBuZXcgUGFyc2VDb250ZXh0KHRoaXMsIG9wdGlvbnMsIGZhbHNlKTtcbiAgICAgICAgY29udGV4dC5hZGRBbGwoZG9tLCBNYXJrLm5vbmUsIG9wdGlvbnMuZnJvbSwgb3B0aW9ucy50byk7XG4gICAgICAgIHJldHVybiBjb250ZXh0LmZpbmlzaCgpO1xuICAgIH1cbiAgICAvKipcbiAgICBQYXJzZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGdpdmVuIERPTSBub2RlLCBsaWtlXG4gICAgW2BwYXJzZWBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5ET01QYXJzZXIucGFyc2UpLCBhbmQgdGFrZXMgdGhlIHNhbWUgc2V0IG9mXG4gICAgb3B0aW9ucy4gQnV0IHVubGlrZSB0aGF0IG1ldGhvZCwgd2hpY2ggcHJvZHVjZXMgYSB3aG9sZSBub2RlLFxuICAgIHRoaXMgb25lIHJldHVybnMgYSBzbGljZSB0aGF0IGlzIG9wZW4gYXQgdGhlIHNpZGVzLCBtZWFuaW5nIHRoYXRcbiAgICB0aGUgc2NoZW1hIGNvbnN0cmFpbnRzIGFyZW4ndCBhcHBsaWVkIHRvIHRoZSBzdGFydCBvZiBub2RlcyB0b1xuICAgIHRoZSBsZWZ0IG9mIHRoZSBpbnB1dCBhbmQgdGhlIGVuZCBvZiBub2RlcyBhdCB0aGUgZW5kLlxuICAgICovXG4gICAgcGFyc2VTbGljZShkb20sIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICBsZXQgY29udGV4dCA9IG5ldyBQYXJzZUNvbnRleHQodGhpcywgb3B0aW9ucywgdHJ1ZSk7XG4gICAgICAgIGNvbnRleHQuYWRkQWxsKGRvbSwgTWFyay5ub25lLCBvcHRpb25zLmZyb20sIG9wdGlvbnMudG8pO1xuICAgICAgICByZXR1cm4gU2xpY2UubWF4T3Blbihjb250ZXh0LmZpbmlzaCgpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBtYXRjaFRhZyhkb20sIGNvbnRleHQsIGFmdGVyKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBhZnRlciA/IHRoaXMudGFncy5pbmRleE9mKGFmdGVyKSArIDEgOiAwOyBpIDwgdGhpcy50YWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcnVsZSA9IHRoaXMudGFnc1tpXTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVzKGRvbSwgcnVsZS50YWcpICYmXG4gICAgICAgICAgICAgICAgKHJ1bGUubmFtZXNwYWNlID09PSB1bmRlZmluZWQgfHwgZG9tLm5hbWVzcGFjZVVSSSA9PSBydWxlLm5hbWVzcGFjZSkgJiZcbiAgICAgICAgICAgICAgICAoIXJ1bGUuY29udGV4dCB8fCBjb250ZXh0Lm1hdGNoZXNDb250ZXh0KHJ1bGUuY29udGV4dCkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUuZ2V0QXR0cnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHJ1bGUuZ2V0QXR0cnMoZG9tKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgcnVsZS5hdHRycyA9IHJlc3VsdCB8fCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBydWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgbWF0Y2hTdHlsZShwcm9wLCB2YWx1ZSwgY29udGV4dCwgYWZ0ZXIpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGFmdGVyID8gdGhpcy5zdHlsZXMuaW5kZXhPZihhZnRlcikgKyAxIDogMDsgaSA8IHRoaXMuc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcnVsZSA9IHRoaXMuc3R5bGVzW2ldLCBzdHlsZSA9IHJ1bGUuc3R5bGU7XG4gICAgICAgICAgICBpZiAoc3R5bGUuaW5kZXhPZihwcm9wKSAhPSAwIHx8XG4gICAgICAgICAgICAgICAgcnVsZS5jb250ZXh0ICYmICFjb250ZXh0Lm1hdGNoZXNDb250ZXh0KHJ1bGUuY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgdGhlIHN0eWxlIHN0cmluZyBlaXRoZXIgcHJlY2lzZWx5IG1hdGNoZXMgdGhlIHByb3AsXG4gICAgICAgICAgICAgICAgLy8gb3IgaGFzIGFuICc9JyBzaWduIGFmdGVyIHRoZSBwcm9wLCBmb2xsb3dlZCBieSB0aGUgZ2l2ZW5cbiAgICAgICAgICAgICAgICAvLyB2YWx1ZS5cbiAgICAgICAgICAgICAgICBzdHlsZS5sZW5ndGggPiBwcm9wLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAoc3R5bGUuY2hhckNvZGVBdChwcm9wLmxlbmd0aCkgIT0gNjEgfHwgc3R5bGUuc2xpY2UocHJvcC5sZW5ndGggKyAxKSAhPSB2YWx1ZSkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBpZiAocnVsZS5nZXRBdHRycykge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBydWxlLmdldEF0dHJzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgcnVsZS5hdHRycyA9IHJlc3VsdCB8fCB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcnVsZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHN0YXRpYyBzY2hlbWFSdWxlcyhzY2hlbWEpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBpbnNlcnQocnVsZSkge1xuICAgICAgICAgICAgbGV0IHByaW9yaXR5ID0gcnVsZS5wcmlvcml0eSA9PSBudWxsID8gNTAgOiBydWxlLnByaW9yaXR5LCBpID0gMDtcbiAgICAgICAgICAgIGZvciAoOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSByZXN1bHRbaV0sIG5leHRQcmlvcml0eSA9IG5leHQucHJpb3JpdHkgPT0gbnVsbCA/IDUwIDogbmV4dC5wcmlvcml0eTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dFByaW9yaXR5IDwgcHJpb3JpdHkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnNwbGljZShpLCAwLCBydWxlKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBuYW1lIGluIHNjaGVtYS5tYXJrcykge1xuICAgICAgICAgICAgbGV0IHJ1bGVzID0gc2NoZW1hLm1hcmtzW25hbWVdLnNwZWMucGFyc2VET007XG4gICAgICAgICAgICBpZiAocnVsZXMpXG4gICAgICAgICAgICAgICAgcnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0KHJ1bGUgPSBjb3B5KHJ1bGUpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEocnVsZS5tYXJrIHx8IHJ1bGUuaWdub3JlIHx8IHJ1bGUuY2xlYXJNYXJrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUubWFyayA9IG5hbWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgbmFtZSBpbiBzY2hlbWEubm9kZXMpIHtcbiAgICAgICAgICAgIGxldCBydWxlcyA9IHNjaGVtYS5ub2Rlc1tuYW1lXS5zcGVjLnBhcnNlRE9NO1xuICAgICAgICAgICAgaWYgKHJ1bGVzKVxuICAgICAgICAgICAgICAgIHJ1bGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydChydWxlID0gY29weShydWxlKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHJ1bGUubm9kZSB8fCBydWxlLmlnbm9yZSB8fCBydWxlLm1hcmspKVxuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5ub2RlID0gbmFtZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvKipcbiAgICBDb25zdHJ1Y3QgYSBET00gcGFyc2VyIHVzaW5nIHRoZSBwYXJzaW5nIHJ1bGVzIGxpc3RlZCBpbiBhXG4gICAgc2NoZW1hJ3MgW25vZGUgc3BlY3NdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlU3BlYy5wYXJzZURPTSksIHJlb3JkZXJlZCBieVxuICAgIFtwcmlvcml0eV0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLkdlbmVyaWNQYXJzZVJ1bGUucHJpb3JpdHkpLlxuICAgICovXG4gICAgc3RhdGljIGZyb21TY2hlbWEoc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEuY2FjaGVkLmRvbVBhcnNlciB8fFxuICAgICAgICAgICAgKHNjaGVtYS5jYWNoZWQuZG9tUGFyc2VyID0gbmV3IERPTVBhcnNlcihzY2hlbWEsIERPTVBhcnNlci5zY2hlbWFSdWxlcyhzY2hlbWEpKSk7XG4gICAgfVxufVxuY29uc3QgYmxvY2tUYWdzID0ge1xuICAgIGFkZHJlc3M6IHRydWUsIGFydGljbGU6IHRydWUsIGFzaWRlOiB0cnVlLCBibG9ja3F1b3RlOiB0cnVlLCBjYW52YXM6IHRydWUsXG4gICAgZGQ6IHRydWUsIGRpdjogdHJ1ZSwgZGw6IHRydWUsIGZpZWxkc2V0OiB0cnVlLCBmaWdjYXB0aW9uOiB0cnVlLCBmaWd1cmU6IHRydWUsXG4gICAgZm9vdGVyOiB0cnVlLCBmb3JtOiB0cnVlLCBoMTogdHJ1ZSwgaDI6IHRydWUsIGgzOiB0cnVlLCBoNDogdHJ1ZSwgaDU6IHRydWUsXG4gICAgaDY6IHRydWUsIGhlYWRlcjogdHJ1ZSwgaGdyb3VwOiB0cnVlLCBocjogdHJ1ZSwgbGk6IHRydWUsIG5vc2NyaXB0OiB0cnVlLCBvbDogdHJ1ZSxcbiAgICBvdXRwdXQ6IHRydWUsIHA6IHRydWUsIHByZTogdHJ1ZSwgc2VjdGlvbjogdHJ1ZSwgdGFibGU6IHRydWUsIHRmb290OiB0cnVlLCB1bDogdHJ1ZVxufTtcbmNvbnN0IGlnbm9yZVRhZ3MgPSB7XG4gICAgaGVhZDogdHJ1ZSwgbm9zY3JpcHQ6IHRydWUsIG9iamVjdDogdHJ1ZSwgc2NyaXB0OiB0cnVlLCBzdHlsZTogdHJ1ZSwgdGl0bGU6IHRydWVcbn07XG5jb25zdCBsaXN0VGFncyA9IHsgb2w6IHRydWUsIHVsOiB0cnVlIH07XG4vLyBVc2luZyBhIGJpdGZpZWxkIGZvciBub2RlIGNvbnRleHQgb3B0aW9uc1xuY29uc3QgT1BUX1BSRVNFUlZFX1dTID0gMSwgT1BUX1BSRVNFUlZFX1dTX0ZVTEwgPSAyLCBPUFRfT1BFTl9MRUZUID0gNDtcbmZ1bmN0aW9uIHdzT3B0aW9uc0Zvcih0eXBlLCBwcmVzZXJ2ZVdoaXRlc3BhY2UsIGJhc2UpIHtcbiAgICBpZiAocHJlc2VydmVXaGl0ZXNwYWNlICE9IG51bGwpXG4gICAgICAgIHJldHVybiAocHJlc2VydmVXaGl0ZXNwYWNlID8gT1BUX1BSRVNFUlZFX1dTIDogMCkgfFxuICAgICAgICAgICAgKHByZXNlcnZlV2hpdGVzcGFjZSA9PT0gXCJmdWxsXCIgPyBPUFRfUFJFU0VSVkVfV1NfRlVMTCA6IDApO1xuICAgIHJldHVybiB0eXBlICYmIHR5cGUud2hpdGVzcGFjZSA9PSBcInByZVwiID8gT1BUX1BSRVNFUlZFX1dTIHwgT1BUX1BSRVNFUlZFX1dTX0ZVTEwgOiBiYXNlICYgfk9QVF9PUEVOX0xFRlQ7XG59XG5jbGFzcyBOb2RlQ29udGV4dCB7XG4gICAgY29uc3RydWN0b3IodHlwZSwgYXR0cnMsIG1hcmtzLCBzb2xpZCwgbWF0Y2gsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5hdHRycyA9IGF0dHJzO1xuICAgICAgICB0aGlzLm1hcmtzID0gbWFya3M7XG4gICAgICAgIHRoaXMuc29saWQgPSBzb2xpZDtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5jb250ZW50ID0gW107XG4gICAgICAgIC8vIE1hcmtzIGFwcGxpZWQgdG8gdGhlIG5vZGUncyBjaGlsZHJlblxuICAgICAgICB0aGlzLmFjdGl2ZU1hcmtzID0gTWFyay5ub25lO1xuICAgICAgICB0aGlzLm1hdGNoID0gbWF0Y2ggfHwgKG9wdGlvbnMgJiBPUFRfT1BFTl9MRUZUID8gbnVsbCA6IHR5cGUuY29udGVudE1hdGNoKTtcbiAgICB9XG4gICAgZmluZFdyYXBwaW5nKG5vZGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1hdGNoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudHlwZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICBsZXQgZmlsbCA9IHRoaXMudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZShGcmFnbWVudC5mcm9tKG5vZGUpKTtcbiAgICAgICAgICAgIGlmIChmaWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMudHlwZS5jb250ZW50TWF0Y2gubWF0Y2hGcmFnbWVudChmaWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IHRoaXMudHlwZS5jb250ZW50TWF0Y2gsIHdyYXA7XG4gICAgICAgICAgICAgICAgaWYgKHdyYXAgPSBzdGFydC5maW5kV3JhcHBpbmcobm9kZS50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoID0gc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoLmZpbmRXcmFwcGluZyhub2RlLnR5cGUpO1xuICAgIH1cbiAgICBmaW5pc2gob3BlbkVuZCkge1xuICAgICAgICBpZiAoISh0aGlzLm9wdGlvbnMgJiBPUFRfUFJFU0VSVkVfV1MpKSB7IC8vIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2VcbiAgICAgICAgICAgIGxldCBsYXN0ID0gdGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGggLSAxXSwgbTtcbiAgICAgICAgICAgIGlmIChsYXN0ICYmIGxhc3QuaXNUZXh0ICYmIChtID0gL1sgXFx0XFxyXFxuXFx1MDAwY10rJC8uZXhlYyhsYXN0LnRleHQpKSkge1xuICAgICAgICAgICAgICAgIGxldCB0ZXh0ID0gbGFzdDtcbiAgICAgICAgICAgICAgICBpZiAobGFzdC50ZXh0Lmxlbmd0aCA9PSBtWzBdLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LnBvcCgpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGggLSAxXSA9IHRleHQud2l0aFRleHQodGV4dC50ZXh0LnNsaWNlKDAsIHRleHQudGV4dC5sZW5ndGggLSBtWzBdLmxlbmd0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBjb250ZW50ID0gRnJhZ21lbnQuZnJvbSh0aGlzLmNvbnRlbnQpO1xuICAgICAgICBpZiAoIW9wZW5FbmQgJiYgdGhpcy5tYXRjaClcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LmFwcGVuZCh0aGlzLm1hdGNoLmZpbGxCZWZvcmUoRnJhZ21lbnQuZW1wdHksIHRydWUpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA/IHRoaXMudHlwZS5jcmVhdGUodGhpcy5hdHRycywgY29udGVudCwgdGhpcy5tYXJrcykgOiBjb250ZW50O1xuICAgIH1cbiAgICBpbmxpbmVDb250ZXh0KG5vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGUuaW5saW5lQ29udGVudDtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50WzBdLmlzSW5saW5lO1xuICAgICAgICByZXR1cm4gbm9kZS5wYXJlbnROb2RlICYmICFibG9ja1RhZ3MuaGFzT3duUHJvcGVydHkobm9kZS5wYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbn1cbmNsYXNzIFBhcnNlQ29udGV4dCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgLy8gVGhlIHBhcnNlciB3ZSBhcmUgdXNpbmcuXG4gICAgcGFyc2VyLCBcbiAgICAvLyBUaGUgb3B0aW9ucyBwYXNzZWQgdG8gdGhpcyBwYXJzZS5cbiAgICBvcHRpb25zLCBpc09wZW4pIHtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gaXNPcGVuO1xuICAgICAgICB0aGlzLm9wZW4gPSAwO1xuICAgICAgICB0aGlzLmxvY2FsUHJlc2VydmVXUyA9IGZhbHNlO1xuICAgICAgICBsZXQgdG9wTm9kZSA9IG9wdGlvbnMudG9wTm9kZSwgdG9wQ29udGV4dDtcbiAgICAgICAgbGV0IHRvcE9wdGlvbnMgPSB3c09wdGlvbnNGb3IobnVsbCwgb3B0aW9ucy5wcmVzZXJ2ZVdoaXRlc3BhY2UsIDApIHwgKGlzT3BlbiA/IE9QVF9PUEVOX0xFRlQgOiAwKTtcbiAgICAgICAgaWYgKHRvcE5vZGUpXG4gICAgICAgICAgICB0b3BDb250ZXh0ID0gbmV3IE5vZGVDb250ZXh0KHRvcE5vZGUudHlwZSwgdG9wTm9kZS5hdHRycywgTWFyay5ub25lLCB0cnVlLCBvcHRpb25zLnRvcE1hdGNoIHx8IHRvcE5vZGUudHlwZS5jb250ZW50TWF0Y2gsIHRvcE9wdGlvbnMpO1xuICAgICAgICBlbHNlIGlmIChpc09wZW4pXG4gICAgICAgICAgICB0b3BDb250ZXh0ID0gbmV3IE5vZGVDb250ZXh0KG51bGwsIG51bGwsIE1hcmsubm9uZSwgdHJ1ZSwgbnVsbCwgdG9wT3B0aW9ucyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRvcENvbnRleHQgPSBuZXcgTm9kZUNvbnRleHQocGFyc2VyLnNjaGVtYS50b3BOb2RlVHlwZSwgbnVsbCwgTWFyay5ub25lLCB0cnVlLCBudWxsLCB0b3BPcHRpb25zKTtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFt0b3BDb250ZXh0XTtcbiAgICAgICAgdGhpcy5maW5kID0gb3B0aW9ucy5maW5kUG9zaXRpb25zO1xuICAgICAgICB0aGlzLm5lZWRzQmxvY2sgPSBmYWxzZTtcbiAgICB9XG4gICAgZ2V0IHRvcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZXNbdGhpcy5vcGVuXTtcbiAgICB9XG4gICAgLy8gQWRkIGEgRE9NIG5vZGUgdG8gdGhlIGNvbnRlbnQuIFRleHQgaXMgaW5zZXJ0ZWQgYXMgdGV4dCBub2RlLFxuICAgIC8vIG90aGVyd2lzZSwgdGhlIG5vZGUgaXMgcGFzc2VkIHRvIGBhZGRFbGVtZW50YCBvciwgaWYgaXQgaGFzIGFcbiAgICAvLyBgc3R5bGVgIGF0dHJpYnV0ZSwgYGFkZEVsZW1lbnRXaXRoU3R5bGVzYC5cbiAgICBhZGRET00oZG9tLCBtYXJrcykge1xuICAgICAgICBpZiAoZG9tLm5vZGVUeXBlID09IDMpXG4gICAgICAgICAgICB0aGlzLmFkZFRleHROb2RlKGRvbSwgbWFya3MpO1xuICAgICAgICBlbHNlIGlmIChkb20ubm9kZVR5cGUgPT0gMSlcbiAgICAgICAgICAgIHRoaXMuYWRkRWxlbWVudChkb20sIG1hcmtzKTtcbiAgICB9XG4gICAgYWRkVGV4dE5vZGUoZG9tLCBtYXJrcykge1xuICAgICAgICBsZXQgdmFsdWUgPSBkb20ubm9kZVZhbHVlO1xuICAgICAgICBsZXQgdG9wID0gdGhpcy50b3AsIHByZXNlcnZlV1MgPSAodG9wLm9wdGlvbnMgJiBPUFRfUFJFU0VSVkVfV1NfRlVMTCkgPyBcImZ1bGxcIlxuICAgICAgICAgICAgOiB0aGlzLmxvY2FsUHJlc2VydmVXUyB8fCAodG9wLm9wdGlvbnMgJiBPUFRfUFJFU0VSVkVfV1MpID4gMDtcbiAgICAgICAgbGV0IHsgc2NoZW1hIH0gPSB0aGlzLnBhcnNlcjtcbiAgICAgICAgaWYgKHByZXNlcnZlV1MgPT09IFwiZnVsbFwiIHx8XG4gICAgICAgICAgICB0b3AuaW5saW5lQ29udGV4dChkb20pIHx8XG4gICAgICAgICAgICAvW14gXFx0XFxyXFxuXFx1MDAwY10vLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoIXByZXNlcnZlV1MpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1sgXFx0XFxyXFxuXFx1MDAwY10rL2csIFwiIFwiKTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIHN0YXJ0cyB3aXRoIHdoaXRlc3BhY2UsIGFuZCB0aGVyZSBpcyBubyBub2RlIGJlZm9yZSBpdCwgb3JcbiAgICAgICAgICAgICAgICAvLyBhIGhhcmQgYnJlYWssIG9yIGEgdGV4dCBub2RlIHRoYXQgZW5kcyB3aXRoIHdoaXRlc3BhY2UsIHN0cmlwIHRoZVxuICAgICAgICAgICAgICAgIC8vIGxlYWRpbmcgc3BhY2UuXG4gICAgICAgICAgICAgICAgaWYgKC9eWyBcXHRcXHJcXG5cXHUwMDBjXS8udGVzdCh2YWx1ZSkgJiYgdGhpcy5vcGVuID09IHRoaXMubm9kZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZUJlZm9yZSA9IHRvcC5jb250ZW50W3RvcC5jb250ZW50Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZG9tTm9kZUJlZm9yZSA9IGRvbS5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZUJlZm9yZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvbU5vZGVCZWZvcmUgJiYgZG9tTm9kZUJlZm9yZS5ub2RlTmFtZSA9PSAnQlInKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVCZWZvcmUuaXNUZXh0ICYmIC9bIFxcdFxcclxcblxcdTAwMGNdJC8udGVzdChub2RlQmVmb3JlLnRleHQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocHJlc2VydmVXUyA9PT0gXCJmdWxsXCIpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcclxcbj8vZywgXCJcXG5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQgJiYgL1tcXHJcXG5dLy50ZXN0KHZhbHVlKSAmJiB0aGlzLnRvcC5maW5kV3JhcHBpbmcoc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpKSkge1xuICAgICAgICAgICAgICAgIGxldCBsaW5lcyA9IHZhbHVlLnNwbGl0KC9cXHI/XFxufFxcci8pO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydE5vZGUoc2NoZW1hLmxpbmVicmVha1JlcGxhY2VtZW50LmNyZWF0ZSgpLCBtYXJrcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lc1tpXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Tm9kZShzY2hlbWEudGV4dChsaW5lc1tpXSksIG1hcmtzLCAhL1xcUy8udGVzdChsaW5lc1tpXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xccj9cXG58XFxyL2csIFwiIFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydE5vZGUoc2NoZW1hLnRleHQodmFsdWUpLCBtYXJrcywgIS9cXFMvLnRlc3QodmFsdWUpKTtcbiAgICAgICAgICAgIHRoaXMuZmluZEluVGV4dChkb20pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maW5kSW5zaWRlKGRvbSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gVHJ5IHRvIGZpbmQgYSBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gdGFnIGFuZCB1c2UgdGhhdCB0byBwYXJzZS4gSWZcbiAgICAvLyBub25lIGlzIGZvdW5kLCB0aGUgZWxlbWVudCdzIGNvbnRlbnQgbm9kZXMgYXJlIGFkZGVkIGRpcmVjdGx5LlxuICAgIGFkZEVsZW1lbnQoZG9tLCBtYXJrcywgbWF0Y2hBZnRlcikge1xuICAgICAgICBsZXQgb3V0ZXJXUyA9IHRoaXMubG9jYWxQcmVzZXJ2ZVdTLCB0b3AgPSB0aGlzLnRvcDtcbiAgICAgICAgaWYgKGRvbS50YWdOYW1lID09IFwiUFJFXCIgfHwgL3ByZS8udGVzdChkb20uc3R5bGUgJiYgZG9tLnN0eWxlLndoaXRlU3BhY2UpKVxuICAgICAgICAgICAgdGhpcy5sb2NhbFByZXNlcnZlV1MgPSB0cnVlO1xuICAgICAgICBsZXQgbmFtZSA9IGRvbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCBydWxlSUQ7XG4gICAgICAgIGlmIChsaXN0VGFncy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB0aGlzLnBhcnNlci5ub3JtYWxpemVMaXN0cylcbiAgICAgICAgICAgIG5vcm1hbGl6ZUxpc3QoZG9tKTtcbiAgICAgICAgbGV0IHJ1bGUgPSAodGhpcy5vcHRpb25zLnJ1bGVGcm9tTm9kZSAmJiB0aGlzLm9wdGlvbnMucnVsZUZyb21Ob2RlKGRvbSkpIHx8XG4gICAgICAgICAgICAocnVsZUlEID0gdGhpcy5wYXJzZXIubWF0Y2hUYWcoZG9tLCB0aGlzLCBtYXRjaEFmdGVyKSk7XG4gICAgICAgIG91dDogaWYgKHJ1bGUgPyBydWxlLmlnbm9yZSA6IGlnbm9yZVRhZ3MuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZmluZEluc2lkZShkb20pO1xuICAgICAgICAgICAgdGhpcy5pZ25vcmVGYWxsYmFjayhkb20sIG1hcmtzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghcnVsZSB8fCBydWxlLnNraXAgfHwgcnVsZS5jbG9zZVBhcmVudCkge1xuICAgICAgICAgICAgaWYgKHJ1bGUgJiYgcnVsZS5jbG9zZVBhcmVudClcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBNYXRoLm1heCgwLCB0aGlzLm9wZW4gLSAxKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGUgJiYgcnVsZS5za2lwLm5vZGVUeXBlKVxuICAgICAgICAgICAgICAgIGRvbSA9IHJ1bGUuc2tpcDtcbiAgICAgICAgICAgIGxldCBzeW5jLCBvbGROZWVkc0Jsb2NrID0gdGhpcy5uZWVkc0Jsb2NrO1xuICAgICAgICAgICAgaWYgKGJsb2NrVGFncy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAgICAgICAgIGlmICh0b3AuY29udGVudC5sZW5ndGggJiYgdG9wLmNvbnRlbnRbMF0uaXNJbmxpbmUgJiYgdGhpcy5vcGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3Blbi0tO1xuICAgICAgICAgICAgICAgICAgICB0b3AgPSB0aGlzLnRvcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKCF0b3AudHlwZSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZWVkc0Jsb2NrID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFkb20uZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGVhZkZhbGxiYWNrKGRvbSwgbWFya3MpO1xuICAgICAgICAgICAgICAgIGJyZWFrIG91dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBpbm5lck1hcmtzID0gcnVsZSAmJiBydWxlLnNraXAgPyBtYXJrcyA6IHRoaXMucmVhZFN0eWxlcyhkb20sIG1hcmtzKTtcbiAgICAgICAgICAgIGlmIChpbm5lck1hcmtzKVxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQWxsKGRvbSwgaW5uZXJNYXJrcyk7XG4gICAgICAgICAgICBpZiAoc3luYylcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmModG9wKTtcbiAgICAgICAgICAgIHRoaXMubmVlZHNCbG9jayA9IG9sZE5lZWRzQmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgaW5uZXJNYXJrcyA9IHRoaXMucmVhZFN0eWxlcyhkb20sIG1hcmtzKTtcbiAgICAgICAgICAgIGlmIChpbm5lck1hcmtzKVxuICAgICAgICAgICAgICAgIHRoaXMuYWRkRWxlbWVudEJ5UnVsZShkb20sIHJ1bGUsIGlubmVyTWFya3MsIHJ1bGUuY29uc3VtaW5nID09PSBmYWxzZSA/IHJ1bGVJRCA6IHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2NhbFByZXNlcnZlV1MgPSBvdXRlcldTO1xuICAgIH1cbiAgICAvLyBDYWxsZWQgZm9yIGxlYWYgRE9NIG5vZGVzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIGlnbm9yZWRcbiAgICBsZWFmRmFsbGJhY2soZG9tLCBtYXJrcykge1xuICAgICAgICBpZiAoZG9tLm5vZGVOYW1lID09IFwiQlJcIiAmJiB0aGlzLnRvcC50eXBlICYmIHRoaXMudG9wLnR5cGUuaW5saW5lQ29udGVudClcbiAgICAgICAgICAgIHRoaXMuYWRkVGV4dE5vZGUoZG9tLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcXG5cIiksIG1hcmtzKTtcbiAgICB9XG4gICAgLy8gQ2FsbGVkIGZvciBpZ25vcmVkIG5vZGVzXG4gICAgaWdub3JlRmFsbGJhY2soZG9tLCBtYXJrcykge1xuICAgICAgICAvLyBJZ25vcmVkIEJSIG5vZGVzIHNob3VsZCBhdCBsZWFzdCBjcmVhdGUgYW4gaW5saW5lIGNvbnRleHRcbiAgICAgICAgaWYgKGRvbS5ub2RlTmFtZSA9PSBcIkJSXCIgJiYgKCF0aGlzLnRvcC50eXBlIHx8ICF0aGlzLnRvcC50eXBlLmlubGluZUNvbnRlbnQpKVxuICAgICAgICAgICAgdGhpcy5maW5kUGxhY2UodGhpcy5wYXJzZXIuc2NoZW1hLnRleHQoXCItXCIpLCBtYXJrcywgdHJ1ZSk7XG4gICAgfVxuICAgIC8vIFJ1biBhbnkgc3R5bGUgcGFyc2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZSdzIHN0eWxlcy4gRWl0aGVyXG4gICAgLy8gcmV0dXJuIGFuIHVwZGF0ZWQgYXJyYXkgb2YgbWFya3MsIG9yIG51bGwgdG8gaW5kaWNhdGUgc29tZSBvZiB0aGVcbiAgICAvLyBzdHlsZXMgaGFkIGEgcnVsZSB3aXRoIGBpZ25vcmVgIHNldC5cbiAgICByZWFkU3R5bGVzKGRvbSwgbWFya3MpIHtcbiAgICAgICAgbGV0IHN0eWxlcyA9IGRvbS5zdHlsZTtcbiAgICAgICAgLy8gQmVjYXVzZSBtYW55IHByb3BlcnRpZXMgd2lsbCBvbmx5IHNob3cgdXAgaW4gJ25vcm1hbGl6ZWQnIGZvcm1cbiAgICAgICAgLy8gaW4gYHN0eWxlLml0ZW1gIChpLmUuIHRleHQtZGVjb3JhdGlvbiBiZWNvbWVzXG4gICAgICAgIC8vIHRleHQtZGVjb3JhdGlvbi1saW5lLCB0ZXh0LWRlY29yYXRpb24tY29sb3IsIGV0YyksIHdlIGRpcmVjdGx5XG4gICAgICAgIC8vIHF1ZXJ5IHRoZSBzdHlsZXMgbWVudGlvbmVkIGluIG91ciBydWxlcyBpbnN0ZWFkIG9mIGl0ZXJhdGluZ1xuICAgICAgICAvLyBvdmVyIHRoZSBpdGVtcy5cbiAgICAgICAgaWYgKHN0eWxlcyAmJiBzdHlsZXMubGVuZ3RoKVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhcnNlci5tYXRjaGVkU3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSB0aGlzLnBhcnNlci5tYXRjaGVkU3R5bGVzW2ldLCB2YWx1ZSA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYWZ0ZXIgPSB1bmRlZmluZWQ7Oykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGUgPSB0aGlzLnBhcnNlci5tYXRjaFN0eWxlKG5hbWUsIHZhbHVlLCB0aGlzLCBhZnRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJ1bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5pZ25vcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5jbGVhck1hcmspXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3MgPSBtYXJrcy5maWx0ZXIobSA9PiAhcnVsZS5jbGVhck1hcmsobSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtzID0gbWFya3MuY29uY2F0KHRoaXMucGFyc2VyLnNjaGVtYS5tYXJrc1tydWxlLm1hcmtdLmNyZWF0ZShydWxlLmF0dHJzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5jb25zdW1pbmcgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyID0gcnVsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFya3M7XG4gICAgfVxuICAgIC8vIExvb2sgdXAgYSBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gbm9kZS4gSWYgbm9uZSBhcmUgZm91bmQsIHJldHVyblxuICAgIC8vIGZhbHNlLiBPdGhlcndpc2UsIGFwcGx5IGl0LCB1c2UgaXRzIHJldHVybiB2YWx1ZSB0byBkcml2ZSB0aGUgd2F5XG4gICAgLy8gdGhlIG5vZGUncyBjb250ZW50IGlzIHdyYXBwZWQsIGFuZCByZXR1cm4gdHJ1ZS5cbiAgICBhZGRFbGVtZW50QnlSdWxlKGRvbSwgcnVsZSwgbWFya3MsIGNvbnRpbnVlQWZ0ZXIpIHtcbiAgICAgICAgbGV0IHN5bmMsIG5vZGVUeXBlO1xuICAgICAgICBpZiAocnVsZS5ub2RlKSB7XG4gICAgICAgICAgICBub2RlVHlwZSA9IHRoaXMucGFyc2VyLnNjaGVtYS5ub2Rlc1tydWxlLm5vZGVdO1xuICAgICAgICAgICAgaWYgKCFub2RlVHlwZS5pc0xlYWYpIHtcbiAgICAgICAgICAgICAgICBsZXQgaW5uZXIgPSB0aGlzLmVudGVyKG5vZGVUeXBlLCBydWxlLmF0dHJzIHx8IG51bGwsIG1hcmtzLCBydWxlLnByZXNlcnZlV2hpdGVzcGFjZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBtYXJrcyA9IGlubmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLmluc2VydE5vZGUobm9kZVR5cGUuY3JlYXRlKHJ1bGUuYXR0cnMpLCBtYXJrcywgZG9tLm5vZGVOYW1lID09IFwiQlJcIikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxlYWZGYWxsYmFjayhkb20sIG1hcmtzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBtYXJrVHlwZSA9IHRoaXMucGFyc2VyLnNjaGVtYS5tYXJrc1tydWxlLm1hcmtdO1xuICAgICAgICAgICAgbWFya3MgPSBtYXJrcy5jb25jYXQobWFya1R5cGUuY3JlYXRlKHJ1bGUuYXR0cnMpKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc3RhcnRJbiA9IHRoaXMudG9wO1xuICAgICAgICBpZiAobm9kZVR5cGUgJiYgbm9kZVR5cGUuaXNMZWFmKSB7XG4gICAgICAgICAgICB0aGlzLmZpbmRJbnNpZGUoZG9tKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb250aW51ZUFmdGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEVsZW1lbnQoZG9tLCBtYXJrcywgY29udGludWVBZnRlcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocnVsZS5nZXRDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbmRJbnNpZGUoZG9tKTtcbiAgICAgICAgICAgIHJ1bGUuZ2V0Q29udGVudChkb20sIHRoaXMucGFyc2VyLnNjaGVtYSkuZm9yRWFjaChub2RlID0+IHRoaXMuaW5zZXJ0Tm9kZShub2RlLCBtYXJrcywgZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBjb250ZW50RE9NID0gZG9tO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBydWxlLmNvbnRlbnRFbGVtZW50ID09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgY29udGVudERPTSA9IGRvbS5xdWVyeVNlbGVjdG9yKHJ1bGUuY29udGVudEVsZW1lbnQpO1xuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHJ1bGUuY29udGVudEVsZW1lbnQgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgIGNvbnRlbnRET00gPSBydWxlLmNvbnRlbnRFbGVtZW50KGRvbSk7XG4gICAgICAgICAgICBlbHNlIGlmIChydWxlLmNvbnRlbnRFbGVtZW50KVxuICAgICAgICAgICAgICAgIGNvbnRlbnRET00gPSBydWxlLmNvbnRlbnRFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5maW5kQXJvdW5kKGRvbSwgY29udGVudERPTSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmFkZEFsbChjb250ZW50RE9NLCBtYXJrcyk7XG4gICAgICAgICAgICB0aGlzLmZpbmRBcm91bmQoZG9tLCBjb250ZW50RE9NLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN5bmMgJiYgdGhpcy5zeW5jKHN0YXJ0SW4pKVxuICAgICAgICAgICAgdGhpcy5vcGVuLS07XG4gICAgfVxuICAgIC8vIEFkZCBhbGwgY2hpbGQgbm9kZXMgYmV0d2VlbiBgc3RhcnRJbmRleGAgYW5kIGBlbmRJbmRleGAgKG9yIHRoZVxuICAgIC8vIHdob2xlIG5vZGUsIGlmIG5vdCBnaXZlbikuIElmIGBzeW5jYCBpcyBwYXNzZWQsIHVzZSBpdCB0b1xuICAgIC8vIHN5bmNocm9uaXplIGFmdGVyIGV2ZXJ5IGJsb2NrIGVsZW1lbnQuXG4gICAgYWRkQWxsKHBhcmVudCwgbWFya3MsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSB7XG4gICAgICAgIGxldCBpbmRleCA9IHN0YXJ0SW5kZXggfHwgMDtcbiAgICAgICAgZm9yIChsZXQgZG9tID0gc3RhcnRJbmRleCA/IHBhcmVudC5jaGlsZE5vZGVzW3N0YXJ0SW5kZXhdIDogcGFyZW50LmZpcnN0Q2hpbGQsIGVuZCA9IGVuZEluZGV4ID09IG51bGwgPyBudWxsIDogcGFyZW50LmNoaWxkTm9kZXNbZW5kSW5kZXhdOyBkb20gIT0gZW5kOyBkb20gPSBkb20ubmV4dFNpYmxpbmcsICsraW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuZmluZEF0UG9pbnQocGFyZW50LCBpbmRleCk7XG4gICAgICAgICAgICB0aGlzLmFkZERPTShkb20sIG1hcmtzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbmRBdFBvaW50KHBhcmVudCwgaW5kZXgpO1xuICAgIH1cbiAgICAvLyBUcnkgdG8gZmluZCBhIHdheSB0byBmaXQgdGhlIGdpdmVuIG5vZGUgdHlwZSBpbnRvIHRoZSBjdXJyZW50XG4gICAgLy8gY29udGV4dC4gTWF5IGFkZCBpbnRlcm1lZGlhdGUgd3JhcHBlcnMgYW5kL29yIGxlYXZlIG5vbi1zb2xpZFxuICAgIC8vIG5vZGVzIHRoYXQgd2UncmUgaW4uXG4gICAgZmluZFBsYWNlKG5vZGUsIG1hcmtzLCBjYXV0aW91cykge1xuICAgICAgICBsZXQgcm91dGUsIHN5bmM7XG4gICAgICAgIGZvciAobGV0IGRlcHRoID0gdGhpcy5vcGVuLCBwZW5hbHR5ID0gMDsgZGVwdGggPj0gMDsgZGVwdGgtLSkge1xuICAgICAgICAgICAgbGV0IGN4ID0gdGhpcy5ub2Rlc1tkZXB0aF07XG4gICAgICAgICAgICBsZXQgZm91bmQgPSBjeC5maW5kV3JhcHBpbmcobm9kZSk7XG4gICAgICAgICAgICBpZiAoZm91bmQgJiYgKCFyb3V0ZSB8fCByb3V0ZS5sZW5ndGggPiBmb3VuZC5sZW5ndGggKyBwZW5hbHR5KSkge1xuICAgICAgICAgICAgICAgIHJvdXRlID0gZm91bmQ7XG4gICAgICAgICAgICAgICAgc3luYyA9IGN4O1xuICAgICAgICAgICAgICAgIGlmICghZm91bmQubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjeC5zb2xpZCkge1xuICAgICAgICAgICAgICAgIGlmIChjYXV0aW91cylcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgcGVuYWx0eSArPSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghcm91dGUpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgdGhpcy5zeW5jKHN5bmMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdXRlLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgbWFya3MgPSB0aGlzLmVudGVySW5uZXIocm91dGVbaV0sIG51bGwsIG1hcmtzLCBmYWxzZSk7XG4gICAgICAgIHJldHVybiBtYXJrcztcbiAgICB9XG4gICAgLy8gVHJ5IHRvIGluc2VydCB0aGUgZ2l2ZW4gbm9kZSwgYWRqdXN0aW5nIHRoZSBjb250ZXh0IHdoZW4gbmVlZGVkLlxuICAgIGluc2VydE5vZGUobm9kZSwgbWFya3MsIGNhdXRpb3VzKSB7XG4gICAgICAgIGlmIChub2RlLmlzSW5saW5lICYmIHRoaXMubmVlZHNCbG9jayAmJiAhdGhpcy50b3AudHlwZSkge1xuICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy50ZXh0YmxvY2tGcm9tQ29udGV4dCgpO1xuICAgICAgICAgICAgaWYgKGJsb2NrKVxuICAgICAgICAgICAgICAgIG1hcmtzID0gdGhpcy5lbnRlcklubmVyKGJsb2NrLCBudWxsLCBtYXJrcyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlubmVyTWFya3MgPSB0aGlzLmZpbmRQbGFjZShub2RlLCBtYXJrcywgY2F1dGlvdXMpO1xuICAgICAgICBpZiAoaW5uZXJNYXJrcykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUV4dHJhKCk7XG4gICAgICAgICAgICBsZXQgdG9wID0gdGhpcy50b3A7XG4gICAgICAgICAgICBpZiAodG9wLm1hdGNoKVxuICAgICAgICAgICAgICAgIHRvcC5tYXRjaCA9IHRvcC5tYXRjaC5tYXRjaFR5cGUobm9kZS50eXBlKTtcbiAgICAgICAgICAgIGxldCBub2RlTWFya3MgPSBNYXJrLm5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBtIG9mIGlubmVyTWFya3MuY29uY2F0KG5vZGUubWFya3MpKVxuICAgICAgICAgICAgICAgIGlmICh0b3AudHlwZSA/IHRvcC50eXBlLmFsbG93c01hcmtUeXBlKG0udHlwZSkgOiBtYXJrTWF5QXBwbHkobS50eXBlLCBub2RlLnR5cGUpKVxuICAgICAgICAgICAgICAgICAgICBub2RlTWFya3MgPSBtLmFkZFRvU2V0KG5vZGVNYXJrcyk7XG4gICAgICAgICAgICB0b3AuY29udGVudC5wdXNoKG5vZGUubWFyayhub2RlTWFya3MpKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gVHJ5IHRvIHN0YXJ0IGEgbm9kZSBvZiB0aGUgZ2l2ZW4gdHlwZSwgYWRqdXN0aW5nIHRoZSBjb250ZXh0IHdoZW5cbiAgICAvLyBuZWNlc3NhcnkuXG4gICAgZW50ZXIodHlwZSwgYXR0cnMsIG1hcmtzLCBwcmVzZXJ2ZVdTKSB7XG4gICAgICAgIGxldCBpbm5lck1hcmtzID0gdGhpcy5maW5kUGxhY2UodHlwZS5jcmVhdGUoYXR0cnMpLCBtYXJrcywgZmFsc2UpO1xuICAgICAgICBpZiAoaW5uZXJNYXJrcylcbiAgICAgICAgICAgIGlubmVyTWFya3MgPSB0aGlzLmVudGVySW5uZXIodHlwZSwgYXR0cnMsIG1hcmtzLCB0cnVlLCBwcmVzZXJ2ZVdTKTtcbiAgICAgICAgcmV0dXJuIGlubmVyTWFya3M7XG4gICAgfVxuICAgIC8vIE9wZW4gYSBub2RlIG9mIHRoZSBnaXZlbiB0eXBlXG4gICAgZW50ZXJJbm5lcih0eXBlLCBhdHRycywgbWFya3MsIHNvbGlkID0gZmFsc2UsIHByZXNlcnZlV1MpIHtcbiAgICAgICAgdGhpcy5jbG9zZUV4dHJhKCk7XG4gICAgICAgIGxldCB0b3AgPSB0aGlzLnRvcDtcbiAgICAgICAgdG9wLm1hdGNoID0gdG9wLm1hdGNoICYmIHRvcC5tYXRjaC5tYXRjaFR5cGUodHlwZSk7XG4gICAgICAgIGxldCBvcHRpb25zID0gd3NPcHRpb25zRm9yKHR5cGUsIHByZXNlcnZlV1MsIHRvcC5vcHRpb25zKTtcbiAgICAgICAgaWYgKCh0b3Aub3B0aW9ucyAmIE9QVF9PUEVOX0xFRlQpICYmIHRvcC5jb250ZW50Lmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgb3B0aW9ucyB8PSBPUFRfT1BFTl9MRUZUO1xuICAgICAgICBsZXQgYXBwbHlNYXJrcyA9IE1hcmsubm9uZTtcbiAgICAgICAgbWFya3MgPSBtYXJrcy5maWx0ZXIobSA9PiB7XG4gICAgICAgICAgICBpZiAodG9wLnR5cGUgPyB0b3AudHlwZS5hbGxvd3NNYXJrVHlwZShtLnR5cGUpIDogbWFya01heUFwcGx5KG0udHlwZSwgdHlwZSkpIHtcbiAgICAgICAgICAgICAgICBhcHBseU1hcmtzID0gbS5hZGRUb1NldChhcHBseU1hcmtzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubm9kZXMucHVzaChuZXcgTm9kZUNvbnRleHQodHlwZSwgYXR0cnMsIGFwcGx5TWFya3MsIHNvbGlkLCBudWxsLCBvcHRpb25zKSk7XG4gICAgICAgIHRoaXMub3BlbisrO1xuICAgICAgICByZXR1cm4gbWFya3M7XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSBhbGwgbm9kZXMgYWJvdmUgdGhpcy5vcGVuIGFyZSBmaW5pc2hlZCBhbmQgYWRkZWQgdG9cbiAgICAvLyB0aGVpciBwYXJlbnRzXG4gICAgY2xvc2VFeHRyYShvcGVuRW5kID0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzLm5vZGVzLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChpID4gdGhpcy5vcGVuKSB7XG4gICAgICAgICAgICBmb3IgKDsgaSA+IHRoaXMub3BlbjsgaS0tKVxuICAgICAgICAgICAgICAgIHRoaXMubm9kZXNbaSAtIDFdLmNvbnRlbnQucHVzaCh0aGlzLm5vZGVzW2ldLmZpbmlzaChvcGVuRW5kKSk7XG4gICAgICAgICAgICB0aGlzLm5vZGVzLmxlbmd0aCA9IHRoaXMub3BlbiArIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmluaXNoKCkge1xuICAgICAgICB0aGlzLm9wZW4gPSAwO1xuICAgICAgICB0aGlzLmNsb3NlRXh0cmEodGhpcy5pc09wZW4pO1xuICAgICAgICByZXR1cm4gdGhpcy5ub2Rlc1swXS5maW5pc2goISEodGhpcy5pc09wZW4gfHwgdGhpcy5vcHRpb25zLnRvcE9wZW4pKTtcbiAgICB9XG4gICAgc3luYyh0bykge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5vcGVuOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubm9kZXNbaV0gPT0gdG8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5sb2NhbFByZXNlcnZlV1MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVzW2ldLm9wdGlvbnMgfD0gT1BUX1BSRVNFUlZFX1dTO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnRQb3MoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VFeHRyYSgpO1xuICAgICAgICBsZXQgcG9zID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbjsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gdGhpcy5ub2Rlc1tpXS5jb250ZW50O1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGNvbnRlbnQubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pXG4gICAgICAgICAgICAgICAgcG9zICs9IGNvbnRlbnRbal0ubm9kZVNpemU7XG4gICAgICAgICAgICBpZiAoaSlcbiAgICAgICAgICAgICAgICBwb3MrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcG9zO1xuICAgIH1cbiAgICBmaW5kQXRQb2ludChwYXJlbnQsIG9mZnNldCkge1xuICAgICAgICBpZiAodGhpcy5maW5kKVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZpbmQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maW5kW2ldLm5vZGUgPT0gcGFyZW50ICYmIHRoaXMuZmluZFtpXS5vZmZzZXQgPT0gb2Zmc2V0KVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRbaV0ucG9zID0gdGhpcy5jdXJyZW50UG9zO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kSW5zaWRlKHBhcmVudCkge1xuICAgICAgICBpZiAodGhpcy5maW5kKVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZpbmQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maW5kW2ldLnBvcyA9PSBudWxsICYmIHBhcmVudC5ub2RlVHlwZSA9PSAxICYmIHBhcmVudC5jb250YWlucyh0aGlzLmZpbmRbaV0ubm9kZSkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZFtpXS5wb3MgPSB0aGlzLmN1cnJlbnRQb3M7XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIGZpbmRBcm91bmQocGFyZW50LCBjb250ZW50LCBiZWZvcmUpIHtcbiAgICAgICAgaWYgKHBhcmVudCAhPSBjb250ZW50ICYmIHRoaXMuZmluZClcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maW5kLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmluZFtpXS5wb3MgPT0gbnVsbCAmJiBwYXJlbnQubm9kZVR5cGUgPT0gMSAmJiBwYXJlbnQuY29udGFpbnModGhpcy5maW5kW2ldLm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSBjb250ZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMuZmluZFtpXS5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyAmIChiZWZvcmUgPyAyIDogNCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRbaV0ucG9zID0gdGhpcy5jdXJyZW50UG9zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgZmluZEluVGV4dCh0ZXh0Tm9kZSkge1xuICAgICAgICBpZiAodGhpcy5maW5kKVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZpbmQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maW5kW2ldLm5vZGUgPT0gdGV4dE5vZGUpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZFtpXS5wb3MgPSB0aGlzLmN1cnJlbnRQb3MgLSAodGV4dE5vZGUubm9kZVZhbHVlLmxlbmd0aCAtIHRoaXMuZmluZFtpXS5vZmZzZXQpO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIGNvbnRleHQgc3RyaW5nIG1hdGNoZXMgdGhpcyBjb250ZXh0LlxuICAgIG1hdGNoZXNDb250ZXh0KGNvbnRleHQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQuaW5kZXhPZihcInxcIikgPiAtMSlcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnNwbGl0KC9cXHMqXFx8XFxzKi8pLnNvbWUodGhpcy5tYXRjaGVzQ29udGV4dCwgdGhpcyk7XG4gICAgICAgIGxldCBwYXJ0cyA9IGNvbnRleHQuc3BsaXQoXCIvXCIpO1xuICAgICAgICBsZXQgb3B0aW9uID0gdGhpcy5vcHRpb25zLmNvbnRleHQ7XG4gICAgICAgIGxldCB1c2VSb290ID0gIXRoaXMuaXNPcGVuICYmICghb3B0aW9uIHx8IG9wdGlvbi5wYXJlbnQudHlwZSA9PSB0aGlzLm5vZGVzWzBdLnR5cGUpO1xuICAgICAgICBsZXQgbWluRGVwdGggPSAtKG9wdGlvbiA/IG9wdGlvbi5kZXB0aCArIDEgOiAwKSArICh1c2VSb290ID8gMCA6IDEpO1xuICAgICAgICBsZXQgbWF0Y2ggPSAoaSwgZGVwdGgpID0+IHtcbiAgICAgICAgICAgIGZvciAoOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJ0ID0gcGFydHNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHBhcnQgPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBwYXJ0cy5sZW5ndGggLSAxIHx8IGkgPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZGVwdGggPj0gbWluRGVwdGg7IGRlcHRoLS0pXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2goaSAtIDEsIGRlcHRoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5leHQgPSBkZXB0aCA+IDAgfHwgKGRlcHRoID09IDAgJiYgdXNlUm9vdCkgPyB0aGlzLm5vZGVzW2RlcHRoXS50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG9wdGlvbiAmJiBkZXB0aCA+PSBtaW5EZXB0aCA/IG9wdGlvbi5ub2RlKGRlcHRoIC0gbWluRGVwdGgpLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCB8fCAobmV4dC5uYW1lICE9IHBhcnQgJiYgIW5leHQuaXNJbkdyb3VwKHBhcnQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZGVwdGgtLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG1hdGNoKHBhcnRzLmxlbmd0aCAtIDEsIHRoaXMub3Blbik7XG4gICAgfVxuICAgIHRleHRibG9ja0Zyb21Db250ZXh0KCkge1xuICAgICAgICBsZXQgJGNvbnRleHQgPSB0aGlzLm9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKCRjb250ZXh0KVxuICAgICAgICAgICAgZm9yIChsZXQgZCA9ICRjb250ZXh0LmRlcHRoOyBkID49IDA7IGQtLSkge1xuICAgICAgICAgICAgICAgIGxldCBkZWZsdCA9ICRjb250ZXh0Lm5vZGUoZCkuY29udGVudE1hdGNoQXQoJGNvbnRleHQuaW5kZXhBZnRlcihkKSkuZGVmYXVsdFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKGRlZmx0ICYmIGRlZmx0LmlzVGV4dGJsb2NrICYmIGRlZmx0LmRlZmF1bHRBdHRycylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmx0O1xuICAgICAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBuYW1lIGluIHRoaXMucGFyc2VyLnNjaGVtYS5ub2Rlcykge1xuICAgICAgICAgICAgbGV0IHR5cGUgPSB0aGlzLnBhcnNlci5zY2hlbWEubm9kZXNbbmFtZV07XG4gICAgICAgICAgICBpZiAodHlwZS5pc1RleHRibG9jayAmJiB0eXBlLmRlZmF1bHRBdHRycylcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIEtsdWRnZSB0byB3b3JrIGFyb3VuZCBkaXJlY3RseSBuZXN0ZWQgbGlzdCBub2RlcyBwcm9kdWNlZCBieSBzb21lXG4vLyB0b29scyBhbmQgYWxsb3dlZCBieSBicm93c2VycyB0byBtZWFuIHRoYXQgdGhlIG5lc3RlZCBsaXN0IGlzXG4vLyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBsaXN0IGl0ZW0gYWJvdmUgaXQuXG5mdW5jdGlvbiBub3JtYWxpemVMaXN0KGRvbSkge1xuICAgIGZvciAobGV0IGNoaWxkID0gZG9tLmZpcnN0Q2hpbGQsIHByZXZJdGVtID0gbnVsbDsgY2hpbGQ7IGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgbGV0IG5hbWUgPSBjaGlsZC5ub2RlVHlwZSA9PSAxID8gY2hpbGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA6IG51bGw7XG4gICAgICAgIGlmIChuYW1lICYmIGxpc3RUYWdzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHByZXZJdGVtKSB7XG4gICAgICAgICAgICBwcmV2SXRlbS5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgICAgICAgICBjaGlsZCA9IHByZXZJdGVtO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gXCJsaVwiKSB7XG4gICAgICAgICAgICBwcmV2SXRlbSA9IGNoaWxkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIHByZXZJdGVtID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIEFwcGx5IGEgQ1NTIHNlbGVjdG9yLlxuZnVuY3Rpb24gbWF0Y2hlcyhkb20sIHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIChkb20ubWF0Y2hlcyB8fCBkb20ubXNNYXRjaGVzU2VsZWN0b3IgfHwgZG9tLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBkb20ubW96TWF0Y2hlc1NlbGVjdG9yKS5jYWxsKGRvbSwgc2VsZWN0b3IpO1xufVxuZnVuY3Rpb24gY29weShvYmopIHtcbiAgICBsZXQgY29weSA9IHt9O1xuICAgIGZvciAobGV0IHByb3AgaW4gb2JqKVxuICAgICAgICBjb3B5W3Byb3BdID0gb2JqW3Byb3BdO1xuICAgIHJldHVybiBjb3B5O1xufVxuLy8gVXNlZCB3aGVuIGZpbmRpbmcgYSBtYXJrIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBmcmFnbWVudCBwYXJzZS5cbi8vIENoZWNrcyB3aGV0aGVyIGl0IHdvdWxkIGJlIHJlYXNvbmFibGUgdG8gYXBwbHkgYSBnaXZlbiBtYXJrIHR5cGUgdG9cbi8vIGEgZ2l2ZW4gbm9kZSwgYnkgbG9va2luZyBhdCB0aGUgd2F5IHRoZSBtYXJrIG9jY3VycyBpbiB0aGUgc2NoZW1hLlxuZnVuY3Rpb24gbWFya01heUFwcGx5KG1hcmtUeXBlLCBub2RlVHlwZSkge1xuICAgIGxldCBub2RlcyA9IG5vZGVUeXBlLnNjaGVtYS5ub2RlcztcbiAgICBmb3IgKGxldCBuYW1lIGluIG5vZGVzKSB7XG4gICAgICAgIGxldCBwYXJlbnQgPSBub2Rlc1tuYW1lXTtcbiAgICAgICAgaWYgKCFwYXJlbnQuYWxsb3dzTWFya1R5cGUobWFya1R5cGUpKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGxldCBzZWVuID0gW10sIHNjYW4gPSAobWF0Y2gpID0+IHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChtYXRjaCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoLmVkZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHsgdHlwZSwgbmV4dCB9ID0gbWF0Y2guZWRnZShpKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBub2RlVHlwZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHNlZW4uaW5kZXhPZihuZXh0KSA8IDAgJiYgc2NhbihuZXh0KSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmIChzY2FuKHBhcmVudC5jb250ZW50TWF0Y2gpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuXG4vKipcbkEgRE9NIHNlcmlhbGl6ZXIga25vd3MgaG93IHRvIGNvbnZlcnQgUHJvc2VNaXJyb3Igbm9kZXMgYW5kXG5tYXJrcyBvZiB2YXJpb3VzIHR5cGVzIHRvIERPTSBub2Rlcy5cbiovXG5jbGFzcyBET01TZXJpYWxpemVyIHtcbiAgICAvKipcbiAgICBDcmVhdGUgYSBzZXJpYWxpemVyLiBgbm9kZXNgIHNob3VsZCBtYXAgbm9kZSBuYW1lcyB0byBmdW5jdGlvbnNcbiAgICB0aGF0IHRha2UgYSBub2RlIGFuZCByZXR1cm4gYSBkZXNjcmlwdGlvbiBvZiB0aGUgY29ycmVzcG9uZGluZ1xuICAgIERPTS4gYG1hcmtzYCBkb2VzIHRoZSBzYW1lIGZvciBtYXJrIG5hbWVzLCBidXQgYWxzbyBnZXRzIGFuXG4gICAgYXJndW1lbnQgdGhhdCB0ZWxscyBpdCB3aGV0aGVyIHRoZSBtYXJrJ3MgY29udGVudCBpcyBibG9jayBvclxuICAgIGlubGluZSBjb250ZW50IChmb3IgdHlwaWNhbCB1c2UsIGl0J2xsIGFsd2F5cyBiZSBpbmxpbmUpLiBBIG1hcmtcbiAgICBzZXJpYWxpemVyIG1heSBiZSBgbnVsbGAgdG8gaW5kaWNhdGUgdGhhdCBtYXJrcyBvZiB0aGF0IHR5cGVcbiAgICBzaG91bGQgbm90IGJlIHNlcmlhbGl6ZWQuXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICBUaGUgbm9kZSBzZXJpYWxpemF0aW9uIGZ1bmN0aW9ucy5cbiAgICAqL1xuICAgIG5vZGVzLCBcbiAgICAvKipcbiAgICBUaGUgbWFyayBzZXJpYWxpemF0aW9uIGZ1bmN0aW9ucy5cbiAgICAqL1xuICAgIG1hcmtzKSB7XG4gICAgICAgIHRoaXMubm9kZXMgPSBub2RlcztcbiAgICAgICAgdGhpcy5tYXJrcyA9IG1hcmtzO1xuICAgIH1cbiAgICAvKipcbiAgICBTZXJpYWxpemUgdGhlIGNvbnRlbnQgb2YgdGhpcyBmcmFnbWVudCB0byBhIERPTSBmcmFnbWVudC4gV2hlblxuICAgIG5vdCBpbiB0aGUgYnJvd3NlciwgdGhlIGBkb2N1bWVudGAgb3B0aW9uLCBjb250YWluaW5nIGEgRE9NXG4gICAgZG9jdW1lbnQsIHNob3VsZCBiZSBwYXNzZWQgc28gdGhhdCB0aGUgc2VyaWFsaXplciBjYW4gY3JlYXRlXG4gICAgbm9kZXMuXG4gICAgKi9cbiAgICBzZXJpYWxpemVGcmFnbWVudChmcmFnbWVudCwgb3B0aW9ucyA9IHt9LCB0YXJnZXQpIHtcbiAgICAgICAgaWYgKCF0YXJnZXQpXG4gICAgICAgICAgICB0YXJnZXQgPSBkb2Mob3B0aW9ucykuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICBsZXQgdG9wID0gdGFyZ2V0LCBhY3RpdmUgPSBbXTtcbiAgICAgICAgZnJhZ21lbnQuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGlmIChhY3RpdmUubGVuZ3RoIHx8IG5vZGUubWFya3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGtlZXAgPSAwLCByZW5kZXJlZCA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGtlZXAgPCBhY3RpdmUubGVuZ3RoICYmIHJlbmRlcmVkIDwgbm9kZS5tYXJrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5leHQgPSBub2RlLm1hcmtzW3JlbmRlcmVkXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1hcmtzW25leHQudHlwZS5uYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZWQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dC5lcShhY3RpdmVba2VlcF1bMF0pIHx8IG5leHQudHlwZS5zcGVjLnNwYW5uaW5nID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBrZWVwKys7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcmVkKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdoaWxlIChrZWVwIDwgYWN0aXZlLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdG9wID0gYWN0aXZlLnBvcCgpWzFdO1xuICAgICAgICAgICAgICAgIHdoaWxlIChyZW5kZXJlZCA8IG5vZGUubWFya3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhZGQgPSBub2RlLm1hcmtzW3JlbmRlcmVkKytdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWFya0RPTSA9IHRoaXMuc2VyaWFsaXplTWFyayhhZGQsIG5vZGUuaXNJbmxpbmUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWFya0RPTSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLnB1c2goW2FkZCwgdG9wXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3AuYXBwZW5kQ2hpbGQobWFya0RPTS5kb20pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gbWFya0RPTS5jb250ZW50RE9NIHx8IG1hcmtET00uZG9tO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9wLmFwcGVuZENoaWxkKHRoaXMuc2VyaWFsaXplTm9kZUlubmVyKG5vZGUsIG9wdGlvbnMpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgc2VyaWFsaXplTm9kZUlubmVyKG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IHsgZG9tLCBjb250ZW50RE9NIH0gPSByZW5kZXJTcGVjKGRvYyhvcHRpb25zKSwgdGhpcy5ub2Rlc1tub2RlLnR5cGUubmFtZV0obm9kZSksIG51bGwsIG5vZGUuYXR0cnMpO1xuICAgICAgICBpZiAoY29udGVudERPTSkge1xuICAgICAgICAgICAgaWYgKG5vZGUuaXNMZWFmKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiQ29udGVudCBob2xlIG5vdCBhbGxvd2VkIGluIGEgbGVhZiBub2RlIHNwZWNcIik7XG4gICAgICAgICAgICB0aGlzLnNlcmlhbGl6ZUZyYWdtZW50KG5vZGUuY29udGVudCwgb3B0aW9ucywgY29udGVudERPTSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRvbTtcbiAgICB9XG4gICAgLyoqXG4gICAgU2VyaWFsaXplIHRoaXMgbm9kZSB0byBhIERPTSBub2RlLiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiB5b3VcbiAgICBuZWVkIHRvIHNlcmlhbGl6ZSBhIHBhcnQgb2YgYSBkb2N1bWVudCwgYXMgb3Bwb3NlZCB0byB0aGUgd2hvbGVcbiAgICBkb2N1bWVudC4gVG8gc2VyaWFsaXplIGEgd2hvbGUgZG9jdW1lbnQsIHVzZVxuICAgIFtgc2VyaWFsaXplRnJhZ21lbnRgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuRE9NU2VyaWFsaXplci5zZXJpYWxpemVGcmFnbWVudCkgb25cbiAgICBpdHMgW2NvbnRlbnRdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlLmNvbnRlbnQpLlxuICAgICovXG4gICAgc2VyaWFsaXplTm9kZShub2RlLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgbGV0IGRvbSA9IHRoaXMuc2VyaWFsaXplTm9kZUlubmVyKG5vZGUsIG9wdGlvbnMpO1xuICAgICAgICBmb3IgKGxldCBpID0gbm9kZS5tYXJrcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IHdyYXAgPSB0aGlzLnNlcmlhbGl6ZU1hcmsobm9kZS5tYXJrc1tpXSwgbm9kZS5pc0lubGluZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAod3JhcCkge1xuICAgICAgICAgICAgICAgICh3cmFwLmNvbnRlbnRET00gfHwgd3JhcC5kb20pLmFwcGVuZENoaWxkKGRvbSk7XG4gICAgICAgICAgICAgICAgZG9tID0gd3JhcC5kb207XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRvbTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzZXJpYWxpemVNYXJrKG1hcmssIGlubGluZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGxldCB0b0RPTSA9IHRoaXMubWFya3NbbWFyay50eXBlLm5hbWVdO1xuICAgICAgICByZXR1cm4gdG9ET00gJiYgcmVuZGVyU3BlYyhkb2Mob3B0aW9ucyksIHRvRE9NKG1hcmssIGlubGluZSksIG51bGwsIG1hcmsuYXR0cnMpO1xuICAgIH1cbiAgICBzdGF0aWMgcmVuZGVyU3BlYyhkb2MsIHN0cnVjdHVyZSwgeG1sTlMgPSBudWxsLCBibG9ja0FycmF5c0luKSB7XG4gICAgICAgIHJldHVybiByZW5kZXJTcGVjKGRvYywgc3RydWN0dXJlLCB4bWxOUywgYmxvY2tBcnJheXNJbik7XG4gICAgfVxuICAgIC8qKlxuICAgIEJ1aWxkIGEgc2VyaWFsaXplciB1c2luZyB0aGUgW2B0b0RPTWBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlU3BlYy50b0RPTSlcbiAgICBwcm9wZXJ0aWVzIGluIGEgc2NoZW1hJ3Mgbm9kZSBhbmQgbWFyayBzcGVjcy5cbiAgICAqL1xuICAgIHN0YXRpYyBmcm9tU2NoZW1hKHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gc2NoZW1hLmNhY2hlZC5kb21TZXJpYWxpemVyIHx8XG4gICAgICAgICAgICAoc2NoZW1hLmNhY2hlZC5kb21TZXJpYWxpemVyID0gbmV3IERPTVNlcmlhbGl6ZXIodGhpcy5ub2Rlc0Zyb21TY2hlbWEoc2NoZW1hKSwgdGhpcy5tYXJrc0Zyb21TY2hlbWEoc2NoZW1hKSkpO1xuICAgIH1cbiAgICAvKipcbiAgICBHYXRoZXIgdGhlIHNlcmlhbGl6ZXJzIGluIGEgc2NoZW1hJ3Mgbm9kZSBzcGVjcyBpbnRvIGFuIG9iamVjdC5cbiAgICBUaGlzIGNhbiBiZSB1c2VmdWwgYXMgYSBiYXNlIHRvIGJ1aWxkIGEgY3VzdG9tIHNlcmlhbGl6ZXIgZnJvbS5cbiAgICAqL1xuICAgIHN0YXRpYyBub2Rlc0Zyb21TY2hlbWEoc2NoZW1hKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBnYXRoZXJUb0RPTShzY2hlbWEubm9kZXMpO1xuICAgICAgICBpZiAoIXJlc3VsdC50ZXh0KVxuICAgICAgICAgICAgcmVzdWx0LnRleHQgPSBub2RlID0+IG5vZGUudGV4dDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgR2F0aGVyIHRoZSBzZXJpYWxpemVycyBpbiBhIHNjaGVtYSdzIG1hcmsgc3BlY3MgaW50byBhbiBvYmplY3QuXG4gICAgKi9cbiAgICBzdGF0aWMgbWFya3NGcm9tU2NoZW1hKHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gZ2F0aGVyVG9ET00oc2NoZW1hLm1hcmtzKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnYXRoZXJUb0RPTShvYmopIHtcbiAgICBsZXQgcmVzdWx0ID0ge307XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvYmopIHtcbiAgICAgICAgbGV0IHRvRE9NID0gb2JqW25hbWVdLnNwZWMudG9ET007XG4gICAgICAgIGlmICh0b0RPTSlcbiAgICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IHRvRE9NO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZG9jKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5kb2N1bWVudCB8fCB3aW5kb3cuZG9jdW1lbnQ7XG59XG5jb25zdCBzdXNwaWNpb3VzQXR0cmlidXRlQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gc3VzcGljaW91c0F0dHJpYnV0ZXMoYXR0cnMpIHtcbiAgICBsZXQgdmFsdWUgPSBzdXNwaWNpb3VzQXR0cmlidXRlQ2FjaGUuZ2V0KGF0dHJzKTtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgc3VzcGljaW91c0F0dHJpYnV0ZUNhY2hlLnNldChhdHRycywgdmFsdWUgPSBzdXNwaWNpb3VzQXR0cmlidXRlc0lubmVyKGF0dHJzKSk7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gc3VzcGljaW91c0F0dHJpYnV0ZXNJbm5lcihhdHRycykge1xuICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgIGZ1bmN0aW9uIHNjYW4odmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlWzBdID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4odmFsdWVbaV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIHNjYW4odmFsdWVbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNjYW4oYXR0cnMpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiByZW5kZXJTcGVjKGRvYywgc3RydWN0dXJlLCB4bWxOUywgYmxvY2tBcnJheXNJbikge1xuICAgIGlmICh0eXBlb2Ygc3RydWN0dXJlID09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiB7IGRvbTogZG9jLmNyZWF0ZVRleHROb2RlKHN0cnVjdHVyZSkgfTtcbiAgICBpZiAoc3RydWN0dXJlLm5vZGVUeXBlICE9IG51bGwpXG4gICAgICAgIHJldHVybiB7IGRvbTogc3RydWN0dXJlIH07XG4gICAgaWYgKHN0cnVjdHVyZS5kb20gJiYgc3RydWN0dXJlLmRvbS5ub2RlVHlwZSAhPSBudWxsKVxuICAgICAgICByZXR1cm4gc3RydWN0dXJlO1xuICAgIGxldCB0YWdOYW1lID0gc3RydWN0dXJlWzBdLCBzdXNwaWNpb3VzO1xuICAgIGlmICh0eXBlb2YgdGFnTmFtZSAhPSBcInN0cmluZ1wiKVxuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkludmFsaWQgYXJyYXkgcGFzc2VkIHRvIHJlbmRlclNwZWNcIik7XG4gICAgaWYgKGJsb2NrQXJyYXlzSW4gJiYgKHN1c3BpY2lvdXMgPSBzdXNwaWNpb3VzQXR0cmlidXRlcyhibG9ja0FycmF5c0luKSkgJiZcbiAgICAgICAgc3VzcGljaW91cy5pbmRleE9mKHN0cnVjdHVyZSkgPiAtMSlcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJVc2luZyBhbiBhcnJheSBmcm9tIGFuIGF0dHJpYnV0ZSBvYmplY3QgYXMgYSBET00gc3BlYy4gVGhpcyBtYXkgYmUgYW4gYXR0ZW1wdGVkIGNyb3NzIHNpdGUgc2NyaXB0aW5nIGF0dGFjay5cIik7XG4gICAgbGV0IHNwYWNlID0gdGFnTmFtZS5pbmRleE9mKFwiIFwiKTtcbiAgICBpZiAoc3BhY2UgPiAwKSB7XG4gICAgICAgIHhtbE5TID0gdGFnTmFtZS5zbGljZSgwLCBzcGFjZSk7XG4gICAgICAgIHRhZ05hbWUgPSB0YWdOYW1lLnNsaWNlKHNwYWNlICsgMSk7XG4gICAgfVxuICAgIGxldCBjb250ZW50RE9NO1xuICAgIGxldCBkb20gPSAoeG1sTlMgPyBkb2MuY3JlYXRlRWxlbWVudE5TKHhtbE5TLCB0YWdOYW1lKSA6IGRvYy5jcmVhdGVFbGVtZW50KHRhZ05hbWUpKTtcbiAgICBsZXQgYXR0cnMgPSBzdHJ1Y3R1cmVbMV0sIHN0YXJ0ID0gMTtcbiAgICBpZiAoYXR0cnMgJiYgdHlwZW9mIGF0dHJzID09IFwib2JqZWN0XCIgJiYgYXR0cnMubm9kZVR5cGUgPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShhdHRycykpIHtcbiAgICAgICAgc3RhcnQgPSAyO1xuICAgICAgICBmb3IgKGxldCBuYW1lIGluIGF0dHJzKVxuICAgICAgICAgICAgaWYgKGF0dHJzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3BhY2UgPSBuYW1lLmluZGV4T2YoXCIgXCIpO1xuICAgICAgICAgICAgICAgIGlmIChzcGFjZSA+IDApXG4gICAgICAgICAgICAgICAgICAgIGRvbS5zZXRBdHRyaWJ1dGVOUyhuYW1lLnNsaWNlKDAsIHNwYWNlKSwgbmFtZS5zbGljZShzcGFjZSArIDEpLCBhdHRyc1tuYW1lXSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSBcInN0eWxlXCIgJiYgZG9tLnN0eWxlKVxuICAgICAgICAgICAgICAgICAgICBkb20uc3R5bGUuY3NzVGV4dCA9IGF0dHJzW25hbWVdO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZG9tLnNldEF0dHJpYnV0ZShuYW1lLCBhdHRyc1tuYW1lXSk7XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IHN0cnVjdHVyZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgY2hpbGQgPSBzdHJ1Y3R1cmVbaV07XG4gICAgICAgIGlmIChjaGlsZCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKGkgPCBzdHJ1Y3R1cmUubGVuZ3RoIC0gMSB8fCBpID4gc3RhcnQpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJDb250ZW50IGhvbGUgbXVzdCBiZSB0aGUgb25seSBjaGlsZCBvZiBpdHMgcGFyZW50IG5vZGVcIik7XG4gICAgICAgICAgICByZXR1cm4geyBkb20sIGNvbnRlbnRET006IGRvbSB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHsgZG9tOiBpbm5lciwgY29udGVudERPTTogaW5uZXJDb250ZW50IH0gPSByZW5kZXJTcGVjKGRvYywgY2hpbGQsIHhtbE5TLCBibG9ja0FycmF5c0luKTtcbiAgICAgICAgICAgIGRvbS5hcHBlbmRDaGlsZChpbm5lcik7XG4gICAgICAgICAgICBpZiAoaW5uZXJDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRET00pXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiTXVsdGlwbGUgY29udGVudCBob2xlc1wiKTtcbiAgICAgICAgICAgICAgICBjb250ZW50RE9NID0gaW5uZXJDb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGRvbSwgY29udGVudERPTSB9O1xufVxuXG5leHBvcnQgeyBDb250ZW50TWF0Y2gsIERPTVBhcnNlciwgRE9NU2VyaWFsaXplciwgRnJhZ21lbnQsIE1hcmssIE1hcmtUeXBlLCBOb2RlLCBOb2RlUmFuZ2UsIE5vZGVUeXBlLCBSZXBsYWNlRXJyb3IsIFJlc29sdmVkUG9zLCBTY2hlbWEsIFNsaWNlIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-model/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-schema-list/dist/index.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/prosemirror-schema-list/dist/index.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addListNodes: () => (/* binding */ addListNodes),\n/* harmony export */ bulletList: () => (/* binding */ bulletList),\n/* harmony export */ liftListItem: () => (/* binding */ liftListItem),\n/* harmony export */ listItem: () => (/* binding */ listItem),\n/* harmony export */ orderedList: () => (/* binding */ orderedList),\n/* harmony export */ sinkListItem: () => (/* binding */ sinkListItem),\n/* harmony export */ splitListItem: () => (/* binding */ splitListItem),\n/* harmony export */ splitListItemKeepMarks: () => (/* binding */ splitListItemKeepMarks),\n/* harmony export */ wrapInList: () => (/* binding */ wrapInList),\n/* harmony export */ wrapRangeInList: () => (/* binding */ wrapRangeInList)\n/* harmony export */ });\n/* harmony import */ var prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prosemirror-transform */ \"(app-pages-browser)/./node_modules/prosemirror-transform/dist/index.js\");\n/* harmony import */ var prosemirror_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-model */ \"(app-pages-browser)/./node_modules/prosemirror-model/dist/index.js\");\n/* harmony import */ var prosemirror_state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prosemirror-state */ \"(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js\");\n\n\n\n\nconst olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n/**\nAn ordered list [node spec](https://prosemirror.net/docs/ref/#model.NodeSpec). Has a single\nattribute, `order`, which determines the number at which the list\nstarts counting, and defaults to 1. Represented as an `<ol>`\nelement.\n*/\nconst orderedList = {\n attrs: { order: { default: 1, validate: \"number\" } },\n parseDOM: [{ tag: \"ol\", getAttrs(dom) {\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1 };\n } }],\n toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", { start: node.attrs.order }, 0];\n }\n};\n/**\nA bullet list node spec, represented in the DOM as `<ul>`.\n*/\nconst bulletList = {\n parseDOM: [{ tag: \"ul\" }],\n toDOM() { return ulDOM; }\n};\n/**\nA list item (`<li>`) spec.\n*/\nconst listItem = {\n parseDOM: [{ tag: \"li\" }],\n toDOM() { return liDOM; },\n defining: true\n};\nfunction add(obj, props) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n for (let prop in props)\n copy[prop] = props[prop];\n return copy;\n}\n/**\nConvenience function for adding list-related node types to a map\nspecifying the nodes for a schema. Adds\n[`orderedList`](https://prosemirror.net/docs/ref/#schema-list.orderedList) as `\"ordered_list\"`,\n[`bulletList`](https://prosemirror.net/docs/ref/#schema-list.bulletList) as `\"bullet_list\"`, and\n[`listItem`](https://prosemirror.net/docs/ref/#schema-list.listItem) as `\"list_item\"`.\n\n`itemContent` determines the content expression for the list items.\nIf you want the commands defined in this module to apply to your\nlist structure, it should have a shape like `\"paragraph block*\"` or\n`\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\ngiven to assign a group name to the list node types, for example\n`\"block\"`.\n*/\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, { content: \"list_item+\", group: listGroup }),\n bullet_list: add(bulletList, { content: \"list_item+\", group: listGroup }),\n list_item: add(listItem, { content: itemContent })\n });\n}\n/**\nReturns a command function that wraps the selection in a list with\nthe given type an attributes. If `dispatch` is null, only return a\nvalue to indicate whether this is possible, but don't actually\nperform the change.\n*/\nfunction wrapInList(listType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to);\n if (!range)\n return false;\n let tr = dispatch ? state.tr : null;\n if (!wrapRangeInList(tr, range, listType, attrs))\n return false;\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nTry to wrap the given node range in a list of the given type.\nReturn `true` when this is possible, `false` otherwise. When `tr`\nis non-null, the wrapping is added to that transaction. When it is\n`null`, the function only queries whether the wrapping is\npossible.\n*/\nfunction wrapRangeInList(tr, range, listType, attrs = null) {\n let doJoin = false, outerRange = range, doc = range.$from.doc;\n // This is at the top of an existing list item\n if (range.depth >= 2 && range.$from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if (range.$from.index(range.depth - 1) == 0)\n return false;\n let $insert = doc.resolve(range.start - 2);\n outerRange = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n range = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.NodeRange(range.$from, doc.resolve(range.$to.end(range.depth)), range.depth);\n doJoin = true;\n }\n let wrap = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.findWrapping)(outerRange, listType, attrs, range);\n if (!wrap)\n return false;\n if (tr)\n doWrapInList(tr, range, wrap, doJoin, listType);\n return true;\n}\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n let content = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--)\n content = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n tr.step(new prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(content, 0, 0), wrappers.length, true));\n let found = 0;\n for (let i = 0; i < wrappers.length; i++)\n if (wrappers[i].type == listType)\n found = i + 1;\n let splitDepth = wrappers.length - found;\n let splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (let i = range.startIndex, e = range.endIndex, first = true; i < e; i++, first = false) {\n if (!first && (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.canSplit)(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i).nodeSize;\n }\n return tr;\n}\n/**\nBuild a command that splits a non-empty textblock at the top level\nof a list item by also splitting that list item.\n*/\nfunction splitListItem(itemType, itemAttrs) {\n return function (state, dispatch) {\n let { $from, $to, node } = state.selection;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to))\n return false;\n let grandParent = $from.node(-1);\n if (grandParent.type != itemType)\n return false;\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 3 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1)\n return false;\n if (dispatch) {\n let wrap = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty;\n let depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d--)\n wrap = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from($from.node(d).copy(wrap));\n let depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n wrap = wrap.append(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(itemType.createAndFill()));\n let start = $from.before($from.depth - (depthBefore - 1));\n let tr = state.tr.replace(start, $from.after(-depthAfter), new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (node, pos) => {\n if (sel > -1)\n return false;\n if (node.isTextblock && node.content.size == 0)\n sel = pos + 1;\n });\n if (sel > -1)\n tr.setSelection(prosemirror_state__WEBPACK_IMPORTED_MODULE_2__.Selection.near(tr.doc.resolve(sel)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n let tr = state.tr.delete($from.pos, $to.pos);\n let types = nextType ? [itemAttrs ? { type: itemType, attrs: itemAttrs } : null, { type: nextType }] : undefined;\n if (!(0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.canSplit)(tr.doc, $from.pos, 2, types))\n return false;\n if (dispatch)\n dispatch(tr.split($from.pos, 2, types).scrollIntoView());\n return true;\n };\n}\n/**\nActs like [`splitListItem`](https://prosemirror.net/docs/ref/#schema-list.splitListItem), but\nwithout resetting the set of active marks at the cursor.\n*/\nfunction splitListItemKeepMarks(itemType, itemAttrs) {\n let split = splitListItem(itemType, itemAttrs);\n return (state, dispatch) => {\n return split(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n };\n}\n/**\nCreate a command to lift the list item around the selection up into\na wrapping list.\n*/\nfunction liftListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n if (!dispatch)\n return true;\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n return liftToOuterList(state, dispatch, itemType, range);\n else // Outer list node\n return liftOutOfList(state, dispatch, range);\n };\n}\nfunction liftToOuterList(state, dispatch, itemType, range) {\n let tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.ReplaceAroundStep(end - 1, endOfList, end, endOfList, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n const target = (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.liftTarget)(range);\n if (target == null)\n return false;\n tr.lift(range, target);\n let $after = tr.doc.resolve(tr.mapping.map(end, -1) - 1);\n if ((0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.canJoin)(tr.doc, $after.pos) && $after.nodeBefore.type == $after.nodeAfter.type)\n tr.join($after.pos);\n dispatch(tr.scrollIntoView());\n return true;\n}\nfunction liftOutOfList(state, dispatch, range) {\n let tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (let pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n let $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n if (tr.mapping.map(range.end) != range.start + $start.nodeAfter.nodeSize)\n return false;\n let atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n let parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, item.content.append(atEnd ? prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty : prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(list))))\n return false;\n let start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice((atStart ? prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty : prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(list.copy(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty)))\n .append(atEnd ? prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty : prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(list.copy(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true;\n}\n/**\nCreate a command to sink the list item around the selection down\ninto an inner list.\n*/\nfunction sinkListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n let startIndex = range.startIndex;\n if (startIndex == 0)\n return false;\n let parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType)\n return false;\n if (dispatch) {\n let nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n let inner = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(nestedBefore ? itemType.create() : null);\n let slice = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(itemType.create(null, prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);\n let before = range.start, after = range.end;\n dispatch(state.tr.step(new prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true;\n };\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci1zY2hlbWEtbGlzdC9kaXN0L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBdUc7QUFDeEM7QUFDakI7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMsa0NBQWtDO0FBQ3hELGlCQUFpQjtBQUNqQix5QkFBeUI7QUFDekIsZUFBZTtBQUNmO0FBQ0Esd0RBQXdELHlCQUF5QjtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsV0FBVztBQUM1QixjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixXQUFXO0FBQzVCLGNBQWMsZUFBZTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMseUNBQXlDO0FBQ2xGLHVDQUF1Qyx5Q0FBeUM7QUFDaEYsbUNBQW1DLHNCQUFzQjtBQUN6RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxhQUFhO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsd0RBQVM7QUFDbEM7QUFDQSx3QkFBd0Isd0RBQVM7QUFDakM7QUFDQTtBQUNBLGVBQWUsbUVBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsdURBQVE7QUFDMUIsc0NBQXNDLFFBQVE7QUFDOUMsa0JBQWtCLHVEQUFRO0FBQzFCLGdCQUFnQixvRUFBaUIsNEVBQTRFLG9EQUFLO0FBQ2xIO0FBQ0Esb0JBQW9CLHFCQUFxQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRSxPQUFPO0FBQzVFLHNCQUFzQiwrREFBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUJBQW1CO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHVEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxzQkFBc0I7QUFDOUUsMkJBQTJCLHVEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx1REFBUTtBQUMzQztBQUNBLCtFQUErRSxvREFBSztBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxvQ0FBb0Msd0RBQVM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLG1DQUFtQyxVQUFVLGdCQUFnQjtBQUMzRyxhQUFhLCtEQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxhQUFhO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9FQUFpQix5Q0FBeUMsb0RBQUssQ0FBQyx1REFBUTtBQUM1RixvQkFBb0Isd0RBQVM7QUFDN0I7QUFDQSxtQkFBbUIsaUVBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEUsT0FBTztBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUdBQXlHLHVEQUFRLFNBQVMsdURBQVE7QUFDbEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvRUFBaUIsMkVBQTJFLG9EQUFLLFlBQVksdURBQVEsU0FBUyx1REFBUSxnQkFBZ0IsdURBQVE7QUFDOUssd0JBQXdCLHVEQUFRLFNBQVMsdURBQVEsZ0JBQWdCLHVEQUFRO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsYUFBYTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVEQUFRO0FBQ2hDLDRCQUE0QixvREFBSyxDQUFDLHVEQUFRLDRCQUE0Qix1REFBUTtBQUM5RTtBQUNBLHVDQUF1QyxvRUFBaUI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMkoiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHByb3NlbWlycm9yLXNjaGVtYS1saXN0XFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaW5kV3JhcHBpbmcsIFJlcGxhY2VBcm91bmRTdGVwLCBjYW5TcGxpdCwgbGlmdFRhcmdldCwgY2FuSm9pbiB9IGZyb20gJ3Byb3NlbWlycm9yLXRyYW5zZm9ybSc7XG5pbXBvcnQgeyBOb2RlUmFuZ2UsIEZyYWdtZW50LCBTbGljZSB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcblxuY29uc3Qgb2xET00gPSBbXCJvbFwiLCAwXSwgdWxET00gPSBbXCJ1bFwiLCAwXSwgbGlET00gPSBbXCJsaVwiLCAwXTtcbi8qKlxuQW4gb3JkZXJlZCBsaXN0IFtub2RlIHNwZWNdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlU3BlYykuIEhhcyBhIHNpbmdsZVxuYXR0cmlidXRlLCBgb3JkZXJgLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBudW1iZXIgYXQgd2hpY2ggdGhlIGxpc3RcbnN0YXJ0cyBjb3VudGluZywgYW5kIGRlZmF1bHRzIHRvIDEuIFJlcHJlc2VudGVkIGFzIGFuIGA8b2w+YFxuZWxlbWVudC5cbiovXG5jb25zdCBvcmRlcmVkTGlzdCA9IHtcbiAgICBhdHRyczogeyBvcmRlcjogeyBkZWZhdWx0OiAxLCB2YWxpZGF0ZTogXCJudW1iZXJcIiB9IH0sXG4gICAgcGFyc2VET006IFt7IHRhZzogXCJvbFwiLCBnZXRBdHRycyhkb20pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBvcmRlcjogZG9tLmhhc0F0dHJpYnV0ZShcInN0YXJ0XCIpID8gK2RvbS5nZXRBdHRyaWJ1dGUoXCJzdGFydFwiKSA6IDEgfTtcbiAgICAgICAgICAgIH0gfV0sXG4gICAgdG9ET00obm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5hdHRycy5vcmRlciA9PSAxID8gb2xET00gOiBbXCJvbFwiLCB7IHN0YXJ0OiBub2RlLmF0dHJzLm9yZGVyIH0sIDBdO1xuICAgIH1cbn07XG4vKipcbkEgYnVsbGV0IGxpc3Qgbm9kZSBzcGVjLCByZXByZXNlbnRlZCBpbiB0aGUgRE9NIGFzIGA8dWw+YC5cbiovXG5jb25zdCBidWxsZXRMaXN0ID0ge1xuICAgIHBhcnNlRE9NOiBbeyB0YWc6IFwidWxcIiB9XSxcbiAgICB0b0RPTSgpIHsgcmV0dXJuIHVsRE9NOyB9XG59O1xuLyoqXG5BIGxpc3QgaXRlbSAoYDxsaT5gKSBzcGVjLlxuKi9cbmNvbnN0IGxpc3RJdGVtID0ge1xuICAgIHBhcnNlRE9NOiBbeyB0YWc6IFwibGlcIiB9XSxcbiAgICB0b0RPTSgpIHsgcmV0dXJuIGxpRE9NOyB9LFxuICAgIGRlZmluaW5nOiB0cnVlXG59O1xuZnVuY3Rpb24gYWRkKG9iaiwgcHJvcHMpIHtcbiAgICBsZXQgY29weSA9IHt9O1xuICAgIGZvciAobGV0IHByb3AgaW4gb2JqKVxuICAgICAgICBjb3B5W3Byb3BdID0gb2JqW3Byb3BdO1xuICAgIGZvciAobGV0IHByb3AgaW4gcHJvcHMpXG4gICAgICAgIGNvcHlbcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICByZXR1cm4gY29weTtcbn1cbi8qKlxuQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGFkZGluZyBsaXN0LXJlbGF0ZWQgbm9kZSB0eXBlcyB0byBhIG1hcFxuc3BlY2lmeWluZyB0aGUgbm9kZXMgZm9yIGEgc2NoZW1hLiBBZGRzXG5bYG9yZGVyZWRMaXN0YF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3NjaGVtYS1saXN0Lm9yZGVyZWRMaXN0KSBhcyBgXCJvcmRlcmVkX2xpc3RcImAsXG5bYGJ1bGxldExpc3RgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jc2NoZW1hLWxpc3QuYnVsbGV0TGlzdCkgYXMgYFwiYnVsbGV0X2xpc3RcImAsIGFuZFxuW2BsaXN0SXRlbWBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzY2hlbWEtbGlzdC5saXN0SXRlbSkgYXMgYFwibGlzdF9pdGVtXCJgLlxuXG5gaXRlbUNvbnRlbnRgIGRldGVybWluZXMgdGhlIGNvbnRlbnQgZXhwcmVzc2lvbiBmb3IgdGhlIGxpc3QgaXRlbXMuXG5JZiB5b3Ugd2FudCB0aGUgY29tbWFuZHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSB0byBhcHBseSB0byB5b3VyXG5saXN0IHN0cnVjdHVyZSwgaXQgc2hvdWxkIGhhdmUgYSBzaGFwZSBsaWtlIGBcInBhcmFncmFwaCBibG9jaypcImAgb3JcbmBcInBhcmFncmFwaCAob3JkZXJlZF9saXN0IHwgYnVsbGV0X2xpc3QpKlwiYC4gYGxpc3RHcm91cGAgY2FuIGJlXG5naXZlbiB0byBhc3NpZ24gYSBncm91cCBuYW1lIHRvIHRoZSBsaXN0IG5vZGUgdHlwZXMsIGZvciBleGFtcGxlXG5gXCJibG9ja1wiYC5cbiovXG5mdW5jdGlvbiBhZGRMaXN0Tm9kZXMobm9kZXMsIGl0ZW1Db250ZW50LCBsaXN0R3JvdXApIHtcbiAgICByZXR1cm4gbm9kZXMuYXBwZW5kKHtcbiAgICAgICAgb3JkZXJlZF9saXN0OiBhZGQob3JkZXJlZExpc3QsIHsgY29udGVudDogXCJsaXN0X2l0ZW0rXCIsIGdyb3VwOiBsaXN0R3JvdXAgfSksXG4gICAgICAgIGJ1bGxldF9saXN0OiBhZGQoYnVsbGV0TGlzdCwgeyBjb250ZW50OiBcImxpc3RfaXRlbStcIiwgZ3JvdXA6IGxpc3RHcm91cCB9KSxcbiAgICAgICAgbGlzdF9pdGVtOiBhZGQobGlzdEl0ZW0sIHsgY29udGVudDogaXRlbUNvbnRlbnQgfSlcbiAgICB9KTtcbn1cbi8qKlxuUmV0dXJucyBhIGNvbW1hbmQgZnVuY3Rpb24gdGhhdCB3cmFwcyB0aGUgc2VsZWN0aW9uIGluIGEgbGlzdCB3aXRoXG50aGUgZ2l2ZW4gdHlwZSBhbiBhdHRyaWJ1dGVzLiBJZiBgZGlzcGF0Y2hgIGlzIG51bGwsIG9ubHkgcmV0dXJuIGFcbnZhbHVlIHRvIGluZGljYXRlIHdoZXRoZXIgdGhpcyBpcyBwb3NzaWJsZSwgYnV0IGRvbid0IGFjdHVhbGx5XG5wZXJmb3JtIHRoZSBjaGFuZ2UuXG4qL1xuZnVuY3Rpb24gd3JhcEluTGlzdChsaXN0VHlwZSwgYXR0cnMgPSBudWxsKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzdGF0ZSwgZGlzcGF0Y2gpIHtcbiAgICAgICAgbGV0IHsgJGZyb20sICR0byB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICBsZXQgcmFuZ2UgPSAkZnJvbS5ibG9ja1JhbmdlKCR0byk7XG4gICAgICAgIGlmICghcmFuZ2UpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCB0ciA9IGRpc3BhdGNoID8gc3RhdGUudHIgOiBudWxsO1xuICAgICAgICBpZiAoIXdyYXBSYW5nZUluTGlzdCh0ciwgcmFuZ2UsIGxpc3RUeXBlLCBhdHRycykpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChkaXNwYXRjaClcbiAgICAgICAgICAgIGRpc3BhdGNoKHRyLnNjcm9sbEludG9WaWV3KCkpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xufVxuLyoqXG5UcnkgdG8gd3JhcCB0aGUgZ2l2ZW4gbm9kZSByYW5nZSBpbiBhIGxpc3Qgb2YgdGhlIGdpdmVuIHR5cGUuXG5SZXR1cm4gYHRydWVgIHdoZW4gdGhpcyBpcyBwb3NzaWJsZSwgYGZhbHNlYCBvdGhlcndpc2UuIFdoZW4gYHRyYFxuaXMgbm9uLW51bGwsIHRoZSB3cmFwcGluZyBpcyBhZGRlZCB0byB0aGF0IHRyYW5zYWN0aW9uLiBXaGVuIGl0IGlzXG5gbnVsbGAsIHRoZSBmdW5jdGlvbiBvbmx5IHF1ZXJpZXMgd2hldGhlciB0aGUgd3JhcHBpbmcgaXNcbnBvc3NpYmxlLlxuKi9cbmZ1bmN0aW9uIHdyYXBSYW5nZUluTGlzdCh0ciwgcmFuZ2UsIGxpc3RUeXBlLCBhdHRycyA9IG51bGwpIHtcbiAgICBsZXQgZG9Kb2luID0gZmFsc2UsIG91dGVyUmFuZ2UgPSByYW5nZSwgZG9jID0gcmFuZ2UuJGZyb20uZG9jO1xuICAgIC8vIFRoaXMgaXMgYXQgdGhlIHRvcCBvZiBhbiBleGlzdGluZyBsaXN0IGl0ZW1cbiAgICBpZiAocmFuZ2UuZGVwdGggPj0gMiAmJiByYW5nZS4kZnJvbS5ub2RlKHJhbmdlLmRlcHRoIC0gMSkudHlwZS5jb21wYXRpYmxlQ29udGVudChsaXN0VHlwZSkgJiYgcmFuZ2Uuc3RhcnRJbmRleCA9PSAwKSB7XG4gICAgICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHRoaXMgaXMgdGhlIHRvcCBvZiB0aGUgbGlzdFxuICAgICAgICBpZiAocmFuZ2UuJGZyb20uaW5kZXgocmFuZ2UuZGVwdGggLSAxKSA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgJGluc2VydCA9IGRvYy5yZXNvbHZlKHJhbmdlLnN0YXJ0IC0gMik7XG4gICAgICAgIG91dGVyUmFuZ2UgPSBuZXcgTm9kZVJhbmdlKCRpbnNlcnQsICRpbnNlcnQsIHJhbmdlLmRlcHRoKTtcbiAgICAgICAgaWYgKHJhbmdlLmVuZEluZGV4IDwgcmFuZ2UucGFyZW50LmNoaWxkQ291bnQpXG4gICAgICAgICAgICByYW5nZSA9IG5ldyBOb2RlUmFuZ2UocmFuZ2UuJGZyb20sIGRvYy5yZXNvbHZlKHJhbmdlLiR0by5lbmQocmFuZ2UuZGVwdGgpKSwgcmFuZ2UuZGVwdGgpO1xuICAgICAgICBkb0pvaW4gPSB0cnVlO1xuICAgIH1cbiAgICBsZXQgd3JhcCA9IGZpbmRXcmFwcGluZyhvdXRlclJhbmdlLCBsaXN0VHlwZSwgYXR0cnMsIHJhbmdlKTtcbiAgICBpZiAoIXdyYXApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHIpXG4gICAgICAgIGRvV3JhcEluTGlzdCh0ciwgcmFuZ2UsIHdyYXAsIGRvSm9pbiwgbGlzdFR5cGUpO1xuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gZG9XcmFwSW5MaXN0KHRyLCByYW5nZSwgd3JhcHBlcnMsIGpvaW5CZWZvcmUsIGxpc3RUeXBlKSB7XG4gICAgbGV0IGNvbnRlbnQgPSBGcmFnbWVudC5lbXB0eTtcbiAgICBmb3IgKGxldCBpID0gd3JhcHBlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pXG4gICAgICAgIGNvbnRlbnQgPSBGcmFnbWVudC5mcm9tKHdyYXBwZXJzW2ldLnR5cGUuY3JlYXRlKHdyYXBwZXJzW2ldLmF0dHJzLCBjb250ZW50KSk7XG4gICAgdHIuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAocmFuZ2Uuc3RhcnQgLSAoam9pbkJlZm9yZSA/IDIgOiAwKSwgcmFuZ2UuZW5kLCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kLCBuZXcgU2xpY2UoY29udGVudCwgMCwgMCksIHdyYXBwZXJzLmxlbmd0aCwgdHJ1ZSkpO1xuICAgIGxldCBmb3VuZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3cmFwcGVycy5sZW5ndGg7IGkrKylcbiAgICAgICAgaWYgKHdyYXBwZXJzW2ldLnR5cGUgPT0gbGlzdFR5cGUpXG4gICAgICAgICAgICBmb3VuZCA9IGkgKyAxO1xuICAgIGxldCBzcGxpdERlcHRoID0gd3JhcHBlcnMubGVuZ3RoIC0gZm91bmQ7XG4gICAgbGV0IHNwbGl0UG9zID0gcmFuZ2Uuc3RhcnQgKyB3cmFwcGVycy5sZW5ndGggLSAoam9pbkJlZm9yZSA/IDIgOiAwKSwgcGFyZW50ID0gcmFuZ2UucGFyZW50O1xuICAgIGZvciAobGV0IGkgPSByYW5nZS5zdGFydEluZGV4LCBlID0gcmFuZ2UuZW5kSW5kZXgsIGZpcnN0ID0gdHJ1ZTsgaSA8IGU7IGkrKywgZmlyc3QgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIWZpcnN0ICYmIGNhblNwbGl0KHRyLmRvYywgc3BsaXRQb3MsIHNwbGl0RGVwdGgpKSB7XG4gICAgICAgICAgICB0ci5zcGxpdChzcGxpdFBvcywgc3BsaXREZXB0aCk7XG4gICAgICAgICAgICBzcGxpdFBvcyArPSAyICogc3BsaXREZXB0aDtcbiAgICAgICAgfVxuICAgICAgICBzcGxpdFBvcyArPSBwYXJlbnQuY2hpbGQoaSkubm9kZVNpemU7XG4gICAgfVxuICAgIHJldHVybiB0cjtcbn1cbi8qKlxuQnVpbGQgYSBjb21tYW5kIHRoYXQgc3BsaXRzIGEgbm9uLWVtcHR5IHRleHRibG9jayBhdCB0aGUgdG9wIGxldmVsXG5vZiBhIGxpc3QgaXRlbSBieSBhbHNvIHNwbGl0dGluZyB0aGF0IGxpc3QgaXRlbS5cbiovXG5mdW5jdGlvbiBzcGxpdExpc3RJdGVtKGl0ZW1UeXBlLCBpdGVtQXR0cnMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHN0YXRlLCBkaXNwYXRjaCkge1xuICAgICAgICBsZXQgeyAkZnJvbSwgJHRvLCBub2RlIH0gPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgICAgIGlmICgobm9kZSAmJiBub2RlLmlzQmxvY2spIHx8ICRmcm9tLmRlcHRoIDwgMiB8fCAhJGZyb20uc2FtZVBhcmVudCgkdG8pKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgZ3JhbmRQYXJlbnQgPSAkZnJvbS5ub2RlKC0xKTtcbiAgICAgICAgaWYgKGdyYW5kUGFyZW50LnR5cGUgIT0gaXRlbVR5cGUpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICgkZnJvbS5wYXJlbnQuY29udGVudC5zaXplID09IDAgJiYgJGZyb20ubm9kZSgtMSkuY2hpbGRDb3VudCA9PSAkZnJvbS5pbmRleEFmdGVyKC0xKSkge1xuICAgICAgICAgICAgLy8gSW4gYW4gZW1wdHkgYmxvY2suIElmIHRoaXMgaXMgYSBuZXN0ZWQgbGlzdCwgdGhlIHdyYXBwaW5nXG4gICAgICAgICAgICAvLyBsaXN0IGl0ZW0gc2hvdWxkIGJlIHNwbGl0LiBPdGhlcndpc2UsIGJhaWwgb3V0IGFuZCBsZXQgbmV4dFxuICAgICAgICAgICAgLy8gY29tbWFuZCBoYW5kbGUgbGlmdGluZy5cbiAgICAgICAgICAgIGlmICgkZnJvbS5kZXB0aCA9PSAzIHx8ICRmcm9tLm5vZGUoLTMpLnR5cGUgIT0gaXRlbVR5cGUgfHxcbiAgICAgICAgICAgICAgICAkZnJvbS5pbmRleCgtMikgIT0gJGZyb20ubm9kZSgtMikuY2hpbGRDb3VudCAtIDEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHdyYXAgPSBGcmFnbWVudC5lbXB0eTtcbiAgICAgICAgICAgICAgICBsZXQgZGVwdGhCZWZvcmUgPSAkZnJvbS5pbmRleCgtMSkgPyAxIDogJGZyb20uaW5kZXgoLTIpID8gMiA6IDM7XG4gICAgICAgICAgICAgICAgLy8gQnVpbGQgYSBmcmFnbWVudCBjb250YWluaW5nIGVtcHR5IHZlcnNpb25zIG9mIHRoZSBzdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBvdXRlciBsaXN0IGl0ZW0gdG8gdGhlIHBhcmVudCBub2RlIG9mIHRoZSBjdXJzb3JcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkID0gJGZyb20uZGVwdGggLSBkZXB0aEJlZm9yZTsgZCA+PSAkZnJvbS5kZXB0aCAtIDM7IGQtLSlcbiAgICAgICAgICAgICAgICAgICAgd3JhcCA9IEZyYWdtZW50LmZyb20oJGZyb20ubm9kZShkKS5jb3B5KHdyYXApKTtcbiAgICAgICAgICAgICAgICBsZXQgZGVwdGhBZnRlciA9ICRmcm9tLmluZGV4QWZ0ZXIoLTEpIDwgJGZyb20ubm9kZSgtMikuY2hpbGRDb3VudCA/IDFcbiAgICAgICAgICAgICAgICAgICAgOiAkZnJvbS5pbmRleEFmdGVyKC0yKSA8ICRmcm9tLm5vZGUoLTMpLmNoaWxkQ291bnQgPyAyIDogMztcbiAgICAgICAgICAgICAgICAvLyBBZGQgYSBzZWNvbmQgbGlzdCBpdGVtIHdpdGggYW4gZW1wdHkgZGVmYXVsdCBzdGFydCBub2RlXG4gICAgICAgICAgICAgICAgd3JhcCA9IHdyYXAuYXBwZW5kKEZyYWdtZW50LmZyb20oaXRlbVR5cGUuY3JlYXRlQW5kRmlsbCgpKSk7XG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gJGZyb20uYmVmb3JlKCRmcm9tLmRlcHRoIC0gKGRlcHRoQmVmb3JlIC0gMSkpO1xuICAgICAgICAgICAgICAgIGxldCB0ciA9IHN0YXRlLnRyLnJlcGxhY2Uoc3RhcnQsICRmcm9tLmFmdGVyKC1kZXB0aEFmdGVyKSwgbmV3IFNsaWNlKHdyYXAsIDQgLSBkZXB0aEJlZm9yZSwgMCkpO1xuICAgICAgICAgICAgICAgIGxldCBzZWwgPSAtMTtcbiAgICAgICAgICAgICAgICB0ci5kb2Mubm9kZXNCZXR3ZWVuKHN0YXJ0LCB0ci5kb2MuY29udGVudC5zaXplLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWwgPiAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuaXNUZXh0YmxvY2sgJiYgbm9kZS5jb250ZW50LnNpemUgPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbCA9IHBvcyArIDE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbCA+IC0xKVxuICAgICAgICAgICAgICAgICAgICB0ci5zZXRTZWxlY3Rpb24oU2VsZWN0aW9uLm5lYXIodHIuZG9jLnJlc29sdmUoc2VsKSkpO1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHRyLnNjcm9sbEludG9WaWV3KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5leHRUeXBlID0gJHRvLnBvcyA9PSAkZnJvbS5lbmQoKSA/IGdyYW5kUGFyZW50LmNvbnRlbnRNYXRjaEF0KDApLmRlZmF1bHRUeXBlIDogbnVsbDtcbiAgICAgICAgbGV0IHRyID0gc3RhdGUudHIuZGVsZXRlKCRmcm9tLnBvcywgJHRvLnBvcyk7XG4gICAgICAgIGxldCB0eXBlcyA9IG5leHRUeXBlID8gW2l0ZW1BdHRycyA/IHsgdHlwZTogaXRlbVR5cGUsIGF0dHJzOiBpdGVtQXR0cnMgfSA6IG51bGwsIHsgdHlwZTogbmV4dFR5cGUgfV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghY2FuU3BsaXQodHIuZG9jLCAkZnJvbS5wb3MsIDIsIHR5cGVzKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGRpc3BhdGNoKVxuICAgICAgICAgICAgZGlzcGF0Y2godHIuc3BsaXQoJGZyb20ucG9zLCAyLCB0eXBlcykuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG59XG4vKipcbkFjdHMgbGlrZSBbYHNwbGl0TGlzdEl0ZW1gXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jc2NoZW1hLWxpc3Quc3BsaXRMaXN0SXRlbSksIGJ1dFxud2l0aG91dCByZXNldHRpbmcgdGhlIHNldCBvZiBhY3RpdmUgbWFya3MgYXQgdGhlIGN1cnNvci5cbiovXG5mdW5jdGlvbiBzcGxpdExpc3RJdGVtS2VlcE1hcmtzKGl0ZW1UeXBlLCBpdGVtQXR0cnMpIHtcbiAgICBsZXQgc3BsaXQgPSBzcGxpdExpc3RJdGVtKGl0ZW1UeXBlLCBpdGVtQXR0cnMpO1xuICAgIHJldHVybiAoc3RhdGUsIGRpc3BhdGNoKSA9PiB7XG4gICAgICAgIHJldHVybiBzcGxpdChzdGF0ZSwgZGlzcGF0Y2ggJiYgKHRyID0+IHtcbiAgICAgICAgICAgIGxldCBtYXJrcyA9IHN0YXRlLnN0b3JlZE1hcmtzIHx8IChzdGF0ZS5zZWxlY3Rpb24uJHRvLnBhcmVudE9mZnNldCAmJiBzdGF0ZS5zZWxlY3Rpb24uJGZyb20ubWFya3MoKSk7XG4gICAgICAgICAgICBpZiAobWFya3MpXG4gICAgICAgICAgICAgICAgdHIuZW5zdXJlTWFya3MobWFya3MpO1xuICAgICAgICAgICAgZGlzcGF0Y2godHIpO1xuICAgICAgICB9KSk7XG4gICAgfTtcbn1cbi8qKlxuQ3JlYXRlIGEgY29tbWFuZCB0byBsaWZ0IHRoZSBsaXN0IGl0ZW0gYXJvdW5kIHRoZSBzZWxlY3Rpb24gdXAgaW50b1xuYSB3cmFwcGluZyBsaXN0LlxuKi9cbmZ1bmN0aW9uIGxpZnRMaXN0SXRlbShpdGVtVHlwZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc3RhdGUsIGRpc3BhdGNoKSB7XG4gICAgICAgIGxldCB7ICRmcm9tLCAkdG8gfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgICAgICAgbGV0IHJhbmdlID0gJGZyb20uYmxvY2tSYW5nZSgkdG8sIG5vZGUgPT4gbm9kZS5jaGlsZENvdW50ID4gMCAmJiBub2RlLmZpcnN0Q2hpbGQudHlwZSA9PSBpdGVtVHlwZSk7XG4gICAgICAgIGlmICghcmFuZ2UpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghZGlzcGF0Y2gpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKCRmcm9tLm5vZGUocmFuZ2UuZGVwdGggLSAxKS50eXBlID09IGl0ZW1UeXBlKSAvLyBJbnNpZGUgYSBwYXJlbnQgbGlzdFxuICAgICAgICAgICAgcmV0dXJuIGxpZnRUb091dGVyTGlzdChzdGF0ZSwgZGlzcGF0Y2gsIGl0ZW1UeXBlLCByYW5nZSk7XG4gICAgICAgIGVsc2UgLy8gT3V0ZXIgbGlzdCBub2RlXG4gICAgICAgICAgICByZXR1cm4gbGlmdE91dE9mTGlzdChzdGF0ZSwgZGlzcGF0Y2gsIHJhbmdlKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gbGlmdFRvT3V0ZXJMaXN0KHN0YXRlLCBkaXNwYXRjaCwgaXRlbVR5cGUsIHJhbmdlKSB7XG4gICAgbGV0IHRyID0gc3RhdGUudHIsIGVuZCA9IHJhbmdlLmVuZCwgZW5kT2ZMaXN0ID0gcmFuZ2UuJHRvLmVuZChyYW5nZS5kZXB0aCk7XG4gICAgaWYgKGVuZCA8IGVuZE9mTGlzdCkge1xuICAgICAgICAvLyBUaGVyZSBhcmUgc2libGluZ3MgYWZ0ZXIgdGhlIGxpZnRlZCBpdGVtcywgd2hpY2ggbXVzdCBiZWNvbWVcbiAgICAgICAgLy8gY2hpbGRyZW4gb2YgdGhlIGxhc3QgaXRlbVxuICAgICAgICB0ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcChlbmQgLSAxLCBlbmRPZkxpc3QsIGVuZCwgZW5kT2ZMaXN0LCBuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShpdGVtVHlwZS5jcmVhdGUobnVsbCwgcmFuZ2UucGFyZW50LmNvcHkoKSkpLCAxLCAwKSwgMSwgdHJ1ZSkpO1xuICAgICAgICByYW5nZSA9IG5ldyBOb2RlUmFuZ2UodHIuZG9jLnJlc29sdmUocmFuZ2UuJGZyb20ucG9zKSwgdHIuZG9jLnJlc29sdmUoZW5kT2ZMaXN0KSwgcmFuZ2UuZGVwdGgpO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQgPSBsaWZ0VGFyZ2V0KHJhbmdlKTtcbiAgICBpZiAodGFyZ2V0ID09IG51bGwpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0ci5saWZ0KHJhbmdlLCB0YXJnZXQpO1xuICAgIGxldCAkYWZ0ZXIgPSB0ci5kb2MucmVzb2x2ZSh0ci5tYXBwaW5nLm1hcChlbmQsIC0xKSAtIDEpO1xuICAgIGlmIChjYW5Kb2luKHRyLmRvYywgJGFmdGVyLnBvcykgJiYgJGFmdGVyLm5vZGVCZWZvcmUudHlwZSA9PSAkYWZ0ZXIubm9kZUFmdGVyLnR5cGUpXG4gICAgICAgIHRyLmpvaW4oJGFmdGVyLnBvcyk7XG4gICAgZGlzcGF0Y2godHIuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBsaWZ0T3V0T2ZMaXN0KHN0YXRlLCBkaXNwYXRjaCwgcmFuZ2UpIHtcbiAgICBsZXQgdHIgPSBzdGF0ZS50ciwgbGlzdCA9IHJhbmdlLnBhcmVudDtcbiAgICAvLyBNZXJnZSB0aGUgbGlzdCBpdGVtcyBpbnRvIGEgc2luZ2xlIGJpZyBpdGVtXG4gICAgZm9yIChsZXQgcG9zID0gcmFuZ2UuZW5kLCBpID0gcmFuZ2UuZW5kSW5kZXggLSAxLCBlID0gcmFuZ2Uuc3RhcnRJbmRleDsgaSA+IGU7IGktLSkge1xuICAgICAgICBwb3MgLT0gbGlzdC5jaGlsZChpKS5ub2RlU2l6ZTtcbiAgICAgICAgdHIuZGVsZXRlKHBvcyAtIDEsIHBvcyArIDEpO1xuICAgIH1cbiAgICBsZXQgJHN0YXJ0ID0gdHIuZG9jLnJlc29sdmUocmFuZ2Uuc3RhcnQpLCBpdGVtID0gJHN0YXJ0Lm5vZGVBZnRlcjtcbiAgICBpZiAodHIubWFwcGluZy5tYXAocmFuZ2UuZW5kKSAhPSByYW5nZS5zdGFydCArICRzdGFydC5ub2RlQWZ0ZXIubm9kZVNpemUpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgYXRTdGFydCA9IHJhbmdlLnN0YXJ0SW5kZXggPT0gMCwgYXRFbmQgPSByYW5nZS5lbmRJbmRleCA9PSBsaXN0LmNoaWxkQ291bnQ7XG4gICAgbGV0IHBhcmVudCA9ICRzdGFydC5ub2RlKC0xKSwgaW5kZXhCZWZvcmUgPSAkc3RhcnQuaW5kZXgoLTEpO1xuICAgIGlmICghcGFyZW50LmNhblJlcGxhY2UoaW5kZXhCZWZvcmUgKyAoYXRTdGFydCA/IDAgOiAxKSwgaW5kZXhCZWZvcmUgKyAxLCBpdGVtLmNvbnRlbnQuYXBwZW5kKGF0RW5kID8gRnJhZ21lbnQuZW1wdHkgOiBGcmFnbWVudC5mcm9tKGxpc3QpKSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgc3RhcnQgPSAkc3RhcnQucG9zLCBlbmQgPSBzdGFydCArIGl0ZW0ubm9kZVNpemU7XG4gICAgLy8gU3RyaXAgb2ZmIHRoZSBzdXJyb3VuZGluZyBsaXN0LiBBdCB0aGUgc2lkZXMgd2hlcmUgd2UncmUgbm90IGF0XG4gICAgLy8gdGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlIGV4aXN0aW5nIGxpc3QgaXMgY2xvc2VkLiBBdCBzaWRlcyB3aGVyZVxuICAgIC8vIHRoaXMgaXMgdGhlIGVuZCwgaXQgaXMgb3ZlcndyaXR0ZW4gdG8gaXRzIGVuZC5cbiAgICB0ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcChzdGFydCAtIChhdFN0YXJ0ID8gMSA6IDApLCBlbmQgKyAoYXRFbmQgPyAxIDogMCksIHN0YXJ0ICsgMSwgZW5kIC0gMSwgbmV3IFNsaWNlKChhdFN0YXJ0ID8gRnJhZ21lbnQuZW1wdHkgOiBGcmFnbWVudC5mcm9tKGxpc3QuY29weShGcmFnbWVudC5lbXB0eSkpKVxuICAgICAgICAuYXBwZW5kKGF0RW5kID8gRnJhZ21lbnQuZW1wdHkgOiBGcmFnbWVudC5mcm9tKGxpc3QuY29weShGcmFnbWVudC5lbXB0eSkpKSwgYXRTdGFydCA/IDAgOiAxLCBhdEVuZCA/IDAgOiAxKSwgYXRTdGFydCA/IDAgOiAxKSk7XG4gICAgZGlzcGF0Y2godHIuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgcmV0dXJuIHRydWU7XG59XG4vKipcbkNyZWF0ZSBhIGNvbW1hbmQgdG8gc2luayB0aGUgbGlzdCBpdGVtIGFyb3VuZCB0aGUgc2VsZWN0aW9uIGRvd25cbmludG8gYW4gaW5uZXIgbGlzdC5cbiovXG5mdW5jdGlvbiBzaW5rTGlzdEl0ZW0oaXRlbVR5cGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHN0YXRlLCBkaXNwYXRjaCkge1xuICAgICAgICBsZXQgeyAkZnJvbSwgJHRvIH0gPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgICAgIGxldCByYW5nZSA9ICRmcm9tLmJsb2NrUmFuZ2UoJHRvLCBub2RlID0+IG5vZGUuY2hpbGRDb3VudCA+IDAgJiYgbm9kZS5maXJzdENoaWxkLnR5cGUgPT0gaXRlbVR5cGUpO1xuICAgICAgICBpZiAoIXJhbmdlKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IHJhbmdlLnN0YXJ0SW5kZXg7XG4gICAgICAgIGlmIChzdGFydEluZGV4ID09IDApXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBwYXJlbnQgPSByYW5nZS5wYXJlbnQsIG5vZGVCZWZvcmUgPSBwYXJlbnQuY2hpbGQoc3RhcnRJbmRleCAtIDEpO1xuICAgICAgICBpZiAobm9kZUJlZm9yZS50eXBlICE9IGl0ZW1UeXBlKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoZGlzcGF0Y2gpIHtcbiAgICAgICAgICAgIGxldCBuZXN0ZWRCZWZvcmUgPSBub2RlQmVmb3JlLmxhc3RDaGlsZCAmJiBub2RlQmVmb3JlLmxhc3RDaGlsZC50eXBlID09IHBhcmVudC50eXBlO1xuICAgICAgICAgICAgbGV0IGlubmVyID0gRnJhZ21lbnQuZnJvbShuZXN0ZWRCZWZvcmUgPyBpdGVtVHlwZS5jcmVhdGUoKSA6IG51bGwpO1xuICAgICAgICAgICAgbGV0IHNsaWNlID0gbmV3IFNsaWNlKEZyYWdtZW50LmZyb20oaXRlbVR5cGUuY3JlYXRlKG51bGwsIEZyYWdtZW50LmZyb20ocGFyZW50LnR5cGUuY3JlYXRlKG51bGwsIGlubmVyKSkpKSwgbmVzdGVkQmVmb3JlID8gMyA6IDEsIDApO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IHJhbmdlLnN0YXJ0LCBhZnRlciA9IHJhbmdlLmVuZDtcbiAgICAgICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLnN0ZXAobmV3IFJlcGxhY2VBcm91bmRTdGVwKGJlZm9yZSAtIChuZXN0ZWRCZWZvcmUgPyAzIDogMSksIGFmdGVyLCBiZWZvcmUsIGFmdGVyLCBzbGljZSwgMSwgdHJ1ZSkpXG4gICAgICAgICAgICAgICAgLnNjcm9sbEludG9WaWV3KCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG59XG5cbmV4cG9ydCB7IGFkZExpc3ROb2RlcywgYnVsbGV0TGlzdCwgbGlmdExpc3RJdGVtLCBsaXN0SXRlbSwgb3JkZXJlZExpc3QsIHNpbmtMaXN0SXRlbSwgc3BsaXRMaXN0SXRlbSwgc3BsaXRMaXN0SXRlbUtlZXBNYXJrcywgd3JhcEluTGlzdCwgd3JhcFJhbmdlSW5MaXN0IH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-schema-list/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/prosemirror-state/dist/index.js ***!
|
||
\******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AllSelection: () => (/* binding */ AllSelection),\n/* harmony export */ EditorState: () => (/* binding */ EditorState),\n/* harmony export */ NodeSelection: () => (/* binding */ NodeSelection),\n/* harmony export */ Plugin: () => (/* binding */ Plugin),\n/* harmony export */ PluginKey: () => (/* binding */ PluginKey),\n/* harmony export */ Selection: () => (/* binding */ Selection),\n/* harmony export */ SelectionRange: () => (/* binding */ SelectionRange),\n/* harmony export */ TextSelection: () => (/* binding */ TextSelection),\n/* harmony export */ Transaction: () => (/* binding */ Transaction)\n/* harmony export */ });\n/* harmony import */ var prosemirror_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-model */ \"(app-pages-browser)/./node_modules/prosemirror-model/dist/index.js\");\n/* harmony import */ var prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prosemirror-transform */ \"(app-pages-browser)/./node_modules/prosemirror-transform/dist/index.js\");\n\n\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor(\n /**\n The resolved anchor of the selection (the side that stays in\n place when the selection is modified).\n */\n $anchor, \n /**\n The resolved head of the selection (the side that moves when\n the selection is modified).\n */\n $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() { return this.$anchor.pos; }\n /**\n The selection's head.\n */\n get head() { return this.$head.pos; }\n /**\n The lower bound of the selection's main range.\n */\n get from() { return this.$from.pos; }\n /**\n The upper bound of the selection's main range.\n */\n get to() { return this.$to.pos; }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty) {\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n }\n else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found)\n return found;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n /**\n Create a range.\n */\n constructor(\n /**\n The lower bound of the range.\n */\n $from, \n /**\n The upper bound of the range.\n */\n $to) {\n this.$from = $from;\n this.$to = $to;\n }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty) {\n super.replace(tr, content);\n if (content == prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found)\n $head = found.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n }\n else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0))\n $anchor = $head;\n }\n }\n return new TextSelection($anchor, $head);\n }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new NodeSelection($pos);\n }\n content() {\n return new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() { return new NodeBookmark(this.anchor); }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty) {\n if (content == prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n }\n else {\n super.replace(tr, content);\n }\n }\n toJSON() { return { type: \"all\" }; }\n /**\n @internal\n */\n static fromJSON(doc) { return new AllSelection(doc); }\n map(doc) { return new AllSelection(doc); }\n eq(other) { return other instanceof AllSelection; }\n getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n map() { return this; },\n resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n }\n else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.ReplaceStep || step instanceof prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n end = newTo; });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata\nproperties: it will attach a property `\"pointer\"` with the value\n`true` to selection transactions directly caused by mouse or touch\ninput, a `\"composition\"` property holding an ID identifying the\ncomposition that caused it to transactions caused by composed DOM\ninput, and a `\"uiEvent\"` property of that may be `\"paste\"`,\n`\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__.Transform {\n /**\n @internal\n */\n constructor(state) {\n super(state.doc);\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n this.time = Date.now();\n this.curSelection = state.selection;\n this.storedMarks = state.storedMarks;\n }\n /**\n The transaction's current selection. This defaults to the editor\n selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n transaction, but can be overwritten with\n [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n */\n get selection() {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection;\n }\n /**\n Update the transaction's current selection. Will determine the\n selection that the editor gets when the transaction is applied.\n */\n setSelection(selection) {\n if (selection.$from.doc != this.doc)\n throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this;\n }\n /**\n Whether the selection was explicitly updated by this transaction.\n */\n get selectionSet() {\n return (this.updated & UPDATED_SEL) > 0;\n }\n /**\n Set the current stored marks.\n */\n setStoredMarks(marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this;\n }\n /**\n Make sure the current stored marks or, if that is null, the marks\n at the selection, match the given set of marks. Does nothing if\n this is already the case.\n */\n ensureMarks(marks) {\n if (!prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n this.setStoredMarks(marks);\n return this;\n }\n /**\n Add a mark to the set of stored marks.\n */\n addStoredMark(mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Remove a mark or mark type from the set of stored marks.\n */\n removeStoredMark(mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Whether the stored marks were explicitly set for this transaction.\n */\n get storedMarksSet() {\n return (this.updated & UPDATED_MARKS) > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n super.addStep(step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n }\n /**\n Update the timestamp for the transaction.\n */\n setTime(time) {\n this.time = time;\n return this;\n }\n /**\n Replace the current selection with the given slice.\n */\n replaceSelection(slice) {\n this.selection.replace(this, slice);\n return this;\n }\n /**\n Replace the selection with the given node. When `inheritMarks` is\n true and the content is inline, it inherits the marks from the\n place where it is inserted.\n */\n replaceSelectionWith(node, inheritMarks = true) {\n let selection = this.selection;\n if (inheritMarks)\n node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Mark.none)));\n selection.replaceWith(this, node);\n return this;\n }\n /**\n Delete the selection.\n */\n deleteSelection() {\n this.selection.replace(this);\n return this;\n }\n /**\n Replace the given range, or the selection if no range is given,\n with a text node containing the given string.\n */\n insertText(text, from, to) {\n let schema = this.doc.type.schema;\n if (from == null) {\n if (!text)\n return this.deleteSelection();\n return this.replaceSelectionWith(schema.text(text), true);\n }\n else {\n if (to == null)\n to = from;\n if (!text)\n return this.deleteRange(from, to);\n let marks = this.storedMarks;\n if (!marks) {\n let $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty && this.selection.to == from + text.length)\n this.setSelection(Selection.near(this.selection.$to));\n return this;\n }\n }\n /**\n Store a metadata property in this transaction, keyed either by\n name or by plugin.\n */\n setMeta(key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this;\n }\n /**\n Retrieve a metadata property for a given name or plugin.\n */\n getMeta(key) {\n return this.meta[typeof key == \"string\" ? key : key.key];\n }\n /**\n Returns true if this transaction doesn't contain any metadata,\n and can thus safely be extended.\n */\n get isGeneric() {\n for (let _ in this.meta)\n return false;\n return true;\n }\n /**\n Indicate that the editor should scroll the selection into view\n when updated to the state produced by this transaction.\n */\n scrollIntoView() {\n this.updated |= UPDATED_SCROLL;\n return this;\n }\n /**\n True when this transaction has had `scrollIntoView` called on it.\n */\n get scrolledIntoView() {\n return (this.updated & UPDATED_SCROLL) > 0;\n }\n}\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n}\nconst baseFields = [\n new FieldDesc(\"doc\", {\n init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n apply(tr) { return tr.doc; }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n apply(tr) { return tr.selection; }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) { return config.storedMarks || null; },\n apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() { return 0; },\n apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n constructor(schema, plugins) {\n this.schema = schema;\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n this.fields = baseFields.slice();\n if (plugins)\n plugins.forEach(plugin => {\n if (this.pluginsByKey[plugin.key])\n throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n this.plugins.push(plugin);\n this.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n });\n }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure—it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n config) {\n this.config = config;\n }\n /**\n The schema of the state's document.\n */\n get schema() {\n return this.config.schema;\n }\n /**\n The plugins that are active in this state.\n */\n get plugins() {\n return this.config.plugins;\n }\n /**\n Apply the given transaction to produce a new state.\n */\n apply(tr) {\n return this.applyTransaction(tr).state;\n }\n /**\n @internal\n */\n filterTransaction(tr, ignore = -1) {\n for (let i = 0; i < this.config.plugins.length; i++)\n if (i != ignore) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n return false;\n }\n return true;\n }\n /**\n Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n returns the precise transactions that were applied (which might\n be influenced by the [transaction\n hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n plugins) along with the new state.\n */\n applyTransaction(rootTr) {\n if (!this.filterTransaction(rootTr))\n return { state: this, transactions: [] };\n let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n let haveNew = false;\n for (let i = 0; i < this.config.plugins.length; i++) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n let tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (let j = 0; j < this.config.plugins.length; j++)\n seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen)\n seen[i] = { state: newState, n: trs.length };\n }\n }\n if (!haveNew)\n return { state: newState, transactions: trs };\n }\n }\n /**\n @internal\n */\n applyInner(tr) {\n if (!tr.before.eq(this.doc))\n throw new RangeError(\"Applying a mismatched transaction\");\n let newInstance = new EditorState(this.config), fields = this.config.fields;\n for (let i = 0; i < fields.length; i++) {\n let field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n return newInstance;\n }\n /**\n Accessor that constructs and returns a new [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n */\n get tr() { return new Transaction(this); }\n /**\n Create a new state.\n */\n static create(config) {\n let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n let instance = new EditorState($config);\n for (let i = 0; i < $config.fields.length; i++)\n instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n return instance;\n }\n /**\n Create a new state based on this one, but with an adjusted set\n of active plugins. State fields that exist in both sets of\n plugins are kept unchanged. Those that no longer exist are\n dropped, and those that are new are initialized using their\n [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n configuration object..\n */\n reconfigure(config) {\n let $config = new Configuration(this.schema, config.plugins);\n let fields = $config.fields, instance = new EditorState($config);\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance;\n }\n /**\n Serialize this state to JSON. If you want to serialize the state\n of plugins, pass an object mapping property names to use in the\n resulting JSON object to plugin objects. The argument may also be\n a string or number, in which case it is ignored, to support the\n way `JSON.stringify` calls `toString` methods.\n */\n toJSON(pluginFields) {\n let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n if (this.storedMarks)\n result.storedMarks = this.storedMarks.map(m => m.toJSON());\n if (pluginFields && typeof pluginFields == 'object')\n for (let prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON)\n result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n }\n return result;\n }\n /**\n Deserialize a JSON representation of a state. `config` should\n have at least a `schema` field, and should contain array of\n plugins to initialize the state with. `pluginFields` can be used\n to deserialize the state of plugins, by associating plugin\n instances with the property names they use in the JSON object.\n */\n static fromJSON(config, json, pluginFields) {\n if (!json)\n throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n if (!config.schema)\n throw new RangeError(\"Required config field 'schema' missing\");\n let $config = new Configuration(config.schema, config.plugins);\n let instance = new EditorState($config);\n $config.fields.forEach(field => {\n if (field.name == \"doc\") {\n instance.doc = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Node.fromJSON(config.schema, json.doc);\n }\n else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n }\n else if (field.name == \"storedMarks\") {\n if (json.storedMarks)\n instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n }\n else {\n if (pluginFields)\n for (let prop in pluginFields) {\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return;\n }\n }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance;\n }\n}\n\nfunction bindProps(obj, self, target) {\n for (let prop in obj) {\n let val = obj[prop];\n if (val instanceof Function)\n val = val.bind(self);\n else if (prop == \"handleDOMEvents\")\n val = bindProps(val, self, {});\n target[prop] = val;\n }\n return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n /**\n Create a plugin.\n */\n constructor(\n /**\n The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n */\n spec) {\n this.spec = spec;\n /**\n The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n */\n this.props = {};\n if (spec.props)\n bindProps(spec.props, this, this.props);\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n }\n /**\n Extract the plugin's state field from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n if (name in keys)\n return name + \"$\" + ++keys[name];\n keys[name] = 0;\n return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n /**\n Create a plugin key.\n */\n constructor(name = \"key\") { this.key = createKey(name); }\n /**\n Get the active plugin with this key, if any, from an editor\n state.\n */\n get(state) { return state.config.pluginsByKey[this.key]; }\n /**\n Get the plugin's state from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci1zdGF0ZS9kaXN0L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQWdFO0FBQ2tCOztBQUVsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbUJBQW1CO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsb0RBQUs7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1CQUFtQjtBQUMzQyxrQkFBa0IsYUFBYTtBQUMvQiw4RUFBOEUsb0RBQUs7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbUJBQW1CO0FBQzNDLGtCQUFrQixhQUFhO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLFlBQVk7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxXQUFXO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBSztBQUMvQjtBQUNBLHVCQUF1QixvREFBSztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsZUFBZTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0RBQUssQ0FBQyx1REFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGVBQWU7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsb0RBQUs7QUFDL0IsdUJBQXVCLG9EQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0IsZUFBZTtBQUNmLGdCQUFnQjtBQUNoQixvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsWUFBWSxjQUFjO0FBQzFCLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLHdDQUF3QztBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsOERBQVcsb0JBQW9CLG9FQUFpQjtBQUMxRTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25ELHNCQUFzQjtBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDREQUFTO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFJO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0Qjs7QUFFOEgiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHByb3NlbWlycm9yLXN0YXRlXFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTbGljZSwgRnJhZ21lbnQsIE1hcmssIE5vZGUgfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQgeyBSZXBsYWNlU3RlcCwgUmVwbGFjZUFyb3VuZFN0ZXAsIFRyYW5zZm9ybSB9IGZyb20gJ3Byb3NlbWlycm9yLXRyYW5zZm9ybSc7XG5cbmNvbnN0IGNsYXNzZXNCeUlkID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbi8qKlxuU3VwZXJjbGFzcyBmb3IgZWRpdG9yIHNlbGVjdGlvbnMuIEV2ZXJ5IHNlbGVjdGlvbiB0eXBlIHNob3VsZFxuZXh0ZW5kIHRoaXMuIFNob3VsZCBub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LlxuKi9cbmNsYXNzIFNlbGVjdGlvbiB7XG4gICAgLyoqXG4gICAgSW5pdGlhbGl6ZSBhIHNlbGVjdGlvbiB3aXRoIHRoZSBoZWFkIGFuZCBhbmNob3IgYW5kIHJhbmdlcy4gSWYgbm9cbiAgICByYW5nZXMgYXJlIGdpdmVuLCBjb25zdHJ1Y3RzIGEgc2luZ2xlIHJhbmdlIGFjcm9zcyBgJGFuY2hvcmAgYW5kXG4gICAgYCRoZWFkYC5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSByZXNvbHZlZCBhbmNob3Igb2YgdGhlIHNlbGVjdGlvbiAodGhlIHNpZGUgdGhhdCBzdGF5cyBpblxuICAgIHBsYWNlIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBtb2RpZmllZCkuXG4gICAgKi9cbiAgICAkYW5jaG9yLCBcbiAgICAvKipcbiAgICBUaGUgcmVzb2x2ZWQgaGVhZCBvZiB0aGUgc2VsZWN0aW9uICh0aGUgc2lkZSB0aGF0IG1vdmVzIHdoZW5cbiAgICB0aGUgc2VsZWN0aW9uIGlzIG1vZGlmaWVkKS5cbiAgICAqL1xuICAgICRoZWFkLCByYW5nZXMpIHtcbiAgICAgICAgdGhpcy4kYW5jaG9yID0gJGFuY2hvcjtcbiAgICAgICAgdGhpcy4kaGVhZCA9ICRoZWFkO1xuICAgICAgICB0aGlzLnJhbmdlcyA9IHJhbmdlcyB8fCBbbmV3IFNlbGVjdGlvblJhbmdlKCRhbmNob3IubWluKCRoZWFkKSwgJGFuY2hvci5tYXgoJGhlYWQpKV07XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSBzZWxlY3Rpb24ncyBhbmNob3IsIGFzIGFuIHVucmVzb2x2ZWQgcG9zaXRpb24uXG4gICAgKi9cbiAgICBnZXQgYW5jaG9yKCkgeyByZXR1cm4gdGhpcy4kYW5jaG9yLnBvczsgfVxuICAgIC8qKlxuICAgIFRoZSBzZWxlY3Rpb24ncyBoZWFkLlxuICAgICovXG4gICAgZ2V0IGhlYWQoKSB7IHJldHVybiB0aGlzLiRoZWFkLnBvczsgfVxuICAgIC8qKlxuICAgIFRoZSBsb3dlciBib3VuZCBvZiB0aGUgc2VsZWN0aW9uJ3MgbWFpbiByYW5nZS5cbiAgICAqL1xuICAgIGdldCBmcm9tKCkgeyByZXR1cm4gdGhpcy4kZnJvbS5wb3M7IH1cbiAgICAvKipcbiAgICBUaGUgdXBwZXIgYm91bmQgb2YgdGhlIHNlbGVjdGlvbidzIG1haW4gcmFuZ2UuXG4gICAgKi9cbiAgICBnZXQgdG8oKSB7IHJldHVybiB0aGlzLiR0by5wb3M7IH1cbiAgICAvKipcbiAgICBUaGUgcmVzb2x2ZWQgbG93ZXIgIGJvdW5kIG9mIHRoZSBzZWxlY3Rpb24ncyBtYWluIHJhbmdlLlxuICAgICovXG4gICAgZ2V0ICRmcm9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZXNbMF0uJGZyb207XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSByZXNvbHZlZCB1cHBlciBib3VuZCBvZiB0aGUgc2VsZWN0aW9uJ3MgbWFpbiByYW5nZS5cbiAgICAqL1xuICAgIGdldCAkdG8oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlc1swXS4kdG87XG4gICAgfVxuICAgIC8qKlxuICAgIEluZGljYXRlcyB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gY29udGFpbnMgYW55IGNvbnRlbnQuXG4gICAgKi9cbiAgICBnZXQgZW1wdHkoKSB7XG4gICAgICAgIGxldCByYW5nZXMgPSB0aGlzLnJhbmdlcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAocmFuZ2VzW2ldLiRmcm9tLnBvcyAhPSByYW5nZXNbaV0uJHRvLnBvcylcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvKipcbiAgICBHZXQgdGhlIGNvbnRlbnQgb2YgdGhpcyBzZWxlY3Rpb24gYXMgYSBzbGljZS5cbiAgICAqL1xuICAgIGNvbnRlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRmcm9tLmRvYy5zbGljZSh0aGlzLmZyb20sIHRoaXMudG8sIHRydWUpO1xuICAgIH1cbiAgICAvKipcbiAgICBSZXBsYWNlIHRoZSBzZWxlY3Rpb24gd2l0aCBhIHNsaWNlIG9yLCBpZiBubyBzbGljZSBpcyBnaXZlbixcbiAgICBkZWxldGUgdGhlIHNlbGVjdGlvbi4gV2lsbCBhcHBlbmQgdG8gdGhlIGdpdmVuIHRyYW5zYWN0aW9uLlxuICAgICovXG4gICAgcmVwbGFjZSh0ciwgY29udGVudCA9IFNsaWNlLmVtcHR5KSB7XG4gICAgICAgIC8vIFB1dCB0aGUgbmV3IHNlbGVjdGlvbiBhdCB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGluc2VydGVkXG4gICAgICAgIC8vIGNvbnRlbnQuIFdoZW4gdGhhdCBlbmRlZCBpbiBhbiBpbmxpbmUgbm9kZSwgc2VhcmNoIGJhY2t3YXJkcyxcbiAgICAgICAgLy8gdG8gZ2V0IHRoZSBwb3NpdGlvbiBhZnRlciB0aGF0IG5vZGUuIElmIG5vdCwgc2VhcmNoIGZvcndhcmQuXG4gICAgICAgIGxldCBsYXN0Tm9kZSA9IGNvbnRlbnQuY29udGVudC5sYXN0Q2hpbGQsIGxhc3RQYXJlbnQgPSBudWxsO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRlbnQub3BlbkVuZDsgaSsrKSB7XG4gICAgICAgICAgICBsYXN0UGFyZW50ID0gbGFzdE5vZGU7XG4gICAgICAgICAgICBsYXN0Tm9kZSA9IGxhc3ROb2RlLmxhc3RDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWFwRnJvbSA9IHRyLnN0ZXBzLmxlbmd0aCwgcmFuZ2VzID0gdGhpcy5yYW5nZXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgeyAkZnJvbSwgJHRvIH0gPSByYW5nZXNbaV0sIG1hcHBpbmcgPSB0ci5tYXBwaW5nLnNsaWNlKG1hcEZyb20pO1xuICAgICAgICAgICAgdHIucmVwbGFjZVJhbmdlKG1hcHBpbmcubWFwKCRmcm9tLnBvcyksIG1hcHBpbmcubWFwKCR0by5wb3MpLCBpID8gU2xpY2UuZW1wdHkgOiBjb250ZW50KTtcbiAgICAgICAgICAgIGlmIChpID09IDApXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uVG9JbnNlcnRpb25FbmQodHIsIG1hcEZyb20sIChsYXN0Tm9kZSA/IGxhc3ROb2RlLmlzSW5saW5lIDogbGFzdFBhcmVudCAmJiBsYXN0UGFyZW50LmlzVGV4dGJsb2NrKSA/IC0xIDogMSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgUmVwbGFjZSB0aGUgc2VsZWN0aW9uIHdpdGggdGhlIGdpdmVuIG5vZGUsIGFwcGVuZGluZyB0aGUgY2hhbmdlc1xuICAgIHRvIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi5cbiAgICAqL1xuICAgIHJlcGxhY2VXaXRoKHRyLCBub2RlKSB7XG4gICAgICAgIGxldCBtYXBGcm9tID0gdHIuc3RlcHMubGVuZ3RoLCByYW5nZXMgPSB0aGlzLnJhbmdlcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB7ICRmcm9tLCAkdG8gfSA9IHJhbmdlc1tpXSwgbWFwcGluZyA9IHRyLm1hcHBpbmcuc2xpY2UobWFwRnJvbSk7XG4gICAgICAgICAgICBsZXQgZnJvbSA9IG1hcHBpbmcubWFwKCRmcm9tLnBvcyksIHRvID0gbWFwcGluZy5tYXAoJHRvLnBvcyk7XG4gICAgICAgICAgICBpZiAoaSkge1xuICAgICAgICAgICAgICAgIHRyLmRlbGV0ZVJhbmdlKGZyb20sIHRvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyLnJlcGxhY2VSYW5nZVdpdGgoZnJvbSwgdG8sIG5vZGUpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvblRvSW5zZXJ0aW9uRW5kKHRyLCBtYXBGcm9tLCBub2RlLmlzSW5saW5lID8gLTEgOiAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICBGaW5kIGEgdmFsaWQgY3Vyc29yIG9yIGxlYWYgbm9kZSBzZWxlY3Rpb24gc3RhcnRpbmcgYXQgdGhlIGdpdmVuXG4gICAgcG9zaXRpb24gYW5kIHNlYXJjaGluZyBiYWNrIGlmIGBkaXJgIGlzIG5lZ2F0aXZlLCBhbmQgZm9yd2FyZCBpZlxuICAgIHBvc2l0aXZlLiBXaGVuIGB0ZXh0T25seWAgaXMgdHJ1ZSwgb25seSBjb25zaWRlciBjdXJzb3JcbiAgICBzZWxlY3Rpb25zLiBXaWxsIHJldHVybiBudWxsIHdoZW4gbm8gdmFsaWQgc2VsZWN0aW9uIHBvc2l0aW9uIGlzXG4gICAgZm91bmQuXG4gICAgKi9cbiAgICBzdGF0aWMgZmluZEZyb20oJHBvcywgZGlyLCB0ZXh0T25seSA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBpbm5lciA9ICRwb3MucGFyZW50LmlubGluZUNvbnRlbnQgPyBuZXcgVGV4dFNlbGVjdGlvbigkcG9zKVxuICAgICAgICAgICAgOiBmaW5kU2VsZWN0aW9uSW4oJHBvcy5ub2RlKDApLCAkcG9zLnBhcmVudCwgJHBvcy5wb3MsICRwb3MuaW5kZXgoKSwgZGlyLCB0ZXh0T25seSk7XG4gICAgICAgIGlmIChpbm5lcilcbiAgICAgICAgICAgIHJldHVybiBpbm5lcjtcbiAgICAgICAgZm9yIChsZXQgZGVwdGggPSAkcG9zLmRlcHRoIC0gMTsgZGVwdGggPj0gMDsgZGVwdGgtLSkge1xuICAgICAgICAgICAgbGV0IGZvdW5kID0gZGlyIDwgMFxuICAgICAgICAgICAgICAgID8gZmluZFNlbGVjdGlvbkluKCRwb3Mubm9kZSgwKSwgJHBvcy5ub2RlKGRlcHRoKSwgJHBvcy5iZWZvcmUoZGVwdGggKyAxKSwgJHBvcy5pbmRleChkZXB0aCksIGRpciwgdGV4dE9ubHkpXG4gICAgICAgICAgICAgICAgOiBmaW5kU2VsZWN0aW9uSW4oJHBvcy5ub2RlKDApLCAkcG9zLm5vZGUoZGVwdGgpLCAkcG9zLmFmdGVyKGRlcHRoICsgMSksICRwb3MuaW5kZXgoZGVwdGgpICsgMSwgZGlyLCB0ZXh0T25seSk7XG4gICAgICAgICAgICBpZiAoZm91bmQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICBGaW5kIGEgdmFsaWQgY3Vyc29yIG9yIGxlYWYgbm9kZSBzZWxlY3Rpb24gbmVhciB0aGUgZ2l2ZW5cbiAgICBwb3NpdGlvbi4gU2VhcmNoZXMgZm9yd2FyZCBmaXJzdCBieSBkZWZhdWx0LCBidXQgaWYgYGJpYXNgIGlzXG4gICAgbmVnYXRpdmUsIGl0IHdpbGwgc2VhcmNoIGJhY2t3YXJkcyBmaXJzdC5cbiAgICAqL1xuICAgIHN0YXRpYyBuZWFyKCRwb3MsIGJpYXMgPSAxKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRGcm9tKCRwb3MsIGJpYXMpIHx8IHRoaXMuZmluZEZyb20oJHBvcywgLWJpYXMpIHx8IG5ldyBBbGxTZWxlY3Rpb24oJHBvcy5ub2RlKDApKTtcbiAgICB9XG4gICAgLyoqXG4gICAgRmluZCB0aGUgY3Vyc29yIG9yIGxlYWYgbm9kZSBzZWxlY3Rpb24gY2xvc2VzdCB0byB0aGUgc3RhcnQgb2ZcbiAgICB0aGUgZ2l2ZW4gZG9jdW1lbnQuIFdpbGwgcmV0dXJuIGFuXG4gICAgW2BBbGxTZWxlY3Rpb25gXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jc3RhdGUuQWxsU2VsZWN0aW9uKSBpZiBubyB2YWxpZCBwb3NpdGlvblxuICAgIGV4aXN0cy5cbiAgICAqL1xuICAgIHN0YXRpYyBhdFN0YXJ0KGRvYykge1xuICAgICAgICByZXR1cm4gZmluZFNlbGVjdGlvbkluKGRvYywgZG9jLCAwLCAwLCAxKSB8fCBuZXcgQWxsU2VsZWN0aW9uKGRvYyk7XG4gICAgfVxuICAgIC8qKlxuICAgIEZpbmQgdGhlIGN1cnNvciBvciBsZWFmIG5vZGUgc2VsZWN0aW9uIGNsb3Nlc3QgdG8gdGhlIGVuZCBvZiB0aGVcbiAgICBnaXZlbiBkb2N1bWVudC5cbiAgICAqL1xuICAgIHN0YXRpYyBhdEVuZChkb2MpIHtcbiAgICAgICAgcmV0dXJuIGZpbmRTZWxlY3Rpb25Jbihkb2MsIGRvYywgZG9jLmNvbnRlbnQuc2l6ZSwgZG9jLmNoaWxkQ291bnQsIC0xKSB8fCBuZXcgQWxsU2VsZWN0aW9uKGRvYyk7XG4gICAgfVxuICAgIC8qKlxuICAgIERlc2VyaWFsaXplIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgc2VsZWN0aW9uLiBNdXN0IGJlXG4gICAgaW1wbGVtZW50ZWQgZm9yIGN1c3RvbSBjbGFzc2VzIChhcyBhIHN0YXRpYyBjbGFzcyBtZXRob2QpLlxuICAgICovXG4gICAgc3RhdGljIGZyb21KU09OKGRvYywganNvbikge1xuICAgICAgICBpZiAoIWpzb24gfHwgIWpzb24udHlwZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBpbnB1dCBmb3IgU2VsZWN0aW9uLmZyb21KU09OXCIpO1xuICAgICAgICBsZXQgY2xzID0gY2xhc3Nlc0J5SWRbanNvbi50eXBlXTtcbiAgICAgICAgaWYgKCFjbHMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTm8gc2VsZWN0aW9uIHR5cGUgJHtqc29uLnR5cGV9IGRlZmluZWRgKTtcbiAgICAgICAgcmV0dXJuIGNscy5mcm9tSlNPTihkb2MsIGpzb24pO1xuICAgIH1cbiAgICAvKipcbiAgICBUbyBiZSBhYmxlIHRvIGRlc2VyaWFsaXplIHNlbGVjdGlvbnMgZnJvbSBKU09OLCBjdXN0b20gc2VsZWN0aW9uXG4gICAgY2xhc3NlcyBtdXN0IHJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCBhbiBJRCBzdHJpbmcsIHNvIHRoYXQgdGhleVxuICAgIGNhbiBiZSBkaXNhbWJpZ3VhdGVkLiBUcnkgdG8gcGljayBzb21ldGhpbmcgdGhhdCdzIHVubGlrZWx5IHRvXG4gICAgY2xhc2ggd2l0aCBjbGFzc2VzIGZyb20gb3RoZXIgbW9kdWxlcy5cbiAgICAqL1xuICAgIHN0YXRpYyBqc29uSUQoaWQsIHNlbGVjdGlvbkNsYXNzKSB7XG4gICAgICAgIGlmIChpZCBpbiBjbGFzc2VzQnlJZClcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiRHVwbGljYXRlIHVzZSBvZiBzZWxlY3Rpb24gSlNPTiBJRCBcIiArIGlkKTtcbiAgICAgICAgY2xhc3Nlc0J5SWRbaWRdID0gc2VsZWN0aW9uQ2xhc3M7XG4gICAgICAgIHNlbGVjdGlvbkNsYXNzLnByb3RvdHlwZS5qc29uSUQgPSBpZDtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkNsYXNzO1xuICAgIH1cbiAgICAvKipcbiAgICBHZXQgYSBbYm9va21hcmtdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5TZWxlY3Rpb25Cb29rbWFyaykgZm9yIHRoaXMgc2VsZWN0aW9uLFxuICAgIHdoaWNoIGlzIGEgdmFsdWUgdGhhdCBjYW4gYmUgbWFwcGVkIHdpdGhvdXQgaGF2aW5nIGFjY2VzcyB0byBhXG4gICAgY3VycmVudCBkb2N1bWVudCwgYW5kIGxhdGVyIHJlc29sdmVkIHRvIGEgcmVhbCBzZWxlY3Rpb24gZm9yIGFcbiAgICBnaXZlbiBkb2N1bWVudCBhZ2Fpbi4gKFRoaXMgaXMgdXNlZCBtb3N0bHkgYnkgdGhlIGhpc3RvcnkgdG9cbiAgICB0cmFjayBhbmQgcmVzdG9yZSBvbGQgc2VsZWN0aW9ucy4pIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mXG4gICAgdGhpcyBtZXRob2QganVzdCBjb252ZXJ0cyB0aGUgc2VsZWN0aW9uIHRvIGEgdGV4dCBzZWxlY3Rpb24gYW5kXG4gICAgcmV0dXJucyB0aGUgYm9va21hcmsgZm9yIHRoYXQuXG4gICAgKi9cbiAgICBnZXRCb29rbWFyaygpIHtcbiAgICAgICAgcmV0dXJuIFRleHRTZWxlY3Rpb24uYmV0d2Vlbih0aGlzLiRhbmNob3IsIHRoaXMuJGhlYWQpLmdldEJvb2ttYXJrKCk7XG4gICAgfVxufVxuU2VsZWN0aW9uLnByb3RvdHlwZS52aXNpYmxlID0gdHJ1ZTtcbi8qKlxuUmVwcmVzZW50cyBhIHNlbGVjdGVkIHJhbmdlIGluIGEgZG9jdW1lbnQuXG4qL1xuY2xhc3MgU2VsZWN0aW9uUmFuZ2Uge1xuICAgIC8qKlxuICAgIENyZWF0ZSBhIHJhbmdlLlxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgVGhlIGxvd2VyIGJvdW5kIG9mIHRoZSByYW5nZS5cbiAgICAqL1xuICAgICRmcm9tLCBcbiAgICAvKipcbiAgICBUaGUgdXBwZXIgYm91bmQgb2YgdGhlIHJhbmdlLlxuICAgICovXG4gICAgJHRvKSB7XG4gICAgICAgIHRoaXMuJGZyb20gPSAkZnJvbTtcbiAgICAgICAgdGhpcy4kdG8gPSAkdG87XG4gICAgfVxufVxubGV0IHdhcm5lZEFib3V0VGV4dFNlbGVjdGlvbiA9IGZhbHNlO1xuZnVuY3Rpb24gY2hlY2tUZXh0U2VsZWN0aW9uKCRwb3MpIHtcbiAgICBpZiAoIXdhcm5lZEFib3V0VGV4dFNlbGVjdGlvbiAmJiAhJHBvcy5wYXJlbnQuaW5saW5lQ29udGVudCkge1xuICAgICAgICB3YXJuZWRBYm91dFRleHRTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICBjb25zb2xlW1wid2FyblwiXShcIlRleHRTZWxlY3Rpb24gZW5kcG9pbnQgbm90IHBvaW50aW5nIGludG8gYSBub2RlIHdpdGggaW5saW5lIGNvbnRlbnQgKFwiICsgJHBvcy5wYXJlbnQudHlwZS5uYW1lICsgXCIpXCIpO1xuICAgIH1cbn1cbi8qKlxuQSB0ZXh0IHNlbGVjdGlvbiByZXByZXNlbnRzIGEgY2xhc3NpY2FsIGVkaXRvciBzZWxlY3Rpb24sIHdpdGggYVxuaGVhZCAodGhlIG1vdmluZyBzaWRlKSBhbmQgYW5jaG9yIChpbW1vYmlsZSBzaWRlKSwgYm90aCBvZiB3aGljaFxucG9pbnQgaW50byB0ZXh0YmxvY2sgbm9kZXMuIEl0IGNhbiBiZSBlbXB0eSAoYSByZWd1bGFyIGN1cnNvclxucG9zaXRpb24pLlxuKi9cbmNsYXNzIFRleHRTZWxlY3Rpb24gZXh0ZW5kcyBTZWxlY3Rpb24ge1xuICAgIC8qKlxuICAgIENvbnN0cnVjdCBhIHRleHQgc2VsZWN0aW9uIGJldHdlZW4gdGhlIGdpdmVuIHBvaW50cy5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCRhbmNob3IsICRoZWFkID0gJGFuY2hvcikge1xuICAgICAgICBjaGVja1RleHRTZWxlY3Rpb24oJGFuY2hvcik7XG4gICAgICAgIGNoZWNrVGV4dFNlbGVjdGlvbigkaGVhZCk7XG4gICAgICAgIHN1cGVyKCRhbmNob3IsICRoZWFkKTtcbiAgICB9XG4gICAgLyoqXG4gICAgUmV0dXJucyBhIHJlc29sdmVkIHBvc2l0aW9uIGlmIHRoaXMgaXMgYSBjdXJzb3Igc2VsZWN0aW9uIChhblxuICAgIGVtcHR5IHRleHQgc2VsZWN0aW9uKSwgYW5kIG51bGwgb3RoZXJ3aXNlLlxuICAgICovXG4gICAgZ2V0ICRjdXJzb3IoKSB7IHJldHVybiB0aGlzLiRhbmNob3IucG9zID09IHRoaXMuJGhlYWQucG9zID8gdGhpcy4kaGVhZCA6IG51bGw7IH1cbiAgICBtYXAoZG9jLCBtYXBwaW5nKSB7XG4gICAgICAgIGxldCAkaGVhZCA9IGRvYy5yZXNvbHZlKG1hcHBpbmcubWFwKHRoaXMuaGVhZCkpO1xuICAgICAgICBpZiAoISRoZWFkLnBhcmVudC5pbmxpbmVDb250ZW50KVxuICAgICAgICAgICAgcmV0dXJuIFNlbGVjdGlvbi5uZWFyKCRoZWFkKTtcbiAgICAgICAgbGV0ICRhbmNob3IgPSBkb2MucmVzb2x2ZShtYXBwaW5nLm1hcCh0aGlzLmFuY2hvcikpO1xuICAgICAgICByZXR1cm4gbmV3IFRleHRTZWxlY3Rpb24oJGFuY2hvci5wYXJlbnQuaW5saW5lQ29udGVudCA/ICRhbmNob3IgOiAkaGVhZCwgJGhlYWQpO1xuICAgIH1cbiAgICByZXBsYWNlKHRyLCBjb250ZW50ID0gU2xpY2UuZW1wdHkpIHtcbiAgICAgICAgc3VwZXIucmVwbGFjZSh0ciwgY29udGVudCk7XG4gICAgICAgIGlmIChjb250ZW50ID09IFNsaWNlLmVtcHR5KSB7XG4gICAgICAgICAgICBsZXQgbWFya3MgPSB0aGlzLiRmcm9tLm1hcmtzQWNyb3NzKHRoaXMuJHRvKTtcbiAgICAgICAgICAgIGlmIChtYXJrcylcbiAgICAgICAgICAgICAgICB0ci5lbnN1cmVNYXJrcyhtYXJrcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXEob3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbiAmJiBvdGhlci5hbmNob3IgPT0gdGhpcy5hbmNob3IgJiYgb3RoZXIuaGVhZCA9PSB0aGlzLmhlYWQ7XG4gICAgfVxuICAgIGdldEJvb2ttYXJrKCkge1xuICAgICAgICByZXR1cm4gbmV3IFRleHRCb29rbWFyayh0aGlzLmFuY2hvciwgdGhpcy5oZWFkKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcInRleHRcIiwgYW5jaG9yOiB0aGlzLmFuY2hvciwgaGVhZDogdGhpcy5oZWFkIH07XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgc3RhdGljIGZyb21KU09OKGRvYywganNvbikge1xuICAgICAgICBpZiAodHlwZW9mIGpzb24uYW5jaG9yICE9IFwibnVtYmVyXCIgfHwgdHlwZW9mIGpzb24uaGVhZCAhPSBcIm51bWJlclwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIGlucHV0IGZvciBUZXh0U2VsZWN0aW9uLmZyb21KU09OXCIpO1xuICAgICAgICByZXR1cm4gbmV3IFRleHRTZWxlY3Rpb24oZG9jLnJlc29sdmUoanNvbi5hbmNob3IpLCBkb2MucmVzb2x2ZShqc29uLmhlYWQpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgdGV4dCBzZWxlY3Rpb24gZnJvbSBub24tcmVzb2x2ZWQgcG9zaXRpb25zLlxuICAgICovXG4gICAgc3RhdGljIGNyZWF0ZShkb2MsIGFuY2hvciwgaGVhZCA9IGFuY2hvcikge1xuICAgICAgICBsZXQgJGFuY2hvciA9IGRvYy5yZXNvbHZlKGFuY2hvcik7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcygkYW5jaG9yLCBoZWFkID09IGFuY2hvciA/ICRhbmNob3IgOiBkb2MucmVzb2x2ZShoZWFkKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIFJldHVybiBhIHRleHQgc2VsZWN0aW9uIHRoYXQgc3BhbnMgdGhlIGdpdmVuIHBvc2l0aW9ucyBvciwgaWZcbiAgICB0aGV5IGFyZW4ndCB0ZXh0IHBvc2l0aW9ucywgZmluZCBhIHRleHQgc2VsZWN0aW9uIG5lYXIgdGhlbS5cbiAgICBgYmlhc2AgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBtZXRob2Qgc2VhcmNoZXMgZm9yd2FyZCAoZGVmYXVsdClcbiAgICBvciBiYWNrd2FyZHMgKG5lZ2F0aXZlIG51bWJlcikgZmlyc3QuIFdpbGwgZmFsbCBiYWNrIHRvIGNhbGxpbmdcbiAgICBbYFNlbGVjdGlvbi5uZWFyYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLlNlbGVjdGlvbl5uZWFyKSB3aGVuIHRoZSBkb2N1bWVudFxuICAgIGRvZXNuJ3QgY29udGFpbiBhIHZhbGlkIHRleHQgcG9zaXRpb24uXG4gICAgKi9cbiAgICBzdGF0aWMgYmV0d2VlbigkYW5jaG9yLCAkaGVhZCwgYmlhcykge1xuICAgICAgICBsZXQgZFBvcyA9ICRhbmNob3IucG9zIC0gJGhlYWQucG9zO1xuICAgICAgICBpZiAoIWJpYXMgfHwgZFBvcylcbiAgICAgICAgICAgIGJpYXMgPSBkUG9zID49IDAgPyAxIDogLTE7XG4gICAgICAgIGlmICghJGhlYWQucGFyZW50LmlubGluZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IFNlbGVjdGlvbi5maW5kRnJvbSgkaGVhZCwgYmlhcywgdHJ1ZSkgfHwgU2VsZWN0aW9uLmZpbmRGcm9tKCRoZWFkLCAtYmlhcywgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoZm91bmQpXG4gICAgICAgICAgICAgICAgJGhlYWQgPSBmb3VuZC4kaGVhZDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0aW9uLm5lYXIoJGhlYWQsIGJpYXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghJGFuY2hvci5wYXJlbnQuaW5saW5lQ29udGVudCkge1xuICAgICAgICAgICAgaWYgKGRQb3MgPT0gMCkge1xuICAgICAgICAgICAgICAgICRhbmNob3IgPSAkaGVhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICRhbmNob3IgPSAoU2VsZWN0aW9uLmZpbmRGcm9tKCRhbmNob3IsIC1iaWFzLCB0cnVlKSB8fCBTZWxlY3Rpb24uZmluZEZyb20oJGFuY2hvciwgYmlhcywgdHJ1ZSkpLiRhbmNob3I7XG4gICAgICAgICAgICAgICAgaWYgKCgkYW5jaG9yLnBvcyA8ICRoZWFkLnBvcykgIT0gKGRQb3MgPCAwKSlcbiAgICAgICAgICAgICAgICAgICAgJGFuY2hvciA9ICRoZWFkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgVGV4dFNlbGVjdGlvbigkYW5jaG9yLCAkaGVhZCk7XG4gICAgfVxufVxuU2VsZWN0aW9uLmpzb25JRChcInRleHRcIiwgVGV4dFNlbGVjdGlvbik7XG5jbGFzcyBUZXh0Qm9va21hcmsge1xuICAgIGNvbnN0cnVjdG9yKGFuY2hvciwgaGVhZCkge1xuICAgICAgICB0aGlzLmFuY2hvciA9IGFuY2hvcjtcbiAgICAgICAgdGhpcy5oZWFkID0gaGVhZDtcbiAgICB9XG4gICAgbWFwKG1hcHBpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0Qm9va21hcmsobWFwcGluZy5tYXAodGhpcy5hbmNob3IpLCBtYXBwaW5nLm1hcCh0aGlzLmhlYWQpKTtcbiAgICB9XG4gICAgcmVzb2x2ZShkb2MpIHtcbiAgICAgICAgcmV0dXJuIFRleHRTZWxlY3Rpb24uYmV0d2Vlbihkb2MucmVzb2x2ZSh0aGlzLmFuY2hvciksIGRvYy5yZXNvbHZlKHRoaXMuaGVhZCkpO1xuICAgIH1cbn1cbi8qKlxuQSBub2RlIHNlbGVjdGlvbiBpcyBhIHNlbGVjdGlvbiB0aGF0IHBvaW50cyBhdCBhIHNpbmdsZSBub2RlLiBBbGxcbm5vZGVzIG1hcmtlZCBbc2VsZWN0YWJsZV0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGVTcGVjLnNlbGVjdGFibGUpIGNhbiBiZSB0aGVcbnRhcmdldCBvZiBhIG5vZGUgc2VsZWN0aW9uLiBJbiBzdWNoIGEgc2VsZWN0aW9uLCBgZnJvbWAgYW5kIGB0b2BcbnBvaW50IGRpcmVjdGx5IGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlbGVjdGVkIG5vZGUsIGBhbmNob3JgIGVxdWFsc1xuYGZyb21gLCBhbmQgYGhlYWRgIGVxdWFscyBgdG9gLi5cbiovXG5jbGFzcyBOb2RlU2VsZWN0aW9uIGV4dGVuZHMgU2VsZWN0aW9uIHtcbiAgICAvKipcbiAgICBDcmVhdGUgYSBub2RlIHNlbGVjdGlvbi4gRG9lcyBub3QgdmVyaWZ5IHRoZSB2YWxpZGl0eSBvZiBpdHNcbiAgICBhcmd1bWVudC5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCRwb3MpIHtcbiAgICAgICAgbGV0IG5vZGUgPSAkcG9zLm5vZGVBZnRlcjtcbiAgICAgICAgbGV0ICRlbmQgPSAkcG9zLm5vZGUoMCkucmVzb2x2ZSgkcG9zLnBvcyArIG5vZGUubm9kZVNpemUpO1xuICAgICAgICBzdXBlcigkcG9zLCAkZW5kKTtcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB9XG4gICAgbWFwKGRvYywgbWFwcGluZykge1xuICAgICAgICBsZXQgeyBkZWxldGVkLCBwb3MgfSA9IG1hcHBpbmcubWFwUmVzdWx0KHRoaXMuYW5jaG9yKTtcbiAgICAgICAgbGV0ICRwb3MgPSBkb2MucmVzb2x2ZShwb3MpO1xuICAgICAgICBpZiAoZGVsZXRlZClcbiAgICAgICAgICAgIHJldHVybiBTZWxlY3Rpb24ubmVhcigkcG9zKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlU2VsZWN0aW9uKCRwb3MpO1xuICAgIH1cbiAgICBjb250ZW50KCkge1xuICAgICAgICByZXR1cm4gbmV3IFNsaWNlKEZyYWdtZW50LmZyb20odGhpcy5ub2RlKSwgMCwgMCk7XG4gICAgfVxuICAgIGVxKG90aGVyKSB7XG4gICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24gJiYgb3RoZXIuYW5jaG9yID09IHRoaXMuYW5jaG9yO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwibm9kZVwiLCBhbmNob3I6IHRoaXMuYW5jaG9yIH07XG4gICAgfVxuICAgIGdldEJvb2ttYXJrKCkgeyByZXR1cm4gbmV3IE5vZGVCb29rbWFyayh0aGlzLmFuY2hvcik7IH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHN0YXRpYyBmcm9tSlNPTihkb2MsIGpzb24pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBqc29uLmFuY2hvciAhPSBcIm51bWJlclwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIGlucHV0IGZvciBOb2RlU2VsZWN0aW9uLmZyb21KU09OXCIpO1xuICAgICAgICByZXR1cm4gbmV3IE5vZGVTZWxlY3Rpb24oZG9jLnJlc29sdmUoanNvbi5hbmNob3IpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgbm9kZSBzZWxlY3Rpb24gZnJvbSBub24tcmVzb2x2ZWQgcG9zaXRpb25zLlxuICAgICovXG4gICAgc3RhdGljIGNyZWF0ZShkb2MsIGZyb20pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlU2VsZWN0aW9uKGRvYy5yZXNvbHZlKGZyb20pKTtcbiAgICB9XG4gICAgLyoqXG4gICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBub2RlIG1heSBiZSBzZWxlY3RlZCBhcyBhIG5vZGVcbiAgICBzZWxlY3Rpb24uXG4gICAgKi9cbiAgICBzdGF0aWMgaXNTZWxlY3RhYmxlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuICFub2RlLmlzVGV4dCAmJiBub2RlLnR5cGUuc3BlYy5zZWxlY3RhYmxlICE9PSBmYWxzZTtcbiAgICB9XG59XG5Ob2RlU2VsZWN0aW9uLnByb3RvdHlwZS52aXNpYmxlID0gZmFsc2U7XG5TZWxlY3Rpb24uanNvbklEKFwibm9kZVwiLCBOb2RlU2VsZWN0aW9uKTtcbmNsYXNzIE5vZGVCb29rbWFyayB7XG4gICAgY29uc3RydWN0b3IoYW5jaG9yKSB7XG4gICAgICAgIHRoaXMuYW5jaG9yID0gYW5jaG9yO1xuICAgIH1cbiAgICBtYXAobWFwcGluZykge1xuICAgICAgICBsZXQgeyBkZWxldGVkLCBwb3MgfSA9IG1hcHBpbmcubWFwUmVzdWx0KHRoaXMuYW5jaG9yKTtcbiAgICAgICAgcmV0dXJuIGRlbGV0ZWQgPyBuZXcgVGV4dEJvb2ttYXJrKHBvcywgcG9zKSA6IG5ldyBOb2RlQm9va21hcmsocG9zKTtcbiAgICB9XG4gICAgcmVzb2x2ZShkb2MpIHtcbiAgICAgICAgbGV0ICRwb3MgPSBkb2MucmVzb2x2ZSh0aGlzLmFuY2hvciksIG5vZGUgPSAkcG9zLm5vZGVBZnRlcjtcbiAgICAgICAgaWYgKG5vZGUgJiYgTm9kZVNlbGVjdGlvbi5pc1NlbGVjdGFibGUobm9kZSkpXG4gICAgICAgICAgICByZXR1cm4gbmV3IE5vZGVTZWxlY3Rpb24oJHBvcyk7XG4gICAgICAgIHJldHVybiBTZWxlY3Rpb24ubmVhcigkcG9zKTtcbiAgICB9XG59XG4vKipcbkEgc2VsZWN0aW9uIHR5cGUgdGhhdCByZXByZXNlbnRzIHNlbGVjdGluZyB0aGUgd2hvbGUgZG9jdW1lbnRcbih3aGljaCBjYW4gbm90IG5lY2Vzc2FyaWx5IGJlIGV4cHJlc3NlZCB3aXRoIGEgdGV4dCBzZWxlY3Rpb24sIHdoZW5cbnRoZXJlIGFyZSBmb3IgZXhhbXBsZSBsZWFmIGJsb2NrIG5vZGVzIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgdGhlXG5kb2N1bWVudCkuXG4qL1xuY2xhc3MgQWxsU2VsZWN0aW9uIGV4dGVuZHMgU2VsZWN0aW9uIHtcbiAgICAvKipcbiAgICBDcmVhdGUgYW4gYWxsLXNlbGVjdGlvbiBvdmVyIHRoZSBnaXZlbiBkb2N1bWVudC5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRvYykge1xuICAgICAgICBzdXBlcihkb2MucmVzb2x2ZSgwKSwgZG9jLnJlc29sdmUoZG9jLmNvbnRlbnQuc2l6ZSkpO1xuICAgIH1cbiAgICByZXBsYWNlKHRyLCBjb250ZW50ID0gU2xpY2UuZW1wdHkpIHtcbiAgICAgICAgaWYgKGNvbnRlbnQgPT0gU2xpY2UuZW1wdHkpIHtcbiAgICAgICAgICAgIHRyLmRlbGV0ZSgwLCB0ci5kb2MuY29udGVudC5zaXplKTtcbiAgICAgICAgICAgIGxldCBzZWwgPSBTZWxlY3Rpb24uYXRTdGFydCh0ci5kb2MpO1xuICAgICAgICAgICAgaWYgKCFzZWwuZXEodHIuc2VsZWN0aW9uKSlcbiAgICAgICAgICAgICAgICB0ci5zZXRTZWxlY3Rpb24oc2VsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLnJlcGxhY2UodHIsIGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHsgcmV0dXJuIHsgdHlwZTogXCJhbGxcIiB9OyB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbUpTT04oZG9jKSB7IHJldHVybiBuZXcgQWxsU2VsZWN0aW9uKGRvYyk7IH1cbiAgICBtYXAoZG9jKSB7IHJldHVybiBuZXcgQWxsU2VsZWN0aW9uKGRvYyk7IH1cbiAgICBlcShvdGhlcikgeyByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBBbGxTZWxlY3Rpb247IH1cbiAgICBnZXRCb29rbWFyaygpIHsgcmV0dXJuIEFsbEJvb2ttYXJrOyB9XG59XG5TZWxlY3Rpb24uanNvbklEKFwiYWxsXCIsIEFsbFNlbGVjdGlvbik7XG5jb25zdCBBbGxCb29rbWFyayA9IHtcbiAgICBtYXAoKSB7IHJldHVybiB0aGlzOyB9LFxuICAgIHJlc29sdmUoZG9jKSB7IHJldHVybiBuZXcgQWxsU2VsZWN0aW9uKGRvYyk7IH1cbn07XG4vLyBGSVhNRSB3ZSdsbCBuZWVkIHNvbWUgYXdhcmVuZXNzIG9mIHRleHQgZGlyZWN0aW9uIHdoZW4gc2Nhbm5pbmcgZm9yIHNlbGVjdGlvbnNcbi8vIFRyeSB0byBmaW5kIGEgc2VsZWN0aW9uIGluc2lkZSB0aGUgZ2l2ZW4gbm9kZS4gYHBvc2AgcG9pbnRzIGF0IHRoZVxuLy8gcG9zaXRpb24gd2hlcmUgdGhlIHNlYXJjaCBzdGFydHMuIFdoZW4gYHRleHRgIGlzIHRydWUsIG9ubHkgcmV0dXJuXG4vLyB0ZXh0IHNlbGVjdGlvbnMuXG5mdW5jdGlvbiBmaW5kU2VsZWN0aW9uSW4oZG9jLCBub2RlLCBwb3MsIGluZGV4LCBkaXIsIHRleHQgPSBmYWxzZSkge1xuICAgIGlmIChub2RlLmlubGluZUNvbnRlbnQpXG4gICAgICAgIHJldHVybiBUZXh0U2VsZWN0aW9uLmNyZWF0ZShkb2MsIHBvcyk7XG4gICAgZm9yIChsZXQgaSA9IGluZGV4IC0gKGRpciA+IDAgPyAwIDogMSk7IGRpciA+IDAgPyBpIDwgbm9kZS5jaGlsZENvdW50IDogaSA+PSAwOyBpICs9IGRpcikge1xuICAgICAgICBsZXQgY2hpbGQgPSBub2RlLmNoaWxkKGkpO1xuICAgICAgICBpZiAoIWNoaWxkLmlzQXRvbSkge1xuICAgICAgICAgICAgbGV0IGlubmVyID0gZmluZFNlbGVjdGlvbkluKGRvYywgY2hpbGQsIHBvcyArIGRpciwgZGlyIDwgMCA/IGNoaWxkLmNoaWxkQ291bnQgOiAwLCBkaXIsIHRleHQpO1xuICAgICAgICAgICAgaWYgKGlubmVyKVxuICAgICAgICAgICAgICAgIHJldHVybiBpbm5lcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghdGV4dCAmJiBOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShjaGlsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOb2RlU2VsZWN0aW9uLmNyZWF0ZShkb2MsIHBvcyAtIChkaXIgPCAwID8gY2hpbGQubm9kZVNpemUgOiAwKSk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGNoaWxkLm5vZGVTaXplICogZGlyO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHNlbGVjdGlvblRvSW5zZXJ0aW9uRW5kKHRyLCBzdGFydExlbiwgYmlhcykge1xuICAgIGxldCBsYXN0ID0gdHIuc3RlcHMubGVuZ3RoIC0gMTtcbiAgICBpZiAobGFzdCA8IHN0YXJ0TGVuKVxuICAgICAgICByZXR1cm47XG4gICAgbGV0IHN0ZXAgPSB0ci5zdGVwc1tsYXN0XTtcbiAgICBpZiAoIShzdGVwIGluc3RhbmNlb2YgUmVwbGFjZVN0ZXAgfHwgc3RlcCBpbnN0YW5jZW9mIFJlcGxhY2VBcm91bmRTdGVwKSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGxldCBtYXAgPSB0ci5tYXBwaW5nLm1hcHNbbGFzdF0sIGVuZDtcbiAgICBtYXAuZm9yRWFjaCgoX2Zyb20sIF90bywgX25ld0Zyb20sIG5ld1RvKSA9PiB7IGlmIChlbmQgPT0gbnVsbClcbiAgICAgICAgZW5kID0gbmV3VG87IH0pO1xuICAgIHRyLnNldFNlbGVjdGlvbihTZWxlY3Rpb24ubmVhcih0ci5kb2MucmVzb2x2ZShlbmQpLCBiaWFzKSk7XG59XG5cbmNvbnN0IFVQREFURURfU0VMID0gMSwgVVBEQVRFRF9NQVJLUyA9IDIsIFVQREFURURfU0NST0xMID0gNDtcbi8qKlxuQW4gZWRpdG9yIHN0YXRlIHRyYW5zYWN0aW9uLCB3aGljaCBjYW4gYmUgYXBwbGllZCB0byBhIHN0YXRlIHRvXG5jcmVhdGUgYW4gdXBkYXRlZCBzdGF0ZS4gVXNlXG5bYEVkaXRvclN0YXRlLnRyYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLkVkaXRvclN0YXRlLnRyKSB0byBjcmVhdGUgYW4gaW5zdGFuY2UuXG5cblRyYW5zYWN0aW9ucyB0cmFjayBjaGFuZ2VzIHRvIHRoZSBkb2N1bWVudCAodGhleSBhcmUgYSBzdWJjbGFzcyBvZlxuW2BUcmFuc2Zvcm1gXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jdHJhbnNmb3JtLlRyYW5zZm9ybSkpLCBidXQgYWxzbyBvdGhlciBzdGF0ZSBjaGFuZ2VzLFxubGlrZSBzZWxlY3Rpb24gdXBkYXRlcyBhbmQgYWRqdXN0bWVudHMgb2YgdGhlIHNldCBvZiBbc3RvcmVkXG5tYXJrc10oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLkVkaXRvclN0YXRlLnN0b3JlZE1hcmtzKS4gSW4gYWRkaXRpb24sIHlvdSBjYW4gc3RvcmVcbm1ldGFkYXRhIHByb3BlcnRpZXMgaW4gYSB0cmFuc2FjdGlvbiwgd2hpY2ggYXJlIGV4dHJhIHBpZWNlcyBvZlxuaW5mb3JtYXRpb24gdGhhdCBjbGllbnQgY29kZSBvciBwbHVnaW5zIGNhbiB1c2UgdG8gZGVzY3JpYmUgd2hhdCBhXG50cmFuc2FjdGlvbiByZXByZXNlbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHVwZGF0ZSB0aGVpciBbb3duXG5zdGF0ZV0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLlN0YXRlRmllbGQpIGFjY29yZGluZ2x5LlxuXG5UaGUgW2VkaXRvciB2aWV3XShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jdmlldy5FZGl0b3JWaWV3KSB1c2VzIGEgZmV3IG1ldGFkYXRhXG5wcm9wZXJ0aWVzOiBpdCB3aWxsIGF0dGFjaCBhIHByb3BlcnR5IGBcInBvaW50ZXJcImAgd2l0aCB0aGUgdmFsdWVcbmB0cnVlYCB0byBzZWxlY3Rpb24gdHJhbnNhY3Rpb25zIGRpcmVjdGx5IGNhdXNlZCBieSBtb3VzZSBvciB0b3VjaFxuaW5wdXQsIGEgYFwiY29tcG9zaXRpb25cImAgcHJvcGVydHkgaG9sZGluZyBhbiBJRCBpZGVudGlmeWluZyB0aGVcbmNvbXBvc2l0aW9uIHRoYXQgY2F1c2VkIGl0IHRvIHRyYW5zYWN0aW9ucyBjYXVzZWQgYnkgY29tcG9zZWQgRE9NXG5pbnB1dCwgYW5kIGEgYFwidWlFdmVudFwiYCBwcm9wZXJ0eSBvZiB0aGF0IG1heSBiZSBgXCJwYXN0ZVwiYCxcbmBcImN1dFwiYCwgb3IgYFwiZHJvcFwiYC5cbiovXG5jbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIFRyYW5zZm9ybSB7XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihzdGF0ZSkge1xuICAgICAgICBzdXBlcihzdGF0ZS5kb2MpO1xuICAgICAgICAvLyBUaGUgc3RlcCBjb3VudCBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzIHZhbGlkLlxuICAgICAgICB0aGlzLmN1clNlbGVjdGlvbkZvciA9IDA7XG4gICAgICAgIC8vIEJpdGZpZWxkIHRvIHRyYWNrIHdoaWNoIGFzcGVjdHMgb2YgdGhlIHN0YXRlIHdlcmUgdXBkYXRlZCBieVxuICAgICAgICAvLyB0aGlzIHRyYW5zYWN0aW9uLlxuICAgICAgICB0aGlzLnVwZGF0ZWQgPSAwO1xuICAgICAgICAvLyBPYmplY3QgdXNlZCB0byBzdG9yZSBtZXRhZGF0YSBwcm9wZXJ0aWVzIGZvciB0aGUgdHJhbnNhY3Rpb24uXG4gICAgICAgIHRoaXMubWV0YSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMudGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRoaXMuY3VyU2VsZWN0aW9uID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnN0b3JlZE1hcmtzID0gc3RhdGUuc3RvcmVkTWFya3M7XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSB0cmFuc2FjdGlvbidzIGN1cnJlbnQgc2VsZWN0aW9uLiBUaGlzIGRlZmF1bHRzIHRvIHRoZSBlZGl0b3JcbiAgICBzZWxlY3Rpb24gW21hcHBlZF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLlNlbGVjdGlvbi5tYXApIHRocm91Z2ggdGhlIHN0ZXBzIGluIHRoZVxuICAgIHRyYW5zYWN0aW9uLCBidXQgY2FuIGJlIG92ZXJ3cml0dGVuIHdpdGhcbiAgICBbYHNldFNlbGVjdGlvbmBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5UcmFuc2FjdGlvbi5zZXRTZWxlY3Rpb24pLlxuICAgICovXG4gICAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VyU2VsZWN0aW9uRm9yIDwgdGhpcy5zdGVwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY3VyU2VsZWN0aW9uID0gdGhpcy5jdXJTZWxlY3Rpb24ubWFwKHRoaXMuZG9jLCB0aGlzLm1hcHBpbmcuc2xpY2UodGhpcy5jdXJTZWxlY3Rpb25Gb3IpKTtcbiAgICAgICAgICAgIHRoaXMuY3VyU2VsZWN0aW9uRm9yID0gdGhpcy5zdGVwcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VyU2VsZWN0aW9uO1xuICAgIH1cbiAgICAvKipcbiAgICBVcGRhdGUgdGhlIHRyYW5zYWN0aW9uJ3MgY3VycmVudCBzZWxlY3Rpb24uIFdpbGwgZGV0ZXJtaW5lIHRoZVxuICAgIHNlbGVjdGlvbiB0aGF0IHRoZSBlZGl0b3IgZ2V0cyB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkLlxuICAgICovXG4gICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbikge1xuICAgICAgICBpZiAoc2VsZWN0aW9uLiRmcm9tLmRvYyAhPSB0aGlzLmRvYylcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiU2VsZWN0aW9uIHBhc3NlZCB0byBzZXRTZWxlY3Rpb24gbXVzdCBwb2ludCBhdCB0aGUgY3VycmVudCBkb2N1bWVudFwiKTtcbiAgICAgICAgdGhpcy5jdXJTZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gICAgICAgIHRoaXMuY3VyU2VsZWN0aW9uRm9yID0gdGhpcy5zdGVwcy5sZW5ndGg7XG4gICAgICAgIHRoaXMudXBkYXRlZCA9ICh0aGlzLnVwZGF0ZWQgfCBVUERBVEVEX1NFTCkgJiB+VVBEQVRFRF9NQVJLUztcbiAgICAgICAgdGhpcy5zdG9yZWRNYXJrcyA9IG51bGw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICBXaGV0aGVyIHRoZSBzZWxlY3Rpb24gd2FzIGV4cGxpY2l0bHkgdXBkYXRlZCBieSB0aGlzIHRyYW5zYWN0aW9uLlxuICAgICovXG4gICAgZ2V0IHNlbGVjdGlvblNldCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnVwZGF0ZWQgJiBVUERBVEVEX1NFTCkgPiAwO1xuICAgIH1cbiAgICAvKipcbiAgICBTZXQgdGhlIGN1cnJlbnQgc3RvcmVkIG1hcmtzLlxuICAgICovXG4gICAgc2V0U3RvcmVkTWFya3MobWFya3MpIHtcbiAgICAgICAgdGhpcy5zdG9yZWRNYXJrcyA9IG1hcmtzO1xuICAgICAgICB0aGlzLnVwZGF0ZWQgfD0gVVBEQVRFRF9NQVJLUztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIE1ha2Ugc3VyZSB0aGUgY3VycmVudCBzdG9yZWQgbWFya3Mgb3IsIGlmIHRoYXQgaXMgbnVsbCwgdGhlIG1hcmtzXG4gICAgYXQgdGhlIHNlbGVjdGlvbiwgbWF0Y2ggdGhlIGdpdmVuIHNldCBvZiBtYXJrcy4gRG9lcyBub3RoaW5nIGlmXG4gICAgdGhpcyBpcyBhbHJlYWR5IHRoZSBjYXNlLlxuICAgICovXG4gICAgZW5zdXJlTWFya3MobWFya3MpIHtcbiAgICAgICAgaWYgKCFNYXJrLnNhbWVTZXQodGhpcy5zdG9yZWRNYXJrcyB8fCB0aGlzLnNlbGVjdGlvbi4kZnJvbS5tYXJrcygpLCBtYXJrcykpXG4gICAgICAgICAgICB0aGlzLnNldFN0b3JlZE1hcmtzKG1hcmtzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIEFkZCBhIG1hcmsgdG8gdGhlIHNldCBvZiBzdG9yZWQgbWFya3MuXG4gICAgKi9cbiAgICBhZGRTdG9yZWRNYXJrKG1hcmspIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW5zdXJlTWFya3MobWFyay5hZGRUb1NldCh0aGlzLnN0b3JlZE1hcmtzIHx8IHRoaXMuc2VsZWN0aW9uLiRoZWFkLm1hcmtzKCkpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgUmVtb3ZlIGEgbWFyayBvciBtYXJrIHR5cGUgZnJvbSB0aGUgc2V0IG9mIHN0b3JlZCBtYXJrcy5cbiAgICAqL1xuICAgIHJlbW92ZVN0b3JlZE1hcmsobWFyaykge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnN1cmVNYXJrcyhtYXJrLnJlbW92ZUZyb21TZXQodGhpcy5zdG9yZWRNYXJrcyB8fCB0aGlzLnNlbGVjdGlvbi4kaGVhZC5tYXJrcygpKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIFdoZXRoZXIgdGhlIHN0b3JlZCBtYXJrcyB3ZXJlIGV4cGxpY2l0bHkgc2V0IGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICAgICovXG4gICAgZ2V0IHN0b3JlZE1hcmtzU2V0KCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudXBkYXRlZCAmIFVQREFURURfTUFSS1MpID4gMDtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBhZGRTdGVwKHN0ZXAsIGRvYykge1xuICAgICAgICBzdXBlci5hZGRTdGVwKHN0ZXAsIGRvYyk7XG4gICAgICAgIHRoaXMudXBkYXRlZCA9IHRoaXMudXBkYXRlZCAmIH5VUERBVEVEX01BUktTO1xuICAgICAgICB0aGlzLnN0b3JlZE1hcmtzID0gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgVXBkYXRlIHRoZSB0aW1lc3RhbXAgZm9yIHRoZSB0cmFuc2FjdGlvbi5cbiAgICAqL1xuICAgIHNldFRpbWUodGltZSkge1xuICAgICAgICB0aGlzLnRpbWUgPSB0aW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgUmVwbGFjZSB0aGUgY3VycmVudCBzZWxlY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gc2xpY2UuXG4gICAgKi9cbiAgICByZXBsYWNlU2VsZWN0aW9uKHNsaWNlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnJlcGxhY2UodGhpcywgc2xpY2UpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgUmVwbGFjZSB0aGUgc2VsZWN0aW9uIHdpdGggdGhlIGdpdmVuIG5vZGUuIFdoZW4gYGluaGVyaXRNYXJrc2AgaXNcbiAgICB0cnVlIGFuZCB0aGUgY29udGVudCBpcyBpbmxpbmUsIGl0IGluaGVyaXRzIHRoZSBtYXJrcyBmcm9tIHRoZVxuICAgIHBsYWNlIHdoZXJlIGl0IGlzIGluc2VydGVkLlxuICAgICovXG4gICAgcmVwbGFjZVNlbGVjdGlvbldpdGgobm9kZSwgaW5oZXJpdE1hcmtzID0gdHJ1ZSkge1xuICAgICAgICBsZXQgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIGlmIChpbmhlcml0TWFya3MpXG4gICAgICAgICAgICBub2RlID0gbm9kZS5tYXJrKHRoaXMuc3RvcmVkTWFya3MgfHwgKHNlbGVjdGlvbi5lbXB0eSA/IHNlbGVjdGlvbi4kZnJvbS5tYXJrcygpIDogKHNlbGVjdGlvbi4kZnJvbS5tYXJrc0Fjcm9zcyhzZWxlY3Rpb24uJHRvKSB8fCBNYXJrLm5vbmUpKSk7XG4gICAgICAgIHNlbGVjdGlvbi5yZXBsYWNlV2l0aCh0aGlzLCBub2RlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIERlbGV0ZSB0aGUgc2VsZWN0aW9uLlxuICAgICovXG4gICAgZGVsZXRlU2VsZWN0aW9uKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5yZXBsYWNlKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgUmVwbGFjZSB0aGUgZ2l2ZW4gcmFuZ2UsIG9yIHRoZSBzZWxlY3Rpb24gaWYgbm8gcmFuZ2UgaXMgZ2l2ZW4sXG4gICAgd2l0aCBhIHRleHQgbm9kZSBjb250YWluaW5nIHRoZSBnaXZlbiBzdHJpbmcuXG4gICAgKi9cbiAgICBpbnNlcnRUZXh0KHRleHQsIGZyb20sIHRvKSB7XG4gICAgICAgIGxldCBzY2hlbWEgPSB0aGlzLmRvYy50eXBlLnNjaGVtYTtcbiAgICAgICAgaWYgKGZyb20gPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCF0ZXh0KVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlbGV0ZVNlbGVjdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZVNlbGVjdGlvbldpdGgoc2NoZW1hLnRleHQodGV4dCksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRvID09IG51bGwpXG4gICAgICAgICAgICAgICAgdG8gPSBmcm9tO1xuICAgICAgICAgICAgaWYgKCF0ZXh0KVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlbGV0ZVJhbmdlKGZyb20sIHRvKTtcbiAgICAgICAgICAgIGxldCBtYXJrcyA9IHRoaXMuc3RvcmVkTWFya3M7XG4gICAgICAgICAgICBpZiAoIW1hcmtzKSB7XG4gICAgICAgICAgICAgICAgbGV0ICRmcm9tID0gdGhpcy5kb2MucmVzb2x2ZShmcm9tKTtcbiAgICAgICAgICAgICAgICBtYXJrcyA9IHRvID09IGZyb20gPyAkZnJvbS5tYXJrcygpIDogJGZyb20ubWFya3NBY3Jvc3ModGhpcy5kb2MucmVzb2x2ZSh0bykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yZXBsYWNlUmFuZ2VXaXRoKGZyb20sIHRvLCBzY2hlbWEudGV4dCh0ZXh0LCBtYXJrcykpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbi5lbXB0eSAmJiB0aGlzLnNlbGVjdGlvbi50byA9PSBmcm9tICsgdGV4dC5sZW5ndGgpXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oU2VsZWN0aW9uLm5lYXIodGhpcy5zZWxlY3Rpb24uJHRvKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICBTdG9yZSBhIG1ldGFkYXRhIHByb3BlcnR5IGluIHRoaXMgdHJhbnNhY3Rpb24sIGtleWVkIGVpdGhlciBieVxuICAgIG5hbWUgb3IgYnkgcGx1Z2luLlxuICAgICovXG4gICAgc2V0TWV0YShrZXksIHZhbHVlKSB7XG4gICAgICAgIHRoaXMubWV0YVt0eXBlb2Yga2V5ID09IFwic3RyaW5nXCIgPyBrZXkgOiBrZXkua2V5XSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgUmV0cmlldmUgYSBtZXRhZGF0YSBwcm9wZXJ0eSBmb3IgYSBnaXZlbiBuYW1lIG9yIHBsdWdpbi5cbiAgICAqL1xuICAgIGdldE1ldGEoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGFbdHlwZW9mIGtleSA9PSBcInN0cmluZ1wiID8ga2V5IDoga2V5LmtleV07XG4gICAgfVxuICAgIC8qKlxuICAgIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRyYW5zYWN0aW9uIGRvZXNuJ3QgY29udGFpbiBhbnkgbWV0YWRhdGEsXG4gICAgYW5kIGNhbiB0aHVzIHNhZmVseSBiZSBleHRlbmRlZC5cbiAgICAqL1xuICAgIGdldCBpc0dlbmVyaWMoKSB7XG4gICAgICAgIGZvciAobGV0IF8gaW4gdGhpcy5tZXRhKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgSW5kaWNhdGUgdGhhdCB0aGUgZWRpdG9yIHNob3VsZCBzY3JvbGwgdGhlIHNlbGVjdGlvbiBpbnRvIHZpZXdcbiAgICB3aGVuIHVwZGF0ZWQgdG8gdGhlIHN0YXRlIHByb2R1Y2VkIGJ5IHRoaXMgdHJhbnNhY3Rpb24uXG4gICAgKi9cbiAgICBzY3JvbGxJbnRvVmlldygpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkIHw9IFVQREFURURfU0NST0xMO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgVHJ1ZSB3aGVuIHRoaXMgdHJhbnNhY3Rpb24gaGFzIGhhZCBgc2Nyb2xsSW50b1ZpZXdgIGNhbGxlZCBvbiBpdC5cbiAgICAqL1xuICAgIGdldCBzY3JvbGxlZEludG9WaWV3KCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudXBkYXRlZCAmIFVQREFURURfU0NST0xMKSA+IDA7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBiaW5kKGYsIHNlbGYpIHtcbiAgICByZXR1cm4gIXNlbGYgfHwgIWYgPyBmIDogZi5iaW5kKHNlbGYpO1xufVxuY2xhc3MgRmllbGREZXNjIHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lLCBkZXNjLCBzZWxmKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuaW5pdCA9IGJpbmQoZGVzYy5pbml0LCBzZWxmKTtcbiAgICAgICAgdGhpcy5hcHBseSA9IGJpbmQoZGVzYy5hcHBseSwgc2VsZik7XG4gICAgfVxufVxuY29uc3QgYmFzZUZpZWxkcyA9IFtcbiAgICBuZXcgRmllbGREZXNjKFwiZG9jXCIsIHtcbiAgICAgICAgaW5pdChjb25maWcpIHsgcmV0dXJuIGNvbmZpZy5kb2MgfHwgY29uZmlnLnNjaGVtYS50b3BOb2RlVHlwZS5jcmVhdGVBbmRGaWxsKCk7IH0sXG4gICAgICAgIGFwcGx5KHRyKSB7IHJldHVybiB0ci5kb2M7IH1cbiAgICB9KSxcbiAgICBuZXcgRmllbGREZXNjKFwic2VsZWN0aW9uXCIsIHtcbiAgICAgICAgaW5pdChjb25maWcsIGluc3RhbmNlKSB7IHJldHVybiBjb25maWcuc2VsZWN0aW9uIHx8IFNlbGVjdGlvbi5hdFN0YXJ0KGluc3RhbmNlLmRvYyk7IH0sXG4gICAgICAgIGFwcGx5KHRyKSB7IHJldHVybiB0ci5zZWxlY3Rpb247IH1cbiAgICB9KSxcbiAgICBuZXcgRmllbGREZXNjKFwic3RvcmVkTWFya3NcIiwge1xuICAgICAgICBpbml0KGNvbmZpZykgeyByZXR1cm4gY29uZmlnLnN0b3JlZE1hcmtzIHx8IG51bGw7IH0sXG4gICAgICAgIGFwcGx5KHRyLCBfbWFya3MsIF9vbGQsIHN0YXRlKSB7IHJldHVybiBzdGF0ZS5zZWxlY3Rpb24uJGN1cnNvciA/IHRyLnN0b3JlZE1hcmtzIDogbnVsbDsgfVxuICAgIH0pLFxuICAgIG5ldyBGaWVsZERlc2MoXCJzY3JvbGxUb1NlbGVjdGlvblwiLCB7XG4gICAgICAgIGluaXQoKSB7IHJldHVybiAwOyB9LFxuICAgICAgICBhcHBseSh0ciwgcHJldikgeyByZXR1cm4gdHIuc2Nyb2xsZWRJbnRvVmlldyA/IHByZXYgKyAxIDogcHJldjsgfVxuICAgIH0pXG5dO1xuLy8gT2JqZWN0IHdyYXBwaW5nIHRoZSBwYXJ0IG9mIGEgc3RhdGUgb2JqZWN0IHRoYXQgc3RheXMgdGhlIHNhbWVcbi8vIGFjcm9zcyB0cmFuc2FjdGlvbnMuIFN0b3JlZCBpbiB0aGUgc3RhdGUncyBgY29uZmlnYCBwcm9wZXJ0eS5cbmNsYXNzIENvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKHNjaGVtYSwgcGx1Z2lucykge1xuICAgICAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgICAgICAgdGhpcy5wbHVnaW5zID0gW107XG4gICAgICAgIHRoaXMucGx1Z2luc0J5S2V5ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5maWVsZHMgPSBiYXNlRmllbGRzLnNsaWNlKCk7XG4gICAgICAgIGlmIChwbHVnaW5zKVxuICAgICAgICAgICAgcGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGx1Z2luc0J5S2V5W3BsdWdpbi5rZXldKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkFkZGluZyBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIGEga2V5ZWQgcGx1Z2luIChcIiArIHBsdWdpbi5rZXkgKyBcIilcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5zLnB1c2gocGx1Z2luKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbnNCeUtleVtwbHVnaW4ua2V5XSA9IHBsdWdpbjtcbiAgICAgICAgICAgICAgICBpZiAocGx1Z2luLnNwZWMuc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGRzLnB1c2gobmV3IEZpZWxkRGVzYyhwbHVnaW4ua2V5LCBwbHVnaW4uc3BlYy5zdGF0ZSwgcGx1Z2luKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4vKipcblRoZSBzdGF0ZSBvZiBhIFByb3NlTWlycm9yIGVkaXRvciBpcyByZXByZXNlbnRlZCBieSBhbiBvYmplY3Qgb2ZcbnRoaXMgdHlwZS4gQSBzdGF0ZSBpcyBhIHBlcnNpc3RlbnQgZGF0YSBzdHJ1Y3R1cmXigJRpdCBpc24ndFxudXBkYXRlZCwgYnV0IHJhdGhlciBhIG5ldyBzdGF0ZSB2YWx1ZSBpcyBjb21wdXRlZCBmcm9tIGFuIG9sZCBvbmVcbnVzaW5nIHRoZSBbYGFwcGx5YF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLkVkaXRvclN0YXRlLmFwcGx5KSBtZXRob2QuXG5cbkEgc3RhdGUgaG9sZHMgYSBudW1iZXIgb2YgYnVpbHQtaW4gZmllbGRzLCBhbmQgcGx1Z2lucyBjYW5cbltkZWZpbmVdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5QbHVnaW5TcGVjLnN0YXRlKSBhZGRpdGlvbmFsIGZpZWxkcy5cbiovXG5jbGFzcyBFZGl0b3JTdGF0ZSB7XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGNvbmZpZykge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gICAgLyoqXG4gICAgVGhlIHNjaGVtYSBvZiB0aGUgc3RhdGUncyBkb2N1bWVudC5cbiAgICAqL1xuICAgIGdldCBzY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5zY2hlbWE7XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSBwbHVnaW5zIHRoYXQgYXJlIGFjdGl2ZSBpbiB0aGlzIHN0YXRlLlxuICAgICovXG4gICAgZ2V0IHBsdWdpbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5wbHVnaW5zO1xuICAgIH1cbiAgICAvKipcbiAgICBBcHBseSB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24gdG8gcHJvZHVjZSBhIG5ldyBzdGF0ZS5cbiAgICAqL1xuICAgIGFwcGx5KHRyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5VHJhbnNhY3Rpb24odHIpLnN0YXRlO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGZpbHRlclRyYW5zYWN0aW9uKHRyLCBpZ25vcmUgPSAtMSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29uZmlnLnBsdWdpbnMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAoaSAhPSBpZ25vcmUpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGx1Z2luID0gdGhpcy5jb25maWcucGx1Z2luc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAocGx1Z2luLnNwZWMuZmlsdGVyVHJhbnNhY3Rpb24gJiYgIXBsdWdpbi5zcGVjLmZpbHRlclRyYW5zYWN0aW9uLmNhbGwocGx1Z2luLCB0ciwgdGhpcykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgIFZlcmJvc2UgdmFyaWFudCBvZiBbYGFwcGx5YF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLkVkaXRvclN0YXRlLmFwcGx5KSB0aGF0XG4gICAgcmV0dXJucyB0aGUgcHJlY2lzZSB0cmFuc2FjdGlvbnMgdGhhdCB3ZXJlIGFwcGxpZWQgKHdoaWNoIG1pZ2h0XG4gICAgYmUgaW5mbHVlbmNlZCBieSB0aGUgW3RyYW5zYWN0aW9uXG4gICAgaG9va3NdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5QbHVnaW5TcGVjLmZpbHRlclRyYW5zYWN0aW9uKSBvZlxuICAgIHBsdWdpbnMpIGFsb25nIHdpdGggdGhlIG5ldyBzdGF0ZS5cbiAgICAqL1xuICAgIGFwcGx5VHJhbnNhY3Rpb24ocm9vdFRyKSB7XG4gICAgICAgIGlmICghdGhpcy5maWx0ZXJUcmFuc2FjdGlvbihyb290VHIpKVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGU6IHRoaXMsIHRyYW5zYWN0aW9uczogW10gfTtcbiAgICAgICAgbGV0IHRycyA9IFtyb290VHJdLCBuZXdTdGF0ZSA9IHRoaXMuYXBwbHlJbm5lcihyb290VHIpLCBzZWVuID0gbnVsbDtcbiAgICAgICAgLy8gVGhpcyBsb29wIHJlcGVhdGVkbHkgZ2l2ZXMgcGx1Z2lucyBhIGNoYW5jZSB0byByZXNwb25kIHRvXG4gICAgICAgIC8vIHRyYW5zYWN0aW9ucyBhcyBuZXcgdHJhbnNhY3Rpb25zIGFyZSBhZGRlZCwgbWFraW5nIHN1cmUgdG8gb25seVxuICAgICAgICAvLyBwYXNzIHRoZSB0cmFuc2FjdGlvbnMgdGhlIHBsdWdpbiBkaWQgbm90IHNlZSBiZWZvcmUuXG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGxldCBoYXZlTmV3ID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29uZmlnLnBsdWdpbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgcGx1Z2luID0gdGhpcy5jb25maWcucGx1Z2luc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAocGx1Z2luLnNwZWMuYXBwZW5kVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSBzZWVuID8gc2VlbltpXS5uIDogMCwgb2xkU3RhdGUgPSBzZWVuID8gc2VlbltpXS5zdGF0ZSA6IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ciA9IG4gPCB0cnMubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW4uc3BlYy5hcHBlbmRUcmFuc2FjdGlvbi5jYWxsKHBsdWdpbiwgbiA/IHRycy5zbGljZShuKSA6IHRycywgb2xkU3RhdGUsIG5ld1N0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyICYmIG5ld1N0YXRlLmZpbHRlclRyYW5zYWN0aW9uKHRyLCBpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHIuc2V0TWV0YShcImFwcGVuZGVkVHJhbnNhY3Rpb25cIiwgcm9vdFRyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2Vlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29uZmlnLnBsdWdpbnMubGVuZ3RoOyBqKyspXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW4ucHVzaChqIDwgaSA/IHsgc3RhdGU6IG5ld1N0YXRlLCBuOiB0cnMubGVuZ3RoIH0gOiB7IHN0YXRlOiB0aGlzLCBuOiAwIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJzLnB1c2godHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGUgPSBuZXdTdGF0ZS5hcHBseUlubmVyKHRyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVOZXcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VlbltpXSA9IHsgc3RhdGU6IG5ld1N0YXRlLCBuOiB0cnMubGVuZ3RoIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFoYXZlTmV3KVxuICAgICAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiBuZXdTdGF0ZSwgdHJhbnNhY3Rpb25zOiB0cnMgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGFwcGx5SW5uZXIodHIpIHtcbiAgICAgICAgaWYgKCF0ci5iZWZvcmUuZXEodGhpcy5kb2MpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJBcHBseWluZyBhIG1pc21hdGNoZWQgdHJhbnNhY3Rpb25cIik7XG4gICAgICAgIGxldCBuZXdJbnN0YW5jZSA9IG5ldyBFZGl0b3JTdGF0ZSh0aGlzLmNvbmZpZyksIGZpZWxkcyA9IHRoaXMuY29uZmlnLmZpZWxkcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBmaWVsZCA9IGZpZWxkc1tpXTtcbiAgICAgICAgICAgIG5ld0luc3RhbmNlW2ZpZWxkLm5hbWVdID0gZmllbGQuYXBwbHkodHIsIHRoaXNbZmllbGQubmFtZV0sIHRoaXMsIG5ld0luc3RhbmNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3SW5zdGFuY2U7XG4gICAgfVxuICAgIC8qKlxuICAgIEFjY2Vzc29yIHRoYXQgY29uc3RydWN0cyBhbmQgcmV0dXJucyBhIG5ldyBbdHJhbnNhY3Rpb25dKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5UcmFuc2FjdGlvbikgZnJvbSB0aGlzIHN0YXRlLlxuICAgICovXG4gICAgZ2V0IHRyKCkgeyByZXR1cm4gbmV3IFRyYW5zYWN0aW9uKHRoaXMpOyB9XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgbmV3IHN0YXRlLlxuICAgICovXG4gICAgc3RhdGljIGNyZWF0ZShjb25maWcpIHtcbiAgICAgICAgbGV0ICRjb25maWcgPSBuZXcgQ29uZmlndXJhdGlvbihjb25maWcuZG9jID8gY29uZmlnLmRvYy50eXBlLnNjaGVtYSA6IGNvbmZpZy5zY2hlbWEsIGNvbmZpZy5wbHVnaW5zKTtcbiAgICAgICAgbGV0IGluc3RhbmNlID0gbmV3IEVkaXRvclN0YXRlKCRjb25maWcpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICRjb25maWcuZmllbGRzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgaW5zdGFuY2VbJGNvbmZpZy5maWVsZHNbaV0ubmFtZV0gPSAkY29uZmlnLmZpZWxkc1tpXS5pbml0KGNvbmZpZywgaW5zdGFuY2UpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIG5ldyBzdGF0ZSBiYXNlZCBvbiB0aGlzIG9uZSwgYnV0IHdpdGggYW4gYWRqdXN0ZWQgc2V0XG4gICAgb2YgYWN0aXZlIHBsdWdpbnMuIFN0YXRlIGZpZWxkcyB0aGF0IGV4aXN0IGluIGJvdGggc2V0cyBvZlxuICAgIHBsdWdpbnMgYXJlIGtlcHQgdW5jaGFuZ2VkLiBUaG9zZSB0aGF0IG5vIGxvbmdlciBleGlzdCBhcmVcbiAgICBkcm9wcGVkLCBhbmQgdGhvc2UgdGhhdCBhcmUgbmV3IGFyZSBpbml0aWFsaXplZCB1c2luZyB0aGVpclxuICAgIFtgaW5pdGBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5TdGF0ZUZpZWxkLmluaXQpIG1ldGhvZCwgcGFzc2luZyBpbiB0aGUgbmV3XG4gICAgY29uZmlndXJhdGlvbiBvYmplY3QuLlxuICAgICovXG4gICAgcmVjb25maWd1cmUoY29uZmlnKSB7XG4gICAgICAgIGxldCAkY29uZmlnID0gbmV3IENvbmZpZ3VyYXRpb24odGhpcy5zY2hlbWEsIGNvbmZpZy5wbHVnaW5zKTtcbiAgICAgICAgbGV0IGZpZWxkcyA9ICRjb25maWcuZmllbGRzLCBpbnN0YW5jZSA9IG5ldyBFZGl0b3JTdGF0ZSgkY29uZmlnKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gZmllbGRzW2ldLm5hbWU7XG4gICAgICAgICAgICBpbnN0YW5jZVtuYW1lXSA9IHRoaXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyB0aGlzW25hbWVdIDogZmllbGRzW2ldLmluaXQoY29uZmlnLCBpbnN0YW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cbiAgICAvKipcbiAgICBTZXJpYWxpemUgdGhpcyBzdGF0ZSB0byBKU09OLiBJZiB5b3Ugd2FudCB0byBzZXJpYWxpemUgdGhlIHN0YXRlXG4gICAgb2YgcGx1Z2lucywgcGFzcyBhbiBvYmplY3QgbWFwcGluZyBwcm9wZXJ0eSBuYW1lcyB0byB1c2UgaW4gdGhlXG4gICAgcmVzdWx0aW5nIEpTT04gb2JqZWN0IHRvIHBsdWdpbiBvYmplY3RzLiBUaGUgYXJndW1lbnQgbWF5IGFsc28gYmVcbiAgICBhIHN0cmluZyBvciBudW1iZXIsIGluIHdoaWNoIGNhc2UgaXQgaXMgaWdub3JlZCwgdG8gc3VwcG9ydCB0aGVcbiAgICB3YXkgYEpTT04uc3RyaW5naWZ5YCBjYWxscyBgdG9TdHJpbmdgIG1ldGhvZHMuXG4gICAgKi9cbiAgICB0b0pTT04ocGx1Z2luRmllbGRzKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB7IGRvYzogdGhpcy5kb2MudG9KU09OKCksIHNlbGVjdGlvbjogdGhpcy5zZWxlY3Rpb24udG9KU09OKCkgfTtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmVkTWFya3MpXG4gICAgICAgICAgICByZXN1bHQuc3RvcmVkTWFya3MgPSB0aGlzLnN0b3JlZE1hcmtzLm1hcChtID0+IG0udG9KU09OKCkpO1xuICAgICAgICBpZiAocGx1Z2luRmllbGRzICYmIHR5cGVvZiBwbHVnaW5GaWVsZHMgPT0gJ29iamVjdCcpXG4gICAgICAgICAgICBmb3IgKGxldCBwcm9wIGluIHBsdWdpbkZpZWxkcykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wID09IFwiZG9jXCIgfHwgcHJvcCA9PSBcInNlbGVjdGlvblwiKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlRoZSBKU09OIGZpZWxkcyBgZG9jYCBhbmQgYHNlbGVjdGlvbmAgYXJlIHJlc2VydmVkXCIpO1xuICAgICAgICAgICAgICAgIGxldCBwbHVnaW4gPSBwbHVnaW5GaWVsZHNbcHJvcF0sIHN0YXRlID0gcGx1Z2luLnNwZWMuc3RhdGU7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLnRvSlNPTilcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3Byb3BdID0gc3RhdGUudG9KU09OLmNhbGwocGx1Z2luLCB0aGlzW3BsdWdpbi5rZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgRGVzZXJpYWxpemUgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgc3RhdGUuIGBjb25maWdgIHNob3VsZFxuICAgIGhhdmUgYXQgbGVhc3QgYSBgc2NoZW1hYCBmaWVsZCwgYW5kIHNob3VsZCBjb250YWluIGFycmF5IG9mXG4gICAgcGx1Z2lucyB0byBpbml0aWFsaXplIHRoZSBzdGF0ZSB3aXRoLiBgcGx1Z2luRmllbGRzYCBjYW4gYmUgdXNlZFxuICAgIHRvIGRlc2VyaWFsaXplIHRoZSBzdGF0ZSBvZiBwbHVnaW5zLCBieSBhc3NvY2lhdGluZyBwbHVnaW5cbiAgICBpbnN0YW5jZXMgd2l0aCB0aGUgcHJvcGVydHkgbmFtZXMgdGhleSB1c2UgaW4gdGhlIEpTT04gb2JqZWN0LlxuICAgICovXG4gICAgc3RhdGljIGZyb21KU09OKGNvbmZpZywganNvbiwgcGx1Z2luRmllbGRzKSB7XG4gICAgICAgIGlmICghanNvbilcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBpbnB1dCBmb3IgRWRpdG9yU3RhdGUuZnJvbUpTT05cIik7XG4gICAgICAgIGlmICghY29uZmlnLnNjaGVtYSlcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiUmVxdWlyZWQgY29uZmlnIGZpZWxkICdzY2hlbWEnIG1pc3NpbmdcIik7XG4gICAgICAgIGxldCAkY29uZmlnID0gbmV3IENvbmZpZ3VyYXRpb24oY29uZmlnLnNjaGVtYSwgY29uZmlnLnBsdWdpbnMpO1xuICAgICAgICBsZXQgaW5zdGFuY2UgPSBuZXcgRWRpdG9yU3RhdGUoJGNvbmZpZyk7XG4gICAgICAgICRjb25maWcuZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gXCJkb2NcIikge1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRvYyA9IE5vZGUuZnJvbUpTT04oY29uZmlnLnNjaGVtYSwganNvbi5kb2MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZmllbGQubmFtZSA9PSBcInNlbGVjdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0aW9uID0gU2VsZWN0aW9uLmZyb21KU09OKGluc3RhbmNlLmRvYywganNvbi5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZmllbGQubmFtZSA9PSBcInN0b3JlZE1hcmtzXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoanNvbi5zdG9yZWRNYXJrcylcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RvcmVkTWFya3MgPSBqc29uLnN0b3JlZE1hcmtzLm1hcChjb25maWcuc2NoZW1hLm1hcmtGcm9tSlNPTik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAocGx1Z2luRmllbGRzKVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBwcm9wIGluIHBsdWdpbkZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBsdWdpbiA9IHBsdWdpbkZpZWxkc1twcm9wXSwgc3RhdGUgPSBwbHVnaW4uc3BlYy5zdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwbHVnaW4ua2V5ID09IGZpZWxkLm5hbWUgJiYgc3RhdGUgJiYgc3RhdGUuZnJvbUpTT04gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoanNvbiwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZVtmaWVsZC5uYW1lXSA9IHN0YXRlLmZyb21KU09OLmNhbGwocGx1Z2luLCBjb25maWcsIGpzb25bcHJvcF0sIGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnN0YW5jZVtmaWVsZC5uYW1lXSA9IGZpZWxkLmluaXQoY29uZmlnLCBpbnN0YW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBiaW5kUHJvcHMob2JqLCBzZWxmLCB0YXJnZXQpIHtcbiAgICBmb3IgKGxldCBwcm9wIGluIG9iaikge1xuICAgICAgICBsZXQgdmFsID0gb2JqW3Byb3BdO1xuICAgICAgICBpZiAodmFsIGluc3RhbmNlb2YgRnVuY3Rpb24pXG4gICAgICAgICAgICB2YWwgPSB2YWwuYmluZChzZWxmKTtcbiAgICAgICAgZWxzZSBpZiAocHJvcCA9PSBcImhhbmRsZURPTUV2ZW50c1wiKVxuICAgICAgICAgICAgdmFsID0gYmluZFByb3BzKHZhbCwgc2VsZiwge30pO1xuICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWw7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG4vKipcblBsdWdpbnMgYnVuZGxlIGZ1bmN0aW9uYWxpdHkgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYW4gZWRpdG9yLlxuVGhleSBhcmUgcGFydCBvZiB0aGUgW2VkaXRvciBzdGF0ZV0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLkVkaXRvclN0YXRlKSBhbmRcbm1heSBpbmZsdWVuY2UgdGhhdCBzdGF0ZSBhbmQgdGhlIHZpZXcgdGhhdCBjb250YWlucyBpdC5cbiovXG5jbGFzcyBQbHVnaW4ge1xuICAgIC8qKlxuICAgIENyZWF0ZSBhIHBsdWdpbi5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSBwbHVnaW4ncyBbc3BlYyBvYmplY3RdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5QbHVnaW5TcGVjKS5cbiAgICAqL1xuICAgIHNwZWMpIHtcbiAgICAgICAgdGhpcy5zcGVjID0gc3BlYztcbiAgICAgICAgLyoqXG4gICAgICAgIFRoZSBbcHJvcHNdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyN2aWV3LkVkaXRvclByb3BzKSBleHBvcnRlZCBieSB0aGlzIHBsdWdpbi5cbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy5wcm9wcyA9IHt9O1xuICAgICAgICBpZiAoc3BlYy5wcm9wcylcbiAgICAgICAgICAgIGJpbmRQcm9wcyhzcGVjLnByb3BzLCB0aGlzLCB0aGlzLnByb3BzKTtcbiAgICAgICAgdGhpcy5rZXkgPSBzcGVjLmtleSA/IHNwZWMua2V5LmtleSA6IGNyZWF0ZUtleShcInBsdWdpblwiKTtcbiAgICB9XG4gICAgLyoqXG4gICAgRXh0cmFjdCB0aGUgcGx1Z2luJ3Mgc3RhdGUgZmllbGQgZnJvbSBhbiBlZGl0b3Igc3RhdGUuXG4gICAgKi9cbiAgICBnZXRTdGF0ZShzdGF0ZSkgeyByZXR1cm4gc3RhdGVbdGhpcy5rZXldOyB9XG59XG5jb25zdCBrZXlzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmZ1bmN0aW9uIGNyZWF0ZUtleShuYW1lKSB7XG4gICAgaWYgKG5hbWUgaW4ga2V5cylcbiAgICAgICAgcmV0dXJuIG5hbWUgKyBcIiRcIiArICsra2V5c1tuYW1lXTtcbiAgICBrZXlzW25hbWVdID0gMDtcbiAgICByZXR1cm4gbmFtZSArIFwiJFwiO1xufVxuLyoqXG5BIGtleSBpcyB1c2VkIHRvIFt0YWddKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5QbHVnaW5TcGVjLmtleSkgcGx1Z2lucyBpbiBhIHdheVxudGhhdCBtYWtlcyBpdCBwb3NzaWJsZSB0byBmaW5kIHRoZW0sIGdpdmVuIGFuIGVkaXRvciBzdGF0ZS5cbkFzc2lnbmluZyBhIGtleSBkb2VzIG1lYW4gb25seSBvbmUgcGx1Z2luIG9mIHRoYXQgdHlwZSBjYW4gYmVcbmFjdGl2ZSBpbiBhIHN0YXRlLlxuKi9cbmNsYXNzIFBsdWdpbktleSB7XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgcGx1Z2luIGtleS5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG5hbWUgPSBcImtleVwiKSB7IHRoaXMua2V5ID0gY3JlYXRlS2V5KG5hbWUpOyB9XG4gICAgLyoqXG4gICAgR2V0IHRoZSBhY3RpdmUgcGx1Z2luIHdpdGggdGhpcyBrZXksIGlmIGFueSwgZnJvbSBhbiBlZGl0b3JcbiAgICBzdGF0ZS5cbiAgICAqL1xuICAgIGdldChzdGF0ZSkgeyByZXR1cm4gc3RhdGUuY29uZmlnLnBsdWdpbnNCeUtleVt0aGlzLmtleV07IH1cbiAgICAvKipcbiAgICBHZXQgdGhlIHBsdWdpbidzIHN0YXRlIGZyb20gYW4gZWRpdG9yIHN0YXRlLlxuICAgICovXG4gICAgZ2V0U3RhdGUoc3RhdGUpIHsgcmV0dXJuIHN0YXRlW3RoaXMua2V5XTsgfVxufVxuXG5leHBvcnQgeyBBbGxTZWxlY3Rpb24sIEVkaXRvclN0YXRlLCBOb2RlU2VsZWN0aW9uLCBQbHVnaW4sIFBsdWdpbktleSwgU2VsZWN0aW9uLCBTZWxlY3Rpb25SYW5nZSwgVGV4dFNlbGVjdGlvbiwgVHJhbnNhY3Rpb24gfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-transform/dist/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/prosemirror-transform/dist/index.js ***!
|
||
\**********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AddMarkStep: () => (/* binding */ AddMarkStep),\n/* harmony export */ AddNodeMarkStep: () => (/* binding */ AddNodeMarkStep),\n/* harmony export */ AttrStep: () => (/* binding */ AttrStep),\n/* harmony export */ DocAttrStep: () => (/* binding */ DocAttrStep),\n/* harmony export */ MapResult: () => (/* binding */ MapResult),\n/* harmony export */ Mapping: () => (/* binding */ Mapping),\n/* harmony export */ RemoveMarkStep: () => (/* binding */ RemoveMarkStep),\n/* harmony export */ RemoveNodeMarkStep: () => (/* binding */ RemoveNodeMarkStep),\n/* harmony export */ ReplaceAroundStep: () => (/* binding */ ReplaceAroundStep),\n/* harmony export */ ReplaceStep: () => (/* binding */ ReplaceStep),\n/* harmony export */ Step: () => (/* binding */ Step),\n/* harmony export */ StepMap: () => (/* binding */ StepMap),\n/* harmony export */ StepResult: () => (/* binding */ StepResult),\n/* harmony export */ Transform: () => (/* binding */ Transform),\n/* harmony export */ TransformError: () => (/* binding */ TransformError),\n/* harmony export */ canJoin: () => (/* binding */ canJoin),\n/* harmony export */ canSplit: () => (/* binding */ canSplit),\n/* harmony export */ dropPoint: () => (/* binding */ dropPoint),\n/* harmony export */ findWrapping: () => (/* binding */ findWrapping),\n/* harmony export */ insertPoint: () => (/* binding */ insertPoint),\n/* harmony export */ joinPoint: () => (/* binding */ joinPoint),\n/* harmony export */ liftTarget: () => (/* binding */ liftTarget),\n/* harmony export */ replaceStep: () => (/* binding */ replaceStep)\n/* harmony export */ });\n/* harmony import */ var prosemirror_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-model */ \"(app-pages-browser)/./node_modules/prosemirror-model/dist/index.js\");\n\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](https://prosemirror.net/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(maps, \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps ? maps.length : 0) {\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n this._maps = maps || [];\n this.ownData = !(maps || mirror);\n }\n /**\n The step maps in this mapping.\n */\n get maps() { return this._maps; }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this._maps, this.mirror, from, to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n if (!this.ownData) {\n this._maps = this._maps.slice();\n this.mirror = this.mirror && this.mirror.slice();\n this.ownData = true;\n }\n this.to = this._maps.push(map);\n if (mirrors != null)\n this.setMirror(this._maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this._maps.length; i < mapping._maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping._maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this._maps.length + mapping._maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping._maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this._maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this._maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this._maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice, this.structure);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty\n : new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty\n : new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = this.from == this.gapFrom ? from.pos : mapping.map(this.gapFrom, -1);\n let gapTo = this.to == this.gapTo ? to.pos : mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch, clearNewlines = true) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (clearNewlines && child.isText && parentType.whitespace != \"pre\") {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty, true);\n tr.replace(cur, cur, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth, contentBefore = 0, contentAfter = 0;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth) + contentBefore, endIndex = range.$to.indexAfter(depth) - contentAfter;\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n if (index)\n contentBefore = 1;\n if (endIndex < node.childCount)\n contentAfter = 1;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n let attrsHere = typeof attrs == \"function\" ? attrs(node) : attrs;\n if (node.isTextblock && !node.hasMarkup(type, attrsHere) &&\n canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n let convertNewlines = null;\n if (type.schema.linebreakReplacement) {\n let pre = type.whitespace == \"pre\", supportLinebreak = !!type.contentMatch.matchType(type.schema.linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n // Ensure all markup that isn't allowed in the new node type is cleared\n if (convertNewlines === false)\n replaceLinebreaks(tr, node, pos, mapFrom);\n clearIncompatible(tr, tr.mapping.slice(mapFrom).map(pos, 1), type, undefined, convertNewlines === null);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(type.create(attrsHere, null, node.marks)), 0, 0), 1, true));\n if (convertNewlines === true)\n replaceNewlines(tr, node, pos, mapFrom);\n return false;\n }\n });\n}\nfunction replaceNewlines(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.isText) {\n let m, newline = /\\r?\\n|\\r/g;\n while (m = newline.exec(child.text)) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset + m.index);\n tr.replaceWith(start, start + 1, node.type.schema.linebreakReplacement.create());\n }\n }\n });\n}\nfunction replaceLinebreaks(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.type == child.type.schema.linebreakReplacement) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset);\n tr.replaceWith(start, start + 1, node.type.schema.text(\"\\n\"));\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty, after = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction canAppendWithSubstitutedLinebreaks(a, b) {\n if (!b.content.size)\n a.type.compatibleContent(b.type);\n let match = a.contentMatchAt(a.childCount);\n let { linebreakReplacement } = a.type.schema;\n for (let i = 0; i < b.childCount; i++) {\n let child = b.child(i);\n let type = child.type == linebreakReplacement ? a.type.schema.nodes.text : child.type;\n match = match.matchType(type);\n if (!match)\n return false;\n if (!a.type.allowsMarks(child.marks))\n return false;\n }\n return match.validEnd;\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && canAppendWithSubstitutedLinebreaks(a, b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let convertNewlines = null;\n let { linebreakReplacement } = tr.doc.type.schema;\n let $before = tr.doc.resolve(pos - depth), beforeType = $before.node().type;\n if (linebreakReplacement && beforeType.inlineContent) {\n let pre = beforeType.whitespace == \"pre\";\n let supportLinebreak = !!beforeType.contentMatch.matchType(linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n let mapFrom = tr.steps.length;\n if (convertNewlines === false) {\n let $after = tr.doc.resolve(pos + depth);\n replaceLinebreaks(tr, $after.node(), $after.before(), mapFrom);\n }\n if (beforeType.inlineContent)\n clearIncompatible(tr, pos + depth - 1, beforeType, $before.node().contentMatchAt($before.index()), convertNewlines == null);\n let mapping = tr.mapping.slice(mapFrom), start = mapping.map(pos - depth);\n tr.step(new ReplaceStep(start, mapping.map(pos + depth, -1), prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty, true));\n if (convertNewlines === true) {\n let $full = tr.doc.resolve(start);\n replaceNewlines(tr, $full.node(), $full.before(), tr.steps.length);\n }\n return tr;\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in <p(\"foo\"), p(\"bar\")>, when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty\n : new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, $to);\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d &&\n $from.start(d - 1) == $to.start(d - 1) && $from.node(d - 1).canReplace($from.index(d - 1), $to.index(d - 1)))\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = Object.create(null);\n for (let name in doc.attrs)\n attrs[name] = doc.attrs[name];\n attrs[this.attr] = this.value;\n let updated = doc.type.create(attrs, doc.content, doc.marks);\n return StepResult.ok(updated);\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new DocAttrStep(this.attr, doc.attrs[this.attr]);\n }\n map(mapping) {\n return this;\n }\n toJSON() {\n return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n return new DocAttrStep(json.attr, json.value);\n }\n}\nStep.jsonID(\"docAttr\", DocAttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n Return a single range, in post-transform document positions,\n that covers all content changed by this transform. Returns null\n if no replacements are made. Note that this will ignore changes\n that add/remove marks without replacing the underlying content.\n */\n changedRange() {\n let from = 1e9, to = -1e9;\n for (let i = 0; i < this.mapping.maps.length; i++) {\n let map = this.mapping.maps[i];\n if (i) {\n from = map.map(from, 1);\n to = map.map(to, -1);\n }\n map.forEach((_f, _t, fromB, toB) => {\n from = Math.min(from, fromB);\n to = Math.max(to, toB);\n });\n }\n return from == 1e9 ? null : { from, to };\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n The `pos` addresses the document content. Use `setDocAttribute`\n to set attributes on the document itself.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Set a single attribute on the document to a new value.\n */\n setDocAttribute(attr, value) {\n this.step(new DocAttrStep(attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or all marks of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n if (mark instanceof prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Mark) {\n if (mark.isInSet(node.marks))\n this.step(new RemoveNodeMarkStep(pos, mark));\n }\n else {\n let set = node.marks, found, steps = [];\n while (found = mark.isInSet(set)) {\n steps.push(new RemoveNodeMarkStep(pos, found));\n set = found.removeFromSet(set);\n }\n for (let i = steps.length - 1; i >= 0; i--)\n this.step(steps[i]);\n }\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split (with the outermost nodes coming first).\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci10cmFuc2Zvcm0vZGlzdC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBa0Y7O0FBRWxGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEMsK0JBQStCO0FBQy9CLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFdBQVc7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHdCQUF3QjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDhCQUE4QjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsb0RBQUs7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsb0RBQUssQ0FBQyx1REFBUTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLG9EQUFLO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixtREFBSTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsUUFBUTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMFMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHByb3NlbWlycm9yLXRyYW5zZm9ybVxcZGlzdFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwbGFjZUVycm9yLCBTbGljZSwgRnJhZ21lbnQsIE1hcmtUeXBlLCBNYXJrIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuXG4vLyBSZWNvdmVyeSB2YWx1ZXMgZW5jb2RlIGEgcmFuZ2UgaW5kZXggYW5kIGFuIG9mZnNldC4gVGhleSBhcmVcbi8vIHJlcHJlc2VudGVkIGFzIG51bWJlcnMsIGJlY2F1c2UgdG9ucyBvZiB0aGVtIHdpbGwgYmUgY3JlYXRlZCB3aGVuXG4vLyBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgYSBsYXJnZSBudW1iZXIgb2YgZGVjb3JhdGlvbnMuIFRoZSBudW1iZXInc1xuLy8gbG93ZXIgMTYgYml0cyBwcm92aWRlIHRoZSBpbmRleCwgdGhlIHJlbWFpbmluZyBiaXRzIHRoZSBvZmZzZXQuXG4vL1xuLy8gTm90ZTogV2UgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYml0IHNoaWZ0IG9wZXJhdG9ycyB0byBlbi0gYW5kXG4vLyBkZWNvZGUgdGhlc2UsIHNpbmNlIHRob3NlIGNsaXAgdG8gMzIgYml0cywgd2hpY2ggd2UgbWlnaHQgaW4gcmFyZVxuLy8gY2FzZXMgd2FudCB0byBvdmVyZmxvdy4gQSA2NC1iaXQgZmxvYXQgY2FuIHJlcHJlc2VudCA0OC1iaXRcbi8vIGludGVnZXJzIHByZWNpc2VseS5cbmNvbnN0IGxvd2VyMTYgPSAweGZmZmY7XG5jb25zdCBmYWN0b3IxNiA9IE1hdGgucG93KDIsIDE2KTtcbmZ1bmN0aW9uIG1ha2VSZWNvdmVyKGluZGV4LCBvZmZzZXQpIHsgcmV0dXJuIGluZGV4ICsgb2Zmc2V0ICogZmFjdG9yMTY7IH1cbmZ1bmN0aW9uIHJlY292ZXJJbmRleCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgJiBsb3dlcjE2OyB9XG5mdW5jdGlvbiByZWNvdmVyT2Zmc2V0KHZhbHVlKSB7IHJldHVybiAodmFsdWUgLSAodmFsdWUgJiBsb3dlcjE2KSkgLyBmYWN0b3IxNjsgfVxuY29uc3QgREVMX0JFRk9SRSA9IDEsIERFTF9BRlRFUiA9IDIsIERFTF9BQ1JPU1MgPSA0LCBERUxfU0lERSA9IDg7XG4vKipcbkFuIG9iamVjdCByZXByZXNlbnRpbmcgYSBtYXBwZWQgcG9zaXRpb24gd2l0aCBleHRyYVxuaW5mb3JtYXRpb24uXG4qL1xuY2xhc3MgTWFwUmVzdWx0IHtcbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSBtYXBwZWQgdmVyc2lvbiBvZiB0aGUgcG9zaXRpb24uXG4gICAgKi9cbiAgICBwb3MsIFxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgZGVsSW5mbywgXG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICByZWNvdmVyKSB7XG4gICAgICAgIHRoaXMucG9zID0gcG9zO1xuICAgICAgICB0aGlzLmRlbEluZm8gPSBkZWxJbmZvO1xuICAgICAgICB0aGlzLnJlY292ZXIgPSByZWNvdmVyO1xuICAgIH1cbiAgICAvKipcbiAgICBUZWxscyB5b3Ugd2hldGhlciB0aGUgcG9zaXRpb24gd2FzIGRlbGV0ZWQsIHRoYXQgaXMsIHdoZXRoZXIgdGhlXG4gICAgc3RlcCByZW1vdmVkIHRoZSB0b2tlbiBvbiB0aGUgc2lkZSBxdWVyaWVkICh2aWEgdGhlIGBhc3NvY2ApXG4gICAgYXJndW1lbnQgZnJvbSB0aGUgZG9jdW1lbnQuXG4gICAgKi9cbiAgICBnZXQgZGVsZXRlZCgpIHsgcmV0dXJuICh0aGlzLmRlbEluZm8gJiBERUxfU0lERSkgPiAwOyB9XG4gICAgLyoqXG4gICAgVGVsbHMgeW91IHdoZXRoZXIgdGhlIHRva2VuIGJlZm9yZSB0aGUgbWFwcGVkIHBvc2l0aW9uIHdhcyBkZWxldGVkLlxuICAgICovXG4gICAgZ2V0IGRlbGV0ZWRCZWZvcmUoKSB7IHJldHVybiAodGhpcy5kZWxJbmZvICYgKERFTF9CRUZPUkUgfCBERUxfQUNST1NTKSkgPiAwOyB9XG4gICAgLyoqXG4gICAgVHJ1ZSB3aGVuIHRoZSB0b2tlbiBhZnRlciB0aGUgbWFwcGVkIHBvc2l0aW9uIHdhcyBkZWxldGVkLlxuICAgICovXG4gICAgZ2V0IGRlbGV0ZWRBZnRlcigpIHsgcmV0dXJuICh0aGlzLmRlbEluZm8gJiAoREVMX0FGVEVSIHwgREVMX0FDUk9TUykpID4gMDsgfVxuICAgIC8qKlxuICAgIFRlbGxzIHdoZXRoZXIgYW55IG9mIHRoZSBzdGVwcyBtYXBwZWQgdGhyb3VnaCBkZWxldGVzIGFjcm9zcyB0aGVcbiAgICBwb3NpdGlvbiAoaW5jbHVkaW5nIGJvdGggdGhlIHRva2VuIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlXG4gICAgcG9zaXRpb24pLlxuICAgICovXG4gICAgZ2V0IGRlbGV0ZWRBY3Jvc3MoKSB7IHJldHVybiAodGhpcy5kZWxJbmZvICYgREVMX0FDUk9TUykgPiAwOyB9XG59XG4vKipcbkEgbWFwIGRlc2NyaWJpbmcgdGhlIGRlbGV0aW9ucyBhbmQgaW5zZXJ0aW9ucyBtYWRlIGJ5IGEgc3RlcCwgd2hpY2hcbmNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gcG9zaXRpb25zIGluIHRoZVxucHJlLXN0ZXAgdmVyc2lvbiBvZiBhIGRvY3VtZW50IGFuZCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGVcbnBvc3Qtc3RlcCB2ZXJzaW9uLlxuKi9cbmNsYXNzIFN0ZXBNYXAge1xuICAgIC8qKlxuICAgIENyZWF0ZSBhIHBvc2l0aW9uIG1hcC4gVGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRvY3VtZW50IGFyZVxuICAgIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIG51bWJlcnMsIGluIHdoaWNoIGVhY2ggZ3JvdXAgb2YgdGhyZWVcbiAgICByZXByZXNlbnRzIGEgbW9kaWZpZWQgY2h1bmsgYXMgYFtzdGFydCwgb2xkU2l6ZSwgbmV3U2l6ZV1gLlxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICByYW5nZXMsIFxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgaW52ZXJ0ZWQgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLnJhbmdlcyA9IHJhbmdlcztcbiAgICAgICAgdGhpcy5pbnZlcnRlZCA9IGludmVydGVkO1xuICAgICAgICBpZiAoIXJhbmdlcy5sZW5ndGggJiYgU3RlcE1hcC5lbXB0eSlcbiAgICAgICAgICAgIHJldHVybiBTdGVwTWFwLmVtcHR5O1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHJlY292ZXIodmFsdWUpIHtcbiAgICAgICAgbGV0IGRpZmYgPSAwLCBpbmRleCA9IHJlY292ZXJJbmRleCh2YWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy5pbnZlcnRlZClcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZXg7IGkrKylcbiAgICAgICAgICAgICAgICBkaWZmICs9IHRoaXMucmFuZ2VzW2kgKiAzICsgMl0gLSB0aGlzLnJhbmdlc1tpICogMyArIDFdO1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZXNbaW5kZXggKiAzXSArIGRpZmYgKyByZWNvdmVyT2Zmc2V0KHZhbHVlKTtcbiAgICB9XG4gICAgbWFwUmVzdWx0KHBvcywgYXNzb2MgPSAxKSB7IHJldHVybiB0aGlzLl9tYXAocG9zLCBhc3NvYywgZmFsc2UpOyB9XG4gICAgbWFwKHBvcywgYXNzb2MgPSAxKSB7IHJldHVybiB0aGlzLl9tYXAocG9zLCBhc3NvYywgdHJ1ZSk7IH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIF9tYXAocG9zLCBhc3NvYywgc2ltcGxlKSB7XG4gICAgICAgIGxldCBkaWZmID0gMCwgb2xkSW5kZXggPSB0aGlzLmludmVydGVkID8gMiA6IDEsIG5ld0luZGV4ID0gdGhpcy5pbnZlcnRlZCA/IDEgOiAyO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmFuZ2VzLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgICAgICBsZXQgc3RhcnQgPSB0aGlzLnJhbmdlc1tpXSAtICh0aGlzLmludmVydGVkID8gZGlmZiA6IDApO1xuICAgICAgICAgICAgaWYgKHN0YXJ0ID4gcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgbGV0IG9sZFNpemUgPSB0aGlzLnJhbmdlc1tpICsgb2xkSW5kZXhdLCBuZXdTaXplID0gdGhpcy5yYW5nZXNbaSArIG5ld0luZGV4XSwgZW5kID0gc3RhcnQgKyBvbGRTaXplO1xuICAgICAgICAgICAgaWYgKHBvcyA8PSBlbmQpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2lkZSA9ICFvbGRTaXplID8gYXNzb2MgOiBwb3MgPT0gc3RhcnQgPyAtMSA6IHBvcyA9PSBlbmQgPyAxIDogYXNzb2M7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHN0YXJ0ICsgZGlmZiArIChzaWRlIDwgMCA/IDAgOiBuZXdTaXplKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltcGxlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIGxldCByZWNvdmVyID0gcG9zID09IChhc3NvYyA8IDAgPyBzdGFydCA6IGVuZCkgPyBudWxsIDogbWFrZVJlY292ZXIoaSAvIDMsIHBvcyAtIHN0YXJ0KTtcbiAgICAgICAgICAgICAgICBsZXQgZGVsID0gcG9zID09IHN0YXJ0ID8gREVMX0FGVEVSIDogcG9zID09IGVuZCA/IERFTF9CRUZPUkUgOiBERUxfQUNST1NTO1xuICAgICAgICAgICAgICAgIGlmIChhc3NvYyA8IDAgPyBwb3MgIT0gc3RhcnQgOiBwb3MgIT0gZW5kKVxuICAgICAgICAgICAgICAgICAgICBkZWwgfD0gREVMX1NJREU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNYXBSZXN1bHQocmVzdWx0LCBkZWwsIHJlY292ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlmZiArPSBuZXdTaXplIC0gb2xkU2l6ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2ltcGxlID8gcG9zICsgZGlmZiA6IG5ldyBNYXBSZXN1bHQocG9zICsgZGlmZiwgMCwgbnVsbCk7XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgdG91Y2hlcyhwb3MsIHJlY292ZXIpIHtcbiAgICAgICAgbGV0IGRpZmYgPSAwLCBpbmRleCA9IHJlY292ZXJJbmRleChyZWNvdmVyKTtcbiAgICAgICAgbGV0IG9sZEluZGV4ID0gdGhpcy5pbnZlcnRlZCA/IDIgOiAxLCBuZXdJbmRleCA9IHRoaXMuaW52ZXJ0ZWQgPyAxIDogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJhbmdlcy5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICAgICAgbGV0IHN0YXJ0ID0gdGhpcy5yYW5nZXNbaV0gLSAodGhpcy5pbnZlcnRlZCA/IGRpZmYgOiAwKTtcbiAgICAgICAgICAgIGlmIChzdGFydCA+IHBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGxldCBvbGRTaXplID0gdGhpcy5yYW5nZXNbaSArIG9sZEluZGV4XSwgZW5kID0gc3RhcnQgKyBvbGRTaXplO1xuICAgICAgICAgICAgaWYgKHBvcyA8PSBlbmQgJiYgaSA9PSBpbmRleCAqIDMpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBkaWZmICs9IHRoaXMucmFuZ2VzW2kgKyBuZXdJbmRleF0gLSBvbGRTaXplO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ2FsbHMgdGhlIGdpdmVuIGZ1bmN0aW9uIG9uIGVhY2ggb2YgdGhlIGNoYW5nZWQgcmFuZ2VzIGluY2x1ZGVkIGluXG4gICAgdGhpcyBtYXAuXG4gICAgKi9cbiAgICBmb3JFYWNoKGYpIHtcbiAgICAgICAgbGV0IG9sZEluZGV4ID0gdGhpcy5pbnZlcnRlZCA/IDIgOiAxLCBuZXdJbmRleCA9IHRoaXMuaW52ZXJ0ZWQgPyAxIDogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGRpZmYgPSAwOyBpIDwgdGhpcy5yYW5nZXMubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IHRoaXMucmFuZ2VzW2ldLCBvbGRTdGFydCA9IHN0YXJ0IC0gKHRoaXMuaW52ZXJ0ZWQgPyBkaWZmIDogMCksIG5ld1N0YXJ0ID0gc3RhcnQgKyAodGhpcy5pbnZlcnRlZCA/IDAgOiBkaWZmKTtcbiAgICAgICAgICAgIGxldCBvbGRTaXplID0gdGhpcy5yYW5nZXNbaSArIG9sZEluZGV4XSwgbmV3U2l6ZSA9IHRoaXMucmFuZ2VzW2kgKyBuZXdJbmRleF07XG4gICAgICAgICAgICBmKG9sZFN0YXJ0LCBvbGRTdGFydCArIG9sZFNpemUsIG5ld1N0YXJ0LCBuZXdTdGFydCArIG5ld1NpemUpO1xuICAgICAgICAgICAgZGlmZiArPSBuZXdTaXplIC0gb2xkU2l6ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICBDcmVhdGUgYW4gaW52ZXJ0ZWQgdmVyc2lvbiBvZiB0aGlzIG1hcC4gVGhlIHJlc3VsdCBjYW4gYmUgdXNlZCB0b1xuICAgIG1hcCBwb3NpdGlvbnMgaW4gdGhlIHBvc3Qtc3RlcCBkb2N1bWVudCB0byB0aGUgcHJlLXN0ZXAgZG9jdW1lbnQuXG4gICAgKi9cbiAgICBpbnZlcnQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RlcE1hcCh0aGlzLnJhbmdlcywgIXRoaXMuaW52ZXJ0ZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuaW52ZXJ0ZWQgPyBcIi1cIiA6IFwiXCIpICsgSlNPTi5zdHJpbmdpZnkodGhpcy5yYW5nZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICBDcmVhdGUgYSBtYXAgdGhhdCBtb3ZlcyBhbGwgcG9zaXRpb25zIGJ5IG9mZnNldCBgbmAgKHdoaWNoIG1heSBiZVxuICAgIG5lZ2F0aXZlKS4gVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gYXBwbHlpbmcgc3RlcHMgbWVhbnQgZm9yIGFcbiAgICBzdWItZG9jdW1lbnQgdG8gYSBsYXJnZXIgZG9jdW1lbnQsIG9yIHZpY2UtdmVyc2EuXG4gICAgKi9cbiAgICBzdGF0aWMgb2Zmc2V0KG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPT0gMCA/IFN0ZXBNYXAuZW1wdHkgOiBuZXcgU3RlcE1hcChuIDwgMCA/IFswLCAtbiwgMF0gOiBbMCwgMCwgbl0pO1xuICAgIH1cbn1cbi8qKlxuQSBTdGVwTWFwIHRoYXQgY29udGFpbnMgbm8gY2hhbmdlZCByYW5nZXMuXG4qL1xuU3RlcE1hcC5lbXB0eSA9IG5ldyBTdGVwTWFwKFtdKTtcbi8qKlxuQSBtYXBwaW5nIHJlcHJlc2VudHMgYSBwaXBlbGluZSBvZiB6ZXJvIG9yIG1vcmUgW3N0ZXBcbm1hcHNdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyN0cmFuc2Zvcm0uU3RlcE1hcCkuIEl0IGhhcyBzcGVjaWFsIHByb3Zpc2lvbnMgZm9yIGxvc3NsZXNzbHlcbmhhbmRsaW5nIG1hcHBpbmcgcG9zaXRpb25zIHRocm91Z2ggYSBzZXJpZXMgb2Ygc3RlcHMgaW4gd2hpY2ggc29tZVxuc3RlcHMgYXJlIGludmVydGVkIHZlcnNpb25zIG9mIGVhcmxpZXIgc3RlcHMuIChUaGlzIGNvbWVzIHVwIHdoZW5cbuKAmFtyZWJhc2luZ10oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9ndWlkZS8jdHJhbnNmb3JtLnJlYmFzaW5nKeKAmSBzdGVwcyBmb3JcbmNvbGxhYm9yYXRpb24gb3IgaGlzdG9yeSBtYW5hZ2VtZW50LilcbiovXG5jbGFzcyBNYXBwaW5nIHtcbiAgICAvKipcbiAgICBDcmVhdGUgYSBuZXcgbWFwcGluZyB3aXRoIHRoZSBnaXZlbiBwb3NpdGlvbiBtYXBzLlxuICAgICovXG4gICAgY29uc3RydWN0b3IobWFwcywgXG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBtaXJyb3IsIFxuICAgIC8qKlxuICAgIFRoZSBzdGFydGluZyBwb3NpdGlvbiBpbiB0aGUgYG1hcHNgIGFycmF5LCB1c2VkIHdoZW4gYG1hcGAgb3JcbiAgICBgbWFwUmVzdWx0YCBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICBmcm9tID0gMCwgXG4gICAgLyoqXG4gICAgVGhlIGVuZCBwb3NpdGlvbiBpbiB0aGUgYG1hcHNgIGFycmF5LlxuICAgICovXG4gICAgdG8gPSBtYXBzID8gbWFwcy5sZW5ndGggOiAwKSB7XG4gICAgICAgIHRoaXMubWlycm9yID0gbWlycm9yO1xuICAgICAgICB0aGlzLmZyb20gPSBmcm9tO1xuICAgICAgICB0aGlzLnRvID0gdG87XG4gICAgICAgIHRoaXMuX21hcHMgPSBtYXBzIHx8IFtdO1xuICAgICAgICB0aGlzLm93bkRhdGEgPSAhKG1hcHMgfHwgbWlycm9yKTtcbiAgICB9XG4gICAgLyoqXG4gICAgVGhlIHN0ZXAgbWFwcyBpbiB0aGlzIG1hcHBpbmcuXG4gICAgKi9cbiAgICBnZXQgbWFwcygpIHsgcmV0dXJuIHRoaXMuX21hcHM7IH1cbiAgICAvKipcbiAgICBDcmVhdGUgYSBtYXBwaW5nIHRoYXQgbWFwcyBvbmx5IHRocm91Z2ggYSBwYXJ0IG9mIHRoaXMgb25lLlxuICAgICovXG4gICAgc2xpY2UoZnJvbSA9IDAsIHRvID0gdGhpcy5tYXBzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbmV3IE1hcHBpbmcodGhpcy5fbWFwcywgdGhpcy5taXJyb3IsIGZyb20sIHRvKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQWRkIGEgc3RlcCBtYXAgdG8gdGhlIGVuZCBvZiB0aGlzIG1hcHBpbmcuIElmIGBtaXJyb3JzYCBpc1xuICAgIGdpdmVuLCBpdCBzaG91bGQgYmUgdGhlIGluZGV4IG9mIHRoZSBzdGVwIG1hcCB0aGF0IGlzIHRoZSBtaXJyb3JcbiAgICBpbWFnZSBvZiB0aGlzIG9uZS5cbiAgICAqL1xuICAgIGFwcGVuZE1hcChtYXAsIG1pcnJvcnMpIHtcbiAgICAgICAgaWYgKCF0aGlzLm93bkRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuX21hcHMgPSB0aGlzLl9tYXBzLnNsaWNlKCk7XG4gICAgICAgICAgICB0aGlzLm1pcnJvciA9IHRoaXMubWlycm9yICYmIHRoaXMubWlycm9yLnNsaWNlKCk7XG4gICAgICAgICAgICB0aGlzLm93bkRhdGEgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG8gPSB0aGlzLl9tYXBzLnB1c2gobWFwKTtcbiAgICAgICAgaWYgKG1pcnJvcnMgIT0gbnVsbClcbiAgICAgICAgICAgIHRoaXMuc2V0TWlycm9yKHRoaXMuX21hcHMubGVuZ3RoIC0gMSwgbWlycm9ycyk7XG4gICAgfVxuICAgIC8qKlxuICAgIEFkZCBhbGwgdGhlIHN0ZXAgbWFwcyBpbiBhIGdpdmVuIG1hcHBpbmcgdG8gdGhpcyBvbmUgKHByZXNlcnZpbmdcbiAgICBtaXJyb3JpbmcgaW5mb3JtYXRpb24pLlxuICAgICovXG4gICAgYXBwZW5kTWFwcGluZyhtYXBwaW5nKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBzdGFydFNpemUgPSB0aGlzLl9tYXBzLmxlbmd0aDsgaSA8IG1hcHBpbmcuX21hcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtaXJyID0gbWFwcGluZy5nZXRNaXJyb3IoaSk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZE1hcChtYXBwaW5nLl9tYXBzW2ldLCBtaXJyICE9IG51bGwgJiYgbWlyciA8IGkgPyBzdGFydFNpemUgKyBtaXJyIDogdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICBGaW5kcyB0aGUgb2Zmc2V0IG9mIHRoZSBzdGVwIG1hcCB0aGF0IG1pcnJvcnMgdGhlIG1hcCBhdCB0aGVcbiAgICBnaXZlbiBvZmZzZXQsIGluIHRoaXMgbWFwcGluZyAoYXMgcGVyIHRoZSBzZWNvbmQgYXJndW1lbnQgdG9cbiAgICBgYXBwZW5kTWFwYCkuXG4gICAgKi9cbiAgICBnZXRNaXJyb3Iobikge1xuICAgICAgICBpZiAodGhpcy5taXJyb3IpXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWlycm9yLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pcnJvcltpXSA9PSBuKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5taXJyb3JbaSArIChpICUgMiA/IC0xIDogMSldO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHNldE1pcnJvcihuLCBtKSB7XG4gICAgICAgIGlmICghdGhpcy5taXJyb3IpXG4gICAgICAgICAgICB0aGlzLm1pcnJvciA9IFtdO1xuICAgICAgICB0aGlzLm1pcnJvci5wdXNoKG4sIG0pO1xuICAgIH1cbiAgICAvKipcbiAgICBBcHBlbmQgdGhlIGludmVyc2Ugb2YgdGhlIGdpdmVuIG1hcHBpbmcgdG8gdGhpcyBvbmUuXG4gICAgKi9cbiAgICBhcHBlbmRNYXBwaW5nSW52ZXJ0ZWQobWFwcGluZykge1xuICAgICAgICBmb3IgKGxldCBpID0gbWFwcGluZy5tYXBzLmxlbmd0aCAtIDEsIHRvdGFsU2l6ZSA9IHRoaXMuX21hcHMubGVuZ3RoICsgbWFwcGluZy5fbWFwcy5sZW5ndGg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgbWlyciA9IG1hcHBpbmcuZ2V0TWlycm9yKGkpO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmRNYXAobWFwcGluZy5fbWFwc1tpXS5pbnZlcnQoKSwgbWlyciAhPSBudWxsICYmIG1pcnIgPiBpID8gdG90YWxTaXplIC0gbWlyciAtIDEgOiB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhbiBpbnZlcnRlZCB2ZXJzaW9uIG9mIHRoaXMgbWFwcGluZy5cbiAgICAqL1xuICAgIGludmVydCgpIHtcbiAgICAgICAgbGV0IGludmVyc2UgPSBuZXcgTWFwcGluZztcbiAgICAgICAgaW52ZXJzZS5hcHBlbmRNYXBwaW5nSW52ZXJ0ZWQodGhpcyk7XG4gICAgICAgIHJldHVybiBpbnZlcnNlO1xuICAgIH1cbiAgICAvKipcbiAgICBNYXAgYSBwb3NpdGlvbiB0aHJvdWdoIHRoaXMgbWFwcGluZy5cbiAgICAqL1xuICAgIG1hcChwb3MsIGFzc29jID0gMSkge1xuICAgICAgICBpZiAodGhpcy5taXJyb3IpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFwKHBvcywgYXNzb2MsIHRydWUpO1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5mcm9tOyBpIDwgdGhpcy50bzsgaSsrKVxuICAgICAgICAgICAgcG9zID0gdGhpcy5fbWFwc1tpXS5tYXAocG9zLCBhc3NvYyk7XG4gICAgICAgIHJldHVybiBwb3M7XG4gICAgfVxuICAgIC8qKlxuICAgIE1hcCBhIHBvc2l0aW9uIHRocm91Z2ggdGhpcyBtYXBwaW5nLCByZXR1cm5pbmcgYSBtYXBwaW5nXG4gICAgcmVzdWx0LlxuICAgICovXG4gICAgbWFwUmVzdWx0KHBvcywgYXNzb2MgPSAxKSB7IHJldHVybiB0aGlzLl9tYXAocG9zLCBhc3NvYywgZmFsc2UpOyB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBfbWFwKHBvcywgYXNzb2MsIHNpbXBsZSkge1xuICAgICAgICBsZXQgZGVsSW5mbyA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmZyb207IGkgPCB0aGlzLnRvOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYXAgPSB0aGlzLl9tYXBzW2ldLCByZXN1bHQgPSBtYXAubWFwUmVzdWx0KHBvcywgYXNzb2MpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5yZWNvdmVyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29yciA9IHRoaXMuZ2V0TWlycm9yKGkpO1xuICAgICAgICAgICAgICAgIGlmIChjb3JyICE9IG51bGwgJiYgY29yciA+IGkgJiYgY29yciA8IHRoaXMudG8pIHtcbiAgICAgICAgICAgICAgICAgICAgaSA9IGNvcnI7XG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IHRoaXMuX21hcHNbY29ycl0ucmVjb3ZlcihyZXN1bHQucmVjb3Zlcik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlbEluZm8gfD0gcmVzdWx0LmRlbEluZm87XG4gICAgICAgICAgICBwb3MgPSByZXN1bHQucG9zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaW1wbGUgPyBwb3MgOiBuZXcgTWFwUmVzdWx0KHBvcywgZGVsSW5mbywgbnVsbCk7XG4gICAgfVxufVxuXG5jb25zdCBzdGVwc0J5SUQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqXG5BIHN0ZXAgb2JqZWN0IHJlcHJlc2VudHMgYW4gYXRvbWljIGNoYW5nZS4gSXQgZ2VuZXJhbGx5IGFwcGxpZXNcbm9ubHkgdG8gdGhlIGRvY3VtZW50IGl0IHdhcyBjcmVhdGVkIGZvciwgc2luY2UgdGhlIHBvc2l0aW9uc1xuc3RvcmVkIGluIGl0IHdpbGwgb25seSBtYWtlIHNlbnNlIGZvciB0aGF0IGRvY3VtZW50LlxuXG5OZXcgc3RlcHMgYXJlIGRlZmluZWQgYnkgY3JlYXRpbmcgY2xhc3NlcyB0aGF0IGV4dGVuZCBgU3RlcGAsXG5vdmVycmlkaW5nIHRoZSBgYXBwbHlgLCBgaW52ZXJ0YCwgYG1hcGAsIGBnZXRNYXBgIGFuZCBgZnJvbUpTT05gXG5tZXRob2RzLCBhbmQgcmVnaXN0ZXJpbmcgeW91ciBjbGFzcyB3aXRoIGEgdW5pcXVlXG5KU09OLXNlcmlhbGl6YXRpb24gaWRlbnRpZmllciB1c2luZ1xuW2BTdGVwLmpzb25JRGBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyN0cmFuc2Zvcm0uU3RlcF5qc29uSUQpLlxuKi9cbmNsYXNzIFN0ZXAge1xuICAgIC8qKlxuICAgIEdldCB0aGUgc3RlcCBtYXAgdGhhdCByZXByZXNlbnRzIHRoZSBjaGFuZ2VzIG1hZGUgYnkgdGhpcyBzdGVwLFxuICAgIGFuZCB3aGljaCBjYW4gYmUgdXNlZCB0byB0cmFuc2Zvcm0gYmV0d2VlbiBwb3NpdGlvbnMgaW4gdGhlIG9sZFxuICAgIGFuZCB0aGUgbmV3IGRvY3VtZW50LlxuICAgICovXG4gICAgZ2V0TWFwKCkgeyByZXR1cm4gU3RlcE1hcC5lbXB0eTsgfVxuICAgIC8qKlxuICAgIFRyeSB0byBtZXJnZSB0aGlzIHN0ZXAgd2l0aCBhbm90aGVyIG9uZSwgdG8gYmUgYXBwbGllZCBkaXJlY3RseVxuICAgIGFmdGVyIGl0LiBSZXR1cm5zIHRoZSBtZXJnZWQgc3RlcCB3aGVuIHBvc3NpYmxlLCBudWxsIGlmIHRoZVxuICAgIHN0ZXBzIGNhbid0IGJlIG1lcmdlZC5cbiAgICAqL1xuICAgIG1lcmdlKG90aGVyKSB7IHJldHVybiBudWxsOyB9XG4gICAgLyoqXG4gICAgRGVzZXJpYWxpemUgYSBzdGVwIGZyb20gaXRzIEpTT04gcmVwcmVzZW50YXRpb24uIFdpbGwgY2FsbFxuICAgIHRocm91Z2ggdG8gdGhlIHN0ZXAgY2xhc3MnIG93biBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1ldGhvZC5cbiAgICAqL1xuICAgIHN0YXRpYyBmcm9tSlNPTihzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgaWYgKCFqc29uIHx8ICFqc29uLnN0ZXBUeXBlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIGlucHV0IGZvciBTdGVwLmZyb21KU09OXCIpO1xuICAgICAgICBsZXQgdHlwZSA9IHN0ZXBzQnlJRFtqc29uLnN0ZXBUeXBlXTtcbiAgICAgICAgaWYgKCF0eXBlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5vIHN0ZXAgdHlwZSAke2pzb24uc3RlcFR5cGV9IGRlZmluZWRgKTtcbiAgICAgICAgcmV0dXJuIHR5cGUuZnJvbUpTT04oc2NoZW1hLCBqc29uKTtcbiAgICB9XG4gICAgLyoqXG4gICAgVG8gYmUgYWJsZSB0byBzZXJpYWxpemUgc3RlcHMgdG8gSlNPTiwgZWFjaCBzdGVwIG5lZWRzIGEgc3RyaW5nXG4gICAgSUQgdG8gYXR0YWNoIHRvIGl0cyBKU09OIHJlcHJlc2VudGF0aW9uLiBVc2UgdGhpcyBtZXRob2QgdG9cbiAgICByZWdpc3RlciBhbiBJRCBmb3IgeW91ciBzdGVwIGNsYXNzZXMuIFRyeSB0byBwaWNrIHNvbWV0aGluZ1xuICAgIHRoYXQncyB1bmxpa2VseSB0byBjbGFzaCB3aXRoIHN0ZXBzIGZyb20gb3RoZXIgbW9kdWxlcy5cbiAgICAqL1xuICAgIHN0YXRpYyBqc29uSUQoaWQsIHN0ZXBDbGFzcykge1xuICAgICAgICBpZiAoaWQgaW4gc3RlcHNCeUlEKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJEdXBsaWNhdGUgdXNlIG9mIHN0ZXAgSlNPTiBJRCBcIiArIGlkKTtcbiAgICAgICAgc3RlcHNCeUlEW2lkXSA9IHN0ZXBDbGFzcztcbiAgICAgICAgc3RlcENsYXNzLnByb3RvdHlwZS5qc29uSUQgPSBpZDtcbiAgICAgICAgcmV0dXJuIHN0ZXBDbGFzcztcbiAgICB9XG59XG4vKipcblRoZSByZXN1bHQgb2YgW2FwcGx5aW5nXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jdHJhbnNmb3JtLlN0ZXAuYXBwbHkpIGEgc3RlcC4gQ29udGFpbnMgZWl0aGVyIGFcbm5ldyBkb2N1bWVudCBvciBhIGZhaWx1cmUgdmFsdWUuXG4qL1xuY2xhc3MgU3RlcFJlc3VsdCB7XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICBUaGUgdHJhbnNmb3JtZWQgZG9jdW1lbnQsIGlmIHN1Y2Nlc3NmdWwuXG4gICAgKi9cbiAgICBkb2MsIFxuICAgIC8qKlxuICAgIFRoZSBmYWlsdXJlIG1lc3NhZ2UsIGlmIHVuc3VjY2Vzc2Z1bC5cbiAgICAqL1xuICAgIGZhaWxlZCkge1xuICAgICAgICB0aGlzLmRvYyA9IGRvYztcbiAgICAgICAgdGhpcy5mYWlsZWQgPSBmYWlsZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIHN1Y2Nlc3NmdWwgc3RlcCByZXN1bHQuXG4gICAgKi9cbiAgICBzdGF0aWMgb2soZG9jKSB7IHJldHVybiBuZXcgU3RlcFJlc3VsdChkb2MsIG51bGwpOyB9XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgZmFpbGVkIHN0ZXAgcmVzdWx0LlxuICAgICovXG4gICAgc3RhdGljIGZhaWwobWVzc2FnZSkgeyByZXR1cm4gbmV3IFN0ZXBSZXN1bHQobnVsbCwgbWVzc2FnZSk7IH1cbiAgICAvKipcbiAgICBDYWxsIFtgTm9kZS5yZXBsYWNlYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGUucmVwbGFjZSkgd2l0aCB0aGUgZ2l2ZW5cbiAgICBhcmd1bWVudHMuIENyZWF0ZSBhIHN1Y2Nlc3NmdWwgcmVzdWx0IGlmIGl0IHN1Y2NlZWRzLCBhbmQgYVxuICAgIGZhaWxlZCBvbmUgaWYgaXQgdGhyb3dzIGEgYFJlcGxhY2VFcnJvcmAuXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbVJlcGxhY2UoZG9jLCBmcm9tLCB0bywgc2xpY2UpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBTdGVwUmVzdWx0Lm9rKGRvYy5yZXBsYWNlKGZyb20sIHRvLCBzbGljZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFJlcGxhY2VFcnJvcilcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RlcFJlc3VsdC5mYWlsKGUubWVzc2FnZSk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBtYXBGcmFnbWVudChmcmFnbWVudCwgZiwgcGFyZW50KSB7XG4gICAgbGV0IG1hcHBlZCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhZ21lbnQuY2hpbGRDb3VudDsgaSsrKSB7XG4gICAgICAgIGxldCBjaGlsZCA9IGZyYWdtZW50LmNoaWxkKGkpO1xuICAgICAgICBpZiAoY2hpbGQuY29udGVudC5zaXplKVxuICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5jb3B5KG1hcEZyYWdtZW50KGNoaWxkLmNvbnRlbnQsIGYsIGNoaWxkKSk7XG4gICAgICAgIGlmIChjaGlsZC5pc0lubGluZSlcbiAgICAgICAgICAgIGNoaWxkID0gZihjaGlsZCwgcGFyZW50LCBpKTtcbiAgICAgICAgbWFwcGVkLnB1c2goY2hpbGQpO1xuICAgIH1cbiAgICByZXR1cm4gRnJhZ21lbnQuZnJvbUFycmF5KG1hcHBlZCk7XG59XG4vKipcbkFkZCBhIG1hcmsgdG8gYWxsIGlubGluZSBjb250ZW50IGJldHdlZW4gdHdvIHBvc2l0aW9ucy5cbiovXG5jbGFzcyBBZGRNYXJrU3RlcCBleHRlbmRzIFN0ZXAge1xuICAgIC8qKlxuICAgIENyZWF0ZSBhIG1hcmsgc3RlcC5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSBzdGFydCBvZiB0aGUgbWFya2VkIHJhbmdlLlxuICAgICovXG4gICAgZnJvbSwgXG4gICAgLyoqXG4gICAgVGhlIGVuZCBvZiB0aGUgbWFya2VkIHJhbmdlLlxuICAgICovXG4gICAgdG8sIFxuICAgIC8qKlxuICAgIFRoZSBtYXJrIHRvIGFkZC5cbiAgICAqL1xuICAgIG1hcmspIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5mcm9tID0gZnJvbTtcbiAgICAgICAgdGhpcy50byA9IHRvO1xuICAgICAgICB0aGlzLm1hcmsgPSBtYXJrO1xuICAgIH1cbiAgICBhcHBseShkb2MpIHtcbiAgICAgICAgbGV0IG9sZFNsaWNlID0gZG9jLnNsaWNlKHRoaXMuZnJvbSwgdGhpcy50byksICRmcm9tID0gZG9jLnJlc29sdmUodGhpcy5mcm9tKTtcbiAgICAgICAgbGV0IHBhcmVudCA9ICRmcm9tLm5vZGUoJGZyb20uc2hhcmVkRGVwdGgodGhpcy50bykpO1xuICAgICAgICBsZXQgc2xpY2UgPSBuZXcgU2xpY2UobWFwRnJhZ21lbnQob2xkU2xpY2UuY29udGVudCwgKG5vZGUsIHBhcmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFub2RlLmlzQXRvbSB8fCAhcGFyZW50LnR5cGUuYWxsb3dzTWFya1R5cGUodGhpcy5tYXJrLnR5cGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUubWFyayh0aGlzLm1hcmsuYWRkVG9TZXQobm9kZS5tYXJrcykpO1xuICAgICAgICB9LCBwYXJlbnQpLCBvbGRTbGljZS5vcGVuU3RhcnQsIG9sZFNsaWNlLm9wZW5FbmQpO1xuICAgICAgICByZXR1cm4gU3RlcFJlc3VsdC5mcm9tUmVwbGFjZShkb2MsIHRoaXMuZnJvbSwgdGhpcy50bywgc2xpY2UpO1xuICAgIH1cbiAgICBpbnZlcnQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVtb3ZlTWFya1N0ZXAodGhpcy5mcm9tLCB0aGlzLnRvLCB0aGlzLm1hcmspO1xuICAgIH1cbiAgICBtYXAobWFwcGluZykge1xuICAgICAgICBsZXQgZnJvbSA9IG1hcHBpbmcubWFwUmVzdWx0KHRoaXMuZnJvbSwgMSksIHRvID0gbWFwcGluZy5tYXBSZXN1bHQodGhpcy50bywgLTEpO1xuICAgICAgICBpZiAoZnJvbS5kZWxldGVkICYmIHRvLmRlbGV0ZWQgfHwgZnJvbS5wb3MgPj0gdG8ucG9zKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBuZXcgQWRkTWFya1N0ZXAoZnJvbS5wb3MsIHRvLnBvcywgdGhpcy5tYXJrKTtcbiAgICB9XG4gICAgbWVyZ2Uob3RoZXIpIHtcbiAgICAgICAgaWYgKG90aGVyIGluc3RhbmNlb2YgQWRkTWFya1N0ZXAgJiZcbiAgICAgICAgICAgIG90aGVyLm1hcmsuZXEodGhpcy5tYXJrKSAmJlxuICAgICAgICAgICAgdGhpcy5mcm9tIDw9IG90aGVyLnRvICYmIHRoaXMudG8gPj0gb3RoZXIuZnJvbSlcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWRkTWFya1N0ZXAoTWF0aC5taW4odGhpcy5mcm9tLCBvdGhlci5mcm9tKSwgTWF0aC5tYXgodGhpcy50bywgb3RoZXIudG8pLCB0aGlzLm1hcmspO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBzdGVwVHlwZTogXCJhZGRNYXJrXCIsIG1hcms6IHRoaXMubWFyay50b0pTT04oKSxcbiAgICAgICAgICAgIGZyb206IHRoaXMuZnJvbSwgdG86IHRoaXMudG8gfTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbUpTT04oc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIGlmICh0eXBlb2YganNvbi5mcm9tICE9IFwibnVtYmVyXCIgfHwgdHlwZW9mIGpzb24udG8gIT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBpbnB1dCBmb3IgQWRkTWFya1N0ZXAuZnJvbUpTT05cIik7XG4gICAgICAgIHJldHVybiBuZXcgQWRkTWFya1N0ZXAoanNvbi5mcm9tLCBqc29uLnRvLCBzY2hlbWEubWFya0Zyb21KU09OKGpzb24ubWFyaykpO1xuICAgIH1cbn1cblN0ZXAuanNvbklEKFwiYWRkTWFya1wiLCBBZGRNYXJrU3RlcCk7XG4vKipcblJlbW92ZSBhIG1hcmsgZnJvbSBhbGwgaW5saW5lIGNvbnRlbnQgYmV0d2VlbiB0d28gcG9zaXRpb25zLlxuKi9cbmNsYXNzIFJlbW92ZU1hcmtTdGVwIGV4dGVuZHMgU3RlcCB7XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgbWFyay1yZW1vdmluZyBzdGVwLlxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgVGhlIHN0YXJ0IG9mIHRoZSB1bm1hcmtlZCByYW5nZS5cbiAgICAqL1xuICAgIGZyb20sIFxuICAgIC8qKlxuICAgIFRoZSBlbmQgb2YgdGhlIHVubWFya2VkIHJhbmdlLlxuICAgICovXG4gICAgdG8sIFxuICAgIC8qKlxuICAgIFRoZSBtYXJrIHRvIHJlbW92ZS5cbiAgICAqL1xuICAgIG1hcmspIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5mcm9tID0gZnJvbTtcbiAgICAgICAgdGhpcy50byA9IHRvO1xuICAgICAgICB0aGlzLm1hcmsgPSBtYXJrO1xuICAgIH1cbiAgICBhcHBseShkb2MpIHtcbiAgICAgICAgbGV0IG9sZFNsaWNlID0gZG9jLnNsaWNlKHRoaXMuZnJvbSwgdGhpcy50byk7XG4gICAgICAgIGxldCBzbGljZSA9IG5ldyBTbGljZShtYXBGcmFnbWVudChvbGRTbGljZS5jb250ZW50LCBub2RlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBub2RlLm1hcmsodGhpcy5tYXJrLnJlbW92ZUZyb21TZXQobm9kZS5tYXJrcykpO1xuICAgICAgICB9LCBkb2MpLCBvbGRTbGljZS5vcGVuU3RhcnQsIG9sZFNsaWNlLm9wZW5FbmQpO1xuICAgICAgICByZXR1cm4gU3RlcFJlc3VsdC5mcm9tUmVwbGFjZShkb2MsIHRoaXMuZnJvbSwgdGhpcy50bywgc2xpY2UpO1xuICAgIH1cbiAgICBpbnZlcnQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQWRkTWFya1N0ZXAodGhpcy5mcm9tLCB0aGlzLnRvLCB0aGlzLm1hcmspO1xuICAgIH1cbiAgICBtYXAobWFwcGluZykge1xuICAgICAgICBsZXQgZnJvbSA9IG1hcHBpbmcubWFwUmVzdWx0KHRoaXMuZnJvbSwgMSksIHRvID0gbWFwcGluZy5tYXBSZXN1bHQodGhpcy50bywgLTEpO1xuICAgICAgICBpZiAoZnJvbS5kZWxldGVkICYmIHRvLmRlbGV0ZWQgfHwgZnJvbS5wb3MgPj0gdG8ucG9zKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBuZXcgUmVtb3ZlTWFya1N0ZXAoZnJvbS5wb3MsIHRvLnBvcywgdGhpcy5tYXJrKTtcbiAgICB9XG4gICAgbWVyZ2Uob3RoZXIpIHtcbiAgICAgICAgaWYgKG90aGVyIGluc3RhbmNlb2YgUmVtb3ZlTWFya1N0ZXAgJiZcbiAgICAgICAgICAgIG90aGVyLm1hcmsuZXEodGhpcy5tYXJrKSAmJlxuICAgICAgICAgICAgdGhpcy5mcm9tIDw9IG90aGVyLnRvICYmIHRoaXMudG8gPj0gb3RoZXIuZnJvbSlcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVtb3ZlTWFya1N0ZXAoTWF0aC5taW4odGhpcy5mcm9tLCBvdGhlci5mcm9tKSwgTWF0aC5tYXgodGhpcy50bywgb3RoZXIudG8pLCB0aGlzLm1hcmspO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBzdGVwVHlwZTogXCJyZW1vdmVNYXJrXCIsIG1hcms6IHRoaXMubWFyay50b0pTT04oKSxcbiAgICAgICAgICAgIGZyb206IHRoaXMuZnJvbSwgdG86IHRoaXMudG8gfTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbUpTT04oc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIGlmICh0eXBlb2YganNvbi5mcm9tICE9IFwibnVtYmVyXCIgfHwgdHlwZW9mIGpzb24udG8gIT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBpbnB1dCBmb3IgUmVtb3ZlTWFya1N0ZXAuZnJvbUpTT05cIik7XG4gICAgICAgIHJldHVybiBuZXcgUmVtb3ZlTWFya1N0ZXAoanNvbi5mcm9tLCBqc29uLnRvLCBzY2hlbWEubWFya0Zyb21KU09OKGpzb24ubWFyaykpO1xuICAgIH1cbn1cblN0ZXAuanNvbklEKFwicmVtb3ZlTWFya1wiLCBSZW1vdmVNYXJrU3RlcCk7XG4vKipcbkFkZCBhIG1hcmsgdG8gYSBzcGVjaWZpYyBub2RlLlxuKi9cbmNsYXNzIEFkZE5vZGVNYXJrU3RlcCBleHRlbmRzIFN0ZXAge1xuICAgIC8qKlxuICAgIENyZWF0ZSBhIG5vZGUgbWFyayBzdGVwLlxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgVGhlIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQgbm9kZS5cbiAgICAqL1xuICAgIHBvcywgXG4gICAgLyoqXG4gICAgVGhlIG1hcmsgdG8gYWRkLlxuICAgICovXG4gICAgbWFyaykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBvcyA9IHBvcztcbiAgICAgICAgdGhpcy5tYXJrID0gbWFyaztcbiAgICB9XG4gICAgYXBwbHkoZG9jKSB7XG4gICAgICAgIGxldCBub2RlID0gZG9jLm5vZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgIGlmICghbm9kZSlcbiAgICAgICAgICAgIHJldHVybiBTdGVwUmVzdWx0LmZhaWwoXCJObyBub2RlIGF0IG1hcmsgc3RlcCdzIHBvc2l0aW9uXCIpO1xuICAgICAgICBsZXQgdXBkYXRlZCA9IG5vZGUudHlwZS5jcmVhdGUobm9kZS5hdHRycywgbnVsbCwgdGhpcy5tYXJrLmFkZFRvU2V0KG5vZGUubWFya3MpKTtcbiAgICAgICAgcmV0dXJuIFN0ZXBSZXN1bHQuZnJvbVJlcGxhY2UoZG9jLCB0aGlzLnBvcywgdGhpcy5wb3MgKyAxLCBuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbSh1cGRhdGVkKSwgMCwgbm9kZS5pc0xlYWYgPyAwIDogMSkpO1xuICAgIH1cbiAgICBpbnZlcnQoZG9jKSB7XG4gICAgICAgIGxldCBub2RlID0gZG9jLm5vZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICBsZXQgbmV3U2V0ID0gdGhpcy5tYXJrLmFkZFRvU2V0KG5vZGUubWFya3MpO1xuICAgICAgICAgICAgaWYgKG5ld1NldC5sZW5ndGggPT0gbm9kZS5tYXJrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUubWFya3MubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS5tYXJrc1tpXS5pc0luU2V0KG5ld1NldCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFkZE5vZGVNYXJrU3RlcCh0aGlzLnBvcywgbm9kZS5tYXJrc1tpXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGROb2RlTWFya1N0ZXAodGhpcy5wb3MsIHRoaXMubWFyayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBSZW1vdmVOb2RlTWFya1N0ZXAodGhpcy5wb3MsIHRoaXMubWFyayk7XG4gICAgfVxuICAgIG1hcChtYXBwaW5nKSB7XG4gICAgICAgIGxldCBwb3MgPSBtYXBwaW5nLm1hcFJlc3VsdCh0aGlzLnBvcywgMSk7XG4gICAgICAgIHJldHVybiBwb3MuZGVsZXRlZEFmdGVyID8gbnVsbCA6IG5ldyBBZGROb2RlTWFya1N0ZXAocG9zLnBvcywgdGhpcy5tYXJrKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBzdGVwVHlwZTogXCJhZGROb2RlTWFya1wiLCBwb3M6IHRoaXMucG9zLCBtYXJrOiB0aGlzLm1hcmsudG9KU09OKCkgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbUpTT04oc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIGlmICh0eXBlb2YganNvbi5wb3MgIT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBpbnB1dCBmb3IgQWRkTm9kZU1hcmtTdGVwLmZyb21KU09OXCIpO1xuICAgICAgICByZXR1cm4gbmV3IEFkZE5vZGVNYXJrU3RlcChqc29uLnBvcywgc2NoZW1hLm1hcmtGcm9tSlNPTihqc29uLm1hcmspKTtcbiAgICB9XG59XG5TdGVwLmpzb25JRChcImFkZE5vZGVNYXJrXCIsIEFkZE5vZGVNYXJrU3RlcCk7XG4vKipcblJlbW92ZSBhIG1hcmsgZnJvbSBhIHNwZWNpZmljIG5vZGUuXG4qL1xuY2xhc3MgUmVtb3ZlTm9kZU1hcmtTdGVwIGV4dGVuZHMgU3RlcCB7XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgbWFyay1yZW1vdmluZyBzdGVwLlxuICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgVGhlIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQgbm9kZS5cbiAgICAqL1xuICAgIHBvcywgXG4gICAgLyoqXG4gICAgVGhlIG1hcmsgdG8gcmVtb3ZlLlxuICAgICovXG4gICAgbWFyaykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBvcyA9IHBvcztcbiAgICAgICAgdGhpcy5tYXJrID0gbWFyaztcbiAgICB9XG4gICAgYXBwbHkoZG9jKSB7XG4gICAgICAgIGxldCBub2RlID0gZG9jLm5vZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgIGlmICghbm9kZSlcbiAgICAgICAgICAgIHJldHVybiBTdGVwUmVzdWx0LmZhaWwoXCJObyBub2RlIGF0IG1hcmsgc3RlcCdzIHBvc2l0aW9uXCIpO1xuICAgICAgICBsZXQgdXBkYXRlZCA9IG5vZGUudHlwZS5jcmVhdGUobm9kZS5hdHRycywgbnVsbCwgdGhpcy5tYXJrLnJlbW92ZUZyb21TZXQobm9kZS5tYXJrcykpO1xuICAgICAgICByZXR1cm4gU3RlcFJlc3VsdC5mcm9tUmVwbGFjZShkb2MsIHRoaXMucG9zLCB0aGlzLnBvcyArIDEsIG5ldyBTbGljZShGcmFnbWVudC5mcm9tKHVwZGF0ZWQpLCAwLCBub2RlLmlzTGVhZiA/IDAgOiAxKSk7XG4gICAgfVxuICAgIGludmVydChkb2MpIHtcbiAgICAgICAgbGV0IG5vZGUgPSBkb2Mubm9kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLm1hcmsuaXNJblNldChub2RlLm1hcmtzKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICByZXR1cm4gbmV3IEFkZE5vZGVNYXJrU3RlcCh0aGlzLnBvcywgdGhpcy5tYXJrKTtcbiAgICB9XG4gICAgbWFwKG1hcHBpbmcpIHtcbiAgICAgICAgbGV0IHBvcyA9IG1hcHBpbmcubWFwUmVzdWx0KHRoaXMucG9zLCAxKTtcbiAgICAgICAgcmV0dXJuIHBvcy5kZWxldGVkQWZ0ZXIgPyBudWxsIDogbmV3IFJlbW92ZU5vZGVNYXJrU3RlcChwb3MucG9zLCB0aGlzLm1hcmspO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IHN0ZXBUeXBlOiBcInJlbW92ZU5vZGVNYXJrXCIsIHBvczogdGhpcy5wb3MsIG1hcms6IHRoaXMubWFyay50b0pTT04oKSB9O1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIHN0YXRpYyBmcm9tSlNPTihzY2hlbWEsIGpzb24pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBqc29uLnBvcyAhPSBcIm51bWJlclwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIGlucHV0IGZvciBSZW1vdmVOb2RlTWFya1N0ZXAuZnJvbUpTT05cIik7XG4gICAgICAgIHJldHVybiBuZXcgUmVtb3ZlTm9kZU1hcmtTdGVwKGpzb24ucG9zLCBzY2hlbWEubWFya0Zyb21KU09OKGpzb24ubWFyaykpO1xuICAgIH1cbn1cblN0ZXAuanNvbklEKFwicmVtb3ZlTm9kZU1hcmtcIiwgUmVtb3ZlTm9kZU1hcmtTdGVwKTtcblxuLyoqXG5SZXBsYWNlIGEgcGFydCBvZiB0aGUgZG9jdW1lbnQgd2l0aCBhIHNsaWNlIG9mIG5ldyBjb250ZW50LlxuKi9cbmNsYXNzIFJlcGxhY2VTdGVwIGV4dGVuZHMgU3RlcCB7XG4gICAgLyoqXG4gICAgVGhlIGdpdmVuIGBzbGljZWAgc2hvdWxkIGZpdCB0aGUgJ2dhcCcgYmV0d2VlbiBgZnJvbWAgYW5kXG4gICAgYHRvYOKAlHRoZSBkZXB0aHMgbXVzdCBsaW5lIHVwLCBhbmQgdGhlIHN1cnJvdW5kaW5nIG5vZGVzIG11c3QgYmVcbiAgICBhYmxlIHRvIGJlIGpvaW5lZCB3aXRoIHRoZSBvcGVuIHNpZGVzIG9mIHRoZSBzbGljZS4gV2hlblxuICAgIGBzdHJ1Y3R1cmVgIGlzIHRydWUsIHRoZSBzdGVwIHdpbGwgZmFpbCBpZiB0aGUgY29udGVudCBiZXR3ZWVuXG4gICAgZnJvbSBhbmQgdG8gaXMgbm90IGp1c3QgYSBzZXF1ZW5jZSBvZiBjbG9zaW5nIGFuZCB0aGVuIG9wZW5pbmdcbiAgICB0b2tlbnMgKHRoaXMgaXMgdG8gZ3VhcmQgYWdhaW5zdCByZWJhc2VkIHJlcGxhY2Ugc3RlcHNcbiAgICBvdmVyd3JpdGluZyBzb21ldGhpbmcgdGhleSB3ZXJlbid0IHN1cHBvc2VkIHRvKS5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVwbGFjZWQgcmFuZ2UuXG4gICAgKi9cbiAgICBmcm9tLCBcbiAgICAvKipcbiAgICBUaGUgZW5kIHBvc2l0aW9uIG9mIHRoZSByZXBsYWNlZCByYW5nZS5cbiAgICAqL1xuICAgIHRvLCBcbiAgICAvKipcbiAgICBUaGUgc2xpY2UgdG8gaW5zZXJ0LlxuICAgICovXG4gICAgc2xpY2UsIFxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgc3RydWN0dXJlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5mcm9tID0gZnJvbTtcbiAgICAgICAgdGhpcy50byA9IHRvO1xuICAgICAgICB0aGlzLnNsaWNlID0gc2xpY2U7XG4gICAgICAgIHRoaXMuc3RydWN0dXJlID0gc3RydWN0dXJlO1xuICAgIH1cbiAgICBhcHBseShkb2MpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RydWN0dXJlICYmIGNvbnRlbnRCZXR3ZWVuKGRvYywgdGhpcy5mcm9tLCB0aGlzLnRvKSlcbiAgICAgICAgICAgIHJldHVybiBTdGVwUmVzdWx0LmZhaWwoXCJTdHJ1Y3R1cmUgcmVwbGFjZSB3b3VsZCBvdmVyd3JpdGUgY29udGVudFwiKTtcbiAgICAgICAgcmV0dXJuIFN0ZXBSZXN1bHQuZnJvbVJlcGxhY2UoZG9jLCB0aGlzLmZyb20sIHRoaXMudG8sIHRoaXMuc2xpY2UpO1xuICAgIH1cbiAgICBnZXRNYXAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RlcE1hcChbdGhpcy5mcm9tLCB0aGlzLnRvIC0gdGhpcy5mcm9tLCB0aGlzLnNsaWNlLnNpemVdKTtcbiAgICB9XG4gICAgaW52ZXJ0KGRvYykge1xuICAgICAgICByZXR1cm4gbmV3IFJlcGxhY2VTdGVwKHRoaXMuZnJvbSwgdGhpcy5mcm9tICsgdGhpcy5zbGljZS5zaXplLCBkb2Muc2xpY2UodGhpcy5mcm9tLCB0aGlzLnRvKSk7XG4gICAgfVxuICAgIG1hcChtYXBwaW5nKSB7XG4gICAgICAgIGxldCBmcm9tID0gbWFwcGluZy5tYXBSZXN1bHQodGhpcy5mcm9tLCAxKSwgdG8gPSBtYXBwaW5nLm1hcFJlc3VsdCh0aGlzLnRvLCAtMSk7XG4gICAgICAgIGlmIChmcm9tLmRlbGV0ZWRBY3Jvc3MgJiYgdG8uZGVsZXRlZEFjcm9zcylcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IFJlcGxhY2VTdGVwKGZyb20ucG9zLCBNYXRoLm1heChmcm9tLnBvcywgdG8ucG9zKSwgdGhpcy5zbGljZSwgdGhpcy5zdHJ1Y3R1cmUpO1xuICAgIH1cbiAgICBtZXJnZShvdGhlcikge1xuICAgICAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFJlcGxhY2VTdGVwKSB8fCBvdGhlci5zdHJ1Y3R1cmUgfHwgdGhpcy5zdHJ1Y3R1cmUpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuZnJvbSArIHRoaXMuc2xpY2Uuc2l6ZSA9PSBvdGhlci5mcm9tICYmICF0aGlzLnNsaWNlLm9wZW5FbmQgJiYgIW90aGVyLnNsaWNlLm9wZW5TdGFydCkge1xuICAgICAgICAgICAgbGV0IHNsaWNlID0gdGhpcy5zbGljZS5zaXplICsgb3RoZXIuc2xpY2Uuc2l6ZSA9PSAwID8gU2xpY2UuZW1wdHlcbiAgICAgICAgICAgICAgICA6IG5ldyBTbGljZSh0aGlzLnNsaWNlLmNvbnRlbnQuYXBwZW5kKG90aGVyLnNsaWNlLmNvbnRlbnQpLCB0aGlzLnNsaWNlLm9wZW5TdGFydCwgb3RoZXIuc2xpY2Uub3BlbkVuZCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlcGxhY2VTdGVwKHRoaXMuZnJvbSwgdGhpcy50byArIChvdGhlci50byAtIG90aGVyLmZyb20pLCBzbGljZSwgdGhpcy5zdHJ1Y3R1cmUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG90aGVyLnRvID09IHRoaXMuZnJvbSAmJiAhdGhpcy5zbGljZS5vcGVuU3RhcnQgJiYgIW90aGVyLnNsaWNlLm9wZW5FbmQpIHtcbiAgICAgICAgICAgIGxldCBzbGljZSA9IHRoaXMuc2xpY2Uuc2l6ZSArIG90aGVyLnNsaWNlLnNpemUgPT0gMCA/IFNsaWNlLmVtcHR5XG4gICAgICAgICAgICAgICAgOiBuZXcgU2xpY2Uob3RoZXIuc2xpY2UuY29udGVudC5hcHBlbmQodGhpcy5zbGljZS5jb250ZW50KSwgb3RoZXIuc2xpY2Uub3BlblN0YXJ0LCB0aGlzLnNsaWNlLm9wZW5FbmQpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXBsYWNlU3RlcChvdGhlci5mcm9tLCB0aGlzLnRvLCBzbGljZSwgdGhpcy5zdHJ1Y3R1cmUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQganNvbiA9IHsgc3RlcFR5cGU6IFwicmVwbGFjZVwiLCBmcm9tOiB0aGlzLmZyb20sIHRvOiB0aGlzLnRvIH07XG4gICAgICAgIGlmICh0aGlzLnNsaWNlLnNpemUpXG4gICAgICAgICAgICBqc29uLnNsaWNlID0gdGhpcy5zbGljZS50b0pTT04oKTtcbiAgICAgICAgaWYgKHRoaXMuc3RydWN0dXJlKVxuICAgICAgICAgICAganNvbi5zdHJ1Y3R1cmUgPSB0cnVlO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbUpTT04oc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIGlmICh0eXBlb2YganNvbi5mcm9tICE9IFwibnVtYmVyXCIgfHwgdHlwZW9mIGpzb24udG8gIT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBpbnB1dCBmb3IgUmVwbGFjZVN0ZXAuZnJvbUpTT05cIik7XG4gICAgICAgIHJldHVybiBuZXcgUmVwbGFjZVN0ZXAoanNvbi5mcm9tLCBqc29uLnRvLCBTbGljZS5mcm9tSlNPTihzY2hlbWEsIGpzb24uc2xpY2UpLCAhIWpzb24uc3RydWN0dXJlKTtcbiAgICB9XG59XG5TdGVwLmpzb25JRChcInJlcGxhY2VcIiwgUmVwbGFjZVN0ZXApO1xuLyoqXG5SZXBsYWNlIGEgcGFydCBvZiB0aGUgZG9jdW1lbnQgd2l0aCBhIHNsaWNlIG9mIGNvbnRlbnQsIGJ1dFxucHJlc2VydmUgYSByYW5nZSBvZiB0aGUgcmVwbGFjZWQgY29udGVudCBieSBtb3ZpbmcgaXQgaW50byB0aGVcbnNsaWNlLlxuKi9cbmNsYXNzIFJlcGxhY2VBcm91bmRTdGVwIGV4dGVuZHMgU3RlcCB7XG4gICAgLyoqXG4gICAgQ3JlYXRlIGEgcmVwbGFjZS1hcm91bmQgc3RlcCB3aXRoIHRoZSBnaXZlbiByYW5nZSBhbmQgZ2FwLlxuICAgIGBpbnNlcnRgIHNob3VsZCBiZSB0aGUgcG9pbnQgaW4gdGhlIHNsaWNlIGludG8gd2hpY2ggdGhlIGNvbnRlbnRcbiAgICBvZiB0aGUgZ2FwIHNob3VsZCBiZSBtb3ZlZC4gYHN0cnVjdHVyZWAgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXNcbiAgICBpdCBoYXMgaW4gdGhlIFtgUmVwbGFjZVN0ZXBgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jdHJhbnNmb3JtLlJlcGxhY2VTdGVwKSBjbGFzcy5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVwbGFjZWQgcmFuZ2UuXG4gICAgKi9cbiAgICBmcm9tLCBcbiAgICAvKipcbiAgICBUaGUgZW5kIHBvc2l0aW9uIG9mIHRoZSByZXBsYWNlZCByYW5nZS5cbiAgICAqL1xuICAgIHRvLCBcbiAgICAvKipcbiAgICBUaGUgc3RhcnQgb2YgcHJlc2VydmVkIHJhbmdlLlxuICAgICovXG4gICAgZ2FwRnJvbSwgXG4gICAgLyoqXG4gICAgVGhlIGVuZCBvZiBwcmVzZXJ2ZWQgcmFuZ2UuXG4gICAgKi9cbiAgICBnYXBUbywgXG4gICAgLyoqXG4gICAgVGhlIHNsaWNlIHRvIGluc2VydC5cbiAgICAqL1xuICAgIHNsaWNlLCBcbiAgICAvKipcbiAgICBUaGUgcG9zaXRpb24gaW4gdGhlIHNsaWNlIHdoZXJlIHRoZSBwcmVzZXJ2ZWQgcmFuZ2Ugc2hvdWxkIGJlXG4gICAgaW5zZXJ0ZWQuXG4gICAgKi9cbiAgICBpbnNlcnQsIFxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgc3RydWN0dXJlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5mcm9tID0gZnJvbTtcbiAgICAgICAgdGhpcy50byA9IHRvO1xuICAgICAgICB0aGlzLmdhcEZyb20gPSBnYXBGcm9tO1xuICAgICAgICB0aGlzLmdhcFRvID0gZ2FwVG87XG4gICAgICAgIHRoaXMuc2xpY2UgPSBzbGljZTtcbiAgICAgICAgdGhpcy5pbnNlcnQgPSBpbnNlcnQ7XG4gICAgICAgIHRoaXMuc3RydWN0dXJlID0gc3RydWN0dXJlO1xuICAgIH1cbiAgICBhcHBseShkb2MpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RydWN0dXJlICYmIChjb250ZW50QmV0d2Vlbihkb2MsIHRoaXMuZnJvbSwgdGhpcy5nYXBGcm9tKSB8fFxuICAgICAgICAgICAgY29udGVudEJldHdlZW4oZG9jLCB0aGlzLmdhcFRvLCB0aGlzLnRvKSkpXG4gICAgICAgICAgICByZXR1cm4gU3RlcFJlc3VsdC5mYWlsKFwiU3RydWN0dXJlIGdhcC1yZXBsYWNlIHdvdWxkIG92ZXJ3cml0ZSBjb250ZW50XCIpO1xuICAgICAgICBsZXQgZ2FwID0gZG9jLnNsaWNlKHRoaXMuZ2FwRnJvbSwgdGhpcy5nYXBUbyk7XG4gICAgICAgIGlmIChnYXAub3BlblN0YXJ0IHx8IGdhcC5vcGVuRW5kKVxuICAgICAgICAgICAgcmV0dXJuIFN0ZXBSZXN1bHQuZmFpbChcIkdhcCBpcyBub3QgYSBmbGF0IHJhbmdlXCIpO1xuICAgICAgICBsZXQgaW5zZXJ0ZWQgPSB0aGlzLnNsaWNlLmluc2VydEF0KHRoaXMuaW5zZXJ0LCBnYXAuY29udGVudCk7XG4gICAgICAgIGlmICghaW5zZXJ0ZWQpXG4gICAgICAgICAgICByZXR1cm4gU3RlcFJlc3VsdC5mYWlsKFwiQ29udGVudCBkb2VzIG5vdCBmaXQgaW4gZ2FwXCIpO1xuICAgICAgICByZXR1cm4gU3RlcFJlc3VsdC5mcm9tUmVwbGFjZShkb2MsIHRoaXMuZnJvbSwgdGhpcy50bywgaW5zZXJ0ZWQpO1xuICAgIH1cbiAgICBnZXRNYXAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RlcE1hcChbdGhpcy5mcm9tLCB0aGlzLmdhcEZyb20gLSB0aGlzLmZyb20sIHRoaXMuaW5zZXJ0LFxuICAgICAgICAgICAgdGhpcy5nYXBUbywgdGhpcy50byAtIHRoaXMuZ2FwVG8sIHRoaXMuc2xpY2Uuc2l6ZSAtIHRoaXMuaW5zZXJ0XSk7XG4gICAgfVxuICAgIGludmVydChkb2MpIHtcbiAgICAgICAgbGV0IGdhcCA9IHRoaXMuZ2FwVG8gLSB0aGlzLmdhcEZyb207XG4gICAgICAgIHJldHVybiBuZXcgUmVwbGFjZUFyb3VuZFN0ZXAodGhpcy5mcm9tLCB0aGlzLmZyb20gKyB0aGlzLnNsaWNlLnNpemUgKyBnYXAsIHRoaXMuZnJvbSArIHRoaXMuaW5zZXJ0LCB0aGlzLmZyb20gKyB0aGlzLmluc2VydCArIGdhcCwgZG9jLnNsaWNlKHRoaXMuZnJvbSwgdGhpcy50bykucmVtb3ZlQmV0d2Vlbih0aGlzLmdhcEZyb20gLSB0aGlzLmZyb20sIHRoaXMuZ2FwVG8gLSB0aGlzLmZyb20pLCB0aGlzLmdhcEZyb20gLSB0aGlzLmZyb20sIHRoaXMuc3RydWN0dXJlKTtcbiAgICB9XG4gICAgbWFwKG1hcHBpbmcpIHtcbiAgICAgICAgbGV0IGZyb20gPSBtYXBwaW5nLm1hcFJlc3VsdCh0aGlzLmZyb20sIDEpLCB0byA9IG1hcHBpbmcubWFwUmVzdWx0KHRoaXMudG8sIC0xKTtcbiAgICAgICAgbGV0IGdhcEZyb20gPSB0aGlzLmZyb20gPT0gdGhpcy5nYXBGcm9tID8gZnJvbS5wb3MgOiBtYXBwaW5nLm1hcCh0aGlzLmdhcEZyb20sIC0xKTtcbiAgICAgICAgbGV0IGdhcFRvID0gdGhpcy50byA9PSB0aGlzLmdhcFRvID8gdG8ucG9zIDogbWFwcGluZy5tYXAodGhpcy5nYXBUbywgMSk7XG4gICAgICAgIGlmICgoZnJvbS5kZWxldGVkQWNyb3NzICYmIHRvLmRlbGV0ZWRBY3Jvc3MpIHx8IGdhcEZyb20gPCBmcm9tLnBvcyB8fCBnYXBUbyA+IHRvLnBvcylcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IFJlcGxhY2VBcm91bmRTdGVwKGZyb20ucG9zLCB0by5wb3MsIGdhcEZyb20sIGdhcFRvLCB0aGlzLnNsaWNlLCB0aGlzLmluc2VydCwgdGhpcy5zdHJ1Y3R1cmUpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCBqc29uID0geyBzdGVwVHlwZTogXCJyZXBsYWNlQXJvdW5kXCIsIGZyb206IHRoaXMuZnJvbSwgdG86IHRoaXMudG8sXG4gICAgICAgICAgICBnYXBGcm9tOiB0aGlzLmdhcEZyb20sIGdhcFRvOiB0aGlzLmdhcFRvLCBpbnNlcnQ6IHRoaXMuaW5zZXJ0IH07XG4gICAgICAgIGlmICh0aGlzLnNsaWNlLnNpemUpXG4gICAgICAgICAgICBqc29uLnNsaWNlID0gdGhpcy5zbGljZS50b0pTT04oKTtcbiAgICAgICAgaWYgKHRoaXMuc3RydWN0dXJlKVxuICAgICAgICAgICAganNvbi5zdHJ1Y3R1cmUgPSB0cnVlO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzdGF0aWMgZnJvbUpTT04oc2NoZW1hLCBqc29uKSB7XG4gICAgICAgIGlmICh0eXBlb2YganNvbi5mcm9tICE9IFwibnVtYmVyXCIgfHwgdHlwZW9mIGpzb24udG8gIT0gXCJudW1iZXJcIiB8fFxuICAgICAgICAgICAgdHlwZW9mIGpzb24uZ2FwRnJvbSAhPSBcIm51bWJlclwiIHx8IHR5cGVvZiBqc29uLmdhcFRvICE9IFwibnVtYmVyXCIgfHwgdHlwZW9mIGpzb24uaW5zZXJ0ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkludmFsaWQgaW5wdXQgZm9yIFJlcGxhY2VBcm91bmRTdGVwLmZyb21KU09OXCIpO1xuICAgICAgICByZXR1cm4gbmV3IFJlcGxhY2VBcm91bmRTdGVwKGpzb24uZnJvbSwganNvbi50bywganNvbi5nYXBGcm9tLCBqc29uLmdhcFRvLCBTbGljZS5mcm9tSlNPTihzY2hlbWEsIGpzb24uc2xpY2UpLCBqc29uLmluc2VydCwgISFqc29uLnN0cnVjdHVyZSk7XG4gICAgfVxufVxuU3RlcC5qc29uSUQoXCJyZXBsYWNlQXJvdW5kXCIsIFJlcGxhY2VBcm91bmRTdGVwKTtcbmZ1bmN0aW9uIGNvbnRlbnRCZXR3ZWVuKGRvYywgZnJvbSwgdG8pIHtcbiAgICBsZXQgJGZyb20gPSBkb2MucmVzb2x2ZShmcm9tKSwgZGlzdCA9IHRvIC0gZnJvbSwgZGVwdGggPSAkZnJvbS5kZXB0aDtcbiAgICB3aGlsZSAoZGlzdCA+IDAgJiYgZGVwdGggPiAwICYmICRmcm9tLmluZGV4QWZ0ZXIoZGVwdGgpID09ICRmcm9tLm5vZGUoZGVwdGgpLmNoaWxkQ291bnQpIHtcbiAgICAgICAgZGVwdGgtLTtcbiAgICAgICAgZGlzdC0tO1xuICAgIH1cbiAgICBpZiAoZGlzdCA+IDApIHtcbiAgICAgICAgbGV0IG5leHQgPSAkZnJvbS5ub2RlKGRlcHRoKS5tYXliZUNoaWxkKCRmcm9tLmluZGV4QWZ0ZXIoZGVwdGgpKTtcbiAgICAgICAgd2hpbGUgKGRpc3QgPiAwKSB7XG4gICAgICAgICAgICBpZiAoIW5leHQgfHwgbmV4dC5pc0xlYWYpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBuZXh0ID0gbmV4dC5maXJzdENoaWxkO1xuICAgICAgICAgICAgZGlzdC0tO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYWRkTWFyayh0ciwgZnJvbSwgdG8sIG1hcmspIHtcbiAgICBsZXQgcmVtb3ZlZCA9IFtdLCBhZGRlZCA9IFtdO1xuICAgIGxldCByZW1vdmluZywgYWRkaW5nO1xuICAgIHRyLmRvYy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIChub2RlLCBwb3MsIHBhcmVudCkgPT4ge1xuICAgICAgICBpZiAoIW5vZGUuaXNJbmxpbmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBtYXJrcyA9IG5vZGUubWFya3M7XG4gICAgICAgIGlmICghbWFyay5pc0luU2V0KG1hcmtzKSAmJiBwYXJlbnQudHlwZS5hbGxvd3NNYXJrVHlwZShtYXJrLnR5cGUpKSB7XG4gICAgICAgICAgICBsZXQgc3RhcnQgPSBNYXRoLm1heChwb3MsIGZyb20pLCBlbmQgPSBNYXRoLm1pbihwb3MgKyBub2RlLm5vZGVTaXplLCB0byk7XG4gICAgICAgICAgICBsZXQgbmV3U2V0ID0gbWFyay5hZGRUb1NldChtYXJrcyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtYXJrc1tpXS5pc0luU2V0KG5ld1NldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlbW92aW5nICYmIHJlbW92aW5nLnRvID09IHN0YXJ0ICYmIHJlbW92aW5nLm1hcmsuZXEobWFya3NbaV0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZpbmcudG8gPSBlbmQ7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQucHVzaChyZW1vdmluZyA9IG5ldyBSZW1vdmVNYXJrU3RlcChzdGFydCwgZW5kLCBtYXJrc1tpXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhZGRpbmcgJiYgYWRkaW5nLnRvID09IHN0YXJ0KVxuICAgICAgICAgICAgICAgIGFkZGluZy50byA9IGVuZDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhZGRlZC5wdXNoKGFkZGluZyA9IG5ldyBBZGRNYXJrU3RlcChzdGFydCwgZW5kLCBtYXJrKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZW1vdmVkLmZvckVhY2gocyA9PiB0ci5zdGVwKHMpKTtcbiAgICBhZGRlZC5mb3JFYWNoKHMgPT4gdHIuc3RlcChzKSk7XG59XG5mdW5jdGlvbiByZW1vdmVNYXJrKHRyLCBmcm9tLCB0bywgbWFyaykge1xuICAgIGxldCBtYXRjaGVkID0gW10sIHN0ZXAgPSAwO1xuICAgIHRyLmRvYy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgaWYgKCFub2RlLmlzSW5saW5lKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdGVwKys7XG4gICAgICAgIGxldCB0b1JlbW92ZSA9IG51bGw7XG4gICAgICAgIGlmIChtYXJrIGluc3RhbmNlb2YgTWFya1R5cGUpIHtcbiAgICAgICAgICAgIGxldCBzZXQgPSBub2RlLm1hcmtzLCBmb3VuZDtcbiAgICAgICAgICAgIHdoaWxlIChmb3VuZCA9IG1hcmsuaXNJblNldChzZXQpKSB7XG4gICAgICAgICAgICAgICAgKHRvUmVtb3ZlIHx8ICh0b1JlbW92ZSA9IFtdKSkucHVzaChmb3VuZCk7XG4gICAgICAgICAgICAgICAgc2V0ID0gZm91bmQucmVtb3ZlRnJvbVNldChzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1hcmspIHtcbiAgICAgICAgICAgIGlmIChtYXJrLmlzSW5TZXQobm9kZS5tYXJrcykpXG4gICAgICAgICAgICAgICAgdG9SZW1vdmUgPSBbbWFya107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0b1JlbW92ZSA9IG5vZGUubWFya3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRvUmVtb3ZlICYmIHRvUmVtb3ZlLmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IGVuZCA9IE1hdGgubWluKHBvcyArIG5vZGUubm9kZVNpemUsIHRvKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9SZW1vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc3R5bGUgPSB0b1JlbW92ZVtpXSwgZm91bmQ7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRjaGVkLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtID0gbWF0Y2hlZFtqXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG0uc3RlcCA9PSBzdGVwIC0gMSAmJiBzdHlsZS5lcShtYXRjaGVkW2pdLnN0eWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kLnRvID0gZW5kO1xuICAgICAgICAgICAgICAgICAgICBmb3VuZC5zdGVwID0gc3RlcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZWQucHVzaCh7IHN0eWxlLCBmcm9tOiBNYXRoLm1heChwb3MsIGZyb20pLCB0bzogZW5kLCBzdGVwIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIG1hdGNoZWQuZm9yRWFjaChtID0+IHRyLnN0ZXAobmV3IFJlbW92ZU1hcmtTdGVwKG0uZnJvbSwgbS50bywgbS5zdHlsZSkpKTtcbn1cbmZ1bmN0aW9uIGNsZWFySW5jb21wYXRpYmxlKHRyLCBwb3MsIHBhcmVudFR5cGUsIG1hdGNoID0gcGFyZW50VHlwZS5jb250ZW50TWF0Y2gsIGNsZWFyTmV3bGluZXMgPSB0cnVlKSB7XG4gICAgbGV0IG5vZGUgPSB0ci5kb2Mubm9kZUF0KHBvcyk7XG4gICAgbGV0IHJlcGxTdGVwcyA9IFtdLCBjdXIgPSBwb3MgKyAxO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZENvdW50OyBpKyspIHtcbiAgICAgICAgbGV0IGNoaWxkID0gbm9kZS5jaGlsZChpKSwgZW5kID0gY3VyICsgY2hpbGQubm9kZVNpemU7XG4gICAgICAgIGxldCBhbGxvd2VkID0gbWF0Y2gubWF0Y2hUeXBlKGNoaWxkLnR5cGUpO1xuICAgICAgICBpZiAoIWFsbG93ZWQpIHtcbiAgICAgICAgICAgIHJlcGxTdGVwcy5wdXNoKG5ldyBSZXBsYWNlU3RlcChjdXIsIGVuZCwgU2xpY2UuZW1wdHkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1hdGNoID0gYWxsb3dlZDtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2hpbGQubWFya3MubGVuZ3RoOyBqKyspXG4gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRUeXBlLmFsbG93c01hcmtUeXBlKGNoaWxkLm1hcmtzW2pdLnR5cGUpKVxuICAgICAgICAgICAgICAgICAgICB0ci5zdGVwKG5ldyBSZW1vdmVNYXJrU3RlcChjdXIsIGVuZCwgY2hpbGQubWFya3Nbal0pKTtcbiAgICAgICAgICAgIGlmIChjbGVhck5ld2xpbmVzICYmIGNoaWxkLmlzVGV4dCAmJiBwYXJlbnRUeXBlLndoaXRlc3BhY2UgIT0gXCJwcmVcIikge1xuICAgICAgICAgICAgICAgIGxldCBtLCBuZXdsaW5lID0gL1xccj9cXG58XFxyL2csIHNsaWNlO1xuICAgICAgICAgICAgICAgIHdoaWxlIChtID0gbmV3bGluZS5leGVjKGNoaWxkLnRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2xpY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBzbGljZSA9IG5ldyBTbGljZShGcmFnbWVudC5mcm9tKHBhcmVudFR5cGUuc2NoZW1hLnRleHQoXCIgXCIsIHBhcmVudFR5cGUuYWxsb3dlZE1hcmtzKGNoaWxkLm1hcmtzKSkpLCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgcmVwbFN0ZXBzLnB1c2gobmV3IFJlcGxhY2VTdGVwKGN1ciArIG0uaW5kZXgsIGN1ciArIG0uaW5kZXggKyBtWzBdLmxlbmd0aCwgc2xpY2UpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VyID0gZW5kO1xuICAgIH1cbiAgICBpZiAoIW1hdGNoLnZhbGlkRW5kKSB7XG4gICAgICAgIGxldCBmaWxsID0gbWF0Y2guZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwgdHJ1ZSk7XG4gICAgICAgIHRyLnJlcGxhY2UoY3VyLCBjdXIsIG5ldyBTbGljZShmaWxsLCAwLCAwKSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSByZXBsU3RlcHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pXG4gICAgICAgIHRyLnN0ZXAocmVwbFN0ZXBzW2ldKTtcbn1cblxuZnVuY3Rpb24gY2FuQ3V0KG5vZGUsIHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gKHN0YXJ0ID09IDAgfHwgbm9kZS5jYW5SZXBsYWNlKHN0YXJ0LCBub2RlLmNoaWxkQ291bnQpKSAmJlxuICAgICAgICAoZW5kID09IG5vZGUuY2hpbGRDb3VudCB8fCBub2RlLmNhblJlcGxhY2UoMCwgZW5kKSk7XG59XG4vKipcblRyeSB0byBmaW5kIGEgdGFyZ2V0IGRlcHRoIHRvIHdoaWNoIHRoZSBjb250ZW50IGluIHRoZSBnaXZlbiByYW5nZVxuY2FuIGJlIGxpZnRlZC4gV2lsbCBub3QgZ28gYWNyb3NzXG5baXNvbGF0aW5nXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuTm9kZVNwZWMuaXNvbGF0aW5nKSBwYXJlbnQgbm9kZXMuXG4qL1xuZnVuY3Rpb24gbGlmdFRhcmdldChyYW5nZSkge1xuICAgIGxldCBwYXJlbnQgPSByYW5nZS5wYXJlbnQ7XG4gICAgbGV0IGNvbnRlbnQgPSBwYXJlbnQuY29udGVudC5jdXRCeUluZGV4KHJhbmdlLnN0YXJ0SW5kZXgsIHJhbmdlLmVuZEluZGV4KTtcbiAgICBmb3IgKGxldCBkZXB0aCA9IHJhbmdlLmRlcHRoLCBjb250ZW50QmVmb3JlID0gMCwgY29udGVudEFmdGVyID0gMDs7IC0tZGVwdGgpIHtcbiAgICAgICAgbGV0IG5vZGUgPSByYW5nZS4kZnJvbS5ub2RlKGRlcHRoKTtcbiAgICAgICAgbGV0IGluZGV4ID0gcmFuZ2UuJGZyb20uaW5kZXgoZGVwdGgpICsgY29udGVudEJlZm9yZSwgZW5kSW5kZXggPSByYW5nZS4kdG8uaW5kZXhBZnRlcihkZXB0aCkgLSBjb250ZW50QWZ0ZXI7XG4gICAgICAgIGlmIChkZXB0aCA8IHJhbmdlLmRlcHRoICYmIG5vZGUuY2FuUmVwbGFjZShpbmRleCwgZW5kSW5kZXgsIGNvbnRlbnQpKVxuICAgICAgICAgICAgcmV0dXJuIGRlcHRoO1xuICAgICAgICBpZiAoZGVwdGggPT0gMCB8fCBub2RlLnR5cGUuc3BlYy5pc29sYXRpbmcgfHwgIWNhbkN1dChub2RlLCBpbmRleCwgZW5kSW5kZXgpKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChpbmRleClcbiAgICAgICAgICAgIGNvbnRlbnRCZWZvcmUgPSAxO1xuICAgICAgICBpZiAoZW5kSW5kZXggPCBub2RlLmNoaWxkQ291bnQpXG4gICAgICAgICAgICBjb250ZW50QWZ0ZXIgPSAxO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGxpZnQodHIsIHJhbmdlLCB0YXJnZXQpIHtcbiAgICBsZXQgeyAkZnJvbSwgJHRvLCBkZXB0aCB9ID0gcmFuZ2U7XG4gICAgbGV0IGdhcFN0YXJ0ID0gJGZyb20uYmVmb3JlKGRlcHRoICsgMSksIGdhcEVuZCA9ICR0by5hZnRlcihkZXB0aCArIDEpO1xuICAgIGxldCBzdGFydCA9IGdhcFN0YXJ0LCBlbmQgPSBnYXBFbmQ7XG4gICAgbGV0IGJlZm9yZSA9IEZyYWdtZW50LmVtcHR5LCBvcGVuU3RhcnQgPSAwO1xuICAgIGZvciAobGV0IGQgPSBkZXB0aCwgc3BsaXR0aW5nID0gZmFsc2U7IGQgPiB0YXJnZXQ7IGQtLSlcbiAgICAgICAgaWYgKHNwbGl0dGluZyB8fCAkZnJvbS5pbmRleChkKSA+IDApIHtcbiAgICAgICAgICAgIHNwbGl0dGluZyA9IHRydWU7XG4gICAgICAgICAgICBiZWZvcmUgPSBGcmFnbWVudC5mcm9tKCRmcm9tLm5vZGUoZCkuY29weShiZWZvcmUpKTtcbiAgICAgICAgICAgIG9wZW5TdGFydCsrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RhcnQtLTtcbiAgICAgICAgfVxuICAgIGxldCBhZnRlciA9IEZyYWdtZW50LmVtcHR5LCBvcGVuRW5kID0gMDtcbiAgICBmb3IgKGxldCBkID0gZGVwdGgsIHNwbGl0dGluZyA9IGZhbHNlOyBkID4gdGFyZ2V0OyBkLS0pXG4gICAgICAgIGlmIChzcGxpdHRpbmcgfHwgJHRvLmFmdGVyKGQgKyAxKSA8ICR0by5lbmQoZCkpIHtcbiAgICAgICAgICAgIHNwbGl0dGluZyA9IHRydWU7XG4gICAgICAgICAgICBhZnRlciA9IEZyYWdtZW50LmZyb20oJHRvLm5vZGUoZCkuY29weShhZnRlcikpO1xuICAgICAgICAgICAgb3BlbkVuZCsrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZW5kKys7XG4gICAgICAgIH1cbiAgICB0ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcChzdGFydCwgZW5kLCBnYXBTdGFydCwgZ2FwRW5kLCBuZXcgU2xpY2UoYmVmb3JlLmFwcGVuZChhZnRlciksIG9wZW5TdGFydCwgb3BlbkVuZCksIGJlZm9yZS5zaXplIC0gb3BlblN0YXJ0LCB0cnVlKSk7XG59XG4vKipcblRyeSB0byBmaW5kIGEgdmFsaWQgd2F5IHRvIHdyYXAgdGhlIGNvbnRlbnQgaW4gdGhlIGdpdmVuIHJhbmdlIGluIGFcbm5vZGUgb2YgdGhlIGdpdmVuIHR5cGUuIE1heSBpbnRyb2R1Y2UgZXh0cmEgbm9kZXMgYXJvdW5kIGFuZCBpbnNpZGVcbnRoZSB3cmFwcGVyIG5vZGUsIGlmIG5lY2Vzc2FyeS4gUmV0dXJucyBudWxsIGlmIG5vIHZhbGlkIHdyYXBwaW5nXG5jb3VsZCBiZSBmb3VuZC4gV2hlbiBgaW5uZXJSYW5nZWAgaXMgZ2l2ZW4sIHRoYXQgcmFuZ2UncyBjb250ZW50IGlzXG51c2VkIGFzIHRoZSBjb250ZW50IHRvIGZpdCBpbnRvIHRoZSB3cmFwcGluZywgaW5zdGVhZCBvZiB0aGVcbmNvbnRlbnQgb2YgYHJhbmdlYC5cbiovXG5mdW5jdGlvbiBmaW5kV3JhcHBpbmcocmFuZ2UsIG5vZGVUeXBlLCBhdHRycyA9IG51bGwsIGlubmVyUmFuZ2UgPSByYW5nZSkge1xuICAgIGxldCBhcm91bmQgPSBmaW5kV3JhcHBpbmdPdXRzaWRlKHJhbmdlLCBub2RlVHlwZSk7XG4gICAgbGV0IGlubmVyID0gYXJvdW5kICYmIGZpbmRXcmFwcGluZ0luc2lkZShpbm5lclJhbmdlLCBub2RlVHlwZSk7XG4gICAgaWYgKCFpbm5lcilcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGFyb3VuZC5tYXAod2l0aEF0dHJzKVxuICAgICAgICAuY29uY2F0KHsgdHlwZTogbm9kZVR5cGUsIGF0dHJzIH0pLmNvbmNhdChpbm5lci5tYXAod2l0aEF0dHJzKSk7XG59XG5mdW5jdGlvbiB3aXRoQXR0cnModHlwZSkgeyByZXR1cm4geyB0eXBlLCBhdHRyczogbnVsbCB9OyB9XG5mdW5jdGlvbiBmaW5kV3JhcHBpbmdPdXRzaWRlKHJhbmdlLCB0eXBlKSB7XG4gICAgbGV0IHsgcGFyZW50LCBzdGFydEluZGV4LCBlbmRJbmRleCB9ID0gcmFuZ2U7XG4gICAgbGV0IGFyb3VuZCA9IHBhcmVudC5jb250ZW50TWF0Y2hBdChzdGFydEluZGV4KS5maW5kV3JhcHBpbmcodHlwZSk7XG4gICAgaWYgKCFhcm91bmQpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGxldCBvdXRlciA9IGFyb3VuZC5sZW5ndGggPyBhcm91bmRbMF0gOiB0eXBlO1xuICAgIHJldHVybiBwYXJlbnQuY2FuUmVwbGFjZVdpdGgoc3RhcnRJbmRleCwgZW5kSW5kZXgsIG91dGVyKSA/IGFyb3VuZCA6IG51bGw7XG59XG5mdW5jdGlvbiBmaW5kV3JhcHBpbmdJbnNpZGUocmFuZ2UsIHR5cGUpIHtcbiAgICBsZXQgeyBwYXJlbnQsIHN0YXJ0SW5kZXgsIGVuZEluZGV4IH0gPSByYW5nZTtcbiAgICBsZXQgaW5uZXIgPSBwYXJlbnQuY2hpbGQoc3RhcnRJbmRleCk7XG4gICAgbGV0IGluc2lkZSA9IHR5cGUuY29udGVudE1hdGNoLmZpbmRXcmFwcGluZyhpbm5lci50eXBlKTtcbiAgICBpZiAoIWluc2lkZSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgbGV0IGxhc3RUeXBlID0gaW5zaWRlLmxlbmd0aCA/IGluc2lkZVtpbnNpZGUubGVuZ3RoIC0gMV0gOiB0eXBlO1xuICAgIGxldCBpbm5lck1hdGNoID0gbGFzdFR5cGUuY29udGVudE1hdGNoO1xuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpbm5lck1hdGNoICYmIGkgPCBlbmRJbmRleDsgaSsrKVxuICAgICAgICBpbm5lck1hdGNoID0gaW5uZXJNYXRjaC5tYXRjaFR5cGUocGFyZW50LmNoaWxkKGkpLnR5cGUpO1xuICAgIGlmICghaW5uZXJNYXRjaCB8fCAhaW5uZXJNYXRjaC52YWxpZEVuZClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGluc2lkZTtcbn1cbmZ1bmN0aW9uIHdyYXAodHIsIHJhbmdlLCB3cmFwcGVycykge1xuICAgIGxldCBjb250ZW50ID0gRnJhZ21lbnQuZW1wdHk7XG4gICAgZm9yIChsZXQgaSA9IHdyYXBwZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmIChjb250ZW50LnNpemUpIHtcbiAgICAgICAgICAgIGxldCBtYXRjaCA9IHdyYXBwZXJzW2ldLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQoY29udGVudCk7XG4gICAgICAgICAgICBpZiAoIW1hdGNoIHx8ICFtYXRjaC52YWxpZEVuZClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIldyYXBwZXIgdHlwZSBnaXZlbiB0byBUcmFuc2Zvcm0ud3JhcCBkb2VzIG5vdCBmb3JtIHZhbGlkIGNvbnRlbnQgb2YgaXRzIHBhcmVudCB3cmFwcGVyXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRlbnQgPSBGcmFnbWVudC5mcm9tKHdyYXBwZXJzW2ldLnR5cGUuY3JlYXRlKHdyYXBwZXJzW2ldLmF0dHJzLCBjb250ZW50KSk7XG4gICAgfVxuICAgIGxldCBzdGFydCA9IHJhbmdlLnN0YXJ0LCBlbmQgPSByYW5nZS5lbmQ7XG4gICAgdHIuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAoc3RhcnQsIGVuZCwgc3RhcnQsIGVuZCwgbmV3IFNsaWNlKGNvbnRlbnQsIDAsIDApLCB3cmFwcGVycy5sZW5ndGgsIHRydWUpKTtcbn1cbmZ1bmN0aW9uIHNldEJsb2NrVHlwZSh0ciwgZnJvbSwgdG8sIHR5cGUsIGF0dHJzKSB7XG4gICAgaWYgKCF0eXBlLmlzVGV4dGJsb2NrKVxuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlR5cGUgZ2l2ZW4gdG8gc2V0QmxvY2tUeXBlIHNob3VsZCBiZSBhIHRleHRibG9ja1wiKTtcbiAgICBsZXQgbWFwRnJvbSA9IHRyLnN0ZXBzLmxlbmd0aDtcbiAgICB0ci5kb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgIGxldCBhdHRyc0hlcmUgPSB0eXBlb2YgYXR0cnMgPT0gXCJmdW5jdGlvblwiID8gYXR0cnMobm9kZSkgOiBhdHRycztcbiAgICAgICAgaWYgKG5vZGUuaXNUZXh0YmxvY2sgJiYgIW5vZGUuaGFzTWFya3VwKHR5cGUsIGF0dHJzSGVyZSkgJiZcbiAgICAgICAgICAgIGNhbkNoYW5nZVR5cGUodHIuZG9jLCB0ci5tYXBwaW5nLnNsaWNlKG1hcEZyb20pLm1hcChwb3MpLCB0eXBlKSkge1xuICAgICAgICAgICAgbGV0IGNvbnZlcnROZXdsaW5lcyA9IG51bGw7XG4gICAgICAgICAgICBpZiAodHlwZS5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJlID0gdHlwZS53aGl0ZXNwYWNlID09IFwicHJlXCIsIHN1cHBvcnRMaW5lYnJlYWsgPSAhIXR5cGUuY29udGVudE1hdGNoLm1hdGNoVHlwZSh0eXBlLnNjaGVtYS5saW5lYnJlYWtSZXBsYWNlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHByZSAmJiAhc3VwcG9ydExpbmVicmVhaylcbiAgICAgICAgICAgICAgICAgICAgY29udmVydE5ld2xpbmVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXByZSAmJiBzdXBwb3J0TGluZWJyZWFrKVxuICAgICAgICAgICAgICAgICAgICBjb252ZXJ0TmV3bGluZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRW5zdXJlIGFsbCBtYXJrdXAgdGhhdCBpc24ndCBhbGxvd2VkIGluIHRoZSBuZXcgbm9kZSB0eXBlIGlzIGNsZWFyZWRcbiAgICAgICAgICAgIGlmIChjb252ZXJ0TmV3bGluZXMgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgIHJlcGxhY2VMaW5lYnJlYWtzKHRyLCBub2RlLCBwb3MsIG1hcEZyb20pO1xuICAgICAgICAgICAgY2xlYXJJbmNvbXBhdGlibGUodHIsIHRyLm1hcHBpbmcuc2xpY2UobWFwRnJvbSkubWFwKHBvcywgMSksIHR5cGUsIHVuZGVmaW5lZCwgY29udmVydE5ld2xpbmVzID09PSBudWxsKTtcbiAgICAgICAgICAgIGxldCBtYXBwaW5nID0gdHIubWFwcGluZy5zbGljZShtYXBGcm9tKTtcbiAgICAgICAgICAgIGxldCBzdGFydE0gPSBtYXBwaW5nLm1hcChwb3MsIDEpLCBlbmRNID0gbWFwcGluZy5tYXAocG9zICsgbm9kZS5ub2RlU2l6ZSwgMSk7XG4gICAgICAgICAgICB0ci5zdGVwKG5ldyBSZXBsYWNlQXJvdW5kU3RlcChzdGFydE0sIGVuZE0sIHN0YXJ0TSArIDEsIGVuZE0gLSAxLCBuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbSh0eXBlLmNyZWF0ZShhdHRyc0hlcmUsIG51bGwsIG5vZGUubWFya3MpKSwgMCwgMCksIDEsIHRydWUpKTtcbiAgICAgICAgICAgIGlmIChjb252ZXJ0TmV3bGluZXMgPT09IHRydWUpXG4gICAgICAgICAgICAgICAgcmVwbGFjZU5ld2xpbmVzKHRyLCBub2RlLCBwb3MsIG1hcEZyb20pO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiByZXBsYWNlTmV3bGluZXModHIsIG5vZGUsIHBvcywgbWFwRnJvbSkge1xuICAgIG5vZGUuZm9yRWFjaCgoY2hpbGQsIG9mZnNldCkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQuaXNUZXh0KSB7XG4gICAgICAgICAgICBsZXQgbSwgbmV3bGluZSA9IC9cXHI/XFxufFxcci9nO1xuICAgICAgICAgICAgd2hpbGUgKG0gPSBuZXdsaW5lLmV4ZWMoY2hpbGQudGV4dCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSB0ci5tYXBwaW5nLnNsaWNlKG1hcEZyb20pLm1hcChwb3MgKyAxICsgb2Zmc2V0ICsgbS5pbmRleCk7XG4gICAgICAgICAgICAgICAgdHIucmVwbGFjZVdpdGgoc3RhcnQsIHN0YXJ0ICsgMSwgbm9kZS50eXBlLnNjaGVtYS5saW5lYnJlYWtSZXBsYWNlbWVudC5jcmVhdGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHJlcGxhY2VMaW5lYnJlYWtzKHRyLCBub2RlLCBwb3MsIG1hcEZyb20pIHtcbiAgICBub2RlLmZvckVhY2goKGNoaWxkLCBvZmZzZXQpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT0gY2hpbGQudHlwZS5zY2hlbWEubGluZWJyZWFrUmVwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IHRyLm1hcHBpbmcuc2xpY2UobWFwRnJvbSkubWFwKHBvcyArIDEgKyBvZmZzZXQpO1xuICAgICAgICAgICAgdHIucmVwbGFjZVdpdGgoc3RhcnQsIHN0YXJ0ICsgMSwgbm9kZS50eXBlLnNjaGVtYS50ZXh0KFwiXFxuXCIpKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY2FuQ2hhbmdlVHlwZShkb2MsIHBvcywgdHlwZSkge1xuICAgIGxldCAkcG9zID0gZG9jLnJlc29sdmUocG9zKSwgaW5kZXggPSAkcG9zLmluZGV4KCk7XG4gICAgcmV0dXJuICRwb3MucGFyZW50LmNhblJlcGxhY2VXaXRoKGluZGV4LCBpbmRleCArIDEsIHR5cGUpO1xufVxuLyoqXG5DaGFuZ2UgdGhlIHR5cGUsIGF0dHJpYnV0ZXMsIGFuZC9vciBtYXJrcyBvZiB0aGUgbm9kZSBhdCBgcG9zYC5cbldoZW4gYHR5cGVgIGlzbid0IGdpdmVuLCB0aGUgZXhpc3Rpbmcgbm9kZSB0eXBlIGlzIHByZXNlcnZlZCxcbiovXG5mdW5jdGlvbiBzZXROb2RlTWFya3VwKHRyLCBwb3MsIHR5cGUsIGF0dHJzLCBtYXJrcykge1xuICAgIGxldCBub2RlID0gdHIuZG9jLm5vZGVBdChwb3MpO1xuICAgIGlmICghbm9kZSlcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJObyBub2RlIGF0IGdpdmVuIHBvc2l0aW9uXCIpO1xuICAgIGlmICghdHlwZSlcbiAgICAgICAgdHlwZSA9IG5vZGUudHlwZTtcbiAgICBsZXQgbmV3Tm9kZSA9IHR5cGUuY3JlYXRlKGF0dHJzLCBudWxsLCBtYXJrcyB8fCBub2RlLm1hcmtzKTtcbiAgICBpZiAobm9kZS5pc0xlYWYpXG4gICAgICAgIHJldHVybiB0ci5yZXBsYWNlV2l0aChwb3MsIHBvcyArIG5vZGUubm9kZVNpemUsIG5ld05vZGUpO1xuICAgIGlmICghdHlwZS52YWxpZENvbnRlbnQobm9kZS5jb250ZW50KSlcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIGNvbnRlbnQgZm9yIG5vZGUgdHlwZSBcIiArIHR5cGUubmFtZSk7XG4gICAgdHIuc3RlcChuZXcgUmVwbGFjZUFyb3VuZFN0ZXAocG9zLCBwb3MgKyBub2RlLm5vZGVTaXplLCBwb3MgKyAxLCBwb3MgKyBub2RlLm5vZGVTaXplIC0gMSwgbmV3IFNsaWNlKEZyYWdtZW50LmZyb20obmV3Tm9kZSksIDAsIDApLCAxLCB0cnVlKSk7XG59XG4vKipcbkNoZWNrIHdoZXRoZXIgc3BsaXR0aW5nIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiBpcyBhbGxvd2VkLlxuKi9cbmZ1bmN0aW9uIGNhblNwbGl0KGRvYywgcG9zLCBkZXB0aCA9IDEsIHR5cGVzQWZ0ZXIpIHtcbiAgICBsZXQgJHBvcyA9IGRvYy5yZXNvbHZlKHBvcyksIGJhc2UgPSAkcG9zLmRlcHRoIC0gZGVwdGg7XG4gICAgbGV0IGlubmVyVHlwZSA9ICh0eXBlc0FmdGVyICYmIHR5cGVzQWZ0ZXJbdHlwZXNBZnRlci5sZW5ndGggLSAxXSkgfHwgJHBvcy5wYXJlbnQ7XG4gICAgaWYgKGJhc2UgPCAwIHx8ICRwb3MucGFyZW50LnR5cGUuc3BlYy5pc29sYXRpbmcgfHxcbiAgICAgICAgISRwb3MucGFyZW50LmNhblJlcGxhY2UoJHBvcy5pbmRleCgpLCAkcG9zLnBhcmVudC5jaGlsZENvdW50KSB8fFxuICAgICAgICAhaW5uZXJUeXBlLnR5cGUudmFsaWRDb250ZW50KCRwb3MucGFyZW50LmNvbnRlbnQuY3V0QnlJbmRleCgkcG9zLmluZGV4KCksICRwb3MucGFyZW50LmNoaWxkQ291bnQpKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAobGV0IGQgPSAkcG9zLmRlcHRoIC0gMSwgaSA9IGRlcHRoIC0gMjsgZCA+IGJhc2U7IGQtLSwgaS0tKSB7XG4gICAgICAgIGxldCBub2RlID0gJHBvcy5ub2RlKGQpLCBpbmRleCA9ICRwb3MuaW5kZXgoZCk7XG4gICAgICAgIGlmIChub2RlLnR5cGUuc3BlYy5pc29sYXRpbmcpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCByZXN0ID0gbm9kZS5jb250ZW50LmN1dEJ5SW5kZXgoaW5kZXgsIG5vZGUuY2hpbGRDb3VudCk7XG4gICAgICAgIGxldCBvdmVycmlkZUNoaWxkID0gdHlwZXNBZnRlciAmJiB0eXBlc0FmdGVyW2kgKyAxXTtcbiAgICAgICAgaWYgKG92ZXJyaWRlQ2hpbGQpXG4gICAgICAgICAgICByZXN0ID0gcmVzdC5yZXBsYWNlQ2hpbGQoMCwgb3ZlcnJpZGVDaGlsZC50eXBlLmNyZWF0ZShvdmVycmlkZUNoaWxkLmF0dHJzKSk7XG4gICAgICAgIGxldCBhZnRlciA9ICh0eXBlc0FmdGVyICYmIHR5cGVzQWZ0ZXJbaV0pIHx8IG5vZGU7XG4gICAgICAgIGlmICghbm9kZS5jYW5SZXBsYWNlKGluZGV4ICsgMSwgbm9kZS5jaGlsZENvdW50KSB8fCAhYWZ0ZXIudHlwZS52YWxpZENvbnRlbnQocmVzdCkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBpbmRleCA9ICRwb3MuaW5kZXhBZnRlcihiYXNlKTtcbiAgICBsZXQgYmFzZVR5cGUgPSB0eXBlc0FmdGVyICYmIHR5cGVzQWZ0ZXJbMF07XG4gICAgcmV0dXJuICRwb3Mubm9kZShiYXNlKS5jYW5SZXBsYWNlV2l0aChpbmRleCwgaW5kZXgsIGJhc2VUeXBlID8gYmFzZVR5cGUudHlwZSA6ICRwb3Mubm9kZShiYXNlICsgMSkudHlwZSk7XG59XG5mdW5jdGlvbiBzcGxpdCh0ciwgcG9zLCBkZXB0aCA9IDEsIHR5cGVzQWZ0ZXIpIHtcbiAgICBsZXQgJHBvcyA9IHRyLmRvYy5yZXNvbHZlKHBvcyksIGJlZm9yZSA9IEZyYWdtZW50LmVtcHR5LCBhZnRlciA9IEZyYWdtZW50LmVtcHR5O1xuICAgIGZvciAobGV0IGQgPSAkcG9zLmRlcHRoLCBlID0gJHBvcy5kZXB0aCAtIGRlcHRoLCBpID0gZGVwdGggLSAxOyBkID4gZTsgZC0tLCBpLS0pIHtcbiAgICAgICAgYmVmb3JlID0gRnJhZ21lbnQuZnJvbSgkcG9zLm5vZGUoZCkuY29weShiZWZvcmUpKTtcbiAgICAgICAgbGV0IHR5cGVBZnRlciA9IHR5cGVzQWZ0ZXIgJiYgdHlwZXNBZnRlcltpXTtcbiAgICAgICAgYWZ0ZXIgPSBGcmFnbWVudC5mcm9tKHR5cGVBZnRlciA/IHR5cGVBZnRlci50eXBlLmNyZWF0ZSh0eXBlQWZ0ZXIuYXR0cnMsIGFmdGVyKSA6ICRwb3Mubm9kZShkKS5jb3B5KGFmdGVyKSk7XG4gICAgfVxuICAgIHRyLnN0ZXAobmV3IFJlcGxhY2VTdGVwKHBvcywgcG9zLCBuZXcgU2xpY2UoYmVmb3JlLmFwcGVuZChhZnRlciksIGRlcHRoLCBkZXB0aCksIHRydWUpKTtcbn1cbi8qKlxuVGVzdCB3aGV0aGVyIHRoZSBibG9ja3MgYmVmb3JlIGFuZCBhZnRlciBhIGdpdmVuIHBvc2l0aW9uIGNhbiBiZVxuam9pbmVkLlxuKi9cbmZ1bmN0aW9uIGNhbkpvaW4oZG9jLCBwb3MpIHtcbiAgICBsZXQgJHBvcyA9IGRvYy5yZXNvbHZlKHBvcyksIGluZGV4ID0gJHBvcy5pbmRleCgpO1xuICAgIHJldHVybiBqb2luYWJsZSgkcG9zLm5vZGVCZWZvcmUsICRwb3Mubm9kZUFmdGVyKSAmJlxuICAgICAgICAkcG9zLnBhcmVudC5jYW5SZXBsYWNlKGluZGV4LCBpbmRleCArIDEpO1xufVxuZnVuY3Rpb24gY2FuQXBwZW5kV2l0aFN1YnN0aXR1dGVkTGluZWJyZWFrcyhhLCBiKSB7XG4gICAgaWYgKCFiLmNvbnRlbnQuc2l6ZSlcbiAgICAgICAgYS50eXBlLmNvbXBhdGlibGVDb250ZW50KGIudHlwZSk7XG4gICAgbGV0IG1hdGNoID0gYS5jb250ZW50TWF0Y2hBdChhLmNoaWxkQ291bnQpO1xuICAgIGxldCB7IGxpbmVicmVha1JlcGxhY2VtZW50IH0gPSBhLnR5cGUuc2NoZW1hO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYi5jaGlsZENvdW50OyBpKyspIHtcbiAgICAgICAgbGV0IGNoaWxkID0gYi5jaGlsZChpKTtcbiAgICAgICAgbGV0IHR5cGUgPSBjaGlsZC50eXBlID09IGxpbmVicmVha1JlcGxhY2VtZW50ID8gYS50eXBlLnNjaGVtYS5ub2Rlcy50ZXh0IDogY2hpbGQudHlwZTtcbiAgICAgICAgbWF0Y2ggPSBtYXRjaC5tYXRjaFR5cGUodHlwZSk7XG4gICAgICAgIGlmICghbWF0Y2gpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghYS50eXBlLmFsbG93c01hcmtzKGNoaWxkLm1hcmtzKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoLnZhbGlkRW5kO1xufVxuZnVuY3Rpb24gam9pbmFibGUoYSwgYikge1xuICAgIHJldHVybiAhIShhICYmIGIgJiYgIWEuaXNMZWFmICYmIGNhbkFwcGVuZFdpdGhTdWJzdGl0dXRlZExpbmVicmVha3MoYSwgYikpO1xufVxuLyoqXG5GaW5kIGFuIGFuY2VzdG9yIG9mIHRoZSBnaXZlbiBwb3NpdGlvbiB0aGF0IGNhbiBiZSBqb2luZWQgdG8gdGhlXG5ibG9jayBiZWZvcmUgKG9yIGFmdGVyIGlmIGBkaXJgIGlzIHBvc2l0aXZlKS4gUmV0dXJucyB0aGUgam9pbmFibGVcbnBvaW50LCBpZiBhbnkuXG4qL1xuZnVuY3Rpb24gam9pblBvaW50KGRvYywgcG9zLCBkaXIgPSAtMSkge1xuICAgIGxldCAkcG9zID0gZG9jLnJlc29sdmUocG9zKTtcbiAgICBmb3IgKGxldCBkID0gJHBvcy5kZXB0aDs7IGQtLSkge1xuICAgICAgICBsZXQgYmVmb3JlLCBhZnRlciwgaW5kZXggPSAkcG9zLmluZGV4KGQpO1xuICAgICAgICBpZiAoZCA9PSAkcG9zLmRlcHRoKSB7XG4gICAgICAgICAgICBiZWZvcmUgPSAkcG9zLm5vZGVCZWZvcmU7XG4gICAgICAgICAgICBhZnRlciA9ICRwb3Mubm9kZUFmdGVyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRpciA+IDApIHtcbiAgICAgICAgICAgIGJlZm9yZSA9ICRwb3Mubm9kZShkICsgMSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgYWZ0ZXIgPSAkcG9zLm5vZGUoZCkubWF5YmVDaGlsZChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBiZWZvcmUgPSAkcG9zLm5vZGUoZCkubWF5YmVDaGlsZChpbmRleCAtIDEpO1xuICAgICAgICAgICAgYWZ0ZXIgPSAkcG9zLm5vZGUoZCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiZWZvcmUgJiYgIWJlZm9yZS5pc1RleHRibG9jayAmJiBqb2luYWJsZShiZWZvcmUsIGFmdGVyKSAmJlxuICAgICAgICAgICAgJHBvcy5ub2RlKGQpLmNhblJlcGxhY2UoaW5kZXgsIGluZGV4ICsgMSkpXG4gICAgICAgICAgICByZXR1cm4gcG9zO1xuICAgICAgICBpZiAoZCA9PSAwKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIHBvcyA9IGRpciA8IDAgPyAkcG9zLmJlZm9yZShkKSA6ICRwb3MuYWZ0ZXIoZCk7XG4gICAgfVxufVxuZnVuY3Rpb24gam9pbih0ciwgcG9zLCBkZXB0aCkge1xuICAgIGxldCBjb252ZXJ0TmV3bGluZXMgPSBudWxsO1xuICAgIGxldCB7IGxpbmVicmVha1JlcGxhY2VtZW50IH0gPSB0ci5kb2MudHlwZS5zY2hlbWE7XG4gICAgbGV0ICRiZWZvcmUgPSB0ci5kb2MucmVzb2x2ZShwb3MgLSBkZXB0aCksIGJlZm9yZVR5cGUgPSAkYmVmb3JlLm5vZGUoKS50eXBlO1xuICAgIGlmIChsaW5lYnJlYWtSZXBsYWNlbWVudCAmJiBiZWZvcmVUeXBlLmlubGluZUNvbnRlbnQpIHtcbiAgICAgICAgbGV0IHByZSA9IGJlZm9yZVR5cGUud2hpdGVzcGFjZSA9PSBcInByZVwiO1xuICAgICAgICBsZXQgc3VwcG9ydExpbmVicmVhayA9ICEhYmVmb3JlVHlwZS5jb250ZW50TWF0Y2gubWF0Y2hUeXBlKGxpbmVicmVha1JlcGxhY2VtZW50KTtcbiAgICAgICAgaWYgKHByZSAmJiAhc3VwcG9ydExpbmVicmVhaylcbiAgICAgICAgICAgIGNvbnZlcnROZXdsaW5lcyA9IGZhbHNlO1xuICAgICAgICBlbHNlIGlmICghcHJlICYmIHN1cHBvcnRMaW5lYnJlYWspXG4gICAgICAgICAgICBjb252ZXJ0TmV3bGluZXMgPSB0cnVlO1xuICAgIH1cbiAgICBsZXQgbWFwRnJvbSA9IHRyLnN0ZXBzLmxlbmd0aDtcbiAgICBpZiAoY29udmVydE5ld2xpbmVzID09PSBmYWxzZSkge1xuICAgICAgICBsZXQgJGFmdGVyID0gdHIuZG9jLnJlc29sdmUocG9zICsgZGVwdGgpO1xuICAgICAgICByZXBsYWNlTGluZWJyZWFrcyh0ciwgJGFmdGVyLm5vZGUoKSwgJGFmdGVyLmJlZm9yZSgpLCBtYXBGcm9tKTtcbiAgICB9XG4gICAgaWYgKGJlZm9yZVR5cGUuaW5saW5lQ29udGVudClcbiAgICAgICAgY2xlYXJJbmNvbXBhdGlibGUodHIsIHBvcyArIGRlcHRoIC0gMSwgYmVmb3JlVHlwZSwgJGJlZm9yZS5ub2RlKCkuY29udGVudE1hdGNoQXQoJGJlZm9yZS5pbmRleCgpKSwgY29udmVydE5ld2xpbmVzID09IG51bGwpO1xuICAgIGxldCBtYXBwaW5nID0gdHIubWFwcGluZy5zbGljZShtYXBGcm9tKSwgc3RhcnQgPSBtYXBwaW5nLm1hcChwb3MgLSBkZXB0aCk7XG4gICAgdHIuc3RlcChuZXcgUmVwbGFjZVN0ZXAoc3RhcnQsIG1hcHBpbmcubWFwKHBvcyArIGRlcHRoLCAtMSksIFNsaWNlLmVtcHR5LCB0cnVlKSk7XG4gICAgaWYgKGNvbnZlcnROZXdsaW5lcyA9PT0gdHJ1ZSkge1xuICAgICAgICBsZXQgJGZ1bGwgPSB0ci5kb2MucmVzb2x2ZShzdGFydCk7XG4gICAgICAgIHJlcGxhY2VOZXdsaW5lcyh0ciwgJGZ1bGwubm9kZSgpLCAkZnVsbC5iZWZvcmUoKSwgdHIuc3RlcHMubGVuZ3RoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyO1xufVxuLyoqXG5UcnkgdG8gZmluZCBhIHBvaW50IHdoZXJlIGEgbm9kZSBvZiB0aGUgZ2l2ZW4gdHlwZSBjYW4gYmUgaW5zZXJ0ZWRcbm5lYXIgYHBvc2AsIGJ5IHNlYXJjaGluZyB1cCB0aGUgbm9kZSBoaWVyYXJjaHkgd2hlbiBgcG9zYCBpdHNlbGZcbmlzbid0IGEgdmFsaWQgcGxhY2UgYnV0IGlzIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgYSBub2RlLiBSZXR1cm5cbm51bGwgaWYgbm8gcG9zaXRpb24gd2FzIGZvdW5kLlxuKi9cbmZ1bmN0aW9uIGluc2VydFBvaW50KGRvYywgcG9zLCBub2RlVHlwZSkge1xuICAgIGxldCAkcG9zID0gZG9jLnJlc29sdmUocG9zKTtcbiAgICBpZiAoJHBvcy5wYXJlbnQuY2FuUmVwbGFjZVdpdGgoJHBvcy5pbmRleCgpLCAkcG9zLmluZGV4KCksIG5vZGVUeXBlKSlcbiAgICAgICAgcmV0dXJuIHBvcztcbiAgICBpZiAoJHBvcy5wYXJlbnRPZmZzZXQgPT0gMClcbiAgICAgICAgZm9yIChsZXQgZCA9ICRwb3MuZGVwdGggLSAxOyBkID49IDA7IGQtLSkge1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gJHBvcy5pbmRleChkKTtcbiAgICAgICAgICAgIGlmICgkcG9zLm5vZGUoZCkuY2FuUmVwbGFjZVdpdGgoaW5kZXgsIGluZGV4LCBub2RlVHlwZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuICRwb3MuYmVmb3JlKGQgKyAxKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICBpZiAoJHBvcy5wYXJlbnRPZmZzZXQgPT0gJHBvcy5wYXJlbnQuY29udGVudC5zaXplKVxuICAgICAgICBmb3IgKGxldCBkID0gJHBvcy5kZXB0aCAtIDE7IGQgPj0gMDsgZC0tKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSAkcG9zLmluZGV4QWZ0ZXIoZCk7XG4gICAgICAgICAgICBpZiAoJHBvcy5ub2RlKGQpLmNhblJlcGxhY2VXaXRoKGluZGV4LCBpbmRleCwgbm9kZVR5cGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiAkcG9zLmFmdGVyKGQgKyAxKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA8ICRwb3Mubm9kZShkKS5jaGlsZENvdW50KVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG4vKipcbkZpbmRzIGEgcG9zaXRpb24gYXQgb3IgYXJvdW5kIHRoZSBnaXZlbiBwb3NpdGlvbiB3aGVyZSB0aGUgZ2l2ZW5cbnNsaWNlIGNhbiBiZSBpbnNlcnRlZC4gV2lsbCBsb29rIGF0IHBhcmVudCBub2RlcycgbmVhcmVzdCBib3VuZGFyeVxuYW5kIHRyeSB0aGVyZSwgZXZlbiBpZiB0aGUgb3JpZ2luYWwgcG9zaXRpb24gd2Fzbid0IGRpcmVjdGx5IGF0IHRoZVxuc3RhcnQgb3IgZW5kIG9mIHRoYXQgbm9kZS4gUmV0dXJucyBudWxsIHdoZW4gbm8gcG9zaXRpb24gd2FzIGZvdW5kLlxuKi9cbmZ1bmN0aW9uIGRyb3BQb2ludChkb2MsIHBvcywgc2xpY2UpIHtcbiAgICBsZXQgJHBvcyA9IGRvYy5yZXNvbHZlKHBvcyk7XG4gICAgaWYgKCFzbGljZS5jb250ZW50LnNpemUpXG4gICAgICAgIHJldHVybiBwb3M7XG4gICAgbGV0IGNvbnRlbnQgPSBzbGljZS5jb250ZW50O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpY2Uub3BlblN0YXJ0OyBpKyspXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZW50LmZpcnN0Q2hpbGQuY29udGVudDtcbiAgICBmb3IgKGxldCBwYXNzID0gMTsgcGFzcyA8PSAoc2xpY2Uub3BlblN0YXJ0ID09IDAgJiYgc2xpY2Uuc2l6ZSA/IDIgOiAxKTsgcGFzcysrKSB7XG4gICAgICAgIGZvciAobGV0IGQgPSAkcG9zLmRlcHRoOyBkID49IDA7IGQtLSkge1xuICAgICAgICAgICAgbGV0IGJpYXMgPSBkID09ICRwb3MuZGVwdGggPyAwIDogJHBvcy5wb3MgPD0gKCRwb3Muc3RhcnQoZCArIDEpICsgJHBvcy5lbmQoZCArIDEpKSAvIDIgPyAtMSA6IDE7XG4gICAgICAgICAgICBsZXQgaW5zZXJ0UG9zID0gJHBvcy5pbmRleChkKSArIChiaWFzID4gMCA/IDEgOiAwKTtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSAkcG9zLm5vZGUoZCksIGZpdHMgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChwYXNzID09IDEpIHtcbiAgICAgICAgICAgICAgICBmaXRzID0gcGFyZW50LmNhblJlcGxhY2UoaW5zZXJ0UG9zLCBpbnNlcnRQb3MsIGNvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHdyYXBwaW5nID0gcGFyZW50LmNvbnRlbnRNYXRjaEF0KGluc2VydFBvcykuZmluZFdyYXBwaW5nKGNvbnRlbnQuZmlyc3RDaGlsZC50eXBlKTtcbiAgICAgICAgICAgICAgICBmaXRzID0gd3JhcHBpbmcgJiYgcGFyZW50LmNhblJlcGxhY2VXaXRoKGluc2VydFBvcywgaW5zZXJ0UG9zLCB3cmFwcGluZ1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZml0cylcbiAgICAgICAgICAgICAgICByZXR1cm4gYmlhcyA9PSAwID8gJHBvcy5wb3MgOiBiaWFzIDwgMCA/ICRwb3MuYmVmb3JlKGQgKyAxKSA6ICRwb3MuYWZ0ZXIoZCArIDEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG4vKipcbuKAmEZpdOKAmSBhIHNsaWNlIGludG8gYSBnaXZlbiBwb3NpdGlvbiBpbiB0aGUgZG9jdW1lbnQsIHByb2R1Y2luZyBhXG5bc3RlcF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3RyYW5zZm9ybS5TdGVwKSB0aGF0IGluc2VydHMgaXQuIFdpbGwgcmV0dXJuIG51bGwgaWZcbnRoZXJlJ3Mgbm8gbWVhbmluZ2Z1bCB3YXkgdG8gaW5zZXJ0IHRoZSBzbGljZSBoZXJlLCBvciBpbnNlcnRpbmcgaXRcbndvdWxkIGJlIGEgbm8tb3AgKGFuIGVtcHR5IHNsaWNlIG92ZXIgYW4gZW1wdHkgcmFuZ2UpLlxuKi9cbmZ1bmN0aW9uIHJlcGxhY2VTdGVwKGRvYywgZnJvbSwgdG8gPSBmcm9tLCBzbGljZSA9IFNsaWNlLmVtcHR5KSB7XG4gICAgaWYgKGZyb20gPT0gdG8gJiYgIXNsaWNlLnNpemUpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGxldCAkZnJvbSA9IGRvYy5yZXNvbHZlKGZyb20pLCAkdG8gPSBkb2MucmVzb2x2ZSh0byk7XG4gICAgLy8gT3B0aW1pemF0aW9uIC0tIGF2b2lkIHdvcmsgaWYgaXQncyBvYnZpb3VzIHRoYXQgaXQncyBub3QgbmVlZGVkLlxuICAgIGlmIChmaXRzVHJpdmlhbGx5KCRmcm9tLCAkdG8sIHNsaWNlKSlcbiAgICAgICAgcmV0dXJuIG5ldyBSZXBsYWNlU3RlcChmcm9tLCB0bywgc2xpY2UpO1xuICAgIHJldHVybiBuZXcgRml0dGVyKCRmcm9tLCAkdG8sIHNsaWNlKS5maXQoKTtcbn1cbmZ1bmN0aW9uIGZpdHNUcml2aWFsbHkoJGZyb20sICR0bywgc2xpY2UpIHtcbiAgICByZXR1cm4gIXNsaWNlLm9wZW5TdGFydCAmJiAhc2xpY2Uub3BlbkVuZCAmJiAkZnJvbS5zdGFydCgpID09ICR0by5zdGFydCgpICYmXG4gICAgICAgICRmcm9tLnBhcmVudC5jYW5SZXBsYWNlKCRmcm9tLmluZGV4KCksICR0by5pbmRleCgpLCBzbGljZS5jb250ZW50KTtcbn1cbi8vIEFsZ29yaXRobSBmb3IgJ3BsYWNpbmcnIHRoZSBlbGVtZW50cyBvZiBhIHNsaWNlIGludG8gYSBnYXA6XG4vL1xuLy8gV2UgY29uc2lkZXIgdGhlIGNvbnRlbnQgb2YgZWFjaCBub2RlIHRoYXQgaXMgb3BlbiB0byB0aGUgbGVmdCB0byBiZVxuLy8gaW5kZXBlbmRlbnRseSBwbGFjZWFibGUuIEkuZS4gaW4gPHAoXCJmb29cIiksIHAoXCJiYXJcIik+LCB3aGVuIHRoZVxuLy8gcGFyYWdyYXBoIG9uIHRoZSBsZWZ0IGlzIG9wZW4sIFwiZm9vXCIgY2FuIGJlIHBsYWNlZCAoc29tZXdoZXJlIG9uXG4vLyB0aGUgbGVmdCBzaWRlIG9mIHRoZSByZXBsYWNlbWVudCBnYXApIGluZGVwZW5kZW50bHkgZnJvbSBwKFwiYmFyXCIpLlxuLy9cbi8vIFRoaXMgY2xhc3MgdHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgcGxhY2VtZW50IHByb2dyZXNzIGluIHRoZVxuLy8gZm9sbG93aW5nIHByb3BlcnRpZXM6XG4vL1xuLy8gIC0gYGZyb250aWVyYCBob2xkcyBhIHN0YWNrIG9mIGB7dHlwZSwgbWF0Y2h9YCBvYmplY3RzIHRoYXRcbi8vICAgIHJlcHJlc2VudCB0aGUgb3BlbiBzaWRlIG9mIHRoZSByZXBsYWNlbWVudC4gSXQgc3RhcnRzIGF0XG4vLyAgICBgJGZyb21gLCB0aGVuIG1vdmVzIGZvcndhcmQgYXMgY29udGVudCBpcyBwbGFjZWQsIGFuZCBpcyBmaW5hbGx5XG4vLyAgICByZWNvbmNpbGVkIHdpdGggYCR0b2AuXG4vL1xuLy8gIC0gYHVucGxhY2VkYCBpcyBhIHNsaWNlIHRoYXQgcmVwcmVzZW50cyB0aGUgY29udGVudCB0aGF0IGhhc24ndFxuLy8gICAgYmVlbiBwbGFjZWQgeWV0LlxuLy9cbi8vICAtIGBwbGFjZWRgIGlzIGEgZnJhZ21lbnQgb2YgcGxhY2VkIGNvbnRlbnQuIEl0cyBvcGVuLXN0YXJ0IHZhbHVlXG4vLyAgICBpcyBpbXBsaWNpdCBpbiBgJGZyb21gLCBhbmQgaXRzIG9wZW4tZW5kIHZhbHVlIGluIGBmcm9udGllcmAuXG5jbGFzcyBGaXR0ZXIge1xuICAgIGNvbnN0cnVjdG9yKCRmcm9tLCAkdG8sIHVucGxhY2VkKSB7XG4gICAgICAgIHRoaXMuJGZyb20gPSAkZnJvbTtcbiAgICAgICAgdGhpcy4kdG8gPSAkdG87XG4gICAgICAgIHRoaXMudW5wbGFjZWQgPSB1bnBsYWNlZDtcbiAgICAgICAgdGhpcy5mcm9udGllciA9IFtdO1xuICAgICAgICB0aGlzLnBsYWNlZCA9IEZyYWdtZW50LmVtcHR5O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAkZnJvbS5kZXB0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbm9kZSA9ICRmcm9tLm5vZGUoaSk7XG4gICAgICAgICAgICB0aGlzLmZyb250aWVyLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IG5vZGUudHlwZSxcbiAgICAgICAgICAgICAgICBtYXRjaDogbm9kZS5jb250ZW50TWF0Y2hBdCgkZnJvbS5pbmRleEFmdGVyKGkpKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9ICRmcm9tLmRlcHRoOyBpID4gMDsgaS0tKVxuICAgICAgICAgICAgdGhpcy5wbGFjZWQgPSBGcmFnbWVudC5mcm9tKCRmcm9tLm5vZGUoaSkuY29weSh0aGlzLnBsYWNlZCkpO1xuICAgIH1cbiAgICBnZXQgZGVwdGgoKSB7IHJldHVybiB0aGlzLmZyb250aWVyLmxlbmd0aCAtIDE7IH1cbiAgICBmaXQoKSB7XG4gICAgICAgIC8vIEFzIGxvbmcgYXMgdGhlcmUncyB1bnBsYWNlZCBjb250ZW50LCB0cnkgdG8gcGxhY2Ugc29tZSBvZiBpdC5cbiAgICAgICAgLy8gSWYgdGhhdCBmYWlscywgZWl0aGVyIGluY3JlYXNlIHRoZSBvcGVuIHNjb3JlIG9mIHRoZSB1bnBsYWNlZFxuICAgICAgICAvLyBzbGljZSwgb3IgZHJvcCBub2RlcyBmcm9tIGl0LCBhbmQgdGhlbiB0cnkgYWdhaW4uXG4gICAgICAgIHdoaWxlICh0aGlzLnVucGxhY2VkLnNpemUpIHtcbiAgICAgICAgICAgIGxldCBmaXQgPSB0aGlzLmZpbmRGaXR0YWJsZSgpO1xuICAgICAgICAgICAgaWYgKGZpdClcbiAgICAgICAgICAgICAgICB0aGlzLnBsYWNlTm9kZXMoZml0KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Nb3JlKCkgfHwgdGhpcy5kcm9wTm9kZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdoZW4gdGhlcmUncyBpbmxpbmUgY29udGVudCBkaXJlY3RseSBhZnRlciB0aGUgZnJvbnRpZXIgX2FuZF9cbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgYHRoaXMuJHRvYCwgd2UgbXVzdCBnZW5lcmF0ZSBhIGBSZXBsYWNlQXJvdW5kYFxuICAgICAgICAvLyBzdGVwIHRoYXQgcHVsbHMgdGhhdCBjb250ZW50IGludG8gdGhlIG5vZGUgYWZ0ZXIgdGhlIGZyb250aWVyLlxuICAgICAgICAvLyBUaGF0IG1lYW5zIHRoZSBmaXR0aW5nIG11c3QgYmUgZG9uZSB0byB0aGUgZW5kIG9mIHRoZSB0ZXh0YmxvY2tcbiAgICAgICAgLy8gbm9kZSBhZnRlciBgdGhpcy4kdG9gLCBub3QgYHRoaXMuJHRvYCBpdHNlbGYuXG4gICAgICAgIGxldCBtb3ZlSW5saW5lID0gdGhpcy5tdXN0TW92ZUlubGluZSgpLCBwbGFjZWRTaXplID0gdGhpcy5wbGFjZWQuc2l6ZSAtIHRoaXMuZGVwdGggLSB0aGlzLiRmcm9tLmRlcHRoO1xuICAgICAgICBsZXQgJGZyb20gPSB0aGlzLiRmcm9tLCAkdG8gPSB0aGlzLmNsb3NlKG1vdmVJbmxpbmUgPCAwID8gdGhpcy4kdG8gOiAkZnJvbS5kb2MucmVzb2x2ZShtb3ZlSW5saW5lKSk7XG4gICAgICAgIGlmICghJHRvKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIC8vIElmIGNsb3NpbmcgdG8gYCR0b2Agc3VjY2VlZGVkLCBjcmVhdGUgYSBzdGVwXG4gICAgICAgIGxldCBjb250ZW50ID0gdGhpcy5wbGFjZWQsIG9wZW5TdGFydCA9ICRmcm9tLmRlcHRoLCBvcGVuRW5kID0gJHRvLmRlcHRoO1xuICAgICAgICB3aGlsZSAob3BlblN0YXJ0ICYmIG9wZW5FbmQgJiYgY29udGVudC5jaGlsZENvdW50ID09IDEpIHsgLy8gTm9ybWFsaXplIGJ5IGRyb3BwaW5nIG9wZW4gcGFyZW50IG5vZGVzXG4gICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5maXJzdENoaWxkLmNvbnRlbnQ7XG4gICAgICAgICAgICBvcGVuU3RhcnQtLTtcbiAgICAgICAgICAgIG9wZW5FbmQtLTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2xpY2UgPSBuZXcgU2xpY2UoY29udGVudCwgb3BlblN0YXJ0LCBvcGVuRW5kKTtcbiAgICAgICAgaWYgKG1vdmVJbmxpbmUgPiAtMSlcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVwbGFjZUFyb3VuZFN0ZXAoJGZyb20ucG9zLCBtb3ZlSW5saW5lLCB0aGlzLiR0by5wb3MsIHRoaXMuJHRvLmVuZCgpLCBzbGljZSwgcGxhY2VkU2l6ZSk7XG4gICAgICAgIGlmIChzbGljZS5zaXplIHx8ICRmcm9tLnBvcyAhPSB0aGlzLiR0by5wb3MpIC8vIERvbid0IGdlbmVyYXRlIG5vLW9wIHN0ZXBzXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlcGxhY2VTdGVwKCRmcm9tLnBvcywgJHRvLnBvcywgc2xpY2UpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gRmluZCBhIHBvc2l0aW9uIG9uIHRoZSBzdGFydCBzcGluZSBvZiBgdGhpcy51bnBsYWNlZGAgdGhhdCBoYXNcbiAgICAvLyBjb250ZW50IHRoYXQgY2FuIGJlIG1vdmVkIHNvbWV3aGVyZSBvbiB0aGUgZnJvbnRpZXIuIFJldHVybnMgdHdvXG4gICAgLy8gZGVwdGhzLCBvbmUgZm9yIHRoZSBzbGljZSBhbmQgb25lIGZvciB0aGUgZnJvbnRpZXIuXG4gICAgZmluZEZpdHRhYmxlKCkge1xuICAgICAgICBsZXQgc3RhcnREZXB0aCA9IHRoaXMudW5wbGFjZWQub3BlblN0YXJ0O1xuICAgICAgICBmb3IgKGxldCBjdXIgPSB0aGlzLnVucGxhY2VkLmNvbnRlbnQsIGQgPSAwLCBvcGVuRW5kID0gdGhpcy51bnBsYWNlZC5vcGVuRW5kOyBkIDwgc3RhcnREZXB0aDsgZCsrKSB7XG4gICAgICAgICAgICBsZXQgbm9kZSA9IGN1ci5maXJzdENoaWxkO1xuICAgICAgICAgICAgaWYgKGN1ci5jaGlsZENvdW50ID4gMSlcbiAgICAgICAgICAgICAgICBvcGVuRW5kID0gMDtcbiAgICAgICAgICAgIGlmIChub2RlLnR5cGUuc3BlYy5pc29sYXRpbmcgJiYgb3BlbkVuZCA8PSBkKSB7XG4gICAgICAgICAgICAgICAgc3RhcnREZXB0aCA9IGQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXIgPSBub2RlLmNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT25seSB0cnkgd3JhcHBpbmcgbm9kZXMgKHBhc3MgMikgYWZ0ZXIgZmluZGluZyBhIHBsYWNlIHdpdGhvdXRcbiAgICAgICAgLy8gd3JhcHBpbmcgZmFpbGVkLlxuICAgICAgICBmb3IgKGxldCBwYXNzID0gMTsgcGFzcyA8PSAyOyBwYXNzKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IHNsaWNlRGVwdGggPSBwYXNzID09IDEgPyBzdGFydERlcHRoIDogdGhpcy51bnBsYWNlZC5vcGVuU3RhcnQ7IHNsaWNlRGVwdGggPj0gMDsgc2xpY2VEZXB0aC0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZyYWdtZW50LCBwYXJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzbGljZURlcHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGNvbnRlbnRBdCh0aGlzLnVucGxhY2VkLmNvbnRlbnQsIHNsaWNlRGVwdGggLSAxKS5maXJzdENoaWxkO1xuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHBhcmVudC5jb250ZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0aGlzLnVucGxhY2VkLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZnJvbnRpZXJEZXB0aCA9IHRoaXMuZGVwdGg7IGZyb250aWVyRGVwdGggPj0gMDsgZnJvbnRpZXJEZXB0aC0tKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB7IHR5cGUsIG1hdGNoIH0gPSB0aGlzLmZyb250aWVyW2Zyb250aWVyRGVwdGhdLCB3cmFwLCBpbmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAvLyBJbiBwYXNzIDEsIGlmIHRoZSBuZXh0IG5vZGUgbWF0Y2hlcywgb3IgdGhlcmUgaXMgbm8gbmV4dFxuICAgICAgICAgICAgICAgICAgICAvLyBub2RlIGJ1dCB0aGUgcGFyZW50cyBsb29rIGNvbXBhdGlibGUsIHdlJ3ZlIGZvdW5kIGFcbiAgICAgICAgICAgICAgICAgICAgLy8gcGxhY2UuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXNzID09IDEgJiYgKGZpcnN0ID8gbWF0Y2gubWF0Y2hUeXBlKGZpcnN0LnR5cGUpIHx8IChpbmplY3QgPSBtYXRjaC5maWxsQmVmb3JlKEZyYWdtZW50LmZyb20oZmlyc3QpLCBmYWxzZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHBhcmVudCAmJiB0eXBlLmNvbXBhdGlibGVDb250ZW50KHBhcmVudC50eXBlKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBzbGljZURlcHRoLCBmcm9udGllckRlcHRoLCBwYXJlbnQsIGluamVjdCB9O1xuICAgICAgICAgICAgICAgICAgICAvLyBJbiBwYXNzIDIsIGxvb2sgZm9yIGEgc2V0IG9mIHdyYXBwaW5nIG5vZGVzIHRoYXQgbWFrZVxuICAgICAgICAgICAgICAgICAgICAvLyBgZmlyc3RgIGZpdCBoZXJlLlxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXNzID09IDIgJiYgZmlyc3QgJiYgKHdyYXAgPSBtYXRjaC5maW5kV3JhcHBpbmcoZmlyc3QudHlwZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc2xpY2VEZXB0aCwgZnJvbnRpZXJEZXB0aCwgcGFyZW50LCB3cmFwIH07XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGNvbnRpbnVlIGxvb2tpbmcgZnVydGhlciB1cCBpZiB0aGUgcGFyZW50IG5vZGVcbiAgICAgICAgICAgICAgICAgICAgLy8gd291bGQgZml0IGhlcmUuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgbWF0Y2gubWF0Y2hUeXBlKHBhcmVudC50eXBlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBvcGVuTW9yZSgpIHtcbiAgICAgICAgbGV0IHsgY29udGVudCwgb3BlblN0YXJ0LCBvcGVuRW5kIH0gPSB0aGlzLnVucGxhY2VkO1xuICAgICAgICBsZXQgaW5uZXIgPSBjb250ZW50QXQoY29udGVudCwgb3BlblN0YXJ0KTtcbiAgICAgICAgaWYgKCFpbm5lci5jaGlsZENvdW50IHx8IGlubmVyLmZpcnN0Q2hpbGQuaXNMZWFmKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLnVucGxhY2VkID0gbmV3IFNsaWNlKGNvbnRlbnQsIG9wZW5TdGFydCArIDEsIE1hdGgubWF4KG9wZW5FbmQsIGlubmVyLnNpemUgKyBvcGVuU3RhcnQgPj0gY29udGVudC5zaXplIC0gb3BlbkVuZCA/IG9wZW5TdGFydCArIDEgOiAwKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBkcm9wTm9kZSgpIHtcbiAgICAgICAgbGV0IHsgY29udGVudCwgb3BlblN0YXJ0LCBvcGVuRW5kIH0gPSB0aGlzLnVucGxhY2VkO1xuICAgICAgICBsZXQgaW5uZXIgPSBjb250ZW50QXQoY29udGVudCwgb3BlblN0YXJ0KTtcbiAgICAgICAgaWYgKGlubmVyLmNoaWxkQ291bnQgPD0gMSAmJiBvcGVuU3RhcnQgPiAwKSB7XG4gICAgICAgICAgICBsZXQgb3BlbkF0RW5kID0gY29udGVudC5zaXplIC0gb3BlblN0YXJ0IDw9IG9wZW5TdGFydCArIGlubmVyLnNpemU7XG4gICAgICAgICAgICB0aGlzLnVucGxhY2VkID0gbmV3IFNsaWNlKGRyb3BGcm9tRnJhZ21lbnQoY29udGVudCwgb3BlblN0YXJ0IC0gMSwgMSksIG9wZW5TdGFydCAtIDEsIG9wZW5BdEVuZCA/IG9wZW5TdGFydCAtIDEgOiBvcGVuRW5kKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5wbGFjZWQgPSBuZXcgU2xpY2UoZHJvcEZyb21GcmFnbWVudChjb250ZW50LCBvcGVuU3RhcnQsIDEpLCBvcGVuU3RhcnQsIG9wZW5FbmQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIE1vdmUgY29udGVudCBmcm9tIHRoZSB1bnBsYWNlZCBzbGljZSBhdCBgc2xpY2VEZXB0aGAgdG8gdGhlXG4gICAgLy8gZnJvbnRpZXIgbm9kZSBhdCBgZnJvbnRpZXJEZXB0aGAuIENsb3NlIHRoYXQgZnJvbnRpZXIgbm9kZSB3aGVuXG4gICAgLy8gYXBwbGljYWJsZS5cbiAgICBwbGFjZU5vZGVzKHsgc2xpY2VEZXB0aCwgZnJvbnRpZXJEZXB0aCwgcGFyZW50LCBpbmplY3QsIHdyYXAgfSkge1xuICAgICAgICB3aGlsZSAodGhpcy5kZXB0aCA+IGZyb250aWVyRGVwdGgpXG4gICAgICAgICAgICB0aGlzLmNsb3NlRnJvbnRpZXJOb2RlKCk7XG4gICAgICAgIGlmICh3cmFwKVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3cmFwLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgIHRoaXMub3BlbkZyb250aWVyTm9kZSh3cmFwW2ldKTtcbiAgICAgICAgbGV0IHNsaWNlID0gdGhpcy51bnBsYWNlZCwgZnJhZ21lbnQgPSBwYXJlbnQgPyBwYXJlbnQuY29udGVudCA6IHNsaWNlLmNvbnRlbnQ7XG4gICAgICAgIGxldCBvcGVuU3RhcnQgPSBzbGljZS5vcGVuU3RhcnQgLSBzbGljZURlcHRoO1xuICAgICAgICBsZXQgdGFrZW4gPSAwLCBhZGQgPSBbXTtcbiAgICAgICAgbGV0IHsgbWF0Y2gsIHR5cGUgfSA9IHRoaXMuZnJvbnRpZXJbZnJvbnRpZXJEZXB0aF07XG4gICAgICAgIGlmIChpbmplY3QpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5qZWN0LmNoaWxkQ291bnQ7IGkrKylcbiAgICAgICAgICAgICAgICBhZGQucHVzaChpbmplY3QuY2hpbGQoaSkpO1xuICAgICAgICAgICAgbWF0Y2ggPSBtYXRjaC5tYXRjaEZyYWdtZW50KGluamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29tcHV0ZXMgdGhlIGFtb3VudCBvZiAoZW5kKSBvcGVuIG5vZGVzIGF0IHRoZSBlbmQgb2YgdGhlXG4gICAgICAgIC8vIGZyYWdtZW50LiBXaGVuIDAsIHRoZSBwYXJlbnQgaXMgb3BlbiwgYnV0IG5vIG1vcmUuIFdoZW5cbiAgICAgICAgLy8gbmVnYXRpdmUsIG5vdGhpbmcgaXMgb3Blbi5cbiAgICAgICAgbGV0IG9wZW5FbmRDb3VudCA9IChmcmFnbWVudC5zaXplICsgc2xpY2VEZXB0aCkgLSAoc2xpY2UuY29udGVudC5zaXplIC0gc2xpY2Uub3BlbkVuZCk7XG4gICAgICAgIC8vIFNjYW4gb3ZlciB0aGUgZnJhZ21lbnQsIGZpdHRpbmcgYXMgbWFueSBjaGlsZCBub2RlcyBhc1xuICAgICAgICAvLyBwb3NzaWJsZS5cbiAgICAgICAgd2hpbGUgKHRha2VuIDwgZnJhZ21lbnQuY2hpbGRDb3VudCkge1xuICAgICAgICAgICAgbGV0IG5leHQgPSBmcmFnbWVudC5jaGlsZCh0YWtlbiksIG1hdGNoZXMgPSBtYXRjaC5tYXRjaFR5cGUobmV4dC50eXBlKTtcbiAgICAgICAgICAgIGlmICghbWF0Y2hlcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHRha2VuKys7XG4gICAgICAgICAgICBpZiAodGFrZW4gPiAxIHx8IG9wZW5TdGFydCA9PSAwIHx8IG5leHQuY29udGVudC5zaXplKSB7IC8vIERyb3AgZW1wdHkgb3BlbiBub2Rlc1xuICAgICAgICAgICAgICAgIG1hdGNoID0gbWF0Y2hlcztcbiAgICAgICAgICAgICAgICBhZGQucHVzaChjbG9zZU5vZGVTdGFydChuZXh0Lm1hcmsodHlwZS5hbGxvd2VkTWFya3MobmV4dC5tYXJrcykpLCB0YWtlbiA9PSAxID8gb3BlblN0YXJ0IDogMCwgdGFrZW4gPT0gZnJhZ21lbnQuY2hpbGRDb3VudCA/IG9wZW5FbmRDb3VudCA6IC0xKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRvRW5kID0gdGFrZW4gPT0gZnJhZ21lbnQuY2hpbGRDb3VudDtcbiAgICAgICAgaWYgKCF0b0VuZClcbiAgICAgICAgICAgIG9wZW5FbmRDb3VudCA9IC0xO1xuICAgICAgICB0aGlzLnBsYWNlZCA9IGFkZFRvRnJhZ21lbnQodGhpcy5wbGFjZWQsIGZyb250aWVyRGVwdGgsIEZyYWdtZW50LmZyb20oYWRkKSk7XG4gICAgICAgIHRoaXMuZnJvbnRpZXJbZnJvbnRpZXJEZXB0aF0ubWF0Y2ggPSBtYXRjaDtcbiAgICAgICAgLy8gSWYgdGhlIHBhcmVudCB0eXBlcyBtYXRjaCwgYW5kIHRoZSBlbnRpcmUgbm9kZSB3YXMgbW92ZWQsIGFuZFxuICAgICAgICAvLyBpdCdzIG5vdCBvcGVuLCBjbG9zZSB0aGlzIGZyb250aWVyIG5vZGUgcmlnaHQgYXdheS5cbiAgICAgICAgaWYgKHRvRW5kICYmIG9wZW5FbmRDb3VudCA8IDAgJiYgcGFyZW50ICYmIHBhcmVudC50eXBlID09IHRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF0udHlwZSAmJiB0aGlzLmZyb250aWVyLmxlbmd0aCA+IDEpXG4gICAgICAgICAgICB0aGlzLmNsb3NlRnJvbnRpZXJOb2RlKCk7XG4gICAgICAgIC8vIEFkZCBuZXcgZnJvbnRpZXIgbm9kZXMgZm9yIGFueSBvcGVuIG5vZGVzIGF0IHRoZSBlbmQuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBjdXIgPSBmcmFnbWVudDsgaSA8IG9wZW5FbmRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbm9kZSA9IGN1ci5sYXN0Q2hpbGQ7XG4gICAgICAgICAgICB0aGlzLmZyb250aWVyLnB1c2goeyB0eXBlOiBub2RlLnR5cGUsIG1hdGNoOiBub2RlLmNvbnRlbnRNYXRjaEF0KG5vZGUuY2hpbGRDb3VudCkgfSk7XG4gICAgICAgICAgICBjdXIgPSBub2RlLmNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVXBkYXRlIGB0aGlzLnVucGxhY2VkYC4gRHJvcCB0aGUgZW50aXJlIG5vZGUgZnJvbSB3aGljaCB3ZVxuICAgICAgICAvLyBwbGFjZWQgaXQgd2UgZ290IHRvIGl0cyBlbmQsIG90aGVyd2lzZSBqdXN0IGRyb3AgdGhlIHBsYWNlZFxuICAgICAgICAvLyBub2Rlcy5cbiAgICAgICAgdGhpcy51bnBsYWNlZCA9ICF0b0VuZCA/IG5ldyBTbGljZShkcm9wRnJvbUZyYWdtZW50KHNsaWNlLmNvbnRlbnQsIHNsaWNlRGVwdGgsIHRha2VuKSwgc2xpY2Uub3BlblN0YXJ0LCBzbGljZS5vcGVuRW5kKVxuICAgICAgICAgICAgOiBzbGljZURlcHRoID09IDAgPyBTbGljZS5lbXB0eVxuICAgICAgICAgICAgICAgIDogbmV3IFNsaWNlKGRyb3BGcm9tRnJhZ21lbnQoc2xpY2UuY29udGVudCwgc2xpY2VEZXB0aCAtIDEsIDEpLCBzbGljZURlcHRoIC0gMSwgb3BlbkVuZENvdW50IDwgMCA/IHNsaWNlLm9wZW5FbmQgOiBzbGljZURlcHRoIC0gMSk7XG4gICAgfVxuICAgIG11c3RNb3ZlSW5saW5lKCkge1xuICAgICAgICBpZiAoIXRoaXMuJHRvLnBhcmVudC5pc1RleHRibG9jaylcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgbGV0IHRvcCA9IHRoaXMuZnJvbnRpZXJbdGhpcy5kZXB0aF0sIGxldmVsO1xuICAgICAgICBpZiAoIXRvcC50eXBlLmlzVGV4dGJsb2NrIHx8ICFjb250ZW50QWZ0ZXJGaXRzKHRoaXMuJHRvLCB0aGlzLiR0by5kZXB0aCwgdG9wLnR5cGUsIHRvcC5tYXRjaCwgZmFsc2UpIHx8XG4gICAgICAgICAgICAodGhpcy4kdG8uZGVwdGggPT0gdGhpcy5kZXB0aCAmJiAobGV2ZWwgPSB0aGlzLmZpbmRDbG9zZUxldmVsKHRoaXMuJHRvKSkgJiYgbGV2ZWwuZGVwdGggPT0gdGhpcy5kZXB0aCkpXG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIGxldCB7IGRlcHRoIH0gPSB0aGlzLiR0bywgYWZ0ZXIgPSB0aGlzLiR0by5hZnRlcihkZXB0aCk7XG4gICAgICAgIHdoaWxlIChkZXB0aCA+IDEgJiYgYWZ0ZXIgPT0gdGhpcy4kdG8uZW5kKC0tZGVwdGgpKVxuICAgICAgICAgICAgKythZnRlcjtcbiAgICAgICAgcmV0dXJuIGFmdGVyO1xuICAgIH1cbiAgICBmaW5kQ2xvc2VMZXZlbCgkdG8pIHtcbiAgICAgICAgc2NhbjogZm9yIChsZXQgaSA9IE1hdGgubWluKHRoaXMuZGVwdGgsICR0by5kZXB0aCk7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgeyBtYXRjaCwgdHlwZSB9ID0gdGhpcy5mcm9udGllcltpXTtcbiAgICAgICAgICAgIGxldCBkcm9wSW5uZXIgPSBpIDwgJHRvLmRlcHRoICYmICR0by5lbmQoaSArIDEpID09ICR0by5wb3MgKyAoJHRvLmRlcHRoIC0gKGkgKyAxKSk7XG4gICAgICAgICAgICBsZXQgZml0ID0gY29udGVudEFmdGVyRml0cygkdG8sIGksIHR5cGUsIG1hdGNoLCBkcm9wSW5uZXIpO1xuICAgICAgICAgICAgaWYgKCFmaXQpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gaSAtIDE7IGQgPj0gMDsgZC0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IHsgbWF0Y2gsIHR5cGUgfSA9IHRoaXMuZnJvbnRpZXJbZF07XG4gICAgICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBjb250ZW50QWZ0ZXJGaXRzKCR0bywgZCwgdHlwZSwgbWF0Y2gsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmNoaWxkQ291bnQpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHNjYW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyBkZXB0aDogaSwgZml0LCBtb3ZlOiBkcm9wSW5uZXIgPyAkdG8uZG9jLnJlc29sdmUoJHRvLmFmdGVyKGkgKyAxKSkgOiAkdG8gfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjbG9zZSgkdG8pIHtcbiAgICAgICAgbGV0IGNsb3NlID0gdGhpcy5maW5kQ2xvc2VMZXZlbCgkdG8pO1xuICAgICAgICBpZiAoIWNsb3NlKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHdoaWxlICh0aGlzLmRlcHRoID4gY2xvc2UuZGVwdGgpXG4gICAgICAgICAgICB0aGlzLmNsb3NlRnJvbnRpZXJOb2RlKCk7XG4gICAgICAgIGlmIChjbG9zZS5maXQuY2hpbGRDb3VudClcbiAgICAgICAgICAgIHRoaXMucGxhY2VkID0gYWRkVG9GcmFnbWVudCh0aGlzLnBsYWNlZCwgY2xvc2UuZGVwdGgsIGNsb3NlLmZpdCk7XG4gICAgICAgICR0byA9IGNsb3NlLm1vdmU7XG4gICAgICAgIGZvciAobGV0IGQgPSBjbG9zZS5kZXB0aCArIDE7IGQgPD0gJHRvLmRlcHRoOyBkKyspIHtcbiAgICAgICAgICAgIGxldCBub2RlID0gJHRvLm5vZGUoZCksIGFkZCA9IG5vZGUudHlwZS5jb250ZW50TWF0Y2guZmlsbEJlZm9yZShub2RlLmNvbnRlbnQsIHRydWUsICR0by5pbmRleChkKSk7XG4gICAgICAgICAgICB0aGlzLm9wZW5Gcm9udGllck5vZGUobm9kZS50eXBlLCBub2RlLmF0dHJzLCBhZGQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAkdG87XG4gICAgfVxuICAgIG9wZW5Gcm9udGllck5vZGUodHlwZSwgYXR0cnMgPSBudWxsLCBjb250ZW50KSB7XG4gICAgICAgIGxldCB0b3AgPSB0aGlzLmZyb250aWVyW3RoaXMuZGVwdGhdO1xuICAgICAgICB0b3AubWF0Y2ggPSB0b3AubWF0Y2gubWF0Y2hUeXBlKHR5cGUpO1xuICAgICAgICB0aGlzLnBsYWNlZCA9IGFkZFRvRnJhZ21lbnQodGhpcy5wbGFjZWQsIHRoaXMuZGVwdGgsIEZyYWdtZW50LmZyb20odHlwZS5jcmVhdGUoYXR0cnMsIGNvbnRlbnQpKSk7XG4gICAgICAgIHRoaXMuZnJvbnRpZXIucHVzaCh7IHR5cGUsIG1hdGNoOiB0eXBlLmNvbnRlbnRNYXRjaCB9KTtcbiAgICB9XG4gICAgY2xvc2VGcm9udGllck5vZGUoKSB7XG4gICAgICAgIGxldCBvcGVuID0gdGhpcy5mcm9udGllci5wb3AoKTtcbiAgICAgICAgbGV0IGFkZCA9IG9wZW4ubWF0Y2guZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwgdHJ1ZSk7XG4gICAgICAgIGlmIChhZGQuY2hpbGRDb3VudClcbiAgICAgICAgICAgIHRoaXMucGxhY2VkID0gYWRkVG9GcmFnbWVudCh0aGlzLnBsYWNlZCwgdGhpcy5mcm9udGllci5sZW5ndGgsIGFkZCk7XG4gICAgfVxufVxuZnVuY3Rpb24gZHJvcEZyb21GcmFnbWVudChmcmFnbWVudCwgZGVwdGgsIGNvdW50KSB7XG4gICAgaWYgKGRlcHRoID09IDApXG4gICAgICAgIHJldHVybiBmcmFnbWVudC5jdXRCeUluZGV4KGNvdW50LCBmcmFnbWVudC5jaGlsZENvdW50KTtcbiAgICByZXR1cm4gZnJhZ21lbnQucmVwbGFjZUNoaWxkKDAsIGZyYWdtZW50LmZpcnN0Q2hpbGQuY29weShkcm9wRnJvbUZyYWdtZW50KGZyYWdtZW50LmZpcnN0Q2hpbGQuY29udGVudCwgZGVwdGggLSAxLCBjb3VudCkpKTtcbn1cbmZ1bmN0aW9uIGFkZFRvRnJhZ21lbnQoZnJhZ21lbnQsIGRlcHRoLCBjb250ZW50KSB7XG4gICAgaWYgKGRlcHRoID09IDApXG4gICAgICAgIHJldHVybiBmcmFnbWVudC5hcHBlbmQoY29udGVudCk7XG4gICAgcmV0dXJuIGZyYWdtZW50LnJlcGxhY2VDaGlsZChmcmFnbWVudC5jaGlsZENvdW50IC0gMSwgZnJhZ21lbnQubGFzdENoaWxkLmNvcHkoYWRkVG9GcmFnbWVudChmcmFnbWVudC5sYXN0Q2hpbGQuY29udGVudCwgZGVwdGggLSAxLCBjb250ZW50KSkpO1xufVxuZnVuY3Rpb24gY29udGVudEF0KGZyYWdtZW50LCBkZXB0aCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVwdGg7IGkrKylcbiAgICAgICAgZnJhZ21lbnQgPSBmcmFnbWVudC5maXJzdENoaWxkLmNvbnRlbnQ7XG4gICAgcmV0dXJuIGZyYWdtZW50O1xufVxuZnVuY3Rpb24gY2xvc2VOb2RlU3RhcnQobm9kZSwgb3BlblN0YXJ0LCBvcGVuRW5kKSB7XG4gICAgaWYgKG9wZW5TdGFydCA8PSAwKVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICBsZXQgZnJhZyA9IG5vZGUuY29udGVudDtcbiAgICBpZiAob3BlblN0YXJ0ID4gMSlcbiAgICAgICAgZnJhZyA9IGZyYWcucmVwbGFjZUNoaWxkKDAsIGNsb3NlTm9kZVN0YXJ0KGZyYWcuZmlyc3RDaGlsZCwgb3BlblN0YXJ0IC0gMSwgZnJhZy5jaGlsZENvdW50ID09IDEgPyBvcGVuRW5kIC0gMSA6IDApKTtcbiAgICBpZiAob3BlblN0YXJ0ID4gMCkge1xuICAgICAgICBmcmFnID0gbm9kZS50eXBlLmNvbnRlbnRNYXRjaC5maWxsQmVmb3JlKGZyYWcpLmFwcGVuZChmcmFnKTtcbiAgICAgICAgaWYgKG9wZW5FbmQgPD0gMClcbiAgICAgICAgICAgIGZyYWcgPSBmcmFnLmFwcGVuZChub2RlLnR5cGUuY29udGVudE1hdGNoLm1hdGNoRnJhZ21lbnQoZnJhZykuZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwgdHJ1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZS5jb3B5KGZyYWcpO1xufVxuZnVuY3Rpb24gY29udGVudEFmdGVyRml0cygkdG8sIGRlcHRoLCB0eXBlLCBtYXRjaCwgb3Blbikge1xuICAgIGxldCBub2RlID0gJHRvLm5vZGUoZGVwdGgpLCBpbmRleCA9IG9wZW4gPyAkdG8uaW5kZXhBZnRlcihkZXB0aCkgOiAkdG8uaW5kZXgoZGVwdGgpO1xuICAgIGlmIChpbmRleCA9PSBub2RlLmNoaWxkQ291bnQgJiYgIXR5cGUuY29tcGF0aWJsZUNvbnRlbnQobm9kZS50eXBlKSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgbGV0IGZpdCA9IG1hdGNoLmZpbGxCZWZvcmUobm9kZS5jb250ZW50LCB0cnVlLCBpbmRleCk7XG4gICAgcmV0dXJuIGZpdCAmJiAhaW52YWxpZE1hcmtzKHR5cGUsIG5vZGUuY29udGVudCwgaW5kZXgpID8gZml0IDogbnVsbDtcbn1cbmZ1bmN0aW9uIGludmFsaWRNYXJrcyh0eXBlLCBmcmFnbWVudCwgc3RhcnQpIHtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBmcmFnbWVudC5jaGlsZENvdW50OyBpKyspXG4gICAgICAgIGlmICghdHlwZS5hbGxvd3NNYXJrcyhmcmFnbWVudC5jaGlsZChpKS5tYXJrcykpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBkZWZpbmVzQ29udGVudCh0eXBlKSB7XG4gICAgcmV0dXJuIHR5cGUuc3BlYy5kZWZpbmluZyB8fCB0eXBlLnNwZWMuZGVmaW5pbmdGb3JDb250ZW50O1xufVxuZnVuY3Rpb24gcmVwbGFjZVJhbmdlKHRyLCBmcm9tLCB0bywgc2xpY2UpIHtcbiAgICBpZiAoIXNsaWNlLnNpemUpXG4gICAgICAgIHJldHVybiB0ci5kZWxldGVSYW5nZShmcm9tLCB0byk7XG4gICAgbGV0ICRmcm9tID0gdHIuZG9jLnJlc29sdmUoZnJvbSksICR0byA9IHRyLmRvYy5yZXNvbHZlKHRvKTtcbiAgICBpZiAoZml0c1RyaXZpYWxseSgkZnJvbSwgJHRvLCBzbGljZSkpXG4gICAgICAgIHJldHVybiB0ci5zdGVwKG5ldyBSZXBsYWNlU3RlcChmcm9tLCB0bywgc2xpY2UpKTtcbiAgICBsZXQgdGFyZ2V0RGVwdGhzID0gY292ZXJlZERlcHRocygkZnJvbSwgJHRvKTtcbiAgICAvLyBDYW4ndCByZXBsYWNlIHRoZSB3aG9sZSBkb2N1bWVudCwgc28gcmVtb3ZlIDAgaWYgaXQncyBwcmVzZW50XG4gICAgaWYgKHRhcmdldERlcHRoc1t0YXJnZXREZXB0aHMubGVuZ3RoIC0gMV0gPT0gMClcbiAgICAgICAgdGFyZ2V0RGVwdGhzLnBvcCgpO1xuICAgIC8vIE5lZ2F0aXZlIG51bWJlcnMgcmVwcmVzZW50IG5vdCBleHBhbnNpb24gb3ZlciB0aGUgd2hvbGUgbm9kZSBhdFxuICAgIC8vIHRoYXQgZGVwdGgsIGJ1dCByZXBsYWNpbmcgZnJvbSAkZnJvbS5iZWZvcmUoLUQpIHRvICR0by5wb3MuXG4gICAgbGV0IHByZWZlcnJlZFRhcmdldCA9IC0oJGZyb20uZGVwdGggKyAxKTtcbiAgICB0YXJnZXREZXB0aHMudW5zaGlmdChwcmVmZXJyZWRUYXJnZXQpO1xuICAgIC8vIFRoaXMgbG9vcCBwaWNrcyBhIHByZWZlcnJlZCB0YXJnZXQgZGVwdGgsIGlmIG9uZSBvZiB0aGUgY292ZXJpbmdcbiAgICAvLyBkZXB0aHMgaXMgbm90IG91dHNpZGUgb2YgYSBkZWZpbmluZyBub2RlLCBhbmQgYWRkcyBuZWdhdGl2ZVxuICAgIC8vIGRlcHRocyBmb3IgYW55IGRlcHRoIHRoYXQgaGFzICRmcm9tIGF0IGl0cyBzdGFydCBhbmQgZG9lcyBub3RcbiAgICAvLyBjcm9zcyBhIGRlZmluaW5nIG5vZGUuXG4gICAgZm9yIChsZXQgZCA9ICRmcm9tLmRlcHRoLCBwb3MgPSAkZnJvbS5wb3MgLSAxOyBkID4gMDsgZC0tLCBwb3MtLSkge1xuICAgICAgICBsZXQgc3BlYyA9ICRmcm9tLm5vZGUoZCkudHlwZS5zcGVjO1xuICAgICAgICBpZiAoc3BlYy5kZWZpbmluZyB8fCBzcGVjLmRlZmluaW5nQXNDb250ZXh0IHx8IHNwZWMuaXNvbGF0aW5nKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmICh0YXJnZXREZXB0aHMuaW5kZXhPZihkKSA+IC0xKVxuICAgICAgICAgICAgcHJlZmVycmVkVGFyZ2V0ID0gZDtcbiAgICAgICAgZWxzZSBpZiAoJGZyb20uYmVmb3JlKGQpID09IHBvcylcbiAgICAgICAgICAgIHRhcmdldERlcHRocy5zcGxpY2UoMSwgMCwgLWQpO1xuICAgIH1cbiAgICAvLyBUcnkgdG8gZml0IGVhY2ggcG9zc2libGUgZGVwdGggb2YgdGhlIHNsaWNlIGludG8gZWFjaCBwb3NzaWJsZVxuICAgIC8vIHRhcmdldCBkZXB0aCwgc3RhcnRpbmcgd2l0aCB0aGUgcHJlZmVycmVkIGRlcHRocy5cbiAgICBsZXQgcHJlZmVycmVkVGFyZ2V0SW5kZXggPSB0YXJnZXREZXB0aHMuaW5kZXhPZihwcmVmZXJyZWRUYXJnZXQpO1xuICAgIGxldCBsZWZ0Tm9kZXMgPSBbXSwgcHJlZmVycmVkRGVwdGggPSBzbGljZS5vcGVuU3RhcnQ7XG4gICAgZm9yIChsZXQgY29udGVudCA9IHNsaWNlLmNvbnRlbnQsIGkgPSAwOzsgaSsrKSB7XG4gICAgICAgIGxldCBub2RlID0gY29udGVudC5maXJzdENoaWxkO1xuICAgICAgICBsZWZ0Tm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgaWYgKGkgPT0gc2xpY2Uub3BlblN0YXJ0KVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNvbnRlbnQgPSBub2RlLmNvbnRlbnQ7XG4gICAgfVxuICAgIC8vIEJhY2sgdXAgcHJlZmVycmVkRGVwdGggdG8gY292ZXIgZGVmaW5pbmcgdGV4dGJsb2NrcyBkaXJlY3RseVxuICAgIC8vIGFib3ZlIGl0LCBwb3NzaWJseSBza2lwcGluZyBhIG5vbi1kZWZpbmluZyB0ZXh0YmxvY2suXG4gICAgZm9yIChsZXQgZCA9IHByZWZlcnJlZERlcHRoIC0gMTsgZCA+PSAwOyBkLS0pIHtcbiAgICAgICAgbGV0IGxlZnROb2RlID0gbGVmdE5vZGVzW2RdLCBkZWYgPSBkZWZpbmVzQ29udGVudChsZWZ0Tm9kZS50eXBlKTtcbiAgICAgICAgaWYgKGRlZiAmJiAhbGVmdE5vZGUuc2FtZU1hcmt1cCgkZnJvbS5ub2RlKE1hdGguYWJzKHByZWZlcnJlZFRhcmdldCkgLSAxKSkpXG4gICAgICAgICAgICBwcmVmZXJyZWREZXB0aCA9IGQ7XG4gICAgICAgIGVsc2UgaWYgKGRlZiB8fCAhbGVmdE5vZGUudHlwZS5pc1RleHRibG9jaylcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmb3IgKGxldCBqID0gc2xpY2Uub3BlblN0YXJ0OyBqID49IDA7IGotLSkge1xuICAgICAgICBsZXQgb3BlbkRlcHRoID0gKGogKyBwcmVmZXJyZWREZXB0aCArIDEpICUgKHNsaWNlLm9wZW5TdGFydCArIDEpO1xuICAgICAgICBsZXQgaW5zZXJ0ID0gbGVmdE5vZGVzW29wZW5EZXB0aF07XG4gICAgICAgIGlmICghaW5zZXJ0KVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0RGVwdGhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAvLyBMb29wIG92ZXIgcG9zc2libGUgZXhwYW5zaW9uIGxldmVscywgc3RhcnRpbmcgd2l0aCB0aGVcbiAgICAgICAgICAgIC8vIHByZWZlcnJlZCBvbmVcbiAgICAgICAgICAgIGxldCB0YXJnZXREZXB0aCA9IHRhcmdldERlcHRoc1soaSArIHByZWZlcnJlZFRhcmdldEluZGV4KSAlIHRhcmdldERlcHRocy5sZW5ndGhdLCBleHBhbmQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRhcmdldERlcHRoIDwgMCkge1xuICAgICAgICAgICAgICAgIGV4cGFuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRhcmdldERlcHRoID0gLXRhcmdldERlcHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcmVudCA9ICRmcm9tLm5vZGUodGFyZ2V0RGVwdGggLSAxKSwgaW5kZXggPSAkZnJvbS5pbmRleCh0YXJnZXREZXB0aCAtIDEpO1xuICAgICAgICAgICAgaWYgKHBhcmVudC5jYW5SZXBsYWNlV2l0aChpbmRleCwgaW5kZXgsIGluc2VydC50eXBlLCBpbnNlcnQubWFya3MpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0ci5yZXBsYWNlKCRmcm9tLmJlZm9yZSh0YXJnZXREZXB0aCksIGV4cGFuZCA/ICR0by5hZnRlcih0YXJnZXREZXB0aCkgOiB0bywgbmV3IFNsaWNlKGNsb3NlRnJhZ21lbnQoc2xpY2UuY29udGVudCwgMCwgc2xpY2Uub3BlblN0YXJ0LCBvcGVuRGVwdGgpLCBvcGVuRGVwdGgsIHNsaWNlLm9wZW5FbmQpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgc3RhcnRTdGVwcyA9IHRyLnN0ZXBzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gdGFyZ2V0RGVwdGhzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRyLnJlcGxhY2UoZnJvbSwgdG8sIHNsaWNlKTtcbiAgICAgICAgaWYgKHRyLnN0ZXBzLmxlbmd0aCA+IHN0YXJ0U3RlcHMpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgbGV0IGRlcHRoID0gdGFyZ2V0RGVwdGhzW2ldO1xuICAgICAgICBpZiAoZGVwdGggPCAwKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGZyb20gPSAkZnJvbS5iZWZvcmUoZGVwdGgpO1xuICAgICAgICB0byA9ICR0by5hZnRlcihkZXB0aCk7XG4gICAgfVxufVxuZnVuY3Rpb24gY2xvc2VGcmFnbWVudChmcmFnbWVudCwgZGVwdGgsIG9sZE9wZW4sIG5ld09wZW4sIHBhcmVudCkge1xuICAgIGlmIChkZXB0aCA8IG9sZE9wZW4pIHtcbiAgICAgICAgbGV0IGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcbiAgICAgICAgZnJhZ21lbnQgPSBmcmFnbWVudC5yZXBsYWNlQ2hpbGQoMCwgZmlyc3QuY29weShjbG9zZUZyYWdtZW50KGZpcnN0LmNvbnRlbnQsIGRlcHRoICsgMSwgb2xkT3BlbiwgbmV3T3BlbiwgZmlyc3QpKSk7XG4gICAgfVxuICAgIGlmIChkZXB0aCA+IG5ld09wZW4pIHtcbiAgICAgICAgbGV0IG1hdGNoID0gcGFyZW50LmNvbnRlbnRNYXRjaEF0KDApO1xuICAgICAgICBsZXQgc3RhcnQgPSBtYXRjaC5maWxsQmVmb3JlKGZyYWdtZW50KS5hcHBlbmQoZnJhZ21lbnQpO1xuICAgICAgICBmcmFnbWVudCA9IHN0YXJ0LmFwcGVuZChtYXRjaC5tYXRjaEZyYWdtZW50KHN0YXJ0KS5maWxsQmVmb3JlKEZyYWdtZW50LmVtcHR5LCB0cnVlKSk7XG4gICAgfVxuICAgIHJldHVybiBmcmFnbWVudDtcbn1cbmZ1bmN0aW9uIHJlcGxhY2VSYW5nZVdpdGgodHIsIGZyb20sIHRvLCBub2RlKSB7XG4gICAgaWYgKCFub2RlLmlzSW5saW5lICYmIGZyb20gPT0gdG8gJiYgdHIuZG9jLnJlc29sdmUoZnJvbSkucGFyZW50LmNvbnRlbnQuc2l6ZSkge1xuICAgICAgICBsZXQgcG9pbnQgPSBpbnNlcnRQb2ludCh0ci5kb2MsIGZyb20sIG5vZGUudHlwZSk7XG4gICAgICAgIGlmIChwb2ludCAhPSBudWxsKVxuICAgICAgICAgICAgZnJvbSA9IHRvID0gcG9pbnQ7XG4gICAgfVxuICAgIHRyLnJlcGxhY2VSYW5nZShmcm9tLCB0bywgbmV3IFNsaWNlKEZyYWdtZW50LmZyb20obm9kZSksIDAsIDApKTtcbn1cbmZ1bmN0aW9uIGRlbGV0ZVJhbmdlKHRyLCBmcm9tLCB0bykge1xuICAgIGxldCAkZnJvbSA9IHRyLmRvYy5yZXNvbHZlKGZyb20pLCAkdG8gPSB0ci5kb2MucmVzb2x2ZSh0byk7XG4gICAgbGV0IGNvdmVyZWQgPSBjb3ZlcmVkRGVwdGhzKCRmcm9tLCAkdG8pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY292ZXJlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgZGVwdGggPSBjb3ZlcmVkW2ldLCBsYXN0ID0gaSA9PSBjb3ZlcmVkLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmICgobGFzdCAmJiBkZXB0aCA9PSAwKSB8fCAkZnJvbS5ub2RlKGRlcHRoKS50eXBlLmNvbnRlbnRNYXRjaC52YWxpZEVuZClcbiAgICAgICAgICAgIHJldHVybiB0ci5kZWxldGUoJGZyb20uc3RhcnQoZGVwdGgpLCAkdG8uZW5kKGRlcHRoKSk7XG4gICAgICAgIGlmIChkZXB0aCA+IDAgJiYgKGxhc3QgfHwgJGZyb20ubm9kZShkZXB0aCAtIDEpLmNhblJlcGxhY2UoJGZyb20uaW5kZXgoZGVwdGggLSAxKSwgJHRvLmluZGV4QWZ0ZXIoZGVwdGggLSAxKSkpKVxuICAgICAgICAgICAgcmV0dXJuIHRyLmRlbGV0ZSgkZnJvbS5iZWZvcmUoZGVwdGgpLCAkdG8uYWZ0ZXIoZGVwdGgpKTtcbiAgICB9XG4gICAgZm9yIChsZXQgZCA9IDE7IGQgPD0gJGZyb20uZGVwdGggJiYgZCA8PSAkdG8uZGVwdGg7IGQrKykge1xuICAgICAgICBpZiAoZnJvbSAtICRmcm9tLnN0YXJ0KGQpID09ICRmcm9tLmRlcHRoIC0gZCAmJiB0byA+ICRmcm9tLmVuZChkKSAmJiAkdG8uZW5kKGQpIC0gdG8gIT0gJHRvLmRlcHRoIC0gZCAmJlxuICAgICAgICAgICAgJGZyb20uc3RhcnQoZCAtIDEpID09ICR0by5zdGFydChkIC0gMSkgJiYgJGZyb20ubm9kZShkIC0gMSkuY2FuUmVwbGFjZSgkZnJvbS5pbmRleChkIC0gMSksICR0by5pbmRleChkIC0gMSkpKVxuICAgICAgICAgICAgcmV0dXJuIHRyLmRlbGV0ZSgkZnJvbS5iZWZvcmUoZCksIHRvKTtcbiAgICB9XG4gICAgdHIuZGVsZXRlKGZyb20sIHRvKTtcbn1cbi8vIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGRlcHRocyBmb3Igd2hpY2ggJGZyb20gLSAkdG8gc3BhbnMgdGhlXG4vLyB3aG9sZSBjb250ZW50IG9mIHRoZSBub2RlcyBhdCB0aGF0IGRlcHRoLlxuZnVuY3Rpb24gY292ZXJlZERlcHRocygkZnJvbSwgJHRvKSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdLCBtaW5EZXB0aCA9IE1hdGgubWluKCRmcm9tLmRlcHRoLCAkdG8uZGVwdGgpO1xuICAgIGZvciAobGV0IGQgPSBtaW5EZXB0aDsgZCA+PSAwOyBkLS0pIHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gJGZyb20uc3RhcnQoZCk7XG4gICAgICAgIGlmIChzdGFydCA8ICRmcm9tLnBvcyAtICgkZnJvbS5kZXB0aCAtIGQpIHx8XG4gICAgICAgICAgICAkdG8uZW5kKGQpID4gJHRvLnBvcyArICgkdG8uZGVwdGggLSBkKSB8fFxuICAgICAgICAgICAgJGZyb20ubm9kZShkKS50eXBlLnNwZWMuaXNvbGF0aW5nIHx8XG4gICAgICAgICAgICAkdG8ubm9kZShkKS50eXBlLnNwZWMuaXNvbGF0aW5nKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChzdGFydCA9PSAkdG8uc3RhcnQoZCkgfHxcbiAgICAgICAgICAgIChkID09ICRmcm9tLmRlcHRoICYmIGQgPT0gJHRvLmRlcHRoICYmICRmcm9tLnBhcmVudC5pbmxpbmVDb250ZW50ICYmICR0by5wYXJlbnQuaW5saW5lQ29udGVudCAmJlxuICAgICAgICAgICAgICAgIGQgJiYgJHRvLnN0YXJ0KGQgLSAxKSA9PSBzdGFydCAtIDEpKVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goZCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuVXBkYXRlIGFuIGF0dHJpYnV0ZSBpbiBhIHNwZWNpZmljIG5vZGUuXG4qL1xuY2xhc3MgQXR0clN0ZXAgZXh0ZW5kcyBTdGVwIHtcbiAgICAvKipcbiAgICBDb25zdHJ1Y3QgYW4gYXR0cmlidXRlIHN0ZXAuXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICBUaGUgcG9zaXRpb24gb2YgdGhlIHRhcmdldCBub2RlLlxuICAgICovXG4gICAgcG9zLCBcbiAgICAvKipcbiAgICBUaGUgYXR0cmlidXRlIHRvIHNldC5cbiAgICAqL1xuICAgIGF0dHIsIFxuICAgIC8vIFRoZSBhdHRyaWJ1dGUncyBuZXcgdmFsdWUuXG4gICAgdmFsdWUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5wb3MgPSBwb3M7XG4gICAgICAgIHRoaXMuYXR0ciA9IGF0dHI7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgYXBwbHkoZG9jKSB7XG4gICAgICAgIGxldCBub2RlID0gZG9jLm5vZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgIGlmICghbm9kZSlcbiAgICAgICAgICAgIHJldHVybiBTdGVwUmVzdWx0LmZhaWwoXCJObyBub2RlIGF0IGF0dHJpYnV0ZSBzdGVwJ3MgcG9zaXRpb25cIik7XG4gICAgICAgIGxldCBhdHRycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gbm9kZS5hdHRycylcbiAgICAgICAgICAgIGF0dHJzW25hbWVdID0gbm9kZS5hdHRyc1tuYW1lXTtcbiAgICAgICAgYXR0cnNbdGhpcy5hdHRyXSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGxldCB1cGRhdGVkID0gbm9kZS50eXBlLmNyZWF0ZShhdHRycywgbnVsbCwgbm9kZS5tYXJrcyk7XG4gICAgICAgIHJldHVybiBTdGVwUmVzdWx0LmZyb21SZXBsYWNlKGRvYywgdGhpcy5wb3MsIHRoaXMucG9zICsgMSwgbmV3IFNsaWNlKEZyYWdtZW50LmZyb20odXBkYXRlZCksIDAsIG5vZGUuaXNMZWFmID8gMCA6IDEpKTtcbiAgICB9XG4gICAgZ2V0TWFwKCkge1xuICAgICAgICByZXR1cm4gU3RlcE1hcC5lbXB0eTtcbiAgICB9XG4gICAgaW52ZXJ0KGRvYykge1xuICAgICAgICByZXR1cm4gbmV3IEF0dHJTdGVwKHRoaXMucG9zLCB0aGlzLmF0dHIsIGRvYy5ub2RlQXQodGhpcy5wb3MpLmF0dHJzW3RoaXMuYXR0cl0pO1xuICAgIH1cbiAgICBtYXAobWFwcGluZykge1xuICAgICAgICBsZXQgcG9zID0gbWFwcGluZy5tYXBSZXN1bHQodGhpcy5wb3MsIDEpO1xuICAgICAgICByZXR1cm4gcG9zLmRlbGV0ZWRBZnRlciA/IG51bGwgOiBuZXcgQXR0clN0ZXAocG9zLnBvcywgdGhpcy5hdHRyLCB0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBzdGVwVHlwZTogXCJhdHRyXCIsIHBvczogdGhpcy5wb3MsIGF0dHI6IHRoaXMuYXR0ciwgdmFsdWU6IHRoaXMudmFsdWUgfTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21KU09OKHNjaGVtYSwganNvbikge1xuICAgICAgICBpZiAodHlwZW9mIGpzb24ucG9zICE9IFwibnVtYmVyXCIgfHwgdHlwZW9mIGpzb24uYXR0ciAhPSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIGlucHV0IGZvciBBdHRyU3RlcC5mcm9tSlNPTlwiKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBdHRyU3RlcChqc29uLnBvcywganNvbi5hdHRyLCBqc29uLnZhbHVlKTtcbiAgICB9XG59XG5TdGVwLmpzb25JRChcImF0dHJcIiwgQXR0clN0ZXApO1xuLyoqXG5VcGRhdGUgYW4gYXR0cmlidXRlIGluIHRoZSBkb2Mgbm9kZS5cbiovXG5jbGFzcyBEb2NBdHRyU3RlcCBleHRlbmRzIFN0ZXAge1xuICAgIC8qKlxuICAgIENvbnN0cnVjdCBhbiBhdHRyaWJ1dGUgc3RlcC5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSBhdHRyaWJ1dGUgdG8gc2V0LlxuICAgICovXG4gICAgYXR0ciwgXG4gICAgLy8gVGhlIGF0dHJpYnV0ZSdzIG5ldyB2YWx1ZS5cbiAgICB2YWx1ZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmF0dHIgPSBhdHRyO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGFwcGx5KGRvYykge1xuICAgICAgICBsZXQgYXR0cnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBmb3IgKGxldCBuYW1lIGluIGRvYy5hdHRycylcbiAgICAgICAgICAgIGF0dHJzW25hbWVdID0gZG9jLmF0dHJzW25hbWVdO1xuICAgICAgICBhdHRyc1t0aGlzLmF0dHJdID0gdGhpcy52YWx1ZTtcbiAgICAgICAgbGV0IHVwZGF0ZWQgPSBkb2MudHlwZS5jcmVhdGUoYXR0cnMsIGRvYy5jb250ZW50LCBkb2MubWFya3MpO1xuICAgICAgICByZXR1cm4gU3RlcFJlc3VsdC5vayh1cGRhdGVkKTtcbiAgICB9XG4gICAgZ2V0TWFwKCkge1xuICAgICAgICByZXR1cm4gU3RlcE1hcC5lbXB0eTtcbiAgICB9XG4gICAgaW52ZXJ0KGRvYykge1xuICAgICAgICByZXR1cm4gbmV3IERvY0F0dHJTdGVwKHRoaXMuYXR0ciwgZG9jLmF0dHJzW3RoaXMuYXR0cl0pO1xuICAgIH1cbiAgICBtYXAobWFwcGluZykge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBzdGVwVHlwZTogXCJkb2NBdHRyXCIsIGF0dHI6IHRoaXMuYXR0ciwgdmFsdWU6IHRoaXMudmFsdWUgfTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21KU09OKHNjaGVtYSwganNvbikge1xuICAgICAgICBpZiAodHlwZW9mIGpzb24uYXR0ciAhPSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbnZhbGlkIGlucHV0IGZvciBEb2NBdHRyU3RlcC5mcm9tSlNPTlwiKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2NBdHRyU3RlcChqc29uLmF0dHIsIGpzb24udmFsdWUpO1xuICAgIH1cbn1cblN0ZXAuanNvbklEKFwiZG9jQXR0clwiLCBEb2NBdHRyU3RlcCk7XG5cbi8qKlxuQGludGVybmFsXG4qL1xubGV0IFRyYW5zZm9ybUVycm9yID0gY2xhc3MgZXh0ZW5kcyBFcnJvciB7XG59O1xuVHJhbnNmb3JtRXJyb3IgPSBmdW5jdGlvbiBUcmFuc2Zvcm1FcnJvcihtZXNzYWdlKSB7XG4gICAgbGV0IGVyciA9IEVycm9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG4gICAgZXJyLl9fcHJvdG9fXyA9IFRyYW5zZm9ybUVycm9yLnByb3RvdHlwZTtcbiAgICByZXR1cm4gZXJyO1xufTtcblRyYW5zZm9ybUVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcblRyYW5zZm9ybUVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRyYW5zZm9ybUVycm9yO1xuVHJhbnNmb3JtRXJyb3IucHJvdG90eXBlLm5hbWUgPSBcIlRyYW5zZm9ybUVycm9yXCI7XG4vKipcbkFic3RyYWN0aW9uIHRvIGJ1aWxkIHVwIGFuZCB0cmFjayBhbiBhcnJheSBvZlxuW3N0ZXBzXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jdHJhbnNmb3JtLlN0ZXApIHJlcHJlc2VudGluZyBhIGRvY3VtZW50IHRyYW5zZm9ybWF0aW9uLlxuXG5Nb3N0IHRyYW5zZm9ybWluZyBtZXRob2RzIHJldHVybiB0aGUgYFRyYW5zZm9ybWAgb2JqZWN0IGl0c2VsZiwgc29cbnRoYXQgdGhleSBjYW4gYmUgY2hhaW5lZC5cbiovXG5jbGFzcyBUcmFuc2Zvcm0ge1xuICAgIC8qKlxuICAgIENyZWF0ZSBhIHRyYW5zZm9ybSB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBkb2N1bWVudC5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgIFRoZSBjdXJyZW50IGRvY3VtZW50ICh0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZSBzdGVwcyBpbiB0aGVcbiAgICB0cmFuc2Zvcm0pLlxuICAgICovXG4gICAgZG9jKSB7XG4gICAgICAgIHRoaXMuZG9jID0gZG9jO1xuICAgICAgICAvKipcbiAgICAgICAgVGhlIHN0ZXBzIGluIHRoaXMgdHJhbnNmb3JtLlxuICAgICAgICAqL1xuICAgICAgICB0aGlzLnN0ZXBzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICBUaGUgZG9jdW1lbnRzIGJlZm9yZSBlYWNoIG9mIHRoZSBzdGVwcy5cbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kb2NzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICBBIG1hcHBpbmcgd2l0aCB0aGUgbWFwcyBmb3IgZWFjaCBvZiB0aGUgc3RlcHMgaW4gdGhpcyB0cmFuc2Zvcm0uXG4gICAgICAgICovXG4gICAgICAgIHRoaXMubWFwcGluZyA9IG5ldyBNYXBwaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICBUaGUgc3RhcnRpbmcgZG9jdW1lbnQuXG4gICAgKi9cbiAgICBnZXQgYmVmb3JlKCkgeyByZXR1cm4gdGhpcy5kb2NzLmxlbmd0aCA/IHRoaXMuZG9jc1swXSA6IHRoaXMuZG9jOyB9XG4gICAgLyoqXG4gICAgQXBwbHkgYSBuZXcgc3RlcCBpbiB0aGlzIHRyYW5zZm9ybSwgc2F2aW5nIHRoZSByZXN1bHQuIFRocm93cyBhblxuICAgIGVycm9yIHdoZW4gdGhlIHN0ZXAgZmFpbHMuXG4gICAgKi9cbiAgICBzdGVwKHN0ZXApIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMubWF5YmVTdGVwKHN0ZXApO1xuICAgICAgICBpZiAocmVzdWx0LmZhaWxlZClcbiAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcihyZXN1bHQuZmFpbGVkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIFRyeSB0byBhcHBseSBhIHN0ZXAgaW4gdGhpcyB0cmFuc2Zvcm1hdGlvbiwgaWdub3JpbmcgaXQgaWYgaXRcbiAgICBmYWlscy4gUmV0dXJucyB0aGUgc3RlcCByZXN1bHQuXG4gICAgKi9cbiAgICBtYXliZVN0ZXAoc3RlcCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gc3RlcC5hcHBseSh0aGlzLmRvYyk7XG4gICAgICAgIGlmICghcmVzdWx0LmZhaWxlZClcbiAgICAgICAgICAgIHRoaXMuYWRkU3RlcChzdGVwLCByZXN1bHQuZG9jKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgVHJ1ZSB3aGVuIHRoZSBkb2N1bWVudCBoYXMgYmVlbiBjaGFuZ2VkICh3aGVuIHRoZXJlIGFyZSBhbnlcbiAgICBzdGVwcykuXG4gICAgKi9cbiAgICBnZXQgZG9jQ2hhbmdlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgLyoqXG4gICAgUmV0dXJuIGEgc2luZ2xlIHJhbmdlLCBpbiBwb3N0LXRyYW5zZm9ybSBkb2N1bWVudCBwb3NpdGlvbnMsXG4gICAgdGhhdCBjb3ZlcnMgYWxsIGNvbnRlbnQgY2hhbmdlZCBieSB0aGlzIHRyYW5zZm9ybS4gUmV0dXJucyBudWxsXG4gICAgaWYgbm8gcmVwbGFjZW1lbnRzIGFyZSBtYWRlLiBOb3RlIHRoYXQgdGhpcyB3aWxsIGlnbm9yZSBjaGFuZ2VzXG4gICAgdGhhdCBhZGQvcmVtb3ZlIG1hcmtzIHdpdGhvdXQgcmVwbGFjaW5nIHRoZSB1bmRlcmx5aW5nIGNvbnRlbnQuXG4gICAgKi9cbiAgICBjaGFuZ2VkUmFuZ2UoKSB7XG4gICAgICAgIGxldCBmcm9tID0gMWU5LCB0byA9IC0xZTk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tYXBwaW5nLm1hcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYXAgPSB0aGlzLm1hcHBpbmcubWFwc1tpXTtcbiAgICAgICAgICAgIGlmIChpKSB7XG4gICAgICAgICAgICAgICAgZnJvbSA9IG1hcC5tYXAoZnJvbSwgMSk7XG4gICAgICAgICAgICAgICAgdG8gPSBtYXAubWFwKHRvLCAtMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtYXAuZm9yRWFjaCgoX2YsIF90LCBmcm9tQiwgdG9CKSA9PiB7XG4gICAgICAgICAgICAgICAgZnJvbSA9IE1hdGgubWluKGZyb20sIGZyb21CKTtcbiAgICAgICAgICAgICAgICB0byA9IE1hdGgubWF4KHRvLCB0b0IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyb20gPT0gMWU5ID8gbnVsbCA6IHsgZnJvbSwgdG8gfTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBhZGRTdGVwKHN0ZXAsIGRvYykge1xuICAgICAgICB0aGlzLmRvY3MucHVzaCh0aGlzLmRvYyk7XG4gICAgICAgIHRoaXMuc3RlcHMucHVzaChzdGVwKTtcbiAgICAgICAgdGhpcy5tYXBwaW5nLmFwcGVuZE1hcChzdGVwLmdldE1hcCgpKTtcbiAgICAgICAgdGhpcy5kb2MgPSBkb2M7XG4gICAgfVxuICAgIC8qKlxuICAgIFJlcGxhY2UgdGhlIHBhcnQgb2YgdGhlIGRvY3VtZW50IGJldHdlZW4gYGZyb21gIGFuZCBgdG9gIHdpdGggdGhlXG4gICAgZ2l2ZW4gYHNsaWNlYC5cbiAgICAqL1xuICAgIHJlcGxhY2UoZnJvbSwgdG8gPSBmcm9tLCBzbGljZSA9IFNsaWNlLmVtcHR5KSB7XG4gICAgICAgIGxldCBzdGVwID0gcmVwbGFjZVN0ZXAodGhpcy5kb2MsIGZyb20sIHRvLCBzbGljZSk7XG4gICAgICAgIGlmIChzdGVwKVxuICAgICAgICAgICAgdGhpcy5zdGVwKHN0ZXApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgUmVwbGFjZSB0aGUgZ2l2ZW4gcmFuZ2Ugd2l0aCB0aGUgZ2l2ZW4gY29udGVudCwgd2hpY2ggbWF5IGJlIGFcbiAgICBmcmFnbWVudCwgbm9kZSwgb3IgYXJyYXkgb2Ygbm9kZXMuXG4gICAgKi9cbiAgICByZXBsYWNlV2l0aChmcm9tLCB0bywgY29udGVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXBsYWNlKGZyb20sIHRvLCBuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbShjb250ZW50KSwgMCwgMCkpO1xuICAgIH1cbiAgICAvKipcbiAgICBEZWxldGUgdGhlIGNvbnRlbnQgYmV0d2VlbiB0aGUgZ2l2ZW4gcG9zaXRpb25zLlxuICAgICovXG4gICAgZGVsZXRlKGZyb20sIHRvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2UoZnJvbSwgdG8sIFNsaWNlLmVtcHR5KTtcbiAgICB9XG4gICAgLyoqXG4gICAgSW5zZXJ0IHRoZSBnaXZlbiBjb250ZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbi5cbiAgICAqL1xuICAgIGluc2VydChwb3MsIGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZVdpdGgocG9zLCBwb3MsIGNvbnRlbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICBSZXBsYWNlIGEgcmFuZ2Ugb2YgdGhlIGRvY3VtZW50IHdpdGggYSBnaXZlbiBzbGljZSwgdXNpbmdcbiAgICBgZnJvbWAsIGB0b2AsIGFuZCB0aGUgc2xpY2Unc1xuICAgIFtgb3BlblN0YXJ0YF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLlNsaWNlLm9wZW5TdGFydCkgcHJvcGVydHkgYXMgaGludHMsIHJhdGhlclxuICAgIHRoYW4gZml4ZWQgc3RhcnQgYW5kIGVuZCBwb2ludHMuIFRoaXMgbWV0aG9kIG1heSBncm93IHRoZVxuICAgIHJlcGxhY2VkIGFyZWEgb3IgY2xvc2Ugb3BlbiBub2RlcyBpbiB0aGUgc2xpY2UgaW4gb3JkZXIgdG8gZ2V0IGFcbiAgICBmaXQgdGhhdCBpcyBtb3JlIGluIGxpbmUgd2l0aCBXWVNJV1lHIGV4cGVjdGF0aW9ucywgYnkgZHJvcHBpbmdcbiAgICBmdWxseSBjb3ZlcmVkIHBhcmVudCBub2RlcyBvZiB0aGUgcmVwbGFjZWQgcmVnaW9uIHdoZW4gdGhleSBhcmVcbiAgICBtYXJrZWQgW25vbi1kZWZpbmluZyBhc1xuICAgIGNvbnRleHRdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlU3BlYy5kZWZpbmluZ0FzQ29udGV4dCksIG9yIGluY2x1ZGluZyBhblxuICAgIG9wZW4gcGFyZW50IG5vZGUgZnJvbSB0aGUgc2xpY2UgdGhhdCBfaXNfIG1hcmtlZCBhcyBbZGVmaW5pbmdcbiAgICBpdHMgY29udGVudF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLk5vZGVTcGVjLmRlZmluaW5nRm9yQ29udGVudCkuXG4gICAgXG4gICAgVGhpcyBpcyB0aGUgbWV0aG9kLCBmb3IgZXhhbXBsZSwgdG8gaGFuZGxlIHBhc3RlLiBUaGUgc2ltaWxhclxuICAgIFtgcmVwbGFjZWBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyN0cmFuc2Zvcm0uVHJhbnNmb3JtLnJlcGxhY2UpIG1ldGhvZCBpcyBhIG1vcmVcbiAgICBwcmltaXRpdmUgdG9vbCB3aGljaCB3aWxsIF9ub3RfIG1vdmUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgaXRzIGdpdmVuXG4gICAgcmFuZ2UsIGFuZCBpcyB1c2VmdWwgaW4gc2l0dWF0aW9ucyB3aGVyZSB5b3UgbmVlZCBtb3JlIHByZWNpc2VcbiAgICBjb250cm9sIG92ZXIgd2hhdCBoYXBwZW5zLlxuICAgICovXG4gICAgcmVwbGFjZVJhbmdlKGZyb20sIHRvLCBzbGljZSkge1xuICAgICAgICByZXBsYWNlUmFuZ2UodGhpcywgZnJvbSwgdG8sIHNsaWNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIFJlcGxhY2UgdGhlIGdpdmVuIHJhbmdlIHdpdGggYSBub2RlLCBidXQgdXNlIGBmcm9tYCBhbmQgYHRvYCBhc1xuICAgIGhpbnRzLCByYXRoZXIgdGhhbiBwcmVjaXNlIHBvc2l0aW9ucy4gV2hlbiBmcm9tIGFuZCB0byBhcmUgdGhlIHNhbWVcbiAgICBhbmQgYXJlIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgYSBwYXJlbnQgbm9kZSBpbiB3aGljaCB0aGUgZ2l2ZW5cbiAgICBub2RlIGRvZXNuJ3QgZml0LCB0aGlzIG1ldGhvZCBtYXkgX21vdmVfIHRoZW0gb3V0IHRvd2FyZHMgYSBwYXJlbnRcbiAgICB0aGF0IGRvZXMgYWxsb3cgdGhlIGdpdmVuIG5vZGUgdG8gYmUgcGxhY2VkLiBXaGVuIHRoZSBnaXZlbiByYW5nZVxuICAgIGNvbXBsZXRlbHkgY292ZXJzIGEgcGFyZW50IG5vZGUsIHRoaXMgbWV0aG9kIG1heSBjb21wbGV0ZWx5IHJlcGxhY2VcbiAgICB0aGF0IHBhcmVudCBub2RlLlxuICAgICovXG4gICAgcmVwbGFjZVJhbmdlV2l0aChmcm9tLCB0bywgbm9kZSkge1xuICAgICAgICByZXBsYWNlUmFuZ2VXaXRoKHRoaXMsIGZyb20sIHRvLCBub2RlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIERlbGV0ZSB0aGUgZ2l2ZW4gcmFuZ2UsIGV4cGFuZGluZyBpdCB0byBjb3ZlciBmdWxseSBjb3ZlcmVkXG4gICAgcGFyZW50IG5vZGVzIHVudGlsIGEgdmFsaWQgcmVwbGFjZSBpcyBmb3VuZC5cbiAgICAqL1xuICAgIGRlbGV0ZVJhbmdlKGZyb20sIHRvKSB7XG4gICAgICAgIGRlbGV0ZVJhbmdlKHRoaXMsIGZyb20sIHRvKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIFNwbGl0IHRoZSBjb250ZW50IGluIHRoZSBnaXZlbiByYW5nZSBvZmYgZnJvbSBpdHMgcGFyZW50LCBpZiB0aGVyZVxuICAgIGlzIHNpYmxpbmcgY29udGVudCBiZWZvcmUgb3IgYWZ0ZXIgaXQsIGFuZCBtb3ZlIGl0IHVwIHRoZSB0cmVlIHRvXG4gICAgdGhlIGRlcHRoIHNwZWNpZmllZCBieSBgdGFyZ2V0YC4gWW91J2xsIHByb2JhYmx5IHdhbnQgdG8gdXNlXG4gICAgW2BsaWZ0VGFyZ2V0YF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3RyYW5zZm9ybS5saWZ0VGFyZ2V0KSB0byBjb21wdXRlIGB0YXJnZXRgLCB0byBtYWtlXG4gICAgc3VyZSB0aGUgbGlmdCBpcyB2YWxpZC5cbiAgICAqL1xuICAgIGxpZnQocmFuZ2UsIHRhcmdldCkge1xuICAgICAgICBsaWZ0KHRoaXMsIHJhbmdlLCB0YXJnZXQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgSm9pbiB0aGUgYmxvY2tzIGFyb3VuZCB0aGUgZ2l2ZW4gcG9zaXRpb24uIElmIGRlcHRoIGlzIDIsIHRoZWlyXG4gICAgbGFzdCBhbmQgZmlyc3Qgc2libGluZ3MgYXJlIGFsc28gam9pbmVkLCBhbmQgc28gb24uXG4gICAgKi9cbiAgICBqb2luKHBvcywgZGVwdGggPSAxKSB7XG4gICAgICAgIGpvaW4odGhpcywgcG9zLCBkZXB0aCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICBXcmFwIHRoZSBnaXZlbiBbcmFuZ2VdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyNtb2RlbC5Ob2RlUmFuZ2UpIGluIHRoZSBnaXZlbiBzZXQgb2Ygd3JhcHBlcnMuXG4gICAgVGhlIHdyYXBwZXJzIGFyZSBhc3N1bWVkIHRvIGJlIHZhbGlkIGluIHRoaXMgcG9zaXRpb24sIGFuZCBzaG91bGRcbiAgICBwcm9iYWJseSBiZSBjb21wdXRlZCB3aXRoIFtgZmluZFdyYXBwaW5nYF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3RyYW5zZm9ybS5maW5kV3JhcHBpbmcpLlxuICAgICovXG4gICAgd3JhcChyYW5nZSwgd3JhcHBlcnMpIHtcbiAgICAgICAgd3JhcCh0aGlzLCByYW5nZSwgd3JhcHBlcnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgU2V0IHRoZSB0eXBlIG9mIGFsbCB0ZXh0YmxvY2tzIChwYXJ0bHkpIGJldHdlZW4gYGZyb21gIGFuZCBgdG9gIHRvXG4gICAgdGhlIGdpdmVuIG5vZGUgdHlwZSB3aXRoIHRoZSBnaXZlbiBhdHRyaWJ1dGVzLlxuICAgICovXG4gICAgc2V0QmxvY2tUeXBlKGZyb20sIHRvID0gZnJvbSwgdHlwZSwgYXR0cnMgPSBudWxsKSB7XG4gICAgICAgIHNldEJsb2NrVHlwZSh0aGlzLCBmcm9tLCB0bywgdHlwZSwgYXR0cnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgQ2hhbmdlIHRoZSB0eXBlLCBhdHRyaWJ1dGVzLCBhbmQvb3IgbWFya3Mgb2YgdGhlIG5vZGUgYXQgYHBvc2AuXG4gICAgV2hlbiBgdHlwZWAgaXNuJ3QgZ2l2ZW4sIHRoZSBleGlzdGluZyBub2RlIHR5cGUgaXMgcHJlc2VydmVkLFxuICAgICovXG4gICAgc2V0Tm9kZU1hcmt1cChwb3MsIHR5cGUsIGF0dHJzID0gbnVsbCwgbWFya3MpIHtcbiAgICAgICAgc2V0Tm9kZU1hcmt1cCh0aGlzLCBwb3MsIHR5cGUsIGF0dHJzLCBtYXJrcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICBTZXQgYSBzaW5nbGUgYXR0cmlidXRlIG9uIGEgZ2l2ZW4gbm9kZSB0byBhIG5ldyB2YWx1ZS5cbiAgICBUaGUgYHBvc2AgYWRkcmVzc2VzIHRoZSBkb2N1bWVudCBjb250ZW50LiBVc2UgYHNldERvY0F0dHJpYnV0ZWBcbiAgICB0byBzZXQgYXR0cmlidXRlcyBvbiB0aGUgZG9jdW1lbnQgaXRzZWxmLlxuICAgICovXG4gICAgc2V0Tm9kZUF0dHJpYnV0ZShwb3MsIGF0dHIsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc3RlcChuZXcgQXR0clN0ZXAocG9zLCBhdHRyLCB2YWx1ZSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgU2V0IGEgc2luZ2xlIGF0dHJpYnV0ZSBvbiB0aGUgZG9jdW1lbnQgdG8gYSBuZXcgdmFsdWUuXG4gICAgKi9cbiAgICBzZXREb2NBdHRyaWJ1dGUoYXR0ciwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdGVwKG5ldyBEb2NBdHRyU3RlcChhdHRyLCB2YWx1ZSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgQWRkIGEgbWFyayB0byB0aGUgbm9kZSBhdCBwb3NpdGlvbiBgcG9zYC5cbiAgICAqL1xuICAgIGFkZE5vZGVNYXJrKHBvcywgbWFyaykge1xuICAgICAgICB0aGlzLnN0ZXAobmV3IEFkZE5vZGVNYXJrU3RlcChwb3MsIG1hcmspKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIFJlbW92ZSBhIG1hcmsgKG9yIGFsbCBtYXJrcyBvZiB0aGUgZ2l2ZW4gdHlwZSkgZnJvbSB0aGUgbm9kZSBhdFxuICAgIHBvc2l0aW9uIGBwb3NgLlxuICAgICovXG4gICAgcmVtb3ZlTm9kZU1hcmsocG9zLCBtYXJrKSB7XG4gICAgICAgIGxldCBub2RlID0gdGhpcy5kb2Mubm9kZUF0KHBvcyk7XG4gICAgICAgIGlmICghbm9kZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiTm8gbm9kZSBhdCBwb3NpdGlvbiBcIiArIHBvcyk7XG4gICAgICAgIGlmIChtYXJrIGluc3RhbmNlb2YgTWFyaykge1xuICAgICAgICAgICAgaWYgKG1hcmsuaXNJblNldChub2RlLm1hcmtzKSlcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAobmV3IFJlbW92ZU5vZGVNYXJrU3RlcChwb3MsIG1hcmspKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzZXQgPSBub2RlLm1hcmtzLCBmb3VuZCwgc3RlcHMgPSBbXTtcbiAgICAgICAgICAgIHdoaWxlIChmb3VuZCA9IG1hcmsuaXNJblNldChzZXQpKSB7XG4gICAgICAgICAgICAgICAgc3RlcHMucHVzaChuZXcgUmVtb3ZlTm9kZU1hcmtTdGVwKHBvcywgZm91bmQpKTtcbiAgICAgICAgICAgICAgICBzZXQgPSBmb3VuZC5yZW1vdmVGcm9tU2V0KHNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc3RlcHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwKHN0ZXBzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgU3BsaXQgdGhlIG5vZGUgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLCBhbmQgb3B0aW9uYWxseSwgaWYgYGRlcHRoYCBpc1xuICAgIGdyZWF0ZXIgdGhhbiBvbmUsIGFueSBudW1iZXIgb2Ygbm9kZXMgYWJvdmUgdGhhdC4gQnkgZGVmYXVsdCwgdGhlXG4gICAgcGFydHMgc3BsaXQgb2ZmIHdpbGwgaW5oZXJpdCB0aGUgbm9kZSB0eXBlIG9mIHRoZSBvcmlnaW5hbCBub2RlLlxuICAgIFRoaXMgY2FuIGJlIGNoYW5nZWQgYnkgcGFzc2luZyBhbiBhcnJheSBvZiB0eXBlcyBhbmQgYXR0cmlidXRlcyB0b1xuICAgIHVzZSBhZnRlciB0aGUgc3BsaXQgKHdpdGggdGhlIG91dGVybW9zdCBub2RlcyBjb21pbmcgZmlyc3QpLlxuICAgICovXG4gICAgc3BsaXQocG9zLCBkZXB0aCA9IDEsIHR5cGVzQWZ0ZXIpIHtcbiAgICAgICAgc3BsaXQodGhpcywgcG9zLCBkZXB0aCwgdHlwZXNBZnRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICBBZGQgdGhlIGdpdmVuIG1hcmsgdG8gdGhlIGlubGluZSBjb250ZW50IGJldHdlZW4gYGZyb21gIGFuZCBgdG9gLlxuICAgICovXG4gICAgYWRkTWFyayhmcm9tLCB0bywgbWFyaykge1xuICAgICAgICBhZGRNYXJrKHRoaXMsIGZyb20sIHRvLCBtYXJrKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgIFJlbW92ZSBtYXJrcyBmcm9tIGlubGluZSBub2RlcyBiZXR3ZWVuIGBmcm9tYCBhbmQgYHRvYC4gV2hlblxuICAgIGBtYXJrYCBpcyBhIHNpbmdsZSBtYXJrLCByZW1vdmUgcHJlY2lzZWx5IHRoYXQgbWFyay4gV2hlbiBpdCBpc1xuICAgIGEgbWFyayB0eXBlLCByZW1vdmUgYWxsIG1hcmtzIG9mIHRoYXQgdHlwZS4gV2hlbiBpdCBpcyBudWxsLFxuICAgIHJlbW92ZSBhbGwgbWFya3Mgb2YgYW55IHR5cGUuXG4gICAgKi9cbiAgICByZW1vdmVNYXJrKGZyb20sIHRvLCBtYXJrKSB7XG4gICAgICAgIHJlbW92ZU1hcmsodGhpcywgZnJvbSwgdG8sIG1hcmspO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgUmVtb3ZlcyBhbGwgbWFya3MgYW5kIG5vZGVzIGZyb20gdGhlIGNvbnRlbnQgb2YgdGhlIG5vZGUgYXRcbiAgICBgcG9zYCB0aGF0IGRvbid0IG1hdGNoIHRoZSBnaXZlbiBuZXcgcGFyZW50IG5vZGUgdHlwZS4gQWNjZXB0c1xuICAgIGFuIG9wdGlvbmFsIHN0YXJ0aW5nIFtjb250ZW50IG1hdGNoXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuQ29udGVudE1hdGNoKSBhc1xuICAgIHRoaXJkIGFyZ3VtZW50LlxuICAgICovXG4gICAgY2xlYXJJbmNvbXBhdGlibGUocG9zLCBwYXJlbnRUeXBlLCBtYXRjaCkge1xuICAgICAgICBjbGVhckluY29tcGF0aWJsZSh0aGlzLCBwb3MsIHBhcmVudFR5cGUsIG1hdGNoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgeyBBZGRNYXJrU3RlcCwgQWRkTm9kZU1hcmtTdGVwLCBBdHRyU3RlcCwgRG9jQXR0clN0ZXAsIE1hcFJlc3VsdCwgTWFwcGluZywgUmVtb3ZlTWFya1N0ZXAsIFJlbW92ZU5vZGVNYXJrU3RlcCwgUmVwbGFjZUFyb3VuZFN0ZXAsIFJlcGxhY2VTdGVwLCBTdGVwLCBTdGVwTWFwLCBTdGVwUmVzdWx0LCBUcmFuc2Zvcm0sIFRyYW5zZm9ybUVycm9yLCBjYW5Kb2luLCBjYW5TcGxpdCwgZHJvcFBvaW50LCBmaW5kV3JhcHBpbmcsIGluc2VydFBvaW50LCBqb2luUG9pbnQsIGxpZnRUYXJnZXQsIHJlcGxhY2VTdGVwIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-transform/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/prosemirror-view/dist/index.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/prosemirror-view/dist/index.js ***!
|
||
\*****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Decoration: () => (/* binding */ Decoration),\n/* harmony export */ DecorationSet: () => (/* binding */ DecorationSet),\n/* harmony export */ EditorView: () => (/* binding */ EditorView),\n/* harmony export */ __endComposition: () => (/* binding */ __endComposition),\n/* harmony export */ __parseFromClipboard: () => (/* binding */ __parseFromClipboard)\n/* harmony export */ });\n/* harmony import */ var prosemirror_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prosemirror-state */ \"(app-pages-browser)/./node_modules/prosemirror-state/dist/index.js\");\n/* harmony import */ var prosemirror_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prosemirror-model */ \"(app-pages-browser)/./node_modules/prosemirror-model/dist/index.js\");\n/* harmony import */ var prosemirror_transform__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prosemirror-transform */ \"(app-pages-browser)/./node_modules/prosemirror-transform/dist/index.js\");\n\n\n\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\nconst clearReusedRange = function () {\n reusedRange = null;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n var _a;\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n let child = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (child.nodeType == 1 && child.contentEditable == \"false\") {\n if ((_a = child.pmViewDesc) === null || _a === void 0 ? void 0 : _a.ignoreForSelection)\n off += dir;\n else\n return false;\n }\n else {\n node = child;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction textNodeBefore$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction textNodeAfter$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset < node.nodeValue.length)\n return node;\n if (node.nodeType == 1 && offset < node.childNodes.length) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset];\n offset = 0;\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n // Clip the offset, because Chrome will return a text offset\n // into <input> nodes, which can't be treated as a regular DOM\n // offset\n if (pos)\n return { node: pos.offsetNode, offset: Math.min(nodeSize(pos.offsetNode), pos.offset) };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: Math.min(nodeSize(range.startContainer), range.startOffset) };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n let vp = doc.defaultView && doc.defaultView.visualViewport;\n if (vp)\n return {\n left: 0, right: vp.width,\n top: 0, bottom: vp.height\n };\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;;) {\n if (!parent)\n break;\n if (parent.nodeType != 1) {\n parent = parentNode(parent);\n continue;\n }\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n let pos = atTop ? \"fixed\" : getComputedStyle(parent).position;\n if (/^(fixed|sticky)$/.test(pos))\n break;\n parent = pos == \"absolute\" ? parent.offsetParent : parentNode(parent);\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange(), result;\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect)) {\n result = { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n break;\n }\n }\n range.detach();\n return result || { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true), rect;\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent || !desc.contentDOM) &&\n // Ignore elements with zero-size bounding rectangles\n ((rect = desc.dom.getBoundingClientRect()).width || rect.height)) {\n if (desc.node.isBlock && desc.parent && !/^T(R|BODY|HEAD|FOOT)$/.test(desc.dom.nodeName)) {\n // Only apply the horizontal test to the innermost block. Vertical for any parent.\n if (!sawBlock && rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (!sawBlock && rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n sawBlock = true;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into <input> nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n let prev;\n // When clicking above the right side of an uneditable node, Chrome will report a cursor position after that node.\n if (webkit && offset && node.nodeType == 1 && (prev = node.childNodes[offset - 1]).nodeType == 1 &&\n prev.contentEditable == \"false\" && prev.getBoundingClientRect().top >= coords.top)\n offset--;\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n if (!sel)\n return $head.pos == $head.start() || $head.pos == $head.end();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) {\n for (let i = 0; i < child.children.length; i++) {\n let inner = child.children[i];\n if (inner.size) {\n child = inner;\n break;\n }\n }\n }\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, view, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, view, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = view.root.getSelection();\n let selRange = view.domSelectionRange();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && selRange.focusNode && selRange.focusNode != headDOM.node && selRange.focusNode.nodeType == 1) {\n let after = selRange.focusNode.childNodes[selRange.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, selRange.anchorNode, selRange.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, selRange.focusNode, selRange.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !(brKludge && gecko)) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n get ignoreForSelection() { return false; }\n isText(text) { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get ignoreForSelection() { return !!this.widget.type.spec.relaxedSide; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM, spec) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n this.spec = spec;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline), null, mark.attrs);\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom, spec);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n let spec = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.DOMSerializer.renderSpec(document, node.type.spec.toDOM(node), null, node.attrs);\n ({ dom, contentDOM } = spec);\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by <br contenteditable=false>\n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view, i);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Mark.none : this.node.child(i).marks, inline, view, i);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view, i);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view, 0);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let textNode = view.input.compositionNode;\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.nodeDOM.draggable = true;\n }\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.nodeDOM.removeAttribute(\"draggable\");\n }\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n isText(text) { return this.node.text == text; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update && (this.node.type == node.type || this.spec.multiType)) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, view, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, view.root)\n : super.setSelection(anchor, head, view, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view, parentIndex) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1, scanTo = this.top.children.length;\n if (parentIndex < this.preMatch.index)\n scanTo = Math.min(this.index + 3, scanTo);\n for (let i = this.index; i < scanTo; i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.destroyBetween(this.index, i);\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content) ||\n !sameOuterDeco(outerDeco, next.outerDeco) || !innerDeco.eq(next.innerDeco))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n else {\n while (decoIndex < locals.length && locals[decoIndex].to < end)\n decoIndex++;\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n if (pos >= to && str.slice(to - text.length - childStart, to - childStart) == text)\n return to - text.length;\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), anchor, selection;\n if (selectionCollapsed(domSel)) {\n anchor = head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n if (domSel instanceof view.dom.ownerDocument.defaultView.Selection && domSel.rangeCount > 1) {\n let min = head, max = head;\n for (let i = 0; i < domSel.rangeCount; i++) {\n let range = domSel.getRangeAt(i);\n min = Math.min(min, view.docView.posFromDOM(range.startContainer, range.startOffset, 1));\n max = Math.max(max, view.docView.posFromDOM(range.endContainer, range.endOffset, -1));\n }\n if (min < 0)\n return null;\n [anchor, head] = max == view.state.selection.anchor ? [max, min] : [min, max];\n $head = doc.resolve(head);\n }\n else {\n anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n }\n if (anchor < 0)\n return null;\n }\n let $anchor = doc.resolve(anchor);\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection();\n if (!domSel)\n return;\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n domSel.collapse(node.parentNode, domIndex(node) + 1);\n else\n domSel.collapse(node, 0);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection) {\n if (mods.indexOf(\"s\") > -1) {\n let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;\n if (!node || node.isText || !node.isLeaf)\n return false;\n let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));\n return apply(view, new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection(sel.$anchor, $newHead));\n }\n else if (!sel.empty) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(node)) {\n return apply(view, new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection && sel.node.isInline) {\n return apply(view, new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (!sel)\n return;\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.AllSelection ? prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Selection.near(side, dir) : prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text, slice };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = !!text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode) {\n slice = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0);\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, true); });\n return slice;\n }\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, asText); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"<td>..</td>\"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\nlet _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"));\n}\nlet _policy = null;\nfunction maybeWrapTrusted(html) {\n let trustedTypes = window.trustedTypes;\n if (!trustedTypes)\n return html;\n // With the require-trusted-types-for CSP, Chrome will block\n // innerHTML, even on a detached document. This wraps the string in\n // a way that makes the browser allow us to use its parser again.\n if (!_policy)\n _policy = trustedTypes.defaultPolicy || trustedTypes.createPolicy(\"ProseMirrorClipboard\", { createHTML: (s) => s });\n return _policy.createHTML(html);\n}\nfunction readHTML(html) {\n let metas = /^(\\s*<meta [^>]*>)*/.exec(html);\n if (metas)\n html = html.slice(metas[0].length);\n let elt = detachedDoc().createElement(\"div\");\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"</\" + n + \">\").reverse().join(\"\");\n elt.innerHTML = maybeWrapTrusted(html);\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\n let { content, openStart, openEnd } = slice;\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs())\n break;\n content = prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\", button: 0 };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastChromeDelete = 0;\n this.composing = false;\n this.compositionNode = null;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n this.badSafariComposition = false;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\n });\n}\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false;\n });\n}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false;\n return true;\n}\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event);\n}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\n }\n let sel = view.state.selection;\n if (!(sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode);\n let deflt = () => view.state.tr.insertText(text).scrollIntoView();\n if (!/[\\r\\n]/.test(text) && !view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text, deflt)))\n view.dispatch(deflt());\n event.preventDefault();\n }\n};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true;\n }\n return false;\n}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n if (view.state.selection.eq(selection))\n return;\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(node)) {\n updateSelection(view, new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection($pos), \"pointer\");\n return true;\n }\n return false;\n}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection)\n selectedNode = sel.node;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth);\n else\n selectAt = $pos.before(i);\n break;\n }\n }\n if (selectAt != null) {\n updateSelection(view, prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\n }\n}\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));\n}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\n}\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\n let doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true;\n }\n return false;\n }\n let $pos = doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n let nodePos = $pos.before(i);\n if (node.inlineContent)\n updateSelection(view, prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\");\n else if (prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(node))\n updateSelection(view, prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(doc, nodePos), \"pointer\");\n else\n continue;\n return true;\n }\n}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier] &&\n view.input.lastClick.button == event.button) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type, button: event.button };\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.mightDrag = null;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n const target = flushed ? null : event.target;\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc && targetDesc.nodeDOM.nodeType == 1 ? targetDesc.nodeDOM : null;\n let { selection } = view.state;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && gecko && !this.target.hasAttribute(\"contentEditable\"))\n };\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\n }\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n }\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => selectionToDOM(this.view));\n this.view.input.mouseDown = null;\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0)\n this.done();\n }\n updateAllowDefault(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true;\n }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush();\n let { state } = view, $pos = state.selection.$to;\n if (state.selection instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)) ||\n chrome && windows && selectionBeforeUneditable(view))) { // Issue #1500\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n }\n else {\n endComposition(view, !state.selection.empty);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before)\n break;\n if (before.nodeType == 3) {\n let sel = view.domSelection();\n if (sel)\n sel.collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\nfunction selectionBeforeUneditable(view) {\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (!focusNode || focusNode.nodeType != 1 || focusOffset >= focusNode.childNodes.length)\n return false;\n let next = focusNode.childNodes[focusOffset];\n return next.nodeType == 1 && next.contentEditable == \"false\";\n}\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = event.timeStamp;\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n view.input.compositionNode = null;\n if (view.input.badSafariComposition)\n view.domObserver.forceFlush();\n else if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction findCompositionNode(view) {\n let sel = view.domSelectionRange();\n if (!sel.focusNode)\n return null;\n let textBefore = textNodeBefore$1(sel.focusNode, sel.focusOffset);\n let textAfter = textNodeAfter$1(sel.focusNode, sel.focusOffset);\n if (textBefore && textAfter && textBefore != textAfter) {\n let descAfter = textAfter.pmViewDesc, lastChanged = view.domObserver.lastChangedTextNode;\n if (textBefore == lastChanged || textAfter == lastChanged)\n return lastChanged;\n if (!descAfter || !descAfter.isText(textAfter.nodeValue)) {\n return textAfter;\n }\n else if (view.input.compositionNode == textAfter) {\n let descBefore = textBefore.pmViewDesc;\n if (!(!descBefore || !descBefore.isText(textBefore.nodeValue)))\n return textAfter;\n }\n }\n return textBefore || textAfter;\n}\nfunction timestampFromCustomEvent() {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp;\n}\n/**\n@internal\n*/\nfunction endComposition(view, restarting = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (restarting || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view), cur = view.state.selection;\n if (sel && !sel.eq(cur))\n view.dispatch(view.state.tr.setSelection(sel));\n else if ((view.markCursor || restarting) && !cur.$from.node(cur.$from.sharedDepth(cur.to)).inlineContent)\n view.dispatch(view.state.tr.deleteSelection());\n else\n view.updateState(view.state);\n return true;\n }\n return false;\n}\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode)\n return;\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n let sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(() => {\n if (wrap.parentNode)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\n}\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\nfunction getText(clipboardData) {\n let text = clipboardData.getData(\"text/plain\") || clipboardData.getData(\"Text\");\n if (text)\n return text;\n let uris = clipboardData.getData(\"text/uri-list\");\n return uris ? uris.replace(/\\r?\\n/g, \" \") : \"\";\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, getText(data), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move, node) {\n this.slice = slice;\n this.move = move;\n this.node = node;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nfunction dragMoves(view, event) {\n let moves = view.someProp(\"dragCopies\", test => !test(event));\n return moves != null ? moves : !event[dragCopyModifier];\n}\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n let node;\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n node = prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos);\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n node = prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(view.state.doc, desc.posBefore);\n }\n let draggedSlice = (node || view.state.selection).content();\n let { dom, text, slice } = serializeForClipboard(view, draggedSlice);\n // Pre-120 Chrome versions clear files when calling `clearData` (#1472)\n if (!event.dataTransfer.files.length || !chrome || chrome_version > 120)\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, dragMoves(view, event), node);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, event) => {\n try {\n handleDrop(view, event, view.dragging);\n }\n finally {\n view.dragging = null;\n }\n};\nfunction handleDrop(view, event, dragging) {\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, false); });\n }\n else {\n slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && dragMoves(view, event));\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? (0,prosemirror_transform__WEBPACK_IMPORTED_MODULE_2__.dropPoint)(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move) {\n let { node } = dragging;\n if (node)\n node.replace(tr);\n else\n tr.deleteSelection();\n }\n let pos = tr.mapping.map(insertPos);\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n let beforeInsert = tr.doc;\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n else\n tr.replaceRange(pos, pos, slice);\n if (tr.doc.eq(beforeInsert))\n return;\n let $pos = tr.doc.resolve(pos);\n if (isNode && prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection($pos));\n }\n else {\n let end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n}\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _event;\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n return; // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n }\n map(mapping, span, offset, oldOffset) {\n let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n return deleted ? null : new Decoration(pos - offset, pos - offset, this);\n }\n valid() { return true; }\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)));\n }\n destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this);\n }\n valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\n }\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants—see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\n */\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;\n }\n /**\n @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\n Creates a widget decoration, which is a DOM node that's shown in\n the document at the given position. It is recommended that you\n delay rendering the widget by passing a function that will be\n called when the widget is actually drawn in a view, but you can\n also directly pass a DOM node. `getPos` can be used to find the\n widget's current document position.\n */\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\n Creates a node decoration. `from` and `to` should point precisely\n before and after a node in the document. That node, and only that\n node, will receive the given attributes.\n */\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n /**\n @internal\n */\n get widget() { return this.type instanceof WidgetType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure—it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document. This will consume (modify) the `decorations` array, so\n you must make a copy if you want need to preserve that.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\n Find all decorations in this set which touch the given range\n (including decorations that start or end directly at the\n boundaries) and match the given predicate on their spec. When\n `start` and `end` are omitted, all decorations in the set are\n considered. When `predicate` isn't given, all decorations are\n assumed to match.\n */\n find(start, end, predicate) {\n let result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result;\n }\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset));\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1;\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n }\n /**\n Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\n */\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal;\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\n }\n if (this.children.length)\n return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Consumes the `decorations` array. Needs\n access to the current document to create the appropriate tree\n structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\n }\n addInner(doc, decorations, offset) {\n let children, childIndex = 0;\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n childIndex += 3;\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));\n childIndex += 3;\n });\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\n }\n removeInner(decorations, offset) {\n let children = this.children, local = this.local;\n for (let i = 0; i < children.length; i += 3) {\n let found;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null;\n (found || (found = [])).push(span);\n }\n }\n if (!found)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n child = this.children[i + 2];\n break;\n }\n let start = offset + 1, end = start + node.content.size;\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n return false;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n return this.local;\n let result = [];\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i]);\n }\n return result;\n }\n forEachSet(f) { f(this); }\n}\n/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\n// An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members;\n }\n map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n return DecorationSet.empty;\n let found = [];\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child);\n if (result == empty)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\n }\n locals(node) {\n let result, sorted = true;\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node);\n if (!locals.length)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty;\n case 1: return members[0];\n default: return new DecorationGroup(members.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n forEachSet(f) {\n for (let i = 0; i < this.members.length; i++)\n this.members[i].forEachSet(f);\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (oldStart >= baseOffset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\n }\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue;\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;\n let { index, offset: childOffset } = node.content.findIndex(fromLocal);\n let childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2]\n .mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i] = fromLocal;\n children[i + 1] = toLocal;\n children[i + 2] = mapped;\n }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\n }\n }\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);\n let built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) {\n children.splice(i, 3);\n i -= 3;\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i];\n while (j < children.length && children[j] < from)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n return spans;\n let result = [];\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result;\n}\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped)\n decorations.push(mapped);\n else if (options.onRemove)\n options.onRemove(set.local[i].spec);\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1);\n }\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n return null;\n let end = offset + node.nodeSize, found = null;\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n (found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found;\n}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false;\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n let subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree);\n }\n });\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (let i = 0; i < locals.length; i++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to;\n}\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans;\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i];\n if (span.from != span.to)\n for (let j = i + 1; j < working.length; j++) {\n let next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans)\n working = spans.slice();\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue;\n }\n else {\n if (next.from < span.to) {\n if (working == spans)\n working = spans.slice();\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break;\n }\n }\n }\n return working;\n}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n found.push(result);\n });\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]));\n return DecorationGroup.from(found);\n}\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\n }\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset;\n }\n}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.lastChangedTextNode = null;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n this.queue.push(mutations[i]);\n if (ie && ie_version <= 11 && mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length)) {\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n this.flushSoon();\n }\n else if (safari && view.composing && mutations.some(m => m.type == \"childList\" && m.target.nodeName == \"TR\")) {\n // Safari does weird stuff when finishing a composition in a\n // table cell, which tends to involve inserting inappropriate\n // nodes in the table row.\n view.input.badSafariComposition = true;\n this.flushSoon();\n }\n else {\n this.flush();\n }\n });\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({ target: e.target, type: \"characterData\", oldValue: e.prevValue });\n this.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\n }\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords();\n if (take.length) {\n for (let i = 0; i < take.length; i++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n return selectionToDOM(this.view);\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon();\n }\n this.flush();\n }\n setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added);\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from);\n to = to < 0 ? result.to : Math.max(result.to, to);\n if (result.typeOver)\n typeOver = true;\n }\n }\n }\n if (added.some(n => n.nodeName == \"BR\") && (view.input.lastKeyCode == 8 || view.input.lastKeyCode == 46)) {\n // Browsers sometimes insert a bogus break node if you\n // backspace out the last bit of text before an inline-flex node (#1552)\n for (let node of added)\n if (node.nodeName == \"BR\" && node.parentNode) {\n let after = node.nextSibling;\n if (after && after.nodeType == 1 && after.contentEditable == \"false\")\n node.parentNode.removeChild(node);\n }\n }\n else if (gecko && added.length) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let [a, b] = brs;\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n else {\n let { focusNode } = this.currentSelection;\n for (let br of brs) {\n let parent = br.parentNode;\n if (parent && parent.nodeName == \"LI\" && (!focusNode || blockParent(view, focusNode) != parent))\n br.remove();\n }\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n if (view.input.badSafariComposition) {\n view.input.badSafariComposition = false;\n fixUpBadSafariComposition(view, added);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n return null;\n let desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null;\n if (!desc || desc.ignoreMutation(mut))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let node = mut.addedNodes[i];\n added.push(node);\n if (node.nodeType == 3)\n this.lastChangedTextNode = node;\n }\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return { from: desc.posBefore, to: desc.posAfter };\n let prev = mut.previousSibling, next = mut.nextSibling;\n if (ie && ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let { previousSibling, nextSibling } = mut.addedNodes[i];\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n next = nextSibling;\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n let to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return { from, to };\n }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\n else { // \"characterData\"\n this.lastChangedTextNode = mut.target;\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n };\n }\n }\n}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\");\n cssCheckWarned = true;\n }\n}\nfunction rangeToSelectionRange(view, range) {\n let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n let focusNode = range.endContainer, focusOffset = range.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view, selection) {\n if (selection.getComposedRanges) {\n let range = selection.getComposedRanges(view.root)[0];\n if (range)\n return rangeToSelectionRange(view, range);\n }\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it—using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n return found ? rangeToSelectionRange(view, found) : null;\n}\nfunction blockParent(view, node) {\n for (let p = node.parentNode; p && p != view.dom; p = p.parentNode) {\n let desc = view.docView.nearestDesc(p, true);\n if (desc && desc.node.isBlock)\n return p;\n }\n return null;\n}\n// Kludge for a Safari bug where, on ending a composition in an\n// otherwise empty table cell, it randomly moves the composed text\n// into the table row around that cell, greatly confusing everything\n// (#188).\nfunction fixUpBadSafariComposition(view, addedNodes) {\n var _a;\n let { focusNode, focusOffset } = view.domSelectionRange();\n for (let node of addedNodes) {\n if (((_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName) == \"TR\") {\n let nextCell = node.nextSibling;\n while (nextCell && (nextCell.nodeName != \"TD\" && nextCell.nodeName != \"TH\"))\n nextCell = nextCell.nextSibling;\n if (nextCell) {\n let parent = nextCell;\n for (;;) {\n let first = parent.firstChild;\n if (!first || first.nodeType != 1 || first.contentEditable == \"false\" ||\n /^(BR|IMG)$/.test(first.nodeName))\n break;\n parent = first;\n }\n parent.insertBefore(node, parent.firstChild);\n if (focusNode == node)\n view.domSelection().collapse(node, focusOffset);\n }\n else {\n node.parentNode.removeChild(node);\n }\n }\n }\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{ node: anchor, offset: domSel.anchorOffset }];\n if (!selectionCollapsed(domSel))\n find.push({ node: domSel.focusNode, offset: domSel.focusOffset });\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (chrome && view.input.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n break;\n }\n }\n let startDoc = view.state.doc;\n let parser = view.someProp(\"domParser\") || prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.DOMParser.fromSchema(view.state.schema);\n let $from = startDoc.resolve(from);\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n findPositions: find,\n ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos;\n if (head == null)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\n else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\n }\n let $before = view.state.doc.resolve(from);\n let shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n let preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if (change)\n view.input.domChangeCount++;\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n if (!change) {\n if (typeOver && sel instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = { start: sel.from, endA: sel.to, endB: sel.to };\n }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (ie && ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (!$from.sameParent($to) || !$from.parent.inlineContent) &&\n $from.pos < $to.pos && !/\\S/.test(parse.doc.textBetween($from.pos, $to.pos, \"\", \"\")))) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeBackspace(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\n }\n // Chrome will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (chrome && change.endB == change.start)\n view.input.lastChromeDelete = Date.now();\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n let chFrom = change.start, chTo = change.endA;\n let mkTr = (base) => {\n let tr = base || view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from));\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel);\n // Chrome will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(chrome && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastChromeDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n return tr.scrollIntoView();\n };\n let markChange;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (ie && ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(() => selectionToDOM(view), 20);\n }\n let tr = mkTr(view.state.tr.delete(chFrom, chTo));\n let marks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n if (marks)\n tr.ensureMarks(marks);\n view.dispatch(tr);\n }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n let tr = mkTr(view.state.tr);\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n view.dispatch(tr);\n }\n else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n let deflt = () => mkTr(view.state.tr.insertText(text, chFrom, chTo));\n if (!view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text, deflt)))\n view.dispatch(deflt());\n }\n else {\n view.dispatch(mkTr());\n }\n }\n else {\n view.dispatch(mkTr());\n }\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n let added = curMarks, removed = prevMarks, type, mark, update;\n for (let i = 0; i < prevMarks.length; i++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n removed = curMarks[i].removeFromSet(removed);\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = (node) => node.mark(mark.addToSet(node.marks));\n }\n else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = (node) => node.mark(mark.removeFromSet(node.marks));\n }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (prosemirror_model__WEBPACK_IMPORTED_MODULE_0__.Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeBackspace(old, start, end, $newStart, $newEnd) {\n if ( // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false;\n let $start = old.resolve(start);\n // Handle the case where, rather than joining blocks, the change just removed an entire block\n if (!$newStart.parent.isTextblock) {\n let after = $start.nodeAfter;\n return after != null && end == start + after.nodeSize;\n }\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false;\n let $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false;\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\n}\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end;\n}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos);\n if (start == null)\n return null;\n let { a: endA, b: endB } = a.findDiffEnd(b, pos + a.size, pos + b.size);\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n if (start && start < b.size && isSurrogatePair(b.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n if (start && start < a.size && isSurrogatePair(a.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\nfunction isSurrogatePair(str) {\n if (str.length != 2)\n return false;\n let a = str.charCodeAt(0), b = str.charCodeAt(1);\n return a >= 0xDC00 && a <= 0xDFFF && b >= 0xD800 && b <= 0xDBFF;\n}\n\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\n Create a view. `place` may be a DOM node that the editor should\n be appended to, a function that will place it into the document,\n or an object whose `mount` property holds the node to use as the\n document container. If it is `null`, the editor will not be\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://github.com/ProseMirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\n When editor content is being dragged, this object contains\n information about the dragged slice and whether it is being\n copied or moved. At any other time, it is null.\n */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\n Update the view by updating existing props object with the object\n given as argument. Equivalent to `view.update(Object.assign({},\n view.props, props))`.\n */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n var _a;\n let prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (ie || chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (this.composing)\n this.input.compositionNode = findCompositionNode(this);\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco(outerDeco);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && (!this.trackWrites || !this.dom.contains(this.trackWrites)))\n forceSelUpdate = true;\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (((_a = this.dragging) === null || _a === void 0 ? void 0 : _a.node) && !prev.doc.eq(state.doc))\n this.updateDraggedNode(this.dragging, prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (!startDOM || !this.dom.contains(startDOM.nodeType == 1 ? startDOM : startDOM.parentNode)) ;\n else if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n updateDraggedNode(dragging, prev) {\n let sel = dragging.node, found = -1;\n if (this.state.doc.nodeAt(sel.from) == sel.node) {\n found = sel.from;\n }\n else {\n let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);\n let moved = movedPos > 0 && this.state.doc.nodeAt(movedPos);\n if (moved == sel.node)\n found = movedPos;\n }\n this.dragging = new Dragging(dragging.slice, dragging.move, found < 0 ? undefined : prosemirror_state__WEBPACK_IMPORTED_MODULE_1__.NodeSelection.create(this.state.doc, found));\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\n Get the document root in which the editor exists. This will\n usually be the top-level `document`, but might be a [shadow\n DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n root if the editor is inside one.\n */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n When an existing editor view is moved to a new document or\n shadow tree, call this to make it recompute its root.\n */\n updateRoot() {\n this._root = null;\n }\n /**\n Given a pair of viewport coordinates, return the document\n position that corresponds to them. May return null if the given\n coordinates aren't inside of the editor. When an object is\n returned, its `pos` property is the position nearest to the\n coordinates, and its `inside` property holds the position of the\n inner node that the position falls inside of, or -1 if it is at\n the top level, not in any node.\n */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\n Returns the viewport rectangle at a given document position.\n `left` and `right` will be the same number, as this returns a\n flat cursor-ish rectangle. If the position is between two things\n that aren't directly adjacent, `side` determines which element\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\n Find the DOM position that corresponds to the given document\n position. When `side` is negative, find the position as close as\n possible to the content before the position. When positive,\n prefer positions close to the content after the position. When\n zero, prefer as shallow a position as possible.\n \n Note that you should **not** mutate the editor's internal DOM,\n only inspect it (and even that is usually not necessary).\n */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\n Find the DOM node that represents the document node after the\n given position. May return `null` when the position doesn't point\n in front of a node or if the node is inside an opaque node view.\n \n This is intended to be able to call things like\n `getBoundingClientRect` on that DOM node. Do **not** mutate the\n editor DOM directly, or add styling this way, since that will be\n immediately overriden by the editor as it redraws the node.\n */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\n Find the document position that corresponds to a given DOM\n position. (Whenever possible, it is preferable to inspect the\n document structure directly, rather than poking around in the\n DOM, but sometimes—for example when interpreting an event\n target—you don't have a choice.)\n \n The `bias` parameter can be used to influence which side of a DOM\n node to use when the position is inside a leaf node.\n */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\n Find out whether the selection is at the end of a textblock when\n moving in a given direction. When, for example, given `\"left\"`,\n it will return true if moving left from the current cursor\n position would leave that position's parent textblock. Will apply\n to the view's current state by default, but it is possible to\n pass a different state.\n */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Serialize the given slice as it would be if it was copied from\n this editor. Returns a DOM element that contains a\n representation of the slice as its children, a textual\n representation, and the transformed slice (which can be\n different from the given input due to hooks like\n [`transformCopied`](https://prosemirror.net/docs/ref/#view.EditorProps.transformCopied)).\n */\n serializeForClipboard(slice) {\n return serializeForClipboard(this, slice);\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n return;\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n clearReusedRange();\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n @internal\n */\n domSelectionRange() {\n let sel = this.domSelection();\n if (!sel)\n return { focusNode: null, focusOffset: 0, anchorNode: null, anchorOffset: 0 };\n return safari && this.root.nodeType === 11 &&\n deepActiveElement(this.dom.ownerDocument) == this.dom && safariShadowSelectionRange(this, sel) || sel;\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nEditorView.prototype.dispatch = function (tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n};\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.from, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\n}\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth);\n}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9wcm9zZW1pcnJvci12aWV3L2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBMEY7QUFDTjtBQUNsQzs7QUFFbEQ7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0UsaUJBQWlCO0FBQ3ZGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixLQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLFdBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUscUJBQXFCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qyw4QkFBOEI7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyw4QkFBOEI7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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Q0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxRQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHdEQUFTO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLHVDQUF1Qyw0REFBYTtBQUNwRDtBQUNBO0FBQ0EseUVBQXlFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlFQUF5RSwwQ0FBMEM7QUFDbkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSx5QkFBeUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsZ0JBQWdCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxZQUFZO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLGdCQUFnQjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxrRUFBa0Usb0RBQUs7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0JBQWtCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG9CQUFvQixtQkFBbUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isd0JBQXdCO0FBQzVDO0FBQ0E7QUFDQSxnQ0FBZ0Msb0JBQW9CO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHNCQUFzQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0Es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LHVEQUFRO0FBQ2hCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxtQkFBbUI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0VBQWtFO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCw0REFBYTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsK0JBQStCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLCtCQUErQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsNkJBQTZCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RkFBNEYsNERBQWE7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwrQkFBK0I7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLG9CQUFvQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsUUFBUTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwrREFBK0QsbUNBQW1DO0FBQ2pJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRXlGIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxwcm9zZW1pcnJvci12aWV3XFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0U2VsZWN0aW9uLCBOb2RlU2VsZWN0aW9uLCBBbGxTZWxlY3Rpb24sIFNlbGVjdGlvbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7IERPTVNlcmlhbGl6ZXIsIEZyYWdtZW50LCBNYXJrLCBTbGljZSwgRE9NUGFyc2VyIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHsgZHJvcFBvaW50IH0gZnJvbSAncHJvc2VtaXJyb3ItdHJhbnNmb3JtJztcblxuY29uc3QgZG9tSW5kZXggPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIGZvciAodmFyIGluZGV4ID0gMDs7IGluZGV4KyspIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICBpZiAoIW5vZGUpXG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufTtcbmNvbnN0IHBhcmVudE5vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIGxldCBwYXJlbnQgPSBub2RlLmFzc2lnbmVkU2xvdCB8fCBub2RlLnBhcmVudE5vZGU7XG4gICAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgPT0gMTEgPyBwYXJlbnQuaG9zdCA6IHBhcmVudDtcbn07XG5sZXQgcmV1c2VkUmFuZ2UgPSBudWxsO1xuLy8gTm90ZSB0aGF0IHRoaXMgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHJhbmdlLCBiZWNhdXNlIERPTSByYW5nZVxuLy8gb2JqZWN0cyBhcmUgZXZlcnkgZXhwZW5zaXZlLCBhbmQga2VlcCBzbG93aW5nIGRvd24gc3Vic2VxdWVudCBET01cbi8vIHVwZGF0ZXMsIGZvciBzb21lIHJlYXNvbi5cbmNvbnN0IHRleHRSYW5nZSA9IGZ1bmN0aW9uIChub2RlLCBmcm9tLCB0bykge1xuICAgIGxldCByYW5nZSA9IHJldXNlZFJhbmdlIHx8IChyZXVzZWRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkpO1xuICAgIHJhbmdlLnNldEVuZChub2RlLCB0byA9PSBudWxsID8gbm9kZS5ub2RlVmFsdWUubGVuZ3RoIDogdG8pO1xuICAgIHJhbmdlLnNldFN0YXJ0KG5vZGUsIGZyb20gfHwgMCk7XG4gICAgcmV0dXJuIHJhbmdlO1xufTtcbmNvbnN0IGNsZWFyUmV1c2VkUmFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV1c2VkUmFuZ2UgPSBudWxsO1xufTtcbi8vIFNjYW5zIGZvcndhcmQgYW5kIGJhY2t3YXJkIHRocm91Z2ggRE9NIHBvc2l0aW9ucyBlcXVpdmFsZW50IHRvIHRoZVxuLy8gZ2l2ZW4gb25lIHRvIHNlZSBpZiB0aGUgdHdvIGFyZSBpbiB0aGUgc2FtZSBwbGFjZSAoaS5lLiBhZnRlciBhXG4vLyB0ZXh0IG5vZGUgdnMgYXQgdGhlIGVuZCBvZiB0aGF0IHRleHQgbm9kZSlcbmNvbnN0IGlzRXF1aXZhbGVudFBvc2l0aW9uID0gZnVuY3Rpb24gKG5vZGUsIG9mZiwgdGFyZ2V0Tm9kZSwgdGFyZ2V0T2ZmKSB7XG4gICAgcmV0dXJuIHRhcmdldE5vZGUgJiYgKHNjYW5Gb3Iobm9kZSwgb2ZmLCB0YXJnZXROb2RlLCB0YXJnZXRPZmYsIC0xKSB8fFxuICAgICAgICBzY2FuRm9yKG5vZGUsIG9mZiwgdGFyZ2V0Tm9kZSwgdGFyZ2V0T2ZmLCAxKSk7XG59O1xuY29uc3QgYXRvbUVsZW1lbnRzID0gL14oaW1nfGJyfGlucHV0fHRleHRhcmVhfGhyKSQvaTtcbmZ1bmN0aW9uIHNjYW5Gb3Iobm9kZSwgb2ZmLCB0YXJnZXROb2RlLCB0YXJnZXRPZmYsIGRpcikge1xuICAgIHZhciBfYTtcbiAgICBmb3IgKDs7KSB7XG4gICAgICAgIGlmIChub2RlID09IHRhcmdldE5vZGUgJiYgb2ZmID09IHRhcmdldE9mZilcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAob2ZmID09IChkaXIgPCAwID8gMCA6IG5vZGVTaXplKG5vZGUpKSkge1xuICAgICAgICAgICAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIGlmICghcGFyZW50IHx8IHBhcmVudC5ub2RlVHlwZSAhPSAxIHx8IGhhc0Jsb2NrRGVzYyhub2RlKSB8fCBhdG9tRWxlbWVudHMudGVzdChub2RlLm5vZGVOYW1lKSB8fFxuICAgICAgICAgICAgICAgIG5vZGUuY29udGVudEVkaXRhYmxlID09IFwiZmFsc2VcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBvZmYgPSBkb21JbmRleChub2RlKSArIChkaXIgPCAwID8gMCA6IDEpO1xuICAgICAgICAgICAgbm9kZSA9IHBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChub2RlLm5vZGVUeXBlID09IDEpIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCA9IG5vZGUuY2hpbGROb2Rlc1tvZmYgKyAoZGlyIDwgMCA/IC0xIDogMCldO1xuICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09IDEgJiYgY2hpbGQuY29udGVudEVkaXRhYmxlID09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgICAgIGlmICgoX2EgPSBjaGlsZC5wbVZpZXdEZXNjKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaWdub3JlRm9yU2VsZWN0aW9uKVxuICAgICAgICAgICAgICAgICAgICBvZmYgKz0gZGlyO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IGNoaWxkO1xuICAgICAgICAgICAgICAgIG9mZiA9IGRpciA8IDAgPyBub2RlU2l6ZShub2RlKSA6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBub2RlU2l6ZShub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT0gMyA/IG5vZGUubm9kZVZhbHVlLmxlbmd0aCA6IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7XG59XG5mdW5jdGlvbiB0ZXh0Tm9kZUJlZm9yZSQxKG5vZGUsIG9mZnNldCkge1xuICAgIGZvciAoOzspIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMyAmJiBvZmZzZXQpXG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSAmJiBvZmZzZXQgPiAwKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5jb250ZW50RWRpdGFibGUgPT0gXCJmYWxzZVwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbm9kZSA9IG5vZGUuY2hpbGROb2Rlc1tvZmZzZXQgLSAxXTtcbiAgICAgICAgICAgIG9mZnNldCA9IG5vZGVTaXplKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5vZGUucGFyZW50Tm9kZSAmJiAhaGFzQmxvY2tEZXNjKG5vZGUpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBkb21JbmRleChub2RlKTtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHRleHROb2RlQWZ0ZXIkMShub2RlLCBvZmZzZXQpIHtcbiAgICBmb3IgKDs7KSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDMgJiYgb2Zmc2V0IDwgbm9kZS5ub2RlVmFsdWUubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEgJiYgb2Zmc2V0IDwgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG5vZGUuY29udGVudEVkaXRhYmxlID09IFwiZmFsc2VcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLmNoaWxkTm9kZXNbb2Zmc2V0XTtcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobm9kZS5wYXJlbnROb2RlICYmICFoYXNCbG9ja0Rlc2Mobm9kZSkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IGRvbUluZGV4KG5vZGUpICsgMTtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGlzT25FZGdlKG5vZGUsIG9mZnNldCwgcGFyZW50KSB7XG4gICAgZm9yIChsZXQgYXRTdGFydCA9IG9mZnNldCA9PSAwLCBhdEVuZCA9IG9mZnNldCA9PSBub2RlU2l6ZShub2RlKTsgYXRTdGFydCB8fCBhdEVuZDspIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gcGFyZW50KVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGxldCBpbmRleCA9IGRvbUluZGV4KG5vZGUpO1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICBpZiAoIW5vZGUpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGF0U3RhcnQgPSBhdFN0YXJ0ICYmIGluZGV4ID09IDA7XG4gICAgICAgIGF0RW5kID0gYXRFbmQgJiYgaW5kZXggPT0gbm9kZVNpemUobm9kZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gaGFzQmxvY2tEZXNjKGRvbSkge1xuICAgIGxldCBkZXNjO1xuICAgIGZvciAobGV0IGN1ciA9IGRvbTsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSlcbiAgICAgICAgaWYgKGRlc2MgPSBjdXIucG1WaWV3RGVzYylcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIHJldHVybiBkZXNjICYmIGRlc2Mubm9kZSAmJiBkZXNjLm5vZGUuaXNCbG9jayAmJiAoZGVzYy5kb20gPT0gZG9tIHx8IGRlc2MuY29udGVudERPTSA9PSBkb20pO1xufVxuLy8gV29yayBhcm91bmQgQ2hyb21lIGlzc3VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ0NzUyM1xuLy8gKGlzQ29sbGFwc2VkIGluYXBwcm9wcmlhdGVseSByZXR1cm5zIHRydWUgaW4gc2hhZG93IGRvbSlcbmNvbnN0IHNlbGVjdGlvbkNvbGxhcHNlZCA9IGZ1bmN0aW9uIChkb21TZWwpIHtcbiAgICByZXR1cm4gZG9tU2VsLmZvY3VzTm9kZSAmJiBpc0VxdWl2YWxlbnRQb3NpdGlvbihkb21TZWwuZm9jdXNOb2RlLCBkb21TZWwuZm9jdXNPZmZzZXQsIGRvbVNlbC5hbmNob3JOb2RlLCBkb21TZWwuYW5jaG9yT2Zmc2V0KTtcbn07XG5mdW5jdGlvbiBrZXlFdmVudChrZXlDb2RlLCBrZXkpIHtcbiAgICBsZXQgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xuICAgIGV2ZW50LmluaXRFdmVudChcImtleWRvd25cIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgZXZlbnQua2V5Q29kZSA9IGtleUNvZGU7XG4gICAgZXZlbnQua2V5ID0gZXZlbnQuY29kZSA9IGtleTtcbiAgICByZXR1cm4gZXZlbnQ7XG59XG5mdW5jdGlvbiBkZWVwQWN0aXZlRWxlbWVudChkb2MpIHtcbiAgICBsZXQgZWx0ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7XG4gICAgd2hpbGUgKGVsdCAmJiBlbHQuc2hhZG93Um9vdClcbiAgICAgICAgZWx0ID0gZWx0LnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gZWx0O1xufVxuZnVuY3Rpb24gY2FyZXRGcm9tUG9pbnQoZG9jLCB4LCB5KSB7XG4gICAgaWYgKGRvYy5jYXJldFBvc2l0aW9uRnJvbVBvaW50KSB7XG4gICAgICAgIHRyeSB7IC8vIEZpcmVmb3ggdGhyb3dzIGZvciB0aGlzIGNhbGwgaW4gaGFyZC10by1wcmVkaWN0IGNpcmN1bXN0YW5jZXMgKCM5OTQpXG4gICAgICAgICAgICBsZXQgcG9zID0gZG9jLmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQoeCwgeSk7XG4gICAgICAgICAgICAvLyBDbGlwIHRoZSBvZmZzZXQsIGJlY2F1c2UgQ2hyb21lIHdpbGwgcmV0dXJuIGEgdGV4dCBvZmZzZXRcbiAgICAgICAgICAgIC8vIGludG8gPGlucHV0PiBub2Rlcywgd2hpY2ggY2FuJ3QgYmUgdHJlYXRlZCBhcyBhIHJlZ3VsYXIgRE9NXG4gICAgICAgICAgICAvLyBvZmZzZXRcbiAgICAgICAgICAgIGlmIChwb3MpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbm9kZTogcG9zLm9mZnNldE5vZGUsIG9mZnNldDogTWF0aC5taW4obm9kZVNpemUocG9zLm9mZnNldE5vZGUpLCBwb3Mub2Zmc2V0KSB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfKSB7IH1cbiAgICB9XG4gICAgaWYgKGRvYy5jYXJldFJhbmdlRnJvbVBvaW50KSB7XG4gICAgICAgIGxldCByYW5nZSA9IGRvYy5jYXJldFJhbmdlRnJvbVBvaW50KHgsIHkpO1xuICAgICAgICBpZiAocmFuZ2UpXG4gICAgICAgICAgICByZXR1cm4geyBub2RlOiByYW5nZS5zdGFydENvbnRhaW5lciwgb2Zmc2V0OiBNYXRoLm1pbihub2RlU2l6ZShyYW5nZS5zdGFydENvbnRhaW5lciksIHJhbmdlLnN0YXJ0T2Zmc2V0KSB9O1xuICAgIH1cbn1cblxuY29uc3QgbmF2ID0gdHlwZW9mIG5hdmlnYXRvciAhPSBcInVuZGVmaW5lZFwiID8gbmF2aWdhdG9yIDogbnVsbDtcbmNvbnN0IGRvYyA9IHR5cGVvZiBkb2N1bWVudCAhPSBcInVuZGVmaW5lZFwiID8gZG9jdW1lbnQgOiBudWxsO1xuY29uc3QgYWdlbnQgPSAobmF2ICYmIG5hdi51c2VyQWdlbnQpIHx8IFwiXCI7XG5jb25zdCBpZV9lZGdlID0gL0VkZ2VcXC8oXFxkKykvLmV4ZWMoYWdlbnQpO1xuY29uc3QgaWVfdXB0bzEwID0gL01TSUUgXFxkLy5leGVjKGFnZW50KTtcbmNvbnN0IGllXzExdXAgPSAvVHJpZGVudFxcLyg/Ols3LTldfFxcZHsyLH0pXFwuLipydjooXFxkKykvLmV4ZWMoYWdlbnQpO1xuY29uc3QgaWUgPSAhIShpZV91cHRvMTAgfHwgaWVfMTF1cCB8fCBpZV9lZGdlKTtcbmNvbnN0IGllX3ZlcnNpb24gPSBpZV91cHRvMTAgPyBkb2N1bWVudC5kb2N1bWVudE1vZGUgOiBpZV8xMXVwID8gK2llXzExdXBbMV0gOiBpZV9lZGdlID8gK2llX2VkZ2VbMV0gOiAwO1xuY29uc3QgZ2Vja28gPSAhaWUgJiYgL2dlY2tvXFwvKFxcZCspL2kudGVzdChhZ2VudCk7XG5nZWNrbyAmJiArKC9GaXJlZm94XFwvKFxcZCspLy5leGVjKGFnZW50KSB8fCBbMCwgMF0pWzFdO1xuY29uc3QgX2Nocm9tZSA9ICFpZSAmJiAvQ2hyb21lXFwvKFxcZCspLy5leGVjKGFnZW50KTtcbmNvbnN0IGNocm9tZSA9ICEhX2Nocm9tZTtcbmNvbnN0IGNocm9tZV92ZXJzaW9uID0gX2Nocm9tZSA/ICtfY2hyb21lWzFdIDogMDtcbmNvbnN0IHNhZmFyaSA9ICFpZSAmJiAhIW5hdiAmJiAvQXBwbGUgQ29tcHV0ZXIvLnRlc3QobmF2LnZlbmRvcik7XG4vLyBJcyB0cnVlIGZvciBib3RoIGlPUyBhbmQgaVBhZE9TIGZvciBjb252ZW5pZW5jZVxuY29uc3QgaW9zID0gc2FmYXJpICYmICgvTW9iaWxlXFwvXFx3Ky8udGVzdChhZ2VudCkgfHwgISFuYXYgJiYgbmF2Lm1heFRvdWNoUG9pbnRzID4gMik7XG5jb25zdCBtYWMgPSBpb3MgfHwgKG5hdiA/IC9NYWMvLnRlc3QobmF2LnBsYXRmb3JtKSA6IGZhbHNlKTtcbmNvbnN0IHdpbmRvd3MgPSBuYXYgPyAvV2luLy50ZXN0KG5hdi5wbGF0Zm9ybSkgOiBmYWxzZTtcbmNvbnN0IGFuZHJvaWQgPSAvQW5kcm9pZCBcXGQvLnRlc3QoYWdlbnQpO1xuY29uc3Qgd2Via2l0ID0gISFkb2MgJiYgXCJ3ZWJraXRGb250U21vb3RoaW5nXCIgaW4gZG9jLmRvY3VtZW50RWxlbWVudC5zdHlsZTtcbmNvbnN0IHdlYmtpdF92ZXJzaW9uID0gd2Via2l0ID8gKygvXFxiQXBwbGVXZWJLaXRcXC8oXFxkKykvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCkgfHwgWzAsIDBdKVsxXSA6IDA7XG5cbmZ1bmN0aW9uIHdpbmRvd1JlY3QoZG9jKSB7XG4gICAgbGV0IHZwID0gZG9jLmRlZmF1bHRWaWV3ICYmIGRvYy5kZWZhdWx0Vmlldy52aXN1YWxWaWV3cG9ydDtcbiAgICBpZiAodnApXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsZWZ0OiAwLCByaWdodDogdnAud2lkdGgsXG4gICAgICAgICAgICB0b3A6IDAsIGJvdHRvbTogdnAuaGVpZ2h0XG4gICAgICAgIH07XG4gICAgcmV0dXJuIHsgbGVmdDogMCwgcmlnaHQ6IGRvYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsXG4gICAgICAgIHRvcDogMCwgYm90dG9tOiBkb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB9O1xufVxuZnVuY3Rpb24gZ2V0U2lkZSh2YWx1ZSwgc2lkZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gXCJudW1iZXJcIiA/IHZhbHVlIDogdmFsdWVbc2lkZV07XG59XG5mdW5jdGlvbiBjbGllbnRSZWN0KG5vZGUpIHtcbiAgICBsZXQgcmVjdCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgLy8gQWRqdXN0IGZvciBlbGVtZW50cyB3aXRoIHN0eWxlIFwidHJhbnNmb3JtOiBzY2FsZSgpXCJcbiAgICBsZXQgc2NhbGVYID0gKHJlY3Qud2lkdGggLyBub2RlLm9mZnNldFdpZHRoKSB8fCAxO1xuICAgIGxldCBzY2FsZVkgPSAocmVjdC5oZWlnaHQgLyBub2RlLm9mZnNldEhlaWdodCkgfHwgMTtcbiAgICAvLyBNYWtlIHN1cmUgc2Nyb2xsYmFyIHdpZHRoIGlzbid0IGluY2x1ZGVkIGluIHRoZSByZWN0YW5nbGVcbiAgICByZXR1cm4geyBsZWZ0OiByZWN0LmxlZnQsIHJpZ2h0OiByZWN0LmxlZnQgKyBub2RlLmNsaWVudFdpZHRoICogc2NhbGVYLFxuICAgICAgICB0b3A6IHJlY3QudG9wLCBib3R0b206IHJlY3QudG9wICsgbm9kZS5jbGllbnRIZWlnaHQgKiBzY2FsZVkgfTtcbn1cbmZ1bmN0aW9uIHNjcm9sbFJlY3RJbnRvVmlldyh2aWV3LCByZWN0LCBzdGFydERPTSkge1xuICAgIGxldCBzY3JvbGxUaHJlc2hvbGQgPSB2aWV3LnNvbWVQcm9wKFwic2Nyb2xsVGhyZXNob2xkXCIpIHx8IDAsIHNjcm9sbE1hcmdpbiA9IHZpZXcuc29tZVByb3AoXCJzY3JvbGxNYXJnaW5cIikgfHwgNTtcbiAgICBsZXQgZG9jID0gdmlldy5kb20ub3duZXJEb2N1bWVudDtcbiAgICBmb3IgKGxldCBwYXJlbnQgPSBzdGFydERPTSB8fCB2aWV3LmRvbTs7KSB7XG4gICAgICAgIGlmICghcGFyZW50KVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChwYXJlbnQubm9kZVR5cGUgIT0gMSkge1xuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50Tm9kZShwYXJlbnQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGVsdCA9IHBhcmVudDtcbiAgICAgICAgbGV0IGF0VG9wID0gZWx0ID09IGRvYy5ib2R5O1xuICAgICAgICBsZXQgYm91bmRpbmcgPSBhdFRvcCA/IHdpbmRvd1JlY3QoZG9jKSA6IGNsaWVudFJlY3QoZWx0KTtcbiAgICAgICAgbGV0IG1vdmVYID0gMCwgbW92ZVkgPSAwO1xuICAgICAgICBpZiAocmVjdC50b3AgPCBib3VuZGluZy50b3AgKyBnZXRTaWRlKHNjcm9sbFRocmVzaG9sZCwgXCJ0b3BcIikpXG4gICAgICAgICAgICBtb3ZlWSA9IC0oYm91bmRpbmcudG9wIC0gcmVjdC50b3AgKyBnZXRTaWRlKHNjcm9sbE1hcmdpbiwgXCJ0b3BcIikpO1xuICAgICAgICBlbHNlIGlmIChyZWN0LmJvdHRvbSA+IGJvdW5kaW5nLmJvdHRvbSAtIGdldFNpZGUoc2Nyb2xsVGhyZXNob2xkLCBcImJvdHRvbVwiKSlcbiAgICAgICAgICAgIG1vdmVZID0gcmVjdC5ib3R0b20gLSByZWN0LnRvcCA+IGJvdW5kaW5nLmJvdHRvbSAtIGJvdW5kaW5nLnRvcFxuICAgICAgICAgICAgICAgID8gcmVjdC50b3AgKyBnZXRTaWRlKHNjcm9sbE1hcmdpbiwgXCJ0b3BcIikgLSBib3VuZGluZy50b3BcbiAgICAgICAgICAgICAgICA6IHJlY3QuYm90dG9tIC0gYm91bmRpbmcuYm90dG9tICsgZ2V0U2lkZShzY3JvbGxNYXJnaW4sIFwiYm90dG9tXCIpO1xuICAgICAgICBpZiAocmVjdC5sZWZ0IDwgYm91bmRpbmcubGVmdCArIGdldFNpZGUoc2Nyb2xsVGhyZXNob2xkLCBcImxlZnRcIikpXG4gICAgICAgICAgICBtb3ZlWCA9IC0oYm91bmRpbmcubGVmdCAtIHJlY3QubGVmdCArIGdldFNpZGUoc2Nyb2xsTWFyZ2luLCBcImxlZnRcIikpO1xuICAgICAgICBlbHNlIGlmIChyZWN0LnJpZ2h0ID4gYm91bmRpbmcucmlnaHQgLSBnZXRTaWRlKHNjcm9sbFRocmVzaG9sZCwgXCJyaWdodFwiKSlcbiAgICAgICAgICAgIG1vdmVYID0gcmVjdC5yaWdodCAtIGJvdW5kaW5nLnJpZ2h0ICsgZ2V0U2lkZShzY3JvbGxNYXJnaW4sIFwicmlnaHRcIik7XG4gICAgICAgIGlmIChtb3ZlWCB8fCBtb3ZlWSkge1xuICAgICAgICAgICAgaWYgKGF0VG9wKSB7XG4gICAgICAgICAgICAgICAgZG9jLmRlZmF1bHRWaWV3LnNjcm9sbEJ5KG1vdmVYLCBtb3ZlWSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnRYID0gZWx0LnNjcm9sbExlZnQsIHN0YXJ0WSA9IGVsdC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVZKVxuICAgICAgICAgICAgICAgICAgICBlbHQuc2Nyb2xsVG9wICs9IG1vdmVZO1xuICAgICAgICAgICAgICAgIGlmIChtb3ZlWClcbiAgICAgICAgICAgICAgICAgICAgZWx0LnNjcm9sbExlZnQgKz0gbW92ZVg7XG4gICAgICAgICAgICAgICAgbGV0IGRYID0gZWx0LnNjcm9sbExlZnQgLSBzdGFydFgsIGRZID0gZWx0LnNjcm9sbFRvcCAtIHN0YXJ0WTtcbiAgICAgICAgICAgICAgICByZWN0ID0geyBsZWZ0OiByZWN0LmxlZnQgLSBkWCwgdG9wOiByZWN0LnRvcCAtIGRZLCByaWdodDogcmVjdC5yaWdodCAtIGRYLCBib3R0b206IHJlY3QuYm90dG9tIC0gZFkgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcG9zID0gYXRUb3AgPyBcImZpeGVkXCIgOiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudCkucG9zaXRpb247XG4gICAgICAgIGlmICgvXihmaXhlZHxzdGlja3kpJC8udGVzdChwb3MpKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIHBhcmVudCA9IHBvcyA9PSBcImFic29sdXRlXCIgPyBwYXJlbnQub2Zmc2V0UGFyZW50IDogcGFyZW50Tm9kZShwYXJlbnQpO1xuICAgIH1cbn1cbi8vIFN0b3JlIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIGVkaXRvcidzIHBhcmVudCBub2RlcywgYWxvbmcgd2l0aFxuLy8gdGhlIHRvcCBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IG5lYXIgdGhlIHRvcCBvZiB0aGUgZWRpdG9yLCB3aGljaFxuLy8gd2lsbCBiZSB1c2VkIHRvIG1ha2Ugc3VyZSB0aGUgdmlzaWJsZSB2aWV3cG9ydCByZW1haW5zIHN0YWJsZSBldmVuXG4vLyB3aGVuIHRoZSBzaXplIG9mIHRoZSBjb250ZW50IGFib3ZlIGNoYW5nZXMuXG5mdW5jdGlvbiBzdG9yZVNjcm9sbFBvcyh2aWV3KSB7XG4gICAgbGV0IHJlY3QgPSB2aWV3LmRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgc3RhcnRZID0gTWF0aC5tYXgoMCwgcmVjdC50b3ApO1xuICAgIGxldCByZWZET00sIHJlZlRvcDtcbiAgICBmb3IgKGxldCB4ID0gKHJlY3QubGVmdCArIHJlY3QucmlnaHQpIC8gMiwgeSA9IHN0YXJ0WSArIDE7IHkgPCBNYXRoLm1pbihpbm5lckhlaWdodCwgcmVjdC5ib3R0b20pOyB5ICs9IDUpIHtcbiAgICAgICAgbGV0IGRvbSA9IHZpZXcucm9vdC5lbGVtZW50RnJvbVBvaW50KHgsIHkpO1xuICAgICAgICBpZiAoIWRvbSB8fCBkb20gPT0gdmlldy5kb20gfHwgIXZpZXcuZG9tLmNvbnRhaW5zKGRvbSkpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgbGV0IGxvY2FsUmVjdCA9IGRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKGxvY2FsUmVjdC50b3AgPj0gc3RhcnRZIC0gMjApIHtcbiAgICAgICAgICAgIHJlZkRPTSA9IGRvbTtcbiAgICAgICAgICAgIHJlZlRvcCA9IGxvY2FsUmVjdC50b3A7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyByZWZET006IHJlZkRPTSwgcmVmVG9wOiByZWZUb3AsIHN0YWNrOiBzY3JvbGxTdGFjayh2aWV3LmRvbSkgfTtcbn1cbmZ1bmN0aW9uIHNjcm9sbFN0YWNrKGRvbSkge1xuICAgIGxldCBzdGFjayA9IFtdLCBkb2MgPSBkb20ub3duZXJEb2N1bWVudDtcbiAgICBmb3IgKGxldCBjdXIgPSBkb207IGN1cjsgY3VyID0gcGFyZW50Tm9kZShjdXIpKSB7XG4gICAgICAgIHN0YWNrLnB1c2goeyBkb206IGN1ciwgdG9wOiBjdXIuc2Nyb2xsVG9wLCBsZWZ0OiBjdXIuc2Nyb2xsTGVmdCB9KTtcbiAgICAgICAgaWYgKGRvbSA9PSBkb2MpXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHN0YWNrO1xufVxuLy8gUmVzZXQgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgZWRpdG9yJ3MgcGFyZW50IG5vZGVzIHRvIHRoYXQgd2hhdFxuLy8gaXQgd2FzIGJlZm9yZSwgd2hlbiBzdG9yZVNjcm9sbFBvcyB3YXMgY2FsbGVkLlxuZnVuY3Rpb24gcmVzZXRTY3JvbGxQb3MoeyByZWZET00sIHJlZlRvcCwgc3RhY2sgfSkge1xuICAgIGxldCBuZXdSZWZUb3AgPSByZWZET00gPyByZWZET00uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDogMDtcbiAgICByZXN0b3JlU2Nyb2xsU3RhY2soc3RhY2ssIG5ld1JlZlRvcCA9PSAwID8gMCA6IG5ld1JlZlRvcCAtIHJlZlRvcCk7XG59XG5mdW5jdGlvbiByZXN0b3JlU2Nyb2xsU3RhY2soc3RhY2ssIGRUb3ApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCB7IGRvbSwgdG9wLCBsZWZ0IH0gPSBzdGFja1tpXTtcbiAgICAgICAgaWYgKGRvbS5zY3JvbGxUb3AgIT0gdG9wICsgZFRvcClcbiAgICAgICAgICAgIGRvbS5zY3JvbGxUb3AgPSB0b3AgKyBkVG9wO1xuICAgICAgICBpZiAoZG9tLnNjcm9sbExlZnQgIT0gbGVmdClcbiAgICAgICAgICAgIGRvbS5zY3JvbGxMZWZ0ID0gbGVmdDtcbiAgICB9XG59XG5sZXQgcHJldmVudFNjcm9sbFN1cHBvcnRlZCA9IG51bGw7XG4vLyBGZWF0dXJlLWRldGVjdHMgc3VwcG9ydCBmb3IgLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSksIGFuZCB1c2VzXG4vLyBhIGZhbGxiYWNrIGtsdWRnZSB3aGVuIG5vdCBzdXBwb3J0ZWQuXG5mdW5jdGlvbiBmb2N1c1ByZXZlbnRTY3JvbGwoZG9tKSB7XG4gICAgaWYgKGRvbS5zZXRBY3RpdmUpXG4gICAgICAgIHJldHVybiBkb20uc2V0QWN0aXZlKCk7IC8vIGluIElFXG4gICAgaWYgKHByZXZlbnRTY3JvbGxTdXBwb3J0ZWQpXG4gICAgICAgIHJldHVybiBkb20uZm9jdXMocHJldmVudFNjcm9sbFN1cHBvcnRlZCk7XG4gICAgbGV0IHN0b3JlZCA9IHNjcm9sbFN0YWNrKGRvbSk7XG4gICAgZG9tLmZvY3VzKHByZXZlbnRTY3JvbGxTdXBwb3J0ZWQgPT0gbnVsbCA/IHtcbiAgICAgICAgZ2V0IHByZXZlbnRTY3JvbGwoKSB7XG4gICAgICAgICAgICBwcmV2ZW50U2Nyb2xsU3VwcG9ydGVkID0geyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH07XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0gOiB1bmRlZmluZWQpO1xuICAgIGlmICghcHJldmVudFNjcm9sbFN1cHBvcnRlZCkge1xuICAgICAgICBwcmV2ZW50U2Nyb2xsU3VwcG9ydGVkID0gZmFsc2U7XG4gICAgICAgIHJlc3RvcmVTY3JvbGxTdGFjayhzdG9yZWQsIDApO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGZpbmRPZmZzZXRJbk5vZGUobm9kZSwgY29vcmRzKSB7XG4gICAgbGV0IGNsb3Nlc3QsIGR4Q2xvc2VzdCA9IDJlOCwgY29vcmRzQ2xvc2VzdCwgb2Zmc2V0ID0gMDtcbiAgICBsZXQgcm93Qm90ID0gY29vcmRzLnRvcCwgcm93VG9wID0gY29vcmRzLnRvcDtcbiAgICBsZXQgZmlyc3RCZWxvdywgY29vcmRzQmVsb3c7XG4gICAgZm9yIChsZXQgY2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQsIGNoaWxkSW5kZXggPSAwOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZywgY2hpbGRJbmRleCsrKSB7XG4gICAgICAgIGxldCByZWN0cztcbiAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09IDEpXG4gICAgICAgICAgICByZWN0cyA9IGNoaWxkLmdldENsaWVudFJlY3RzKCk7XG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09IDMpXG4gICAgICAgICAgICByZWN0cyA9IHRleHRSYW5nZShjaGlsZCkuZ2V0Q2xpZW50UmVjdHMoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByZWN0ID0gcmVjdHNbaV07XG4gICAgICAgICAgICBpZiAocmVjdC50b3AgPD0gcm93Qm90ICYmIHJlY3QuYm90dG9tID49IHJvd1RvcCkge1xuICAgICAgICAgICAgICAgIHJvd0JvdCA9IE1hdGgubWF4KHJlY3QuYm90dG9tLCByb3dCb3QpO1xuICAgICAgICAgICAgICAgIHJvd1RvcCA9IE1hdGgubWluKHJlY3QudG9wLCByb3dUb3ApO1xuICAgICAgICAgICAgICAgIGxldCBkeCA9IHJlY3QubGVmdCA+IGNvb3Jkcy5sZWZ0ID8gcmVjdC5sZWZ0IC0gY29vcmRzLmxlZnRcbiAgICAgICAgICAgICAgICAgICAgOiByZWN0LnJpZ2h0IDwgY29vcmRzLmxlZnQgPyBjb29yZHMubGVmdCAtIHJlY3QucmlnaHQgOiAwO1xuICAgICAgICAgICAgICAgIGlmIChkeCA8IGR4Q2xvc2VzdCkge1xuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0ID0gY2hpbGQ7XG4gICAgICAgICAgICAgICAgICAgIGR4Q2xvc2VzdCA9IGR4O1xuICAgICAgICAgICAgICAgICAgICBjb29yZHNDbG9zZXN0ID0gZHggJiYgY2xvc2VzdC5ub2RlVHlwZSA9PSAzID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogcmVjdC5yaWdodCA8IGNvb3Jkcy5sZWZ0ID8gcmVjdC5yaWdodCA6IHJlY3QubGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogY29vcmRzLnRvcFxuICAgICAgICAgICAgICAgICAgICB9IDogY29vcmRzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT0gMSAmJiBkeClcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IGNoaWxkSW5kZXggKyAoY29vcmRzLmxlZnQgPj0gKHJlY3QubGVmdCArIHJlY3QucmlnaHQpIC8gMiA/IDEgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVjdC50b3AgPiBjb29yZHMudG9wICYmICFmaXJzdEJlbG93ICYmIHJlY3QubGVmdCA8PSBjb29yZHMubGVmdCAmJiByZWN0LnJpZ2h0ID49IGNvb3Jkcy5sZWZ0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3RCZWxvdyA9IGNoaWxkO1xuICAgICAgICAgICAgICAgIGNvb3Jkc0JlbG93ID0geyBsZWZ0OiBNYXRoLm1heChyZWN0LmxlZnQsIE1hdGgubWluKHJlY3QucmlnaHQsIGNvb3Jkcy5sZWZ0KSksIHRvcDogcmVjdC50b3AgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2xvc2VzdCAmJiAoY29vcmRzLmxlZnQgPj0gcmVjdC5yaWdodCAmJiBjb29yZHMudG9wID49IHJlY3QudG9wIHx8XG4gICAgICAgICAgICAgICAgY29vcmRzLmxlZnQgPj0gcmVjdC5sZWZ0ICYmIGNvb3Jkcy50b3AgPj0gcmVjdC5ib3R0b20pKVxuICAgICAgICAgICAgICAgIG9mZnNldCA9IGNoaWxkSW5kZXggKyAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghY2xvc2VzdCAmJiBmaXJzdEJlbG93KSB7XG4gICAgICAgIGNsb3Nlc3QgPSBmaXJzdEJlbG93O1xuICAgICAgICBjb29yZHNDbG9zZXN0ID0gY29vcmRzQmVsb3c7XG4gICAgICAgIGR4Q2xvc2VzdCA9IDA7XG4gICAgfVxuICAgIGlmIChjbG9zZXN0ICYmIGNsb3Nlc3Qubm9kZVR5cGUgPT0gMylcbiAgICAgICAgcmV0dXJuIGZpbmRPZmZzZXRJblRleHQoY2xvc2VzdCwgY29vcmRzQ2xvc2VzdCk7XG4gICAgaWYgKCFjbG9zZXN0IHx8IChkeENsb3Nlc3QgJiYgY2xvc2VzdC5ub2RlVHlwZSA9PSAxKSlcbiAgICAgICAgcmV0dXJuIHsgbm9kZSwgb2Zmc2V0IH07XG4gICAgcmV0dXJuIGZpbmRPZmZzZXRJbk5vZGUoY2xvc2VzdCwgY29vcmRzQ2xvc2VzdCk7XG59XG5mdW5jdGlvbiBmaW5kT2Zmc2V0SW5UZXh0KG5vZGUsIGNvb3Jkcykge1xuICAgIGxldCBsZW4gPSBub2RlLm5vZGVWYWx1ZS5sZW5ndGg7XG4gICAgbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSwgcmVzdWx0O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgcmFuZ2Uuc2V0RW5kKG5vZGUsIGkgKyAxKTtcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQobm9kZSwgaSk7XG4gICAgICAgIGxldCByZWN0ID0gc2luZ2xlUmVjdChyYW5nZSwgMSk7XG4gICAgICAgIGlmIChyZWN0LnRvcCA9PSByZWN0LmJvdHRvbSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBpZiAoaW5SZWN0KGNvb3JkcywgcmVjdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHsgbm9kZSwgb2Zmc2V0OiBpICsgKGNvb3Jkcy5sZWZ0ID49IChyZWN0LmxlZnQgKyByZWN0LnJpZ2h0KSAvIDIgPyAxIDogMCkgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJhbmdlLmRldGFjaCgpO1xuICAgIHJldHVybiByZXN1bHQgfHwgeyBub2RlLCBvZmZzZXQ6IDAgfTtcbn1cbmZ1bmN0aW9uIGluUmVjdChjb29yZHMsIHJlY3QpIHtcbiAgICByZXR1cm4gY29vcmRzLmxlZnQgPj0gcmVjdC5sZWZ0IC0gMSAmJiBjb29yZHMubGVmdCA8PSByZWN0LnJpZ2h0ICsgMSAmJlxuICAgICAgICBjb29yZHMudG9wID49IHJlY3QudG9wIC0gMSAmJiBjb29yZHMudG9wIDw9IHJlY3QuYm90dG9tICsgMTtcbn1cbmZ1bmN0aW9uIHRhcmdldEtsdWRnZShkb20sIGNvb3Jkcykge1xuICAgIGxldCBwYXJlbnQgPSBkb20ucGFyZW50Tm9kZTtcbiAgICBpZiAocGFyZW50ICYmIC9ebGkkL2kudGVzdChwYXJlbnQubm9kZU5hbWUpICYmIGNvb3Jkcy5sZWZ0IDwgZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpXG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgcmV0dXJuIGRvbTtcbn1cbmZ1bmN0aW9uIHBvc0Zyb21FbGVtZW50KHZpZXcsIGVsdCwgY29vcmRzKSB7XG4gICAgbGV0IHsgbm9kZSwgb2Zmc2V0IH0gPSBmaW5kT2Zmc2V0SW5Ob2RlKGVsdCwgY29vcmRzKSwgYmlhcyA9IC0xO1xuICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEgJiYgIW5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICBsZXQgcmVjdCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGJpYXMgPSByZWN0LmxlZnQgIT0gcmVjdC5yaWdodCAmJiBjb29yZHMubGVmdCA+IChyZWN0LmxlZnQgKyByZWN0LnJpZ2h0KSAvIDIgPyAxIDogLTE7XG4gICAgfVxuICAgIHJldHVybiB2aWV3LmRvY1ZpZXcucG9zRnJvbURPTShub2RlLCBvZmZzZXQsIGJpYXMpO1xufVxuZnVuY3Rpb24gcG9zRnJvbUNhcmV0KHZpZXcsIG5vZGUsIG9mZnNldCwgY29vcmRzKSB7XG4gICAgLy8gQnJvd3NlciAoaW4gY2FyZXRQb3NpdGlvbi9SYW5nZUZyb21Qb2ludCkgd2lsbCBhZ3Jlc3NpdmVseVxuICAgIC8vIG5vcm1hbGl6ZSB0b3dhcmRzIG5lYXJieSBpbmxpbmUgbm9kZXMuIFNpbmNlIHdlIGFyZSBpbnRlcmVzdGVkIGluXG4gICAgLy8gcG9zaXRpb25zIGJldHdlZW4gYmxvY2sgbm9kZXMgdG9vLCB3ZSBmaXJzdCB3YWxrIHVwIHRoZSBoaWVyYXJjaHlcbiAgICAvLyBvZiBub2RlcyB0byBzZWUgaWYgdGhlcmUgYXJlIGJsb2NrIG5vZGVzIHRoYXQgdGhlIGNvb3JkaW5hdGVzXG4gICAgLy8gZmFsbCBvdXRzaWRlIG9mLiBJZiBzbywgd2UgdGFrZSB0aGUgcG9zaXRpb24gYmVmb3JlL2FmdGVyIHRoYXRcbiAgICAvLyBibG9jay4gSWYgbm90LCB3ZSBjYWxsIGBwb3NGcm9tRE9NYCBvbiB0aGUgcmF3IG5vZGUvb2Zmc2V0LlxuICAgIGxldCBvdXRzaWRlQmxvY2sgPSAtMTtcbiAgICBmb3IgKGxldCBjdXIgPSBub2RlLCBzYXdCbG9jayA9IGZhbHNlOzspIHtcbiAgICAgICAgaWYgKGN1ciA9PSB2aWV3LmRvbSlcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBsZXQgZGVzYyA9IHZpZXcuZG9jVmlldy5uZWFyZXN0RGVzYyhjdXIsIHRydWUpLCByZWN0O1xuICAgICAgICBpZiAoIWRlc2MpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKGRlc2MuZG9tLm5vZGVUeXBlID09IDEgJiYgKGRlc2Mubm9kZS5pc0Jsb2NrICYmIGRlc2MucGFyZW50IHx8ICFkZXNjLmNvbnRlbnRET00pICYmXG4gICAgICAgICAgICAvLyBJZ25vcmUgZWxlbWVudHMgd2l0aCB6ZXJvLXNpemUgYm91bmRpbmcgcmVjdGFuZ2xlc1xuICAgICAgICAgICAgKChyZWN0ID0gZGVzYy5kb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLndpZHRoIHx8IHJlY3QuaGVpZ2h0KSkge1xuICAgICAgICAgICAgaWYgKGRlc2Mubm9kZS5pc0Jsb2NrICYmIGRlc2MucGFyZW50ICYmICEvXlQoUnxCT0RZfEhFQUR8Rk9PVCkkLy50ZXN0KGRlc2MuZG9tLm5vZGVOYW1lKSkge1xuICAgICAgICAgICAgICAgIC8vIE9ubHkgYXBwbHkgdGhlIGhvcml6b250YWwgdGVzdCB0byB0aGUgaW5uZXJtb3N0IGJsb2NrLiBWZXJ0aWNhbCBmb3IgYW55IHBhcmVudC5cbiAgICAgICAgICAgICAgICBpZiAoIXNhd0Jsb2NrICYmIHJlY3QubGVmdCA+IGNvb3Jkcy5sZWZ0IHx8IHJlY3QudG9wID4gY29vcmRzLnRvcClcbiAgICAgICAgICAgICAgICAgICAgb3V0c2lkZUJsb2NrID0gZGVzYy5wb3NCZWZvcmU7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXNhd0Jsb2NrICYmIHJlY3QucmlnaHQgPCBjb29yZHMubGVmdCB8fCByZWN0LmJvdHRvbSA8IGNvb3Jkcy50b3ApXG4gICAgICAgICAgICAgICAgICAgIG91dHNpZGVCbG9jayA9IGRlc2MucG9zQWZ0ZXI7XG4gICAgICAgICAgICAgICAgc2F3QmxvY2sgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFkZXNjLmNvbnRlbnRET00gJiYgb3V0c2lkZUJsb2NrIDwgMCAmJiAhZGVzYy5ub2RlLmlzVGV4dCkge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbnNpZGUgYSBsZWFmLCByZXR1cm4gdGhlIHNpZGUgb2YgdGhlIGxlYWYgY2xvc2VyIHRvIHRoZSBjb29yZHNcbiAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID0gZGVzYy5ub2RlLmlzQmxvY2sgPyBjb29yZHMudG9wIDwgKHJlY3QudG9wICsgcmVjdC5ib3R0b20pIC8gMlxuICAgICAgICAgICAgICAgICAgICA6IGNvb3Jkcy5sZWZ0IDwgKHJlY3QubGVmdCArIHJlY3QucmlnaHQpIC8gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmVmb3JlID8gZGVzYy5wb3NCZWZvcmUgOiBkZXNjLnBvc0FmdGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGN1ciA9IGRlc2MuZG9tLnBhcmVudE5vZGU7XG4gICAgfVxuICAgIHJldHVybiBvdXRzaWRlQmxvY2sgPiAtMSA/IG91dHNpZGVCbG9jayA6IHZpZXcuZG9jVmlldy5wb3NGcm9tRE9NKG5vZGUsIG9mZnNldCwgLTEpO1xufVxuZnVuY3Rpb24gZWxlbWVudEZyb21Qb2ludChlbGVtZW50LCBjb29yZHMsIGJveCkge1xuICAgIGxldCBsZW4gPSBlbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgIGlmIChsZW4gJiYgYm94LnRvcCA8IGJveC5ib3R0b20pIHtcbiAgICAgICAgZm9yIChsZXQgc3RhcnRJID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obGVuIC0gMSwgTWF0aC5mbG9vcihsZW4gKiAoY29vcmRzLnRvcCAtIGJveC50b3ApIC8gKGJveC5ib3R0b20gLSBib3gudG9wKSkgLSAyKSksIGkgPSBzdGFydEk7Oykge1xuICAgICAgICAgICAgbGV0IGNoaWxkID0gZWxlbWVudC5jaGlsZE5vZGVzW2ldO1xuICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09IDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVjdHMgPSBjaGlsZC5nZXRDbGllbnRSZWN0cygpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVjdHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlY3QgPSByZWN0c1tqXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluUmVjdChjb29yZHMsIHJlY3QpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRGcm9tUG9pbnQoY2hpbGQsIGNvb3JkcywgcmVjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChpID0gKGkgKyAxKSAlIGxlbikgPT0gc3RhcnRJKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50O1xufVxuLy8gR2l2ZW4gYW4geCx5IHBvc2l0aW9uIG9uIHRoZSBlZGl0b3IsIGdldCB0aGUgcG9zaXRpb24gaW4gdGhlIGRvY3VtZW50LlxuZnVuY3Rpb24gcG9zQXRDb29yZHModmlldywgY29vcmRzKSB7XG4gICAgbGV0IGRvYyA9IHZpZXcuZG9tLm93bmVyRG9jdW1lbnQsIG5vZGUsIG9mZnNldCA9IDA7XG4gICAgbGV0IGNhcmV0ID0gY2FyZXRGcm9tUG9pbnQoZG9jLCBjb29yZHMubGVmdCwgY29vcmRzLnRvcCk7XG4gICAgaWYgKGNhcmV0KVxuICAgICAgICAoeyBub2RlLCBvZmZzZXQgfSA9IGNhcmV0KTtcbiAgICBsZXQgZWx0ID0gKHZpZXcucm9vdC5lbGVtZW50RnJvbVBvaW50ID8gdmlldy5yb290IDogZG9jKVxuICAgICAgICAuZWxlbWVudEZyb21Qb2ludChjb29yZHMubGVmdCwgY29vcmRzLnRvcCk7XG4gICAgbGV0IHBvcztcbiAgICBpZiAoIWVsdCB8fCAhdmlldy5kb20uY29udGFpbnMoZWx0Lm5vZGVUeXBlICE9IDEgPyBlbHQucGFyZW50Tm9kZSA6IGVsdCkpIHtcbiAgICAgICAgbGV0IGJveCA9IHZpZXcuZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAoIWluUmVjdChjb29yZHMsIGJveCkpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgZWx0ID0gZWxlbWVudEZyb21Qb2ludCh2aWV3LmRvbSwgY29vcmRzLCBib3gpO1xuICAgICAgICBpZiAoIWVsdClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBTYWZhcmkncyBjYXJldFJhbmdlRnJvbVBvaW50IHJldHVybnMgbm9uc2Vuc2Ugd2hlbiBvbiBhIGRyYWdnYWJsZSBlbGVtZW50XG4gICAgaWYgKHNhZmFyaSkge1xuICAgICAgICBmb3IgKGxldCBwID0gZWx0OyBub2RlICYmIHA7IHAgPSBwYXJlbnROb2RlKHApKVxuICAgICAgICAgICAgaWYgKHAuZHJhZ2dhYmxlKVxuICAgICAgICAgICAgICAgIG5vZGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsdCA9IHRhcmdldEtsdWRnZShlbHQsIGNvb3Jkcyk7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgICAgaWYgKGdlY2tvICYmIG5vZGUubm9kZVR5cGUgPT0gMSkge1xuICAgICAgICAgICAgLy8gRmlyZWZveCB3aWxsIHNvbWV0aW1lcyByZXR1cm4gb2Zmc2V0cyBpbnRvIDxpbnB1dD4gbm9kZXMsIHdoaWNoXG4gICAgICAgICAgICAvLyBoYXZlIG5vIGFjdHVhbCBjaGlsZHJlbiwgZnJvbSBjYXJldFBvc2l0aW9uRnJvbVBvaW50ICgjOTUzKVxuICAgICAgICAgICAgb2Zmc2V0ID0gTWF0aC5taW4ob2Zmc2V0LCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAgICAgICAgICAgIC8vIEl0J2xsIGFsc28gbW92ZSB0aGUgcmV0dXJuZWQgcG9zaXRpb24gYmVmb3JlIGltYWdlIG5vZGVzLFxuICAgICAgICAgICAgLy8gZXZlbiBpZiB0aG9zZSBhcmUgYmVoaW5kIGl0LlxuICAgICAgICAgICAgaWYgKG9mZnNldCA8IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IG5vZGUuY2hpbGROb2Rlc1tvZmZzZXRdLCBib3g7XG4gICAgICAgICAgICAgICAgaWYgKG5leHQubm9kZU5hbWUgPT0gXCJJTUdcIiAmJiAoYm94ID0gbmV4dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkucmlnaHQgPD0gY29vcmRzLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgYm94LmJvdHRvbSA+IGNvb3Jkcy50b3ApXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBwcmV2O1xuICAgICAgICAvLyBXaGVuIGNsaWNraW5nIGFib3ZlIHRoZSByaWdodCBzaWRlIG9mIGFuIHVuZWRpdGFibGUgbm9kZSwgQ2hyb21lIHdpbGwgcmVwb3J0IGEgY3Vyc29yIHBvc2l0aW9uIGFmdGVyIHRoYXQgbm9kZS5cbiAgICAgICAgaWYgKHdlYmtpdCAmJiBvZmZzZXQgJiYgbm9kZS5ub2RlVHlwZSA9PSAxICYmIChwcmV2ID0gbm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdKS5ub2RlVHlwZSA9PSAxICYmXG4gICAgICAgICAgICBwcmV2LmNvbnRlbnRFZGl0YWJsZSA9PSBcImZhbHNlXCIgJiYgcHJldi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgPj0gY29vcmRzLnRvcClcbiAgICAgICAgICAgIG9mZnNldC0tO1xuICAgICAgICAvLyBTdXNwaWNpb3VzbHkgc3BlY2lmaWMga2x1ZGdlIHRvIHdvcmsgYXJvdW5kIGNhcmV0KkZyb21Qb2ludFxuICAgICAgICAvLyBuZXZlciByZXR1cm5pbmcgYSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudFxuICAgICAgICBpZiAobm9kZSA9PSB2aWV3LmRvbSAmJiBvZmZzZXQgPT0gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCAtIDEgJiYgbm9kZS5sYXN0Q2hpbGQubm9kZVR5cGUgPT0gMSAmJlxuICAgICAgICAgICAgY29vcmRzLnRvcCA+IG5vZGUubGFzdENoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSlcbiAgICAgICAgICAgIHBvcyA9IHZpZXcuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZTtcbiAgICAgICAgLy8gSWdub3JlIHBvc2l0aW9ucyBkaXJlY3RseSBhZnRlciBhIEJSLCBzaW5jZSBjYXJldCpGcm9tUG9pbnRcbiAgICAgICAgLy8gJ3JvdW5kIHVwJyBwb3NpdGlvbnMgdGhhdCB3b3VsZCBiZSBtb3JlIGFjY3VyYXRlbHkgcGxhY2VkXG4gICAgICAgIC8vIGJlZm9yZSB0aGUgQlIgbm9kZS5cbiAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID09IDAgfHwgbm9kZS5ub2RlVHlwZSAhPSAxIHx8IG5vZGUuY2hpbGROb2Rlc1tvZmZzZXQgLSAxXS5ub2RlTmFtZSAhPSBcIkJSXCIpXG4gICAgICAgICAgICBwb3MgPSBwb3NGcm9tQ2FyZXQodmlldywgbm9kZSwgb2Zmc2V0LCBjb29yZHMpO1xuICAgIH1cbiAgICBpZiAocG9zID09IG51bGwpXG4gICAgICAgIHBvcyA9IHBvc0Zyb21FbGVtZW50KHZpZXcsIGVsdCwgY29vcmRzKTtcbiAgICBsZXQgZGVzYyA9IHZpZXcuZG9jVmlldy5uZWFyZXN0RGVzYyhlbHQsIHRydWUpO1xuICAgIHJldHVybiB7IHBvcywgaW5zaWRlOiBkZXNjID8gZGVzYy5wb3NBdFN0YXJ0IC0gZGVzYy5ib3JkZXIgOiAtMSB9O1xufVxuZnVuY3Rpb24gbm9uWmVybyhyZWN0KSB7XG4gICAgcmV0dXJuIHJlY3QudG9wIDwgcmVjdC5ib3R0b20gfHwgcmVjdC5sZWZ0IDwgcmVjdC5yaWdodDtcbn1cbmZ1bmN0aW9uIHNpbmdsZVJlY3QodGFyZ2V0LCBiaWFzKSB7XG4gICAgbGV0IHJlY3RzID0gdGFyZ2V0LmdldENsaWVudFJlY3RzKCk7XG4gICAgaWYgKHJlY3RzLmxlbmd0aCkge1xuICAgICAgICBsZXQgZmlyc3QgPSByZWN0c1tiaWFzIDwgMCA/IDAgOiByZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKG5vblplcm8oZmlyc3QpKVxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0O1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbmQuY2FsbChyZWN0cywgbm9uWmVybykgfHwgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuY29uc3QgQklESSA9IC9bXFx1MDU5MC1cXHUwNWY0XFx1MDYwMC1cXHUwNmZmXFx1MDcwMC1cXHUwOGFjXS87XG4vLyBHaXZlbiBhIHBvc2l0aW9uIGluIHRoZSBkb2N1bWVudCBtb2RlbCwgZ2V0IGEgYm91bmRpbmcgYm94IG9mIHRoZVxuLy8gY2hhcmFjdGVyIGF0IHRoYXQgcG9zaXRpb24sIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3cuXG5mdW5jdGlvbiBjb29yZHNBdFBvcyh2aWV3LCBwb3MsIHNpZGUpIHtcbiAgICBsZXQgeyBub2RlLCBvZmZzZXQsIGF0b20gfSA9IHZpZXcuZG9jVmlldy5kb21Gcm9tUG9zKHBvcywgc2lkZSA8IDAgPyAtMSA6IDEpO1xuICAgIGxldCBzdXBwb3J0RW1wdHlSYW5nZSA9IHdlYmtpdCB8fCBnZWNrbztcbiAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSB7XG4gICAgICAgIC8vIFRoZXNlIGJyb3dzZXJzIHN1cHBvcnQgcXVlcnlpbmcgZW1wdHkgdGV4dCByYW5nZXMuIFByZWZlciB0aGF0IGluXG4gICAgICAgIC8vIGJpZGkgY29udGV4dCBvciB3aGVuIGF0IHRoZSBlbmQgb2YgYSBub2RlLlxuICAgICAgICBpZiAoc3VwcG9ydEVtcHR5UmFuZ2UgJiYgKEJJREkudGVzdChub2RlLm5vZGVWYWx1ZSkgfHwgKHNpZGUgPCAwID8gIW9mZnNldCA6IG9mZnNldCA9PSBub2RlLm5vZGVWYWx1ZS5sZW5ndGgpKSkge1xuICAgICAgICAgICAgbGV0IHJlY3QgPSBzaW5nbGVSZWN0KHRleHRSYW5nZShub2RlLCBvZmZzZXQsIG9mZnNldCksIHNpZGUpO1xuICAgICAgICAgICAgLy8gRmlyZWZveCByZXR1cm5zIGJhZCByZXN1bHRzICh0aGUgcG9zaXRpb24gYmVmb3JlIHRoZSBzcGFjZSlcbiAgICAgICAgICAgIC8vIHdoZW4gcXVlcnlpbmcgYSBwb3NpdGlvbiBkaXJlY3RseSBhZnRlciBsaW5lLWJyb2tlblxuICAgICAgICAgICAgLy8gd2hpdGVzcGFjZS4gRGV0ZWN0IHRoaXMgc2l0dWF0aW9uIGFuZCBhbmQga2x1ZGdlIGFyb3VuZCBpdFxuICAgICAgICAgICAgaWYgKGdlY2tvICYmIG9mZnNldCAmJiAvXFxzLy50ZXN0KG5vZGUubm9kZVZhbHVlW29mZnNldCAtIDFdKSAmJiBvZmZzZXQgPCBub2RlLm5vZGVWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVjdEJlZm9yZSA9IHNpbmdsZVJlY3QodGV4dFJhbmdlKG5vZGUsIG9mZnNldCAtIDEsIG9mZnNldCAtIDEpLCAtMSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlY3RCZWZvcmUudG9wID09IHJlY3QudG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWN0QWZ0ZXIgPSBzaW5nbGVSZWN0KHRleHRSYW5nZShub2RlLCBvZmZzZXQsIG9mZnNldCArIDEpLCAtMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWN0QWZ0ZXIudG9wICE9IHJlY3QudG9wKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYXR0ZW5WKHJlY3RBZnRlciwgcmVjdEFmdGVyLmxlZnQgPCByZWN0QmVmb3JlLmxlZnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZWN0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IGZyb20gPSBvZmZzZXQsIHRvID0gb2Zmc2V0LCB0YWtlU2lkZSA9IHNpZGUgPCAwID8gMSA6IC0xO1xuICAgICAgICAgICAgaWYgKHNpZGUgPCAwICYmICFvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICB0bysrO1xuICAgICAgICAgICAgICAgIHRha2VTaWRlID0gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzaWRlID49IDAgJiYgb2Zmc2V0ID09IG5vZGUubm9kZVZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZyb20tLTtcbiAgICAgICAgICAgICAgICB0YWtlU2lkZSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzaWRlIDwgMCkge1xuICAgICAgICAgICAgICAgIGZyb20tLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmxhdHRlblYoc2luZ2xlUmVjdCh0ZXh0UmFuZ2Uobm9kZSwgZnJvbSwgdG8pLCB0YWtlU2lkZSksIHRha2VTaWRlIDwgMCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0ICRkb20gPSB2aWV3LnN0YXRlLmRvYy5yZXNvbHZlKHBvcyAtIChhdG9tIHx8IDApKTtcbiAgICAvLyBSZXR1cm4gYSBob3Jpem9udGFsIGxpbmUgaW4gYmxvY2sgY29udGV4dFxuICAgIGlmICghJGRvbS5wYXJlbnQuaW5saW5lQ29udGVudCkge1xuICAgICAgICBpZiAoYXRvbSA9PSBudWxsICYmIG9mZnNldCAmJiAoc2lkZSA8IDAgfHwgb2Zmc2V0ID09IG5vZGVTaXplKG5vZGUpKSkge1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IG5vZGUuY2hpbGROb2Rlc1tvZmZzZXQgLSAxXTtcbiAgICAgICAgICAgIGlmIChiZWZvcmUubm9kZVR5cGUgPT0gMSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmxhdHRlbkgoYmVmb3JlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF0b20gPT0gbnVsbCAmJiBvZmZzZXQgPCBub2RlU2l6ZShub2RlKSkge1xuICAgICAgICAgICAgbGV0IGFmdGVyID0gbm9kZS5jaGlsZE5vZGVzW29mZnNldF07XG4gICAgICAgICAgICBpZiAoYWZ0ZXIubm9kZVR5cGUgPT0gMSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmxhdHRlbkgoYWZ0ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbGF0dGVuSChub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBzaWRlID49IDApO1xuICAgIH1cbiAgICAvLyBJbmxpbmUsIG5vdCBpbiB0ZXh0IG5vZGUgKHRoaXMgaXMgbm90IEJpZGktc2FmZSlcbiAgICBpZiAoYXRvbSA9PSBudWxsICYmIG9mZnNldCAmJiAoc2lkZSA8IDAgfHwgb2Zmc2V0ID09IG5vZGVTaXplKG5vZGUpKSkge1xuICAgICAgICBsZXQgYmVmb3JlID0gbm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdO1xuICAgICAgICBsZXQgdGFyZ2V0ID0gYmVmb3JlLm5vZGVUeXBlID09IDMgPyB0ZXh0UmFuZ2UoYmVmb3JlLCBub2RlU2l6ZShiZWZvcmUpIC0gKHN1cHBvcnRFbXB0eVJhbmdlID8gMCA6IDEpKVxuICAgICAgICAgICAgLy8gQlIgbm9kZXMgdGVuZCB0byBvbmx5IHJldHVybiB0aGUgcmVjdGFuZ2xlIGJlZm9yZSB0aGVtLlxuICAgICAgICAgICAgLy8gT25seSB1c2UgdGhlbSBpZiB0aGV5IGFyZSB0aGUgbGFzdCBlbGVtZW50IGluIHRoZWlyIHBhcmVudFxuICAgICAgICAgICAgOiBiZWZvcmUubm9kZVR5cGUgPT0gMSAmJiAoYmVmb3JlLm5vZGVOYW1lICE9IFwiQlJcIiB8fCAhYmVmb3JlLm5leHRTaWJsaW5nKSA/IGJlZm9yZSA6IG51bGw7XG4gICAgICAgIGlmICh0YXJnZXQpXG4gICAgICAgICAgICByZXR1cm4gZmxhdHRlblYoc2luZ2xlUmVjdCh0YXJnZXQsIDEpLCBmYWxzZSk7XG4gICAgfVxuICAgIGlmIChhdG9tID09IG51bGwgJiYgb2Zmc2V0IDwgbm9kZVNpemUobm9kZSkpIHtcbiAgICAgICAgbGV0IGFmdGVyID0gbm9kZS5jaGlsZE5vZGVzW29mZnNldF07XG4gICAgICAgIHdoaWxlIChhZnRlci5wbVZpZXdEZXNjICYmIGFmdGVyLnBtVmlld0Rlc2MuaWdub3JlRm9yQ29vcmRzKVxuICAgICAgICAgICAgYWZ0ZXIgPSBhZnRlci5uZXh0U2libGluZztcbiAgICAgICAgbGV0IHRhcmdldCA9ICFhZnRlciA/IG51bGwgOiBhZnRlci5ub2RlVHlwZSA9PSAzID8gdGV4dFJhbmdlKGFmdGVyLCAwLCAoc3VwcG9ydEVtcHR5UmFuZ2UgPyAwIDogMSkpXG4gICAgICAgICAgICA6IGFmdGVyLm5vZGVUeXBlID09IDEgPyBhZnRlciA6IG51bGw7XG4gICAgICAgIGlmICh0YXJnZXQpXG4gICAgICAgICAgICByZXR1cm4gZmxhdHRlblYoc2luZ2xlUmVjdCh0YXJnZXQsIC0xKSwgdHJ1ZSk7XG4gICAgfVxuICAgIC8vIEFsbCBlbHNlIGZhaWxlZCwganVzdCB0cnkgdG8gZ2V0IGEgcmVjdGFuZ2xlIGZvciB0aGUgdGFyZ2V0IG5vZGVcbiAgICByZXR1cm4gZmxhdHRlblYoc2luZ2xlUmVjdChub2RlLm5vZGVUeXBlID09IDMgPyB0ZXh0UmFuZ2Uobm9kZSkgOiBub2RlLCAtc2lkZSksIHNpZGUgPj0gMCk7XG59XG5mdW5jdGlvbiBmbGF0dGVuVihyZWN0LCBsZWZ0KSB7XG4gICAgaWYgKHJlY3Qud2lkdGggPT0gMClcbiAgICAgICAgcmV0dXJuIHJlY3Q7XG4gICAgbGV0IHggPSBsZWZ0ID8gcmVjdC5sZWZ0IDogcmVjdC5yaWdodDtcbiAgICByZXR1cm4geyB0b3A6IHJlY3QudG9wLCBib3R0b206IHJlY3QuYm90dG9tLCBsZWZ0OiB4LCByaWdodDogeCB9O1xufVxuZnVuY3Rpb24gZmxhdHRlbkgocmVjdCwgdG9wKSB7XG4gICAgaWYgKHJlY3QuaGVpZ2h0ID09IDApXG4gICAgICAgIHJldHVybiByZWN0O1xuICAgIGxldCB5ID0gdG9wID8gcmVjdC50b3AgOiByZWN0LmJvdHRvbTtcbiAgICByZXR1cm4geyB0b3A6IHksIGJvdHRvbTogeSwgbGVmdDogcmVjdC5sZWZ0LCByaWdodDogcmVjdC5yaWdodCB9O1xufVxuZnVuY3Rpb24gd2l0aEZsdXNoZWRTdGF0ZSh2aWV3LCBzdGF0ZSwgZikge1xuICAgIGxldCB2aWV3U3RhdGUgPSB2aWV3LnN0YXRlLCBhY3RpdmUgPSB2aWV3LnJvb3QuYWN0aXZlRWxlbWVudDtcbiAgICBpZiAodmlld1N0YXRlICE9IHN0YXRlKVxuICAgICAgICB2aWV3LnVwZGF0ZVN0YXRlKHN0YXRlKTtcbiAgICBpZiAoYWN0aXZlICE9IHZpZXcuZG9tKVxuICAgICAgICB2aWV3LmZvY3VzKCk7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGYoKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIGlmICh2aWV3U3RhdGUgIT0gc3RhdGUpXG4gICAgICAgICAgICB2aWV3LnVwZGF0ZVN0YXRlKHZpZXdTdGF0ZSk7XG4gICAgICAgIGlmIChhY3RpdmUgIT0gdmlldy5kb20gJiYgYWN0aXZlKVxuICAgICAgICAgICAgYWN0aXZlLmZvY3VzKCk7XG4gICAgfVxufVxuLy8gV2hldGhlciB2ZXJ0aWNhbCBwb3NpdGlvbiBtb3Rpb24gaW4gYSBnaXZlbiBkaXJlY3Rpb25cbi8vIGZyb20gYSBwb3NpdGlvbiB3b3VsZCBsZWF2ZSBhIHRleHQgYmxvY2suXG5mdW5jdGlvbiBlbmRPZlRleHRibG9ja1ZlcnRpY2FsKHZpZXcsIHN0YXRlLCBkaXIpIHtcbiAgICBsZXQgc2VsID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgIGxldCAkcG9zID0gZGlyID09IFwidXBcIiA/IHNlbC4kZnJvbSA6IHNlbC4kdG87XG4gICAgcmV0dXJuIHdpdGhGbHVzaGVkU3RhdGUodmlldywgc3RhdGUsICgpID0+IHtcbiAgICAgICAgbGV0IHsgbm9kZTogZG9tIH0gPSB2aWV3LmRvY1ZpZXcuZG9tRnJvbVBvcygkcG9zLnBvcywgZGlyID09IFwidXBcIiA/IC0xIDogMSk7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGxldCBuZWFyZXN0ID0gdmlldy5kb2NWaWV3Lm5lYXJlc3REZXNjKGRvbSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoIW5lYXJlc3QpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBpZiAobmVhcmVzdC5ub2RlLmlzQmxvY2spIHtcbiAgICAgICAgICAgICAgICBkb20gPSBuZWFyZXN0LmNvbnRlbnRET00gfHwgbmVhcmVzdC5kb207XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb20gPSBuZWFyZXN0LmRvbS5wYXJlbnROb2RlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb29yZHMgPSBjb29yZHNBdFBvcyh2aWV3LCAkcG9zLnBvcywgMSk7XG4gICAgICAgIGZvciAobGV0IGNoaWxkID0gZG9tLmZpcnN0Q2hpbGQ7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICBsZXQgYm94ZXM7XG4gICAgICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT0gMSlcbiAgICAgICAgICAgICAgICBib3hlcyA9IGNoaWxkLmdldENsaWVudFJlY3RzKCk7XG4gICAgICAgICAgICBlbHNlIGlmIChjaGlsZC5ub2RlVHlwZSA9PSAzKVxuICAgICAgICAgICAgICAgIGJveGVzID0gdGV4dFJhbmdlKGNoaWxkLCAwLCBjaGlsZC5ub2RlVmFsdWUubGVuZ3RoKS5nZXRDbGllbnRSZWN0cygpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib3hlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBib3ggPSBib3hlc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoYm94LmJvdHRvbSA+IGJveC50b3AgKyAxICYmXG4gICAgICAgICAgICAgICAgICAgIChkaXIgPT0gXCJ1cFwiID8gY29vcmRzLnRvcCAtIGJveC50b3AgPiAoYm94LmJvdHRvbSAtIGNvb3Jkcy50b3ApICogMlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBib3guYm90dG9tIC0gY29vcmRzLmJvdHRvbSA+IChjb29yZHMuYm90dG9tIC0gYm94LnRvcCkgKiAyKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xufVxuY29uc3QgbWF5YmVSVEwgPSAvW1xcdTA1OTAtXFx1MDhhY10vO1xuZnVuY3Rpb24gZW5kT2ZUZXh0YmxvY2tIb3Jpem9udGFsKHZpZXcsIHN0YXRlLCBkaXIpIHtcbiAgICBsZXQgeyAkaGVhZCB9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgIGlmICghJGhlYWQucGFyZW50LmlzVGV4dGJsb2NrKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0IG9mZnNldCA9ICRoZWFkLnBhcmVudE9mZnNldCwgYXRTdGFydCA9ICFvZmZzZXQsIGF0RW5kID0gb2Zmc2V0ID09ICRoZWFkLnBhcmVudC5jb250ZW50LnNpemU7XG4gICAgbGV0IHNlbCA9IHZpZXcuZG9tU2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWwpXG4gICAgICAgIHJldHVybiAkaGVhZC5wb3MgPT0gJGhlYWQuc3RhcnQoKSB8fCAkaGVhZC5wb3MgPT0gJGhlYWQuZW5kKCk7XG4gICAgLy8gSWYgdGhlIHRleHRibG9jayBpcyBhbGwgTFRSLCBvciB0aGUgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnRcbiAgICAvLyBTZWxlY3Rpb24ubW9kaWZ5IChFZGdlKSwgZmFsbCBiYWNrIHRvIGEgcHJpbWl0aXZlIGFwcHJvYWNoXG4gICAgaWYgKCFtYXliZVJUTC50ZXN0KCRoZWFkLnBhcmVudC50ZXh0Q29udGVudCkgfHwgIXNlbC5tb2RpZnkpXG4gICAgICAgIHJldHVybiBkaXIgPT0gXCJsZWZ0XCIgfHwgZGlyID09IFwiYmFja3dhcmRcIiA/IGF0U3RhcnQgOiBhdEVuZDtcbiAgICByZXR1cm4gd2l0aEZsdXNoZWRTdGF0ZSh2aWV3LCBzdGF0ZSwgKCkgPT4ge1xuICAgICAgICAvLyBUaGlzIGlzIGEgaHVnZSBoYWNrLCBidXQgYXBwZWFycyB0byBiZSB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gY3VycmVudGx5IGRvOiB1c2UgYFNlbGVjdGlvbi5tb2RpZnlgIHRvIG1vdmUgdGhlIHNlbGVjdGlvbiBieVxuICAgICAgICAvLyBvbmUgY2hhcmFjdGVyLCBhbmQgc2VlIGlmIHRoYXQgbW92ZXMgdGhlIGN1cnNvciBvdXQgb2YgdGhlXG4gICAgICAgIC8vIHRleHRibG9jayAob3IgZG9lc24ndCBtb3ZlIGl0IGF0IGFsbCwgd2hlbiBhdCB0aGUgc3RhcnQvZW5kIG9mXG4gICAgICAgIC8vIHRoZSBkb2N1bWVudCkuXG4gICAgICAgIGxldCB7IGZvY3VzTm9kZTogb2xkTm9kZSwgZm9jdXNPZmZzZXQ6IG9sZE9mZiwgYW5jaG9yTm9kZSwgYW5jaG9yT2Zmc2V0IH0gPSB2aWV3LmRvbVNlbGVjdGlvblJhbmdlKCk7XG4gICAgICAgIGxldCBvbGRCaWRpTGV2ZWwgPSBzZWwuY2FyZXRCaWRpTGV2ZWwgLy8gT25seSBmb3IgRmlyZWZveFxuICAgICAgICA7XG4gICAgICAgIHNlbC5tb2RpZnkoXCJtb3ZlXCIsIGRpciwgXCJjaGFyYWN0ZXJcIik7XG4gICAgICAgIGxldCBwYXJlbnRET00gPSAkaGVhZC5kZXB0aCA/IHZpZXcuZG9jVmlldy5kb21BZnRlclBvcygkaGVhZC5iZWZvcmUoKSkgOiB2aWV3LmRvbTtcbiAgICAgICAgbGV0IHsgZm9jdXNOb2RlOiBuZXdOb2RlLCBmb2N1c09mZnNldDogbmV3T2ZmIH0gPSB2aWV3LmRvbVNlbGVjdGlvblJhbmdlKCk7XG4gICAgICAgIGxldCByZXN1bHQgPSBuZXdOb2RlICYmICFwYXJlbnRET00uY29udGFpbnMobmV3Tm9kZS5ub2RlVHlwZSA9PSAxID8gbmV3Tm9kZSA6IG5ld05vZGUucGFyZW50Tm9kZSkgfHxcbiAgICAgICAgICAgIChvbGROb2RlID09IG5ld05vZGUgJiYgb2xkT2ZmID09IG5ld09mZik7XG4gICAgICAgIC8vIFJlc3RvcmUgdGhlIHByZXZpb3VzIHNlbGVjdGlvblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2VsLmNvbGxhcHNlKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgICAgICAgICBpZiAob2xkTm9kZSAmJiAob2xkTm9kZSAhPSBhbmNob3JOb2RlIHx8IG9sZE9mZiAhPSBhbmNob3JPZmZzZXQpICYmIHNlbC5leHRlbmQpXG4gICAgICAgICAgICAgICAgc2VsLmV4dGVuZChvbGROb2RlLCBvbGRPZmYpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfKSB7IH1cbiAgICAgICAgaWYgKG9sZEJpZGlMZXZlbCAhPSBudWxsKVxuICAgICAgICAgICAgc2VsLmNhcmV0QmlkaUxldmVsID0gb2xkQmlkaUxldmVsO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xufVxubGV0IGNhY2hlZFN0YXRlID0gbnVsbDtcbmxldCBjYWNoZWREaXIgPSBudWxsO1xubGV0IGNhY2hlZFJlc3VsdCA9IGZhbHNlO1xuZnVuY3Rpb24gZW5kT2ZUZXh0YmxvY2sodmlldywgc3RhdGUsIGRpcikge1xuICAgIGlmIChjYWNoZWRTdGF0ZSA9PSBzdGF0ZSAmJiBjYWNoZWREaXIgPT0gZGlyKVxuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgIGNhY2hlZFN0YXRlID0gc3RhdGU7XG4gICAgY2FjaGVkRGlyID0gZGlyO1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQgPSBkaXIgPT0gXCJ1cFwiIHx8IGRpciA9PSBcImRvd25cIlxuICAgICAgICA/IGVuZE9mVGV4dGJsb2NrVmVydGljYWwodmlldywgc3RhdGUsIGRpcilcbiAgICAgICAgOiBlbmRPZlRleHRibG9ja0hvcml6b250YWwodmlldywgc3RhdGUsIGRpcik7XG59XG5cbi8vIFZpZXcgZGVzY3JpcHRpb25zIGFyZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBkZXNjcmliZSB0aGUgRE9NIHRoYXQgaXNcbi8vIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBlZGl0b3IncyBjb250ZW50LiBUaGV5IGFyZSB1c2VkIGZvcjpcbi8vXG4vLyAtIEluY3JlbWVudGFsIHJlZHJhd2luZyB3aGVuIHRoZSBkb2N1bWVudCBjaGFuZ2VzXG4vL1xuLy8gLSBGaWd1cmluZyBvdXQgd2hhdCBwYXJ0IG9mIHRoZSBkb2N1bWVudCBhIGdpdmVuIERPTSBwb3NpdGlvblxuLy8gICBjb3JyZXNwb25kcyB0b1xuLy9cbi8vIC0gV2lyaW5nIGluIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGVkaXRpbmcgaW50ZXJmYWNlIGZvciBhXG4vLyAgIGdpdmVuIG5vZGVcbi8vXG4vLyBUaGV5IGZvcm0gYSBkb3VibHktbGlua2VkIG11dGFibGUgdHJlZSwgc3RhcnRpbmcgYXQgYHZpZXcuZG9jVmlld2AuXG5jb25zdCBOT1RfRElSVFkgPSAwLCBDSElMRF9ESVJUWSA9IDEsIENPTlRFTlRfRElSVFkgPSAyLCBOT0RFX0RJUlRZID0gMztcbi8vIFN1cGVyY2xhc3MgZm9yIHRoZSB2YXJpb3VzIGtpbmRzIG9mIGRlc2NyaXB0aW9ucy4gRGVmaW5lcyB0aGVpclxuLy8gYmFzaWMgc3RydWN0dXJlIGFuZCBzaGFyZWQgbWV0aG9kcy5cbmNsYXNzIFZpZXdEZXNjIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIGNoaWxkcmVuLCBkb20sIFxuICAgIC8vIFRoaXMgaXMgdGhlIG5vZGUgdGhhdCBob2xkcyB0aGUgY2hpbGQgdmlld3MuIEl0IG1heSBiZSBudWxsIGZvclxuICAgIC8vIGRlc2NzIHRoYXQgZG9uJ3QgaGF2ZSBjaGlsZHJlbi5cbiAgICBjb250ZW50RE9NKSB7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgIHRoaXMuZG9tID0gZG9tO1xuICAgICAgICB0aGlzLmNvbnRlbnRET00gPSBjb250ZW50RE9NO1xuICAgICAgICB0aGlzLmRpcnR5ID0gTk9UX0RJUlRZO1xuICAgICAgICAvLyBBbiBleHBhbmRvIHByb3BlcnR5IG9uIHRoZSBET00gbm9kZSBwcm92aWRlcyBhIGxpbmsgYmFjayB0byBpdHNcbiAgICAgICAgLy8gZGVzY3JpcHRpb24uXG4gICAgICAgIGRvbS5wbVZpZXdEZXNjID0gdGhpcztcbiAgICB9XG4gICAgLy8gVXNlZCB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gZGVzY3JpcHRpb24gY29ycmVzcG9uZHMgdG8gYVxuICAgIC8vIHdpZGdldC9tYXJrL25vZGUuXG4gICAgbWF0Y2hlc1dpZGdldCh3aWRnZXQpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgbWF0Y2hlc01hcmsobWFyaykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBtYXRjaGVzTm9kZShub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBtYXRjaGVzSGFjayhub2RlTmFtZSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAvLyBXaGVuIHBhcnNpbmcgaW4tZWRpdG9yIGNvbnRlbnQgKGluIGRvbWNoYW5nZS5qcyksIHdlIGFsbG93XG4gICAgLy8gZGVzY3JpcHRpb25zIHRvIGRldGVybWluZSB0aGUgcGFyc2UgcnVsZXMgdGhhdCBzaG91bGQgYmUgdXNlZCB0b1xuICAgIC8vIHBhcnNlIHRoZW0uXG4gICAgcGFyc2VSdWxlKCkgeyByZXR1cm4gbnVsbDsgfVxuICAgIC8vIFVzZWQgYnkgdGhlIGVkaXRvcidzIGV2ZW50IGhhbmRsZXIgdG8gaWdub3JlIGV2ZW50cyB0aGF0IGNvbWVcbiAgICAvLyBmcm9tIGNlcnRhaW4gZGVzY3MuXG4gICAgc3RvcEV2ZW50KGV2ZW50KSB7IHJldHVybiBmYWxzZTsgfVxuICAgIC8vIFRoZSBzaXplIG9mIHRoZSBjb250ZW50IHJlcHJlc2VudGVkIGJ5IHRoaXMgZGVzYy5cbiAgICBnZXQgc2l6ZSgpIHtcbiAgICAgICAgbGV0IHNpemUgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBzaXplICs9IHRoaXMuY2hpbGRyZW5baV0uc2l6ZTtcbiAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgfVxuICAgIC8vIEZvciBibG9jayBub2RlcywgdGhpcyByZXByZXNlbnRzIHRoZSBzcGFjZSB0YWtlbiB1cCBieSB0aGVpclxuICAgIC8vIHN0YXJ0L2VuZCB0b2tlbnMuXG4gICAgZ2V0IGJvcmRlcigpIHsgcmV0dXJuIDA7IH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMuZG9tLnBtVmlld0Rlc2MgPT0gdGhpcylcbiAgICAgICAgICAgIHRoaXMuZG9tLnBtVmlld0Rlc2MgPSB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uZGVzdHJveSgpO1xuICAgIH1cbiAgICBwb3NCZWZvcmVDaGlsZChjaGlsZCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgcG9zID0gdGhpcy5wb3NBdFN0YXJ0OzsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY3VyID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGlmIChjdXIgPT0gY2hpbGQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcztcbiAgICAgICAgICAgIHBvcyArPSBjdXIuc2l6ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgcG9zQmVmb3JlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQucG9zQmVmb3JlQ2hpbGQodGhpcyk7XG4gICAgfVxuICAgIGdldCBwb3NBdFN0YXJ0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC5wb3NCZWZvcmVDaGlsZCh0aGlzKSArIHRoaXMuYm9yZGVyIDogMDtcbiAgICB9XG4gICAgZ2V0IHBvc0FmdGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NCZWZvcmUgKyB0aGlzLnNpemU7XG4gICAgfVxuICAgIGdldCBwb3NBdEVuZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zQXRTdGFydCArIHRoaXMuc2l6ZSAtIDIgKiB0aGlzLmJvcmRlcjtcbiAgICB9XG4gICAgbG9jYWxQb3NGcm9tRE9NKGRvbSwgb2Zmc2V0LCBiaWFzKSB7XG4gICAgICAgIC8vIElmIHRoZSBET00gcG9zaXRpb24gaXMgaW4gdGhlIGNvbnRlbnQsIHVzZSB0aGUgY2hpbGQgZGVzYyBhZnRlclxuICAgICAgICAvLyBpdCB0byBmaWd1cmUgb3V0IGEgcG9zaXRpb24uXG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRET00gJiYgdGhpcy5jb250ZW50RE9NLmNvbnRhaW5zKGRvbS5ub2RlVHlwZSA9PSAxID8gZG9tIDogZG9tLnBhcmVudE5vZGUpKSB7XG4gICAgICAgICAgICBpZiAoYmlhcyA8IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgZG9tQmVmb3JlLCBkZXNjO1xuICAgICAgICAgICAgICAgIGlmIChkb20gPT0gdGhpcy5jb250ZW50RE9NKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbUJlZm9yZSA9IGRvbS5jaGlsZE5vZGVzW29mZnNldCAtIDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGRvbS5wYXJlbnROb2RlICE9IHRoaXMuY29udGVudERPTSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbSA9IGRvbS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICBkb21CZWZvcmUgPSBkb20ucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoZG9tQmVmb3JlICYmICEoKGRlc2MgPSBkb21CZWZvcmUucG1WaWV3RGVzYykgJiYgZGVzYy5wYXJlbnQgPT0gdGhpcykpXG4gICAgICAgICAgICAgICAgICAgIGRvbUJlZm9yZSA9IGRvbUJlZm9yZS5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbUJlZm9yZSA/IHRoaXMucG9zQmVmb3JlQ2hpbGQoZGVzYykgKyBkZXNjLnNpemUgOiB0aGlzLnBvc0F0U3RhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgZG9tQWZ0ZXIsIGRlc2M7XG4gICAgICAgICAgICAgICAgaWYgKGRvbSA9PSB0aGlzLmNvbnRlbnRET00pIHtcbiAgICAgICAgICAgICAgICAgICAgZG9tQWZ0ZXIgPSBkb20uY2hpbGROb2Rlc1tvZmZzZXRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGRvbS5wYXJlbnROb2RlICE9IHRoaXMuY29udGVudERPTSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbSA9IGRvbS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICBkb21BZnRlciA9IGRvbS5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2hpbGUgKGRvbUFmdGVyICYmICEoKGRlc2MgPSBkb21BZnRlci5wbVZpZXdEZXNjKSAmJiBkZXNjLnBhcmVudCA9PSB0aGlzKSlcbiAgICAgICAgICAgICAgICAgICAgZG9tQWZ0ZXIgPSBkb21BZnRlci5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9tQWZ0ZXIgPyB0aGlzLnBvc0JlZm9yZUNoaWxkKGRlc2MpIDogdGhpcy5wb3NBdEVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UsIHVzZSB2YXJpb3VzIGhldXJpc3RpY3MsIGZhbGxpbmcgYmFjayBvbiB0aGUgYmlhc1xuICAgICAgICAvLyBwYXJhbWV0ZXIsIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHJldHVybiB0aGUgcG9zaXRpb24gYXQgdGhlXG4gICAgICAgIC8vIHN0YXJ0IG9yIGF0IHRoZSBlbmQgb2YgdGhpcyB2aWV3IGRlc2MuXG4gICAgICAgIGxldCBhdEVuZDtcbiAgICAgICAgaWYgKGRvbSA9PSB0aGlzLmRvbSAmJiB0aGlzLmNvbnRlbnRET00pIHtcbiAgICAgICAgICAgIGF0RW5kID0gb2Zmc2V0ID4gZG9tSW5kZXgodGhpcy5jb250ZW50RE9NKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRlbnRET00gJiYgdGhpcy5jb250ZW50RE9NICE9IHRoaXMuZG9tICYmIHRoaXMuZG9tLmNvbnRhaW5zKHRoaXMuY29udGVudERPTSkpIHtcbiAgICAgICAgICAgIGF0RW5kID0gZG9tLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMuY29udGVudERPTSkgJiAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZG9tLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gMClcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzZWFyY2ggPSBkb207OyBzZWFyY2ggPSBzZWFyY2gucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoID09IHRoaXMuZG9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdEVuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaC5wcmV2aW91c1NpYmxpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYXRFbmQgPT0gbnVsbCAmJiBvZmZzZXQgPT0gZG9tLmNoaWxkTm9kZXMubGVuZ3RoKVxuICAgICAgICAgICAgICAgIGZvciAobGV0IHNlYXJjaCA9IGRvbTs7IHNlYXJjaCA9IHNlYXJjaC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWFyY2ggPT0gdGhpcy5kb20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0RW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWFyY2gubmV4dFNpYmxpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChhdEVuZCA9PSBudWxsID8gYmlhcyA+IDAgOiBhdEVuZCkgPyB0aGlzLnBvc0F0RW5kIDogdGhpcy5wb3NBdFN0YXJ0O1xuICAgIH1cbiAgICBuZWFyZXN0RGVzYyhkb20sIG9ubHlOb2RlcyA9IGZhbHNlKSB7XG4gICAgICAgIGZvciAobGV0IGZpcnN0ID0gdHJ1ZSwgY3VyID0gZG9tOyBjdXI7IGN1ciA9IGN1ci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBsZXQgZGVzYyA9IHRoaXMuZ2V0RGVzYyhjdXIpLCBub2RlRE9NO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKCFvbmx5Tm9kZXMgfHwgZGVzYy5ub2RlKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIGRvbSBpcyBvdXRzaWRlIG9mIHRoaXMgZGVzYydzIG5vZGVET00sIGRvbid0IGNvdW50IGl0LlxuICAgICAgICAgICAgICAgIGlmIChmaXJzdCAmJiAobm9kZURPTSA9IGRlc2Mubm9kZURPTSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIShub2RlRE9NLm5vZGVUeXBlID09IDEgPyBub2RlRE9NLmNvbnRhaW5zKGRvbS5ub2RlVHlwZSA9PSAxID8gZG9tIDogZG9tLnBhcmVudE5vZGUpIDogbm9kZURPTSA9PSBkb20pKVxuICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0RGVzYyhkb20pIHtcbiAgICAgICAgbGV0IGRlc2MgPSBkb20ucG1WaWV3RGVzYztcbiAgICAgICAgZm9yIChsZXQgY3VyID0gZGVzYzsgY3VyOyBjdXIgPSBjdXIucGFyZW50KVxuICAgICAgICAgICAgaWYgKGN1ciA9PSB0aGlzKVxuICAgICAgICAgICAgICAgIHJldHVybiBkZXNjO1xuICAgIH1cbiAgICBwb3NGcm9tRE9NKGRvbSwgb2Zmc2V0LCBiaWFzKSB7XG4gICAgICAgIGZvciAobGV0IHNjYW4gPSBkb207IHNjYW47IHNjYW4gPSBzY2FuLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGxldCBkZXNjID0gdGhpcy5nZXREZXNjKHNjYW4pO1xuICAgICAgICAgICAgaWYgKGRlc2MpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlc2MubG9jYWxQb3NGcm9tRE9NKGRvbSwgb2Zmc2V0LCBiaWFzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIC8vIEZpbmQgdGhlIGRlc2MgZm9yIHRoZSBub2RlIGFmdGVyIHRoZSBnaXZlbiBwb3MsIGlmIGFueS4gKFdoZW4gYVxuICAgIC8vIHBhcmVudCBub2RlIG92ZXJyb2RlIHJlbmRlcmluZywgdGhlcmUgbWlnaHQgbm90IGJlIG9uZS4pXG4gICAgZGVzY0F0KHBvcykge1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgb2Zmc2V0ID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV0sIGVuZCA9IG9mZnNldCArIGNoaWxkLnNpemU7XG4gICAgICAgICAgICBpZiAob2Zmc2V0ID09IHBvcyAmJiBlbmQgIT0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCFjaGlsZC5ib3JkZXIgJiYgY2hpbGQuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbm5lciA9IGNoaWxkLmNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlubmVyLnNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGlubmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwb3MgPCBlbmQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmRlc2NBdChwb3MgLSBvZmZzZXQgLSBjaGlsZC5ib3JkZXIpO1xuICAgICAgICAgICAgb2Zmc2V0ID0gZW5kO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRvbUZyb21Qb3MocG9zLCBzaWRlKSB7XG4gICAgICAgIGlmICghdGhpcy5jb250ZW50RE9NKVxuICAgICAgICAgICAgcmV0dXJuIHsgbm9kZTogdGhpcy5kb20sIG9mZnNldDogMCwgYXRvbTogcG9zICsgMSB9O1xuICAgICAgICAvLyBGaXJzdCBmaW5kIHRoZSBwb3NpdGlvbiBpbiB0aGUgY2hpbGQgYXJyYXlcbiAgICAgICAgbGV0IGkgPSAwLCBvZmZzZXQgPSAwO1xuICAgICAgICBmb3IgKGxldCBjdXJQb3MgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXSwgZW5kID0gY3VyUG9zICsgY2hpbGQuc2l6ZTtcbiAgICAgICAgICAgIGlmIChlbmQgPiBwb3MgfHwgY2hpbGQgaW5zdGFuY2VvZiBUcmFpbGluZ0hhY2tWaWV3RGVzYykge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IHBvcyAtIGN1clBvcztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1clBvcyA9IGVuZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGlzIHBvaW50cyBpbnRvIHRoZSBtaWRkbGUgb2YgYSBjaGlsZCwgY2FsbCB0aHJvdWdoXG4gICAgICAgIGlmIChvZmZzZXQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlbltpXS5kb21Gcm9tUG9zKG9mZnNldCAtIHRoaXMuY2hpbGRyZW5baV0uYm9yZGVyLCBzaWRlKTtcbiAgICAgICAgLy8gR28gYmFjayBpZiB0aGVyZSB3ZXJlIGFueSB6ZXJvLWxlbmd0aCB3aWRnZXRzIHdpdGggc2lkZSA+PSAwIGJlZm9yZSB0aGlzIHBvaW50XG4gICAgICAgIGZvciAobGV0IHByZXY7IGkgJiYgIShwcmV2ID0gdGhpcy5jaGlsZHJlbltpIC0gMV0pLnNpemUgJiYgcHJldiBpbnN0YW5jZW9mIFdpZGdldFZpZXdEZXNjICYmIHByZXYuc2lkZSA+PSAwOyBpLS0pIHsgfVxuICAgICAgICAvLyBTY2FuIHRvd2FyZHMgdGhlIGZpcnN0IHVzZWFibGUgbm9kZVxuICAgICAgICBpZiAoc2lkZSA8PSAwKSB7XG4gICAgICAgICAgICBsZXQgcHJldiwgZW50ZXIgPSB0cnVlO1xuICAgICAgICAgICAgZm9yICg7OyBpLS0sIGVudGVyID0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBwcmV2ID0gaSA/IHRoaXMuY2hpbGRyZW5baSAtIDFdIDogbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXYgfHwgcHJldi5kb20ucGFyZW50Tm9kZSA9PSB0aGlzLmNvbnRlbnRET00pXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZXYgJiYgc2lkZSAmJiBlbnRlciAmJiAhcHJldi5ib3JkZXIgJiYgIXByZXYuZG9tQXRvbSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldi5kb21Gcm9tUG9zKHByZXYuc2l6ZSwgc2lkZSk7XG4gICAgICAgICAgICByZXR1cm4geyBub2RlOiB0aGlzLmNvbnRlbnRET00sIG9mZnNldDogcHJldiA/IGRvbUluZGV4KHByZXYuZG9tKSArIDEgOiAwIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgbmV4dCwgZW50ZXIgPSB0cnVlO1xuICAgICAgICAgICAgZm9yICg7OyBpKyssIGVudGVyID0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID8gdGhpcy5jaGlsZHJlbltpXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0IHx8IG5leHQuZG9tLnBhcmVudE5vZGUgPT0gdGhpcy5jb250ZW50RE9NKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0ICYmIGVudGVyICYmICFuZXh0LmJvcmRlciAmJiAhbmV4dC5kb21BdG9tKVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmRvbUZyb21Qb3MoMCwgc2lkZSk7XG4gICAgICAgICAgICByZXR1cm4geyBub2RlOiB0aGlzLmNvbnRlbnRET00sIG9mZnNldDogbmV4dCA/IGRvbUluZGV4KG5leHQuZG9tKSA6IHRoaXMuY29udGVudERPTS5jaGlsZE5vZGVzLmxlbmd0aCB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFVzZWQgdG8gZmluZCBhIERPTSByYW5nZSBpbiBhIHNpbmdsZSBwYXJlbnQgZm9yIGEgZ2l2ZW4gY2hhbmdlZFxuICAgIC8vIHJhbmdlLlxuICAgIHBhcnNlUmFuZ2UoZnJvbSwgdG8sIGJhc2UgPSAwKSB7XG4gICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHsgbm9kZTogdGhpcy5jb250ZW50RE9NLCBmcm9tLCB0bywgZnJvbU9mZnNldDogMCwgdG9PZmZzZXQ6IHRoaXMuY29udGVudERPTS5jaGlsZE5vZGVzLmxlbmd0aCB9O1xuICAgICAgICBsZXQgZnJvbU9mZnNldCA9IC0xLCB0b09mZnNldCA9IC0xO1xuICAgICAgICBmb3IgKGxldCBvZmZzZXQgPSBiYXNlLCBpID0gMDs7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXSwgZW5kID0gb2Zmc2V0ICsgY2hpbGQuc2l6ZTtcbiAgICAgICAgICAgIGlmIChmcm9tT2Zmc2V0ID09IC0xICYmIGZyb20gPD0gZW5kKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkQmFzZSA9IG9mZnNldCArIGNoaWxkLmJvcmRlcjtcbiAgICAgICAgICAgICAgICAvLyBGSVhNRSBtYXliZSBkZXNjZW5kIG1hcmsgdmlld3MgdG8gcGFyc2UgYSBuYXJyb3dlciByYW5nZT9cbiAgICAgICAgICAgICAgICBpZiAoZnJvbSA+PSBjaGlsZEJhc2UgJiYgdG8gPD0gZW5kIC0gY2hpbGQuYm9yZGVyICYmIGNoaWxkLm5vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQuY29udGVudERPTSAmJiB0aGlzLmNvbnRlbnRET00uY29udGFpbnMoY2hpbGQuY29udGVudERPTSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5wYXJzZVJhbmdlKGZyb20sIHRvLCBjaGlsZEJhc2UpO1xuICAgICAgICAgICAgICAgIGZyb20gPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IGk7IGogPiAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXYgPSB0aGlzLmNoaWxkcmVuW2ogLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYuc2l6ZSAmJiBwcmV2LmRvbS5wYXJlbnROb2RlID09IHRoaXMuY29udGVudERPTSAmJiAhcHJldi5lbXB0eUNoaWxkQXQoMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb21PZmZzZXQgPSBkb21JbmRleChwcmV2LmRvbSkgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbSAtPSBwcmV2LnNpemU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmcm9tT2Zmc2V0ID09IC0xKVxuICAgICAgICAgICAgICAgICAgICBmcm9tT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmcm9tT2Zmc2V0ID4gLTEgJiYgKGVuZCA+IHRvIHx8IGkgPT0gdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgICAgIHRvID0gZW5kO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5leHQgPSB0aGlzLmNoaWxkcmVuW2pdO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dC5zaXplICYmIG5leHQuZG9tLnBhcmVudE5vZGUgPT0gdGhpcy5jb250ZW50RE9NICYmICFuZXh0LmVtcHR5Q2hpbGRBdCgtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvT2Zmc2V0ID0gZG9tSW5kZXgobmV4dC5kb20pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdG8gKz0gbmV4dC5zaXplO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodG9PZmZzZXQgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIHRvT2Zmc2V0ID0gdGhpcy5jb250ZW50RE9NLmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2Zmc2V0ID0gZW5kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IG5vZGU6IHRoaXMuY29udGVudERPTSwgZnJvbSwgdG8sIGZyb21PZmZzZXQsIHRvT2Zmc2V0IH07XG4gICAgfVxuICAgIGVtcHR5Q2hpbGRBdChzaWRlKSB7XG4gICAgICAgIGlmICh0aGlzLmJvcmRlciB8fCAhdGhpcy5jb250ZW50RE9NIHx8ICF0aGlzLmNoaWxkcmVuLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IGNoaWxkID0gdGhpcy5jaGlsZHJlbltzaWRlIDwgMCA/IDAgOiB0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gY2hpbGQuc2l6ZSA9PSAwIHx8IGNoaWxkLmVtcHR5Q2hpbGRBdChzaWRlKTtcbiAgICB9XG4gICAgZG9tQWZ0ZXJQb3MocG9zKSB7XG4gICAgICAgIGxldCB7IG5vZGUsIG9mZnNldCB9ID0gdGhpcy5kb21Gcm9tUG9zKHBvcywgMCk7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9IDEgfHwgb2Zmc2V0ID09IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIk5vIG5vZGUgYWZ0ZXIgcG9zIFwiICsgcG9zKTtcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGROb2Rlc1tvZmZzZXRdO1xuICAgIH1cbiAgICAvLyBWaWV3IGRlc2NzIGFyZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBhbnkgc2VsZWN0aW9uIHRoYXQgZmFsbHNcbiAgICAvLyBlbnRpcmVseSBpbnNpZGUgb2YgdGhlbSwgc28gdGhhdCBjdXN0b20gaW1wbGVtZW50YXRpb25zIGNhbiBkb1xuICAgIC8vIGN1c3RvbSB0aGluZ3Mgd2l0aCB0aGUgc2VsZWN0aW9uLiBOb3RlIHRoYXQgdGhpcyBmYWxscyBhcGFydCB3aGVuXG4gICAgLy8gYSBzZWxlY3Rpb24gc3RhcnRzIGluIHN1Y2ggYSBub2RlIGFuZCBlbmRzIGluIGFub3RoZXIsIGluIHdoaWNoXG4gICAgLy8gY2FzZSB3ZSBqdXN0IHVzZSB3aGF0ZXZlciBkb21Gcm9tUG9zIHByb2R1Y2VzIGFzIGEgYmVzdCBlZmZvcnQuXG4gICAgc2V0U2VsZWN0aW9uKGFuY2hvciwgaGVhZCwgdmlldywgZm9yY2UgPSBmYWxzZSkge1xuICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGZhbGxzIGVudGlyZWx5IGluIGEgY2hpbGQsIGdpdmUgaXQgdG8gdGhhdCBjaGlsZFxuICAgICAgICBsZXQgZnJvbSA9IE1hdGgubWluKGFuY2hvciwgaGVhZCksIHRvID0gTWF0aC5tYXgoYW5jaG9yLCBoZWFkKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG9mZnNldCA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldLCBlbmQgPSBvZmZzZXQgKyBjaGlsZC5zaXplO1xuICAgICAgICAgICAgaWYgKGZyb20gPiBvZmZzZXQgJiYgdG8gPCBlbmQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnNldFNlbGVjdGlvbihhbmNob3IgLSBvZmZzZXQgLSBjaGlsZC5ib3JkZXIsIGhlYWQgLSBvZmZzZXQgLSBjaGlsZC5ib3JkZXIsIHZpZXcsIGZvcmNlKTtcbiAgICAgICAgICAgIG9mZnNldCA9IGVuZDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYW5jaG9yRE9NID0gdGhpcy5kb21Gcm9tUG9zKGFuY2hvciwgYW5jaG9yID8gLTEgOiAxKTtcbiAgICAgICAgbGV0IGhlYWRET00gPSBoZWFkID09IGFuY2hvciA/IGFuY2hvckRPTSA6IHRoaXMuZG9tRnJvbVBvcyhoZWFkLCBoZWFkID8gLTEgOiAxKTtcbiAgICAgICAgbGV0IGRvbVNlbCA9IHZpZXcucm9vdC5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgbGV0IHNlbFJhbmdlID0gdmlldy5kb21TZWxlY3Rpb25SYW5nZSgpO1xuICAgICAgICBsZXQgYnJLbHVkZ2UgPSBmYWxzZTtcbiAgICAgICAgLy8gT24gRmlyZWZveCwgdXNpbmcgU2VsZWN0aW9uLmNvbGxhcHNlIHRvIHB1dCB0aGUgY3Vyc29yIGFmdGVyIGFcbiAgICAgICAgLy8gQlIgbm9kZSBmb3Igc29tZSByZWFzb24gZG9lc24ndCBhbHdheXMgd29yayAoIzEwNzMpLiBPbiBTYWZhcmksXG4gICAgICAgIC8vIHRoZSBjdXJzb3Igc29tZXRpbWVzIGluZXhwbGljYWJsZSB2aXN1YWxseSBsYWdzIGJlaGluZCBpdHNcbiAgICAgICAgLy8gcmVwb3J0ZWQgcG9zaXRpb24gaW4gc3VjaCBzaXR1YXRpb25zICgjMTA5MikuXG4gICAgICAgIGlmICgoZ2Vja28gfHwgc2FmYXJpKSAmJiBhbmNob3IgPT0gaGVhZCkge1xuICAgICAgICAgICAgbGV0IHsgbm9kZSwgb2Zmc2V0IH0gPSBhbmNob3JET007XG4gICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSB7XG4gICAgICAgICAgICAgICAgYnJLbHVkZ2UgPSAhIShvZmZzZXQgJiYgbm9kZS5ub2RlVmFsdWVbb2Zmc2V0IC0gMV0gPT0gXCJcXG5cIik7XG4gICAgICAgICAgICAgICAgLy8gSXNzdWUgIzExMjhcbiAgICAgICAgICAgICAgICBpZiAoYnJLbHVkZ2UgJiYgb2Zmc2V0ID09IG5vZGUubm9kZVZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzY2FuID0gbm9kZSwgYWZ0ZXI7IHNjYW47IHNjYW4gPSBzY2FuLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZnRlciA9IHNjYW4ubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWZ0ZXIubm9kZU5hbWUgPT0gXCJCUlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JET00gPSBoZWFkRE9NID0geyBub2RlOiBhZnRlci5wYXJlbnROb2RlLCBvZmZzZXQ6IGRvbUluZGV4KGFmdGVyKSArIDEgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXNjID0gc2Nhbi5wbVZpZXdEZXNjO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2MgJiYgZGVzYy5ub2RlICYmIGRlc2Mubm9kZS5pc0Jsb2NrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHByZXYgPSBub2RlLmNoaWxkTm9kZXNbb2Zmc2V0IC0gMV07XG4gICAgICAgICAgICAgICAgYnJLbHVkZ2UgPSBwcmV2ICYmIChwcmV2Lm5vZGVOYW1lID09IFwiQlJcIiB8fCBwcmV2LmNvbnRlbnRFZGl0YWJsZSA9PSBcImZhbHNlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEZpcmVmb3ggY2FuIGFjdCBzdHJhbmdlbHkgd2hlbiB0aGUgc2VsZWN0aW9uIGlzIGluIGZyb250IG9mIGFuXG4gICAgICAgIC8vIHVuZWRpdGFibGUgbm9kZS4gU2VlICMxMTYzIGFuZCBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA5NTM2XG4gICAgICAgIGlmIChnZWNrbyAmJiBzZWxSYW5nZS5mb2N1c05vZGUgJiYgc2VsUmFuZ2UuZm9jdXNOb2RlICE9IGhlYWRET00ubm9kZSAmJiBzZWxSYW5nZS5mb2N1c05vZGUubm9kZVR5cGUgPT0gMSkge1xuICAgICAgICAgICAgbGV0IGFmdGVyID0gc2VsUmFuZ2UuZm9jdXNOb2RlLmNoaWxkTm9kZXNbc2VsUmFuZ2UuZm9jdXNPZmZzZXRdO1xuICAgICAgICAgICAgaWYgKGFmdGVyICYmIGFmdGVyLmNvbnRlbnRFZGl0YWJsZSA9PSBcImZhbHNlXCIpXG4gICAgICAgICAgICAgICAgZm9yY2UgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKGZvcmNlIHx8IGJyS2x1ZGdlICYmIHNhZmFyaSkgJiZcbiAgICAgICAgICAgIGlzRXF1aXZhbGVudFBvc2l0aW9uKGFuY2hvckRPTS5ub2RlLCBhbmNob3JET00ub2Zmc2V0LCBzZWxSYW5nZS5hbmNob3JOb2RlLCBzZWxSYW5nZS5hbmNob3JPZmZzZXQpICYmXG4gICAgICAgICAgICBpc0VxdWl2YWxlbnRQb3NpdGlvbihoZWFkRE9NLm5vZGUsIGhlYWRET00ub2Zmc2V0LCBzZWxSYW5nZS5mb2N1c05vZGUsIHNlbFJhbmdlLmZvY3VzT2Zmc2V0KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8gU2VsZWN0aW9uLmV4dGVuZCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW4gJ2ludmVydGVkJyBzZWxlY3Rpb25cbiAgICAgICAgLy8gKG9uZSB3aGVyZSB0aGUgZm9jdXMgaXMgYmVmb3JlIHRoZSBhbmNob3IpLCBidXQgbm90IGFsbFxuICAgICAgICAvLyBicm93c2VycyBzdXBwb3J0IGl0IHlldC5cbiAgICAgICAgbGV0IGRvbVNlbEV4dGVuZGVkID0gZmFsc2U7XG4gICAgICAgIGlmICgoZG9tU2VsLmV4dGVuZCB8fCBhbmNob3IgPT0gaGVhZCkgJiYgIShicktsdWRnZSAmJiBnZWNrbykpIHtcbiAgICAgICAgICAgIGRvbVNlbC5jb2xsYXBzZShhbmNob3JET00ubm9kZSwgYW5jaG9yRE9NLm9mZnNldCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChhbmNob3IgIT0gaGVhZClcbiAgICAgICAgICAgICAgICAgICAgZG9tU2VsLmV4dGVuZChoZWFkRE9NLm5vZGUsIGhlYWRET00ub2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBkb21TZWxFeHRlbmRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykge1xuICAgICAgICAgICAgICAgIC8vIEluIHNvbWUgY2FzZXMgd2l0aCBDaHJvbWUgdGhlIHNlbGVjdGlvbiBpcyBlbXB0eSBhZnRlciBjYWxsaW5nXG4gICAgICAgICAgICAgICAgLy8gY29sbGFwc2UsIGV2ZW4gd2hlbiBpdCBzaG91bGQgYmUgdmFsaWQuIFRoaXMgYXBwZWFycyB0byBiZSBhIGJ1ZywgYnV0XG4gICAgICAgICAgICAgICAgLy8gaXQgaXMgZGlmZmljdWx0IHRvIGlzb2xhdGUuIElmIHRoaXMgaGFwcGVucyBmYWxsYmFjayB0byB0aGUgb2xkIHBhdGhcbiAgICAgICAgICAgICAgICAvLyB3aXRob3V0IHVzaW5nIGV4dGVuZC5cbiAgICAgICAgICAgICAgICAvLyBTaW1pbGFybHksIHRoaXMgY291bGQgY3Jhc2ggb24gU2FmYXJpIGlmIHRoZSBlZGl0b3IgaXMgaGlkZGVuLCBhbmRcbiAgICAgICAgICAgICAgICAvLyB0aGVyZSB3YXMgbm8gc2VsZWN0aW9uLlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZG9tU2VsRXh0ZW5kZWQpIHtcbiAgICAgICAgICAgIGlmIChhbmNob3IgPiBoZWFkKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRtcCA9IGFuY2hvckRPTTtcbiAgICAgICAgICAgICAgICBhbmNob3JET00gPSBoZWFkRE9NO1xuICAgICAgICAgICAgICAgIGhlYWRET00gPSB0bXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kKGhlYWRET00ubm9kZSwgaGVhZERPTS5vZmZzZXQpO1xuICAgICAgICAgICAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yRE9NLm5vZGUsIGFuY2hvckRPTS5vZmZzZXQpO1xuICAgICAgICAgICAgZG9tU2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICAgICAgZG9tU2VsLmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZ25vcmVNdXRhdGlvbihtdXRhdGlvbikge1xuICAgICAgICByZXR1cm4gIXRoaXMuY29udGVudERPTSAmJiBtdXRhdGlvbi50eXBlICE9IFwic2VsZWN0aW9uXCI7XG4gICAgfVxuICAgIGdldCBjb250ZW50TG9zdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudERPTSAmJiB0aGlzLmNvbnRlbnRET00gIT0gdGhpcy5kb20gJiYgIXRoaXMuZG9tLmNvbnRhaW5zKHRoaXMuY29udGVudERPTSk7XG4gICAgfVxuICAgIC8vIFJlbW92ZSBhIHN1YnRyZWUgb2YgdGhlIGVsZW1lbnQgdHJlZSB0aGF0IGhhcyBiZWVuIHRvdWNoZWRcbiAgICAvLyBieSBhIERPTSBjaGFuZ2UsIHNvIHRoYXQgdGhlIG5leHQgdXBkYXRlIHdpbGwgcmVkcmF3IGl0LlxuICAgIG1hcmtEaXJ0eShmcm9tLCB0bykge1xuICAgICAgICBmb3IgKGxldCBvZmZzZXQgPSAwLCBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV0sIGVuZCA9IG9mZnNldCArIGNoaWxkLnNpemU7XG4gICAgICAgICAgICBpZiAob2Zmc2V0ID09IGVuZCA/IGZyb20gPD0gZW5kICYmIHRvID49IG9mZnNldCA6IGZyb20gPCBlbmQgJiYgdG8gPiBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnRJbnNpZGUgPSBvZmZzZXQgKyBjaGlsZC5ib3JkZXIsIGVuZEluc2lkZSA9IGVuZCAtIGNoaWxkLmJvcmRlcjtcbiAgICAgICAgICAgICAgICBpZiAoZnJvbSA+PSBzdGFydEluc2lkZSAmJiB0byA8PSBlbmRJbnNpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJ0eSA9IGZyb20gPT0gb2Zmc2V0IHx8IHRvID09IGVuZCA/IENPTlRFTlRfRElSVFkgOiBDSElMRF9ESVJUWTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyb20gPT0gc3RhcnRJbnNpZGUgJiYgdG8gPT0gZW5kSW5zaWRlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hpbGQuY29udGVudExvc3QgfHwgY2hpbGQuZG9tLnBhcmVudE5vZGUgIT0gdGhpcy5jb250ZW50RE9NKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmRpcnR5ID0gTk9ERV9ESVJUWTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQubWFya0RpcnR5KGZyb20gLSBzdGFydEluc2lkZSwgdG8gLSBzdGFydEluc2lkZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLmRpcnR5ID0gY2hpbGQuZG9tID09IGNoaWxkLmNvbnRlbnRET00gJiYgY2hpbGQuZG9tLnBhcmVudE5vZGUgPT0gdGhpcy5jb250ZW50RE9NICYmICFjaGlsZC5jaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgID8gQ09OVEVOVF9ESVJUWSA6IE5PREVfRElSVFk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2Zmc2V0ID0gZW5kO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlydHkgPSBDT05URU5UX0RJUlRZO1xuICAgIH1cbiAgICBtYXJrUGFyZW50c0RpcnR5KCkge1xuICAgICAgICBsZXQgbGV2ZWwgPSAxO1xuICAgICAgICBmb3IgKGxldCBub2RlID0gdGhpcy5wYXJlbnQ7IG5vZGU7IG5vZGUgPSBub2RlLnBhcmVudCwgbGV2ZWwrKykge1xuICAgICAgICAgICAgbGV0IGRpcnR5ID0gbGV2ZWwgPT0gMSA/IENPTlRFTlRfRElSVFkgOiBDSElMRF9ESVJUWTtcbiAgICAgICAgICAgIGlmIChub2RlLmRpcnR5IDwgZGlydHkpXG4gICAgICAgICAgICAgICAgbm9kZS5kaXJ0eSA9IGRpcnR5O1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBkb21BdG9tKCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBnZXQgaWdub3JlRm9yQ29vcmRzKCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBnZXQgaWdub3JlRm9yU2VsZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpc1RleHQodGV4dCkgeyByZXR1cm4gZmFsc2U7IH1cbn1cbi8vIEEgd2lkZ2V0IGRlc2MgcmVwcmVzZW50cyBhIHdpZGdldCBkZWNvcmF0aW9uLCB3aGljaCBpcyBhIERPTSBub2RlXG4vLyBkcmF3biBiZXR3ZWVuIHRoZSBkb2N1bWVudCBub2Rlcy5cbmNsYXNzIFdpZGdldFZpZXdEZXNjIGV4dGVuZHMgVmlld0Rlc2Mge1xuICAgIGNvbnN0cnVjdG9yKHBhcmVudCwgd2lkZ2V0LCB2aWV3LCBwb3MpIHtcbiAgICAgICAgbGV0IHNlbGYsIGRvbSA9IHdpZGdldC50eXBlLnRvRE9NO1xuICAgICAgICBpZiAodHlwZW9mIGRvbSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICBkb20gPSBkb20odmlldywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghc2VsZilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvcztcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5wYXJlbnQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcmVudC5wb3NCZWZvcmVDaGlsZChzZWxmKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBpZiAoIXdpZGdldC50eXBlLnNwZWMucmF3KSB7XG4gICAgICAgICAgICBpZiAoZG9tLm5vZGVUeXBlICE9IDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgICAgICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoZG9tKTtcbiAgICAgICAgICAgICAgICBkb20gPSB3cmFwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9tLmNvbnRlbnRFZGl0YWJsZSA9IFwiZmFsc2VcIjtcbiAgICAgICAgICAgIGRvbS5jbGFzc0xpc3QuYWRkKFwiUHJvc2VNaXJyb3Itd2lkZ2V0XCIpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyKHBhcmVudCwgW10sIGRvbSwgbnVsbCk7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgICAgc2VsZiA9IHRoaXM7XG4gICAgfVxuICAgIG1hdGNoZXNXaWRnZXQod2lkZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcnR5ID09IE5PVF9ESVJUWSAmJiB3aWRnZXQudHlwZS5lcSh0aGlzLndpZGdldC50eXBlKTtcbiAgICB9XG4gICAgcGFyc2VSdWxlKCkgeyByZXR1cm4geyBpZ25vcmU6IHRydWUgfTsgfVxuICAgIHN0b3BFdmVudChldmVudCkge1xuICAgICAgICBsZXQgc3RvcCA9IHRoaXMud2lkZ2V0LnNwZWMuc3RvcEV2ZW50O1xuICAgICAgICByZXR1cm4gc3RvcCA/IHN0b3AoZXZlbnQpIDogZmFsc2U7XG4gICAgfVxuICAgIGlnbm9yZU11dGF0aW9uKG11dGF0aW9uKSB7XG4gICAgICAgIHJldHVybiBtdXRhdGlvbi50eXBlICE9IFwic2VsZWN0aW9uXCIgfHwgdGhpcy53aWRnZXQuc3BlYy5pZ25vcmVTZWxlY3Rpb247XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0LnR5cGUuZGVzdHJveSh0aGlzLmRvbSk7XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgZ2V0IGRvbUF0b20oKSB7IHJldHVybiB0cnVlOyB9XG4gICAgZ2V0IGlnbm9yZUZvclNlbGVjdGlvbigpIHsgcmV0dXJuICEhdGhpcy53aWRnZXQudHlwZS5zcGVjLnJlbGF4ZWRTaWRlOyB9XG4gICAgZ2V0IHNpZGUoKSB7IHJldHVybiB0aGlzLndpZGdldC50eXBlLnNpZGU7IH1cbn1cbmNsYXNzIENvbXBvc2l0aW9uVmlld0Rlc2MgZXh0ZW5kcyBWaWV3RGVzYyB7XG4gICAgY29uc3RydWN0b3IocGFyZW50LCBkb20sIHRleHRET00sIHRleHQpIHtcbiAgICAgICAgc3VwZXIocGFyZW50LCBbXSwgZG9tLCBudWxsKTtcbiAgICAgICAgdGhpcy50ZXh0RE9NID0gdGV4dERPTTtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB9XG4gICAgZ2V0IHNpemUoKSB7IHJldHVybiB0aGlzLnRleHQubGVuZ3RoOyB9XG4gICAgbG9jYWxQb3NGcm9tRE9NKGRvbSwgb2Zmc2V0KSB7XG4gICAgICAgIGlmIChkb20gIT0gdGhpcy50ZXh0RE9NKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zQXRTdGFydCArIChvZmZzZXQgPyB0aGlzLnNpemUgOiAwKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zQXRTdGFydCArIG9mZnNldDtcbiAgICB9XG4gICAgZG9tRnJvbVBvcyhwb3MpIHtcbiAgICAgICAgcmV0dXJuIHsgbm9kZTogdGhpcy50ZXh0RE9NLCBvZmZzZXQ6IHBvcyB9O1xuICAgIH1cbiAgICBpZ25vcmVNdXRhdGlvbihtdXQpIHtcbiAgICAgICAgcmV0dXJuIG11dC50eXBlID09PSAnY2hhcmFjdGVyRGF0YScgJiYgbXV0LnRhcmdldC5ub2RlVmFsdWUgPT0gbXV0Lm9sZFZhbHVlO1xuICAgIH1cbn1cbi8vIEEgbWFyayBkZXNjIHJlcHJlc2VudHMgYSBtYXJrLiBNYXkgaGF2ZSBtdWx0aXBsZSBjaGlsZHJlbixcbi8vIGRlcGVuZGluZyBvbiBob3cgdGhlIG1hcmsgaXMgc3BsaXQuIE5vdGUgdGhhdCBtYXJrcyBhcmUgZHJhd24gdXNpbmdcbi8vIGEgZml4ZWQgbmVzdGluZyBvcmRlciwgZm9yIHNpbXBsaWNpdHkgYW5kIHByZWRpY3RhYmlsaXR5LCBzbyBpblxuLy8gc29tZSBjYXNlcyB0aGV5IHdpbGwgYmUgc3BsaXQgbW9yZSBvZnRlbiB0aGFuIHdvdWxkIGFwcGVhclxuLy8gbmVjZXNzYXJ5LlxuY2xhc3MgTWFya1ZpZXdEZXNjIGV4dGVuZHMgVmlld0Rlc2Mge1xuICAgIGNvbnN0cnVjdG9yKHBhcmVudCwgbWFyaywgZG9tLCBjb250ZW50RE9NLCBzcGVjKSB7XG4gICAgICAgIHN1cGVyKHBhcmVudCwgW10sIGRvbSwgY29udGVudERPTSk7XG4gICAgICAgIHRoaXMubWFyayA9IG1hcms7XG4gICAgICAgIHRoaXMuc3BlYyA9IHNwZWM7XG4gICAgfVxuICAgIHN0YXRpYyBjcmVhdGUocGFyZW50LCBtYXJrLCBpbmxpbmUsIHZpZXcpIHtcbiAgICAgICAgbGV0IGN1c3RvbSA9IHZpZXcubm9kZVZpZXdzW21hcmsudHlwZS5uYW1lXTtcbiAgICAgICAgbGV0IHNwZWMgPSBjdXN0b20gJiYgY3VzdG9tKG1hcmssIHZpZXcsIGlubGluZSk7XG4gICAgICAgIGlmICghc3BlYyB8fCAhc3BlYy5kb20pXG4gICAgICAgICAgICBzcGVjID0gRE9NU2VyaWFsaXplci5yZW5kZXJTcGVjKGRvY3VtZW50LCBtYXJrLnR5cGUuc3BlYy50b0RPTShtYXJrLCBpbmxpbmUpLCBudWxsLCBtYXJrLmF0dHJzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXJrVmlld0Rlc2MocGFyZW50LCBtYXJrLCBzcGVjLmRvbSwgc3BlYy5jb250ZW50RE9NIHx8IHNwZWMuZG9tLCBzcGVjKTtcbiAgICB9XG4gICAgcGFyc2VSdWxlKCkge1xuICAgICAgICBpZiAoKHRoaXMuZGlydHkgJiBOT0RFX0RJUlRZKSB8fCB0aGlzLm1hcmsudHlwZS5zcGVjLnJlcGFyc2VJblZpZXcpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHsgbWFyazogdGhpcy5tYXJrLnR5cGUubmFtZSwgYXR0cnM6IHRoaXMubWFyay5hdHRycywgY29udGVudEVsZW1lbnQ6IHRoaXMuY29udGVudERPTSB9O1xuICAgIH1cbiAgICBtYXRjaGVzTWFyayhtYXJrKSB7IHJldHVybiB0aGlzLmRpcnR5ICE9IE5PREVfRElSVFkgJiYgdGhpcy5tYXJrLmVxKG1hcmspOyB9XG4gICAgbWFya0RpcnR5KGZyb20sIHRvKSB7XG4gICAgICAgIHN1cGVyLm1hcmtEaXJ0eShmcm9tLCB0byk7XG4gICAgICAgIC8vIE1vdmUgZGlydHkgaW5mbyB0byBuZWFyZXN0IG5vZGUgdmlld1xuICAgICAgICBpZiAodGhpcy5kaXJ0eSAhPSBOT1RfRElSVFkpIHtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnBhcmVudDtcbiAgICAgICAgICAgIHdoaWxlICghcGFyZW50Lm5vZGUpXG4gICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICAgICAgICAgIGlmIChwYXJlbnQuZGlydHkgPCB0aGlzLmRpcnR5KVxuICAgICAgICAgICAgICAgIHBhcmVudC5kaXJ0eSA9IHRoaXMuZGlydHk7XG4gICAgICAgICAgICB0aGlzLmRpcnR5ID0gTk9UX0RJUlRZO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNsaWNlKGZyb20sIHRvLCB2aWV3KSB7XG4gICAgICAgIGxldCBjb3B5ID0gTWFya1ZpZXdEZXNjLmNyZWF0ZSh0aGlzLnBhcmVudCwgdGhpcy5tYXJrLCB0cnVlLCB2aWV3KTtcbiAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5jaGlsZHJlbiwgc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgICAgaWYgKHRvIDwgc2l6ZSlcbiAgICAgICAgICAgIG5vZGVzID0gcmVwbGFjZU5vZGVzKG5vZGVzLCB0bywgc2l6ZSwgdmlldyk7XG4gICAgICAgIGlmIChmcm9tID4gMClcbiAgICAgICAgICAgIG5vZGVzID0gcmVwbGFjZU5vZGVzKG5vZGVzLCAwLCBmcm9tLCB2aWV3KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIG5vZGVzW2ldLnBhcmVudCA9IGNvcHk7XG4gICAgICAgIGNvcHkuY2hpbGRyZW4gPSBub2RlcztcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuICAgIGlnbm9yZU11dGF0aW9uKG11dGF0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNwZWMuaWdub3JlTXV0YXRpb24gPyB0aGlzLnNwZWMuaWdub3JlTXV0YXRpb24obXV0YXRpb24pIDogc3VwZXIuaWdub3JlTXV0YXRpb24obXV0YXRpb24pO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zcGVjLmRlc3Ryb3kpXG4gICAgICAgICAgICB0aGlzLnNwZWMuZGVzdHJveSgpO1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgfVxufVxuLy8gTm9kZSB2aWV3IGRlc2NzIGFyZSB0aGUgbWFpbiwgbW9zdCBjb21tb24gdHlwZSBvZiB2aWV3IGRlc2MsIGFuZFxuLy8gY29ycmVzcG9uZCB0byBhbiBhY3R1YWwgbm9kZSBpbiB0aGUgZG9jdW1lbnQuIFVubGlrZSBtYXJrIGRlc2NzLFxuLy8gdGhleSBwb3B1bGF0ZSB0aGVpciBjaGlsZCBhcnJheSB0aGVtc2VsdmVzLlxuY2xhc3MgTm9kZVZpZXdEZXNjIGV4dGVuZHMgVmlld0Rlc2Mge1xuICAgIGNvbnN0cnVjdG9yKHBhcmVudCwgbm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIGRvbSwgY29udGVudERPTSwgbm9kZURPTSwgdmlldywgcG9zKSB7XG4gICAgICAgIHN1cGVyKHBhcmVudCwgW10sIGRvbSwgY29udGVudERPTSk7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgICAgIHRoaXMub3V0ZXJEZWNvID0gb3V0ZXJEZWNvO1xuICAgICAgICB0aGlzLmlubmVyRGVjbyA9IGlubmVyRGVjbztcbiAgICAgICAgdGhpcy5ub2RlRE9NID0gbm9kZURPTTtcbiAgICB9XG4gICAgLy8gQnkgZGVmYXVsdCwgYSBub2RlIGlzIHJlbmRlcmVkIHVzaW5nIHRoZSBgdG9ET01gIG1ldGhvZCBmcm9tIHRoZVxuICAgIC8vIG5vZGUgdHlwZSBzcGVjLiBCdXQgY2xpZW50IGNvZGUgY2FuIHVzZSB0aGUgYG5vZGVWaWV3c2Agc3BlYyB0b1xuICAgIC8vIHN1cHBseSBhIGN1c3RvbSBub2RlIHZpZXcsIHdoaWNoIGNhbiBpbmZsdWVuY2UgdmFyaW91cyBhc3BlY3RzIG9mXG4gICAgLy8gdGhlIHdheSB0aGUgbm9kZSB3b3Jrcy5cbiAgICAvL1xuICAgIC8vIChVc2luZyBzdWJjbGFzc2luZyBmb3IgdGhpcyB3YXMgaW50ZW50aW9uYWxseSBkZWNpZGVkIGFnYWluc3QsXG4gICAgLy8gc2luY2UgaXQnZCByZXF1aXJlIGV4cG9zaW5nIGEgd2hvbGUgc2xldyBvZiBmaW5pY2t5XG4gICAgLy8gaW1wbGVtZW50YXRpb24gZGV0YWlscyB0byB0aGUgdXNlciBjb2RlIHRoYXQgdGhleSBwcm9iYWJseSB3aWxsXG4gICAgLy8gbmV2ZXIgbmVlZC4pXG4gICAgc3RhdGljIGNyZWF0ZShwYXJlbnQsIG5vZGUsIG91dGVyRGVjbywgaW5uZXJEZWNvLCB2aWV3LCBwb3MpIHtcbiAgICAgICAgbGV0IGN1c3RvbSA9IHZpZXcubm9kZVZpZXdzW25vZGUudHlwZS5uYW1lXSwgZGVzY09iajtcbiAgICAgICAgbGV0IHNwZWMgPSBjdXN0b20gJiYgY3VzdG9tKG5vZGUsIHZpZXcsICgpID0+IHtcbiAgICAgICAgICAgIC8vIChUaGlzIGlzIGEgZnVuY3Rpb24gdGhhdCBhbGxvd3MgdGhlIGN1c3RvbSB2aWV3IHRvIGZpbmQgaXRzXG4gICAgICAgICAgICAvLyBvd24gcG9zaXRpb24pXG4gICAgICAgICAgICBpZiAoIWRlc2NPYmopXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcztcbiAgICAgICAgICAgIGlmIChkZXNjT2JqLnBhcmVudClcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVzY09iai5wYXJlbnQucG9zQmVmb3JlQ2hpbGQoZGVzY09iaik7XG4gICAgICAgIH0sIG91dGVyRGVjbywgaW5uZXJEZWNvKTtcbiAgICAgICAgbGV0IGRvbSA9IHNwZWMgJiYgc3BlYy5kb20sIGNvbnRlbnRET00gPSBzcGVjICYmIHNwZWMuY29udGVudERPTTtcbiAgICAgICAgaWYgKG5vZGUuaXNUZXh0KSB7XG4gICAgICAgICAgICBpZiAoIWRvbSlcbiAgICAgICAgICAgICAgICBkb20gPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShub2RlLnRleHQpO1xuICAgICAgICAgICAgZWxzZSBpZiAoZG9tLm5vZGVUeXBlICE9IDMpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUZXh0IG11c3QgYmUgcmVuZGVyZWQgYXMgYSBET00gdGV4dCBub2RlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFkb20pIHtcbiAgICAgICAgICAgIGxldCBzcGVjID0gRE9NU2VyaWFsaXplci5yZW5kZXJTcGVjKGRvY3VtZW50LCBub2RlLnR5cGUuc3BlYy50b0RPTShub2RlKSwgbnVsbCwgbm9kZS5hdHRycyk7XG4gICAgICAgICAgICAoeyBkb20sIGNvbnRlbnRET00gfSA9IHNwZWMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY29udGVudERPTSAmJiAhbm9kZS5pc1RleHQgJiYgZG9tLm5vZGVOYW1lICE9IFwiQlJcIikgeyAvLyBDaHJvbWUgZ2V0cyBjb25mdXNlZCBieSA8YnIgY29udGVudGVkaXRhYmxlPWZhbHNlPlxuICAgICAgICAgICAgaWYgKCFkb20uaGFzQXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpKVxuICAgICAgICAgICAgICAgIGRvbS5jb250ZW50RWRpdGFibGUgPSBcImZhbHNlXCI7XG4gICAgICAgICAgICBpZiAobm9kZS50eXBlLnNwZWMuZHJhZ2dhYmxlKVxuICAgICAgICAgICAgICAgIGRvbS5kcmFnZ2FibGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBub2RlRE9NID0gZG9tO1xuICAgICAgICBkb20gPSBhcHBseU91dGVyRGVjbyhkb20sIG91dGVyRGVjbywgbm9kZSk7XG4gICAgICAgIGlmIChzcGVjKVxuICAgICAgICAgICAgcmV0dXJuIGRlc2NPYmogPSBuZXcgQ3VzdG9tTm9kZVZpZXdEZXNjKHBhcmVudCwgbm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIGRvbSwgY29udGVudERPTSB8fCBudWxsLCBub2RlRE9NLCBzcGVjLCB2aWV3LCBwb3MgKyAxKTtcbiAgICAgICAgZWxzZSBpZiAobm9kZS5pc1RleHQpXG4gICAgICAgICAgICByZXR1cm4gbmV3IFRleHRWaWV3RGVzYyhwYXJlbnQsIG5vZGUsIG91dGVyRGVjbywgaW5uZXJEZWNvLCBkb20sIG5vZGVET00sIHZpZXcpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbmV3IE5vZGVWaWV3RGVzYyhwYXJlbnQsIG5vZGUsIG91dGVyRGVjbywgaW5uZXJEZWNvLCBkb20sIGNvbnRlbnRET00gfHwgbnVsbCwgbm9kZURPTSwgdmlldywgcG9zICsgMSk7XG4gICAgfVxuICAgIHBhcnNlUnVsZSgpIHtcbiAgICAgICAgLy8gRXhwZXJpbWVudGFsIGtsdWRnZSB0byBhbGxvdyBvcHQtaW4gcmUtcGFyc2luZyBvZiBub2Rlc1xuICAgICAgICBpZiAodGhpcy5ub2RlLnR5cGUuc3BlYy5yZXBhcnNlSW5WaWV3KVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIC8vIEZJWE1FIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhpcyBjYW4gYWx3YXlzIHJldHVybiB0aGUgY3VycmVudFxuICAgICAgICAvLyBhdHRycyBtZWFucyB0aGF0IGlmIHRoZSB1c2VyIHNvbWVob3cgbWFuYWdlcyB0byBjaGFuZ2UgdGhlXG4gICAgICAgIC8vIGF0dHJzIGluIHRoZSBkb20sIHRoYXQgd29uJ3QgYmUgcGlja2VkIHVwLiBOb3QgZW50aXJlbHkgc3VyZVxuICAgICAgICAvLyB3aGV0aGVyIHRoaXMgaXMgYSBwcm9ibGVtXG4gICAgICAgIGxldCBydWxlID0geyBub2RlOiB0aGlzLm5vZGUudHlwZS5uYW1lLCBhdHRyczogdGhpcy5ub2RlLmF0dHJzIH07XG4gICAgICAgIGlmICh0aGlzLm5vZGUudHlwZS53aGl0ZXNwYWNlID09IFwicHJlXCIpXG4gICAgICAgICAgICBydWxlLnByZXNlcnZlV2hpdGVzcGFjZSA9IFwiZnVsbFwiO1xuICAgICAgICBpZiAoIXRoaXMuY29udGVudERPTSkge1xuICAgICAgICAgICAgcnVsZS5nZXRDb250ZW50ID0gKCkgPT4gdGhpcy5ub2RlLmNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuY29udGVudExvc3QpIHtcbiAgICAgICAgICAgIHJ1bGUuY29udGVudEVsZW1lbnQgPSB0aGlzLmNvbnRlbnRET007XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBDaHJvbWUgbGlrZXMgdG8gcmFuZG9tbHkgcmVjcmVhdGUgcGFyZW50IG5vZGVzIHdoZW5cbiAgICAgICAgICAgIC8vIGJhY2tzcGFjaW5nIHRoaW5ncy4gV2hlbiB0aGF0IGhhcHBlbnMsIHRoaXMgdHJpZXMgdG8gZmluZCB0aGVcbiAgICAgICAgICAgIC8vIG5ldyBwYXJlbnQuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9tLmNvbnRhaW5zKGNoaWxkLmRvbS5wYXJlbnROb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBydWxlLmNvbnRlbnRFbGVtZW50ID0gY2hpbGQuZG9tLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcnVsZS5jb250ZW50RWxlbWVudClcbiAgICAgICAgICAgICAgICBydWxlLmdldENvbnRlbnQgPSAoKSA9PiBGcmFnbWVudC5lbXB0eTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcnVsZTtcbiAgICB9XG4gICAgbWF0Y2hlc05vZGUobm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlydHkgPT0gTk9UX0RJUlRZICYmIG5vZGUuZXEodGhpcy5ub2RlKSAmJlxuICAgICAgICAgICAgc2FtZU91dGVyRGVjbyhvdXRlckRlY28sIHRoaXMub3V0ZXJEZWNvKSAmJiBpbm5lckRlY28uZXEodGhpcy5pbm5lckRlY28pO1xuICAgIH1cbiAgICBnZXQgc2l6ZSgpIHsgcmV0dXJuIHRoaXMubm9kZS5ub2RlU2l6ZTsgfVxuICAgIGdldCBib3JkZXIoKSB7IHJldHVybiB0aGlzLm5vZGUuaXNMZWFmID8gMCA6IDE7IH1cbiAgICAvLyBTeW5jcyBgdGhpcy5jaGlsZHJlbmAgdG8gbWF0Y2ggYHRoaXMubm9kZS5jb250ZW50YCBhbmQgdGhlIGxvY2FsXG4gICAgLy8gZGVjb3JhdGlvbnMsIHBvc3NpYmx5IGludHJvZHVjaW5nIG5lc3RpbmcgZm9yIG1hcmtzLiBUaGVuLCBpbiBhXG4gICAgLy8gc2VwYXJhdGUgc3RlcCwgc3luY3MgdGhlIERPTSBpbnNpZGUgYHRoaXMuY29udGVudERPTWAgdG9cbiAgICAvLyBgdGhpcy5jaGlsZHJlbmAuXG4gICAgdXBkYXRlQ2hpbGRyZW4odmlldywgcG9zKSB7XG4gICAgICAgIGxldCBpbmxpbmUgPSB0aGlzLm5vZGUuaW5saW5lQ29udGVudCwgb2ZmID0gcG9zO1xuICAgICAgICBsZXQgY29tcG9zaXRpb24gPSB2aWV3LmNvbXBvc2luZyA/IHRoaXMubG9jYWxDb21wb3NpdGlvbkluZm8odmlldywgcG9zKSA6IG51bGw7XG4gICAgICAgIGxldCBsb2NhbENvbXBvc2l0aW9uID0gY29tcG9zaXRpb24gJiYgY29tcG9zaXRpb24ucG9zID4gLTEgPyBjb21wb3NpdGlvbiA6IG51bGw7XG4gICAgICAgIGxldCBjb21wb3NpdGlvbkluQ2hpbGQgPSBjb21wb3NpdGlvbiAmJiBjb21wb3NpdGlvbi5wb3MgPCAwO1xuICAgICAgICBsZXQgdXBkYXRlciA9IG5ldyBWaWV3VHJlZVVwZGF0ZXIodGhpcywgbG9jYWxDb21wb3NpdGlvbiAmJiBsb2NhbENvbXBvc2l0aW9uLm5vZGUsIHZpZXcpO1xuICAgICAgICBpdGVyRGVjbyh0aGlzLm5vZGUsIHRoaXMuaW5uZXJEZWNvLCAod2lkZ2V0LCBpLCBpbnNpZGVOb2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAod2lkZ2V0LnNwZWMubWFya3MpXG4gICAgICAgICAgICAgICAgdXBkYXRlci5zeW5jVG9NYXJrcyh3aWRnZXQuc3BlYy5tYXJrcywgaW5saW5lLCB2aWV3LCBpKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHdpZGdldC50eXBlLnNpZGUgPj0gMCAmJiAhaW5zaWRlTm9kZSlcbiAgICAgICAgICAgICAgICB1cGRhdGVyLnN5bmNUb01hcmtzKGkgPT0gdGhpcy5ub2RlLmNoaWxkQ291bnQgPyBNYXJrLm5vbmUgOiB0aGlzLm5vZGUuY2hpbGQoaSkubWFya3MsIGlubGluZSwgdmlldywgaSk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgbmV4dCBub2RlIGlzIGEgZGVzYyBtYXRjaGluZyB0aGlzIHdpZGdldCwgcmV1c2UgaXQsXG4gICAgICAgICAgICAvLyBvdGhlcndpc2UgaW5zZXJ0IHRoZSB3aWRnZXQgYXMgYSBuZXcgdmlldyBkZXNjLlxuICAgICAgICAgICAgdXBkYXRlci5wbGFjZVdpZGdldCh3aWRnZXQsIHZpZXcsIG9mZik7XG4gICAgICAgIH0sIChjaGlsZCwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIGkpID0+IHtcbiAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgd3JhcHBpbmcgbWFyayBkZXNjcyBtYXRjaCB0aGUgbm9kZSdzIG1hcmtzLlxuICAgICAgICAgICAgdXBkYXRlci5zeW5jVG9NYXJrcyhjaGlsZC5tYXJrcywgaW5saW5lLCB2aWV3LCBpKTtcbiAgICAgICAgICAgIC8vIFRyeSBzZXZlcmFsIHN0cmF0ZWdpZXMgZm9yIGRyYXdpbmcgdGhpcyBub2RlXG4gICAgICAgICAgICBsZXQgY29tcEluZGV4O1xuICAgICAgICAgICAgaWYgKHVwZGF0ZXIuZmluZE5vZGVNYXRjaChjaGlsZCwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIGkpKSA7XG4gICAgICAgICAgICBlbHNlIGlmIChjb21wb3NpdGlvbkluQ2hpbGQgJiYgdmlldy5zdGF0ZS5zZWxlY3Rpb24uZnJvbSA+IG9mZiAmJlxuICAgICAgICAgICAgICAgIHZpZXcuc3RhdGUuc2VsZWN0aW9uLnRvIDwgb2ZmICsgY2hpbGQubm9kZVNpemUgJiZcbiAgICAgICAgICAgICAgICAoY29tcEluZGV4ID0gdXBkYXRlci5maW5kSW5kZXhXaXRoQ2hpbGQoY29tcG9zaXRpb24ubm9kZSkpID4gLTEgJiZcbiAgICAgICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZU5vZGVBdChjaGlsZCwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIGNvbXBJbmRleCwgdmlldykpIDtcbiAgICAgICAgICAgIGVsc2UgaWYgKHVwZGF0ZXIudXBkYXRlTmV4dE5vZGUoY2hpbGQsIG91dGVyRGVjbywgaW5uZXJEZWNvLCB2aWV3LCBpLCBvZmYpKSA7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgaXQgYXMgYSBuZXcgdmlld1xuICAgICAgICAgICAgICAgIHVwZGF0ZXIuYWRkTm9kZShjaGlsZCwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIHZpZXcsIG9mZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvZmYgKz0gY2hpbGQubm9kZVNpemU7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBEcm9wIGFsbCByZW1haW5pbmcgZGVzY3MgYWZ0ZXIgdGhlIGN1cnJlbnQgcG9zaXRpb24uXG4gICAgICAgIHVwZGF0ZXIuc3luY1RvTWFya3MoW10sIGlubGluZSwgdmlldywgMCk7XG4gICAgICAgIGlmICh0aGlzLm5vZGUuaXNUZXh0YmxvY2spXG4gICAgICAgICAgICB1cGRhdGVyLmFkZFRleHRibG9ja0hhY2tzKCk7XG4gICAgICAgIHVwZGF0ZXIuZGVzdHJveVJlc3QoKTtcbiAgICAgICAgLy8gU3luYyB0aGUgRE9NIGlmIGFueXRoaW5nIGNoYW5nZWRcbiAgICAgICAgaWYgKHVwZGF0ZXIuY2hhbmdlZCB8fCB0aGlzLmRpcnR5ID09IENPTlRFTlRfRElSVFkpIHtcbiAgICAgICAgICAgIC8vIE1heSBoYXZlIHRvIHByb3RlY3QgZm9jdXNlZCBET00gZnJvbSBiZWluZyBjaGFuZ2VkIGlmIGEgY29tcG9zaXRpb24gaXMgYWN0aXZlXG4gICAgICAgICAgICBpZiAobG9jYWxDb21wb3NpdGlvbilcbiAgICAgICAgICAgICAgICB0aGlzLnByb3RlY3RMb2NhbENvbXBvc2l0aW9uKHZpZXcsIGxvY2FsQ29tcG9zaXRpb24pO1xuICAgICAgICAgICAgcmVuZGVyRGVzY3ModGhpcy5jb250ZW50RE9NLCB0aGlzLmNoaWxkcmVuLCB2aWV3KTtcbiAgICAgICAgICAgIGlmIChpb3MpXG4gICAgICAgICAgICAgICAgaW9zSGFja3ModGhpcy5kb20pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxvY2FsQ29tcG9zaXRpb25JbmZvKHZpZXcsIHBvcykge1xuICAgICAgICAvLyBPbmx5IGRvIHNvbWV0aGluZyBpZiBib3RoIHRoZSBzZWxlY3Rpb24gYW5kIGEgZm9jdXNlZCB0ZXh0IG5vZGVcbiAgICAgICAgLy8gYXJlIGluc2lkZSBvZiB0aGlzIG5vZGVcbiAgICAgICAgbGV0IHsgZnJvbSwgdG8gfSA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICBpZiAoISh2aWV3LnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24pIHx8IGZyb20gPCBwb3MgfHwgdG8gPiBwb3MgKyB0aGlzLm5vZGUuY29udGVudC5zaXplKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGxldCB0ZXh0Tm9kZSA9IHZpZXcuaW5wdXQuY29tcG9zaXRpb25Ob2RlO1xuICAgICAgICBpZiAoIXRleHROb2RlIHx8ICF0aGlzLmRvbS5jb250YWlucyh0ZXh0Tm9kZS5wYXJlbnROb2RlKSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBpZiAodGhpcy5ub2RlLmlubGluZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIHRleHQgaW4gdGhlIGZvY3VzZWQgbm9kZSBpbiB0aGUgbm9kZSwgc3RvcCBpZiBpdCdzIG5vdFxuICAgICAgICAgICAgLy8gdGhlcmUgKG1heSBoYXZlIGJlZW4gbW9kaWZpZWQgdGhyb3VnaCBvdGhlciBtZWFucywgaW4gd2hpY2hcbiAgICAgICAgICAgIC8vIGNhc2UgaXQgc2hvdWxkIG92ZXJ3cml0dGVuKVxuICAgICAgICAgICAgbGV0IHRleHQgPSB0ZXh0Tm9kZS5ub2RlVmFsdWU7XG4gICAgICAgICAgICBsZXQgdGV4dFBvcyA9IGZpbmRUZXh0SW5GcmFnbWVudCh0aGlzLm5vZGUuY29udGVudCwgdGV4dCwgZnJvbSAtIHBvcywgdG8gLSBwb3MpO1xuICAgICAgICAgICAgcmV0dXJuIHRleHRQb3MgPCAwID8gbnVsbCA6IHsgbm9kZTogdGV4dE5vZGUsIHBvczogdGV4dFBvcywgdGV4dCB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgbm9kZTogdGV4dE5vZGUsIHBvczogLTEsIHRleHQ6IFwiXCIgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0TG9jYWxDb21wb3NpdGlvbih2aWV3LCB7IG5vZGUsIHBvcywgdGV4dCB9KSB7XG4gICAgICAgIC8vIFRoZSBub2RlIGlzIGFscmVhZHkgcGFydCBvZiBhIGxvY2FsIHZpZXcgZGVzYywgbGVhdmUgaXQgdGhlcmVcbiAgICAgICAgaWYgKHRoaXMuZ2V0RGVzYyhub2RlKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8gQ3JlYXRlIGEgY29tcG9zaXRpb24gdmlldyBmb3IgdGhlIG9ycGhhbmVkIG5vZGVzXG4gICAgICAgIGxldCB0b3BOb2RlID0gbm9kZTtcbiAgICAgICAgZm9yICg7OyB0b3BOb2RlID0gdG9wTm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBpZiAodG9wTm9kZS5wYXJlbnROb2RlID09IHRoaXMuY29udGVudERPTSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHdoaWxlICh0b3BOb2RlLnByZXZpb3VzU2libGluZylcbiAgICAgICAgICAgICAgICB0b3BOb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodG9wTm9kZS5wcmV2aW91c1NpYmxpbmcpO1xuICAgICAgICAgICAgd2hpbGUgKHRvcE5vZGUubmV4dFNpYmxpbmcpXG4gICAgICAgICAgICAgICAgdG9wTm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvcE5vZGUubmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgaWYgKHRvcE5vZGUucG1WaWV3RGVzYylcbiAgICAgICAgICAgICAgICB0b3BOb2RlLnBtVmlld0Rlc2MgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRlc2MgPSBuZXcgQ29tcG9zaXRpb25WaWV3RGVzYyh0aGlzLCB0b3BOb2RlLCBub2RlLCB0ZXh0KTtcbiAgICAgICAgdmlldy5pbnB1dC5jb21wb3NpdGlvbk5vZGVzLnB1c2goZGVzYyk7XG4gICAgICAgIC8vIFBhdGNoIHVwIHRoaXMuY2hpbGRyZW4gdG8gY29udGFpbiB0aGUgY29tcG9zaXRpb24gdmlld1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gcmVwbGFjZU5vZGVzKHRoaXMuY2hpbGRyZW4sIHBvcywgcG9zICsgdGV4dC5sZW5ndGgsIHZpZXcsIGRlc2MpO1xuICAgIH1cbiAgICAvLyBJZiB0aGlzIGRlc2MgbXVzdCBiZSB1cGRhdGVkIHRvIG1hdGNoIHRoZSBnaXZlbiBub2RlIGRlY29yYXRpb24sXG4gICAgLy8gZG8gc28gYW5kIHJldHVybiB0cnVlLlxuICAgIHVwZGF0ZShub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbywgdmlldykge1xuICAgICAgICBpZiAodGhpcy5kaXJ0eSA9PSBOT0RFX0RJUlRZIHx8XG4gICAgICAgICAgICAhbm9kZS5zYW1lTWFya3VwKHRoaXMubm9kZSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlSW5uZXIobm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIHZpZXcpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdXBkYXRlSW5uZXIobm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIHZpZXcpIHtcbiAgICAgICAgdGhpcy51cGRhdGVPdXRlckRlY28ob3V0ZXJEZWNvKTtcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICAgICAgdGhpcy5pbm5lckRlY28gPSBpbm5lckRlY287XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRET00pXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKHZpZXcsIHRoaXMucG9zQXRTdGFydCk7XG4gICAgICAgIHRoaXMuZGlydHkgPSBOT1RfRElSVFk7XG4gICAgfVxuICAgIHVwZGF0ZU91dGVyRGVjbyhvdXRlckRlY28pIHtcbiAgICAgICAgaWYgKHNhbWVPdXRlckRlY28ob3V0ZXJEZWNvLCB0aGlzLm91dGVyRGVjbykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBuZWVkc1dyYXAgPSB0aGlzLm5vZGVET00ubm9kZVR5cGUgIT0gMTtcbiAgICAgICAgbGV0IG9sZERPTSA9IHRoaXMuZG9tO1xuICAgICAgICB0aGlzLmRvbSA9IHBhdGNoT3V0ZXJEZWNvKHRoaXMuZG9tLCB0aGlzLm5vZGVET00sIGNvbXB1dGVPdXRlckRlY28odGhpcy5vdXRlckRlY28sIHRoaXMubm9kZSwgbmVlZHNXcmFwKSwgY29tcHV0ZU91dGVyRGVjbyhvdXRlckRlY28sIHRoaXMubm9kZSwgbmVlZHNXcmFwKSk7XG4gICAgICAgIGlmICh0aGlzLmRvbSAhPSBvbGRET00pIHtcbiAgICAgICAgICAgIG9sZERPTS5wbVZpZXdEZXNjID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5kb20ucG1WaWV3RGVzYyA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdXRlckRlY28gPSBvdXRlckRlY287XG4gICAgfVxuICAgIC8vIE1hcmsgdGhpcyBub2RlIGFzIGJlaW5nIHRoZSBzZWxlY3RlZCBub2RlLlxuICAgIHNlbGVjdE5vZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGVET00ubm9kZVR5cGUgPT0gMSkge1xuICAgICAgICAgICAgdGhpcy5ub2RlRE9NLmNsYXNzTGlzdC5hZGQoXCJQcm9zZU1pcnJvci1zZWxlY3RlZG5vZGVcIik7XG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50RE9NIHx8ICF0aGlzLm5vZGUudHlwZS5zcGVjLmRyYWdnYWJsZSlcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVET00uZHJhZ2dhYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSZW1vdmUgc2VsZWN0ZWQgbm9kZSBtYXJraW5nIGZyb20gdGhpcyBub2RlLlxuICAgIGRlc2VsZWN0Tm9kZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubm9kZURPTS5ub2RlVHlwZSA9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGVET00uY2xhc3NMaXN0LnJlbW92ZShcIlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZVwiKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRET00gfHwgIXRoaXMubm9kZS50eXBlLnNwZWMuZHJhZ2dhYmxlKVxuICAgICAgICAgICAgICAgIHRoaXMubm9kZURPTS5yZW1vdmVBdHRyaWJ1dGUoXCJkcmFnZ2FibGVcIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGRvbUF0b20oKSB7IHJldHVybiB0aGlzLm5vZGUuaXNBdG9tOyB9XG59XG4vLyBDcmVhdGUgYSB2aWV3IGRlc2MgZm9yIHRoZSB0b3AtbGV2ZWwgZG9jdW1lbnQgbm9kZSwgdG8gYmUgZXhwb3J0ZWRcbi8vIGFuZCB1c2VkIGJ5IHRoZSB2aWV3IGNsYXNzLlxuZnVuY3Rpb24gZG9jVmlld0Rlc2MoZG9jLCBvdXRlckRlY28sIGlubmVyRGVjbywgZG9tLCB2aWV3KSB7XG4gICAgYXBwbHlPdXRlckRlY28oZG9tLCBvdXRlckRlY28sIGRvYyk7XG4gICAgbGV0IGRvY1ZpZXcgPSBuZXcgTm9kZVZpZXdEZXNjKHVuZGVmaW5lZCwgZG9jLCBvdXRlckRlY28sIGlubmVyRGVjbywgZG9tLCBkb20sIGRvbSwgdmlldywgMCk7XG4gICAgaWYgKGRvY1ZpZXcuY29udGVudERPTSlcbiAgICAgICAgZG9jVmlldy51cGRhdGVDaGlsZHJlbih2aWV3LCAwKTtcbiAgICByZXR1cm4gZG9jVmlldztcbn1cbmNsYXNzIFRleHRWaWV3RGVzYyBleHRlbmRzIE5vZGVWaWV3RGVzYyB7XG4gICAgY29uc3RydWN0b3IocGFyZW50LCBub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbywgZG9tLCBub2RlRE9NLCB2aWV3KSB7XG4gICAgICAgIHN1cGVyKHBhcmVudCwgbm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIGRvbSwgbnVsbCwgbm9kZURPTSwgdmlldywgMCk7XG4gICAgfVxuICAgIHBhcnNlUnVsZSgpIHtcbiAgICAgICAgbGV0IHNraXAgPSB0aGlzLm5vZGVET00ucGFyZW50Tm9kZTtcbiAgICAgICAgd2hpbGUgKHNraXAgJiYgc2tpcCAhPSB0aGlzLmRvbSAmJiAhc2tpcC5wbUlzRGVjbylcbiAgICAgICAgICAgIHNraXAgPSBza2lwLnBhcmVudE5vZGU7XG4gICAgICAgIHJldHVybiB7IHNraXA6IChza2lwIHx8IHRydWUpIH07XG4gICAgfVxuICAgIHVwZGF0ZShub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbywgdmlldykge1xuICAgICAgICBpZiAodGhpcy5kaXJ0eSA9PSBOT0RFX0RJUlRZIHx8ICh0aGlzLmRpcnR5ICE9IE5PVF9ESVJUWSAmJiAhdGhpcy5pblBhcmVudCgpKSB8fFxuICAgICAgICAgICAgIW5vZGUuc2FtZU1hcmt1cCh0aGlzLm5vZGUpKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZU91dGVyRGVjbyhvdXRlckRlY28pO1xuICAgICAgICBpZiAoKHRoaXMuZGlydHkgIT0gTk9UX0RJUlRZIHx8IG5vZGUudGV4dCAhPSB0aGlzLm5vZGUudGV4dCkgJiYgbm9kZS50ZXh0ICE9IHRoaXMubm9kZURPTS5ub2RlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZURPTS5ub2RlVmFsdWUgPSBub2RlLnRleHQ7XG4gICAgICAgICAgICBpZiAodmlldy50cmFja1dyaXRlcyA9PSB0aGlzLm5vZGVET00pXG4gICAgICAgICAgICAgICAgdmlldy50cmFja1dyaXRlcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICAgICAgdGhpcy5kaXJ0eSA9IE5PVF9ESVJUWTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGluUGFyZW50KCkge1xuICAgICAgICBsZXQgcGFyZW50RE9NID0gdGhpcy5wYXJlbnQuY29udGVudERPTTtcbiAgICAgICAgZm9yIChsZXQgbiA9IHRoaXMubm9kZURPTTsgbjsgbiA9IG4ucGFyZW50Tm9kZSlcbiAgICAgICAgICAgIGlmIChuID09IHBhcmVudERPTSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBkb21Gcm9tUG9zKHBvcykge1xuICAgICAgICByZXR1cm4geyBub2RlOiB0aGlzLm5vZGVET00sIG9mZnNldDogcG9zIH07XG4gICAgfVxuICAgIGxvY2FsUG9zRnJvbURPTShkb20sIG9mZnNldCwgYmlhcykge1xuICAgICAgICBpZiAoZG9tID09IHRoaXMubm9kZURPTSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc0F0U3RhcnQgKyBNYXRoLm1pbihvZmZzZXQsIHRoaXMubm9kZS50ZXh0Lmxlbmd0aCk7XG4gICAgICAgIHJldHVybiBzdXBlci5sb2NhbFBvc0Zyb21ET00oZG9tLCBvZmZzZXQsIGJpYXMpO1xuICAgIH1cbiAgICBpZ25vcmVNdXRhdGlvbihtdXRhdGlvbikge1xuICAgICAgICByZXR1cm4gbXV0YXRpb24udHlwZSAhPSBcImNoYXJhY3RlckRhdGFcIiAmJiBtdXRhdGlvbi50eXBlICE9IFwic2VsZWN0aW9uXCI7XG4gICAgfVxuICAgIHNsaWNlKGZyb20sIHRvLCB2aWV3KSB7XG4gICAgICAgIGxldCBub2RlID0gdGhpcy5ub2RlLmN1dChmcm9tLCB0byksIGRvbSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5vZGUudGV4dCk7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dFZpZXdEZXNjKHRoaXMucGFyZW50LCBub2RlLCB0aGlzLm91dGVyRGVjbywgdGhpcy5pbm5lckRlY28sIGRvbSwgZG9tLCB2aWV3KTtcbiAgICB9XG4gICAgbWFya0RpcnR5KGZyb20sIHRvKSB7XG4gICAgICAgIHN1cGVyLm1hcmtEaXJ0eShmcm9tLCB0byk7XG4gICAgICAgIGlmICh0aGlzLmRvbSAhPSB0aGlzLm5vZGVET00gJiYgKGZyb20gPT0gMCB8fCB0byA9PSB0aGlzLm5vZGVET00ubm9kZVZhbHVlLmxlbmd0aCkpXG4gICAgICAgICAgICB0aGlzLmRpcnR5ID0gTk9ERV9ESVJUWTtcbiAgICB9XG4gICAgZ2V0IGRvbUF0b20oKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlzVGV4dCh0ZXh0KSB7IHJldHVybiB0aGlzLm5vZGUudGV4dCA9PSB0ZXh0OyB9XG59XG4vLyBBIGR1bW15IGRlc2MgdXNlZCB0byB0YWcgdHJhaWxpbmcgQlIgb3IgSU1HIG5vZGVzIGNyZWF0ZWQgdG8gd29ya1xuLy8gYXJvdW5kIGNvbnRlbnRFZGl0YWJsZSB0ZXJyaWJsZW5lc3MuXG5jbGFzcyBUcmFpbGluZ0hhY2tWaWV3RGVzYyBleHRlbmRzIFZpZXdEZXNjIHtcbiAgICBwYXJzZVJ1bGUoKSB7IHJldHVybiB7IGlnbm9yZTogdHJ1ZSB9OyB9XG4gICAgbWF0Y2hlc0hhY2sobm9kZU5hbWUpIHsgcmV0dXJuIHRoaXMuZGlydHkgPT0gTk9UX0RJUlRZICYmIHRoaXMuZG9tLm5vZGVOYW1lID09IG5vZGVOYW1lOyB9XG4gICAgZ2V0IGRvbUF0b20oKSB7IHJldHVybiB0cnVlOyB9XG4gICAgZ2V0IGlnbm9yZUZvckNvb3JkcygpIHsgcmV0dXJuIHRoaXMuZG9tLm5vZGVOYW1lID09IFwiSU1HXCI7IH1cbn1cbi8vIEEgc2VwYXJhdGUgc3ViY2xhc3MgaXMgdXNlZCBmb3IgY3VzdG9taXplZCBub2RlIHZpZXdzLCBzbyB0aGF0IHRoZVxuLy8gZXh0cmEgY2hlY2tzIG9ubHkgaGF2ZSB0byBiZSBtYWRlIGZvciBub2RlcyB0aGF0IGFyZSBhY3R1YWxseVxuLy8gY3VzdG9taXplZC5cbmNsYXNzIEN1c3RvbU5vZGVWaWV3RGVzYyBleHRlbmRzIE5vZGVWaWV3RGVzYyB7XG4gICAgY29uc3RydWN0b3IocGFyZW50LCBub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbywgZG9tLCBjb250ZW50RE9NLCBub2RlRE9NLCBzcGVjLCB2aWV3LCBwb3MpIHtcbiAgICAgICAgc3VwZXIocGFyZW50LCBub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbywgZG9tLCBjb250ZW50RE9NLCBub2RlRE9NLCB2aWV3LCBwb3MpO1xuICAgICAgICB0aGlzLnNwZWMgPSBzcGVjO1xuICAgIH1cbiAgICAvLyBBIGN1c3RvbSBgdXBkYXRlYCBtZXRob2QgZ2V0cyB0byBkZWNpZGUgd2hldGhlciB0aGUgdXBkYXRlIGdvZXNcbiAgICAvLyB0aHJvdWdoLiBJZiBpdCBkb2VzLCBhbmQgdGhlcmUncyBhIGBjb250ZW50RE9NYCBub2RlLCBvdXIgbG9naWNcbiAgICAvLyB1cGRhdGVzIHRoZSBjaGlsZHJlbi5cbiAgICB1cGRhdGUobm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIHZpZXcpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlydHkgPT0gTk9ERV9ESVJUWSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuc3BlYy51cGRhdGUgJiYgKHRoaXMubm9kZS50eXBlID09IG5vZGUudHlwZSB8fCB0aGlzLnNwZWMubXVsdGlUeXBlKSkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuc3BlYy51cGRhdGUobm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28pO1xuICAgICAgICAgICAgaWYgKHJlc3VsdClcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlubmVyKG5vZGUsIG91dGVyRGVjbywgaW5uZXJEZWNvLCB2aWV3KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuY29udGVudERPTSAmJiAhbm9kZS5pc0xlYWYpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci51cGRhdGUobm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIHZpZXcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNlbGVjdE5vZGUoKSB7XG4gICAgICAgIHRoaXMuc3BlYy5zZWxlY3ROb2RlID8gdGhpcy5zcGVjLnNlbGVjdE5vZGUoKSA6IHN1cGVyLnNlbGVjdE5vZGUoKTtcbiAgICB9XG4gICAgZGVzZWxlY3ROb2RlKCkge1xuICAgICAgICB0aGlzLnNwZWMuZGVzZWxlY3ROb2RlID8gdGhpcy5zcGVjLmRlc2VsZWN0Tm9kZSgpIDogc3VwZXIuZGVzZWxlY3ROb2RlKCk7XG4gICAgfVxuICAgIHNldFNlbGVjdGlvbihhbmNob3IsIGhlYWQsIHZpZXcsIGZvcmNlKSB7XG4gICAgICAgIHRoaXMuc3BlYy5zZXRTZWxlY3Rpb24gPyB0aGlzLnNwZWMuc2V0U2VsZWN0aW9uKGFuY2hvciwgaGVhZCwgdmlldy5yb290KVxuICAgICAgICAgICAgOiBzdXBlci5zZXRTZWxlY3Rpb24oYW5jaG9yLCBoZWFkLCB2aWV3LCBmb3JjZSk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnNwZWMuZGVzdHJveSlcbiAgICAgICAgICAgIHRoaXMuc3BlYy5kZXN0cm95KCk7XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgc3RvcEV2ZW50KGV2ZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNwZWMuc3RvcEV2ZW50ID8gdGhpcy5zcGVjLnN0b3BFdmVudChldmVudCkgOiBmYWxzZTtcbiAgICB9XG4gICAgaWdub3JlTXV0YXRpb24obXV0YXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbiA/IHRoaXMuc3BlYy5pZ25vcmVNdXRhdGlvbihtdXRhdGlvbikgOiBzdXBlci5pZ25vcmVNdXRhdGlvbihtdXRhdGlvbik7XG4gICAgfVxufVxuLy8gU3luYyB0aGUgY29udGVudCBvZiB0aGUgZ2l2ZW4gRE9NIG5vZGUgd2l0aCB0aGUgbm9kZXMgYXNzb2NpYXRlZFxuLy8gd2l0aCB0aGUgZ2l2ZW4gYXJyYXkgb2YgdmlldyBkZXNjcywgcmVjdXJzaW5nIGludG8gbWFyayBkZXNjc1xuLy8gYmVjYXVzZSB0aGlzIHNob3VsZCBzeW5jIHRoZSBzdWJ0cmVlIGZvciBhIHdob2xlIG5vZGUgYXQgYSB0aW1lLlxuZnVuY3Rpb24gcmVuZGVyRGVzY3MocGFyZW50RE9NLCBkZXNjcywgdmlldykge1xuICAgIGxldCBkb20gPSBwYXJlbnRET00uZmlyc3RDaGlsZCwgd3JpdHRlbiA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVzY3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGRlc2MgPSBkZXNjc1tpXSwgY2hpbGRET00gPSBkZXNjLmRvbTtcbiAgICAgICAgaWYgKGNoaWxkRE9NLnBhcmVudE5vZGUgPT0gcGFyZW50RE9NKSB7XG4gICAgICAgICAgICB3aGlsZSAoY2hpbGRET00gIT0gZG9tKSB7XG4gICAgICAgICAgICAgICAgZG9tID0gcm0oZG9tKTtcbiAgICAgICAgICAgICAgICB3cml0dGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvbSA9IGRvbS5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHdyaXR0ZW4gPSB0cnVlO1xuICAgICAgICAgICAgcGFyZW50RE9NLmluc2VydEJlZm9yZShjaGlsZERPTSwgZG9tKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVzYyBpbnN0YW5jZW9mIE1hcmtWaWV3RGVzYykge1xuICAgICAgICAgICAgbGV0IHBvcyA9IGRvbSA/IGRvbS5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnRET00ubGFzdENoaWxkO1xuICAgICAgICAgICAgcmVuZGVyRGVzY3MoZGVzYy5jb250ZW50RE9NLCBkZXNjLmNoaWxkcmVuLCB2aWV3KTtcbiAgICAgICAgICAgIGRvbSA9IHBvcyA/IHBvcy5uZXh0U2libGluZyA6IHBhcmVudERPTS5maXJzdENoaWxkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChkb20pIHtcbiAgICAgICAgZG9tID0gcm0oZG9tKTtcbiAgICAgICAgd3JpdHRlbiA9IHRydWU7XG4gICAgfVxuICAgIGlmICh3cml0dGVuICYmIHZpZXcudHJhY2tXcml0ZXMgPT0gcGFyZW50RE9NKVxuICAgICAgICB2aWV3LnRyYWNrV3JpdGVzID0gbnVsbDtcbn1cbmNvbnN0IE91dGVyRGVjb0xldmVsID0gZnVuY3Rpb24gKG5vZGVOYW1lKSB7XG4gICAgaWYgKG5vZGVOYW1lKVxuICAgICAgICB0aGlzLm5vZGVOYW1lID0gbm9kZU5hbWU7XG59O1xuT3V0ZXJEZWNvTGV2ZWwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmNvbnN0IG5vRGVjbyA9IFtuZXcgT3V0ZXJEZWNvTGV2ZWxdO1xuZnVuY3Rpb24gY29tcHV0ZU91dGVyRGVjbyhvdXRlckRlY28sIG5vZGUsIG5lZWRzV3JhcCkge1xuICAgIGlmIChvdXRlckRlY28ubGVuZ3RoID09IDApXG4gICAgICAgIHJldHVybiBub0RlY287XG4gICAgbGV0IHRvcCA9IG5lZWRzV3JhcCA/IG5vRGVjb1swXSA6IG5ldyBPdXRlckRlY29MZXZlbCwgcmVzdWx0ID0gW3RvcF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdXRlckRlY28ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGF0dHJzID0gb3V0ZXJEZWNvW2ldLnR5cGUuYXR0cnM7XG4gICAgICAgIGlmICghYXR0cnMpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGF0dHJzLm5vZGVOYW1lKVxuICAgICAgICAgICAgcmVzdWx0LnB1c2godG9wID0gbmV3IE91dGVyRGVjb0xldmVsKGF0dHJzLm5vZGVOYW1lKSk7XG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gYXR0cnMpIHtcbiAgICAgICAgICAgIGxldCB2YWwgPSBhdHRyc1tuYW1lXTtcbiAgICAgICAgICAgIGlmICh2YWwgPT0gbnVsbClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChuZWVkc1dyYXAgJiYgcmVzdWx0Lmxlbmd0aCA9PSAxKVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRvcCA9IG5ldyBPdXRlckRlY29MZXZlbChub2RlLmlzSW5saW5lID8gXCJzcGFuXCIgOiBcImRpdlwiKSk7XG4gICAgICAgICAgICBpZiAobmFtZSA9PSBcImNsYXNzXCIpXG4gICAgICAgICAgICAgICAgdG9wLmNsYXNzID0gKHRvcC5jbGFzcyA/IHRvcC5jbGFzcyArIFwiIFwiIDogXCJcIikgKyB2YWw7XG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lID09IFwic3R5bGVcIilcbiAgICAgICAgICAgICAgICB0b3Auc3R5bGUgPSAodG9wLnN0eWxlID8gdG9wLnN0eWxlICsgXCI7XCIgOiBcIlwiKSArIHZhbDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgIT0gXCJub2RlTmFtZVwiKVxuICAgICAgICAgICAgICAgIHRvcFtuYW1lXSA9IHZhbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gcGF0Y2hPdXRlckRlY28ob3V0ZXJET00sIG5vZGVET00sIHByZXZDb21wdXRlZCwgY3VyQ29tcHV0ZWQpIHtcbiAgICAvLyBTaG9ydGN1dCBmb3IgdHJpdmlhbCBjYXNlXG4gICAgaWYgKHByZXZDb21wdXRlZCA9PSBub0RlY28gJiYgY3VyQ29tcHV0ZWQgPT0gbm9EZWNvKVxuICAgICAgICByZXR1cm4gbm9kZURPTTtcbiAgICBsZXQgY3VyRE9NID0gbm9kZURPTTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1ckNvbXB1dGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBkZWNvID0gY3VyQ29tcHV0ZWRbaV0sIHByZXYgPSBwcmV2Q29tcHV0ZWRbaV07XG4gICAgICAgIGlmIChpKSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50O1xuICAgICAgICAgICAgaWYgKHByZXYgJiYgcHJldi5ub2RlTmFtZSA9PSBkZWNvLm5vZGVOYW1lICYmIGN1ckRPTSAhPSBvdXRlckRPTSAmJlxuICAgICAgICAgICAgICAgIChwYXJlbnQgPSBjdXJET00ucGFyZW50Tm9kZSkgJiYgcGFyZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gZGVjby5ub2RlTmFtZSkge1xuICAgICAgICAgICAgICAgIGN1ckRPTSA9IHBhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZGVjby5ub2RlTmFtZSk7XG4gICAgICAgICAgICAgICAgcGFyZW50LnBtSXNEZWNvID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoY3VyRE9NKTtcbiAgICAgICAgICAgICAgICBwcmV2ID0gbm9EZWNvWzBdO1xuICAgICAgICAgICAgICAgIGN1ckRPTSA9IHBhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYXRjaEF0dHJpYnV0ZXMoY3VyRE9NLCBwcmV2IHx8IG5vRGVjb1swXSwgZGVjbyk7XG4gICAgfVxuICAgIHJldHVybiBjdXJET007XG59XG5mdW5jdGlvbiBwYXRjaEF0dHJpYnV0ZXMoZG9tLCBwcmV2LCBjdXIpIHtcbiAgICBmb3IgKGxldCBuYW1lIGluIHByZXYpXG4gICAgICAgIGlmIChuYW1lICE9IFwiY2xhc3NcIiAmJiBuYW1lICE9IFwic3R5bGVcIiAmJiBuYW1lICE9IFwibm9kZU5hbWVcIiAmJiAhKG5hbWUgaW4gY3VyKSlcbiAgICAgICAgICAgIGRvbS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBjdXIpXG4gICAgICAgIGlmIChuYW1lICE9IFwiY2xhc3NcIiAmJiBuYW1lICE9IFwic3R5bGVcIiAmJiBuYW1lICE9IFwibm9kZU5hbWVcIiAmJiBjdXJbbmFtZV0gIT0gcHJldltuYW1lXSlcbiAgICAgICAgICAgIGRvbS5zZXRBdHRyaWJ1dGUobmFtZSwgY3VyW25hbWVdKTtcbiAgICBpZiAocHJldi5jbGFzcyAhPSBjdXIuY2xhc3MpIHtcbiAgICAgICAgbGV0IHByZXZMaXN0ID0gcHJldi5jbGFzcyA/IHByZXYuY2xhc3Muc3BsaXQoXCIgXCIpLmZpbHRlcihCb29sZWFuKSA6IFtdO1xuICAgICAgICBsZXQgY3VyTGlzdCA9IGN1ci5jbGFzcyA/IGN1ci5jbGFzcy5zcGxpdChcIiBcIikuZmlsdGVyKEJvb2xlYW4pIDogW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldkxpc3QubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAoY3VyTGlzdC5pbmRleE9mKHByZXZMaXN0W2ldKSA9PSAtMSlcbiAgICAgICAgICAgICAgICBkb20uY2xhc3NMaXN0LnJlbW92ZShwcmV2TGlzdFtpXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTGlzdC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGlmIChwcmV2TGlzdC5pbmRleE9mKGN1ckxpc3RbaV0pID09IC0xKVxuICAgICAgICAgICAgICAgIGRvbS5jbGFzc0xpc3QuYWRkKGN1ckxpc3RbaV0pO1xuICAgICAgICBpZiAoZG9tLmNsYXNzTGlzdC5sZW5ndGggPT0gMClcbiAgICAgICAgICAgIGRvbS5yZW1vdmVBdHRyaWJ1dGUoXCJjbGFzc1wiKTtcbiAgICB9XG4gICAgaWYgKHByZXYuc3R5bGUgIT0gY3VyLnN0eWxlKSB7XG4gICAgICAgIGlmIChwcmV2LnN0eWxlKSB7XG4gICAgICAgICAgICBsZXQgcHJvcCA9IC9cXHMqKFtcXHdcXC1cXHhhMS1cXHVmZmZmXSspXFxzKjooPzpcIig/OlxcXFwufFteXCJdKSpcInwnKD86XFxcXC58W14nXSkqJ3xcXCguKj9cXCl8W147XSkqL2csIG07XG4gICAgICAgICAgICB3aGlsZSAobSA9IHByb3AuZXhlYyhwcmV2LnN0eWxlKSlcbiAgICAgICAgICAgICAgICBkb20uc3R5bGUucmVtb3ZlUHJvcGVydHkobVsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1ci5zdHlsZSlcbiAgICAgICAgICAgIGRvbS5zdHlsZS5jc3NUZXh0ICs9IGN1ci5zdHlsZTtcbiAgICB9XG59XG5mdW5jdGlvbiBhcHBseU91dGVyRGVjbyhkb20sIGRlY28sIG5vZGUpIHtcbiAgICByZXR1cm4gcGF0Y2hPdXRlckRlY28oZG9tLCBkb20sIG5vRGVjbywgY29tcHV0ZU91dGVyRGVjbyhkZWNvLCBub2RlLCBkb20ubm9kZVR5cGUgIT0gMSkpO1xufVxuZnVuY3Rpb24gc2FtZU91dGVyRGVjbyhhLCBiKSB7XG4gICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKVxuICAgICAgICBpZiAoIWFbaV0udHlwZS5lcShiW2ldLnR5cGUpKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xufVxuLy8gUmVtb3ZlIGEgRE9NIG5vZGUgYW5kIHJldHVybiBpdHMgbmV4dCBzaWJsaW5nLlxuZnVuY3Rpb24gcm0oZG9tKSB7XG4gICAgbGV0IG5leHQgPSBkb20ubmV4dFNpYmxpbmc7XG4gICAgZG9tLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZG9tKTtcbiAgICByZXR1cm4gbmV4dDtcbn1cbi8vIEhlbHBlciBjbGFzcyBmb3IgaW5jcmVtZW50YWxseSB1cGRhdGluZyBhIHRyZWUgb2YgbWFyayBkZXNjcyBhbmRcbi8vIHRoZSB3aWRnZXQgYW5kIG5vZGUgZGVzY3MgaW5zaWRlIG9mIHRoZW0uXG5jbGFzcyBWaWV3VHJlZVVwZGF0ZXIge1xuICAgIGNvbnN0cnVjdG9yKHRvcCwgbG9jaywgdmlldykge1xuICAgICAgICB0aGlzLmxvY2sgPSBsb2NrO1xuICAgICAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICAgICAgICAvLyBJbmRleCBpbnRvIGB0aGlzLnRvcGAncyBjaGlsZCBhcnJheSwgcmVwcmVzZW50cyB0aGUgY3VycmVudFxuICAgICAgICAvLyB1cGRhdGUgcG9zaXRpb24uXG4gICAgICAgIHRoaXMuaW5kZXggPSAwO1xuICAgICAgICAvLyBXaGVuIGVudGVyaW5nIGEgbWFyaywgdGhlIGN1cnJlbnQgdG9wIGFuZCBpbmRleCBhcmUgcHVzaGVkXG4gICAgICAgIC8vIG9udG8gdGhpcy5cbiAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuICAgICAgICAvLyBUcmFja3Mgd2hldGhlciBhbnl0aGluZyB3YXMgY2hhbmdlZFxuICAgICAgICB0aGlzLmNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b3AgPSB0b3A7XG4gICAgICAgIHRoaXMucHJlTWF0Y2ggPSBwcmVNYXRjaCh0b3Aubm9kZS5jb250ZW50LCB0b3ApO1xuICAgIH1cbiAgICAvLyBEZXN0cm95IGFuZCByZW1vdmUgdGhlIGNoaWxkcmVuIGJldHdlZW4gdGhlIGdpdmVuIGluZGljZXMgaW5cbiAgICAvLyBgdGhpcy50b3BgLlxuICAgIGRlc3Ryb3lCZXR3ZWVuKHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgaWYgKHN0YXJ0ID09IGVuZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspXG4gICAgICAgICAgICB0aGlzLnRvcC5jaGlsZHJlbltpXS5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudG9wLmNoaWxkcmVuLnNwbGljZShzdGFydCwgZW5kIC0gc3RhcnQpO1xuICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgICAvLyBEZXN0cm95IGFsbCByZW1haW5pbmcgY2hpbGRyZW4gaW4gYHRoaXMudG9wYC5cbiAgICBkZXN0cm95UmVzdCgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95QmV0d2Vlbih0aGlzLmluZGV4LCB0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGgpO1xuICAgIH1cbiAgICAvLyBTeW5jIHRoZSBjdXJyZW50IHN0YWNrIG9mIG1hcmsgZGVzY3Mgd2l0aCB0aGUgZ2l2ZW4gYXJyYXkgb2ZcbiAgICAvLyBtYXJrcywgcmV1c2luZyBleGlzdGluZyBtYXJrIGRlc2NzIHdoZW4gcG9zc2libGUuXG4gICAgc3luY1RvTWFya3MobWFya3MsIGlubGluZSwgdmlldywgcGFyZW50SW5kZXgpIHtcbiAgICAgICAgbGV0IGtlZXAgPSAwLCBkZXB0aCA9IHRoaXMuc3RhY2subGVuZ3RoID4+IDE7XG4gICAgICAgIGxldCBtYXhLZWVwID0gTWF0aC5taW4oZGVwdGgsIG1hcmtzLmxlbmd0aCk7XG4gICAgICAgIHdoaWxlIChrZWVwIDwgbWF4S2VlcCAmJlxuICAgICAgICAgICAgKGtlZXAgPT0gZGVwdGggLSAxID8gdGhpcy50b3AgOiB0aGlzLnN0YWNrWyhrZWVwICsgMSkgPDwgMV0pXG4gICAgICAgICAgICAgICAgLm1hdGNoZXNNYXJrKG1hcmtzW2tlZXBdKSAmJiBtYXJrc1trZWVwXS50eXBlLnNwZWMuc3Bhbm5pbmcgIT09IGZhbHNlKVxuICAgICAgICAgICAga2VlcCsrO1xuICAgICAgICB3aGlsZSAoa2VlcCA8IGRlcHRoKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3lSZXN0KCk7XG4gICAgICAgICAgICB0aGlzLnRvcC5kaXJ0eSA9IE5PVF9ESVJUWTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgdGhpcy50b3AgPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgZGVwdGgtLTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoZGVwdGggPCBtYXJrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnRvcCwgdGhpcy5pbmRleCArIDEpO1xuICAgICAgICAgICAgbGV0IGZvdW5kID0gLTEsIHNjYW5UbyA9IHRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChwYXJlbnRJbmRleCA8IHRoaXMucHJlTWF0Y2guaW5kZXgpXG4gICAgICAgICAgICAgICAgc2NhblRvID0gTWF0aC5taW4odGhpcy5pbmRleCArIDMsIHNjYW5Ubyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5pbmRleDsgaSA8IHNjYW5UbzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSB0aGlzLnRvcC5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dC5tYXRjaGVzTWFyayhtYXJrc1tkZXB0aF0pICYmICF0aGlzLmlzTG9ja2VkKG5leHQuZG9tKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmb3VuZCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kID4gdGhpcy5pbmRleCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50b3AgPSB0aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBtYXJrRGVzYyA9IE1hcmtWaWV3RGVzYy5jcmVhdGUodGhpcy50b3AsIG1hcmtzW2RlcHRoXSwgaW5saW5lLCB2aWV3KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvcC5jaGlsZHJlbi5zcGxpY2UodGhpcy5pbmRleCwgMCwgbWFya0Rlc2MpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9wID0gbWFya0Rlc2M7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5kZXggPSAwO1xuICAgICAgICAgICAgZGVwdGgrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUcnkgdG8gZmluZCBhIG5vZGUgZGVzYyBtYXRjaGluZyB0aGUgZ2l2ZW4gZGF0YS4gU2tpcCBvdmVyIGl0IGFuZFxuICAgIC8vIHJldHVybiB0cnVlIHdoZW4gc3VjY2Vzc2Z1bC5cbiAgICBmaW5kTm9kZU1hdGNoKG5vZGUsIG91dGVyRGVjbywgaW5uZXJEZWNvLCBpbmRleCkge1xuICAgICAgICBsZXQgZm91bmQgPSAtMSwgdGFyZ2V0RGVzYztcbiAgICAgICAgaWYgKGluZGV4ID49IHRoaXMucHJlTWF0Y2guaW5kZXggJiZcbiAgICAgICAgICAgICh0YXJnZXREZXNjID0gdGhpcy5wcmVNYXRjaC5tYXRjaGVzW2luZGV4IC0gdGhpcy5wcmVNYXRjaC5pbmRleF0pLnBhcmVudCA9PSB0aGlzLnRvcCAmJlxuICAgICAgICAgICAgdGFyZ2V0RGVzYy5tYXRjaGVzTm9kZShub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbykpIHtcbiAgICAgICAgICAgIGZvdW5kID0gdGhpcy50b3AuY2hpbGRyZW4uaW5kZXhPZih0YXJnZXREZXNjLCB0aGlzLmluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmluZGV4LCBlID0gTWF0aC5taW4odGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoLCBpICsgNSk7IGkgPCBlOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLnRvcC5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQubWF0Y2hlc05vZGUobm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28pICYmICF0aGlzLnByZU1hdGNoLm1hdGNoZWQuaGFzKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZm91bmQgPCAwKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgsIGZvdW5kKTtcbiAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdXBkYXRlTm9kZUF0KG5vZGUsIG91dGVyRGVjbywgaW5uZXJEZWNvLCBpbmRleCwgdmlldykge1xuICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLnRvcC5jaGlsZHJlbltpbmRleF07XG4gICAgICAgIGlmIChjaGlsZC5kaXJ0eSA9PSBOT0RFX0RJUlRZICYmIGNoaWxkLmRvbSA9PSBjaGlsZC5jb250ZW50RE9NKVxuICAgICAgICAgICAgY2hpbGQuZGlydHkgPSBDT05URU5UX0RJUlRZO1xuICAgICAgICBpZiAoIWNoaWxkLnVwZGF0ZShub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbywgdmlldykpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRoaXMuZGVzdHJveUJldHdlZW4odGhpcy5pbmRleCwgaW5kZXgpO1xuICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmaW5kSW5kZXhXaXRoQ2hpbGQoZG9tTm9kZSkge1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gZG9tTm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgaWYgKCFwYXJlbnQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgaWYgKHBhcmVudCA9PSB0aGlzLnRvcC5jb250ZW50RE9NKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRlc2MgPSBkb21Ob2RlLnBtVmlld0Rlc2M7XG4gICAgICAgICAgICAgICAgaWYgKGRlc2MpXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmluZGV4OyBpIDwgdGhpcy50b3AuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvcC5jaGlsZHJlbltpXSA9PSBkZXNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9tTm9kZSA9IHBhcmVudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUcnkgdG8gdXBkYXRlIHRoZSBuZXh0IG5vZGUsIGlmIGFueSwgdG8gdGhlIGdpdmVuIGRhdGEuIENoZWNrc1xuICAgIC8vIHByZS1tYXRjaGVzIHRvIGF2b2lkIG92ZXJ3cml0aW5nIG5vZGVzIHRoYXQgY291bGQgc3RpbGwgYmUgdXNlZC5cbiAgICB1cGRhdGVOZXh0Tm9kZShub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbywgdmlldywgaW5kZXgsIHBvcykge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5pbmRleDsgaSA8IHRoaXMudG9wLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbmV4dCA9IHRoaXMudG9wLmNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgaWYgKG5leHQgaW5zdGFuY2VvZiBOb2RlVmlld0Rlc2MpIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJlTWF0Y2ggPSB0aGlzLnByZU1hdGNoLm1hdGNoZWQuZ2V0KG5leHQpO1xuICAgICAgICAgICAgICAgIGlmIChwcmVNYXRjaCAhPSBudWxsICYmIHByZU1hdGNoICE9IGluZGV4KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGV0IG5leHRET00gPSBuZXh0LmRvbSwgdXBkYXRlZDtcbiAgICAgICAgICAgICAgICAvLyBDYW4ndCB1cGRhdGUgaWYgbmV4dERPTSBpcyBvciBjb250YWlucyB0aGlzLmxvY2ssIGV4Y2VwdCBpZlxuICAgICAgICAgICAgICAgIC8vIGl0J3MgYSB0ZXh0IG5vZGUgd2hvc2UgY29udGVudCBhbHJlYWR5IG1hdGNoZXMgdGhlIG5ldyB0ZXh0XG4gICAgICAgICAgICAgICAgLy8gYW5kIHdob3NlIGRlY29yYXRpb25zIG1hdGNoIHRoZSBuZXcgb25lcy5cbiAgICAgICAgICAgICAgICBsZXQgbG9ja2VkID0gdGhpcy5pc0xvY2tlZChuZXh0RE9NKSAmJlxuICAgICAgICAgICAgICAgICAgICAhKG5vZGUuaXNUZXh0ICYmIG5leHQubm9kZSAmJiBuZXh0Lm5vZGUuaXNUZXh0ICYmIG5leHQubm9kZURPTS5ub2RlVmFsdWUgPT0gbm9kZS50ZXh0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmRpcnR5ICE9IE5PREVfRElSVFkgJiYgc2FtZU91dGVyRGVjbyhvdXRlckRlY28sIG5leHQub3V0ZXJEZWNvKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFsb2NrZWQgJiYgbmV4dC51cGRhdGUobm9kZSwgb3V0ZXJEZWNvLCBpbm5lckRlY28sIHZpZXcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveUJldHdlZW4odGhpcy5pbmRleCwgaSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0LmRvbSAhPSBuZXh0RE9NKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWxvY2tlZCAmJiAodXBkYXRlZCA9IHRoaXMucmVjcmVhdGVXcmFwcGVyKG5leHQsIG5vZGUsIG91dGVyRGVjbywgaW5uZXJEZWNvLCB2aWV3LCBwb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lCZXR3ZWVuKHRoaXMuaW5kZXgsIGkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4XSA9IHVwZGF0ZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkLmNvbnRlbnRET00pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQuZGlydHkgPSBDT05URU5UX0RJUlRZO1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZC51cGRhdGVDaGlsZHJlbih2aWV3LCBwb3MgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQuZGlydHkgPSBOT1RfRElSVFk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBXaGVuIGEgbm9kZSB3aXRoIGNvbnRlbnQgaXMgcmVwbGFjZWQgYnkgYSBkaWZmZXJlbnQgbm9kZSB3aXRoXG4gICAgLy8gaWRlbnRpY2FsIGNvbnRlbnQsIG1vdmUgb3ZlciBpdHMgY2hpbGRyZW4uXG4gICAgcmVjcmVhdGVXcmFwcGVyKG5leHQsIG5vZGUsIG91dGVyRGVjbywgaW5uZXJEZWNvLCB2aWV3LCBwb3MpIHtcbiAgICAgICAgaWYgKG5leHQuZGlydHkgfHwgbm9kZS5pc0F0b20gfHwgIW5leHQuY2hpbGRyZW4ubGVuZ3RoIHx8XG4gICAgICAgICAgICAhbmV4dC5ub2RlLmNvbnRlbnQuZXEobm9kZS5jb250ZW50KSB8fFxuICAgICAgICAgICAgIXNhbWVPdXRlckRlY28ob3V0ZXJEZWNvLCBuZXh0Lm91dGVyRGVjbykgfHwgIWlubmVyRGVjby5lcShuZXh0LmlubmVyRGVjbykpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgbGV0IHdyYXBwZXIgPSBOb2RlVmlld0Rlc2MuY3JlYXRlKHRoaXMudG9wLCBub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbywgdmlldywgcG9zKTtcbiAgICAgICAgaWYgKHdyYXBwZXIuY29udGVudERPTSkge1xuICAgICAgICAgICAgd3JhcHBlci5jaGlsZHJlbiA9IG5leHQuY2hpbGRyZW47XG4gICAgICAgICAgICBuZXh0LmNoaWxkcmVuID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBjaCBvZiB3cmFwcGVyLmNoaWxkcmVuKVxuICAgICAgICAgICAgICAgIGNoLnBhcmVudCA9IHdyYXBwZXI7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dC5kZXN0cm95KCk7XG4gICAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cbiAgICAvLyBJbnNlcnQgdGhlIG5vZGUgYXMgYSBuZXdseSBjcmVhdGVkIG5vZGUgZGVzYy5cbiAgICBhZGROb2RlKG5vZGUsIG91dGVyRGVjbywgaW5uZXJEZWNvLCB2aWV3LCBwb3MpIHtcbiAgICAgICAgbGV0IGRlc2MgPSBOb2RlVmlld0Rlc2MuY3JlYXRlKHRoaXMudG9wLCBub2RlLCBvdXRlckRlY28sIGlubmVyRGVjbywgdmlldywgcG9zKTtcbiAgICAgICAgaWYgKGRlc2MuY29udGVudERPTSlcbiAgICAgICAgICAgIGRlc2MudXBkYXRlQ2hpbGRyZW4odmlldywgcG9zICsgMSk7XG4gICAgICAgIHRoaXMudG9wLmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4KyssIDAsIGRlc2MpO1xuICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgICBwbGFjZVdpZGdldCh3aWRnZXQsIHZpZXcsIHBvcykge1xuICAgICAgICBsZXQgbmV4dCA9IHRoaXMuaW5kZXggPCB0aGlzLnRvcC5jaGlsZHJlbi5sZW5ndGggPyB0aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4XSA6IG51bGw7XG4gICAgICAgIGlmIChuZXh0ICYmIG5leHQubWF0Y2hlc1dpZGdldCh3aWRnZXQpICYmXG4gICAgICAgICAgICAod2lkZ2V0ID09IG5leHQud2lkZ2V0IHx8ICFuZXh0LndpZGdldC50eXBlLnRvRE9NLnBhcmVudE5vZGUpKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgZGVzYyA9IG5ldyBXaWRnZXRWaWV3RGVzYyh0aGlzLnRvcCwgd2lkZ2V0LCB2aWV3LCBwb3MpO1xuICAgICAgICAgICAgdGhpcy50b3AuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgrKywgMCwgZGVzYyk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSBhIHRleHRibG9jayBsb29rcyBhbmQgYmVoYXZlcyBjb3JyZWN0bHkgaW5cbiAgICAvLyBjb250ZW50RWRpdGFibGUuXG4gICAgYWRkVGV4dGJsb2NrSGFja3MoKSB7XG4gICAgICAgIGxldCBsYXN0Q2hpbGQgPSB0aGlzLnRvcC5jaGlsZHJlblt0aGlzLmluZGV4IC0gMV0sIHBhcmVudCA9IHRoaXMudG9wO1xuICAgICAgICB3aGlsZSAobGFzdENoaWxkIGluc3RhbmNlb2YgTWFya1ZpZXdEZXNjKSB7XG4gICAgICAgICAgICBwYXJlbnQgPSBsYXN0Q2hpbGQ7XG4gICAgICAgICAgICBsYXN0Q2hpbGQgPSBwYXJlbnQuY2hpbGRyZW5bcGFyZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbGFzdENoaWxkIHx8IC8vIEVtcHR5IHRleHRibG9ja1xuICAgICAgICAgICAgIShsYXN0Q2hpbGQgaW5zdGFuY2VvZiBUZXh0Vmlld0Rlc2MpIHx8XG4gICAgICAgICAgICAvXFxuJC8udGVzdChsYXN0Q2hpbGQubm9kZS50ZXh0KSB8fFxuICAgICAgICAgICAgKHRoaXMudmlldy5yZXF1aXJlc0dlY2tvSGFja05vZGUgJiYgL1xccyQvLnRlc3QobGFzdENoaWxkLm5vZGUudGV4dCkpKSB7XG4gICAgICAgICAgICAvLyBBdm9pZCBidWdzIGluIFNhZmFyaSdzIGN1cnNvciBkcmF3aW5nICgjMTE2NSkgYW5kIENocm9tZSdzIG1vdXNlIHNlbGVjdGlvbiAoIzExNTIpXG4gICAgICAgICAgICBpZiAoKHNhZmFyaSB8fCBjaHJvbWUpICYmIGxhc3RDaGlsZCAmJiBsYXN0Q2hpbGQuZG9tLmNvbnRlbnRFZGl0YWJsZSA9PSBcImZhbHNlXCIpXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRIYWNrTm9kZShcIklNR1wiLCBwYXJlbnQpO1xuICAgICAgICAgICAgdGhpcy5hZGRIYWNrTm9kZShcIkJSXCIsIHRoaXMudG9wKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRIYWNrTm9kZShub2RlTmFtZSwgcGFyZW50KSB7XG4gICAgICAgIGlmIChwYXJlbnQgPT0gdGhpcy50b3AgJiYgdGhpcy5pbmRleCA8IHBhcmVudC5jaGlsZHJlbi5sZW5ndGggJiYgcGFyZW50LmNoaWxkcmVuW3RoaXMuaW5kZXhdLm1hdGNoZXNIYWNrKG5vZGVOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobm9kZU5hbWUpO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiSU1HXCIpIHtcbiAgICAgICAgICAgICAgICBkb20uY2xhc3NOYW1lID0gXCJQcm9zZU1pcnJvci1zZXBhcmF0b3JcIjtcbiAgICAgICAgICAgICAgICBkb20uYWx0ID0gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcIkJSXCIpXG4gICAgICAgICAgICAgICAgZG9tLmNsYXNzTmFtZSA9IFwiUHJvc2VNaXJyb3ItdHJhaWxpbmdCcmVha1wiO1xuICAgICAgICAgICAgbGV0IGhhY2sgPSBuZXcgVHJhaWxpbmdIYWNrVmlld0Rlc2ModGhpcy50b3AsIFtdLCBkb20sIG51bGwpO1xuICAgICAgICAgICAgaWYgKHBhcmVudCAhPSB0aGlzLnRvcClcbiAgICAgICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChoYWNrKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgrKywgMCwgaGFjayk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzTG9ja2VkKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jayAmJiAobm9kZSA9PSB0aGlzLmxvY2sgfHwgbm9kZS5ub2RlVHlwZSA9PSAxICYmIG5vZGUuY29udGFpbnModGhpcy5sb2NrLnBhcmVudE5vZGUpKTtcbiAgICB9XG59XG4vLyBJdGVyYXRlIGZyb20gdGhlIGVuZCBvZiB0aGUgZnJhZ21lbnQgYW5kIGFycmF5IG9mIGRlc2NzIHRvIGZpbmRcbi8vIGRpcmVjdGx5IG1hdGNoaW5nIG9uZXMsIGluIG9yZGVyIHRvIGF2b2lkIG92ZXJlYWdlcmx5IHJldXNpbmcgdGhvc2Vcbi8vIGZvciBvdGhlciBub2Rlcy5cbmZ1bmN0aW9uIHByZU1hdGNoKGZyYWcsIHBhcmVudERlc2MpIHtcbiAgICBsZXQgY3VyRGVzYyA9IHBhcmVudERlc2MsIGRlc2NJID0gY3VyRGVzYy5jaGlsZHJlbi5sZW5ndGg7XG4gICAgbGV0IGZJID0gZnJhZy5jaGlsZENvdW50LCBtYXRjaGVkID0gbmV3IE1hcCwgbWF0Y2hlcyA9IFtdO1xuICAgIG91dGVyOiB3aGlsZSAoZkkgPiAwKSB7XG4gICAgICAgIGxldCBkZXNjO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBpZiAoZGVzY0kpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IGN1ckRlc2MuY2hpbGRyZW5bZGVzY0kgLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dCBpbnN0YW5jZW9mIE1hcmtWaWV3RGVzYykge1xuICAgICAgICAgICAgICAgICAgICBjdXJEZXNjID0gbmV4dDtcbiAgICAgICAgICAgICAgICAgICAgZGVzY0kgPSBuZXh0LmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2MgPSBuZXh0O1xuICAgICAgICAgICAgICAgICAgICBkZXNjSS0tO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjdXJEZXNjID09IHBhcmVudERlc2MpIHtcbiAgICAgICAgICAgICAgICBicmVhayBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlc2NJID0gY3VyRGVzYy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihjdXJEZXNjKTtcbiAgICAgICAgICAgICAgICBjdXJEZXNjID0gY3VyRGVzYy5wYXJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5vZGUgPSBkZXNjLm5vZGU7XG4gICAgICAgIGlmICghbm9kZSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBpZiAobm9kZSAhPSBmcmFnLmNoaWxkKGZJIC0gMSkpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgLS1mSTtcbiAgICAgICAgbWF0Y2hlZC5zZXQoZGVzYywgZkkpO1xuICAgICAgICBtYXRjaGVzLnB1c2goZGVzYyk7XG4gICAgfVxuICAgIHJldHVybiB7IGluZGV4OiBmSSwgbWF0Y2hlZCwgbWF0Y2hlczogbWF0Y2hlcy5yZXZlcnNlKCkgfTtcbn1cbmZ1bmN0aW9uIGNvbXBhcmVTaWRlKGEsIGIpIHtcbiAgICByZXR1cm4gYS50eXBlLnNpZGUgLSBiLnR5cGUuc2lkZTtcbn1cbi8vIFRoaXMgZnVuY3Rpb24gYWJzdHJhY3RzIGl0ZXJhdGluZyBvdmVyIHRoZSBub2RlcyBhbmQgZGVjb3JhdGlvbnMgaW5cbi8vIGEgZnJhZ21lbnQuIENhbGxzIGBvbk5vZGVgIGZvciBlYWNoIG5vZGUsIHdpdGggaXRzIGxvY2FsIGFuZCBjaGlsZFxuLy8gZGVjb3JhdGlvbnMuIFNwbGl0cyB0ZXh0IG5vZGVzIHdoZW4gdGhlcmUgaXMgYSBkZWNvcmF0aW9uIHN0YXJ0aW5nXG4vLyBvciBlbmRpbmcgaW5zaWRlIG9mIHRoZW0uIENhbGxzIGBvbldpZGdldGAgZm9yIGVhY2ggd2lkZ2V0LlxuZnVuY3Rpb24gaXRlckRlY28ocGFyZW50LCBkZWNvLCBvbldpZGdldCwgb25Ob2RlKSB7XG4gICAgbGV0IGxvY2FscyA9IGRlY28ubG9jYWxzKHBhcmVudCksIG9mZnNldCA9IDA7XG4gICAgLy8gU2ltcGxlLCBjaGVhcCB2YXJpYW50IGZvciB3aGVuIHRoZXJlIGFyZSBubyBsb2NhbCBkZWNvcmF0aW9uc1xuICAgIGlmIChsb2NhbHMubGVuZ3RoID09IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJlbnQuY2hpbGRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGQgPSBwYXJlbnQuY2hpbGQoaSk7XG4gICAgICAgICAgICBvbk5vZGUoY2hpbGQsIGxvY2FscywgZGVjby5mb3JDaGlsZChvZmZzZXQsIGNoaWxkKSwgaSk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gY2hpbGQubm9kZVNpemU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZGVjb0luZGV4ID0gMCwgYWN0aXZlID0gW10sIHJlc3ROb2RlID0gbnVsbDtcbiAgICBmb3IgKGxldCBwYXJlbnRJbmRleCA9IDA7Oykge1xuICAgICAgICBsZXQgd2lkZ2V0LCB3aWRnZXRzO1xuICAgICAgICB3aGlsZSAoZGVjb0luZGV4IDwgbG9jYWxzLmxlbmd0aCAmJiBsb2NhbHNbZGVjb0luZGV4XS50byA9PSBvZmZzZXQpIHtcbiAgICAgICAgICAgIGxldCBuZXh0ID0gbG9jYWxzW2RlY29JbmRleCsrXTtcbiAgICAgICAgICAgIGlmIChuZXh0LndpZGdldCkge1xuICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KVxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQgPSBuZXh0O1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKHdpZGdldHMgfHwgKHdpZGdldHMgPSBbd2lkZ2V0XSkpLnB1c2gobmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICAgICAgaWYgKHdpZGdldHMpIHtcbiAgICAgICAgICAgICAgICB3aWRnZXRzLnNvcnQoY29tcGFyZVNpZGUpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2lkZ2V0cy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgb25XaWRnZXQod2lkZ2V0c1tpXSwgcGFyZW50SW5kZXgsICEhcmVzdE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb25XaWRnZXQod2lkZ2V0LCBwYXJlbnRJbmRleCwgISFyZXN0Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNoaWxkLCBpbmRleDtcbiAgICAgICAgaWYgKHJlc3ROb2RlKSB7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY2hpbGQgPSByZXN0Tm9kZTtcbiAgICAgICAgICAgIHJlc3ROb2RlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwYXJlbnRJbmRleCA8IHBhcmVudC5jaGlsZENvdW50KSB7XG4gICAgICAgICAgICBpbmRleCA9IHBhcmVudEluZGV4O1xuICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnQuY2hpbGQocGFyZW50SW5kZXgrKyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGlmIChhY3RpdmVbaV0udG8gPD0gb2Zmc2V0KVxuICAgICAgICAgICAgICAgIGFjdGl2ZS5zcGxpY2UoaS0tLCAxKTtcbiAgICAgICAgd2hpbGUgKGRlY29JbmRleCA8IGxvY2Fscy5sZW5ndGggJiYgbG9jYWxzW2RlY29JbmRleF0uZnJvbSA8PSBvZmZzZXQgJiYgbG9jYWxzW2RlY29JbmRleF0udG8gPiBvZmZzZXQpXG4gICAgICAgICAgICBhY3RpdmUucHVzaChsb2NhbHNbZGVjb0luZGV4KytdKTtcbiAgICAgICAgbGV0IGVuZCA9IG9mZnNldCArIGNoaWxkLm5vZGVTaXplO1xuICAgICAgICBpZiAoY2hpbGQuaXNUZXh0KSB7XG4gICAgICAgICAgICBsZXQgY3V0QXQgPSBlbmQ7XG4gICAgICAgICAgICBpZiAoZGVjb0luZGV4IDwgbG9jYWxzLmxlbmd0aCAmJiBsb2NhbHNbZGVjb0luZGV4XS5mcm9tIDwgY3V0QXQpXG4gICAgICAgICAgICAgICAgY3V0QXQgPSBsb2NhbHNbZGVjb0luZGV4XS5mcm9tO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVtpXS50byA8IGN1dEF0KVxuICAgICAgICAgICAgICAgICAgICBjdXRBdCA9IGFjdGl2ZVtpXS50bztcbiAgICAgICAgICAgIGlmIChjdXRBdCA8IGVuZCkge1xuICAgICAgICAgICAgICAgIHJlc3ROb2RlID0gY2hpbGQuY3V0KGN1dEF0IC0gb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLmN1dCgwLCBjdXRBdCAtIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgZW5kID0gY3V0QXQ7XG4gICAgICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHdoaWxlIChkZWNvSW5kZXggPCBsb2NhbHMubGVuZ3RoICYmIGxvY2Fsc1tkZWNvSW5kZXhdLnRvIDwgZW5kKVxuICAgICAgICAgICAgICAgIGRlY29JbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIGxldCBvdXRlckRlY28gPSBjaGlsZC5pc0lubGluZSAmJiAhY2hpbGQuaXNMZWFmID8gYWN0aXZlLmZpbHRlcihkID0+ICFkLmlubGluZSkgOiBhY3RpdmUuc2xpY2UoKTtcbiAgICAgICAgb25Ob2RlKGNoaWxkLCBvdXRlckRlY28sIGRlY28uZm9yQ2hpbGQob2Zmc2V0LCBjaGlsZCksIGluZGV4KTtcbiAgICAgICAgb2Zmc2V0ID0gZW5kO1xuICAgIH1cbn1cbi8vIExpc3QgbWFya2VycyBpbiBNb2JpbGUgU2FmYXJpIHdpbGwgbXlzdGVyaW91c2x5IGRpc2FwcGVhclxuLy8gc29tZXRpbWVzLiBUaGlzIHdvcmtzIGFyb3VuZCB0aGF0LlxuZnVuY3Rpb24gaW9zSGFja3MoZG9tKSB7XG4gICAgaWYgKGRvbS5ub2RlTmFtZSA9PSBcIlVMXCIgfHwgZG9tLm5vZGVOYW1lID09IFwiT0xcIikge1xuICAgICAgICBsZXQgb2xkQ1NTID0gZG9tLnN0eWxlLmNzc1RleHQ7XG4gICAgICAgIGRvbS5zdHlsZS5jc3NUZXh0ID0gb2xkQ1NTICsgXCI7IGxpc3Qtc3R5bGU6IHNxdWFyZSAhaW1wb3J0YW50XCI7XG4gICAgICAgIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvbSkubGlzdFN0eWxlO1xuICAgICAgICBkb20uc3R5bGUuY3NzVGV4dCA9IG9sZENTUztcbiAgICB9XG59XG4vLyBGaW5kIGEgcGllY2Ugb2YgdGV4dCBpbiBhbiBpbmxpbmUgZnJhZ21lbnQsIG92ZXJsYXBwaW5nIGZyb20tdG9cbmZ1bmN0aW9uIGZpbmRUZXh0SW5GcmFnbWVudChmcmFnLCB0ZXh0LCBmcm9tLCB0bykge1xuICAgIGZvciAobGV0IGkgPSAwLCBwb3MgPSAwOyBpIDwgZnJhZy5jaGlsZENvdW50ICYmIHBvcyA8PSB0bzspIHtcbiAgICAgICAgbGV0IGNoaWxkID0gZnJhZy5jaGlsZChpKyspLCBjaGlsZFN0YXJ0ID0gcG9zO1xuICAgICAgICBwb3MgKz0gY2hpbGQubm9kZVNpemU7XG4gICAgICAgIGlmICghY2hpbGQuaXNUZXh0KVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGxldCBzdHIgPSBjaGlsZC50ZXh0O1xuICAgICAgICB3aGlsZSAoaSA8IGZyYWcuY2hpbGRDb3VudCkge1xuICAgICAgICAgICAgbGV0IG5leHQgPSBmcmFnLmNoaWxkKGkrKyk7XG4gICAgICAgICAgICBwb3MgKz0gbmV4dC5ub2RlU2l6ZTtcbiAgICAgICAgICAgIGlmICghbmV4dC5pc1RleHQpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBzdHIgKz0gbmV4dC50ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3MgPj0gZnJvbSkge1xuICAgICAgICAgICAgaWYgKHBvcyA+PSB0byAmJiBzdHIuc2xpY2UodG8gLSB0ZXh0Lmxlbmd0aCAtIGNoaWxkU3RhcnQsIHRvIC0gY2hpbGRTdGFydCkgPT0gdGV4dClcbiAgICAgICAgICAgICAgICByZXR1cm4gdG8gLSB0ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IGNoaWxkU3RhcnQgPCB0byA/IHN0ci5sYXN0SW5kZXhPZih0ZXh0LCB0byAtIGNoaWxkU3RhcnQgLSAxKSA6IC0xO1xuICAgICAgICAgICAgaWYgKGZvdW5kID49IDAgJiYgZm91bmQgKyB0ZXh0Lmxlbmd0aCArIGNoaWxkU3RhcnQgPj0gZnJvbSlcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRTdGFydCArIGZvdW5kO1xuICAgICAgICAgICAgaWYgKGZyb20gPT0gdG8gJiYgc3RyLmxlbmd0aCA+PSAodG8gKyB0ZXh0Lmxlbmd0aCkgLSBjaGlsZFN0YXJ0ICYmXG4gICAgICAgICAgICAgICAgc3RyLnNsaWNlKHRvIC0gY2hpbGRTdGFydCwgdG8gLSBjaGlsZFN0YXJ0ICsgdGV4dC5sZW5ndGgpID09IHRleHQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cbi8vIFJlcGxhY2UgcmFuZ2UgZnJvbS10byBpbiBhbiBhcnJheSBvZiB2aWV3IGRlc2NzIHdpdGggcmVwbGFjZW1lbnRcbi8vIChtYXkgYmUgbnVsbCB0byBqdXN0IGRlbGV0ZSkuIFRoaXMgZ29lcyB2ZXJ5IG11Y2ggYWdhaW5zdCB0aGUgZ3JhaW5cbi8vIG9mIHRoZSByZXN0IG9mIHRoaXMgY29kZSwgd2hpY2ggdGVuZHMgdG8gY3JlYXRlIG5vZGVzIHdpdGggdGhlXG4vLyByaWdodCBzaGFwZSBpbiBvbmUgZ28sIHJhdGhlciB0aGFuIG1lc3Npbmcgd2l0aCB0aGVtIGFmdGVyXG4vLyBjcmVhdGlvbiwgYnV0IGlzIG5lY2Vzc2FyeSBpbiB0aGUgY29tcG9zaXRpb24gaGFjay5cbmZ1bmN0aW9uIHJlcGxhY2VOb2Rlcyhub2RlcywgZnJvbSwgdG8sIHZpZXcsIHJlcGxhY2VtZW50KSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwLCBvZmYgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGNoaWxkID0gbm9kZXNbaV0sIHN0YXJ0ID0gb2ZmLCBlbmQgPSBvZmYgKz0gY2hpbGQuc2l6ZTtcbiAgICAgICAgaWYgKHN0YXJ0ID49IHRvIHx8IGVuZCA8PSBmcm9tKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChjaGlsZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoc3RhcnQgPCBmcm9tKVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkLnNsaWNlKDAsIGZyb20gLSBzdGFydCwgdmlldykpO1xuICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocmVwbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVuZCA+IHRvKVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkLnNsaWNlKHRvIC0gc3RhcnQsIGNoaWxkLnNpemUsIHZpZXcpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBzZWxlY3Rpb25Gcm9tRE9NKHZpZXcsIG9yaWdpbiA9IG51bGwpIHtcbiAgICBsZXQgZG9tU2VsID0gdmlldy5kb21TZWxlY3Rpb25SYW5nZSgpLCBkb2MgPSB2aWV3LnN0YXRlLmRvYztcbiAgICBpZiAoIWRvbVNlbC5mb2N1c05vZGUpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGxldCBuZWFyZXN0RGVzYyA9IHZpZXcuZG9jVmlldy5uZWFyZXN0RGVzYyhkb21TZWwuZm9jdXNOb2RlKSwgaW5XaWRnZXQgPSBuZWFyZXN0RGVzYyAmJiBuZWFyZXN0RGVzYy5zaXplID09IDA7XG4gICAgbGV0IGhlYWQgPSB2aWV3LmRvY1ZpZXcucG9zRnJvbURPTShkb21TZWwuZm9jdXNOb2RlLCBkb21TZWwuZm9jdXNPZmZzZXQsIDEpO1xuICAgIGlmIChoZWFkIDwgMClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgbGV0ICRoZWFkID0gZG9jLnJlc29sdmUoaGVhZCksIGFuY2hvciwgc2VsZWN0aW9uO1xuICAgIGlmIChzZWxlY3Rpb25Db2xsYXBzZWQoZG9tU2VsKSkge1xuICAgICAgICBhbmNob3IgPSBoZWFkO1xuICAgICAgICB3aGlsZSAobmVhcmVzdERlc2MgJiYgIW5lYXJlc3REZXNjLm5vZGUpXG4gICAgICAgICAgICBuZWFyZXN0RGVzYyA9IG5lYXJlc3REZXNjLnBhcmVudDtcbiAgICAgICAgbGV0IG5lYXJlc3REZXNjTm9kZSA9IG5lYXJlc3REZXNjLm5vZGU7XG4gICAgICAgIGlmIChuZWFyZXN0RGVzYyAmJiBuZWFyZXN0RGVzY05vZGUuaXNBdG9tICYmIE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKG5lYXJlc3REZXNjTm9kZSkgJiYgbmVhcmVzdERlc2MucGFyZW50XG4gICAgICAgICAgICAmJiAhKG5lYXJlc3REZXNjTm9kZS5pc0lubGluZSAmJiBpc09uRWRnZShkb21TZWwuZm9jdXNOb2RlLCBkb21TZWwuZm9jdXNPZmZzZXQsIG5lYXJlc3REZXNjLmRvbSkpKSB7XG4gICAgICAgICAgICBsZXQgcG9zID0gbmVhcmVzdERlc2MucG9zQmVmb3JlO1xuICAgICAgICAgICAgc2VsZWN0aW9uID0gbmV3IE5vZGVTZWxlY3Rpb24oaGVhZCA9PSBwb3MgPyAkaGVhZCA6IGRvYy5yZXNvbHZlKHBvcykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAoZG9tU2VsIGluc3RhbmNlb2Ygdmlldy5kb20ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TZWxlY3Rpb24gJiYgZG9tU2VsLnJhbmdlQ291bnQgPiAxKSB7XG4gICAgICAgICAgICBsZXQgbWluID0gaGVhZCwgbWF4ID0gaGVhZDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9tU2VsLnJhbmdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCByYW5nZSA9IGRvbVNlbC5nZXRSYW5nZUF0KGkpO1xuICAgICAgICAgICAgICAgIG1pbiA9IE1hdGgubWluKG1pbiwgdmlldy5kb2NWaWV3LnBvc0Zyb21ET00ocmFuZ2Uuc3RhcnRDb250YWluZXIsIHJhbmdlLnN0YXJ0T2Zmc2V0LCAxKSk7XG4gICAgICAgICAgICAgICAgbWF4ID0gTWF0aC5tYXgobWF4LCB2aWV3LmRvY1ZpZXcucG9zRnJvbURPTShyYW5nZS5lbmRDb250YWluZXIsIHJhbmdlLmVuZE9mZnNldCwgLTEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtaW4gPCAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgW2FuY2hvciwgaGVhZF0gPSBtYXggPT0gdmlldy5zdGF0ZS5zZWxlY3Rpb24uYW5jaG9yID8gW21heCwgbWluXSA6IFttaW4sIG1heF07XG4gICAgICAgICAgICAkaGVhZCA9IGRvYy5yZXNvbHZlKGhlYWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYW5jaG9yID0gdmlldy5kb2NWaWV3LnBvc0Zyb21ET00oZG9tU2VsLmFuY2hvck5vZGUsIGRvbVNlbC5hbmNob3JPZmZzZXQsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbmNob3IgPCAwKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGxldCAkYW5jaG9yID0gZG9jLnJlc29sdmUoYW5jaG9yKTtcbiAgICBpZiAoIXNlbGVjdGlvbikge1xuICAgICAgICBsZXQgYmlhcyA9IG9yaWdpbiA9PSBcInBvaW50ZXJcIiB8fCAodmlldy5zdGF0ZS5zZWxlY3Rpb24uaGVhZCA8ICRoZWFkLnBvcyAmJiAhaW5XaWRnZXQpID8gMSA6IC0xO1xuICAgICAgICBzZWxlY3Rpb24gPSBzZWxlY3Rpb25CZXR3ZWVuKHZpZXcsICRhbmNob3IsICRoZWFkLCBiaWFzKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbn1cbmZ1bmN0aW9uIGVkaXRvck93bnNTZWxlY3Rpb24odmlldykge1xuICAgIHJldHVybiB2aWV3LmVkaXRhYmxlID8gdmlldy5oYXNGb2N1cygpIDpcbiAgICAgICAgaGFzU2VsZWN0aW9uKHZpZXcpICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5jb250YWlucyh2aWV3LmRvbSk7XG59XG5mdW5jdGlvbiBzZWxlY3Rpb25Ub0RPTSh2aWV3LCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgbGV0IHNlbCA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuICAgIHN5bmNOb2RlU2VsZWN0aW9uKHZpZXcsIHNlbCk7XG4gICAgaWYgKCFlZGl0b3JPd25zU2VsZWN0aW9uKHZpZXcpKVxuICAgICAgICByZXR1cm47XG4gICAgLy8gVGhlIGRlbGF5ZWQgZHJhZyBzZWxlY3Rpb24gY2F1c2VzIGlzc3VlcyB3aXRoIENlbGwgU2VsZWN0aW9uc1xuICAgIC8vIGluIFNhZmFyaS4gQW5kIHRoZSBkcmFnIHNlbGVjdGlvbiBkZWxheSBpcyB0byB3b3JrYXJvbmQgaXNzdWVzXG4gICAgLy8gd2hpY2ggb25seSBwcmVzZW50IGluIENocm9tZS5cbiAgICBpZiAoIWZvcmNlICYmIHZpZXcuaW5wdXQubW91c2VEb3duICYmIHZpZXcuaW5wdXQubW91c2VEb3duLmFsbG93RGVmYXVsdCAmJiBjaHJvbWUpIHtcbiAgICAgICAgbGV0IGRvbVNlbCA9IHZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKSwgY3VyU2VsID0gdmlldy5kb21PYnNlcnZlci5jdXJyZW50U2VsZWN0aW9uO1xuICAgICAgICBpZiAoZG9tU2VsLmFuY2hvck5vZGUgJiYgY3VyU2VsLmFuY2hvck5vZGUgJiZcbiAgICAgICAgICAgIGlzRXF1aXZhbGVudFBvc2l0aW9uKGRvbVNlbC5hbmNob3JOb2RlLCBkb21TZWwuYW5jaG9yT2Zmc2V0LCBjdXJTZWwuYW5jaG9yTm9kZSwgY3VyU2VsLmFuY2hvck9mZnNldCkpIHtcbiAgICAgICAgICAgIHZpZXcuaW5wdXQubW91c2VEb3duLmRlbGF5ZWRTZWxlY3Rpb25TeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgIHZpZXcuZG9tT2JzZXJ2ZXIuc2V0Q3VyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlldy5kb21PYnNlcnZlci5kaXNjb25uZWN0U2VsZWN0aW9uKCk7XG4gICAgaWYgKHZpZXcuY3Vyc29yV3JhcHBlcikge1xuICAgICAgICBzZWxlY3RDdXJzb3JXcmFwcGVyKHZpZXcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbGV0IHsgYW5jaG9yLCBoZWFkIH0gPSBzZWwsIHJlc2V0RWRpdGFibGVGcm9tLCByZXNldEVkaXRhYmxlVG87XG4gICAgICAgIGlmIChicm9rZW5TZWxlY3RCZXR3ZWVuVW5lZGl0YWJsZSAmJiAhKHNlbCBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICBpZiAoIXNlbC4kZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudClcbiAgICAgICAgICAgICAgICByZXNldEVkaXRhYmxlRnJvbSA9IHRlbXBvcmFyaWx5RWRpdGFibGVOZWFyKHZpZXcsIHNlbC5mcm9tKTtcbiAgICAgICAgICAgIGlmICghc2VsLmVtcHR5ICYmICFzZWwuJGZyb20ucGFyZW50LmlubGluZUNvbnRlbnQpXG4gICAgICAgICAgICAgICAgcmVzZXRFZGl0YWJsZVRvID0gdGVtcG9yYXJpbHlFZGl0YWJsZU5lYXIodmlldywgc2VsLnRvKTtcbiAgICAgICAgfVxuICAgICAgICB2aWV3LmRvY1ZpZXcuc2V0U2VsZWN0aW9uKGFuY2hvciwgaGVhZCwgdmlldywgZm9yY2UpO1xuICAgICAgICBpZiAoYnJva2VuU2VsZWN0QmV0d2VlblVuZWRpdGFibGUpIHtcbiAgICAgICAgICAgIGlmIChyZXNldEVkaXRhYmxlRnJvbSlcbiAgICAgICAgICAgICAgICByZXNldEVkaXRhYmxlKHJlc2V0RWRpdGFibGVGcm9tKTtcbiAgICAgICAgICAgIGlmIChyZXNldEVkaXRhYmxlVG8pXG4gICAgICAgICAgICAgICAgcmVzZXRFZGl0YWJsZShyZXNldEVkaXRhYmxlVG8pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWwudmlzaWJsZSkge1xuICAgICAgICAgICAgdmlldy5kb20uY2xhc3NMaXN0LnJlbW92ZShcIlByb3NlTWlycm9yLWhpZGVzZWxlY3Rpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2aWV3LmRvbS5jbGFzc0xpc3QuYWRkKFwiUHJvc2VNaXJyb3ItaGlkZXNlbGVjdGlvblwiKTtcbiAgICAgICAgICAgIGlmIChcIm9uc2VsZWN0aW9uY2hhbmdlXCIgaW4gZG9jdW1lbnQpXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NPblNlbGVjdGlvbkNoYW5nZSh2aWV3KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2aWV3LmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpO1xuICAgIHZpZXcuZG9tT2JzZXJ2ZXIuY29ubmVjdFNlbGVjdGlvbigpO1xufVxuLy8gS2x1ZGdlIHRvIHdvcmsgYXJvdW5kIFdlYmtpdCBub3QgYWxsb3dpbmcgYSBzZWxlY3Rpb24gdG8gc3RhcnQvZW5kXG4vLyBiZXR3ZWVuIG5vbi1lZGl0YWJsZSBibG9jayBub2Rlcy4gV2UgYnJpZWZseSBtYWtlIHNvbWV0aGluZ1xuLy8gZWRpdGFibGUsIHNldCB0aGUgc2VsZWN0aW9uLCB0aGVuIHNldCBpdCB1bmVkaXRhYmxlIGFnYWluLlxuY29uc3QgYnJva2VuU2VsZWN0QmV0d2VlblVuZWRpdGFibGUgPSBzYWZhcmkgfHwgY2hyb21lICYmIGNocm9tZV92ZXJzaW9uIDwgNjM7XG5mdW5jdGlvbiB0ZW1wb3JhcmlseUVkaXRhYmxlTmVhcih2aWV3LCBwb3MpIHtcbiAgICBsZXQgeyBub2RlLCBvZmZzZXQgfSA9IHZpZXcuZG9jVmlldy5kb21Gcm9tUG9zKHBvcywgMCk7XG4gICAgbGV0IGFmdGVyID0gb2Zmc2V0IDwgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA/IG5vZGUuY2hpbGROb2Rlc1tvZmZzZXRdIDogbnVsbDtcbiAgICBsZXQgYmVmb3JlID0gb2Zmc2V0ID8gbm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdIDogbnVsbDtcbiAgICBpZiAoc2FmYXJpICYmIGFmdGVyICYmIGFmdGVyLmNvbnRlbnRFZGl0YWJsZSA9PSBcImZhbHNlXCIpXG4gICAgICAgIHJldHVybiBzZXRFZGl0YWJsZShhZnRlcik7XG4gICAgaWYgKCghYWZ0ZXIgfHwgYWZ0ZXIuY29udGVudEVkaXRhYmxlID09IFwiZmFsc2VcIikgJiZcbiAgICAgICAgKCFiZWZvcmUgfHwgYmVmb3JlLmNvbnRlbnRFZGl0YWJsZSA9PSBcImZhbHNlXCIpKSB7XG4gICAgICAgIGlmIChhZnRlcilcbiAgICAgICAgICAgIHJldHVybiBzZXRFZGl0YWJsZShhZnRlcik7XG4gICAgICAgIGVsc2UgaWYgKGJlZm9yZSlcbiAgICAgICAgICAgIHJldHVybiBzZXRFZGl0YWJsZShiZWZvcmUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNldEVkaXRhYmxlKGVsZW1lbnQpIHtcbiAgICBlbGVtZW50LmNvbnRlbnRFZGl0YWJsZSA9IFwidHJ1ZVwiO1xuICAgIGlmIChzYWZhcmkgJiYgZWxlbWVudC5kcmFnZ2FibGUpIHtcbiAgICAgICAgZWxlbWVudC5kcmFnZ2FibGUgPSBmYWxzZTtcbiAgICAgICAgZWxlbWVudC53YXNEcmFnZ2FibGUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbn1cbmZ1bmN0aW9uIHJlc2V0RWRpdGFibGUoZWxlbWVudCkge1xuICAgIGVsZW1lbnQuY29udGVudEVkaXRhYmxlID0gXCJmYWxzZVwiO1xuICAgIGlmIChlbGVtZW50Lndhc0RyYWdnYWJsZSkge1xuICAgICAgICBlbGVtZW50LmRyYWdnYWJsZSA9IHRydWU7XG4gICAgICAgIGVsZW1lbnQud2FzRHJhZ2dhYmxlID0gbnVsbDtcbiAgICB9XG59XG5mdW5jdGlvbiByZW1vdmVDbGFzc09uU2VsZWN0aW9uQ2hhbmdlKHZpZXcpIHtcbiAgICBsZXQgZG9jID0gdmlldy5kb20ub3duZXJEb2N1bWVudDtcbiAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNlbGVjdGlvbmNoYW5nZVwiLCB2aWV3LmlucHV0LmhpZGVTZWxlY3Rpb25HdWFyZCk7XG4gICAgbGV0IGRvbVNlbCA9IHZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBsZXQgbm9kZSA9IGRvbVNlbC5hbmNob3JOb2RlLCBvZmZzZXQgPSBkb21TZWwuYW5jaG9yT2Zmc2V0O1xuICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIHZpZXcuaW5wdXQuaGlkZVNlbGVjdGlvbkd1YXJkID0gKCkgPT4ge1xuICAgICAgICBpZiAoZG9tU2VsLmFuY2hvck5vZGUgIT0gbm9kZSB8fCBkb21TZWwuYW5jaG9yT2Zmc2V0ICE9IG9mZnNldCkge1xuICAgICAgICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzZWxlY3Rpb25jaGFuZ2VcIiwgdmlldy5pbnB1dC5oaWRlU2VsZWN0aW9uR3VhcmQpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3JPd25zU2VsZWN0aW9uKHZpZXcpIHx8IHZpZXcuc3RhdGUuc2VsZWN0aW9uLnZpc2libGUpXG4gICAgICAgICAgICAgICAgICAgIHZpZXcuZG9tLmNsYXNzTGlzdC5yZW1vdmUoXCJQcm9zZU1pcnJvci1oaWRlc2VsZWN0aW9uXCIpO1xuICAgICAgICAgICAgfSwgMjApO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzZWxlY3RDdXJzb3JXcmFwcGVyKHZpZXcpIHtcbiAgICBsZXQgZG9tU2VsID0gdmlldy5kb21TZWxlY3Rpb24oKTtcbiAgICBpZiAoIWRvbVNlbClcbiAgICAgICAgcmV0dXJuO1xuICAgIGxldCBub2RlID0gdmlldy5jdXJzb3JXcmFwcGVyLmRvbSwgaW1nID0gbm9kZS5ub2RlTmFtZSA9PSBcIklNR1wiO1xuICAgIGlmIChpbWcpXG4gICAgICAgIGRvbVNlbC5jb2xsYXBzZShub2RlLnBhcmVudE5vZGUsIGRvbUluZGV4KG5vZGUpICsgMSk7XG4gICAgZWxzZVxuICAgICAgICBkb21TZWwuY29sbGFwc2Uobm9kZSwgMCk7XG4gICAgLy8gS2x1ZGdlIHRvIGtpbGwgJ2NvbnRyb2wgc2VsZWN0aW9uJyBpbiBJRTExIHdoZW4gc2VsZWN0aW5nIGFuXG4gICAgLy8gaW52aXNpYmxlIGN1cnNvciB3cmFwcGVyLCBzaW5jZSB0aGF0IHdvdWxkIHJlc3VsdCBpbiB0aG9zZSB3ZWlyZFxuICAgIC8vIHJlc2l6ZSBoYW5kbGVzIGFuZCBhIHNlbGVjdGlvbiB0aGF0IGNvbnNpZGVycyB0aGUgYWJzb2x1dGVseVxuICAgIC8vIHBvc2l0aW9uZWQgd3JhcHBlciwgcmF0aGVyIHRoYW4gdGhlIHJvb3QgZWRpdGFibGUgbm9kZSwgdGhlXG4gICAgLy8gZm9jdXNlZCBlbGVtZW50LlxuICAgIGlmICghaW1nICYmICF2aWV3LnN0YXRlLnNlbGVjdGlvbi52aXNpYmxlICYmIGllICYmIGllX3ZlcnNpb24gPD0gMTEpIHtcbiAgICAgICAgbm9kZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIG5vZGUuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBzeW5jTm9kZVNlbGVjdGlvbih2aWV3LCBzZWwpIHtcbiAgICBpZiAoc2VsIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbikge1xuICAgICAgICBsZXQgZGVzYyA9IHZpZXcuZG9jVmlldy5kZXNjQXQoc2VsLmZyb20pO1xuICAgICAgICBpZiAoZGVzYyAhPSB2aWV3Lmxhc3RTZWxlY3RlZFZpZXdEZXNjKSB7XG4gICAgICAgICAgICBjbGVhck5vZGVTZWxlY3Rpb24odmlldyk7XG4gICAgICAgICAgICBpZiAoZGVzYylcbiAgICAgICAgICAgICAgICBkZXNjLnNlbGVjdE5vZGUoKTtcbiAgICAgICAgICAgIHZpZXcubGFzdFNlbGVjdGVkVmlld0Rlc2MgPSBkZXNjO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjbGVhck5vZGVTZWxlY3Rpb24odmlldyk7XG4gICAgfVxufVxuLy8gQ2xlYXIgYWxsIERPTSBzdGF0ZWZ1bG5lc3Mgb2YgdGhlIGxhc3Qgbm9kZSBzZWxlY3Rpb24uXG5mdW5jdGlvbiBjbGVhck5vZGVTZWxlY3Rpb24odmlldykge1xuICAgIGlmICh2aWV3Lmxhc3RTZWxlY3RlZFZpZXdEZXNjKSB7XG4gICAgICAgIGlmICh2aWV3Lmxhc3RTZWxlY3RlZFZpZXdEZXNjLnBhcmVudClcbiAgICAgICAgICAgIHZpZXcubGFzdFNlbGVjdGVkVmlld0Rlc2MuZGVzZWxlY3ROb2RlKCk7XG4gICAgICAgIHZpZXcubGFzdFNlbGVjdGVkVmlld0Rlc2MgPSB1bmRlZmluZWQ7XG4gICAgfVxufVxuZnVuY3Rpb24gc2VsZWN0aW9uQmV0d2Vlbih2aWV3LCAkYW5jaG9yLCAkaGVhZCwgYmlhcykge1xuICAgIHJldHVybiB2aWV3LnNvbWVQcm9wKFwiY3JlYXRlU2VsZWN0aW9uQmV0d2VlblwiLCBmID0+IGYodmlldywgJGFuY2hvciwgJGhlYWQpKVxuICAgICAgICB8fCBUZXh0U2VsZWN0aW9uLmJldHdlZW4oJGFuY2hvciwgJGhlYWQsIGJpYXMpO1xufVxuZnVuY3Rpb24gaGFzRm9jdXNBbmRTZWxlY3Rpb24odmlldykge1xuICAgIGlmICh2aWV3LmVkaXRhYmxlICYmICF2aWV3Lmhhc0ZvY3VzKCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gaGFzU2VsZWN0aW9uKHZpZXcpO1xufVxuZnVuY3Rpb24gaGFzU2VsZWN0aW9uKHZpZXcpIHtcbiAgICBsZXQgc2VsID0gdmlldy5kb21TZWxlY3Rpb25SYW5nZSgpO1xuICAgIGlmICghc2VsLmFuY2hvck5vZGUpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICAvLyBGaXJlZm94IHdpbGwgcmFpc2UgJ3Blcm1pc3Npb24gZGVuaWVkJyBlcnJvcnMgd2hlbiBhY2Nlc3NpbmdcbiAgICAgICAgLy8gcHJvcGVydGllcyBvZiBgc2VsLmFuY2hvck5vZGVgIHdoZW4gaXQncyBpbiBhIGdlbmVyYXRlZCBDU1NcbiAgICAgICAgLy8gZWxlbWVudC5cbiAgICAgICAgcmV0dXJuIHZpZXcuZG9tLmNvbnRhaW5zKHNlbC5hbmNob3JOb2RlLm5vZGVUeXBlID09IDMgPyBzZWwuYW5jaG9yTm9kZS5wYXJlbnROb2RlIDogc2VsLmFuY2hvck5vZGUpICYmXG4gICAgICAgICAgICAodmlldy5lZGl0YWJsZSB8fCB2aWV3LmRvbS5jb250YWlucyhzZWwuZm9jdXNOb2RlLm5vZGVUeXBlID09IDMgPyBzZWwuZm9jdXNOb2RlLnBhcmVudE5vZGUgOiBzZWwuZm9jdXNOb2RlKSk7XG4gICAgfVxuICAgIGNhdGNoIChfKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBhbmNob3JJblJpZ2h0UGxhY2Uodmlldykge1xuICAgIGxldCBhbmNob3JET00gPSB2aWV3LmRvY1ZpZXcuZG9tRnJvbVBvcyh2aWV3LnN0YXRlLnNlbGVjdGlvbi5hbmNob3IsIDApO1xuICAgIGxldCBkb21TZWwgPSB2aWV3LmRvbVNlbGVjdGlvblJhbmdlKCk7XG4gICAgcmV0dXJuIGlzRXF1aXZhbGVudFBvc2l0aW9uKGFuY2hvckRPTS5ub2RlLCBhbmNob3JET00ub2Zmc2V0LCBkb21TZWwuYW5jaG9yTm9kZSwgZG9tU2VsLmFuY2hvck9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIG1vdmVTZWxlY3Rpb25CbG9jayhzdGF0ZSwgZGlyKSB7XG4gICAgbGV0IHsgJGFuY2hvciwgJGhlYWQgfSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgICBsZXQgJHNpZGUgPSBkaXIgPiAwID8gJGFuY2hvci5tYXgoJGhlYWQpIDogJGFuY2hvci5taW4oJGhlYWQpO1xuICAgIGxldCAkc3RhcnQgPSAhJHNpZGUucGFyZW50LmlubGluZUNvbnRlbnQgPyAkc2lkZSA6ICRzaWRlLmRlcHRoID8gc3RhdGUuZG9jLnJlc29sdmUoZGlyID4gMCA/ICRzaWRlLmFmdGVyKCkgOiAkc2lkZS5iZWZvcmUoKSkgOiBudWxsO1xuICAgIHJldHVybiAkc3RhcnQgJiYgU2VsZWN0aW9uLmZpbmRGcm9tKCRzdGFydCwgZGlyKTtcbn1cbmZ1bmN0aW9uIGFwcGx5KHZpZXcsIHNlbCkge1xuICAgIHZpZXcuZGlzcGF0Y2godmlldy5zdGF0ZS50ci5zZXRTZWxlY3Rpb24oc2VsKS5zY3JvbGxJbnRvVmlldygpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHNlbGVjdEhvcml6b250YWxseSh2aWV3LCBkaXIsIG1vZHMpIHtcbiAgICBsZXQgc2VsID0gdmlldy5zdGF0ZS5zZWxlY3Rpb247XG4gICAgaWYgKHNlbCBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24pIHtcbiAgICAgICAgaWYgKG1vZHMuaW5kZXhPZihcInNcIikgPiAtMSkge1xuICAgICAgICAgICAgbGV0IHsgJGhlYWQgfSA9IHNlbCwgbm9kZSA9ICRoZWFkLnRleHRPZmZzZXQgPyBudWxsIDogZGlyIDwgMCA/ICRoZWFkLm5vZGVCZWZvcmUgOiAkaGVhZC5ub2RlQWZ0ZXI7XG4gICAgICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5pc1RleHQgfHwgIW5vZGUuaXNMZWFmKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGxldCAkbmV3SGVhZCA9IHZpZXcuc3RhdGUuZG9jLnJlc29sdmUoJGhlYWQucG9zICsgbm9kZS5ub2RlU2l6ZSAqIChkaXIgPCAwID8gLTEgOiAxKSk7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHkodmlldywgbmV3IFRleHRTZWxlY3Rpb24oc2VsLiRhbmNob3IsICRuZXdIZWFkKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXNlbC5lbXB0eSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZpZXcuZW5kT2ZUZXh0YmxvY2soZGlyID4gMCA/IFwiZm9yd2FyZFwiIDogXCJiYWNrd2FyZFwiKSkge1xuICAgICAgICAgICAgbGV0IG5leHQgPSBtb3ZlU2VsZWN0aW9uQmxvY2sodmlldy5zdGF0ZSwgZGlyKTtcbiAgICAgICAgICAgIGlmIChuZXh0ICYmIChuZXh0IGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHZpZXcsIG5leHQpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCEobWFjICYmIG1vZHMuaW5kZXhPZihcIm1cIikgPiAtMSkpIHtcbiAgICAgICAgICAgIGxldCAkaGVhZCA9IHNlbC4kaGVhZCwgbm9kZSA9ICRoZWFkLnRleHRPZmZzZXQgPyBudWxsIDogZGlyIDwgMCA/ICRoZWFkLm5vZGVCZWZvcmUgOiAkaGVhZC5ub2RlQWZ0ZXIsIGRlc2M7XG4gICAgICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5pc1RleHQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5vZGVQb3MgPSBkaXIgPCAwID8gJGhlYWQucG9zIC0gbm9kZS5ub2RlU2l6ZSA6ICRoZWFkLnBvcztcbiAgICAgICAgICAgIGlmICghKG5vZGUuaXNBdG9tIHx8IChkZXNjID0gdmlldy5kb2NWaWV3LmRlc2NBdChub2RlUG9zKSkgJiYgIWRlc2MuY29udGVudERPTSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHZpZXcsIG5ldyBOb2RlU2VsZWN0aW9uKGRpciA8IDAgPyB2aWV3LnN0YXRlLmRvYy5yZXNvbHZlKCRoZWFkLnBvcyAtIG5vZGUubm9kZVNpemUpIDogJGhlYWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHdlYmtpdCkge1xuICAgICAgICAgICAgICAgIC8vIENocm9tZSBhbmQgU2FmYXJpIHdpbGwgaW50cm9kdWNlIGV4dHJhIHBvaW50bGVzcyBjdXJzb3JcbiAgICAgICAgICAgICAgICAvLyBwb3NpdGlvbnMgYXJvdW5kIGlubGluZSB1bmVkaXRhYmxlIG5vZGVzLCBzbyB3ZSBoYXZlIHRvXG4gICAgICAgICAgICAgICAgLy8gdGFrZSBvdmVyIGFuZCBtb3ZlIHRoZSBjdXJzb3IgcGFzdCB0aGVtICgjOTM3KVxuICAgICAgICAgICAgICAgIHJldHVybiBhcHBseSh2aWV3LCBuZXcgVGV4dFNlbGVjdGlvbih2aWV3LnN0YXRlLmRvYy5yZXNvbHZlKGRpciA8IDAgPyBub2RlUG9zIDogbm9kZVBvcyArIG5vZGUubm9kZVNpemUpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoc2VsIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiAmJiBzZWwubm9kZS5pc0lubGluZSkge1xuICAgICAgICByZXR1cm4gYXBwbHkodmlldywgbmV3IFRleHRTZWxlY3Rpb24oZGlyID4gMCA/IHNlbC4kdG8gOiBzZWwuJGZyb20pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBuZXh0ID0gbW92ZVNlbGVjdGlvbkJsb2NrKHZpZXcuc3RhdGUsIGRpcik7XG4gICAgICAgIGlmIChuZXh0KVxuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHZpZXcsIG5leHQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gbm9kZUxlbihub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT0gMyA/IG5vZGUubm9kZVZhbHVlLmxlbmd0aCA6IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7XG59XG5mdW5jdGlvbiBpc0lnbm9yYWJsZShkb20sIGRpcikge1xuICAgIGxldCBkZXNjID0gZG9tLnBtVmlld0Rlc2M7XG4gICAgcmV0dXJuIGRlc2MgJiYgZGVzYy5zaXplID09IDAgJiYgKGRpciA8IDAgfHwgZG9tLm5leHRTaWJsaW5nIHx8IGRvbS5ub2RlTmFtZSAhPSBcIkJSXCIpO1xufVxuZnVuY3Rpb24gc2tpcElnbm9yZWROb2Rlcyh2aWV3LCBkaXIpIHtcbiAgICByZXR1cm4gZGlyIDwgMCA/IHNraXBJZ25vcmVkTm9kZXNCZWZvcmUodmlldykgOiBza2lwSWdub3JlZE5vZGVzQWZ0ZXIodmlldyk7XG59XG4vLyBNYWtlIHN1cmUgdGhlIGN1cnNvciBpc24ndCBkaXJlY3RseSBhZnRlciBvbmUgb3IgbW9yZSBpZ25vcmVkXG4vLyBub2Rlcywgd2hpY2ggd2lsbCBjb25mdXNlIHRoZSBicm93c2VyJ3MgY3Vyc29yIG1vdGlvbiBsb2dpYy5cbmZ1bmN0aW9uIHNraXBJZ25vcmVkTm9kZXNCZWZvcmUodmlldykge1xuICAgIGxldCBzZWwgPSB2aWV3LmRvbVNlbGVjdGlvblJhbmdlKCk7XG4gICAgbGV0IG5vZGUgPSBzZWwuZm9jdXNOb2RlLCBvZmZzZXQgPSBzZWwuZm9jdXNPZmZzZXQ7XG4gICAgaWYgKCFub2RlKVxuICAgICAgICByZXR1cm47XG4gICAgbGV0IG1vdmVOb2RlLCBtb3ZlT2Zmc2V0LCBmb3JjZSA9IGZhbHNlO1xuICAgIC8vIEdlY2tvIHdpbGwgZG8gb2RkIHRoaW5ncyB3aGVuIHRoZSBzZWxlY3Rpb24gaXMgZGlyZWN0bHkgaW4gZnJvbnRcbiAgICAvLyBvZiBhIG5vbi1lZGl0YWJsZSBub2RlLCBzbyBpbiB0aGF0IGNhc2UsIG1vdmUgaXQgaW50byB0aGUgbmV4dFxuICAgIC8vIG5vZGUgaWYgcG9zc2libGUuIElzc3VlIHByb3NlbWlycm9yL3Byb3NlbWlycm9yIzgzMi5cbiAgICBpZiAoZ2Vja28gJiYgbm9kZS5ub2RlVHlwZSA9PSAxICYmIG9mZnNldCA8IG5vZGVMZW4obm9kZSkgJiYgaXNJZ25vcmFibGUobm9kZS5jaGlsZE5vZGVzW29mZnNldF0sIC0xKSlcbiAgICAgICAgZm9yY2UgPSB0cnVlO1xuICAgIGZvciAoOzspIHtcbiAgICAgICAgaWYgKG9mZnNldCA+IDApIHtcbiAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9IDEpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBiZWZvcmUgPSBub2RlLmNoaWxkTm9kZXNbb2Zmc2V0IC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKGlzSWdub3JhYmxlKGJlZm9yZSwgLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vdmVOb2RlID0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgbW92ZU9mZnNldCA9IC0tb2Zmc2V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChiZWZvcmUubm9kZVR5cGUgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBub2RlID0gYmVmb3JlO1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBub2RlLm5vZGVWYWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNCbG9ja05vZGUobm9kZSkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHByZXYgPSBub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIHdoaWxlIChwcmV2ICYmIGlzSWdub3JhYmxlKHByZXYsIC0xKSkge1xuICAgICAgICAgICAgICAgIG1vdmVOb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIG1vdmVPZmZzZXQgPSBkb21JbmRleChwcmV2KTtcbiAgICAgICAgICAgICAgICBwcmV2ID0gcHJldi5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXByZXYpIHtcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIGlmIChub2RlID09IHZpZXcuZG9tKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IHByZXY7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbm9kZUxlbihub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZm9yY2UpXG4gICAgICAgIHNldFNlbEZvY3VzKHZpZXcsIG5vZGUsIG9mZnNldCk7XG4gICAgZWxzZSBpZiAobW92ZU5vZGUpXG4gICAgICAgIHNldFNlbEZvY3VzKHZpZXcsIG1vdmVOb2RlLCBtb3ZlT2Zmc2V0KTtcbn1cbi8vIE1ha2Ugc3VyZSB0aGUgY3Vyc29yIGlzbid0IGRpcmVjdGx5IGJlZm9yZSBvbmUgb3IgbW9yZSBpZ25vcmVkXG4vLyBub2Rlcy5cbmZ1bmN0aW9uIHNraXBJZ25vcmVkTm9kZXNBZnRlcih2aWV3KSB7XG4gICAgbGV0IHNlbCA9IHZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBsZXQgbm9kZSA9IHNlbC5mb2N1c05vZGUsIG9mZnNldCA9IHNlbC5mb2N1c09mZnNldDtcbiAgICBpZiAoIW5vZGUpXG4gICAgICAgIHJldHVybjtcbiAgICBsZXQgbGVuID0gbm9kZUxlbihub2RlKTtcbiAgICBsZXQgbW92ZU5vZGUsIG1vdmVPZmZzZXQ7XG4gICAgZm9yICg7Oykge1xuICAgICAgICBpZiAob2Zmc2V0IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSAhPSAxKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgbGV0IGFmdGVyID0gbm9kZS5jaGlsZE5vZGVzW29mZnNldF07XG4gICAgICAgICAgICBpZiAoaXNJZ25vcmFibGUoYWZ0ZXIsIDEpKSB7XG4gICAgICAgICAgICAgICAgbW92ZU5vZGUgPSBub2RlO1xuICAgICAgICAgICAgICAgIG1vdmVPZmZzZXQgPSArK29mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0Jsb2NrTm9kZShub2RlKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgbmV4dCA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB3aGlsZSAobmV4dCAmJiBpc0lnbm9yYWJsZShuZXh0LCAxKSkge1xuICAgICAgICAgICAgICAgIG1vdmVOb2RlID0gbmV4dC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIG1vdmVPZmZzZXQgPSBkb21JbmRleChuZXh0KSArIDE7XG4gICAgICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW5leHQpIHtcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIGlmIChub2RlID09IHZpZXcuZG9tKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSBsZW4gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IG5leHQ7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgICAgICBsZW4gPSBub2RlTGVuKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChtb3ZlTm9kZSlcbiAgICAgICAgc2V0U2VsRm9jdXModmlldywgbW92ZU5vZGUsIG1vdmVPZmZzZXQpO1xufVxuZnVuY3Rpb24gaXNCbG9ja05vZGUoZG9tKSB7XG4gICAgbGV0IGRlc2MgPSBkb20ucG1WaWV3RGVzYztcbiAgICByZXR1cm4gZGVzYyAmJiBkZXNjLm5vZGUgJiYgZGVzYy5ub2RlLmlzQmxvY2s7XG59XG5mdW5jdGlvbiB0ZXh0Tm9kZUFmdGVyKG5vZGUsIG9mZnNldCkge1xuICAgIHdoaWxlIChub2RlICYmIG9mZnNldCA9PSBub2RlLmNoaWxkTm9kZXMubGVuZ3RoICYmICFoYXNCbG9ja0Rlc2Mobm9kZSkpIHtcbiAgICAgICAgb2Zmc2V0ID0gZG9tSW5kZXgobm9kZSkgKyAxO1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgICB3aGlsZSAobm9kZSAmJiBvZmZzZXQgPCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIGxldCBuZXh0ID0gbm9kZS5jaGlsZE5vZGVzW29mZnNldF07XG4gICAgICAgIGlmIChuZXh0Lm5vZGVUeXBlID09IDMpXG4gICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgaWYgKG5leHQubm9kZVR5cGUgPT0gMSAmJiBuZXh0LmNvbnRlbnRFZGl0YWJsZSA9PSBcImZhbHNlXCIpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgbm9kZSA9IG5leHQ7XG4gICAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxufVxuZnVuY3Rpb24gdGV4dE5vZGVCZWZvcmUobm9kZSwgb2Zmc2V0KSB7XG4gICAgd2hpbGUgKG5vZGUgJiYgIW9mZnNldCAmJiAhaGFzQmxvY2tEZXNjKG5vZGUpKSB7XG4gICAgICAgIG9mZnNldCA9IGRvbUluZGV4KG5vZGUpO1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgICB3aGlsZSAobm9kZSAmJiBvZmZzZXQpIHtcbiAgICAgICAgbGV0IG5leHQgPSBub2RlLmNoaWxkTm9kZXNbb2Zmc2V0IC0gMV07XG4gICAgICAgIGlmIChuZXh0Lm5vZGVUeXBlID09IDMpXG4gICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgaWYgKG5leHQubm9kZVR5cGUgPT0gMSAmJiBuZXh0LmNvbnRlbnRFZGl0YWJsZSA9PSBcImZhbHNlXCIpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgbm9kZSA9IG5leHQ7XG4gICAgICAgIG9mZnNldCA9IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7XG4gICAgfVxufVxuZnVuY3Rpb24gc2V0U2VsRm9jdXModmlldywgbm9kZSwgb2Zmc2V0KSB7XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgIT0gMykge1xuICAgICAgICBsZXQgYmVmb3JlLCBhZnRlcjtcbiAgICAgICAgaWYgKGFmdGVyID0gdGV4dE5vZGVBZnRlcihub2RlLCBvZmZzZXQpKSB7XG4gICAgICAgICAgICBub2RlID0gYWZ0ZXI7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGJlZm9yZSA9IHRleHROb2RlQmVmb3JlKG5vZGUsIG9mZnNldCkpIHtcbiAgICAgICAgICAgIG5vZGUgPSBiZWZvcmU7XG4gICAgICAgICAgICBvZmZzZXQgPSBiZWZvcmUubm9kZVZhbHVlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgc2VsID0gdmlldy5kb21TZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChzZWxlY3Rpb25Db2xsYXBzZWQoc2VsKSkge1xuICAgICAgICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICByYW5nZS5zZXRFbmQobm9kZSwgb2Zmc2V0KTtcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQobm9kZSwgb2Zmc2V0KTtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzZWwuZXh0ZW5kKSB7XG4gICAgICAgIHNlbC5leHRlbmQobm9kZSwgb2Zmc2V0KTtcbiAgICB9XG4gICAgdmlldy5kb21PYnNlcnZlci5zZXRDdXJTZWxlY3Rpb24oKTtcbiAgICBsZXQgeyBzdGF0ZSB9ID0gdmlldztcbiAgICAvLyBJZiBubyBzdGF0ZSB1cGRhdGUgZW5kcyB1cCBoYXBwZW5pbmcsIHJlc2V0IHRoZSBzZWxlY3Rpb24uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh2aWV3LnN0YXRlID09IHN0YXRlKVxuICAgICAgICAgICAgc2VsZWN0aW9uVG9ET00odmlldyk7XG4gICAgfSwgNTApO1xufVxuZnVuY3Rpb24gZmluZERpcmVjdGlvbih2aWV3LCBwb3MpIHtcbiAgICBsZXQgJHBvcyA9IHZpZXcuc3RhdGUuZG9jLnJlc29sdmUocG9zKTtcbiAgICBpZiAoIShjaHJvbWUgfHwgd2luZG93cykgJiYgJHBvcy5wYXJlbnQuaW5saW5lQ29udGVudCkge1xuICAgICAgICBsZXQgY29vcmRzID0gdmlldy5jb29yZHNBdFBvcyhwb3MpO1xuICAgICAgICBpZiAocG9zID4gJHBvcy5zdGFydCgpKSB7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gdmlldy5jb29yZHNBdFBvcyhwb3MgLSAxKTtcbiAgICAgICAgICAgIGxldCBtaWQgPSAoYmVmb3JlLnRvcCArIGJlZm9yZS5ib3R0b20pIC8gMjtcbiAgICAgICAgICAgIGlmIChtaWQgPiBjb29yZHMudG9wICYmIG1pZCA8IGNvb3Jkcy5ib3R0b20gJiYgTWF0aC5hYnMoYmVmb3JlLmxlZnQgLSBjb29yZHMubGVmdCkgPiAxKVxuICAgICAgICAgICAgICAgIHJldHVybiBiZWZvcmUubGVmdCA8IGNvb3Jkcy5sZWZ0ID8gXCJsdHJcIiA6IFwicnRsXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyA8ICRwb3MuZW5kKCkpIHtcbiAgICAgICAgICAgIGxldCBhZnRlciA9IHZpZXcuY29vcmRzQXRQb3MocG9zICsgMSk7XG4gICAgICAgICAgICBsZXQgbWlkID0gKGFmdGVyLnRvcCArIGFmdGVyLmJvdHRvbSkgLyAyO1xuICAgICAgICAgICAgaWYgKG1pZCA+IGNvb3Jkcy50b3AgJiYgbWlkIDwgY29vcmRzLmJvdHRvbSAmJiBNYXRoLmFicyhhZnRlci5sZWZ0IC0gY29vcmRzLmxlZnQpID4gMSlcbiAgICAgICAgICAgICAgICByZXR1cm4gYWZ0ZXIubGVmdCA+IGNvb3Jkcy5sZWZ0ID8gXCJsdHJcIiA6IFwicnRsXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGNvbXB1dGVkID0gZ2V0Q29tcHV0ZWRTdHlsZSh2aWV3LmRvbSkuZGlyZWN0aW9uO1xuICAgIHJldHVybiBjb21wdXRlZCA9PSBcInJ0bFwiID8gXCJydGxcIiA6IFwibHRyXCI7XG59XG4vLyBDaGVjayB3aGV0aGVyIHZlcnRpY2FsIHNlbGVjdGlvbiBtb3Rpb24gd291bGQgaW52b2x2ZSBub2RlXG4vLyBzZWxlY3Rpb25zLiBJZiBzbywgYXBwbHkgaXQgKGlmIG5vdCwgdGhlIHJlc3VsdCBpcyBsZWZ0IHRvIHRoZVxuLy8gYnJvd3NlcilcbmZ1bmN0aW9uIHNlbGVjdFZlcnRpY2FsbHkodmlldywgZGlyLCBtb2RzKSB7XG4gICAgbGV0IHNlbCA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuICAgIGlmIChzZWwgaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uICYmICFzZWwuZW1wdHkgfHwgbW9kcy5pbmRleE9mKFwic1wiKSA+IC0xKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKG1hYyAmJiBtb2RzLmluZGV4T2YoXCJtXCIpID4gLTEpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgeyAkZnJvbSwgJHRvIH0gPSBzZWw7XG4gICAgaWYgKCEkZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudCB8fCB2aWV3LmVuZE9mVGV4dGJsb2NrKGRpciA8IDAgPyBcInVwXCIgOiBcImRvd25cIikpIHtcbiAgICAgICAgbGV0IG5leHQgPSBtb3ZlU2VsZWN0aW9uQmxvY2sodmlldy5zdGF0ZSwgZGlyKTtcbiAgICAgICAgaWYgKG5leHQgJiYgKG5leHQgaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiBhcHBseSh2aWV3LCBuZXh0KTtcbiAgICB9XG4gICAgaWYgKCEkZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudCkge1xuICAgICAgICBsZXQgc2lkZSA9IGRpciA8IDAgPyAkZnJvbSA6ICR0bztcbiAgICAgICAgbGV0IGJleW9uZCA9IHNlbCBpbnN0YW5jZW9mIEFsbFNlbGVjdGlvbiA/IFNlbGVjdGlvbi5uZWFyKHNpZGUsIGRpcikgOiBTZWxlY3Rpb24uZmluZEZyb20oc2lkZSwgZGlyKTtcbiAgICAgICAgcmV0dXJuIGJleW9uZCA/IGFwcGx5KHZpZXcsIGJleW9uZCkgOiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gc3RvcE5hdGl2ZUhvcml6b250YWxEZWxldGUodmlldywgZGlyKSB7XG4gICAgaWYgKCEodmlldy5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgbGV0IHsgJGhlYWQsICRhbmNob3IsIGVtcHR5IH0gPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcbiAgICBpZiAoISRoZWFkLnNhbWVQYXJlbnQoJGFuY2hvcikpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmICghZW1wdHkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAodmlldy5lbmRPZlRleHRibG9jayhkaXIgPiAwID8gXCJmb3J3YXJkXCIgOiBcImJhY2t3YXJkXCIpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBsZXQgbmV4dE5vZGUgPSAhJGhlYWQudGV4dE9mZnNldCAmJiAoZGlyIDwgMCA/ICRoZWFkLm5vZGVCZWZvcmUgOiAkaGVhZC5ub2RlQWZ0ZXIpO1xuICAgIGlmIChuZXh0Tm9kZSAmJiAhbmV4dE5vZGUuaXNUZXh0KSB7XG4gICAgICAgIGxldCB0ciA9IHZpZXcuc3RhdGUudHI7XG4gICAgICAgIGlmIChkaXIgPCAwKVxuICAgICAgICAgICAgdHIuZGVsZXRlKCRoZWFkLnBvcyAtIG5leHROb2RlLm5vZGVTaXplLCAkaGVhZC5wb3MpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0ci5kZWxldGUoJGhlYWQucG9zLCAkaGVhZC5wb3MgKyBuZXh0Tm9kZS5ub2RlU2l6ZSk7XG4gICAgICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gc3dpdGNoRWRpdGFibGUodmlldywgbm9kZSwgc3RhdGUpIHtcbiAgICB2aWV3LmRvbU9ic2VydmVyLnN0b3AoKTtcbiAgICBub2RlLmNvbnRlbnRFZGl0YWJsZSA9IHN0YXRlO1xuICAgIHZpZXcuZG9tT2JzZXJ2ZXIuc3RhcnQoKTtcbn1cbi8vIElzc3VlICM4NjcgLyAjMTA5MCAvIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTkwMzgyMVxuLy8gSW4gd2hpY2ggU2FmYXJpIChhbmQgYXQgc29tZSBwb2ludCBpbiB0aGUgcGFzdCwgQ2hyb21lKSBkb2VzIHJlYWxseVxuLy8gd3JvbmcgdGhpbmdzIHdoZW4gdGhlIGRvd24gYXJyb3cgaXMgcHJlc3NlZCB3aGVuIHRoZSBjdXJzb3IgaXNcbi8vIGRpcmVjdGx5IGF0IHRoZSBzdGFydCBvZiBhIHRleHRibG9jayBhbmQgaGFzIGFuIHVuZWRpdGFibGUgbm9kZVxuLy8gYWZ0ZXIgaXRcbmZ1bmN0aW9uIHNhZmFyaURvd25BcnJvd0J1Zyh2aWV3KSB7XG4gICAgaWYgKCFzYWZhcmkgfHwgdmlldy5zdGF0ZS5zZWxlY3Rpb24uJGhlYWQucGFyZW50T2Zmc2V0ID4gMClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGxldCB7IGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQgfSA9IHZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBpZiAoZm9jdXNOb2RlICYmIGZvY3VzTm9kZS5ub2RlVHlwZSA9PSAxICYmIGZvY3VzT2Zmc2V0ID09IDAgJiZcbiAgICAgICAgZm9jdXNOb2RlLmZpcnN0Q2hpbGQgJiYgZm9jdXNOb2RlLmZpcnN0Q2hpbGQuY29udGVudEVkaXRhYmxlID09IFwiZmFsc2VcIikge1xuICAgICAgICBsZXQgY2hpbGQgPSBmb2N1c05vZGUuZmlyc3RDaGlsZDtcbiAgICAgICAgc3dpdGNoRWRpdGFibGUodmlldywgY2hpbGQsIFwidHJ1ZVwiKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzd2l0Y2hFZGl0YWJsZSh2aWV3LCBjaGlsZCwgXCJmYWxzZVwiKSwgMjApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vLyBBIGJhY2tkcm9wIGtleSBtYXBwaW5nIHVzZWQgdG8gbWFrZSBzdXJlIHdlIGFsd2F5cyBzdXBwcmVzcyBrZXlzXG4vLyB0aGF0IGhhdmUgYSBkYW5nZXJvdXMgZGVmYXVsdCBlZmZlY3QsIGV2ZW4gaWYgdGhlIGNvbW1hbmRzIHRoZXkgYXJlXG4vLyBib3VuZCB0byByZXR1cm4gZmFsc2UsIGFuZCB0byBtYWtlIHN1cmUgdGhhdCBjdXJzb3ItbW90aW9uIGtleXNcbi8vIGZpbmQgYSBjdXJzb3IgKGFzIG9wcG9zZWQgdG8gYSBub2RlIHNlbGVjdGlvbikgd2hlbiBwcmVzc2VkLiBGb3Jcbi8vIGN1cnNvci1tb3Rpb24ga2V5cywgdGhlIGNvZGUgaW4gdGhlIGhhbmRsZXJzIGFsc28gdGFrZXMgY2FyZSBvZlxuLy8gYmxvY2sgc2VsZWN0aW9ucy5cbmZ1bmN0aW9uIGdldE1vZHMoZXZlbnQpIHtcbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICBpZiAoZXZlbnQuY3RybEtleSlcbiAgICAgICAgcmVzdWx0ICs9IFwiY1wiO1xuICAgIGlmIChldmVudC5tZXRhS2V5KVxuICAgICAgICByZXN1bHQgKz0gXCJtXCI7XG4gICAgaWYgKGV2ZW50LmFsdEtleSlcbiAgICAgICAgcmVzdWx0ICs9IFwiYVwiO1xuICAgIGlmIChldmVudC5zaGlmdEtleSlcbiAgICAgICAgcmVzdWx0ICs9IFwic1wiO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBjYXB0dXJlS2V5RG93bih2aWV3LCBldmVudCkge1xuICAgIGxldCBjb2RlID0gZXZlbnQua2V5Q29kZSwgbW9kcyA9IGdldE1vZHMoZXZlbnQpO1xuICAgIGlmIChjb2RlID09IDggfHwgKG1hYyAmJiBjb2RlID09IDcyICYmIG1vZHMgPT0gXCJjXCIpKSB7IC8vIEJhY2tzcGFjZSwgQ3RybC1oIG9uIE1hY1xuICAgICAgICByZXR1cm4gc3RvcE5hdGl2ZUhvcml6b250YWxEZWxldGUodmlldywgLTEpIHx8IHNraXBJZ25vcmVkTm9kZXModmlldywgLTEpO1xuICAgIH1cbiAgICBlbHNlIGlmICgoY29kZSA9PSA0NiAmJiAhZXZlbnQuc2hpZnRLZXkpIHx8IChtYWMgJiYgY29kZSA9PSA2OCAmJiBtb2RzID09IFwiY1wiKSkgeyAvLyBEZWxldGUsIEN0cmwtZCBvbiBNYWNcbiAgICAgICAgcmV0dXJuIHN0b3BOYXRpdmVIb3Jpem9udGFsRGVsZXRlKHZpZXcsIDEpIHx8IHNraXBJZ25vcmVkTm9kZXModmlldywgMSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvZGUgPT0gMTMgfHwgY29kZSA9PSAyNykgeyAvLyBFbnRlciwgRXNjXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBlbHNlIGlmIChjb2RlID09IDM3IHx8IChtYWMgJiYgY29kZSA9PSA2NiAmJiBtb2RzID09IFwiY1wiKSkgeyAvLyBMZWZ0IGFycm93LCBDdHJsLWIgb24gTWFjXG4gICAgICAgIGxldCBkaXIgPSBjb2RlID09IDM3ID8gKGZpbmREaXJlY3Rpb24odmlldywgdmlldy5zdGF0ZS5zZWxlY3Rpb24uZnJvbSkgPT0gXCJsdHJcIiA/IC0xIDogMSkgOiAtMTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdEhvcml6b250YWxseSh2aWV3LCBkaXIsIG1vZHMpIHx8IHNraXBJZ25vcmVkTm9kZXModmlldywgZGlyKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29kZSA9PSAzOSB8fCAobWFjICYmIGNvZGUgPT0gNzAgJiYgbW9kcyA9PSBcImNcIikpIHsgLy8gUmlnaHQgYXJyb3csIEN0cmwtZiBvbiBNYWNcbiAgICAgICAgbGV0IGRpciA9IGNvZGUgPT0gMzkgPyAoZmluZERpcmVjdGlvbih2aWV3LCB2aWV3LnN0YXRlLnNlbGVjdGlvbi5mcm9tKSA9PSBcImx0clwiID8gMSA6IC0xKSA6IDE7XG4gICAgICAgIHJldHVybiBzZWxlY3RIb3Jpem9udGFsbHkodmlldywgZGlyLCBtb2RzKSB8fCBza2lwSWdub3JlZE5vZGVzKHZpZXcsIGRpcik7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvZGUgPT0gMzggfHwgKG1hYyAmJiBjb2RlID09IDgwICYmIG1vZHMgPT0gXCJjXCIpKSB7IC8vIFVwIGFycm93LCBDdHJsLXAgb24gTWFjXG4gICAgICAgIHJldHVybiBzZWxlY3RWZXJ0aWNhbGx5KHZpZXcsIC0xLCBtb2RzKSB8fCBza2lwSWdub3JlZE5vZGVzKHZpZXcsIC0xKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29kZSA9PSA0MCB8fCAobWFjICYmIGNvZGUgPT0gNzggJiYgbW9kcyA9PSBcImNcIikpIHsgLy8gRG93biBhcnJvdywgQ3RybC1uIG9uIE1hY1xuICAgICAgICByZXR1cm4gc2FmYXJpRG93bkFycm93QnVnKHZpZXcpIHx8IHNlbGVjdFZlcnRpY2FsbHkodmlldywgMSwgbW9kcykgfHwgc2tpcElnbm9yZWROb2Rlcyh2aWV3LCAxKTtcbiAgICB9XG4gICAgZWxzZSBpZiAobW9kcyA9PSAobWFjID8gXCJtXCIgOiBcImNcIikgJiZcbiAgICAgICAgKGNvZGUgPT0gNjYgfHwgY29kZSA9PSA3MyB8fCBjb2RlID09IDg5IHx8IGNvZGUgPT0gOTApKSB7IC8vIE1vZC1bYml5el1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplRm9yQ2xpcGJvYXJkKHZpZXcsIHNsaWNlKSB7XG4gICAgdmlldy5zb21lUHJvcChcInRyYW5zZm9ybUNvcGllZFwiLCBmID0+IHsgc2xpY2UgPSBmKHNsaWNlLCB2aWV3KTsgfSk7XG4gICAgbGV0IGNvbnRleHQgPSBbXSwgeyBjb250ZW50LCBvcGVuU3RhcnQsIG9wZW5FbmQgfSA9IHNsaWNlO1xuICAgIHdoaWxlIChvcGVuU3RhcnQgPiAxICYmIG9wZW5FbmQgPiAxICYmIGNvbnRlbnQuY2hpbGRDb3VudCA9PSAxICYmIGNvbnRlbnQuZmlyc3RDaGlsZC5jaGlsZENvdW50ID09IDEpIHtcbiAgICAgICAgb3BlblN0YXJ0LS07XG4gICAgICAgIG9wZW5FbmQtLTtcbiAgICAgICAgbGV0IG5vZGUgPSBjb250ZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgIGNvbnRleHQucHVzaChub2RlLnR5cGUubmFtZSwgbm9kZS5hdHRycyAhPSBub2RlLnR5cGUuZGVmYXVsdEF0dHJzID8gbm9kZS5hdHRycyA6IG51bGwpO1xuICAgICAgICBjb250ZW50ID0gbm9kZS5jb250ZW50O1xuICAgIH1cbiAgICBsZXQgc2VyaWFsaXplciA9IHZpZXcuc29tZVByb3AoXCJjbGlwYm9hcmRTZXJpYWxpemVyXCIpIHx8IERPTVNlcmlhbGl6ZXIuZnJvbVNjaGVtYSh2aWV3LnN0YXRlLnNjaGVtYSk7XG4gICAgbGV0IGRvYyA9IGRldGFjaGVkRG9jKCksIHdyYXAgPSBkb2MuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB3cmFwLmFwcGVuZENoaWxkKHNlcmlhbGl6ZXIuc2VyaWFsaXplRnJhZ21lbnQoY29udGVudCwgeyBkb2N1bWVudDogZG9jIH0pKTtcbiAgICBsZXQgZmlyc3RDaGlsZCA9IHdyYXAuZmlyc3RDaGlsZCwgbmVlZHNXcmFwLCB3cmFwcGVycyA9IDA7XG4gICAgd2hpbGUgKGZpcnN0Q2hpbGQgJiYgZmlyc3RDaGlsZC5ub2RlVHlwZSA9PSAxICYmIChuZWVkc1dyYXAgPSB3cmFwTWFwW2ZpcnN0Q2hpbGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBuZWVkc1dyYXAubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCB3cmFwcGVyID0gZG9jLmNyZWF0ZUVsZW1lbnQobmVlZHNXcmFwW2ldKTtcbiAgICAgICAgICAgIHdoaWxlICh3cmFwLmZpcnN0Q2hpbGQpXG4gICAgICAgICAgICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZCh3cmFwLmZpcnN0Q2hpbGQpO1xuICAgICAgICAgICAgd3JhcC5hcHBlbmRDaGlsZCh3cmFwcGVyKTtcbiAgICAgICAgICAgIHdyYXBwZXJzKys7XG4gICAgICAgIH1cbiAgICAgICAgZmlyc3RDaGlsZCA9IHdyYXAuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgaWYgKGZpcnN0Q2hpbGQgJiYgZmlyc3RDaGlsZC5ub2RlVHlwZSA9PSAxKVxuICAgICAgICBmaXJzdENoaWxkLnNldEF0dHJpYnV0ZShcImRhdGEtcG0tc2xpY2VcIiwgYCR7b3BlblN0YXJ0fSAke29wZW5FbmR9JHt3cmFwcGVycyA/IGAgLSR7d3JhcHBlcnN9YCA6IFwiXCJ9ICR7SlNPTi5zdHJpbmdpZnkoY29udGV4dCl9YCk7XG4gICAgbGV0IHRleHQgPSB2aWV3LnNvbWVQcm9wKFwiY2xpcGJvYXJkVGV4dFNlcmlhbGl6ZXJcIiwgZiA9PiBmKHNsaWNlLCB2aWV3KSkgfHxcbiAgICAgICAgc2xpY2UuY29udGVudC50ZXh0QmV0d2VlbigwLCBzbGljZS5jb250ZW50LnNpemUsIFwiXFxuXFxuXCIpO1xuICAgIHJldHVybiB7IGRvbTogd3JhcCwgdGV4dCwgc2xpY2UgfTtcbn1cbi8vIFJlYWQgYSBzbGljZSBvZiBjb250ZW50IGZyb20gdGhlIGNsaXBib2FyZCAob3IgZHJvcCBkYXRhKS5cbmZ1bmN0aW9uIHBhcnNlRnJvbUNsaXBib2FyZCh2aWV3LCB0ZXh0LCBodG1sLCBwbGFpblRleHQsICRjb250ZXh0KSB7XG4gICAgbGV0IGluQ29kZSA9ICRjb250ZXh0LnBhcmVudC50eXBlLnNwZWMuY29kZTtcbiAgICBsZXQgZG9tLCBzbGljZTtcbiAgICBpZiAoIWh0bWwgJiYgIXRleHQpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGxldCBhc1RleHQgPSAhIXRleHQgJiYgKHBsYWluVGV4dCB8fCBpbkNvZGUgfHwgIWh0bWwpO1xuICAgIGlmIChhc1RleHQpIHtcbiAgICAgICAgdmlldy5zb21lUHJvcChcInRyYW5zZm9ybVBhc3RlZFRleHRcIiwgZiA9PiB7IHRleHQgPSBmKHRleHQsIGluQ29kZSB8fCBwbGFpblRleHQsIHZpZXcpOyB9KTtcbiAgICAgICAgaWYgKGluQ29kZSkge1xuICAgICAgICAgICAgc2xpY2UgPSBuZXcgU2xpY2UoRnJhZ21lbnQuZnJvbSh2aWV3LnN0YXRlLnNjaGVtYS50ZXh0KHRleHQucmVwbGFjZSgvXFxyXFxuPy9nLCBcIlxcblwiKSkpLCAwLCAwKTtcbiAgICAgICAgICAgIHZpZXcuc29tZVByb3AoXCJ0cmFuc2Zvcm1QYXN0ZWRcIiwgZiA9PiB7IHNsaWNlID0gZihzbGljZSwgdmlldywgdHJ1ZSk7IH0pO1xuICAgICAgICAgICAgcmV0dXJuIHNsaWNlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJzZWQgPSB2aWV3LnNvbWVQcm9wKFwiY2xpcGJvYXJkVGV4dFBhcnNlclwiLCBmID0+IGYodGV4dCwgJGNvbnRleHQsIHBsYWluVGV4dCwgdmlldykpO1xuICAgICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgICAgICBzbGljZSA9IHBhcnNlZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBtYXJrcyA9ICRjb250ZXh0Lm1hcmtzKCk7XG4gICAgICAgICAgICBsZXQgeyBzY2hlbWEgfSA9IHZpZXcuc3RhdGUsIHNlcmlhbGl6ZXIgPSBET01TZXJpYWxpemVyLmZyb21TY2hlbWEoc2NoZW1hKTtcbiAgICAgICAgICAgIGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgICB0ZXh0LnNwbGl0KC8oPzpcXHJcXG4/fFxcbikrLykuZm9yRWFjaChibG9jayA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHAgPSBkb20uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInBcIikpO1xuICAgICAgICAgICAgICAgIGlmIChibG9jaylcbiAgICAgICAgICAgICAgICAgICAgcC5hcHBlbmRDaGlsZChzZXJpYWxpemVyLnNlcmlhbGl6ZU5vZGUoc2NoZW1hLnRleHQoYmxvY2ssIG1hcmtzKSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZpZXcuc29tZVByb3AoXCJ0cmFuc2Zvcm1QYXN0ZWRIVE1MXCIsIGYgPT4geyBodG1sID0gZihodG1sLCB2aWV3KTsgfSk7XG4gICAgICAgIGRvbSA9IHJlYWRIVE1MKGh0bWwpO1xuICAgICAgICBpZiAod2Via2l0KVxuICAgICAgICAgICAgcmVzdG9yZVJlcGxhY2VkU3BhY2VzKGRvbSk7XG4gICAgfVxuICAgIGxldCBjb250ZXh0Tm9kZSA9IGRvbSAmJiBkb20ucXVlcnlTZWxlY3RvcihcIltkYXRhLXBtLXNsaWNlXVwiKTtcbiAgICBsZXQgc2xpY2VEYXRhID0gY29udGV4dE5vZGUgJiYgL14oXFxkKykgKFxcZCspKD86IC0oXFxkKykpPyAoLiopLy5leGVjKGNvbnRleHROb2RlLmdldEF0dHJpYnV0ZShcImRhdGEtcG0tc2xpY2VcIikgfHwgXCJcIik7XG4gICAgaWYgKHNsaWNlRGF0YSAmJiBzbGljZURhdGFbM10pXG4gICAgICAgIGZvciAobGV0IGkgPSArc2xpY2VEYXRhWzNdOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGQgPSBkb20uZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIHdoaWxlIChjaGlsZCAmJiBjaGlsZC5ub2RlVHlwZSAhPSAxKVxuICAgICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAoIWNoaWxkKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZG9tID0gY2hpbGQ7XG4gICAgICAgIH1cbiAgICBpZiAoIXNsaWNlKSB7XG4gICAgICAgIGxldCBwYXJzZXIgPSB2aWV3LnNvbWVQcm9wKFwiY2xpcGJvYXJkUGFyc2VyXCIpIHx8IHZpZXcuc29tZVByb3AoXCJkb21QYXJzZXJcIikgfHwgRE9NUGFyc2VyLmZyb21TY2hlbWEodmlldy5zdGF0ZS5zY2hlbWEpO1xuICAgICAgICBzbGljZSA9IHBhcnNlci5wYXJzZVNsaWNlKGRvbSwge1xuICAgICAgICAgICAgcHJlc2VydmVXaGl0ZXNwYWNlOiAhIShhc1RleHQgfHwgc2xpY2VEYXRhKSxcbiAgICAgICAgICAgIGNvbnRleHQ6ICRjb250ZXh0LFxuICAgICAgICAgICAgcnVsZUZyb21Ob2RlKGRvbSkge1xuICAgICAgICAgICAgICAgIGlmIChkb20ubm9kZU5hbWUgPT0gXCJCUlwiICYmICFkb20ubmV4dFNpYmxpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgZG9tLnBhcmVudE5vZGUgJiYgIWlubGluZVBhcmVudHMudGVzdChkb20ucGFyZW50Tm9kZS5ub2RlTmFtZSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGlnbm9yZTogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHNsaWNlRGF0YSkge1xuICAgICAgICBzbGljZSA9IGFkZENvbnRleHQoY2xvc2VTbGljZShzbGljZSwgK3NsaWNlRGF0YVsxXSwgK3NsaWNlRGF0YVsyXSksIHNsaWNlRGF0YVs0XSk7XG4gICAgfVxuICAgIGVsc2UgeyAvLyBIVE1MIHdhc24ndCBjcmVhdGVkIGJ5IFByb3NlTWlycm9yLiBNYWtlIHN1cmUgdG9wLWxldmVsIHNpYmxpbmdzIGFyZSBjb2hlcmVudFxuICAgICAgICBzbGljZSA9IFNsaWNlLm1heE9wZW4obm9ybWFsaXplU2libGluZ3Moc2xpY2UuY29udGVudCwgJGNvbnRleHQpLCB0cnVlKTtcbiAgICAgICAgaWYgKHNsaWNlLm9wZW5TdGFydCB8fCBzbGljZS5vcGVuRW5kKSB7XG4gICAgICAgICAgICBsZXQgb3BlblN0YXJ0ID0gMCwgb3BlbkVuZCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBub2RlID0gc2xpY2UuY29udGVudC5maXJzdENoaWxkOyBvcGVuU3RhcnQgPCBzbGljZS5vcGVuU3RhcnQgJiYgIW5vZGUudHlwZS5zcGVjLmlzb2xhdGluZzsgb3BlblN0YXJ0KyssIG5vZGUgPSBub2RlLmZpcnN0Q2hpbGQpIHsgfVxuICAgICAgICAgICAgZm9yIChsZXQgbm9kZSA9IHNsaWNlLmNvbnRlbnQubGFzdENoaWxkOyBvcGVuRW5kIDwgc2xpY2Uub3BlbkVuZCAmJiAhbm9kZS50eXBlLnNwZWMuaXNvbGF0aW5nOyBvcGVuRW5kKyssIG5vZGUgPSBub2RlLmxhc3RDaGlsZCkgeyB9XG4gICAgICAgICAgICBzbGljZSA9IGNsb3NlU2xpY2Uoc2xpY2UsIG9wZW5TdGFydCwgb3BlbkVuZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlldy5zb21lUHJvcChcInRyYW5zZm9ybVBhc3RlZFwiLCBmID0+IHsgc2xpY2UgPSBmKHNsaWNlLCB2aWV3LCBhc1RleHQpOyB9KTtcbiAgICByZXR1cm4gc2xpY2U7XG59XG5jb25zdCBpbmxpbmVQYXJlbnRzID0gL14oYXxhYmJyfGFjcm9ueW18YnxjaXRlfGNvZGV8ZGVsfGVtfGl8aW5zfGtiZHxsYWJlbHxvdXRwdXR8cXxydWJ5fHN8c2FtcHxzcGFufHN0cm9uZ3xzdWJ8c3VwfHRpbWV8dXx0dHx2YXIpJC9pO1xuLy8gVGFrZXMgYSBzbGljZSBwYXJzZWQgd2l0aCBwYXJzZVNsaWNlLCB3aGljaCBtZWFucyB0aGVyZSBoYXNuJ3QgYmVlblxuLy8gYW55IGNvbnRlbnQtZXhwcmVzc2lvbiBjaGVja2luZyBkb25lIG9uIHRoZSB0b3Agbm9kZXMsIHRyaWVzIHRvXG4vLyBmaW5kIGEgcGFyZW50IG5vZGUgaW4gdGhlIGN1cnJlbnQgY29udGV4dCB0aGF0IG1pZ2h0IGZpdCB0aGUgbm9kZXMsXG4vLyBhbmQgaWYgc3VjY2Vzc2Z1bCwgcmVidWlsZHMgdGhlIHNsaWNlIHNvIHRoYXQgaXQgZml0cyBpbnRvIHRoYXQgcGFyZW50LlxuLy9cbi8vIFRoaXMgYWRkcmVzc2VzIHRoZSBwcm9ibGVtIHRoYXQgVHJhbnNmb3JtLnJlcGxhY2UgZXhwZWN0cyBhXG4vLyBjb2hlcmVudCBzbGljZSwgYW5kIHdpbGwgZmFpbCB0byBwbGFjZSBhIHNldCBvZiBzaWJsaW5ncyB0aGF0IGRvbid0XG4vLyBmaXQgYW55d2hlcmUgaW4gdGhlIHNjaGVtYS5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNpYmxpbmdzKGZyYWdtZW50LCAkY29udGV4dCkge1xuICAgIGlmIChmcmFnbWVudC5jaGlsZENvdW50IDwgMilcbiAgICAgICAgcmV0dXJuIGZyYWdtZW50O1xuICAgIGZvciAobGV0IGQgPSAkY29udGV4dC5kZXB0aDsgZCA+PSAwOyBkLS0pIHtcbiAgICAgICAgbGV0IHBhcmVudCA9ICRjb250ZXh0Lm5vZGUoZCk7XG4gICAgICAgIGxldCBtYXRjaCA9IHBhcmVudC5jb250ZW50TWF0Y2hBdCgkY29udGV4dC5pbmRleChkKSk7XG4gICAgICAgIGxldCBsYXN0V3JhcCwgcmVzdWx0ID0gW107XG4gICAgICAgIGZyYWdtZW50LmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBsZXQgd3JhcCA9IG1hdGNoLmZpbmRXcmFwcGluZyhub2RlLnR5cGUpLCBpbkxhc3Q7XG4gICAgICAgICAgICBpZiAoIXdyYXApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoaW5MYXN0ID0gcmVzdWx0Lmxlbmd0aCAmJiBsYXN0V3JhcC5sZW5ndGggJiYgYWRkVG9TaWJsaW5nKHdyYXAsIGxhc3RXcmFwLCBub2RlLCByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdLCAwKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gPSBpbkxhc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSA9IGNsb3NlUmlnaHQocmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSwgbGFzdFdyYXAubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdpdGhXcmFwcGVycyhub2RlLCB3cmFwKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh3cmFwcGVkKTtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IG1hdGNoLm1hdGNoVHlwZSh3cmFwcGVkLnR5cGUpO1xuICAgICAgICAgICAgICAgIGxhc3RXcmFwID0gd3JhcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXN1bHQpXG4gICAgICAgICAgICByZXR1cm4gRnJhZ21lbnQuZnJvbShyZXN1bHQpO1xuICAgIH1cbiAgICByZXR1cm4gZnJhZ21lbnQ7XG59XG5mdW5jdGlvbiB3aXRoV3JhcHBlcnMobm9kZSwgd3JhcCwgZnJvbSA9IDApIHtcbiAgICBmb3IgKGxldCBpID0gd3JhcC5sZW5ndGggLSAxOyBpID49IGZyb207IGktLSlcbiAgICAgICAgbm9kZSA9IHdyYXBbaV0uY3JlYXRlKG51bGwsIEZyYWdtZW50LmZyb20obm9kZSkpO1xuICAgIHJldHVybiBub2RlO1xufVxuLy8gVXNlZCB0byBncm91cCBhZGphY2VudCBub2RlcyB3cmFwcGVkIGluIHNpbWlsYXIgcGFyZW50cyBieVxuLy8gbm9ybWFsaXplU2libGluZ3MgaW50byB0aGUgc2FtZSBwYXJlbnQgbm9kZVxuZnVuY3Rpb24gYWRkVG9TaWJsaW5nKHdyYXAsIGxhc3RXcmFwLCBub2RlLCBzaWJsaW5nLCBkZXB0aCkge1xuICAgIGlmIChkZXB0aCA8IHdyYXAubGVuZ3RoICYmIGRlcHRoIDwgbGFzdFdyYXAubGVuZ3RoICYmIHdyYXBbZGVwdGhdID09IGxhc3RXcmFwW2RlcHRoXSkge1xuICAgICAgICBsZXQgaW5uZXIgPSBhZGRUb1NpYmxpbmcod3JhcCwgbGFzdFdyYXAsIG5vZGUsIHNpYmxpbmcubGFzdENoaWxkLCBkZXB0aCArIDEpO1xuICAgICAgICBpZiAoaW5uZXIpXG4gICAgICAgICAgICByZXR1cm4gc2libGluZy5jb3B5KHNpYmxpbmcuY29udGVudC5yZXBsYWNlQ2hpbGQoc2libGluZy5jaGlsZENvdW50IC0gMSwgaW5uZXIpKTtcbiAgICAgICAgbGV0IG1hdGNoID0gc2libGluZy5jb250ZW50TWF0Y2hBdChzaWJsaW5nLmNoaWxkQ291bnQpO1xuICAgICAgICBpZiAobWF0Y2gubWF0Y2hUeXBlKGRlcHRoID09IHdyYXAubGVuZ3RoIC0gMSA/IG5vZGUudHlwZSA6IHdyYXBbZGVwdGggKyAxXSkpXG4gICAgICAgICAgICByZXR1cm4gc2libGluZy5jb3B5KHNpYmxpbmcuY29udGVudC5hcHBlbmQoRnJhZ21lbnQuZnJvbSh3aXRoV3JhcHBlcnMobm9kZSwgd3JhcCwgZGVwdGggKyAxKSkpKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjbG9zZVJpZ2h0KG5vZGUsIGRlcHRoKSB7XG4gICAgaWYgKGRlcHRoID09IDApXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIGxldCBmcmFnbWVudCA9IG5vZGUuY29udGVudC5yZXBsYWNlQ2hpbGQobm9kZS5jaGlsZENvdW50IC0gMSwgY2xvc2VSaWdodChub2RlLmxhc3RDaGlsZCwgZGVwdGggLSAxKSk7XG4gICAgbGV0IGZpbGwgPSBub2RlLmNvbnRlbnRNYXRjaEF0KG5vZGUuY2hpbGRDb3VudCkuZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwgdHJ1ZSk7XG4gICAgcmV0dXJuIG5vZGUuY29weShmcmFnbWVudC5hcHBlbmQoZmlsbCkpO1xufVxuZnVuY3Rpb24gY2xvc2VSYW5nZShmcmFnbWVudCwgc2lkZSwgZnJvbSwgdG8sIGRlcHRoLCBvcGVuRW5kKSB7XG4gICAgbGV0IG5vZGUgPSBzaWRlIDwgMCA/IGZyYWdtZW50LmZpcnN0Q2hpbGQgOiBmcmFnbWVudC5sYXN0Q2hpbGQsIGlubmVyID0gbm9kZS5jb250ZW50O1xuICAgIGlmIChmcmFnbWVudC5jaGlsZENvdW50ID4gMSlcbiAgICAgICAgb3BlbkVuZCA9IDA7XG4gICAgaWYgKGRlcHRoIDwgdG8gLSAxKVxuICAgICAgICBpbm5lciA9IGNsb3NlUmFuZ2UoaW5uZXIsIHNpZGUsIGZyb20sIHRvLCBkZXB0aCArIDEsIG9wZW5FbmQpO1xuICAgIGlmIChkZXB0aCA+PSBmcm9tKVxuICAgICAgICBpbm5lciA9IHNpZGUgPCAwID8gbm9kZS5jb250ZW50TWF0Y2hBdCgwKS5maWxsQmVmb3JlKGlubmVyLCBvcGVuRW5kIDw9IGRlcHRoKS5hcHBlbmQoaW5uZXIpXG4gICAgICAgICAgICA6IGlubmVyLmFwcGVuZChub2RlLmNvbnRlbnRNYXRjaEF0KG5vZGUuY2hpbGRDb3VudCkuZmlsbEJlZm9yZShGcmFnbWVudC5lbXB0eSwgdHJ1ZSkpO1xuICAgIHJldHVybiBmcmFnbWVudC5yZXBsYWNlQ2hpbGQoc2lkZSA8IDAgPyAwIDogZnJhZ21lbnQuY2hpbGRDb3VudCAtIDEsIG5vZGUuY29weShpbm5lcikpO1xufVxuZnVuY3Rpb24gY2xvc2VTbGljZShzbGljZSwgb3BlblN0YXJ0LCBvcGVuRW5kKSB7XG4gICAgaWYgKG9wZW5TdGFydCA8IHNsaWNlLm9wZW5TdGFydClcbiAgICAgICAgc2xpY2UgPSBuZXcgU2xpY2UoY2xvc2VSYW5nZShzbGljZS5jb250ZW50LCAtMSwgb3BlblN0YXJ0LCBzbGljZS5vcGVuU3RhcnQsIDAsIHNsaWNlLm9wZW5FbmQpLCBvcGVuU3RhcnQsIHNsaWNlLm9wZW5FbmQpO1xuICAgIGlmIChvcGVuRW5kIDwgc2xpY2Uub3BlbkVuZClcbiAgICAgICAgc2xpY2UgPSBuZXcgU2xpY2UoY2xvc2VSYW5nZShzbGljZS5jb250ZW50LCAxLCBvcGVuRW5kLCBzbGljZS5vcGVuRW5kLCAwLCAwKSwgc2xpY2Uub3BlblN0YXJ0LCBvcGVuRW5kKTtcbiAgICByZXR1cm4gc2xpY2U7XG59XG4vLyBUcmljayBmcm9tIGpRdWVyeSAtLSBzb21lIGVsZW1lbnRzIG11c3QgYmUgd3JhcHBlZCBpbiBvdGhlclxuLy8gZWxlbWVudHMgZm9yIGlubmVySFRNTCB0byB3b3JrLiBJLmUuIGlmIHlvdSBkbyBgZGl2LmlubmVySFRNTCA9XG4vLyBcIjx0ZD4uLjwvdGQ+XCJgIHRoZSB0YWJsZSBjZWxscyBhcmUgaWdub3JlZC5cbmNvbnN0IHdyYXBNYXAgPSB7XG4gICAgdGhlYWQ6IFtcInRhYmxlXCJdLFxuICAgIHRib2R5OiBbXCJ0YWJsZVwiXSxcbiAgICB0Zm9vdDogW1widGFibGVcIl0sXG4gICAgY2FwdGlvbjogW1widGFibGVcIl0sXG4gICAgY29sZ3JvdXA6IFtcInRhYmxlXCJdLFxuICAgIGNvbDogW1widGFibGVcIiwgXCJjb2xncm91cFwiXSxcbiAgICB0cjogW1widGFibGVcIiwgXCJ0Ym9keVwiXSxcbiAgICB0ZDogW1widGFibGVcIiwgXCJ0Ym9keVwiLCBcInRyXCJdLFxuICAgIHRoOiBbXCJ0YWJsZVwiLCBcInRib2R5XCIsIFwidHJcIl1cbn07XG5sZXQgX2RldGFjaGVkRG9jID0gbnVsbDtcbmZ1bmN0aW9uIGRldGFjaGVkRG9jKCkge1xuICAgIHJldHVybiBfZGV0YWNoZWREb2MgfHwgKF9kZXRhY2hlZERvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudChcInRpdGxlXCIpKTtcbn1cbmxldCBfcG9saWN5ID0gbnVsbDtcbmZ1bmN0aW9uIG1heWJlV3JhcFRydXN0ZWQoaHRtbCkge1xuICAgIGxldCB0cnVzdGVkVHlwZXMgPSB3aW5kb3cudHJ1c3RlZFR5cGVzO1xuICAgIGlmICghdHJ1c3RlZFR5cGVzKVxuICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAvLyBXaXRoIHRoZSByZXF1aXJlLXRydXN0ZWQtdHlwZXMtZm9yIENTUCwgQ2hyb21lIHdpbGwgYmxvY2tcbiAgICAvLyBpbm5lckhUTUwsIGV2ZW4gb24gYSBkZXRhY2hlZCBkb2N1bWVudC4gVGhpcyB3cmFwcyB0aGUgc3RyaW5nIGluXG4gICAgLy8gYSB3YXkgdGhhdCBtYWtlcyB0aGUgYnJvd3NlciBhbGxvdyB1cyB0byB1c2UgaXRzIHBhcnNlciBhZ2Fpbi5cbiAgICBpZiAoIV9wb2xpY3kpXG4gICAgICAgIF9wb2xpY3kgPSB0cnVzdGVkVHlwZXMuZGVmYXVsdFBvbGljeSB8fCB0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KFwiUHJvc2VNaXJyb3JDbGlwYm9hcmRcIiwgeyBjcmVhdGVIVE1MOiAocykgPT4gcyB9KTtcbiAgICByZXR1cm4gX3BvbGljeS5jcmVhdGVIVE1MKGh0bWwpO1xufVxuZnVuY3Rpb24gcmVhZEhUTUwoaHRtbCkge1xuICAgIGxldCBtZXRhcyA9IC9eKFxccyo8bWV0YSBbXj5dKj4pKi8uZXhlYyhodG1sKTtcbiAgICBpZiAobWV0YXMpXG4gICAgICAgIGh0bWwgPSBodG1sLnNsaWNlKG1ldGFzWzBdLmxlbmd0aCk7XG4gICAgbGV0IGVsdCA9IGRldGFjaGVkRG9jKCkuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBsZXQgZmlyc3RUYWcgPSAvPChbYS16XVtePlxcc10rKS9pLmV4ZWMoaHRtbCksIHdyYXA7XG4gICAgaWYgKHdyYXAgPSBmaXJzdFRhZyAmJiB3cmFwTWFwW2ZpcnN0VGFnWzFdLnRvTG93ZXJDYXNlKCldKVxuICAgICAgICBodG1sID0gd3JhcC5tYXAobiA9PiBcIjxcIiArIG4gKyBcIj5cIikuam9pbihcIlwiKSArIGh0bWwgKyB3cmFwLm1hcChuID0+IFwiPC9cIiArIG4gKyBcIj5cIikucmV2ZXJzZSgpLmpvaW4oXCJcIik7XG4gICAgZWx0LmlubmVySFRNTCA9IG1heWJlV3JhcFRydXN0ZWQoaHRtbCk7XG4gICAgaWYgKHdyYXApXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd3JhcC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGVsdCA9IGVsdC5xdWVyeVNlbGVjdG9yKHdyYXBbaV0pIHx8IGVsdDtcbiAgICByZXR1cm4gZWx0O1xufVxuLy8gV2Via2l0IGJyb3dzZXJzIGRvIHNvbWUgaGFyZC10by1wcmVkaWN0IHJlcGxhY2VtZW50IG9mIHJlZ3VsYXJcbi8vIHNwYWNlcyB3aXRoIG5vbi1icmVha2luZyBzcGFjZXMgd2hlbiBwdXR0aW5nIGNvbnRlbnQgb24gdGhlXG4vLyBjbGlwYm9hcmQuIFRoaXMgdHJpZXMgdG8gY29udmVydCBzdWNoIG5vbi1icmVha2luZyBzcGFjZXMgKHdoaWNoXG4vLyB3aWxsIGJlIHdyYXBwZWQgaW4gYSBwbGFpbiBzcGFuIG9uIENocm9tZSwgYSBzcGFuIHdpdGggY2xhc3Ncbi8vIEFwcGxlLWNvbnZlcnRlZC1zcGFjZSBvbiBTYWZhcmkpIGJhY2sgdG8gcmVndWxhciBzcGFjZXMuXG5mdW5jdGlvbiByZXN0b3JlUmVwbGFjZWRTcGFjZXMoZG9tKSB7XG4gICAgbGV0IG5vZGVzID0gZG9tLnF1ZXJ5U2VsZWN0b3JBbGwoY2hyb21lID8gXCJzcGFuOm5vdChbY2xhc3NdKTpub3QoW3N0eWxlXSlcIiA6IFwic3Bhbi5BcHBsZS1jb252ZXJ0ZWQtc3BhY2VcIik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAobm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA9PSAxICYmIG5vZGUudGV4dENvbnRlbnQgPT0gXCJcXHUwMGEwXCIgJiYgbm9kZS5wYXJlbnROb2RlKVxuICAgICAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChkb20ub3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIiBcIiksIG5vZGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZENvbnRleHQoc2xpY2UsIGNvbnRleHQpIHtcbiAgICBpZiAoIXNsaWNlLnNpemUpXG4gICAgICAgIHJldHVybiBzbGljZTtcbiAgICBsZXQgc2NoZW1hID0gc2xpY2UuY29udGVudC5maXJzdENoaWxkLnR5cGUuc2NoZW1hLCBhcnJheTtcbiAgICB0cnkge1xuICAgICAgICBhcnJheSA9IEpTT04ucGFyc2UoY29udGV4dCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBzbGljZTtcbiAgICB9XG4gICAgbGV0IHsgY29udGVudCwgb3BlblN0YXJ0LCBvcGVuRW5kIH0gPSBzbGljZTtcbiAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICAgICAgbGV0IHR5cGUgPSBzY2hlbWEubm9kZXNbYXJyYXlbaV1dO1xuICAgICAgICBpZiAoIXR5cGUgfHwgdHlwZS5oYXNSZXF1aXJlZEF0dHJzKCkpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY29udGVudCA9IEZyYWdtZW50LmZyb20odHlwZS5jcmVhdGUoYXJyYXlbaSArIDFdLCBjb250ZW50KSk7XG4gICAgICAgIG9wZW5TdGFydCsrO1xuICAgICAgICBvcGVuRW5kKys7XG4gICAgfVxuICAgIHJldHVybiBuZXcgU2xpY2UoY29udGVudCwgb3BlblN0YXJ0LCBvcGVuRW5kKTtcbn1cblxuLy8gQSBjb2xsZWN0aW9uIG9mIERPTSBldmVudHMgdGhhdCBvY2N1ciB3aXRoaW4gdGhlIGVkaXRvciwgYW5kIGNhbGxiYWNrIGZ1bmN0aW9uc1xuLy8gdG8gaW52b2tlIHdoZW4gdGhlIGV2ZW50IGZpcmVzLlxuY29uc3QgaGFuZGxlcnMgPSB7fTtcbmNvbnN0IGVkaXRIYW5kbGVycyA9IHt9O1xuY29uc3QgcGFzc2l2ZUhhbmRsZXJzID0geyB0b3VjaHN0YXJ0OiB0cnVlLCB0b3VjaG1vdmU6IHRydWUgfTtcbmNsYXNzIElucHV0U3RhdGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNoaWZ0S2V5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW91c2VEb3duID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0S2V5Q29kZSA9IG51bGw7XG4gICAgICAgIHRoaXMubGFzdEtleUNvZGVUaW1lID0gMDtcbiAgICAgICAgdGhpcy5sYXN0Q2xpY2sgPSB7IHRpbWU6IDAsIHg6IDAsIHk6IDAsIHR5cGU6IFwiXCIsIGJ1dHRvbjogMCB9O1xuICAgICAgICB0aGlzLmxhc3RTZWxlY3Rpb25PcmlnaW4gPSBudWxsO1xuICAgICAgICB0aGlzLmxhc3RTZWxlY3Rpb25UaW1lID0gMDtcbiAgICAgICAgdGhpcy5sYXN0SU9TRW50ZXIgPSAwO1xuICAgICAgICB0aGlzLmxhc3RJT1NFbnRlckZhbGxiYWNrVGltZW91dCA9IC0xO1xuICAgICAgICB0aGlzLmxhc3RGb2N1cyA9IDA7XG4gICAgICAgIHRoaXMubGFzdFRvdWNoID0gMDtcbiAgICAgICAgdGhpcy5sYXN0Q2hyb21lRGVsZXRlID0gMDtcbiAgICAgICAgdGhpcy5jb21wb3NpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb21wb3NpdGlvbk5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbXBvc2luZ1RpbWVvdXQgPSAtMTtcbiAgICAgICAgdGhpcy5jb21wb3NpdGlvbk5vZGVzID0gW107XG4gICAgICAgIHRoaXMuY29tcG9zaXRpb25FbmRlZEF0ID0gLTJlODtcbiAgICAgICAgdGhpcy5jb21wb3NpdGlvbklEID0gMTtcbiAgICAgICAgdGhpcy5iYWRTYWZhcmlDb21wb3NpdGlvbiA9IGZhbHNlO1xuICAgICAgICAvLyBTZXQgdG8gYSBjb21wb3NpdGlvbiBJRCB3aGVuIHRoZXJlIGFyZSBwZW5kaW5nIGNoYW5nZXMgYXQgY29tcG9zaXRpb25lbmRcbiAgICAgICAgdGhpcy5jb21wb3NpdGlvblBlbmRpbmdDaGFuZ2VzID0gMDtcbiAgICAgICAgdGhpcy5kb21DaGFuZ2VDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuZXZlbnRIYW5kbGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuaGlkZVNlbGVjdGlvbkd1YXJkID0gbnVsbDtcbiAgICB9XG59XG5mdW5jdGlvbiBpbml0SW5wdXQodmlldykge1xuICAgIGZvciAobGV0IGV2ZW50IGluIGhhbmRsZXJzKSB7XG4gICAgICAgIGxldCBoYW5kbGVyID0gaGFuZGxlcnNbZXZlbnRdO1xuICAgICAgICB2aWV3LmRvbS5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCB2aWV3LmlucHV0LmV2ZW50SGFuZGxlcnNbZXZlbnRdID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnRCZWxvbmdzVG9WaWV3KHZpZXcsIGV2ZW50KSAmJiAhcnVuQ3VzdG9tSGFuZGxlcih2aWV3LCBldmVudCkgJiZcbiAgICAgICAgICAgICAgICAodmlldy5lZGl0YWJsZSB8fCAhKGV2ZW50LnR5cGUgaW4gZWRpdEhhbmRsZXJzKSkpXG4gICAgICAgICAgICAgICAgaGFuZGxlcih2aWV3LCBldmVudCk7XG4gICAgICAgIH0sIHBhc3NpdmVIYW5kbGVyc1tldmVudF0gPyB7IHBhc3NpdmU6IHRydWUgfSA6IHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIC8vIE9uIFNhZmFyaSwgZm9yIHJlYXNvbnMgYmV5b25kIG15IHVuZGVyc3RhbmRpbmcsIGFkZGluZyBhbiBpbnB1dFxuICAgIC8vIGV2ZW50IGhhbmRsZXIgbWFrZXMgYW4gaXNzdWUgd2hlcmUgdGhlIGNvbXBvc2l0aW9uIHZhbmlzaGVzIHdoZW5cbiAgICAvLyB5b3UgcHJlc3MgZW50ZXIgZ28gYXdheS5cbiAgICBpZiAoc2FmYXJpKVxuICAgICAgICB2aWV3LmRvbS5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgKCkgPT4gbnVsbCk7XG4gICAgZW5zdXJlTGlzdGVuZXJzKHZpZXcpO1xufVxuZnVuY3Rpb24gc2V0U2VsZWN0aW9uT3JpZ2luKHZpZXcsIG9yaWdpbikge1xuICAgIHZpZXcuaW5wdXQubGFzdFNlbGVjdGlvbk9yaWdpbiA9IG9yaWdpbjtcbiAgICB2aWV3LmlucHV0Lmxhc3RTZWxlY3Rpb25UaW1lID0gRGF0ZS5ub3coKTtcbn1cbmZ1bmN0aW9uIGRlc3Ryb3lJbnB1dCh2aWV3KSB7XG4gICAgdmlldy5kb21PYnNlcnZlci5zdG9wKCk7XG4gICAgZm9yIChsZXQgdHlwZSBpbiB2aWV3LmlucHV0LmV2ZW50SGFuZGxlcnMpXG4gICAgICAgIHZpZXcuZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgdmlldy5pbnB1dC5ldmVudEhhbmRsZXJzW3R5cGVdKTtcbiAgICBjbGVhclRpbWVvdXQodmlldy5pbnB1dC5jb21wb3NpbmdUaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodmlldy5pbnB1dC5sYXN0SU9TRW50ZXJGYWxsYmFja1RpbWVvdXQpO1xufVxuZnVuY3Rpb24gZW5zdXJlTGlzdGVuZXJzKHZpZXcpIHtcbiAgICB2aWV3LnNvbWVQcm9wKFwiaGFuZGxlRE9NRXZlbnRzXCIsIGN1cnJlbnRIYW5kbGVycyA9PiB7XG4gICAgICAgIGZvciAobGV0IHR5cGUgaW4gY3VycmVudEhhbmRsZXJzKVxuICAgICAgICAgICAgaWYgKCF2aWV3LmlucHV0LmV2ZW50SGFuZGxlcnNbdHlwZV0pXG4gICAgICAgICAgICAgICAgdmlldy5kb20uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCB2aWV3LmlucHV0LmV2ZW50SGFuZGxlcnNbdHlwZV0gPSBldmVudCA9PiBydW5DdXN0b21IYW5kbGVyKHZpZXcsIGV2ZW50KSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBydW5DdXN0b21IYW5kbGVyKHZpZXcsIGV2ZW50KSB7XG4gICAgcmV0dXJuIHZpZXcuc29tZVByb3AoXCJoYW5kbGVET01FdmVudHNcIiwgaGFuZGxlcnMgPT4ge1xuICAgICAgICBsZXQgaGFuZGxlciA9IGhhbmRsZXJzW2V2ZW50LnR5cGVdO1xuICAgICAgICByZXR1cm4gaGFuZGxlciA/IGhhbmRsZXIodmlldywgZXZlbnQpIHx8IGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgOiBmYWxzZTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGV2ZW50QmVsb25nc1RvVmlldyh2aWV3LCBldmVudCkge1xuICAgIGlmICghZXZlbnQuYnViYmxlcylcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBub2RlID0gZXZlbnQudGFyZ2V0OyBub2RlICE9IHZpZXcuZG9tOyBub2RlID0gbm9kZS5wYXJlbnROb2RlKVxuICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5ub2RlVHlwZSA9PSAxMSB8fFxuICAgICAgICAgICAgKG5vZGUucG1WaWV3RGVzYyAmJiBub2RlLnBtVmlld0Rlc2Muc3RvcEV2ZW50KGV2ZW50KSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KHZpZXcsIGV2ZW50KSB7XG4gICAgaWYgKCFydW5DdXN0b21IYW5kbGVyKHZpZXcsIGV2ZW50KSAmJiBoYW5kbGVyc1tldmVudC50eXBlXSAmJlxuICAgICAgICAodmlldy5lZGl0YWJsZSB8fCAhKGV2ZW50LnR5cGUgaW4gZWRpdEhhbmRsZXJzKSkpXG4gICAgICAgIGhhbmRsZXJzW2V2ZW50LnR5cGVdKHZpZXcsIGV2ZW50KTtcbn1cbmVkaXRIYW5kbGVycy5rZXlkb3duID0gKHZpZXcsIF9ldmVudCkgPT4ge1xuICAgIGxldCBldmVudCA9IF9ldmVudDtcbiAgICB2aWV3LmlucHV0LnNoaWZ0S2V5ID0gZXZlbnQua2V5Q29kZSA9PSAxNiB8fCBldmVudC5zaGlmdEtleTtcbiAgICBpZiAoaW5Pck5lYXJDb21wb3NpdGlvbih2aWV3LCBldmVudCkpXG4gICAgICAgIHJldHVybjtcbiAgICB2aWV3LmlucHV0Lmxhc3RLZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICB2aWV3LmlucHV0Lmxhc3RLZXlDb2RlVGltZSA9IERhdGUubm93KCk7XG4gICAgLy8gU3VwcHJlc3MgZW50ZXIga2V5IGV2ZW50cyBvbiBDaHJvbWUgQW5kcm9pZCwgYmVjYXVzZSB0aG9zZSB0ZW5kXG4gICAgLy8gdG8gYmUgcGFydCBvZiBhIGNvbmZ1c2VkIHNlcXVlbmNlIG9mIGNvbXBvc2l0aW9uIGV2ZW50cyBmaXJlZCxcbiAgICAvLyBhbmQgaGFuZGxpbmcgdGhlbSBlYWdlcmx5IHRlbmRzIHRvIGNvcnJ1cHQgdGhlIGlucHV0LlxuICAgIGlmIChhbmRyb2lkICYmIGNocm9tZSAmJiBldmVudC5rZXlDb2RlID09IDEzKVxuICAgICAgICByZXR1cm47XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgIT0gMjI5KVxuICAgICAgICB2aWV3LmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKTtcbiAgICAvLyBPbiBpT1MsIGlmIHdlIHByZXZlbnREZWZhdWx0IGVudGVyIGtleSBwcmVzc2VzLCB0aGUgdmlydHVhbFxuICAgIC8vIGtleWJvYXJkIGdldHMgY29uZnVzZWQuIFNvIHRoZSBoYWNrIGhlcmUgaXMgdG8gc2V0IGEgZmxhZyB0aGF0XG4gICAgLy8gbWFrZXMgdGhlIERPTSBjaGFuZ2UgY29kZSByZWNvZ25pemUgdGhhdCB3aGF0IGp1c3QgaGFwcGVucyBzaG91bGRcbiAgICAvLyBiZSByZXBsYWNlZCBieSB3aGF0ZXZlciB0aGUgRW50ZXIga2V5IGhhbmRsZXJzIGRvLlxuICAgIGlmIChpb3MgJiYgZXZlbnQua2V5Q29kZSA9PSAxMyAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYWx0S2V5ICYmICFldmVudC5tZXRhS2V5KSB7XG4gICAgICAgIGxldCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICB2aWV3LmlucHV0Lmxhc3RJT1NFbnRlciA9IG5vdztcbiAgICAgICAgdmlldy5pbnB1dC5sYXN0SU9TRW50ZXJGYWxsYmFja1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh2aWV3LmlucHV0Lmxhc3RJT1NFbnRlciA9PSBub3cpIHtcbiAgICAgICAgICAgICAgICB2aWV3LnNvbWVQcm9wKFwiaGFuZGxlS2V5RG93blwiLCBmID0+IGYodmlldywga2V5RXZlbnQoMTMsIFwiRW50ZXJcIikpKTtcbiAgICAgICAgICAgICAgICB2aWV3LmlucHV0Lmxhc3RJT1NFbnRlciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHZpZXcuc29tZVByb3AoXCJoYW5kbGVLZXlEb3duXCIsIGYgPT4gZih2aWV3LCBldmVudCkpIHx8IGNhcHR1cmVLZXlEb3duKHZpZXcsIGV2ZW50KSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc2V0U2VsZWN0aW9uT3JpZ2luKHZpZXcsIFwia2V5XCIpO1xuICAgIH1cbn07XG5lZGl0SGFuZGxlcnMua2V5dXAgPSAodmlldywgZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAxNilcbiAgICAgICAgdmlldy5pbnB1dC5zaGlmdEtleSA9IGZhbHNlO1xufTtcbmVkaXRIYW5kbGVycy5rZXlwcmVzcyA9ICh2aWV3LCBfZXZlbnQpID0+IHtcbiAgICBsZXQgZXZlbnQgPSBfZXZlbnQ7XG4gICAgaWYgKGluT3JOZWFyQ29tcG9zaXRpb24odmlldywgZXZlbnQpIHx8ICFldmVudC5jaGFyQ29kZSB8fFxuICAgICAgICBldmVudC5jdHJsS2V5ICYmICFldmVudC5hbHRLZXkgfHwgbWFjICYmIGV2ZW50Lm1ldGFLZXkpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAodmlldy5zb21lUHJvcChcImhhbmRsZUtleVByZXNzXCIsIGYgPT4gZih2aWV3LCBldmVudCkpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHNlbCA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuICAgIGlmICghKHNlbCBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24pIHx8ICFzZWwuJGZyb20uc2FtZVBhcmVudChzZWwuJHRvKSkge1xuICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpO1xuICAgICAgICBsZXQgZGVmbHQgPSAoKSA9PiB2aWV3LnN0YXRlLnRyLmluc2VydFRleHQodGV4dCkuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgaWYgKCEvW1xcclxcbl0vLnRlc3QodGV4dCkgJiYgIXZpZXcuc29tZVByb3AoXCJoYW5kbGVUZXh0SW5wdXRcIiwgZiA9PiBmKHZpZXcsIHNlbC4kZnJvbS5wb3MsIHNlbC4kdG8ucG9zLCB0ZXh0LCBkZWZsdCkpKVxuICAgICAgICAgICAgdmlldy5kaXNwYXRjaChkZWZsdCgpKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG59O1xuZnVuY3Rpb24gZXZlbnRDb29yZHMoZXZlbnQpIHsgcmV0dXJuIHsgbGVmdDogZXZlbnQuY2xpZW50WCwgdG9wOiBldmVudC5jbGllbnRZIH07IH1cbmZ1bmN0aW9uIGlzTmVhcihldmVudCwgY2xpY2spIHtcbiAgICBsZXQgZHggPSBjbGljay54IC0gZXZlbnQuY2xpZW50WCwgZHkgPSBjbGljay55IC0gZXZlbnQuY2xpZW50WTtcbiAgICByZXR1cm4gZHggKiBkeCArIGR5ICogZHkgPCAxMDA7XG59XG5mdW5jdGlvbiBydW5IYW5kbGVyT25Db250ZXh0KHZpZXcsIHByb3BOYW1lLCBwb3MsIGluc2lkZSwgZXZlbnQpIHtcbiAgICBpZiAoaW5zaWRlID09IC0xKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0ICRwb3MgPSB2aWV3LnN0YXRlLmRvYy5yZXNvbHZlKGluc2lkZSk7XG4gICAgZm9yIChsZXQgaSA9ICRwb3MuZGVwdGggKyAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGlmICh2aWV3LnNvbWVQcm9wKHByb3BOYW1lLCBmID0+IGkgPiAkcG9zLmRlcHRoID8gZih2aWV3LCBwb3MsICRwb3Mubm9kZUFmdGVyLCAkcG9zLmJlZm9yZShpKSwgZXZlbnQsIHRydWUpXG4gICAgICAgICAgICA6IGYodmlldywgcG9zLCAkcG9zLm5vZGUoaSksICRwb3MuYmVmb3JlKGkpLCBldmVudCwgZmFsc2UpKSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiB1cGRhdGVTZWxlY3Rpb24odmlldywgc2VsZWN0aW9uLCBvcmlnaW4pIHtcbiAgICBpZiAoIXZpZXcuZm9jdXNlZClcbiAgICAgICAgdmlldy5mb2N1cygpO1xuICAgIGlmICh2aWV3LnN0YXRlLnNlbGVjdGlvbi5lcShzZWxlY3Rpb24pKVxuICAgICAgICByZXR1cm47XG4gICAgbGV0IHRyID0gdmlldy5zdGF0ZS50ci5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTtcbiAgICBpZiAob3JpZ2luID09IFwicG9pbnRlclwiKVxuICAgICAgICB0ci5zZXRNZXRhKFwicG9pbnRlclwiLCB0cnVlKTtcbiAgICB2aWV3LmRpc3BhdGNoKHRyKTtcbn1cbmZ1bmN0aW9uIHNlbGVjdENsaWNrZWRMZWFmKHZpZXcsIGluc2lkZSkge1xuICAgIGlmIChpbnNpZGUgPT0gLTEpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgJHBvcyA9IHZpZXcuc3RhdGUuZG9jLnJlc29sdmUoaW5zaWRlKSwgbm9kZSA9ICRwb3Mubm9kZUFmdGVyO1xuICAgIGlmIChub2RlICYmIG5vZGUuaXNBdG9tICYmIE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKG5vZGUpKSB7XG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbih2aWV3LCBuZXcgTm9kZVNlbGVjdGlvbigkcG9zKSwgXCJwb2ludGVyXCIpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gc2VsZWN0Q2xpY2tlZE5vZGUodmlldywgaW5zaWRlKSB7XG4gICAgaWYgKGluc2lkZSA9PSAtMSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGxldCBzZWwgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbiwgc2VsZWN0ZWROb2RlLCBzZWxlY3RBdDtcbiAgICBpZiAoc2VsIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbilcbiAgICAgICAgc2VsZWN0ZWROb2RlID0gc2VsLm5vZGU7XG4gICAgbGV0ICRwb3MgPSB2aWV3LnN0YXRlLmRvYy5yZXNvbHZlKGluc2lkZSk7XG4gICAgZm9yIChsZXQgaSA9ICRwb3MuZGVwdGggKyAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGxldCBub2RlID0gaSA+ICRwb3MuZGVwdGggPyAkcG9zLm5vZGVBZnRlciA6ICRwb3Mubm9kZShpKTtcbiAgICAgICAgaWYgKE5vZGVTZWxlY3Rpb24uaXNTZWxlY3RhYmxlKG5vZGUpKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWROb2RlICYmIHNlbC4kZnJvbS5kZXB0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICBpID49IHNlbC4kZnJvbS5kZXB0aCAmJiAkcG9zLmJlZm9yZShzZWwuJGZyb20uZGVwdGggKyAxKSA9PSBzZWwuJGZyb20ucG9zKVxuICAgICAgICAgICAgICAgIHNlbGVjdEF0ID0gJHBvcy5iZWZvcmUoc2VsLiRmcm9tLmRlcHRoKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBzZWxlY3RBdCA9ICRwb3MuYmVmb3JlKGkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNlbGVjdEF0ICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9uKHZpZXcsIE5vZGVTZWxlY3Rpb24uY3JlYXRlKHZpZXcuc3RhdGUuZG9jLCBzZWxlY3RBdCksIFwicG9pbnRlclwiKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaGFuZGxlU2luZ2xlQ2xpY2sodmlldywgcG9zLCBpbnNpZGUsIGV2ZW50LCBzZWxlY3ROb2RlKSB7XG4gICAgcmV0dXJuIHJ1bkhhbmRsZXJPbkNvbnRleHQodmlldywgXCJoYW5kbGVDbGlja09uXCIsIHBvcywgaW5zaWRlLCBldmVudCkgfHxcbiAgICAgICAgdmlldy5zb21lUHJvcChcImhhbmRsZUNsaWNrXCIsIGYgPT4gZih2aWV3LCBwb3MsIGV2ZW50KSkgfHxcbiAgICAgICAgKHNlbGVjdE5vZGUgPyBzZWxlY3RDbGlja2VkTm9kZSh2aWV3LCBpbnNpZGUpIDogc2VsZWN0Q2xpY2tlZExlYWYodmlldywgaW5zaWRlKSk7XG59XG5mdW5jdGlvbiBoYW5kbGVEb3VibGVDbGljayh2aWV3LCBwb3MsIGluc2lkZSwgZXZlbnQpIHtcbiAgICByZXR1cm4gcnVuSGFuZGxlck9uQ29udGV4dCh2aWV3LCBcImhhbmRsZURvdWJsZUNsaWNrT25cIiwgcG9zLCBpbnNpZGUsIGV2ZW50KSB8fFxuICAgICAgICB2aWV3LnNvbWVQcm9wKFwiaGFuZGxlRG91YmxlQ2xpY2tcIiwgZiA9PiBmKHZpZXcsIHBvcywgZXZlbnQpKTtcbn1cbmZ1bmN0aW9uIGhhbmRsZVRyaXBsZUNsaWNrKHZpZXcsIHBvcywgaW5zaWRlLCBldmVudCkge1xuICAgIHJldHVybiBydW5IYW5kbGVyT25Db250ZXh0KHZpZXcsIFwiaGFuZGxlVHJpcGxlQ2xpY2tPblwiLCBwb3MsIGluc2lkZSwgZXZlbnQpIHx8XG4gICAgICAgIHZpZXcuc29tZVByb3AoXCJoYW5kbGVUcmlwbGVDbGlja1wiLCBmID0+IGYodmlldywgcG9zLCBldmVudCkpIHx8XG4gICAgICAgIGRlZmF1bHRUcmlwbGVDbGljayh2aWV3LCBpbnNpZGUsIGV2ZW50KTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRUcmlwbGVDbGljayh2aWV3LCBpbnNpZGUsIGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmJ1dHRvbiAhPSAwKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0IGRvYyA9IHZpZXcuc3RhdGUuZG9jO1xuICAgIGlmIChpbnNpZGUgPT0gLTEpIHtcbiAgICAgICAgaWYgKGRvYy5pbmxpbmVDb250ZW50KSB7XG4gICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb24odmlldywgVGV4dFNlbGVjdGlvbi5jcmVhdGUoZG9jLCAwLCBkb2MuY29udGVudC5zaXplKSwgXCJwb2ludGVyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgJHBvcyA9IGRvYy5yZXNvbHZlKGluc2lkZSk7XG4gICAgZm9yIChsZXQgaSA9ICRwb3MuZGVwdGggKyAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGxldCBub2RlID0gaSA+ICRwb3MuZGVwdGggPyAkcG9zLm5vZGVBZnRlciA6ICRwb3Mubm9kZShpKTtcbiAgICAgICAgbGV0IG5vZGVQb3MgPSAkcG9zLmJlZm9yZShpKTtcbiAgICAgICAgaWYgKG5vZGUuaW5saW5lQ29udGVudClcbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbih2aWV3LCBUZXh0U2VsZWN0aW9uLmNyZWF0ZShkb2MsIG5vZGVQb3MgKyAxLCBub2RlUG9zICsgMSArIG5vZGUuY29udGVudC5zaXplKSwgXCJwb2ludGVyXCIpO1xuICAgICAgICBlbHNlIGlmIChOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShub2RlKSlcbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbih2aWV3LCBOb2RlU2VsZWN0aW9uLmNyZWF0ZShkb2MsIG5vZGVQb3MpLCBcInBvaW50ZXJcIik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5mdW5jdGlvbiBmb3JjZURPTUZsdXNoKHZpZXcpIHtcbiAgICByZXR1cm4gZW5kQ29tcG9zaXRpb24odmlldyk7XG59XG5jb25zdCBzZWxlY3ROb2RlTW9kaWZpZXIgPSBtYWMgPyBcIm1ldGFLZXlcIiA6IFwiY3RybEtleVwiO1xuaGFuZGxlcnMubW91c2Vkb3duID0gKHZpZXcsIF9ldmVudCkgPT4ge1xuICAgIGxldCBldmVudCA9IF9ldmVudDtcbiAgICB2aWV3LmlucHV0LnNoaWZ0S2V5ID0gZXZlbnQuc2hpZnRLZXk7XG4gICAgbGV0IGZsdXNoZWQgPSBmb3JjZURPTUZsdXNoKHZpZXcpO1xuICAgIGxldCBub3cgPSBEYXRlLm5vdygpLCB0eXBlID0gXCJzaW5nbGVDbGlja1wiO1xuICAgIGlmIChub3cgLSB2aWV3LmlucHV0Lmxhc3RDbGljay50aW1lIDwgNTAwICYmIGlzTmVhcihldmVudCwgdmlldy5pbnB1dC5sYXN0Q2xpY2spICYmICFldmVudFtzZWxlY3ROb2RlTW9kaWZpZXJdICYmXG4gICAgICAgIHZpZXcuaW5wdXQubGFzdENsaWNrLmJ1dHRvbiA9PSBldmVudC5idXR0b24pIHtcbiAgICAgICAgaWYgKHZpZXcuaW5wdXQubGFzdENsaWNrLnR5cGUgPT0gXCJzaW5nbGVDbGlja1wiKVxuICAgICAgICAgICAgdHlwZSA9IFwiZG91YmxlQ2xpY2tcIjtcbiAgICAgICAgZWxzZSBpZiAodmlldy5pbnB1dC5sYXN0Q2xpY2sudHlwZSA9PSBcImRvdWJsZUNsaWNrXCIpXG4gICAgICAgICAgICB0eXBlID0gXCJ0cmlwbGVDbGlja1wiO1xuICAgIH1cbiAgICB2aWV3LmlucHV0Lmxhc3RDbGljayA9IHsgdGltZTogbm93LCB4OiBldmVudC5jbGllbnRYLCB5OiBldmVudC5jbGllbnRZLCB0eXBlLCBidXR0b246IGV2ZW50LmJ1dHRvbiB9O1xuICAgIGxldCBwb3MgPSB2aWV3LnBvc0F0Q29vcmRzKGV2ZW50Q29vcmRzKGV2ZW50KSk7XG4gICAgaWYgKCFwb3MpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAodHlwZSA9PSBcInNpbmdsZUNsaWNrXCIpIHtcbiAgICAgICAgaWYgKHZpZXcuaW5wdXQubW91c2VEb3duKVxuICAgICAgICAgICAgdmlldy5pbnB1dC5tb3VzZURvd24uZG9uZSgpO1xuICAgICAgICB2aWV3LmlucHV0Lm1vdXNlRG93biA9IG5ldyBNb3VzZURvd24odmlldywgcG9zLCBldmVudCwgISFmbHVzaGVkKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKHR5cGUgPT0gXCJkb3VibGVDbGlja1wiID8gaGFuZGxlRG91YmxlQ2xpY2sgOiBoYW5kbGVUcmlwbGVDbGljaykodmlldywgcG9zLnBvcywgcG9zLmluc2lkZSwgZXZlbnQpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzZXRTZWxlY3Rpb25PcmlnaW4odmlldywgXCJwb2ludGVyXCIpO1xuICAgIH1cbn07XG5jbGFzcyBNb3VzZURvd24ge1xuICAgIGNvbnN0cnVjdG9yKHZpZXcsIHBvcywgZXZlbnQsIGZsdXNoZWQpIHtcbiAgICAgICAgdGhpcy52aWV3ID0gdmlldztcbiAgICAgICAgdGhpcy5wb3MgPSBwb3M7XG4gICAgICAgIHRoaXMuZXZlbnQgPSBldmVudDtcbiAgICAgICAgdGhpcy5mbHVzaGVkID0gZmx1c2hlZDtcbiAgICAgICAgdGhpcy5kZWxheWVkU2VsZWN0aW9uU3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1pZ2h0RHJhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhcnREb2MgPSB2aWV3LnN0YXRlLmRvYztcbiAgICAgICAgdGhpcy5zZWxlY3ROb2RlID0gISFldmVudFtzZWxlY3ROb2RlTW9kaWZpZXJdO1xuICAgICAgICB0aGlzLmFsbG93RGVmYXVsdCA9IGV2ZW50LnNoaWZ0S2V5O1xuICAgICAgICBsZXQgdGFyZ2V0Tm9kZSwgdGFyZ2V0UG9zO1xuICAgICAgICBpZiAocG9zLmluc2lkZSA+IC0xKSB7XG4gICAgICAgICAgICB0YXJnZXROb2RlID0gdmlldy5zdGF0ZS5kb2Mubm9kZUF0KHBvcy5pbnNpZGUpO1xuICAgICAgICAgICAgdGFyZ2V0UG9zID0gcG9zLmluc2lkZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCAkcG9zID0gdmlldy5zdGF0ZS5kb2MucmVzb2x2ZShwb3MucG9zKTtcbiAgICAgICAgICAgIHRhcmdldE5vZGUgPSAkcG9zLnBhcmVudDtcbiAgICAgICAgICAgIHRhcmdldFBvcyA9ICRwb3MuZGVwdGggPyAkcG9zLmJlZm9yZSgpIDogMDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YXJnZXQgPSBmbHVzaGVkID8gbnVsbCA6IGV2ZW50LnRhcmdldDtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGVzYyA9IHRhcmdldCA/IHZpZXcuZG9jVmlldy5uZWFyZXN0RGVzYyh0YXJnZXQsIHRydWUpIDogbnVsbDtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXREZXNjICYmIHRhcmdldERlc2Mubm9kZURPTS5ub2RlVHlwZSA9PSAxID8gdGFyZ2V0RGVzYy5ub2RlRE9NIDogbnVsbDtcbiAgICAgICAgbGV0IHsgc2VsZWN0aW9uIH0gPSB2aWV3LnN0YXRlO1xuICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09IDAgJiZcbiAgICAgICAgICAgIHRhcmdldE5vZGUudHlwZS5zcGVjLmRyYWdnYWJsZSAmJiB0YXJnZXROb2RlLnR5cGUuc3BlYy5zZWxlY3RhYmxlICE9PSBmYWxzZSB8fFxuICAgICAgICAgICAgc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiAmJiBzZWxlY3Rpb24uZnJvbSA8PSB0YXJnZXRQb3MgJiYgc2VsZWN0aW9uLnRvID4gdGFyZ2V0UG9zKVxuICAgICAgICAgICAgdGhpcy5taWdodERyYWcgPSB7XG4gICAgICAgICAgICAgICAgbm9kZTogdGFyZ2V0Tm9kZSxcbiAgICAgICAgICAgICAgICBwb3M6IHRhcmdldFBvcyxcbiAgICAgICAgICAgICAgICBhZGRBdHRyOiAhISh0aGlzLnRhcmdldCAmJiAhdGhpcy50YXJnZXQuZHJhZ2dhYmxlKSxcbiAgICAgICAgICAgICAgICBzZXRVbmVkaXRhYmxlOiAhISh0aGlzLnRhcmdldCAmJiBnZWNrbyAmJiAhdGhpcy50YXJnZXQuaGFzQXR0cmlidXRlKFwiY29udGVudEVkaXRhYmxlXCIpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0ICYmIHRoaXMubWlnaHREcmFnICYmICh0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyIHx8IHRoaXMubWlnaHREcmFnLnNldFVuZWRpdGFibGUpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXcuZG9tT2JzZXJ2ZXIuc3RvcCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMubWlnaHREcmFnLmFkZEF0dHIpXG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuZHJhZ2dhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1pZ2h0RHJhZy5zZXRVbmVkaXRhYmxlKVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3LmlucHV0Lm1vdXNlRG93biA9PSB0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuc2V0QXR0cmlidXRlKFwiY29udGVudEVkaXRhYmxlXCIsIFwiZmFsc2VcIik7XG4gICAgICAgICAgICAgICAgfSwgMjApO1xuICAgICAgICAgICAgdGhpcy52aWV3LmRvbU9ic2VydmVyLnN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmlldy5yb290LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMudXAgPSB0aGlzLnVwLmJpbmQodGhpcykpO1xuICAgICAgICB2aWV3LnJvb3QuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm1vdmUgPSB0aGlzLm1vdmUuYmluZCh0aGlzKSk7XG4gICAgICAgIHNldFNlbGVjdGlvbk9yaWdpbih2aWV3LCBcInBvaW50ZXJcIik7XG4gICAgfVxuICAgIGRvbmUoKSB7XG4gICAgICAgIHRoaXMudmlldy5yb290LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMudXApO1xuICAgICAgICB0aGlzLnZpZXcucm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMubW92ZSk7XG4gICAgICAgIGlmICh0aGlzLm1pZ2h0RHJhZyAmJiB0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy52aWV3LmRvbU9ic2VydmVyLnN0b3AoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1pZ2h0RHJhZy5hZGRBdHRyKVxuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZShcImRyYWdnYWJsZVwiKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1pZ2h0RHJhZy5zZXRVbmVkaXRhYmxlKVxuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZShcImNvbnRlbnRFZGl0YWJsZVwiKTtcbiAgICAgICAgICAgIHRoaXMudmlldy5kb21PYnNlcnZlci5zdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlbGF5ZWRTZWxlY3Rpb25TeW5jKVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzZWxlY3Rpb25Ub0RPTSh0aGlzLnZpZXcpKTtcbiAgICAgICAgdGhpcy52aWV3LmlucHV0Lm1vdXNlRG93biA9IG51bGw7XG4gICAgfVxuICAgIHVwKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZG9uZSgpO1xuICAgICAgICBpZiAoIXRoaXMudmlldy5kb20uY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHBvcyA9IHRoaXMucG9zO1xuICAgICAgICBpZiAodGhpcy52aWV3LnN0YXRlLmRvYyAhPSB0aGlzLnN0YXJ0RG9jKVxuICAgICAgICAgICAgcG9zID0gdGhpcy52aWV3LnBvc0F0Q29vcmRzKGV2ZW50Q29vcmRzKGV2ZW50KSk7XG4gICAgICAgIHRoaXMudXBkYXRlQWxsb3dEZWZhdWx0KGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWZhdWx0IHx8ICFwb3MpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGlvbk9yaWdpbih0aGlzLnZpZXcsIFwicG9pbnRlclwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChoYW5kbGVTaW5nbGVDbGljayh0aGlzLnZpZXcsIHBvcy5wb3MsIHBvcy5pbnNpZGUsIGV2ZW50LCB0aGlzLnNlbGVjdE5vZGUpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV2ZW50LmJ1dHRvbiA9PSAwICYmXG4gICAgICAgICAgICAodGhpcy5mbHVzaGVkIHx8XG4gICAgICAgICAgICAgICAgLy8gU2FmYXJpIGlnbm9yZXMgY2xpY2tzIG9uIGRyYWdnYWJsZSBlbGVtZW50c1xuICAgICAgICAgICAgICAgIChzYWZhcmkgJiYgdGhpcy5taWdodERyYWcgJiYgIXRoaXMubWlnaHREcmFnLm5vZGUuaXNBdG9tKSB8fFxuICAgICAgICAgICAgICAgIC8vIENocm9tZSB3aWxsIHNvbWV0aW1lcyB0cmVhdCBhIG5vZGUgc2VsZWN0aW9uIGFzIGFcbiAgICAgICAgICAgICAgICAvLyBjdXJzb3IsIGJ1dCBzdGlsbCByZXBvcnQgdGhhdCB0aGUgbm9kZSBpcyBzZWxlY3RlZFxuICAgICAgICAgICAgICAgIC8vIHdoZW4gYXNrZWQgdGhyb3VnaCBnZXRTZWxlY3Rpb24uIFlvdSdsbCB0aGVuIGdldCBhXG4gICAgICAgICAgICAgICAgLy8gc2l0dWF0aW9uIHdoZXJlIGNsaWNraW5nIGF0IHRoZSBwb2ludCB3aGVyZSB0aGF0XG4gICAgICAgICAgICAgICAgLy8gKGhpZGRlbikgY3Vyc29yIGlzIGRvZXNuJ3QgY2hhbmdlIHRoZSBzZWxlY3Rpb24sIGFuZFxuICAgICAgICAgICAgICAgIC8vIHRodXMgZG9lc24ndCBnZXQgYSByZWFjdGlvbiBmcm9tIFByb3NlTWlycm9yLiBUaGlzXG4gICAgICAgICAgICAgICAgLy8gd29ya3MgYXJvdW5kIHRoYXQuXG4gICAgICAgICAgICAgICAgKGNocm9tZSAmJiAhdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi52aXNpYmxlICYmXG4gICAgICAgICAgICAgICAgICAgIE1hdGgubWluKE1hdGguYWJzKHBvcy5wb3MgLSB0aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLmZyb20pLCBNYXRoLmFicyhwb3MucG9zIC0gdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi50bykpIDw9IDIpKSkge1xuICAgICAgICAgICAgdXBkYXRlU2VsZWN0aW9uKHRoaXMudmlldywgU2VsZWN0aW9uLm5lYXIodGhpcy52aWV3LnN0YXRlLmRvYy5yZXNvbHZlKHBvcy5wb3MpKSwgXCJwb2ludGVyXCIpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGlvbk9yaWdpbih0aGlzLnZpZXcsIFwicG9pbnRlclwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBtb3ZlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMudXBkYXRlQWxsb3dEZWZhdWx0KGV2ZW50KTtcbiAgICAgICAgc2V0U2VsZWN0aW9uT3JpZ2luKHRoaXMudmlldywgXCJwb2ludGVyXCIpO1xuICAgICAgICBpZiAoZXZlbnQuYnV0dG9ucyA9PSAwKVxuICAgICAgICAgICAgdGhpcy5kb25lKCk7XG4gICAgfVxuICAgIHVwZGF0ZUFsbG93RGVmYXVsdChldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuYWxsb3dEZWZhdWx0ICYmIChNYXRoLmFicyh0aGlzLmV2ZW50LnggLSBldmVudC5jbGllbnRYKSA+IDQgfHxcbiAgICAgICAgICAgIE1hdGguYWJzKHRoaXMuZXZlbnQueSAtIGV2ZW50LmNsaWVudFkpID4gNCkpXG4gICAgICAgICAgICB0aGlzLmFsbG93RGVmYXVsdCA9IHRydWU7XG4gICAgfVxufVxuaGFuZGxlcnMudG91Y2hzdGFydCA9IHZpZXcgPT4ge1xuICAgIHZpZXcuaW5wdXQubGFzdFRvdWNoID0gRGF0ZS5ub3coKTtcbiAgICBmb3JjZURPTUZsdXNoKHZpZXcpO1xuICAgIHNldFNlbGVjdGlvbk9yaWdpbih2aWV3LCBcInBvaW50ZXJcIik7XG59O1xuaGFuZGxlcnMudG91Y2htb3ZlID0gdmlldyA9PiB7XG4gICAgdmlldy5pbnB1dC5sYXN0VG91Y2ggPSBEYXRlLm5vdygpO1xuICAgIHNldFNlbGVjdGlvbk9yaWdpbih2aWV3LCBcInBvaW50ZXJcIik7XG59O1xuaGFuZGxlcnMuY29udGV4dG1lbnUgPSB2aWV3ID0+IGZvcmNlRE9NRmx1c2godmlldyk7XG5mdW5jdGlvbiBpbk9yTmVhckNvbXBvc2l0aW9uKHZpZXcsIGV2ZW50KSB7XG4gICAgaWYgKHZpZXcuY29tcG9zaW5nKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAvLyBTZWUgaHR0cHM6Ly93d3cuc3R1bS5kZS8yMDE2LzA2LzI0L2hhbmRsaW5nLWltZS1ldmVudHMtaW4tamF2YXNjcmlwdC8uXG4gICAgLy8gT24gSmFwYW5lc2UgaW5wdXQgbWV0aG9kIGVkaXRvcnMgKElNRXMpLCB0aGUgRW50ZXIga2V5IGlzIHVzZWQgdG8gY29uZmlybSBjaGFyYWN0ZXJcbiAgICAvLyBzZWxlY3Rpb24uIE9uIFNhZmFyaSwgd2hlbiBFbnRlciBpcyBwcmVzc2VkLCBjb21wb3NpdGlvbmVuZCBhbmQga2V5ZG93biBldmVudHMgYXJlXG4gICAgLy8gZW1pdHRlZC4gVGhlIGtleWRvd24gZXZlbnQgdHJpZ2dlcnMgbmV3bGluZSBpbnNlcnRpb24sIHdoaWNoIHdlIGRvbid0IHdhbnQuXG4gICAgLy8gVGhpcyBtZXRob2QgcmV0dXJucyB0cnVlIGlmIHRoZSBrZXlkb3duIGV2ZW50IHNob3VsZCBiZSBpZ25vcmVkLlxuICAgIC8vIFdlIG9ubHkgaWdub3JlIGl0IG9uY2UsIGFzIHByZXNzaW5nIEVudGVyIGEgc2Vjb25kIHRpbWUgKnNob3VsZCogaW5zZXJ0IGEgbmV3bGluZS5cbiAgICAvLyBGdXJ0aGVybW9yZSwgdGhlIGtleWRvd24gZXZlbnQgdGltZXN0YW1wIG11c3QgYmUgY2xvc2UgdG8gdGhlIGNvbXBvc2l0aW9uRW5kZWRBdCB0aW1lc3RhbXAuXG4gICAgLy8gVGhpcyBndWFyZHMgYWdhaW5zdCB0aGUgY2FzZSB3aGVyZSBjb21wb3NpdGlvbmVuZCBpcyB0cmlnZ2VyZWQgd2l0aG91dCB0aGUga2V5Ym9hcmRcbiAgICAvLyAoZS5nLiBjaGFyYWN0ZXIgY29uZmlybWF0aW9uIG1heSBiZSBkb25lIHdpdGggdGhlIG1vdXNlKSwgYW5kIGtleWRvd24gaXMgdHJpZ2dlcmVkXG4gICAgLy8gYWZ0ZXJ3YXJkcy0gd2Ugd291bGRuJ3Qgd2FudCB0byBpZ25vcmUgdGhlIGtleWRvd24gZXZlbnQgaW4gdGhpcyBjYXNlLlxuICAgIGlmIChzYWZhcmkgJiYgTWF0aC5hYnMoZXZlbnQudGltZVN0YW1wIC0gdmlldy5pbnB1dC5jb21wb3NpdGlvbkVuZGVkQXQpIDwgNTAwKSB7XG4gICAgICAgIHZpZXcuaW5wdXQuY29tcG9zaXRpb25FbmRlZEF0ID0gLTJlODtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8vIERyb3AgYWN0aXZlIGNvbXBvc2l0aW9uIGFmdGVyIDUgc2Vjb25kcyBvZiBpbmFjdGl2aXR5IG9uIEFuZHJvaWRcbmNvbnN0IHRpbWVvdXRDb21wb3NpdGlvbiA9IGFuZHJvaWQgPyA1MDAwIDogLTE7XG5lZGl0SGFuZGxlcnMuY29tcG9zaXRpb25zdGFydCA9IGVkaXRIYW5kbGVycy5jb21wb3NpdGlvbnVwZGF0ZSA9IHZpZXcgPT4ge1xuICAgIGlmICghdmlldy5jb21wb3NpbmcpIHtcbiAgICAgICAgdmlldy5kb21PYnNlcnZlci5mbHVzaCgpO1xuICAgICAgICBsZXQgeyBzdGF0ZSB9ID0gdmlldywgJHBvcyA9IHN0YXRlLnNlbGVjdGlvbi4kdG87XG4gICAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uICYmXG4gICAgICAgICAgICAoc3RhdGUuc3RvcmVkTWFya3MgfHxcbiAgICAgICAgICAgICAgICAoISRwb3MudGV4dE9mZnNldCAmJiAkcG9zLnBhcmVudE9mZnNldCAmJiAkcG9zLm5vZGVCZWZvcmUubWFya3Muc29tZShtID0+IG0udHlwZS5zcGVjLmluY2x1c2l2ZSA9PT0gZmFsc2UpKSB8fFxuICAgICAgICAgICAgICAgIGNocm9tZSAmJiB3aW5kb3dzICYmIHNlbGVjdGlvbkJlZm9yZVVuZWRpdGFibGUodmlldykpKSB7IC8vIElzc3VlICMxNTAwXG4gICAgICAgICAgICAvLyBOZWVkIHRvIHdyYXAgdGhlIGN1cnNvciBpbiBtYXJrIG5vZGVzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmVzIGluIHRoZSBET00gY29udGV4dFxuICAgICAgICAgICAgdmlldy5tYXJrQ3Vyc29yID0gdmlldy5zdGF0ZS5zdG9yZWRNYXJrcyB8fCAkcG9zLm1hcmtzKCk7XG4gICAgICAgICAgICBlbmRDb21wb3NpdGlvbih2aWV3LCB0cnVlKTtcbiAgICAgICAgICAgIHZpZXcubWFya0N1cnNvciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbmRDb21wb3NpdGlvbih2aWV3LCAhc3RhdGUuc2VsZWN0aW9uLmVtcHR5KTtcbiAgICAgICAgICAgIC8vIEluIGZpcmVmb3gsIGlmIHRoZSBjdXJzb3IgaXMgYWZ0ZXIgYnV0IG91dHNpZGUgYSBtYXJrZWQgbm9kZSxcbiAgICAgICAgICAgIC8vIHRoZSBpbnNlcnRlZCB0ZXh0IHdvbid0IGluaGVyaXQgdGhlIG1hcmtzLiBTbyB0aGlzIG1vdmVzIGl0XG4gICAgICAgICAgICAvLyBpbnNpZGUgaWYgbmVjZXNzYXJ5LlxuICAgICAgICAgICAgaWYgKGdlY2tvICYmIHN0YXRlLnNlbGVjdGlvbi5lbXB0eSAmJiAkcG9zLnBhcmVudE9mZnNldCAmJiAhJHBvcy50ZXh0T2Zmc2V0ICYmICRwb3Mubm9kZUJlZm9yZS5tYXJrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsID0gdmlldy5kb21TZWxlY3Rpb25SYW5nZSgpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IG5vZGUgPSBzZWwuZm9jdXNOb2RlLCBvZmZzZXQgPSBzZWwuZm9jdXNPZmZzZXQ7IG5vZGUgJiYgbm9kZS5ub2RlVHlwZSA9PSAxICYmIG9mZnNldCAhPSAwOykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID0gb2Zmc2V0IDwgMCA/IG5vZGUubGFzdENoaWxkIDogbm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmVmb3JlLm5vZGVUeXBlID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWwgPSB2aWV3LmRvbVNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWwuY29sbGFwc2UoYmVmb3JlLCBiZWZvcmUubm9kZVZhbHVlLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBiZWZvcmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2aWV3LmlucHV0LmNvbXBvc2luZyA9IHRydWU7XG4gICAgfVxuICAgIHNjaGVkdWxlQ29tcG9zZUVuZCh2aWV3LCB0aW1lb3V0Q29tcG9zaXRpb24pO1xufTtcbmZ1bmN0aW9uIHNlbGVjdGlvbkJlZm9yZVVuZWRpdGFibGUodmlldykge1xuICAgIGxldCB7IGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQgfSA9IHZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBpZiAoIWZvY3VzTm9kZSB8fCBmb2N1c05vZGUubm9kZVR5cGUgIT0gMSB8fCBmb2N1c09mZnNldCA+PSBmb2N1c05vZGUuY2hpbGROb2Rlcy5sZW5ndGgpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgbmV4dCA9IGZvY3VzTm9kZS5jaGlsZE5vZGVzW2ZvY3VzT2Zmc2V0XTtcbiAgICByZXR1cm4gbmV4dC5ub2RlVHlwZSA9PSAxICYmIG5leHQuY29udGVudEVkaXRhYmxlID09IFwiZmFsc2VcIjtcbn1cbmVkaXRIYW5kbGVycy5jb21wb3NpdGlvbmVuZCA9ICh2aWV3LCBldmVudCkgPT4ge1xuICAgIGlmICh2aWV3LmNvbXBvc2luZykge1xuICAgICAgICB2aWV3LmlucHV0LmNvbXBvc2luZyA9IGZhbHNlO1xuICAgICAgICB2aWV3LmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdCA9IGV2ZW50LnRpbWVTdGFtcDtcbiAgICAgICAgdmlldy5pbnB1dC5jb21wb3NpdGlvblBlbmRpbmdDaGFuZ2VzID0gdmlldy5kb21PYnNlcnZlci5wZW5kaW5nUmVjb3JkcygpLmxlbmd0aCA/IHZpZXcuaW5wdXQuY29tcG9zaXRpb25JRCA6IDA7XG4gICAgICAgIHZpZXcuaW5wdXQuY29tcG9zaXRpb25Ob2RlID0gbnVsbDtcbiAgICAgICAgaWYgKHZpZXcuaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb24pXG4gICAgICAgICAgICB2aWV3LmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKTtcbiAgICAgICAgZWxzZSBpZiAodmlldy5pbnB1dC5jb21wb3NpdGlvblBlbmRpbmdDaGFuZ2VzKVxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB2aWV3LmRvbU9ic2VydmVyLmZsdXNoKCkpO1xuICAgICAgICB2aWV3LmlucHV0LmNvbXBvc2l0aW9uSUQrKztcbiAgICAgICAgc2NoZWR1bGVDb21wb3NlRW5kKHZpZXcsIDIwKTtcbiAgICB9XG59O1xuZnVuY3Rpb24gc2NoZWR1bGVDb21wb3NlRW5kKHZpZXcsIGRlbGF5KSB7XG4gICAgY2xlYXJUaW1lb3V0KHZpZXcuaW5wdXQuY29tcG9zaW5nVGltZW91dCk7XG4gICAgaWYgKGRlbGF5ID4gLTEpXG4gICAgICAgIHZpZXcuaW5wdXQuY29tcG9zaW5nVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gZW5kQ29tcG9zaXRpb24odmlldyksIGRlbGF5KTtcbn1cbmZ1bmN0aW9uIGNsZWFyQ29tcG9zaXRpb24odmlldykge1xuICAgIGlmICh2aWV3LmNvbXBvc2luZykge1xuICAgICAgICB2aWV3LmlucHV0LmNvbXBvc2luZyA9IGZhbHNlO1xuICAgICAgICB2aWV3LmlucHV0LmNvbXBvc2l0aW9uRW5kZWRBdCA9IHRpbWVzdGFtcEZyb21DdXN0b21FdmVudCgpO1xuICAgIH1cbiAgICB3aGlsZSAodmlldy5pbnB1dC5jb21wb3NpdGlvbk5vZGVzLmxlbmd0aCA+IDApXG4gICAgICAgIHZpZXcuaW5wdXQuY29tcG9zaXRpb25Ob2Rlcy5wb3AoKS5tYXJrUGFyZW50c0RpcnR5KCk7XG59XG5mdW5jdGlvbiBmaW5kQ29tcG9zaXRpb25Ob2RlKHZpZXcpIHtcbiAgICBsZXQgc2VsID0gdmlldy5kb21TZWxlY3Rpb25SYW5nZSgpO1xuICAgIGlmICghc2VsLmZvY3VzTm9kZSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgbGV0IHRleHRCZWZvcmUgPSB0ZXh0Tm9kZUJlZm9yZSQxKHNlbC5mb2N1c05vZGUsIHNlbC5mb2N1c09mZnNldCk7XG4gICAgbGV0IHRleHRBZnRlciA9IHRleHROb2RlQWZ0ZXIkMShzZWwuZm9jdXNOb2RlLCBzZWwuZm9jdXNPZmZzZXQpO1xuICAgIGlmICh0ZXh0QmVmb3JlICYmIHRleHRBZnRlciAmJiB0ZXh0QmVmb3JlICE9IHRleHRBZnRlcikge1xuICAgICAgICBsZXQgZGVzY0FmdGVyID0gdGV4dEFmdGVyLnBtVmlld0Rlc2MsIGxhc3RDaGFuZ2VkID0gdmlldy5kb21PYnNlcnZlci5sYXN0Q2hhbmdlZFRleHROb2RlO1xuICAgICAgICBpZiAodGV4dEJlZm9yZSA9PSBsYXN0Q2hhbmdlZCB8fCB0ZXh0QWZ0ZXIgPT0gbGFzdENoYW5nZWQpXG4gICAgICAgICAgICByZXR1cm4gbGFzdENoYW5nZWQ7XG4gICAgICAgIGlmICghZGVzY0FmdGVyIHx8ICFkZXNjQWZ0ZXIuaXNUZXh0KHRleHRBZnRlci5ub2RlVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGV4dEFmdGVyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZpZXcuaW5wdXQuY29tcG9zaXRpb25Ob2RlID09IHRleHRBZnRlcikge1xuICAgICAgICAgICAgbGV0IGRlc2NCZWZvcmUgPSB0ZXh0QmVmb3JlLnBtVmlld0Rlc2M7XG4gICAgICAgICAgICBpZiAoISghZGVzY0JlZm9yZSB8fCAhZGVzY0JlZm9yZS5pc1RleHQodGV4dEJlZm9yZS5ub2RlVmFsdWUpKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dEFmdGVyO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0ZXh0QmVmb3JlIHx8IHRleHRBZnRlcjtcbn1cbmZ1bmN0aW9uIHRpbWVzdGFtcEZyb21DdXN0b21FdmVudCgpIHtcbiAgICBsZXQgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xuICAgIGV2ZW50LmluaXRFdmVudChcImV2ZW50XCIsIHRydWUsIHRydWUpO1xuICAgIHJldHVybiBldmVudC50aW1lU3RhbXA7XG59XG4vKipcbkBpbnRlcm5hbFxuKi9cbmZ1bmN0aW9uIGVuZENvbXBvc2l0aW9uKHZpZXcsIHJlc3RhcnRpbmcgPSBmYWxzZSkge1xuICAgIGlmIChhbmRyb2lkICYmIHZpZXcuZG9tT2JzZXJ2ZXIuZmx1c2hpbmdTb29uID49IDApXG4gICAgICAgIHJldHVybjtcbiAgICB2aWV3LmRvbU9ic2VydmVyLmZvcmNlRmx1c2goKTtcbiAgICBjbGVhckNvbXBvc2l0aW9uKHZpZXcpO1xuICAgIGlmIChyZXN0YXJ0aW5nIHx8IHZpZXcuZG9jVmlldyAmJiB2aWV3LmRvY1ZpZXcuZGlydHkpIHtcbiAgICAgICAgbGV0IHNlbCA9IHNlbGVjdGlvbkZyb21ET00odmlldyksIGN1ciA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICBpZiAoc2VsICYmICFzZWwuZXEoY3VyKSlcbiAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2godmlldy5zdGF0ZS50ci5zZXRTZWxlY3Rpb24oc2VsKSk7XG4gICAgICAgIGVsc2UgaWYgKCh2aWV3Lm1hcmtDdXJzb3IgfHwgcmVzdGFydGluZykgJiYgIWN1ci4kZnJvbS5ub2RlKGN1ci4kZnJvbS5zaGFyZWREZXB0aChjdXIudG8pKS5pbmxpbmVDb250ZW50KVxuICAgICAgICAgICAgdmlldy5kaXNwYXRjaCh2aWV3LnN0YXRlLnRyLmRlbGV0ZVNlbGVjdGlvbigpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdmlldy51cGRhdGVTdGF0ZSh2aWV3LnN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGNhcHR1cmVDb3B5KHZpZXcsIGRvbSkge1xuICAgIC8vIFRoZSBleHRyYSB3cmFwcGVyIGlzIHNvbWVob3cgbmVjZXNzYXJ5IG9uIElFL0VkZ2UgdG8gcHJldmVudCB0aGVcbiAgICAvLyBjb250ZW50IGZyb20gYmVpbmcgbWFuZ2xlZCB3aGVuIGl0IGlzIHB1dCBvbnRvIHRoZSBjbGlwYm9hcmRcbiAgICBpZiAoIXZpZXcuZG9tLnBhcmVudE5vZGUpXG4gICAgICAgIHJldHVybjtcbiAgICBsZXQgd3JhcCA9IHZpZXcuZG9tLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSk7XG4gICAgd3JhcC5hcHBlbmRDaGlsZChkb20pO1xuICAgIHdyYXAuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyBsZWZ0OiAtMTAwMDBweDsgdG9wOiAxMHB4XCI7XG4gICAgbGV0IHNlbCA9IGdldFNlbGVjdGlvbigpLCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGRvbSk7XG4gICAgLy8gRG9uZSBiZWNhdXNlIElFIHdpbGwgZmlyZSBhIHNlbGVjdGlvbmNoYW5nZSBtb3ZpbmcgdGhlIHNlbGVjdGlvblxuICAgIC8vIHRvIGl0cyBzdGFydCB3aGVuIHJlbW92ZUFsbFJhbmdlcyBpcyBjYWxsZWQgYW5kIHRoZSBlZGl0b3Igc3RpbGxcbiAgICAvLyBoYXMgZm9jdXMgKHdoaWNoIHdpbGwgbWVzcyB1cCB0aGUgZWRpdG9yJ3Mgc2VsZWN0aW9uIHN0YXRlKS5cbiAgICB2aWV3LmRvbS5ibHVyKCk7XG4gICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh3cmFwLnBhcmVudE5vZGUpXG4gICAgICAgICAgICB3cmFwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQod3JhcCk7XG4gICAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICB9LCA1MCk7XG59XG4vLyBUaGlzIGlzIHZlcnkgY3J1ZGUsIGJ1dCB1bmZvcnR1bmF0ZWx5IGJvdGggdGhlc2UgYnJvd3NlcnMgX3ByZXRlbmRfXG4vLyB0aGF0IHRoZXkgaGF2ZSBhIGNsaXBib2FyZCBBUEnigJRhbGwgdGhlIG9iamVjdHMgYW5kIG1ldGhvZHMgYXJlXG4vLyB0aGVyZSwgdGhleSBqdXN0IGRvbid0IHdvcmssIGFuZCB0aGV5IGFyZSBoYXJkIHRvIHRlc3QuXG5jb25zdCBicm9rZW5DbGlwYm9hcmRBUEkgPSAoaWUgJiYgaWVfdmVyc2lvbiA8IDE1KSB8fFxuICAgIChpb3MgJiYgd2Via2l0X3ZlcnNpb24gPCA2MDQpO1xuaGFuZGxlcnMuY29weSA9IGVkaXRIYW5kbGVycy5jdXQgPSAodmlldywgX2V2ZW50KSA9PiB7XG4gICAgbGV0IGV2ZW50ID0gX2V2ZW50O1xuICAgIGxldCBzZWwgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbiwgY3V0ID0gZXZlbnQudHlwZSA9PSBcImN1dFwiO1xuICAgIGlmIChzZWwuZW1wdHkpXG4gICAgICAgIHJldHVybjtcbiAgICAvLyBJRSBhbmQgRWRnZSdzIGNsaXBib2FyZCBpbnRlcmZhY2UgaXMgY29tcGxldGVseSBicm9rZW5cbiAgICBsZXQgZGF0YSA9IGJyb2tlbkNsaXBib2FyZEFQSSA/IG51bGwgOiBldmVudC5jbGlwYm9hcmREYXRhO1xuICAgIGxldCBzbGljZSA9IHNlbC5jb250ZW50KCksIHsgZG9tLCB0ZXh0IH0gPSBzZXJpYWxpemVGb3JDbGlwYm9hcmQodmlldywgc2xpY2UpO1xuICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRhdGEuY2xlYXJEYXRhKCk7XG4gICAgICAgIGRhdGEuc2V0RGF0YShcInRleHQvaHRtbFwiLCBkb20uaW5uZXJIVE1MKTtcbiAgICAgICAgZGF0YS5zZXREYXRhKFwidGV4dC9wbGFpblwiLCB0ZXh0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNhcHR1cmVDb3B5KHZpZXcsIGRvbSk7XG4gICAgfVxuICAgIGlmIChjdXQpXG4gICAgICAgIHZpZXcuZGlzcGF0Y2godmlldy5zdGF0ZS50ci5kZWxldGVTZWxlY3Rpb24oKS5zY3JvbGxJbnRvVmlldygpLnNldE1ldGEoXCJ1aUV2ZW50XCIsIFwiY3V0XCIpKTtcbn07XG5mdW5jdGlvbiBzbGljZVNpbmdsZU5vZGUoc2xpY2UpIHtcbiAgICByZXR1cm4gc2xpY2Uub3BlblN0YXJ0ID09IDAgJiYgc2xpY2Uub3BlbkVuZCA9PSAwICYmIHNsaWNlLmNvbnRlbnQuY2hpbGRDb3VudCA9PSAxID8gc2xpY2UuY29udGVudC5maXJzdENoaWxkIDogbnVsbDtcbn1cbmZ1bmN0aW9uIGNhcHR1cmVQYXN0ZSh2aWV3LCBldmVudCkge1xuICAgIGlmICghdmlldy5kb20ucGFyZW50Tm9kZSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGxldCBwbGFpblRleHQgPSB2aWV3LmlucHV0LnNoaWZ0S2V5IHx8IHZpZXcuc3RhdGUuc2VsZWN0aW9uLiRmcm9tLnBhcmVudC50eXBlLnNwZWMuY29kZTtcbiAgICBsZXQgdGFyZ2V0ID0gdmlldy5kb20ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KHBsYWluVGV4dCA/IFwidGV4dGFyZWFcIiA6IFwiZGl2XCIpKTtcbiAgICBpZiAoIXBsYWluVGV4dClcbiAgICAgICAgdGFyZ2V0LmNvbnRlbnRFZGl0YWJsZSA9IFwidHJ1ZVwiO1xuICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IC0xMDAwMHB4OyB0b3A6IDEwcHhcIjtcbiAgICB0YXJnZXQuZm9jdXMoKTtcbiAgICBsZXQgcGxhaW4gPSB2aWV3LmlucHV0LnNoaWZ0S2V5ICYmIHZpZXcuaW5wdXQubGFzdEtleUNvZGUgIT0gNDU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICAgICAgaWYgKHRhcmdldC5wYXJlbnROb2RlKVxuICAgICAgICAgICAgdGFyZ2V0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGFyZ2V0KTtcbiAgICAgICAgaWYgKHBsYWluVGV4dClcbiAgICAgICAgICAgIGRvUGFzdGUodmlldywgdGFyZ2V0LnZhbHVlLCBudWxsLCBwbGFpbiwgZXZlbnQpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBkb1Bhc3RlKHZpZXcsIHRhcmdldC50ZXh0Q29udGVudCwgdGFyZ2V0LmlubmVySFRNTCwgcGxhaW4sIGV2ZW50KTtcbiAgICB9LCA1MCk7XG59XG5mdW5jdGlvbiBkb1Bhc3RlKHZpZXcsIHRleHQsIGh0bWwsIHByZWZlclBsYWluLCBldmVudCkge1xuICAgIGxldCBzbGljZSA9IHBhcnNlRnJvbUNsaXBib2FyZCh2aWV3LCB0ZXh0LCBodG1sLCBwcmVmZXJQbGFpbiwgdmlldy5zdGF0ZS5zZWxlY3Rpb24uJGZyb20pO1xuICAgIGlmICh2aWV3LnNvbWVQcm9wKFwiaGFuZGxlUGFzdGVcIiwgZiA9PiBmKHZpZXcsIGV2ZW50LCBzbGljZSB8fCBTbGljZS5lbXB0eSkpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIXNsaWNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHNpbmdsZU5vZGUgPSBzbGljZVNpbmdsZU5vZGUoc2xpY2UpO1xuICAgIGxldCB0ciA9IHNpbmdsZU5vZGVcbiAgICAgICAgPyB2aWV3LnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKHNpbmdsZU5vZGUsIHByZWZlclBsYWluKVxuICAgICAgICA6IHZpZXcuc3RhdGUudHIucmVwbGFjZVNlbGVjdGlvbihzbGljZSk7XG4gICAgdmlldy5kaXNwYXRjaCh0ci5zY3JvbGxJbnRvVmlldygpLnNldE1ldGEoXCJwYXN0ZVwiLCB0cnVlKS5zZXRNZXRhKFwidWlFdmVudFwiLCBcInBhc3RlXCIpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGdldFRleHQoY2xpcGJvYXJkRGF0YSkge1xuICAgIGxldCB0ZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwidGV4dC9wbGFpblwiKSB8fCBjbGlwYm9hcmREYXRhLmdldERhdGEoXCJUZXh0XCIpO1xuICAgIGlmICh0ZXh0KVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICBsZXQgdXJpcyA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvdXJpLWxpc3RcIik7XG4gICAgcmV0dXJuIHVyaXMgPyB1cmlzLnJlcGxhY2UoL1xccj9cXG4vZywgXCIgXCIpIDogXCJcIjtcbn1cbmVkaXRIYW5kbGVycy5wYXN0ZSA9ICh2aWV3LCBfZXZlbnQpID0+IHtcbiAgICBsZXQgZXZlbnQgPSBfZXZlbnQ7XG4gICAgLy8gSGFuZGxpbmcgcGFzdGUgZnJvbSBKYXZhU2NyaXB0IGR1cmluZyBjb21wb3NpdGlvbiBpcyB2ZXJ5IHBvb3JseVxuICAgIC8vIGhhbmRsZWQgYnkgYnJvd3NlcnMsIHNvIGFzIGEgZG9kZ3kgYnV0IHByZWZlcmFibGUga2x1ZGdlLCB3ZSBqdXN0XG4gICAgLy8gbGV0IHRoZSBicm93c2VyIGRvIGl0cyBuYXRpdmUgdGhpbmcgdGhlcmUsIGV4Y2VwdCBvbiBBbmRyb2lkLFxuICAgIC8vIHdoZXJlIHRoZSBlZGl0b3IgaXMgYWxtb3N0IGFsd2F5cyBjb21wb3NpbmcuXG4gICAgaWYgKHZpZXcuY29tcG9zaW5nICYmICFhbmRyb2lkKVxuICAgICAgICByZXR1cm47XG4gICAgbGV0IGRhdGEgPSBicm9rZW5DbGlwYm9hcmRBUEkgPyBudWxsIDogZXZlbnQuY2xpcGJvYXJkRGF0YTtcbiAgICBsZXQgcGxhaW4gPSB2aWV3LmlucHV0LnNoaWZ0S2V5ICYmIHZpZXcuaW5wdXQubGFzdEtleUNvZGUgIT0gNDU7XG4gICAgaWYgKGRhdGEgJiYgZG9QYXN0ZSh2aWV3LCBnZXRUZXh0KGRhdGEpLCBkYXRhLmdldERhdGEoXCJ0ZXh0L2h0bWxcIiksIHBsYWluLCBldmVudCkpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZWxzZVxuICAgICAgICBjYXB0dXJlUGFzdGUodmlldywgZXZlbnQpO1xufTtcbmNsYXNzIERyYWdnaW5nIHtcbiAgICBjb25zdHJ1Y3RvcihzbGljZSwgbW92ZSwgbm9kZSkge1xuICAgICAgICB0aGlzLnNsaWNlID0gc2xpY2U7XG4gICAgICAgIHRoaXMubW92ZSA9IG1vdmU7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgfVxufVxuY29uc3QgZHJhZ0NvcHlNb2RpZmllciA9IG1hYyA/IFwiYWx0S2V5XCIgOiBcImN0cmxLZXlcIjtcbmZ1bmN0aW9uIGRyYWdNb3Zlcyh2aWV3LCBldmVudCkge1xuICAgIGxldCBtb3ZlcyA9IHZpZXcuc29tZVByb3AoXCJkcmFnQ29waWVzXCIsIHRlc3QgPT4gIXRlc3QoZXZlbnQpKTtcbiAgICByZXR1cm4gbW92ZXMgIT0gbnVsbCA/IG1vdmVzIDogIWV2ZW50W2RyYWdDb3B5TW9kaWZpZXJdO1xufVxuaGFuZGxlcnMuZHJhZ3N0YXJ0ID0gKHZpZXcsIF9ldmVudCkgPT4ge1xuICAgIGxldCBldmVudCA9IF9ldmVudDtcbiAgICBsZXQgbW91c2VEb3duID0gdmlldy5pbnB1dC5tb3VzZURvd247XG4gICAgaWYgKG1vdXNlRG93bilcbiAgICAgICAgbW91c2VEb3duLmRvbmUoKTtcbiAgICBpZiAoIWV2ZW50LmRhdGFUcmFuc2ZlcilcbiAgICAgICAgcmV0dXJuO1xuICAgIGxldCBzZWwgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcbiAgICBsZXQgcG9zID0gc2VsLmVtcHR5ID8gbnVsbCA6IHZpZXcucG9zQXRDb29yZHMoZXZlbnRDb29yZHMoZXZlbnQpKTtcbiAgICBsZXQgbm9kZTtcbiAgICBpZiAocG9zICYmIHBvcy5wb3MgPj0gc2VsLmZyb20gJiYgcG9zLnBvcyA8PSAoc2VsIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiA/IHNlbC50byAtIDEgOiBzZWwudG8pKSA7XG4gICAgZWxzZSBpZiAobW91c2VEb3duICYmIG1vdXNlRG93bi5taWdodERyYWcpIHtcbiAgICAgICAgbm9kZSA9IE5vZGVTZWxlY3Rpb24uY3JlYXRlKHZpZXcuc3RhdGUuZG9jLCBtb3VzZURvd24ubWlnaHREcmFnLnBvcyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQubm9kZVR5cGUgPT0gMSkge1xuICAgICAgICBsZXQgZGVzYyA9IHZpZXcuZG9jVmlldy5uZWFyZXN0RGVzYyhldmVudC50YXJnZXQsIHRydWUpO1xuICAgICAgICBpZiAoZGVzYyAmJiBkZXNjLm5vZGUudHlwZS5zcGVjLmRyYWdnYWJsZSAmJiBkZXNjICE9IHZpZXcuZG9jVmlldylcbiAgICAgICAgICAgIG5vZGUgPSBOb2RlU2VsZWN0aW9uLmNyZWF0ZSh2aWV3LnN0YXRlLmRvYywgZGVzYy5wb3NCZWZvcmUpO1xuICAgIH1cbiAgICBsZXQgZHJhZ2dlZFNsaWNlID0gKG5vZGUgfHwgdmlldy5zdGF0ZS5zZWxlY3Rpb24pLmNvbnRlbnQoKTtcbiAgICBsZXQgeyBkb20sIHRleHQsIHNsaWNlIH0gPSBzZXJpYWxpemVGb3JDbGlwYm9hcmQodmlldywgZHJhZ2dlZFNsaWNlKTtcbiAgICAvLyBQcmUtMTIwIENocm9tZSB2ZXJzaW9ucyBjbGVhciBmaWxlcyB3aGVuIGNhbGxpbmcgYGNsZWFyRGF0YWAgKCMxNDcyKVxuICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCB8fCAhY2hyb21lIHx8IGNocm9tZV92ZXJzaW9uID4gMTIwKVxuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuY2xlYXJEYXRhKCk7XG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoYnJva2VuQ2xpcGJvYXJkQVBJID8gXCJUZXh0XCIgOiBcInRleHQvaHRtbFwiLCBkb20uaW5uZXJIVE1MKTtcbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL1Byb3NlTWlycm9yL3Byb3NlbWlycm9yL2lzc3Vlcy8xMTU2XG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBcImNvcHlNb3ZlXCI7XG4gICAgaWYgKCFicm9rZW5DbGlwYm9hcmRBUEkpXG4gICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9wbGFpblwiLCB0ZXh0KTtcbiAgICB2aWV3LmRyYWdnaW5nID0gbmV3IERyYWdnaW5nKHNsaWNlLCBkcmFnTW92ZXModmlldywgZXZlbnQpLCBub2RlKTtcbn07XG5oYW5kbGVycy5kcmFnZW5kID0gdmlldyA9PiB7XG4gICAgbGV0IGRyYWdnaW5nID0gdmlldy5kcmFnZ2luZztcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh2aWV3LmRyYWdnaW5nID09IGRyYWdnaW5nKVxuICAgICAgICAgICAgdmlldy5kcmFnZ2luZyA9IG51bGw7XG4gICAgfSwgNTApO1xufTtcbmVkaXRIYW5kbGVycy5kcmFnb3ZlciA9IGVkaXRIYW5kbGVycy5kcmFnZW50ZXIgPSAoXywgZSkgPT4gZS5wcmV2ZW50RGVmYXVsdCgpO1xuZWRpdEhhbmRsZXJzLmRyb3AgPSAodmlldywgZXZlbnQpID0+IHtcbiAgICB0cnkge1xuICAgICAgICBoYW5kbGVEcm9wKHZpZXcsIGV2ZW50LCB2aWV3LmRyYWdnaW5nKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHZpZXcuZHJhZ2dpbmcgPSBudWxsO1xuICAgIH1cbn07XG5mdW5jdGlvbiBoYW5kbGVEcm9wKHZpZXcsIGV2ZW50LCBkcmFnZ2luZykge1xuICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyKVxuICAgICAgICByZXR1cm47XG4gICAgbGV0IGV2ZW50UG9zID0gdmlldy5wb3NBdENvb3JkcyhldmVudENvb3JkcyhldmVudCkpO1xuICAgIGlmICghZXZlbnRQb3MpXG4gICAgICAgIHJldHVybjtcbiAgICBsZXQgJG1vdXNlID0gdmlldy5zdGF0ZS5kb2MucmVzb2x2ZShldmVudFBvcy5wb3MpO1xuICAgIGxldCBzbGljZSA9IGRyYWdnaW5nICYmIGRyYWdnaW5nLnNsaWNlO1xuICAgIGlmIChzbGljZSkge1xuICAgICAgICB2aWV3LnNvbWVQcm9wKFwidHJhbnNmb3JtUGFzdGVkXCIsIGYgPT4geyBzbGljZSA9IGYoc2xpY2UsIHZpZXcsIGZhbHNlKTsgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzbGljZSA9IHBhcnNlRnJvbUNsaXBib2FyZCh2aWV3LCBnZXRUZXh0KGV2ZW50LmRhdGFUcmFuc2ZlciksIGJyb2tlbkNsaXBib2FyZEFQSSA/IG51bGwgOiBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcInRleHQvaHRtbFwiKSwgZmFsc2UsICRtb3VzZSk7XG4gICAgfVxuICAgIGxldCBtb3ZlID0gISEoZHJhZ2dpbmcgJiYgZHJhZ01vdmVzKHZpZXcsIGV2ZW50KSk7XG4gICAgaWYgKHZpZXcuc29tZVByb3AoXCJoYW5kbGVEcm9wXCIsIGYgPT4gZih2aWV3LCBldmVudCwgc2xpY2UgfHwgU2xpY2UuZW1wdHksIG1vdmUpKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghc2xpY2UpXG4gICAgICAgIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGxldCBpbnNlcnRQb3MgPSBzbGljZSA/IGRyb3BQb2ludCh2aWV3LnN0YXRlLmRvYywgJG1vdXNlLnBvcywgc2xpY2UpIDogJG1vdXNlLnBvcztcbiAgICBpZiAoaW5zZXJ0UG9zID09IG51bGwpXG4gICAgICAgIGluc2VydFBvcyA9ICRtb3VzZS5wb3M7XG4gICAgbGV0IHRyID0gdmlldy5zdGF0ZS50cjtcbiAgICBpZiAobW92ZSkge1xuICAgICAgICBsZXQgeyBub2RlIH0gPSBkcmFnZ2luZztcbiAgICAgICAgaWYgKG5vZGUpXG4gICAgICAgICAgICBub2RlLnJlcGxhY2UodHIpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0ci5kZWxldGVTZWxlY3Rpb24oKTtcbiAgICB9XG4gICAgbGV0IHBvcyA9IHRyLm1hcHBpbmcubWFwKGluc2VydFBvcyk7XG4gICAgbGV0IGlzTm9kZSA9IHNsaWNlLm9wZW5TdGFydCA9PSAwICYmIHNsaWNlLm9wZW5FbmQgPT0gMCAmJiBzbGljZS5jb250ZW50LmNoaWxkQ291bnQgPT0gMTtcbiAgICBsZXQgYmVmb3JlSW5zZXJ0ID0gdHIuZG9jO1xuICAgIGlmIChpc05vZGUpXG4gICAgICAgIHRyLnJlcGxhY2VSYW5nZVdpdGgocG9zLCBwb3MsIHNsaWNlLmNvbnRlbnQuZmlyc3RDaGlsZCk7XG4gICAgZWxzZVxuICAgICAgICB0ci5yZXBsYWNlUmFuZ2UocG9zLCBwb3MsIHNsaWNlKTtcbiAgICBpZiAodHIuZG9jLmVxKGJlZm9yZUluc2VydCkpXG4gICAgICAgIHJldHVybjtcbiAgICBsZXQgJHBvcyA9IHRyLmRvYy5yZXNvbHZlKHBvcyk7XG4gICAgaWYgKGlzTm9kZSAmJiBOb2RlU2VsZWN0aW9uLmlzU2VsZWN0YWJsZShzbGljZS5jb250ZW50LmZpcnN0Q2hpbGQpICYmXG4gICAgICAgICRwb3Mubm9kZUFmdGVyICYmICRwb3Mubm9kZUFmdGVyLnNhbWVNYXJrdXAoc2xpY2UuY29udGVudC5maXJzdENoaWxkKSkge1xuICAgICAgICB0ci5zZXRTZWxlY3Rpb24obmV3IE5vZGVTZWxlY3Rpb24oJHBvcykpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbGV0IGVuZCA9IHRyLm1hcHBpbmcubWFwKGluc2VydFBvcyk7XG4gICAgICAgIHRyLm1hcHBpbmcubWFwc1t0ci5tYXBwaW5nLm1hcHMubGVuZ3RoIC0gMV0uZm9yRWFjaCgoX2Zyb20sIF90bywgX25ld0Zyb20sIG5ld1RvKSA9PiBlbmQgPSBuZXdUbyk7XG4gICAgICAgIHRyLnNldFNlbGVjdGlvbihzZWxlY3Rpb25CZXR3ZWVuKHZpZXcsICRwb3MsIHRyLmRvYy5yZXNvbHZlKGVuZCkpKTtcbiAgICB9XG4gICAgdmlldy5mb2N1cygpO1xuICAgIHZpZXcuZGlzcGF0Y2godHIuc2V0TWV0YShcInVpRXZlbnRcIiwgXCJkcm9wXCIpKTtcbn1cbmhhbmRsZXJzLmZvY3VzID0gdmlldyA9PiB7XG4gICAgdmlldy5pbnB1dC5sYXN0Rm9jdXMgPSBEYXRlLm5vdygpO1xuICAgIGlmICghdmlldy5mb2N1c2VkKSB7XG4gICAgICAgIHZpZXcuZG9tT2JzZXJ2ZXIuc3RvcCgpO1xuICAgICAgICB2aWV3LmRvbS5jbGFzc0xpc3QuYWRkKFwiUHJvc2VNaXJyb3ItZm9jdXNlZFwiKTtcbiAgICAgICAgdmlldy5kb21PYnNlcnZlci5zdGFydCgpO1xuICAgICAgICB2aWV3LmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh2aWV3LmRvY1ZpZXcgJiYgdmlldy5oYXNGb2N1cygpICYmICF2aWV3LmRvbU9ic2VydmVyLmN1cnJlbnRTZWxlY3Rpb24uZXEodmlldy5kb21TZWxlY3Rpb25SYW5nZSgpKSlcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Ub0RPTSh2aWV3KTtcbiAgICAgICAgfSwgMjApO1xuICAgIH1cbn07XG5oYW5kbGVycy5ibHVyID0gKHZpZXcsIF9ldmVudCkgPT4ge1xuICAgIGxldCBldmVudCA9IF9ldmVudDtcbiAgICBpZiAodmlldy5mb2N1c2VkKSB7XG4gICAgICAgIHZpZXcuZG9tT2JzZXJ2ZXIuc3RvcCgpO1xuICAgICAgICB2aWV3LmRvbS5jbGFzc0xpc3QucmVtb3ZlKFwiUHJvc2VNaXJyb3ItZm9jdXNlZFwiKTtcbiAgICAgICAgdmlldy5kb21PYnNlcnZlci5zdGFydCgpO1xuICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCAmJiB2aWV3LmRvbS5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSlcbiAgICAgICAgICAgIHZpZXcuZG9tT2JzZXJ2ZXIuY3VycmVudFNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICB2aWV3LmZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG59O1xuaGFuZGxlcnMuYmVmb3JlaW5wdXQgPSAodmlldywgX2V2ZW50KSA9PiB7XG4gICAgbGV0IGV2ZW50ID0gX2V2ZW50O1xuICAgIC8vIFdlIHNob3VsZCBwcm9iYWJseSBkbyBtb3JlIHdpdGggYmVmb3JlaW5wdXQgZXZlbnRzLCBidXQgc3VwcG9ydFxuICAgIC8vIGlzIHNvIHNwb3R0eSB0aGF0IEknbSBzdGlsbCB3YWl0aW5nIHRvIHNlZSB3aGVyZSB0aGV5IGFyZSBnb2luZy5cbiAgICAvLyBWZXJ5IHNwZWNpZmljIGhhY2sgdG8gZGVhbCB3aXRoIGJhY2tzcGFjZSBzb21ldGltZXMgZmFpbGluZyBvblxuICAgIC8vIENocm9tZSBBbmRyb2lkIHdoZW4gYWZ0ZXIgYW4gdW5lZGl0YWJsZSBub2RlLlxuICAgIGlmIChjaHJvbWUgJiYgYW5kcm9pZCAmJiBldmVudC5pbnB1dFR5cGUgPT0gXCJkZWxldGVDb250ZW50QmFja3dhcmRcIikge1xuICAgICAgICB2aWV3LmRvbU9ic2VydmVyLmZsdXNoU29vbigpO1xuICAgICAgICBsZXQgeyBkb21DaGFuZ2VDb3VudCB9ID0gdmlldy5pbnB1dDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodmlldy5pbnB1dC5kb21DaGFuZ2VDb3VudCAhPSBkb21DaGFuZ2VDb3VudClcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIEV2ZW50IGFscmVhZHkgaGFkIHNvbWUgZWZmZWN0XG4gICAgICAgICAgICAvLyBUaGlzIGJ1ZyB0ZW5kcyB0byBjbG9zZSB0aGUgdmlydHVhbCBrZXlib2FyZCwgc28gd2UgcmVmb2N1c1xuICAgICAgICAgICAgdmlldy5kb20uYmx1cigpO1xuICAgICAgICAgICAgdmlldy5mb2N1cygpO1xuICAgICAgICAgICAgaWYgKHZpZXcuc29tZVByb3AoXCJoYW5kbGVLZXlEb3duXCIsIGYgPT4gZih2aWV3LCBrZXlFdmVudCg4LCBcIkJhY2tzcGFjZVwiKSkpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGxldCB7ICRjdXJzb3IgfSA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICAgICAgLy8gQ3J1ZGUgYXBwcm94aW1hdGlvbiBvZiBiYWNrc3BhY2UgYmVoYXZpb3Igd2hlbiBubyBjb21tYW5kIGhhbmRsZWQgaXRcbiAgICAgICAgICAgIGlmICgkY3Vyc29yICYmICRjdXJzb3IucG9zID4gMClcbiAgICAgICAgICAgICAgICB2aWV3LmRpc3BhdGNoKHZpZXcuc3RhdGUudHIuZGVsZXRlKCRjdXJzb3IucG9zIC0gMSwgJGN1cnNvci5wb3MpLnNjcm9sbEludG9WaWV3KCkpO1xuICAgICAgICB9LCA1MCk7XG4gICAgfVxufTtcbi8vIE1ha2Ugc3VyZSBhbGwgaGFuZGxlcnMgZ2V0IHJlZ2lzdGVyZWRcbmZvciAobGV0IHByb3AgaW4gZWRpdEhhbmRsZXJzKVxuICAgIGhhbmRsZXJzW3Byb3BdID0gZWRpdEhhbmRsZXJzW3Byb3BdO1xuXG5mdW5jdGlvbiBjb21wYXJlT2JqcyhhLCBiKSB7XG4gICAgaWYgKGEgPT0gYilcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgZm9yIChsZXQgcCBpbiBhKVxuICAgICAgICBpZiAoYVtwXSAhPT0gYltwXSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBwIGluIGIpXG4gICAgICAgIGlmICghKHAgaW4gYSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG59XG5jbGFzcyBXaWRnZXRUeXBlIHtcbiAgICBjb25zdHJ1Y3Rvcih0b0RPTSwgc3BlYykge1xuICAgICAgICB0aGlzLnRvRE9NID0gdG9ET007XG4gICAgICAgIHRoaXMuc3BlYyA9IHNwZWMgfHwgbm9TcGVjO1xuICAgICAgICB0aGlzLnNpZGUgPSB0aGlzLnNwZWMuc2lkZSB8fCAwO1xuICAgIH1cbiAgICBtYXAobWFwcGluZywgc3Bhbiwgb2Zmc2V0LCBvbGRPZmZzZXQpIHtcbiAgICAgICAgbGV0IHsgcG9zLCBkZWxldGVkIH0gPSBtYXBwaW5nLm1hcFJlc3VsdChzcGFuLmZyb20gKyBvbGRPZmZzZXQsIHRoaXMuc2lkZSA8IDAgPyAtMSA6IDEpO1xuICAgICAgICByZXR1cm4gZGVsZXRlZCA/IG51bGwgOiBuZXcgRGVjb3JhdGlvbihwb3MgLSBvZmZzZXQsIHBvcyAtIG9mZnNldCwgdGhpcyk7XG4gICAgfVxuICAgIHZhbGlkKCkgeyByZXR1cm4gdHJ1ZTsgfVxuICAgIGVxKG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzID09IG90aGVyIHx8XG4gICAgICAgICAgICAob3RoZXIgaW5zdGFuY2VvZiBXaWRnZXRUeXBlICYmXG4gICAgICAgICAgICAgICAgKHRoaXMuc3BlYy5rZXkgJiYgdGhpcy5zcGVjLmtleSA9PSBvdGhlci5zcGVjLmtleSB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvRE9NID09IG90aGVyLnRvRE9NICYmIGNvbXBhcmVPYmpzKHRoaXMuc3BlYywgb3RoZXIuc3BlYykpKTtcbiAgICB9XG4gICAgZGVzdHJveShub2RlKSB7XG4gICAgICAgIGlmICh0aGlzLnNwZWMuZGVzdHJveSlcbiAgICAgICAgICAgIHRoaXMuc3BlYy5kZXN0cm95KG5vZGUpO1xuICAgIH1cbn1cbmNsYXNzIElubGluZVR5cGUge1xuICAgIGNvbnN0cnVjdG9yKGF0dHJzLCBzcGVjKSB7XG4gICAgICAgIHRoaXMuYXR0cnMgPSBhdHRycztcbiAgICAgICAgdGhpcy5zcGVjID0gc3BlYyB8fCBub1NwZWM7XG4gICAgfVxuICAgIG1hcChtYXBwaW5nLCBzcGFuLCBvZmZzZXQsIG9sZE9mZnNldCkge1xuICAgICAgICBsZXQgZnJvbSA9IG1hcHBpbmcubWFwKHNwYW4uZnJvbSArIG9sZE9mZnNldCwgdGhpcy5zcGVjLmluY2x1c2l2ZVN0YXJ0ID8gLTEgOiAxKSAtIG9mZnNldDtcbiAgICAgICAgbGV0IHRvID0gbWFwcGluZy5tYXAoc3Bhbi50byArIG9sZE9mZnNldCwgdGhpcy5zcGVjLmluY2x1c2l2ZUVuZCA/IDEgOiAtMSkgLSBvZmZzZXQ7XG4gICAgICAgIHJldHVybiBmcm9tID49IHRvID8gbnVsbCA6IG5ldyBEZWNvcmF0aW9uKGZyb20sIHRvLCB0aGlzKTtcbiAgICB9XG4gICAgdmFsaWQoXywgc3BhbikgeyByZXR1cm4gc3Bhbi5mcm9tIDwgc3Bhbi50bzsgfVxuICAgIGVxKG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzID09IG90aGVyIHx8XG4gICAgICAgICAgICAob3RoZXIgaW5zdGFuY2VvZiBJbmxpbmVUeXBlICYmIGNvbXBhcmVPYmpzKHRoaXMuYXR0cnMsIG90aGVyLmF0dHJzKSAmJlxuICAgICAgICAgICAgICAgIGNvbXBhcmVPYmpzKHRoaXMuc3BlYywgb3RoZXIuc3BlYykpO1xuICAgIH1cbiAgICBzdGF0aWMgaXMoc3BhbikgeyByZXR1cm4gc3Bhbi50eXBlIGluc3RhbmNlb2YgSW5saW5lVHlwZTsgfVxuICAgIGRlc3Ryb3koKSB7IH1cbn1cbmNsYXNzIE5vZGVUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcihhdHRycywgc3BlYykge1xuICAgICAgICB0aGlzLmF0dHJzID0gYXR0cnM7XG4gICAgICAgIHRoaXMuc3BlYyA9IHNwZWMgfHwgbm9TcGVjO1xuICAgIH1cbiAgICBtYXAobWFwcGluZywgc3Bhbiwgb2Zmc2V0LCBvbGRPZmZzZXQpIHtcbiAgICAgICAgbGV0IGZyb20gPSBtYXBwaW5nLm1hcFJlc3VsdChzcGFuLmZyb20gKyBvbGRPZmZzZXQsIDEpO1xuICAgICAgICBpZiAoZnJvbS5kZWxldGVkKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGxldCB0byA9IG1hcHBpbmcubWFwUmVzdWx0KHNwYW4udG8gKyBvbGRPZmZzZXQsIC0xKTtcbiAgICAgICAgaWYgKHRvLmRlbGV0ZWQgfHwgdG8ucG9zIDw9IGZyb20ucG9zKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBuZXcgRGVjb3JhdGlvbihmcm9tLnBvcyAtIG9mZnNldCwgdG8ucG9zIC0gb2Zmc2V0LCB0aGlzKTtcbiAgICB9XG4gICAgdmFsaWQobm9kZSwgc3Bhbikge1xuICAgICAgICBsZXQgeyBpbmRleCwgb2Zmc2V0IH0gPSBub2RlLmNvbnRlbnQuZmluZEluZGV4KHNwYW4uZnJvbSksIGNoaWxkO1xuICAgICAgICByZXR1cm4gb2Zmc2V0ID09IHNwYW4uZnJvbSAmJiAhKGNoaWxkID0gbm9kZS5jaGlsZChpbmRleCkpLmlzVGV4dCAmJiBvZmZzZXQgKyBjaGlsZC5ub2RlU2l6ZSA9PSBzcGFuLnRvO1xuICAgIH1cbiAgICBlcShvdGhlcikge1xuICAgICAgICByZXR1cm4gdGhpcyA9PSBvdGhlciB8fFxuICAgICAgICAgICAgKG90aGVyIGluc3RhbmNlb2YgTm9kZVR5cGUgJiYgY29tcGFyZU9ianModGhpcy5hdHRycywgb3RoZXIuYXR0cnMpICYmXG4gICAgICAgICAgICAgICAgY29tcGFyZU9ianModGhpcy5zcGVjLCBvdGhlci5zcGVjKSk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7IH1cbn1cbi8qKlxuRGVjb3JhdGlvbiBvYmplY3RzIGNhbiBiZSBwcm92aWRlZCB0byB0aGUgdmlldyB0aHJvdWdoIHRoZVxuW2BkZWNvcmF0aW9uc2AgcHJvcF0oaHR0cHM6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI3ZpZXcuRWRpdG9yUHJvcHMuZGVjb3JhdGlvbnMpLiBUaGV5IGNvbWUgaW5cbnNldmVyYWwgdmFyaWFudHPigJRzZWUgdGhlIHN0YXRpYyBtZW1iZXJzIG9mIHRoaXMgY2xhc3MgZm9yIGRldGFpbHMuXG4qL1xuY2xhc3MgRGVjb3JhdGlvbiB7XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGRlY29yYXRpb24uXG4gICAgKi9cbiAgICBmcm9tLCBcbiAgICAvKipcbiAgICBUaGUgZW5kIHBvc2l0aW9uLiBXaWxsIGJlIHRoZSBzYW1lIGFzIGBmcm9tYCBmb3IgW3dpZGdldFxuICAgIGRlY29yYXRpb25zXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jdmlldy5EZWNvcmF0aW9uXndpZGdldCkuXG4gICAgKi9cbiAgICB0bywgXG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICB0eXBlKSB7XG4gICAgICAgIHRoaXMuZnJvbSA9IGZyb207XG4gICAgICAgIHRoaXMudG8gPSB0bztcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBjb3B5KGZyb20sIHRvKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGVjb3JhdGlvbihmcm9tLCB0bywgdGhpcy50eXBlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBlcShvdGhlciwgb2Zmc2V0ID0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlLmVxKG90aGVyLnR5cGUpICYmIHRoaXMuZnJvbSArIG9mZnNldCA9PSBvdGhlci5mcm9tICYmIHRoaXMudG8gKyBvZmZzZXQgPT0gb3RoZXIudG87XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgbWFwKG1hcHBpbmcsIG9mZnNldCwgb2xkT2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUubWFwKG1hcHBpbmcsIHRoaXMsIG9mZnNldCwgb2xkT2Zmc2V0KTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ3JlYXRlcyBhIHdpZGdldCBkZWNvcmF0aW9uLCB3aGljaCBpcyBhIERPTSBub2RlIHRoYXQncyBzaG93biBpblxuICAgIHRoZSBkb2N1bWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91XG4gICAgZGVsYXkgcmVuZGVyaW5nIHRoZSB3aWRnZXQgYnkgcGFzc2luZyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZVxuICAgIGNhbGxlZCB3aGVuIHRoZSB3aWRnZXQgaXMgYWN0dWFsbHkgZHJhd24gaW4gYSB2aWV3LCBidXQgeW91IGNhblxuICAgIGFsc28gZGlyZWN0bHkgcGFzcyBhIERPTSBub2RlLiBgZ2V0UG9zYCBjYW4gYmUgdXNlZCB0byBmaW5kIHRoZVxuICAgIHdpZGdldCdzIGN1cnJlbnQgZG9jdW1lbnQgcG9zaXRpb24uXG4gICAgKi9cbiAgICBzdGF0aWMgd2lkZ2V0KHBvcywgdG9ET00sIHNwZWMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEZWNvcmF0aW9uKHBvcywgcG9zLCBuZXcgV2lkZ2V0VHlwZSh0b0RPTSwgc3BlYykpO1xuICAgIH1cbiAgICAvKipcbiAgICBDcmVhdGVzIGFuIGlubGluZSBkZWNvcmF0aW9uLCB3aGljaCBhZGRzIHRoZSBnaXZlbiBhdHRyaWJ1dGVzIHRvXG4gICAgZWFjaCBpbmxpbmUgbm9kZSBiZXR3ZWVuIGBmcm9tYCBhbmQgYHRvYC5cbiAgICAqL1xuICAgIHN0YXRpYyBpbmxpbmUoZnJvbSwgdG8sIGF0dHJzLCBzcGVjKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGVjb3JhdGlvbihmcm9tLCB0bywgbmV3IElubGluZVR5cGUoYXR0cnMsIHNwZWMpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQ3JlYXRlcyBhIG5vZGUgZGVjb3JhdGlvbi4gYGZyb21gIGFuZCBgdG9gIHNob3VsZCBwb2ludCBwcmVjaXNlbHlcbiAgICBiZWZvcmUgYW5kIGFmdGVyIGEgbm9kZSBpbiB0aGUgZG9jdW1lbnQuIFRoYXQgbm9kZSwgYW5kIG9ubHkgdGhhdFxuICAgIG5vZGUsIHdpbGwgcmVjZWl2ZSB0aGUgZ2l2ZW4gYXR0cmlidXRlcy5cbiAgICAqL1xuICAgIHN0YXRpYyBub2RlKGZyb20sIHRvLCBhdHRycywgc3BlYykge1xuICAgICAgICByZXR1cm4gbmV3IERlY29yYXRpb24oZnJvbSwgdG8sIG5ldyBOb2RlVHlwZShhdHRycywgc3BlYykpO1xuICAgIH1cbiAgICAvKipcbiAgICBUaGUgc3BlYyBwcm92aWRlZCB3aGVuIGNyZWF0aW5nIHRoaXMgZGVjb3JhdGlvbi4gQ2FuIGJlIHVzZWZ1bFxuICAgIGlmIHlvdSd2ZSBzdG9yZWQgZXh0cmEgaW5mb3JtYXRpb24gaW4gdGhhdCBvYmplY3QuXG4gICAgKi9cbiAgICBnZXQgc3BlYygpIHsgcmV0dXJuIHRoaXMudHlwZS5zcGVjOyB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBnZXQgaW5saW5lKCkgeyByZXR1cm4gdGhpcy50eXBlIGluc3RhbmNlb2YgSW5saW5lVHlwZTsgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgZ2V0IHdpZGdldCgpIHsgcmV0dXJuIHRoaXMudHlwZSBpbnN0YW5jZW9mIFdpZGdldFR5cGU7IH1cbn1cbmNvbnN0IG5vbmUgPSBbXSwgbm9TcGVjID0ge307XG4vKipcbkEgY29sbGVjdGlvbiBvZiBbZGVjb3JhdGlvbnNdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyN2aWV3LkRlY29yYXRpb24pLCBvcmdhbml6ZWQgaW4gc3VjaFxuYSB3YXkgdGhhdCB0aGUgZHJhd2luZyBhbGdvcml0aG0gY2FuIGVmZmljaWVudGx5IHVzZSBhbmQgY29tcGFyZVxudGhlbS4gVGhpcyBpcyBhIHBlcnNpc3RlbnQgZGF0YSBzdHJ1Y3R1cmXigJRpdCBpcyBub3QgbW9kaWZpZWQsXG51cGRhdGVzIGNyZWF0ZSBhIG5ldyB2YWx1ZS5cbiovXG5jbGFzcyBEZWNvcmF0aW9uU2V0IHtcbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGxvY2FsLCBjaGlsZHJlbikge1xuICAgICAgICB0aGlzLmxvY2FsID0gbG9jYWwubGVuZ3RoID8gbG9jYWwgOiBub25lO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4ubGVuZ3RoID8gY2hpbGRyZW4gOiBub25lO1xuICAgIH1cbiAgICAvKipcbiAgICBDcmVhdGUgYSBzZXQgb2YgZGVjb3JhdGlvbnMsIHVzaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGdpdmVuXG4gICAgZG9jdW1lbnQuIFRoaXMgd2lsbCBjb25zdW1lIChtb2RpZnkpIHRoZSBgZGVjb3JhdGlvbnNgIGFycmF5LCBzb1xuICAgIHlvdSBtdXN0IG1ha2UgYSBjb3B5IGlmIHlvdSB3YW50IG5lZWQgdG8gcHJlc2VydmUgdGhhdC5cbiAgICAqL1xuICAgIHN0YXRpYyBjcmVhdGUoZG9jLCBkZWNvcmF0aW9ucykge1xuICAgICAgICByZXR1cm4gZGVjb3JhdGlvbnMubGVuZ3RoID8gYnVpbGRUcmVlKGRlY29yYXRpb25zLCBkb2MsIDAsIG5vU3BlYykgOiBlbXB0eTtcbiAgICB9XG4gICAgLyoqXG4gICAgRmluZCBhbGwgZGVjb3JhdGlvbnMgaW4gdGhpcyBzZXQgd2hpY2ggdG91Y2ggdGhlIGdpdmVuIHJhbmdlXG4gICAgKGluY2x1ZGluZyBkZWNvcmF0aW9ucyB0aGF0IHN0YXJ0IG9yIGVuZCBkaXJlY3RseSBhdCB0aGVcbiAgICBib3VuZGFyaWVzKSBhbmQgbWF0Y2ggdGhlIGdpdmVuIHByZWRpY2F0ZSBvbiB0aGVpciBzcGVjLiBXaGVuXG4gICAgYHN0YXJ0YCBhbmQgYGVuZGAgYXJlIG9taXR0ZWQsIGFsbCBkZWNvcmF0aW9ucyBpbiB0aGUgc2V0IGFyZVxuICAgIGNvbnNpZGVyZWQuIFdoZW4gYHByZWRpY2F0ZWAgaXNuJ3QgZ2l2ZW4sIGFsbCBkZWNvcmF0aW9ucyBhcmVcbiAgICBhc3N1bWVkIHRvIG1hdGNoLlxuICAgICovXG4gICAgZmluZChzdGFydCwgZW5kLCBwcmVkaWNhdGUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICB0aGlzLmZpbmRJbm5lcihzdGFydCA9PSBudWxsID8gMCA6IHN0YXJ0LCBlbmQgPT0gbnVsbCA/IDFlOSA6IGVuZCwgcmVzdWx0LCAwLCBwcmVkaWNhdGUpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmaW5kSW5uZXIoc3RhcnQsIGVuZCwgcmVzdWx0LCBvZmZzZXQsIHByZWRpY2F0ZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubG9jYWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBzcGFuID0gdGhpcy5sb2NhbFtpXTtcbiAgICAgICAgICAgIGlmIChzcGFuLmZyb20gPD0gZW5kICYmIHNwYW4udG8gPj0gc3RhcnQgJiYgKCFwcmVkaWNhdGUgfHwgcHJlZGljYXRlKHNwYW4uc3BlYykpKVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNwYW4uY29weShzcGFuLmZyb20gKyBvZmZzZXQsIHNwYW4udG8gKyBvZmZzZXQpKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldIDwgZW5kICYmIHRoaXMuY2hpbGRyZW5baSArIDFdID4gc3RhcnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGRPZmYgPSB0aGlzLmNoaWxkcmVuW2ldICsgMTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2kgKyAyXS5maW5kSW5uZXIoc3RhcnQgLSBjaGlsZE9mZiwgZW5kIC0gY2hpbGRPZmYsIHJlc3VsdCwgb2Zmc2V0ICsgY2hpbGRPZmYsIHByZWRpY2F0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgTWFwIHRoZSBzZXQgb2YgZGVjb3JhdGlvbnMgaW4gcmVzcG9uc2UgdG8gYSBjaGFuZ2UgaW4gdGhlXG4gICAgZG9jdW1lbnQuXG4gICAgKi9cbiAgICBtYXAobWFwcGluZywgZG9jLCBvcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzID09IGVtcHR5IHx8IG1hcHBpbmcubWFwcy5sZW5ndGggPT0gMClcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBJbm5lcihtYXBwaW5nLCBkb2MsIDAsIDAsIG9wdGlvbnMgfHwgbm9TcGVjKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBtYXBJbm5lcihtYXBwaW5nLCBub2RlLCBvZmZzZXQsIG9sZE9mZnNldCwgb3B0aW9ucykge1xuICAgICAgICBsZXQgbmV3TG9jYWw7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sb2NhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG1hcHBlZCA9IHRoaXMubG9jYWxbaV0ubWFwKG1hcHBpbmcsIG9mZnNldCwgb2xkT2Zmc2V0KTtcbiAgICAgICAgICAgIGlmIChtYXBwZWQgJiYgbWFwcGVkLnR5cGUudmFsaWQobm9kZSwgbWFwcGVkKSlcbiAgICAgICAgICAgICAgICAobmV3TG9jYWwgfHwgKG5ld0xvY2FsID0gW10pKS5wdXNoKG1hcHBlZCk7XG4gICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLm9uUmVtb3ZlKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMub25SZW1vdmUodGhpcy5sb2NhbFtpXS5zcGVjKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gbWFwQ2hpbGRyZW4odGhpcy5jaGlsZHJlbiwgbmV3TG9jYWwgfHwgW10sIG1hcHBpbmcsIG5vZGUsIG9mZnNldCwgb2xkT2Zmc2V0LCBvcHRpb25zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG5ld0xvY2FsID8gbmV3IERlY29yYXRpb25TZXQobmV3TG9jYWwuc29ydChieVBvcyksIG5vbmUpIDogZW1wdHk7XG4gICAgfVxuICAgIC8qKlxuICAgIEFkZCB0aGUgZ2l2ZW4gYXJyYXkgb2YgZGVjb3JhdGlvbnMgdG8gdGhlIG9uZXMgaW4gdGhlIHNldCxcbiAgICBwcm9kdWNpbmcgYSBuZXcgc2V0LiBDb25zdW1lcyB0aGUgYGRlY29yYXRpb25zYCBhcnJheS4gTmVlZHNcbiAgICBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQgdG8gY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB0cmVlXG4gICAgc3RydWN0dXJlLlxuICAgICovXG4gICAgYWRkKGRvYywgZGVjb3JhdGlvbnMpIHtcbiAgICAgICAgaWYgKCFkZWNvcmF0aW9ucy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgaWYgKHRoaXMgPT0gZW1wdHkpXG4gICAgICAgICAgICByZXR1cm4gRGVjb3JhdGlvblNldC5jcmVhdGUoZG9jLCBkZWNvcmF0aW9ucyk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZElubmVyKGRvYywgZGVjb3JhdGlvbnMsIDApO1xuICAgIH1cbiAgICBhZGRJbm5lcihkb2MsIGRlY29yYXRpb25zLCBvZmZzZXQpIHtcbiAgICAgICAgbGV0IGNoaWxkcmVuLCBjaGlsZEluZGV4ID0gMDtcbiAgICAgICAgZG9jLmZvckVhY2goKGNoaWxkTm9kZSwgY2hpbGRPZmZzZXQpID0+IHtcbiAgICAgICAgICAgIGxldCBiYXNlT2Zmc2V0ID0gY2hpbGRPZmZzZXQgKyBvZmZzZXQsIGZvdW5kO1xuICAgICAgICAgICAgaWYgKCEoZm91bmQgPSB0YWtlU3BhbnNGb3JOb2RlKGRlY29yYXRpb25zLCBjaGlsZE5vZGUsIGJhc2VPZmZzZXQpKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBpZiAoIWNoaWxkcmVuKVxuICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5zbGljZSgpO1xuICAgICAgICAgICAgd2hpbGUgKGNoaWxkSW5kZXggPCBjaGlsZHJlbi5sZW5ndGggJiYgY2hpbGRyZW5bY2hpbGRJbmRleF0gPCBjaGlsZE9mZnNldClcbiAgICAgICAgICAgICAgICBjaGlsZEluZGV4ICs9IDM7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5bY2hpbGRJbmRleF0gPT0gY2hpbGRPZmZzZXQpXG4gICAgICAgICAgICAgICAgY2hpbGRyZW5bY2hpbGRJbmRleCArIDJdID0gY2hpbGRyZW5bY2hpbGRJbmRleCArIDJdLmFkZElubmVyKGNoaWxkTm9kZSwgZm91bmQsIGJhc2VPZmZzZXQgKyAxKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoY2hpbGRJbmRleCwgMCwgY2hpbGRPZmZzZXQsIGNoaWxkT2Zmc2V0ICsgY2hpbGROb2RlLm5vZGVTaXplLCBidWlsZFRyZWUoZm91bmQsIGNoaWxkTm9kZSwgYmFzZU9mZnNldCArIDEsIG5vU3BlYykpO1xuICAgICAgICAgICAgY2hpbGRJbmRleCArPSAzO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IGxvY2FsID0gbW92ZVNwYW5zKGNoaWxkSW5kZXggPyB3aXRob3V0TnVsbHMoZGVjb3JhdGlvbnMpIDogZGVjb3JhdGlvbnMsIC1vZmZzZXQpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2FsLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgaWYgKCFsb2NhbFtpXS50eXBlLnZhbGlkKGRvYywgbG9jYWxbaV0pKVxuICAgICAgICAgICAgICAgIGxvY2FsLnNwbGljZShpLS0sIDEpO1xuICAgICAgICByZXR1cm4gbmV3IERlY29yYXRpb25TZXQobG9jYWwubGVuZ3RoID8gdGhpcy5sb2NhbC5jb25jYXQobG9jYWwpLnNvcnQoYnlQb3MpIDogdGhpcy5sb2NhbCwgY2hpbGRyZW4gfHwgdGhpcy5jaGlsZHJlbik7XG4gICAgfVxuICAgIC8qKlxuICAgIENyZWF0ZSBhIG5ldyBzZXQgdGhhdCBjb250YWlucyB0aGUgZGVjb3JhdGlvbnMgaW4gdGhpcyBzZXQsIG1pbnVzXG4gICAgdGhlIG9uZXMgaW4gdGhlIGdpdmVuIGFycmF5LlxuICAgICovXG4gICAgcmVtb3ZlKGRlY29yYXRpb25zKSB7XG4gICAgICAgIGlmIChkZWNvcmF0aW9ucy5sZW5ndGggPT0gMCB8fCB0aGlzID09IGVtcHR5KVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbW92ZUlubmVyKGRlY29yYXRpb25zLCAwKTtcbiAgICB9XG4gICAgcmVtb3ZlSW5uZXIoZGVjb3JhdGlvbnMsIG9mZnNldCkge1xuICAgICAgICBsZXQgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLCBsb2NhbCA9IHRoaXMubG9jYWw7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgIGxldCBmb3VuZDtcbiAgICAgICAgICAgIGxldCBmcm9tID0gY2hpbGRyZW5baV0gKyBvZmZzZXQsIHRvID0gY2hpbGRyZW5baSArIDFdICsgb2Zmc2V0O1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDAsIHNwYW47IGogPCBkZWNvcmF0aW9ucy5sZW5ndGg7IGorKylcbiAgICAgICAgICAgICAgICBpZiAoc3BhbiA9IGRlY29yYXRpb25zW2pdKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzcGFuLmZyb20gPiBmcm9tICYmIHNwYW4udG8gPCB0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnNbal0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGZvdW5kIHx8IChmb3VuZCA9IFtdKSkucHVzaChzcGFuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZm91bmQpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW4gPT0gdGhpcy5jaGlsZHJlbilcbiAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4uc2xpY2UoKTtcbiAgICAgICAgICAgIGxldCByZW1vdmVkID0gY2hpbGRyZW5baSArIDJdLnJlbW92ZUlubmVyKGZvdW5kLCBmcm9tICsgMSk7XG4gICAgICAgICAgICBpZiAocmVtb3ZlZCAhPSBlbXB0eSkge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuW2kgKyAyXSA9IHJlbW92ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaSwgMyk7XG4gICAgICAgICAgICAgICAgaSAtPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbC5sZW5ndGgpXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgc3BhbjsgaSA8IGRlY29yYXRpb25zLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgIGlmIChzcGFuID0gZGVjb3JhdGlvbnNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsb2NhbC5sZW5ndGg7IGorKylcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbFtqXS5lcShzcGFuLCBvZmZzZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsID09IHRoaXMubG9jYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsID0gdGhpcy5sb2NhbC5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsLnNwbGljZShqLS0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkcmVuID09IHRoaXMuY2hpbGRyZW4gJiYgbG9jYWwgPT0gdGhpcy5sb2NhbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICByZXR1cm4gbG9jYWwubGVuZ3RoIHx8IGNoaWxkcmVuLmxlbmd0aCA/IG5ldyBEZWNvcmF0aW9uU2V0KGxvY2FsLCBjaGlsZHJlbikgOiBlbXB0eTtcbiAgICB9XG4gICAgZm9yQ2hpbGQob2Zmc2V0LCBub2RlKSB7XG4gICAgICAgIGlmICh0aGlzID09IGVtcHR5KVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIGlmIChub2RlLmlzTGVhZilcbiAgICAgICAgICAgIHJldHVybiBEZWNvcmF0aW9uU2V0LmVtcHR5O1xuICAgICAgICBsZXQgY2hpbGQsIGxvY2FsO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpICs9IDMpXG4gICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbltpXSA+PSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbltpXSA9PSBvZmZzZXQpXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpICsgMl07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGxldCBzdGFydCA9IG9mZnNldCArIDEsIGVuZCA9IHN0YXJ0ICsgbm9kZS5jb250ZW50LnNpemU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sb2NhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGRlYyA9IHRoaXMubG9jYWxbaV07XG4gICAgICAgICAgICBpZiAoZGVjLmZyb20gPCBlbmQgJiYgZGVjLnRvID4gc3RhcnQgJiYgKGRlYy50eXBlIGluc3RhbmNlb2YgSW5saW5lVHlwZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgZnJvbSA9IE1hdGgubWF4KHN0YXJ0LCBkZWMuZnJvbSkgLSBzdGFydCwgdG8gPSBNYXRoLm1pbihlbmQsIGRlYy50bykgLSBzdGFydDtcbiAgICAgICAgICAgICAgICBpZiAoZnJvbSA8IHRvKVxuICAgICAgICAgICAgICAgICAgICAobG9jYWwgfHwgKGxvY2FsID0gW10pKS5wdXNoKGRlYy5jb3B5KGZyb20sIHRvKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsKSB7XG4gICAgICAgICAgICBsZXQgbG9jYWxTZXQgPSBuZXcgRGVjb3JhdGlvblNldChsb2NhbC5zb3J0KGJ5UG9zKSwgbm9uZSk7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGQgPyBuZXcgRGVjb3JhdGlvbkdyb3VwKFtsb2NhbFNldCwgY2hpbGRdKSA6IGxvY2FsU2V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGlsZCB8fCBlbXB0eTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBlcShvdGhlcikge1xuICAgICAgICBpZiAodGhpcyA9PSBvdGhlcilcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIERlY29yYXRpb25TZXQpIHx8XG4gICAgICAgICAgICB0aGlzLmxvY2FsLmxlbmd0aCAhPSBvdGhlci5sb2NhbC5sZW5ndGggfHxcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4ubGVuZ3RoICE9IG90aGVyLmNoaWxkcmVuLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxvY2FsLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgaWYgKCF0aGlzLmxvY2FsW2ldLmVxKG90aGVyLmxvY2FsW2ldKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgKz0gMylcbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldICE9IG90aGVyLmNoaWxkcmVuW2ldIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpICsgMV0gIT0gb3RoZXIuY2hpbGRyZW5baSArIDFdIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuY2hpbGRyZW5baSArIDJdLmVxKG90aGVyLmNoaWxkcmVuW2kgKyAyXSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBsb2NhbHMobm9kZSkge1xuICAgICAgICByZXR1cm4gcmVtb3ZlT3ZlcmxhcCh0aGlzLmxvY2Fsc0lubmVyKG5vZGUpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBsb2NhbHNJbm5lcihub2RlKSB7XG4gICAgICAgIGlmICh0aGlzID09IGVtcHR5KVxuICAgICAgICAgICAgcmV0dXJuIG5vbmU7XG4gICAgICAgIGlmIChub2RlLmlubGluZUNvbnRlbnQgfHwgIXRoaXMubG9jYWwuc29tZShJbmxpbmVUeXBlLmlzKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsO1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sb2NhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCEodGhpcy5sb2NhbFtpXS50eXBlIGluc3RhbmNlb2YgSW5saW5lVHlwZSkpXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5sb2NhbFtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZm9yRWFjaFNldChmKSB7IGYodGhpcyk7IH1cbn1cbi8qKlxuVGhlIGVtcHR5IHNldCBvZiBkZWNvcmF0aW9ucy5cbiovXG5EZWNvcmF0aW9uU2V0LmVtcHR5ID0gbmV3IERlY29yYXRpb25TZXQoW10sIFtdKTtcbi8qKlxuQGludGVybmFsXG4qL1xuRGVjb3JhdGlvblNldC5yZW1vdmVPdmVybGFwID0gcmVtb3ZlT3ZlcmxhcDtcbmNvbnN0IGVtcHR5ID0gRGVjb3JhdGlvblNldC5lbXB0eTtcbi8vIEFuIGFic3RyYWN0aW9uIHRoYXQgYWxsb3dzIHRoZSBjb2RlIGRlYWxpbmcgd2l0aCBkZWNvcmF0aW9ucyB0b1xuLy8gdHJlYXQgbXVsdGlwbGUgRGVjb3JhdGlvblNldCBvYmplY3RzIGFzIGlmIGl0IHdlcmUgYSBzaW5nbGUgb2JqZWN0XG4vLyB3aXRoIChhIHN1YnNldCBvZikgdGhlIHNhbWUgaW50ZXJmYWNlLlxuY2xhc3MgRGVjb3JhdGlvbkdyb3VwIHtcbiAgICBjb25zdHJ1Y3RvcihtZW1iZXJzKSB7XG4gICAgICAgIHRoaXMubWVtYmVycyA9IG1lbWJlcnM7XG4gICAgfVxuICAgIG1hcChtYXBwaW5nLCBkb2MpIHtcbiAgICAgICAgY29uc3QgbWFwcGVkRGVjb3MgPSB0aGlzLm1lbWJlcnMubWFwKG1lbWJlciA9PiBtZW1iZXIubWFwKG1hcHBpbmcsIGRvYywgbm9TcGVjKSk7XG4gICAgICAgIHJldHVybiBEZWNvcmF0aW9uR3JvdXAuZnJvbShtYXBwZWREZWNvcyk7XG4gICAgfVxuICAgIGZvckNoaWxkKG9mZnNldCwgY2hpbGQpIHtcbiAgICAgICAgaWYgKGNoaWxkLmlzTGVhZilcbiAgICAgICAgICAgIHJldHVybiBEZWNvcmF0aW9uU2V0LmVtcHR5O1xuICAgICAgICBsZXQgZm91bmQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1lbWJlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm1lbWJlcnNbaV0uZm9yQ2hpbGQob2Zmc2V0LCBjaGlsZCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09IGVtcHR5KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIERlY29yYXRpb25Hcm91cClcbiAgICAgICAgICAgICAgICBmb3VuZCA9IGZvdW5kLmNvbmNhdChyZXN1bHQubWVtYmVycyk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZm91bmQucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBEZWNvcmF0aW9uR3JvdXAuZnJvbShmb3VuZCk7XG4gICAgfVxuICAgIGVxKG90aGVyKSB7XG4gICAgICAgIGlmICghKG90aGVyIGluc3RhbmNlb2YgRGVjb3JhdGlvbkdyb3VwKSB8fFxuICAgICAgICAgICAgb3RoZXIubWVtYmVycy5sZW5ndGggIT0gdGhpcy5tZW1iZXJzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1lbWJlcnMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAoIXRoaXMubWVtYmVyc1tpXS5lcShvdGhlci5tZW1iZXJzW2ldKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsb2NhbHMobm9kZSkge1xuICAgICAgICBsZXQgcmVzdWx0LCBzb3J0ZWQgPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWVtYmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGxvY2FscyA9IHRoaXMubWVtYmVyc1tpXS5sb2NhbHNJbm5lcihub2RlKTtcbiAgICAgICAgICAgIGlmICghbG9jYWxzLmxlbmd0aClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gbG9jYWxzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHNvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbG9jYWxzLmxlbmd0aDsgaisrKVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChsb2NhbHNbal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQgPyByZW1vdmVPdmVybGFwKHNvcnRlZCA/IHJlc3VsdCA6IHJlc3VsdC5zb3J0KGJ5UG9zKSkgOiBub25lO1xuICAgIH1cbiAgICAvLyBDcmVhdGUgYSBncm91cCBmb3IgdGhlIGdpdmVuIGFycmF5IG9mIGRlY29yYXRpb24gc2V0cywgb3IgcmV0dXJuXG4gICAgLy8gYSBzaW5nbGUgc2V0IHdoZW4gcG9zc2libGUuXG4gICAgc3RhdGljIGZyb20obWVtYmVycykge1xuICAgICAgICBzd2l0Y2ggKG1lbWJlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IHJldHVybiBlbXB0eTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG1lbWJlcnNbMF07XG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gbmV3IERlY29yYXRpb25Hcm91cChtZW1iZXJzLmV2ZXJ5KG0gPT4gbSBpbnN0YW5jZW9mIERlY29yYXRpb25TZXQpID8gbWVtYmVycyA6XG4gICAgICAgICAgICAgICAgbWVtYmVycy5yZWR1Y2UoKHIsIG0pID0+IHIuY29uY2F0KG0gaW5zdGFuY2VvZiBEZWNvcmF0aW9uU2V0ID8gbSA6IG0ubWVtYmVycyksIFtdKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yRWFjaFNldChmKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tZW1iZXJzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5tZW1iZXJzW2ldLmZvckVhY2hTZXQoZik7XG4gICAgfVxufVxuZnVuY3Rpb24gbWFwQ2hpbGRyZW4ob2xkQ2hpbGRyZW4sIG5ld0xvY2FsLCBtYXBwaW5nLCBub2RlLCBvZmZzZXQsIG9sZE9mZnNldCwgb3B0aW9ucykge1xuICAgIGxldCBjaGlsZHJlbiA9IG9sZENoaWxkcmVuLnNsaWNlKCk7XG4gICAgLy8gTWFyayB0aGUgY2hpbGRyZW4gdGhhdCBhcmUgZGlyZWN0bHkgdG91Y2hlZCBieSBjaGFuZ2VzLCBhbmRcbiAgICAvLyBtb3ZlIHRob3NlIHRoYXQgYXJlIGFmdGVyIHRoZSBjaGFuZ2VzLlxuICAgIGZvciAobGV0IGkgPSAwLCBiYXNlT2Zmc2V0ID0gb2xkT2Zmc2V0OyBpIDwgbWFwcGluZy5tYXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBtb3ZlZCA9IDA7XG4gICAgICAgIG1hcHBpbmcubWFwc1tpXS5mb3JFYWNoKChvbGRTdGFydCwgb2xkRW5kLCBuZXdTdGFydCwgbmV3RW5kKSA9PiB7XG4gICAgICAgICAgICBsZXQgZFNpemUgPSAobmV3RW5kIC0gbmV3U3RhcnQpIC0gKG9sZEVuZCAtIG9sZFN0YXJ0KTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgICAgICBsZXQgZW5kID0gY2hpbGRyZW5baSArIDFdO1xuICAgICAgICAgICAgICAgIGlmIChlbmQgPCAwIHx8IG9sZFN0YXJ0ID4gZW5kICsgYmFzZU9mZnNldCAtIG1vdmVkKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBjaGlsZHJlbltpXSArIGJhc2VPZmZzZXQgLSBtb3ZlZDtcbiAgICAgICAgICAgICAgICBpZiAob2xkRW5kID49IHN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2kgKyAxXSA9IG9sZFN0YXJ0IDw9IHN0YXJ0ID8gLTIgOiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAob2xkU3RhcnQgPj0gYmFzZU9mZnNldCAmJiBkU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXSArPSBkU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5baSArIDFdICs9IGRTaXplO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1vdmVkICs9IGRTaXplO1xuICAgICAgICB9KTtcbiAgICAgICAgYmFzZU9mZnNldCA9IG1hcHBpbmcubWFwc1tpXS5tYXAoYmFzZU9mZnNldCwgLTEpO1xuICAgIH1cbiAgICAvLyBGaW5kIHRoZSBjaGlsZCBub2RlcyB0aGF0IHN0aWxsIGNvcnJlc3BvbmQgdG8gYSBzaW5nbGUgbm9kZSxcbiAgICAvLyByZWN1cnNpdmVseSBjYWxsIG1hcElubmVyIG9uIHRoZW0gYW5kIHVwZGF0ZSB0aGVpciBwb3NpdGlvbnMuXG4gICAgbGV0IG11c3RSZWJ1aWxkID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkgKz0gMylcbiAgICAgICAgaWYgKGNoaWxkcmVuW2kgKyAxXSA8IDApIHsgLy8gVG91Y2hlZCBub2Rlc1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2kgKyAxXSA9PSAtMikge1xuICAgICAgICAgICAgICAgIG11c3RSZWJ1aWxkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbltpICsgMV0gPSAtMTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBmcm9tID0gbWFwcGluZy5tYXAob2xkQ2hpbGRyZW5baV0gKyBvbGRPZmZzZXQpLCBmcm9tTG9jYWwgPSBmcm9tIC0gb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGZyb21Mb2NhbCA8IDAgfHwgZnJvbUxvY2FsID49IG5vZGUuY29udGVudC5zaXplKSB7XG4gICAgICAgICAgICAgICAgbXVzdFJlYnVpbGQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTXVzdCByZWFkIG9sZENoaWxkcmVuIGJlY2F1c2UgY2hpbGRyZW4gd2FzIHRhZ2dlZCB3aXRoIC0xXG4gICAgICAgICAgICBsZXQgdG8gPSBtYXBwaW5nLm1hcChvbGRDaGlsZHJlbltpICsgMV0gKyBvbGRPZmZzZXQsIC0xKSwgdG9Mb2NhbCA9IHRvIC0gb2Zmc2V0O1xuICAgICAgICAgICAgbGV0IHsgaW5kZXgsIG9mZnNldDogY2hpbGRPZmZzZXQgfSA9IG5vZGUuY29udGVudC5maW5kSW5kZXgoZnJvbUxvY2FsKTtcbiAgICAgICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlLm1heWJlQ2hpbGQoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSAmJiBjaGlsZE9mZnNldCA9PSBmcm9tTG9jYWwgJiYgY2hpbGRPZmZzZXQgKyBjaGlsZE5vZGUubm9kZVNpemUgPT0gdG9Mb2NhbCkge1xuICAgICAgICAgICAgICAgIGxldCBtYXBwZWQgPSBjaGlsZHJlbltpICsgMl1cbiAgICAgICAgICAgICAgICAgICAgLm1hcElubmVyKG1hcHBpbmcsIGNoaWxkTm9kZSwgZnJvbSArIDEsIG9sZENoaWxkcmVuW2ldICsgb2xkT2Zmc2V0ICsgMSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgaWYgKG1hcHBlZCAhPSBlbXB0eSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXSA9IGZyb21Mb2NhbDtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5baSArIDFdID0gdG9Mb2NhbDtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5baSArIDJdID0gbWFwcGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5baSArIDFdID0gLTI7XG4gICAgICAgICAgICAgICAgICAgIG11c3RSZWJ1aWxkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBtdXN0UmVidWlsZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAvLyBSZW1haW5pbmcgY2hpbGRyZW4gbXVzdCBiZSBjb2xsZWN0ZWQgYW5kIHJlYnVpbHQgaW50byB0aGUgYXBwcm9wcmlhdGUgc3RydWN0dXJlXG4gICAgaWYgKG11c3RSZWJ1aWxkKSB7XG4gICAgICAgIGxldCBkZWNvcmF0aW9ucyA9IG1hcEFuZEdhdGhlclJlbWFpbmluZ0RlY29yYXRpb25zKGNoaWxkcmVuLCBvbGRDaGlsZHJlbiwgbmV3TG9jYWwsIG1hcHBpbmcsIG9mZnNldCwgb2xkT2Zmc2V0LCBvcHRpb25zKTtcbiAgICAgICAgbGV0IGJ1aWx0ID0gYnVpbGRUcmVlKGRlY29yYXRpb25zLCBub2RlLCAwLCBvcHRpb25zKTtcbiAgICAgICAgbmV3TG9jYWwgPSBidWlsdC5sb2NhbDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkgKz0gMylcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbltpICsgMV0gPCAwKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIDMpO1xuICAgICAgICAgICAgICAgIGkgLT0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGogPSAwOyBpIDwgYnVpbHQuY2hpbGRyZW4ubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgIGxldCBmcm9tID0gYnVpbHQuY2hpbGRyZW5baV07XG4gICAgICAgICAgICB3aGlsZSAoaiA8IGNoaWxkcmVuLmxlbmd0aCAmJiBjaGlsZHJlbltqXSA8IGZyb20pXG4gICAgICAgICAgICAgICAgaiArPSAzO1xuICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGosIDAsIGJ1aWx0LmNoaWxkcmVuW2ldLCBidWlsdC5jaGlsZHJlbltpICsgMV0sIGJ1aWx0LmNoaWxkcmVuW2kgKyAyXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEZWNvcmF0aW9uU2V0KG5ld0xvY2FsLnNvcnQoYnlQb3MpLCBjaGlsZHJlbik7XG59XG5mdW5jdGlvbiBtb3ZlU3BhbnMoc3BhbnMsIG9mZnNldCkge1xuICAgIGlmICghb2Zmc2V0IHx8ICFzcGFucy5sZW5ndGgpXG4gICAgICAgIHJldHVybiBzcGFucztcbiAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcGFucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgc3BhbiA9IHNwYW5zW2ldO1xuICAgICAgICByZXN1bHQucHVzaChuZXcgRGVjb3JhdGlvbihzcGFuLmZyb20gKyBvZmZzZXQsIHNwYW4udG8gKyBvZmZzZXQsIHNwYW4udHlwZSkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbWFwQW5kR2F0aGVyUmVtYWluaW5nRGVjb3JhdGlvbnMoY2hpbGRyZW4sIG9sZENoaWxkcmVuLCBkZWNvcmF0aW9ucywgbWFwcGluZywgb2Zmc2V0LCBvbGRPZmZzZXQsIG9wdGlvbnMpIHtcbiAgICAvLyBHYXRoZXIgYWxsIGRlY29yYXRpb25zIGZyb20gdGhlIHJlbWFpbmluZyBtYXJrZWQgY2hpbGRyZW5cbiAgICBmdW5jdGlvbiBnYXRoZXIoc2V0LCBvbGRPZmZzZXQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXQubG9jYWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYXBwZWQgPSBzZXQubG9jYWxbaV0ubWFwKG1hcHBpbmcsIG9mZnNldCwgb2xkT2Zmc2V0KTtcbiAgICAgICAgICAgIGlmIChtYXBwZWQpXG4gICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMucHVzaChtYXBwZWQpO1xuICAgICAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5vblJlbW92ZSlcbiAgICAgICAgICAgICAgICBvcHRpb25zLm9uUmVtb3ZlKHNldC5sb2NhbFtpXS5zcGVjKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNldC5jaGlsZHJlbi5sZW5ndGg7IGkgKz0gMylcbiAgICAgICAgICAgIGdhdGhlcihzZXQuY2hpbGRyZW5baSArIDJdLCBzZXQuY2hpbGRyZW5baV0gKyBvbGRPZmZzZXQgKyAxKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkgKz0gMylcbiAgICAgICAgaWYgKGNoaWxkcmVuW2kgKyAxXSA9PSAtMSlcbiAgICAgICAgICAgIGdhdGhlcihjaGlsZHJlbltpICsgMl0sIG9sZENoaWxkcmVuW2ldICsgb2xkT2Zmc2V0ICsgMSk7XG4gICAgcmV0dXJuIGRlY29yYXRpb25zO1xufVxuZnVuY3Rpb24gdGFrZVNwYW5zRm9yTm9kZShzcGFucywgbm9kZSwgb2Zmc2V0KSB7XG4gICAgaWYgKG5vZGUuaXNMZWFmKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBsZXQgZW5kID0gb2Zmc2V0ICsgbm9kZS5ub2RlU2l6ZSwgZm91bmQgPSBudWxsO1xuICAgIGZvciAobGV0IGkgPSAwLCBzcGFuOyBpIDwgc3BhbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKChzcGFuID0gc3BhbnNbaV0pICYmIHNwYW4uZnJvbSA+IG9mZnNldCAmJiBzcGFuLnRvIDwgZW5kKSB7XG4gICAgICAgICAgICAoZm91bmQgfHwgKGZvdW5kID0gW10pKS5wdXNoKHNwYW4pO1xuICAgICAgICAgICAgc3BhbnNbaV0gPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmb3VuZDtcbn1cbmZ1bmN0aW9uIHdpdGhvdXROdWxscyhhcnJheSkge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKVxuICAgICAgICBpZiAoYXJyYXlbaV0gIT0gbnVsbClcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFycmF5W2ldKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLy8gQnVpbGQgdXAgYSB0cmVlIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBzZXQgb2YgZGVjb3JhdGlvbnMuIGBvZmZzZXRgXG4vLyBpcyBhIGJhc2Ugb2Zmc2V0IHRoYXQgc2hvdWxkIGJlIHN1YnRyYWN0ZWQgZnJvbSB0aGUgYGZyb21gIGFuZCBgdG9gXG4vLyBwb3NpdGlvbnMgaW4gdGhlIHNwYW5zIChzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gYWxsb2NhdGUgbmV3IHNwYW5zXG4vLyBmb3IgcmVjdXJzaXZlIGNhbGxzKS5cbmZ1bmN0aW9uIGJ1aWxkVHJlZShzcGFucywgbm9kZSwgb2Zmc2V0LCBvcHRpb25zKSB7XG4gICAgbGV0IGNoaWxkcmVuID0gW10sIGhhc051bGxzID0gZmFsc2U7XG4gICAgbm9kZS5mb3JFYWNoKChjaGlsZE5vZGUsIGxvY2FsU3RhcnQpID0+IHtcbiAgICAgICAgbGV0IGZvdW5kID0gdGFrZVNwYW5zRm9yTm9kZShzcGFucywgY2hpbGROb2RlLCBsb2NhbFN0YXJ0ICsgb2Zmc2V0KTtcbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICBoYXNOdWxscyA9IHRydWU7XG4gICAgICAgICAgICBsZXQgc3VidHJlZSA9IGJ1aWxkVHJlZShmb3VuZCwgY2hpbGROb2RlLCBvZmZzZXQgKyBsb2NhbFN0YXJ0ICsgMSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoc3VidHJlZSAhPSBlbXB0eSlcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGxvY2FsU3RhcnQsIGxvY2FsU3RhcnQgKyBjaGlsZE5vZGUubm9kZVNpemUsIHN1YnRyZWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGxvY2FscyA9IG1vdmVTcGFucyhoYXNOdWxscyA/IHdpdGhvdXROdWxscyhzcGFucykgOiBzcGFucywgLW9mZnNldCkuc29ydChieVBvcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb2NhbHMubGVuZ3RoOyBpKyspXG4gICAgICAgIGlmICghbG9jYWxzW2ldLnR5cGUudmFsaWQobm9kZSwgbG9jYWxzW2ldKSkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMub25SZW1vdmUpXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vblJlbW92ZShsb2NhbHNbaV0uc3BlYyk7XG4gICAgICAgICAgICBsb2NhbHMuc3BsaWNlKGktLSwgMSk7XG4gICAgICAgIH1cbiAgICByZXR1cm4gbG9jYWxzLmxlbmd0aCB8fCBjaGlsZHJlbi5sZW5ndGggPyBuZXcgRGVjb3JhdGlvblNldChsb2NhbHMsIGNoaWxkcmVuKSA6IGVtcHR5O1xufVxuLy8gVXNlZCB0byBzb3J0IGRlY29yYXRpb25zIHNvIHRoYXQgb25lcyB3aXRoIGEgbG93IHN0YXJ0IHBvc2l0aW9uXG4vLyBjb21lIGZpcnN0LCBhbmQgd2l0aGluIGEgc2V0IHdpdGggdGhlIHNhbWUgc3RhcnQgcG9zaXRpb24sIHRob3NlXG4vLyB3aXRoIGFuIHNtYWxsZXIgZW5kIHBvc2l0aW9uIGNvbWUgZmlyc3QuXG5mdW5jdGlvbiBieVBvcyhhLCBiKSB7XG4gICAgcmV0dXJuIGEuZnJvbSAtIGIuZnJvbSB8fCBhLnRvIC0gYi50bztcbn1cbi8vIFNjYW4gYSBzb3J0ZWQgYXJyYXkgb2YgZGVjb3JhdGlvbnMgZm9yIHBhcnRpYWxseSBvdmVybGFwcGluZyBzcGFucyxcbi8vIGFuZCBzcGxpdCB0aG9zZSBzbyB0aGF0IG9ubHkgZnVsbHkgb3ZlcmxhcHBpbmcgc3BhbnMgYXJlIGxlZnQgKHRvXG4vLyBtYWtlIHN1YnNlcXVlbnQgcmVuZGVyaW5nIGVhc2llcikuIFdpbGwgcmV0dXJuIHRoZSBpbnB1dCBhcnJheSBpZlxuLy8gbm8gcGFydGlhbGx5IG92ZXJsYXBwaW5nIHNwYW5zIGFyZSBmb3VuZCAodGhlIGNvbW1vbiBjYXNlKS5cbmZ1bmN0aW9uIHJlbW92ZU92ZXJsYXAoc3BhbnMpIHtcbiAgICBsZXQgd29ya2luZyA9IHNwYW5zO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd29ya2luZy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgbGV0IHNwYW4gPSB3b3JraW5nW2ldO1xuICAgICAgICBpZiAoc3Bhbi5mcm9tICE9IHNwYW4udG8pXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCB3b3JraW5nLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSB3b3JraW5nW2pdO1xuICAgICAgICAgICAgICAgIGlmIChuZXh0LmZyb20gPT0gc3Bhbi5mcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0LnRvICE9IHNwYW4udG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3b3JraW5nID09IHNwYW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgPSBzcGFucy5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9sbG93ZWQgYnkgYSBwYXJ0aWFsbHkgb3ZlcmxhcHBpbmcgbGFyZ2VyIHNwYW4uIFNwbGl0IHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwYW4uXG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nW2pdID0gbmV4dC5jb3B5KG5leHQuZnJvbSwgc3Bhbi50byk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRBaGVhZCh3b3JraW5nLCBqICsgMSwgbmV4dC5jb3B5KHNwYW4udG8sIG5leHQudG8pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0LmZyb20gPCBzcGFuLnRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod29ya2luZyA9PSBzcGFucylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nID0gc3BhbnMuc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBlbmQgb2YgdGhpcyBvbmUgb3ZlcmxhcHMgd2l0aCBhIHN1YnNlcXVlbnQgc3Bhbi4gU3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZ1tpXSA9IHNwYW4uY29weShzcGFuLmZyb20sIG5leHQuZnJvbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRBaGVhZCh3b3JraW5nLCBqLCBzcGFuLmNvcHkobmV4dC5mcm9tLCBzcGFuLnRvKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gd29ya2luZztcbn1cbmZ1bmN0aW9uIGluc2VydEFoZWFkKGFycmF5LCBpLCBkZWNvKSB7XG4gICAgd2hpbGUgKGkgPCBhcnJheS5sZW5ndGggJiYgYnlQb3MoZGVjbywgYXJyYXlbaV0pID4gMClcbiAgICAgICAgaSsrO1xuICAgIGFycmF5LnNwbGljZShpLCAwLCBkZWNvKTtcbn1cbi8vIEdldCB0aGUgZGVjb3JhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHByb3BzIG9mIGEgdmlldy5cbmZ1bmN0aW9uIHZpZXdEZWNvcmF0aW9ucyh2aWV3KSB7XG4gICAgbGV0IGZvdW5kID0gW107XG4gICAgdmlldy5zb21lUHJvcChcImRlY29yYXRpb25zXCIsIGYgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZih2aWV3LnN0YXRlKTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQgIT0gZW1wdHkpXG4gICAgICAgICAgICBmb3VuZC5wdXNoKHJlc3VsdCk7XG4gICAgfSk7XG4gICAgaWYgKHZpZXcuY3Vyc29yV3JhcHBlcilcbiAgICAgICAgZm91bmQucHVzaChEZWNvcmF0aW9uU2V0LmNyZWF0ZSh2aWV3LnN0YXRlLmRvYywgW3ZpZXcuY3Vyc29yV3JhcHBlci5kZWNvXSkpO1xuICAgIHJldHVybiBEZWNvcmF0aW9uR3JvdXAuZnJvbShmb3VuZCk7XG59XG5cbmNvbnN0IG9ic2VydmVPcHRpb25zID0ge1xuICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZSxcbiAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgIHN1YnRyZWU6IHRydWVcbn07XG4vLyBJRTExIGhhcyB2ZXJ5IGJyb2tlbiBtdXRhdGlvbiBvYnNlcnZlcnMsIHNvIHdlIGFsc28gbGlzdGVuIHRvIERPTUNoYXJhY3RlckRhdGFNb2RpZmllZFxuY29uc3QgdXNlQ2hhckRhdGEgPSBpZSAmJiBpZV92ZXJzaW9uIDw9IDExO1xuY2xhc3MgU2VsZWN0aW9uU3RhdGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFuY2hvck5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLmFuY2hvck9mZnNldCA9IDA7XG4gICAgICAgIHRoaXMuZm9jdXNOb2RlID0gbnVsbDtcbiAgICAgICAgdGhpcy5mb2N1c09mZnNldCA9IDA7XG4gICAgfVxuICAgIHNldChzZWwpIHtcbiAgICAgICAgdGhpcy5hbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGU7XG4gICAgICAgIHRoaXMuYW5jaG9yT2Zmc2V0ID0gc2VsLmFuY2hvck9mZnNldDtcbiAgICAgICAgdGhpcy5mb2N1c05vZGUgPSBzZWwuZm9jdXNOb2RlO1xuICAgICAgICB0aGlzLmZvY3VzT2Zmc2V0ID0gc2VsLmZvY3VzT2Zmc2V0O1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5hbmNob3JOb2RlID0gdGhpcy5mb2N1c05vZGUgPSBudWxsO1xuICAgIH1cbiAgICBlcShzZWwpIHtcbiAgICAgICAgcmV0dXJuIHNlbC5hbmNob3JOb2RlID09IHRoaXMuYW5jaG9yTm9kZSAmJiBzZWwuYW5jaG9yT2Zmc2V0ID09IHRoaXMuYW5jaG9yT2Zmc2V0ICYmXG4gICAgICAgICAgICBzZWwuZm9jdXNOb2RlID09IHRoaXMuZm9jdXNOb2RlICYmIHNlbC5mb2N1c09mZnNldCA9PSB0aGlzLmZvY3VzT2Zmc2V0O1xuICAgIH1cbn1cbmNsYXNzIERPTU9ic2VydmVyIHtcbiAgICBjb25zdHJ1Y3Rvcih2aWV3LCBoYW5kbGVET01DaGFuZ2UpIHtcbiAgICAgICAgdGhpcy52aWV3ID0gdmlldztcbiAgICAgICAgdGhpcy5oYW5kbGVET01DaGFuZ2UgPSBoYW5kbGVET01DaGFuZ2U7XG4gICAgICAgIHRoaXMucXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5mbHVzaGluZ1Nvb24gPSAtMTtcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25TdGF0ZTtcbiAgICAgICAgdGhpcy5vbkNoYXJEYXRhID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdXBwcmVzc2luZ1NlbGVjdGlvblVwZGF0ZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sYXN0Q2hhbmdlZFRleHROb2RlID0gbnVsbDtcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyICYmXG4gICAgICAgICAgICBuZXcgd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG11dGF0aW9ucy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWV1ZS5wdXNoKG11dGF0aW9uc1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPD0gMTEgJiYgbXV0YXRpb25zLnNvbWUobSA9PiBtLnR5cGUgPT0gXCJjaGlsZExpc3RcIiAmJiBtLnJlbW92ZWROb2Rlcy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgbS50eXBlID09IFwiY2hhcmFjdGVyRGF0YVwiICYmIG0ub2xkVmFsdWUubGVuZ3RoID4gbS50YXJnZXQubm9kZVZhbHVlLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSUUxMSB3aWxsIHNvbWV0aW1lcyAob24gYmFja3NwYWNpbmcgb3V0IGEgc2luZ2xlIGNoYXJhY3RlclxuICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0IG5vZGUgYWZ0ZXIgYSBCUiBub2RlKSBjYWxsIHRoZSBvYnNlcnZlciBjYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICAvLyBiZWZvcmUgYWN0dWFsbHkgdXBkYXRpbmcgdGhlIERPTSwgd2hpY2ggd2lsbCBjYXVzZVxuICAgICAgICAgICAgICAgICAgICAvLyBQcm9zZU1pcnJvciB0byBtaXNzIHRoZSBjaGFuZ2UgKHNlZSAjOTMwKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZsdXNoU29vbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzYWZhcmkgJiYgdmlldy5jb21wb3NpbmcgJiYgbXV0YXRpb25zLnNvbWUobSA9PiBtLnR5cGUgPT0gXCJjaGlsZExpc3RcIiAmJiBtLnRhcmdldC5ub2RlTmFtZSA9PSBcIlRSXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNhZmFyaSBkb2VzIHdlaXJkIHN0dWZmIHdoZW4gZmluaXNoaW5nIGEgY29tcG9zaXRpb24gaW4gYVxuICAgICAgICAgICAgICAgICAgICAvLyB0YWJsZSBjZWxsLCB3aGljaCB0ZW5kcyB0byBpbnZvbHZlIGluc2VydGluZyBpbmFwcHJvcHJpYXRlXG4gICAgICAgICAgICAgICAgICAgIC8vIG5vZGVzIGluIHRoZSB0YWJsZSByb3cuXG4gICAgICAgICAgICAgICAgICAgIHZpZXcuaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZsdXNoU29vbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mbHVzaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICBpZiAodXNlQ2hhckRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFyRGF0YSA9IGUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucXVldWUucHVzaCh7IHRhcmdldDogZS50YXJnZXQsIHR5cGU6IFwiY2hhcmFjdGVyRGF0YVwiLCBvbGRWYWx1ZTogZS5wcmV2VmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbHVzaFNvb24oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSA9IHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKTtcbiAgICB9XG4gICAgZmx1c2hTb29uKCkge1xuICAgICAgICBpZiAodGhpcy5mbHVzaGluZ1Nvb24gPCAwKVxuICAgICAgICAgICAgdGhpcy5mbHVzaGluZ1Nvb24gPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZmx1c2hpbmdTb29uID0gLTE7IHRoaXMuZmx1c2goKTsgfSwgMjApO1xuICAgIH1cbiAgICBmb3JjZUZsdXNoKCkge1xuICAgICAgICBpZiAodGhpcy5mbHVzaGluZ1Nvb24gPiAtMSkge1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLmZsdXNoaW5nU29vbik7XG4gICAgICAgICAgICB0aGlzLmZsdXNoaW5nU29vbiA9IC0xO1xuICAgICAgICAgICAgdGhpcy5mbHVzaCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy5vYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci50YWtlUmVjb3JkcygpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMudmlldy5kb20sIG9ic2VydmVPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vbkNoYXJEYXRhKVxuICAgICAgICAgICAgdGhpcy52aWV3LmRvbS5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkXCIsIHRoaXMub25DaGFyRGF0YSk7XG4gICAgICAgIHRoaXMuY29ubmVjdFNlbGVjdGlvbigpO1xuICAgIH1cbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5vYnNlcnZlcikge1xuICAgICAgICAgICAgbGV0IHRha2UgPSB0aGlzLm9ic2VydmVyLnRha2VSZWNvcmRzKCk7XG4gICAgICAgICAgICBpZiAodGFrZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRha2UubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVldWUucHVzaCh0YWtlW2ldKTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLmZsdXNoKCksIDIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9uQ2hhckRhdGEpXG4gICAgICAgICAgICB0aGlzLnZpZXcuZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWRcIiwgdGhpcy5vbkNoYXJEYXRhKTtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0U2VsZWN0aW9uKCk7XG4gICAgfVxuICAgIGNvbm5lY3RTZWxlY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudmlldy5kb20ub3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UpO1xuICAgIH1cbiAgICBkaXNjb25uZWN0U2VsZWN0aW9uKCkge1xuICAgICAgICB0aGlzLnZpZXcuZG9tLm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNlbGVjdGlvbmNoYW5nZVwiLCB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKTtcbiAgICB9XG4gICAgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGVzKCkge1xuICAgICAgICB0aGlzLnN1cHByZXNzaW5nU2VsZWN0aW9uVXBkYXRlcyA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zdXBwcmVzc2luZ1NlbGVjdGlvblVwZGF0ZXMgPSBmYWxzZSwgNTApO1xuICAgIH1cbiAgICBvblNlbGVjdGlvbkNoYW5nZSgpIHtcbiAgICAgICAgaWYgKCFoYXNGb2N1c0FuZFNlbGVjdGlvbih0aGlzLnZpZXcpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5zdXBwcmVzc2luZ1NlbGVjdGlvblVwZGF0ZXMpXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uVG9ET00odGhpcy52aWV3KTtcbiAgICAgICAgLy8gRGVsZXRpb25zIG9uIElFMTEgZmlyZSB0aGVpciBldmVudHMgaW4gdGhlIHdyb25nIG9yZGVyLCBnaXZpbmdcbiAgICAgICAgLy8gdXMgYSBzZWxlY3Rpb24gY2hhbmdlIGV2ZW50IGJlZm9yZSB0aGUgRE9NIGNoYW5nZXMgYXJlXG4gICAgICAgIC8vIHJlcG9ydGVkLlxuICAgICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8PSAxMSAmJiAhdGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi5lbXB0eSkge1xuICAgICAgICAgICAgbGV0IHNlbCA9IHRoaXMudmlldy5kb21TZWxlY3Rpb25SYW5nZSgpO1xuICAgICAgICAgICAgLy8gU2VsZWN0aW9uLmlzQ29sbGFwc2VkIGlzbid0IHJlbGlhYmxlIG9uIElFXG4gICAgICAgICAgICBpZiAoc2VsLmZvY3VzTm9kZSAmJiBpc0VxdWl2YWxlbnRQb3NpdGlvbihzZWwuZm9jdXNOb2RlLCBzZWwuZm9jdXNPZmZzZXQsIHNlbC5hbmNob3JOb2RlLCBzZWwuYW5jaG9yT2Zmc2V0KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbHVzaFNvb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZsdXNoKCk7XG4gICAgfVxuICAgIHNldEN1clNlbGVjdGlvbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uLnNldCh0aGlzLnZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKSk7XG4gICAgfVxuICAgIGlnbm9yZVNlbGVjdGlvbkNoYW5nZShzZWwpIHtcbiAgICAgICAgaWYgKCFzZWwuZm9jdXNOb2RlKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGxldCBhbmNlc3RvcnMgPSBuZXcgU2V0LCBjb250YWluZXI7XG4gICAgICAgIGZvciAobGV0IHNjYW4gPSBzZWwuZm9jdXNOb2RlOyBzY2FuOyBzY2FuID0gcGFyZW50Tm9kZShzY2FuKSlcbiAgICAgICAgICAgIGFuY2VzdG9ycy5hZGQoc2Nhbik7XG4gICAgICAgIGZvciAobGV0IHNjYW4gPSBzZWwuYW5jaG9yTm9kZTsgc2Nhbjsgc2NhbiA9IHBhcmVudE5vZGUoc2NhbikpXG4gICAgICAgICAgICBpZiAoYW5jZXN0b3JzLmhhcyhzY2FuKSkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IHNjYW47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGxldCBkZXNjID0gY29udGFpbmVyICYmIHRoaXMudmlldy5kb2NWaWV3Lm5lYXJlc3REZXNjKGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChkZXNjICYmIGRlc2MuaWdub3JlTXV0YXRpb24oe1xuICAgICAgICAgICAgdHlwZTogXCJzZWxlY3Rpb25cIixcbiAgICAgICAgICAgIHRhcmdldDogY29udGFpbmVyLm5vZGVUeXBlID09IDMgPyBjb250YWluZXIucGFyZW50Tm9kZSA6IGNvbnRhaW5lclxuICAgICAgICB9KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRDdXJTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHBlbmRpbmdSZWNvcmRzKCkge1xuICAgICAgICBpZiAodGhpcy5vYnNlcnZlcilcbiAgICAgICAgICAgIGZvciAobGV0IG11dCBvZiB0aGlzLm9ic2VydmVyLnRha2VSZWNvcmRzKCkpXG4gICAgICAgICAgICAgICAgdGhpcy5xdWV1ZS5wdXNoKG11dCk7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXVlO1xuICAgIH1cbiAgICBmbHVzaCgpIHtcbiAgICAgICAgbGV0IHsgdmlldyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCF2aWV3LmRvY1ZpZXcgfHwgdGhpcy5mbHVzaGluZ1Nvb24gPiAtMSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IG11dGF0aW9ucyA9IHRoaXMucGVuZGluZ1JlY29yZHMoKTtcbiAgICAgICAgaWYgKG11dGF0aW9ucy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLnF1ZXVlID0gW107XG4gICAgICAgIGxldCBzZWwgPSB2aWV3LmRvbVNlbGVjdGlvblJhbmdlKCk7XG4gICAgICAgIGxldCBuZXdTZWwgPSAhdGhpcy5zdXBwcmVzc2luZ1NlbGVjdGlvblVwZGF0ZXMgJiYgIXRoaXMuY3VycmVudFNlbGVjdGlvbi5lcShzZWwpICYmIGhhc0ZvY3VzQW5kU2VsZWN0aW9uKHZpZXcpICYmICF0aGlzLmlnbm9yZVNlbGVjdGlvbkNoYW5nZShzZWwpO1xuICAgICAgICBsZXQgZnJvbSA9IC0xLCB0byA9IC0xLCB0eXBlT3ZlciA9IGZhbHNlLCBhZGRlZCA9IFtdO1xuICAgICAgICBpZiAodmlldy5lZGl0YWJsZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtdXRhdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5yZWdpc3Rlck11dGF0aW9uKG11dGF0aW9uc1tpXSwgYWRkZWQpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbSA9IGZyb20gPCAwID8gcmVzdWx0LmZyb20gOiBNYXRoLm1pbihyZXN1bHQuZnJvbSwgZnJvbSk7XG4gICAgICAgICAgICAgICAgICAgIHRvID0gdG8gPCAwID8gcmVzdWx0LnRvIDogTWF0aC5tYXgocmVzdWx0LnRvLCB0byk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZU92ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlT3ZlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhZGRlZC5zb21lKG4gPT4gbi5ub2RlTmFtZSA9PSBcIkJSXCIpICYmICh2aWV3LmlucHV0Lmxhc3RLZXlDb2RlID09IDggfHwgdmlldy5pbnB1dC5sYXN0S2V5Q29kZSA9PSA0NikpIHtcbiAgICAgICAgICAgIC8vIEJyb3dzZXJzIHNvbWV0aW1lcyBpbnNlcnQgYSBib2d1cyBicmVhayBub2RlIGlmIHlvdVxuICAgICAgICAgICAgLy8gYmFja3NwYWNlIG91dCB0aGUgbGFzdCBiaXQgb2YgdGV4dCBiZWZvcmUgYW4gaW5saW5lLWZsZXggbm9kZSAoIzE1NTIpXG4gICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIGFkZGVkKVxuICAgICAgICAgICAgICAgIGlmIChub2RlLm5vZGVOYW1lID09IFwiQlJcIiAmJiBub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFmdGVyID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFmdGVyICYmIGFmdGVyLm5vZGVUeXBlID09IDEgJiYgYWZ0ZXIuY29udGVudEVkaXRhYmxlID09IFwiZmFsc2VcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZ2Vja28gJiYgYWRkZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgYnJzID0gYWRkZWQuZmlsdGVyKG4gPT4gbi5ub2RlTmFtZSA9PSBcIkJSXCIpO1xuICAgICAgICAgICAgaWYgKGJycy5sZW5ndGggPT0gMikge1xuICAgICAgICAgICAgICAgIGxldCBbYSwgYl0gPSBicnM7XG4gICAgICAgICAgICAgICAgaWYgKGEucGFyZW50Tm9kZSAmJiBhLnBhcmVudE5vZGUucGFyZW50Tm9kZSA9PSBiLnBhcmVudE5vZGUpXG4gICAgICAgICAgICAgICAgICAgIGIucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHsgZm9jdXNOb2RlIH0gPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYnIgb2YgYnJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBici5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC5ub2RlTmFtZSA9PSBcIkxJXCIgJiYgKCFmb2N1c05vZGUgfHwgYmxvY2tQYXJlbnQodmlldywgZm9jdXNOb2RlKSAhPSBwYXJlbnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnIucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZWFkU2VsID0gbnVsbDtcbiAgICAgICAgLy8gSWYgaXQgbG9va3MgbGlrZSB0aGUgYnJvd3NlciBoYXMgcmVzZXQgdGhlIHNlbGVjdGlvbiB0byB0aGVcbiAgICAgICAgLy8gc3RhcnQgb2YgdGhlIGRvY3VtZW50IGFmdGVyIGZvY3VzLCByZXN0b3JlIHRoZSBzZWxlY3Rpb24gZnJvbVxuICAgICAgICAvLyB0aGUgc3RhdGVcbiAgICAgICAgaWYgKGZyb20gPCAwICYmIG5ld1NlbCAmJiB2aWV3LmlucHV0Lmxhc3RGb2N1cyA+IERhdGUubm93KCkgLSAyMDAgJiZcbiAgICAgICAgICAgIE1hdGgubWF4KHZpZXcuaW5wdXQubGFzdFRvdWNoLCB2aWV3LmlucHV0Lmxhc3RDbGljay50aW1lKSA8IERhdGUubm93KCkgLSAzMDAgJiZcbiAgICAgICAgICAgIHNlbGVjdGlvbkNvbGxhcHNlZChzZWwpICYmIChyZWFkU2VsID0gc2VsZWN0aW9uRnJvbURPTSh2aWV3KSkgJiZcbiAgICAgICAgICAgIHJlYWRTZWwuZXEoU2VsZWN0aW9uLm5lYXIodmlldy5zdGF0ZS5kb2MucmVzb2x2ZSgwKSwgMSkpKSB7XG4gICAgICAgICAgICB2aWV3LmlucHV0Lmxhc3RGb2N1cyA9IDA7XG4gICAgICAgICAgICBzZWxlY3Rpb25Ub0RPTSh2aWV3KTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbi5zZXQoc2VsKTtcbiAgICAgICAgICAgIHZpZXcuc2Nyb2xsVG9TZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmcm9tID4gLTEgfHwgbmV3U2VsKSB7XG4gICAgICAgICAgICBpZiAoZnJvbSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdmlldy5kb2NWaWV3Lm1hcmtEaXJ0eShmcm9tLCB0byk7XG4gICAgICAgICAgICAgICAgY2hlY2tDU1Modmlldyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmlldy5pbnB1dC5iYWRTYWZhcmlDb21wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHZpZXcuaW5wdXQuYmFkU2FmYXJpQ29tcG9zaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmaXhVcEJhZFNhZmFyaUNvbXBvc2l0aW9uKHZpZXcsIGFkZGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRE9NQ2hhbmdlKGZyb20sIHRvLCB0eXBlT3ZlciwgYWRkZWQpO1xuICAgICAgICAgICAgaWYgKHZpZXcuZG9jVmlldyAmJiB2aWV3LmRvY1ZpZXcuZGlydHkpXG4gICAgICAgICAgICAgICAgdmlldy51cGRhdGVTdGF0ZSh2aWV3LnN0YXRlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZXEoc2VsKSlcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Ub0RPTSh2aWV3KTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbi5zZXQoc2VsKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWdpc3Rlck11dGF0aW9uKG11dCwgYWRkZWQpIHtcbiAgICAgICAgLy8gSWdub3JlIG11dGF0aW9ucyBpbnNpZGUgbm9kZXMgdGhhdCB3ZXJlIGFscmVhZHkgbm90ZWQgYXMgaW5zZXJ0ZWRcbiAgICAgICAgaWYgKGFkZGVkLmluZGV4T2YobXV0LnRhcmdldCkgPiAtMSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBsZXQgZGVzYyA9IHRoaXMudmlldy5kb2NWaWV3Lm5lYXJlc3REZXNjKG11dC50YXJnZXQpO1xuICAgICAgICBpZiAobXV0LnR5cGUgPT0gXCJhdHRyaWJ1dGVzXCIgJiZcbiAgICAgICAgICAgIChkZXNjID09IHRoaXMudmlldy5kb2NWaWV3IHx8IG11dC5hdHRyaWJ1dGVOYW1lID09IFwiY29udGVudGVkaXRhYmxlXCIgfHxcbiAgICAgICAgICAgICAgICAvLyBGaXJlZm94IHNvbWV0aW1lcyBmaXJlcyBzcHVyaW91cyBldmVudHMgZm9yIG51bGwvZW1wdHkgc3R5bGVzXG4gICAgICAgICAgICAgICAgKG11dC5hdHRyaWJ1dGVOYW1lID09IFwic3R5bGVcIiAmJiAhbXV0Lm9sZFZhbHVlICYmICFtdXQudGFyZ2V0LmdldEF0dHJpYnV0ZShcInN0eWxlXCIpKSkpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKCFkZXNjIHx8IGRlc2MuaWdub3JlTXV0YXRpb24obXV0KSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBpZiAobXV0LnR5cGUgPT0gXCJjaGlsZExpc3RcIikge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtdXQuYWRkZWROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBub2RlID0gbXV0LmFkZGVkTm9kZXNbaV07XG4gICAgICAgICAgICAgICAgYWRkZWQucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RDaGFuZ2VkVGV4dE5vZGUgPSBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlc2MuY29udGVudERPTSAmJiBkZXNjLmNvbnRlbnRET00gIT0gZGVzYy5kb20gJiYgIWRlc2MuY29udGVudERPTS5jb250YWlucyhtdXQudGFyZ2V0KSlcbiAgICAgICAgICAgICAgICByZXR1cm4geyBmcm9tOiBkZXNjLnBvc0JlZm9yZSwgdG86IGRlc2MucG9zQWZ0ZXIgfTtcbiAgICAgICAgICAgIGxldCBwcmV2ID0gbXV0LnByZXZpb3VzU2libGluZywgbmV4dCA9IG11dC5uZXh0U2libGluZztcbiAgICAgICAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uIDw9IDExICYmIG11dC5hZGRlZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIC8vIElFMTEgZ2l2ZXMgdXMgaW5jb3JyZWN0IG5leHQvcHJldiBzaWJsaW5ncyBmb3Igc29tZVxuICAgICAgICAgICAgICAgIC8vIGluc2VydGlvbnMsIHNvIGlmIHRoZXJlIGFyZSBhZGRlZCBub2RlcywgcmVjb21wdXRlIHRob3NlXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtdXQuYWRkZWROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgeyBwcmV2aW91c1NpYmxpbmcsIG5leHRTaWJsaW5nIH0gPSBtdXQuYWRkZWROb2Rlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1NpYmxpbmcgfHwgQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChtdXQuYWRkZWROb2RlcywgcHJldmlvdXNTaWJsaW5nKSA8IDApXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHRTaWJsaW5nIHx8IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwobXV0LmFkZGVkTm9kZXMsIG5leHRTaWJsaW5nKSA8IDApXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gbmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZyb21PZmZzZXQgPSBwcmV2ICYmIHByZXYucGFyZW50Tm9kZSA9PSBtdXQudGFyZ2V0XG4gICAgICAgICAgICAgICAgPyBkb21JbmRleChwcmV2KSArIDEgOiAwO1xuICAgICAgICAgICAgbGV0IGZyb20gPSBkZXNjLmxvY2FsUG9zRnJvbURPTShtdXQudGFyZ2V0LCBmcm9tT2Zmc2V0LCAtMSk7XG4gICAgICAgICAgICBsZXQgdG9PZmZzZXQgPSBuZXh0ICYmIG5leHQucGFyZW50Tm9kZSA9PSBtdXQudGFyZ2V0XG4gICAgICAgICAgICAgICAgPyBkb21JbmRleChuZXh0KSA6IG11dC50YXJnZXQuY2hpbGROb2Rlcy5sZW5ndGg7XG4gICAgICAgICAgICBsZXQgdG8gPSBkZXNjLmxvY2FsUG9zRnJvbURPTShtdXQudGFyZ2V0LCB0b09mZnNldCwgMSk7XG4gICAgICAgICAgICByZXR1cm4geyBmcm9tLCB0byB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG11dC50eXBlID09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICAgICAgICByZXR1cm4geyBmcm9tOiBkZXNjLnBvc0F0U3RhcnQgLSBkZXNjLmJvcmRlciwgdG86IGRlc2MucG9zQXRFbmQgKyBkZXNjLmJvcmRlciB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgeyAvLyBcImNoYXJhY3RlckRhdGFcIlxuICAgICAgICAgICAgdGhpcy5sYXN0Q2hhbmdlZFRleHROb2RlID0gbXV0LnRhcmdldDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZnJvbTogZGVzYy5wb3NBdFN0YXJ0LFxuICAgICAgICAgICAgICAgIHRvOiBkZXNjLnBvc0F0RW5kLFxuICAgICAgICAgICAgICAgIC8vIEFuIGV2ZW50IHdhcyBnZW5lcmF0ZWQgZm9yIGEgdGV4dCBjaGFuZ2UgdGhhdCBkaWRuJ3QgY2hhbmdlXG4gICAgICAgICAgICAgICAgLy8gYW55IHRleHQuIE1hcmsgdGhlIGRvbSBjaGFuZ2UgdG8gZmFsbCBiYWNrIHRvIGFzc3VtaW5nIHRoZVxuICAgICAgICAgICAgICAgIC8vIHNlbGVjdGlvbiB3YXMgdHlwZWQgb3ZlciB3aXRoIGFuIGlkZW50aWNhbCB2YWx1ZSBpZiBpdCBjYW4ndFxuICAgICAgICAgICAgICAgIC8vIGZpbmQgYW5vdGhlciBjaGFuZ2UuXG4gICAgICAgICAgICAgICAgdHlwZU92ZXI6IG11dC50YXJnZXQubm9kZVZhbHVlID09IG11dC5vbGRWYWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmxldCBjc3NDaGVja2VkID0gbmV3IFdlYWtNYXAoKTtcbmxldCBjc3NDaGVja1dhcm5lZCA9IGZhbHNlO1xuZnVuY3Rpb24gY2hlY2tDU1Modmlldykge1xuICAgIGlmIChjc3NDaGVja2VkLmhhcyh2aWV3KSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGNzc0NoZWNrZWQuc2V0KHZpZXcsIG51bGwpO1xuICAgIGlmIChbJ25vcm1hbCcsICdub3dyYXAnLCAncHJlLWxpbmUnXS5pbmRleE9mKGdldENvbXB1dGVkU3R5bGUodmlldy5kb20pLndoaXRlU3BhY2UpICE9PSAtMSkge1xuICAgICAgICB2aWV3LnJlcXVpcmVzR2Vja29IYWNrTm9kZSA9IGdlY2tvO1xuICAgICAgICBpZiAoY3NzQ2hlY2tXYXJuZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnNvbGVbXCJ3YXJuXCJdKFwiUHJvc2VNaXJyb3IgZXhwZWN0cyB0aGUgQ1NTIHdoaXRlLXNwYWNlIHByb3BlcnR5IHRvIGJlIHNldCwgcHJlZmVyYWJseSB0byAncHJlLXdyYXAnLiBJdCBpcyByZWNvbW1lbmRlZCB0byBsb2FkIHN0eWxlL3Byb3NlbWlycm9yLmNzcyBmcm9tIHRoZSBwcm9zZW1pcnJvci12aWV3IHBhY2thZ2UuXCIpO1xuICAgICAgICBjc3NDaGVja1dhcm5lZCA9IHRydWU7XG4gICAgfVxufVxuZnVuY3Rpb24gcmFuZ2VUb1NlbGVjdGlvblJhbmdlKHZpZXcsIHJhbmdlKSB7XG4gICAgbGV0IGFuY2hvck5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lciwgYW5jaG9yT2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQ7XG4gICAgbGV0IGZvY3VzTm9kZSA9IHJhbmdlLmVuZENvbnRhaW5lciwgZm9jdXNPZmZzZXQgPSByYW5nZS5lbmRPZmZzZXQ7XG4gICAgbGV0IGN1cnJlbnRBbmNob3IgPSB2aWV3LmRvbUF0UG9zKHZpZXcuc3RhdGUuc2VsZWN0aW9uLmFuY2hvcik7XG4gICAgLy8gU2luY2Ugc3VjaCBhIHJhbmdlIGRvZXNuJ3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbmNob3IgYW5kIGhlYWQsXG4gICAgLy8gdXNlIGEgaGV1cmlzdGljIHRoYXQgZmxpcHMgaXQgYXJvdW5kIGlmIGl0cyBlbmQgbWF0Y2hlcyB0aGVcbiAgICAvLyBjdXJyZW50IGFuY2hvci5cbiAgICBpZiAoaXNFcXVpdmFsZW50UG9zaXRpb24oY3VycmVudEFuY2hvci5ub2RlLCBjdXJyZW50QW5jaG9yLm9mZnNldCwgZm9jdXNOb2RlLCBmb2N1c09mZnNldCkpXG4gICAgICAgIFthbmNob3JOb2RlLCBhbmNob3JPZmZzZXQsIGZvY3VzTm9kZSwgZm9jdXNPZmZzZXRdID0gW2ZvY3VzTm9kZSwgZm9jdXNPZmZzZXQsIGFuY2hvck5vZGUsIGFuY2hvck9mZnNldF07XG4gICAgcmV0dXJuIHsgYW5jaG9yTm9kZSwgYW5jaG9yT2Zmc2V0LCBmb2N1c05vZGUsIGZvY3VzT2Zmc2V0IH07XG59XG4vLyBVc2VkIHRvIHdvcmsgYXJvdW5kIGEgU2FmYXJpIFNlbGVjdGlvbi9zaGFkb3cgRE9NIGJ1Z1xuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2NvZGVtaXJyb3IvZGV2L2lzc3Vlcy80MTQgZml4XG5mdW5jdGlvbiBzYWZhcmlTaGFkb3dTZWxlY3Rpb25SYW5nZSh2aWV3LCBzZWxlY3Rpb24pIHtcbiAgICBpZiAoc2VsZWN0aW9uLmdldENvbXBvc2VkUmFuZ2VzKSB7XG4gICAgICAgIGxldCByYW5nZSA9IHNlbGVjdGlvbi5nZXRDb21wb3NlZFJhbmdlcyh2aWV3LnJvb3QpWzBdO1xuICAgICAgICBpZiAocmFuZ2UpXG4gICAgICAgICAgICByZXR1cm4gcmFuZ2VUb1NlbGVjdGlvblJhbmdlKHZpZXcsIHJhbmdlKTtcbiAgICB9XG4gICAgbGV0IGZvdW5kO1xuICAgIGZ1bmN0aW9uIHJlYWQoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGZvdW5kID0gZXZlbnQuZ2V0VGFyZ2V0UmFuZ2VzKClbMF07XG4gICAgfVxuICAgIC8vIEJlY2F1c2UgU2FmYXJpIChhdCBsZWFzdCBpbiAyMDE4LTIwMjIpIGRvZXNuJ3QgcHJvdmlkZSByZWd1bGFyXG4gICAgLy8gYWNjZXNzIHRvIHRoZSBzZWxlY3Rpb24gaW5zaWRlIGEgc2hhZG93Um9vdCwgd2UgaGF2ZSB0byBwZXJmb3JtIGFcbiAgICAvLyByaWRpY3Vsb3VzIGhhY2sgdG8gZ2V0IGF0IGl04oCUdXNpbmcgYGV4ZWNDb21tYW5kYCB0byB0cmlnZ2VyIGFcbiAgICAvLyBgYmVmb3JlSW5wdXRgIGV2ZW50IHNvIHRoYXQgd2UgY2FuIHJlYWQgdGhlIHRhcmdldCByYW5nZSBmcm9tIHRoZVxuICAgIC8vIGV2ZW50LlxuICAgIHZpZXcuZG9tLmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmVpbnB1dFwiLCByZWFkLCB0cnVlKTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZChcImluZGVudFwiKTtcbiAgICB2aWV3LmRvbS5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JlaW5wdXRcIiwgcmVhZCwgdHJ1ZSk7XG4gICAgcmV0dXJuIGZvdW5kID8gcmFuZ2VUb1NlbGVjdGlvblJhbmdlKHZpZXcsIGZvdW5kKSA6IG51bGw7XG59XG5mdW5jdGlvbiBibG9ja1BhcmVudCh2aWV3LCBub2RlKSB7XG4gICAgZm9yIChsZXQgcCA9IG5vZGUucGFyZW50Tm9kZTsgcCAmJiBwICE9IHZpZXcuZG9tOyBwID0gcC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGxldCBkZXNjID0gdmlldy5kb2NWaWV3Lm5lYXJlc3REZXNjKHAsIHRydWUpO1xuICAgICAgICBpZiAoZGVzYyAmJiBkZXNjLm5vZGUuaXNCbG9jaylcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbi8vIEtsdWRnZSBmb3IgYSBTYWZhcmkgYnVnIHdoZXJlLCBvbiBlbmRpbmcgYSBjb21wb3NpdGlvbiBpbiBhblxuLy8gb3RoZXJ3aXNlIGVtcHR5IHRhYmxlIGNlbGwsIGl0IHJhbmRvbWx5IG1vdmVzIHRoZSBjb21wb3NlZCB0ZXh0XG4vLyBpbnRvIHRoZSB0YWJsZSByb3cgYXJvdW5kIHRoYXQgY2VsbCwgZ3JlYXRseSBjb25mdXNpbmcgZXZlcnl0aGluZ1xuLy8gKCMxODgpLlxuZnVuY3Rpb24gZml4VXBCYWRTYWZhcmlDb21wb3NpdGlvbih2aWV3LCBhZGRlZE5vZGVzKSB7XG4gICAgdmFyIF9hO1xuICAgIGxldCB7IGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQgfSA9IHZpZXcuZG9tU2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBmb3IgKGxldCBub2RlIG9mIGFkZGVkTm9kZXMpIHtcbiAgICAgICAgaWYgKCgoX2EgPSBub2RlLnBhcmVudE5vZGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlTmFtZSkgPT0gXCJUUlwiKSB7XG4gICAgICAgICAgICBsZXQgbmV4dENlbGwgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgd2hpbGUgKG5leHRDZWxsICYmIChuZXh0Q2VsbC5ub2RlTmFtZSAhPSBcIlREXCIgJiYgbmV4dENlbGwubm9kZU5hbWUgIT0gXCJUSFwiKSlcbiAgICAgICAgICAgICAgICBuZXh0Q2VsbCA9IG5leHRDZWxsLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgaWYgKG5leHRDZWxsKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IG5leHRDZWxsO1xuICAgICAgICAgICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0ID0gcGFyZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3QgfHwgZmlyc3Qubm9kZVR5cGUgIT0gMSB8fCBmaXJzdC5jb250ZW50RWRpdGFibGUgPT0gXCJmYWxzZVwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAvXihCUnxJTUcpJC8udGVzdChmaXJzdC5ub2RlTmFtZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZmlyc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobm9kZSwgcGFyZW50LmZpcnN0Q2hpbGQpO1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c05vZGUgPT0gbm9kZSlcbiAgICAgICAgICAgICAgICAgICAgdmlldy5kb21TZWxlY3Rpb24oKS5jb2xsYXBzZShub2RlLCBmb2N1c09mZnNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIE5vdGUgdGhhdCBhbGwgcmVmZXJlbmNpbmcgYW5kIHBhcnNpbmcgaXMgZG9uZSB3aXRoIHRoZVxuLy8gc3RhcnQtb2Ytb3BlcmF0aW9uIHNlbGVjdGlvbiBhbmQgZG9jdW1lbnQsIHNpbmNlIHRoYXQncyB0aGUgb25lXG4vLyB0aGF0IHRoZSBET00gcmVwcmVzZW50cy4gSWYgYW55IGNoYW5nZXMgY2FtZSBpbiBpbiB0aGUgbWVhbnRpbWUsXG4vLyB0aGUgbW9kaWZpY2F0aW9uIGlzIG1hcHBlZCBvdmVyIHRob3NlIGJlZm9yZSBpdCBpcyBhcHBsaWVkLCBpblxuLy8gcmVhZERPTUNoYW5nZS5cbmZ1bmN0aW9uIHBhcnNlQmV0d2Vlbih2aWV3LCBmcm9tXywgdG9fKSB7XG4gICAgbGV0IHsgbm9kZTogcGFyZW50LCBmcm9tT2Zmc2V0LCB0b09mZnNldCwgZnJvbSwgdG8gfSA9IHZpZXcuZG9jVmlldy5wYXJzZVJhbmdlKGZyb21fLCB0b18pO1xuICAgIGxldCBkb21TZWwgPSB2aWV3LmRvbVNlbGVjdGlvblJhbmdlKCk7XG4gICAgbGV0IGZpbmQ7XG4gICAgbGV0IGFuY2hvciA9IGRvbVNlbC5hbmNob3JOb2RlO1xuICAgIGlmIChhbmNob3IgJiYgdmlldy5kb20uY29udGFpbnMoYW5jaG9yLm5vZGVUeXBlID09IDEgPyBhbmNob3IgOiBhbmNob3IucGFyZW50Tm9kZSkpIHtcbiAgICAgICAgZmluZCA9IFt7IG5vZGU6IGFuY2hvciwgb2Zmc2V0OiBkb21TZWwuYW5jaG9yT2Zmc2V0IH1dO1xuICAgICAgICBpZiAoIXNlbGVjdGlvbkNvbGxhcHNlZChkb21TZWwpKVxuICAgICAgICAgICAgZmluZC5wdXNoKHsgbm9kZTogZG9tU2VsLmZvY3VzTm9kZSwgb2Zmc2V0OiBkb21TZWwuZm9jdXNPZmZzZXQgfSk7XG4gICAgfVxuICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIGluIENocm9tZSB3aGVyZSBiYWNrc3BhY2luZyBzb21ldGltZXMgcmVwbGFjZXNcbiAgICAvLyB0aGUgZGVsZXRlZCBjb250ZW50IHdpdGggYSByYW5kb20gQlIgbm9kZSAoaXNzdWVzICM3OTksICM4MzEpXG4gICAgaWYgKGNocm9tZSAmJiB2aWV3LmlucHV0Lmxhc3RLZXlDb2RlID09PSA4KSB7XG4gICAgICAgIGZvciAobGV0IG9mZiA9IHRvT2Zmc2V0OyBvZmYgPiBmcm9tT2Zmc2V0OyBvZmYtLSkge1xuICAgICAgICAgICAgbGV0IG5vZGUgPSBwYXJlbnQuY2hpbGROb2Rlc1tvZmYgLSAxXSwgZGVzYyA9IG5vZGUucG1WaWV3RGVzYztcbiAgICAgICAgICAgIGlmIChub2RlLm5vZGVOYW1lID09IFwiQlJcIiAmJiAhZGVzYykge1xuICAgICAgICAgICAgICAgIHRvT2Zmc2V0ID0gb2ZmO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFkZXNjIHx8IGRlc2Muc2l6ZSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgc3RhcnREb2MgPSB2aWV3LnN0YXRlLmRvYztcbiAgICBsZXQgcGFyc2VyID0gdmlldy5zb21lUHJvcChcImRvbVBhcnNlclwiKSB8fCBET01QYXJzZXIuZnJvbVNjaGVtYSh2aWV3LnN0YXRlLnNjaGVtYSk7XG4gICAgbGV0ICRmcm9tID0gc3RhcnREb2MucmVzb2x2ZShmcm9tKTtcbiAgICBsZXQgc2VsID0gbnVsbCwgZG9jID0gcGFyc2VyLnBhcnNlKHBhcmVudCwge1xuICAgICAgICB0b3BOb2RlOiAkZnJvbS5wYXJlbnQsXG4gICAgICAgIHRvcE1hdGNoOiAkZnJvbS5wYXJlbnQuY29udGVudE1hdGNoQXQoJGZyb20uaW5kZXgoKSksXG4gICAgICAgIHRvcE9wZW46IHRydWUsXG4gICAgICAgIGZyb206IGZyb21PZmZzZXQsXG4gICAgICAgIHRvOiB0b09mZnNldCxcbiAgICAgICAgcHJlc2VydmVXaGl0ZXNwYWNlOiAkZnJvbS5wYXJlbnQudHlwZS53aGl0ZXNwYWNlID09IFwicHJlXCIgPyBcImZ1bGxcIiA6IHRydWUsXG4gICAgICAgIGZpbmRQb3NpdGlvbnM6IGZpbmQsXG4gICAgICAgIHJ1bGVGcm9tTm9kZSxcbiAgICAgICAgY29udGV4dDogJGZyb21cbiAgICB9KTtcbiAgICBpZiAoZmluZCAmJiBmaW5kWzBdLnBvcyAhPSBudWxsKSB7XG4gICAgICAgIGxldCBhbmNob3IgPSBmaW5kWzBdLnBvcywgaGVhZCA9IGZpbmRbMV0gJiYgZmluZFsxXS5wb3M7XG4gICAgICAgIGlmIChoZWFkID09IG51bGwpXG4gICAgICAgICAgICBoZWFkID0gYW5jaG9yO1xuICAgICAgICBzZWwgPSB7IGFuY2hvcjogYW5jaG9yICsgZnJvbSwgaGVhZDogaGVhZCArIGZyb20gfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZG9jLCBzZWwsIGZyb20sIHRvIH07XG59XG5mdW5jdGlvbiBydWxlRnJvbU5vZGUoZG9tKSB7XG4gICAgbGV0IGRlc2MgPSBkb20ucG1WaWV3RGVzYztcbiAgICBpZiAoZGVzYykge1xuICAgICAgICByZXR1cm4gZGVzYy5wYXJzZVJ1bGUoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZG9tLm5vZGVOYW1lID09IFwiQlJcIiAmJiBkb20ucGFyZW50Tm9kZSkge1xuICAgICAgICAvLyBTYWZhcmkgcmVwbGFjZXMgdGhlIGxpc3QgaXRlbSBvciB0YWJsZSBjZWxsIHdpdGggYSBCUlxuICAgICAgICAvLyBkaXJlY3RseSBpbiB0aGUgbGlzdCBub2RlICg/ISkgaWYgeW91IGRlbGV0ZSB0aGUgbGFzdFxuICAgICAgICAvLyBjaGFyYWN0ZXIgaW4gYSBsaXN0IGl0ZW0gb3IgdGFibGUgY2VsbCAoIzcwOCwgIzg2MilcbiAgICAgICAgaWYgKHNhZmFyaSAmJiAvXih1bHxvbCkkL2kudGVzdChkb20ucGFyZW50Tm9kZS5ub2RlTmFtZSkpIHtcbiAgICAgICAgICAgIGxldCBza2lwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIHNraXAuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpKTtcbiAgICAgICAgICAgIHJldHVybiB7IHNraXAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkb20ucGFyZW50Tm9kZS5sYXN0Q2hpbGQgPT0gZG9tIHx8IHNhZmFyaSAmJiAvXih0cnx0YWJsZSkkL2kudGVzdChkb20ucGFyZW50Tm9kZS5ub2RlTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGlnbm9yZTogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKGRvbS5ub2RlTmFtZSA9PSBcIklNR1wiICYmIGRvbS5nZXRBdHRyaWJ1dGUoXCJtYXJrLXBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgIHJldHVybiB7IGlnbm9yZTogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmNvbnN0IGlzSW5saW5lID0gL14oYXxhYmJyfGFjcm9ueW18YnxiZFtpb118YmlnfGJyfGJ1dHRvbnxjaXRlfGNvZGV8ZGF0YShsaXN0KT98ZGVsfGRmbnxlbXxpfGltZ3xpbnN8a2JkfGxhYmVsfG1hcHxtYXJrfG1ldGVyfG91dHB1dHxxfHJ1Ynl8c3xzYW1wfHNtYWxsfHNwYW58c3Ryb25nfHN1W2JwXXx0aW1lfHV8dHR8dmFyKSQvaTtcbmZ1bmN0aW9uIHJlYWRET01DaGFuZ2UodmlldywgZnJvbSwgdG8sIHR5cGVPdmVyLCBhZGRlZE5vZGVzKSB7XG4gICAgbGV0IGNvbXBvc2l0aW9uSUQgPSB2aWV3LmlucHV0LmNvbXBvc2l0aW9uUGVuZGluZ0NoYW5nZXMgfHwgKHZpZXcuY29tcG9zaW5nID8gdmlldy5pbnB1dC5jb21wb3NpdGlvbklEIDogMCk7XG4gICAgdmlldy5pbnB1dC5jb21wb3NpdGlvblBlbmRpbmdDaGFuZ2VzID0gMDtcbiAgICBpZiAoZnJvbSA8IDApIHtcbiAgICAgICAgbGV0IG9yaWdpbiA9IHZpZXcuaW5wdXQubGFzdFNlbGVjdGlvblRpbWUgPiBEYXRlLm5vdygpIC0gNTAgPyB2aWV3LmlucHV0Lmxhc3RTZWxlY3Rpb25PcmlnaW4gOiBudWxsO1xuICAgICAgICBsZXQgbmV3U2VsID0gc2VsZWN0aW9uRnJvbURPTSh2aWV3LCBvcmlnaW4pO1xuICAgICAgICBpZiAobmV3U2VsICYmICF2aWV3LnN0YXRlLnNlbGVjdGlvbi5lcShuZXdTZWwpKSB7XG4gICAgICAgICAgICBpZiAoY2hyb21lICYmIGFuZHJvaWQgJiZcbiAgICAgICAgICAgICAgICB2aWV3LmlucHV0Lmxhc3RLZXlDb2RlID09PSAxMyAmJiBEYXRlLm5vdygpIC0gMTAwIDwgdmlldy5pbnB1dC5sYXN0S2V5Q29kZVRpbWUgJiZcbiAgICAgICAgICAgICAgICB2aWV3LnNvbWVQcm9wKFwiaGFuZGxlS2V5RG93blwiLCBmID0+IGYodmlldywga2V5RXZlbnQoMTMsIFwiRW50ZXJcIikpKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBsZXQgdHIgPSB2aWV3LnN0YXRlLnRyLnNldFNlbGVjdGlvbihuZXdTZWwpO1xuICAgICAgICAgICAgaWYgKG9yaWdpbiA9PSBcInBvaW50ZXJcIilcbiAgICAgICAgICAgICAgICB0ci5zZXRNZXRhKFwicG9pbnRlclwiLCB0cnVlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBcImtleVwiKVxuICAgICAgICAgICAgICAgIHRyLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICBpZiAoY29tcG9zaXRpb25JRClcbiAgICAgICAgICAgICAgICB0ci5zZXRNZXRhKFwiY29tcG9zaXRpb25cIiwgY29tcG9zaXRpb25JRCk7XG4gICAgICAgICAgICB2aWV3LmRpc3BhdGNoKHRyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCAkYmVmb3JlID0gdmlldy5zdGF0ZS5kb2MucmVzb2x2ZShmcm9tKTtcbiAgICBsZXQgc2hhcmVkID0gJGJlZm9yZS5zaGFyZWREZXB0aCh0byk7XG4gICAgZnJvbSA9ICRiZWZvcmUuYmVmb3JlKHNoYXJlZCArIDEpO1xuICAgIHRvID0gdmlldy5zdGF0ZS5kb2MucmVzb2x2ZSh0bykuYWZ0ZXIoc2hhcmVkICsgMSk7XG4gICAgbGV0IHNlbCA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuICAgIGxldCBwYXJzZSA9IHBhcnNlQmV0d2Vlbih2aWV3LCBmcm9tLCB0byk7XG4gICAgbGV0IGRvYyA9IHZpZXcuc3RhdGUuZG9jLCBjb21wYXJlID0gZG9jLnNsaWNlKHBhcnNlLmZyb20sIHBhcnNlLnRvKTtcbiAgICBsZXQgcHJlZmVycmVkUG9zLCBwcmVmZXJyZWRTaWRlO1xuICAgIC8vIFByZWZlciBhbmNob3JpbmcgdG8gZW5kIHdoZW4gQmFja3NwYWNlIGlzIHByZXNzZWRcbiAgICBpZiAodmlldy5pbnB1dC5sYXN0S2V5Q29kZSA9PT0gOCAmJiBEYXRlLm5vdygpIC0gMTAwIDwgdmlldy5pbnB1dC5sYXN0S2V5Q29kZVRpbWUpIHtcbiAgICAgICAgcHJlZmVycmVkUG9zID0gdmlldy5zdGF0ZS5zZWxlY3Rpb24udG87XG4gICAgICAgIHByZWZlcnJlZFNpZGUgPSBcImVuZFwiO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcHJlZmVycmVkUG9zID0gdmlldy5zdGF0ZS5zZWxlY3Rpb24uZnJvbTtcbiAgICAgICAgcHJlZmVycmVkU2lkZSA9IFwic3RhcnRcIjtcbiAgICB9XG4gICAgdmlldy5pbnB1dC5sYXN0S2V5Q29kZSA9IG51bGw7XG4gICAgbGV0IGNoYW5nZSA9IGZpbmREaWZmKGNvbXBhcmUuY29udGVudCwgcGFyc2UuZG9jLmNvbnRlbnQsIHBhcnNlLmZyb20sIHByZWZlcnJlZFBvcywgcHJlZmVycmVkU2lkZSk7XG4gICAgaWYgKGNoYW5nZSlcbiAgICAgICAgdmlldy5pbnB1dC5kb21DaGFuZ2VDb3VudCsrO1xuICAgIGlmICgoaW9zICYmIHZpZXcuaW5wdXQubGFzdElPU0VudGVyID4gRGF0ZS5ub3coKSAtIDIyNSB8fCBhbmRyb2lkKSAmJlxuICAgICAgICBhZGRlZE5vZGVzLnNvbWUobiA9PiBuLm5vZGVUeXBlID09IDEgJiYgIWlzSW5saW5lLnRlc3Qobi5ub2RlTmFtZSkpICYmXG4gICAgICAgICghY2hhbmdlIHx8IGNoYW5nZS5lbmRBID49IGNoYW5nZS5lbmRCKSAmJlxuICAgICAgICB2aWV3LnNvbWVQcm9wKFwiaGFuZGxlS2V5RG93blwiLCBmID0+IGYodmlldywga2V5RXZlbnQoMTMsIFwiRW50ZXJcIikpKSkge1xuICAgICAgICB2aWV3LmlucHV0Lmxhc3RJT1NFbnRlciA9IDA7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFjaGFuZ2UpIHtcbiAgICAgICAgaWYgKHR5cGVPdmVyICYmIHNlbCBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24gJiYgIXNlbC5lbXB0eSAmJiBzZWwuJGhlYWQuc2FtZVBhcmVudChzZWwuJGFuY2hvcikgJiZcbiAgICAgICAgICAgICF2aWV3LmNvbXBvc2luZyAmJiAhKHBhcnNlLnNlbCAmJiBwYXJzZS5zZWwuYW5jaG9yICE9IHBhcnNlLnNlbC5oZWFkKSkge1xuICAgICAgICAgICAgY2hhbmdlID0geyBzdGFydDogc2VsLmZyb20sIGVuZEE6IHNlbC50bywgZW5kQjogc2VsLnRvIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAocGFyc2Uuc2VsKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbCA9IHJlc29sdmVTZWxlY3Rpb24odmlldywgdmlldy5zdGF0ZS5kb2MsIHBhcnNlLnNlbCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbCAmJiAhc2VsLmVxKHZpZXcuc3RhdGUuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHIgPSB2aWV3LnN0YXRlLnRyLnNldFNlbGVjdGlvbihzZWwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcG9zaXRpb25JRClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyLnNldE1ldGEoXCJjb21wb3NpdGlvblwiLCBjb21wb3NpdGlvbklEKTtcbiAgICAgICAgICAgICAgICAgICAgdmlldy5kaXNwYXRjaCh0cik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBvdmVyd3JpdGluZyBhIHNlbGVjdGlvbiBieSB0eXBpbmcgbWF0Y2hlc1xuICAgIC8vIHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIHNlbGVjdGVkIGNvbnRlbnQsIGNyZWF0aW5nIGEgY2hhbmdlXG4gICAgLy8gdGhhdCdzIHNtYWxsZXIgdGhhbiB3aGF0IHdhcyBhY3R1YWxseSBvdmVyd3JpdHRlbi5cbiAgICBpZiAodmlldy5zdGF0ZS5zZWxlY3Rpb24uZnJvbSA8IHZpZXcuc3RhdGUuc2VsZWN0aW9uLnRvICYmXG4gICAgICAgIGNoYW5nZS5zdGFydCA9PSBjaGFuZ2UuZW5kQiAmJlxuICAgICAgICB2aWV3LnN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24pIHtcbiAgICAgICAgaWYgKGNoYW5nZS5zdGFydCA+IHZpZXcuc3RhdGUuc2VsZWN0aW9uLmZyb20gJiYgY2hhbmdlLnN0YXJ0IDw9IHZpZXcuc3RhdGUuc2VsZWN0aW9uLmZyb20gKyAyICYmXG4gICAgICAgICAgICB2aWV3LnN0YXRlLnNlbGVjdGlvbi5mcm9tID49IHBhcnNlLmZyb20pIHtcbiAgICAgICAgICAgIGNoYW5nZS5zdGFydCA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uLmZyb207XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlLmVuZEEgPCB2aWV3LnN0YXRlLnNlbGVjdGlvbi50byAmJiBjaGFuZ2UuZW5kQSA+PSB2aWV3LnN0YXRlLnNlbGVjdGlvbi50byAtIDIgJiZcbiAgICAgICAgICAgIHZpZXcuc3RhdGUuc2VsZWN0aW9uLnRvIDw9IHBhcnNlLnRvKSB7XG4gICAgICAgICAgICBjaGFuZ2UuZW5kQiArPSAodmlldy5zdGF0ZS5zZWxlY3Rpb24udG8gLSBjaGFuZ2UuZW5kQSk7XG4gICAgICAgICAgICBjaGFuZ2UuZW5kQSA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uLnRvO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIElFMTEgd2lsbCBpbnNlcnQgYSBub24tYnJlYWtpbmcgc3BhY2UgX2FoZWFkXyBvZiB0aGUgc3BhY2UgYWZ0ZXJcbiAgICAvLyB0aGUgY3Vyc29yIHNwYWNlIHdoZW4gYWRkaW5nIGEgc3BhY2UgYmVmb3JlIGFub3RoZXIgc3BhY2UuIFdoZW5cbiAgICAvLyB0aGF0IGhhcHBlbmVkLCBhZGp1c3QgdGhlIGNoYW5nZSB0byBjb3ZlciB0aGUgc3BhY2UgaW5zdGVhZC5cbiAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8PSAxMSAmJiBjaGFuZ2UuZW5kQiA9PSBjaGFuZ2Uuc3RhcnQgKyAxICYmXG4gICAgICAgIGNoYW5nZS5lbmRBID09IGNoYW5nZS5zdGFydCAmJiBjaGFuZ2Uuc3RhcnQgPiBwYXJzZS5mcm9tICYmXG4gICAgICAgIHBhcnNlLmRvYy50ZXh0QmV0d2VlbihjaGFuZ2Uuc3RhcnQgLSBwYXJzZS5mcm9tIC0gMSwgY2hhbmdlLnN0YXJ0IC0gcGFyc2UuZnJvbSArIDEpID09IFwiIFxcdTAwYTBcIikge1xuICAgICAgICBjaGFuZ2Uuc3RhcnQtLTtcbiAgICAgICAgY2hhbmdlLmVuZEEtLTtcbiAgICAgICAgY2hhbmdlLmVuZEItLTtcbiAgICB9XG4gICAgbGV0ICRmcm9tID0gcGFyc2UuZG9jLnJlc29sdmVOb0NhY2hlKGNoYW5nZS5zdGFydCAtIHBhcnNlLmZyb20pO1xuICAgIGxldCAkdG8gPSBwYXJzZS5kb2MucmVzb2x2ZU5vQ2FjaGUoY2hhbmdlLmVuZEIgLSBwYXJzZS5mcm9tKTtcbiAgICBsZXQgJGZyb21BID0gZG9jLnJlc29sdmUoY2hhbmdlLnN0YXJ0KTtcbiAgICBsZXQgaW5saW5lQ2hhbmdlID0gJGZyb20uc2FtZVBhcmVudCgkdG8pICYmICRmcm9tLnBhcmVudC5pbmxpbmVDb250ZW50ICYmICRmcm9tQS5lbmQoKSA+PSBjaGFuZ2UuZW5kQTtcbiAgICAvLyBJZiB0aGlzIGxvb2tzIGxpa2UgdGhlIGVmZmVjdCBvZiBwcmVzc2luZyBFbnRlciAob3Igd2FzIHJlY29yZGVkXG4gICAgLy8gYXMgYmVpbmcgYW4gaU9TIGVudGVyIHByZXNzKSwganVzdCBkaXNwYXRjaCBhbiBFbnRlciBrZXkgaW5zdGVhZC5cbiAgICBpZiAoKChpb3MgJiYgdmlldy5pbnB1dC5sYXN0SU9TRW50ZXIgPiBEYXRlLm5vdygpIC0gMjI1ICYmXG4gICAgICAgICghaW5saW5lQ2hhbmdlIHx8IGFkZGVkTm9kZXMuc29tZShuID0+IG4ubm9kZU5hbWUgPT0gXCJESVZcIiB8fCBuLm5vZGVOYW1lID09IFwiUFwiKSkpIHx8XG4gICAgICAgICghaW5saW5lQ2hhbmdlICYmICRmcm9tLnBvcyA8IHBhcnNlLmRvYy5jb250ZW50LnNpemUgJiZcbiAgICAgICAgICAgICghJGZyb20uc2FtZVBhcmVudCgkdG8pIHx8ICEkZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudCkgJiZcbiAgICAgICAgICAgICRmcm9tLnBvcyA8ICR0by5wb3MgJiYgIS9cXFMvLnRlc3QocGFyc2UuZG9jLnRleHRCZXR3ZWVuKCRmcm9tLnBvcywgJHRvLnBvcywgXCJcIiwgXCJcIikpKSkgJiZcbiAgICAgICAgdmlldy5zb21lUHJvcChcImhhbmRsZUtleURvd25cIiwgZiA9PiBmKHZpZXcsIGtleUV2ZW50KDEzLCBcIkVudGVyXCIpKSkpIHtcbiAgICAgICAgdmlldy5pbnB1dC5sYXN0SU9TRW50ZXIgPSAwO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFNhbWUgZm9yIGJhY2tzcGFjZVxuICAgIGlmICh2aWV3LnN0YXRlLnNlbGVjdGlvbi5hbmNob3IgPiBjaGFuZ2Uuc3RhcnQgJiZcbiAgICAgICAgbG9va3NMaWtlQmFja3NwYWNlKGRvYywgY2hhbmdlLnN0YXJ0LCBjaGFuZ2UuZW5kQSwgJGZyb20sICR0bykgJiZcbiAgICAgICAgdmlldy5zb21lUHJvcChcImhhbmRsZUtleURvd25cIiwgZiA9PiBmKHZpZXcsIGtleUV2ZW50KDgsIFwiQmFja3NwYWNlXCIpKSkpIHtcbiAgICAgICAgaWYgKGFuZHJvaWQgJiYgY2hyb21lKVxuICAgICAgICAgICAgdmlldy5kb21PYnNlcnZlci5zdXBwcmVzc1NlbGVjdGlvblVwZGF0ZXMoKTsgLy8gIzgyMFxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIENocm9tZSB3aWxsIG9jY2FzaW9uYWxseSwgZHVyaW5nIGNvbXBvc2l0aW9uLCBkZWxldGUgdGhlXG4gICAgLy8gZW50aXJlIGNvbXBvc2l0aW9uIGFuZCB0aGVuIGltbWVkaWF0ZWx5IGluc2VydCBpdCBhZ2Fpbi4gVGhpcyBpc1xuICAgIC8vIHVzZWQgdG8gZGV0ZWN0IHRoYXQgc2l0dWF0aW9uLlxuICAgIGlmIChjaHJvbWUgJiYgY2hhbmdlLmVuZEIgPT0gY2hhbmdlLnN0YXJ0KVxuICAgICAgICB2aWV3LmlucHV0Lmxhc3RDaHJvbWVEZWxldGUgPSBEYXRlLm5vdygpO1xuICAgIC8vIFRoaXMgdHJpZXMgdG8gZGV0ZWN0IEFuZHJvaWQgdmlydHVhbCBrZXlib2FyZFxuICAgIC8vIGVudGVyLWFuZC1waWNrLXN1Z2dlc3Rpb24gYWN0aW9uLiBUaGF0IHNvbWV0aW1lcyAoc2VlIGlzc3VlXG4gICAgLy8gIzEwNTkpIGZpcnN0IGZpcmVzIGEgRE9NIG11dGF0aW9uLCBiZWZvcmUgbW92aW5nIHRoZSBzZWxlY3Rpb24gdG9cbiAgICAvLyB0aGUgbmV3bHkgY3JlYXRlZCBibG9jay4gQW5kIHRoZW4sIGJlY2F1c2UgUHJvc2VNaXJyb3IgY2xlYW5zIHVwXG4gICAgLy8gdGhlIERPTSBzZWxlY3Rpb24sIGl0IGdpdmVzIHVwIG1vdmluZyB0aGUgc2VsZWN0aW9uIGVudGlyZWx5LFxuICAgIC8vIGxlYXZpbmcgdGhlIGN1cnNvciBpbiB0aGUgd3JvbmcgcGxhY2UuIFdoZW4gdGhhdCBoYXBwZW5zLCB3ZSBkcm9wXG4gICAgLy8gdGhlIG5ldyBwYXJhZ3JhcGggZnJvbSB0aGUgaW5pdGlhbCBjaGFuZ2UsIGFuZCBmaXJlIGEgc2ltdWxhdGVkXG4gICAgLy8gZW50ZXIga2V5IGFmdGVyd2FyZHMuXG4gICAgaWYgKGFuZHJvaWQgJiYgIWlubGluZUNoYW5nZSAmJiAkZnJvbS5zdGFydCgpICE9ICR0by5zdGFydCgpICYmICR0by5wYXJlbnRPZmZzZXQgPT0gMCAmJiAkZnJvbS5kZXB0aCA9PSAkdG8uZGVwdGggJiZcbiAgICAgICAgcGFyc2Uuc2VsICYmIHBhcnNlLnNlbC5hbmNob3IgPT0gcGFyc2Uuc2VsLmhlYWQgJiYgcGFyc2Uuc2VsLmhlYWQgPT0gY2hhbmdlLmVuZEEpIHtcbiAgICAgICAgY2hhbmdlLmVuZEIgLT0gMjtcbiAgICAgICAgJHRvID0gcGFyc2UuZG9jLnJlc29sdmVOb0NhY2hlKGNoYW5nZS5lbmRCIC0gcGFyc2UuZnJvbSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdmlldy5zb21lUHJvcChcImhhbmRsZUtleURvd25cIiwgZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYodmlldywga2V5RXZlbnQoMTMsIFwiRW50ZXJcIikpOyB9KTtcbiAgICAgICAgfSwgMjApO1xuICAgIH1cbiAgICBsZXQgY2hGcm9tID0gY2hhbmdlLnN0YXJ0LCBjaFRvID0gY2hhbmdlLmVuZEE7XG4gICAgbGV0IG1rVHIgPSAoYmFzZSkgPT4ge1xuICAgICAgICBsZXQgdHIgPSBiYXNlIHx8IHZpZXcuc3RhdGUudHIucmVwbGFjZShjaEZyb20sIGNoVG8sIHBhcnNlLmRvYy5zbGljZShjaGFuZ2Uuc3RhcnQgLSBwYXJzZS5mcm9tLCBjaGFuZ2UuZW5kQiAtIHBhcnNlLmZyb20pKTtcbiAgICAgICAgaWYgKHBhcnNlLnNlbCkge1xuICAgICAgICAgICAgbGV0IHNlbCA9IHJlc29sdmVTZWxlY3Rpb24odmlldywgdHIuZG9jLCBwYXJzZS5zZWwpO1xuICAgICAgICAgICAgLy8gQ2hyb21lIHdpbGwgc29tZXRpbWVzLCBkdXJpbmcgY29tcG9zaXRpb24sIHJlcG9ydCB0aGVcbiAgICAgICAgICAgIC8vIHNlbGVjdGlvbiBpbiB0aGUgd3JvbmcgcGxhY2UuIElmIGl0IGxvb2tzIGxpa2UgdGhhdCBpc1xuICAgICAgICAgICAgLy8gaGFwcGVuaW5nLCBkb24ndCB1cGRhdGUgdGhlIHNlbGVjdGlvbi5cbiAgICAgICAgICAgIC8vIEVkZ2UganVzdCBkb2Vzbid0IG1vdmUgdGhlIGN1cnNvciBmb3J3YXJkIHdoZW4geW91IHN0YXJ0IHR5cGluZ1xuICAgICAgICAgICAgLy8gaW4gYW4gZW1wdHkgYmxvY2sgb3IgYmV0d2VlbiBiciBub2Rlcy5cbiAgICAgICAgICAgIGlmIChzZWwgJiYgIShjaHJvbWUgJiYgdmlldy5jb21wb3NpbmcgJiYgc2VsLmVtcHR5ICYmXG4gICAgICAgICAgICAgICAgKGNoYW5nZS5zdGFydCAhPSBjaGFuZ2UuZW5kQiB8fCB2aWV3LmlucHV0Lmxhc3RDaHJvbWVEZWxldGUgPCBEYXRlLm5vdygpIC0gMTAwKSAmJlxuICAgICAgICAgICAgICAgIChzZWwuaGVhZCA9PSBjaEZyb20gfHwgc2VsLmhlYWQgPT0gdHIubWFwcGluZy5tYXAoY2hUbykgLSAxKSB8fFxuICAgICAgICAgICAgICAgIGllICYmIHNlbC5lbXB0eSAmJiBzZWwuaGVhZCA9PSBjaEZyb20pKVxuICAgICAgICAgICAgICAgIHRyLnNldFNlbGVjdGlvbihzZWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wb3NpdGlvbklEKVxuICAgICAgICAgICAgdHIuc2V0TWV0YShcImNvbXBvc2l0aW9uXCIsIGNvbXBvc2l0aW9uSUQpO1xuICAgICAgICByZXR1cm4gdHIuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICB9O1xuICAgIGxldCBtYXJrQ2hhbmdlO1xuICAgIGlmIChpbmxpbmVDaGFuZ2UpIHtcbiAgICAgICAgaWYgKCRmcm9tLnBvcyA9PSAkdG8ucG9zKSB7IC8vIERlbGV0aW9uXG4gICAgICAgICAgICAvLyBJRTExIHNvbWV0aW1lcyB3ZWlyZGx5IG1vdmVzIHRoZSBET00gc2VsZWN0aW9uIGFyb3VuZCBhZnRlclxuICAgICAgICAgICAgLy8gYmFja3NwYWNpbmcgb3V0IHRoZSBmaXJzdCBlbGVtZW50IGluIGEgdGV4dGJsb2NrXG4gICAgICAgICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8PSAxMSAmJiAkZnJvbS5wYXJlbnRPZmZzZXQgPT0gMCkge1xuICAgICAgICAgICAgICAgIHZpZXcuZG9tT2JzZXJ2ZXIuc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGVzKCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzZWxlY3Rpb25Ub0RPTSh2aWV3KSwgMjApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRyID0gbWtUcih2aWV3LnN0YXRlLnRyLmRlbGV0ZShjaEZyb20sIGNoVG8pKTtcbiAgICAgICAgICAgIGxldCBtYXJrcyA9IGRvYy5yZXNvbHZlKGNoYW5nZS5zdGFydCkubWFya3NBY3Jvc3MoZG9jLnJlc29sdmUoY2hhbmdlLmVuZEEpKTtcbiAgICAgICAgICAgIGlmIChtYXJrcylcbiAgICAgICAgICAgICAgICB0ci5lbnN1cmVNYXJrcyhtYXJrcyk7XG4gICAgICAgICAgICB2aWV3LmRpc3BhdGNoKHRyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICggLy8gQWRkaW5nIG9yIHJlbW92aW5nIGEgbWFya1xuICAgICAgICBjaGFuZ2UuZW5kQSA9PSBjaGFuZ2UuZW5kQiAmJlxuICAgICAgICAgICAgKG1hcmtDaGFuZ2UgPSBpc01hcmtDaGFuZ2UoJGZyb20ucGFyZW50LmNvbnRlbnQuY3V0KCRmcm9tLnBhcmVudE9mZnNldCwgJHRvLnBhcmVudE9mZnNldCksICRmcm9tQS5wYXJlbnQuY29udGVudC5jdXQoJGZyb21BLnBhcmVudE9mZnNldCwgY2hhbmdlLmVuZEEgLSAkZnJvbUEuc3RhcnQoKSkpKSkge1xuICAgICAgICAgICAgbGV0IHRyID0gbWtUcih2aWV3LnN0YXRlLnRyKTtcbiAgICAgICAgICAgIGlmIChtYXJrQ2hhbmdlLnR5cGUgPT0gXCJhZGRcIilcbiAgICAgICAgICAgICAgICB0ci5hZGRNYXJrKGNoRnJvbSwgY2hUbywgbWFya0NoYW5nZS5tYXJrKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0ci5yZW1vdmVNYXJrKGNoRnJvbSwgY2hUbywgbWFya0NoYW5nZS5tYXJrKTtcbiAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCRmcm9tLnBhcmVudC5jaGlsZCgkZnJvbS5pbmRleCgpKS5pc1RleHQgJiYgJGZyb20uaW5kZXgoKSA9PSAkdG8uaW5kZXgoKSAtICgkdG8udGV4dE9mZnNldCA/IDAgOiAxKSkge1xuICAgICAgICAgICAgLy8gQm90aCBwb3NpdGlvbnMgaW4gdGhlIHNhbWUgdGV4dCBub2RlIC0tIHNpbXBseSBpbnNlcnQgdGV4dFxuICAgICAgICAgICAgbGV0IHRleHQgPSAkZnJvbS5wYXJlbnQudGV4dEJldHdlZW4oJGZyb20ucGFyZW50T2Zmc2V0LCAkdG8ucGFyZW50T2Zmc2V0KTtcbiAgICAgICAgICAgIGxldCBkZWZsdCA9ICgpID0+IG1rVHIodmlldy5zdGF0ZS50ci5pbnNlcnRUZXh0KHRleHQsIGNoRnJvbSwgY2hUbykpO1xuICAgICAgICAgICAgaWYgKCF2aWV3LnNvbWVQcm9wKFwiaGFuZGxlVGV4dElucHV0XCIsIGYgPT4gZih2aWV3LCBjaEZyb20sIGNoVG8sIHRleHQsIGRlZmx0KSkpXG4gICAgICAgICAgICAgICAgdmlldy5kaXNwYXRjaChkZWZsdCgpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2gobWtUcigpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmlldy5kaXNwYXRjaChta1RyKCkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlc29sdmVTZWxlY3Rpb24odmlldywgZG9jLCBwYXJzZWRTZWwpIHtcbiAgICBpZiAoTWF0aC5tYXgocGFyc2VkU2VsLmFuY2hvciwgcGFyc2VkU2VsLmhlYWQpID4gZG9jLmNvbnRlbnQuc2l6ZSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHNlbGVjdGlvbkJldHdlZW4odmlldywgZG9jLnJlc29sdmUocGFyc2VkU2VsLmFuY2hvciksIGRvYy5yZXNvbHZlKHBhcnNlZFNlbC5oZWFkKSk7XG59XG4vLyBHaXZlbiB0d28gc2FtZS1sZW5ndGgsIG5vbi1lbXB0eSBmcmFnbWVudHMgb2YgaW5saW5lIGNvbnRlbnQsXG4vLyBkZXRlcm1pbmUgd2hldGhlciB0aGUgZmlyc3QgY291bGQgYmUgY3JlYXRlZCBmcm9tIHRoZSBzZWNvbmQgYnlcbi8vIHJlbW92aW5nIG9yIGFkZGluZyBhIHNpbmdsZSBtYXJrIHR5cGUuXG5mdW5jdGlvbiBpc01hcmtDaGFuZ2UoY3VyLCBwcmV2KSB7XG4gICAgbGV0IGN1ck1hcmtzID0gY3VyLmZpcnN0Q2hpbGQubWFya3MsIHByZXZNYXJrcyA9IHByZXYuZmlyc3RDaGlsZC5tYXJrcztcbiAgICBsZXQgYWRkZWQgPSBjdXJNYXJrcywgcmVtb3ZlZCA9IHByZXZNYXJrcywgdHlwZSwgbWFyaywgdXBkYXRlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldk1hcmtzLmxlbmd0aDsgaSsrKVxuICAgICAgICBhZGRlZCA9IHByZXZNYXJrc1tpXS5yZW1vdmVGcm9tU2V0KGFkZGVkKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck1hcmtzLmxlbmd0aDsgaSsrKVxuICAgICAgICByZW1vdmVkID0gY3VyTWFya3NbaV0ucmVtb3ZlRnJvbVNldChyZW1vdmVkKTtcbiAgICBpZiAoYWRkZWQubGVuZ3RoID09IDEgJiYgcmVtb3ZlZC5sZW5ndGggPT0gMCkge1xuICAgICAgICBtYXJrID0gYWRkZWRbMF07XG4gICAgICAgIHR5cGUgPSBcImFkZFwiO1xuICAgICAgICB1cGRhdGUgPSAobm9kZSkgPT4gbm9kZS5tYXJrKG1hcmsuYWRkVG9TZXQobm9kZS5tYXJrcykpO1xuICAgIH1cbiAgICBlbHNlIGlmIChhZGRlZC5sZW5ndGggPT0gMCAmJiByZW1vdmVkLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgIG1hcmsgPSByZW1vdmVkWzBdO1xuICAgICAgICB0eXBlID0gXCJyZW1vdmVcIjtcbiAgICAgICAgdXBkYXRlID0gKG5vZGUpID0+IG5vZGUubWFyayhtYXJrLnJlbW92ZUZyb21TZXQobm9kZS5tYXJrcykpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGxldCB1cGRhdGVkID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2LmNoaWxkQ291bnQ7IGkrKylcbiAgICAgICAgdXBkYXRlZC5wdXNoKHVwZGF0ZShwcmV2LmNoaWxkKGkpKSk7XG4gICAgaWYgKEZyYWdtZW50LmZyb20odXBkYXRlZCkuZXEoY3VyKSlcbiAgICAgICAgcmV0dXJuIHsgbWFyaywgdHlwZSB9O1xufVxuZnVuY3Rpb24gbG9va3NMaWtlQmFja3NwYWNlKG9sZCwgc3RhcnQsIGVuZCwgJG5ld1N0YXJ0LCAkbmV3RW5kKSB7XG4gICAgaWYgKCAvLyBUaGUgY29udGVudCBtdXN0IGhhdmUgc2hydW5rXG4gICAgZW5kIC0gc3RhcnQgPD0gJG5ld0VuZC5wb3MgLSAkbmV3U3RhcnQucG9zIHx8XG4gICAgICAgIC8vIG5ld0VuZCBtdXN0IHBvaW50IGRpcmVjdGx5IGF0IG9yIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJsb2NrIHRoYXQgbmV3U3RhcnQgcG9pbnRzIGludG9cbiAgICAgICAgc2tpcENsb3NpbmdBbmRPcGVuaW5nKCRuZXdTdGFydCwgdHJ1ZSwgZmFsc2UpIDwgJG5ld0VuZC5wb3MpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBsZXQgJHN0YXJ0ID0gb2xkLnJlc29sdmUoc3RhcnQpO1xuICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSwgcmF0aGVyIHRoYW4gam9pbmluZyBibG9ja3MsIHRoZSBjaGFuZ2UganVzdCByZW1vdmVkIGFuIGVudGlyZSBibG9ja1xuICAgIGlmICghJG5ld1N0YXJ0LnBhcmVudC5pc1RleHRibG9jaykge1xuICAgICAgICBsZXQgYWZ0ZXIgPSAkc3RhcnQubm9kZUFmdGVyO1xuICAgICAgICByZXR1cm4gYWZ0ZXIgIT0gbnVsbCAmJiBlbmQgPT0gc3RhcnQgKyBhZnRlci5ub2RlU2l6ZTtcbiAgICB9XG4gICAgLy8gU3RhcnQgbXVzdCBiZSBhdCB0aGUgZW5kIG9mIGEgYmxvY2tcbiAgICBpZiAoJHN0YXJ0LnBhcmVudE9mZnNldCA8ICRzdGFydC5wYXJlbnQuY29udGVudC5zaXplIHx8ICEkc3RhcnQucGFyZW50LmlzVGV4dGJsb2NrKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0ICRuZXh0ID0gb2xkLnJlc29sdmUoc2tpcENsb3NpbmdBbmRPcGVuaW5nKCRzdGFydCwgdHJ1ZSwgdHJ1ZSkpO1xuICAgIC8vIFRoZSBuZXh0IHRleHRibG9jayBtdXN0IHN0YXJ0IGJlZm9yZSBlbmQgYW5kIGVuZCBuZWFyIGl0XG4gICAgaWYgKCEkbmV4dC5wYXJlbnQuaXNUZXh0YmxvY2sgfHwgJG5leHQucG9zID4gZW5kIHx8XG4gICAgICAgIHNraXBDbG9zaW5nQW5kT3BlbmluZygkbmV4dCwgdHJ1ZSwgZmFsc2UpIDwgZW5kKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gVGhlIGZyYWdtZW50cyBhZnRlciB0aGUgam9pbiBwb2ludCBtdXN0IG1hdGNoXG4gICAgcmV0dXJuICRuZXdTdGFydC5wYXJlbnQuY29udGVudC5jdXQoJG5ld1N0YXJ0LnBhcmVudE9mZnNldCkuZXEoJG5leHQucGFyZW50LmNvbnRlbnQpO1xufVxuZnVuY3Rpb24gc2tpcENsb3NpbmdBbmRPcGVuaW5nKCRwb3MsIGZyb21FbmQsIG1heU9wZW4pIHtcbiAgICBsZXQgZGVwdGggPSAkcG9zLmRlcHRoLCBlbmQgPSBmcm9tRW5kID8gJHBvcy5lbmQoKSA6ICRwb3MucG9zO1xuICAgIHdoaWxlIChkZXB0aCA+IDAgJiYgKGZyb21FbmQgfHwgJHBvcy5pbmRleEFmdGVyKGRlcHRoKSA9PSAkcG9zLm5vZGUoZGVwdGgpLmNoaWxkQ291bnQpKSB7XG4gICAgICAgIGRlcHRoLS07XG4gICAgICAgIGVuZCsrO1xuICAgICAgICBmcm9tRW5kID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChtYXlPcGVuKSB7XG4gICAgICAgIGxldCBuZXh0ID0gJHBvcy5ub2RlKGRlcHRoKS5tYXliZUNoaWxkKCRwb3MuaW5kZXhBZnRlcihkZXB0aCkpO1xuICAgICAgICB3aGlsZSAobmV4dCAmJiAhbmV4dC5pc0xlYWYpIHtcbiAgICAgICAgICAgIG5leHQgPSBuZXh0LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICBlbmQrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZW5kO1xufVxuZnVuY3Rpb24gZmluZERpZmYoYSwgYiwgcG9zLCBwcmVmZXJyZWRQb3MsIHByZWZlcnJlZFNpZGUpIHtcbiAgICBsZXQgc3RhcnQgPSBhLmZpbmREaWZmU3RhcnQoYiwgcG9zKTtcbiAgICBpZiAoc3RhcnQgPT0gbnVsbClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgbGV0IHsgYTogZW5kQSwgYjogZW5kQiB9ID0gYS5maW5kRGlmZkVuZChiLCBwb3MgKyBhLnNpemUsIHBvcyArIGIuc2l6ZSk7XG4gICAgaWYgKHByZWZlcnJlZFNpZGUgPT0gXCJlbmRcIikge1xuICAgICAgICBsZXQgYWRqdXN0ID0gTWF0aC5tYXgoMCwgc3RhcnQgLSBNYXRoLm1pbihlbmRBLCBlbmRCKSk7XG4gICAgICAgIHByZWZlcnJlZFBvcyAtPSBlbmRBICsgYWRqdXN0IC0gc3RhcnQ7XG4gICAgfVxuICAgIGlmIChlbmRBIDwgc3RhcnQgJiYgYS5zaXplIDwgYi5zaXplKSB7XG4gICAgICAgIGxldCBtb3ZlID0gcHJlZmVycmVkUG9zIDw9IHN0YXJ0ICYmIHByZWZlcnJlZFBvcyA+PSBlbmRBID8gc3RhcnQgLSBwcmVmZXJyZWRQb3MgOiAwO1xuICAgICAgICBzdGFydCAtPSBtb3ZlO1xuICAgICAgICBpZiAoc3RhcnQgJiYgc3RhcnQgPCBiLnNpemUgJiYgaXNTdXJyb2dhdGVQYWlyKGIudGV4dEJldHdlZW4oc3RhcnQgLSAxLCBzdGFydCArIDEpKSlcbiAgICAgICAgICAgIHN0YXJ0ICs9IG1vdmUgPyAxIDogLTE7XG4gICAgICAgIGVuZEIgPSBzdGFydCArIChlbmRCIC0gZW5kQSk7XG4gICAgICAgIGVuZEEgPSBzdGFydDtcbiAgICB9XG4gICAgZWxzZSBpZiAoZW5kQiA8IHN0YXJ0KSB7XG4gICAgICAgIGxldCBtb3ZlID0gcHJlZmVycmVkUG9zIDw9IHN0YXJ0ICYmIHByZWZlcnJlZFBvcyA+PSBlbmRCID8gc3RhcnQgLSBwcmVmZXJyZWRQb3MgOiAwO1xuICAgICAgICBzdGFydCAtPSBtb3ZlO1xuICAgICAgICBpZiAoc3RhcnQgJiYgc3RhcnQgPCBhLnNpemUgJiYgaXNTdXJyb2dhdGVQYWlyKGEudGV4dEJldHdlZW4oc3RhcnQgLSAxLCBzdGFydCArIDEpKSlcbiAgICAgICAgICAgIHN0YXJ0ICs9IG1vdmUgPyAxIDogLTE7XG4gICAgICAgIGVuZEEgPSBzdGFydCArIChlbmRBIC0gZW5kQik7XG4gICAgICAgIGVuZEIgPSBzdGFydDtcbiAgICB9XG4gICAgcmV0dXJuIHsgc3RhcnQsIGVuZEEsIGVuZEIgfTtcbn1cbmZ1bmN0aW9uIGlzU3Vycm9nYXRlUGFpcihzdHIpIHtcbiAgICBpZiAoc3RyLmxlbmd0aCAhPSAyKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgbGV0IGEgPSBzdHIuY2hhckNvZGVBdCgwKSwgYiA9IHN0ci5jaGFyQ29kZUF0KDEpO1xuICAgIHJldHVybiBhID49IDB4REMwMCAmJiBhIDw9IDB4REZGRiAmJiBiID49IDB4RDgwMCAmJiBiIDw9IDB4REJGRjtcbn1cblxuLyoqXG5AaW50ZXJuYWxcbiovXG5jb25zdCBfX3BhcnNlRnJvbUNsaXBib2FyZCA9IHBhcnNlRnJvbUNsaXBib2FyZDtcbi8qKlxuQGludGVybmFsXG4qL1xuY29uc3QgX19lbmRDb21wb3NpdGlvbiA9IGVuZENvbXBvc2l0aW9uO1xuLyoqXG5BbiBlZGl0b3IgdmlldyBtYW5hZ2VzIHRoZSBET00gc3RydWN0dXJlIHRoYXQgcmVwcmVzZW50cyBhblxuZWRpdGFibGUgZG9jdW1lbnQuIEl0cyBzdGF0ZSBhbmQgYmVoYXZpb3IgYXJlIGRldGVybWluZWQgYnkgaXRzXG5bcHJvcHNdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyN2aWV3LkRpcmVjdEVkaXRvclByb3BzKS5cbiovXG5jbGFzcyBFZGl0b3JWaWV3IHtcbiAgICAvKipcbiAgICBDcmVhdGUgYSB2aWV3LiBgcGxhY2VgIG1heSBiZSBhIERPTSBub2RlIHRoYXQgdGhlIGVkaXRvciBzaG91bGRcbiAgICBiZSBhcHBlbmRlZCB0bywgYSBmdW5jdGlvbiB0aGF0IHdpbGwgcGxhY2UgaXQgaW50byB0aGUgZG9jdW1lbnQsXG4gICAgb3IgYW4gb2JqZWN0IHdob3NlIGBtb3VudGAgcHJvcGVydHkgaG9sZHMgdGhlIG5vZGUgdG8gdXNlIGFzIHRoZVxuICAgIGRvY3VtZW50IGNvbnRhaW5lci4gSWYgaXQgaXMgYG51bGxgLCB0aGUgZWRpdG9yIHdpbGwgbm90IGJlXG4gICAgYWRkZWQgdG8gdGhlIGRvY3VtZW50LlxuICAgICovXG4gICAgY29uc3RydWN0b3IocGxhY2UsIHByb3BzKSB7XG4gICAgICAgIHRoaXMuX3Jvb3QgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgQGludGVybmFsXG4gICAgICAgICovXG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgS2x1ZGdlIHVzZWQgdG8gd29yayBhcm91bmQgYSBDaHJvbWUgYnVnIEBpbnRlcm5hbFxuICAgICAgICAqL1xuICAgICAgICB0aGlzLnRyYWNrV3JpdGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb3VudGVkID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICBAaW50ZXJuYWxcbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy5tYXJrQ3Vyc29yID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgIEBpbnRlcm5hbFxuICAgICAgICAqL1xuICAgICAgICB0aGlzLmN1cnNvcldyYXBwZXIgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgQGludGVybmFsXG4gICAgICAgICovXG4gICAgICAgIHRoaXMubGFzdFNlbGVjdGVkVmlld0Rlc2MgPSB1bmRlZmluZWQ7XG4gICAgICAgIC8qKlxuICAgICAgICBAaW50ZXJuYWxcbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pbnB1dCA9IG5ldyBJbnB1dFN0YXRlO1xuICAgICAgICB0aGlzLnByZXZEaXJlY3RQbHVnaW5zID0gW107XG4gICAgICAgIHRoaXMucGx1Z2luVmlld3MgPSBbXTtcbiAgICAgICAgLyoqXG4gICAgICAgIEhvbGRzIGB0cnVlYCB3aGVuIGEgaGFjayBub2RlIGlzIG5lZWRlZCBpbiBGaXJlZm94IHRvIHByZXZlbnQgdGhlXG4gICAgICAgIFtzcGFjZSBpcyBlYXRlbiBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL1Byb3NlTWlycm9yL3Byb3NlbWlycm9yL2lzc3Vlcy82NTEpXG4gICAgICAgIEBpbnRlcm5hbFxuICAgICAgICAqL1xuICAgICAgICB0aGlzLnJlcXVpcmVzR2Vja29IYWNrTm9kZSA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgV2hlbiBlZGl0b3IgY29udGVudCBpcyBiZWluZyBkcmFnZ2VkLCB0aGlzIG9iamVjdCBjb250YWluc1xuICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJhZ2dlZCBzbGljZSBhbmQgd2hldGhlciBpdCBpcyBiZWluZ1xuICAgICAgICBjb3BpZWQgb3IgbW92ZWQuIEF0IGFueSBvdGhlciB0aW1lLCBpdCBpcyBudWxsLlxuICAgICAgICAqL1xuICAgICAgICB0aGlzLmRyYWdnaW5nID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcHJvcHMgPSBwcm9wcztcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHByb3BzLnN0YXRlO1xuICAgICAgICB0aGlzLmRpcmVjdFBsdWdpbnMgPSBwcm9wcy5wbHVnaW5zIHx8IFtdO1xuICAgICAgICB0aGlzLmRpcmVjdFBsdWdpbnMuZm9yRWFjaChjaGVja1N0YXRlQ29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCA9IHRoaXMuZGlzcGF0Y2guYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5kb20gPSAocGxhY2UgJiYgcGxhY2UubW91bnQpIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGlmIChwbGFjZSkge1xuICAgICAgICAgICAgaWYgKHBsYWNlLmFwcGVuZENoaWxkKVxuICAgICAgICAgICAgICAgIHBsYWNlLmFwcGVuZENoaWxkKHRoaXMuZG9tKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwbGFjZSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgcGxhY2UodGhpcy5kb20pO1xuICAgICAgICAgICAgZWxzZSBpZiAocGxhY2UubW91bnQpXG4gICAgICAgICAgICAgICAgdGhpcy5tb3VudGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRhYmxlID0gZ2V0RWRpdGFibGUodGhpcyk7XG4gICAgICAgIHVwZGF0ZUN1cnNvcldyYXBwZXIodGhpcyk7XG4gICAgICAgIHRoaXMubm9kZVZpZXdzID0gYnVpbGROb2RlVmlld3ModGhpcyk7XG4gICAgICAgIHRoaXMuZG9jVmlldyA9IGRvY1ZpZXdEZXNjKHRoaXMuc3RhdGUuZG9jLCBjb21wdXRlRG9jRGVjbyh0aGlzKSwgdmlld0RlY29yYXRpb25zKHRoaXMpLCB0aGlzLmRvbSwgdGhpcyk7XG4gICAgICAgIHRoaXMuZG9tT2JzZXJ2ZXIgPSBuZXcgRE9NT2JzZXJ2ZXIodGhpcywgKGZyb20sIHRvLCB0eXBlT3ZlciwgYWRkZWQpID0+IHJlYWRET01DaGFuZ2UodGhpcywgZnJvbSwgdG8sIHR5cGVPdmVyLCBhZGRlZCkpO1xuICAgICAgICB0aGlzLmRvbU9ic2VydmVyLnN0YXJ0KCk7XG4gICAgICAgIGluaXRJbnB1dCh0aGlzKTtcbiAgICAgICAgdGhpcy51cGRhdGVQbHVnaW5WaWV3cygpO1xuICAgIH1cbiAgICAvKipcbiAgICBIb2xkcyBgdHJ1ZWAgd2hlbiBhXG4gICAgW2NvbXBvc2l0aW9uXShodHRwczovL3czYy5naXRodWIuaW8vdWlldmVudHMvI2V2ZW50cy1jb21wb3NpdGlvbmV2ZW50cylcbiAgICBpcyBhY3RpdmUuXG4gICAgKi9cbiAgICBnZXQgY29tcG9zaW5nKCkgeyByZXR1cm4gdGhpcy5pbnB1dC5jb21wb3Npbmc7IH1cbiAgICAvKipcbiAgICBUaGUgdmlldydzIGN1cnJlbnQgW3Byb3BzXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jdmlldy5FZGl0b3JQcm9wcykuXG4gICAgKi9cbiAgICBnZXQgcHJvcHMoKSB7XG4gICAgICAgIGlmICh0aGlzLl9wcm9wcy5zdGF0ZSAhPSB0aGlzLnN0YXRlKSB7XG4gICAgICAgICAgICBsZXQgcHJldiA9IHRoaXMuX3Byb3BzO1xuICAgICAgICAgICAgdGhpcy5fcHJvcHMgPSB7fTtcbiAgICAgICAgICAgIGZvciAobGV0IG5hbWUgaW4gcHJldilcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9wc1tuYW1lXSA9IHByZXZbbmFtZV07XG4gICAgICAgICAgICB0aGlzLl9wcm9wcy5zdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BzO1xuICAgIH1cbiAgICAvKipcbiAgICBVcGRhdGUgdGhlIHZpZXcncyBwcm9wcy4gV2lsbCBpbW1lZGlhdGVseSBjYXVzZSBhbiB1cGRhdGUgdG9cbiAgICB0aGUgRE9NLlxuICAgICovXG4gICAgdXBkYXRlKHByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wcy5oYW5kbGVET01FdmVudHMgIT0gdGhpcy5fcHJvcHMuaGFuZGxlRE9NRXZlbnRzKVxuICAgICAgICAgICAgZW5zdXJlTGlzdGVuZXJzKHRoaXMpO1xuICAgICAgICBsZXQgcHJldlByb3BzID0gdGhpcy5fcHJvcHM7XG4gICAgICAgIHRoaXMuX3Byb3BzID0gcHJvcHM7XG4gICAgICAgIGlmIChwcm9wcy5wbHVnaW5zKSB7XG4gICAgICAgICAgICBwcm9wcy5wbHVnaW5zLmZvckVhY2goY2hlY2tTdGF0ZUNvbXBvbmVudCk7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdFBsdWdpbnMgPSBwcm9wcy5wbHVnaW5zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGVJbm5lcihwcm9wcy5zdGF0ZSwgcHJldlByb3BzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgVXBkYXRlIHRoZSB2aWV3IGJ5IHVwZGF0aW5nIGV4aXN0aW5nIHByb3BzIG9iamVjdCB3aXRoIHRoZSBvYmplY3RcbiAgICBnaXZlbiBhcyBhcmd1bWVudC4gRXF1aXZhbGVudCB0byBgdmlldy51cGRhdGUoT2JqZWN0LmFzc2lnbih7fSxcbiAgICB2aWV3LnByb3BzLCBwcm9wcykpYC5cbiAgICAqL1xuICAgIHNldFByb3BzKHByb3BzKSB7XG4gICAgICAgIGxldCB1cGRhdGVkID0ge307XG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcy5fcHJvcHMpXG4gICAgICAgICAgICB1cGRhdGVkW25hbWVdID0gdGhpcy5fcHJvcHNbbmFtZV07XG4gICAgICAgIHVwZGF0ZWQuc3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgICBmb3IgKGxldCBuYW1lIGluIHByb3BzKVxuICAgICAgICAgICAgdXBkYXRlZFtuYW1lXSA9IHByb3BzW25hbWVdO1xuICAgICAgICB0aGlzLnVwZGF0ZSh1cGRhdGVkKTtcbiAgICB9XG4gICAgLyoqXG4gICAgVXBkYXRlIHRoZSBlZGl0b3IncyBgc3RhdGVgIHByb3AsIHdpdGhvdXQgdG91Y2hpbmcgYW55IG9mIHRoZVxuICAgIG90aGVyIHByb3BzLlxuICAgICovXG4gICAgdXBkYXRlU3RhdGUoc3RhdGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZUlubmVyKHN0YXRlLCB0aGlzLl9wcm9wcyk7XG4gICAgfVxuICAgIHVwZGF0ZVN0YXRlSW5uZXIoc3RhdGUsIHByZXZQcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGxldCBwcmV2ID0gdGhpcy5zdGF0ZSwgcmVkcmF3ID0gZmFsc2UsIHVwZGF0ZVNlbCA9IGZhbHNlO1xuICAgICAgICAvLyBXaGVuIHN0b3JlZCBtYXJrcyBhcmUgYWRkZWQsIHN0b3AgY29tcG9zaXRpb24sIHNvIHRoYXQgdGhleSBjYW5cbiAgICAgICAgLy8gYmUgZGlzcGxheWVkLlxuICAgICAgICBpZiAoc3RhdGUuc3RvcmVkTWFya3MgJiYgdGhpcy5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgIGNsZWFyQ29tcG9zaXRpb24odGhpcyk7XG4gICAgICAgICAgICB1cGRhdGVTZWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgbGV0IHBsdWdpbnNDaGFuZ2VkID0gcHJldi5wbHVnaW5zICE9IHN0YXRlLnBsdWdpbnMgfHwgdGhpcy5fcHJvcHMucGx1Z2lucyAhPSBwcmV2UHJvcHMucGx1Z2lucztcbiAgICAgICAgaWYgKHBsdWdpbnNDaGFuZ2VkIHx8IHRoaXMuX3Byb3BzLnBsdWdpbnMgIT0gcHJldlByb3BzLnBsdWdpbnMgfHwgdGhpcy5fcHJvcHMubm9kZVZpZXdzICE9IHByZXZQcm9wcy5ub2RlVmlld3MpIHtcbiAgICAgICAgICAgIGxldCBub2RlVmlld3MgPSBidWlsZE5vZGVWaWV3cyh0aGlzKTtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VkTm9kZVZpZXdzKG5vZGVWaWV3cywgdGhpcy5ub2RlVmlld3MpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlVmlld3MgPSBub2RlVmlld3M7XG4gICAgICAgICAgICAgICAgcmVkcmF3ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGx1Z2luc0NoYW5nZWQgfHwgcHJldlByb3BzLmhhbmRsZURPTUV2ZW50cyAhPSB0aGlzLl9wcm9wcy5oYW5kbGVET01FdmVudHMpIHtcbiAgICAgICAgICAgIGVuc3VyZUxpc3RlbmVycyh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRhYmxlID0gZ2V0RWRpdGFibGUodGhpcyk7XG4gICAgICAgIHVwZGF0ZUN1cnNvcldyYXBwZXIodGhpcyk7XG4gICAgICAgIGxldCBpbm5lckRlY28gPSB2aWV3RGVjb3JhdGlvbnModGhpcyksIG91dGVyRGVjbyA9IGNvbXB1dGVEb2NEZWNvKHRoaXMpO1xuICAgICAgICBsZXQgc2Nyb2xsID0gcHJldi5wbHVnaW5zICE9IHN0YXRlLnBsdWdpbnMgJiYgIXByZXYuZG9jLmVxKHN0YXRlLmRvYykgPyBcInJlc2V0XCJcbiAgICAgICAgICAgIDogc3RhdGUuc2Nyb2xsVG9TZWxlY3Rpb24gPiBwcmV2LnNjcm9sbFRvU2VsZWN0aW9uID8gXCJ0byBzZWxlY3Rpb25cIiA6IFwicHJlc2VydmVcIjtcbiAgICAgICAgbGV0IHVwZGF0ZURvYyA9IHJlZHJhdyB8fCAhdGhpcy5kb2NWaWV3Lm1hdGNoZXNOb2RlKHN0YXRlLmRvYywgb3V0ZXJEZWNvLCBpbm5lckRlY28pO1xuICAgICAgICBpZiAodXBkYXRlRG9jIHx8ICFzdGF0ZS5zZWxlY3Rpb24uZXEocHJldi5zZWxlY3Rpb24pKVxuICAgICAgICAgICAgdXBkYXRlU2VsID0gdHJ1ZTtcbiAgICAgICAgbGV0IG9sZFNjcm9sbFBvcyA9IHNjcm9sbCA9PSBcInByZXNlcnZlXCIgJiYgdXBkYXRlU2VsICYmIHRoaXMuZG9tLnN0eWxlLm92ZXJmbG93QW5jaG9yID09IG51bGwgJiYgc3RvcmVTY3JvbGxQb3ModGhpcyk7XG4gICAgICAgIGlmICh1cGRhdGVTZWwpIHtcbiAgICAgICAgICAgIHRoaXMuZG9tT2JzZXJ2ZXIuc3RvcCgpO1xuICAgICAgICAgICAgLy8gV29yayBhcm91bmQgYW4gaXNzdWUgaW4gQ2hyb21lLCBJRSwgYW5kIEVkZ2Ugd2hlcmUgY2hhbmdpbmdcbiAgICAgICAgICAgIC8vIHRoZSBET00gYXJvdW5kIGFuIGFjdGl2ZSBzZWxlY3Rpb24gcHV0cyBpdCBpbnRvIGEgYnJva2VuXG4gICAgICAgICAgICAvLyBzdGF0ZSB3aGVyZSB0aGUgdGhpbmcgdGhlIHVzZXIgc2VlcyBkaWZmZXJzIGZyb20gdGhlXG4gICAgICAgICAgICAvLyBzZWxlY3Rpb24gcmVwb3J0ZWQgYnkgdGhlIFNlbGVjdGlvbiBvYmplY3QgKCM3MTAsICM5NzMsXG4gICAgICAgICAgICAvLyAjMTAxMSwgIzEwMTMsICMxMDM1KS5cbiAgICAgICAgICAgIGxldCBmb3JjZVNlbFVwZGF0ZSA9IHVwZGF0ZURvYyAmJiAoaWUgfHwgY2hyb21lKSAmJiAhdGhpcy5jb21wb3NpbmcgJiZcbiAgICAgICAgICAgICAgICAhcHJldi5zZWxlY3Rpb24uZW1wdHkgJiYgIXN0YXRlLnNlbGVjdGlvbi5lbXB0eSAmJiBzZWxlY3Rpb25Db250ZXh0Q2hhbmdlZChwcmV2LnNlbGVjdGlvbiwgc3RhdGUuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGlmICh1cGRhdGVEb2MpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbm9kZSB0aGF0IHRoZSBzZWxlY3Rpb24gcG9pbnRzIGludG8gaXMgd3JpdHRlbiB0byxcbiAgICAgICAgICAgICAgICAvLyBDaHJvbWUgc29tZXRpbWVzIHN0YXJ0cyBtaXNyZXBvcnRpbmcgdGhlIHNlbGVjdGlvbiwgc28gdGhpc1xuICAgICAgICAgICAgICAgIC8vIHRyYWNrcyB0aGF0IGFuZCBmb3JjZXMgYSBzZWxlY3Rpb24gcmVzZXQgd2hlbiBvdXIgdXBkYXRlXG4gICAgICAgICAgICAgICAgLy8gZGlkIHdyaXRlIHRvIHRoZSBub2RlLlxuICAgICAgICAgICAgICAgIGxldCBjaHJvbWVLbHVkZ2UgPSBjaHJvbWUgPyAodGhpcy50cmFja1dyaXRlcyA9IHRoaXMuZG9tU2VsZWN0aW9uUmFuZ2UoKS5mb2N1c05vZGUpIDogbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21wb3NpbmcpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQuY29tcG9zaXRpb25Ob2RlID0gZmluZENvbXBvc2l0aW9uTm9kZSh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAocmVkcmF3IHx8ICF0aGlzLmRvY1ZpZXcudXBkYXRlKHN0YXRlLmRvYywgb3V0ZXJEZWNvLCBpbm5lckRlY28sIHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jVmlldy51cGRhdGVPdXRlckRlY28ob3V0ZXJEZWNvKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2NWaWV3LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2NWaWV3ID0gZG9jVmlld0Rlc2Moc3RhdGUuZG9jLCBvdXRlckRlY28sIGlubmVyRGVjbywgdGhpcy5kb20sIHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hyb21lS2x1ZGdlICYmICghdGhpcy50cmFja1dyaXRlcyB8fCAhdGhpcy5kb20uY29udGFpbnModGhpcy50cmFja1dyaXRlcykpKVxuICAgICAgICAgICAgICAgICAgICBmb3JjZVNlbFVwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXb3JrIGFyb3VuZCBmb3IgYW4gaXNzdWUgd2hlcmUgYW4gdXBkYXRlIGFycml2aW5nIHJpZ2h0IGJldHdlZW5cbiAgICAgICAgICAgIC8vIGEgRE9NIHNlbGVjdGlvbiBjaGFuZ2UgYW5kIHRoZSBcInNlbGVjdGlvbmNoYW5nZVwiIGV2ZW50IGZvciBpdFxuICAgICAgICAgICAgLy8gY2FuIGNhdXNlIGEgc3B1cmlvdXMgRE9NIHNlbGVjdGlvbiB1cGRhdGUsIGRpc3J1cHRpbmcgbW91c2VcbiAgICAgICAgICAgIC8vIGRyYWcgc2VsZWN0aW9uLlxuICAgICAgICAgICAgaWYgKGZvcmNlU2VsVXBkYXRlIHx8XG4gICAgICAgICAgICAgICAgISh0aGlzLmlucHV0Lm1vdXNlRG93biAmJiB0aGlzLmRvbU9ic2VydmVyLmN1cnJlbnRTZWxlY3Rpb24uZXEodGhpcy5kb21TZWxlY3Rpb25SYW5nZSgpKSAmJlxuICAgICAgICAgICAgICAgICAgICBhbmNob3JJblJpZ2h0UGxhY2UodGhpcykpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uVG9ET00odGhpcywgZm9yY2VTZWxVcGRhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3luY05vZGVTZWxlY3Rpb24odGhpcywgc3RhdGUuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvbU9ic2VydmVyLnNldEN1clNlbGVjdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kb21PYnNlcnZlci5zdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlUGx1Z2luVmlld3MocHJldik7XG4gICAgICAgIGlmICgoKF9hID0gdGhpcy5kcmFnZ2luZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGUpICYmICFwcmV2LmRvYy5lcShzdGF0ZS5kb2MpKVxuICAgICAgICAgICAgdGhpcy51cGRhdGVEcmFnZ2VkTm9kZSh0aGlzLmRyYWdnaW5nLCBwcmV2KTtcbiAgICAgICAgaWYgKHNjcm9sbCA9PSBcInJlc2V0XCIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9tLnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2Nyb2xsID09IFwidG8gc2VsZWN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvbGRTY3JvbGxQb3MpIHtcbiAgICAgICAgICAgIHJlc2V0U2Nyb2xsUG9zKG9sZFNjcm9sbFBvcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgQGludGVybmFsXG4gICAgKi9cbiAgICBzY3JvbGxUb1NlbGVjdGlvbigpIHtcbiAgICAgICAgbGV0IHN0YXJ0RE9NID0gdGhpcy5kb21TZWxlY3Rpb25SYW5nZSgpLmZvY3VzTm9kZTtcbiAgICAgICAgaWYgKCFzdGFydERPTSB8fCAhdGhpcy5kb20uY29udGFpbnMoc3RhcnRET00ubm9kZVR5cGUgPT0gMSA/IHN0YXJ0RE9NIDogc3RhcnRET00ucGFyZW50Tm9kZSkpIDtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zb21lUHJvcChcImhhbmRsZVNjcm9sbFRvU2VsZWN0aW9uXCIsIGYgPT4gZih0aGlzKSkpIDtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zdGF0ZS5zZWxlY3Rpb24gaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5kb2NWaWV3LmRvbUFmdGVyUG9zKHRoaXMuc3RhdGUuc2VsZWN0aW9uLmZyb20pO1xuICAgICAgICAgICAgaWYgKHRhcmdldC5ub2RlVHlwZSA9PSAxKVxuICAgICAgICAgICAgICAgIHNjcm9sbFJlY3RJbnRvVmlldyh0aGlzLCB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHN0YXJ0RE9NKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNjcm9sbFJlY3RJbnRvVmlldyh0aGlzLCB0aGlzLmNvb3Jkc0F0UG9zKHRoaXMuc3RhdGUuc2VsZWN0aW9uLmhlYWQsIDEpLCBzdGFydERPTSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVzdHJveVBsdWdpblZpZXdzKCkge1xuICAgICAgICBsZXQgdmlldztcbiAgICAgICAgd2hpbGUgKHZpZXcgPSB0aGlzLnBsdWdpblZpZXdzLnBvcCgpKVxuICAgICAgICAgICAgaWYgKHZpZXcuZGVzdHJveSlcbiAgICAgICAgICAgICAgICB2aWV3LmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdXBkYXRlUGx1Z2luVmlld3MocHJldlN0YXRlKSB7XG4gICAgICAgIGlmICghcHJldlN0YXRlIHx8IHByZXZTdGF0ZS5wbHVnaW5zICE9IHRoaXMuc3RhdGUucGx1Z2lucyB8fCB0aGlzLmRpcmVjdFBsdWdpbnMgIT0gdGhpcy5wcmV2RGlyZWN0UGx1Z2lucykge1xuICAgICAgICAgICAgdGhpcy5wcmV2RGlyZWN0UGx1Z2lucyA9IHRoaXMuZGlyZWN0UGx1Z2lucztcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVBsdWdpblZpZXdzKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGlyZWN0UGx1Z2lucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBwbHVnaW4gPSB0aGlzLmRpcmVjdFBsdWdpbnNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHBsdWdpbi5zcGVjLnZpZXcpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luVmlld3MucHVzaChwbHVnaW4uc3BlYy52aWV3KHRoaXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGF0ZS5wbHVnaW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBsdWdpbiA9IHRoaXMuc3RhdGUucGx1Z2luc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAocGx1Z2luLnNwZWMudmlldylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5WaWV3cy5wdXNoKHBsdWdpbi5zcGVjLnZpZXcodGhpcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBsdWdpblZpZXdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBsdWdpblZpZXcgPSB0aGlzLnBsdWdpblZpZXdzW2ldO1xuICAgICAgICAgICAgICAgIGlmIChwbHVnaW5WaWV3LnVwZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgcGx1Z2luVmlldy51cGRhdGUodGhpcywgcHJldlN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGVEcmFnZ2VkTm9kZShkcmFnZ2luZywgcHJldikge1xuICAgICAgICBsZXQgc2VsID0gZHJhZ2dpbmcubm9kZSwgZm91bmQgPSAtMTtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuZG9jLm5vZGVBdChzZWwuZnJvbSkgPT0gc2VsLm5vZGUpIHtcbiAgICAgICAgICAgIGZvdW5kID0gc2VsLmZyb207XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgbW92ZWRQb3MgPSBzZWwuZnJvbSArICh0aGlzLnN0YXRlLmRvYy5jb250ZW50LnNpemUgLSBwcmV2LmRvYy5jb250ZW50LnNpemUpO1xuICAgICAgICAgICAgbGV0IG1vdmVkID0gbW92ZWRQb3MgPiAwICYmIHRoaXMuc3RhdGUuZG9jLm5vZGVBdChtb3ZlZFBvcyk7XG4gICAgICAgICAgICBpZiAobW92ZWQgPT0gc2VsLm5vZGUpXG4gICAgICAgICAgICAgICAgZm91bmQgPSBtb3ZlZFBvcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyYWdnaW5nID0gbmV3IERyYWdnaW5nKGRyYWdnaW5nLnNsaWNlLCBkcmFnZ2luZy5tb3ZlLCBmb3VuZCA8IDAgPyB1bmRlZmluZWQgOiBOb2RlU2VsZWN0aW9uLmNyZWF0ZSh0aGlzLnN0YXRlLmRvYywgZm91bmQpKTtcbiAgICB9XG4gICAgc29tZVByb3AocHJvcE5hbWUsIGYpIHtcbiAgICAgICAgbGV0IHByb3AgPSB0aGlzLl9wcm9wcyAmJiB0aGlzLl9wcm9wc1twcm9wTmFtZV0sIHZhbHVlO1xuICAgICAgICBpZiAocHJvcCAhPSBudWxsICYmICh2YWx1ZSA9IGYgPyBmKHByb3ApIDogcHJvcCkpXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kaXJlY3RQbHVnaW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcHJvcCA9IHRoaXMuZGlyZWN0UGx1Z2luc1tpXS5wcm9wc1twcm9wTmFtZV07XG4gICAgICAgICAgICBpZiAocHJvcCAhPSBudWxsICYmICh2YWx1ZSA9IGYgPyBmKHByb3ApIDogcHJvcCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwbHVnaW5zID0gdGhpcy5zdGF0ZS5wbHVnaW5zO1xuICAgICAgICBpZiAocGx1Z2lucylcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBwcm9wID0gcGx1Z2luc1tpXS5wcm9wc1twcm9wTmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKHByb3AgIT0gbnVsbCAmJiAodmFsdWUgPSBmID8gZihwcm9wKSA6IHByb3ApKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgIFF1ZXJ5IHdoZXRoZXIgdGhlIHZpZXcgaGFzIGZvY3VzLlxuICAgICovXG4gICAgaGFzRm9jdXMoKSB7XG4gICAgICAgIC8vIFdvcmsgYXJvdW5kIElFIG5vdCBoYW5kbGluZyBmb2N1cyBjb3JyZWN0bHkgaWYgcmVzaXplIGhhbmRsZXMgYXJlIHNob3duLlxuICAgICAgICAvLyBJZiB0aGUgY3Vyc29yIGlzIGluc2lkZSBhbiBlbGVtZW50IHdpdGggcmVzaXplIGhhbmRsZXMsIGFjdGl2ZUVsZW1lbnRcbiAgICAgICAgLy8gd2lsbCBiZSB0aGF0IGVsZW1lbnQgaW5zdGVhZCBvZiB0aGlzLmRvbS5cbiAgICAgICAgaWYgKGllKSB7XG4gICAgICAgICAgICAvLyBJZiBhY3RpdmVFbGVtZW50IGlzIHdpdGhpbiB0aGlzLmRvbSwgYW5kIHRoZXJlIGFyZSBubyBvdGhlciBlbGVtZW50c1xuICAgICAgICAgICAgLy8gc2V0dGluZyBgY29udGVudGVkaXRhYmxlYCB0byBmYWxzZSBpbiBiZXR3ZWVuLCB0cmVhdCBpdCBhcyBmb2N1c2VkLlxuICAgICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLnJvb3QuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChub2RlID09IHRoaXMuZG9tKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgaWYgKCFub2RlIHx8ICF0aGlzLmRvbS5jb250YWlucyhub2RlKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB3aGlsZSAobm9kZSAmJiB0aGlzLmRvbSAhPSBub2RlICYmIHRoaXMuZG9tLmNvbnRhaW5zKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuY29udGVudEVkaXRhYmxlID09ICdmYWxzZScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm9vdC5hY3RpdmVFbGVtZW50ID09IHRoaXMuZG9tO1xuICAgIH1cbiAgICAvKipcbiAgICBGb2N1cyB0aGUgZWRpdG9yLlxuICAgICovXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIHRoaXMuZG9tT2JzZXJ2ZXIuc3RvcCgpO1xuICAgICAgICBpZiAodGhpcy5lZGl0YWJsZSlcbiAgICAgICAgICAgIGZvY3VzUHJldmVudFNjcm9sbCh0aGlzLmRvbSk7XG4gICAgICAgIHNlbGVjdGlvblRvRE9NKHRoaXMpO1xuICAgICAgICB0aGlzLmRvbU9ic2VydmVyLnN0YXJ0KCk7XG4gICAgfVxuICAgIC8qKlxuICAgIEdldCB0aGUgZG9jdW1lbnQgcm9vdCBpbiB3aGljaCB0aGUgZWRpdG9yIGV4aXN0cy4gVGhpcyB3aWxsXG4gICAgdXN1YWxseSBiZSB0aGUgdG9wLWxldmVsIGBkb2N1bWVudGAsIGJ1dCBtaWdodCBiZSBhIFtzaGFkb3dcbiAgICBET01dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1dlYl9Db21wb25lbnRzL1NoYWRvd19ET00pXG4gICAgcm9vdCBpZiB0aGUgZWRpdG9yIGlzIGluc2lkZSBvbmUuXG4gICAgKi9cbiAgICBnZXQgcm9vdCgpIHtcbiAgICAgICAgbGV0IGNhY2hlZCA9IHRoaXMuX3Jvb3Q7XG4gICAgICAgIGlmIChjYWNoZWQgPT0gbnVsbClcbiAgICAgICAgICAgIGZvciAobGV0IHNlYXJjaCA9IHRoaXMuZG9tLnBhcmVudE5vZGU7IHNlYXJjaDsgc2VhcmNoID0gc2VhcmNoLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VhcmNoLm5vZGVUeXBlID09IDkgfHwgKHNlYXJjaC5ub2RlVHlwZSA9PSAxMSAmJiBzZWFyY2guaG9zdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWFyY2guZ2V0U2VsZWN0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKHNlYXJjaCkuZ2V0U2VsZWN0aW9uID0gKCkgPT4gc2VhcmNoLm93bmVyRG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yb290ID0gc2VhcmNoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhY2hlZCB8fCBkb2N1bWVudDtcbiAgICB9XG4gICAgLyoqXG4gICAgV2hlbiBhbiBleGlzdGluZyBlZGl0b3IgdmlldyBpcyBtb3ZlZCB0byBhIG5ldyBkb2N1bWVudCBvclxuICAgIHNoYWRvdyB0cmVlLCBjYWxsIHRoaXMgdG8gbWFrZSBpdCByZWNvbXB1dGUgaXRzIHJvb3QuXG4gICAgKi9cbiAgICB1cGRhdGVSb290KCkge1xuICAgICAgICB0aGlzLl9yb290ID0gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgR2l2ZW4gYSBwYWlyIG9mIHZpZXdwb3J0IGNvb3JkaW5hdGVzLCByZXR1cm4gdGhlIGRvY3VtZW50XG4gICAgcG9zaXRpb24gdGhhdCBjb3JyZXNwb25kcyB0byB0aGVtLiBNYXkgcmV0dXJuIG51bGwgaWYgdGhlIGdpdmVuXG4gICAgY29vcmRpbmF0ZXMgYXJlbid0IGluc2lkZSBvZiB0aGUgZWRpdG9yLiBXaGVuIGFuIG9iamVjdCBpc1xuICAgIHJldHVybmVkLCBpdHMgYHBvc2AgcHJvcGVydHkgaXMgdGhlIHBvc2l0aW9uIG5lYXJlc3QgdG8gdGhlXG4gICAgY29vcmRpbmF0ZXMsIGFuZCBpdHMgYGluc2lkZWAgcHJvcGVydHkgaG9sZHMgdGhlIHBvc2l0aW9uIG9mIHRoZVxuICAgIGlubmVyIG5vZGUgdGhhdCB0aGUgcG9zaXRpb24gZmFsbHMgaW5zaWRlIG9mLCBvciAtMSBpZiBpdCBpcyBhdFxuICAgIHRoZSB0b3AgbGV2ZWwsIG5vdCBpbiBhbnkgbm9kZS5cbiAgICAqL1xuICAgIHBvc0F0Q29vcmRzKGNvb3Jkcykge1xuICAgICAgICByZXR1cm4gcG9zQXRDb29yZHModGhpcywgY29vcmRzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgUmV0dXJucyB0aGUgdmlld3BvcnQgcmVjdGFuZ2xlIGF0IGEgZ2l2ZW4gZG9jdW1lbnQgcG9zaXRpb24uXG4gICAgYGxlZnRgIGFuZCBgcmlnaHRgIHdpbGwgYmUgdGhlIHNhbWUgbnVtYmVyLCBhcyB0aGlzIHJldHVybnMgYVxuICAgIGZsYXQgY3Vyc29yLWlzaCByZWN0YW5nbGUuIElmIHRoZSBwb3NpdGlvbiBpcyBiZXR3ZWVuIHR3byB0aGluZ3NcbiAgICB0aGF0IGFyZW4ndCBkaXJlY3RseSBhZGphY2VudCwgYHNpZGVgIGRldGVybWluZXMgd2hpY2ggZWxlbWVudFxuICAgIGlzIHVzZWQuIFdoZW4gPCAwLCB0aGUgZWxlbWVudCBiZWZvcmUgdGhlIHBvc2l0aW9uIGlzIHVzZWQsXG4gICAgb3RoZXJ3aXNlIHRoZSBlbGVtZW50IGFmdGVyLlxuICAgICovXG4gICAgY29vcmRzQXRQb3MocG9zLCBzaWRlID0gMSkge1xuICAgICAgICByZXR1cm4gY29vcmRzQXRQb3ModGhpcywgcG9zLCBzaWRlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgRmluZCB0aGUgRE9NIHBvc2l0aW9uIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGRvY3VtZW50XG4gICAgcG9zaXRpb24uIFdoZW4gYHNpZGVgIGlzIG5lZ2F0aXZlLCBmaW5kIHRoZSBwb3NpdGlvbiBhcyBjbG9zZSBhc1xuICAgIHBvc3NpYmxlIHRvIHRoZSBjb250ZW50IGJlZm9yZSB0aGUgcG9zaXRpb24uIFdoZW4gcG9zaXRpdmUsXG4gICAgcHJlZmVyIHBvc2l0aW9ucyBjbG9zZSB0byB0aGUgY29udGVudCBhZnRlciB0aGUgcG9zaXRpb24uIFdoZW5cbiAgICB6ZXJvLCBwcmVmZXIgYXMgc2hhbGxvdyBhIHBvc2l0aW9uIGFzIHBvc3NpYmxlLlxuICAgIFxuICAgIE5vdGUgdGhhdCB5b3Ugc2hvdWxkICoqbm90KiogbXV0YXRlIHRoZSBlZGl0b3IncyBpbnRlcm5hbCBET00sXG4gICAgb25seSBpbnNwZWN0IGl0IChhbmQgZXZlbiB0aGF0IGlzIHVzdWFsbHkgbm90IG5lY2Vzc2FyeSkuXG4gICAgKi9cbiAgICBkb21BdFBvcyhwb3MsIHNpZGUgPSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY1ZpZXcuZG9tRnJvbVBvcyhwb3MsIHNpZGUpO1xuICAgIH1cbiAgICAvKipcbiAgICBGaW5kIHRoZSBET00gbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIGRvY3VtZW50IG5vZGUgYWZ0ZXIgdGhlXG4gICAgZ2l2ZW4gcG9zaXRpb24uIE1heSByZXR1cm4gYG51bGxgIHdoZW4gdGhlIHBvc2l0aW9uIGRvZXNuJ3QgcG9pbnRcbiAgICBpbiBmcm9udCBvZiBhIG5vZGUgb3IgaWYgdGhlIG5vZGUgaXMgaW5zaWRlIGFuIG9wYXF1ZSBub2RlIHZpZXcuXG4gICAgXG4gICAgVGhpcyBpcyBpbnRlbmRlZCB0byBiZSBhYmxlIHRvIGNhbGwgdGhpbmdzIGxpa2VcbiAgICBgZ2V0Qm91bmRpbmdDbGllbnRSZWN0YCBvbiB0aGF0IERPTSBub2RlLiBEbyAqKm5vdCoqIG11dGF0ZSB0aGVcbiAgICBlZGl0b3IgRE9NIGRpcmVjdGx5LCBvciBhZGQgc3R5bGluZyB0aGlzIHdheSwgc2luY2UgdGhhdCB3aWxsIGJlXG4gICAgaW1tZWRpYXRlbHkgb3ZlcnJpZGVuIGJ5IHRoZSBlZGl0b3IgYXMgaXQgcmVkcmF3cyB0aGUgbm9kZS5cbiAgICAqL1xuICAgIG5vZGVET00ocG9zKSB7XG4gICAgICAgIGxldCBkZXNjID0gdGhpcy5kb2NWaWV3LmRlc2NBdChwb3MpO1xuICAgICAgICByZXR1cm4gZGVzYyA/IGRlc2Mubm9kZURPTSA6IG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgIEZpbmQgdGhlIGRvY3VtZW50IHBvc2l0aW9uIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBnaXZlbiBET01cbiAgICBwb3NpdGlvbi4gKFdoZW5ldmVyIHBvc3NpYmxlLCBpdCBpcyBwcmVmZXJhYmxlIHRvIGluc3BlY3QgdGhlXG4gICAgZG9jdW1lbnQgc3RydWN0dXJlIGRpcmVjdGx5LCByYXRoZXIgdGhhbiBwb2tpbmcgYXJvdW5kIGluIHRoZVxuICAgIERPTSwgYnV0IHNvbWV0aW1lc+KAlGZvciBleGFtcGxlIHdoZW4gaW50ZXJwcmV0aW5nIGFuIGV2ZW50XG4gICAgdGFyZ2V04oCUeW91IGRvbid0IGhhdmUgYSBjaG9pY2UuKVxuICAgIFxuICAgIFRoZSBgYmlhc2AgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGluZmx1ZW5jZSB3aGljaCBzaWRlIG9mIGEgRE9NXG4gICAgbm9kZSB0byB1c2Ugd2hlbiB0aGUgcG9zaXRpb24gaXMgaW5zaWRlIGEgbGVhZiBub2RlLlxuICAgICovXG4gICAgcG9zQXRET00obm9kZSwgb2Zmc2V0LCBiaWFzID0gLTEpIHtcbiAgICAgICAgbGV0IHBvcyA9IHRoaXMuZG9jVmlldy5wb3NGcm9tRE9NKG5vZGUsIG9mZnNldCwgYmlhcyk7XG4gICAgICAgIGlmIChwb3MgPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiRE9NIHBvc2l0aW9uIG5vdCBpbnNpZGUgdGhlIGVkaXRvclwiKTtcbiAgICAgICAgcmV0dXJuIHBvcztcbiAgICB9XG4gICAgLyoqXG4gICAgRmluZCBvdXQgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGF0IHRoZSBlbmQgb2YgYSB0ZXh0YmxvY2sgd2hlblxuICAgIG1vdmluZyBpbiBhIGdpdmVuIGRpcmVjdGlvbi4gV2hlbiwgZm9yIGV4YW1wbGUsIGdpdmVuIGBcImxlZnRcImAsXG4gICAgaXQgd2lsbCByZXR1cm4gdHJ1ZSBpZiBtb3ZpbmcgbGVmdCBmcm9tIHRoZSBjdXJyZW50IGN1cnNvclxuICAgIHBvc2l0aW9uIHdvdWxkIGxlYXZlIHRoYXQgcG9zaXRpb24ncyBwYXJlbnQgdGV4dGJsb2NrLiBXaWxsIGFwcGx5XG4gICAgdG8gdGhlIHZpZXcncyBjdXJyZW50IHN0YXRlIGJ5IGRlZmF1bHQsIGJ1dCBpdCBpcyBwb3NzaWJsZSB0b1xuICAgIHBhc3MgYSBkaWZmZXJlbnQgc3RhdGUuXG4gICAgKi9cbiAgICBlbmRPZlRleHRibG9jayhkaXIsIHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBlbmRPZlRleHRibG9jayh0aGlzLCBzdGF0ZSB8fCB0aGlzLnN0YXRlLCBkaXIpO1xuICAgIH1cbiAgICAvKipcbiAgICBSdW4gdGhlIGVkaXRvcidzIHBhc3RlIGxvZ2ljIHdpdGggdGhlIGdpdmVuIEhUTUwgc3RyaW5nLiBUaGVcbiAgICBgZXZlbnRgLCBpZiBnaXZlbiwgd2lsbCBiZSBwYXNzZWQgdG8gdGhlXG4gICAgW2BoYW5kbGVQYXN0ZWBdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyN2aWV3LkVkaXRvclByb3BzLmhhbmRsZVBhc3RlKSBob29rLlxuICAgICovXG4gICAgcGFzdGVIVE1MKGh0bWwsIGV2ZW50KSB7XG4gICAgICAgIHJldHVybiBkb1Bhc3RlKHRoaXMsIFwiXCIsIGh0bWwsIGZhbHNlLCBldmVudCB8fCBuZXcgQ2xpcGJvYXJkRXZlbnQoXCJwYXN0ZVwiKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIFJ1biB0aGUgZWRpdG9yJ3MgcGFzdGUgbG9naWMgd2l0aCB0aGUgZ2l2ZW4gcGxhaW4tdGV4dCBpbnB1dC5cbiAgICAqL1xuICAgIHBhc3RlVGV4dCh0ZXh0LCBldmVudCkge1xuICAgICAgICByZXR1cm4gZG9QYXN0ZSh0aGlzLCB0ZXh0LCBudWxsLCB0cnVlLCBldmVudCB8fCBuZXcgQ2xpcGJvYXJkRXZlbnQoXCJwYXN0ZVwiKSk7XG4gICAgfVxuICAgIC8qKlxuICAgIFNlcmlhbGl6ZSB0aGUgZ2l2ZW4gc2xpY2UgYXMgaXQgd291bGQgYmUgaWYgaXQgd2FzIGNvcGllZCBmcm9tXG4gICAgdGhpcyBlZGl0b3IuIFJldHVybnMgYSBET00gZWxlbWVudCB0aGF0IGNvbnRhaW5zIGFcbiAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2xpY2UgYXMgaXRzIGNoaWxkcmVuLCBhIHRleHR1YWxcbiAgICByZXByZXNlbnRhdGlvbiwgYW5kIHRoZSB0cmFuc2Zvcm1lZCBzbGljZSAod2hpY2ggY2FuIGJlXG4gICAgZGlmZmVyZW50IGZyb20gdGhlIGdpdmVuIGlucHV0IGR1ZSB0byBob29rcyBsaWtlXG4gICAgW2B0cmFuc2Zvcm1Db3BpZWRgXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jdmlldy5FZGl0b3JQcm9wcy50cmFuc2Zvcm1Db3BpZWQpKS5cbiAgICAqL1xuICAgIHNlcmlhbGl6ZUZvckNsaXBib2FyZChzbGljZSkge1xuICAgICAgICByZXR1cm4gc2VyaWFsaXplRm9yQ2xpcGJvYXJkKHRoaXMsIHNsaWNlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgUmVtb3ZlcyB0aGUgZWRpdG9yIGZyb20gdGhlIERPTSBhbmQgZGVzdHJveXMgYWxsIFtub2RlXG4gICAgdmlld3NdKGh0dHBzOi8vcHJvc2VtaXJyb3IubmV0L2RvY3MvcmVmLyN2aWV3Lk5vZGVWaWV3KS5cbiAgICAqL1xuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2NWaWV3KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBkZXN0cm95SW5wdXQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVzdHJveVBsdWdpblZpZXdzKCk7XG4gICAgICAgIGlmICh0aGlzLm1vdW50ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jVmlldy51cGRhdGUodGhpcy5zdGF0ZS5kb2MsIFtdLCB2aWV3RGVjb3JhdGlvbnModGhpcyksIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kb20udGV4dENvbnRlbnQgPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZG9tLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZG9tLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG9jVmlldy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZG9jVmlldyA9IG51bGw7XG4gICAgICAgIGNsZWFyUmV1c2VkUmFuZ2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgVGhpcyBpcyB0cnVlIHdoZW4gdGhlIHZpZXcgaGFzIGJlZW5cbiAgICBbZGVzdHJveWVkXShodHRwczovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jdmlldy5FZGl0b3JWaWV3LmRlc3Ryb3kpIChhbmQgdGh1cyBzaG91bGQgbm90IGJlXG4gICAgdXNlZCBhbnltb3JlKS5cbiAgICAqL1xuICAgIGdldCBpc0Rlc3Ryb3llZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jVmlldyA9PSBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICBVc2VkIGZvciB0ZXN0aW5nLlxuICAgICovXG4gICAgZGlzcGF0Y2hFdmVudChldmVudCkge1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2hFdmVudCh0aGlzLCBldmVudCk7XG4gICAgfVxuICAgIC8qKlxuICAgIEBpbnRlcm5hbFxuICAgICovXG4gICAgZG9tU2VsZWN0aW9uUmFuZ2UoKSB7XG4gICAgICAgIGxldCBzZWwgPSB0aGlzLmRvbVNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoIXNlbClcbiAgICAgICAgICAgIHJldHVybiB7IGZvY3VzTm9kZTogbnVsbCwgZm9jdXNPZmZzZXQ6IDAsIGFuY2hvck5vZGU6IG51bGwsIGFuY2hvck9mZnNldDogMCB9O1xuICAgICAgICByZXR1cm4gc2FmYXJpICYmIHRoaXMucm9vdC5ub2RlVHlwZSA9PT0gMTEgJiZcbiAgICAgICAgICAgIGRlZXBBY3RpdmVFbGVtZW50KHRoaXMuZG9tLm93bmVyRG9jdW1lbnQpID09IHRoaXMuZG9tICYmIHNhZmFyaVNoYWRvd1NlbGVjdGlvblJhbmdlKHRoaXMsIHNlbCkgfHwgc2VsO1xuICAgIH1cbiAgICAvKipcbiAgICBAaW50ZXJuYWxcbiAgICAqL1xuICAgIGRvbVNlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm9vdC5nZXRTZWxlY3Rpb24oKTtcbiAgICB9XG59XG5FZGl0b3JWaWV3LnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uICh0cikge1xuICAgIGxldCBkaXNwYXRjaFRyYW5zYWN0aW9uID0gdGhpcy5fcHJvcHMuZGlzcGF0Y2hUcmFuc2FjdGlvbjtcbiAgICBpZiAoZGlzcGF0Y2hUcmFuc2FjdGlvbilcbiAgICAgICAgZGlzcGF0Y2hUcmFuc2FjdGlvbi5jYWxsKHRoaXMsIHRyKTtcbiAgICBlbHNlXG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGUodGhpcy5zdGF0ZS5hcHBseSh0cikpO1xufTtcbmZ1bmN0aW9uIGNvbXB1dGVEb2NEZWNvKHZpZXcpIHtcbiAgICBsZXQgYXR0cnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGF0dHJzLmNsYXNzID0gXCJQcm9zZU1pcnJvclwiO1xuICAgIGF0dHJzLmNvbnRlbnRlZGl0YWJsZSA9IFN0cmluZyh2aWV3LmVkaXRhYmxlKTtcbiAgICB2aWV3LnNvbWVQcm9wKFwiYXR0cmlidXRlc1wiLCB2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSh2aWV3LnN0YXRlKTtcbiAgICAgICAgaWYgKHZhbHVlKVxuICAgICAgICAgICAgZm9yIChsZXQgYXR0ciBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChhdHRyID09IFwiY2xhc3NcIilcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMuY2xhc3MgKz0gXCIgXCIgKyB2YWx1ZVthdHRyXTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyID09IFwic3R5bGVcIilcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMuc3R5bGUgPSAoYXR0cnMuc3R5bGUgPyBhdHRycy5zdHlsZSArIFwiO1wiIDogXCJcIikgKyB2YWx1ZVthdHRyXTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghYXR0cnNbYXR0cl0gJiYgYXR0ciAhPSBcImNvbnRlbnRlZGl0YWJsZVwiICYmIGF0dHIgIT0gXCJub2RlTmFtZVwiKVxuICAgICAgICAgICAgICAgICAgICBhdHRyc1thdHRyXSA9IFN0cmluZyh2YWx1ZVthdHRyXSk7XG4gICAgICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFhdHRycy50cmFuc2xhdGUpXG4gICAgICAgIGF0dHJzLnRyYW5zbGF0ZSA9IFwibm9cIjtcbiAgICByZXR1cm4gW0RlY29yYXRpb24ubm9kZSgwLCB2aWV3LnN0YXRlLmRvYy5jb250ZW50LnNpemUsIGF0dHJzKV07XG59XG5mdW5jdGlvbiB1cGRhdGVDdXJzb3JXcmFwcGVyKHZpZXcpIHtcbiAgICBpZiAodmlldy5tYXJrQ3Vyc29yKSB7XG4gICAgICAgIGxldCBkb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuICAgICAgICBkb20uY2xhc3NOYW1lID0gXCJQcm9zZU1pcnJvci1zZXBhcmF0b3JcIjtcbiAgICAgICAgZG9tLnNldEF0dHJpYnV0ZShcIm1hcmstcGxhY2Vob2xkZXJcIiwgXCJ0cnVlXCIpO1xuICAgICAgICBkb20uc2V0QXR0cmlidXRlKFwiYWx0XCIsIFwiXCIpO1xuICAgICAgICB2aWV3LmN1cnNvcldyYXBwZXIgPSB7IGRvbSwgZGVjbzogRGVjb3JhdGlvbi53aWRnZXQodmlldy5zdGF0ZS5zZWxlY3Rpb24uZnJvbSwgZG9tLCB7IHJhdzogdHJ1ZSwgbWFya3M6IHZpZXcubWFya0N1cnNvciB9KSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmlldy5jdXJzb3JXcmFwcGVyID0gbnVsbDtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRFZGl0YWJsZSh2aWV3KSB7XG4gICAgcmV0dXJuICF2aWV3LnNvbWVQcm9wKFwiZWRpdGFibGVcIiwgdmFsdWUgPT4gdmFsdWUodmlldy5zdGF0ZSkgPT09IGZhbHNlKTtcbn1cbmZ1bmN0aW9uIHNlbGVjdGlvbkNvbnRleHRDaGFuZ2VkKHNlbDEsIHNlbDIpIHtcbiAgICBsZXQgZGVwdGggPSBNYXRoLm1pbihzZWwxLiRhbmNob3Iuc2hhcmVkRGVwdGgoc2VsMS5oZWFkKSwgc2VsMi4kYW5jaG9yLnNoYXJlZERlcHRoKHNlbDIuaGVhZCkpO1xuICAgIHJldHVybiBzZWwxLiRhbmNob3Iuc3RhcnQoZGVwdGgpICE9IHNlbDIuJGFuY2hvci5zdGFydChkZXB0aCk7XG59XG5mdW5jdGlvbiBidWlsZE5vZGVWaWV3cyh2aWV3KSB7XG4gICAgbGV0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgZnVuY3Rpb24gYWRkKG9iaikge1xuICAgICAgICBmb3IgKGxldCBwcm9wIGluIG9iailcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgcHJvcCkpXG4gICAgICAgICAgICAgICAgcmVzdWx0W3Byb3BdID0gb2JqW3Byb3BdO1xuICAgIH1cbiAgICB2aWV3LnNvbWVQcm9wKFwibm9kZVZpZXdzXCIsIGFkZCk7XG4gICAgdmlldy5zb21lUHJvcChcIm1hcmtWaWV3c1wiLCBhZGQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBjaGFuZ2VkTm9kZVZpZXdzKGEsIGIpIHtcbiAgICBsZXQgbkEgPSAwLCBuQiA9IDA7XG4gICAgZm9yIChsZXQgcHJvcCBpbiBhKSB7XG4gICAgICAgIGlmIChhW3Byb3BdICE9IGJbcHJvcF0pXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgbkErKztcbiAgICB9XG4gICAgZm9yIChsZXQgXyBpbiBiKVxuICAgICAgICBuQisrO1xuICAgIHJldHVybiBuQSAhPSBuQjtcbn1cbmZ1bmN0aW9uIGNoZWNrU3RhdGVDb21wb25lbnQocGx1Z2luKSB7XG4gICAgaWYgKHBsdWdpbi5zcGVjLnN0YXRlIHx8IHBsdWdpbi5zcGVjLmZpbHRlclRyYW5zYWN0aW9uIHx8IHBsdWdpbi5zcGVjLmFwcGVuZFRyYW5zYWN0aW9uKVxuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlBsdWdpbnMgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSB2aWV3IG11c3Qgbm90IGhhdmUgYSBzdGF0ZSBjb21wb25lbnRcIik7XG59XG5cbmV4cG9ydCB7IERlY29yYXRpb24sIERlY29yYXRpb25TZXQsIEVkaXRvclZpZXcsIF9fZW5kQ29tcG9zaXRpb24sIF9fcGFyc2VGcm9tQ2xpcGJvYXJkIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/prosemirror-view/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/react-easy-crop/index.module.mjs":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/react-easy-crop/index.module.mjs ***!
|
||
\*******************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Cropper),\n/* harmony export */ getInitialCropFromCroppedAreaPercentages: () => (/* binding */ getInitialCropFromCroppedAreaPercentages),\n/* harmony export */ getInitialCropFromCroppedAreaPixels: () => (/* binding */ getInitialCropFromCroppedAreaPixels)\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ \"(app-pages-browser)/./node_modules/tslib/tslib.es6.mjs\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var normalize_wheel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! normalize-wheel */ \"(app-pages-browser)/./node_modules/normalize-wheel/index.js\");\n\n\n\n\n/**\r\n * Compute the dimension of the crop area based on media size,\r\n * aspect ratio and optionally rotation\r\n */\nfunction getCropSize(mediaWidth, mediaHeight, containerWidth, containerHeight, aspect, rotation) {\n if (rotation === void 0) {\n rotation = 0;\n }\n var _a = rotateSize(mediaWidth, mediaHeight, rotation),\n width = _a.width,\n height = _a.height;\n var fittingWidth = Math.min(width, containerWidth);\n var fittingHeight = Math.min(height, containerHeight);\n if (fittingWidth > fittingHeight * aspect) {\n return {\n width: fittingHeight * aspect,\n height: fittingHeight\n };\n }\n return {\n width: fittingWidth,\n height: fittingWidth / aspect\n };\n}\n/**\r\n * Compute media zoom.\r\n * We fit the media into the container with \"max-width: 100%; max-height: 100%;\"\r\n */\nfunction getMediaZoom(mediaSize) {\n // Take the axis with more pixels to improve accuracy\n return mediaSize.width > mediaSize.height ? mediaSize.width / mediaSize.naturalWidth : mediaSize.height / mediaSize.naturalHeight;\n}\n/**\r\n * Ensure a new media position stays in the crop area.\r\n */\nfunction restrictPosition(position, mediaSize, cropSize, zoom, rotation) {\n if (rotation === void 0) {\n rotation = 0;\n }\n var _a = rotateSize(mediaSize.width, mediaSize.height, rotation),\n width = _a.width,\n height = _a.height;\n return {\n x: restrictPositionCoord(position.x, width, cropSize.width, zoom),\n y: restrictPositionCoord(position.y, height, cropSize.height, zoom)\n };\n}\nfunction restrictPositionCoord(position, mediaSize, cropSize, zoom) {\n var maxPosition = mediaSize * zoom / 2 - cropSize / 2;\n return clamp(position, -maxPosition, maxPosition);\n}\nfunction getDistanceBetweenPoints(pointA, pointB) {\n return Math.sqrt(Math.pow(pointA.y - pointB.y, 2) + Math.pow(pointA.x - pointB.x, 2));\n}\nfunction getRotationBetweenPoints(pointA, pointB) {\n return Math.atan2(pointB.y - pointA.y, pointB.x - pointA.x) * 180 / Math.PI;\n}\n/**\r\n * Compute the output cropped area of the media in percentages and pixels.\r\n * x/y are the top-left coordinates on the src media\r\n */\nfunction computeCroppedArea(crop, mediaSize, cropSize, aspect, zoom, rotation, restrictPosition) {\n if (rotation === void 0) {\n rotation = 0;\n }\n if (restrictPosition === void 0) {\n restrictPosition = true;\n }\n // if the media is rotated by the user, we cannot limit the position anymore\n // as it might need to be negative.\n var limitAreaFn = restrictPosition ? limitArea : noOp;\n var mediaBBoxSize = rotateSize(mediaSize.width, mediaSize.height, rotation);\n var mediaNaturalBBoxSize = rotateSize(mediaSize.naturalWidth, mediaSize.naturalHeight, rotation);\n // calculate the crop area in percentages\n // in the rotated space\n var croppedAreaPercentages = {\n x: limitAreaFn(100, ((mediaBBoxSize.width - cropSize.width / zoom) / 2 - crop.x / zoom) / mediaBBoxSize.width * 100),\n y: limitAreaFn(100, ((mediaBBoxSize.height - cropSize.height / zoom) / 2 - crop.y / zoom) / mediaBBoxSize.height * 100),\n width: limitAreaFn(100, cropSize.width / mediaBBoxSize.width * 100 / zoom),\n height: limitAreaFn(100, cropSize.height / mediaBBoxSize.height * 100 / zoom)\n };\n // we compute the pixels size naively\n var widthInPixels = Math.round(limitAreaFn(mediaNaturalBBoxSize.width, croppedAreaPercentages.width * mediaNaturalBBoxSize.width / 100));\n var heightInPixels = Math.round(limitAreaFn(mediaNaturalBBoxSize.height, croppedAreaPercentages.height * mediaNaturalBBoxSize.height / 100));\n var isImgWiderThanHigh = mediaNaturalBBoxSize.width >= mediaNaturalBBoxSize.height * aspect;\n // then we ensure the width and height exactly match the aspect (to avoid rounding approximations)\n // if the media is wider than high, when zoom is 0, the crop height will be equals to image height\n // thus we want to compute the width from the height and aspect for accuracy.\n // Otherwise, we compute the height from width and aspect.\n var sizePixels = isImgWiderThanHigh ? {\n width: Math.round(heightInPixels * aspect),\n height: heightInPixels\n } : {\n width: widthInPixels,\n height: Math.round(widthInPixels / aspect)\n };\n var croppedAreaPixels = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, sizePixels), {\n x: Math.round(limitAreaFn(mediaNaturalBBoxSize.width - sizePixels.width, croppedAreaPercentages.x * mediaNaturalBBoxSize.width / 100)),\n y: Math.round(limitAreaFn(mediaNaturalBBoxSize.height - sizePixels.height, croppedAreaPercentages.y * mediaNaturalBBoxSize.height / 100))\n });\n return {\n croppedAreaPercentages: croppedAreaPercentages,\n croppedAreaPixels: croppedAreaPixels\n };\n}\n/**\r\n * Ensure the returned value is between 0 and max\r\n */\nfunction limitArea(max, value) {\n return Math.min(max, Math.max(0, value));\n}\nfunction noOp(_max, value) {\n return value;\n}\n/**\r\n * Compute crop and zoom from the croppedAreaPercentages.\r\n */\nfunction getInitialCropFromCroppedAreaPercentages(croppedAreaPercentages, mediaSize, rotation, cropSize, minZoom, maxZoom) {\n var mediaBBoxSize = rotateSize(mediaSize.width, mediaSize.height, rotation);\n // This is the inverse process of computeCroppedArea\n var zoom = clamp(cropSize.width / mediaBBoxSize.width * (100 / croppedAreaPercentages.width), minZoom, maxZoom);\n var crop = {\n x: zoom * mediaBBoxSize.width / 2 - cropSize.width / 2 - mediaBBoxSize.width * zoom * (croppedAreaPercentages.x / 100),\n y: zoom * mediaBBoxSize.height / 2 - cropSize.height / 2 - mediaBBoxSize.height * zoom * (croppedAreaPercentages.y / 100)\n };\n return {\n crop: crop,\n zoom: zoom\n };\n}\n/**\r\n * Compute zoom from the croppedAreaPixels\r\n */\nfunction getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize) {\n var mediaZoom = getMediaZoom(mediaSize);\n return cropSize.height > cropSize.width ? cropSize.height / (croppedAreaPixels.height * mediaZoom) : cropSize.width / (croppedAreaPixels.width * mediaZoom);\n}\n/**\r\n * Compute crop and zoom from the croppedAreaPixels\r\n */\nfunction getInitialCropFromCroppedAreaPixels(croppedAreaPixels, mediaSize, rotation, cropSize, minZoom, maxZoom) {\n if (rotation === void 0) {\n rotation = 0;\n }\n var mediaNaturalBBoxSize = rotateSize(mediaSize.naturalWidth, mediaSize.naturalHeight, rotation);\n var zoom = clamp(getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize), minZoom, maxZoom);\n var cropZoom = cropSize.height > cropSize.width ? cropSize.height / croppedAreaPixels.height : cropSize.width / croppedAreaPixels.width;\n var crop = {\n x: ((mediaNaturalBBoxSize.width - croppedAreaPixels.width) / 2 - croppedAreaPixels.x) * cropZoom,\n y: ((mediaNaturalBBoxSize.height - croppedAreaPixels.height) / 2 - croppedAreaPixels.y) * cropZoom\n };\n return {\n crop: crop,\n zoom: zoom\n };\n}\n/**\r\n * Return the point that is the center of point a and b\r\n */\nfunction getCenter(a, b) {\n return {\n x: (b.x + a.x) / 2,\n y: (b.y + a.y) / 2\n };\n}\nfunction getRadianAngle(degreeValue) {\n return degreeValue * Math.PI / 180;\n}\n/**\r\n * Returns the new bounding area of a rotated rectangle.\r\n */\nfunction rotateSize(width, height, rotation) {\n var rotRad = getRadianAngle(rotation);\n return {\n width: Math.abs(Math.cos(rotRad) * width) + Math.abs(Math.sin(rotRad) * height),\n height: Math.abs(Math.sin(rotRad) * width) + Math.abs(Math.cos(rotRad) * height)\n };\n}\n/**\r\n * Clamp value between min and max\r\n */\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\r\n * Combine multiple class names into a single string.\r\n */\nfunction classNames() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return args.filter(function (value) {\n if (typeof value === 'string' && value.length > 0) {\n return true;\n }\n return false;\n }).join(' ').trim();\n}\n\nvar css_248z = \".reactEasyCrop_Container {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n overflow: hidden;\\n user-select: none;\\n touch-action: none;\\n cursor: move;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.reactEasyCrop_Image,\\n.reactEasyCrop_Video {\\n will-change: transform; /* this improves performances and prevent painting issues on iOS Chrome */\\n}\\n\\n.reactEasyCrop_Contain {\\n max-width: 100%;\\n max-height: 100%;\\n margin: auto;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n}\\n.reactEasyCrop_Cover_Horizontal {\\n width: 100%;\\n height: auto;\\n}\\n.reactEasyCrop_Cover_Vertical {\\n width: auto;\\n height: 100%;\\n}\\n\\n.reactEasyCrop_CropArea {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n box-sizing: border-box;\\n box-shadow: 0 0 0 9999em;\\n color: rgba(0, 0, 0, 0.5);\\n overflow: hidden;\\n}\\n\\n.reactEasyCrop_CropAreaRound {\\n border-radius: 50%;\\n}\\n\\n.reactEasyCrop_CropAreaGrid::before {\\n content: ' ';\\n box-sizing: border-box;\\n position: absolute;\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n top: 0;\\n bottom: 0;\\n left: 33.33%;\\n right: 33.33%;\\n border-top: 0;\\n border-bottom: 0;\\n}\\n\\n.reactEasyCrop_CropAreaGrid::after {\\n content: ' ';\\n box-sizing: border-box;\\n position: absolute;\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n top: 33.33%;\\n bottom: 33.33%;\\n left: 0;\\n right: 0;\\n border-left: 0;\\n border-right: 0;\\n}\\n\";\n\nvar MIN_ZOOM = 1;\nvar MAX_ZOOM = 3;\nvar KEYBOARD_STEP = 1;\nvar Cropper = /** @class */function (_super) {\n (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(Cropper, _super);\n function Cropper() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cropperRef = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n _this.imageRef = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n _this.videoRef = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n _this.containerPosition = {\n x: 0,\n y: 0\n };\n _this.containerRef = null;\n _this.styleRef = null;\n _this.containerRect = null;\n _this.mediaSize = {\n width: 0,\n height: 0,\n naturalWidth: 0,\n naturalHeight: 0\n };\n _this.dragStartPosition = {\n x: 0,\n y: 0\n };\n _this.dragStartCrop = {\n x: 0,\n y: 0\n };\n _this.gestureZoomStart = 0;\n _this.gestureRotationStart = 0;\n _this.isTouching = false;\n _this.lastPinchDistance = 0;\n _this.lastPinchRotation = 0;\n _this.rafDragTimeout = null;\n _this.rafPinchTimeout = null;\n _this.wheelTimer = null;\n _this.currentDoc = typeof document !== 'undefined' ? document : null;\n _this.currentWindow = typeof window !== 'undefined' ? window : null;\n _this.resizeObserver = null;\n _this.previousCropSize = null;\n _this.isInitialized = false;\n _this.state = {\n cropSize: null,\n hasWheelJustStarted: false,\n mediaObjectFit: undefined\n };\n _this.initResizeObserver = function () {\n if (typeof window.ResizeObserver === 'undefined' || !_this.containerRef) {\n return;\n }\n var isFirstResize = true;\n _this.resizeObserver = new window.ResizeObserver(function (entries) {\n if (isFirstResize) {\n isFirstResize = false; // observe() is called on mount, we don't want to trigger a recompute on mount\n return;\n }\n _this.computeSizes();\n });\n _this.resizeObserver.observe(_this.containerRef);\n };\n // this is to prevent Safari on iOS >= 10 to zoom the page\n _this.preventZoomSafari = function (e) {\n return e.preventDefault();\n };\n _this.cleanEvents = function () {\n if (!_this.currentDoc) return;\n _this.currentDoc.removeEventListener('mousemove', _this.onMouseMove);\n _this.currentDoc.removeEventListener('mouseup', _this.onDragStopped);\n _this.currentDoc.removeEventListener('touchmove', _this.onTouchMove);\n _this.currentDoc.removeEventListener('touchend', _this.onDragStopped);\n _this.currentDoc.removeEventListener('gesturechange', _this.onGestureChange);\n _this.currentDoc.removeEventListener('gestureend', _this.onGestureEnd);\n _this.currentDoc.removeEventListener('scroll', _this.onScroll);\n };\n _this.clearScrollEvent = function () {\n if (_this.containerRef) _this.containerRef.removeEventListener('wheel', _this.onWheel);\n if (_this.wheelTimer) {\n clearTimeout(_this.wheelTimer);\n }\n };\n _this.onMediaLoad = function () {\n var cropSize = _this.computeSizes();\n if (cropSize) {\n _this.previousCropSize = cropSize;\n _this.emitCropData();\n _this.setInitialCrop(cropSize);\n _this.isInitialized = true;\n }\n if (_this.props.onMediaLoaded) {\n _this.props.onMediaLoaded(_this.mediaSize);\n }\n };\n _this.setInitialCrop = function (cropSize) {\n if (_this.props.initialCroppedAreaPercentages) {\n var _a = getInitialCropFromCroppedAreaPercentages(_this.props.initialCroppedAreaPercentages, _this.mediaSize, _this.props.rotation, cropSize, _this.props.minZoom, _this.props.maxZoom),\n crop = _a.crop,\n zoom = _a.zoom;\n _this.props.onCropChange(crop);\n _this.props.onZoomChange && _this.props.onZoomChange(zoom);\n } else if (_this.props.initialCroppedAreaPixels) {\n var _b = getInitialCropFromCroppedAreaPixels(_this.props.initialCroppedAreaPixels, _this.mediaSize, _this.props.rotation, cropSize, _this.props.minZoom, _this.props.maxZoom),\n crop = _b.crop,\n zoom = _b.zoom;\n _this.props.onCropChange(crop);\n _this.props.onZoomChange && _this.props.onZoomChange(zoom);\n }\n };\n _this.computeSizes = function () {\n var _a, _b, _c, _d, _e, _f;\n var mediaRef = _this.imageRef.current || _this.videoRef.current;\n if (mediaRef && _this.containerRef) {\n _this.containerRect = _this.containerRef.getBoundingClientRect();\n _this.saveContainerPosition();\n var containerAspect = _this.containerRect.width / _this.containerRect.height;\n var naturalWidth = ((_a = _this.imageRef.current) === null || _a === void 0 ? void 0 : _a.naturalWidth) || ((_b = _this.videoRef.current) === null || _b === void 0 ? void 0 : _b.videoWidth) || 0;\n var naturalHeight = ((_c = _this.imageRef.current) === null || _c === void 0 ? void 0 : _c.naturalHeight) || ((_d = _this.videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) || 0;\n var isMediaScaledDown = mediaRef.offsetWidth < naturalWidth || mediaRef.offsetHeight < naturalHeight;\n var mediaAspect = naturalWidth / naturalHeight;\n // We do not rely on the offsetWidth/offsetHeight if the media is scaled down\n // as the values they report are rounded. That will result in precision losses\n // when calculating zoom. We use the fact that the media is positionned relative\n // to the container. That allows us to use the container's dimensions\n // and natural aspect ratio of the media to calculate accurate media size.\n // However, for this to work, the container should not be rotated\n var renderedMediaSize = void 0;\n if (isMediaScaledDown) {\n switch (_this.state.mediaObjectFit) {\n default:\n case 'contain':\n renderedMediaSize = containerAspect > mediaAspect ? {\n width: _this.containerRect.height * mediaAspect,\n height: _this.containerRect.height\n } : {\n width: _this.containerRect.width,\n height: _this.containerRect.width / mediaAspect\n };\n break;\n case 'horizontal-cover':\n renderedMediaSize = {\n width: _this.containerRect.width,\n height: _this.containerRect.width / mediaAspect\n };\n break;\n case 'vertical-cover':\n renderedMediaSize = {\n width: _this.containerRect.height * mediaAspect,\n height: _this.containerRect.height\n };\n break;\n }\n } else {\n renderedMediaSize = {\n width: mediaRef.offsetWidth,\n height: mediaRef.offsetHeight\n };\n }\n _this.mediaSize = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, renderedMediaSize), {\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight\n });\n // set media size in the parent\n if (_this.props.setMediaSize) {\n _this.props.setMediaSize(_this.mediaSize);\n }\n var cropSize = _this.props.cropSize ? _this.props.cropSize : getCropSize(_this.mediaSize.width, _this.mediaSize.height, _this.containerRect.width, _this.containerRect.height, _this.props.aspect, _this.props.rotation);\n if (((_e = _this.state.cropSize) === null || _e === void 0 ? void 0 : _e.height) !== cropSize.height || ((_f = _this.state.cropSize) === null || _f === void 0 ? void 0 : _f.width) !== cropSize.width) {\n _this.props.onCropSizeChange && _this.props.onCropSizeChange(cropSize);\n }\n _this.setState({\n cropSize: cropSize\n }, _this.recomputeCropPosition);\n // pass crop size to parent\n if (_this.props.setCropSize) {\n _this.props.setCropSize(cropSize);\n }\n return cropSize;\n }\n };\n _this.saveContainerPosition = function () {\n if (_this.containerRef) {\n var bounds = _this.containerRef.getBoundingClientRect();\n _this.containerPosition = {\n x: bounds.left,\n y: bounds.top\n };\n }\n };\n _this.onMouseDown = function (e) {\n if (!_this.currentDoc) return;\n e.preventDefault();\n _this.currentDoc.addEventListener('mousemove', _this.onMouseMove);\n _this.currentDoc.addEventListener('mouseup', _this.onDragStopped);\n _this.saveContainerPosition();\n _this.onDragStart(Cropper.getMousePoint(e));\n };\n _this.onMouseMove = function (e) {\n return _this.onDrag(Cropper.getMousePoint(e));\n };\n _this.onScroll = function (e) {\n if (!_this.currentDoc) return;\n e.preventDefault();\n _this.saveContainerPosition();\n };\n _this.onTouchStart = function (e) {\n if (!_this.currentDoc) return;\n _this.isTouching = true;\n if (_this.props.onTouchRequest && !_this.props.onTouchRequest(e)) {\n return;\n }\n _this.currentDoc.addEventListener('touchmove', _this.onTouchMove, {\n passive: false\n }); // iOS 11 now defaults to passive: true\n _this.currentDoc.addEventListener('touchend', _this.onDragStopped);\n _this.saveContainerPosition();\n if (e.touches.length === 2) {\n _this.onPinchStart(e);\n } else if (e.touches.length === 1) {\n _this.onDragStart(Cropper.getTouchPoint(e.touches[0]));\n }\n };\n _this.onTouchMove = function (e) {\n // Prevent whole page from scrolling on iOS.\n e.preventDefault();\n if (e.touches.length === 2) {\n _this.onPinchMove(e);\n } else if (e.touches.length === 1) {\n _this.onDrag(Cropper.getTouchPoint(e.touches[0]));\n }\n };\n _this.onGestureStart = function (e) {\n if (!_this.currentDoc) return;\n e.preventDefault();\n _this.currentDoc.addEventListener('gesturechange', _this.onGestureChange);\n _this.currentDoc.addEventListener('gestureend', _this.onGestureEnd);\n _this.gestureZoomStart = _this.props.zoom;\n _this.gestureRotationStart = _this.props.rotation;\n };\n _this.onGestureChange = function (e) {\n e.preventDefault();\n if (_this.isTouching) {\n // this is to avoid conflict between gesture and touch events\n return;\n }\n var point = Cropper.getMousePoint(e);\n var newZoom = _this.gestureZoomStart - 1 + e.scale;\n _this.setNewZoom(newZoom, point, {\n shouldUpdatePosition: true\n });\n if (_this.props.onRotationChange) {\n var newRotation = _this.gestureRotationStart + e.rotation;\n _this.props.onRotationChange(newRotation);\n }\n };\n _this.onGestureEnd = function (e) {\n _this.cleanEvents();\n };\n _this.onDragStart = function (_a) {\n var _b, _c;\n var x = _a.x,\n y = _a.y;\n _this.dragStartPosition = {\n x: x,\n y: y\n };\n _this.dragStartCrop = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, _this.props.crop);\n (_c = (_b = _this.props).onInteractionStart) === null || _c === void 0 ? void 0 : _c.call(_b);\n };\n _this.onDrag = function (_a) {\n var x = _a.x,\n y = _a.y;\n if (!_this.currentWindow) return;\n if (_this.rafDragTimeout) _this.currentWindow.cancelAnimationFrame(_this.rafDragTimeout);\n _this.rafDragTimeout = _this.currentWindow.requestAnimationFrame(function () {\n if (!_this.state.cropSize) return;\n if (x === undefined || y === undefined) return;\n var offsetX = x - _this.dragStartPosition.x;\n var offsetY = y - _this.dragStartPosition.y;\n var requestedPosition = {\n x: _this.dragStartCrop.x + offsetX,\n y: _this.dragStartCrop.y + offsetY\n };\n var newPosition = _this.props.restrictPosition ? restrictPosition(requestedPosition, _this.mediaSize, _this.state.cropSize, _this.props.zoom, _this.props.rotation) : requestedPosition;\n _this.props.onCropChange(newPosition);\n });\n };\n _this.onDragStopped = function () {\n var _a, _b;\n _this.isTouching = false;\n _this.cleanEvents();\n _this.emitCropData();\n (_b = (_a = _this.props).onInteractionEnd) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n _this.onWheel = function (e) {\n if (!_this.currentWindow) return;\n if (_this.props.onWheelRequest && !_this.props.onWheelRequest(e)) {\n return;\n }\n e.preventDefault();\n var point = Cropper.getMousePoint(e);\n var pixelY = normalize_wheel__WEBPACK_IMPORTED_MODULE_1__(e).pixelY;\n var newZoom = _this.props.zoom - pixelY * _this.props.zoomSpeed / 200;\n _this.setNewZoom(newZoom, point, {\n shouldUpdatePosition: true\n });\n if (!_this.state.hasWheelJustStarted) {\n _this.setState({\n hasWheelJustStarted: true\n }, function () {\n var _a, _b;\n return (_b = (_a = _this.props).onInteractionStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n });\n }\n if (_this.wheelTimer) {\n clearTimeout(_this.wheelTimer);\n }\n _this.wheelTimer = _this.currentWindow.setTimeout(function () {\n return _this.setState({\n hasWheelJustStarted: false\n }, function () {\n var _a, _b;\n return (_b = (_a = _this.props).onInteractionEnd) === null || _b === void 0 ? void 0 : _b.call(_a);\n });\n }, 250);\n };\n _this.getPointOnContainer = function (_a, containerTopLeft) {\n var x = _a.x,\n y = _a.y;\n if (!_this.containerRect) {\n throw new Error('The Cropper is not mounted');\n }\n return {\n x: _this.containerRect.width / 2 - (x - containerTopLeft.x),\n y: _this.containerRect.height / 2 - (y - containerTopLeft.y)\n };\n };\n _this.getPointOnMedia = function (_a) {\n var x = _a.x,\n y = _a.y;\n var _b = _this.props,\n crop = _b.crop,\n zoom = _b.zoom;\n return {\n x: (x + crop.x) / zoom,\n y: (y + crop.y) / zoom\n };\n };\n _this.setNewZoom = function (zoom, point, _a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.shouldUpdatePosition,\n shouldUpdatePosition = _c === void 0 ? true : _c;\n if (!_this.state.cropSize || !_this.props.onZoomChange) return;\n var newZoom = clamp(zoom, _this.props.minZoom, _this.props.maxZoom);\n if (shouldUpdatePosition) {\n var zoomPoint = _this.getPointOnContainer(point, _this.containerPosition);\n var zoomTarget = _this.getPointOnMedia(zoomPoint);\n var requestedPosition = {\n x: zoomTarget.x * newZoom - zoomPoint.x,\n y: zoomTarget.y * newZoom - zoomPoint.y\n };\n var newPosition = _this.props.restrictPosition ? restrictPosition(requestedPosition, _this.mediaSize, _this.state.cropSize, newZoom, _this.props.rotation) : requestedPosition;\n _this.props.onCropChange(newPosition);\n }\n _this.props.onZoomChange(newZoom);\n };\n _this.getCropData = function () {\n if (!_this.state.cropSize) {\n return null;\n }\n // this is to ensure the crop is correctly restricted after a zoom back (https://github.com/ValentinH/react-easy-crop/issues/6)\n var restrictedPosition = _this.props.restrictPosition ? restrictPosition(_this.props.crop, _this.mediaSize, _this.state.cropSize, _this.props.zoom, _this.props.rotation) : _this.props.crop;\n return computeCroppedArea(restrictedPosition, _this.mediaSize, _this.state.cropSize, _this.getAspect(), _this.props.zoom, _this.props.rotation, _this.props.restrictPosition);\n };\n _this.emitCropData = function () {\n var cropData = _this.getCropData();\n if (!cropData) return;\n var croppedAreaPercentages = cropData.croppedAreaPercentages,\n croppedAreaPixels = cropData.croppedAreaPixels;\n if (_this.props.onCropComplete) {\n _this.props.onCropComplete(croppedAreaPercentages, croppedAreaPixels);\n }\n if (_this.props.onCropAreaChange) {\n _this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels);\n }\n };\n _this.emitCropAreaChange = function () {\n var cropData = _this.getCropData();\n if (!cropData) return;\n var croppedAreaPercentages = cropData.croppedAreaPercentages,\n croppedAreaPixels = cropData.croppedAreaPixels;\n if (_this.props.onCropAreaChange) {\n _this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels);\n }\n };\n _this.recomputeCropPosition = function () {\n var _a, _b;\n if (!_this.state.cropSize) return;\n var adjustedCrop = _this.props.crop;\n // Only scale if we're initialized and this is a legitimate resize\n if (_this.isInitialized && ((_a = _this.previousCropSize) === null || _a === void 0 ? void 0 : _a.width) && ((_b = _this.previousCropSize) === null || _b === void 0 ? void 0 : _b.height)) {\n var sizeChanged = Math.abs(_this.previousCropSize.width - _this.state.cropSize.width) > 1e-6 || Math.abs(_this.previousCropSize.height - _this.state.cropSize.height) > 1e-6;\n if (sizeChanged) {\n var scaleX = _this.state.cropSize.width / _this.previousCropSize.width;\n var scaleY = _this.state.cropSize.height / _this.previousCropSize.height;\n adjustedCrop = {\n x: _this.props.crop.x * scaleX,\n y: _this.props.crop.y * scaleY\n };\n }\n }\n var newPosition = _this.props.restrictPosition ? restrictPosition(adjustedCrop, _this.mediaSize, _this.state.cropSize, _this.props.zoom, _this.props.rotation) : adjustedCrop;\n _this.previousCropSize = _this.state.cropSize;\n _this.props.onCropChange(newPosition);\n _this.emitCropData();\n };\n _this.onKeyDown = function (event) {\n var _a, _b;\n var _c = _this.props,\n crop = _c.crop,\n onCropChange = _c.onCropChange,\n keyboardStep = _c.keyboardStep,\n zoom = _c.zoom,\n rotation = _c.rotation;\n var step = keyboardStep;\n if (!_this.state.cropSize) return;\n // if the shift key is pressed, reduce the step to allow finer control\n if (event.shiftKey) {\n step *= 0.2;\n }\n var newCrop = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, crop);\n switch (event.key) {\n case 'ArrowUp':\n newCrop.y -= step;\n event.preventDefault();\n break;\n case 'ArrowDown':\n newCrop.y += step;\n event.preventDefault();\n break;\n case 'ArrowLeft':\n newCrop.x -= step;\n event.preventDefault();\n break;\n case 'ArrowRight':\n newCrop.x += step;\n event.preventDefault();\n break;\n default:\n return;\n }\n if (_this.props.restrictPosition) {\n newCrop = restrictPosition(newCrop, _this.mediaSize, _this.state.cropSize, zoom, rotation);\n }\n if (!event.repeat) {\n (_b = (_a = _this.props).onInteractionStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n onCropChange(newCrop);\n };\n _this.onKeyUp = function (event) {\n var _a, _b;\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n event.preventDefault();\n break;\n default:\n return;\n }\n _this.emitCropData();\n (_b = (_a = _this.props).onInteractionEnd) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n return _this;\n }\n Cropper.prototype.componentDidMount = function () {\n if (!this.currentDoc || !this.currentWindow) return;\n if (this.containerRef) {\n if (this.containerRef.ownerDocument) {\n this.currentDoc = this.containerRef.ownerDocument;\n }\n if (this.currentDoc.defaultView) {\n this.currentWindow = this.currentDoc.defaultView;\n }\n this.initResizeObserver();\n // only add window resize listener if ResizeObserver is not supported. Otherwise, it would be redundant\n if (typeof window.ResizeObserver === 'undefined') {\n this.currentWindow.addEventListener('resize', this.computeSizes);\n }\n this.props.zoomWithScroll && this.containerRef.addEventListener('wheel', this.onWheel, {\n passive: false\n });\n this.containerRef.addEventListener('gesturestart', this.onGestureStart);\n }\n this.currentDoc.addEventListener('scroll', this.onScroll);\n if (!this.props.disableAutomaticStylesInjection) {\n this.styleRef = this.currentDoc.createElement('style');\n this.styleRef.setAttribute('type', 'text/css');\n if (this.props.nonce) {\n this.styleRef.setAttribute('nonce', this.props.nonce);\n }\n this.styleRef.innerHTML = css_248z;\n this.currentDoc.head.appendChild(this.styleRef);\n }\n // when rendered via SSR, the image can already be loaded and its onLoad callback will never be called\n if (this.imageRef.current && this.imageRef.current.complete) {\n this.onMediaLoad();\n }\n // set image and video refs in the parent if the callbacks exist\n if (this.props.setImageRef) {\n this.props.setImageRef(this.imageRef);\n }\n if (this.props.setVideoRef) {\n this.props.setVideoRef(this.videoRef);\n }\n if (this.props.setCropperRef) {\n this.props.setCropperRef(this.cropperRef);\n }\n };\n Cropper.prototype.componentWillUnmount = function () {\n var _a, _b;\n if (!this.currentDoc || !this.currentWindow) return;\n if (typeof window.ResizeObserver === 'undefined') {\n this.currentWindow.removeEventListener('resize', this.computeSizes);\n }\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n if (this.containerRef) {\n this.containerRef.removeEventListener('gesturestart', this.preventZoomSafari);\n }\n if (this.styleRef) {\n (_b = this.styleRef.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(this.styleRef);\n }\n this.cleanEvents();\n this.props.zoomWithScroll && this.clearScrollEvent();\n };\n Cropper.prototype.componentDidUpdate = function (prevProps) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (prevProps.rotation !== this.props.rotation) {\n this.computeSizes();\n this.recomputeCropPosition();\n } else if (prevProps.aspect !== this.props.aspect) {\n this.computeSizes();\n } else if (prevProps.objectFit !== this.props.objectFit) {\n this.computeSizes();\n } else if (prevProps.zoom !== this.props.zoom) {\n this.recomputeCropPosition();\n } else if (((_a = prevProps.cropSize) === null || _a === void 0 ? void 0 : _a.height) !== ((_b = this.props.cropSize) === null || _b === void 0 ? void 0 : _b.height) || ((_c = prevProps.cropSize) === null || _c === void 0 ? void 0 : _c.width) !== ((_d = this.props.cropSize) === null || _d === void 0 ? void 0 : _d.width)) {\n this.computeSizes();\n } else if (((_e = prevProps.crop) === null || _e === void 0 ? void 0 : _e.x) !== ((_f = this.props.crop) === null || _f === void 0 ? void 0 : _f.x) || ((_g = prevProps.crop) === null || _g === void 0 ? void 0 : _g.y) !== ((_h = this.props.crop) === null || _h === void 0 ? void 0 : _h.y)) {\n this.emitCropAreaChange();\n }\n if (prevProps.zoomWithScroll !== this.props.zoomWithScroll && this.containerRef) {\n this.props.zoomWithScroll ? this.containerRef.addEventListener('wheel', this.onWheel, {\n passive: false\n }) : this.clearScrollEvent();\n }\n if (prevProps.video !== this.props.video) {\n (_j = this.videoRef.current) === null || _j === void 0 ? void 0 : _j.load();\n }\n var objectFit = this.getObjectFit();\n if (objectFit !== this.state.mediaObjectFit) {\n this.setState({\n mediaObjectFit: objectFit\n }, this.computeSizes);\n }\n };\n Cropper.prototype.getAspect = function () {\n var _a = this.props,\n cropSize = _a.cropSize,\n aspect = _a.aspect;\n if (cropSize) {\n return cropSize.width / cropSize.height;\n }\n return aspect;\n };\n Cropper.prototype.getObjectFit = function () {\n var _a, _b, _c, _d;\n if (this.props.objectFit === 'cover') {\n var mediaRef = this.imageRef.current || this.videoRef.current;\n if (mediaRef && this.containerRef) {\n this.containerRect = this.containerRef.getBoundingClientRect();\n var containerAspect = this.containerRect.width / this.containerRect.height;\n var naturalWidth = ((_a = this.imageRef.current) === null || _a === void 0 ? void 0 : _a.naturalWidth) || ((_b = this.videoRef.current) === null || _b === void 0 ? void 0 : _b.videoWidth) || 0;\n var naturalHeight = ((_c = this.imageRef.current) === null || _c === void 0 ? void 0 : _c.naturalHeight) || ((_d = this.videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) || 0;\n var mediaAspect = naturalWidth / naturalHeight;\n return mediaAspect < containerAspect ? 'horizontal-cover' : 'vertical-cover';\n }\n return 'horizontal-cover';\n }\n return this.props.objectFit;\n };\n Cropper.prototype.onPinchStart = function (e) {\n var pointA = Cropper.getTouchPoint(e.touches[0]);\n var pointB = Cropper.getTouchPoint(e.touches[1]);\n this.lastPinchDistance = getDistanceBetweenPoints(pointA, pointB);\n this.lastPinchRotation = getRotationBetweenPoints(pointA, pointB);\n this.onDragStart(getCenter(pointA, pointB));\n };\n Cropper.prototype.onPinchMove = function (e) {\n var _this = this;\n if (!this.currentDoc || !this.currentWindow) return;\n var pointA = Cropper.getTouchPoint(e.touches[0]);\n var pointB = Cropper.getTouchPoint(e.touches[1]);\n var center = getCenter(pointA, pointB);\n this.onDrag(center);\n if (this.rafPinchTimeout) this.currentWindow.cancelAnimationFrame(this.rafPinchTimeout);\n this.rafPinchTimeout = this.currentWindow.requestAnimationFrame(function () {\n var distance = getDistanceBetweenPoints(pointA, pointB);\n var newZoom = _this.props.zoom * (distance / _this.lastPinchDistance);\n _this.setNewZoom(newZoom, center, {\n shouldUpdatePosition: false\n });\n _this.lastPinchDistance = distance;\n var rotation = getRotationBetweenPoints(pointA, pointB);\n var newRotation = _this.props.rotation + (rotation - _this.lastPinchRotation);\n _this.props.onRotationChange && _this.props.onRotationChange(newRotation);\n _this.lastPinchRotation = rotation;\n });\n };\n Cropper.prototype.render = function () {\n var _this = this;\n var _a;\n var _b = this.props,\n image = _b.image,\n video = _b.video,\n mediaProps = _b.mediaProps,\n cropperProps = _b.cropperProps,\n transform = _b.transform,\n _c = _b.crop,\n x = _c.x,\n y = _c.y,\n rotation = _b.rotation,\n zoom = _b.zoom,\n cropShape = _b.cropShape,\n showGrid = _b.showGrid,\n roundCropAreaPixels = _b.roundCropAreaPixels,\n _d = _b.style,\n containerStyle = _d.containerStyle,\n cropAreaStyle = _d.cropAreaStyle,\n mediaStyle = _d.mediaStyle,\n _e = _b.classes,\n containerClassName = _e.containerClassName,\n cropAreaClassName = _e.cropAreaClassName,\n mediaClassName = _e.mediaClassName;\n var objectFit = (_a = this.state.mediaObjectFit) !== null && _a !== void 0 ? _a : this.getObjectFit();\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n ref: function ref(el) {\n return _this.containerRef = el;\n },\n \"data-testid\": \"container\",\n style: containerStyle,\n className: classNames('reactEasyCrop_Container', containerClassName)\n }, image ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"img\", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({\n alt: \"\",\n className: classNames('reactEasyCrop_Image', objectFit === 'contain' && 'reactEasyCrop_Contain', objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal', objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical', mediaClassName)\n }, mediaProps, {\n src: image,\n ref: this.imageRef,\n style: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, mediaStyle), {\n transform: transform || \"translate(\".concat(x, \"px, \").concat(y, \"px) rotate(\").concat(rotation, \"deg) scale(\").concat(zoom, \")\")\n }),\n onLoad: this.onMediaLoad\n })) : video && react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"video\", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({\n autoPlay: true,\n playsInline: true,\n loop: true,\n muted: true,\n className: classNames('reactEasyCrop_Video', objectFit === 'contain' && 'reactEasyCrop_Contain', objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal', objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical', mediaClassName)\n }, mediaProps, {\n ref: this.videoRef,\n onLoadedMetadata: this.onMediaLoad,\n style: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, mediaStyle), {\n transform: transform || \"translate(\".concat(x, \"px, \").concat(y, \"px) rotate(\").concat(rotation, \"deg) scale(\").concat(zoom, \")\")\n }),\n controls: false\n }), (Array.isArray(video) ? video : [{\n src: video\n }]).map(function (item) {\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"source\", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({\n key: item.src\n }, item));\n })), this.state.cropSize && react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({\n ref: this.cropperRef,\n style: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, cropAreaStyle), {\n width: roundCropAreaPixels ? Math.round(this.state.cropSize.width) : this.state.cropSize.width,\n height: roundCropAreaPixels ? Math.round(this.state.cropSize.height) : this.state.cropSize.height\n }),\n tabIndex: 0,\n onKeyDown: this.onKeyDown,\n onKeyUp: this.onKeyUp,\n \"data-testid\": \"cropper\",\n className: classNames('reactEasyCrop_CropArea', cropShape === 'round' && 'reactEasyCrop_CropAreaRound', showGrid && 'reactEasyCrop_CropAreaGrid', cropAreaClassName)\n }, cropperProps)));\n };\n Cropper.defaultProps = {\n zoom: 1,\n rotation: 0,\n aspect: 4 / 3,\n maxZoom: MAX_ZOOM,\n minZoom: MIN_ZOOM,\n cropShape: 'rect',\n objectFit: 'contain',\n showGrid: true,\n style: {},\n classes: {},\n mediaProps: {},\n cropperProps: {},\n zoomSpeed: 1,\n restrictPosition: true,\n zoomWithScroll: true,\n keyboardStep: KEYBOARD_STEP\n };\n Cropper.getMousePoint = function (e) {\n return {\n x: Number(e.clientX),\n y: Number(e.clientY)\n };\n };\n Cropper.getTouchPoint = function (touch) {\n return {\n x: Number(touch.clientX),\n y: Number(touch.clientY)\n };\n };\n return Cropper;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n\n\n//# sourceMappingURL=index.module.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1lYXN5LWNyb3AvaW5kZXgubW9kdWxlLm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBNEM7QUFDYjtBQUNjOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThELGlCQUFpQjtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUc7QUFDOUM7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSwwQ0FBMEMsdUJBQXVCLFdBQVcsWUFBWSxhQUFhLGNBQWMscUJBQXFCLHNCQUFzQix1QkFBdUIsaUJBQWlCLGtCQUFrQiw0QkFBNEIsd0JBQXdCLEdBQUcsaURBQWlELDRCQUE0Qiw2RUFBNkUsNEJBQTRCLG9CQUFvQixxQkFBcUIsaUJBQWlCLHVCQUF1QixXQUFXLGNBQWMsWUFBWSxhQUFhLEdBQUcsbUNBQW1DLGdCQUFnQixpQkFBaUIsR0FBRyxpQ0FBaUMsZ0JBQWdCLGlCQUFpQixHQUFHLDZCQUE2Qix1QkFBdUIsY0FBYyxhQUFhLHFDQUFxQywrQ0FBK0MsMkJBQTJCLDZCQUE2Qiw4QkFBOEIscUJBQXFCLEdBQUcsa0NBQWtDLHVCQUF1QixHQUFHLHlDQUF5QyxpQkFBaUIsMkJBQTJCLHVCQUF1QiwrQ0FBK0MsV0FBVyxjQUFjLGlCQUFpQixrQkFBa0Isa0JBQWtCLHFCQUFxQixHQUFHLHdDQUF3QyxpQkFBaUIsMkJBQTJCLHVCQUF1QiwrQ0FBK0MsZ0JBQWdCLG1CQUFtQixZQUFZLGFBQWEsbUJBQW1CLG9CQUFvQixHQUFHOztBQUVyaUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGdEQUFTO0FBQ1g7QUFDQTtBQUNBLHVCQUF1Qiw0Q0FBZTtBQUN0QyxxQkFBcUIsNENBQWU7QUFDcEMscUJBQXFCLDRDQUFlO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUM5QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxHQUFHO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsK0NBQVEsR0FBRztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDRDQUFjO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwrQ0FBUSxHQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZ0RBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUssVUFBVSxnREFBbUIsUUFBUSwrQ0FBUTtBQUNsRDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxhQUFhLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUNqQztBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUssY0FBYyxnREFBbUIsVUFBVSwrQ0FBUTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxhQUFhLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUNqQztBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxhQUFhLGdEQUFtQixXQUFXLCtDQUFRO0FBQ25EO0FBQ0EsT0FBTztBQUNQLEtBQUssMkJBQTJCLGdEQUFtQixRQUFRLCtDQUFRO0FBQ25FO0FBQ0EsYUFBYSwrQ0FBUSxDQUFDLCtDQUFRLEdBQUc7QUFDakM7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLGVBQWU7QUFDZixrQkFBa0I7QUFDbEIsb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw0Q0FBZTs7QUFFNEY7QUFDN0ciLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHJlYWN0LWVhc3ktY3JvcFxcaW5kZXgubW9kdWxlLm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSAndHNsaWInO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IG5vcm1hbGl6ZVdoZWVsIGZyb20gJ25vcm1hbGl6ZS13aGVlbCc7XG5cbi8qKlxyXG4gKiBDb21wdXRlIHRoZSBkaW1lbnNpb24gb2YgdGhlIGNyb3AgYXJlYSBiYXNlZCBvbiBtZWRpYSBzaXplLFxyXG4gKiBhc3BlY3QgcmF0aW8gYW5kIG9wdGlvbmFsbHkgcm90YXRpb25cclxuICovXG5mdW5jdGlvbiBnZXRDcm9wU2l6ZShtZWRpYVdpZHRoLCBtZWRpYUhlaWdodCwgY29udGFpbmVyV2lkdGgsIGNvbnRhaW5lckhlaWdodCwgYXNwZWN0LCByb3RhdGlvbikge1xuICBpZiAocm90YXRpb24gPT09IHZvaWQgMCkge1xuICAgIHJvdGF0aW9uID0gMDtcbiAgfVxuICB2YXIgX2EgPSByb3RhdGVTaXplKG1lZGlhV2lkdGgsIG1lZGlhSGVpZ2h0LCByb3RhdGlvbiksXG4gICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICBoZWlnaHQgPSBfYS5oZWlnaHQ7XG4gIHZhciBmaXR0aW5nV2lkdGggPSBNYXRoLm1pbih3aWR0aCwgY29udGFpbmVyV2lkdGgpO1xuICB2YXIgZml0dGluZ0hlaWdodCA9IE1hdGgubWluKGhlaWdodCwgY29udGFpbmVySGVpZ2h0KTtcbiAgaWYgKGZpdHRpbmdXaWR0aCA+IGZpdHRpbmdIZWlnaHQgKiBhc3BlY3QpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IGZpdHRpbmdIZWlnaHQgKiBhc3BlY3QsXG4gICAgICBoZWlnaHQ6IGZpdHRpbmdIZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IGZpdHRpbmdXaWR0aCxcbiAgICBoZWlnaHQ6IGZpdHRpbmdXaWR0aCAvIGFzcGVjdFxuICB9O1xufVxuLyoqXHJcbiAqIENvbXB1dGUgbWVkaWEgem9vbS5cclxuICogV2UgZml0IHRoZSBtZWRpYSBpbnRvIHRoZSBjb250YWluZXIgd2l0aCBcIm1heC13aWR0aDogMTAwJTsgbWF4LWhlaWdodDogMTAwJTtcIlxyXG4gKi9cbmZ1bmN0aW9uIGdldE1lZGlhWm9vbShtZWRpYVNpemUpIHtcbiAgLy8gVGFrZSB0aGUgYXhpcyB3aXRoIG1vcmUgcGl4ZWxzIHRvIGltcHJvdmUgYWNjdXJhY3lcbiAgcmV0dXJuIG1lZGlhU2l6ZS53aWR0aCA+IG1lZGlhU2l6ZS5oZWlnaHQgPyBtZWRpYVNpemUud2lkdGggLyBtZWRpYVNpemUubmF0dXJhbFdpZHRoIDogbWVkaWFTaXplLmhlaWdodCAvIG1lZGlhU2l6ZS5uYXR1cmFsSGVpZ2h0O1xufVxuLyoqXHJcbiAqIEVuc3VyZSBhIG5ldyBtZWRpYSBwb3NpdGlvbiBzdGF5cyBpbiB0aGUgY3JvcCBhcmVhLlxyXG4gKi9cbmZ1bmN0aW9uIHJlc3RyaWN0UG9zaXRpb24ocG9zaXRpb24sIG1lZGlhU2l6ZSwgY3JvcFNpemUsIHpvb20sIHJvdGF0aW9uKSB7XG4gIGlmIChyb3RhdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgcm90YXRpb24gPSAwO1xuICB9XG4gIHZhciBfYSA9IHJvdGF0ZVNpemUobWVkaWFTaXplLndpZHRoLCBtZWRpYVNpemUuaGVpZ2h0LCByb3RhdGlvbiksXG4gICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICBoZWlnaHQgPSBfYS5oZWlnaHQ7XG4gIHJldHVybiB7XG4gICAgeDogcmVzdHJpY3RQb3NpdGlvbkNvb3JkKHBvc2l0aW9uLngsIHdpZHRoLCBjcm9wU2l6ZS53aWR0aCwgem9vbSksXG4gICAgeTogcmVzdHJpY3RQb3NpdGlvbkNvb3JkKHBvc2l0aW9uLnksIGhlaWdodCwgY3JvcFNpemUuaGVpZ2h0LCB6b29tKVxuICB9O1xufVxuZnVuY3Rpb24gcmVzdHJpY3RQb3NpdGlvbkNvb3JkKHBvc2l0aW9uLCBtZWRpYVNpemUsIGNyb3BTaXplLCB6b29tKSB7XG4gIHZhciBtYXhQb3NpdGlvbiA9IG1lZGlhU2l6ZSAqIHpvb20gLyAyIC0gY3JvcFNpemUgLyAyO1xuICByZXR1cm4gY2xhbXAocG9zaXRpb24sIC1tYXhQb3NpdGlvbiwgbWF4UG9zaXRpb24pO1xufVxuZnVuY3Rpb24gZ2V0RGlzdGFuY2VCZXR3ZWVuUG9pbnRzKHBvaW50QSwgcG9pbnRCKSB7XG4gIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3cocG9pbnRBLnkgLSBwb2ludEIueSwgMikgKyBNYXRoLnBvdyhwb2ludEEueCAtIHBvaW50Qi54LCAyKSk7XG59XG5mdW5jdGlvbiBnZXRSb3RhdGlvbkJldHdlZW5Qb2ludHMocG9pbnRBLCBwb2ludEIpIHtcbiAgcmV0dXJuIE1hdGguYXRhbjIocG9pbnRCLnkgLSBwb2ludEEueSwgcG9pbnRCLnggLSBwb2ludEEueCkgKiAxODAgLyBNYXRoLlBJO1xufVxuLyoqXHJcbiAqIENvbXB1dGUgdGhlIG91dHB1dCBjcm9wcGVkIGFyZWEgb2YgdGhlIG1lZGlhIGluIHBlcmNlbnRhZ2VzIGFuZCBwaXhlbHMuXHJcbiAqIHgveSBhcmUgdGhlIHRvcC1sZWZ0IGNvb3JkaW5hdGVzIG9uIHRoZSBzcmMgbWVkaWFcclxuICovXG5mdW5jdGlvbiBjb21wdXRlQ3JvcHBlZEFyZWEoY3JvcCwgbWVkaWFTaXplLCBjcm9wU2l6ZSwgYXNwZWN0LCB6b29tLCByb3RhdGlvbiwgcmVzdHJpY3RQb3NpdGlvbikge1xuICBpZiAocm90YXRpb24gPT09IHZvaWQgMCkge1xuICAgIHJvdGF0aW9uID0gMDtcbiAgfVxuICBpZiAocmVzdHJpY3RQb3NpdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgcmVzdHJpY3RQb3NpdGlvbiA9IHRydWU7XG4gIH1cbiAgLy8gaWYgdGhlIG1lZGlhIGlzIHJvdGF0ZWQgYnkgdGhlIHVzZXIsIHdlIGNhbm5vdCBsaW1pdCB0aGUgcG9zaXRpb24gYW55bW9yZVxuICAvLyBhcyBpdCBtaWdodCBuZWVkIHRvIGJlIG5lZ2F0aXZlLlxuICB2YXIgbGltaXRBcmVhRm4gPSByZXN0cmljdFBvc2l0aW9uID8gbGltaXRBcmVhIDogbm9PcDtcbiAgdmFyIG1lZGlhQkJveFNpemUgPSByb3RhdGVTaXplKG1lZGlhU2l6ZS53aWR0aCwgbWVkaWFTaXplLmhlaWdodCwgcm90YXRpb24pO1xuICB2YXIgbWVkaWFOYXR1cmFsQkJveFNpemUgPSByb3RhdGVTaXplKG1lZGlhU2l6ZS5uYXR1cmFsV2lkdGgsIG1lZGlhU2l6ZS5uYXR1cmFsSGVpZ2h0LCByb3RhdGlvbik7XG4gIC8vIGNhbGN1bGF0ZSB0aGUgY3JvcCBhcmVhIGluIHBlcmNlbnRhZ2VzXG4gIC8vIGluIHRoZSByb3RhdGVkIHNwYWNlXG4gIHZhciBjcm9wcGVkQXJlYVBlcmNlbnRhZ2VzID0ge1xuICAgIHg6IGxpbWl0QXJlYUZuKDEwMCwgKChtZWRpYUJCb3hTaXplLndpZHRoIC0gY3JvcFNpemUud2lkdGggLyB6b29tKSAvIDIgLSBjcm9wLnggLyB6b29tKSAvIG1lZGlhQkJveFNpemUud2lkdGggKiAxMDApLFxuICAgIHk6IGxpbWl0QXJlYUZuKDEwMCwgKChtZWRpYUJCb3hTaXplLmhlaWdodCAtIGNyb3BTaXplLmhlaWdodCAvIHpvb20pIC8gMiAtIGNyb3AueSAvIHpvb20pIC8gbWVkaWFCQm94U2l6ZS5oZWlnaHQgKiAxMDApLFxuICAgIHdpZHRoOiBsaW1pdEFyZWFGbigxMDAsIGNyb3BTaXplLndpZHRoIC8gbWVkaWFCQm94U2l6ZS53aWR0aCAqIDEwMCAvIHpvb20pLFxuICAgIGhlaWdodDogbGltaXRBcmVhRm4oMTAwLCBjcm9wU2l6ZS5oZWlnaHQgLyBtZWRpYUJCb3hTaXplLmhlaWdodCAqIDEwMCAvIHpvb20pXG4gIH07XG4gIC8vIHdlIGNvbXB1dGUgdGhlIHBpeGVscyBzaXplIG5haXZlbHlcbiAgdmFyIHdpZHRoSW5QaXhlbHMgPSBNYXRoLnJvdW5kKGxpbWl0QXJlYUZuKG1lZGlhTmF0dXJhbEJCb3hTaXplLndpZHRoLCBjcm9wcGVkQXJlYVBlcmNlbnRhZ2VzLndpZHRoICogbWVkaWFOYXR1cmFsQkJveFNpemUud2lkdGggLyAxMDApKTtcbiAgdmFyIGhlaWdodEluUGl4ZWxzID0gTWF0aC5yb3VuZChsaW1pdEFyZWFGbihtZWRpYU5hdHVyYWxCQm94U2l6ZS5oZWlnaHQsIGNyb3BwZWRBcmVhUGVyY2VudGFnZXMuaGVpZ2h0ICogbWVkaWFOYXR1cmFsQkJveFNpemUuaGVpZ2h0IC8gMTAwKSk7XG4gIHZhciBpc0ltZ1dpZGVyVGhhbkhpZ2ggPSBtZWRpYU5hdHVyYWxCQm94U2l6ZS53aWR0aCA+PSBtZWRpYU5hdHVyYWxCQm94U2l6ZS5oZWlnaHQgKiBhc3BlY3Q7XG4gIC8vIHRoZW4gd2UgZW5zdXJlIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGV4YWN0bHkgbWF0Y2ggdGhlIGFzcGVjdCAodG8gYXZvaWQgcm91bmRpbmcgYXBwcm94aW1hdGlvbnMpXG4gIC8vIGlmIHRoZSBtZWRpYSBpcyB3aWRlciB0aGFuIGhpZ2gsIHdoZW4gem9vbSBpcyAwLCB0aGUgY3JvcCBoZWlnaHQgd2lsbCBiZSBlcXVhbHMgdG8gaW1hZ2UgaGVpZ2h0XG4gIC8vIHRodXMgd2Ugd2FudCB0byBjb21wdXRlIHRoZSB3aWR0aCBmcm9tIHRoZSBoZWlnaHQgYW5kIGFzcGVjdCBmb3IgYWNjdXJhY3kuXG4gIC8vIE90aGVyd2lzZSwgd2UgY29tcHV0ZSB0aGUgaGVpZ2h0IGZyb20gd2lkdGggYW5kIGFzcGVjdC5cbiAgdmFyIHNpemVQaXhlbHMgPSBpc0ltZ1dpZGVyVGhhbkhpZ2ggPyB7XG4gICAgd2lkdGg6IE1hdGgucm91bmQoaGVpZ2h0SW5QaXhlbHMgKiBhc3BlY3QpLFxuICAgIGhlaWdodDogaGVpZ2h0SW5QaXhlbHNcbiAgfSA6IHtcbiAgICB3aWR0aDogd2lkdGhJblBpeGVscyxcbiAgICBoZWlnaHQ6IE1hdGgucm91bmQod2lkdGhJblBpeGVscyAvIGFzcGVjdClcbiAgfTtcbiAgdmFyIGNyb3BwZWRBcmVhUGl4ZWxzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHNpemVQaXhlbHMpLCB7XG4gICAgeDogTWF0aC5yb3VuZChsaW1pdEFyZWFGbihtZWRpYU5hdHVyYWxCQm94U2l6ZS53aWR0aCAtIHNpemVQaXhlbHMud2lkdGgsIGNyb3BwZWRBcmVhUGVyY2VudGFnZXMueCAqIG1lZGlhTmF0dXJhbEJCb3hTaXplLndpZHRoIC8gMTAwKSksXG4gICAgeTogTWF0aC5yb3VuZChsaW1pdEFyZWFGbihtZWRpYU5hdHVyYWxCQm94U2l6ZS5oZWlnaHQgLSBzaXplUGl4ZWxzLmhlaWdodCwgY3JvcHBlZEFyZWFQZXJjZW50YWdlcy55ICogbWVkaWFOYXR1cmFsQkJveFNpemUuaGVpZ2h0IC8gMTAwKSlcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY3JvcHBlZEFyZWFQZXJjZW50YWdlczogY3JvcHBlZEFyZWFQZXJjZW50YWdlcyxcbiAgICBjcm9wcGVkQXJlYVBpeGVsczogY3JvcHBlZEFyZWFQaXhlbHNcbiAgfTtcbn1cbi8qKlxyXG4gKiBFbnN1cmUgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJldHdlZW4gMCBhbmQgbWF4XHJcbiAqL1xuZnVuY3Rpb24gbGltaXRBcmVhKG1heCwgdmFsdWUpIHtcbiAgcmV0dXJuIE1hdGgubWluKG1heCwgTWF0aC5tYXgoMCwgdmFsdWUpKTtcbn1cbmZ1bmN0aW9uIG5vT3AoX21heCwgdmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXHJcbiAqIENvbXB1dGUgY3JvcCBhbmQgem9vbSBmcm9tIHRoZSBjcm9wcGVkQXJlYVBlcmNlbnRhZ2VzLlxyXG4gKi9cbmZ1bmN0aW9uIGdldEluaXRpYWxDcm9wRnJvbUNyb3BwZWRBcmVhUGVyY2VudGFnZXMoY3JvcHBlZEFyZWFQZXJjZW50YWdlcywgbWVkaWFTaXplLCByb3RhdGlvbiwgY3JvcFNpemUsIG1pblpvb20sIG1heFpvb20pIHtcbiAgdmFyIG1lZGlhQkJveFNpemUgPSByb3RhdGVTaXplKG1lZGlhU2l6ZS53aWR0aCwgbWVkaWFTaXplLmhlaWdodCwgcm90YXRpb24pO1xuICAvLyBUaGlzIGlzIHRoZSBpbnZlcnNlIHByb2Nlc3Mgb2YgY29tcHV0ZUNyb3BwZWRBcmVhXG4gIHZhciB6b29tID0gY2xhbXAoY3JvcFNpemUud2lkdGggLyBtZWRpYUJCb3hTaXplLndpZHRoICogKDEwMCAvIGNyb3BwZWRBcmVhUGVyY2VudGFnZXMud2lkdGgpLCBtaW5ab29tLCBtYXhab29tKTtcbiAgdmFyIGNyb3AgPSB7XG4gICAgeDogem9vbSAqIG1lZGlhQkJveFNpemUud2lkdGggLyAyIC0gY3JvcFNpemUud2lkdGggLyAyIC0gbWVkaWFCQm94U2l6ZS53aWR0aCAqIHpvb20gKiAoY3JvcHBlZEFyZWFQZXJjZW50YWdlcy54IC8gMTAwKSxcbiAgICB5OiB6b29tICogbWVkaWFCQm94U2l6ZS5oZWlnaHQgLyAyIC0gY3JvcFNpemUuaGVpZ2h0IC8gMiAtIG1lZGlhQkJveFNpemUuaGVpZ2h0ICogem9vbSAqIChjcm9wcGVkQXJlYVBlcmNlbnRhZ2VzLnkgLyAxMDApXG4gIH07XG4gIHJldHVybiB7XG4gICAgY3JvcDogY3JvcCxcbiAgICB6b29tOiB6b29tXG4gIH07XG59XG4vKipcclxuICogQ29tcHV0ZSB6b29tIGZyb20gdGhlIGNyb3BwZWRBcmVhUGl4ZWxzXHJcbiAqL1xuZnVuY3Rpb24gZ2V0Wm9vbUZyb21Dcm9wcGVkQXJlYVBpeGVscyhjcm9wcGVkQXJlYVBpeGVscywgbWVkaWFTaXplLCBjcm9wU2l6ZSkge1xuICB2YXIgbWVkaWFab29tID0gZ2V0TWVkaWFab29tKG1lZGlhU2l6ZSk7XG4gIHJldHVybiBjcm9wU2l6ZS5oZWlnaHQgPiBjcm9wU2l6ZS53aWR0aCA/IGNyb3BTaXplLmhlaWdodCAvIChjcm9wcGVkQXJlYVBpeGVscy5oZWlnaHQgKiBtZWRpYVpvb20pIDogY3JvcFNpemUud2lkdGggLyAoY3JvcHBlZEFyZWFQaXhlbHMud2lkdGggKiBtZWRpYVpvb20pO1xufVxuLyoqXHJcbiAqIENvbXB1dGUgY3JvcCBhbmQgem9vbSBmcm9tIHRoZSBjcm9wcGVkQXJlYVBpeGVsc1xyXG4gKi9cbmZ1bmN0aW9uIGdldEluaXRpYWxDcm9wRnJvbUNyb3BwZWRBcmVhUGl4ZWxzKGNyb3BwZWRBcmVhUGl4ZWxzLCBtZWRpYVNpemUsIHJvdGF0aW9uLCBjcm9wU2l6ZSwgbWluWm9vbSwgbWF4Wm9vbSkge1xuICBpZiAocm90YXRpb24gPT09IHZvaWQgMCkge1xuICAgIHJvdGF0aW9uID0gMDtcbiAgfVxuICB2YXIgbWVkaWFOYXR1cmFsQkJveFNpemUgPSByb3RhdGVTaXplKG1lZGlhU2l6ZS5uYXR1cmFsV2lkdGgsIG1lZGlhU2l6ZS5uYXR1cmFsSGVpZ2h0LCByb3RhdGlvbik7XG4gIHZhciB6b29tID0gY2xhbXAoZ2V0Wm9vbUZyb21Dcm9wcGVkQXJlYVBpeGVscyhjcm9wcGVkQXJlYVBpeGVscywgbWVkaWFTaXplLCBjcm9wU2l6ZSksIG1pblpvb20sIG1heFpvb20pO1xuICB2YXIgY3JvcFpvb20gPSBjcm9wU2l6ZS5oZWlnaHQgPiBjcm9wU2l6ZS53aWR0aCA/IGNyb3BTaXplLmhlaWdodCAvIGNyb3BwZWRBcmVhUGl4ZWxzLmhlaWdodCA6IGNyb3BTaXplLndpZHRoIC8gY3JvcHBlZEFyZWFQaXhlbHMud2lkdGg7XG4gIHZhciBjcm9wID0ge1xuICAgIHg6ICgobWVkaWFOYXR1cmFsQkJveFNpemUud2lkdGggLSBjcm9wcGVkQXJlYVBpeGVscy53aWR0aCkgLyAyIC0gY3JvcHBlZEFyZWFQaXhlbHMueCkgKiBjcm9wWm9vbSxcbiAgICB5OiAoKG1lZGlhTmF0dXJhbEJCb3hTaXplLmhlaWdodCAtIGNyb3BwZWRBcmVhUGl4ZWxzLmhlaWdodCkgLyAyIC0gY3JvcHBlZEFyZWFQaXhlbHMueSkgKiBjcm9wWm9vbVxuICB9O1xuICByZXR1cm4ge1xuICAgIGNyb3A6IGNyb3AsXG4gICAgem9vbTogem9vbVxuICB9O1xufVxuLyoqXHJcbiAqIFJldHVybiB0aGUgcG9pbnQgdGhhdCBpcyB0aGUgY2VudGVyIG9mIHBvaW50IGEgYW5kIGJcclxuICovXG5mdW5jdGlvbiBnZXRDZW50ZXIoYSwgYikge1xuICByZXR1cm4ge1xuICAgIHg6IChiLnggKyBhLngpIC8gMixcbiAgICB5OiAoYi55ICsgYS55KSAvIDJcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJhZGlhbkFuZ2xlKGRlZ3JlZVZhbHVlKSB7XG4gIHJldHVybiBkZWdyZWVWYWx1ZSAqIE1hdGguUEkgLyAxODA7XG59XG4vKipcclxuICogUmV0dXJucyB0aGUgbmV3IGJvdW5kaW5nIGFyZWEgb2YgYSByb3RhdGVkIHJlY3RhbmdsZS5cclxuICovXG5mdW5jdGlvbiByb3RhdGVTaXplKHdpZHRoLCBoZWlnaHQsIHJvdGF0aW9uKSB7XG4gIHZhciByb3RSYWQgPSBnZXRSYWRpYW5BbmdsZShyb3RhdGlvbik7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IE1hdGguYWJzKE1hdGguY29zKHJvdFJhZCkgKiB3aWR0aCkgKyBNYXRoLmFicyhNYXRoLnNpbihyb3RSYWQpICogaGVpZ2h0KSxcbiAgICBoZWlnaHQ6IE1hdGguYWJzKE1hdGguc2luKHJvdFJhZCkgKiB3aWR0aCkgKyBNYXRoLmFicyhNYXRoLmNvcyhyb3RSYWQpICogaGVpZ2h0KVxuICB9O1xufVxuLyoqXHJcbiAqIENsYW1wIHZhbHVlIGJldHdlZW4gbWluIGFuZCBtYXhcclxuICovXG5mdW5jdGlvbiBjbGFtcCh2YWx1ZSwgbWluLCBtYXgpIHtcbiAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHZhbHVlLCBtaW4pLCBtYXgpO1xufVxuLyoqXHJcbiAqIENvbWJpbmUgbXVsdGlwbGUgY2xhc3MgbmFtZXMgaW50byBhIHNpbmdsZSBzdHJpbmcuXHJcbiAqL1xuZnVuY3Rpb24gY2xhc3NOYW1lcygpIHtcbiAgdmFyIGFyZ3MgPSBbXTtcbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gIH1cbiAgcmV0dXJuIGFyZ3MuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pLmpvaW4oJyAnKS50cmltKCk7XG59XG5cbnZhciBjc3NfMjQ4eiA9IFwiLnJlYWN0RWFzeUNyb3BfQ29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHRvdWNoLWFjdGlvbjogbm9uZTtcXG4gIGN1cnNvcjogbW92ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcblxcbi5yZWFjdEVhc3lDcm9wX0ltYWdlLFxcbi5yZWFjdEVhc3lDcm9wX1ZpZGVvIHtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07IC8qIHRoaXMgaW1wcm92ZXMgcGVyZm9ybWFuY2VzIGFuZCBwcmV2ZW50IHBhaW50aW5nIGlzc3VlcyBvbiBpT1MgQ2hyb21lICovXFxufVxcblxcbi5yZWFjdEVhc3lDcm9wX0NvbnRhaW4ge1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgbWF4LWhlaWdodDogMTAwJTtcXG4gIG1hcmdpbjogYXV0bztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG59XFxuLnJlYWN0RWFzeUNyb3BfQ292ZXJfSG9yaXpvbnRhbCB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuLnJlYWN0RWFzeUNyb3BfQ292ZXJfVmVydGljYWwge1xcbiAgd2lkdGg6IGF1dG87XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5yZWFjdEVhc3lDcm9wX0Nyb3BBcmVhIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRvcDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm94LXNoYWRvdzogMCAwIDAgOTk5OWVtO1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcblxcbi5yZWFjdEVhc3lDcm9wX0Nyb3BBcmVhUm91bmQge1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbn1cXG5cXG4ucmVhY3RFYXN5Q3JvcF9Dcm9wQXJlYUdyaWQ6OmJlZm9yZSB7XFxuICBjb250ZW50OiAnICc7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMzMuMzMlO1xcbiAgcmlnaHQ6IDMzLjMzJTtcXG4gIGJvcmRlci10b3A6IDA7XFxuICBib3JkZXItYm90dG9tOiAwO1xcbn1cXG5cXG4ucmVhY3RFYXN5Q3JvcF9Dcm9wQXJlYUdyaWQ6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XFxuICB0b3A6IDMzLjMzJTtcXG4gIGJvdHRvbTogMzMuMzMlO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm9yZGVyLWxlZnQ6IDA7XFxuICBib3JkZXItcmlnaHQ6IDA7XFxufVxcblwiO1xuXG52YXIgTUlOX1pPT00gPSAxO1xudmFyIE1BWF9aT09NID0gMztcbnZhciBLRVlCT0FSRF9TVEVQID0gMTtcbnZhciBDcm9wcGVyID0gLyoqIEBjbGFzcyAqL2Z1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKENyb3BwZXIsIF9zdXBlcik7XG4gIGZ1bmN0aW9uIENyb3BwZXIoKSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgX3RoaXMuY3JvcHBlclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICAgIF90aGlzLmltYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XG4gICAgX3RoaXMudmlkZW9SZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICBfdGhpcy5jb250YWluZXJQb3NpdGlvbiA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgICBfdGhpcy5jb250YWluZXJSZWYgPSBudWxsO1xuICAgIF90aGlzLnN0eWxlUmVmID0gbnVsbDtcbiAgICBfdGhpcy5jb250YWluZXJSZWN0ID0gbnVsbDtcbiAgICBfdGhpcy5tZWRpYVNpemUgPSB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMCxcbiAgICAgIG5hdHVyYWxXaWR0aDogMCxcbiAgICAgIG5hdHVyYWxIZWlnaHQ6IDBcbiAgICB9O1xuICAgIF90aGlzLmRyYWdTdGFydFBvc2l0aW9uID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICAgIF90aGlzLmRyYWdTdGFydENyb3AgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gICAgX3RoaXMuZ2VzdHVyZVpvb21TdGFydCA9IDA7XG4gICAgX3RoaXMuZ2VzdHVyZVJvdGF0aW9uU3RhcnQgPSAwO1xuICAgIF90aGlzLmlzVG91Y2hpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5sYXN0UGluY2hEaXN0YW5jZSA9IDA7XG4gICAgX3RoaXMubGFzdFBpbmNoUm90YXRpb24gPSAwO1xuICAgIF90aGlzLnJhZkRyYWdUaW1lb3V0ID0gbnVsbDtcbiAgICBfdGhpcy5yYWZQaW5jaFRpbWVvdXQgPSBudWxsO1xuICAgIF90aGlzLndoZWVsVGltZXIgPSBudWxsO1xuICAgIF90aGlzLmN1cnJlbnREb2MgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gZG9jdW1lbnQgOiBudWxsO1xuICAgIF90aGlzLmN1cnJlbnRXaW5kb3cgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IG51bGw7XG4gICAgX3RoaXMucmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIF90aGlzLnByZXZpb3VzQ3JvcFNpemUgPSBudWxsO1xuICAgIF90aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNyb3BTaXplOiBudWxsLFxuICAgICAgaGFzV2hlZWxKdXN0U3RhcnRlZDogZmFsc2UsXG4gICAgICBtZWRpYU9iamVjdEZpdDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICBfdGhpcy5pbml0UmVzaXplT2JzZXJ2ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodHlwZW9mIHdpbmRvdy5SZXNpemVPYnNlcnZlciA9PT0gJ3VuZGVmaW5lZCcgfHwgIV90aGlzLmNvbnRhaW5lclJlZikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgaXNGaXJzdFJlc2l6ZSA9IHRydWU7XG4gICAgICBfdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyB3aW5kb3cuUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICAgICAgaWYgKGlzRmlyc3RSZXNpemUpIHtcbiAgICAgICAgICBpc0ZpcnN0UmVzaXplID0gZmFsc2U7IC8vIG9ic2VydmUoKSBpcyBjYWxsZWQgb24gbW91bnQsIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIHJlY29tcHV0ZSBvbiBtb3VudFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBfdGhpcy5jb21wdXRlU2l6ZXMoKTtcbiAgICAgIH0pO1xuICAgICAgX3RoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShfdGhpcy5jb250YWluZXJSZWYpO1xuICAgIH07XG4gICAgLy8gdGhpcyBpcyB0byBwcmV2ZW50IFNhZmFyaSBvbiBpT1MgPj0gMTAgdG8gem9vbSB0aGUgcGFnZVxuICAgIF90aGlzLnByZXZlbnRab29tU2FmYXJpID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5jbGVhbkV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghX3RoaXMuY3VycmVudERvYykgcmV0dXJuO1xuICAgICAgX3RoaXMuY3VycmVudERvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBfdGhpcy5vbk1vdXNlTW92ZSk7XG4gICAgICBfdGhpcy5jdXJyZW50RG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBfdGhpcy5vbkRyYWdTdG9wcGVkKTtcbiAgICAgIF90aGlzLmN1cnJlbnREb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgX3RoaXMub25Ub3VjaE1vdmUpO1xuICAgICAgX3RoaXMuY3VycmVudERvYy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIF90aGlzLm9uRHJhZ1N0b3BwZWQpO1xuICAgICAgX3RoaXMuY3VycmVudERvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdnZXN0dXJlY2hhbmdlJywgX3RoaXMub25HZXN0dXJlQ2hhbmdlKTtcbiAgICAgIF90aGlzLmN1cnJlbnREb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcignZ2VzdHVyZWVuZCcsIF90aGlzLm9uR2VzdHVyZUVuZCk7XG4gICAgICBfdGhpcy5jdXJyZW50RG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIF90aGlzLm9uU2Nyb2xsKTtcbiAgICB9O1xuICAgIF90aGlzLmNsZWFyU2Nyb2xsRXZlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuY29udGFpbmVyUmVmKSBfdGhpcy5jb250YWluZXJSZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBfdGhpcy5vbldoZWVsKTtcbiAgICAgIGlmIChfdGhpcy53aGVlbFRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChfdGhpcy53aGVlbFRpbWVyKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uTWVkaWFMb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGNyb3BTaXplID0gX3RoaXMuY29tcHV0ZVNpemVzKCk7XG4gICAgICBpZiAoY3JvcFNpemUpIHtcbiAgICAgICAgX3RoaXMucHJldmlvdXNDcm9wU2l6ZSA9IGNyb3BTaXplO1xuICAgICAgICBfdGhpcy5lbWl0Q3JvcERhdGEoKTtcbiAgICAgICAgX3RoaXMuc2V0SW5pdGlhbENyb3AoY3JvcFNpemUpO1xuICAgICAgICBfdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbk1lZGlhTG9hZGVkKSB7XG4gICAgICAgIF90aGlzLnByb3BzLm9uTWVkaWFMb2FkZWQoX3RoaXMubWVkaWFTaXplKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLnNldEluaXRpYWxDcm9wID0gZnVuY3Rpb24gKGNyb3BTaXplKSB7XG4gICAgICBpZiAoX3RoaXMucHJvcHMuaW5pdGlhbENyb3BwZWRBcmVhUGVyY2VudGFnZXMpIHtcbiAgICAgICAgdmFyIF9hID0gZ2V0SW5pdGlhbENyb3BGcm9tQ3JvcHBlZEFyZWFQZXJjZW50YWdlcyhfdGhpcy5wcm9wcy5pbml0aWFsQ3JvcHBlZEFyZWFQZXJjZW50YWdlcywgX3RoaXMubWVkaWFTaXplLCBfdGhpcy5wcm9wcy5yb3RhdGlvbiwgY3JvcFNpemUsIF90aGlzLnByb3BzLm1pblpvb20sIF90aGlzLnByb3BzLm1heFpvb20pLFxuICAgICAgICAgIGNyb3AgPSBfYS5jcm9wLFxuICAgICAgICAgIHpvb20gPSBfYS56b29tO1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkNyb3BDaGFuZ2UoY3JvcCk7XG4gICAgICAgIF90aGlzLnByb3BzLm9uWm9vbUNoYW5nZSAmJiBfdGhpcy5wcm9wcy5vblpvb21DaGFuZ2Uoem9vbSk7XG4gICAgICB9IGVsc2UgaWYgKF90aGlzLnByb3BzLmluaXRpYWxDcm9wcGVkQXJlYVBpeGVscykge1xuICAgICAgICB2YXIgX2IgPSBnZXRJbml0aWFsQ3JvcEZyb21Dcm9wcGVkQXJlYVBpeGVscyhfdGhpcy5wcm9wcy5pbml0aWFsQ3JvcHBlZEFyZWFQaXhlbHMsIF90aGlzLm1lZGlhU2l6ZSwgX3RoaXMucHJvcHMucm90YXRpb24sIGNyb3BTaXplLCBfdGhpcy5wcm9wcy5taW5ab29tLCBfdGhpcy5wcm9wcy5tYXhab29tKSxcbiAgICAgICAgICBjcm9wID0gX2IuY3JvcCxcbiAgICAgICAgICB6b29tID0gX2Iuem9vbTtcbiAgICAgICAgX3RoaXMucHJvcHMub25Dcm9wQ2hhbmdlKGNyb3ApO1xuICAgICAgICBfdGhpcy5wcm9wcy5vblpvb21DaGFuZ2UgJiYgX3RoaXMucHJvcHMub25ab29tQ2hhbmdlKHpvb20pO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMuY29tcHV0ZVNpemVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2Y7XG4gICAgICB2YXIgbWVkaWFSZWYgPSBfdGhpcy5pbWFnZVJlZi5jdXJyZW50IHx8IF90aGlzLnZpZGVvUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAobWVkaWFSZWYgJiYgX3RoaXMuY29udGFpbmVyUmVmKSB7XG4gICAgICAgIF90aGlzLmNvbnRhaW5lclJlY3QgPSBfdGhpcy5jb250YWluZXJSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIF90aGlzLnNhdmVDb250YWluZXJQb3NpdGlvbigpO1xuICAgICAgICB2YXIgY29udGFpbmVyQXNwZWN0ID0gX3RoaXMuY29udGFpbmVyUmVjdC53aWR0aCAvIF90aGlzLmNvbnRhaW5lclJlY3QuaGVpZ2h0O1xuICAgICAgICB2YXIgbmF0dXJhbFdpZHRoID0gKChfYSA9IF90aGlzLmltYWdlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uYXR1cmFsV2lkdGgpIHx8ICgoX2IgPSBfdGhpcy52aWRlb1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudmlkZW9XaWR0aCkgfHwgMDtcbiAgICAgICAgdmFyIG5hdHVyYWxIZWlnaHQgPSAoKF9jID0gX3RoaXMuaW1hZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm5hdHVyYWxIZWlnaHQpIHx8ICgoX2QgPSBfdGhpcy52aWRlb1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudmlkZW9IZWlnaHQpIHx8IDA7XG4gICAgICAgIHZhciBpc01lZGlhU2NhbGVkRG93biA9IG1lZGlhUmVmLm9mZnNldFdpZHRoIDwgbmF0dXJhbFdpZHRoIHx8IG1lZGlhUmVmLm9mZnNldEhlaWdodCA8IG5hdHVyYWxIZWlnaHQ7XG4gICAgICAgIHZhciBtZWRpYUFzcGVjdCA9IG5hdHVyYWxXaWR0aCAvIG5hdHVyYWxIZWlnaHQ7XG4gICAgICAgIC8vIFdlIGRvIG5vdCByZWx5IG9uIHRoZSBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgaWYgdGhlIG1lZGlhIGlzIHNjYWxlZCBkb3duXG4gICAgICAgIC8vIGFzIHRoZSB2YWx1ZXMgdGhleSByZXBvcnQgYXJlIHJvdW5kZWQuIFRoYXQgd2lsbCByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3Nlc1xuICAgICAgICAvLyB3aGVuIGNhbGN1bGF0aW5nIHpvb20uIFdlIHVzZSB0aGUgZmFjdCB0aGF0IHRoZSBtZWRpYSBpcyBwb3NpdGlvbm5lZCByZWxhdGl2ZVxuICAgICAgICAvLyB0byB0aGUgY29udGFpbmVyLiBUaGF0IGFsbG93cyB1cyB0byB1c2UgdGhlIGNvbnRhaW5lcidzIGRpbWVuc2lvbnNcbiAgICAgICAgLy8gYW5kIG5hdHVyYWwgYXNwZWN0IHJhdGlvIG9mIHRoZSBtZWRpYSB0byBjYWxjdWxhdGUgYWNjdXJhdGUgbWVkaWEgc2l6ZS5cbiAgICAgICAgLy8gSG93ZXZlciwgZm9yIHRoaXMgdG8gd29yaywgdGhlIGNvbnRhaW5lciBzaG91bGQgbm90IGJlIHJvdGF0ZWRcbiAgICAgICAgdmFyIHJlbmRlcmVkTWVkaWFTaXplID0gdm9pZCAwO1xuICAgICAgICBpZiAoaXNNZWRpYVNjYWxlZERvd24pIHtcbiAgICAgICAgICBzd2l0Y2ggKF90aGlzLnN0YXRlLm1lZGlhT2JqZWN0Rml0KSB7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FzZSAnY29udGFpbic6XG4gICAgICAgICAgICAgIHJlbmRlcmVkTWVkaWFTaXplID0gY29udGFpbmVyQXNwZWN0ID4gbWVkaWFBc3BlY3QgPyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IF90aGlzLmNvbnRhaW5lclJlY3QuaGVpZ2h0ICogbWVkaWFBc3BlY3QsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBfdGhpcy5jb250YWluZXJSZWN0LmhlaWdodFxuICAgICAgICAgICAgICB9IDoge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBfdGhpcy5jb250YWluZXJSZWN0LndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogX3RoaXMuY29udGFpbmVyUmVjdC53aWR0aCAvIG1lZGlhQXNwZWN0XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbC1jb3Zlcic6XG4gICAgICAgICAgICAgIHJlbmRlcmVkTWVkaWFTaXplID0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBfdGhpcy5jb250YWluZXJSZWN0LndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogX3RoaXMuY29udGFpbmVyUmVjdC53aWR0aCAvIG1lZGlhQXNwZWN0XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmVydGljYWwtY292ZXInOlxuICAgICAgICAgICAgICByZW5kZXJlZE1lZGlhU2l6ZSA9IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogX3RoaXMuY29udGFpbmVyUmVjdC5oZWlnaHQgKiBtZWRpYUFzcGVjdCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IF90aGlzLmNvbnRhaW5lclJlY3QuaGVpZ2h0XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW5kZXJlZE1lZGlhU2l6ZSA9IHtcbiAgICAgICAgICAgIHdpZHRoOiBtZWRpYVJlZi5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogbWVkaWFSZWYub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBfdGhpcy5tZWRpYVNpemUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVuZGVyZWRNZWRpYVNpemUpLCB7XG4gICAgICAgICAgbmF0dXJhbFdpZHRoOiBuYXR1cmFsV2lkdGgsXG4gICAgICAgICAgbmF0dXJhbEhlaWdodDogbmF0dXJhbEhlaWdodFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gc2V0IG1lZGlhIHNpemUgaW4gdGhlIHBhcmVudFxuICAgICAgICBpZiAoX3RoaXMucHJvcHMuc2V0TWVkaWFTaXplKSB7XG4gICAgICAgICAgX3RoaXMucHJvcHMuc2V0TWVkaWFTaXplKF90aGlzLm1lZGlhU2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNyb3BTaXplID0gX3RoaXMucHJvcHMuY3JvcFNpemUgPyBfdGhpcy5wcm9wcy5jcm9wU2l6ZSA6IGdldENyb3BTaXplKF90aGlzLm1lZGlhU2l6ZS53aWR0aCwgX3RoaXMubWVkaWFTaXplLmhlaWdodCwgX3RoaXMuY29udGFpbmVyUmVjdC53aWR0aCwgX3RoaXMuY29udGFpbmVyUmVjdC5oZWlnaHQsIF90aGlzLnByb3BzLmFzcGVjdCwgX3RoaXMucHJvcHMucm90YXRpb24pO1xuICAgICAgICBpZiAoKChfZSA9IF90aGlzLnN0YXRlLmNyb3BTaXplKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UuaGVpZ2h0KSAhPT0gY3JvcFNpemUuaGVpZ2h0IHx8ICgoX2YgPSBfdGhpcy5zdGF0ZS5jcm9wU2l6ZSkgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLndpZHRoKSAhPT0gY3JvcFNpemUud2lkdGgpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNyb3BTaXplQ2hhbmdlICYmIF90aGlzLnByb3BzLm9uQ3JvcFNpemVDaGFuZ2UoY3JvcFNpemUpO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjcm9wU2l6ZTogY3JvcFNpemVcbiAgICAgICAgfSwgX3RoaXMucmVjb21wdXRlQ3JvcFBvc2l0aW9uKTtcbiAgICAgICAgLy8gcGFzcyBjcm9wIHNpemUgdG8gcGFyZW50XG4gICAgICAgIGlmIChfdGhpcy5wcm9wcy5zZXRDcm9wU2l6ZSkge1xuICAgICAgICAgIF90aGlzLnByb3BzLnNldENyb3BTaXplKGNyb3BTaXplKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3JvcFNpemU7XG4gICAgICB9XG4gICAgfTtcbiAgICBfdGhpcy5zYXZlQ29udGFpbmVyUG9zaXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuY29udGFpbmVyUmVmKSB7XG4gICAgICAgIHZhciBib3VuZHMgPSBfdGhpcy5jb250YWluZXJSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIF90aGlzLmNvbnRhaW5lclBvc2l0aW9uID0ge1xuICAgICAgICAgIHg6IGJvdW5kcy5sZWZ0LFxuICAgICAgICAgIHk6IGJvdW5kcy50b3BcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uTW91c2VEb3duID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghX3RoaXMuY3VycmVudERvYykgcmV0dXJuO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgX3RoaXMuY3VycmVudERvYy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBfdGhpcy5vbk1vdXNlTW92ZSk7XG4gICAgICBfdGhpcy5jdXJyZW50RG9jLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBfdGhpcy5vbkRyYWdTdG9wcGVkKTtcbiAgICAgIF90aGlzLnNhdmVDb250YWluZXJQb3NpdGlvbigpO1xuICAgICAgX3RoaXMub25EcmFnU3RhcnQoQ3JvcHBlci5nZXRNb3VzZVBvaW50KGUpKTtcbiAgICB9O1xuICAgIF90aGlzLm9uTW91c2VNb3ZlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBfdGhpcy5vbkRyYWcoQ3JvcHBlci5nZXRNb3VzZVBvaW50KGUpKTtcbiAgICB9O1xuICAgIF90aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghX3RoaXMuY3VycmVudERvYykgcmV0dXJuO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgX3RoaXMuc2F2ZUNvbnRhaW5lclBvc2l0aW9uKCk7XG4gICAgfTtcbiAgICBfdGhpcy5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKCFfdGhpcy5jdXJyZW50RG9jKSByZXR1cm47XG4gICAgICBfdGhpcy5pc1RvdWNoaW5nID0gdHJ1ZTtcbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vblRvdWNoUmVxdWVzdCAmJiAhX3RoaXMucHJvcHMub25Ub3VjaFJlcXVlc3QoZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX3RoaXMuY3VycmVudERvYy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBfdGhpcy5vblRvdWNoTW92ZSwge1xuICAgICAgICBwYXNzaXZlOiBmYWxzZVxuICAgICAgfSk7IC8vIGlPUyAxMSBub3cgZGVmYXVsdHMgdG8gcGFzc2l2ZTogdHJ1ZVxuICAgICAgX3RoaXMuY3VycmVudERvYy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIF90aGlzLm9uRHJhZ1N0b3BwZWQpO1xuICAgICAgX3RoaXMuc2F2ZUNvbnRhaW5lclBvc2l0aW9uKCk7XG4gICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBfdGhpcy5vblBpbmNoU3RhcnQoZSk7XG4gICAgICB9IGVsc2UgaWYgKGUudG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgX3RoaXMub25EcmFnU3RhcnQoQ3JvcHBlci5nZXRUb3VjaFBvaW50KGUudG91Y2hlc1swXSkpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Ub3VjaE1vdmUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgLy8gUHJldmVudCB3aG9sZSBwYWdlIGZyb20gc2Nyb2xsaW5nIG9uIGlPUy5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIF90aGlzLm9uUGluY2hNb3ZlKGUpO1xuICAgICAgfSBlbHNlIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIF90aGlzLm9uRHJhZyhDcm9wcGVyLmdldFRvdWNoUG9pbnQoZS50b3VjaGVzWzBdKSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBfdGhpcy5vbkdlc3R1cmVTdGFydCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoIV90aGlzLmN1cnJlbnREb2MpIHJldHVybjtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLmN1cnJlbnREb2MuYWRkRXZlbnRMaXN0ZW5lcignZ2VzdHVyZWNoYW5nZScsIF90aGlzLm9uR2VzdHVyZUNoYW5nZSk7XG4gICAgICBfdGhpcy5jdXJyZW50RG9jLmFkZEV2ZW50TGlzdGVuZXIoJ2dlc3R1cmVlbmQnLCBfdGhpcy5vbkdlc3R1cmVFbmQpO1xuICAgICAgX3RoaXMuZ2VzdHVyZVpvb21TdGFydCA9IF90aGlzLnByb3BzLnpvb207XG4gICAgICBfdGhpcy5nZXN0dXJlUm90YXRpb25TdGFydCA9IF90aGlzLnByb3BzLnJvdGF0aW9uO1xuICAgIH07XG4gICAgX3RoaXMub25HZXN0dXJlQ2hhbmdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChfdGhpcy5pc1RvdWNoaW5nKSB7XG4gICAgICAgIC8vIHRoaXMgaXMgdG8gYXZvaWQgY29uZmxpY3QgYmV0d2VlbiBnZXN0dXJlIGFuZCB0b3VjaCBldmVudHNcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHBvaW50ID0gQ3JvcHBlci5nZXRNb3VzZVBvaW50KGUpO1xuICAgICAgdmFyIG5ld1pvb20gPSBfdGhpcy5nZXN0dXJlWm9vbVN0YXJ0IC0gMSArIGUuc2NhbGU7XG4gICAgICBfdGhpcy5zZXROZXdab29tKG5ld1pvb20sIHBvaW50LCB7XG4gICAgICAgIHNob3VsZFVwZGF0ZVBvc2l0aW9uOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vblJvdGF0aW9uQ2hhbmdlKSB7XG4gICAgICAgIHZhciBuZXdSb3RhdGlvbiA9IF90aGlzLmdlc3R1cmVSb3RhdGlvblN0YXJ0ICsgZS5yb3RhdGlvbjtcbiAgICAgICAgX3RoaXMucHJvcHMub25Sb3RhdGlvbkNoYW5nZShuZXdSb3RhdGlvbik7XG4gICAgICB9XG4gICAgfTtcbiAgICBfdGhpcy5vbkdlc3R1cmVFbmQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgX3RoaXMuY2xlYW5FdmVudHMoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uRHJhZ1N0YXJ0ID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgX2IsIF9jO1xuICAgICAgdmFyIHggPSBfYS54LFxuICAgICAgICB5ID0gX2EueTtcbiAgICAgIF90aGlzLmRyYWdTdGFydFBvc2l0aW9uID0ge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5XG4gICAgICB9O1xuICAgICAgX3RoaXMuZHJhZ1N0YXJ0Q3JvcCA9IF9fYXNzaWduKHt9LCBfdGhpcy5wcm9wcy5jcm9wKTtcbiAgICAgIChfYyA9IChfYiA9IF90aGlzLnByb3BzKS5vbkludGVyYWN0aW9uU3RhcnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jYWxsKF9iKTtcbiAgICB9O1xuICAgIF90aGlzLm9uRHJhZyA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgdmFyIHggPSBfYS54LFxuICAgICAgICB5ID0gX2EueTtcbiAgICAgIGlmICghX3RoaXMuY3VycmVudFdpbmRvdykgcmV0dXJuO1xuICAgICAgaWYgKF90aGlzLnJhZkRyYWdUaW1lb3V0KSBfdGhpcy5jdXJyZW50V2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKF90aGlzLnJhZkRyYWdUaW1lb3V0KTtcbiAgICAgIF90aGlzLnJhZkRyYWdUaW1lb3V0ID0gX3RoaXMuY3VycmVudFdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIV90aGlzLnN0YXRlLmNyb3BTaXplKSByZXR1cm47XG4gICAgICAgIGlmICh4ID09PSB1bmRlZmluZWQgfHwgeSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIHZhciBvZmZzZXRYID0geCAtIF90aGlzLmRyYWdTdGFydFBvc2l0aW9uLng7XG4gICAgICAgIHZhciBvZmZzZXRZID0geSAtIF90aGlzLmRyYWdTdGFydFBvc2l0aW9uLnk7XG4gICAgICAgIHZhciByZXF1ZXN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICB4OiBfdGhpcy5kcmFnU3RhcnRDcm9wLnggKyBvZmZzZXRYLFxuICAgICAgICAgIHk6IF90aGlzLmRyYWdTdGFydENyb3AueSArIG9mZnNldFlcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG5ld1Bvc2l0aW9uID0gX3RoaXMucHJvcHMucmVzdHJpY3RQb3NpdGlvbiA/IHJlc3RyaWN0UG9zaXRpb24ocmVxdWVzdGVkUG9zaXRpb24sIF90aGlzLm1lZGlhU2l6ZSwgX3RoaXMuc3RhdGUuY3JvcFNpemUsIF90aGlzLnByb3BzLnpvb20sIF90aGlzLnByb3BzLnJvdGF0aW9uKSA6IHJlcXVlc3RlZFBvc2l0aW9uO1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkNyb3BDaGFuZ2UobmV3UG9zaXRpb24pO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5vbkRyYWdTdG9wcGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIF90aGlzLmlzVG91Y2hpbmcgPSBmYWxzZTtcbiAgICAgIF90aGlzLmNsZWFuRXZlbnRzKCk7XG4gICAgICBfdGhpcy5lbWl0Q3JvcERhdGEoKTtcbiAgICAgIChfYiA9IChfYSA9IF90aGlzLnByb3BzKS5vbkludGVyYWN0aW9uRW5kKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgfTtcbiAgICBfdGhpcy5vbldoZWVsID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghX3RoaXMuY3VycmVudFdpbmRvdykgcmV0dXJuO1xuICAgICAgaWYgKF90aGlzLnByb3BzLm9uV2hlZWxSZXF1ZXN0ICYmICFfdGhpcy5wcm9wcy5vbldoZWVsUmVxdWVzdChlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB2YXIgcG9pbnQgPSBDcm9wcGVyLmdldE1vdXNlUG9pbnQoZSk7XG4gICAgICB2YXIgcGl4ZWxZID0gbm9ybWFsaXplV2hlZWwoZSkucGl4ZWxZO1xuICAgICAgdmFyIG5ld1pvb20gPSBfdGhpcy5wcm9wcy56b29tIC0gcGl4ZWxZICogX3RoaXMucHJvcHMuem9vbVNwZWVkIC8gMjAwO1xuICAgICAgX3RoaXMuc2V0TmV3Wm9vbShuZXdab29tLCBwb2ludCwge1xuICAgICAgICBzaG91bGRVcGRhdGVQb3NpdGlvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoIV90aGlzLnN0YXRlLmhhc1doZWVsSnVzdFN0YXJ0ZWQpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGhhc1doZWVsSnVzdFN0YXJ0ZWQ6IHRydWVcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgcmV0dXJuIChfYiA9IChfYSA9IF90aGlzLnByb3BzKS5vbkludGVyYWN0aW9uU3RhcnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoX3RoaXMud2hlZWxUaW1lcikge1xuICAgICAgICBjbGVhclRpbWVvdXQoX3RoaXMud2hlZWxUaW1lcik7XG4gICAgICB9XG4gICAgICBfdGhpcy53aGVlbFRpbWVyID0gX3RoaXMuY3VycmVudFdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBoYXNXaGVlbEp1c3RTdGFydGVkOiBmYWxzZVxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gX3RoaXMucHJvcHMpLm9uSW50ZXJhY3Rpb25FbmQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCAyNTApO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0UG9pbnRPbkNvbnRhaW5lciA9IGZ1bmN0aW9uIChfYSwgY29udGFpbmVyVG9wTGVmdCkge1xuICAgICAgdmFyIHggPSBfYS54LFxuICAgICAgICB5ID0gX2EueTtcbiAgICAgIGlmICghX3RoaXMuY29udGFpbmVyUmVjdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBDcm9wcGVyIGlzIG5vdCBtb3VudGVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBfdGhpcy5jb250YWluZXJSZWN0LndpZHRoIC8gMiAtICh4IC0gY29udGFpbmVyVG9wTGVmdC54KSxcbiAgICAgICAgeTogX3RoaXMuY29udGFpbmVyUmVjdC5oZWlnaHQgLyAyIC0gKHkgLSBjb250YWluZXJUb3BMZWZ0LnkpXG4gICAgICB9O1xuICAgIH07XG4gICAgX3RoaXMuZ2V0UG9pbnRPbk1lZGlhID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgeCA9IF9hLngsXG4gICAgICAgIHkgPSBfYS55O1xuICAgICAgdmFyIF9iID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGNyb3AgPSBfYi5jcm9wLFxuICAgICAgICB6b29tID0gX2Iuem9vbTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6ICh4ICsgY3JvcC54KSAvIHpvb20sXG4gICAgICAgIHk6ICh5ICsgY3JvcC55KSAvIHpvb21cbiAgICAgIH07XG4gICAgfTtcbiAgICBfdGhpcy5zZXROZXdab29tID0gZnVuY3Rpb24gKHpvb20sIHBvaW50LCBfYSkge1xuICAgICAgdmFyIF9iID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2EsXG4gICAgICAgIF9jID0gX2Iuc2hvdWxkVXBkYXRlUG9zaXRpb24sXG4gICAgICAgIHNob3VsZFVwZGF0ZVBvc2l0aW9uID0gX2MgPT09IHZvaWQgMCA/IHRydWUgOiBfYztcbiAgICAgIGlmICghX3RoaXMuc3RhdGUuY3JvcFNpemUgfHwgIV90aGlzLnByb3BzLm9uWm9vbUNoYW5nZSkgcmV0dXJuO1xuICAgICAgdmFyIG5ld1pvb20gPSBjbGFtcCh6b29tLCBfdGhpcy5wcm9wcy5taW5ab29tLCBfdGhpcy5wcm9wcy5tYXhab29tKTtcbiAgICAgIGlmIChzaG91bGRVcGRhdGVQb3NpdGlvbikge1xuICAgICAgICB2YXIgem9vbVBvaW50ID0gX3RoaXMuZ2V0UG9pbnRPbkNvbnRhaW5lcihwb2ludCwgX3RoaXMuY29udGFpbmVyUG9zaXRpb24pO1xuICAgICAgICB2YXIgem9vbVRhcmdldCA9IF90aGlzLmdldFBvaW50T25NZWRpYSh6b29tUG9pbnQpO1xuICAgICAgICB2YXIgcmVxdWVzdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgeDogem9vbVRhcmdldC54ICogbmV3Wm9vbSAtIHpvb21Qb2ludC54LFxuICAgICAgICAgIHk6IHpvb21UYXJnZXQueSAqIG5ld1pvb20gLSB6b29tUG9pbnQueVxuICAgICAgICB9O1xuICAgICAgICB2YXIgbmV3UG9zaXRpb24gPSBfdGhpcy5wcm9wcy5yZXN0cmljdFBvc2l0aW9uID8gcmVzdHJpY3RQb3NpdGlvbihyZXF1ZXN0ZWRQb3NpdGlvbiwgX3RoaXMubWVkaWFTaXplLCBfdGhpcy5zdGF0ZS5jcm9wU2l6ZSwgbmV3Wm9vbSwgX3RoaXMucHJvcHMucm90YXRpb24pIDogcmVxdWVzdGVkUG9zaXRpb247XG4gICAgICAgIF90aGlzLnByb3BzLm9uQ3JvcENoYW5nZShuZXdQb3NpdGlvbik7XG4gICAgICB9XG4gICAgICBfdGhpcy5wcm9wcy5vblpvb21DaGFuZ2UobmV3Wm9vbSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDcm9wRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghX3RoaXMuc3RhdGUuY3JvcFNpemUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICAvLyB0aGlzIGlzIHRvIGVuc3VyZSB0aGUgY3JvcCBpcyBjb3JyZWN0bHkgcmVzdHJpY3RlZCBhZnRlciBhIHpvb20gYmFjayAoaHR0cHM6Ly9naXRodWIuY29tL1ZhbGVudGluSC9yZWFjdC1lYXN5LWNyb3AvaXNzdWVzLzYpXG4gICAgICB2YXIgcmVzdHJpY3RlZFBvc2l0aW9uID0gX3RoaXMucHJvcHMucmVzdHJpY3RQb3NpdGlvbiA/IHJlc3RyaWN0UG9zaXRpb24oX3RoaXMucHJvcHMuY3JvcCwgX3RoaXMubWVkaWFTaXplLCBfdGhpcy5zdGF0ZS5jcm9wU2l6ZSwgX3RoaXMucHJvcHMuem9vbSwgX3RoaXMucHJvcHMucm90YXRpb24pIDogX3RoaXMucHJvcHMuY3JvcDtcbiAgICAgIHJldHVybiBjb21wdXRlQ3JvcHBlZEFyZWEocmVzdHJpY3RlZFBvc2l0aW9uLCBfdGhpcy5tZWRpYVNpemUsIF90aGlzLnN0YXRlLmNyb3BTaXplLCBfdGhpcy5nZXRBc3BlY3QoKSwgX3RoaXMucHJvcHMuem9vbSwgX3RoaXMucHJvcHMucm90YXRpb24sIF90aGlzLnByb3BzLnJlc3RyaWN0UG9zaXRpb24pO1xuICAgIH07XG4gICAgX3RoaXMuZW1pdENyb3BEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGNyb3BEYXRhID0gX3RoaXMuZ2V0Q3JvcERhdGEoKTtcbiAgICAgIGlmICghY3JvcERhdGEpIHJldHVybjtcbiAgICAgIHZhciBjcm9wcGVkQXJlYVBlcmNlbnRhZ2VzID0gY3JvcERhdGEuY3JvcHBlZEFyZWFQZXJjZW50YWdlcyxcbiAgICAgICAgY3JvcHBlZEFyZWFQaXhlbHMgPSBjcm9wRGF0YS5jcm9wcGVkQXJlYVBpeGVscztcbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkNyb3BDb21wbGV0ZSkge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkNyb3BDb21wbGV0ZShjcm9wcGVkQXJlYVBlcmNlbnRhZ2VzLCBjcm9wcGVkQXJlYVBpeGVscyk7XG4gICAgICB9XG4gICAgICBpZiAoX3RoaXMucHJvcHMub25Dcm9wQXJlYUNoYW5nZSkge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkNyb3BBcmVhQ2hhbmdlKGNyb3BwZWRBcmVhUGVyY2VudGFnZXMsIGNyb3BwZWRBcmVhUGl4ZWxzKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLmVtaXRDcm9wQXJlYUNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjcm9wRGF0YSA9IF90aGlzLmdldENyb3BEYXRhKCk7XG4gICAgICBpZiAoIWNyb3BEYXRhKSByZXR1cm47XG4gICAgICB2YXIgY3JvcHBlZEFyZWFQZXJjZW50YWdlcyA9IGNyb3BEYXRhLmNyb3BwZWRBcmVhUGVyY2VudGFnZXMsXG4gICAgICAgIGNyb3BwZWRBcmVhUGl4ZWxzID0gY3JvcERhdGEuY3JvcHBlZEFyZWFQaXhlbHM7XG4gICAgICBpZiAoX3RoaXMucHJvcHMub25Dcm9wQXJlYUNoYW5nZSkge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkNyb3BBcmVhQ2hhbmdlKGNyb3BwZWRBcmVhUGVyY2VudGFnZXMsIGNyb3BwZWRBcmVhUGl4ZWxzKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLnJlY29tcHV0ZUNyb3BQb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfYSwgX2I7XG4gICAgICBpZiAoIV90aGlzLnN0YXRlLmNyb3BTaXplKSByZXR1cm47XG4gICAgICB2YXIgYWRqdXN0ZWRDcm9wID0gX3RoaXMucHJvcHMuY3JvcDtcbiAgICAgIC8vIE9ubHkgc2NhbGUgaWYgd2UncmUgaW5pdGlhbGl6ZWQgYW5kIHRoaXMgaXMgYSBsZWdpdGltYXRlIHJlc2l6ZVxuICAgICAgaWYgKF90aGlzLmlzSW5pdGlhbGl6ZWQgJiYgKChfYSA9IF90aGlzLnByZXZpb3VzQ3JvcFNpemUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS53aWR0aCkgJiYgKChfYiA9IF90aGlzLnByZXZpb3VzQ3JvcFNpemUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5oZWlnaHQpKSB7XG4gICAgICAgIHZhciBzaXplQ2hhbmdlZCA9IE1hdGguYWJzKF90aGlzLnByZXZpb3VzQ3JvcFNpemUud2lkdGggLSBfdGhpcy5zdGF0ZS5jcm9wU2l6ZS53aWR0aCkgPiAxZS02IHx8IE1hdGguYWJzKF90aGlzLnByZXZpb3VzQ3JvcFNpemUuaGVpZ2h0IC0gX3RoaXMuc3RhdGUuY3JvcFNpemUuaGVpZ2h0KSA+IDFlLTY7XG4gICAgICAgIGlmIChzaXplQ2hhbmdlZCkge1xuICAgICAgICAgIHZhciBzY2FsZVggPSBfdGhpcy5zdGF0ZS5jcm9wU2l6ZS53aWR0aCAvIF90aGlzLnByZXZpb3VzQ3JvcFNpemUud2lkdGg7XG4gICAgICAgICAgdmFyIHNjYWxlWSA9IF90aGlzLnN0YXRlLmNyb3BTaXplLmhlaWdodCAvIF90aGlzLnByZXZpb3VzQ3JvcFNpemUuaGVpZ2h0O1xuICAgICAgICAgIGFkanVzdGVkQ3JvcCA9IHtcbiAgICAgICAgICAgIHg6IF90aGlzLnByb3BzLmNyb3AueCAqIHNjYWxlWCxcbiAgICAgICAgICAgIHk6IF90aGlzLnByb3BzLmNyb3AueSAqIHNjYWxlWVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBuZXdQb3NpdGlvbiA9IF90aGlzLnByb3BzLnJlc3RyaWN0UG9zaXRpb24gPyByZXN0cmljdFBvc2l0aW9uKGFkanVzdGVkQ3JvcCwgX3RoaXMubWVkaWFTaXplLCBfdGhpcy5zdGF0ZS5jcm9wU2l6ZSwgX3RoaXMucHJvcHMuem9vbSwgX3RoaXMucHJvcHMucm90YXRpb24pIDogYWRqdXN0ZWRDcm9wO1xuICAgICAgX3RoaXMucHJldmlvdXNDcm9wU2l6ZSA9IF90aGlzLnN0YXRlLmNyb3BTaXplO1xuICAgICAgX3RoaXMucHJvcHMub25Dcm9wQ2hhbmdlKG5ld1Bvc2l0aW9uKTtcbiAgICAgIF90aGlzLmVtaXRDcm9wRGF0YSgpO1xuICAgIH07XG4gICAgX3RoaXMub25LZXlEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgX2EsIF9iO1xuICAgICAgdmFyIF9jID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGNyb3AgPSBfYy5jcm9wLFxuICAgICAgICBvbkNyb3BDaGFuZ2UgPSBfYy5vbkNyb3BDaGFuZ2UsXG4gICAgICAgIGtleWJvYXJkU3RlcCA9IF9jLmtleWJvYXJkU3RlcCxcbiAgICAgICAgem9vbSA9IF9jLnpvb20sXG4gICAgICAgIHJvdGF0aW9uID0gX2Mucm90YXRpb247XG4gICAgICB2YXIgc3RlcCA9IGtleWJvYXJkU3RlcDtcbiAgICAgIGlmICghX3RoaXMuc3RhdGUuY3JvcFNpemUpIHJldHVybjtcbiAgICAgIC8vIGlmIHRoZSBzaGlmdCBrZXkgaXMgcHJlc3NlZCwgcmVkdWNlIHRoZSBzdGVwIHRvIGFsbG93IGZpbmVyIGNvbnRyb2xcbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICBzdGVwICo9IDAuMjtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdDcm9wID0gX19hc3NpZ24oe30sIGNyb3ApO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgbmV3Q3JvcC55IC09IHN0ZXA7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICBuZXdDcm9wLnkgKz0gc3RlcDtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgIG5ld0Nyb3AueCAtPSBzdGVwO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIG5ld0Nyb3AueCArPSBzdGVwO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLnJlc3RyaWN0UG9zaXRpb24pIHtcbiAgICAgICAgbmV3Q3JvcCA9IHJlc3RyaWN0UG9zaXRpb24obmV3Q3JvcCwgX3RoaXMubWVkaWFTaXplLCBfdGhpcy5zdGF0ZS5jcm9wU2l6ZSwgem9vbSwgcm90YXRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5yZXBlYXQpIHtcbiAgICAgICAgKF9iID0gKF9hID0gX3RoaXMucHJvcHMpLm9uSW50ZXJhY3Rpb25TdGFydCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpO1xuICAgICAgfVxuICAgICAgb25Dcm9wQ2hhbmdlKG5ld0Nyb3ApO1xuICAgIH07XG4gICAgX3RoaXMub25LZXlVcCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdmFyIF9hLCBfYjtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIF90aGlzLmVtaXRDcm9wRGF0YSgpO1xuICAgICAgKF9iID0gKF9hID0gX3RoaXMucHJvcHMpLm9uSW50ZXJhY3Rpb25FbmQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgICB9O1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBDcm9wcGVyLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudERvYyB8fCAhdGhpcy5jdXJyZW50V2luZG93KSByZXR1cm47XG4gICAgaWYgKHRoaXMuY29udGFpbmVyUmVmKSB7XG4gICAgICBpZiAodGhpcy5jb250YWluZXJSZWYub3duZXJEb2N1bWVudCkge1xuICAgICAgICB0aGlzLmN1cnJlbnREb2MgPSB0aGlzLmNvbnRhaW5lclJlZi5vd25lckRvY3VtZW50O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY3VycmVudERvYy5kZWZhdWx0Vmlldykge1xuICAgICAgICB0aGlzLmN1cnJlbnRXaW5kb3cgPSB0aGlzLmN1cnJlbnREb2MuZGVmYXVsdFZpZXc7XG4gICAgICB9XG4gICAgICB0aGlzLmluaXRSZXNpemVPYnNlcnZlcigpO1xuICAgICAgLy8gb25seSBhZGQgd2luZG93IHJlc2l6ZSBsaXN0ZW5lciBpZiBSZXNpemVPYnNlcnZlciBpcyBub3Qgc3VwcG9ydGVkLiBPdGhlcndpc2UsIGl0IHdvdWxkIGJlIHJlZHVuZGFudFxuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuUmVzaXplT2JzZXJ2ZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmNvbXB1dGVTaXplcyk7XG4gICAgICB9XG4gICAgICB0aGlzLnByb3BzLnpvb21XaXRoU2Nyb2xsICYmIHRoaXMuY29udGFpbmVyUmVmLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5vbldoZWVsLCB7XG4gICAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29udGFpbmVyUmVmLmFkZEV2ZW50TGlzdGVuZXIoJ2dlc3R1cmVzdGFydCcsIHRoaXMub25HZXN0dXJlU3RhcnQpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnREb2MuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCk7XG4gICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVBdXRvbWF0aWNTdHlsZXNJbmplY3Rpb24pIHtcbiAgICAgIHRoaXMuc3R5bGVSZWYgPSB0aGlzLmN1cnJlbnREb2MuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgIHRoaXMuc3R5bGVSZWYuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvY3NzJyk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5ub25jZSkge1xuICAgICAgICB0aGlzLnN0eWxlUmVmLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCB0aGlzLnByb3BzLm5vbmNlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3R5bGVSZWYuaW5uZXJIVE1MID0gY3NzXzI0OHo7XG4gICAgICB0aGlzLmN1cnJlbnREb2MuaGVhZC5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlUmVmKTtcbiAgICB9XG4gICAgLy8gd2hlbiByZW5kZXJlZCB2aWEgU1NSLCB0aGUgaW1hZ2UgY2FuIGFscmVhZHkgYmUgbG9hZGVkIGFuZCBpdHMgb25Mb2FkIGNhbGxiYWNrIHdpbGwgbmV2ZXIgYmUgY2FsbGVkXG4gICAgaWYgKHRoaXMuaW1hZ2VSZWYuY3VycmVudCAmJiB0aGlzLmltYWdlUmVmLmN1cnJlbnQuY29tcGxldGUpIHtcbiAgICAgIHRoaXMub25NZWRpYUxvYWQoKTtcbiAgICB9XG4gICAgLy8gc2V0IGltYWdlIGFuZCB2aWRlbyByZWZzIGluIHRoZSBwYXJlbnQgaWYgdGhlIGNhbGxiYWNrcyBleGlzdFxuICAgIGlmICh0aGlzLnByb3BzLnNldEltYWdlUmVmKSB7XG4gICAgICB0aGlzLnByb3BzLnNldEltYWdlUmVmKHRoaXMuaW1hZ2VSZWYpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5zZXRWaWRlb1JlZikge1xuICAgICAgdGhpcy5wcm9wcy5zZXRWaWRlb1JlZih0aGlzLnZpZGVvUmVmKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvcHMuc2V0Q3JvcHBlclJlZikge1xuICAgICAgdGhpcy5wcm9wcy5zZXRDcm9wcGVyUmVmKHRoaXMuY3JvcHBlclJlZik7XG4gICAgfVxuICB9O1xuICBDcm9wcGVyLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICghdGhpcy5jdXJyZW50RG9jIHx8ICF0aGlzLmN1cnJlbnRXaW5kb3cpIHJldHVybjtcbiAgICBpZiAodHlwZW9mIHdpbmRvdy5SZXNpemVPYnNlcnZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuY3VycmVudFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmNvbXB1dGVTaXplcyk7XG4gICAgfVxuICAgIChfYSA9IHRoaXMucmVzaXplT2JzZXJ2ZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNjb25uZWN0KCk7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyUmVmKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lclJlZi5yZW1vdmVFdmVudExpc3RlbmVyKCdnZXN0dXJlc3RhcnQnLCB0aGlzLnByZXZlbnRab29tU2FmYXJpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3R5bGVSZWYpIHtcbiAgICAgIChfYiA9IHRoaXMuc3R5bGVSZWYucGFyZW50Tm9kZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnJlbW92ZUNoaWxkKHRoaXMuc3R5bGVSZWYpO1xuICAgIH1cbiAgICB0aGlzLmNsZWFuRXZlbnRzKCk7XG4gICAgdGhpcy5wcm9wcy56b29tV2l0aFNjcm9sbCAmJiB0aGlzLmNsZWFyU2Nyb2xsRXZlbnQoKTtcbiAgfTtcbiAgQ3JvcHBlci5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gKHByZXZQcm9wcykge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qO1xuICAgIGlmIChwcmV2UHJvcHMucm90YXRpb24gIT09IHRoaXMucHJvcHMucm90YXRpb24pIHtcbiAgICAgIHRoaXMuY29tcHV0ZVNpemVzKCk7XG4gICAgICB0aGlzLnJlY29tcHV0ZUNyb3BQb3NpdGlvbigpO1xuICAgIH0gZWxzZSBpZiAocHJldlByb3BzLmFzcGVjdCAhPT0gdGhpcy5wcm9wcy5hc3BlY3QpIHtcbiAgICAgIHRoaXMuY29tcHV0ZVNpemVzKCk7XG4gICAgfSBlbHNlIGlmIChwcmV2UHJvcHMub2JqZWN0Rml0ICE9PSB0aGlzLnByb3BzLm9iamVjdEZpdCkge1xuICAgICAgdGhpcy5jb21wdXRlU2l6ZXMoKTtcbiAgICB9IGVsc2UgaWYgKHByZXZQcm9wcy56b29tICE9PSB0aGlzLnByb3BzLnpvb20pIHtcbiAgICAgIHRoaXMucmVjb21wdXRlQ3JvcFBvc2l0aW9uKCk7XG4gICAgfSBlbHNlIGlmICgoKF9hID0gcHJldlByb3BzLmNyb3BTaXplKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaGVpZ2h0KSAhPT0gKChfYiA9IHRoaXMucHJvcHMuY3JvcFNpemUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5oZWlnaHQpIHx8ICgoX2MgPSBwcmV2UHJvcHMuY3JvcFNpemUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy53aWR0aCkgIT09ICgoX2QgPSB0aGlzLnByb3BzLmNyb3BTaXplKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Qud2lkdGgpKSB7XG4gICAgICB0aGlzLmNvbXB1dGVTaXplcygpO1xuICAgIH0gZWxzZSBpZiAoKChfZSA9IHByZXZQcm9wcy5jcm9wKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UueCkgIT09ICgoX2YgPSB0aGlzLnByb3BzLmNyb3ApID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi54KSB8fCAoKF9nID0gcHJldlByb3BzLmNyb3ApID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy55KSAhPT0gKChfaCA9IHRoaXMucHJvcHMuY3JvcCkgPT09IG51bGwgfHwgX2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9oLnkpKSB7XG4gICAgICB0aGlzLmVtaXRDcm9wQXJlYUNoYW5nZSgpO1xuICAgIH1cbiAgICBpZiAocHJldlByb3BzLnpvb21XaXRoU2Nyb2xsICE9PSB0aGlzLnByb3BzLnpvb21XaXRoU2Nyb2xsICYmIHRoaXMuY29udGFpbmVyUmVmKSB7XG4gICAgICB0aGlzLnByb3BzLnpvb21XaXRoU2Nyb2xsID8gdGhpcy5jb250YWluZXJSZWYuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLm9uV2hlZWwsIHtcbiAgICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICAgIH0pIDogdGhpcy5jbGVhclNjcm9sbEV2ZW50KCk7XG4gICAgfVxuICAgIGlmIChwcmV2UHJvcHMudmlkZW8gIT09IHRoaXMucHJvcHMudmlkZW8pIHtcbiAgICAgIChfaiA9IHRoaXMudmlkZW9SZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLmxvYWQoKTtcbiAgICB9XG4gICAgdmFyIG9iamVjdEZpdCA9IHRoaXMuZ2V0T2JqZWN0Rml0KCk7XG4gICAgaWYgKG9iamVjdEZpdCAhPT0gdGhpcy5zdGF0ZS5tZWRpYU9iamVjdEZpdCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIG1lZGlhT2JqZWN0Rml0OiBvYmplY3RGaXRcbiAgICAgIH0sIHRoaXMuY29tcHV0ZVNpemVzKTtcbiAgICB9XG4gIH07XG4gIENyb3BwZXIucHJvdG90eXBlLmdldEFzcGVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2EgPSB0aGlzLnByb3BzLFxuICAgICAgY3JvcFNpemUgPSBfYS5jcm9wU2l6ZSxcbiAgICAgIGFzcGVjdCA9IF9hLmFzcGVjdDtcbiAgICBpZiAoY3JvcFNpemUpIHtcbiAgICAgIHJldHVybiBjcm9wU2l6ZS53aWR0aCAvIGNyb3BTaXplLmhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIGFzcGVjdDtcbiAgfTtcbiAgQ3JvcHBlci5wcm90b3R5cGUuZ2V0T2JqZWN0Rml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICBpZiAodGhpcy5wcm9wcy5vYmplY3RGaXQgPT09ICdjb3ZlcicpIHtcbiAgICAgIHZhciBtZWRpYVJlZiA9IHRoaXMuaW1hZ2VSZWYuY3VycmVudCB8fCB0aGlzLnZpZGVvUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAobWVkaWFSZWYgJiYgdGhpcy5jb250YWluZXJSZWYpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJSZWN0ID0gdGhpcy5jb250YWluZXJSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHZhciBjb250YWluZXJBc3BlY3QgPSB0aGlzLmNvbnRhaW5lclJlY3Qud2lkdGggLyB0aGlzLmNvbnRhaW5lclJlY3QuaGVpZ2h0O1xuICAgICAgICB2YXIgbmF0dXJhbFdpZHRoID0gKChfYSA9IHRoaXMuaW1hZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hdHVyYWxXaWR0aCkgfHwgKChfYiA9IHRoaXMudmlkZW9SZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnZpZGVvV2lkdGgpIHx8IDA7XG4gICAgICAgIHZhciBuYXR1cmFsSGVpZ2h0ID0gKChfYyA9IHRoaXMuaW1hZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm5hdHVyYWxIZWlnaHQpIHx8ICgoX2QgPSB0aGlzLnZpZGVvUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC52aWRlb0hlaWdodCkgfHwgMDtcbiAgICAgICAgdmFyIG1lZGlhQXNwZWN0ID0gbmF0dXJhbFdpZHRoIC8gbmF0dXJhbEhlaWdodDtcbiAgICAgICAgcmV0dXJuIG1lZGlhQXNwZWN0IDwgY29udGFpbmVyQXNwZWN0ID8gJ2hvcml6b250YWwtY292ZXInIDogJ3ZlcnRpY2FsLWNvdmVyJztcbiAgICAgIH1cbiAgICAgIHJldHVybiAnaG9yaXpvbnRhbC1jb3Zlcic7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLm9iamVjdEZpdDtcbiAgfTtcbiAgQ3JvcHBlci5wcm90b3R5cGUub25QaW5jaFN0YXJ0ID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgcG9pbnRBID0gQ3JvcHBlci5nZXRUb3VjaFBvaW50KGUudG91Y2hlc1swXSk7XG4gICAgdmFyIHBvaW50QiA9IENyb3BwZXIuZ2V0VG91Y2hQb2ludChlLnRvdWNoZXNbMV0pO1xuICAgIHRoaXMubGFzdFBpbmNoRGlzdGFuY2UgPSBnZXREaXN0YW5jZUJldHdlZW5Qb2ludHMocG9pbnRBLCBwb2ludEIpO1xuICAgIHRoaXMubGFzdFBpbmNoUm90YXRpb24gPSBnZXRSb3RhdGlvbkJldHdlZW5Qb2ludHMocG9pbnRBLCBwb2ludEIpO1xuICAgIHRoaXMub25EcmFnU3RhcnQoZ2V0Q2VudGVyKHBvaW50QSwgcG9pbnRCKSk7XG4gIH07XG4gIENyb3BwZXIucHJvdG90eXBlLm9uUGluY2hNb3ZlID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIGlmICghdGhpcy5jdXJyZW50RG9jIHx8ICF0aGlzLmN1cnJlbnRXaW5kb3cpIHJldHVybjtcbiAgICB2YXIgcG9pbnRBID0gQ3JvcHBlci5nZXRUb3VjaFBvaW50KGUudG91Y2hlc1swXSk7XG4gICAgdmFyIHBvaW50QiA9IENyb3BwZXIuZ2V0VG91Y2hQb2ludChlLnRvdWNoZXNbMV0pO1xuICAgIHZhciBjZW50ZXIgPSBnZXRDZW50ZXIocG9pbnRBLCBwb2ludEIpO1xuICAgIHRoaXMub25EcmFnKGNlbnRlcik7XG4gICAgaWYgKHRoaXMucmFmUGluY2hUaW1lb3V0KSB0aGlzLmN1cnJlbnRXaW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yYWZQaW5jaFRpbWVvdXQpO1xuICAgIHRoaXMucmFmUGluY2hUaW1lb3V0ID0gdGhpcy5jdXJyZW50V2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZGlzdGFuY2UgPSBnZXREaXN0YW5jZUJldHdlZW5Qb2ludHMocG9pbnRBLCBwb2ludEIpO1xuICAgICAgdmFyIG5ld1pvb20gPSBfdGhpcy5wcm9wcy56b29tICogKGRpc3RhbmNlIC8gX3RoaXMubGFzdFBpbmNoRGlzdGFuY2UpO1xuICAgICAgX3RoaXMuc2V0TmV3Wm9vbShuZXdab29tLCBjZW50ZXIsIHtcbiAgICAgICAgc2hvdWxkVXBkYXRlUG9zaXRpb246IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLmxhc3RQaW5jaERpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICB2YXIgcm90YXRpb24gPSBnZXRSb3RhdGlvbkJldHdlZW5Qb2ludHMocG9pbnRBLCBwb2ludEIpO1xuICAgICAgdmFyIG5ld1JvdGF0aW9uID0gX3RoaXMucHJvcHMucm90YXRpb24gKyAocm90YXRpb24gLSBfdGhpcy5sYXN0UGluY2hSb3RhdGlvbik7XG4gICAgICBfdGhpcy5wcm9wcy5vblJvdGF0aW9uQ2hhbmdlICYmIF90aGlzLnByb3BzLm9uUm90YXRpb25DaGFuZ2UobmV3Um90YXRpb24pO1xuICAgICAgX3RoaXMubGFzdFBpbmNoUm90YXRpb24gPSByb3RhdGlvbjtcbiAgICB9KTtcbiAgfTtcbiAgQ3JvcHBlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgdmFyIF9hO1xuICAgIHZhciBfYiA9IHRoaXMucHJvcHMsXG4gICAgICBpbWFnZSA9IF9iLmltYWdlLFxuICAgICAgdmlkZW8gPSBfYi52aWRlbyxcbiAgICAgIG1lZGlhUHJvcHMgPSBfYi5tZWRpYVByb3BzLFxuICAgICAgY3JvcHBlclByb3BzID0gX2IuY3JvcHBlclByb3BzLFxuICAgICAgdHJhbnNmb3JtID0gX2IudHJhbnNmb3JtLFxuICAgICAgX2MgPSBfYi5jcm9wLFxuICAgICAgeCA9IF9jLngsXG4gICAgICB5ID0gX2MueSxcbiAgICAgIHJvdGF0aW9uID0gX2Iucm90YXRpb24sXG4gICAgICB6b29tID0gX2Iuem9vbSxcbiAgICAgIGNyb3BTaGFwZSA9IF9iLmNyb3BTaGFwZSxcbiAgICAgIHNob3dHcmlkID0gX2Iuc2hvd0dyaWQsXG4gICAgICByb3VuZENyb3BBcmVhUGl4ZWxzID0gX2Iucm91bmRDcm9wQXJlYVBpeGVscyxcbiAgICAgIF9kID0gX2Iuc3R5bGUsXG4gICAgICBjb250YWluZXJTdHlsZSA9IF9kLmNvbnRhaW5lclN0eWxlLFxuICAgICAgY3JvcEFyZWFTdHlsZSA9IF9kLmNyb3BBcmVhU3R5bGUsXG4gICAgICBtZWRpYVN0eWxlID0gX2QubWVkaWFTdHlsZSxcbiAgICAgIF9lID0gX2IuY2xhc3NlcyxcbiAgICAgIGNvbnRhaW5lckNsYXNzTmFtZSA9IF9lLmNvbnRhaW5lckNsYXNzTmFtZSxcbiAgICAgIGNyb3BBcmVhQ2xhc3NOYW1lID0gX2UuY3JvcEFyZWFDbGFzc05hbWUsXG4gICAgICBtZWRpYUNsYXNzTmFtZSA9IF9lLm1lZGlhQ2xhc3NOYW1lO1xuICAgIHZhciBvYmplY3RGaXQgPSAoX2EgPSB0aGlzLnN0YXRlLm1lZGlhT2JqZWN0Rml0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmdldE9iamVjdEZpdCgpO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgIG9uTW91c2VEb3duOiB0aGlzLm9uTW91c2VEb3duLFxuICAgICAgb25Ub3VjaFN0YXJ0OiB0aGlzLm9uVG91Y2hTdGFydCxcbiAgICAgIHJlZjogZnVuY3Rpb24gcmVmKGVsKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5jb250YWluZXJSZWYgPSBlbDtcbiAgICAgIH0sXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiY29udGFpbmVyXCIsXG4gICAgICBzdHlsZTogY29udGFpbmVyU3R5bGUsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoJ3JlYWN0RWFzeUNyb3BfQ29udGFpbmVyJywgY29udGFpbmVyQ2xhc3NOYW1lKVxuICAgIH0sIGltYWdlID8gUmVhY3QuY3JlYXRlRWxlbWVudChcImltZ1wiLCBfX2Fzc2lnbih7XG4gICAgICBhbHQ6IFwiXCIsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoJ3JlYWN0RWFzeUNyb3BfSW1hZ2UnLCBvYmplY3RGaXQgPT09ICdjb250YWluJyAmJiAncmVhY3RFYXN5Q3JvcF9Db250YWluJywgb2JqZWN0Rml0ID09PSAnaG9yaXpvbnRhbC1jb3ZlcicgJiYgJ3JlYWN0RWFzeUNyb3BfQ292ZXJfSG9yaXpvbnRhbCcsIG9iamVjdEZpdCA9PT0gJ3ZlcnRpY2FsLWNvdmVyJyAmJiAncmVhY3RFYXN5Q3JvcF9Db3Zlcl9WZXJ0aWNhbCcsIG1lZGlhQ2xhc3NOYW1lKVxuICAgIH0sIG1lZGlhUHJvcHMsIHtcbiAgICAgIHNyYzogaW1hZ2UsXG4gICAgICByZWY6IHRoaXMuaW1hZ2VSZWYsXG4gICAgICBzdHlsZTogX19hc3NpZ24oX19hc3NpZ24oe30sIG1lZGlhU3R5bGUpLCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtIHx8IFwidHJhbnNsYXRlKFwiLmNvbmNhdCh4LCBcInB4LCBcIikuY29uY2F0KHksIFwicHgpIHJvdGF0ZShcIikuY29uY2F0KHJvdGF0aW9uLCBcImRlZykgc2NhbGUoXCIpLmNvbmNhdCh6b29tLCBcIilcIilcbiAgICAgIH0pLFxuICAgICAgb25Mb2FkOiB0aGlzLm9uTWVkaWFMb2FkXG4gICAgfSkpIDogdmlkZW8gJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcInZpZGVvXCIsIF9fYXNzaWduKHtcbiAgICAgIGF1dG9QbGF5OiB0cnVlLFxuICAgICAgcGxheXNJbmxpbmU6IHRydWUsXG4gICAgICBsb29wOiB0cnVlLFxuICAgICAgbXV0ZWQ6IHRydWUsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoJ3JlYWN0RWFzeUNyb3BfVmlkZW8nLCBvYmplY3RGaXQgPT09ICdjb250YWluJyAmJiAncmVhY3RFYXN5Q3JvcF9Db250YWluJywgb2JqZWN0Rml0ID09PSAnaG9yaXpvbnRhbC1jb3ZlcicgJiYgJ3JlYWN0RWFzeUNyb3BfQ292ZXJfSG9yaXpvbnRhbCcsIG9iamVjdEZpdCA9PT0gJ3ZlcnRpY2FsLWNvdmVyJyAmJiAncmVhY3RFYXN5Q3JvcF9Db3Zlcl9WZXJ0aWNhbCcsIG1lZGlhQ2xhc3NOYW1lKVxuICAgIH0sIG1lZGlhUHJvcHMsIHtcbiAgICAgIHJlZjogdGhpcy52aWRlb1JlZixcbiAgICAgIG9uTG9hZGVkTWV0YWRhdGE6IHRoaXMub25NZWRpYUxvYWQsXG4gICAgICBzdHlsZTogX19hc3NpZ24oX19hc3NpZ24oe30sIG1lZGlhU3R5bGUpLCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtIHx8IFwidHJhbnNsYXRlKFwiLmNvbmNhdCh4LCBcInB4LCBcIikuY29uY2F0KHksIFwicHgpIHJvdGF0ZShcIikuY29uY2F0KHJvdGF0aW9uLCBcImRlZykgc2NhbGUoXCIpLmNvbmNhdCh6b29tLCBcIilcIilcbiAgICAgIH0pLFxuICAgICAgY29udHJvbHM6IGZhbHNlXG4gICAgfSksIChBcnJheS5pc0FycmF5KHZpZGVvKSA/IHZpZGVvIDogW3tcbiAgICAgIHNyYzogdmlkZW9cbiAgICB9XSkubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcInNvdXJjZVwiLCBfX2Fzc2lnbih7XG4gICAgICAgIGtleTogaXRlbS5zcmNcbiAgICAgIH0sIGl0ZW0pKTtcbiAgICB9KSksIHRoaXMuc3RhdGUuY3JvcFNpemUgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7XG4gICAgICByZWY6IHRoaXMuY3JvcHBlclJlZixcbiAgICAgIHN0eWxlOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY3JvcEFyZWFTdHlsZSksIHtcbiAgICAgICAgd2lkdGg6IHJvdW5kQ3JvcEFyZWFQaXhlbHMgPyBNYXRoLnJvdW5kKHRoaXMuc3RhdGUuY3JvcFNpemUud2lkdGgpIDogdGhpcy5zdGF0ZS5jcm9wU2l6ZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiByb3VuZENyb3BBcmVhUGl4ZWxzID8gTWF0aC5yb3VuZCh0aGlzLnN0YXRlLmNyb3BTaXplLmhlaWdodCkgOiB0aGlzLnN0YXRlLmNyb3BTaXplLmhlaWdodFxuICAgICAgfSksXG4gICAgICB0YWJJbmRleDogMCxcbiAgICAgIG9uS2V5RG93bjogdGhpcy5vbktleURvd24sXG4gICAgICBvbktleVVwOiB0aGlzLm9uS2V5VXAsXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiY3JvcHBlclwiLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKCdyZWFjdEVhc3lDcm9wX0Nyb3BBcmVhJywgY3JvcFNoYXBlID09PSAncm91bmQnICYmICdyZWFjdEVhc3lDcm9wX0Nyb3BBcmVhUm91bmQnLCBzaG93R3JpZCAmJiAncmVhY3RFYXN5Q3JvcF9Dcm9wQXJlYUdyaWQnLCBjcm9wQXJlYUNsYXNzTmFtZSlcbiAgICB9LCBjcm9wcGVyUHJvcHMpKSk7XG4gIH07XG4gIENyb3BwZXIuZGVmYXVsdFByb3BzID0ge1xuICAgIHpvb206IDEsXG4gICAgcm90YXRpb246IDAsXG4gICAgYXNwZWN0OiA0IC8gMyxcbiAgICBtYXhab29tOiBNQVhfWk9PTSxcbiAgICBtaW5ab29tOiBNSU5fWk9PTSxcbiAgICBjcm9wU2hhcGU6ICdyZWN0JyxcbiAgICBvYmplY3RGaXQ6ICdjb250YWluJyxcbiAgICBzaG93R3JpZDogdHJ1ZSxcbiAgICBzdHlsZToge30sXG4gICAgY2xhc3Nlczoge30sXG4gICAgbWVkaWFQcm9wczoge30sXG4gICAgY3JvcHBlclByb3BzOiB7fSxcbiAgICB6b29tU3BlZWQ6IDEsXG4gICAgcmVzdHJpY3RQb3NpdGlvbjogdHJ1ZSxcbiAgICB6b29tV2l0aFNjcm9sbDogdHJ1ZSxcbiAgICBrZXlib2FyZFN0ZXA6IEtFWUJPQVJEX1NURVBcbiAgfTtcbiAgQ3JvcHBlci5nZXRNb3VzZVBvaW50ID0gZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogTnVtYmVyKGUuY2xpZW50WCksXG4gICAgICB5OiBOdW1iZXIoZS5jbGllbnRZKVxuICAgIH07XG4gIH07XG4gIENyb3BwZXIuZ2V0VG91Y2hQb2ludCA9IGZ1bmN0aW9uICh0b3VjaCkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBOdW1iZXIodG91Y2guY2xpZW50WCksXG4gICAgICB5OiBOdW1iZXIodG91Y2guY2xpZW50WSlcbiAgICB9O1xuICB9O1xuICByZXR1cm4gQ3JvcHBlcjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0IHsgQ3JvcHBlciBhcyBkZWZhdWx0LCBnZXRJbml0aWFsQ3JvcEZyb21Dcm9wcGVkQXJlYVBlcmNlbnRhZ2VzLCBnZXRJbml0aWFsQ3JvcEZyb21Dcm9wcGVkQXJlYVBpeGVscyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubW9kdWxlLm1qcy5tYXBcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-easy-crop/index.module.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/react-hook-form/dist/index.esm.mjs":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/react-hook-form/dist/index.esm.mjs ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Controller: () => (/* binding */ Controller),\n/* harmony export */ Form: () => (/* binding */ Form),\n/* harmony export */ FormProvider: () => (/* binding */ FormProvider),\n/* harmony export */ FormStateSubscribe: () => (/* binding */ FormStateSubscribe),\n/* harmony export */ Watch: () => (/* binding */ Watch),\n/* harmony export */ appendErrors: () => (/* binding */ appendErrors),\n/* harmony export */ createFormControl: () => (/* binding */ createFormControl),\n/* harmony export */ get: () => (/* binding */ get),\n/* harmony export */ set: () => (/* binding */ set),\n/* harmony export */ useController: () => (/* binding */ useController),\n/* harmony export */ useFieldArray: () => (/* binding */ useFieldArray),\n/* harmony export */ useForm: () => (/* binding */ useForm),\n/* harmony export */ useFormContext: () => (/* binding */ useFormContext),\n/* harmony export */ useFormState: () => (/* binding */ useFormState),\n/* harmony export */ useWatch: () => (/* binding */ useWatch)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n ? isCheckBoxInput(event.target)\n ? event.target.checked\n : event.target.value\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar isPlainObject = (tempObject) => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n if (data instanceof Date) {\n return new Date(data);\n }\n const isFileListInstance = typeof FileList !== 'undefined' && data instanceof FileList;\n if (isWeb && (data instanceof Blob || isFileListInstance)) {\n return data;\n }\n const isArray = Array.isArray(data);\n if (!isArray && !(isObject(data) && isPlainObject(data))) {\n return data;\n }\n const copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n return copy;\n}\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar isUndefined = (val) => val === undefined;\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object\n ? isUndefined(object[path])\n ? defaultValue\n : object[path]\n : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n};\n\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n\n/**\n * Separate context for `control` to prevent unnecessary rerenders.\n * Internal hooks that only need control use this instead of full form context.\n */\nconst HookFormControlContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);\nHookFormControlContext.displayName = 'HookFormControlContext';\n/**\n * @internal Internal hook to access only control from context.\n */\nconst useFormControlContext = () => react__WEBPACK_IMPORTED_MODULE_0__.useContext(HookFormControlContext);\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues,\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n return result;\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const formControl = useFormControlContext();\n const { control = formControl, disabled, name, exact } = props || {};\n const [formState, updateFormState] = react__WEBPACK_IMPORTED_MODULE_0__.useState(control._formState);\n const _localProxyFormState = react__WEBPACK_IMPORTED_MODULE_0__.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n useIsomorphicLayoutEffect(() => control._subscribe({\n name,\n formState: _localProxyFormState.current,\n exact,\n callback: (formState) => {\n !disabled &&\n updateFormState({\n ...control._formState,\n ...formState,\n });\n },\n }), [name, disabled, exact]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n _localProxyFormState.current.isValid && control._setValid(true);\n }, [control]);\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\n get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2, _internal_visited = new WeakSet()) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return Object.is(object1, object2);\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return Object.is(object1.getTime(), object2.getTime());\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n if (_internal_visited.has(object1) || _internal_visited.has(object2)) {\n return true;\n }\n _internal_visited.add(object1);\n _internal_visited.add(object2);\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if ((isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2, _internal_visited)\n : !Object.is(val1, val2)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const formControl = useFormControlContext();\n const { control = formControl, name, defaultValue, disabled, exact, compute, } = props || {};\n const _defaultValue = react__WEBPACK_IMPORTED_MODULE_0__.useRef(defaultValue);\n const _compute = react__WEBPACK_IMPORTED_MODULE_0__.useRef(compute);\n const _computeFormValues = react__WEBPACK_IMPORTED_MODULE_0__.useRef(undefined);\n const _prevControl = react__WEBPACK_IMPORTED_MODULE_0__.useRef(control);\n const _prevName = react__WEBPACK_IMPORTED_MODULE_0__.useRef(name);\n _compute.current = compute;\n const [value, updateValue] = react__WEBPACK_IMPORTED_MODULE_0__.useState(() => {\n const defaultValue = control._getWatch(name, _defaultValue.current);\n return _compute.current ? _compute.current(defaultValue) : defaultValue;\n });\n const getCurrentOutput = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((values) => {\n const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n return _compute.current ? _compute.current(formValues) : formValues;\n }, [control._formValues, control._names, name]);\n const refreshValue = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((values) => {\n if (!disabled) {\n const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n if (_compute.current) {\n const computedFormValues = _compute.current(formValues);\n if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n updateValue(computedFormValues);\n _computeFormValues.current = computedFormValues;\n }\n }\n else {\n updateValue(formValues);\n }\n }\n }, [control._formValues, control._names, disabled, name]);\n useIsomorphicLayoutEffect(() => {\n if (_prevControl.current !== control ||\n !deepEqual(_prevName.current, name)) {\n _prevControl.current = control;\n _prevName.current = name;\n refreshValue();\n }\n return control._subscribe({\n name,\n formState: {\n values: true,\n },\n exact,\n callback: (formState) => {\n refreshValue(formState.values);\n },\n });\n }, [control, exact, name, refreshValue]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => control._removeUnmounted());\n // If name or control changed for this render, synchronously reflect the\n // latest value so callers (like useController) see the correct value\n // immediately on the same render.\n // Optimize: Check control reference first before expensive deepEqual\n const controlChanged = _prevControl.current !== control;\n const prevName = _prevName.current;\n // Cache the computed output to avoid duplicate calls within the same render\n // We include shouldReturnImmediate in deps to ensure proper recomputation\n const computedOutput = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {\n if (disabled) {\n return null;\n }\n const nameChanged = !controlChanged && !deepEqual(prevName, name);\n const shouldReturnImmediate = controlChanged || nameChanged;\n return shouldReturnImmediate ? getCurrentOutput() : null;\n }, [disabled, controlChanged, name, prevName, getCurrentOutput]);\n return computedOutput !== null ? computedOutput : value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const formControl = useFormControlContext();\n const { name, disabled, control = formControl, shouldUnregister, defaultValue, exact = true, } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const defaultValueMemo = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);\n const value = useWatch({\n control,\n name,\n defaultValue: defaultValueMemo,\n exact,\n });\n const formState = useFormState({\n control,\n name,\n exact,\n });\n const _props = react__WEBPACK_IMPORTED_MODULE_0__.useRef(props);\n const _previousNameRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(undefined);\n const _registerProps = react__WEBPACK_IMPORTED_MODULE_0__.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }));\n _props.current = props;\n const fieldState = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n }), [formState, name]);\n const onChange = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((event) => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name,\n },\n type: EVENTS.CHANGE,\n }), [name]);\n const onBlur = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name,\n },\n type: EVENTS.BLUR,\n }), [name, control._formValues]);\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((elm) => {\n const field = get(control._fields, name);\n if (field && field._f && elm) {\n field._f.ref = {\n focus: () => isFunction(elm.focus) && elm.focus(),\n select: () => isFunction(elm.select) && elm.select(),\n setCustomValidity: (message) => isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),\n reportValidity: () => isFunction(elm.reportValidity) && elm.reportValidity(),\n };\n }\n }, [control._fields, name]);\n const field = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange,\n onBlur,\n ref,\n }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n const previousName = _previousNameRef.current;\n if (previousName && previousName !== name && !isArrayField) {\n control.unregister(previousName);\n }\n control.register(name, {\n ..._props.current.rules,\n ...(isBoolean(_props.current.disabled)\n ? { disabled: _props.current.disabled }\n : {}),\n });\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name, _props.current.defaultValue));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n !isArrayField && control.register(name);\n _previousNameRef.current = name;\n return () => {\n (isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField)\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n control._setDisabledField({\n disabled,\n name,\n });\n }, [disabled, name, control]);\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({\n field,\n formState,\n fieldState,\n }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst flatten = (obj) => {\n const output = {};\n for (const key of Object.keys(obj)) {\n if (isObjectType(obj[key]) && obj[key] !== null) {\n const nested = flatten(obj[key]);\n for (const nestedKey of Object.keys(nested)) {\n output[`${key}.${nestedKey}`] = nested[nestedKey];\n }\n }\n else {\n output[key] = obj[key];\n }\n }\n return output;\n};\n\nconst HookFormContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);\nHookFormContext.displayName = 'HookFormContext';\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => react__WEBPACK_IMPORTED_MODULE_0__.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://react.dev/reference/react/useContext) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n const { children, watch, getValues, getFieldState, setError, clearErrors, setValue, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, } = props;\n return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(HookFormContext.Provider, { value: react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({\n watch,\n getValues,\n getFieldState,\n setError,\n clearErrors,\n setValue,\n trigger,\n formState,\n resetField,\n reset,\n handleSubmit,\n unregister,\n control,\n register,\n setFocus,\n subscribe,\n }), [\n clearErrors,\n control,\n formState,\n getFieldState,\n getValues,\n handleSubmit,\n register,\n reset,\n resetField,\n setError,\n setFocus,\n setValue,\n subscribe,\n trigger,\n unregister,\n watch,\n ]) },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(HookFormControlContext.Provider, { value: control }, children)));\n};\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n const submit = async (event) => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async (data) => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n }\n catch (_a) { }\n const flattenFormValues = flatten(control._formValues);\n for (const key in flattenFormValues) {\n formData.append(key, flattenFormValues[key]);\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson,\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [\n headers && headers['Content-Type'],\n encType,\n ].some((value) => value && value.includes('json'));\n const response = await fetch(String(action), {\n method,\n headers: {\n ...headers,\n ...(encType && encType !== 'multipart/form-data'\n ? { 'Content-Type': encType }\n : {}),\n },\n body: shouldStringifySubmissionData ? formDataJson : formData,\n });\n if (response &&\n (validateStatus\n ? !validateStatus(response.status)\n : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({ response });\n type = String(response.status);\n }\n else {\n onSuccess && onSuccess({ response });\n }\n }\n catch (error) {\n hasError = true;\n onError && onError({ error });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false,\n });\n props.control.setError('root.server', {\n type,\n });\n }\n };\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, render({\n submit,\n }))) : (react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nconst FormStateSubscribe = ({ control, disabled, exact, name, render, }) => render(useFormState({ control, name, disabled, exact }));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true,\n },\n }\n : {};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar createSubject = () => {\n let _observers = [];\n const next = (value) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = (observer) => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n\nfunction extractFormValues(fieldsState, formValues) {\n const values = {};\n for (const key in fieldsState) {\n if (fieldsState.hasOwnProperty(key)) {\n const fieldState = fieldsState[key];\n const fieldValue = formValues[key];\n if (fieldState && isObject(fieldState) && fieldValue) {\n const nestedFieldsState = extractFormValues(fieldState, fieldValue);\n if (isObject(nestedFieldsState)) {\n values[key] = nestedFieldsState;\n }\n }\n else if (fieldsState[key]) {\n values[key] = fieldValue;\n }\n }\n }\n return values;\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isHTMLElement = (value) => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return (value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\n\nvar objectHasFunction = (data) => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n\nfunction isTraversable(value) {\n return Array.isArray(value) || (isObject(value) && !objectHasFunction(value));\n}\nfunction markFieldsDirty(data, fields = {}) {\n for (const key in data) {\n const value = data[key];\n if (isTraversable(value)) {\n fields[key] = Array.isArray(value) ? [] : {};\n markFieldsDirty(value, fields[key]);\n }\n else if (!isUndefined(value)) {\n fields[key] = true;\n }\n }\n return fields;\n}\nfunction getDirtyFields(data, formValues, dirtyFieldsFromValues) {\n if (!dirtyFieldsFromValues) {\n dirtyFieldsFromValues = markFieldsDirty(formValues);\n }\n for (const key in data) {\n const value = data[key];\n if (isTraversable(value)) {\n if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = markFieldsDirty(value, Array.isArray(value) ? [] : {});\n }\n else {\n getDirtyFields(value, isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n }\n else {\n const formValue = formValues[key];\n dirtyFieldsFromValues[key] = !deepEqual(value, formValue);\n }\n }\n return dirtyFieldsFromValues;\n}\n\nconst defaultResult = {\n value: false,\n isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n return defaultResult;\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n\nconst defaultReturn = {\n isValid: false,\n value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous, defaultReturn)\n : defaultReturn;\n\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation,\n };\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n\nvar getValidationModes = (mode) => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => !!fieldReference &&\n !!fieldReference.validate &&\n !!((isFunction(fieldReference.validate) &&\n fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n (isObject(fieldReference.validate) &&\n Object.values(fieldReference.validate).find((validateFunction) => validateFunction.constructor.name === ASYNC_FUNCTION)));\n\nvar hasValidation = (options) => options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const { _f, ...currentField } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n }\n else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n }\n else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n else if (isObject(currentField)) {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n }\n return;\n};\n\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n if (foundError && foundError.root && foundError.root.type) {\n return {\n name: `${fieldName}.root`,\n error: foundError.root,\n };\n }\n names.pop();\n }\n return {\n name,\n };\n}\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n return (isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find((key) => _proxyFormState[key] ===\n (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some((currentName) => currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)));\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n }\n else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n }\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n }\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n\nfunction getValidateError(result, ref, type = 'validate') {\n if (isString(result) ||\n (Array.isArray(result) && result.every(isString)) ||\n (isBoolean(result) && !result)) {\n return {\n type,\n message: isString(result) ? result : '',\n ref,\n };\n }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabledFieldNames.has(name)) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = (message) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n if (isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))) {\n const { value, message } = isString(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n }\n else {\n const valueDate = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n }\n else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n setCustomValidity(true);\n return error;\n};\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isReady: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n keepIsValid: false,\n };\n let _names = {\n mount: new Set(),\n disabled: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback;\n let timer = 0;\n const defaultProxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _proxyFormState = {\n ...defaultProxyFormState,\n };\n let _proxySubscribeFormState = {\n ..._proxyFormState,\n };\n const _subjects = {\n array: createSubject(),\n state: createSubject(),\n };\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = (callback) => (wait) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _setValid = async (shouldUpdateValid) => {\n if (_state.keepIsValid) {\n return;\n }\n if (!_options.disabled &&\n (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid ||\n shouldUpdateValid)) {\n let isValid;\n if (_options.resolver) {\n isValid = isEmptyObject((await _runSchema()).errors);\n _updateIsValidating();\n }\n else {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (!_options.disabled &&\n (_proxyFormState.isValidating ||\n _proxyFormState.validatingFields ||\n _proxySubscribeFormState.isValidating ||\n _proxySubscribeFormState.validatingFields)) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method && !_options.disabled) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n }\n else {\n set(_formValues, name, values);\n }\n };\n const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n const _setErrors = (errors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) ||\n (ref && ref.defaultChecked) ||\n shouldSkipSetValueAs\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n : setFieldValue(name, defaultValue);\n _state.mount && !_state.action && _setValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name,\n };\n if (!_options.disabled) {\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!get(_formState.dirtyFields, name);\n isCurrentFieldPristine\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.dirtyFields ||\n _proxySubscribeFormState.dirtyFields) &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = (_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n if (_options.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(_options.delayError);\n }\n else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _runSchema = async (name) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n return result;\n };\n const executeSchemaAndUpdateState = async (names) => {\n const { errors } = await _runSchema(names);\n _updateIsValidating(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n }\n else {\n _formState.errors = errors;\n }\n return errors;\n };\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n valid: true,\n }) => {\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const { _f, ...fieldValue } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([_f.name], true);\n }\n const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([_f.name]);\n }\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid || props.shouldUseNativeValidation) {\n break;\n }\n }\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => !_options.disabled &&\n (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n }, isGlobal, defaultValue);\n const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n }\n else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.forEach((checkboxRef) => {\n if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n if (Array.isArray(fieldValue)) {\n checkboxRef.checked = !!fieldValue.find((data) => data === checkboxRef.value);\n }\n else {\n checkboxRef.checked =\n fieldValue === checkboxRef.value || !!fieldValue;\n }\n }\n });\n }\n else {\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n }\n }\n else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n }\n else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.state.next({\n name,\n values: cloneObject(_formValues),\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n if (!value.hasOwnProperty(fieldKey)) {\n return;\n }\n const fieldValue = value[fieldKey];\n const fieldName = name + '.' + fieldKey;\n const field = get(_fields, fieldName);\n (_names.array.has(name) ||\n isObject(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: cloneObject(_formValues),\n });\n if ((_proxyFormState.isDirty ||\n _proxyFormState.dirtyFields ||\n _proxySubscribeFormState.isDirty ||\n _proxySubscribeFormState.dirtyFields) &&\n options.shouldDirty) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n }\n else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n if (isWatched(name, _names)) {\n _subjects.state.next({\n ..._formState,\n name,\n values: cloneObject(_formValues),\n });\n }\n else {\n _subjects.state.next({\n name: _state.mount ? name : undefined,\n values: cloneObject(_formValues),\n });\n }\n };\n const onChange = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const _updateIsFieldValueUpdated = (fieldValue) => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n if (field) {\n let error;\n let isValid;\n const fieldValue = target.type\n ? getFieldValue(field._f)\n : getEventValue(event);\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n if (!target || !target.readOnly) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n }\n else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent &&\n _subjects.state.next({\n name,\n type: event.type,\n values: cloneObject(_formValues),\n });\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid || _proxySubscribeFormState.isValid) {\n if (_options.mode === 'onBlur') {\n if (isBlurEvent) {\n _setValid();\n }\n }\n else if (!isBlurEvent) {\n _setValid();\n }\n }\n return (shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n }\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n if (_options.resolver) {\n const { errors } = await _runSchema([name]);\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n }\n else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n }\n else if (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps &&\n (!Array.isArray(field._f.deps) || field._f.deps.length > 0) &&\n trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n }\n else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _setValid();\n }\n else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n _subjects.state.next({\n ...(!isString(name) ||\n ((_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = (fieldNames, config) => {\n let values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n if (config) {\n values = extractFormValues(config.dirtyFields ? _formState.dirtyFields : _formState.touchedFields, values);\n }\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n const clearErrors = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName));\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name)\n ? _subjects.state.subscribe({\n next: (payload) => 'values' in payload &&\n name(_getWatch(undefined, defaultValue), payload),\n })\n : _getWatch(name, defaultValue, true);\n const _subscribe = (props) => _subjects.state.subscribe({\n next: (formState) => {\n if (shouldSubscribeByName(props.name, formState.name, props.exact) &&\n shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {\n props.callback({\n values: { ..._formValues },\n ..._formState,\n ...formState,\n defaultValues: _defaultValues,\n });\n }\n },\n }).unsubscribe;\n const subscribe = (props) => {\n _state.mount = true;\n _proxySubscribeFormState = {\n ..._proxySubscribeFormState,\n ...props.formState,\n };\n return _subscribe({\n ...props,\n formState: {\n ...defaultProxyFormState,\n ...props.formState,\n },\n });\n };\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n _subjects.state.next({\n values: cloneObject(_formValues),\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n !options.keepIsValid && _setValid();\n };\n const _setDisabledField = ({ disabled, name, }) => {\n if ((isBoolean(disabled) && _state.mount) ||\n !!disabled ||\n _names.disabled.has(name)) {\n const wasDisabled = _names.disabled.has(name);\n const isDisabled = !!disabled;\n const disabledStateChanged = wasDisabled !== isDisabled;\n disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n disabledStateChanged && _state.mount && !_state.action && _setValid();\n }\n };\n const register = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n if (field) {\n _setDisabledField({\n disabled: isBoolean(options.disabled)\n ? options.disabled\n : _options.disabled,\n name,\n });\n }\n else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined\n ? { disabled: options.disabled || _options.disabled }\n : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern),\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref) => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox\n ? refs.find((option) => option === fieldRef)\n : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n }\n else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n const _focusError = () => _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = (disabled) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist &&\n e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n _subjects.state.next({\n isSubmitting: true,\n });\n if (_options.resolver) {\n const { errors, values } = await _runSchema();\n _updateIsValidating();\n _formState.errors = errors;\n fieldValues = cloneObject(values);\n }\n else {\n await executeBuiltInValidation(_fields);\n }\n if (_names.disabled.size) {\n for (const name of _names.disabled) {\n unset(fieldValues, name);\n }\n }\n unset(_formState.errors, 'root');\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues, e);\n }\n catch (error) {\n onValidError = error;\n }\n }\n else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n }\n else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _setValid();\n }\n _subjects.state.next({ ..._formState });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n const fieldsToCheck = new Set([\n ..._names.mount,\n ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n ]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n const isDirty = get(_formState.dirtyFields, fieldName);\n const existingValue = get(_formValues, fieldName);\n const newValue = get(values, fieldName);\n if (isDirty && !isUndefined(existingValue)) {\n set(values, fieldName, existingValue);\n }\n else if (!isDirty && !isUndefined(newValue)) {\n setValue(fieldName, newValue);\n }\n }\n }\n else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n if (keepStateOptions.keepFieldsRef) {\n for (const fieldName of _names.mount) {\n setValue(fieldName, get(values, fieldName));\n }\n }\n else {\n _fields = {};\n }\n }\n _formValues = _options.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n _subjects.array.next({\n values: { ...values },\n });\n _subjects.state.next({\n values: { ...values },\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n disabled: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues ||\n (!_options.shouldUnregister && !isEmptyObject(values));\n _state.watch = !!_options.shouldUnregister;\n _state.keepIsValid = !!keepStateOptions.keepIsValid;\n _state.action = false;\n // Clear errors synchronously to prevent validation errors on subsequent submissions\n // This fixes the issue where form.reset() causes validation errors on subsequent\n // submissions in Next.js 16 with Server Actions\n if (!keepStateOptions.keepErrors) {\n _formState.errors = {};\n }\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n defaultValues: _defaultValues,\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n ? formValues(_formValues)\n : formValues, { ..._options.resetOptions, ...keepStateOptions });\n const setFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n if (fieldRef.focus) {\n // Use setTimeout to ensure focus happens after any pending state updates\n // This fixes the issue where setFocus doesn't work immediately after setError\n setTimeout(() => {\n fieldRef.focus();\n options.shouldSelect &&\n isFunction(fieldRef.select) &&\n fieldRef.select();\n });\n }\n }\n };\n const _setFormState = (updatedFormState) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n const methods = {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _subscribe,\n _runSchema,\n _updateIsValidating,\n _focusError,\n _getWatch,\n _getDirty,\n _setValid,\n _setFieldArray,\n _setDisabledField,\n _setErrors,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _removeUnmounted,\n _disableForm,\n _subjects,\n _proxyFormState,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n subscribe,\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n return {\n ...methods,\n formControl: methods,\n };\n}\n\nvar generateId = () => {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = ((Math.random() * 16 + d) % 16) | 0;\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n\nvar appendAt = (data, value) => [\n ...data,\n ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\n\nvar prependAt = (data, value) => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n ? []\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const formControl = useFormControlContext();\n const { control = formControl, name, keyName = 'id', shouldUnregister, rules, } = props;\n const [fields, setFields] = react__WEBPACK_IMPORTED_MODULE_0__.useState(control._getFieldArray(name));\n const ids = react__WEBPACK_IMPORTED_MODULE_0__.useRef(control._getFieldArray(name).map(generateId));\n const _actioned = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n control._names.array.add(name);\n react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => rules &&\n fields.length >= 0 &&\n control.register(name, rules), [control, name, fields.length, rules]);\n useIsomorphicLayoutEffect(() => control._subjects.array.subscribe({\n next: ({ values, name: fieldArrayName, }) => {\n if (fieldArrayName === name || !fieldArrayName) {\n const fieldValues = get(values, name);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n }).unsubscribe, [control, name]);\n const updateValues = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((updatedFieldArrayValues) => {\n _actioned.current = true;\n control._setFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n const remove = (index) => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n !Array.isArray(get(control._fields, name)) &&\n set(control._fields, name, undefined);\n control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB,\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to,\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue,\n }, true, false);\n };\n const replace = (value) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n };\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n });\n if (_actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted) &&\n !getValidationModes(control._options.reValidateMode).isOnSubmit) {\n if (control._options.resolver) {\n control._runSchema([name]).then((result) => {\n control._updateIsValidating([name]);\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors,\n });\n }\n });\n }\n else {\n const field = get(control._fields, name);\n if (field &&\n field._f &&\n !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\n }));\n }\n }\n }\n control._subjects.state.next({\n name,\n values: cloneObject(control._formValues),\n });\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._setValid();\n _actioned.current = false;\n }, [fields, name, control]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n !get(control._formValues, name) && control._setFieldArray(name);\n return () => {\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n control._options.shouldUnregister || shouldUnregister\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(swap, [updateValues, name, control]),\n move: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(move, [updateValues, name, control]),\n prepend: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(prepend, [updateValues, name, control]),\n append: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(append, [updateValues, name, control]),\n remove: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(remove, [updateValues, name, control]),\n insert: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(insert$1, [updateValues, name, control]),\n update: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(update, [updateValues, name, control]),\n replace: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(replace, [updateValues, name, control]),\n fields: react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })), [fields, keyName]),\n };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n const _formControl = react__WEBPACK_IMPORTED_MODULE_0__.useRef(undefined);\n const _values = react__WEBPACK_IMPORTED_MODULE_0__.useRef(undefined);\n const [formState, updateFormState] = react__WEBPACK_IMPORTED_MODULE_0__.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n isReady: false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n if (!_formControl.current) {\n if (props.formControl) {\n _formControl.current = {\n ...props.formControl,\n formState,\n };\n if (props.defaultValues && !isFunction(props.defaultValues)) {\n props.formControl.reset(props.defaultValues, props.resetOptions);\n }\n }\n else {\n const { formControl, ...rest } = createFormControl(props);\n _formControl.current = {\n ...rest,\n formState,\n };\n }\n }\n const control = _formControl.current.control;\n control._options = props;\n useIsomorphicLayoutEffect(() => {\n const sub = control._subscribe({\n formState: control._proxyFormState,\n callback: () => updateFormState({ ...control._formState }),\n reRenderRoot: true,\n });\n updateFormState((data) => ({\n ...data,\n isReady: true,\n }));\n control._formState.isReady = true;\n return sub;\n }, [control]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (props.mode) {\n control._options.mode = props.mode;\n }\n if (props.reValidateMode) {\n control._options.reValidateMode = props.reValidateMode;\n }\n }, [control, props.mode, props.reValidateMode]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n control._focusError();\n }\n }, [control, props.errors]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.state.next({\n values: control._getWatch(),\n });\n }, [control, props.shouldUnregister]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n var _a;\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, {\n keepFieldsRef: true,\n ...control._options.resetOptions,\n });\n if (!((_a = control._options.resetOptions) === null || _a === void 0 ? void 0 : _a.keepIsValid)) {\n control._setValid();\n }\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n }\n else {\n control._resetDefaultValues();\n }\n }, [control, props.values]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (!control._state.mount) {\n control._setValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n control._removeUnmounted();\n });\n _formControl.current.formState = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => getProxyFormState(formState, control), [control, formState]);\n return _formControl.current;\n}\n\n/**\n * Watch component that subscribes to form field changes and re-renders when watched fields update.\n *\n * @param control - The form control object from useForm\n * @param name - Can be field name, array of field names, or undefined to watch the entire form\n * @param disabled - Disable subscription\n * @param exact - Whether to watch exact field names or not\n * @param defaultValue - The default value to use if the field is not yet set\n * @param compute - Function to compute derived values from watched fields\n * @param render - The function that receives watched values and returns ReactNode\n * @returns The result of calling render function with watched values\n *\n * @example\n * The `Watch` component only re-render when the values of `foo`, `bar`, and `baz.qux` change.\n * The types of `foo`, `bar`, and `baz.qux` are precisely inferred.\n *\n * ```tsx\n * const { control } = useForm();\n *\n * <Watch\n * control={control}\n * names={['foo', 'bar', 'baz.qux']}\n * render={([foo, bar, baz_qux]) => <div>{foo}{bar}{baz_qux}</div>}\n * />\n * ```\n */\nconst Watch = (props) => props.render(useWatch({ name: props.names, ...props }));\n\n\n//# sourceMappingURL=index.esm.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1ob29rLWZvcm0vZGlzdC9pbmRleC5lc20ubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEI7O0FBRTFCOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZ0RBQW1CO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDZDQUFnQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQSxrRUFBa0Usa0RBQXFCLEdBQUcsNENBQWU7O0FBRXpHO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDLHdDQUF3QztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxPQUFPO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0JBQXNCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLFVBQVU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLHFCQUFxQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksc0dBQXNHO0FBQ2xIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsaUJBQWlCO0FBQ2pDLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0JBQStCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsdUJBQXVCO0FBQ3ZCLDRCQUE0QjtBQUM1QixxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSxVQUFVLElBQUk7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxrREFBa0Q7QUFDbEQ7QUFDQSxXQUFXLEtBQUssR0FBRyw2REFBNkQ7QUFDaEY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0ZBQXNGO0FBQ3RGO0FBQ0E7QUFDQTtB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Q0FBcUMsMENBQWE7QUFDbEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsWUFBWTtBQUNaLGFBQWEsK0JBQStCLEtBQUssS0FBSyxRQUFRO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCw2QkFBNkI7O0FBRWlIO0FBQy9MIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxyZWFjdC1ob29rLWZvcm1cXGRpc3RcXGluZGV4LmVzbS5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxudmFyIGlzQ2hlY2tCb3hJbnB1dCA9IChlbGVtZW50KSA9PiBlbGVtZW50LnR5cGUgPT09ICdjaGVja2JveCc7XG5cbnZhciBpc0RhdGVPYmplY3QgPSAodmFsdWUpID0+IHZhbHVlIGluc3RhbmNlb2YgRGF0ZTtcblxudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gKHZhbHVlKSA9PiB2YWx1ZSA9PSBudWxsO1xuXG5jb25zdCBpc09iamVjdFR5cGUgPSAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCc7XG52YXIgaXNPYmplY3QgPSAodmFsdWUpID0+ICFpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICBpc09iamVjdFR5cGUodmFsdWUpICYmXG4gICAgIWlzRGF0ZU9iamVjdCh2YWx1ZSk7XG5cbnZhciBnZXRFdmVudFZhbHVlID0gKGV2ZW50KSA9PiBpc09iamVjdChldmVudCkgJiYgZXZlbnQudGFyZ2V0XG4gICAgPyBpc0NoZWNrQm94SW5wdXQoZXZlbnQudGFyZ2V0KVxuICAgICAgICA/IGV2ZW50LnRhcmdldC5jaGVja2VkXG4gICAgICAgIDogZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgOiBldmVudDtcblxudmFyIGdldE5vZGVQYXJlbnROYW1lID0gKG5hbWUpID0+IG5hbWUuc3Vic3RyaW5nKDAsIG5hbWUuc2VhcmNoKC9cXC5cXGQrKFxcLnwkKS8pKSB8fCBuYW1lO1xuXG52YXIgaXNOYW1lSW5GaWVsZEFycmF5ID0gKG5hbWVzLCBuYW1lKSA9PiBuYW1lcy5oYXMoZ2V0Tm9kZVBhcmVudE5hbWUobmFtZSkpO1xuXG52YXIgaXNQbGFpbk9iamVjdCA9ICh0ZW1wT2JqZWN0KSA9PiB7XG4gICAgY29uc3QgcHJvdG90eXBlQ29weSA9IHRlbXBPYmplY3QuY29uc3RydWN0b3IgJiYgdGVtcE9iamVjdC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gICAgcmV0dXJuIChpc09iamVjdChwcm90b3R5cGVDb3B5KSAmJiBwcm90b3R5cGVDb3B5Lmhhc093blByb3BlcnR5KCdpc1Byb3RvdHlwZU9mJykpO1xufTtcblxudmFyIGlzV2ViID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2Ygd2luZG93LkhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCc7XG5cbmZ1bmN0aW9uIGNsb25lT2JqZWN0KGRhdGEpIHtcbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGEpO1xuICAgIH1cbiAgICBjb25zdCBpc0ZpbGVMaXN0SW5zdGFuY2UgPSB0eXBlb2YgRmlsZUxpc3QgIT09ICd1bmRlZmluZWQnICYmIGRhdGEgaW5zdGFuY2VvZiBGaWxlTGlzdDtcbiAgICBpZiAoaXNXZWIgJiYgKGRhdGEgaW5zdGFuY2VvZiBCbG9iIHx8IGlzRmlsZUxpc3RJbnN0YW5jZSkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGRhdGEpO1xuICAgIGlmICghaXNBcnJheSAmJiAhKGlzT2JqZWN0KGRhdGEpICYmIGlzUGxhaW5PYmplY3QoZGF0YSkpKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBjb25zdCBjb3B5ID0gaXNBcnJheSA/IFtdIDogT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoZGF0YSkpO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICBjb3B5W2tleV0gPSBjbG9uZU9iamVjdChkYXRhW2tleV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb3B5O1xufVxuXG52YXIgaXNLZXkgPSAodmFsdWUpID0+IC9eXFx3KiQvLnRlc3QodmFsdWUpO1xuXG52YXIgaXNVbmRlZmluZWQgPSAodmFsKSA9PiB2YWwgPT09IHVuZGVmaW5lZDtcblxudmFyIGNvbXBhY3QgPSAodmFsdWUpID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuZmlsdGVyKEJvb2xlYW4pIDogW107XG5cbnZhciBzdHJpbmdUb1BhdGggPSAoaW5wdXQpID0+IGNvbXBhY3QoaW5wdXQucmVwbGFjZSgvW1wifCddfFxcXS9nLCAnJykuc3BsaXQoL1xcLnxcXFsvKSk7XG5cbnZhciBnZXQgPSAob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpID0+IHtcbiAgICBpZiAoIXBhdGggfHwgIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gKGlzS2V5KHBhdGgpID8gW3BhdGhdIDogc3RyaW5nVG9QYXRoKHBhdGgpKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiBpc051bGxPclVuZGVmaW5lZChyZXN1bHQpID8gcmVzdWx0IDogcmVzdWx0W2tleV0sIG9iamVjdCk7XG4gICAgcmV0dXJuIGlzVW5kZWZpbmVkKHJlc3VsdCkgfHwgcmVzdWx0ID09PSBvYmplY3RcbiAgICAgICAgPyBpc1VuZGVmaW5lZChvYmplY3RbcGF0aF0pXG4gICAgICAgICAgICA/IGRlZmF1bHRWYWx1ZVxuICAgICAgICAgICAgOiBvYmplY3RbcGF0aF1cbiAgICAgICAgOiByZXN1bHQ7XG59O1xuXG52YXIgaXNCb29sZWFuID0gKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcblxudmFyIGlzRnVuY3Rpb24gPSAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcblxudmFyIHNldCA9IChvYmplY3QsIHBhdGgsIHZhbHVlKSA9PiB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgY29uc3QgdGVtcFBhdGggPSBpc0tleShwYXRoKSA/IFtwYXRoXSA6IHN0cmluZ1RvUGF0aChwYXRoKTtcbiAgICBjb25zdCBsZW5ndGggPSB0ZW1wUGF0aC5sZW5ndGg7XG4gICAgY29uc3QgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBjb25zdCBrZXkgPSB0ZW1wUGF0aFtpbmRleF07XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAoaW5kZXggIT09IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgY29uc3Qgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICAgICAgICAgIG5ld1ZhbHVlID1cbiAgICAgICAgICAgICAgICBpc09iamVjdChvYmpWYWx1ZSkgfHwgQXJyYXkuaXNBcnJheShvYmpWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgPyBvYmpWYWx1ZVxuICAgICAgICAgICAgICAgICAgICA6ICFpc05hTigrdGVtcFBhdGhbaW5kZXggKyAxXSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgICAgICAgICAgICAgIDoge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycgfHwga2V5ID09PSAnY29uc3RydWN0b3InIHx8IGtleSA9PT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3Rba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgICB9XG59O1xuXG5jb25zdCBFVkVOVFMgPSB7XG4gICAgQkxVUjogJ2JsdXInLFxuICAgIEZPQ1VTX09VVDogJ2ZvY3Vzb3V0JyxcbiAgICBDSEFOR0U6ICdjaGFuZ2UnLFxufTtcbmNvbnN0IFZBTElEQVRJT05fTU9ERSA9IHtcbiAgICBvbkJsdXI6ICdvbkJsdXInLFxuICAgIG9uQ2hhbmdlOiAnb25DaGFuZ2UnLFxuICAgIG9uU3VibWl0OiAnb25TdWJtaXQnLFxuICAgIG9uVG91Y2hlZDogJ29uVG91Y2hlZCcsXG4gICAgYWxsOiAnYWxsJyxcbn07XG5jb25zdCBJTlBVVF9WQUxJREFUSU9OX1JVTEVTID0ge1xuICAgIG1heDogJ21heCcsXG4gICAgbWluOiAnbWluJyxcbiAgICBtYXhMZW5ndGg6ICdtYXhMZW5ndGgnLFxuICAgIG1pbkxlbmd0aDogJ21pbkxlbmd0aCcsXG4gICAgcGF0dGVybjogJ3BhdHRlcm4nLFxuICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLFxuICAgIHZhbGlkYXRlOiAndmFsaWRhdGUnLFxufTtcblxuLyoqXG4gKiBTZXBhcmF0ZSBjb250ZXh0IGZvciBgY29udHJvbGAgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZXJlbmRlcnMuXG4gKiBJbnRlcm5hbCBob29rcyB0aGF0IG9ubHkgbmVlZCBjb250cm9sIHVzZSB0aGlzIGluc3RlYWQgb2YgZnVsbCBmb3JtIGNvbnRleHQuXG4gKi9cbmNvbnN0IEhvb2tGb3JtQ29udHJvbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuSG9va0Zvcm1Db250cm9sQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdIb29rRm9ybUNvbnRyb2xDb250ZXh0Jztcbi8qKlxuICogQGludGVybmFsIEludGVybmFsIGhvb2sgdG8gYWNjZXNzIG9ubHkgY29udHJvbCBmcm9tIGNvbnRleHQuXG4gKi9cbmNvbnN0IHVzZUZvcm1Db250cm9sQ29udGV4dCA9ICgpID0+IFJlYWN0LnVzZUNvbnRleHQoSG9va0Zvcm1Db250cm9sQ29udGV4dCk7XG5cbnZhciBnZXRQcm94eUZvcm1TdGF0ZSA9IChmb3JtU3RhdGUsIGNvbnRyb2wsIGxvY2FsUHJveHlGb3JtU3RhdGUsIGlzUm9vdCA9IHRydWUpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6IGNvbnRyb2wuX2RlZmF1bHRWYWx1ZXMsXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtU3RhdGUpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCwga2V5LCB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfa2V5ID0ga2V5O1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sLl9wcm94eUZvcm1TdGF0ZVtfa2V5XSAhPT0gVkFMSURBVElPTl9NT0RFLmFsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sLl9wcm94eUZvcm1TdGF0ZVtfa2V5XSA9ICFpc1Jvb3QgfHwgVkFMSURBVElPTl9NT0RFLmFsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9jYWxQcm94eUZvcm1TdGF0ZSAmJiAobG9jYWxQcm94eUZvcm1TdGF0ZVtfa2V5XSA9IHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtU3RhdGVbX2tleV07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IFJlYWN0LnVzZUxheW91dEVmZmVjdCA6IFJlYWN0LnVzZUVmZmVjdDtcblxuLyoqXG4gKiBUaGlzIGN1c3RvbSBob29rIGFsbG93cyB5b3UgdG8gc3Vic2NyaWJlIHRvIGVhY2ggZm9ybSBzdGF0ZSwgYW5kIGlzb2xhdGUgdGhlIHJlLXJlbmRlciBhdCB0aGUgY3VzdG9tIGhvb2sgbGV2ZWwuIEl0IGhhcyBpdHMgc2NvcGUgaW4gdGVybXMgb2YgZm9ybSBzdGF0ZSBzdWJzY3JpcHRpb24sIHNvIGl0IHdvdWxkIG5vdCBhZmZlY3Qgb3RoZXIgdXNlRm9ybVN0YXRlIGFuZCB1c2VGb3JtLiBVc2luZyB0aGlzIGhvb2sgY2FuIHJlZHVjZSB0aGUgcmUtcmVuZGVyIGltcGFjdCBvbiBsYXJnZSBhbmQgY29tcGxleCBmb3JtIGFwcGxpY2F0aW9uLlxuICpcbiAqIEByZW1hcmtzXG4gKiBbQVBJXShodHRwczovL3JlYWN0LWhvb2stZm9ybS5jb20vZG9jcy91c2Vmb3Jtc3RhdGUpIOKAoiBbRGVtb10oaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9zL3VzZWZvcm1zdGF0ZS03NXhseSlcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBpbmNsdWRlIG9wdGlvbnMgb24gc3BlY2lmeSBmaWVsZHMgdG8gc3Vic2NyaWJlLiB7QGxpbmsgVXNlRm9ybVN0YXRlUmV0dXJufVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIEFwcCgpIHtcbiAqICAgY29uc3QgeyByZWdpc3RlciwgaGFuZGxlU3VibWl0LCBjb250cm9sIH0gPSB1c2VGb3JtKHtcbiAqICAgICBkZWZhdWx0VmFsdWVzOiB7XG4gKiAgICAgZmlyc3ROYW1lOiBcImZpcnN0TmFtZVwiXG4gKiAgIH19KTtcbiAqICAgY29uc3QgeyBkaXJ0eUZpZWxkcyB9ID0gdXNlRm9ybVN0YXRlKHtcbiAqICAgICBjb250cm9sXG4gKiAgIH0pO1xuICogICBjb25zdCBvblN1Ym1pdCA9IChkYXRhKSA9PiBjb25zb2xlLmxvZyhkYXRhKTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdChvblN1Ym1pdCl9PlxuICogICAgICAgPGlucHV0IHsuLi5yZWdpc3RlcihcImZpcnN0TmFtZVwiKX0gcGxhY2Vob2xkZXI9XCJGaXJzdCBOYW1lXCIgLz5cbiAqICAgICAgIHtkaXJ0eUZpZWxkcy5maXJzdE5hbWUgJiYgPHA+RmllbGQgaXMgZGlydHkuPC9wPn1cbiAqICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgLz5cbiAqICAgICA8L2Zvcm0+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gdXNlRm9ybVN0YXRlKHByb3BzKSB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB1c2VGb3JtQ29udHJvbENvbnRleHQoKTtcbiAgICBjb25zdCB7IGNvbnRyb2wgPSBmb3JtQ29udHJvbCwgZGlzYWJsZWQsIG5hbWUsIGV4YWN0IH0gPSBwcm9wcyB8fCB7fTtcbiAgICBjb25zdCBbZm9ybVN0YXRlLCB1cGRhdGVGb3JtU3RhdGVdID0gUmVhY3QudXNlU3RhdGUoY29udHJvbC5fZm9ybVN0YXRlKTtcbiAgICBjb25zdCBfbG9jYWxQcm94eUZvcm1TdGF0ZSA9IFJlYWN0LnVzZVJlZih7XG4gICAgICAgIGlzRGlydHk6IGZhbHNlLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBkaXJ0eUZpZWxkczogZmFsc2UsXG4gICAgICAgIHRvdWNoZWRGaWVsZHM6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW5nRmllbGRzOiBmYWxzZSxcbiAgICAgICAgaXNWYWxpZGF0aW5nOiBmYWxzZSxcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIGVycm9yczogZmFsc2UsXG4gICAgfSk7XG4gICAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiBjb250cm9sLl9zdWJzY3JpYmUoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBmb3JtU3RhdGU6IF9sb2NhbFByb3h5Rm9ybVN0YXRlLmN1cnJlbnQsXG4gICAgICAgIGV4YWN0LFxuICAgICAgICBjYWxsYmFjazogKGZvcm1TdGF0ZSkgPT4ge1xuICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybVN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29udHJvbC5fZm9ybVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtU3RhdGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfSksIFtuYW1lLCBkaXNhYmxlZCwgZXhhY3RdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBfbG9jYWxQcm94eUZvcm1TdGF0ZS5jdXJyZW50LmlzVmFsaWQgJiYgY29udHJvbC5fc2V0VmFsaWQodHJ1ZSk7XG4gICAgfSwgW2NvbnRyb2xdKTtcbiAgICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiBnZXRQcm94eUZvcm1TdGF0ZShmb3JtU3RhdGUsIGNvbnRyb2wsIF9sb2NhbFByb3h5Rm9ybVN0YXRlLmN1cnJlbnQsIGZhbHNlKSwgW2Zvcm1TdGF0ZSwgY29udHJvbF0pO1xufVxuXG52YXIgaXNTdHJpbmcgPSAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG5cbnZhciBnZW5lcmF0ZVdhdGNoT3V0cHV0ID0gKG5hbWVzLCBfbmFtZXMsIGZvcm1WYWx1ZXMsIGlzR2xvYmFsLCBkZWZhdWx0VmFsdWUpID0+IHtcbiAgICBpZiAoaXNTdHJpbmcobmFtZXMpKSB7XG4gICAgICAgIGlzR2xvYmFsICYmIF9uYW1lcy53YXRjaC5hZGQobmFtZXMpO1xuICAgICAgICByZXR1cm4gZ2V0KGZvcm1WYWx1ZXMsIG5hbWVzLCBkZWZhdWx0VmFsdWUpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShuYW1lcykpIHtcbiAgICAgICAgcmV0dXJuIG5hbWVzLm1hcCgoZmllbGROYW1lKSA9PiAoaXNHbG9iYWwgJiYgX25hbWVzLndhdGNoLmFkZChmaWVsZE5hbWUpLFxuICAgICAgICAgICAgZ2V0KGZvcm1WYWx1ZXMsIGZpZWxkTmFtZSkpKTtcbiAgICB9XG4gICAgaXNHbG9iYWwgJiYgKF9uYW1lcy53YXRjaEFsbCA9IHRydWUpO1xuICAgIHJldHVybiBmb3JtVmFsdWVzO1xufTtcblxudmFyIGlzUHJpbWl0aXZlID0gKHZhbHVlKSA9PiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgIWlzT2JqZWN0VHlwZSh2YWx1ZSk7XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbChvYmplY3QxLCBvYmplY3QyLCBfaW50ZXJuYWxfdmlzaXRlZCA9IG5ldyBXZWFrU2V0KCkpIHtcbiAgICBpZiAoaXNQcmltaXRpdmUob2JqZWN0MSkgfHwgaXNQcmltaXRpdmUob2JqZWN0MikpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5pcyhvYmplY3QxLCBvYmplY3QyKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZU9iamVjdChvYmplY3QxKSAmJiBpc0RhdGVPYmplY3Qob2JqZWN0MikpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5pcyhvYmplY3QxLmdldFRpbWUoKSwgb2JqZWN0Mi5nZXRUaW1lKCkpO1xuICAgIH1cbiAgICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iamVjdDEpO1xuICAgIGNvbnN0IGtleXMyID0gT2JqZWN0LmtleXMob2JqZWN0Mik7XG4gICAgaWYgKGtleXMxLmxlbmd0aCAhPT0ga2V5czIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKF9pbnRlcm5hbF92aXNpdGVkLmhhcyhvYmplY3QxKSB8fCBfaW50ZXJuYWxfdmlzaXRlZC5oYXMob2JqZWN0MikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIF9pbnRlcm5hbF92aXNpdGVkLmFkZChvYmplY3QxKTtcbiAgICBfaW50ZXJuYWxfdmlzaXRlZC5hZGQob2JqZWN0Mik7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5czEpIHtcbiAgICAgICAgY29uc3QgdmFsMSA9IG9iamVjdDFba2V5XTtcbiAgICAgICAgaWYgKCFrZXlzMi5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSAhPT0gJ3JlZicpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbDIgPSBvYmplY3QyW2tleV07XG4gICAgICAgICAgICBpZiAoKGlzRGF0ZU9iamVjdCh2YWwxKSAmJiBpc0RhdGVPYmplY3QodmFsMikpIHx8XG4gICAgICAgICAgICAgICAgKGlzT2JqZWN0KHZhbDEpICYmIGlzT2JqZWN0KHZhbDIpKSB8fFxuICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHZhbDEpICYmIEFycmF5LmlzQXJyYXkodmFsMikpXG4gICAgICAgICAgICAgICAgPyAhZGVlcEVxdWFsKHZhbDEsIHZhbDIsIF9pbnRlcm5hbF92aXNpdGVkKVxuICAgICAgICAgICAgICAgIDogIU9iamVjdC5pcyh2YWwxLCB2YWwyKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDdXN0b20gaG9vayB0byBzdWJzY3JpYmUgdG8gZmllbGQgY2hhbmdlIGFuZCBpc29sYXRlIHJlLXJlbmRlcmluZyBhdCB0aGUgY29tcG9uZW50IGxldmVsLlxuICpcbiAqIEByZW1hcmtzXG4gKlxuICogW0FQSV0oaHR0cHM6Ly9yZWFjdC1ob29rLWZvcm0uY29tL2RvY3MvdXNld2F0Y2gpIOKAoiBbRGVtb10oaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9zL3JlYWN0LWhvb2stZm9ybS12Ny10cy11c2V3YXRjaC1oOWk1ZSlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGNvbnRyb2wgfSA9IHVzZUZvcm0oKTtcbiAqIGNvbnN0IHZhbHVlcyA9IHVzZVdhdGNoKHtcbiAqICAgbmFtZTogXCJmaWVsZE5hbWVcIlxuICogICBjb250cm9sLFxuICogfSlcbiAqIGBgYFxuICovXG5mdW5jdGlvbiB1c2VXYXRjaChwcm9wcykge1xuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdXNlRm9ybUNvbnRyb2xDb250ZXh0KCk7XG4gICAgY29uc3QgeyBjb250cm9sID0gZm9ybUNvbnRyb2wsIG5hbWUsIGRlZmF1bHRWYWx1ZSwgZGlzYWJsZWQsIGV4YWN0LCBjb21wdXRlLCB9ID0gcHJvcHMgfHwge307XG4gICAgY29uc3QgX2RlZmF1bHRWYWx1ZSA9IFJlYWN0LnVzZVJlZihkZWZhdWx0VmFsdWUpO1xuICAgIGNvbnN0IF9jb21wdXRlID0gUmVhY3QudXNlUmVmKGNvbXB1dGUpO1xuICAgIGNvbnN0IF9jb21wdXRlRm9ybVZhbHVlcyA9IFJlYWN0LnVzZVJlZih1bmRlZmluZWQpO1xuICAgIGNvbnN0IF9wcmV2Q29udHJvbCA9IFJlYWN0LnVzZVJlZihjb250cm9sKTtcbiAgICBjb25zdCBfcHJldk5hbWUgPSBSZWFjdC51c2VSZWYobmFtZSk7XG4gICAgX2NvbXB1dGUuY3VycmVudCA9IGNvbXB1dGU7XG4gICAgY29uc3QgW3ZhbHVlLCB1cGRhdGVWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IGNvbnRyb2wuX2dldFdhdGNoKG5hbWUsIF9kZWZhdWx0VmFsdWUuY3VycmVudCk7XG4gICAgICAgIHJldHVybiBfY29tcHV0ZS5jdXJyZW50ID8gX2NvbXB1dGUuY3VycmVudChkZWZhdWx0VmFsdWUpIDogZGVmYXVsdFZhbHVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEN1cnJlbnRPdXRwdXQgPSBSZWFjdC51c2VDYWxsYmFjaygodmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBnZW5lcmF0ZVdhdGNoT3V0cHV0KG5hbWUsIGNvbnRyb2wuX25hbWVzLCB2YWx1ZXMgfHwgY29udHJvbC5fZm9ybVZhbHVlcywgZmFsc2UsIF9kZWZhdWx0VmFsdWUuY3VycmVudCk7XG4gICAgICAgIHJldHVybiBfY29tcHV0ZS5jdXJyZW50ID8gX2NvbXB1dGUuY3VycmVudChmb3JtVmFsdWVzKSA6IGZvcm1WYWx1ZXM7XG4gICAgfSwgW2NvbnRyb2wuX2Zvcm1WYWx1ZXMsIGNvbnRyb2wuX25hbWVzLCBuYW1lXSk7XG4gICAgY29uc3QgcmVmcmVzaFZhbHVlID0gUmVhY3QudXNlQ2FsbGJhY2soKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWVzID0gZ2VuZXJhdGVXYXRjaE91dHB1dChuYW1lLCBjb250cm9sLl9uYW1lcywgdmFsdWVzIHx8IGNvbnRyb2wuX2Zvcm1WYWx1ZXMsIGZhbHNlLCBfZGVmYXVsdFZhbHVlLmN1cnJlbnQpO1xuICAgICAgICAgICAgaWYgKF9jb21wdXRlLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wdXRlZEZvcm1WYWx1ZXMgPSBfY29tcHV0ZS5jdXJyZW50KGZvcm1WYWx1ZXMpO1xuICAgICAgICAgICAgICAgIGlmICghZGVlcEVxdWFsKGNvbXB1dGVkRm9ybVZhbHVlcywgX2NvbXB1dGVGb3JtVmFsdWVzLmN1cnJlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVZhbHVlKGNvbXB1dGVkRm9ybVZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgIF9jb21wdXRlRm9ybVZhbHVlcy5jdXJyZW50ID0gY29tcHV0ZWRGb3JtVmFsdWVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVZhbHVlKGZvcm1WYWx1ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW2NvbnRyb2wuX2Zvcm1WYWx1ZXMsIGNvbnRyb2wuX25hbWVzLCBkaXNhYmxlZCwgbmFtZV0pO1xuICAgIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoX3ByZXZDb250cm9sLmN1cnJlbnQgIT09IGNvbnRyb2wgfHxcbiAgICAgICAgICAgICFkZWVwRXF1YWwoX3ByZXZOYW1lLmN1cnJlbnQsIG5hbWUpKSB7XG4gICAgICAgICAgICBfcHJldkNvbnRyb2wuY3VycmVudCA9IGNvbnRyb2w7XG4gICAgICAgICAgICBfcHJldk5hbWUuY3VycmVudCA9IG5hbWU7XG4gICAgICAgICAgICByZWZyZXNoVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udHJvbC5fc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBmb3JtU3RhdGU6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhhY3QsXG4gICAgICAgICAgICBjYWxsYmFjazogKGZvcm1TdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlZnJlc2hWYWx1ZShmb3JtU3RhdGUudmFsdWVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0sIFtjb250cm9sLCBleGFjdCwgbmFtZSwgcmVmcmVzaFZhbHVlXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IGNvbnRyb2wuX3JlbW92ZVVubW91bnRlZCgpKTtcbiAgICAvLyBJZiBuYW1lIG9yIGNvbnRyb2wgY2hhbmdlZCBmb3IgdGhpcyByZW5kZXIsIHN5bmNocm9ub3VzbHkgcmVmbGVjdCB0aGVcbiAgICAvLyBsYXRlc3QgdmFsdWUgc28gY2FsbGVycyAobGlrZSB1c2VDb250cm9sbGVyKSBzZWUgdGhlIGNvcnJlY3QgdmFsdWVcbiAgICAvLyBpbW1lZGlhdGVseSBvbiB0aGUgc2FtZSByZW5kZXIuXG4gICAgLy8gT3B0aW1pemU6IENoZWNrIGNvbnRyb2wgcmVmZXJlbmNlIGZpcnN0IGJlZm9yZSBleHBlbnNpdmUgZGVlcEVxdWFsXG4gICAgY29uc3QgY29udHJvbENoYW5nZWQgPSBfcHJldkNvbnRyb2wuY3VycmVudCAhPT0gY29udHJvbDtcbiAgICBjb25zdCBwcmV2TmFtZSA9IF9wcmV2TmFtZS5jdXJyZW50O1xuICAgIC8vIENhY2hlIHRoZSBjb21wdXRlZCBvdXRwdXQgdG8gYXZvaWQgZHVwbGljYXRlIGNhbGxzIHdpdGhpbiB0aGUgc2FtZSByZW5kZXJcbiAgICAvLyBXZSBpbmNsdWRlIHNob3VsZFJldHVybkltbWVkaWF0ZSBpbiBkZXBzIHRvIGVuc3VyZSBwcm9wZXIgcmVjb21wdXRhdGlvblxuICAgIGNvbnN0IGNvbXB1dGVkT3V0cHV0ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZUNoYW5nZWQgPSAhY29udHJvbENoYW5nZWQgJiYgIWRlZXBFcXVhbChwcmV2TmFtZSwgbmFtZSk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybkltbWVkaWF0ZSA9IGNvbnRyb2xDaGFuZ2VkIHx8IG5hbWVDaGFuZ2VkO1xuICAgICAgICByZXR1cm4gc2hvdWxkUmV0dXJuSW1tZWRpYXRlID8gZ2V0Q3VycmVudE91dHB1dCgpIDogbnVsbDtcbiAgICB9LCBbZGlzYWJsZWQsIGNvbnRyb2xDaGFuZ2VkLCBuYW1lLCBwcmV2TmFtZSwgZ2V0Q3VycmVudE91dHB1dF0pO1xuICAgIHJldHVybiBjb21wdXRlZE91dHB1dCAhPT0gbnVsbCA/IGNvbXB1dGVkT3V0cHV0IDogdmFsdWU7XG59XG5cbi8qKlxuICogQ3VzdG9tIGhvb2sgdG8gd29yayB3aXRoIGNvbnRyb2xsZWQgY29tcG9uZW50LCB0aGlzIGZ1bmN0aW9uIHByb3ZpZGUgeW91IHdpdGggYm90aCBmb3JtIGFuZCBmaWVsZCBsZXZlbCBzdGF0ZS4gUmUtcmVuZGVyIGlzIGlzb2xhdGVkIGF0IHRoZSBob29rIGxldmVsLlxuICpcbiAqIEByZW1hcmtzXG4gKiBbQVBJXShodHRwczovL3JlYWN0LWhvb2stZm9ybS5jb20vZG9jcy91c2Vjb250cm9sbGVyKSDigKIgW0RlbW9dKGh0dHBzOi8vY29kZXNhbmRib3guaW8vcy91c2Vjb250cm9sbGVyLTBvOHB4KVxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIHRoZSBwYXRoIG5hbWUgdG8gdGhlIGZvcm0gZmllbGQgdmFsdWUsIGFuZCB2YWxpZGF0aW9uIHJ1bGVzLlxuICpcbiAqIEByZXR1cm5zIGZpZWxkIHByb3BlcnRpZXMsIGZpZWxkIGFuZCBmb3JtIHN0YXRlLiB7QGxpbmsgVXNlQ29udHJvbGxlclJldHVybn1cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBmdW5jdGlvbiBJbnB1dChwcm9wcykge1xuICogICBjb25zdCB7IGZpZWxkLCBmaWVsZFN0YXRlLCBmb3JtU3RhdGUgfSA9IHVzZUNvbnRyb2xsZXIocHJvcHMpO1xuICogICByZXR1cm4gKFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8aW5wdXQgey4uLmZpZWxkfSBwbGFjZWhvbGRlcj17cHJvcHMubmFtZX0gLz5cbiAqICAgICAgIDxwPntmaWVsZFN0YXRlLmlzVG91Y2hlZCAmJiBcIlRvdWNoZWRcIn08L3A+XG4gKiAgICAgICA8cD57Zm9ybVN0YXRlLmlzU3VibWl0dGVkID8gXCJzdWJtaXR0ZWRcIiA6IFwiXCJ9PC9wPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfVxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHVzZUNvbnRyb2xsZXIocHJvcHMpIHtcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHVzZUZvcm1Db250cm9sQ29udGV4dCgpO1xuICAgIGNvbnN0IHsgbmFtZSwgZGlzYWJsZWQsIGNvbnRyb2wgPSBmb3JtQ29udHJvbCwgc2hvdWxkVW5yZWdpc3RlciwgZGVmYXVsdFZhbHVlLCBleGFjdCA9IHRydWUsIH0gPSBwcm9wcztcbiAgICBjb25zdCBpc0FycmF5RmllbGQgPSBpc05hbWVJbkZpZWxkQXJyYXkoY29udHJvbC5fbmFtZXMuYXJyYXksIG5hbWUpO1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZU1lbW8gPSBSZWFjdC51c2VNZW1vKCgpID0+IGdldChjb250cm9sLl9mb3JtVmFsdWVzLCBuYW1lLCBnZXQoY29udHJvbC5fZGVmYXVsdFZhbHVlcywgbmFtZSwgZGVmYXVsdFZhbHVlKSksIFtjb250cm9sLCBuYW1lLCBkZWZhdWx0VmFsdWVdKTtcbiAgICBjb25zdCB2YWx1ZSA9IHVzZVdhdGNoKHtcbiAgICAgICAgY29udHJvbCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWVNZW1vLFxuICAgICAgICBleGFjdCxcbiAgICB9KTtcbiAgICBjb25zdCBmb3JtU3RhdGUgPSB1c2VGb3JtU3RhdGUoe1xuICAgICAgICBjb250cm9sLFxuICAgICAgICBuYW1lLFxuICAgICAgICBleGFjdCxcbiAgICB9KTtcbiAgICBjb25zdCBfcHJvcHMgPSBSZWFjdC51c2VSZWYocHJvcHMpO1xuICAgIGNvbnN0IF9wcmV2aW91c05hbWVSZWYgPSBSZWFjdC51c2VSZWYodW5kZWZpbmVkKTtcbiAgICBjb25zdCBfcmVnaXN0ZXJQcm9wcyA9IFJlYWN0LnVzZVJlZihjb250cm9sLnJlZ2lzdGVyKG5hbWUsIHtcbiAgICAgICAgLi4ucHJvcHMucnVsZXMsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICAuLi4oaXNCb29sZWFuKHByb3BzLmRpc2FibGVkKSA/IHsgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkIH0gOiB7fSksXG4gICAgfSkpO1xuICAgIF9wcm9wcy5jdXJyZW50ID0gcHJvcHM7XG4gICAgY29uc3QgZmllbGRTdGF0ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sIHtcbiAgICAgICAgaW52YWxpZDoge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGdldDogKCkgPT4gISFnZXQoZm9ybVN0YXRlLmVycm9ycywgbmFtZSksXG4gICAgICAgIH0sXG4gICAgICAgIGlzRGlydHk6IHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBnZXQ6ICgpID0+ICEhZ2V0KGZvcm1TdGF0ZS5kaXJ0eUZpZWxkcywgbmFtZSksXG4gICAgICAgIH0sXG4gICAgICAgIGlzVG91Y2hlZDoge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGdldDogKCkgPT4gISFnZXQoZm9ybVN0YXRlLnRvdWNoZWRGaWVsZHMsIG5hbWUpLFxuICAgICAgICB9LFxuICAgICAgICBpc1ZhbGlkYXRpbmc6IHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBnZXQ6ICgpID0+ICEhZ2V0KGZvcm1TdGF0ZS52YWxpZGF0aW5nRmllbGRzLCBuYW1lKSxcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBnZXQ6ICgpID0+IGdldChmb3JtU3RhdGUuZXJyb3JzLCBuYW1lKSxcbiAgICAgICAgfSxcbiAgICB9KSwgW2Zvcm1TdGF0ZSwgbmFtZV0pO1xuICAgIGNvbnN0IG9uQ2hhbmdlID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiBfcmVnaXN0ZXJQcm9wcy5jdXJyZW50Lm9uQ2hhbmdlKHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICB2YWx1ZTogZ2V0RXZlbnRWYWx1ZShldmVudCksXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBFVkVOVFMuQ0hBTkdFLFxuICAgIH0pLCBbbmFtZV0pO1xuICAgIGNvbnN0IG9uQmx1ciA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IF9yZWdpc3RlclByb3BzLmN1cnJlbnQub25CbHVyKHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICB2YWx1ZTogZ2V0KGNvbnRyb2wuX2Zvcm1WYWx1ZXMsIG5hbWUpLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogRVZFTlRTLkJMVVIsXG4gICAgfSksIFtuYW1lLCBjb250cm9sLl9mb3JtVmFsdWVzXSk7XG4gICAgY29uc3QgcmVmID0gUmVhY3QudXNlQ2FsbGJhY2soKGVsbSkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IGdldChjb250cm9sLl9maWVsZHMsIG5hbWUpO1xuICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQuX2YgJiYgZWxtKSB7XG4gICAgICAgICAgICBmaWVsZC5fZi5yZWYgPSB7XG4gICAgICAgICAgICAgICAgZm9jdXM6ICgpID0+IGlzRnVuY3Rpb24oZWxtLmZvY3VzKSAmJiBlbG0uZm9jdXMoKSxcbiAgICAgICAgICAgICAgICBzZWxlY3Q6ICgpID0+IGlzRnVuY3Rpb24oZWxtLnNlbGVjdCkgJiYgZWxtLnNlbGVjdCgpLFxuICAgICAgICAgICAgICAgIHNldEN1c3RvbVZhbGlkaXR5OiAobWVzc2FnZSkgPT4gaXNGdW5jdGlvbihlbG0uc2V0Q3VzdG9tVmFsaWRpdHkpICYmIGVsbS5zZXRDdXN0b21WYWxpZGl0eShtZXNzYWdlKSxcbiAgICAgICAgICAgICAgICByZXBvcnRWYWxpZGl0eTogKCkgPT4gaXNGdW5jdGlvbihlbG0ucmVwb3J0VmFsaWRpdHkpICYmIGVsbS5yZXBvcnRWYWxpZGl0eSgpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250cm9sLl9maWVsZHMsIG5hbWVdKTtcbiAgICBjb25zdCBmaWVsZCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIC4uLihpc0Jvb2xlYW4oZGlzYWJsZWQpIHx8IGZvcm1TdGF0ZS5kaXNhYmxlZFxuICAgICAgICAgICAgPyB7IGRpc2FibGVkOiBmb3JtU3RhdGUuZGlzYWJsZWQgfHwgZGlzYWJsZWQgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICBvbkJsdXIsXG4gICAgICAgIHJlZixcbiAgICB9KSwgW25hbWUsIGRpc2FibGVkLCBmb3JtU3RhdGUuZGlzYWJsZWQsIG9uQ2hhbmdlLCBvbkJsdXIsIHJlZiwgdmFsdWVdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBfc2hvdWxkVW5yZWdpc3RlckZpZWxkID0gY29udHJvbC5fb3B0aW9ucy5zaG91bGRVbnJlZ2lzdGVyIHx8IHNob3VsZFVucmVnaXN0ZXI7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzTmFtZSA9IF9wcmV2aW91c05hbWVSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKHByZXZpb3VzTmFtZSAmJiBwcmV2aW91c05hbWUgIT09IG5hbWUgJiYgIWlzQXJyYXlGaWVsZCkge1xuICAgICAgICAgICAgY29udHJvbC51bnJlZ2lzdGVyKHByZXZpb3VzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5yZWdpc3RlcihuYW1lLCB7XG4gICAgICAgICAgICAuLi5fcHJvcHMuY3VycmVudC5ydWxlcyxcbiAgICAgICAgICAgIC4uLihpc0Jvb2xlYW4oX3Byb3BzLmN1cnJlbnQuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgPyB7IGRpc2FibGVkOiBfcHJvcHMuY3VycmVudC5kaXNhYmxlZCB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB1cGRhdGVNb3VudGVkID0gKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldChjb250cm9sLl9maWVsZHMsIG5hbWUpO1xuICAgICAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkLl9mKSB7XG4gICAgICAgICAgICAgICAgZmllbGQuX2YubW91bnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdXBkYXRlTW91bnRlZChuYW1lLCB0cnVlKTtcbiAgICAgICAgaWYgKF9zaG91bGRVbnJlZ2lzdGVyRmllbGQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2xvbmVPYmplY3QoZ2V0KGNvbnRyb2wuX29wdGlvbnMuZGVmYXVsdFZhbHVlcywgbmFtZSwgX3Byb3BzLmN1cnJlbnQuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgICAgICBzZXQoY29udHJvbC5fZGVmYXVsdFZhbHVlcywgbmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGdldChjb250cm9sLl9mb3JtVmFsdWVzLCBuYW1lKSkpIHtcbiAgICAgICAgICAgICAgICBzZXQoY29udHJvbC5fZm9ybVZhbHVlcywgbmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICFpc0FycmF5RmllbGQgJiYgY29udHJvbC5yZWdpc3RlcihuYW1lKTtcbiAgICAgICAgX3ByZXZpb3VzTmFtZVJlZi5jdXJyZW50ID0gbmFtZTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIChpc0FycmF5RmllbGRcbiAgICAgICAgICAgICAgICA/IF9zaG91bGRVbnJlZ2lzdGVyRmllbGQgJiYgIWNvbnRyb2wuX3N0YXRlLmFjdGlvblxuICAgICAgICAgICAgICAgIDogX3Nob3VsZFVucmVnaXN0ZXJGaWVsZClcbiAgICAgICAgICAgICAgICA/IGNvbnRyb2wudW5yZWdpc3RlcihuYW1lKVxuICAgICAgICAgICAgICAgIDogdXBkYXRlTW91bnRlZChuYW1lLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgfSwgW25hbWUsIGNvbnRyb2wsIGlzQXJyYXlGaWVsZCwgc2hvdWxkVW5yZWdpc3Rlcl0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnRyb2wuX3NldERpc2FibGVkRmllbGQoe1xuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICB9KTtcbiAgICB9LCBbZGlzYWJsZWQsIG5hbWUsIGNvbnRyb2xdKTtcbiAgICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBmaWVsZCxcbiAgICAgICAgZm9ybVN0YXRlLFxuICAgICAgICBmaWVsZFN0YXRlLFxuICAgIH0pLCBbZmllbGQsIGZvcm1TdGF0ZSwgZmllbGRTdGF0ZV0pO1xufVxuXG4vKipcbiAqIENvbXBvbmVudCBiYXNlZCBvbiBgdXNlQ29udHJvbGxlcmAgaG9vayB0byB3b3JrIHdpdGggY29udHJvbGxlZCBjb21wb25lbnQuXG4gKlxuICogQHJlbWFya3NcbiAqIFtBUEldKGh0dHBzOi8vcmVhY3QtaG9vay1mb3JtLmNvbS9kb2NzL3VzZWNvbnRyb2xsZXIvY29udHJvbGxlcikg4oCiIFtEZW1vXShodHRwczovL2NvZGVzYW5kYm94LmlvL3MvcmVhY3QtaG9vay1mb3JtLXY2LWNvbnRyb2xsZXItdHMtand5encpIOKAoiBbVmlkZW9dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9TjJVTmtfVUNWeUEpXG4gKlxuICogQHBhcmFtIHByb3BzIC0gdGhlIHBhdGggbmFtZSB0byB0aGUgZm9ybSBmaWVsZCB2YWx1ZSwgYW5kIHZhbGlkYXRpb24gcnVsZXMuXG4gKlxuICogQHJldHVybnMgcHJvdmlkZSBmaWVsZCBoYW5kbGVyIGZ1bmN0aW9ucywgZmllbGQgYW5kIGZvcm0gc3RhdGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogZnVuY3Rpb24gQXBwKCkge1xuICogICBjb25zdCB7IGNvbnRyb2wgfSA9IHVzZUZvcm08Rm9ybVZhbHVlcz4oe1xuICogICAgIGRlZmF1bHRWYWx1ZXM6IHtcbiAqICAgICAgIHRlc3Q6IFwiXCJcbiAqICAgICB9XG4gKiAgIH0pO1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8Zm9ybT5cbiAqICAgICAgIDxDb250cm9sbGVyXG4gKiAgICAgICAgIGNvbnRyb2w9e2NvbnRyb2x9XG4gKiAgICAgICAgIG5hbWU9XCJ0ZXN0XCJcbiAqICAgICAgICAgcmVuZGVyPXsoeyBmaWVsZDogeyBvbkNoYW5nZSwgb25CbHVyLCB2YWx1ZSwgcmVmIH0sIGZvcm1TdGF0ZSwgZmllbGRTdGF0ZSB9KSA9PiAoXG4gKiAgICAgICAgICAgPD5cbiAqICAgICAgICAgICAgIDxpbnB1dFxuICogICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9IC8vIHNlbmQgdmFsdWUgdG8gaG9vayBmb3JtXG4gKiAgICAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfSAvLyBub3RpZnkgd2hlbiBpbnB1dCBpcyB0b3VjaGVkXG4gKiAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX0gLy8gcmV0dXJuIHVwZGF0ZWQgdmFsdWVcbiAqICAgICAgICAgICAgICAgcmVmPXtyZWZ9IC8vIHNldCByZWYgZm9yIGZvY3VzIG1hbmFnZW1lbnRcbiAqICAgICAgICAgICAgIC8+XG4gKiAgICAgICAgICAgICA8cD57Zm9ybVN0YXRlLmlzU3VibWl0dGVkID8gXCJzdWJtaXR0ZWRcIiA6IFwiXCJ9PC9wPlxuICogICAgICAgICAgICAgPHA+e2ZpZWxkU3RhdGUuaXNUb3VjaGVkID8gXCJ0b3VjaGVkXCIgOiBcIlwifTwvcD5cbiAqICAgICAgICAgICA8Lz5cbiAqICAgICAgICAgKX1cbiAqICAgICAgIC8+XG4gKiAgICAgPC9mb3JtPlxuICogICApO1xuICogfVxuICogYGBgXG4gKi9cbmNvbnN0IENvbnRyb2xsZXIgPSAocHJvcHMpID0+IHByb3BzLnJlbmRlcih1c2VDb250cm9sbGVyKHByb3BzKSk7XG5cbmNvbnN0IGZsYXR0ZW4gPSAob2JqKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xuICAgICAgICBpZiAoaXNPYmplY3RUeXBlKG9ialtrZXldKSAmJiBvYmpba2V5XSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgbmVzdGVkID0gZmxhdHRlbihvYmpba2V5XSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5lc3RlZEtleSBvZiBPYmplY3Qua2V5cyhuZXN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0W2Ake2tleX0uJHtuZXN0ZWRLZXl9YF0gPSBuZXN0ZWRbbmVzdGVkS2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG91dHB1dFtrZXldID0gb2JqW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmNvbnN0IEhvb2tGb3JtQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5Ib29rRm9ybUNvbnRleHQuZGlzcGxheU5hbWUgPSAnSG9va0Zvcm1Db250ZXh0Jztcbi8qKlxuICogVGhpcyBjdXN0b20gaG9vayBhbGxvd3MgeW91IHRvIGFjY2VzcyB0aGUgZm9ybSBjb250ZXh0LiB1c2VGb3JtQ29udGV4dCBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGRlZXBseSBuZXN0ZWQgc3RydWN0dXJlcywgd2hlcmUgaXQgd291bGQgYmVjb21lIGluY29udmVuaWVudCB0byBwYXNzIHRoZSBjb250ZXh0IGFzIGEgcHJvcC4gVG8gYmUgdXNlZCB3aXRoIHtAbGluayBGb3JtUHJvdmlkZXJ9LlxuICpcbiAqIEByZW1hcmtzXG4gKiBbQVBJXShodHRwczovL3JlYWN0LWhvb2stZm9ybS5jb20vZG9jcy91c2Vmb3JtY29udGV4dCkg4oCiIFtEZW1vXShodHRwczovL2NvZGVzYW5kYm94LmlvL3MvcmVhY3QtaG9vay1mb3JtLXY3LWZvcm0tY29udGV4dC15dHVkaSlcbiAqXG4gKiBAcmV0dXJucyByZXR1cm4gYWxsIHVzZUZvcm0gbWV0aG9kc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIEFwcCgpIHtcbiAqICAgY29uc3QgbWV0aG9kcyA9IHVzZUZvcm0oKTtcbiAqICAgY29uc3Qgb25TdWJtaXQgPSBkYXRhID0+IGNvbnNvbGUubG9nKGRhdGEpO1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8Rm9ybVByb3ZpZGVyIHsuLi5tZXRob2RzfSA+XG4gKiAgICAgICA8Zm9ybSBvblN1Ym1pdD17bWV0aG9kcy5oYW5kbGVTdWJtaXQob25TdWJtaXQpfT5cbiAqICAgICAgICAgPE5lc3RlZElucHV0IC8+XG4gKiAgICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgLz5cbiAqICAgICAgIDwvZm9ybT5cbiAqICAgICA8L0Zvcm1Qcm92aWRlcj5cbiAqICAgKTtcbiAqIH1cbiAqXG4gKiAgZnVuY3Rpb24gTmVzdGVkSW5wdXQoKSB7XG4gKiAgIGNvbnN0IHsgcmVnaXN0ZXIgfSA9IHVzZUZvcm1Db250ZXh0KCk7IC8vIHJldHJpZXZlIGFsbCBob29rIG1ldGhvZHNcbiAqICAgcmV0dXJuIDxpbnB1dCB7Li4ucmVnaXN0ZXIoXCJ0ZXN0XCIpfSAvPjtcbiAqIH1cbiAqIGBgYFxuICovXG5jb25zdCB1c2VGb3JtQ29udGV4dCA9ICgpID0+IFJlYWN0LnVzZUNvbnRleHQoSG9va0Zvcm1Db250ZXh0KTtcbi8qKlxuICogQSBwcm92aWRlciBjb21wb25lbnQgdGhhdCBwcm9wYWdhdGVzIHRoZSBgdXNlRm9ybWAgbWV0aG9kcyB0byBhbGwgY2hpbGRyZW4gY29tcG9uZW50cyB2aWEgW1JlYWN0IENvbnRleHRdKGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VDb250ZXh0KSBBUEkuIFRvIGJlIHVzZWQgd2l0aCB7QGxpbmsgdXNlRm9ybUNvbnRleHR9LlxuICpcbiAqIEByZW1hcmtzXG4gKiBbQVBJXShodHRwczovL3JlYWN0LWhvb2stZm9ybS5jb20vZG9jcy91c2Vmb3JtY29udGV4dCkg4oCiIFtEZW1vXShodHRwczovL2NvZGVzYW5kYm94LmlvL3MvcmVhY3QtaG9vay1mb3JtLXY3LWZvcm0tY29udGV4dC15dHVkaSlcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBhbGwgdXNlRm9ybSBtZXRob2RzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogZnVuY3Rpb24gQXBwKCkge1xuICogICBjb25zdCBtZXRob2RzID0gdXNlRm9ybSgpO1xuICogICBjb25zdCBvblN1Ym1pdCA9IGRhdGEgPT4gY29uc29sZS5sb2coZGF0YSk7XG4gKlxuICogICByZXR1cm4gKFxuICogICAgIDxGb3JtUHJvdmlkZXIgey4uLm1ldGhvZHN9ID5cbiAqICAgICAgIDxmb3JtIG9uU3VibWl0PXttZXRob2RzLmhhbmRsZVN1Ym1pdChvblN1Ym1pdCl9PlxuICogICAgICAgICA8TmVzdGVkSW5wdXQgLz5cbiAqICAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiAvPlxuICogICAgICAgPC9mb3JtPlxuICogICAgIDwvRm9ybVByb3ZpZGVyPlxuICogICApO1xuICogfVxuICpcbiAqICBmdW5jdGlvbiBOZXN0ZWRJbnB1dCgpIHtcbiAqICAgY29uc3QgeyByZWdpc3RlciB9ID0gdXNlRm9ybUNvbnRleHQoKTsgLy8gcmV0cmlldmUgYWxsIGhvb2sgbWV0aG9kc1xuICogICByZXR1cm4gPGlucHV0IHsuLi5yZWdpc3RlcihcInRlc3RcIil9IC8+O1xuICogfVxuICogYGBgXG4gKi9cbmNvbnN0IEZvcm1Qcm92aWRlciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIHdhdGNoLCBnZXRWYWx1ZXMsIGdldEZpZWxkU3RhdGUsIHNldEVycm9yLCBjbGVhckVycm9ycywgc2V0VmFsdWUsIHRyaWdnZXIsIGZvcm1TdGF0ZSwgcmVzZXRGaWVsZCwgcmVzZXQsIGhhbmRsZVN1Ym1pdCwgdW5yZWdpc3RlciwgY29udHJvbCwgcmVnaXN0ZXIsIHNldEZvY3VzLCBzdWJzY3JpYmUsIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSG9va0Zvcm1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICAgICAgICB3YXRjaCxcbiAgICAgICAgICAgIGdldFZhbHVlcyxcbiAgICAgICAgICAgIGdldEZpZWxkU3RhdGUsXG4gICAgICAgICAgICBzZXRFcnJvcixcbiAgICAgICAgICAgIGNsZWFyRXJyb3JzLFxuICAgICAgICAgICAgc2V0VmFsdWUsXG4gICAgICAgICAgICB0cmlnZ2VyLFxuICAgICAgICAgICAgZm9ybVN0YXRlLFxuICAgICAgICAgICAgcmVzZXRGaWVsZCxcbiAgICAgICAgICAgIHJlc2V0LFxuICAgICAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICAgICAgdW5yZWdpc3RlcixcbiAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICByZWdpc3RlcixcbiAgICAgICAgICAgIHNldEZvY3VzLFxuICAgICAgICAgICAgc3Vic2NyaWJlLFxuICAgICAgICB9KSwgW1xuICAgICAgICAgICAgY2xlYXJFcnJvcnMsXG4gICAgICAgICAgICBjb250cm9sLFxuICAgICAgICAgICAgZm9ybVN0YXRlLFxuICAgICAgICAgICAgZ2V0RmllbGRTdGF0ZSxcbiAgICAgICAgICAgIGdldFZhbHVlcyxcbiAgICAgICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgICAgIHJlZ2lzdGVyLFxuICAgICAgICAgICAgcmVzZXQsXG4gICAgICAgICAgICByZXNldEZpZWxkLFxuICAgICAgICAgICAgc2V0RXJyb3IsXG4gICAgICAgICAgICBzZXRGb2N1cyxcbiAgICAgICAgICAgIHNldFZhbHVlLFxuICAgICAgICAgICAgc3Vic2NyaWJlLFxuICAgICAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgICAgIHVucmVnaXN0ZXIsXG4gICAgICAgICAgICB3YXRjaCxcbiAgICAgICAgXSkgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChIb29rRm9ybUNvbnRyb2xDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250cm9sIH0sIGNoaWxkcmVuKSkpO1xufTtcblxuY29uc3QgUE9TVF9SRVFVRVNUID0gJ3Bvc3QnO1xuLyoqXG4gKiBGb3JtIGNvbXBvbmVudCB0byBtYW5hZ2Ugc3VibWlzc2lvbi5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSB0byBzZXR1cCBzdWJtaXNzaW9uIGRldGFpbC4ge0BsaW5rIEZvcm1Qcm9wc31cbiAqXG4gKiBAcmV0dXJucyBmb3JtIGNvbXBvbmVudCBvciBoZWFkbGVzcyByZW5kZXIgcHJvcC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBmdW5jdGlvbiBBcHAoKSB7XG4gKiAgIGNvbnN0IHsgY29udHJvbCwgZm9ybVN0YXRlOiB7IGVycm9ycyB9IH0gPSB1c2VGb3JtKCk7XG4gKlxuICogICByZXR1cm4gKFxuICogICAgIDxGb3JtIGFjdGlvbj1cIi9hcGlcIiBjb250cm9sPXtjb250cm9sfT5cbiAqICAgICAgIDxpbnB1dCB7Li4ucmVnaXN0ZXIoXCJuYW1lXCIpfSAvPlxuICogICAgICAgPHA+e2Vycm9ycz8ucm9vdD8uc2VydmVyICYmICdTZXJ2ZXIgZXJyb3InfTwvcD5cbiAqICAgICAgIDxidXR0b24+U3VibWl0PC9idXR0b24+XG4gKiAgICAgPC9Gb3JtPlxuICogICApO1xuICogfVxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIEZvcm0ocHJvcHMpIHtcbiAgICBjb25zdCBtZXRob2RzID0gdXNlRm9ybUNvbnRleHQoKTtcbiAgICBjb25zdCBbbW91bnRlZCwgc2V0TW91bnRlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgeyBjb250cm9sID0gbWV0aG9kcy5jb250cm9sLCBvblN1Ym1pdCwgY2hpbGRyZW4sIGFjdGlvbiwgbWV0aG9kID0gUE9TVF9SRVFVRVNULCBoZWFkZXJzLCBlbmNUeXBlLCBvbkVycm9yLCByZW5kZXIsIG9uU3VjY2VzcywgdmFsaWRhdGVTdGF0dXMsIC4uLnJlc3QgfSA9IHByb3BzO1xuICAgIGNvbnN0IHN1Ym1pdCA9IGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgICBsZXQgaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgbGV0IHR5cGUgPSAnJztcbiAgICAgICAgYXdhaXQgY29udHJvbC5oYW5kbGVTdWJtaXQoYXN5bmMgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBsZXQgZm9ybURhdGFKc29uID0gJyc7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhSnNvbiA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF9hKSB7IH1cbiAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5Gb3JtVmFsdWVzID0gZmxhdHRlbihjb250cm9sLl9mb3JtVmFsdWVzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZsYXR0ZW5Gb3JtVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgZmxhdHRlbkZvcm1WYWx1ZXNba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob25TdWJtaXQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBvblN1Ym1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YUpzb24sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkU3RyaW5naWZ5U3VibWlzc2lvbkRhdGEgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzICYmIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5jVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgXS5zb21lKCh2YWx1ZSkgPT4gdmFsdWUgJiYgdmFsdWUuaW5jbHVkZXMoJ2pzb24nKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goU3RyaW5nKGFjdGlvbiksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihlbmNUeXBlICYmIGVuY1R5cGUgIT09ICdtdWx0aXBhcnQvZm9ybS1kYXRhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgJ0NvbnRlbnQtVHlwZSc6IGVuY1R5cGUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBzaG91bGRTdHJpbmdpZnlTdWJtaXNzaW9uRGF0YSA/IGZvcm1EYXRhSnNvbiA6IGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsaWRhdGVTdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICF2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZXNwb25zZS5zdGF0dXMgPCAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID49IDMwMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IgJiYgb25FcnJvcih7IHJlc3BvbnNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFN0cmluZyhyZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzICYmIG9uU3VjY2Vzcyh7IHJlc3BvbnNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IgJiYgb25FcnJvcih7IGVycm9yIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoZXZlbnQpO1xuICAgICAgICBpZiAoaGFzRXJyb3IgJiYgcHJvcHMuY29udHJvbCkge1xuICAgICAgICAgICAgcHJvcHMuY29udHJvbC5fc3ViamVjdHMuc3RhdGUubmV4dCh7XG4gICAgICAgICAgICAgICAgaXNTdWJtaXRTdWNjZXNzZnVsOiBmYWxzZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcHJvcHMuY29udHJvbC5zZXRFcnJvcigncm9vdC5zZXJ2ZXInLCB7XG4gICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRNb3VudGVkKHRydWUpO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gcmVuZGVyID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHJlbmRlcih7XG4gICAgICAgIHN1Ym1pdCxcbiAgICB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIsIHsgbm9WYWxpZGF0ZTogbW91bnRlZCwgYWN0aW9uOiBhY3Rpb24sIG1ldGhvZDogbWV0aG9kLCBlbmNUeXBlOiBlbmNUeXBlLCBvblN1Ym1pdDogc3VibWl0LCAuLi5yZXN0IH0sIGNoaWxkcmVuKSk7XG59XG5cbmNvbnN0IEZvcm1TdGF0ZVN1YnNjcmliZSA9ICh7IGNvbnRyb2wsIGRpc2FibGVkLCBleGFjdCwgbmFtZSwgcmVuZGVyLCB9KSA9PiByZW5kZXIodXNlRm9ybVN0YXRlKHsgY29udHJvbCwgbmFtZSwgZGlzYWJsZWQsIGV4YWN0IH0pKTtcblxudmFyIGFwcGVuZEVycm9ycyA9IChuYW1lLCB2YWxpZGF0ZUFsbEZpZWxkQ3JpdGVyaWEsIGVycm9ycywgdHlwZSwgbWVzc2FnZSkgPT4gdmFsaWRhdGVBbGxGaWVsZENyaXRlcmlhXG4gICAgPyB7XG4gICAgICAgIC4uLmVycm9yc1tuYW1lXSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIC4uLihlcnJvcnNbbmFtZV0gJiYgZXJyb3JzW25hbWVdLnR5cGVzID8gZXJyb3JzW25hbWVdLnR5cGVzIDoge30pLFxuICAgICAgICAgICAgW3R5cGVdOiBtZXNzYWdlIHx8IHRydWUsXG4gICAgICAgIH0sXG4gICAgfVxuICAgIDoge307XG5cbnZhciBjb252ZXJ0VG9BcnJheVBheWxvYWQgPSAodmFsdWUpID0+IChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSk7XG5cbnZhciBjcmVhdGVTdWJqZWN0ID0gKCkgPT4ge1xuICAgIGxldCBfb2JzZXJ2ZXJzID0gW107XG4gICAgY29uc3QgbmV4dCA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IG9ic2VydmVyIG9mIF9vYnNlcnZlcnMpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQgJiYgb2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHN1YnNjcmliZSA9IChvYnNlcnZlcikgPT4ge1xuICAgICAgICBfb2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBfb2JzZXJ2ZXJzID0gX29ic2VydmVycy5maWx0ZXIoKG8pID0+IG8gIT09IG9ic2VydmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICAgICAgX29ic2VydmVycyA9IFtdO1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0IG9ic2VydmVycygpIHtcbiAgICAgICAgICAgIHJldHVybiBfb2JzZXJ2ZXJzO1xuICAgICAgICB9LFxuICAgICAgICBuZXh0LFxuICAgICAgICBzdWJzY3JpYmUsXG4gICAgICAgIHVuc3Vic2NyaWJlLFxuICAgIH07XG59O1xuXG5mdW5jdGlvbiBleHRyYWN0Rm9ybVZhbHVlcyhmaWVsZHNTdGF0ZSwgZm9ybVZhbHVlcykge1xuICAgIGNvbnN0IHZhbHVlcyA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIGZpZWxkc1N0YXRlKSB7XG4gICAgICAgIGlmIChmaWVsZHNTdGF0ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFN0YXRlID0gZmllbGRzU3RhdGVba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBmb3JtVmFsdWVzW2tleV07XG4gICAgICAgICAgICBpZiAoZmllbGRTdGF0ZSAmJiBpc09iamVjdChmaWVsZFN0YXRlKSAmJiBmaWVsZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmVzdGVkRmllbGRzU3RhdGUgPSBleHRyYWN0Rm9ybVZhbHVlcyhmaWVsZFN0YXRlLCBmaWVsZFZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QobmVzdGVkRmllbGRzU3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlc1trZXldID0gbmVzdGVkRmllbGRzU3RhdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZmllbGRzU3RhdGVba2V5XSkge1xuICAgICAgICAgICAgICAgIHZhbHVlc1trZXldID0gZmllbGRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xufVxuXG52YXIgaXNFbXB0eU9iamVjdCA9ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpICYmICFPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoO1xuXG52YXIgaXNGaWxlSW5wdXQgPSAoZWxlbWVudCkgPT4gZWxlbWVudC50eXBlID09PSAnZmlsZSc7XG5cbnZhciBpc0hUTUxFbGVtZW50ID0gKHZhbHVlKSA9PiB7XG4gICAgaWYgKCFpc1dlYikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG93bmVyID0gdmFsdWUgPyB2YWx1ZS5vd25lckRvY3VtZW50IDogMDtcbiAgICByZXR1cm4gKHZhbHVlIGluc3RhbmNlb2ZcbiAgICAgICAgKG93bmVyICYmIG93bmVyLmRlZmF1bHRWaWV3ID8gb3duZXIuZGVmYXVsdFZpZXcuSFRNTEVsZW1lbnQgOiBIVE1MRWxlbWVudCkpO1xufTtcblxudmFyIGlzTXVsdGlwbGVTZWxlY3QgPSAoZWxlbWVudCkgPT4gZWxlbWVudC50eXBlID09PSBgc2VsZWN0LW11bHRpcGxlYDtcblxudmFyIGlzUmFkaW9JbnB1dCA9IChlbGVtZW50KSA9PiBlbGVtZW50LnR5cGUgPT09ICdyYWRpbyc7XG5cbnZhciBpc1JhZGlvT3JDaGVja2JveCA9IChyZWYpID0+IGlzUmFkaW9JbnB1dChyZWYpIHx8IGlzQ2hlY2tCb3hJbnB1dChyZWYpO1xuXG52YXIgbGl2ZSA9IChyZWYpID0+IGlzSFRNTEVsZW1lbnQocmVmKSAmJiByZWYuaXNDb25uZWN0ZWQ7XG5cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCB1cGRhdGVQYXRoKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdXBkYXRlUGF0aC5zbGljZSgwLCAtMSkubGVuZ3RoO1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG9iamVjdCA9IGlzVW5kZWZpbmVkKG9iamVjdCkgPyBpbmRleCsrIDogb2JqZWN0W3VwZGF0ZVBhdGhbaW5kZXgrK11dO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xufVxuZnVuY3Rpb24gaXNFbXB0eUFycmF5KG9iaikge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkgJiYgIWlzVW5kZWZpbmVkKG9ialtrZXldKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gdW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgY29uc3QgcGF0aHMgPSBBcnJheS5pc0FycmF5KHBhdGgpXG4gICAgICAgID8gcGF0aFxuICAgICAgICA6IGlzS2V5KHBhdGgpXG4gICAgICAgICAgICA/IFtwYXRoXVxuICAgICAgICAgICAgOiBzdHJpbmdUb1BhdGgocGF0aCk7XG4gICAgY29uc3QgY2hpbGRPYmplY3QgPSBwYXRocy5sZW5ndGggPT09IDEgPyBvYmplY3QgOiBiYXNlR2V0KG9iamVjdCwgcGF0aHMpO1xuICAgIGNvbnN0IGluZGV4ID0gcGF0aHMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBrZXkgPSBwYXRoc1tpbmRleF07XG4gICAgaWYgKGNoaWxkT2JqZWN0KSB7XG4gICAgICAgIGRlbGV0ZSBjaGlsZE9iamVjdFtrZXldO1xuICAgIH1cbiAgICBpZiAoaW5kZXggIT09IDAgJiZcbiAgICAgICAgKChpc09iamVjdChjaGlsZE9iamVjdCkgJiYgaXNFbXB0eU9iamVjdChjaGlsZE9iamVjdCkpIHx8XG4gICAgICAgICAgICAoQXJyYXkuaXNBcnJheShjaGlsZE9iamVjdCkgJiYgaXNFbXB0eUFycmF5KGNoaWxkT2JqZWN0KSkpKSB7XG4gICAgICAgIHVuc2V0KG9iamVjdCwgcGF0aHMuc2xpY2UoMCwgLTEpKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbn1cblxudmFyIG9iamVjdEhhc0Z1bmN0aW9uID0gKGRhdGEpID0+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGRhdGFba2V5XSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmZ1bmN0aW9uIGlzVHJhdmVyc2FibGUodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgKGlzT2JqZWN0KHZhbHVlKSAmJiAhb2JqZWN0SGFzRnVuY3Rpb24odmFsdWUpKTtcbn1cbmZ1bmN0aW9uIG1hcmtGaWVsZHNEaXJ0eShkYXRhLCBmaWVsZHMgPSB7fSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW2tleV07XG4gICAgICAgIGlmIChpc1RyYXZlcnNhYmxlKHZhbHVlKSkge1xuICAgICAgICAgICAgZmllbGRzW2tleV0gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IFtdIDoge307XG4gICAgICAgICAgICBtYXJrRmllbGRzRGlydHkodmFsdWUsIGZpZWxkc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBmaWVsZHNba2V5XSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkcztcbn1cbmZ1bmN0aW9uIGdldERpcnR5RmllbGRzKGRhdGEsIGZvcm1WYWx1ZXMsIGRpcnR5RmllbGRzRnJvbVZhbHVlcykge1xuICAgIGlmICghZGlydHlGaWVsZHNGcm9tVmFsdWVzKSB7XG4gICAgICAgIGRpcnR5RmllbGRzRnJvbVZhbHVlcyA9IG1hcmtGaWVsZHNEaXJ0eShmb3JtVmFsdWVzKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGFba2V5XTtcbiAgICAgICAgaWYgKGlzVHJhdmVyc2FibGUodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQoZm9ybVZhbHVlcykgfHwgaXNQcmltaXRpdmUoZGlydHlGaWVsZHNGcm9tVmFsdWVzW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgZGlydHlGaWVsZHNGcm9tVmFsdWVzW2tleV0gPSBtYXJrRmllbGRzRGlydHkodmFsdWUsIEFycmF5LmlzQXJyYXkodmFsdWUpID8gW10gOiB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZXREaXJ0eUZpZWxkcyh2YWx1ZSwgaXNOdWxsT3JVbmRlZmluZWQoZm9ybVZhbHVlcykgPyB7fSA6IGZvcm1WYWx1ZXNba2V5XSwgZGlydHlGaWVsZHNGcm9tVmFsdWVzW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gZm9ybVZhbHVlc1trZXldO1xuICAgICAgICAgICAgZGlydHlGaWVsZHNGcm9tVmFsdWVzW2tleV0gPSAhZGVlcEVxdWFsKHZhbHVlLCBmb3JtVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkaXJ0eUZpZWxkc0Zyb21WYWx1ZXM7XG59XG5cbmNvbnN0IGRlZmF1bHRSZXN1bHQgPSB7XG4gICAgdmFsdWU6IGZhbHNlLFxuICAgIGlzVmFsaWQ6IGZhbHNlLFxufTtcbmNvbnN0IHZhbGlkUmVzdWx0ID0geyB2YWx1ZTogdHJ1ZSwgaXNWYWxpZDogdHJ1ZSB9O1xudmFyIGdldENoZWNrYm94VmFsdWUgPSAob3B0aW9ucykgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IG9wdGlvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbiAmJiBvcHRpb24uY2hlY2tlZCAmJiAhb3B0aW9uLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZXMsIGlzVmFsaWQ6ICEhdmFsdWVzLmxlbmd0aCB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zWzBdLmNoZWNrZWQgJiYgIW9wdGlvbnNbMF0uZGlzYWJsZWRcbiAgICAgICAgICAgID8gLy8gQHRzLWV4cGVjdC1lcnJvciBleHBlY3RlZCB0byB3b3JrIGluIHRoZSBicm93c2VyXG4gICAgICAgICAgICAgICAgb3B0aW9uc1swXS5hdHRyaWJ1dGVzICYmICFpc1VuZGVmaW5lZChvcHRpb25zWzBdLmF0dHJpYnV0ZXMudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gaXNVbmRlZmluZWQob3B0aW9uc1swXS52YWx1ZSkgfHwgb3B0aW9uc1swXS52YWx1ZSA9PT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdmFsaWRSZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogeyB2YWx1ZTogb3B0aW9uc1swXS52YWx1ZSwgaXNWYWxpZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIDogdmFsaWRSZXN1bHRcbiAgICAgICAgICAgIDogZGVmYXVsdFJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRSZXN1bHQ7XG59O1xuXG52YXIgZ2V0RmllbGRWYWx1ZUFzID0gKHZhbHVlLCB7IHZhbHVlQXNOdW1iZXIsIHZhbHVlQXNEYXRlLCBzZXRWYWx1ZUFzIH0pID0+IGlzVW5kZWZpbmVkKHZhbHVlKVxuICAgID8gdmFsdWVcbiAgICA6IHZhbHVlQXNOdW1iZXJcbiAgICAgICAgPyB2YWx1ZSA9PT0gJydcbiAgICAgICAgICAgID8gTmFOXG4gICAgICAgICAgICA6IHZhbHVlXG4gICAgICAgICAgICAgICAgPyArdmFsdWVcbiAgICAgICAgICAgICAgICA6IHZhbHVlXG4gICAgICAgIDogdmFsdWVBc0RhdGUgJiYgaXNTdHJpbmcodmFsdWUpXG4gICAgICAgICAgICA/IG5ldyBEYXRlKHZhbHVlKVxuICAgICAgICAgICAgOiBzZXRWYWx1ZUFzXG4gICAgICAgICAgICAgICAgPyBzZXRWYWx1ZUFzKHZhbHVlKVxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG5cbmNvbnN0IGRlZmF1bHRSZXR1cm4gPSB7XG4gICAgaXNWYWxpZDogZmFsc2UsXG4gICAgdmFsdWU6IG51bGwsXG59O1xudmFyIGdldFJhZGlvVmFsdWUgPSAob3B0aW9ucykgPT4gQXJyYXkuaXNBcnJheShvcHRpb25zKVxuICAgID8gb3B0aW9ucy5yZWR1Y2UoKHByZXZpb3VzLCBvcHRpb24pID0+IG9wdGlvbiAmJiBvcHRpb24uY2hlY2tlZCAmJiAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgaXNWYWxpZDogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgIH1cbiAgICAgICAgOiBwcmV2aW91cywgZGVmYXVsdFJldHVybilcbiAgICA6IGRlZmF1bHRSZXR1cm47XG5cbmZ1bmN0aW9uIGdldEZpZWxkVmFsdWUoX2YpIHtcbiAgICBjb25zdCByZWYgPSBfZi5yZWY7XG4gICAgaWYgKGlzRmlsZUlucHV0KHJlZikpIHtcbiAgICAgICAgcmV0dXJuIHJlZi5maWxlcztcbiAgICB9XG4gICAgaWYgKGlzUmFkaW9JbnB1dChyZWYpKSB7XG4gICAgICAgIHJldHVybiBnZXRSYWRpb1ZhbHVlKF9mLnJlZnMpLnZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNNdWx0aXBsZVNlbGVjdChyZWYpKSB7XG4gICAgICAgIHJldHVybiBbLi4ucmVmLnNlbGVjdGVkT3B0aW9uc10ubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzQ2hlY2tCb3hJbnB1dChyZWYpKSB7XG4gICAgICAgIHJldHVybiBnZXRDaGVja2JveFZhbHVlKF9mLnJlZnMpLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RmllbGRWYWx1ZUFzKGlzVW5kZWZpbmVkKHJlZi52YWx1ZSkgPyBfZi5yZWYudmFsdWUgOiByZWYudmFsdWUsIF9mKTtcbn1cblxudmFyIGdldFJlc29sdmVyT3B0aW9ucyA9IChmaWVsZHNOYW1lcywgX2ZpZWxkcywgY3JpdGVyaWFNb2RlLCBzaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uKSA9PiB7XG4gICAgY29uc3QgZmllbGRzID0ge307XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIGZpZWxkc05hbWVzKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0KF9maWVsZHMsIG5hbWUpO1xuICAgICAgICBmaWVsZCAmJiBzZXQoZmllbGRzLCBuYW1lLCBmaWVsZC5fZik7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGNyaXRlcmlhTW9kZSxcbiAgICAgICAgbmFtZXM6IFsuLi5maWVsZHNOYW1lc10sXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgc2hvdWxkVXNlTmF0aXZlVmFsaWRhdGlvbixcbiAgICB9O1xufTtcblxudmFyIGlzUmVnZXggPSAodmFsdWUpID0+IHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwO1xuXG52YXIgZ2V0UnVsZVZhbHVlID0gKHJ1bGUpID0+IGlzVW5kZWZpbmVkKHJ1bGUpXG4gICAgPyBydWxlXG4gICAgOiBpc1JlZ2V4KHJ1bGUpXG4gICAgICAgID8gcnVsZS5zb3VyY2VcbiAgICAgICAgOiBpc09iamVjdChydWxlKVxuICAgICAgICAgICAgPyBpc1JlZ2V4KHJ1bGUudmFsdWUpXG4gICAgICAgICAgICAgICAgPyBydWxlLnZhbHVlLnNvdXJjZVxuICAgICAgICAgICAgICAgIDogcnVsZS52YWx1ZVxuICAgICAgICAgICAgOiBydWxlO1xuXG52YXIgZ2V0VmFsaWRhdGlvbk1vZGVzID0gKG1vZGUpID0+ICh7XG4gICAgaXNPblN1Ym1pdDogIW1vZGUgfHwgbW9kZSA9PT0gVkFMSURBVElPTl9NT0RFLm9uU3VibWl0LFxuICAgIGlzT25CbHVyOiBtb2RlID09PSBWQUxJREFUSU9OX01PREUub25CbHVyLFxuICAgIGlzT25DaGFuZ2U6IG1vZGUgPT09IFZBTElEQVRJT05fTU9ERS5vbkNoYW5nZSxcbiAgICBpc09uQWxsOiBtb2RlID09PSBWQUxJREFUSU9OX01PREUuYWxsLFxuICAgIGlzT25Ub3VjaDogbW9kZSA9PT0gVkFMSURBVElPTl9NT0RFLm9uVG91Y2hlZCxcbn0pO1xuXG5jb25zdCBBU1lOQ19GVU5DVElPTiA9ICdBc3luY0Z1bmN0aW9uJztcbnZhciBoYXNQcm9taXNlVmFsaWRhdGlvbiA9IChmaWVsZFJlZmVyZW5jZSkgPT4gISFmaWVsZFJlZmVyZW5jZSAmJlxuICAgICEhZmllbGRSZWZlcmVuY2UudmFsaWRhdGUgJiZcbiAgICAhISgoaXNGdW5jdGlvbihmaWVsZFJlZmVyZW5jZS52YWxpZGF0ZSkgJiZcbiAgICAgICAgZmllbGRSZWZlcmVuY2UudmFsaWRhdGUuY29uc3RydWN0b3IubmFtZSA9PT0gQVNZTkNfRlVOQ1RJT04pIHx8XG4gICAgICAgIChpc09iamVjdChmaWVsZFJlZmVyZW5jZS52YWxpZGF0ZSkgJiZcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZmllbGRSZWZlcmVuY2UudmFsaWRhdGUpLmZpbmQoKHZhbGlkYXRlRnVuY3Rpb24pID0+IHZhbGlkYXRlRnVuY3Rpb24uY29uc3RydWN0b3IubmFtZSA9PT0gQVNZTkNfRlVOQ1RJT04pKSk7XG5cbnZhciBoYXNWYWxpZGF0aW9uID0gKG9wdGlvbnMpID0+IG9wdGlvbnMubW91bnQgJiZcbiAgICAob3B0aW9ucy5yZXF1aXJlZCB8fFxuICAgICAgICBvcHRpb25zLm1pbiB8fFxuICAgICAgICBvcHRpb25zLm1heCB8fFxuICAgICAgICBvcHRpb25zLm1heExlbmd0aCB8fFxuICAgICAgICBvcHRpb25zLm1pbkxlbmd0aCB8fFxuICAgICAgICBvcHRpb25zLnBhdHRlcm4gfHxcbiAgICAgICAgb3B0aW9ucy52YWxpZGF0ZSk7XG5cbnZhciBpc1dhdGNoZWQgPSAobmFtZSwgX25hbWVzLCBpc0JsdXJFdmVudCkgPT4gIWlzQmx1ckV2ZW50ICYmXG4gICAgKF9uYW1lcy53YXRjaEFsbCB8fFxuICAgICAgICBfbmFtZXMud2F0Y2guaGFzKG5hbWUpIHx8XG4gICAgICAgIFsuLi5fbmFtZXMud2F0Y2hdLnNvbWUoKHdhdGNoTmFtZSkgPT4gbmFtZS5zdGFydHNXaXRoKHdhdGNoTmFtZSkgJiZcbiAgICAgICAgICAgIC9eXFwuXFx3Ky8udGVzdChuYW1lLnNsaWNlKHdhdGNoTmFtZS5sZW5ndGgpKSkpO1xuXG5jb25zdCBpdGVyYXRlRmllbGRzQnlBY3Rpb24gPSAoZmllbGRzLCBhY3Rpb24sIGZpZWxkc05hbWVzLCBhYm9ydEVhcmx5KSA9PiB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZmllbGRzTmFtZXMgfHwgT2JqZWN0LmtleXMoZmllbGRzKSkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IGdldChmaWVsZHMsIGtleSk7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgeyBfZiwgLi4uY3VycmVudEZpZWxkIH0gPSBmaWVsZDtcbiAgICAgICAgICAgIGlmIChfZikge1xuICAgICAgICAgICAgICAgIGlmIChfZi5yZWZzICYmIF9mLnJlZnNbMF0gJiYgYWN0aW9uKF9mLnJlZnNbMF0sIGtleSkgJiYgIWFib3J0RWFybHkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9mLnJlZiAmJiBhY3Rpb24oX2YucmVmLCBfZi5uYW1lKSAmJiAhYWJvcnRFYXJseSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVyYXRlRmllbGRzQnlBY3Rpb24oY3VycmVudEZpZWxkLCBhY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KGN1cnJlbnRGaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlcmF0ZUZpZWxkc0J5QWN0aW9uKGN1cnJlbnRGaWVsZCwgYWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xufTtcblxuZnVuY3Rpb24gc2NoZW1hRXJyb3JMb29rdXAoZXJyb3JzLCBfZmllbGRzLCBuYW1lKSB7XG4gICAgY29uc3QgZXJyb3IgPSBnZXQoZXJyb3JzLCBuYW1lKTtcbiAgICBpZiAoZXJyb3IgfHwgaXNLZXkobmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbmFtZXMgPSBuYW1lLnNwbGl0KCcuJyk7XG4gICAgd2hpbGUgKG5hbWVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBuYW1lcy5qb2luKCcuJyk7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0KF9maWVsZHMsIGZpZWxkTmFtZSk7XG4gICAgICAgIGNvbnN0IGZvdW5kRXJyb3IgPSBnZXQoZXJyb3JzLCBmaWVsZE5hbWUpO1xuICAgICAgICBpZiAoZmllbGQgJiYgIUFycmF5LmlzQXJyYXkoZmllbGQpICYmIG5hbWUgIT09IGZpZWxkTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgbmFtZSB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3VuZEVycm9yICYmIGZvdW5kRXJyb3IudHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBmaWVsZE5hbWUsXG4gICAgICAgICAgICAgICAgZXJyb3I6IGZvdW5kRXJyb3IsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3VuZEVycm9yICYmIGZvdW5kRXJyb3Iucm9vdCAmJiBmb3VuZEVycm9yLnJvb3QudHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBgJHtmaWVsZE5hbWV9LnJvb3RgLFxuICAgICAgICAgICAgICAgIGVycm9yOiBmb3VuZEVycm9yLnJvb3QsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIG5hbWVzLnBvcCgpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lLFxuICAgIH07XG59XG5cbnZhciBzaG91bGRSZW5kZXJGb3JtU3RhdGUgPSAoZm9ybVN0YXRlRGF0YSwgX3Byb3h5Rm9ybVN0YXRlLCB1cGRhdGVGb3JtU3RhdGUsIGlzUm9vdCkgPT4ge1xuICAgIHVwZGF0ZUZvcm1TdGF0ZShmb3JtU3RhdGVEYXRhKTtcbiAgICBjb25zdCB7IG5hbWUsIC4uLmZvcm1TdGF0ZSB9ID0gZm9ybVN0YXRlRGF0YTtcbiAgICByZXR1cm4gKGlzRW1wdHlPYmplY3QoZm9ybVN0YXRlKSB8fFxuICAgICAgICBPYmplY3Qua2V5cyhmb3JtU3RhdGUpLmxlbmd0aCA+PSBPYmplY3Qua2V5cyhfcHJveHlGb3JtU3RhdGUpLmxlbmd0aCB8fFxuICAgICAgICBPYmplY3Qua2V5cyhmb3JtU3RhdGUpLmZpbmQoKGtleSkgPT4gX3Byb3h5Rm9ybVN0YXRlW2tleV0gPT09XG4gICAgICAgICAgICAoIWlzUm9vdCB8fCBWQUxJREFUSU9OX01PREUuYWxsKSkpO1xufTtcblxudmFyIHNob3VsZFN1YnNjcmliZUJ5TmFtZSA9IChuYW1lLCBzaWduYWxOYW1lLCBleGFjdCkgPT4gIW5hbWUgfHxcbiAgICAhc2lnbmFsTmFtZSB8fFxuICAgIG5hbWUgPT09IHNpZ25hbE5hbWUgfHxcbiAgICBjb252ZXJ0VG9BcnJheVBheWxvYWQobmFtZSkuc29tZSgoY3VycmVudE5hbWUpID0+IGN1cnJlbnROYW1lICYmXG4gICAgICAgIChleGFjdFxuICAgICAgICAgICAgPyBjdXJyZW50TmFtZSA9PT0gc2lnbmFsTmFtZVxuICAgICAgICAgICAgOiBjdXJyZW50TmFtZS5zdGFydHNXaXRoKHNpZ25hbE5hbWUpIHx8XG4gICAgICAgICAgICAgICAgc2lnbmFsTmFtZS5zdGFydHNXaXRoKGN1cnJlbnROYW1lKSkpO1xuXG52YXIgc2tpcFZhbGlkYXRpb24gPSAoaXNCbHVyRXZlbnQsIGlzVG91Y2hlZCwgaXNTdWJtaXR0ZWQsIHJlVmFsaWRhdGVNb2RlLCBtb2RlKSA9PiB7XG4gICAgaWYgKG1vZGUuaXNPbkFsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpc1N1Ym1pdHRlZCAmJiBtb2RlLmlzT25Ub3VjaCkge1xuICAgICAgICByZXR1cm4gIShpc1RvdWNoZWQgfHwgaXNCbHVyRXZlbnQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc1N1Ym1pdHRlZCA/IHJlVmFsaWRhdGVNb2RlLmlzT25CbHVyIDogbW9kZS5pc09uQmx1cikge1xuICAgICAgICByZXR1cm4gIWlzQmx1ckV2ZW50O1xuICAgIH1cbiAgICBlbHNlIGlmIChpc1N1Ym1pdHRlZCA/IHJlVmFsaWRhdGVNb2RlLmlzT25DaGFuZ2UgOiBtb2RlLmlzT25DaGFuZ2UpIHtcbiAgICAgICAgcmV0dXJuIGlzQmx1ckV2ZW50O1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciB1bnNldEVtcHR5QXJyYXkgPSAocmVmLCBuYW1lKSA9PiAhY29tcGFjdChnZXQocmVmLCBuYW1lKSkubGVuZ3RoICYmIHVuc2V0KHJlZiwgbmFtZSk7XG5cbnZhciB1cGRhdGVGaWVsZEFycmF5Um9vdEVycm9yID0gKGVycm9ycywgZXJyb3IsIG5hbWUpID0+IHtcbiAgICBjb25zdCBmaWVsZEFycmF5RXJyb3JzID0gY29udmVydFRvQXJyYXlQYXlsb2FkKGdldChlcnJvcnMsIG5hbWUpKTtcbiAgICBzZXQoZmllbGRBcnJheUVycm9ycywgJ3Jvb3QnLCBlcnJvcltuYW1lXSk7XG4gICAgc2V0KGVycm9ycywgbmFtZSwgZmllbGRBcnJheUVycm9ycyk7XG4gICAgcmV0dXJuIGVycm9ycztcbn07XG5cbmZ1bmN0aW9uIGdldFZhbGlkYXRlRXJyb3IocmVzdWx0LCByZWYsIHR5cGUgPSAndmFsaWRhdGUnKSB7XG4gICAgaWYgKGlzU3RyaW5nKHJlc3VsdCkgfHxcbiAgICAgICAgKEFycmF5LmlzQXJyYXkocmVzdWx0KSAmJiByZXN1bHQuZXZlcnkoaXNTdHJpbmcpKSB8fFxuICAgICAgICAoaXNCb29sZWFuKHJlc3VsdCkgJiYgIXJlc3VsdCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBpc1N0cmluZyhyZXN1bHQpID8gcmVzdWx0IDogJycsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgIH07XG4gICAgfVxufVxuXG52YXIgZ2V0VmFsdWVBbmRNZXNzYWdlID0gKHZhbGlkYXRpb25EYXRhKSA9PiBpc09iamVjdCh2YWxpZGF0aW9uRGF0YSkgJiYgIWlzUmVnZXgodmFsaWRhdGlvbkRhdGEpXG4gICAgPyB2YWxpZGF0aW9uRGF0YVxuICAgIDoge1xuICAgICAgICB2YWx1ZTogdmFsaWRhdGlvbkRhdGEsXG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgIH07XG5cbnZhciB2YWxpZGF0ZUZpZWxkID0gYXN5bmMgKGZpZWxkLCBkaXNhYmxlZEZpZWxkTmFtZXMsIGZvcm1WYWx1ZXMsIHZhbGlkYXRlQWxsRmllbGRDcml0ZXJpYSwgc2hvdWxkVXNlTmF0aXZlVmFsaWRhdGlvbiwgaXNGaWVsZEFycmF5KSA9PiB7XG4gICAgY29uc3QgeyByZWYsIHJlZnMsIHJlcXVpcmVkLCBtYXhMZW5ndGgsIG1pbkxlbmd0aCwgbWluLCBtYXgsIHBhdHRlcm4sIHZhbGlkYXRlLCBuYW1lLCB2YWx1ZUFzTnVtYmVyLCBtb3VudCwgfSA9IGZpZWxkLl9mO1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBnZXQoZm9ybVZhbHVlcywgbmFtZSk7XG4gICAgaWYgKCFtb3VudCB8fCBkaXNhYmxlZEZpZWxkTmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXRSZWYgPSByZWZzID8gcmVmc1swXSA6IHJlZjtcbiAgICBjb25zdCBzZXRDdXN0b21WYWxpZGl0eSA9IChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmIChzaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uICYmIGlucHV0UmVmLnJlcG9ydFZhbGlkaXR5KSB7XG4gICAgICAgICAgICBpbnB1dFJlZi5zZXRDdXN0b21WYWxpZGl0eShpc0Jvb2xlYW4obWVzc2FnZSkgPyAnJyA6IG1lc3NhZ2UgfHwgJycpO1xuICAgICAgICAgICAgaW5wdXRSZWYucmVwb3J0VmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgZXJyb3IgPSB7fTtcbiAgICBjb25zdCBpc1JhZGlvID0gaXNSYWRpb0lucHV0KHJlZik7XG4gICAgY29uc3QgaXNDaGVja0JveCA9IGlzQ2hlY2tCb3hJbnB1dChyZWYpO1xuICAgIGNvbnN0IGlzUmFkaW9PckNoZWNrYm94ID0gaXNSYWRpbyB8fCBpc0NoZWNrQm94O1xuICAgIGNvbnN0IGlzRW1wdHkgPSAoKHZhbHVlQXNOdW1iZXIgfHwgaXNGaWxlSW5wdXQocmVmKSkgJiZcbiAgICAgICAgaXNVbmRlZmluZWQocmVmLnZhbHVlKSAmJlxuICAgICAgICBpc1VuZGVmaW5lZChpbnB1dFZhbHVlKSkgfHxcbiAgICAgICAgKGlzSFRNTEVsZW1lbnQocmVmKSAmJiByZWYudmFsdWUgPT09ICcnKSB8fFxuICAgICAgICBpbnB1dFZhbHVlID09PSAnJyB8fFxuICAgICAgICAoQXJyYXkuaXNBcnJheShpbnB1dFZhbHVlKSAmJiAhaW5wdXRWYWx1ZS5sZW5ndGgpO1xuICAgIGNvbnN0IGFwcGVuZEVycm9yc0N1cnJ5ID0gYXBwZW5kRXJyb3JzLmJpbmQobnVsbCwgbmFtZSwgdmFsaWRhdGVBbGxGaWVsZENyaXRlcmlhLCBlcnJvcik7XG4gICAgY29uc3QgZ2V0TWluTWF4TWVzc2FnZSA9IChleGNlZWRNYXgsIG1heExlbmd0aE1lc3NhZ2UsIG1pbkxlbmd0aE1lc3NhZ2UsIG1heFR5cGUgPSBJTlBVVF9WQUxJREFUSU9OX1JVTEVTLm1heExlbmd0aCwgbWluVHlwZSA9IElOUFVUX1ZBTElEQVRJT05fUlVMRVMubWluTGVuZ3RoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBleGNlZWRNYXggPyBtYXhMZW5ndGhNZXNzYWdlIDogbWluTGVuZ3RoTWVzc2FnZTtcbiAgICAgICAgZXJyb3JbbmFtZV0gPSB7XG4gICAgICAgICAgICB0eXBlOiBleGNlZWRNYXggPyBtYXhUeXBlIDogbWluVHlwZSxcbiAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAuLi5hcHBlbmRFcnJvcnNDdXJyeShleGNlZWRNYXggPyBtYXhUeXBlIDogbWluVHlwZSwgbWVzc2FnZSksXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBpZiAoaXNGaWVsZEFycmF5XG4gICAgICAgID8gIUFycmF5LmlzQXJyYXkoaW5wdXRWYWx1ZSkgfHwgIWlucHV0VmFsdWUubGVuZ3RoXG4gICAgICAgIDogcmVxdWlyZWQgJiZcbiAgICAgICAgICAgICgoIWlzUmFkaW9PckNoZWNrYm94ICYmIChpc0VtcHR5IHx8IGlzTnVsbE9yVW5kZWZpbmVkKGlucHV0VmFsdWUpKSkgfHxcbiAgICAgICAgICAgICAgICAoaXNCb29sZWFuKGlucHV0VmFsdWUpICYmICFpbnB1dFZhbHVlKSB8fFxuICAgICAgICAgICAgICAgIChpc0NoZWNrQm94ICYmICFnZXRDaGVja2JveFZhbHVlKHJlZnMpLmlzVmFsaWQpIHx8XG4gICAgICAgICAgICAgICAgKGlzUmFkaW8gJiYgIWdldFJhZGlvVmFsdWUocmVmcykuaXNWYWxpZCkpKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIG1lc3NhZ2UgfSA9IGlzU3RyaW5nKHJlcXVpcmVkKVxuICAgICAgICAgICAgPyB7IHZhbHVlOiAhIXJlcXVpcmVkLCBtZXNzYWdlOiByZXF1aXJlZCB9XG4gICAgICAgICAgICA6IGdldFZhbHVlQW5kTWVzc2FnZShyZXF1aXJlZCk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgZXJyb3JbbmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogSU5QVVRfVkFMSURBVElPTl9SVUxFUy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIHJlZjogaW5wdXRSZWYsXG4gICAgICAgICAgICAgICAgLi4uYXBwZW5kRXJyb3JzQ3VycnkoSU5QVVRfVkFMSURBVElPTl9SVUxFUy5yZXF1aXJlZCwgbWVzc2FnZSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUFsbEZpZWxkQ3JpdGVyaWEpIHtcbiAgICAgICAgICAgICAgICBzZXRDdXN0b21WYWxpZGl0eShtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpc0VtcHR5ICYmICghaXNOdWxsT3JVbmRlZmluZWQobWluKSB8fCAhaXNOdWxsT3JVbmRlZmluZWQobWF4KSkpIHtcbiAgICAgICAgbGV0IGV4Y2VlZE1heDtcbiAgICAgICAgbGV0IGV4Y2VlZE1pbjtcbiAgICAgICAgY29uc3QgbWF4T3V0cHV0ID0gZ2V0VmFsdWVBbmRNZXNzYWdlKG1heCk7XG4gICAgICAgIGNvbnN0IG1pbk91dHB1dCA9IGdldFZhbHVlQW5kTWVzc2FnZShtaW4pO1xuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGlucHV0VmFsdWUpICYmICFpc05hTihpbnB1dFZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVOdW1iZXIgPSByZWYudmFsdWVBc051bWJlciB8fFxuICAgICAgICAgICAgICAgIChpbnB1dFZhbHVlID8gK2lucHV0VmFsdWUgOiBpbnB1dFZhbHVlKTtcbiAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQobWF4T3V0cHV0LnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGV4Y2VlZE1heCA9IHZhbHVlTnVtYmVyID4gbWF4T3V0cHV0LnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChtaW5PdXRwdXQudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZXhjZWVkTWluID0gdmFsdWVOdW1iZXIgPCBtaW5PdXRwdXQudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZURhdGUgPSByZWYudmFsdWVBc0RhdGUgfHwgbmV3IERhdGUoaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBjb252ZXJ0VGltZVRvRGF0ZSA9ICh0aW1lKSA9PiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpICsgJyAnICsgdGltZSk7XG4gICAgICAgICAgICBjb25zdCBpc1RpbWUgPSByZWYudHlwZSA9PSAndGltZSc7XG4gICAgICAgICAgICBjb25zdCBpc1dlZWsgPSByZWYudHlwZSA9PSAnd2Vlayc7XG4gICAgICAgICAgICBpZiAoaXNTdHJpbmcobWF4T3V0cHV0LnZhbHVlKSAmJiBpbnB1dFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZXhjZWVkTWF4ID0gaXNUaW1lXG4gICAgICAgICAgICAgICAgICAgID8gY29udmVydFRpbWVUb0RhdGUoaW5wdXRWYWx1ZSkgPiBjb252ZXJ0VGltZVRvRGF0ZShtYXhPdXRwdXQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDogaXNXZWVrXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGlucHV0VmFsdWUgPiBtYXhPdXRwdXQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWVEYXRlID4gbmV3IERhdGUobWF4T3V0cHV0LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmluZyhtaW5PdXRwdXQudmFsdWUpICYmIGlucHV0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBleGNlZWRNaW4gPSBpc1RpbWVcbiAgICAgICAgICAgICAgICAgICAgPyBjb252ZXJ0VGltZVRvRGF0ZShpbnB1dFZhbHVlKSA8IGNvbnZlcnRUaW1lVG9EYXRlKG1pbk91dHB1dC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBpc1dlZWtcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaW5wdXRWYWx1ZSA8IG1pbk91dHB1dC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZURhdGUgPCBuZXcgRGF0ZShtaW5PdXRwdXQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChleGNlZWRNYXggfHwgZXhjZWVkTWluKSB7XG4gICAgICAgICAgICBnZXRNaW5NYXhNZXNzYWdlKCEhZXhjZWVkTWF4LCBtYXhPdXRwdXQubWVzc2FnZSwgbWluT3V0cHV0Lm1lc3NhZ2UsIElOUFVUX1ZBTElEQVRJT05fUlVMRVMubWF4LCBJTlBVVF9WQUxJREFUSU9OX1JVTEVTLm1pbik7XG4gICAgICAgICAgICBpZiAoIXZhbGlkYXRlQWxsRmllbGRDcml0ZXJpYSkge1xuICAgICAgICAgICAgICAgIHNldEN1c3RvbVZhbGlkaXR5KGVycm9yW25hbWVdLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoKG1heExlbmd0aCB8fCBtaW5MZW5ndGgpICYmXG4gICAgICAgICFpc0VtcHR5ICYmXG4gICAgICAgIChpc1N0cmluZyhpbnB1dFZhbHVlKSB8fCAoaXNGaWVsZEFycmF5ICYmIEFycmF5LmlzQXJyYXkoaW5wdXRWYWx1ZSkpKSkge1xuICAgICAgICBjb25zdCBtYXhMZW5ndGhPdXRwdXQgPSBnZXRWYWx1ZUFuZE1lc3NhZ2UobWF4TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgbWluTGVuZ3RoT3V0cHV0ID0gZ2V0VmFsdWVBbmRNZXNzYWdlKG1pbkxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGV4Y2VlZE1heCA9ICFpc051bGxPclVuZGVmaW5lZChtYXhMZW5ndGhPdXRwdXQudmFsdWUpICYmXG4gICAgICAgICAgICBpbnB1dFZhbHVlLmxlbmd0aCA+ICttYXhMZW5ndGhPdXRwdXQudmFsdWU7XG4gICAgICAgIGNvbnN0IGV4Y2VlZE1pbiA9ICFpc051bGxPclVuZGVmaW5lZChtaW5MZW5ndGhPdXRwdXQudmFsdWUpICYmXG4gICAgICAgICAgICBpbnB1dFZhbHVlLmxlbmd0aCA8ICttaW5MZW5ndGhPdXRwdXQudmFsdWU7XG4gICAgICAgIGlmIChleGNlZWRNYXggfHwgZXhjZWVkTWluKSB7XG4gICAgICAgICAgICBnZXRNaW5NYXhNZXNzYWdlKGV4Y2VlZE1heCwgbWF4TGVuZ3RoT3V0cHV0Lm1lc3NhZ2UsIG1pbkxlbmd0aE91dHB1dC5tZXNzYWdlKTtcbiAgICAgICAgICAgIGlmICghdmFsaWRhdGVBbGxGaWVsZENyaXRlcmlhKSB7XG4gICAgICAgICAgICAgICAgc2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3JbbmFtZV0ubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChwYXR0ZXJuICYmICFpc0VtcHR5ICYmIGlzU3RyaW5nKGlucHV0VmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWU6IHBhdHRlcm5WYWx1ZSwgbWVzc2FnZSB9ID0gZ2V0VmFsdWVBbmRNZXNzYWdlKHBhdHRlcm4pO1xuICAgICAgICBpZiAoaXNSZWdleChwYXR0ZXJuVmFsdWUpICYmICFpbnB1dFZhbHVlLm1hdGNoKHBhdHRlcm5WYWx1ZSkpIHtcbiAgICAgICAgICAgIGVycm9yW25hbWVdID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IElOUFVUX1ZBTElEQVRJT05fUlVMRVMucGF0dGVybixcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAuLi5hcHBlbmRFcnJvcnNDdXJyeShJTlBVVF9WQUxJREFUSU9OX1JVTEVTLnBhdHRlcm4sIG1lc3NhZ2UpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICghdmFsaWRhdGVBbGxGaWVsZENyaXRlcmlhKSB7XG4gICAgICAgICAgICAgICAgc2V0Q3VzdG9tVmFsaWRpdHkobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh2YWxpZGF0ZSkge1xuICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWxpZGF0ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZhbGlkYXRlKGlucHV0VmFsdWUsIGZvcm1WYWx1ZXMpO1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVFcnJvciA9IGdldFZhbGlkYXRlRXJyb3IocmVzdWx0LCBpbnB1dFJlZik7XG4gICAgICAgICAgICBpZiAodmFsaWRhdGVFcnJvcikge1xuICAgICAgICAgICAgICAgIGVycm9yW25hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi52YWxpZGF0ZUVycm9yLFxuICAgICAgICAgICAgICAgICAgICAuLi5hcHBlbmRFcnJvcnNDdXJyeShJTlBVVF9WQUxJREFUSU9OX1JVTEVTLnZhbGlkYXRlLCB2YWxpZGF0ZUVycm9yLm1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUFsbEZpZWxkQ3JpdGVyaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q3VzdG9tVmFsaWRpdHkodmFsaWRhdGVFcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWxpZGF0ZSkpIHtcbiAgICAgICAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0ID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWxpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eU9iamVjdCh2YWxpZGF0aW9uUmVzdWx0KSAmJiAhdmFsaWRhdGVBbGxGaWVsZENyaXRlcmlhKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0ZUVycm9yID0gZ2V0VmFsaWRhdGVFcnJvcihhd2FpdCB2YWxpZGF0ZVtrZXldKGlucHV0VmFsdWUsIGZvcm1WYWx1ZXMpLCBpbnB1dFJlZiwga2V5KTtcbiAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udmFsaWRhdGVFcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFwcGVuZEVycm9yc0N1cnJ5KGtleSwgdmFsaWRhdGVFcnJvci5tZXNzYWdlKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q3VzdG9tVmFsaWRpdHkodmFsaWRhdGVFcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlQWxsRmllbGRDcml0ZXJpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JbbmFtZV0gPSB2YWxpZGF0aW9uUmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0VtcHR5T2JqZWN0KHZhbGlkYXRpb25SZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JbbmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZjogaW5wdXRSZWYsXG4gICAgICAgICAgICAgICAgICAgIC4uLnZhbGlkYXRpb25SZXN1bHQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkYXRlQWxsRmllbGRDcml0ZXJpYSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNldEN1c3RvbVZhbGlkaXR5KHRydWUpO1xuICAgIHJldHVybiBlcnJvcjtcbn07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIG1vZGU6IFZBTElEQVRJT05fTU9ERS5vblN1Ym1pdCxcbiAgICByZVZhbGlkYXRlTW9kZTogVkFMSURBVElPTl9NT0RFLm9uQ2hhbmdlLFxuICAgIHNob3VsZEZvY3VzRXJyb3I6IHRydWUsXG59O1xuZnVuY3Rpb24gY3JlYXRlRm9ybUNvbnRyb2wocHJvcHMgPSB7fSkge1xuICAgIGxldCBfb3B0aW9ucyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIC4uLnByb3BzLFxuICAgIH07XG4gICAgbGV0IF9mb3JtU3RhdGUgPSB7XG4gICAgICAgIHN1Ym1pdENvdW50OiAwLFxuICAgICAgICBpc0RpcnR5OiBmYWxzZSxcbiAgICAgICAgaXNSZWFkeTogZmFsc2UsXG4gICAgICAgIGlzTG9hZGluZzogaXNGdW5jdGlvbihfb3B0aW9ucy5kZWZhdWx0VmFsdWVzKSxcbiAgICAgICAgaXNWYWxpZGF0aW5nOiBmYWxzZSxcbiAgICAgICAgaXNTdWJtaXR0ZWQ6IGZhbHNlLFxuICAgICAgICBpc1N1Ym1pdHRpbmc6IGZhbHNlLFxuICAgICAgICBpc1N1Ym1pdFN1Y2Nlc3NmdWw6IGZhbHNlLFxuICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgdG91Y2hlZEZpZWxkczoge30sXG4gICAgICAgIGRpcnR5RmllbGRzOiB7fSxcbiAgICAgICAgdmFsaWRhdGluZ0ZpZWxkczoge30sXG4gICAgICAgIGVycm9yczogX29wdGlvbnMuZXJyb3JzIHx8IHt9LFxuICAgICAgICBkaXNhYmxlZDogX29wdGlvbnMuZGlzYWJsZWQgfHwgZmFsc2UsXG4gICAgfTtcbiAgICBsZXQgX2ZpZWxkcyA9IHt9O1xuICAgIGxldCBfZGVmYXVsdFZhbHVlcyA9IGlzT2JqZWN0KF9vcHRpb25zLmRlZmF1bHRWYWx1ZXMpIHx8IGlzT2JqZWN0KF9vcHRpb25zLnZhbHVlcylcbiAgICAgICAgPyBjbG9uZU9iamVjdChfb3B0aW9ucy5kZWZhdWx0VmFsdWVzIHx8IF9vcHRpb25zLnZhbHVlcykgfHwge31cbiAgICAgICAgOiB7fTtcbiAgICBsZXQgX2Zvcm1WYWx1ZXMgPSBfb3B0aW9ucy5zaG91bGRVbnJlZ2lzdGVyXG4gICAgICAgID8ge31cbiAgICAgICAgOiBjbG9uZU9iamVjdChfZGVmYXVsdFZhbHVlcyk7XG4gICAgbGV0IF9zdGF0ZSA9IHtcbiAgICAgICAgYWN0aW9uOiBmYWxzZSxcbiAgICAgICAgbW91bnQ6IGZhbHNlLFxuICAgICAgICB3YXRjaDogZmFsc2UsXG4gICAgICAgIGtlZXBJc1ZhbGlkOiBmYWxzZSxcbiAgICB9O1xuICAgIGxldCBfbmFtZXMgPSB7XG4gICAgICAgIG1vdW50OiBuZXcgU2V0KCksXG4gICAgICAgIGRpc2FibGVkOiBuZXcgU2V0KCksXG4gICAgICAgIHVuTW91bnQ6IG5ldyBTZXQoKSxcbiAgICAgICAgYXJyYXk6IG5ldyBTZXQoKSxcbiAgICAgICAgd2F0Y2g6IG5ldyBTZXQoKSxcbiAgICB9O1xuICAgIGxldCBkZWxheUVycm9yQ2FsbGJhY2s7XG4gICAgbGV0IHRpbWVyID0gMDtcbiAgICBjb25zdCBkZWZhdWx0UHJveHlGb3JtU3RhdGUgPSB7XG4gICAgICAgIGlzRGlydHk6IGZhbHNlLFxuICAgICAgICBkaXJ0eUZpZWxkczogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpbmdGaWVsZHM6IGZhbHNlLFxuICAgICAgICB0b3VjaGVkRmllbGRzOiBmYWxzZSxcbiAgICAgICAgaXNWYWxpZGF0aW5nOiBmYWxzZSxcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIGVycm9yczogZmFsc2UsXG4gICAgfTtcbiAgICBjb25zdCBfcHJveHlGb3JtU3RhdGUgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRQcm94eUZvcm1TdGF0ZSxcbiAgICB9O1xuICAgIGxldCBfcHJveHlTdWJzY3JpYmVGb3JtU3RhdGUgPSB7XG4gICAgICAgIC4uLl9wcm94eUZvcm1TdGF0ZSxcbiAgICB9O1xuICAgIGNvbnN0IF9zdWJqZWN0cyA9IHtcbiAgICAgICAgYXJyYXk6IGNyZWF0ZVN1YmplY3QoKSxcbiAgICAgICAgc3RhdGU6IGNyZWF0ZVN1YmplY3QoKSxcbiAgICB9O1xuICAgIGNvbnN0IHNob3VsZERpc3BsYXlBbGxBc3NvY2lhdGVkRXJyb3JzID0gX29wdGlvbnMuY3JpdGVyaWFNb2RlID09PSBWQUxJREFUSU9OX01PREUuYWxsO1xuICAgIGNvbnN0IGRlYm91bmNlID0gKGNhbGxiYWNrKSA9PiAod2FpdCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoY2FsbGJhY2ssIHdhaXQpO1xuICAgIH07XG4gICAgY29uc3QgX3NldFZhbGlkID0gYXN5bmMgKHNob3VsZFVwZGF0ZVZhbGlkKSA9PiB7XG4gICAgICAgIGlmIChfc3RhdGUua2VlcElzVmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIV9vcHRpb25zLmRpc2FibGVkICYmXG4gICAgICAgICAgICAoX3Byb3h5Rm9ybVN0YXRlLmlzVmFsaWQgfHxcbiAgICAgICAgICAgICAgICBfcHJveHlTdWJzY3JpYmVGb3JtU3RhdGUuaXNWYWxpZCB8fFxuICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0ZVZhbGlkKSkge1xuICAgICAgICAgICAgbGV0IGlzVmFsaWQ7XG4gICAgICAgICAgICBpZiAoX29wdGlvbnMucmVzb2x2ZXIpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gaXNFbXB0eU9iamVjdCgoYXdhaXQgX3J1blNjaGVtYSgpKS5lcnJvcnMpO1xuICAgICAgICAgICAgICAgIF91cGRhdGVJc1ZhbGlkYXRpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBhd2FpdCBleGVjdXRlQnVpbHRJblZhbGlkYXRpb24oX2ZpZWxkcywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNWYWxpZCAhPT0gX2Zvcm1TdGF0ZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBfdXBkYXRlSXNWYWxpZGF0aW5nID0gKG5hbWVzLCBpc1ZhbGlkYXRpbmcpID0+IHtcbiAgICAgICAgaWYgKCFfb3B0aW9ucy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgKF9wcm94eUZvcm1TdGF0ZS5pc1ZhbGlkYXRpbmcgfHxcbiAgICAgICAgICAgICAgICBfcHJveHlGb3JtU3RhdGUudmFsaWRhdGluZ0ZpZWxkcyB8fFxuICAgICAgICAgICAgICAgIF9wcm94eVN1YnNjcmliZUZvcm1TdGF0ZS5pc1ZhbGlkYXRpbmcgfHxcbiAgICAgICAgICAgICAgICBfcHJveHlTdWJzY3JpYmVGb3JtU3RhdGUudmFsaWRhdGluZ0ZpZWxkcykpIHtcbiAgICAgICAgICAgIChuYW1lcyB8fCBBcnJheS5mcm9tKF9uYW1lcy5tb3VudCkpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkYXRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2V0KF9mb3JtU3RhdGUudmFsaWRhdGluZ0ZpZWxkcywgbmFtZSwgaXNWYWxpZGF0aW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bnNldChfZm9ybVN0YXRlLnZhbGlkYXRpbmdGaWVsZHMsIG5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgICAgIHZhbGlkYXRpbmdGaWVsZHM6IF9mb3JtU3RhdGUudmFsaWRhdGluZ0ZpZWxkcyxcbiAgICAgICAgICAgICAgICBpc1ZhbGlkYXRpbmc6ICFpc0VtcHR5T2JqZWN0KF9mb3JtU3RhdGUudmFsaWRhdGluZ0ZpZWxkcyksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgX3NldEZpZWxkQXJyYXkgPSAobmFtZSwgdmFsdWVzID0gW10sIG1ldGhvZCwgYXJncywgc2hvdWxkU2V0VmFsdWVzID0gdHJ1ZSwgc2hvdWxkVXBkYXRlRmllbGRzQW5kU3RhdGUgPSB0cnVlKSA9PiB7XG4gICAgICAgIGlmIChhcmdzICYmIG1ldGhvZCAmJiAhX29wdGlvbnMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIF9zdGF0ZS5hY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUZpZWxkc0FuZFN0YXRlICYmIEFycmF5LmlzQXJyYXkoZ2V0KF9maWVsZHMsIG5hbWUpKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWVzID0gbWV0aG9kKGdldChfZmllbGRzLCBuYW1lKSwgYXJncy5hcmdBLCBhcmdzLmFyZ0IpO1xuICAgICAgICAgICAgICAgIHNob3VsZFNldFZhbHVlcyAmJiBzZXQoX2ZpZWxkcywgbmFtZSwgZmllbGRWYWx1ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUZpZWxkc0FuZFN0YXRlICYmXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShnZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsIG5hbWUpKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IG1ldGhvZChnZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsIG5hbWUpLCBhcmdzLmFyZ0EsIGFyZ3MuYXJnQik7XG4gICAgICAgICAgICAgICAgc2hvdWxkU2V0VmFsdWVzICYmIHNldChfZm9ybVN0YXRlLmVycm9ycywgbmFtZSwgZXJyb3JzKTtcbiAgICAgICAgICAgICAgICB1bnNldEVtcHR5QXJyYXkoX2Zvcm1TdGF0ZS5lcnJvcnMsIG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChfcHJveHlGb3JtU3RhdGUudG91Y2hlZEZpZWxkcyB8fFxuICAgICAgICAgICAgICAgIF9wcm94eVN1YnNjcmliZUZvcm1TdGF0ZS50b3VjaGVkRmllbGRzKSAmJlxuICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0ZUZpZWxkc0FuZFN0YXRlICYmXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShnZXQoX2Zvcm1TdGF0ZS50b3VjaGVkRmllbGRzLCBuYW1lKSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3VjaGVkRmllbGRzID0gbWV0aG9kKGdldChfZm9ybVN0YXRlLnRvdWNoZWRGaWVsZHMsIG5hbWUpLCBhcmdzLmFyZ0EsIGFyZ3MuYXJnQik7XG4gICAgICAgICAgICAgICAgc2hvdWxkU2V0VmFsdWVzICYmIHNldChfZm9ybVN0YXRlLnRvdWNoZWRGaWVsZHMsIG5hbWUsIHRvdWNoZWRGaWVsZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF9wcm94eUZvcm1TdGF0ZS5kaXJ0eUZpZWxkcyB8fCBfcHJveHlTdWJzY3JpYmVGb3JtU3RhdGUuZGlydHlGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICBfZm9ybVN0YXRlLmRpcnR5RmllbGRzID0gZ2V0RGlydHlGaWVsZHMoX2RlZmF1bHRWYWx1ZXMsIF9mb3JtVmFsdWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGlzRGlydHk6IF9nZXREaXJ0eShuYW1lLCB2YWx1ZXMpLFxuICAgICAgICAgICAgICAgIGRpcnR5RmllbGRzOiBfZm9ybVN0YXRlLmRpcnR5RmllbGRzLFxuICAgICAgICAgICAgICAgIGVycm9yczogX2Zvcm1TdGF0ZS5lcnJvcnMsXG4gICAgICAgICAgICAgICAgaXNWYWxpZDogX2Zvcm1TdGF0ZS5pc1ZhbGlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXQoX2Zvcm1WYWx1ZXMsIG5hbWUsIHZhbHVlcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHVwZGF0ZUVycm9ycyA9IChuYW1lLCBlcnJvcikgPT4ge1xuICAgICAgICBzZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsIG5hbWUsIGVycm9yKTtcbiAgICAgICAgX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgZXJyb3JzOiBfZm9ybVN0YXRlLmVycm9ycyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBfc2V0RXJyb3JzID0gKGVycm9ycykgPT4ge1xuICAgICAgICBfZm9ybVN0YXRlLmVycm9ycyA9IGVycm9ycztcbiAgICAgICAgX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgZXJyb3JzOiBfZm9ybVN0YXRlLmVycm9ycyxcbiAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IHVwZGF0ZVZhbGlkQW5kVmFsdWUgPSAobmFtZSwgc2hvdWxkU2tpcFNldFZhbHVlQXMsIHZhbHVlLCByZWYpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBnZXQoX2ZpZWxkcywgbmFtZSk7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZ2V0KF9mb3JtVmFsdWVzLCBuYW1lLCBpc1VuZGVmaW5lZCh2YWx1ZSkgPyBnZXQoX2RlZmF1bHRWYWx1ZXMsIG5hbWUpIDogdmFsdWUpO1xuICAgICAgICAgICAgaXNVbmRlZmluZWQoZGVmYXVsdFZhbHVlKSB8fFxuICAgICAgICAgICAgICAgIChyZWYgJiYgcmVmLmRlZmF1bHRDaGVja2VkKSB8fFxuICAgICAgICAgICAgICAgIHNob3VsZFNraXBTZXRWYWx1ZUFzXG4gICAgICAgICAgICAgICAgPyBzZXQoX2Zvcm1WYWx1ZXMsIG5hbWUsIHNob3VsZFNraXBTZXRWYWx1ZUFzID8gZGVmYXVsdFZhbHVlIDogZ2V0RmllbGRWYWx1ZShmaWVsZC5fZikpXG4gICAgICAgICAgICAgICAgOiBzZXRGaWVsZFZhbHVlKG5hbWUsIGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICBfc3RhdGUubW91bnQgJiYgIV9zdGF0ZS5hY3Rpb24gJiYgX3NldFZhbGlkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHVwZGF0ZVRvdWNoQW5kRGlydHkgPSAobmFtZSwgZmllbGRWYWx1ZSwgaXNCbHVyRXZlbnQsIHNob3VsZERpcnR5LCBzaG91bGRSZW5kZXIpID0+IHtcbiAgICAgICAgbGV0IHNob3VsZFVwZGF0ZUZpZWxkID0gZmFsc2U7XG4gICAgICAgIGxldCBpc1ByZXZpb3VzRGlydHkgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0ge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFfb3B0aW9ucy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKCFpc0JsdXJFdmVudCB8fCBzaG91bGREaXJ0eSkge1xuICAgICAgICAgICAgICAgIGlmIChfcHJveHlGb3JtU3RhdGUuaXNEaXJ0eSB8fCBfcHJveHlTdWJzY3JpYmVGb3JtU3RhdGUuaXNEaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBpc1ByZXZpb3VzRGlydHkgPSBfZm9ybVN0YXRlLmlzRGlydHk7XG4gICAgICAgICAgICAgICAgICAgIF9mb3JtU3RhdGUuaXNEaXJ0eSA9IG91dHB1dC5pc0RpcnR5ID0gX2dldERpcnR5KCk7XG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0ZUZpZWxkID0gaXNQcmV2aW91c0RpcnR5ICE9PSBvdXRwdXQuaXNEaXJ0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50RmllbGRQcmlzdGluZSA9IGRlZXBFcXVhbChnZXQoX2RlZmF1bHRWYWx1ZXMsIG5hbWUpLCBmaWVsZFZhbHVlKTtcbiAgICAgICAgICAgICAgICBpc1ByZXZpb3VzRGlydHkgPSAhIWdldChfZm9ybVN0YXRlLmRpcnR5RmllbGRzLCBuYW1lKTtcbiAgICAgICAgICAgICAgICBpc0N1cnJlbnRGaWVsZFByaXN0aW5lXG4gICAgICAgICAgICAgICAgICAgID8gdW5zZXQoX2Zvcm1TdGF0ZS5kaXJ0eUZpZWxkcywgbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgOiBzZXQoX2Zvcm1TdGF0ZS5kaXJ0eUZpZWxkcywgbmFtZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgb3V0cHV0LmRpcnR5RmllbGRzID0gX2Zvcm1TdGF0ZS5kaXJ0eUZpZWxkcztcbiAgICAgICAgICAgICAgICBzaG91bGRVcGRhdGVGaWVsZCA9XG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0ZUZpZWxkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoKF9wcm94eUZvcm1TdGF0ZS5kaXJ0eUZpZWxkcyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wcm94eVN1YnNjcmliZUZvcm1TdGF0ZS5kaXJ0eUZpZWxkcykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ByZXZpb3VzRGlydHkgIT09ICFpc0N1cnJlbnRGaWVsZFByaXN0aW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0JsdXJFdmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUHJldmlvdXNGaWVsZFRvdWNoZWQgPSBnZXQoX2Zvcm1TdGF0ZS50b3VjaGVkRmllbGRzLCBuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUHJldmlvdXNGaWVsZFRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0KF9mb3JtU3RhdGUudG91Y2hlZEZpZWxkcywgbmFtZSwgaXNCbHVyRXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQudG91Y2hlZEZpZWxkcyA9IF9mb3JtU3RhdGUudG91Y2hlZEZpZWxkcztcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkVXBkYXRlRmllbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkVXBkYXRlRmllbGQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9wcm94eUZvcm1TdGF0ZS50b3VjaGVkRmllbGRzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wcm94eVN1YnNjcmliZUZvcm1TdGF0ZS50b3VjaGVkRmllbGRzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ByZXZpb3VzRmllbGRUb3VjaGVkICE9PSBpc0JsdXJFdmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hvdWxkVXBkYXRlRmllbGQgJiYgc2hvdWxkUmVuZGVyICYmIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KG91dHB1dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNob3VsZFVwZGF0ZUZpZWxkID8gb3V0cHV0IDoge307XG4gICAgfTtcbiAgICBjb25zdCBzaG91bGRSZW5kZXJCeUVycm9yID0gKG5hbWUsIGlzVmFsaWQsIGVycm9yLCBmaWVsZFN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRmllbGRFcnJvciA9IGdldChfZm9ybVN0YXRlLmVycm9ycywgbmFtZSk7XG4gICAgICAgIGNvbnN0IHNob3VsZFVwZGF0ZVZhbGlkID0gKF9wcm94eUZvcm1TdGF0ZS5pc1ZhbGlkIHx8IF9wcm94eVN1YnNjcmliZUZvcm1TdGF0ZS5pc1ZhbGlkKSAmJlxuICAgICAgICAgICAgaXNCb29sZWFuKGlzVmFsaWQpICYmXG4gICAgICAgICAgICBfZm9ybVN0YXRlLmlzVmFsaWQgIT09IGlzVmFsaWQ7XG4gICAgICAgIGlmIChfb3B0aW9ucy5kZWxheUVycm9yICYmIGVycm9yKSB7XG4gICAgICAgICAgICBkZWxheUVycm9yQ2FsbGJhY2sgPSBkZWJvdW5jZSgoKSA9PiB1cGRhdGVFcnJvcnMobmFtZSwgZXJyb3IpKTtcbiAgICAgICAgICAgIGRlbGF5RXJyb3JDYWxsYmFjayhfb3B0aW9ucy5kZWxheUVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICBkZWxheUVycm9yQ2FsbGJhY2sgPSBudWxsO1xuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICA/IHNldChfZm9ybVN0YXRlLmVycm9ycywgbmFtZSwgZXJyb3IpXG4gICAgICAgICAgICAgICAgOiB1bnNldChfZm9ybVN0YXRlLmVycm9ycywgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChlcnJvciA/ICFkZWVwRXF1YWwocHJldmlvdXNGaWVsZEVycm9yLCBlcnJvcikgOiBwcmV2aW91c0ZpZWxkRXJyb3IpIHx8XG4gICAgICAgICAgICAhaXNFbXB0eU9iamVjdChmaWVsZFN0YXRlKSB8fFxuICAgICAgICAgICAgc2hvdWxkVXBkYXRlVmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGb3JtU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgLi4uZmllbGRTdGF0ZSxcbiAgICAgICAgICAgICAgICAuLi4oc2hvdWxkVXBkYXRlVmFsaWQgJiYgaXNCb29sZWFuKGlzVmFsaWQpID8geyBpc1ZhbGlkIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgZXJyb3JzOiBfZm9ybVN0YXRlLmVycm9ycyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIF9mb3JtU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgLi4uX2Zvcm1TdGF0ZSxcbiAgICAgICAgICAgICAgICAuLi51cGRhdGVkRm9ybVN0YXRlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHVwZGF0ZWRGb3JtU3RhdGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBfcnVuU2NoZW1hID0gYXN5bmMgKG5hbWUpID0+IHtcbiAgICAgICAgX3VwZGF0ZUlzVmFsaWRhdGluZyhuYW1lLCB0cnVlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgX29wdGlvbnMucmVzb2x2ZXIoX2Zvcm1WYWx1ZXMsIF9vcHRpb25zLmNvbnRleHQsIGdldFJlc29sdmVyT3B0aW9ucyhuYW1lIHx8IF9uYW1lcy5tb3VudCwgX2ZpZWxkcywgX29wdGlvbnMuY3JpdGVyaWFNb2RlLCBfb3B0aW9ucy5zaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uKSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBjb25zdCBleGVjdXRlU2NoZW1hQW5kVXBkYXRlU3RhdGUgPSBhc3luYyAobmFtZXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBlcnJvcnMgfSA9IGF3YWl0IF9ydW5TY2hlbWEobmFtZXMpO1xuICAgICAgICBfdXBkYXRlSXNWYWxpZGF0aW5nKG5hbWVzKTtcbiAgICAgICAgaWYgKG5hbWVzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGdldChlcnJvcnMsIG5hbWUpO1xuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgICAgID8gc2V0KF9mb3JtU3RhdGUuZXJyb3JzLCBuYW1lLCBlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgOiB1bnNldChfZm9ybVN0YXRlLmVycm9ycywgbmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfZm9ybVN0YXRlLmVycm9ycyA9IGVycm9ycztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH07XG4gICAgY29uc3QgZXhlY3V0ZUJ1aWx0SW5WYWxpZGF0aW9uID0gYXN5bmMgKGZpZWxkcywgc2hvdWxkT25seUNoZWNrVmFsaWQsIGNvbnRleHQgPSB7XG4gICAgICAgIHZhbGlkOiB0cnVlLFxuICAgIH0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIGZpZWxkcykge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHNbbmFtZV07XG4gICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IF9mLCAuLi5maWVsZFZhbHVlIH0gPSBmaWVsZDtcbiAgICAgICAgICAgICAgICBpZiAoX2YpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNGaWVsZEFycmF5Um9vdCA9IF9uYW1lcy5hcnJheS5oYXMoX2YubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzUHJvbWlzZUZ1bmN0aW9uID0gZmllbGQuX2YgJiYgaGFzUHJvbWlzZVZhbGlkYXRpb24oZmllbGQuX2YpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9taXNlRnVuY3Rpb24gJiYgX3Byb3h5Rm9ybVN0YXRlLnZhbGlkYXRpbmdGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF91cGRhdGVJc1ZhbGlkYXRpbmcoW19mLm5hbWVdLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZEVycm9yID0gYXdhaXQgdmFsaWRhdGVGaWVsZChmaWVsZCwgX25hbWVzLmRpc2FibGVkLCBfZm9ybVZhbHVlcywgc2hvdWxkRGlzcGxheUFsbEFzc29jaWF0ZWRFcnJvcnMsIF9vcHRpb25zLnNob3VsZFVzZU5hdGl2ZVZhbGlkYXRpb24gJiYgIXNob3VsZE9ubHlDaGVja1ZhbGlkLCBpc0ZpZWxkQXJyYXlSb290KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvbWlzZUZ1bmN0aW9uICYmIF9wcm94eUZvcm1TdGF0ZS52YWxpZGF0aW5nRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdXBkYXRlSXNWYWxpZGF0aW5nKFtfZi5uYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkRXJyb3JbX2YubmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQudmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRPbmx5Q2hlY2tWYWxpZCB8fCBwcm9wcy5zaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgIXNob3VsZE9ubHlDaGVja1ZhbGlkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoZ2V0KGZpZWxkRXJyb3IsIF9mLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpc0ZpZWxkQXJyYXlSb290XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdXBkYXRlRmllbGRBcnJheVJvb3RFcnJvcihfZm9ybVN0YXRlLmVycm9ycywgZmllbGRFcnJvciwgX2YubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsIF9mLm5hbWUsIGZpZWxkRXJyb3JbX2YubmFtZV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bnNldChfZm9ybVN0YXRlLmVycm9ycywgX2YubmFtZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAhaXNFbXB0eU9iamVjdChmaWVsZFZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAoYXdhaXQgZXhlY3V0ZUJ1aWx0SW5WYWxpZGF0aW9uKGZpZWxkVmFsdWUsIHNob3VsZE9ubHlDaGVja1ZhbGlkLCBjb250ZXh0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRleHQudmFsaWQ7XG4gICAgfTtcbiAgICBjb25zdCBfcmVtb3ZlVW5tb3VudGVkID0gKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgX25hbWVzLnVuTW91bnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0KF9maWVsZHMsIG5hbWUpO1xuICAgICAgICAgICAgZmllbGQgJiZcbiAgICAgICAgICAgICAgICAoZmllbGQuX2YucmVmc1xuICAgICAgICAgICAgICAgICAgICA/IGZpZWxkLl9mLnJlZnMuZXZlcnkoKHJlZikgPT4gIWxpdmUocmVmKSlcbiAgICAgICAgICAgICAgICAgICAgOiAhbGl2ZShmaWVsZC5fZi5yZWYpKSAmJlxuICAgICAgICAgICAgICAgIHVucmVnaXN0ZXIobmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgX25hbWVzLnVuTW91bnQgPSBuZXcgU2V0KCk7XG4gICAgfTtcbiAgICBjb25zdCBfZ2V0RGlydHkgPSAobmFtZSwgZGF0YSkgPT4gIV9vcHRpb25zLmRpc2FibGVkICYmXG4gICAgICAgIChuYW1lICYmIGRhdGEgJiYgc2V0KF9mb3JtVmFsdWVzLCBuYW1lLCBkYXRhKSxcbiAgICAgICAgICAgICFkZWVwRXF1YWwoZ2V0VmFsdWVzKCksIF9kZWZhdWx0VmFsdWVzKSk7XG4gICAgY29uc3QgX2dldFdhdGNoID0gKG5hbWVzLCBkZWZhdWx0VmFsdWUsIGlzR2xvYmFsKSA9PiBnZW5lcmF0ZVdhdGNoT3V0cHV0KG5hbWVzLCBfbmFtZXMsIHtcbiAgICAgICAgLi4uKF9zdGF0ZS5tb3VudFxuICAgICAgICAgICAgPyBfZm9ybVZhbHVlc1xuICAgICAgICAgICAgOiBpc1VuZGVmaW5lZChkZWZhdWx0VmFsdWUpXG4gICAgICAgICAgICAgICAgPyBfZGVmYXVsdFZhbHVlc1xuICAgICAgICAgICAgICAgIDogaXNTdHJpbmcobmFtZXMpXG4gICAgICAgICAgICAgICAgICAgID8geyBbbmFtZXNdOiBkZWZhdWx0VmFsdWUgfVxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRWYWx1ZSksXG4gICAgfSwgaXNHbG9iYWwsIGRlZmF1bHRWYWx1ZSk7XG4gICAgY29uc3QgX2dldEZpZWxkQXJyYXkgPSAobmFtZSkgPT4gY29tcGFjdChnZXQoX3N0YXRlLm1vdW50ID8gX2Zvcm1WYWx1ZXMgOiBfZGVmYXVsdFZhbHVlcywgbmFtZSwgX29wdGlvbnMuc2hvdWxkVW5yZWdpc3RlciA/IGdldChfZGVmYXVsdFZhbHVlcywgbmFtZSwgW10pIDogW10pKTtcbiAgICBjb25zdCBzZXRGaWVsZFZhbHVlID0gKG5hbWUsIHZhbHVlLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBnZXQoX2ZpZWxkcywgbmFtZSk7XG4gICAgICAgIGxldCBmaWVsZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRSZWZlcmVuY2UgPSBmaWVsZC5fZjtcbiAgICAgICAgICAgIGlmIChmaWVsZFJlZmVyZW5jZSkge1xuICAgICAgICAgICAgICAgICFmaWVsZFJlZmVyZW5jZS5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICBzZXQoX2Zvcm1WYWx1ZXMsIG5hbWUsIGdldEZpZWxkVmFsdWVBcyh2YWx1ZSwgZmllbGRSZWZlcmVuY2UpKTtcbiAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgaXNIVE1MRWxlbWVudChmaWVsZFJlZmVyZW5jZS5yZWYpICYmIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoaXNNdWx0aXBsZVNlbGVjdChmaWVsZFJlZmVyZW5jZS5yZWYpKSB7XG4gICAgICAgICAgICAgICAgICAgIFsuLi5maWVsZFJlZmVyZW5jZS5yZWYub3B0aW9uc10uZm9yRWFjaCgob3B0aW9uUmVmKSA9PiAob3B0aW9uUmVmLnNlbGVjdGVkID0gZmllbGRWYWx1ZS5pbmNsdWRlcyhvcHRpb25SZWYudmFsdWUpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZpZWxkUmVmZXJlbmNlLnJlZnMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2hlY2tCb3hJbnB1dChmaWVsZFJlZmVyZW5jZS5yZWYpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFJlZmVyZW5jZS5yZWZzLmZvckVhY2goKGNoZWNrYm94UmVmKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVja2JveFJlZi5kZWZhdWx0Q2hlY2tlZCB8fCAhY2hlY2tib3hSZWYuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94UmVmLmNoZWNrZWQgPSAhIWZpZWxkVmFsdWUuZmluZCgoZGF0YSkgPT4gZGF0YSA9PT0gY2hlY2tib3hSZWYudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3hSZWYuY2hlY2tlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9PT0gY2hlY2tib3hSZWYudmFsdWUgfHwgISFmaWVsZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFJlZmVyZW5jZS5yZWZzLmZvckVhY2goKHJhZGlvUmVmKSA9PiAocmFkaW9SZWYuY2hlY2tlZCA9IHJhZGlvUmVmLnZhbHVlID09PSBmaWVsZFZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNGaWxlSW5wdXQoZmllbGRSZWZlcmVuY2UucmVmKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFJlZmVyZW5jZS5yZWYudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkUmVmZXJlbmNlLnJlZi52YWx1ZSA9IGZpZWxkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmllbGRSZWZlcmVuY2UucmVmLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogY2xvbmVPYmplY3QoX2Zvcm1WYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKG9wdGlvbnMuc2hvdWxkRGlydHkgfHwgb3B0aW9ucy5zaG91bGRUb3VjaCkgJiZcbiAgICAgICAgICAgIHVwZGF0ZVRvdWNoQW5kRGlydHkobmFtZSwgZmllbGRWYWx1ZSwgb3B0aW9ucy5zaG91bGRUb3VjaCwgb3B0aW9ucy5zaG91bGREaXJ0eSwgdHJ1ZSk7XG4gICAgICAgIG9wdGlvbnMuc2hvdWxkVmFsaWRhdGUgJiYgdHJpZ2dlcihuYW1lKTtcbiAgICB9O1xuICAgIGNvbnN0IHNldFZhbHVlcyA9IChuYW1lLCB2YWx1ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkS2V5IGluIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlLmhhc093blByb3BlcnR5KGZpZWxkS2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB2YWx1ZVtmaWVsZEtleV07XG4gICAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBuYW1lICsgJy4nICsgZmllbGRLZXk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldChfZmllbGRzLCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgKF9uYW1lcy5hcnJheS5oYXMobmFtZSkgfHxcbiAgICAgICAgICAgICAgICBpc09iamVjdChmaWVsZFZhbHVlKSB8fFxuICAgICAgICAgICAgICAgIChmaWVsZCAmJiAhZmllbGQuX2YpKSAmJlxuICAgICAgICAgICAgICAgICFpc0RhdGVPYmplY3QoZmllbGRWYWx1ZSlcbiAgICAgICAgICAgICAgICA/IHNldFZhbHVlcyhmaWVsZE5hbWUsIGZpZWxkVmFsdWUsIG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgOiBzZXRGaWVsZFZhbHVlKGZpZWxkTmFtZSwgZmllbGRWYWx1ZSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHNldFZhbHVlID0gKG5hbWUsIHZhbHVlLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBnZXQoX2ZpZWxkcywgbmFtZSk7XG4gICAgICAgIGNvbnN0IGlzRmllbGRBcnJheSA9IF9uYW1lcy5hcnJheS5oYXMobmFtZSk7XG4gICAgICAgIGNvbnN0IGNsb25lVmFsdWUgPSBjbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICAgIHNldChfZm9ybVZhbHVlcywgbmFtZSwgY2xvbmVWYWx1ZSk7XG4gICAgICAgIGlmIChpc0ZpZWxkQXJyYXkpIHtcbiAgICAgICAgICAgIF9zdWJqZWN0cy5hcnJheS5uZXh0KHtcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlczogY2xvbmVPYmplY3QoX2Zvcm1WYWx1ZXMpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoKF9wcm94eUZvcm1TdGF0ZS5pc0RpcnR5IHx8XG4gICAgICAgICAgICAgICAgX3Byb3h5Rm9ybVN0YXRlLmRpcnR5RmllbGRzIHx8XG4gICAgICAgICAgICAgICAgX3Byb3h5U3Vic2NyaWJlRm9ybVN0YXRlLmlzRGlydHkgfHxcbiAgICAgICAgICAgICAgICBfcHJveHlTdWJzY3JpYmVGb3JtU3RhdGUuZGlydHlGaWVsZHMpICYmXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zaG91bGREaXJ0eSkge1xuICAgICAgICAgICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZGlydHlGaWVsZHM6IGdldERpcnR5RmllbGRzKF9kZWZhdWx0VmFsdWVzLCBfZm9ybVZhbHVlcyksXG4gICAgICAgICAgICAgICAgICAgIGlzRGlydHk6IF9nZXREaXJ0eShuYW1lLCBjbG9uZVZhbHVlKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkICYmICFmaWVsZC5fZiAmJiAhaXNOdWxsT3JVbmRlZmluZWQoY2xvbmVWYWx1ZSlcbiAgICAgICAgICAgICAgICA/IHNldFZhbHVlcyhuYW1lLCBjbG9uZVZhbHVlLCBvcHRpb25zKVxuICAgICAgICAgICAgICAgIDogc2V0RmllbGRWYWx1ZShuYW1lLCBjbG9uZVZhbHVlLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNXYXRjaGVkKG5hbWUsIF9uYW1lcykpIHtcbiAgICAgICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgICAgICAuLi5fZm9ybVN0YXRlLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBjbG9uZU9iamVjdChfZm9ybVZhbHVlcyksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgICAgICBuYW1lOiBfc3RhdGUubW91bnQgPyBuYW1lIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhbHVlczogY2xvbmVPYmplY3QoX2Zvcm1WYWx1ZXMpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uQ2hhbmdlID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAgIF9zdGF0ZS5tb3VudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgbGV0IG5hbWUgPSB0YXJnZXQubmFtZTtcbiAgICAgICAgbGV0IGlzRmllbGRWYWx1ZVVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBmaWVsZCA9IGdldChfZmllbGRzLCBuYW1lKTtcbiAgICAgICAgY29uc3QgX3VwZGF0ZUlzRmllbGRWYWx1ZVVwZGF0ZWQgPSAoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgaXNGaWVsZFZhbHVlVXBkYXRlZCA9XG4gICAgICAgICAgICAgICAgTnVtYmVyLmlzTmFOKGZpZWxkVmFsdWUpIHx8XG4gICAgICAgICAgICAgICAgICAgIChpc0RhdGVPYmplY3QoZmllbGRWYWx1ZSkgJiYgaXNOYU4oZmllbGRWYWx1ZS5nZXRUaW1lKCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICBkZWVwRXF1YWwoZmllbGRWYWx1ZSwgZ2V0KF9mb3JtVmFsdWVzLCBuYW1lLCBmaWVsZFZhbHVlKSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25Nb2RlQmVmb3JlU3VibWl0ID0gZ2V0VmFsaWRhdGlvbk1vZGVzKF9vcHRpb25zLm1vZGUpO1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uTW9kZUFmdGVyU3VibWl0ID0gZ2V0VmFsaWRhdGlvbk1vZGVzKF9vcHRpb25zLnJlVmFsaWRhdGVNb2RlKTtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICBsZXQgZXJyb3I7XG4gICAgICAgICAgICBsZXQgaXNWYWxpZDtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0YXJnZXQudHlwZVxuICAgICAgICAgICAgICAgID8gZ2V0RmllbGRWYWx1ZShmaWVsZC5fZilcbiAgICAgICAgICAgICAgICA6IGdldEV2ZW50VmFsdWUoZXZlbnQpO1xuICAgICAgICAgICAgY29uc3QgaXNCbHVyRXZlbnQgPSBldmVudC50eXBlID09PSBFVkVOVFMuQkxVUiB8fCBldmVudC50eXBlID09PSBFVkVOVFMuRk9DVVNfT1VUO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkU2tpcFZhbGlkYXRpb24gPSAoIWhhc1ZhbGlkYXRpb24oZmllbGQuX2YpICYmXG4gICAgICAgICAgICAgICAgIV9vcHRpb25zLnJlc29sdmVyICYmXG4gICAgICAgICAgICAgICAgIWdldChfZm9ybVN0YXRlLmVycm9ycywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgICAhZmllbGQuX2YuZGVwcykgfHxcbiAgICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbihpc0JsdXJFdmVudCwgZ2V0KF9mb3JtU3RhdGUudG91Y2hlZEZpZWxkcywgbmFtZSksIF9mb3JtU3RhdGUuaXNTdWJtaXR0ZWQsIHZhbGlkYXRpb25Nb2RlQWZ0ZXJTdWJtaXQsIHZhbGlkYXRpb25Nb2RlQmVmb3JlU3VibWl0KTtcbiAgICAgICAgICAgIGNvbnN0IHdhdGNoZWQgPSBpc1dhdGNoZWQobmFtZSwgX25hbWVzLCBpc0JsdXJFdmVudCk7XG4gICAgICAgICAgICBzZXQoX2Zvcm1WYWx1ZXMsIG5hbWUsIGZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgaWYgKGlzQmx1ckV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5fZi5vbkJsdXIgJiYgZmllbGQuX2Yub25CbHVyKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgZGVsYXlFcnJvckNhbGxiYWNrICYmIGRlbGF5RXJyb3JDYWxsYmFjaygwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChmaWVsZC5fZi5vbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIGZpZWxkLl9mLm9uQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZpZWxkU3RhdGUgPSB1cGRhdGVUb3VjaEFuZERpcnR5KG5hbWUsIGZpZWxkVmFsdWUsIGlzQmx1ckV2ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlbmRlciA9ICFpc0VtcHR5T2JqZWN0KGZpZWxkU3RhdGUpIHx8IHdhdGNoZWQ7XG4gICAgICAgICAgICAhaXNCbHVyRXZlbnQgJiZcbiAgICAgICAgICAgICAgICBfc3ViamVjdHMuc3RhdGUubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGV2ZW50LnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogY2xvbmVPYmplY3QoX2Zvcm1WYWx1ZXMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHNob3VsZFNraXBWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKF9wcm94eUZvcm1TdGF0ZS5pc1ZhbGlkIHx8IF9wcm94eVN1YnNjcmliZUZvcm1TdGF0ZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfb3B0aW9ucy5tb2RlID09PSAnb25CbHVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQmx1ckV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NldFZhbGlkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzQmx1ckV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfc2V0VmFsaWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKHNob3VsZFJlbmRlciAmJlxuICAgICAgICAgICAgICAgICAgICBfc3ViamVjdHMuc3RhdGUubmV4dCh7IG5hbWUsIC4uLih3YXRjaGVkID8ge30gOiBmaWVsZFN0YXRlKSB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAhaXNCbHVyRXZlbnQgJiYgd2F0Y2hlZCAmJiBfc3ViamVjdHMuc3RhdGUubmV4dCh7IC4uLl9mb3JtU3RhdGUgfSk7XG4gICAgICAgICAgICBpZiAoX29wdGlvbnMucmVzb2x2ZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycyB9ID0gYXdhaXQgX3J1blNjaGVtYShbbmFtZV0pO1xuICAgICAgICAgICAgICAgIF91cGRhdGVJc1ZhbGlkYXRpbmcoW25hbWVdKTtcbiAgICAgICAgICAgICAgICBfdXBkYXRlSXNGaWVsZFZhbHVlVXBkYXRlZChmaWVsZFZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNGaWVsZFZhbHVlVXBkYXRlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0Vycm9yTG9va3VwUmVzdWx0ID0gc2NoZW1hRXJyb3JMb29rdXAoX2Zvcm1TdGF0ZS5lcnJvcnMsIF9maWVsZHMsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvckxvb2t1cFJlc3VsdCA9IHNjaGVtYUVycm9yTG9va3VwKGVycm9ycywgX2ZpZWxkcywgcHJldmlvdXNFcnJvckxvb2t1cFJlc3VsdC5uYW1lIHx8IG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yTG9va3VwUmVzdWx0LmVycm9yO1xuICAgICAgICAgICAgICAgICAgICBuYW1lID0gZXJyb3JMb29rdXBSZXN1bHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IGlzRW1wdHlPYmplY3QoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBfdXBkYXRlSXNWYWxpZGF0aW5nKFtuYW1lXSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSAoYXdhaXQgdmFsaWRhdGVGaWVsZChmaWVsZCwgX25hbWVzLmRpc2FibGVkLCBfZm9ybVZhbHVlcywgc2hvdWxkRGlzcGxheUFsbEFzc29jaWF0ZWRFcnJvcnMsIF9vcHRpb25zLnNob3VsZFVzZU5hdGl2ZVZhbGlkYXRpb24pKVtuYW1lXTtcbiAgICAgICAgICAgICAgICBfdXBkYXRlSXNWYWxpZGF0aW5nKFtuYW1lXSk7XG4gICAgICAgICAgICAgICAgX3VwZGF0ZUlzRmllbGRWYWx1ZVVwZGF0ZWQoZmllbGRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmllbGRWYWx1ZVVwZGF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoX3Byb3h5Rm9ybVN0YXRlLmlzVmFsaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9wcm94eVN1YnNjcmliZUZvcm1TdGF0ZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gYXdhaXQgZXhlY3V0ZUJ1aWx0SW5WYWxpZGF0aW9uKF9maWVsZHMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRmllbGRWYWx1ZVVwZGF0ZWQpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5fZi5kZXBzICYmXG4gICAgICAgICAgICAgICAgICAgICghQXJyYXkuaXNBcnJheShmaWVsZC5fZi5kZXBzKSB8fCBmaWVsZC5fZi5kZXBzLmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZmllbGQuX2YuZGVwcyk7XG4gICAgICAgICAgICAgICAgc2hvdWxkUmVuZGVyQnlFcnJvcihuYW1lLCBpc1ZhbGlkLCBlcnJvciwgZmllbGRTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IF9mb2N1c0lucHV0ID0gKHJlZiwga2V5KSA9PiB7XG4gICAgICAgIGlmIChnZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsIGtleSkgJiYgcmVmLmZvY3VzKSB7XG4gICAgICAgICAgICByZWYuZm9jdXMoKTtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9O1xuICAgIGNvbnN0IHRyaWdnZXIgPSBhc3luYyAobmFtZSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGxldCBpc1ZhbGlkO1xuICAgICAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDtcbiAgICAgICAgY29uc3QgZmllbGROYW1lcyA9IGNvbnZlcnRUb0FycmF5UGF5bG9hZChuYW1lKTtcbiAgICAgICAgaWYgKF9vcHRpb25zLnJlc29sdmVyKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCBleGVjdXRlU2NoZW1hQW5kVXBkYXRlU3RhdGUoaXNVbmRlZmluZWQobmFtZSkgPyBuYW1lIDogZmllbGROYW1lcyk7XG4gICAgICAgICAgICBpc1ZhbGlkID0gaXNFbXB0eU9iamVjdChlcnJvcnMpO1xuICAgICAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IG5hbWVcbiAgICAgICAgICAgICAgICA/ICFmaWVsZE5hbWVzLnNvbWUoKG5hbWUpID0+IGdldChlcnJvcnMsIG5hbWUpKVxuICAgICAgICAgICAgICAgIDogaXNWYWxpZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuYW1lKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gKGF3YWl0IFByb21pc2UuYWxsKGZpZWxkTmFtZXMubWFwKGFzeW5jIChmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldChfZmllbGRzLCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBleGVjdXRlQnVpbHRJblZhbGlkYXRpb24oZmllbGQgJiYgZmllbGQuX2YgPyB7IFtmaWVsZE5hbWVdOiBmaWVsZCB9IDogZmllbGQpO1xuICAgICAgICAgICAgfSkpKS5ldmVyeShCb29sZWFuKTtcbiAgICAgICAgICAgICEoIXZhbGlkYXRpb25SZXN1bHQgJiYgIV9mb3JtU3RhdGUuaXNWYWxpZCkgJiYgX3NldFZhbGlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gaXNWYWxpZCA9IGF3YWl0IGV4ZWN1dGVCdWlsdEluVmFsaWRhdGlvbihfZmllbGRzKTtcbiAgICAgICAgfVxuICAgICAgICBfc3ViamVjdHMuc3RhdGUubmV4dCh7XG4gICAgICAgICAgICAuLi4oIWlzU3RyaW5nKG5hbWUpIHx8XG4gICAgICAgICAgICAgICAgKChfcHJveHlGb3JtU3RhdGUuaXNWYWxpZCB8fCBfcHJveHlTdWJzY3JpYmVGb3JtU3RhdGUuaXNWYWxpZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCAhPT0gX2Zvcm1TdGF0ZS5pc1ZhbGlkKVxuICAgICAgICAgICAgICAgID8ge31cbiAgICAgICAgICAgICAgICA6IHsgbmFtZSB9KSxcbiAgICAgICAgICAgIC4uLihfb3B0aW9ucy5yZXNvbHZlciB8fCAhbmFtZSA/IHsgaXNWYWxpZCB9IDoge30pLFxuICAgICAgICAgICAgZXJyb3JzOiBfZm9ybVN0YXRlLmVycm9ycyxcbiAgICAgICAgfSk7XG4gICAgICAgIG9wdGlvbnMuc2hvdWxkRm9jdXMgJiZcbiAgICAgICAgICAgICF2YWxpZGF0aW9uUmVzdWx0ICYmXG4gICAgICAgICAgICBpdGVyYXRlRmllbGRzQnlBY3Rpb24oX2ZpZWxkcywgX2ZvY3VzSW5wdXQsIG5hbWUgPyBmaWVsZE5hbWVzIDogX25hbWVzLm1vdW50KTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XG4gICAgfTtcbiAgICBjb25zdCBnZXRWYWx1ZXMgPSAoZmllbGROYW1lcywgY29uZmlnKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZXMgPSB7XG4gICAgICAgICAgICAuLi4oX3N0YXRlLm1vdW50ID8gX2Zvcm1WYWx1ZXMgOiBfZGVmYXVsdFZhbHVlcyksXG4gICAgICAgIH07XG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IGV4dHJhY3RGb3JtVmFsdWVzKGNvbmZpZy5kaXJ0eUZpZWxkcyA/IF9mb3JtU3RhdGUuZGlydHlGaWVsZHMgOiBfZm9ybVN0YXRlLnRvdWNoZWRGaWVsZHMsIHZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKGZpZWxkTmFtZXMpXG4gICAgICAgICAgICA/IHZhbHVlc1xuICAgICAgICAgICAgOiBpc1N0cmluZyhmaWVsZE5hbWVzKVxuICAgICAgICAgICAgICAgID8gZ2V0KHZhbHVlcywgZmllbGROYW1lcylcbiAgICAgICAgICAgICAgICA6IGZpZWxkTmFtZXMubWFwKChuYW1lKSA9PiBnZXQodmFsdWVzLCBuYW1lKSk7XG4gICAgfTtcbiAgICBjb25zdCBnZXRGaWVsZFN0YXRlID0gKG5hbWUsIGZvcm1TdGF0ZSkgPT4gKHtcbiAgICAgICAgaW52YWxpZDogISFnZXQoKGZvcm1TdGF0ZSB8fCBfZm9ybVN0YXRlKS5lcnJvcnMsIG5hbWUpLFxuICAgICAgICBpc0RpcnR5OiAhIWdldCgoZm9ybVN0YXRlIHx8IF9mb3JtU3RhdGUpLmRpcnR5RmllbGRzLCBuYW1lKSxcbiAgICAgICAgZXJyb3I6IGdldCgoZm9ybVN0YXRlIHx8IF9mb3JtU3RhdGUpLmVycm9ycywgbmFtZSksXG4gICAgICAgIGlzVmFsaWRhdGluZzogISFnZXQoX2Zvcm1TdGF0ZS52YWxpZGF0aW5nRmllbGRzLCBuYW1lKSxcbiAgICAgICAgaXNUb3VjaGVkOiAhIWdldCgoZm9ybVN0YXRlIHx8IF9mb3JtU3RhdGUpLnRvdWNoZWRGaWVsZHMsIG5hbWUpLFxuICAgIH0pO1xuICAgIGNvbnN0IGNsZWFyRXJyb3JzID0gKG5hbWUpID0+IHtcbiAgICAgICAgbmFtZSAmJlxuICAgICAgICAgICAgY29udmVydFRvQXJyYXlQYXlsb2FkKG5hbWUpLmZvckVhY2goKGlucHV0TmFtZSkgPT4gdW5zZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsIGlucHV0TmFtZSkpO1xuICAgICAgICBfc3ViamVjdHMuc3RhdGUubmV4dCh7XG4gICAgICAgICAgICBlcnJvcnM6IG5hbWUgPyBfZm9ybVN0YXRlLmVycm9ycyA6IHt9LFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IHNldEVycm9yID0gKG5hbWUsIGVycm9yLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlZiA9IChnZXQoX2ZpZWxkcywgbmFtZSwgeyBfZjoge30gfSkuX2YgfHwge30pLnJlZjtcbiAgICAgICAgY29uc3QgY3VycmVudEVycm9yID0gZ2V0KF9mb3JtU3RhdGUuZXJyb3JzLCBuYW1lKSB8fCB7fTtcbiAgICAgICAgLy8gRG9uJ3Qgb3ZlcnJpZGUgZXhpc3RpbmcgZXJyb3IgbWVzc2FnZXMgZWxzZXdoZXJlIGluIHRoZSBvYmplY3QgdHJlZS5cbiAgICAgICAgY29uc3QgeyByZWY6IGN1cnJlbnRSZWYsIG1lc3NhZ2UsIHR5cGUsIC4uLnJlc3RPZkVycm9yVHJlZSB9ID0gY3VycmVudEVycm9yO1xuICAgICAgICBzZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsIG5hbWUsIHtcbiAgICAgICAgICAgIC4uLnJlc3RPZkVycm9yVHJlZSxcbiAgICAgICAgICAgIC4uLmVycm9yLFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICB9KTtcbiAgICAgICAgX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGVycm9yczogX2Zvcm1TdGF0ZS5lcnJvcnMsXG4gICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5zaG91bGRGb2N1cyAmJiByZWYgJiYgcmVmLmZvY3VzICYmIHJlZi5mb2N1cygpO1xuICAgIH07XG4gICAgY29uc3Qgd2F0Y2ggPSAobmFtZSwgZGVmYXVsdFZhbHVlKSA9PiBpc0Z1bmN0aW9uKG5hbWUpXG4gICAgICAgID8gX3N1YmplY3RzLnN0YXRlLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAocGF5bG9hZCkgPT4gJ3ZhbHVlcycgaW4gcGF5bG9hZCAmJlxuICAgICAgICAgICAgICAgIG5hbWUoX2dldFdhdGNoKHVuZGVmaW5lZCwgZGVmYXVsdFZhbHVlKSwgcGF5bG9hZCksXG4gICAgICAgIH0pXG4gICAgICAgIDogX2dldFdhdGNoKG5hbWUsIGRlZmF1bHRWYWx1ZSwgdHJ1ZSk7XG4gICAgY29uc3QgX3N1YnNjcmliZSA9IChwcm9wcykgPT4gX3N1YmplY3RzLnN0YXRlLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChmb3JtU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmIChzaG91bGRTdWJzY3JpYmVCeU5hbWUocHJvcHMubmFtZSwgZm9ybVN0YXRlLm5hbWUsIHByb3BzLmV4YWN0KSAmJlxuICAgICAgICAgICAgICAgIHNob3VsZFJlbmRlckZvcm1TdGF0ZShmb3JtU3RhdGUsIHByb3BzLmZvcm1TdGF0ZSB8fCBfcHJveHlGb3JtU3RhdGUsIF9zZXRGb3JtU3RhdGUsIHByb3BzLnJlUmVuZGVyUm9vdCkpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5jYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogeyAuLi5fZm9ybVZhbHVlcyB9LFxuICAgICAgICAgICAgICAgICAgICAuLi5fZm9ybVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXM6IF9kZWZhdWx0VmFsdWVzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pLnVuc3Vic2NyaWJlO1xuICAgIGNvbnN0IHN1YnNjcmliZSA9IChwcm9wcykgPT4ge1xuICAgICAgICBfc3RhdGUubW91bnQgPSB0cnVlO1xuICAgICAgICBfcHJveHlTdWJzY3JpYmVGb3JtU3RhdGUgPSB7XG4gICAgICAgICAgICAuLi5fcHJveHlTdWJzY3JpYmVGb3JtU3RhdGUsXG4gICAgICAgICAgICAuLi5wcm9wcy5mb3JtU3RhdGUsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIC4uLnByb3BzLFxuICAgICAgICAgICAgZm9ybVN0YXRlOiB7XG4gICAgICAgICAgICAgICAgLi4uZGVmYXVsdFByb3h5Rm9ybVN0YXRlLFxuICAgICAgICAgICAgICAgIC4uLnByb3BzLmZvcm1TdGF0ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgY29uc3QgdW5yZWdpc3RlciA9IChuYW1lLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZE5hbWUgb2YgbmFtZSA/IGNvbnZlcnRUb0FycmF5UGF5bG9hZChuYW1lKSA6IF9uYW1lcy5tb3VudCkge1xuICAgICAgICAgICAgX25hbWVzLm1vdW50LmRlbGV0ZShmaWVsZE5hbWUpO1xuICAgICAgICAgICAgX25hbWVzLmFycmF5LmRlbGV0ZShmaWVsZE5hbWUpO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmtlZXBWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHVuc2V0KF9maWVsZHMsIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICAgICAgdW5zZXQoX2Zvcm1WYWx1ZXMsIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAhb3B0aW9ucy5rZWVwRXJyb3IgJiYgdW5zZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICAhb3B0aW9ucy5rZWVwRGlydHkgJiYgdW5zZXQoX2Zvcm1TdGF0ZS5kaXJ0eUZpZWxkcywgZmllbGROYW1lKTtcbiAgICAgICAgICAgICFvcHRpb25zLmtlZXBUb3VjaGVkICYmIHVuc2V0KF9mb3JtU3RhdGUudG91Y2hlZEZpZWxkcywgZmllbGROYW1lKTtcbiAgICAgICAgICAgICFvcHRpb25zLmtlZXBJc1ZhbGlkYXRpbmcgJiZcbiAgICAgICAgICAgICAgICB1bnNldChfZm9ybVN0YXRlLnZhbGlkYXRpbmdGaWVsZHMsIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICAhX29wdGlvbnMuc2hvdWxkVW5yZWdpc3RlciAmJlxuICAgICAgICAgICAgICAgICFvcHRpb25zLmtlZXBEZWZhdWx0VmFsdWUgJiZcbiAgICAgICAgICAgICAgICB1bnNldChfZGVmYXVsdFZhbHVlcywgZmllbGROYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBfc3ViamVjdHMuc3RhdGUubmV4dCh7XG4gICAgICAgICAgICB2YWx1ZXM6IGNsb25lT2JqZWN0KF9mb3JtVmFsdWVzKSxcbiAgICAgICAgfSk7XG4gICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgIC4uLl9mb3JtU3RhdGUsXG4gICAgICAgICAgICAuLi4oIW9wdGlvbnMua2VlcERpcnR5ID8ge30gOiB7IGlzRGlydHk6IF9nZXREaXJ0eSgpIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgIW9wdGlvbnMua2VlcElzVmFsaWQgJiYgX3NldFZhbGlkKCk7XG4gICAgfTtcbiAgICBjb25zdCBfc2V0RGlzYWJsZWRGaWVsZCA9ICh7IGRpc2FibGVkLCBuYW1lLCB9KSA9PiB7XG4gICAgICAgIGlmICgoaXNCb29sZWFuKGRpc2FibGVkKSAmJiBfc3RhdGUubW91bnQpIHx8XG4gICAgICAgICAgICAhIWRpc2FibGVkIHx8XG4gICAgICAgICAgICBfbmFtZXMuZGlzYWJsZWQuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCB3YXNEaXNhYmxlZCA9IF9uYW1lcy5kaXNhYmxlZC5oYXMobmFtZSk7XG4gICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gISFkaXNhYmxlZDtcbiAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkU3RhdGVDaGFuZ2VkID0gd2FzRGlzYWJsZWQgIT09IGlzRGlzYWJsZWQ7XG4gICAgICAgICAgICBkaXNhYmxlZCA/IF9uYW1lcy5kaXNhYmxlZC5hZGQobmFtZSkgOiBfbmFtZXMuZGlzYWJsZWQuZGVsZXRlKG5hbWUpO1xuICAgICAgICAgICAgZGlzYWJsZWRTdGF0ZUNoYW5nZWQgJiYgX3N0YXRlLm1vdW50ICYmICFfc3RhdGUuYWN0aW9uICYmIF9zZXRWYWxpZCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCByZWdpc3RlciA9IChuYW1lLCBvcHRpb25zID0ge30pID0+IHtcbiAgICAgICAgbGV0IGZpZWxkID0gZ2V0KF9maWVsZHMsIG5hbWUpO1xuICAgICAgICBjb25zdCBkaXNhYmxlZElzRGVmaW5lZCA9IGlzQm9vbGVhbihvcHRpb25zLmRpc2FibGVkKSB8fCBpc0Jvb2xlYW4oX29wdGlvbnMuZGlzYWJsZWQpO1xuICAgICAgICBzZXQoX2ZpZWxkcywgbmFtZSwge1xuICAgICAgICAgICAgLi4uKGZpZWxkIHx8IHt9KSxcbiAgICAgICAgICAgIF9mOiB7XG4gICAgICAgICAgICAgICAgLi4uKGZpZWxkICYmIGZpZWxkLl9mID8gZmllbGQuX2YgOiB7IHJlZjogeyBuYW1lIH0gfSksXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBtb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIF9uYW1lcy5tb3VudC5hZGQobmFtZSk7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgX3NldERpc2FibGVkRmllbGQoe1xuICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpc0Jvb2xlYW4ob3B0aW9ucy5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgPyBvcHRpb25zLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnMuZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdXBkYXRlVmFsaWRBbmRWYWx1ZShuYW1lLCB0cnVlLCBvcHRpb25zLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uKGRpc2FibGVkSXNEZWZpbmVkXG4gICAgICAgICAgICAgICAgPyB7IGRpc2FibGVkOiBvcHRpb25zLmRpc2FibGVkIHx8IF9vcHRpb25zLmRpc2FibGVkIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgIC4uLihfb3B0aW9ucy5wcm9ncmVzc2l2ZVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogISFvcHRpb25zLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICBtaW46IGdldFJ1bGVWYWx1ZShvcHRpb25zLm1pbiksXG4gICAgICAgICAgICAgICAgICAgIG1heDogZ2V0UnVsZVZhbHVlKG9wdGlvbnMubWF4KSxcbiAgICAgICAgICAgICAgICAgICAgbWluTGVuZ3RoOiBnZXRSdWxlVmFsdWUob3B0aW9ucy5taW5MZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGg6IGdldFJ1bGVWYWx1ZShvcHRpb25zLm1heExlbmd0aCksXG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IGdldFJ1bGVWYWx1ZShvcHRpb25zLnBhdHRlcm4pLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBvbkNoYW5nZSxcbiAgICAgICAgICAgIG9uQmx1cjogb25DaGFuZ2UsXG4gICAgICAgICAgICByZWY6IChyZWYpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyKG5hbWUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IGdldChfZmllbGRzLCBuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRSZWYgPSBpc1VuZGVmaW5lZChyZWYudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJlZi5xdWVyeVNlbGVjdG9yQWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZWYucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQsc2VsZWN0LHRleHRhcmVhJylbMF0gfHwgcmVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcmVmO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYWRpb09yQ2hlY2tib3ggPSBpc1JhZGlvT3JDaGVja2JveChmaWVsZFJlZik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZnMgPSBmaWVsZC5fZi5yZWZzIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmFkaW9PckNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJlZnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24gPT09IGZpZWxkUmVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBmaWVsZFJlZiA9PT0gZmllbGQuX2YucmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2V0KF9maWVsZHMsIG5hbWUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9mOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmllbGQuX2YsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHJhZGlvT3JDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZWZzLmZpbHRlcihsaXZlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShnZXQoX2RlZmF1bHRWYWx1ZXMsIG5hbWUpKSA/IFt7fV0gOiBbXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiB7IHR5cGU6IGZpZWxkUmVmLnR5cGUsIG5hbWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgcmVmOiBmaWVsZFJlZiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZEFuZFZhbHVlKG5hbWUsIGZhbHNlLCB1bmRlZmluZWQsIGZpZWxkUmVmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkID0gZ2V0KF9maWVsZHMsIG5hbWUsIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLl9mKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5fZi5tb3VudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIChfb3B0aW9ucy5zaG91bGRVbnJlZ2lzdGVyIHx8IG9wdGlvbnMuc2hvdWxkVW5yZWdpc3RlcikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEoaXNOYW1lSW5GaWVsZEFycmF5KF9uYW1lcy5hcnJheSwgbmFtZSkgJiYgX3N0YXRlLmFjdGlvbikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIF9uYW1lcy51bk1vdW50LmFkZChuYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH07XG4gICAgY29uc3QgX2ZvY3VzRXJyb3IgPSAoKSA9PiBfb3B0aW9ucy5zaG91bGRGb2N1c0Vycm9yICYmXG4gICAgICAgIGl0ZXJhdGVGaWVsZHNCeUFjdGlvbihfZmllbGRzLCBfZm9jdXNJbnB1dCwgX25hbWVzLm1vdW50KTtcbiAgICBjb25zdCBfZGlzYWJsZUZvcm0gPSAoZGlzYWJsZWQpID0+IHtcbiAgICAgICAgaWYgKGlzQm9vbGVhbihkaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHsgZGlzYWJsZWQgfSk7XG4gICAgICAgICAgICBpdGVyYXRlRmllbGRzQnlBY3Rpb24oX2ZpZWxkcywgKHJlZiwgbmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGdldChfZmllbGRzLCBuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5kaXNhYmxlZCA9IGN1cnJlbnRGaWVsZC5fZi5kaXNhYmxlZCB8fCBkaXNhYmxlZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudEZpZWxkLl9mLnJlZnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmllbGQuX2YucmVmcy5mb3JFYWNoKChpbnB1dFJlZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0UmVmLmRpc2FibGVkID0gY3VycmVudEZpZWxkLl9mLmRpc2FibGVkIHx8IGRpc2FibGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChvblZhbGlkLCBvbkludmFsaWQpID0+IGFzeW5jIChlKSA9PiB7XG4gICAgICAgIGxldCBvblZhbGlkRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0ICYmIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGUucGVyc2lzdCAmJlxuICAgICAgICAgICAgICAgIGUucGVyc2lzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaWVsZFZhbHVlcyA9IGNsb25lT2JqZWN0KF9mb3JtVmFsdWVzKTtcbiAgICAgICAgX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgaXNTdWJtaXR0aW5nOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKF9vcHRpb25zLnJlc29sdmVyKSB7XG4gICAgICAgICAgICBjb25zdCB7IGVycm9ycywgdmFsdWVzIH0gPSBhd2FpdCBfcnVuU2NoZW1hKCk7XG4gICAgICAgICAgICBfdXBkYXRlSXNWYWxpZGF0aW5nKCk7XG4gICAgICAgICAgICBfZm9ybVN0YXRlLmVycm9ycyA9IGVycm9ycztcbiAgICAgICAgICAgIGZpZWxkVmFsdWVzID0gY2xvbmVPYmplY3QodmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IGV4ZWN1dGVCdWlsdEluVmFsaWRhdGlvbihfZmllbGRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX25hbWVzLmRpc2FibGVkLnNpemUpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBfbmFtZXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB1bnNldChmaWVsZFZhbHVlcywgbmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdW5zZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsICdyb290Jyk7XG4gICAgICAgIGlmIChpc0VtcHR5T2JqZWN0KF9mb3JtU3RhdGUuZXJyb3JzKSkge1xuICAgICAgICAgICAgX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgICAgIGVycm9yczoge30sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgb25WYWxpZChmaWVsZFZhbHVlcywgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvblZhbGlkRXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvbkludmFsaWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBvbkludmFsaWQoeyAuLi5fZm9ybVN0YXRlLmVycm9ycyB9LCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9mb2N1c0Vycm9yKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KF9mb2N1c0Vycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBfc3ViamVjdHMuc3RhdGUubmV4dCh7XG4gICAgICAgICAgICBpc1N1Ym1pdHRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGlzU3VibWl0dGluZzogZmFsc2UsXG4gICAgICAgICAgICBpc1N1Ym1pdFN1Y2Nlc3NmdWw6IGlzRW1wdHlPYmplY3QoX2Zvcm1TdGF0ZS5lcnJvcnMpICYmICFvblZhbGlkRXJyb3IsXG4gICAgICAgICAgICBzdWJtaXRDb3VudDogX2Zvcm1TdGF0ZS5zdWJtaXRDb3VudCArIDEsXG4gICAgICAgICAgICBlcnJvcnM6IF9mb3JtU3RhdGUuZXJyb3JzLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9uVmFsaWRFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgb25WYWxpZEVycm9yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCByZXNldEZpZWxkID0gKG5hbWUsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgICBpZiAoZ2V0KF9maWVsZHMsIG5hbWUpKSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQob3B0aW9ucy5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUobmFtZSwgY2xvbmVPYmplY3QoZ2V0KF9kZWZhdWx0VmFsdWVzLCBuYW1lKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUobmFtZSwgb3B0aW9ucy5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgICAgIHNldChfZGVmYXVsdFZhbHVlcywgbmFtZSwgY2xvbmVPYmplY3Qob3B0aW9ucy5kZWZhdWx0VmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5rZWVwVG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIHVuc2V0KF9mb3JtU3RhdGUudG91Y2hlZEZpZWxkcywgbmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMua2VlcERpcnR5KSB7XG4gICAgICAgICAgICAgICAgdW5zZXQoX2Zvcm1TdGF0ZS5kaXJ0eUZpZWxkcywgbmFtZSk7XG4gICAgICAgICAgICAgICAgX2Zvcm1TdGF0ZS5pc0RpcnR5ID0gb3B0aW9ucy5kZWZhdWx0VmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPyBfZ2V0RGlydHkobmFtZSwgY2xvbmVPYmplY3QoZ2V0KF9kZWZhdWx0VmFsdWVzLCBuYW1lKSkpXG4gICAgICAgICAgICAgICAgICAgIDogX2dldERpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMua2VlcEVycm9yKSB7XG4gICAgICAgICAgICAgICAgdW5zZXQoX2Zvcm1TdGF0ZS5lcnJvcnMsIG5hbWUpO1xuICAgICAgICAgICAgICAgIF9wcm94eUZvcm1TdGF0ZS5pc1ZhbGlkICYmIF9zZXRWYWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3N1YmplY3RzLnN0YXRlLm5leHQoeyAuLi5fZm9ybVN0YXRlIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBfcmVzZXQgPSAoZm9ybVZhbHVlcywga2VlcFN0YXRlT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZXMgPSBmb3JtVmFsdWVzID8gY2xvbmVPYmplY3QoZm9ybVZhbHVlcykgOiBfZGVmYXVsdFZhbHVlcztcbiAgICAgICAgY29uc3QgY2xvbmVVcGRhdGVkVmFsdWVzID0gY2xvbmVPYmplY3QodXBkYXRlZFZhbHVlcyk7XG4gICAgICAgIGNvbnN0IGlzRW1wdHlSZXNldFZhbHVlcyA9IGlzRW1wdHlPYmplY3QoZm9ybVZhbHVlcyk7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGlzRW1wdHlSZXNldFZhbHVlcyA/IF9kZWZhdWx0VmFsdWVzIDogY2xvbmVVcGRhdGVkVmFsdWVzO1xuICAgICAgICBpZiAoIWtlZXBTdGF0ZU9wdGlvbnMua2VlcERlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgIF9kZWZhdWx0VmFsdWVzID0gdXBkYXRlZFZhbHVlcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtlZXBTdGF0ZU9wdGlvbnMua2VlcFZhbHVlcykge1xuICAgICAgICAgICAgaWYgKGtlZXBTdGF0ZU9wdGlvbnMua2VlcERpcnR5VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzVG9DaGVjayA9IG5ldyBTZXQoW1xuICAgICAgICAgICAgICAgICAgICAuLi5fbmFtZXMubW91bnQsXG4gICAgICAgICAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKGdldERpcnR5RmllbGRzKF9kZWZhdWx0VmFsdWVzLCBfZm9ybVZhbHVlcykpLFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGROYW1lIG9mIEFycmF5LmZyb20oZmllbGRzVG9DaGVjaykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNEaXJ0eSA9IGdldChfZm9ybVN0YXRlLmRpcnR5RmllbGRzLCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1ZhbHVlID0gZ2V0KF9mb3JtVmFsdWVzLCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGdldCh2YWx1ZXMsIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0RpcnR5ICYmICFpc1VuZGVmaW5lZChleGlzdGluZ1ZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KHZhbHVlcywgZmllbGROYW1lLCBleGlzdGluZ1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNEaXJ0eSAmJiAhaXNVbmRlZmluZWQobmV3VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShmaWVsZE5hbWUsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpc1dlYiAmJiBpc1VuZGVmaW5lZChmb3JtVmFsdWVzKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgX25hbWVzLm1vdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldChfZmllbGRzLCBuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZCAmJiBmaWVsZC5fZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkUmVmZXJlbmNlID0gQXJyYXkuaXNBcnJheShmaWVsZC5fZi5yZWZzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZpZWxkLl9mLnJlZnNbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaWVsZC5fZi5yZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSFRNTEVsZW1lbnQoZmllbGRSZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm0gPSBmaWVsZFJlZmVyZW5jZS5jbG9zZXN0KCdmb3JtJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoa2VlcFN0YXRlT3B0aW9ucy5rZWVwRmllbGRzUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGROYW1lIG9mIF9uYW1lcy5tb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZmllbGROYW1lLCBnZXQodmFsdWVzLCBmaWVsZE5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgX2ZpZWxkcyA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9mb3JtVmFsdWVzID0gX29wdGlvbnMuc2hvdWxkVW5yZWdpc3RlclxuICAgICAgICAgICAgICAgID8ga2VlcFN0YXRlT3B0aW9ucy5rZWVwRGVmYXVsdFZhbHVlc1xuICAgICAgICAgICAgICAgICAgICA/IGNsb25lT2JqZWN0KF9kZWZhdWx0VmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICA6IHt9XG4gICAgICAgICAgICAgICAgOiBjbG9uZU9iamVjdCh2YWx1ZXMpO1xuICAgICAgICAgICAgX3N1YmplY3RzLmFycmF5Lm5leHQoe1xuICAgICAgICAgICAgICAgIHZhbHVlczogeyAuLi52YWx1ZXMgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgICAgIHZhbHVlczogeyAuLi52YWx1ZXMgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIF9uYW1lcyA9IHtcbiAgICAgICAgICAgIG1vdW50OiBrZWVwU3RhdGVPcHRpb25zLmtlZXBEaXJ0eVZhbHVlcyA/IF9uYW1lcy5tb3VudCA6IG5ldyBTZXQoKSxcbiAgICAgICAgICAgIHVuTW91bnQ6IG5ldyBTZXQoKSxcbiAgICAgICAgICAgIGFycmF5OiBuZXcgU2V0KCksXG4gICAgICAgICAgICBkaXNhYmxlZDogbmV3IFNldCgpLFxuICAgICAgICAgICAgd2F0Y2g6IG5ldyBTZXQoKSxcbiAgICAgICAgICAgIHdhdGNoQWxsOiBmYWxzZSxcbiAgICAgICAgICAgIGZvY3VzOiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgX3N0YXRlLm1vdW50ID1cbiAgICAgICAgICAgICFfcHJveHlGb3JtU3RhdGUuaXNWYWxpZCB8fFxuICAgICAgICAgICAgICAgICEha2VlcFN0YXRlT3B0aW9ucy5rZWVwSXNWYWxpZCB8fFxuICAgICAgICAgICAgICAgICEha2VlcFN0YXRlT3B0aW9ucy5rZWVwRGlydHlWYWx1ZXMgfHxcbiAgICAgICAgICAgICAgICAoIV9vcHRpb25zLnNob3VsZFVucmVnaXN0ZXIgJiYgIWlzRW1wdHlPYmplY3QodmFsdWVzKSk7XG4gICAgICAgIF9zdGF0ZS53YXRjaCA9ICEhX29wdGlvbnMuc2hvdWxkVW5yZWdpc3RlcjtcbiAgICAgICAgX3N0YXRlLmtlZXBJc1ZhbGlkID0gISFrZWVwU3RhdGVPcHRpb25zLmtlZXBJc1ZhbGlkO1xuICAgICAgICBfc3RhdGUuYWN0aW9uID0gZmFsc2U7XG4gICAgICAgIC8vIENsZWFyIGVycm9ycyBzeW5jaHJvbm91c2x5IHRvIHByZXZlbnQgdmFsaWRhdGlvbiBlcnJvcnMgb24gc3Vic2VxdWVudCBzdWJtaXNzaW9uc1xuICAgICAgICAvLyBUaGlzIGZpeGVzIHRoZSBpc3N1ZSB3aGVyZSBmb3JtLnJlc2V0KCkgY2F1c2VzIHZhbGlkYXRpb24gZXJyb3JzIG9uIHN1YnNlcXVlbnRcbiAgICAgICAgLy8gc3VibWlzc2lvbnMgaW4gTmV4dC5qcyAxNiB3aXRoIFNlcnZlciBBY3Rpb25zXG4gICAgICAgIGlmICgha2VlcFN0YXRlT3B0aW9ucy5rZWVwRXJyb3JzKSB7XG4gICAgICAgICAgICBfZm9ybVN0YXRlLmVycm9ycyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgIHN1Ym1pdENvdW50OiBrZWVwU3RhdGVPcHRpb25zLmtlZXBTdWJtaXRDb3VudFxuICAgICAgICAgICAgICAgID8gX2Zvcm1TdGF0ZS5zdWJtaXRDb3VudFxuICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgIGlzRGlydHk6IGlzRW1wdHlSZXNldFZhbHVlc1xuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IGtlZXBTdGF0ZU9wdGlvbnMua2VlcERpcnR5XG4gICAgICAgICAgICAgICAgICAgID8gX2Zvcm1TdGF0ZS5pc0RpcnR5XG4gICAgICAgICAgICAgICAgICAgIDogISEoa2VlcFN0YXRlT3B0aW9ucy5rZWVwRGVmYXVsdFZhbHVlcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIWRlZXBFcXVhbChmb3JtVmFsdWVzLCBfZGVmYXVsdFZhbHVlcykpLFxuICAgICAgICAgICAgaXNTdWJtaXR0ZWQ6IGtlZXBTdGF0ZU9wdGlvbnMua2VlcElzU3VibWl0dGVkXG4gICAgICAgICAgICAgICAgPyBfZm9ybVN0YXRlLmlzU3VibWl0dGVkXG4gICAgICAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIGRpcnR5RmllbGRzOiBpc0VtcHR5UmVzZXRWYWx1ZXNcbiAgICAgICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICAgICAgOiBrZWVwU3RhdGVPcHRpb25zLmtlZXBEaXJ0eVZhbHVlc1xuICAgICAgICAgICAgICAgICAgICA/IGtlZXBTdGF0ZU9wdGlvbnMua2VlcERlZmF1bHRWYWx1ZXMgJiYgX2Zvcm1WYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0RGlydHlGaWVsZHMoX2RlZmF1bHRWYWx1ZXMsIF9mb3JtVmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfZm9ybVN0YXRlLmRpcnR5RmllbGRzXG4gICAgICAgICAgICAgICAgICAgIDoga2VlcFN0YXRlT3B0aW9ucy5rZWVwRGVmYXVsdFZhbHVlcyAmJiBmb3JtVmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGdldERpcnR5RmllbGRzKF9kZWZhdWx0VmFsdWVzLCBmb3JtVmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBrZWVwU3RhdGVPcHRpb25zLmtlZXBEaXJ0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2Zvcm1TdGF0ZS5kaXJ0eUZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30sXG4gICAgICAgICAgICB0b3VjaGVkRmllbGRzOiBrZWVwU3RhdGVPcHRpb25zLmtlZXBUb3VjaGVkXG4gICAgICAgICAgICAgICAgPyBfZm9ybVN0YXRlLnRvdWNoZWRGaWVsZHNcbiAgICAgICAgICAgICAgICA6IHt9LFxuICAgICAgICAgICAgZXJyb3JzOiBrZWVwU3RhdGVPcHRpb25zLmtlZXBFcnJvcnMgPyBfZm9ybVN0YXRlLmVycm9ycyA6IHt9LFxuICAgICAgICAgICAgaXNTdWJtaXRTdWNjZXNzZnVsOiBrZWVwU3RhdGVPcHRpb25zLmtlZXBJc1N1Ym1pdFN1Y2Nlc3NmdWxcbiAgICAgICAgICAgICAgICA/IF9mb3JtU3RhdGUuaXNTdWJtaXRTdWNjZXNzZnVsXG4gICAgICAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIGlzU3VibWl0dGluZzogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWVzOiBfZGVmYXVsdFZhbHVlcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCByZXNldCA9IChmb3JtVmFsdWVzLCBrZWVwU3RhdGVPcHRpb25zKSA9PiBfcmVzZXQoaXNGdW5jdGlvbihmb3JtVmFsdWVzKVxuICAgICAgICA/IGZvcm1WYWx1ZXMoX2Zvcm1WYWx1ZXMpXG4gICAgICAgIDogZm9ybVZhbHVlcywgeyAuLi5fb3B0aW9ucy5yZXNldE9wdGlvbnMsIC4uLmtlZXBTdGF0ZU9wdGlvbnMgfSk7XG4gICAgY29uc3Qgc2V0Rm9jdXMgPSAobmFtZSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0KF9maWVsZHMsIG5hbWUpO1xuICAgICAgICBjb25zdCBmaWVsZFJlZmVyZW5jZSA9IGZpZWxkICYmIGZpZWxkLl9mO1xuICAgICAgICBpZiAoZmllbGRSZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkUmVmID0gZmllbGRSZWZlcmVuY2UucmVmc1xuICAgICAgICAgICAgICAgID8gZmllbGRSZWZlcmVuY2UucmVmc1swXVxuICAgICAgICAgICAgICAgIDogZmllbGRSZWZlcmVuY2UucmVmO1xuICAgICAgICAgICAgaWYgKGZpZWxkUmVmLmZvY3VzKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gZW5zdXJlIGZvY3VzIGhhcHBlbnMgYWZ0ZXIgYW55IHBlbmRpbmcgc3RhdGUgdXBkYXRlc1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgZml4ZXMgdGhlIGlzc3VlIHdoZXJlIHNldEZvY3VzIGRvZXNuJ3Qgd29yayBpbW1lZGlhdGVseSBhZnRlciBzZXRFcnJvclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFJlZi5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNob3VsZFNlbGVjdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaXNGdW5jdGlvbihmaWVsZFJlZi5zZWxlY3QpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFJlZi5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgX3NldEZvcm1TdGF0ZSA9ICh1cGRhdGVkRm9ybVN0YXRlKSA9PiB7XG4gICAgICAgIF9mb3JtU3RhdGUgPSB7XG4gICAgICAgICAgICAuLi5fZm9ybVN0YXRlLFxuICAgICAgICAgICAgLi4udXBkYXRlZEZvcm1TdGF0ZSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IF9yZXNldERlZmF1bHRWYWx1ZXMgPSAoKSA9PiBpc0Z1bmN0aW9uKF9vcHRpb25zLmRlZmF1bHRWYWx1ZXMpICYmXG4gICAgICAgIF9vcHRpb25zLmRlZmF1bHRWYWx1ZXMoKS50aGVuKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgIHJlc2V0KHZhbHVlcywgX29wdGlvbnMucmVzZXRPcHRpb25zKTtcbiAgICAgICAgICAgIF9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZHMgPSB7XG4gICAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgICAgIHJlZ2lzdGVyLFxuICAgICAgICAgICAgdW5yZWdpc3RlcixcbiAgICAgICAgICAgIGdldEZpZWxkU3RhdGUsXG4gICAgICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgICAgICBzZXRFcnJvcixcbiAgICAgICAgICAgIF9zdWJzY3JpYmUsXG4gICAgICAgICAgICBfcnVuU2NoZW1hLFxuICAgICAgICAgICAgX3VwZGF0ZUlzVmFsaWRhdGluZyxcbiAgICAgICAgICAgIF9mb2N1c0Vycm9yLFxuICAgICAgICAgICAgX2dldFdhdGNoLFxuICAgICAgICAgICAgX2dldERpcnR5LFxuICAgICAgICAgICAgX3NldFZhbGlkLFxuICAgICAgICAgICAgX3NldEZpZWxkQXJyYXksXG4gICAgICAgICAgICBfc2V0RGlzYWJsZWRGaWVsZCxcbiAgICAgICAgICAgIF9zZXRFcnJvcnMsXG4gICAgICAgICAgICBfZ2V0RmllbGRBcnJheSxcbiAgICAgICAgICAgIF9yZXNldCxcbiAgICAgICAgICAgIF9yZXNldERlZmF1bHRWYWx1ZXMsXG4gICAgICAgICAgICBfcmVtb3ZlVW5tb3VudGVkLFxuICAgICAgICAgICAgX2Rpc2FibGVGb3JtLFxuICAgICAgICAgICAgX3N1YmplY3RzLFxuICAgICAgICAgICAgX3Byb3h5Rm9ybVN0YXRlLFxuICAgICAgICAgICAgZ2V0IF9maWVsZHMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9maWVsZHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IF9mb3JtVmFsdWVzKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfZm9ybVZhbHVlcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgX3N0YXRlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfc3RhdGU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IF9zdGF0ZSh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIF9zdGF0ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBfZGVmYXVsdFZhbHVlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2RlZmF1bHRWYWx1ZXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IF9uYW1lcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX25hbWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBfbmFtZXModmFsdWUpIHtcbiAgICAgICAgICAgICAgICBfbmFtZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgX2Zvcm1TdGF0ZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2Zvcm1TdGF0ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgX29wdGlvbnMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9vcHRpb25zO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBfb3B0aW9ucyh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIF9vcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5fb3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgcmVnaXN0ZXIsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgd2F0Y2gsXG4gICAgICAgIHNldFZhbHVlLFxuICAgICAgICBnZXRWYWx1ZXMsXG4gICAgICAgIHJlc2V0LFxuICAgICAgICByZXNldEZpZWxkLFxuICAgICAgICBjbGVhckVycm9ycyxcbiAgICAgICAgdW5yZWdpc3RlcixcbiAgICAgICAgc2V0RXJyb3IsXG4gICAgICAgIHNldEZvY3VzLFxuICAgICAgICBnZXRGaWVsZFN0YXRlLFxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubWV0aG9kcyxcbiAgICAgICAgZm9ybUNvbnRyb2w6IG1ldGhvZHMsXG4gICAgfTtcbn1cblxudmFyIGdlbmVyYXRlSWQgPSAoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBjcnlwdG8gIT09ICd1bmRlZmluZWQnICYmIGNyeXB0by5yYW5kb21VVUlEKSB7XG4gICAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgIH1cbiAgICBjb25zdCBkID0gdHlwZW9mIHBlcmZvcm1hbmNlID09PSAndW5kZWZpbmVkJyA/IERhdGUubm93KCkgOiBwZXJmb3JtYW5jZS5ub3coKSAqIDEwMDA7XG4gICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgKGMpID0+IHtcbiAgICAgICAgY29uc3QgciA9ICgoTWF0aC5yYW5kb20oKSAqIDE2ICsgZCkgJSAxNikgfCAwO1xuICAgICAgICByZXR1cm4gKGMgPT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4OCkudG9TdHJpbmcoMTYpO1xuICAgIH0pO1xufTtcblxudmFyIGdldEZvY3VzRmllbGROYW1lID0gKG5hbWUsIGluZGV4LCBvcHRpb25zID0ge30pID0+IG9wdGlvbnMuc2hvdWxkRm9jdXMgfHwgaXNVbmRlZmluZWQob3B0aW9ucy5zaG91bGRGb2N1cylcbiAgICA/IG9wdGlvbnMuZm9jdXNOYW1lIHx8XG4gICAgICAgIGAke25hbWV9LiR7aXNVbmRlZmluZWQob3B0aW9ucy5mb2N1c0luZGV4KSA/IGluZGV4IDogb3B0aW9ucy5mb2N1c0luZGV4fS5gXG4gICAgOiAnJztcblxudmFyIGFwcGVuZEF0ID0gKGRhdGEsIHZhbHVlKSA9PiBbXG4gICAgLi4uZGF0YSxcbiAgICAuLi5jb252ZXJ0VG9BcnJheVBheWxvYWQodmFsdWUpLFxuXTtcblxudmFyIGZpbGxFbXB0eUFycmF5ID0gKHZhbHVlKSA9PiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcCgoKSA9PiB1bmRlZmluZWQpIDogdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpbnNlcnQoZGF0YSwgaW5kZXgsIHZhbHVlKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZGF0YS5zbGljZSgwLCBpbmRleCksXG4gICAgICAgIC4uLmNvbnZlcnRUb0FycmF5UGF5bG9hZCh2YWx1ZSksXG4gICAgICAgIC4uLmRhdGEuc2xpY2UoaW5kZXgpLFxuICAgIF07XG59XG5cbnZhciBtb3ZlQXJyYXlBdCA9IChkYXRhLCBmcm9tLCB0bykgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmIChpc1VuZGVmaW5lZChkYXRhW3RvXSkpIHtcbiAgICAgICAgZGF0YVt0b10gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGRhdGEuc3BsaWNlKHRvLCAwLCBkYXRhLnNwbGljZShmcm9tLCAxKVswXSk7XG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG52YXIgcHJlcGVuZEF0ID0gKGRhdGEsIHZhbHVlKSA9PiBbXG4gICAgLi4uY29udmVydFRvQXJyYXlQYXlsb2FkKHZhbHVlKSxcbiAgICAuLi5jb252ZXJ0VG9BcnJheVBheWxvYWQoZGF0YSksXG5dO1xuXG5mdW5jdGlvbiByZW1vdmVBdEluZGV4ZXMoZGF0YSwgaW5kZXhlcykge1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCB0ZW1wID0gWy4uLmRhdGFdO1xuICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5kZXhlcykge1xuICAgICAgICB0ZW1wLnNwbGljZShpbmRleCAtIGksIDEpO1xuICAgICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBjb21wYWN0KHRlbXApLmxlbmd0aCA/IHRlbXAgOiBbXTtcbn1cbnZhciByZW1vdmVBcnJheUF0ID0gKGRhdGEsIGluZGV4KSA9PiBpc1VuZGVmaW5lZChpbmRleClcbiAgICA/IFtdXG4gICAgOiByZW1vdmVBdEluZGV4ZXMoZGF0YSwgY29udmVydFRvQXJyYXlQYXlsb2FkKGluZGV4KS5zb3J0KChhLCBiKSA9PiBhIC0gYikpO1xuXG52YXIgc3dhcEFycmF5QXQgPSAoZGF0YSwgaW5kZXhBLCBpbmRleEIpID0+IHtcbiAgICBbZGF0YVtpbmRleEFdLCBkYXRhW2luZGV4Ql1dID0gW2RhdGFbaW5kZXhCXSwgZGF0YVtpbmRleEFdXTtcbn07XG5cbnZhciB1cGRhdGVBdCA9IChmaWVsZFZhbHVlcywgaW5kZXgsIHZhbHVlKSA9PiB7XG4gICAgZmllbGRWYWx1ZXNbaW5kZXhdID0gdmFsdWU7XG4gICAgcmV0dXJuIGZpZWxkVmFsdWVzO1xufTtcblxuLyoqXG4gKiBBIGN1c3RvbSBob29rIHRoYXQgZXhwb3NlcyBjb252ZW5pZW50IG1ldGhvZHMgdG8gcGVyZm9ybSBvcGVyYXRpb25zIHdpdGggYSBsaXN0IG9mIGR5bmFtaWMgaW5wdXRzIHRoYXQgbmVlZCB0byBiZSBhcHBlbmRlZCwgdXBkYXRlZCwgcmVtb3ZlZCBldGMuIOKAoiBbRGVtb10oaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9zL3JlYWN0LWhvb2stZm9ybS11c2VmaWVsZGFycmF5LXNzdWduKSDigKIgW1ZpZGVvXShodHRwczovL3lvdXR1LmJlLzRNcmJmR1NGWTJBKVxuICpcbiAqIEByZW1hcmtzXG4gKiBbQVBJXShodHRwczovL3JlYWN0LWhvb2stZm9ybS5jb20vZG9jcy91c2VmaWVsZGFycmF5KSDigKIgW0RlbW9dKGh0dHBzOi8vY29kZXNhbmRib3guaW8vcy9yZWFjdC1ob29rLWZvcm0tdXNlZmllbGRhcnJheS1zc3VnbilcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSB1c2VGaWVsZEFycmF5IHByb3BzXG4gKlxuICogQHJldHVybnMgbWV0aG9kcyAtIGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIHdpdGggdGhlIEZpZWxkIEFycmF5cyAoZHluYW1pYyBpbnB1dHMpIHtAbGluayBVc2VGaWVsZEFycmF5UmV0dXJufVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIEFwcCgpIHtcbiAqICAgY29uc3QgeyByZWdpc3RlciwgY29udHJvbCwgaGFuZGxlU3VibWl0LCByZXNldCwgdHJpZ2dlciwgc2V0RXJyb3IgfSA9IHVzZUZvcm0oe1xuICogICAgIGRlZmF1bHRWYWx1ZXM6IHtcbiAqICAgICAgIHRlc3Q6IFtdXG4gKiAgICAgfVxuICogICB9KTtcbiAqICAgY29uc3QgeyBmaWVsZHMsIGFwcGVuZCB9ID0gdXNlRmllbGRBcnJheSh7XG4gKiAgICAgY29udHJvbCxcbiAqICAgICBuYW1lOiBcInRlc3RcIlxuICogICB9KTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdChkYXRhID0+IGNvbnNvbGUubG9nKGRhdGEpKX0+XG4gKiAgICAgICB7ZmllbGRzLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcbiAqICAgICAgICAgIDxpbnB1dCBrZXk9e2l0ZW0uaWR9IHsuLi5yZWdpc3RlcihgdGVzdC4ke2luZGV4fS5maXJzdE5hbWVgKX0gIC8+XG4gKiAgICAgICApKX1cbiAqICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IGFwcGVuZCh7IGZpcnN0TmFtZTogXCJiaWxsXCIgfSl9PlxuICogICAgICAgICBhcHBlbmRcbiAqICAgICAgIDwvYnV0dG9uPlxuICogICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiAvPlxuICogICAgIDwvZm9ybT5cbiAqICAgKTtcbiAqIH1cbiAqIGBgYFxuICovXG5mdW5jdGlvbiB1c2VGaWVsZEFycmF5KHByb3BzKSB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB1c2VGb3JtQ29udHJvbENvbnRleHQoKTtcbiAgICBjb25zdCB7IGNvbnRyb2wgPSBmb3JtQ29udHJvbCwgbmFtZSwga2V5TmFtZSA9ICdpZCcsIHNob3VsZFVucmVnaXN0ZXIsIHJ1bGVzLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2ZpZWxkcywgc2V0RmllbGRzXSA9IFJlYWN0LnVzZVN0YXRlKGNvbnRyb2wuX2dldEZpZWxkQXJyYXkobmFtZSkpO1xuICAgIGNvbnN0IGlkcyA9IFJlYWN0LnVzZVJlZihjb250cm9sLl9nZXRGaWVsZEFycmF5KG5hbWUpLm1hcChnZW5lcmF0ZUlkKSk7XG4gICAgY29uc3QgX2FjdGlvbmVkID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICBjb250cm9sLl9uYW1lcy5hcnJheS5hZGQobmFtZSk7XG4gICAgUmVhY3QudXNlTWVtbygoKSA9PiBydWxlcyAmJlxuICAgICAgICBmaWVsZHMubGVuZ3RoID49IDAgJiZcbiAgICAgICAgY29udHJvbC5yZWdpc3RlcihuYW1lLCBydWxlcyksIFtjb250cm9sLCBuYW1lLCBmaWVsZHMubGVuZ3RoLCBydWxlc10pO1xuICAgIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4gY29udHJvbC5fc3ViamVjdHMuYXJyYXkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHsgdmFsdWVzLCBuYW1lOiBmaWVsZEFycmF5TmFtZSwgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZpZWxkQXJyYXlOYW1lID09PSBuYW1lIHx8ICFmaWVsZEFycmF5TmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWVzID0gZ2V0KHZhbHVlcywgbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEZpZWxkcyhmaWVsZFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlkcy5jdXJyZW50ID0gZmllbGRWYWx1ZXMubWFwKGdlbmVyYXRlSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KS51bnN1YnNjcmliZSwgW2NvbnRyb2wsIG5hbWVdKTtcbiAgICBjb25zdCB1cGRhdGVWYWx1ZXMgPSBSZWFjdC51c2VDYWxsYmFjaygodXBkYXRlZEZpZWxkQXJyYXlWYWx1ZXMpID0+IHtcbiAgICAgICAgX2FjdGlvbmVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBjb250cm9sLl9zZXRGaWVsZEFycmF5KG5hbWUsIHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzKTtcbiAgICB9LCBbY29udHJvbCwgbmFtZV0pO1xuICAgIGNvbnN0IGFwcGVuZCA9ICh2YWx1ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCBhcHBlbmRWYWx1ZSA9IGNvbnZlcnRUb0FycmF5UGF5bG9hZChjbG9uZU9iamVjdCh2YWx1ZSkpO1xuICAgICAgICBjb25zdCB1cGRhdGVkRmllbGRBcnJheVZhbHVlcyA9IGFwcGVuZEF0KGNvbnRyb2wuX2dldEZpZWxkQXJyYXkobmFtZSksIGFwcGVuZFZhbHVlKTtcbiAgICAgICAgY29udHJvbC5fbmFtZXMuZm9jdXMgPSBnZXRGb2N1c0ZpZWxkTmFtZShuYW1lLCB1cGRhdGVkRmllbGRBcnJheVZhbHVlcy5sZW5ndGggLSAxLCBvcHRpb25zKTtcbiAgICAgICAgaWRzLmN1cnJlbnQgPSBhcHBlbmRBdChpZHMuY3VycmVudCwgYXBwZW5kVmFsdWUubWFwKGdlbmVyYXRlSWQpKTtcbiAgICAgICAgdXBkYXRlVmFsdWVzKHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzKTtcbiAgICAgICAgc2V0RmllbGRzKHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzKTtcbiAgICAgICAgY29udHJvbC5fc2V0RmllbGRBcnJheShuYW1lLCB1cGRhdGVkRmllbGRBcnJheVZhbHVlcywgYXBwZW5kQXQsIHtcbiAgICAgICAgICAgIGFyZ0E6IGZpbGxFbXB0eUFycmF5KHZhbHVlKSxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBwcmVwZW5kID0gKHZhbHVlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXBlbmRWYWx1ZSA9IGNvbnZlcnRUb0FycmF5UGF5bG9hZChjbG9uZU9iamVjdCh2YWx1ZSkpO1xuICAgICAgICBjb25zdCB1cGRhdGVkRmllbGRBcnJheVZhbHVlcyA9IHByZXBlbmRBdChjb250cm9sLl9nZXRGaWVsZEFycmF5KG5hbWUpLCBwcmVwZW5kVmFsdWUpO1xuICAgICAgICBjb250cm9sLl9uYW1lcy5mb2N1cyA9IGdldEZvY3VzRmllbGROYW1lKG5hbWUsIDAsIG9wdGlvbnMpO1xuICAgICAgICBpZHMuY3VycmVudCA9IHByZXBlbmRBdChpZHMuY3VycmVudCwgcHJlcGVuZFZhbHVlLm1hcChnZW5lcmF0ZUlkKSk7XG4gICAgICAgIHVwZGF0ZVZhbHVlcyh1cGRhdGVkRmllbGRBcnJheVZhbHVlcyk7XG4gICAgICAgIHNldEZpZWxkcyh1cGRhdGVkRmllbGRBcnJheVZhbHVlcyk7XG4gICAgICAgIGNvbnRyb2wuX3NldEZpZWxkQXJyYXkobmFtZSwgdXBkYXRlZEZpZWxkQXJyYXlWYWx1ZXMsIHByZXBlbmRBdCwge1xuICAgICAgICAgICAgYXJnQTogZmlsbEVtcHR5QXJyYXkodmFsdWUpLFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IHJlbW92ZSA9IChpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkRmllbGRBcnJheVZhbHVlcyA9IHJlbW92ZUFycmF5QXQoY29udHJvbC5fZ2V0RmllbGRBcnJheShuYW1lKSwgaW5kZXgpO1xuICAgICAgICBpZHMuY3VycmVudCA9IHJlbW92ZUFycmF5QXQoaWRzLmN1cnJlbnQsIGluZGV4KTtcbiAgICAgICAgdXBkYXRlVmFsdWVzKHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzKTtcbiAgICAgICAgc2V0RmllbGRzKHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzKTtcbiAgICAgICAgIUFycmF5LmlzQXJyYXkoZ2V0KGNvbnRyb2wuX2ZpZWxkcywgbmFtZSkpICYmXG4gICAgICAgICAgICBzZXQoY29udHJvbC5fZmllbGRzLCBuYW1lLCB1bmRlZmluZWQpO1xuICAgICAgICBjb250cm9sLl9zZXRGaWVsZEFycmF5KG5hbWUsIHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzLCByZW1vdmVBcnJheUF0LCB7XG4gICAgICAgICAgICBhcmdBOiBpbmRleCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBpbnNlcnQkMSA9IChpbmRleCwgdmFsdWUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgY29uc3QgaW5zZXJ0VmFsdWUgPSBjb252ZXJ0VG9BcnJheVBheWxvYWQoY2xvbmVPYmplY3QodmFsdWUpKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkQXJyYXlWYWx1ZXMgPSBpbnNlcnQoY29udHJvbC5fZ2V0RmllbGRBcnJheShuYW1lKSwgaW5kZXgsIGluc2VydFZhbHVlKTtcbiAgICAgICAgY29udHJvbC5fbmFtZXMuZm9jdXMgPSBnZXRGb2N1c0ZpZWxkTmFtZShuYW1lLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICAgIGlkcy5jdXJyZW50ID0gaW5zZXJ0KGlkcy5jdXJyZW50LCBpbmRleCwgaW5zZXJ0VmFsdWUubWFwKGdlbmVyYXRlSWQpKTtcbiAgICAgICAgdXBkYXRlVmFsdWVzKHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzKTtcbiAgICAgICAgc2V0RmllbGRzKHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzKTtcbiAgICAgICAgY29udHJvbC5fc2V0RmllbGRBcnJheShuYW1lLCB1cGRhdGVkRmllbGRBcnJheVZhbHVlcywgaW5zZXJ0LCB7XG4gICAgICAgICAgICBhcmdBOiBpbmRleCxcbiAgICAgICAgICAgIGFyZ0I6IGZpbGxFbXB0eUFycmF5KHZhbHVlKSxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBzd2FwID0gKGluZGV4QSwgaW5kZXhCKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzID0gY29udHJvbC5fZ2V0RmllbGRBcnJheShuYW1lKTtcbiAgICAgICAgc3dhcEFycmF5QXQodXBkYXRlZEZpZWxkQXJyYXlWYWx1ZXMsIGluZGV4QSwgaW5kZXhCKTtcbiAgICAgICAgc3dhcEFycmF5QXQoaWRzLmN1cnJlbnQsIGluZGV4QSwgaW5kZXhCKTtcbiAgICAgICAgdXBkYXRlVmFsdWVzKHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzKTtcbiAgICAgICAgc2V0RmllbGRzKHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzKTtcbiAgICAgICAgY29udHJvbC5fc2V0RmllbGRBcnJheShuYW1lLCB1cGRhdGVkRmllbGRBcnJheVZhbHVlcywgc3dhcEFycmF5QXQsIHtcbiAgICAgICAgICAgIGFyZ0E6IGluZGV4QSxcbiAgICAgICAgICAgIGFyZ0I6IGluZGV4QixcbiAgICAgICAgfSwgZmFsc2UpO1xuICAgIH07XG4gICAgY29uc3QgbW92ZSA9IChmcm9tLCB0bykgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkRmllbGRBcnJheVZhbHVlcyA9IGNvbnRyb2wuX2dldEZpZWxkQXJyYXkobmFtZSk7XG4gICAgICAgIG1vdmVBcnJheUF0KHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzLCBmcm9tLCB0byk7XG4gICAgICAgIG1vdmVBcnJheUF0KGlkcy5jdXJyZW50LCBmcm9tLCB0byk7XG4gICAgICAgIHVwZGF0ZVZhbHVlcyh1cGRhdGVkRmllbGRBcnJheVZhbHVlcyk7XG4gICAgICAgIHNldEZpZWxkcyh1cGRhdGVkRmllbGRBcnJheVZhbHVlcyk7XG4gICAgICAgIGNvbnRyb2wuX3NldEZpZWxkQXJyYXkobmFtZSwgdXBkYXRlZEZpZWxkQXJyYXlWYWx1ZXMsIG1vdmVBcnJheUF0LCB7XG4gICAgICAgICAgICBhcmdBOiBmcm9tLFxuICAgICAgICAgICAgYXJnQjogdG8sXG4gICAgICAgIH0sIGZhbHNlKTtcbiAgICB9O1xuICAgIGNvbnN0IHVwZGF0ZSA9IChpbmRleCwgdmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlVmFsdWUgPSBjbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZEFycmF5VmFsdWVzID0gdXBkYXRlQXQoY29udHJvbC5fZ2V0RmllbGRBcnJheShuYW1lKSwgaW5kZXgsIHVwZGF0ZVZhbHVlKTtcbiAgICAgICAgaWRzLmN1cnJlbnQgPSBbLi4udXBkYXRlZEZpZWxkQXJyYXlWYWx1ZXNdLm1hcCgoaXRlbSwgaSkgPT4gIWl0ZW0gfHwgaSA9PT0gaW5kZXggPyBnZW5lcmF0ZUlkKCkgOiBpZHMuY3VycmVudFtpXSk7XG4gICAgICAgIHVwZGF0ZVZhbHVlcyh1cGRhdGVkRmllbGRBcnJheVZhbHVlcyk7XG4gICAgICAgIHNldEZpZWxkcyhbLi4udXBkYXRlZEZpZWxkQXJyYXlWYWx1ZXNdKTtcbiAgICAgICAgY29udHJvbC5fc2V0RmllbGRBcnJheShuYW1lLCB1cGRhdGVkRmllbGRBcnJheVZhbHVlcywgdXBkYXRlQXQsIHtcbiAgICAgICAgICAgIGFyZ0E6IGluZGV4LFxuICAgICAgICAgICAgYXJnQjogdXBkYXRlVmFsdWUsXG4gICAgICAgIH0sIHRydWUsIGZhbHNlKTtcbiAgICB9O1xuICAgIGNvbnN0IHJlcGxhY2UgPSAodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkQXJyYXlWYWx1ZXMgPSBjb252ZXJ0VG9BcnJheVBheWxvYWQoY2xvbmVPYmplY3QodmFsdWUpKTtcbiAgICAgICAgaWRzLmN1cnJlbnQgPSB1cGRhdGVkRmllbGRBcnJheVZhbHVlcy5tYXAoZ2VuZXJhdGVJZCk7XG4gICAgICAgIHVwZGF0ZVZhbHVlcyhbLi4udXBkYXRlZEZpZWxkQXJyYXlWYWx1ZXNdKTtcbiAgICAgICAgc2V0RmllbGRzKFsuLi51cGRhdGVkRmllbGRBcnJheVZhbHVlc10pO1xuICAgICAgICBjb250cm9sLl9zZXRGaWVsZEFycmF5KG5hbWUsIFsuLi51cGRhdGVkRmllbGRBcnJheVZhbHVlc10sIChkYXRhKSA9PiBkYXRhLCB7fSwgdHJ1ZSwgZmFsc2UpO1xuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29udHJvbC5fc3RhdGUuYWN0aW9uID0gZmFsc2U7XG4gICAgICAgIGlzV2F0Y2hlZChuYW1lLCBjb250cm9sLl9uYW1lcykgJiZcbiAgICAgICAgICAgIGNvbnRyb2wuX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgICAgIC4uLmNvbnRyb2wuX2Zvcm1TdGF0ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBpZiAoX2FjdGlvbmVkLmN1cnJlbnQgJiZcbiAgICAgICAgICAgICghZ2V0VmFsaWRhdGlvbk1vZGVzKGNvbnRyb2wuX29wdGlvbnMubW9kZSkuaXNPblN1Ym1pdCB8fFxuICAgICAgICAgICAgICAgIGNvbnRyb2wuX2Zvcm1TdGF0ZS5pc1N1Ym1pdHRlZCkgJiZcbiAgICAgICAgICAgICFnZXRWYWxpZGF0aW9uTW9kZXMoY29udHJvbC5fb3B0aW9ucy5yZVZhbGlkYXRlTW9kZSkuaXNPblN1Ym1pdCkge1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wuX29wdGlvbnMucmVzb2x2ZXIpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLl9ydW5TY2hlbWEoW25hbWVdKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5fdXBkYXRlSXNWYWxpZGF0aW5nKFtuYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZ2V0KHJlc3VsdC5lcnJvcnMsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0Vycm9yID0gZ2V0KGNvbnRyb2wuX2Zvcm1TdGF0ZS5lcnJvcnMsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdFcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoIWVycm9yICYmIGV4aXN0aW5nRXJyb3IudHlwZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4aXN0aW5nRXJyb3IudHlwZSAhPT0gZXJyb3IudHlwZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdFcnJvci5tZXNzYWdlICE9PSBlcnJvci5tZXNzYWdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZXJyb3IgJiYgZXJyb3IudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNldChjb250cm9sLl9mb3JtU3RhdGUuZXJyb3JzLCBuYW1lLCBlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuc2V0KGNvbnRyb2wuX2Zvcm1TdGF0ZS5lcnJvcnMsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5fc3ViamVjdHMuc3RhdGUubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBjb250cm9sLl9mb3JtU3RhdGUuZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0KGNvbnRyb2wuX2ZpZWxkcywgbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkICYmXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLl9mICYmXG4gICAgICAgICAgICAgICAgICAgICEoZ2V0VmFsaWRhdGlvbk1vZGVzKGNvbnRyb2wuX29wdGlvbnMucmVWYWxpZGF0ZU1vZGUpLmlzT25TdWJtaXQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbGlkYXRpb25Nb2Rlcyhjb250cm9sLl9vcHRpb25zLm1vZGUpLmlzT25TdWJtaXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlRmllbGQoZmllbGQsIGNvbnRyb2wuX25hbWVzLmRpc2FibGVkLCBjb250cm9sLl9mb3JtVmFsdWVzLCBjb250cm9sLl9vcHRpb25zLmNyaXRlcmlhTW9kZSA9PT0gVkFMSURBVElPTl9NT0RFLmFsbCwgY29udHJvbC5fb3B0aW9ucy5zaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uLCB0cnVlKS50aGVuKChlcnJvcikgPT4gIWlzRW1wdHlPYmplY3QoZXJyb3IpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLl9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IHVwZGF0ZUZpZWxkQXJyYXlSb290RXJyb3IoY29udHJvbC5fZm9ybVN0YXRlLmVycm9ycywgZXJyb3IsIG5hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLl9zdWJqZWN0cy5zdGF0ZS5uZXh0KHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICB2YWx1ZXM6IGNsb25lT2JqZWN0KGNvbnRyb2wuX2Zvcm1WYWx1ZXMpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29udHJvbC5fbmFtZXMuZm9jdXMgJiZcbiAgICAgICAgICAgIGl0ZXJhdGVGaWVsZHNCeUFjdGlvbihjb250cm9sLl9maWVsZHMsIChyZWYsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sLl9uYW1lcy5mb2N1cyAmJlxuICAgICAgICAgICAgICAgICAgICBrZXkuc3RhcnRzV2l0aChjb250cm9sLl9uYW1lcy5mb2N1cykgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVmLmZvY3VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNvbnRyb2wuX25hbWVzLmZvY3VzID0gJyc7XG4gICAgICAgIGNvbnRyb2wuX3NldFZhbGlkKCk7XG4gICAgICAgIF9hY3Rpb25lZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSwgW2ZpZWxkcywgbmFtZSwgY29udHJvbF0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICFnZXQoY29udHJvbC5fZm9ybVZhbHVlcywgbmFtZSkgJiYgY29udHJvbC5fc2V0RmllbGRBcnJheShuYW1lKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZU1vdW50ZWQgPSAobmFtZSwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldChjb250cm9sLl9maWVsZHMsIG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCAmJiBmaWVsZC5fZikge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5fZi5tb3VudCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb250cm9sLl9vcHRpb25zLnNob3VsZFVucmVnaXN0ZXIgfHwgc2hvdWxkVW5yZWdpc3RlclxuICAgICAgICAgICAgICAgID8gY29udHJvbC51bnJlZ2lzdGVyKG5hbWUpXG4gICAgICAgICAgICAgICAgOiB1cGRhdGVNb3VudGVkKG5hbWUsIGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICB9LCBbbmFtZSwgY29udHJvbCwga2V5TmFtZSwgc2hvdWxkVW5yZWdpc3Rlcl0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHN3YXA6IFJlYWN0LnVzZUNhbGxiYWNrKHN3YXAsIFt1cGRhdGVWYWx1ZXMsIG5hbWUsIGNvbnRyb2xdKSxcbiAgICAgICAgbW92ZTogUmVhY3QudXNlQ2FsbGJhY2sobW92ZSwgW3VwZGF0ZVZhbHVlcywgbmFtZSwgY29udHJvbF0pLFxuICAgICAgICBwcmVwZW5kOiBSZWFjdC51c2VDYWxsYmFjayhwcmVwZW5kLCBbdXBkYXRlVmFsdWVzLCBuYW1lLCBjb250cm9sXSksXG4gICAgICAgIGFwcGVuZDogUmVhY3QudXNlQ2FsbGJhY2soYXBwZW5kLCBbdXBkYXRlVmFsdWVzLCBuYW1lLCBjb250cm9sXSksXG4gICAgICAgIHJlbW92ZTogUmVhY3QudXNlQ2FsbGJhY2socmVtb3ZlLCBbdXBkYXRlVmFsdWVzLCBuYW1lLCBjb250cm9sXSksXG4gICAgICAgIGluc2VydDogUmVhY3QudXNlQ2FsbGJhY2soaW5zZXJ0JDEsIFt1cGRhdGVWYWx1ZXMsIG5hbWUsIGNvbnRyb2xdKSxcbiAgICAgICAgdXBkYXRlOiBSZWFjdC51c2VDYWxsYmFjayh1cGRhdGUsIFt1cGRhdGVWYWx1ZXMsIG5hbWUsIGNvbnRyb2xdKSxcbiAgICAgICAgcmVwbGFjZTogUmVhY3QudXNlQ2FsbGJhY2socmVwbGFjZSwgW3VwZGF0ZVZhbHVlcywgbmFtZSwgY29udHJvbF0pLFxuICAgICAgICBmaWVsZHM6IFJlYWN0LnVzZU1lbW8oKCkgPT4gZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICBba2V5TmFtZV06IGlkcy5jdXJyZW50W2luZGV4XSB8fCBnZW5lcmF0ZUlkKCksXG4gICAgICAgIH0pKSwgW2ZpZWxkcywga2V5TmFtZV0pLFxuICAgIH07XG59XG5cbi8qKlxuICogQ3VzdG9tIGhvb2sgdG8gbWFuYWdlIHRoZSBlbnRpcmUgZm9ybS5cbiAqXG4gKiBAcmVtYXJrc1xuICogW0FQSV0oaHR0cHM6Ly9yZWFjdC1ob29rLWZvcm0uY29tL2RvY3MvdXNlZm9ybSkg4oCiIFtEZW1vXShodHRwczovL2NvZGVzYW5kYm94LmlvL3MvcmVhY3QtaG9vay1mb3JtLWdldC1zdGFydGVkLXRzLTVrc21tKSDigKIgW1ZpZGVvXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVJrWHY0QVhYQ180KVxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIGZvcm0gY29uZmlndXJhdGlvbiBhbmQgdmFsaWRhdGlvbiBwYXJhbWV0ZXJzLlxuICpcbiAqIEByZXR1cm5zIG1ldGhvZHMgLSBpbmRpdmlkdWFsIGZ1bmN0aW9ucyB0byBtYW5hZ2UgdGhlIGZvcm0gc3RhdGUuIHtAbGluayBVc2VGb3JtUmV0dXJufVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIEFwcCgpIHtcbiAqICAgY29uc3QgeyByZWdpc3RlciwgaGFuZGxlU3VibWl0LCB3YXRjaCwgZm9ybVN0YXRlOiB7IGVycm9ycyB9IH0gPSB1c2VGb3JtKCk7XG4gKiAgIGNvbnN0IG9uU3VibWl0ID0gZGF0YSA9PiBjb25zb2xlLmxvZyhkYXRhKTtcbiAqXG4gKiAgIGNvbnNvbGUubG9nKHdhdGNoKFwiZXhhbXBsZVwiKSk7XG4gKlxuICogICByZXR1cm4gKFxuICogICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXQob25TdWJtaXQpfT5cbiAqICAgICAgIDxpbnB1dCBkZWZhdWx0VmFsdWU9XCJ0ZXN0XCIgey4uLnJlZ2lzdGVyKFwiZXhhbXBsZVwiKX0gLz5cbiAqICAgICAgIDxpbnB1dCB7Li4ucmVnaXN0ZXIoXCJleGFtcGxlUmVxdWlyZWRcIiwgeyByZXF1aXJlZDogdHJ1ZSB9KX0gLz5cbiAqICAgICAgIHtlcnJvcnMuZXhhbXBsZVJlcXVpcmVkICYmIDxzcGFuPlRoaXMgZmllbGQgaXMgcmVxdWlyZWQ8L3NwYW4+fVxuICogICAgICAgPGJ1dHRvbj5TdWJtaXQ8L2J1dHRvbj5cbiAqICAgICA8L2Zvcm0+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gdXNlRm9ybShwcm9wcyA9IHt9KSB7XG4gICAgY29uc3QgX2Zvcm1Db250cm9sID0gUmVhY3QudXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgY29uc3QgX3ZhbHVlcyA9IFJlYWN0LnVzZVJlZih1bmRlZmluZWQpO1xuICAgIGNvbnN0IFtmb3JtU3RhdGUsIHVwZGF0ZUZvcm1TdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgICAgIGlzRGlydHk6IGZhbHNlLFxuICAgICAgICBpc1ZhbGlkYXRpbmc6IGZhbHNlLFxuICAgICAgICBpc0xvYWRpbmc6IGlzRnVuY3Rpb24ocHJvcHMuZGVmYXVsdFZhbHVlcyksXG4gICAgICAgIGlzU3VibWl0dGVkOiBmYWxzZSxcbiAgICAgICAgaXNTdWJtaXR0aW5nOiBmYWxzZSxcbiAgICAgICAgaXNTdWJtaXRTdWNjZXNzZnVsOiBmYWxzZSxcbiAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIHN1Ym1pdENvdW50OiAwLFxuICAgICAgICBkaXJ0eUZpZWxkczoge30sXG4gICAgICAgIHRvdWNoZWRGaWVsZHM6IHt9LFxuICAgICAgICB2YWxpZGF0aW5nRmllbGRzOiB7fSxcbiAgICAgICAgZXJyb3JzOiBwcm9wcy5lcnJvcnMgfHwge30sXG4gICAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCB8fCBmYWxzZSxcbiAgICAgICAgaXNSZWFkeTogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6IGlzRnVuY3Rpb24ocHJvcHMuZGVmYXVsdFZhbHVlcylcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHByb3BzLmRlZmF1bHRWYWx1ZXMsXG4gICAgfSk7XG4gICAgaWYgKCFfZm9ybUNvbnRyb2wuY3VycmVudCkge1xuICAgICAgICBpZiAocHJvcHMuZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIF9mb3JtQ29udHJvbC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzLmZvcm1Db250cm9sLFxuICAgICAgICAgICAgICAgIGZvcm1TdGF0ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiAhaXNGdW5jdGlvbihwcm9wcy5kZWZhdWx0VmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIHByb3BzLmZvcm1Db250cm9sLnJlc2V0KHByb3BzLmRlZmF1bHRWYWx1ZXMsIHByb3BzLnJlc2V0T3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IGZvcm1Db250cm9sLCAuLi5yZXN0IH0gPSBjcmVhdGVGb3JtQ29udHJvbChwcm9wcyk7XG4gICAgICAgICAgICBfZm9ybUNvbnRyb2wuY3VycmVudCA9IHtcbiAgICAgICAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICAgICAgICAgIGZvcm1TdGF0ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29udHJvbCA9IF9mb3JtQ29udHJvbC5jdXJyZW50LmNvbnRyb2w7XG4gICAgY29udHJvbC5fb3B0aW9ucyA9IHByb3BzO1xuICAgIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBzdWIgPSBjb250cm9sLl9zdWJzY3JpYmUoe1xuICAgICAgICAgICAgZm9ybVN0YXRlOiBjb250cm9sLl9wcm94eUZvcm1TdGF0ZSxcbiAgICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB1cGRhdGVGb3JtU3RhdGUoeyAuLi5jb250cm9sLl9mb3JtU3RhdGUgfSksXG4gICAgICAgICAgICByZVJlbmRlclJvb3Q6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB1cGRhdGVGb3JtU3RhdGUoKGRhdGEpID0+ICh7XG4gICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgaXNSZWFkeTogdHJ1ZSxcbiAgICAgICAgfSkpO1xuICAgICAgICBjb250cm9sLl9mb3JtU3RhdGUuaXNSZWFkeSA9IHRydWU7XG4gICAgICAgIHJldHVybiBzdWI7XG4gICAgfSwgW2NvbnRyb2xdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4gY29udHJvbC5fZGlzYWJsZUZvcm0ocHJvcHMuZGlzYWJsZWQpLCBbY29udHJvbCwgcHJvcHMuZGlzYWJsZWRdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMubW9kZSkge1xuICAgICAgICAgICAgY29udHJvbC5fb3B0aW9ucy5tb2RlID0gcHJvcHMubW9kZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHMucmVWYWxpZGF0ZU1vZGUpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuX29wdGlvbnMucmVWYWxpZGF0ZU1vZGUgPSBwcm9wcy5yZVZhbGlkYXRlTW9kZTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250cm9sLCBwcm9wcy5tb2RlLCBwcm9wcy5yZVZhbGlkYXRlTW9kZV0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5lcnJvcnMpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuX3NldEVycm9ycyhwcm9wcy5lcnJvcnMpO1xuICAgICAgICAgICAgY29udHJvbC5fZm9jdXNFcnJvcigpO1xuICAgICAgICB9XG4gICAgfSwgW2NvbnRyb2wsIHByb3BzLmVycm9yc10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLnNob3VsZFVucmVnaXN0ZXIgJiZcbiAgICAgICAgICAgIGNvbnRyb2wuX3N1YmplY3RzLnN0YXRlLm5leHQoe1xuICAgICAgICAgICAgICAgIHZhbHVlczogY29udHJvbC5fZ2V0V2F0Y2goKSxcbiAgICAgICAgICAgIH0pO1xuICAgIH0sIFtjb250cm9sLCBwcm9wcy5zaG91bGRVbnJlZ2lzdGVyXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRyb2wuX3Byb3h5Rm9ybVN0YXRlLmlzRGlydHkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzRGlydHkgPSBjb250cm9sLl9nZXREaXJ0eSgpO1xuICAgICAgICAgICAgaWYgKGlzRGlydHkgIT09IGZvcm1TdGF0ZS5pc0RpcnR5KSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5fc3ViamVjdHMuc3RhdGUubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIGlzRGlydHksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbY29udHJvbCwgZm9ybVN0YXRlLmlzRGlydHldKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgIWRlZXBFcXVhbChwcm9wcy52YWx1ZXMsIF92YWx1ZXMuY3VycmVudCkpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuX3Jlc2V0KHByb3BzLnZhbHVlcywge1xuICAgICAgICAgICAgICAgIGtlZXBGaWVsZHNSZWY6IHRydWUsXG4gICAgICAgICAgICAgICAgLi4uY29udHJvbC5fb3B0aW9ucy5yZXNldE9wdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghKChfYSA9IGNvbnRyb2wuX29wdGlvbnMucmVzZXRPcHRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eua2VlcElzVmFsaWQpKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5fc2V0VmFsaWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF92YWx1ZXMuY3VycmVudCA9IHByb3BzLnZhbHVlcztcbiAgICAgICAgICAgIHVwZGF0ZUZvcm1TdGF0ZSgoc3RhdGUpID0+ICh7IC4uLnN0YXRlIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRyb2wuX3Jlc2V0RGVmYXVsdFZhbHVlcygpO1xuICAgICAgICB9XG4gICAgfSwgW2NvbnRyb2wsIHByb3BzLnZhbHVlc10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghY29udHJvbC5fc3RhdGUubW91bnQpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuX3NldFZhbGlkKCk7XG4gICAgICAgICAgICBjb250cm9sLl9zdGF0ZS5tb3VudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2wuX3N0YXRlLndhdGNoKSB7XG4gICAgICAgICAgICBjb250cm9sLl9zdGF0ZS53YXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgY29udHJvbC5fc3ViamVjdHMuc3RhdGUubmV4dCh7IC4uLmNvbnRyb2wuX2Zvcm1TdGF0ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLl9yZW1vdmVVbm1vdW50ZWQoKTtcbiAgICB9KTtcbiAgICBfZm9ybUNvbnRyb2wuY3VycmVudC5mb3JtU3RhdGUgPSBSZWFjdC51c2VNZW1vKCgpID0+IGdldFByb3h5Rm9ybVN0YXRlKGZvcm1TdGF0ZSwgY29udHJvbCksIFtjb250cm9sLCBmb3JtU3RhdGVdKTtcbiAgICByZXR1cm4gX2Zvcm1Db250cm9sLmN1cnJlbnQ7XG59XG5cbi8qKlxuICogV2F0Y2ggY29tcG9uZW50IHRoYXQgc3Vic2NyaWJlcyB0byBmb3JtIGZpZWxkIGNoYW5nZXMgYW5kIHJlLXJlbmRlcnMgd2hlbiB3YXRjaGVkIGZpZWxkcyB1cGRhdGUuXG4gKlxuICogQHBhcmFtIGNvbnRyb2wgLSBUaGUgZm9ybSBjb250cm9sIG9iamVjdCBmcm9tIHVzZUZvcm1cbiAqIEBwYXJhbSBuYW1lIC0gQ2FuIGJlIGZpZWxkIG5hbWUsIGFycmF5IG9mIGZpZWxkIG5hbWVzLCBvciB1bmRlZmluZWQgdG8gd2F0Y2ggdGhlIGVudGlyZSBmb3JtXG4gKiBAcGFyYW0gZGlzYWJsZWQgLSBEaXNhYmxlIHN1YnNjcmlwdGlvblxuICogQHBhcmFtIGV4YWN0IC0gV2hldGhlciB0byB3YXRjaCBleGFjdCBmaWVsZCBuYW1lcyBvciBub3RcbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSBUaGUgZGVmYXVsdCB2YWx1ZSB0byB1c2UgaWYgdGhlIGZpZWxkIGlzIG5vdCB5ZXQgc2V0XG4gKiBAcGFyYW0gY29tcHV0ZSAtIEZ1bmN0aW9uIHRvIGNvbXB1dGUgZGVyaXZlZCB2YWx1ZXMgZnJvbSB3YXRjaGVkIGZpZWxkc1xuICogQHBhcmFtIHJlbmRlciAtIFRoZSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIHdhdGNoZWQgdmFsdWVzIGFuZCByZXR1cm5zIFJlYWN0Tm9kZVxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiBjYWxsaW5nIHJlbmRlciBmdW5jdGlvbiB3aXRoIHdhdGNoZWQgdmFsdWVzXG4gKlxuICogQGV4YW1wbGVcbiAqIFRoZSBgV2F0Y2hgIGNvbXBvbmVudCBvbmx5IHJlLXJlbmRlciB3aGVuIHRoZSB2YWx1ZXMgb2YgYGZvb2AsIGBiYXJgLCBhbmQgYGJhei5xdXhgIGNoYW5nZS5cbiAqIFRoZSB0eXBlcyBvZiBgZm9vYCwgYGJhcmAsIGFuZCBgYmF6LnF1eGAgYXJlIHByZWNpc2VseSBpbmZlcnJlZC5cbiAqXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgY29udHJvbCB9ID0gdXNlRm9ybSgpO1xuICpcbiAqIDxXYXRjaFxuICogICBjb250cm9sPXtjb250cm9sfVxuICogICBuYW1lcz17Wydmb28nLCAnYmFyJywgJ2Jhei5xdXgnXX1cbiAqICAgcmVuZGVyPXsoW2ZvbywgYmFyLCBiYXpfcXV4XSkgPT4gPGRpdj57Zm9vfXtiYXJ9e2Jhel9xdXh9PC9kaXY+fVxuICogLz5cbiAqIGBgYFxuICovXG5jb25zdCBXYXRjaCA9IChwcm9wcykgPT4gcHJvcHMucmVuZGVyKHVzZVdhdGNoKHsgbmFtZTogcHJvcHMubmFtZXMsIC4uLnByb3BzIH0pKTtcblxuZXhwb3J0IHsgQ29udHJvbGxlciwgRm9ybSwgRm9ybVByb3ZpZGVyLCBGb3JtU3RhdGVTdWJzY3JpYmUsIFdhdGNoLCBhcHBlbmRFcnJvcnMsIGNyZWF0ZUZvcm1Db250cm9sLCBnZXQsIHNldCwgdXNlQ29udHJvbGxlciwgdXNlRmllbGRBcnJheSwgdXNlRm9ybSwgdXNlRm9ybUNvbnRleHQsIHVzZUZvcm1TdGF0ZSwgdXNlV2F0Y2ggfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmVzbS5tanMubWFwXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-hook-form/dist/index.esm.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/rope-sequence/dist/index.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/rope-sequence/dist/index.js ***!
|
||
\**************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar GOOD_LEAF_SIZE = 200;\n\n// :: class<T> A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence<T>\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RopeSequence);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yb3BlLXNlcXVlbmNlL2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQ0FBbUMsZ0NBQWdDO0FBQ25FO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkIsVUFBVSxvQkFBb0IsVUFBVTs7QUFFckU7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLFFBQVE7QUFDL0IsUUFBUSw4Q0FBOEM7QUFDdEQ7O0FBRUE7QUFDQSwyQkFBMkIsU0FBUztBQUNwQyxRQUFRLDhDQUE4QztBQUN0RDs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUEsZ0RBQWdEOztBQUVoRCwrQ0FBK0M7O0FBRS9DOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUTtBQUNSOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQSx5QkFBeUI7QUFDekIsMkJBQTJCO0FBQzNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxyb3BlLXNlcXVlbmNlXFxkaXN0XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgR09PRF9MRUFGX1NJWkUgPSAyMDA7XG5cbi8vIDo6IGNsYXNzPFQ+IEEgcm9wZSBzZXF1ZW5jZSBpcyBhIHBlcnNpc3RlbnQgc2VxdWVuY2UgZGF0YSBzdHJ1Y3R1cmVcbi8vIHRoYXQgc3VwcG9ydHMgYXBwZW5kaW5nLCBwcmVwZW5kaW5nLCBhbmQgc2xpY2luZyB3aXRob3V0IGRvaW5nIGFcbi8vIGZ1bGwgY29weS4gSXQgaXMgcmVwcmVzZW50ZWQgYXMgYSBtb3N0bHktYmFsYW5jZWQgdHJlZS5cbnZhciBSb3BlU2VxdWVuY2UgPSBmdW5jdGlvbiBSb3BlU2VxdWVuY2UgKCkge307XG5cblJvcGVTZXF1ZW5jZS5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gYXBwZW5kIChvdGhlcikge1xuICBpZiAoIW90aGVyLmxlbmd0aCkgeyByZXR1cm4gdGhpcyB9XG4gIG90aGVyID0gUm9wZVNlcXVlbmNlLmZyb20ob3RoZXIpO1xuXG4gIHJldHVybiAoIXRoaXMubGVuZ3RoICYmIG90aGVyKSB8fFxuICAgIChvdGhlci5sZW5ndGggPCBHT09EX0xFQUZfU0laRSAmJiB0aGlzLmxlYWZBcHBlbmQob3RoZXIpKSB8fFxuICAgICh0aGlzLmxlbmd0aCA8IEdPT0RfTEVBRl9TSVpFICYmIG90aGVyLmxlYWZQcmVwZW5kKHRoaXMpKSB8fFxuICAgIHRoaXMuYXBwZW5kSW5uZXIob3RoZXIpXG59O1xuXG4vLyA6OiAodW5pb248W1RdLCBSb3BlU2VxdWVuY2U8VD4+KSDihpIgUm9wZVNlcXVlbmNlPFQ+XG4vLyBQcmVwZW5kIGFuIGFycmF5IG9yIG90aGVyIHJvcGUgdG8gdGhpcyBvbmUsIHJldHVybmluZyBhIG5ldyByb3BlLlxuUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gcHJlcGVuZCAob3RoZXIpIHtcbiAgaWYgKCFvdGhlci5sZW5ndGgpIHsgcmV0dXJuIHRoaXMgfVxuICByZXR1cm4gUm9wZVNlcXVlbmNlLmZyb20ob3RoZXIpLmFwcGVuZCh0aGlzKVxufTtcblxuUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5hcHBlbmRJbm5lciA9IGZ1bmN0aW9uIGFwcGVuZElubmVyIChvdGhlcikge1xuICByZXR1cm4gbmV3IEFwcGVuZCh0aGlzLCBvdGhlcilcbn07XG5cbi8vIDo6ICg/bnVtYmVyLCA/bnVtYmVyKSDihpIgUm9wZVNlcXVlbmNlPFQ+XG4vLyBDcmVhdGUgYSByb3BlIHJlcGVzZW50aW5nIGEgc3ViLXNlcXVlbmNlIG9mIHRoaXMgcm9wZS5cblJvcGVTZXF1ZW5jZS5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiBzbGljZSAoZnJvbSwgdG8pIHtcbiAgICBpZiAoIGZyb20gPT09IHZvaWQgMCApIGZyb20gPSAwO1xuICAgIGlmICggdG8gPT09IHZvaWQgMCApIHRvID0gdGhpcy5sZW5ndGg7XG5cbiAgaWYgKGZyb20gPj0gdG8pIHsgcmV0dXJuIFJvcGVTZXF1ZW5jZS5lbXB0eSB9XG4gIHJldHVybiB0aGlzLnNsaWNlSW5uZXIoTWF0aC5tYXgoMCwgZnJvbSksIE1hdGgubWluKHRoaXMubGVuZ3RoLCB0bykpXG59O1xuXG4vLyA6OiAobnVtYmVyKSDihpIgVFxuLy8gUmV0cmlldmUgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGZyb20gdGhpcyByb3BlLlxuUm9wZVNlcXVlbmNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQgKGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gdGhpcy5sZW5ndGgpIHsgcmV0dXJuIHVuZGVmaW5lZCB9XG4gIHJldHVybiB0aGlzLmdldElubmVyKGkpXG59O1xuXG4vLyA6OiAoKGVsZW1lbnQ6IFQsIGluZGV4OiBudW1iZXIpIOKGkiA/Ym9vbCwgP251bWJlciwgP251bWJlcilcbi8vIENhbGwgdGhlIGdpdmVuIGZ1bmN0aW9uIGZvciBlYWNoIGVsZW1lbnQgYmV0d2VlbiB0aGUgZ2l2ZW5cbi8vIGluZGljZXMuIFRoaXMgdGVuZHMgdG8gYmUgbW9yZSBlZmZpY2llbnQgdGhhbiBsb29waW5nIG92ZXIgdGhlXG4vLyBpbmRpY2VzIGFuZCBjYWxsaW5nIGBnZXRgLCBiZWNhdXNlIGl0IGRvZXNuJ3QgaGF2ZSB0byBkZXNjZW5kIHRoZVxuLy8gdHJlZSBmb3IgZXZlcnkgZWxlbWVudC5cblJvcGVTZXF1ZW5jZS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIGZvckVhY2ggKGYsIGZyb20sIHRvKSB7XG4gICAgaWYgKCBmcm9tID09PSB2b2lkIDAgKSBmcm9tID0gMDtcbiAgICBpZiAoIHRvID09PSB2b2lkIDAgKSB0byA9IHRoaXMubGVuZ3RoO1xuXG4gIGlmIChmcm9tIDw9IHRvKVxuICAgIHsgdGhpcy5mb3JFYWNoSW5uZXIoZiwgZnJvbSwgdG8sIDApOyB9XG4gIGVsc2VcbiAgICB7IHRoaXMuZm9yRWFjaEludmVydGVkSW5uZXIoZiwgZnJvbSwgdG8sIDApOyB9XG59O1xuXG4vLyA6OiAoKGVsZW1lbnQ6IFQsIGluZGV4OiBudW1iZXIpIOKGkiBVLCA/bnVtYmVyLCA/bnVtYmVyKSDihpIgW1VdXG4vLyBNYXAgdGhlIGdpdmVuIGZ1bmN0aW9ucyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgcm9wZSwgcHJvZHVjaW5nXG4vLyBhIGZsYXQgYXJyYXkuXG5Sb3BlU2VxdWVuY2UucHJvdG90eXBlLm1hcCA9IGZ1bmN0aW9uIG1hcCAoZiwgZnJvbSwgdG8pIHtcbiAgICBpZiAoIGZyb20gPT09IHZvaWQgMCApIGZyb20gPSAwO1xuICAgIGlmICggdG8gPT09IHZvaWQgMCApIHRvID0gdGhpcy5sZW5ndGg7XG5cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB0aGlzLmZvckVhY2goZnVuY3Rpb24gKGVsdCwgaSkgeyByZXR1cm4gcmVzdWx0LnB1c2goZihlbHQsIGkpKTsgfSwgZnJvbSwgdG8pO1xuICByZXR1cm4gcmVzdWx0XG59O1xuXG4vLyA6OiAoP3VuaW9uPFtUXSwgUm9wZVNlcXVlbmNlPFQ+Pikg4oaSIFJvcGVTZXF1ZW5jZTxUPlxuLy8gQ3JlYXRlIGEgcm9wZSByZXByZXNlbnRpbmcgdGhlIGdpdmVuIGFycmF5LCBvciByZXR1cm4gdGhlIHJvcGVcbi8vIGl0c2VsZiBpZiBhIHJvcGUgd2FzIGdpdmVuLlxuUm9wZVNlcXVlbmNlLmZyb20gPSBmdW5jdGlvbiBmcm9tICh2YWx1ZXMpIHtcbiAgaWYgKHZhbHVlcyBpbnN0YW5jZW9mIFJvcGVTZXF1ZW5jZSkgeyByZXR1cm4gdmFsdWVzIH1cbiAgcmV0dXJuIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoID8gbmV3IExlYWYodmFsdWVzKSA6IFJvcGVTZXF1ZW5jZS5lbXB0eVxufTtcblxudmFyIExlYWYgPSAvKkBfX1BVUkVfXyovKGZ1bmN0aW9uIChSb3BlU2VxdWVuY2UpIHtcbiAgZnVuY3Rpb24gTGVhZih2YWx1ZXMpIHtcbiAgICBSb3BlU2VxdWVuY2UuY2FsbCh0aGlzKTtcbiAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgfVxuXG4gIGlmICggUm9wZVNlcXVlbmNlICkgTGVhZi5fX3Byb3RvX18gPSBSb3BlU2VxdWVuY2U7XG4gIExlYWYucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggUm9wZVNlcXVlbmNlICYmIFJvcGVTZXF1ZW5jZS5wcm90b3R5cGUgKTtcbiAgTGVhZi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMZWFmO1xuXG4gIHZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IGxlbmd0aDogeyBjb25maWd1cmFibGU6IHRydWUgfSxkZXB0aDogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG4gIExlYWYucHJvdG90eXBlLmZsYXR0ZW4gPSBmdW5jdGlvbiBmbGF0dGVuICgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXNcbiAgfTtcblxuICBMZWFmLnByb3RvdHlwZS5zbGljZUlubmVyID0gZnVuY3Rpb24gc2xpY2VJbm5lciAoZnJvbSwgdG8pIHtcbiAgICBpZiAoZnJvbSA9PSAwICYmIHRvID09IHRoaXMubGVuZ3RoKSB7IHJldHVybiB0aGlzIH1cbiAgICByZXR1cm4gbmV3IExlYWYodGhpcy52YWx1ZXMuc2xpY2UoZnJvbSwgdG8pKVxuICB9O1xuXG4gIExlYWYucHJvdG90eXBlLmdldElubmVyID0gZnVuY3Rpb24gZ2V0SW5uZXIgKGkpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbaV1cbiAgfTtcblxuICBMZWFmLnByb3RvdHlwZS5mb3JFYWNoSW5uZXIgPSBmdW5jdGlvbiBmb3JFYWNoSW5uZXIgKGYsIGZyb20sIHRvLCBzdGFydCkge1xuICAgIGZvciAodmFyIGkgPSBmcm9tOyBpIDwgdG87IGkrKylcbiAgICAgIHsgaWYgKGYodGhpcy52YWx1ZXNbaV0sIHN0YXJ0ICsgaSkgPT09IGZhbHNlKSB7IHJldHVybiBmYWxzZSB9IH1cbiAgfTtcblxuICBMZWFmLnByb3RvdHlwZS5mb3JFYWNoSW52ZXJ0ZWRJbm5lciA9IGZ1bmN0aW9uIGZvckVhY2hJbnZlcnRlZElubmVyIChmLCBmcm9tLCB0bywgc3RhcnQpIHtcbiAgICBmb3IgKHZhciBpID0gZnJvbSAtIDE7IGkgPj0gdG87IGktLSlcbiAgICAgIHsgaWYgKGYodGhpcy52YWx1ZXNbaV0sIHN0YXJ0ICsgaSkgPT09IGZhbHNlKSB7IHJldHVybiBmYWxzZSB9IH1cbiAgfTtcblxuICBMZWFmLnByb3RvdHlwZS5sZWFmQXBwZW5kID0gZnVuY3Rpb24gbGVhZkFwcGVuZCAob3RoZXIpIHtcbiAgICBpZiAodGhpcy5sZW5ndGggKyBvdGhlci5sZW5ndGggPD0gR09PRF9MRUFGX1NJWkUpXG4gICAgICB7IHJldHVybiBuZXcgTGVhZih0aGlzLnZhbHVlcy5jb25jYXQob3RoZXIuZmxhdHRlbigpKSkgfVxuICB9O1xuXG4gIExlYWYucHJvdG90eXBlLmxlYWZQcmVwZW5kID0gZnVuY3Rpb24gbGVhZlByZXBlbmQgKG90aGVyKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoICsgb3RoZXIubGVuZ3RoIDw9IEdPT0RfTEVBRl9TSVpFKVxuICAgICAgeyByZXR1cm4gbmV3IExlYWYob3RoZXIuZmxhdHRlbigpLmNvbmNhdCh0aGlzLnZhbHVlcykpIH1cbiAgfTtcblxuICBwcm90b3R5cGVBY2Nlc3NvcnMubGVuZ3RoLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aCB9O1xuXG4gIHByb3RvdHlwZUFjY2Vzc29ycy5kZXB0aC5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwIH07XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIExlYWYucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxuICByZXR1cm4gTGVhZjtcbn0oUm9wZVNlcXVlbmNlKSk7XG5cbi8vIDo6IFJvcGVTZXF1ZW5jZVxuLy8gVGhlIGVtcHR5IHJvcGUgc2VxdWVuY2UuXG5Sb3BlU2VxdWVuY2UuZW1wdHkgPSBuZXcgTGVhZihbXSk7XG5cbnZhciBBcHBlbmQgPSAvKkBfX1BVUkVfXyovKGZ1bmN0aW9uIChSb3BlU2VxdWVuY2UpIHtcbiAgZnVuY3Rpb24gQXBwZW5kKGxlZnQsIHJpZ2h0KSB7XG4gICAgUm9wZVNlcXVlbmNlLmNhbGwodGhpcyk7XG4gICAgdGhpcy5sZWZ0ID0gbGVmdDtcbiAgICB0aGlzLnJpZ2h0ID0gcmlnaHQ7XG4gICAgdGhpcy5sZW5ndGggPSBsZWZ0Lmxlbmd0aCArIHJpZ2h0Lmxlbmd0aDtcbiAgICB0aGlzLmRlcHRoID0gTWF0aC5tYXgobGVmdC5kZXB0aCwgcmlnaHQuZGVwdGgpICsgMTtcbiAgfVxuXG4gIGlmICggUm9wZVNlcXVlbmNlICkgQXBwZW5kLl9fcHJvdG9fXyA9IFJvcGVTZXF1ZW5jZTtcbiAgQXBwZW5kLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIFJvcGVTZXF1ZW5jZSAmJiBSb3BlU2VxdWVuY2UucHJvdG90eXBlICk7XG4gIEFwcGVuZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBBcHBlbmQ7XG5cbiAgQXBwZW5kLnByb3RvdHlwZS5mbGF0dGVuID0gZnVuY3Rpb24gZmxhdHRlbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdC5mbGF0dGVuKCkuY29uY2F0KHRoaXMucmlnaHQuZmxhdHRlbigpKVxuICB9O1xuXG4gIEFwcGVuZC5wcm90b3R5cGUuZ2V0SW5uZXIgPSBmdW5jdGlvbiBnZXRJbm5lciAoaSkge1xuICAgIHJldHVybiBpIDwgdGhpcy5sZWZ0Lmxlbmd0aCA/IHRoaXMubGVmdC5nZXQoaSkgOiB0aGlzLnJpZ2h0LmdldChpIC0gdGhpcy5sZWZ0Lmxlbmd0aClcbiAgfTtcblxuICBBcHBlbmQucHJvdG90eXBlLmZvckVhY2hJbm5lciA9IGZ1bmN0aW9uIGZvckVhY2hJbm5lciAoZiwgZnJvbSwgdG8sIHN0YXJ0KSB7XG4gICAgdmFyIGxlZnRMZW4gPSB0aGlzLmxlZnQubGVuZ3RoO1xuICAgIGlmIChmcm9tIDwgbGVmdExlbiAmJlxuICAgICAgICB0aGlzLmxlZnQuZm9yRWFjaElubmVyKGYsIGZyb20sIE1hdGgubWluKHRvLCBsZWZ0TGVuKSwgc3RhcnQpID09PSBmYWxzZSlcbiAgICAgIHsgcmV0dXJuIGZhbHNlIH1cbiAgICBpZiAodG8gPiBsZWZ0TGVuICYmXG4gICAgICAgIHRoaXMucmlnaHQuZm9yRWFjaElubmVyKGYsIE1hdGgubWF4KGZyb20gLSBsZWZ0TGVuLCAwKSwgTWF0aC5taW4odGhpcy5sZW5ndGgsIHRvKSAtIGxlZnRMZW4sIHN0YXJ0ICsgbGVmdExlbikgPT09IGZhbHNlKVxuICAgICAgeyByZXR1cm4gZmFsc2UgfVxuICB9O1xuXG4gIEFwcGVuZC5wcm90b3R5cGUuZm9yRWFjaEludmVydGVkSW5uZXIgPSBmdW5jdGlvbiBmb3JFYWNoSW52ZXJ0ZWRJbm5lciAoZiwgZnJvbSwgdG8sIHN0YXJ0KSB7XG4gICAgdmFyIGxlZnRMZW4gPSB0aGlzLmxlZnQubGVuZ3RoO1xuICAgIGlmIChmcm9tID4gbGVmdExlbiAmJlxuICAgICAgICB0aGlzLnJpZ2h0LmZvckVhY2hJbnZlcnRlZElubmVyKGYsIGZyb20gLSBsZWZ0TGVuLCBNYXRoLm1heCh0bywgbGVmdExlbikgLSBsZWZ0TGVuLCBzdGFydCArIGxlZnRMZW4pID09PSBmYWxzZSlcbiAgICAgIHsgcmV0dXJuIGZhbHNlIH1cbiAgICBpZiAodG8gPCBsZWZ0TGVuICYmXG4gICAgICAgIHRoaXMubGVmdC5mb3JFYWNoSW52ZXJ0ZWRJbm5lcihmLCBNYXRoLm1pbihmcm9tLCBsZWZ0TGVuKSwgdG8sIHN0YXJ0KSA9PT0gZmFsc2UpXG4gICAgICB7IHJldHVybiBmYWxzZSB9XG4gIH07XG5cbiAgQXBwZW5kLnByb3RvdHlwZS5zbGljZUlubmVyID0gZnVuY3Rpb24gc2xpY2VJbm5lciAoZnJvbSwgdG8pIHtcbiAgICBpZiAoZnJvbSA9PSAwICYmIHRvID09IHRoaXMubGVuZ3RoKSB7IHJldHVybiB0aGlzIH1cbiAgICB2YXIgbGVmdExlbiA9IHRoaXMubGVmdC5sZW5ndGg7XG4gICAgaWYgKHRvIDw9IGxlZnRMZW4pIHsgcmV0dXJuIHRoaXMubGVmdC5zbGljZShmcm9tLCB0bykgfVxuICAgIGlmIChmcm9tID49IGxlZnRMZW4pIHsgcmV0dXJuIHRoaXMucmlnaHQuc2xpY2UoZnJvbSAtIGxlZnRMZW4sIHRvIC0gbGVmdExlbikgfVxuICAgIHJldHVybiB0aGlzLmxlZnQuc2xpY2UoZnJvbSwgbGVmdExlbikuYXBwZW5kKHRoaXMucmlnaHQuc2xpY2UoMCwgdG8gLSBsZWZ0TGVuKSlcbiAgfTtcblxuICBBcHBlbmQucHJvdG90eXBlLmxlYWZBcHBlbmQgPSBmdW5jdGlvbiBsZWFmQXBwZW5kIChvdGhlcikge1xuICAgIHZhciBpbm5lciA9IHRoaXMucmlnaHQubGVhZkFwcGVuZChvdGhlcik7XG4gICAgaWYgKGlubmVyKSB7IHJldHVybiBuZXcgQXBwZW5kKHRoaXMubGVmdCwgaW5uZXIpIH1cbiAgfTtcblxuICBBcHBlbmQucHJvdG90eXBlLmxlYWZQcmVwZW5kID0gZnVuY3Rpb24gbGVhZlByZXBlbmQgKG90aGVyKSB7XG4gICAgdmFyIGlubmVyID0gdGhpcy5sZWZ0LmxlYWZQcmVwZW5kKG90aGVyKTtcbiAgICBpZiAoaW5uZXIpIHsgcmV0dXJuIG5ldyBBcHBlbmQoaW5uZXIsIHRoaXMucmlnaHQpIH1cbiAgfTtcblxuICBBcHBlbmQucHJvdG90eXBlLmFwcGVuZElubmVyID0gZnVuY3Rpb24gYXBwZW5kSW5uZXIgKG90aGVyKSB7XG4gICAgaWYgKHRoaXMubGVmdC5kZXB0aCA+PSBNYXRoLm1heCh0aGlzLnJpZ2h0LmRlcHRoLCBvdGhlci5kZXB0aCkgKyAxKVxuICAgICAgeyByZXR1cm4gbmV3IEFwcGVuZCh0aGlzLmxlZnQsIG5ldyBBcHBlbmQodGhpcy5yaWdodCwgb3RoZXIpKSB9XG4gICAgcmV0dXJuIG5ldyBBcHBlbmQodGhpcywgb3RoZXIpXG4gIH07XG5cbiAgcmV0dXJuIEFwcGVuZDtcbn0oUm9wZVNlcXVlbmNlKSk7XG5cbmV4cG9ydCBkZWZhdWx0IFJvcGVTZXF1ZW5jZTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/rope-sequence/dist/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/sonner/dist/index.mjs":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/sonner/dist/index.mjs ***!
|
||
\********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Toaster: () => (/* binding */ $e),\n/* harmony export */ toast: () => (/* binding */ ue),\n/* harmony export */ useSonner: () => (/* binding */ Oe)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-dom/index.js\");\n/* __next_internal_client_entry_do_not_use__ Toaster,toast,useSonner auto */ var _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $RefreshSig$();\n\n\n\nvar jt = (n)=>{\n switch(n){\n case \"success\":\n return ee;\n case \"info\":\n return ae;\n case \"warning\":\n return oe;\n case \"error\":\n return se;\n default:\n return null;\n }\n}, te = Array(12).fill(0), Yt = (param)=>{\n let { visible: n, className: e } = param;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: [\n \"sonner-loading-wrapper\",\n e\n ].filter(Boolean).join(\" \"),\n \"data-visible\": n\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: \"sonner-spinner\"\n }, te.map((t, a)=>/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: \"sonner-loading-bar\",\n key: \"spinner-bar-\".concat(a)\n }))));\n}, ee = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",\n clipRule: \"evenodd\"\n})), oe = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",\n clipRule: \"evenodd\"\n})), ae = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",\n clipRule: \"evenodd\"\n})), se = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",\n clipRule: \"evenodd\"\n})), Ot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"line\", {\n x1: \"18\",\n y1: \"6\",\n x2: \"6\",\n y2: \"18\"\n}), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"18\",\n y2: \"18\"\n}));\n\nvar Ft = ()=>{\n _s();\n let [n, e] = react__WEBPACK_IMPORTED_MODULE_0__.useState(document.hidden);\n return react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"Ft.useEffect\": ()=>{\n let t = {\n \"Ft.useEffect.t\": ()=>{\n e(document.hidden);\n }\n }[\"Ft.useEffect.t\"];\n return document.addEventListener(\"visibilitychange\", t), ({\n \"Ft.useEffect\": ()=>window.removeEventListener(\"visibilitychange\", t)\n })[\"Ft.useEffect\"];\n }\n }[\"Ft.useEffect\"], []), n;\n};\n_s(Ft, \"C3CD/+xToPnCp6mg1TPF29IUkt8=\");\n_c = Ft;\n\nvar bt = 1, yt = class {\n constructor(){\n this.subscribe = (e)=>(this.subscribers.push(e), ()=>{\n let t = this.subscribers.indexOf(e);\n this.subscribers.splice(t, 1);\n });\n this.publish = (e)=>{\n this.subscribers.forEach((t)=>t(e));\n };\n this.addToast = (e)=>{\n this.publish(e), this.toasts = [\n ...this.toasts,\n e\n ];\n };\n this.create = (e)=>{\n var S;\n let { message: t, ...a } = e, u = typeof (e == null ? void 0 : e.id) == \"number\" || ((S = e.id) == null ? void 0 : S.length) > 0 ? e.id : bt++, f = this.toasts.find((g)=>g.id === u), w = e.dismissible === void 0 ? !0 : e.dismissible;\n return this.dismissedToasts.has(u) && this.dismissedToasts.delete(u), f ? this.toasts = this.toasts.map((g)=>g.id === u ? (this.publish({\n ...g,\n ...e,\n id: u,\n title: t\n }), {\n ...g,\n ...e,\n id: u,\n dismissible: w,\n title: t\n }) : g) : this.addToast({\n title: t,\n ...a,\n dismissible: w,\n id: u\n }), u;\n };\n this.dismiss = (e)=>(this.dismissedToasts.add(e), e || this.toasts.forEach((t)=>{\n this.subscribers.forEach((a)=>a({\n id: t.id,\n dismiss: !0\n }));\n }), this.subscribers.forEach((t)=>t({\n id: e,\n dismiss: !0\n })), e);\n this.message = (e, t)=>this.create({\n ...t,\n message: e\n });\n this.error = (e, t)=>this.create({\n ...t,\n message: e,\n type: \"error\"\n });\n this.success = (e, t)=>this.create({\n ...t,\n type: \"success\",\n message: e\n });\n this.info = (e, t)=>this.create({\n ...t,\n type: \"info\",\n message: e\n });\n this.warning = (e, t)=>this.create({\n ...t,\n type: \"warning\",\n message: e\n });\n this.loading = (e, t)=>this.create({\n ...t,\n type: \"loading\",\n message: e\n });\n this.promise = (e, t)=>{\n if (!t) return;\n let a;\n t.loading !== void 0 && (a = this.create({\n ...t,\n promise: e,\n type: \"loading\",\n message: t.loading,\n description: typeof t.description != \"function\" ? t.description : void 0\n }));\n let u = e instanceof Promise ? e : e(), f = a !== void 0, w, S = u.then(async (i)=>{\n if (w = [\n \"resolve\",\n i\n ], /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(i)) f = !1, this.create({\n id: a,\n type: \"default\",\n message: i\n });\n else if (ie(i) && !i.ok) {\n f = !1;\n let T = typeof t.error == \"function\" ? await t.error(\"HTTP error! status: \".concat(i.status)) : t.error, F = typeof t.description == \"function\" ? await t.description(\"HTTP error! status: \".concat(i.status)) : t.description;\n this.create({\n id: a,\n type: \"error\",\n message: T,\n description: F\n });\n } else if (t.success !== void 0) {\n f = !1;\n let T = typeof t.success == \"function\" ? await t.success(i) : t.success, F = typeof t.description == \"function\" ? await t.description(i) : t.description;\n this.create({\n id: a,\n type: \"success\",\n message: T,\n description: F\n });\n }\n }).catch(async (i)=>{\n if (w = [\n \"reject\",\n i\n ], t.error !== void 0) {\n f = !1;\n let D = typeof t.error == \"function\" ? await t.error(i) : t.error, T = typeof t.description == \"function\" ? await t.description(i) : t.description;\n this.create({\n id: a,\n type: \"error\",\n message: D,\n description: T\n });\n }\n }).finally(()=>{\n var i;\n f && (this.dismiss(a), a = void 0), (i = t.finally) == null || i.call(t);\n }), g = ()=>new Promise((i, D)=>S.then(()=>w[0] === \"reject\" ? D(w[1]) : i(w[1])).catch(D));\n return typeof a != \"string\" && typeof a != \"number\" ? {\n unwrap: g\n } : Object.assign(a, {\n unwrap: g\n });\n };\n this.custom = (e, t)=>{\n let a = (t == null ? void 0 : t.id) || bt++;\n return this.create({\n jsx: e(a),\n id: a,\n ...t\n }), a;\n };\n this.getActiveToasts = ()=>this.toasts.filter((e)=>!this.dismissedToasts.has(e.id));\n this.subscribers = [], this.toasts = [], this.dismissedToasts = new Set;\n }\n}, v = new yt, ne = (n, e)=>{\n let t = (e == null ? void 0 : e.id) || bt++;\n return v.addToast({\n title: n,\n ...e,\n id: t\n }), t;\n}, ie = (n)=>n && typeof n == \"object\" && \"ok\" in n && typeof n.ok == \"boolean\" && \"status\" in n && typeof n.status == \"number\", le = ne, ce = ()=>v.toasts, de = ()=>v.getActiveToasts(), ue = Object.assign(le, {\n success: v.success,\n info: v.info,\n warning: v.warning,\n error: v.error,\n custom: v.custom,\n message: v.message,\n promise: v.promise,\n dismiss: v.dismiss,\n loading: v.loading\n}, {\n getHistory: ce,\n getToasts: de\n});\nfunction wt(n) {\n let { insertAt: e } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!n || typeof document == \"undefined\") return;\n let t = document.head || document.getElementsByTagName(\"head\")[0], a = document.createElement(\"style\");\n a.type = \"text/css\", e === \"top\" && t.firstChild ? t.insertBefore(a, t.firstChild) : t.appendChild(a), a.styleSheet ? a.styleSheet.cssText = n : a.appendChild(document.createTextNode(n));\n}\nwt(':where(html[dir=\"ltr\"]),:where([data-sonner-toaster][dir=\"ltr\"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir=\"rtl\"]),:where([data-sonner-toaster][dir=\"rtl\"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted=\"true\"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted=\"true\"]){transform:none}}:where([data-sonner-toaster][data-x-position=\"right\"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position=\"left\"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position=\"center\"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position=\"top\"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position=\"bottom\"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=\"true\"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position=\"top\"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=\"bottom\"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=\"true\"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme=\"dark\"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled=\"true\"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=\"true\"]):before{content:\"\";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=\"top\"][data-swiping=\"true\"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=\"bottom\"][data-swiping=\"true\"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=\"false\"][data-removed=\"true\"]):before{content:\"\";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:\"\";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=\"true\"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=\"false\"][data-front=\"false\"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=\"false\"][data-front=\"false\"][data-styled=\"true\"])>*{opacity:0}:where([data-sonner-toast][data-visible=\"false\"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=\"true\"][data-expanded=\"true\"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"true\"][data-swipe-out=\"false\"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"false\"][data-swipe-out=\"false\"][data-expanded=\"true\"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"false\"][data-swipe-out=\"false\"][data-expanded=\"false\"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"false\"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\\n');\nfunction tt(n) {\n return n.label !== void 0;\n}\nvar pe = 3, me = \"32px\", ge = \"16px\", Wt = 4e3, he = 356, be = 14, ye = 20, we = 200;\nfunction M() {\n for(var _len = arguments.length, n = new Array(_len), _key = 0; _key < _len; _key++){\n n[_key] = arguments[_key];\n }\n return n.filter(Boolean).join(\" \");\n}\n_c1 = M;\nfunction xe(n) {\n let [e, t] = n.split(\"-\"), a = [];\n return e && a.push(e), t && a.push(t), a;\n}\nvar ve = (n)=>{\n _s1();\n var Dt, Pt, Nt, Bt, Ct, kt, It, Mt, Ht, At, Lt;\n let { invert: e, toast: t, unstyled: a, interacting: u, setHeights: f, visibleToasts: w, heights: S, index: g, toasts: i, expanded: D, removeToast: T, defaultRichColors: F, closeButton: et, style: ut, cancelButtonStyle: ft, actionButtonStyle: l, className: ot = \"\", descriptionClassName: at = \"\", duration: X, position: st, gap: pt, loadingIcon: rt, expandByDefault: B, classNames: s, icons: P, closeButtonAriaLabel: nt = \"Close toast\", pauseWhenPageIsHidden: it } = n, [Y, C] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null), [lt, J] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null), [W, H] = react__WEBPACK_IMPORTED_MODULE_0__.useState(!1), [A, mt] = react__WEBPACK_IMPORTED_MODULE_0__.useState(!1), [L, z] = react__WEBPACK_IMPORTED_MODULE_0__.useState(!1), [ct, d] = react__WEBPACK_IMPORTED_MODULE_0__.useState(!1), [h, y] = react__WEBPACK_IMPORTED_MODULE_0__.useState(!1), [R, j] = react__WEBPACK_IMPORTED_MODULE_0__.useState(0), [p, _] = react__WEBPACK_IMPORTED_MODULE_0__.useState(0), O = react__WEBPACK_IMPORTED_MODULE_0__.useRef(t.duration || X || Wt), G = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null), k = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null), Vt = g === 0, Ut = g + 1 <= w, N = t.type, V = t.dismissible !== !1, Kt = t.className || \"\", Xt = t.descriptionClassName || \"\", dt = react__WEBPACK_IMPORTED_MODULE_0__.useMemo({\n \"ve.useMemo[dt]\": ()=>S.findIndex({\n \"ve.useMemo[dt]\": (r)=>r.toastId === t.id\n }[\"ve.useMemo[dt]\"]) || 0\n }[\"ve.useMemo[dt]\"], [\n S,\n t.id\n ]), Jt = react__WEBPACK_IMPORTED_MODULE_0__.useMemo({\n \"ve.useMemo[Jt]\": ()=>{\n var r;\n return (r = t.closeButton) != null ? r : et;\n }\n }[\"ve.useMemo[Jt]\"], [\n t.closeButton,\n et\n ]), Tt = react__WEBPACK_IMPORTED_MODULE_0__.useMemo({\n \"ve.useMemo[Tt]\": ()=>t.duration || X || Wt\n }[\"ve.useMemo[Tt]\"], [\n t.duration,\n X\n ]), gt = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0), U = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0), St = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0), K = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null), [Gt, Qt] = st.split(\"-\"), Rt = react__WEBPACK_IMPORTED_MODULE_0__.useMemo({\n \"ve.useMemo[Rt]\": ()=>S.reduce({\n \"ve.useMemo[Rt]\": (r, m, c)=>c >= dt ? r : r + m.height\n }[\"ve.useMemo[Rt]\"], 0)\n }[\"ve.useMemo[Rt]\"], [\n S,\n dt\n ]), Et = Ft(), qt = t.invert || e, ht = N === \"loading\";\n U.current = react__WEBPACK_IMPORTED_MODULE_0__.useMemo({\n \"ve.useMemo\": ()=>dt * pt + Rt\n }[\"ve.useMemo\"], [\n dt,\n Rt\n ]), react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"ve.useEffect\": ()=>{\n O.current = Tt;\n }\n }[\"ve.useEffect\"], [\n Tt\n ]), react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"ve.useEffect\": ()=>{\n H(!0);\n }\n }[\"ve.useEffect\"], []), react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"ve.useEffect\": ()=>{\n let r = k.current;\n if (r) {\n let m = r.getBoundingClientRect().height;\n return _(m), f({\n \"ve.useEffect\": (c)=>[\n {\n toastId: t.id,\n height: m,\n position: t.position\n },\n ...c\n ]\n }[\"ve.useEffect\"]), ({\n \"ve.useEffect\": ()=>f({\n \"ve.useEffect\": (c)=>c.filter({\n \"ve.useEffect\": (b)=>b.toastId !== t.id\n }[\"ve.useEffect\"])\n }[\"ve.useEffect\"])\n })[\"ve.useEffect\"];\n }\n }\n }[\"ve.useEffect\"], [\n f,\n t.id\n ]), react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect({\n \"ve.useLayoutEffect\": ()=>{\n if (!W) return;\n let r = k.current, m = r.style.height;\n r.style.height = \"auto\";\n let c = r.getBoundingClientRect().height;\n r.style.height = m, _(c), f({\n \"ve.useLayoutEffect\": (b)=>b.find({\n \"ve.useLayoutEffect\": (x)=>x.toastId === t.id\n }[\"ve.useLayoutEffect\"]) ? b.map({\n \"ve.useLayoutEffect\": (x)=>x.toastId === t.id ? {\n ...x,\n height: c\n } : x\n }[\"ve.useLayoutEffect\"]) : [\n {\n toastId: t.id,\n height: c,\n position: t.position\n },\n ...b\n ]\n }[\"ve.useLayoutEffect\"]);\n }\n }[\"ve.useLayoutEffect\"], [\n W,\n t.title,\n t.description,\n f,\n t.id\n ]);\n let $ = react__WEBPACK_IMPORTED_MODULE_0__.useCallback({\n \"ve.useCallback[$]\": ()=>{\n mt(!0), j(U.current), f({\n \"ve.useCallback[$]\": (r)=>r.filter({\n \"ve.useCallback[$]\": (m)=>m.toastId !== t.id\n }[\"ve.useCallback[$]\"])\n }[\"ve.useCallback[$]\"]), setTimeout({\n \"ve.useCallback[$]\": ()=>{\n T(t);\n }\n }[\"ve.useCallback[$]\"], we);\n }\n }[\"ve.useCallback[$]\"], [\n t,\n T,\n f,\n U\n ]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"ve.useEffect\": ()=>{\n if (t.promise && N === \"loading\" || t.duration === 1 / 0 || t.type === \"loading\") return;\n let r;\n return D || u || it && Et ? ({\n \"ve.useEffect\": ()=>{\n if (St.current < gt.current) {\n let b = new Date().getTime() - gt.current;\n O.current = O.current - b;\n }\n St.current = new Date().getTime();\n }\n })[\"ve.useEffect\"]() : ({\n \"ve.useEffect\": ()=>{\n O.current !== 1 / 0 && (gt.current = new Date().getTime(), r = setTimeout({\n \"ve.useEffect\": ()=>{\n var b;\n (b = t.onAutoClose) == null || b.call(t, t), $();\n }\n }[\"ve.useEffect\"], O.current));\n }\n })[\"ve.useEffect\"](), ({\n \"ve.useEffect\": ()=>clearTimeout(r)\n })[\"ve.useEffect\"];\n }\n }[\"ve.useEffect\"], [\n D,\n u,\n t,\n N,\n it,\n Et,\n $\n ]), react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"ve.useEffect\": ()=>{\n t.delete && $();\n }\n }[\"ve.useEffect\"], [\n $,\n t.delete\n ]);\n function Zt() {\n var r, m, c;\n return P != null && P.loading ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: M(s == null ? void 0 : s.loader, (r = t == null ? void 0 : t.classNames) == null ? void 0 : r.loader, \"sonner-loader\"),\n \"data-visible\": N === \"loading\"\n }, P.loading) : rt ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: M(s == null ? void 0 : s.loader, (m = t == null ? void 0 : t.classNames) == null ? void 0 : m.loader, \"sonner-loader\"),\n \"data-visible\": N === \"loading\"\n }, rt) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(Yt, {\n className: M(s == null ? void 0 : s.loader, (c = t == null ? void 0 : t.classNames) == null ? void 0 : c.loader),\n visible: N === \"loading\"\n });\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"li\", {\n tabIndex: 0,\n ref: k,\n className: M(ot, Kt, s == null ? void 0 : s.toast, (Dt = t == null ? void 0 : t.classNames) == null ? void 0 : Dt.toast, s == null ? void 0 : s.default, s == null ? void 0 : s[N], (Pt = t == null ? void 0 : t.classNames) == null ? void 0 : Pt[N]),\n \"data-sonner-toast\": \"\",\n \"data-rich-colors\": (Nt = t.richColors) != null ? Nt : F,\n \"data-styled\": !(t.jsx || t.unstyled || a),\n \"data-mounted\": W,\n \"data-promise\": !!t.promise,\n \"data-swiped\": h,\n \"data-removed\": A,\n \"data-visible\": Ut,\n \"data-y-position\": Gt,\n \"data-x-position\": Qt,\n \"data-index\": g,\n \"data-front\": Vt,\n \"data-swiping\": L,\n \"data-dismissible\": V,\n \"data-type\": N,\n \"data-invert\": qt,\n \"data-swipe-out\": ct,\n \"data-swipe-direction\": lt,\n \"data-expanded\": !!(D || B && W),\n style: {\n \"--index\": g,\n \"--toasts-before\": g,\n \"--z-index\": i.length - g,\n \"--offset\": \"\".concat(A ? R : U.current, \"px\"),\n \"--initial-height\": B ? \"auto\" : \"\".concat(p, \"px\"),\n ...ut,\n ...t.style\n },\n onDragEnd: ()=>{\n z(!1), C(null), K.current = null;\n },\n onPointerDown: (r)=>{\n ht || !V || (G.current = new Date, j(U.current), r.target.setPointerCapture(r.pointerId), r.target.tagName !== \"BUTTON\" && (z(!0), K.current = {\n x: r.clientX,\n y: r.clientY\n }));\n },\n onPointerUp: ()=>{\n var x, Q, q, Z;\n if (ct || !V) return;\n K.current = null;\n let r = Number(((x = k.current) == null ? void 0 : x.style.getPropertyValue(\"--swipe-amount-x\").replace(\"px\", \"\")) || 0), m = Number(((Q = k.current) == null ? void 0 : Q.style.getPropertyValue(\"--swipe-amount-y\").replace(\"px\", \"\")) || 0), c = new Date().getTime() - ((q = G.current) == null ? void 0 : q.getTime()), b = Y === \"x\" ? r : m, I = Math.abs(b) / c;\n if (Math.abs(b) >= ye || I > .11) {\n j(U.current), (Z = t.onDismiss) == null || Z.call(t, t), J(Y === \"x\" ? r > 0 ? \"right\" : \"left\" : m > 0 ? \"down\" : \"up\"), $(), d(!0), y(!1);\n return;\n }\n z(!1), C(null);\n },\n onPointerMove: (r)=>{\n var Q, q, Z, zt;\n if (!K.current || !V || ((Q = window.getSelection()) == null ? void 0 : Q.toString().length) > 0) return;\n let c = r.clientY - K.current.y, b = r.clientX - K.current.x, I = (q = n.swipeDirections) != null ? q : xe(st);\n !Y && (Math.abs(b) > 1 || Math.abs(c) > 1) && C(Math.abs(b) > Math.abs(c) ? \"x\" : \"y\");\n let x = {\n x: 0,\n y: 0\n };\n Y === \"y\" ? (I.includes(\"top\") || I.includes(\"bottom\")) && (I.includes(\"top\") && c < 0 || I.includes(\"bottom\") && c > 0) && (x.y = c) : Y === \"x\" && (I.includes(\"left\") || I.includes(\"right\")) && (I.includes(\"left\") && b < 0 || I.includes(\"right\") && b > 0) && (x.x = b), (Math.abs(x.x) > 0 || Math.abs(x.y) > 0) && y(!0), (Z = k.current) == null || Z.style.setProperty(\"--swipe-amount-x\", \"\".concat(x.x, \"px\")), (zt = k.current) == null || zt.style.setProperty(\"--swipe-amount-y\", \"\".concat(x.y, \"px\"));\n }\n }, Jt && !t.jsx ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", {\n \"aria-label\": nt,\n \"data-disabled\": ht,\n \"data-close-button\": !0,\n onClick: ht || !V ? ()=>{} : ()=>{\n var r;\n $(), (r = t.onDismiss) == null || r.call(t, t);\n },\n className: M(s == null ? void 0 : s.closeButton, (Bt = t == null ? void 0 : t.classNames) == null ? void 0 : Bt.closeButton)\n }, (Ct = P == null ? void 0 : P.close) != null ? Ct : Ot) : null, t.jsx || /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(t.title) ? t.jsx ? t.jsx : typeof t.title == \"function\" ? t.title() : t.title : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, N || t.icon || t.promise ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n \"data-icon\": \"\",\n className: M(s == null ? void 0 : s.icon, (kt = t == null ? void 0 : t.classNames) == null ? void 0 : kt.icon)\n }, t.promise || t.type === \"loading\" && !t.icon ? t.icon || Zt() : null, t.type !== \"loading\" ? t.icon || (P == null ? void 0 : P[N]) || jt(N) : null) : null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n \"data-content\": \"\",\n className: M(s == null ? void 0 : s.content, (It = t == null ? void 0 : t.classNames) == null ? void 0 : It.content)\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n \"data-title\": \"\",\n className: M(s == null ? void 0 : s.title, (Mt = t == null ? void 0 : t.classNames) == null ? void 0 : Mt.title)\n }, typeof t.title == \"function\" ? t.title() : t.title), t.description ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n \"data-description\": \"\",\n className: M(at, Xt, s == null ? void 0 : s.description, (Ht = t == null ? void 0 : t.classNames) == null ? void 0 : Ht.description)\n }, typeof t.description == \"function\" ? t.description() : t.description) : null), /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(t.cancel) ? t.cancel : t.cancel && tt(t.cancel) ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", {\n \"data-button\": !0,\n \"data-cancel\": !0,\n style: t.cancelButtonStyle || ft,\n onClick: (r)=>{\n var m, c;\n tt(t.cancel) && V && ((c = (m = t.cancel).onClick) == null || c.call(m, r), $());\n },\n className: M(s == null ? void 0 : s.cancelButton, (At = t == null ? void 0 : t.classNames) == null ? void 0 : At.cancelButton)\n }, t.cancel.label) : null, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(t.action) ? t.action : t.action && tt(t.action) ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", {\n \"data-button\": !0,\n \"data-action\": !0,\n style: t.actionButtonStyle || l,\n onClick: (r)=>{\n var m, c;\n tt(t.action) && ((c = (m = t.action).onClick) == null || c.call(m, r), !r.defaultPrevented && $());\n },\n className: M(s == null ? void 0 : s.actionButton, (Lt = t == null ? void 0 : t.classNames) == null ? void 0 : Lt.actionButton)\n }, t.action.label) : null));\n};\n_s1(ve, \"IK1IwnJnYM6KtZifqyNurGLRdJc=\");\n_c2 = ve;\nfunction _t() {\n if (typeof window == \"undefined\" || typeof document == \"undefined\") return \"ltr\";\n let n = document.documentElement.getAttribute(\"dir\");\n return n === \"auto\" || !n ? window.getComputedStyle(document.documentElement).direction : n;\n}\nfunction Te(n, e) {\n let t = {};\n return [\n n,\n e\n ].forEach((a, u)=>{\n let f = u === 1, w = f ? \"--mobile-offset\" : \"--offset\", S = f ? ge : me;\n function g(i) {\n [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ].forEach((D)=>{\n t[\"\".concat(w, \"-\").concat(D)] = typeof i == \"number\" ? \"\".concat(i, \"px\") : i;\n });\n }\n typeof a == \"number\" || typeof a == \"string\" ? g(a) : typeof a == \"object\" ? [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ].forEach((i)=>{\n a[i] === void 0 ? t[\"\".concat(w, \"-\").concat(i)] = S : t[\"\".concat(w, \"-\").concat(i)] = typeof a[i] == \"number\" ? \"\".concat(a[i], \"px\") : a[i];\n }) : g(S);\n }), t;\n}\n_c3 = Te;\nfunction Oe() {\n _s2();\n let [n, e] = react__WEBPACK_IMPORTED_MODULE_0__.useState([]);\n return react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"Oe.useEffect\": ()=>v.subscribe({\n \"Oe.useEffect\": (t)=>{\n if (t.dismiss) {\n setTimeout({\n \"Oe.useEffect\": ()=>{\n react_dom__WEBPACK_IMPORTED_MODULE_1__.flushSync({\n \"Oe.useEffect\": ()=>{\n e({\n \"Oe.useEffect\": (a)=>a.filter({\n \"Oe.useEffect\": (u)=>u.id !== t.id\n }[\"Oe.useEffect\"])\n }[\"Oe.useEffect\"]);\n }\n }[\"Oe.useEffect\"]);\n }\n }[\"Oe.useEffect\"]);\n return;\n }\n setTimeout({\n \"Oe.useEffect\": ()=>{\n react_dom__WEBPACK_IMPORTED_MODULE_1__.flushSync({\n \"Oe.useEffect\": ()=>{\n e({\n \"Oe.useEffect\": (a)=>{\n let u = a.findIndex({\n \"Oe.useEffect.u\": (f)=>f.id === t.id\n }[\"Oe.useEffect.u\"]);\n return u !== -1 ? [\n ...a.slice(0, u),\n {\n ...a[u],\n ...t\n },\n ...a.slice(u + 1)\n ] : [\n t,\n ...a\n ];\n }\n }[\"Oe.useEffect\"]);\n }\n }[\"Oe.useEffect\"]);\n }\n }[\"Oe.useEffect\"]);\n }\n }[\"Oe.useEffect\"])\n }[\"Oe.useEffect\"], []), {\n toasts: n\n };\n}\n_s2(Oe, \"5C+wNK2Il/mi6buQK/AuxIesC3M=\");\n_c4 = Oe;\nvar $e = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(_s3(function(e, t) {\n _s3();\n let { invert: a, position: u = \"bottom-right\", hotkey: f = [\n \"altKey\",\n \"KeyT\"\n ], expand: w, closeButton: S, className: g, offset: i, mobileOffset: D, theme: T = \"light\", richColors: F, duration: et, style: ut, visibleToasts: ft = pe, toastOptions: l, dir: ot = _t(), gap: at = be, loadingIcon: X, icons: st, containerAriaLabel: pt = \"Notifications\", pauseWhenPageIsHidden: rt } = e, [B, s] = react__WEBPACK_IMPORTED_MODULE_0__.useState([]), P = react__WEBPACK_IMPORTED_MODULE_0__.useMemo({\n \"$e.useMemo[P]\": ()=>Array.from(new Set([\n u\n ].concat(B.filter({\n \"$e.useMemo[P]\": (d)=>d.position\n }[\"$e.useMemo[P]\"]).map({\n \"$e.useMemo[P]\": (d)=>d.position\n }[\"$e.useMemo[P]\"]))))\n }[\"$e.useMemo[P]\"], [\n B,\n u\n ]), [nt, it] = react__WEBPACK_IMPORTED_MODULE_0__.useState([]), [Y, C] = react__WEBPACK_IMPORTED_MODULE_0__.useState(!1), [lt, J] = react__WEBPACK_IMPORTED_MODULE_0__.useState(!1), [W, H] = react__WEBPACK_IMPORTED_MODULE_0__.useState(T !== \"system\" ? T : typeof window != \"undefined\" && window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\"), A = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null), mt = f.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\"), L = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null), z = react__WEBPACK_IMPORTED_MODULE_0__.useRef(!1), ct = react__WEBPACK_IMPORTED_MODULE_0__.useCallback({\n \"$e.useCallback[ct]\": (d)=>{\n s({\n \"$e.useCallback[ct]\": (h)=>{\n var y;\n return (y = h.find({\n \"$e.useCallback[ct]\": (R)=>R.id === d.id\n }[\"$e.useCallback[ct]\"])) != null && y.delete || v.dismiss(d.id), h.filter({\n \"$e.useCallback[ct]\": (param)=>{\n let { id: R } = param;\n return R !== d.id;\n }\n }[\"$e.useCallback[ct]\"]);\n }\n }[\"$e.useCallback[ct]\"]);\n }\n }[\"$e.useCallback[ct]\"], []);\n return react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"$e.useEffect\": ()=>v.subscribe({\n \"$e.useEffect\": (d)=>{\n if (d.dismiss) {\n s({\n \"$e.useEffect\": (h)=>h.map({\n \"$e.useEffect\": (y)=>y.id === d.id ? {\n ...y,\n delete: !0\n } : y\n }[\"$e.useEffect\"])\n }[\"$e.useEffect\"]);\n return;\n }\n setTimeout({\n \"$e.useEffect\": ()=>{\n react_dom__WEBPACK_IMPORTED_MODULE_1__.flushSync({\n \"$e.useEffect\": ()=>{\n s({\n \"$e.useEffect\": (h)=>{\n let y = h.findIndex({\n \"$e.useEffect.y\": (R)=>R.id === d.id\n }[\"$e.useEffect.y\"]);\n return y !== -1 ? [\n ...h.slice(0, y),\n {\n ...h[y],\n ...d\n },\n ...h.slice(y + 1)\n ] : [\n d,\n ...h\n ];\n }\n }[\"$e.useEffect\"]);\n }\n }[\"$e.useEffect\"]);\n }\n }[\"$e.useEffect\"]);\n }\n }[\"$e.useEffect\"])\n }[\"$e.useEffect\"], []), react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"$e.useEffect\": ()=>{\n if (T !== \"system\") {\n H(T);\n return;\n }\n if (T === \"system\" && (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? H(\"dark\") : H(\"light\")), typeof window == \"undefined\") return;\n let d = window.matchMedia(\"(prefers-color-scheme: dark)\");\n try {\n d.addEventListener(\"change\", {\n \"$e.useEffect\": (param)=>{\n let { matches: h } = param;\n H(h ? \"dark\" : \"light\");\n }\n }[\"$e.useEffect\"]);\n } catch (h) {\n d.addListener({\n \"$e.useEffect\": (param)=>{\n let { matches: y } = param;\n try {\n H(y ? \"dark\" : \"light\");\n } catch (R) {\n console.error(R);\n }\n }\n }[\"$e.useEffect\"]);\n }\n }\n }[\"$e.useEffect\"], [\n T\n ]), react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"$e.useEffect\": ()=>{\n B.length <= 1 && C(!1);\n }\n }[\"$e.useEffect\"], [\n B\n ]), react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"$e.useEffect\": ()=>{\n let d = {\n \"$e.useEffect.d\": (h)=>{\n var R, j;\n f.every({\n \"$e.useEffect.d\": (p)=>h[p] || h.code === p\n }[\"$e.useEffect.d\"]) && (C(!0), (R = A.current) == null || R.focus()), h.code === \"Escape\" && (document.activeElement === A.current || (j = A.current) != null && j.contains(document.activeElement)) && C(!1);\n }\n }[\"$e.useEffect.d\"];\n return document.addEventListener(\"keydown\", d), ({\n \"$e.useEffect\": ()=>document.removeEventListener(\"keydown\", d)\n })[\"$e.useEffect\"];\n }\n }[\"$e.useEffect\"], [\n f\n ]), react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n \"$e.useEffect\": ()=>{\n if (A.current) return ({\n \"$e.useEffect\": ()=>{\n L.current && (L.current.focus({\n preventScroll: !0\n }), L.current = null, z.current = !1);\n }\n })[\"$e.useEffect\"];\n }\n }[\"$e.useEffect\"], [\n A.current\n ]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"section\", {\n ref: t,\n \"aria-label\": \"\".concat(pt, \" \").concat(mt),\n tabIndex: -1,\n \"aria-live\": \"polite\",\n \"aria-relevant\": \"additions text\",\n \"aria-atomic\": \"false\",\n suppressHydrationWarning: !0\n }, P.map((d, h)=>{\n var j;\n let [y, R] = d.split(\"-\");\n return B.length ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"ol\", {\n key: d,\n dir: ot === \"auto\" ? _t() : ot,\n tabIndex: -1,\n ref: A,\n className: g,\n \"data-sonner-toaster\": !0,\n \"data-theme\": W,\n \"data-y-position\": y,\n \"data-lifted\": Y && B.length > 1 && !w,\n \"data-x-position\": R,\n style: {\n \"--front-toast-height\": \"\".concat(((j = nt[0]) == null ? void 0 : j.height) || 0, \"px\"),\n \"--width\": \"\".concat(he, \"px\"),\n \"--gap\": \"\".concat(at, \"px\"),\n ...ut,\n ...Te(i, D)\n },\n onBlur: (p)=>{\n z.current && !p.currentTarget.contains(p.relatedTarget) && (z.current = !1, L.current && (L.current.focus({\n preventScroll: !0\n }), L.current = null));\n },\n onFocus: (p)=>{\n p.target instanceof HTMLElement && p.target.dataset.dismissible === \"false\" || z.current || (z.current = !0, L.current = p.relatedTarget);\n },\n onMouseEnter: ()=>C(!0),\n onMouseMove: ()=>C(!0),\n onMouseLeave: ()=>{\n lt || C(!1);\n },\n onDragEnd: ()=>C(!1),\n onPointerDown: (p)=>{\n p.target instanceof HTMLElement && p.target.dataset.dismissible === \"false\" || J(!0);\n },\n onPointerUp: ()=>J(!1)\n }, B.filter((p)=>!p.position && h === 0 || p.position === d).map((p, _)=>{\n var O, G;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(ve, {\n key: p.id,\n icons: st,\n index: _,\n toast: p,\n defaultRichColors: F,\n duration: (O = l == null ? void 0 : l.duration) != null ? O : et,\n className: l == null ? void 0 : l.className,\n descriptionClassName: l == null ? void 0 : l.descriptionClassName,\n invert: a,\n visibleToasts: ft,\n closeButton: (G = l == null ? void 0 : l.closeButton) != null ? G : S,\n interacting: lt,\n position: d,\n style: l == null ? void 0 : l.style,\n unstyled: l == null ? void 0 : l.unstyled,\n classNames: l == null ? void 0 : l.classNames,\n cancelButtonStyle: l == null ? void 0 : l.cancelButtonStyle,\n actionButtonStyle: l == null ? void 0 : l.actionButtonStyle,\n removeToast: ct,\n toasts: B.filter((k)=>k.position == p.position),\n heights: nt.filter((k)=>k.position == p.position),\n setHeights: it,\n expandByDefault: w,\n gap: at,\n loadingIcon: X,\n expanded: Y,\n pauseWhenPageIsHidden: rt,\n swipeDirections: e.swipeDirections\n });\n })) : null;\n }));\n}, \"YmYe6CxgXRDGml5ZcHYF4SdRNtM=\"));\n //# sourceMappingURL=index.mjs.map\nvar _c, _c1, _c2, _c3, _c4;\n$RefreshReg$(_c, \"Ft\");\n$RefreshReg$(_c1, \"M\");\n$RefreshReg$(_c2, \"ve\");\n$RefreshReg$(_c3, \"Te\");\n$RefreshReg$(_c4, \"Oe\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9zb25uZXIvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRWtEO0FBQzdCO0FDRkg7QUFHWCxJQUFNSSxNQUFZQyxHQUF5QztJQUNoRSxPQUFRQSxFQUFNO1FBQ1osS0FBSztZQUNILE9BQU9DO1FBRVQsS0FBSztZQUNILE9BQU9DO1FBRVQsS0FBSztZQUNILE9BQU9DO1FBRVQsS0FBSztZQUNILE9BQU9DO1FBRVQ7WUFDRSxPQUFPO0lBQ1g7QUFDRixHQUVNQyxLQUFPLE1BQU0sRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUVoQkMsS0FBUztRQUFDLEVBQUUsU0FBQUMsQ0FBQUEsRUFBUyxXQUFBQyxDQUFVO3lCQUV4Q1QsZ0RBQUEsQ0FBQztRQUFJLFdBQVc7WUFBQztZQUEwQlMsQ0FBUztTQUFBLENBQUUsT0FBTyxPQUFPLEVBQUUsS0FBSyxHQUFHO1FBQUcsZ0JBQWNEO0lBQUFBLGlCQUM3RlIsZ0RBQUEsQ0FBQztRQUFJLFdBQVU7SUFBQSxHQUNaTSxHQUFLLElBQUksQ0FBQ0ksR0FBR0Msa0JBQ1pYLGdEQUFBLENBQUM7WUFBSSxXQUFVO1lBQXFCLEtBQUssZUFBZVcsT0FBQUE7UUFBQUEsQ0FBSyxDQUM5RCxDQUNILENBQ0Y7R0FJRVQsbUJBQ0pGLGdEQUFBLENBQUM7SUFBSSxPQUFNO0lBQTZCLFNBQVE7SUFBWSxNQUFLO0lBQWUsUUFBTztJQUFLLE9BQU07QUFBQSxpQkFDaEdBLGdEQUFBLENBQUM7SUFDQyxVQUFTO0lBQ1QsR0FBRTtJQUNGLFVBQVM7QUFBQSxDQUNYLENBQ0YsR0FHSUksbUJBQ0pKLGdEQUFBLENBQUM7SUFBSSxPQUFNO0lBQTZCLFNBQVE7SUFBWSxNQUFLO0lBQWUsUUFBTztJQUFLLE9BQU07QUFBQSxpQkFDaEdBLGdEQUFBLENBQUM7SUFDQyxVQUFTO0lBQ1QsR0FBRTtJQUNGLFVBQVM7QUFBQSxDQUNYLENBQ0YsR0FHSUcsbUJBQ0pILGdEQUFBLENBQUM7SUFBSSxPQUFNO0lBQTZCLFNBQVE7SUFBWSxNQUFLO0lBQWUsUUFBTztJQUFLLE9BQU07QUFBQSxpQkFDaEdBLGdEQUFBLENBQUM7SUFDQyxVQUFTO0lBQ1QsR0FBRTtJQUNGLFVBQVM7QUFBQSxDQUNYLENBQ0YsR0FHSUssbUJBQ0pMLGdEQUFBLENBQUM7SUFBSSxPQUFNO0lBQTZCLFNBQVE7SUFBWSxNQUFLO0lBQWUsUUFBTztJQUFLLE9BQU07QUFBQSxpQkFDaEdBLGdEQUFBLENBQUM7SUFDQyxVQUFTO0lBQ1QsR0FBRTtJQUNGLFVBQVM7QUFBQSxDQUNYLENBQ0YsR0FHV1ksbUJBQ1haLGdEQUFBLENBQUM7SUFDQyxPQUFNO0lBQ04sT0FBTTtJQUNOLFFBQU87SUFDUCxTQUFRO0lBQ1IsTUFBSztJQUNMLFFBQU87SUFDUCxhQUFZO0lBQ1osZUFBYztJQUNkLGdCQUFlO0FBQUEsaUJBRWZBLGdEQUFBLENBQUM7SUFBSyxJQUFHO0lBQUssSUFBRztJQUFJLElBQUc7SUFBSSxJQUFHO0FBQUEsQ0FBSyxpQkFDcENBLGdEQUFBLENBQUM7SUFBSyxJQUFHO0lBQUksSUFBRztJQUFJLElBQUc7SUFBSyxJQUFHO0FBQUEsQ0FBSyxDQUN0QztBQ3pGSztJQUFNYSxLQUFzQixJQUFNOztJQUN2QyxJQUFNLENBQUNDLEdBQWtCQyxDQUFtQixJQUFJRCwyQ0FBTSxDQUFTLFNBQVMsTUFBTTtJQUU5RSxPQUFBQSw0Q0FBTTt3QkFBVSxJQUFNO1lBQ3BCLElBQU1FO2tDQUFXLElBQU07b0JBQ3JCRCxFQUFvQixTQUFTLE1BQU07Z0JBQ3JDOztZQUNBLGdCQUFTLGlCQUFpQixvQkFBb0JDLENBQVE7Z0NBQy9DLElBQU0sT0FBTyxvQkFBb0Isb0JBQW9CQSxDQUFROztRQUN0RTt1QkFBRyxDQUFDLENBQUMsR0FFRUY7QUFDVDs7O0FDWmtCO0FBRWxCLElBQUlHLEtBQWdCLEdBSWRDLEtBQU4sS0FBZTtJQUtiLGFBQWM7UUFPZCxrQkFBYUMsS0FDWCxLQUFLLFlBQVksS0FBS0EsQ0FBVSxHQUV6QixJQUFNO2dCQUNYLElBQU1DLElBQVEsS0FBSyxZQUFZLFFBQVFELENBQVU7Z0JBQ2pELEtBQUssWUFBWSxPQUFPQyxHQUFPLENBQUM7YUFDbEM7UUFHRixnQkFBV0MsR0FBaUI7WUFDMUIsS0FBSyxZQUFZLFNBQVNGLElBQWVBLEVBQVdFLENBQUksQ0FBQztRQUMzRDtRQUVBLGlCQUFZQSxHQUFpQjtZQUMzQixLQUFLLFFBQVFBLENBQUksR0FDakIsS0FBSyxTQUFTLENBQUM7bUJBQUcsS0FBSztnQkFBUUEsQ0FBSTthQUNyQzs7UUFFQSxlQUNFQSxHQU1HO1lBN0NQLElBQUFDO1lBOENJLElBQU0sRUFBRSxTQUFBQyxDQUFBQSxFQUFTLEdBQUdDLENBQUssS0FBSUgsR0FDdkJJLElBQUssUUFBT0osS0FBQSxnQkFBQUEsRUFBTSxPQUFPLGNBQVlDLElBQUFELEVBQUssT0FBTCxnQkFBQUMsRUFBUyxVQUFTLElBQUlELEVBQUssS0FBS0osTUFDckVTLElBQWdCLEtBQUssT0FBTyxNQUFNQyxJQUMvQkEsRUFBTSxPQUFPRixDQUNyQixHQUNLRyxJQUFjUCxFQUFLLGdCQUFnQixTQUFZLEtBQU9BLEVBQUs7WUFFakUsT0FBSSxLQUFLLGdCQUFnQixJQUFJSSxDQUFFLEtBQzdCLEtBQUssZ0JBQWdCLE9BQU9BLENBQUUsR0FHNUJDLElBQ0YsS0FBSyxTQUFTLEtBQUssT0FBTyxLQUFLQyxJQUN6QkEsRUFBTSxPQUFPRixLQUNmLEtBQUssUUFBUTtvQkFBRSxHQUFHRSxDQUFBQTtvQkFBTyxHQUFHTixDQUFBQTtvQkFBTSxJQUFBSTtvQkFBSSxPQUFPRjtnQkFBUSxDQUFDLEdBQy9DO29CQUNMLEdBQUdJLENBQUFBO29CQUNILEdBQUdOLENBQUFBO29CQUNILElBQUFJO29CQUNBLGFBQUFHO29CQUNBLE9BQU9MO2lCQUNULElBR0tJLENBQ1IsSUFFRCxLQUFLLFNBQVM7Z0JBQUUsT0FBT0o7Z0JBQVMsR0FBR0MsQ0FBQUE7Z0JBQU0sYUFBQUk7Z0JBQWEsSUFBQUg7WUFBRyxDQUFDLEdBR3JEQTtRQUNUO1FBRUEsZ0JBQVdBLEtBQ1QsS0FBSyxnQkFBZ0IsSUFBSUEsQ0FBRSxHQUV0QkEsS0FDSCxLQUFLLE9BQU8sU0FBU0UsR0FBVTtnQkFDN0IsS0FBSyxZQUFZLFNBQVNSLElBQWVBLEVBQVc7d0JBQUUsSUFBSVEsRUFBTTt3QkFBSSxTQUFTO29CQUFLLENBQUMsQ0FBQztZQUN0RixDQUFDLEdBRUgsS0FBSyxZQUFZLFNBQVNSLElBQWVBLEVBQVc7b0JBQUUsSUFBQU07b0JBQUksU0FBUztnQkFBSyxDQUFDLENBQUMsR0FDbkVBO1FBR1QsZUFBVSxDQUFDRixHQUFtQ0YsSUFDckMsS0FBSyxPQUFPO2dCQUFFLEdBQUdBLENBQUFBO2dCQUFNLFNBQUFFO1lBQVEsQ0FBQztRQUd6QyxhQUFRLENBQUNBLEdBQW1DRixJQUNuQyxLQUFLLE9BQU87Z0JBQUUsR0FBR0EsQ0FBQUE7Z0JBQU0sU0FBQUU7Z0JBQVMsTUFBTTtZQUFRLENBQUM7UUFHeEQsZUFBVSxDQUFDQSxHQUFtQ0YsSUFDckMsS0FBSyxPQUFPO2dCQUFFLEdBQUdBLENBQUFBO2dCQUFNLE1BQU07Z0JBQVcsU0FBQUU7WUFBUSxDQUFDO1FBRzFELFlBQU8sQ0FBQ0EsR0FBbUNGLElBQ2xDLEtBQUssT0FBTztnQkFBRSxHQUFHQSxDQUFBQTtnQkFBTSxNQUFNO2dCQUFRLFNBQUFFO1lBQVEsQ0FBQztRQUd2RCxlQUFVLENBQUNBLEdBQW1DRixJQUNyQyxLQUFLLE9BQU87Z0JBQUUsR0FBR0EsQ0FBQUE7Z0JBQU0sTUFBTTtnQkFBVyxTQUFBRTtZQUFRLENBQUM7UUFHMUQsZUFBVSxDQUFDQSxHQUFtQ0YsSUFDckMsS0FBSyxPQUFPO2dCQUFFLEdBQUdBLENBQUFBO2dCQUFNLE1BQU07Z0JBQVcsU0FBQUU7WUFBUSxDQUFDO1FBRzFELGVBQVUsQ0FBWU0sR0FBOEJSLElBQWtDO1lBQ3BGLElBQUksQ0FBQ0EsR0FFSDtZQUdGLElBQUlJO1lBQ0FKLEVBQUssWUFBWSxVQUNuQkksS0FBSyxLQUFLLE9BQU87Z0JBQ2YsR0FBR0osQ0FBQUE7Z0JBQ0gsU0FBQVE7Z0JBQ0EsTUFBTTtnQkFDTixTQUFTUixFQUFLO2dCQUNkLGFBQWEsT0FBT0EsRUFBSyxlQUFnQixhQUFhQSxFQUFLLGNBQWM7WUFDM0UsRUFBQztZQUdILElBQU1TLElBQUlELGFBQW1CLFVBQVVBLElBQVVBLEVBQVEsR0FFckRFLElBQWdCTixNQUFPLFFBQ3ZCTyxHQUVFQyxJQUFrQkgsRUFDckIsS0FBSyxPQUFPSSxHQUFhO2dCQUd4QixJQUZBRixJQUFTO29CQUFDO29CQUFXRSxDQUFRO2lCQUFBLGdCQUNFZixpREFBTSxDQUFlZSxDQUFRLEdBRTFESCxJQUFnQixJQUNoQixLQUFLLE9BQU87b0JBQUUsSUFBQU47b0JBQUksTUFBTTtvQkFBVyxTQUFTUztnQkFBUyxDQUFDO3FCQUFBLElBQzdDQyxHQUFlRCxDQUFRLEtBQUssQ0FBQ0EsRUFBUyxJQUFJO29CQUNuREgsSUFBZ0I7b0JBQ2hCLElBQU1SLElBQ0osT0FBT0YsRUFBSyxTQUFVLGFBQWEsTUFBTUEsRUFBSyxNQUFNLHVCQUFnQyxDQUFRLE1BQWpCYSxFQUFTLFdBQVliLEVBQUssT0FDakdlLElBQ0osT0FBT2YsRUFBSyxlQUFnQixhQUN4QixNQUFNQSxFQUFLLFlBQVksdUJBQWdDLENBQVEsTUFBakJhLEVBQVMsV0FDdkRiLEVBQUs7b0JBQ1gsS0FBSyxPQUFPO3dCQUFFLElBQUFJO3dCQUFJLE1BQU07d0JBQVMsU0FBQUY7d0JBQVMsYUFBQWE7b0JBQVksQ0FBQztnQkFBQSxXQUM5Q2YsRUFBSyxZQUFZLFFBQVc7b0JBQ3JDVSxJQUFnQjtvQkFDaEIsSUFBTVIsSUFBVSxPQUFPRixFQUFLLFdBQVksYUFBYSxNQUFNQSxFQUFLLFFBQVFhLENBQVEsSUFBSWIsRUFBSyxTQUNuRmUsSUFDSixPQUFPZixFQUFLLGVBQWdCLGFBQWEsTUFBTUEsRUFBSyxZQUFZYSxDQUFRLElBQUliLEVBQUs7b0JBQ25GLEtBQUssT0FBTzt3QkFBRSxJQUFBSTt3QkFBSSxNQUFNO3dCQUFXLFNBQUFGO3dCQUFTLGFBQUFhO29CQUFZLENBQUM7Z0JBQUE7WUFFN0QsQ0FBQyxFQUNBLE1BQU0sT0FBT0MsR0FBVTtnQkFFdEIsSUFEQUwsSUFBUztvQkFBQztvQkFBVUssQ0FBSztpQkFBQSxFQUNyQmhCLEVBQUssVUFBVSxRQUFXO29CQUM1QlUsSUFBZ0I7b0JBQ2hCLElBQU1SLElBQVUsT0FBT0YsRUFBSyxTQUFVLGFBQWEsTUFBTUEsRUFBSyxNQUFNZ0IsQ0FBSyxJQUFJaEIsRUFBSyxPQUM1RWUsSUFBYyxPQUFPZixFQUFLLGVBQWdCLGFBQWEsTUFBTUEsRUFBSyxZQUFZZ0IsQ0FBSyxJQUFJaEIsRUFBSztvQkFDbEcsS0FBSyxPQUFPO3dCQUFFLElBQUFJO3dCQUFJLE1BQU07d0JBQVMsU0FBQUY7d0JBQVMsYUFBQWE7b0JBQVksQ0FBQztnQkFBQTtZQUUzRCxDQUFDLEVBQ0EsUUFBUSxJQUFNO2dCQTFLckIsSUFBQWQ7Z0JBMktZUyxNQUVGLEtBQUssUUFBUU4sQ0FBRSxHQUNmQSxJQUFLLGNBR1BKLEVBQUssWUFBTCxRQUFBQyxFQUFBLEtBQUFEO1lBQ0YsQ0FBQyxHQUVHaUIsSUFBUyxJQUNiLElBQUksUUFBbUIsQ0FBQ0MsR0FBU0MsSUFDL0JQLEVBQWdCLEtBQUssSUFBT0QsQ0FBQUEsQ0FBTyxDQUFDLE1BQU0sV0FBV1EsRUFBT1IsQ0FBQUEsQ0FBTyxDQUFDLENBQUMsSUFBSU8sRUFBUVAsQ0FBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBRSxFQUFFLE1BQU1RLENBQU0sQ0FDNUc7WUFFRixPQUFJLE9BQU9mLEtBQU8sWUFBWSxPQUFPQSxLQUFPLFdBRW5DO2dCQUFFLFFBQUFhO1lBQU8sSUFFVCxPQUFPLE9BQU9iLEdBQUk7Z0JBQUUsUUFBQWE7WUFBTyxDQUFDO1FBRXZDO1FBRUEsY0FBUyxDQUFDRyxHQUFrRHBCLElBQXlCO1lBQ25GLElBQU1JLElBQUFBLENBQUtKLEtBQUEsZ0JBQUFBLEVBQU0sT0FBTUo7WUFDdkIsWUFBSyxPQUFPO2dCQUFFLEtBQUt3QixFQUFJaEIsQ0FBRTtnQkFBRyxJQUFBQTtnQkFBSSxHQUFHSjtZQUFLLENBQUMsR0FDbENJO1FBQ1Q7UUFFQSx1QkFBa0IsSUFDVCxLQUFLLE9BQU8sUUFBUUUsSUFBVSxDQUFDLEtBQUssZ0JBQWdCLElBQUlBLEVBQU0sRUFBRSxDQUFDO1FBMUx4RSxLQUFLLGNBQWMsQ0FBQyxHQUNwQixLQUFLLFNBQVMsQ0FBQyxHQUNmLEtBQUssa0JBQWtCLElBQUk7SUFDN0I7QUF5TEYsR0FFYWUsSUFBYSxJQUFJeEIsSUFHeEJ5QixLQUFnQixDQUFDcEIsR0FBaUJGLElBQXlCO0lBQy9ELElBQU1JLElBQUFBLE1BQUssZ0JBQUFKLEVBQU0sT0FBTUo7SUFFdkIsT0FBQXlCLEVBQVcsU0FBUztRQUNsQixPQUFPbkI7UUFDUCxHQUFHRixDQUFBQTtRQUNILElBQUFJO0lBQ0YsQ0FBQyxHQUNNQTtBQUNULEdBRU1VLEtBQWtCZCxLQUVwQkEsS0FDQSxPQUFPQSxLQUFTLFlBQ2hCLFFBQVFBLEtBQ1IsT0FBT0EsRUFBSyxNQUFPLGFBQ25CLFlBQVlBLEtBQ1osT0FBT0EsRUFBSyxVQUFXLFVBSXJCdUIsS0FBYUQsSUFFYkUsS0FBYSxJQUFNSCxFQUFXLFFBQzlCSSxLQUFZLElBQU1KLEVBQVcsZ0JBQWdCLEdBR3RDZixLQUFRLE9BQU8sT0FDMUJpQixJQUNBO0lBQ0UsU0FBU0YsRUFBVztJQUNwQixNQUFNQSxFQUFXO0lBQ2pCLFNBQVNBLEVBQVc7SUFDcEIsT0FBT0EsRUFBVztJQUNsQixRQUFRQSxFQUFXO0lBQ25CLFNBQVNBLEVBQVc7SUFDcEIsU0FBU0EsRUFBVztJQUNwQixTQUFTQSxFQUFXO0lBQ3BCLFNBQVNBLEVBQVc7QUFDdEIsR0FDQTtJQUFFLFlBQUFHO0lBQVksV0FBQUM7QUFBVSxDQUMxQjtBQ3hQeUIsU0FBUkMsR0FBNkJDLENBQUFBO1VBQU8sVUFBQUMsQ0FBUyxLQUFYLGlFQUFlLENBQUMsRUFBRztJQUMxRCxJQUFJLENBQUNELEtBQU8sT0FBTyxZQUFhLGFBQWE7SUFFN0MsSUFBTUUsSUFBTyxTQUFTLFFBQVEsU0FBUyxxQkFBcUIsTUFBTSxFQUFFLENBQUMsR0FDL0RDLElBQVEsU0FBUyxjQUFjLE9BQU87SUFDNUNBLEVBQU0sT0FBTyxZQUVURixNQUFhLFNBQ1hDLEVBQUssYUFDUEEsRUFBSyxhQUFhQyxHQUFPRCxFQUFLLFVBQVUsSUFLMUNBLEVBQUssWUFBWUMsQ0FBSyxHQUdwQkEsRUFBTSxhQUNSQSxFQUFNLFdBQVcsVUFBVUgsSUFFM0JHLEVBQU0sWUFBWSxTQUFTLGVBQWVILENBQUcsQ0FBQztBQUVsRDtBQ3ZCOEJELEdBQVk7QUNrRjdDLFNBQVNLLEdBQVNDLENBQUFBLENBQW9EO0lBQzNFLE9BQVFBLEVBQWtCLFVBQVU7QUFDdEM7QU4vREEsSUFBTUMsS0FBd0IsR0FHeEJDLEtBQWtCLFFBR2xCQyxLQUF5QixRQUd6QkMsS0FBaUIsS0FHakJDLEtBQWMsS0FHZEMsS0FBTSxJQUdOQyxLQUFrQixJQUdsQkMsS0FBc0I7QUFFNUI7SUFBU0MsSUFBQUEsSUFBQUEsT0FBQUEsVUFBQUEsUUFBQUEsSUFBQUEsVUFBQUEsT0FBQUEsT0FBQUEsR0FBQUEsT0FBQUEsTUFBQUE7UUFBTUMsRUFBTkQsUUFBQUEsU0FBQUEsQ0FBQUEsS0FBTUMsQ0FBaUM7O0lBQzlDLE9BQU9BLEVBQVEsT0FBTyxPQUFPLEVBQUUsS0FBSyxHQUFHO0FBQ3pDO01BRlNEO0FBSVQsU0FBU0UsR0FBMEJDLENBQUFBLENBQXlDO0lBQzFFLElBQU0sQ0FBQ0MsR0FBR0MsQ0FBQyxJQUFJRixFQUFTLE1BQU0sR0FBRyxHQUMzQkcsSUFBb0MsQ0FBQztJQUUzQyxPQUFJRixLQUNGRSxFQUFXLEtBQUtGLENBQW1CLEdBR2pDQyxLQUNGQyxFQUFXLEtBQUtELENBQW1CLEdBRzlCQztBQUNUO0FBRUEsVUFBZUUsR0FBc0I7O0lBL0RyQyxJQUFBaEQsSUFBQWlELElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDO0lBZ0VFLElBQU0sRUFDSixRQUFRQyxDQUFBQSxFQUNSLE9BQUF0RCxDQUFBQSxFQUNBLFVBQUF1RCxDQUFBQSxFQUNBLGFBQUFDLENBQUFBLEVBQ0EsWUFBQUMsQ0FBQUEsRUFDQSxlQUFBQyxDQUFBQSxFQUNBLFNBQUFDLENBQUFBLEVBQ0EsT0FBQWxFLENBQUFBLEVBQ0EsUUFBQW1FLENBQUFBLEVBQ0EsVUFBQUMsQ0FBQUEsRUFDQSxhQUFBQyxDQUFBQSxFQUNBLG1CQUFBQyxDQUFBQSxFQUNBLGFBQWFDLEVBQUFBLEVBQ2IsT0FBQXhDLEVBQUFBLEVBQ0EsbUJBQUF5QyxFQUFBQSxFQUNBLG1CQUFBQyxDQUFBQSxFQUNBLFdBQUFwRixLQUFZLElBQ1osc0JBQUFxRixLQUF1QixJQUN2QixVQUFVQyxDQUFBQSxFQUNWLFVBQUE5QixFQUFBQSxFQUNBLEtBQUErQixFQUFBQSxFQUNBLGFBQWFDLEVBQUFBLEVBQ2IsaUJBQUFDLENBQUFBLEVBQ0EsWUFBQUMsQ0FBQUEsRUFDQSxPQUFBQyxDQUFBQSxFQUNBLHNCQUFBQyxLQUF1QixlQUN2Qix1QkFBQUMsRUFDRixLQUFJaEMsR0FDRSxDQUFDaUMsR0FBZ0JDLENBQWlCLElBQUlVLDJDQUFNLENBQTJCLElBQUksR0FDM0UsQ0FBQ1QsSUFBbUJDLENBQW9CLElBQUlRLDJDQUFNLENBQWtELElBQUksR0FDeEcsQ0FBQ1AsR0FBU0MsQ0FBVSxJQUFJTSwyQ0FBTSxDQUFTLEVBQUssR0FDNUMsQ0FBQ0wsR0FBU0MsRUFBVSxJQUFJSSwyQ0FBTSxDQUFTLEVBQUssR0FDNUMsQ0FBQ0gsR0FBU0MsQ0FBVSxJQUFJRSwyQ0FBTSxDQUFTLEVBQUssR0FDNUMsQ0FBQ0QsSUFBVUMsQ0FBVyxJQUFJQSwyQ0FBTSxDQUFTLEVBQUssR0FDOUMsQ0FBQ0MsR0FBVUMsQ0FBVyxJQUFJRiwyQ0FBTSxDQUFTLEVBQUssR0FDOUMsQ0FBQ0csR0FBb0JDLENBQXFCLElBQUlKLDJDQUFNLENBQVMsQ0FBQyxHQUM5RCxDQUFDSyxHQUFlQyxDQUFnQixJQUFJTiwyQ0FBTSxDQUFTLENBQUMsR0FDcERPLElBQWdCUCx5Q0FBTSxDQUFPdkYsRUFBTSxZQUFZb0UsS0FBdUJ0QyxFQUFjLEdBQ3BGaUUsSUFBZ0JSLHlDQUFNLENBQW9CLElBQUksR0FDOUNTLElBQVdULHlDQUFNLENBQXNCLElBQUksR0FDM0NVLEtBQVV4RyxNQUFVLEdBQ3BCeUcsS0FBWXpHLElBQVEsS0FBS2lFLEdBQ3pCeUMsSUFBWW5HLEVBQU0sTUFDbEJDLElBQWNELEVBQU0sZ0JBQWdCLElBQ3BDb0csS0FBaUJwRyxFQUFNLGFBQWEsSUFDcENxRyxLQUE0QnJHLEVBQU0sd0JBQXdCLElBRTFEc0csS0FBY2YsMENBQU07MEJBQ3hCLElBQU01QixFQUFRO21DQUFXNEMsSUFBV0EsRUFBTyxZQUFZdkcsRUFBTSxFQUFFO29DQUFLO3lCQUNwRTtRQUFDMkQ7UUFBUzNELEVBQU0sRUFBRTtLQUNwQixHQUNNd0csS0FBY2pCLDBDQUFNOzBCQUN4QixJQUFHO1lBckhQLElBQUE1RjtZQXFIVSxRQUFBQSxJQUFBSyxFQUFNLGdCQUFOLE9BQUFMLElBQXFCcUU7UUFBQUE7eUJBQzNCO1FBQUNoRSxFQUFNO1FBQWFnRSxFQUFzQjtLQUM1QyxHQUNNeUMsS0FBV2xCLDBDQUFNOzBCQUNyQixJQUFNdkYsRUFBTSxZQUFZb0UsS0FBdUJ0Qzt5QkFDL0M7UUFBQzlCLEVBQU07UUFBVW9FLENBQW1CO0tBQ3RDLEdBQ01zQyxLQUF5Qm5CLHlDQUFNLENBQU8sQ0FBQyxHQUN2Q29CLElBQVNwQix5Q0FBTSxDQUFPLENBQUMsR0FDdkJxQixLQUE2QnJCLHlDQUFNLENBQU8sQ0FBQyxHQUMzQ3NCLElBQWtCdEIseUNBQU0sQ0FBd0MsSUFBSSxHQUNwRSxDQUFDaEQsSUFBR0MsRUFBQyxJQUFJRixHQUFTLE1BQU0sR0FBRyxHQUMzQndFLEtBQXFCdkIsMENBQU07MEJBQVEsSUFDaEM1QixFQUFRO2tDQUFPLENBQUNvRCxHQUFNQyxHQUFNQyxJQUU3QkEsS0FBZ0JYLEtBQ1hTLElBR0ZBLElBQU9DLEVBQUs7aUNBQ2xCLENBQUM7eUJBQ0g7UUFBQ3JEO1FBQVMyQyxFQUFXO0tBQUMsR0FDbkJuSCxLQUFtQkQsR0FBb0IsR0FFdkNnSSxLQUFTbEgsRUFBTSxVQUFVc0QsR0FDekI2RCxLQUFXaEIsTUFBYztJQUUvQlEsRUFBTyxVQUFVcEIsMENBQU07c0JBQVEsSUFBTWUsS0FBY2pDLEtBQU15QztxQkFBb0I7UUFBQ1I7UUFBYVEsRUFBa0I7S0FBQyxHQUU5R3ZCLDRDQUFNO3dCQUFVLElBQU07WUFDcEJPLEVBQWMsVUFBVVc7UUFDMUI7dUJBQUc7UUFBQ0EsRUFBUTtLQUFDLEdBRWJsQiw0Q0FBTTt3QkFBVSxJQUFNO1lBRXBCTixFQUFXLEVBQUk7UUFDakI7dUJBQUcsQ0FBQyxDQUFDLEdBRUxNLDRDQUFNO3dCQUFVLElBQU07WUFDcEIsSUFBTTZCLElBQVlwQixFQUFTO1lBQzNCLElBQUlvQixHQUFXO2dCQUNiLElBQU1iLElBQVNhLEVBQVUsc0JBQXNCLEVBQUU7Z0JBRWpELE9BQUF2QixFQUFpQlUsQ0FBTSxHQUN2QjlDO29DQUFZNEQsS0FBTTs0QkFBQztnQ0FBRSxTQUFTckgsRUFBTTtnQ0FBSSxRQUFBdUc7Z0NBQVEsVUFBVXZHLEVBQU07NEJBQVMsRUFBRzsrQkFBR3FILENBQUM7eUJBQUM7O29DQUMxRSxJQUFNNUQ7NkNBQVk0RCxJQUFNQSxFQUFFO3FEQUFRZCxJQUFXQSxFQUFPLFlBQVl2RyxFQUFNLEVBQUU7Ozs7WUFBQztRQUVwRjt1QkFBRztRQUFDeUQ7UUFBWXpELEVBQU0sRUFBRTtLQUFDLEdBRXpCdUYsa0RBQU07OEJBQWdCLElBQU07WUFDMUIsSUFBSSxDQUFDUCxHQUFTO1lBQ2QsSUFBTW9DLElBQVlwQixFQUFTLFNBQ3JCc0IsSUFBaUJGLEVBQVUsTUFBTTtZQUN2Q0EsRUFBVSxNQUFNLFNBQVM7WUFDekIsSUFBTUcsSUFBWUgsRUFBVSxzQkFBc0IsRUFBRTtZQUNwREEsRUFBVSxNQUFNLFNBQVNFLEdBRXpCekIsRUFBaUIwQixDQUFTLEdBRTFCOUQ7dUNBQVlFLElBQ1lBLEVBQVE7K0NBQU00QyxJQUFXQSxFQUFPLFlBQVl2RyxFQUFNLEVBQUU7K0NBSWpFMkQsRUFBUTsrQ0FBSzRDLElBQVlBLEVBQU8sWUFBWXZHLEVBQU0sS0FBSztnQ0FBRSxHQUFHdUcsQ0FBQUE7Z0NBQVEsUUFBUWdCOzRCQUFVLElBQUloQixDQUFPOytDQUZqRzt3QkFBQzs0QkFBRSxTQUFTdkcsRUFBTTs0QkFBSSxRQUFRdUg7NEJBQVcsVUFBVXZILEVBQU07d0JBQVMsRUFBRzsyQkFBRzJELENBQU87cUJBSXpGOztRQUNIOzZCQUFHO1FBQUNxQjtRQUFTaEYsRUFBTTtRQUFPQSxFQUFNO1FBQWF5RDtRQUFZekQsRUFBTSxFQUFFO0tBQUM7SUFFbEUsSUFBTXdILElBQWNqQyw4Q0FBTTs2QkFBWSxJQUFNO1lBRTFDSixHQUFXLEVBQUksR0FDZlEsRUFBc0JnQixFQUFPLE9BQU8sR0FDcENsRDtzQ0FBWTRELElBQU1BLEVBQUU7OENBQVFkLElBQVdBLEVBQU8sWUFBWXZHLEVBQU0sRUFBRTs7cUNBRWxFO3FDQUFXLElBQU07b0JBQ2Y4RCxFQUFZOUQsQ0FBSztnQkFDbkI7b0NBQUdrQyxFQUFtQjtRQUN4Qjs0QkFBRztRQUFDbEM7UUFBTzhEO1FBQWFMO1FBQVlrRCxDQUFNO0tBQUM7SUFFM0NwQiw0Q0FBTTt3QkFBVSxJQUFNO1lBQ3BCLElBQUt2RixFQUFNLFdBQVdtRyxNQUFjLGFBQWNuRyxFQUFNLGFBQWEsU0FBWUEsRUFBTSxTQUFTLFdBQVc7WUFDM0csSUFBSXlIO1lBNkJKLE9BQUk1RCxLQUFZTCxLQUFnQm1CLE1BQXlCeEYsS0FBQUE7Z0NBMUJ0QyxJQUFNO29CQUN2QixJQUFJeUgsR0FBMkIsVUFBVUYsR0FBdUIsU0FBUzt3QkFFdkUsSUFBTWdCLElBQWMsSUFBSSxLQUFLLEVBQUUsUUFBUSxJQUFJaEIsR0FBdUI7d0JBRWxFWixFQUFjLFVBQVVBLEVBQWMsVUFBVTRCO29CQUFBQTtvQkFHbERkLEdBQTJCLFVBQVUsSUFBSSxLQUFLLEVBQUUsUUFBUTtnQkFDMUQ7bUNBa0JhO2dDQWhCTSxJQUFNO29CQUluQmQsRUFBYyxZQUFZLFVBRTlCWSxHQUF1QixVQUFVLElBQUksS0FBSyxFQUFFLFFBQVEsR0FHcERlLElBQVk7d0NBQVcsSUFBTTs0QkE5Tm5DLElBQUE5SDs2QkErTlFBLElBQUFLLEVBQU0sZ0JBQU4sUUFBQUwsRUFBQSxLQUFBSyxHQUFvQkEsSUFDcEJ3SCxFQUFZO3dCQUNkO3VDQUFHMUIsRUFBYyxRQUFPO2dCQUMxQjs7Z0NBUU8sSUFBTSxhQUFhMkIsQ0FBUzs7UUFDckM7dUJBQUc7UUFBQzVEO1FBQVVMO1FBQWF4RDtRQUFPbUc7UUFBV3hCO1FBQXVCeEY7UUFBa0JxSSxDQUFXO0tBQUMsR0FFbEdqQyw0Q0FBTTt3QkFBVSxJQUFNO1lBQ2hCdkYsRUFBTSxVQUNSd0gsRUFBWTtRQUVoQjt1QkFBRztRQUFDQTtRQUFheEgsRUFBTSxNQUFNO0tBQUM7SUFFOUIsU0FBUzJILElBQWlCO1FBblA1QixJQUFBaEksR0FBQWlELEdBQUFDO1FBb1BJLE9BQUk0QixLQUFBLFFBQUFBLEVBQU8sd0JBRVBjLGdEQUFBLENBQUM7WUFDQyxXQUFXcEQsRUFBR3FDLEtBQUEsZ0JBQUFBLEVBQVksU0FBUTdFLElBQUFLLEtBQUEsZ0JBQUFBLEVBQU8sZUFBUCxnQkFBQUwsRUFBbUIsUUFBUSxlQUFlO1lBQzVFLGdCQUFjd0csTUFBYztRQUFBLEdBRTNCMUIsRUFBTSxPQUNULElBSUFILG1CQUVBaUIsZ0RBQUEsQ0FBQztZQUNDLFdBQVdwRCxFQUFHcUMsS0FBQSxnQkFBQUEsRUFBWSxRQUFRNUIsS0FBQTVDLEtBQUEsZ0JBQUFBLEVBQU8sZUFBUCxnQkFBQTRDLEVBQW1CLFFBQVEsZUFBZTtZQUM1RSxnQkFBY3VELE1BQWM7UUFBQSxHQUUzQjdCLEVBQ0gsa0JBR0dpQixnREFBQSxDQUFDM0csSUFBQTtZQUFPLFdBQVd1RCxFQUFHcUMsS0FBQSxnQkFBQUEsRUFBWSxTQUFRM0IsSUFBQTdDLEtBQUEsZ0JBQUFBLEVBQU8sZUFBUCxnQkFBQTZDLEVBQW1CLE1BQU07WUFBRyxTQUFTc0QsTUFBYztRQUFBLENBQVc7SUFDakg7SUFFQSxxQkFDRVosZ0RBQUEsQ0FBQztRQUNDLFVBQVU7UUFDVixLQUFLUztRQUNMLFdBQVc3RCxFQUNUckQsSUFDQXNILElBQ0E1QixLQUFBLGdCQUFBQSxFQUFZLFFBQ1o3RSxLQUFBSyxLQUFBLGdCQUFBQSxFQUFPLGVBQVAsZ0JBQUFMLEdBQW1CLE9BQ25CNkUsS0FBQSxnQkFBQUEsRUFBWSxTQUNaQSxLQUFBLGdCQUFBQSxDQUFBQSxDQUFhMkIsRUFBQUEsRUFBQUEsQ0FDYnZELEtBQUE1QyxLQUFBLGdCQUFBQSxFQUFPLGVBQVAsZ0JBQUE0QyxFQUFBQSxDQUFvQnVELEVBQ3RCO1FBQ0EscUJBQWtCO1FBQ2xCLHFCQUFrQnRELEtBQUE3QyxFQUFNLGVBQU4sT0FBQTZDLEtBQW9Ca0I7UUFDdEMsZUFBYSxFQUFTL0QsRUFBTSxPQUFPQSxFQUFNLGFBQVl1RDtRQUNyRCxnQkFBY3lCO1FBQ2QsZ0JBQWMsRUFBUWhGLEVBQU07UUFDNUIsZUFBYXdGO1FBQ2IsZ0JBQWNOO1FBQ2QsZ0JBQWNnQjtRQUNkLG1CQUFpQjNEO1FBQ2pCLG1CQUFpQkM7UUFDakIsY0FBWS9DO1FBQ1osY0FBWXdHO1FBQ1osZ0JBQWNiO1FBQ2Qsb0JBQWtCbkY7UUFDbEIsYUFBV2tHO1FBQ1gsZUFBYWU7UUFDYixrQkFBZ0I1QjtRQUNoQix3QkFBc0JSO1FBQ3RCLGlCQUFlLEdBQVFqQixLQUFhVSxNQUFtQlM7UUFDdkQsT0FDRTtZQUNFLFdBQVd2RjtZQUNYLG1CQUFtQkE7WUFDbkIsYUFBYW1FLEVBQU8sU0FBU25FO1lBQzdCLFlBQVksR0FBeUMsT0FBdEN5RixJQUFVUSxJQUFxQmlCLEVBQU87WUFDckQsb0JBQW9CcEMsSUFBa0IsU0FBUyxHQUFHcUIsT0FBQUEsR0FBQUE7WUFDbEQsR0FBR3BFLEVBQUFBO1lBQ0gsR0FBR3hCLEVBQU07UUFDWDtRQUVGLFdBQVcsSUFBTTtZQUNmcUYsRUFBVyxFQUFLLEdBQ2hCUixFQUFrQixJQUFJLEdBQ3RCZ0MsRUFBZ0IsVUFBVTtRQUM1QjtRQUNBLGdCQUFnQmUsR0FBVTtZQUNwQlQsTUFBWSxDQUFDbEgsTUFDakI4RixFQUFjLFVBQVUsSUFBSSxNQUM1QkosRUFBc0JnQixFQUFPLE9BQU8sR0FFbkNpQixFQUFNLE9BQXVCLGtCQUFrQkEsRUFBTSxTQUFTLEdBQzFEQSxFQUFNLE9BQXVCLFlBQVksYUFDOUN2QyxFQUFXLEVBQUksR0FDZndCLEVBQWdCLFVBQVU7Z0JBQUUsR0FBR2UsRUFBTTtnQkFBUyxHQUFHQSxFQUFNLE9BQVE7Y0FBQTtRQUNqRTtRQUNBLGFBQWEsSUFBTTtZQXRVekIsSUFBQWpJLEdBQUFpRCxHQUFBQyxHQUFBQztZQXVVUSxJQUFJd0MsTUFBWSxDQUFDckYsR0FBYTtZQUU5QjRHLEVBQWdCLFVBQVU7WUFDMUIsSUFBTWdCLElBQWUsU0FDbkJsSSxJQUFBcUcsRUFBUyxZQUFULGdCQUFBckcsRUFBa0IsTUFBTSxpQkFBaUIsb0JBQW9CLFFBQVEsTUFBTSxRQUFPLENBQ3BGLEdBQ01tSSxJQUFlLFNBQ25CbEYsSUFBQW9ELEVBQVMsWUFBVCxnQkFBQXBELEVBQWtCLE1BQU0saUJBQWlCLG9CQUFvQixRQUFRLE1BQU0sUUFBTyxDQUNwRixHQUNNbUYsSUFBWSxJQUFJLEtBQUssRUFBRSxRQUFRLE1BQUlsRixJQUFBa0QsRUFBYyxZQUFkLGdCQUFBbEQsRUFBdUIsWUFFMURtRixJQUFjcEQsTUFBbUIsTUFBTWlELElBQWVDLEdBQ3RERyxJQUFXLEtBQUssSUFBSUQsQ0FBVyxJQUFJRDtZQUV6QyxJQUFJLEtBQUssSUFBSUMsQ0FBVyxLQUFLL0YsTUFBbUJnRyxJQUFXLEtBQU07Z0JBQy9EdEMsRUFBc0JnQixFQUFPLE9BQU8sSUFDcEM3RCxJQUFBOUMsRUFBTSxjQUFOLFFBQUE4QyxFQUFBLEtBQUE5QyxHQUFrQkEsSUFHaEIrRSxFQURFSCxNQUFtQixNQUNBaUQsSUFBZSxJQUFJLFVBQVUsU0FFN0JDLElBQWUsSUFBSSxTQUFTLElBRk8sR0FLMUROLEVBQVksR0FDWmpDLEVBQVksRUFBSSxHQUNoQkUsRUFBWSxFQUFLO2dCQUNqQjtZQUFBO1lBR0ZKLEVBQVcsRUFBSyxHQUNoQlIsRUFBa0IsSUFBSTtRQUN4QjtRQUNBLGdCQUFnQitDLEdBQVU7WUF4V2hDLElBQUFqSSxHQUFBaUQsR0FBQUMsR0FBQUM7WUE0V1EsSUFISSxDQUFDK0QsRUFBZ0IsV0FBVyxDQUFDNUcsS0FBQUEsQ0FBQUEsQ0FFWE4sSUFBQSxPQUFPLGNBQWEsS0FBcEIsZ0JBQUFBLEVBQXVCLFdBQVcsVUFBUyxHQUM5QztZQUVuQixJQUFNdUksSUFBU04sRUFBTSxVQUFVZixFQUFnQixRQUFRLEdBQ2pEc0IsSUFBU1AsRUFBTSxVQUFVZixFQUFnQixRQUFRLEdBRWpEdUIsSUFBQUEsQ0FBa0J4RixJQUFBRCxFQUFNLG9CQUFOLE9BQUFDLElBQXlCUCxHQUEwQkMsRUFBUTtZQUcvRSxDQUFDc0MsTUFBbUIsS0FBSyxJQUFJdUQsQ0FBTSxJQUFJLEtBQUssS0FBSyxJQUFJRCxDQUFNLElBQUksTUFDakVyRCxFQUFrQixLQUFLLElBQUlzRCxDQUFNLElBQUksS0FBSyxJQUFJRCxDQUFNLElBQUksTUFBTSxHQUFHO1lBR25FLElBQUlGLElBQWM7Z0JBQUUsR0FBRztnQkFBRyxHQUFHO1lBQUU7WUFHM0JwRCxNQUFtQixPQUVqQndELEVBQWdCLFNBQVMsS0FBSyxLQUFLQSxFQUFnQixTQUFTLFNBQVEsTUFDbEVBLEVBQWdCLFNBQVMsS0FBSyxLQUFLRixJQUFTLEtBRXJDRSxFQUFnQixTQUFTLFFBQVEsS0FBS0YsS0FBUyxNQUN4REYsRUFBWSxLQUFJRSxJQUdYdEQsTUFBbUIsUUFFeEJ3RCxFQUFnQixTQUFTLE1BQU0sS0FBS0EsRUFBZ0IsU0FBUyxRQUFPLE1BQ2xFQSxFQUFnQixTQUFTLE1BQU0sS0FBS0QsSUFBUyxLQUV0Q0MsRUFBZ0IsU0FBUyxPQUFPLEtBQUtELElBQVMsT0FDdkRILEVBQVksS0FBSUcsR0FBQUEsQ0FLbEIsS0FBSyxJQUFJSCxFQUFZLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSUEsRUFBWSxDQUFDLElBQUksTUFDM0R2QyxFQUFZLEVBQUksSUFJbEI1QyxJQUFBbUQsRUFBUyxZQUFULFFBQUFuRCxFQUFrQixNQUFNLFlBQVksb0JBQW9CLEdBQWUsT0FBWm1GLEVBQVksWUFDdkVsRixLQUFBa0QsRUFBUyxZQUFULFFBQUFsRCxHQUFrQixNQUFNLFlBQVksb0JBQW9CLEdBQWUsT0FBWmtGLEVBQVk7UUFDekU7SUFBQSxHQUVDeEIsTUFBZSxDQUFDeEcsRUFBTSxvQkFDckJ1RixnREFBQSxDQUFDO1FBQ0MsY0FBWWI7UUFDWixpQkFBZXlDO1FBQ2YscUJBQWlCO1FBQ2pCLFNBQ0VBLE1BQVksQ0FBQ2xILElBQ1QsSUFBTSxDQUFDLElBQ1AsSUFBTTtZQWhhdEIsSUFBQU47WUFpYWtCNkgsRUFBWSxJQUNaN0gsSUFBQUssRUFBTSxjQUFOLFFBQUFMLEVBQUEsS0FBQUssR0FBa0JBO1FBQ3BCO1FBRU4sV0FBV21DLEVBQUdxQyxLQUFBLGdCQUFBQSxFQUFZLGNBQWExQixLQUFBOUMsS0FBQSxnQkFBQUEsRUFBTyxlQUFQLGdCQUFBOEMsR0FBbUIsV0FBVztJQUFBLElBRXBFQyxLQUFBMEIsS0FBQSxnQkFBQUEsRUFBTyxVQUFQLE9BQUExQixLQUFnQjlELEVBQ25CLElBQ0UsTUFFSGUsRUFBTSxxQkFBT29KLHFEQUFBakwsQ0FBZTZCLEVBQU0sS0FBSyxJQUN0Q0EsRUFBTSxNQUNKQSxFQUFNLE1BQ0osT0FBT0EsRUFBTSxTQUFVLGFBQ3pCQSxFQUFNLE1BQU0sSUFFWkEsRUFBTSxzQkFHUnVGLGdEQUFBLENBQUFBLDJDQUFBLFFBQ0dZLEtBQWFuRyxFQUFNLFFBQVFBLEVBQU0sd0JBQ2hDdUYsZ0RBQUEsQ0FBQztRQUFJLGFBQVU7UUFBRyxXQUFXcEQsRUFBR3FDLEtBQUEsZ0JBQUFBLEVBQVksT0FBTXhCLEtBQUFoRCxLQUFBLGdCQUFBQSxFQUFPLGVBQVAsZ0JBQUFnRCxHQUFtQixJQUFJO0lBQUEsR0FDdEVoRCxFQUFNLFdBQVlBLEVBQU0sU0FBUyxhQUFhLENBQUNBLEVBQU0sT0FBUUEsRUFBTSxRQUFRMkgsR0FBZSxJQUFJLE1BQzlGM0gsRUFBTSxTQUFTLFlBQVlBLEVBQU0sU0FBUXlFLEtBQUEsZ0JBQUFBLENBQUFBLENBQVEwQixFQUFBQSxLQUFjOUgsR0FBUzhILENBQVMsSUFBSSxJQUN4RixJQUNFLG9CQUVKWixnREFBQSxDQUFDO1FBQUksZ0JBQWE7UUFBRyxXQUFXcEQsRUFBR3FDLEtBQUEsZ0JBQUFBLEVBQVksZUFBU3hFLEtBQUEsZ0JBQUFBLEVBQU8sZUFBUCxnQkFBQWlELEdBQW1CLE9BQU87SUFBQSxpQkFDaEZzQyxnREFBQSxDQUFDO1FBQUksY0FBVztRQUFHLFdBQVdwRCxFQUFHcUMsS0FBQSxnQkFBQUEsRUFBWSxRQUFPdEIsS0FBQWxELEtBQUEsZ0JBQUFBLEVBQU8sZUFBUCxnQkFBQWtELEdBQW1CLEtBQUs7SUFBQSxHQUN6RSxPQUFPbEQsRUFBTSxTQUFVLGFBQWFBLEVBQU0sTUFBTSxJQUFJQSxFQUFNLEtBQzdELEdBQ0NBLEVBQU0sNEJBQ0x1RixnREFBQSxDQUFDO1FBQ0Msb0JBQWlCO1FBQ2pCLFdBQVdwRCxFQUNUZ0MsSUFDQWtDLElBQ0E3QixLQUFBLGdCQUFBQSxFQUFZLGNBQ1pyQixLQUFBbkQsS0FBQSxnQkFBQUEsRUFBTyxlQUFQLGdCQUFBbUQsR0FBbUIsV0FDckI7SUFBQSxHQUVDLE9BQU9uRCxFQUFNLGVBQWdCLGFBQWFBLEVBQU0sWUFBWSxJQUFJQSxFQUFNLFdBQ3pFLElBQ0UsSUFDTixpQkFDQ29KLHFEQUFBakwsQ0FBZTZCLEVBQU0sTUFBTSxJQUMxQkEsRUFBTSxTQUNKQSxFQUFNLFVBQVV5QixHQUFTekIsRUFBTSxNQUFNLGtCQUN2Q3VGLGdEQUFBLENBQUM7UUFDQyxlQUFXO1FBQ1gsZUFBVztRQUNYLE9BQU92RixFQUFNLHFCQUFxQmlFO1FBQ2xDLFNBQVUyRCxHQUFVO1lBcmRsQyxJQUFBakksR0FBQWlEO1lBdWRxQm5CLEdBQVN6QixFQUFNLE1BQU0sS0FDckJDLEtBQUFBLENBQUFBLENBQ0wyQyxJQUFBQSxDQUFBakQsSUFBQUssRUFBTSxRQUFPLFlBQWIsUUFBQTRDLEVBQUEsS0FBQWpELEdBQXVCaUksSUFDdkJKLEdBQVk7UUFDZDtRQUNBLFdBQVdyRixFQUFHcUMsS0FBQSxnQkFBQUEsRUFBWSxlQUFjcEIsS0FBQXBELEtBQUEsZ0JBQUFBLEVBQU8sZUFBUCxnQkFBQW9ELEdBQW1CLFlBQVk7SUFBQSxHQUV0RXBELEVBQU0sT0FBTyxLQUNoQixJQUNFLG9CQUNIb0oscURBQUFqTCxDQUFlNkIsRUFBTSxNQUFNLElBQzFCQSxFQUFNLFNBQ0pBLEVBQU0sVUFBVXlCLEdBQVN6QixFQUFNLE1BQU0sa0JBQ3ZDdUYsZ0RBQUEsQ0FBQztRQUNDLGVBQVc7UUFDWCxlQUFXO1FBQ1gsT0FBT3ZGLEVBQU0scUJBQXFCa0U7UUFDbEMsVUFBVTBELEdBQVU7WUF4ZWxDLElBQUFqSSxHQUFBaUQ7WUEwZXFCbkIsR0FBU3pCLEVBQU0sTUFBTSxPQUMxQjRDLElBQUFBLEtBQUE1QyxFQUFNLFFBQU8sWUFBYixRQUFBNEMsRUFBQSxLQUFBakQsR0FBdUJpSSxJQUNuQixDQUFBQSxFQUFNLG9CQUNWSixHQUFZO1FBQ2Q7UUFDQSxXQUFXckYsRUFBR3FDLEtBQUEsZ0JBQUFBLEVBQVksZUFBY25CLEtBQUFyRCxLQUFBLGdCQUFBQSxFQUFPLGVBQVAsZ0JBQUFxRCxHQUFtQixZQUFZO0lBQUEsR0FFdEVyRCxFQUFNLE9BQU8sS0FDaEIsSUFDRSxJQUNOLENBRUo7QUFFSjs7TUF6Yk0wQztBQTJiTixTQUFTMkYsSUFBNEM7SUFFbkQsSUFESSxPQUFPLFVBQVcsZUFDbEIsT0FBTyxZQUFhLGFBQWEsT0FBTztJQUU1QyxJQUFNQyxJQUFlLFNBQVMsZ0JBQWdCLGFBQWEsS0FBSztJQUVoRSxPQUFJQSxNQUFpQixVQUFVLENBQUNBLElBQ3ZCLE9BQU8saUJBQWlCLFNBQVMsZUFBZSxFQUFFLFlBR3BEQTtBQUNUO0FBRUEsWUFBc0JFLENBQUFBLEVBQXVDQyxDQUFBQSxDQUE0QztJQUN2RyxJQUFNQyxJQUFTLENBQUM7SUFFaEI7UUFBQ0Y7UUFBZUMsQ0FBWTtLQUFBLENBQUUsUUFBUSxDQUFDOUIsR0FBUWxILElBQVU7UUFDdkQsSUFBTWtKLElBQVdsSixNQUFVLEdBQ3JCbUosSUFBU0QsSUFBVyxvQkFBb0IsWUFDeENFLElBQWVGLElBQVc5RyxLQUF5QkQ7UUFFekQsU0FBU2tILEVBQVVuQyxDQUFBQSxDQUF5QjtZQUMxQztnQkFBQztnQkFBTztnQkFBUztnQkFBVSxNQUFNO2FBQUEsQ0FBRSxTQUFTb0MsR0FBUTtnQkFDbERMLENBQUFBLENBQU8sVUFBR0UsR0FBQUEsS0FBVUcsQ0FBSyxNQUFMQSxHQUFLLEdBQUksT0FBT3BDLEtBQVcsV0FBVyxHQUFHQSxPQUFBQSxHQUFBQSxRQUFhQTtZQUM1RSxDQUFDO1FBQ0g7UUFFSSxPQUFPQSxLQUFXLFlBQVksT0FBT0EsS0FBVyxXQUNsRG1DLEVBQVVuQyxDQUFNLElBQ1AsT0FBT0EsS0FBVyxXQUMzQjtZQUFDO1lBQU87WUFBUztZQUFVLE1BQU07U0FBQSxDQUFFLFNBQVNvQyxHQUFRO1lBQzlDcEMsQ0FBQUEsQ0FBT29DLENBQUcsTUFBTSxTQUNsQkwsQ0FBQUEsQ0FBTyxHQUFhSyxPQUFWSCxHQUFBQSxLQUFVRyxDQUFLLFlBQUlGLElBRTdCSCxDQUFBQSxDQUFPLEdBQWFLLE9BQVZILEdBQUFBLEtBQVVHLENBQUssWUFBSSxPQUFPcEMsQ0FBQUEsQ0FBT29DLENBQUcsS0FBTSxXQUFXLEdBQWEsT0FBVnBDLENBQUFBLENBQU9vQyxDQUFHLFdBQVFwQyxDQUFBQSxDQUFPb0MsQ0FBRyxDQUVsRyxDQUFDO2FBRURELEVBQVVELENBQVk7SUFFMUIsQ0FBQyxHQUVNSDtBQUNUO01BOUJTSDtBQWdDVDs7SUFDRSxJQUFNLENBQUNVLEdBQWNDLENBQWUsSUFBSTNELDJDQUFNLENBQW1CLENBQUMsQ0FBQztJQUVuRSxPQUFBQSw0Q0FBTTt3QkFBVSxJQUNQeEUsRUFBVztpQ0FBV2YsR0FBVTtvQkFDckMsSUFBS0EsRUFBeUIsU0FBUzt3QkFDckM7NENBQVcsSUFBTTtnQ0FDZnNLLGdEQUFTO29EQUFVLElBQU07d0NBQ3ZCcEI7NkRBQWlCdEYsSUFBV0EsRUFBTztxRUFBUXVGLElBQU1BLEVBQUUsT0FBT25KLEVBQU0sRUFBRTs7O29DQUNwRSxDQUFDOzs0QkFDSCxDQUFDOzt3QkFDRDtvQkFBQTtvQkFJRjt3Q0FBVyxJQUFNOzRCQUNmc0ssZ0RBQVM7Z0RBQVUsSUFBTTtvQ0FDdkJwQjt5REFBaUJ0RixHQUFXOzRDQUMxQixJQUFNd0YsSUFBdUJ4RixFQUFPO21FQUFXdUYsSUFBTUEsRUFBRSxPQUFPbkosRUFBTSxFQUFFOzs0Q0FHdEUsT0FBSW9KLE1BQXlCLEtBQ3BCLENBQ0w7bURBQUd4RixFQUFPLE1BQU0sR0FBR3dGLENBQW9CO2dEQUN2QztvREFBRSxHQUFHeEYsQ0FBQUEsQ0FBT3dGLENBQW9CO29EQUFHLEdBQUdwSixDQUFNOzttREFDekM0RCxFQUFPLE1BQU13RixJQUF1QixDQUFDLENBQzFDOzZDQUFBLEdBR0s7Z0RBQUNwSixFQUFPO21EQUFHNEQsQ0FBTTs7d0NBQzFCLENBQUM7O2dDQUNILENBQUM7O3dCQUNILENBQUM7O2dCQUNILENBQUM7O3VCQUNBLENBQUMsQ0FBQyxHQUVFO1FBQ0wsUUFBUXFGO0lBQ1Y7QUFDRjs7TUF2Q1NEO0FBeUNULElBQU1LLG1CQUFVcUIsaURBQUF4TSxLQUFzQyxTQUFpQnlFLENBQUFBLEVBQU8yRyxDQUFBQSxDQUFLOztJQUNqRixJQUFNLEVBQ0osUUFBQXBDLENBQUFBLEVBQ0EsVUFBQTVFLElBQVcsZ0JBQ1gsUUFBQWlILElBQVM7UUFBQztRQUFVLE1BQU07S0FBQSxFQUMxQixRQUFBQyxDQUFBQSxFQUNBLGFBQUFoRCxDQUFBQSxFQUNBLFdBQUExSCxDQUFBQSxFQUNBLFFBQUE2SCxDQUFBQSxFQUNBLGNBQUE4QixDQUFBQSxFQUNBLE9BQUFnQixJQUFRLFNBQ1IsWUFBQUMsQ0FBQUEsRUFDQSxVQUFBakQsRUFBQUEsRUFDQSxPQUFBakYsRUFBQUEsRUFDQSxlQUFBa0MsS0FBZ0IvQixFQUFBQSxFQUNoQixjQUFBZ0ksQ0FBQUEsRUFDQSxLQUFBQyxLQUFNdkIsR0FBcUIsR0FDM0IsS0FBQWhFLEtBQU1yQyxFQUFBQSxFQUNOLGFBQUE2SCxDQUFBQSxFQUNBLE9BQUFwRixFQUFBQSxFQUNBLG9CQUFBcUYsS0FBcUIsaUJBQ3JCLHVCQUFBbkYsRUFDRixLQUFJaEMsR0FDRSxDQUFDaUIsR0FBUW1HLENBQVMsSUFBSXhFLDJDQUFNLENBQW1CLENBQUMsQ0FBQyxHQUNqRHlFLElBQW9CekUsMENBQU07eUJBQVEsSUFDL0IsTUFBTSxLQUNYLElBQUksSUFBSTtnQkFBQ2pELENBQVE7YUFBQSxDQUFFLE9BQU9zQixFQUFPO2tDQUFRNUQsSUFBVUEsRUFBTSxRQUFRO2dDQUFFO2tDQUFLQSxJQUFVQSxFQUFNLFFBQVE7O3dCQUVqRztRQUFDNEQ7UUFBUXRCLENBQVE7S0FBQyxHQUNmLENBQUNxQixJQUFTRixFQUFVLElBQUk4QiwyQ0FBTSxDQUFvQixDQUFDLENBQUMsR0FDcEQsQ0FBQzFCLEdBQVVvRyxDQUFXLElBQUkxRSwyQ0FBTSxDQUFTLEVBQUssR0FDOUMsQ0FBQy9CLElBQWEwRyxDQUFjLElBQUkzRSwyQ0FBTSxDQUFTLEVBQUssR0FDcEQsQ0FBQzRFLEdBQWFDLENBQWMsSUFBSTdFLDJDQUFNLENBQzFDa0UsTUFBVSxXQUNOQSxJQUNBLE9BQU8sVUFBVyxlQUNsQixPQUFPLGNBQWMsT0FBTyxXQUFXLDhCQUE4QixFQUFFLFVBQ3JFLFNBRUYsT0FDTixHQUVNWSxJQUFVOUUseUNBQU0sQ0FBeUIsSUFBSSxHQUM3QytFLEtBQWNmLEVBQU8sS0FBSyxHQUFHLEVBQUUsUUFBUSxRQUFRLEVBQUUsRUFBRSxRQUFRLFVBQVUsRUFBRSxHQUN2RWdCLElBQXdCaEYseUNBQU0sQ0FBb0IsSUFBSSxHQUN0RGlGLElBQW1CakYseUNBQU0sQ0FBTyxFQUFLLEdBRXJDekIsS0FBY3lCLDhDQUFNOytCQUFha0YsR0FBMEI7WUFDL0RWO3VDQUFXbkcsR0FBVztvQkFob0IxQixJQUFBakU7b0JBaW9CTSxRQUFLQSxJQUFBaUUsRUFBTzsrQ0FBTTVELElBQVVBLEVBQU0sT0FBT3lLLEVBQWM7NENBQUUsS0FBcEQsUUFBQTlLLEVBQXVELFVBQzFEb0IsRUFBVyxRQUFRMEosRUFBYyxFQUFFLEdBRzlCN0csRUFBTzs4Q0FBTztnQ0FBQyxFQUFFLElBQUE5RCxDQUFHO21DQUFNQSxNQUFPMkssRUFBYyxFQUFFOzs7Z0JBQzFELENBQUM7O1FBQ0g7NkJBQUcsQ0FBQyxDQUFDO0lBRUwsT0FBQWxGLDRDQUFNO3dCQUFVLElBQ1B4RSxFQUFXO2lDQUFXZixHQUFVO29CQUNyQyxJQUFLQSxFQUF5QixTQUFTO3dCQUNyQytKOzZDQUFXbkcsSUFBV0EsRUFBTztxREFBS3VGLElBQU9BLEVBQUUsT0FBT25KLEVBQU0sS0FBSzs0Q0FBRSxHQUFHbUosQ0FBQUE7NENBQUcsUUFBUTt3Q0FBSyxJQUFJQSxDQUFFOzs7d0JBQ3hGO29CQUFBO29CQUlGO3dDQUFXLElBQU07NEJBQ2ZtQixnREFBUztnREFBVSxJQUFNO29DQUN2QlA7eURBQVduRyxHQUFXOzRDQUNwQixJQUFNd0YsSUFBdUJ4RixFQUFPO21FQUFXdUYsSUFBTUEsRUFBRSxPQUFPbkosRUFBTSxFQUFFOzs0Q0FHdEUsT0FBSW9KLE1BQXlCLEtBQ3BCLENBQ0w7bURBQUd4RixFQUFPLE1BQU0sR0FBR3dGLENBQW9CO2dEQUN2QztvREFBRSxHQUFHeEYsQ0FBQUEsQ0FBT3dGLENBQW9CO29EQUFHLEdBQUdwSjtnREFBTSxFQUM1QzttREFBRzRELEVBQU8sTUFBTXdGLElBQXVCLENBQUMsQ0FDMUM7NkNBQUEsR0FHSztnREFBQ3BKLEVBQU87bURBQUc0RCxDQUFNOzt3Q0FDMUIsQ0FBQzs7Z0NBQ0gsQ0FBQzs7d0JBQ0gsQ0FBQzs7Z0JBQ0gsQ0FBQzs7dUJBQ0EsQ0FBQyxDQUFDLEdBRUwyQiw0Q0FBTTt3QkFBVSxJQUFNO1lBQ3BCLElBQUlrRSxNQUFVLFVBQVU7Z0JBQ3RCVyxFQUFlWCxDQUFLO2dCQUNwQjtZQUFBO1lBY0YsSUFYSUEsTUFBVSxhQUVSLE9BQU8sY0FBYyxPQUFPLFdBQVcsOEJBQThCLEVBQUUsVUFFekVXLEVBQWUsTUFBTSxJQUdyQkEsRUFBZSxRQUFPLEdBSXRCLE9BQU8sVUFBVyxhQUFhO1lBQ25DLElBQU1NLElBQWlCLE9BQU8sV0FBVyw4QkFBOEI7WUFFdkUsSUFBSTtnQkFFRkEsRUFBZSxpQkFBaUI7b0NBQVU7NEJBQUMsRUFBRSxTQUFBQyxDQUFRLEtBQU07d0JBRXZEUCxFQURFTyxJQUNhLFNBRUEsT0FGTTtvQkFJekIsQ0FBQzs7WUFDSCxTQUFTakssR0FBUDtnQkFFQWdLLEVBQWU7b0NBQVk7NEJBQUMsRUFBRSxTQUFBQyxDQUFRLEtBQU07d0JBQzFDLElBQUk7NEJBRUFQLEVBREVPLElBQ2EsU0FFQSxPQUZNO3dCQUl6QixTQUFTQyxHQUFQOzRCQUNBLFFBQVEsTUFBTUEsQ0FBQzt3QkFDakI7b0JBQ0YsQ0FBQzs7WUFDSDtRQUNGO3VCQUFHO1FBQUNuQixDQUFLO0tBQUMsR0FFVmxFLDRDQUFNO3dCQUFVLElBQU07WUFFaEIzQixFQUFPLFVBQVUsS0FDbkJxRyxFQUFZLEVBQUs7UUFFckI7dUJBQUc7UUFBQ3JHLENBQU07S0FBQyxHQUVYMkIsNENBQU07d0JBQVUsSUFBTTtZQUNwQixJQUFNc0Y7bUNBQWlCakQsR0FBeUI7b0JBM3RCcEQsSUFBQWpJLEdBQUFpRDtvQkE0dEI4QjJHLEVBQU87MkNBQU9SLElBQVNuQixDQUFBQSxDQUFjbUIsQ0FBRyxLQUFLbkIsRUFBTSxTQUFTbUIsQ0FBRzs2Q0FHckZrQixFQUFZLEVBQUksSUFDaEJ0SyxJQUFBMEssRUFBUSxZQUFSLFFBQUExSyxFQUFpQixVQUlqQmlJLEVBQU0sU0FBUyxhQUNkLFNBQVMsa0JBQWtCeUMsRUFBUSxZQUFXekgsSUFBQXlILEVBQVEsWUFBUixRQUFBekgsRUFBaUIsU0FBUyxTQUFTLG1CQUVsRnFILEVBQVksRUFBSztnQkFFckI7O1lBQ0EsZ0JBQVMsaUJBQWlCLFdBQVdZLENBQWE7Z0NBRTNDLElBQU0sU0FBUyxvQkFBb0IsV0FBV0EsQ0FBYTs7UUFDcEU7dUJBQUc7UUFBQ3RCLENBQU07S0FBQyxHQUVYaEUsNENBQU07d0JBQVUsSUFBTTtZQUNwQixJQUFJOEUsRUFBUSxTQUNWO2dDQUFPLElBQU07b0JBQ1BFLEVBQXNCLFlBQ3hCQSxFQUFzQixRQUFRLE1BQU07d0JBQUUsZUFBZTtvQkFBSyxDQUFDLEdBQzNEQSxFQUFzQixVQUFVLE1BQ2hDQyxFQUFpQixVQUFVO2dCQUUvQjs7UUFFSjt1QkFBRztRQUFDSCxFQUFRLE9BQU87S0FBQyxpQkFJbEI5RSxnREFBQSxDQUFDO1FBQ0MsS0FBSytEO1FBQ0wsY0FBWSxVQUFHUSxJQUFBQSxLQUFzQlEsT0FBQUE7UUFDckMsVUFBVTtRQUNWLGFBQVU7UUFDVixpQkFBYztRQUNkLGVBQVk7UUFDWiwwQkFBd0I7SUFBQSxHQUV2Qk4sRUFBa0IsSUFBSSxDQUFDMUgsR0FBVTdDLElBQVU7UUF0d0JsRCxJQUFBRTtRQXV3QlEsSUFBTSxDQUFDLEdBQUc2QyxDQUFDLElBQUlGLEVBQVMsTUFBTSxHQUFHO1FBRWpDLE9BQUtzQixFQUFPLHVCQUdWMkIsZ0RBQUEsQ0FBQztZQUNDLEtBQUtqRDtZQUNMLEtBQUtzSCxPQUFRLFNBQVN2QixHQUFxQixJQUFJdUI7WUFDL0MsVUFBVTtZQUNWLEtBQUtTO1lBQ0wsV0FBV3ZMO1lBQ1gsdUJBQW1CO1lBQ25CLGNBQVlxTDtZQUNaLG1CQUFpQjtZQUNqQixlQUFhdEcsS0FBWUQsRUFBTyxTQUFTLEtBQUssQ0FBQzRGO1lBQy9DLG1CQUFpQmhIO1lBQ2pCLE9BQ0U7Z0JBQ0Usd0JBQXdCLEdBQXlCLE9BQXpCLEVBQUc3QyxJQUFBZ0UsRUFBQUEsQ0FBUSxFQUFDLEtBQVQsZ0JBQUFoRSxFQUFZLFdBQVU7Z0JBQ2pELFdBQVcsR0FBR29DLE9BQUFBLElBQUFBO2dCQUNkLFNBQVMsR0FBR3NDLE9BQUFBLElBQUFBO2dCQUNaLEdBQUc3QyxFQUFBQTtnQkFDSCxHQUFHK0csR0FBYTVCLEdBQVE4QixDQUFZLENBQ3RDOztZQUVGLFNBQVNiLEdBQVU7Z0JBQ2I0QyxFQUFpQixXQUFXLENBQUM1QyxFQUFNLGNBQWMsU0FBU0EsRUFBTSxhQUFhLE1BQy9FNEMsRUFBaUIsVUFBVSxJQUN2QkQsRUFBc0IsWUFDeEJBLEVBQXNCLFFBQVEsTUFBTTtvQkFBRSxlQUFlO2dCQUFLLENBQUMsR0FDM0RBLEVBQXNCLFVBQVU7WUFHdEM7WUFDQSxVQUFVM0MsR0FBVTtnQkFFaEJBLEVBQU0sa0JBQWtCLGVBQWVBLEVBQU0sT0FBTyxRQUFRLGdCQUFnQixXQUl6RTRDLEVBQWlCLFlBQ3BCQSxFQUFpQixVQUFVLElBQzNCRCxFQUFzQixVQUFVM0MsRUFBTTtZQUUxQztZQUNBLGNBQWMsSUFBTXFDLEVBQVksRUFBSTtZQUNwQyxhQUFhLElBQU1BLEVBQVksRUFBSTtZQUNuQyxjQUFjLElBQU07Z0JBRWJ6RyxNQUNIeUcsRUFBWSxFQUFLO1lBRXJCO1lBQ0EsV0FBVyxJQUFNQSxFQUFZLEVBQUs7WUFDbEMsZ0JBQWdCckMsR0FBVTtnQkFFdEJBLEVBQU0sa0JBQWtCLGVBQWVBLEVBQU0sT0FBTyxRQUFRLGdCQUFnQixXQUc5RXNDLEVBQWUsRUFBSTtZQUNyQjtZQUNBLGFBQWEsSUFBTUEsRUFBZSxFQUFLO1FBQUEsR0FFdEN0RyxFQUNFLE9BQVE1RCxLQUFXLENBQUNBLEVBQU0sWUFBWVAsTUFBVSxLQUFNTyxFQUFNLGFBQWFzQyxDQUFRLEVBQ2pGLElBQUksQ0FBQ3RDLEdBQU9QLElBQU87WUF4MEJsQyxJQUFBRSxHQUFBaUQ7WUF5MEJnQixxQkFBQTJDLGdEQUFBLENBQUM3QyxJQUFBO2dCQUNDLEtBQUsxQyxFQUFNO2dCQUNYLE9BQU95RTtnQkFDUCxPQUFPaEY7Z0JBQ1AsT0FBT087Z0JBQ1AsbUJBQW1CMEo7Z0JBQ25CLFdBQVUvSixJQUFBZ0ssS0FBQSxnQkFBQUEsRUFBYyxhQUFkLE9BQUFoSyxJQUEwQjhHO2dCQUNwQyxXQUFXa0QsS0FBQSxnQkFBQUEsRUFBYztnQkFDekIsc0JBQXNCQSxLQUFBLGdCQUFBQSxFQUFjO2dCQUNwQyxRQUFRekM7Z0JBQ1IsZUFBZXhEO2dCQUNmLGNBQWFkLElBQUErRyxLQUFBLGdCQUFBQSxFQUFjLGdCQUFkLE9BQUEvRyxJQUE2QjREO2dCQUMxQyxhQUFhaEQ7Z0JBQ2IsVUFBVWxCO2dCQUNWLE9BQU9xSCxLQUFBLGdCQUFBQSxFQUFjO2dCQUNyQixVQUFVQSxLQUFBLGdCQUFBQSxFQUFjO2dCQUN4QixZQUFZQSxLQUFBLGdCQUFBQSxFQUFjO2dCQUMxQixtQkFBbUJBLEtBQUEsZ0JBQUFBLEVBQWM7Z0JBQ2pDLG1CQUFtQkEsS0FBQSxnQkFBQUEsRUFBYztnQkFDakMsYUFBYTdGO2dCQUNiLFFBQVFGLEVBQU8sT0FBUXVGLEtBQU1BLEVBQUUsWUFBWW5KLEVBQU0sUUFBUTtnQkFDekQsU0FBUzJELEdBQVEsUUFBUTBELElBQU1BLEVBQUUsWUFBWXJILEVBQU0sUUFBUTtnQkFDM0QsWUFBWXlEO2dCQUNaLGlCQUFpQitGO2dCQUNqQixLQUFLbkY7Z0JBQ0wsYUFBYXdGO2dCQUNiLFVBQVVoRztnQkFDVix1QkFBdUJjO2dCQUN2QixpQkFBaUJoQyxFQUFNO1lBQUEsQ0FDekI7UUFBQSxDQUNELENBQ0wsSUEvRnlCO0lBaUc3QixDQUFDLENBQ0g7QUFFSixDQUFDO0FBQUEiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcc3JjXFxpbmRleC50c3giLCJFOlxcR0lUXFxtdnBcXHNyY1xcYXNzZXRzLnRzeCIsIkU6XFxHSVRcXG12cFxcc3JjXFxob29rcy50c3giLCJFOlxcR0lUXFxtdnBcXHNyY1xcc3RhdGUudHMiLCIjc3R5bGUtaW5qZWN0OiNzdHlsZS1pbmplY3QiLCJFOlxcR0lUXFxtdnBcXHNyY1xcc3R5bGVzLmNzcyIsIkU6XFxHSVRcXG12cFxcc3JjXFx0eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuXG5pbXBvcnQgeyBDbG9zZUljb24sIGdldEFzc2V0LCBMb2FkZXIgfSBmcm9tICcuL2Fzc2V0cyc7XG5pbXBvcnQgeyB1c2VJc0RvY3VtZW50SGlkZGVuIH0gZnJvbSAnLi9ob29rcyc7XG5pbXBvcnQgeyB0b2FzdCwgVG9hc3RTdGF0ZSB9IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0ICcuL3N0eWxlcy5jc3MnO1xuaW1wb3J0IHtcbiAgaXNBY3Rpb24sXG4gIFN3aXBlRGlyZWN0aW9uLFxuICB0eXBlIEV4dGVybmFsVG9hc3QsXG4gIHR5cGUgSGVpZ2h0VCxcbiAgdHlwZSBUb2FzdGVyUHJvcHMsXG4gIHR5cGUgVG9hc3RQcm9wcyxcbiAgdHlwZSBUb2FzdFQsXG4gIHR5cGUgVG9hc3RUb0Rpc21pc3MsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBWaXNpYmxlIHRvYXN0cyBhbW91bnRcbmNvbnN0IFZJU0lCTEVfVE9BU1RTX0FNT1VOVCA9IDM7XG5cbi8vIFZpZXdwb3J0IHBhZGRpbmdcbmNvbnN0IFZJRVdQT1JUX09GRlNFVCA9ICczMnB4JztcblxuLy8gTW9iaWxlIHZpZXdwb3J0IHBhZGRpbmdcbmNvbnN0IE1PQklMRV9WSUVXUE9SVF9PRkZTRVQgPSAnMTZweCc7XG5cbi8vIERlZmF1bHQgbGlmZXRpbWUgb2YgYSB0b2FzdHMgKGluIG1zKVxuY29uc3QgVE9BU1RfTElGRVRJTUUgPSA0MDAwO1xuXG4vLyBEZWZhdWx0IHRvYXN0IHdpZHRoXG5jb25zdCBUT0FTVF9XSURUSCA9IDM1NjtcblxuLy8gRGVmYXVsdCBnYXAgYmV0d2VlbiB0b2FzdHNcbmNvbnN0IEdBUCA9IDE0O1xuXG4vLyBUaHJlc2hvbGQgdG8gZGlzbWlzcyBhIHRvYXN0XG5jb25zdCBTV0lQRV9USFJFU0hPTEQgPSAyMDtcblxuLy8gRXF1YWwgdG8gZXhpdCBhbmltYXRpb24gZHVyYXRpb25cbmNvbnN0IFRJTUVfQkVGT1JFX1VOTU9VTlQgPSAyMDA7XG5cbmZ1bmN0aW9uIGNuKC4uLmNsYXNzZXM6IChzdHJpbmcgfCB1bmRlZmluZWQpW10pIHtcbiAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFN3aXBlRGlyZWN0aW9ucyhwb3NpdGlvbjogc3RyaW5nKTogQXJyYXk8U3dpcGVEaXJlY3Rpb24+IHtcbiAgY29uc3QgW3ksIHhdID0gcG9zaXRpb24uc3BsaXQoJy0nKTtcbiAgY29uc3QgZGlyZWN0aW9uczogQXJyYXk8U3dpcGVEaXJlY3Rpb24+ID0gW107XG5cbiAgaWYgKHkpIHtcbiAgICBkaXJlY3Rpb25zLnB1c2goeSBhcyBTd2lwZURpcmVjdGlvbik7XG4gIH1cblxuICBpZiAoeCkge1xuICAgIGRpcmVjdGlvbnMucHVzaCh4IGFzIFN3aXBlRGlyZWN0aW9uKTtcbiAgfVxuXG4gIHJldHVybiBkaXJlY3Rpb25zO1xufVxuXG5jb25zdCBUb2FzdCA9IChwcm9wczogVG9hc3RQcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgaW52ZXJ0OiBUb2FzdGVySW52ZXJ0LFxuICAgIHRvYXN0LFxuICAgIHVuc3R5bGVkLFxuICAgIGludGVyYWN0aW5nLFxuICAgIHNldEhlaWdodHMsXG4gICAgdmlzaWJsZVRvYXN0cyxcbiAgICBoZWlnaHRzLFxuICAgIGluZGV4LFxuICAgIHRvYXN0cyxcbiAgICBleHBhbmRlZCxcbiAgICByZW1vdmVUb2FzdCxcbiAgICBkZWZhdWx0UmljaENvbG9ycyxcbiAgICBjbG9zZUJ1dHRvbjogY2xvc2VCdXR0b25Gcm9tVG9hc3RlcixcbiAgICBzdHlsZSxcbiAgICBjYW5jZWxCdXR0b25TdHlsZSxcbiAgICBhY3Rpb25CdXR0b25TdHlsZSxcbiAgICBjbGFzc05hbWUgPSAnJyxcbiAgICBkZXNjcmlwdGlvbkNsYXNzTmFtZSA9ICcnLFxuICAgIGR1cmF0aW9uOiBkdXJhdGlvbkZyb21Ub2FzdGVyLFxuICAgIHBvc2l0aW9uLFxuICAgIGdhcCxcbiAgICBsb2FkaW5nSWNvbjogbG9hZGluZ0ljb25Qcm9wLFxuICAgIGV4cGFuZEJ5RGVmYXVsdCxcbiAgICBjbGFzc05hbWVzLFxuICAgIGljb25zLFxuICAgIGNsb3NlQnV0dG9uQXJpYUxhYmVsID0gJ0Nsb3NlIHRvYXN0JyxcbiAgICBwYXVzZVdoZW5QYWdlSXNIaWRkZW4sXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgW3N3aXBlRGlyZWN0aW9uLCBzZXRTd2lwZURpcmVjdGlvbl0gPSBSZWFjdC51c2VTdGF0ZTwneCcgfCAneScgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3N3aXBlT3V0RGlyZWN0aW9uLCBzZXRTd2lwZU91dERpcmVjdGlvbl0gPSBSZWFjdC51c2VTdGF0ZTwnbGVmdCcgfCAncmlnaHQnIHwgJ3VwJyB8ICdkb3duJyB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbbW91bnRlZCwgc2V0TW91bnRlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZW1vdmVkLCBzZXRSZW1vdmVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3N3aXBpbmcsIHNldFN3aXBpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc3dpcGVPdXQsIHNldFN3aXBlT3V0XSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzU3dpcGVkLCBzZXRJc1N3aXBlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtvZmZzZXRCZWZvcmVSZW1vdmUsIHNldE9mZnNldEJlZm9yZVJlbW92ZV0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgY29uc3QgW2luaXRpYWxIZWlnaHQsIHNldEluaXRpYWxIZWlnaHRdID0gUmVhY3QudXNlU3RhdGUoMCk7XG4gIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSBSZWFjdC51c2VSZWYodG9hc3QuZHVyYXRpb24gfHwgZHVyYXRpb25Gcm9tVG9hc3RlciB8fCBUT0FTVF9MSUZFVElNRSk7XG4gIGNvbnN0IGRyYWdTdGFydFRpbWUgPSBSZWFjdC51c2VSZWY8RGF0ZSB8IG51bGw+KG51bGwpO1xuICBjb25zdCB0b2FzdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MTElFbGVtZW50PihudWxsKTtcbiAgY29uc3QgaXNGcm9udCA9IGluZGV4ID09PSAwO1xuICBjb25zdCBpc1Zpc2libGUgPSBpbmRleCArIDEgPD0gdmlzaWJsZVRvYXN0cztcbiAgY29uc3QgdG9hc3RUeXBlID0gdG9hc3QudHlwZTtcbiAgY29uc3QgZGlzbWlzc2libGUgPSB0b2FzdC5kaXNtaXNzaWJsZSAhPT0gZmFsc2U7XG4gIGNvbnN0IHRvYXN0Q2xhc3NuYW1lID0gdG9hc3QuY2xhc3NOYW1lIHx8ICcnO1xuICBjb25zdCB0b2FzdERlc2NyaXB0aW9uQ2xhc3NuYW1lID0gdG9hc3QuZGVzY3JpcHRpb25DbGFzc05hbWUgfHwgJyc7XG4gIC8vIEhlaWdodCBpbmRleCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IGFzIGl0IGdldHMgdXBkYXRlZCBiZWZvcmUgdGhlIHRvYXN0IGFycmF5LCB3aGljaCBtZWFucyB3ZSBjYW4gY2FsY3VsYXRlIHRoZSBuZXcgbGF5b3V0IGZhc3Rlci5cbiAgY29uc3QgaGVpZ2h0SW5kZXggPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IGhlaWdodHMuZmluZEluZGV4KChoZWlnaHQpID0+IGhlaWdodC50b2FzdElkID09PSB0b2FzdC5pZCkgfHwgMCxcbiAgICBbaGVpZ2h0cywgdG9hc3QuaWRdLFxuICApO1xuICBjb25zdCBjbG9zZUJ1dHRvbiA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gdG9hc3QuY2xvc2VCdXR0b24gPz8gY2xvc2VCdXR0b25Gcm9tVG9hc3RlcixcbiAgICBbdG9hc3QuY2xvc2VCdXR0b24sIGNsb3NlQnV0dG9uRnJvbVRvYXN0ZXJdLFxuICApO1xuICBjb25zdCBkdXJhdGlvbiA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gdG9hc3QuZHVyYXRpb24gfHwgZHVyYXRpb25Gcm9tVG9hc3RlciB8fCBUT0FTVF9MSUZFVElNRSxcbiAgICBbdG9hc3QuZHVyYXRpb24sIGR1cmF0aW9uRnJvbVRvYXN0ZXJdLFxuICApO1xuICBjb25zdCBjbG9zZVRpbWVyU3RhcnRUaW1lUmVmID0gUmVhY3QudXNlUmVmKDApO1xuICBjb25zdCBvZmZzZXQgPSBSZWFjdC51c2VSZWYoMCk7XG4gIGNvbnN0IGxhc3RDbG9zZVRpbWVyU3RhcnRUaW1lUmVmID0gUmVhY3QudXNlUmVmKDApO1xuICBjb25zdCBwb2ludGVyU3RhcnRSZWYgPSBSZWFjdC51c2VSZWY8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFt5LCB4XSA9IHBvc2l0aW9uLnNwbGl0KCctJyk7XG4gIGNvbnN0IHRvYXN0c0hlaWdodEJlZm9yZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBoZWlnaHRzLnJlZHVjZSgocHJldiwgY3VyciwgcmVkdWNlckluZGV4KSA9PiB7XG4gICAgICAvLyBDYWxjdWxhdGUgb2Zmc2V0IHVwIHVudGlsIGN1cnJlbnQgdG9hc3RcbiAgICAgIGlmIChyZWR1Y2VySW5kZXggPj0gaGVpZ2h0SW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2ICsgY3Vyci5oZWlnaHQ7XG4gICAgfSwgMCk7XG4gIH0sIFtoZWlnaHRzLCBoZWlnaHRJbmRleF0pO1xuICBjb25zdCBpc0RvY3VtZW50SGlkZGVuID0gdXNlSXNEb2N1bWVudEhpZGRlbigpO1xuXG4gIGNvbnN0IGludmVydCA9IHRvYXN0LmludmVydCB8fCBUb2FzdGVySW52ZXJ0O1xuICBjb25zdCBkaXNhYmxlZCA9IHRvYXN0VHlwZSA9PT0gJ2xvYWRpbmcnO1xuXG4gIG9mZnNldC5jdXJyZW50ID0gUmVhY3QudXNlTWVtbygoKSA9PiBoZWlnaHRJbmRleCAqIGdhcCArIHRvYXN0c0hlaWdodEJlZm9yZSwgW2hlaWdodEluZGV4LCB0b2FzdHNIZWlnaHRCZWZvcmVdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlbWFpbmluZ1RpbWUuY3VycmVudCA9IGR1cmF0aW9uO1xuICB9LCBbZHVyYXRpb25dKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRyaWdnZXIgZW50ZXIgYW5pbWF0aW9uIHdpdGhvdXQgdXNpbmcgQ1NTIGFuaW1hdGlvblxuICAgIHNldE1vdW50ZWQodHJ1ZSk7XG4gIH0sIFtdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRvYXN0Tm9kZSA9IHRvYXN0UmVmLmN1cnJlbnQ7XG4gICAgaWYgKHRvYXN0Tm9kZSkge1xuICAgICAgY29uc3QgaGVpZ2h0ID0gdG9hc3ROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgIC8vIEFkZCB0b2FzdCBoZWlnaHQgdG8gaGVpZ2h0cyBhcnJheSBhZnRlciB0aGUgdG9hc3QgaXMgbW91bnRlZFxuICAgICAgc2V0SW5pdGlhbEhlaWdodChoZWlnaHQpO1xuICAgICAgc2V0SGVpZ2h0cygoaCkgPT4gW3sgdG9hc3RJZDogdG9hc3QuaWQsIGhlaWdodCwgcG9zaXRpb246IHRvYXN0LnBvc2l0aW9uIH0sIC4uLmhdKTtcbiAgICAgIHJldHVybiAoKSA9PiBzZXRIZWlnaHRzKChoKSA9PiBoLmZpbHRlcigoaGVpZ2h0KSA9PiBoZWlnaHQudG9hc3RJZCAhPT0gdG9hc3QuaWQpKTtcbiAgICB9XG4gIH0sIFtzZXRIZWlnaHRzLCB0b2FzdC5pZF0pO1xuXG4gIFJlYWN0LnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtb3VudGVkKSByZXR1cm47XG4gICAgY29uc3QgdG9hc3ROb2RlID0gdG9hc3RSZWYuY3VycmVudDtcbiAgICBjb25zdCBvcmlnaW5hbEhlaWdodCA9IHRvYXN0Tm9kZS5zdHlsZS5oZWlnaHQ7XG4gICAgdG9hc3ROb2RlLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICBjb25zdCBuZXdIZWlnaHQgPSB0b2FzdE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIHRvYXN0Tm9kZS5zdHlsZS5oZWlnaHQgPSBvcmlnaW5hbEhlaWdodDtcblxuICAgIHNldEluaXRpYWxIZWlnaHQobmV3SGVpZ2h0KTtcblxuICAgIHNldEhlaWdodHMoKGhlaWdodHMpID0+IHtcbiAgICAgIGNvbnN0IGFscmVhZHlFeGlzdHMgPSBoZWlnaHRzLmZpbmQoKGhlaWdodCkgPT4gaGVpZ2h0LnRvYXN0SWQgPT09IHRvYXN0LmlkKTtcbiAgICAgIGlmICghYWxyZWFkeUV4aXN0cykge1xuICAgICAgICByZXR1cm4gW3sgdG9hc3RJZDogdG9hc3QuaWQsIGhlaWdodDogbmV3SGVpZ2h0LCBwb3NpdGlvbjogdG9hc3QucG9zaXRpb24gfSwgLi4uaGVpZ2h0c107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaGVpZ2h0cy5tYXAoKGhlaWdodCkgPT4gKGhlaWdodC50b2FzdElkID09PSB0b2FzdC5pZCA/IHsgLi4uaGVpZ2h0LCBoZWlnaHQ6IG5ld0hlaWdodCB9IDogaGVpZ2h0KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFttb3VudGVkLCB0b2FzdC50aXRsZSwgdG9hc3QuZGVzY3JpcHRpb24sIHNldEhlaWdodHMsIHRvYXN0LmlkXSk7XG5cbiAgY29uc3QgZGVsZXRlVG9hc3QgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2F2ZSB0aGUgb2Zmc2V0IGZvciB0aGUgZXhpdCBzd2lwZSBhbmltYXRpb25cbiAgICBzZXRSZW1vdmVkKHRydWUpO1xuICAgIHNldE9mZnNldEJlZm9yZVJlbW92ZShvZmZzZXQuY3VycmVudCk7XG4gICAgc2V0SGVpZ2h0cygoaCkgPT4gaC5maWx0ZXIoKGhlaWdodCkgPT4gaGVpZ2h0LnRvYXN0SWQgIT09IHRvYXN0LmlkKSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHJlbW92ZVRvYXN0KHRvYXN0KTtcbiAgICB9LCBUSU1FX0JFRk9SRV9VTk1PVU5UKTtcbiAgfSwgW3RvYXN0LCByZW1vdmVUb2FzdCwgc2V0SGVpZ2h0cywgb2Zmc2V0XSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoKHRvYXN0LnByb21pc2UgJiYgdG9hc3RUeXBlID09PSAnbG9hZGluZycpIHx8IHRvYXN0LmR1cmF0aW9uID09PSBJbmZpbml0eSB8fCB0b2FzdC50eXBlID09PSAnbG9hZGluZycpIHJldHVybjtcbiAgICBsZXQgdGltZW91dElkOiBOb2RlSlMuVGltZW91dDtcblxuICAgIC8vIFBhdXNlIHRoZSB0aW1lciBvbiBlYWNoIGhvdmVyXG4gICAgY29uc3QgcGF1c2VUaW1lciA9ICgpID0+IHtcbiAgICAgIGlmIChsYXN0Q2xvc2VUaW1lclN0YXJ0VGltZVJlZi5jdXJyZW50IDwgY2xvc2VUaW1lclN0YXJ0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIC8vIEdldCB0aGUgZWxhcHNlZCB0aW1lIHNpbmNlIHRoZSB0aW1lciBzdGFydGVkXG4gICAgICAgIGNvbnN0IGVsYXBzZWRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBjbG9zZVRpbWVyU3RhcnRUaW1lUmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgcmVtYWluaW5nVGltZS5jdXJyZW50ID0gcmVtYWluaW5nVGltZS5jdXJyZW50IC0gZWxhcHNlZFRpbWU7XG4gICAgICB9XG5cbiAgICAgIGxhc3RDbG9zZVRpbWVyU3RhcnRUaW1lUmVmLmN1cnJlbnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhcnRUaW1lciA9ICgpID0+IHtcbiAgICAgIC8vIHNldFRpbWVvdXQoLCBJbmZpbml0eSkgYmVoYXZlcyBhcyBpZiB0aGUgZGVsYXkgaXMgMC5cbiAgICAgIC8vIEFzIGEgcmVzdWx0LCB0aGUgdG9hc3Qgd291bGQgYmUgY2xvc2VkIGltbWVkaWF0ZWx5LCBnaXZpbmcgdGhlIGFwcGVhcmFuY2UgdGhhdCBpdCB3YXMgbmV2ZXIgcmVuZGVyZWQuXG4gICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kZW55c2Rvdmhhbi93dGZqcz90YWI9cmVhZG1lLW92LWZpbGUjYW4taW5maW5pdGUtdGltZW91dFxuICAgICAgaWYgKHJlbWFpbmluZ1RpbWUuY3VycmVudCA9PT0gSW5maW5pdHkpIHJldHVybjtcblxuICAgICAgY2xvc2VUaW1lclN0YXJ0VGltZVJlZi5jdXJyZW50ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAgIC8vIExldCB0aGUgdG9hc3Qga25vdyBpdCBoYXMgc3RhcnRlZFxuICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRvYXN0Lm9uQXV0b0Nsb3NlPy4odG9hc3QpO1xuICAgICAgICBkZWxldGVUb2FzdCgpO1xuICAgICAgfSwgcmVtYWluaW5nVGltZS5jdXJyZW50KTtcbiAgICB9O1xuXG4gICAgaWYgKGV4cGFuZGVkIHx8IGludGVyYWN0aW5nIHx8IChwYXVzZVdoZW5QYWdlSXNIaWRkZW4gJiYgaXNEb2N1bWVudEhpZGRlbikpIHtcbiAgICAgIHBhdXNlVGltZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRUaW1lcigpO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgfSwgW2V4cGFuZGVkLCBpbnRlcmFjdGluZywgdG9hc3QsIHRvYXN0VHlwZSwgcGF1c2VXaGVuUGFnZUlzSGlkZGVuLCBpc0RvY3VtZW50SGlkZGVuLCBkZWxldGVUb2FzdF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRvYXN0LmRlbGV0ZSkge1xuICAgICAgZGVsZXRlVG9hc3QoKTtcbiAgICB9XG4gIH0sIFtkZWxldGVUb2FzdCwgdG9hc3QuZGVsZXRlXSk7XG5cbiAgZnVuY3Rpb24gZ2V0TG9hZGluZ0ljb24oKSB7XG4gICAgaWYgKGljb25zPy5sb2FkaW5nKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWVzPy5sb2FkZXIsIHRvYXN0Py5jbGFzc05hbWVzPy5sb2FkZXIsICdzb25uZXItbG9hZGVyJyl9XG4gICAgICAgICAgZGF0YS12aXNpYmxlPXt0b2FzdFR5cGUgPT09ICdsb2FkaW5nJ31cbiAgICAgICAgPlxuICAgICAgICAgIHtpY29ucy5sb2FkaW5nfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGxvYWRpbmdJY29uUHJvcCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lcz8ubG9hZGVyLCB0b2FzdD8uY2xhc3NOYW1lcz8ubG9hZGVyLCAnc29ubmVyLWxvYWRlcicpfVxuICAgICAgICAgIGRhdGEtdmlzaWJsZT17dG9hc3RUeXBlID09PSAnbG9hZGluZyd9XG4gICAgICAgID5cbiAgICAgICAgICB7bG9hZGluZ0ljb25Qcm9wfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiA8TG9hZGVyIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lcz8ubG9hZGVyLCB0b2FzdD8uY2xhc3NOYW1lcz8ubG9hZGVyKX0gdmlzaWJsZT17dG9hc3RUeXBlID09PSAnbG9hZGluZyd9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8bGlcbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcmVmPXt0b2FzdFJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgdG9hc3RDbGFzc25hbWUsXG4gICAgICAgIGNsYXNzTmFtZXM/LnRvYXN0LFxuICAgICAgICB0b2FzdD8uY2xhc3NOYW1lcz8udG9hc3QsXG4gICAgICAgIGNsYXNzTmFtZXM/LmRlZmF1bHQsXG4gICAgICAgIGNsYXNzTmFtZXM/Llt0b2FzdFR5cGVdLFxuICAgICAgICB0b2FzdD8uY2xhc3NOYW1lcz8uW3RvYXN0VHlwZV0sXG4gICAgICApfVxuICAgICAgZGF0YS1zb25uZXItdG9hc3Q9XCJcIlxuICAgICAgZGF0YS1yaWNoLWNvbG9ycz17dG9hc3QucmljaENvbG9ycyA/PyBkZWZhdWx0UmljaENvbG9yc31cbiAgICAgIGRhdGEtc3R5bGVkPXshQm9vbGVhbih0b2FzdC5qc3ggfHwgdG9hc3QudW5zdHlsZWQgfHwgdW5zdHlsZWQpfVxuICAgICAgZGF0YS1tb3VudGVkPXttb3VudGVkfVxuICAgICAgZGF0YS1wcm9taXNlPXtCb29sZWFuKHRvYXN0LnByb21pc2UpfVxuICAgICAgZGF0YS1zd2lwZWQ9e2lzU3dpcGVkfVxuICAgICAgZGF0YS1yZW1vdmVkPXtyZW1vdmVkfVxuICAgICAgZGF0YS12aXNpYmxlPXtpc1Zpc2libGV9XG4gICAgICBkYXRhLXktcG9zaXRpb249e3l9XG4gICAgICBkYXRhLXgtcG9zaXRpb249e3h9XG4gICAgICBkYXRhLWluZGV4PXtpbmRleH1cbiAgICAgIGRhdGEtZnJvbnQ9e2lzRnJvbnR9XG4gICAgICBkYXRhLXN3aXBpbmc9e3N3aXBpbmd9XG4gICAgICBkYXRhLWRpc21pc3NpYmxlPXtkaXNtaXNzaWJsZX1cbiAgICAgIGRhdGEtdHlwZT17dG9hc3RUeXBlfVxuICAgICAgZGF0YS1pbnZlcnQ9e2ludmVydH1cbiAgICAgIGRhdGEtc3dpcGUtb3V0PXtzd2lwZU91dH1cbiAgICAgIGRhdGEtc3dpcGUtZGlyZWN0aW9uPXtzd2lwZU91dERpcmVjdGlvbn1cbiAgICAgIGRhdGEtZXhwYW5kZWQ9e0Jvb2xlYW4oZXhwYW5kZWQgfHwgKGV4cGFuZEJ5RGVmYXVsdCAmJiBtb3VudGVkKSl9XG4gICAgICBzdHlsZT17XG4gICAgICAgIHtcbiAgICAgICAgICAnLS1pbmRleCc6IGluZGV4LFxuICAgICAgICAgICctLXRvYXN0cy1iZWZvcmUnOiBpbmRleCxcbiAgICAgICAgICAnLS16LWluZGV4JzogdG9hc3RzLmxlbmd0aCAtIGluZGV4LFxuICAgICAgICAgICctLW9mZnNldCc6IGAke3JlbW92ZWQgPyBvZmZzZXRCZWZvcmVSZW1vdmUgOiBvZmZzZXQuY3VycmVudH1weGAsXG4gICAgICAgICAgJy0taW5pdGlhbC1oZWlnaHQnOiBleHBhbmRCeURlZmF1bHQgPyAnYXV0bycgOiBgJHtpbml0aWFsSGVpZ2h0fXB4YCxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi50b2FzdC5zdHlsZSxcbiAgICAgICAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gICAgICB9XG4gICAgICBvbkRyYWdFbmQ9eygpID0+IHtcbiAgICAgICAgc2V0U3dpcGluZyhmYWxzZSk7XG4gICAgICAgIHNldFN3aXBlRGlyZWN0aW9uKG51bGwpO1xuICAgICAgICBwb2ludGVyU3RhcnRSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICB9fVxuICAgICAgb25Qb2ludGVyRG93bj17KGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCAhZGlzbWlzc2libGUpIHJldHVybjtcbiAgICAgICAgZHJhZ1N0YXJ0VGltZS5jdXJyZW50ID0gbmV3IERhdGUoKTtcbiAgICAgICAgc2V0T2Zmc2V0QmVmb3JlUmVtb3ZlKG9mZnNldC5jdXJyZW50KTtcbiAgICAgICAgLy8gRW5zdXJlIHdlIG1haW50YWluIGNvcnJlY3QgcG9pbnRlciBjYXB0dXJlIGV2ZW4gd2hlbiBnb2luZyBvdXRzaWRlIG9mIHRoZSB0b2FzdCAoZS5nLiB3aGVuIHN3aXBpbmcpXG4gICAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG4gICAgICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS50YWdOYW1lID09PSAnQlVUVE9OJykgcmV0dXJuO1xuICAgICAgICBzZXRTd2lwaW5nKHRydWUpO1xuICAgICAgICBwb2ludGVyU3RhcnRSZWYuY3VycmVudCA9IHsgeDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSB9O1xuICAgICAgfX1cbiAgICAgIG9uUG9pbnRlclVwPXsoKSA9PiB7XG4gICAgICAgIGlmIChzd2lwZU91dCB8fCAhZGlzbWlzc2libGUpIHJldHVybjtcblxuICAgICAgICBwb2ludGVyU3RhcnRSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHN3aXBlQW1vdW50WCA9IE51bWJlcihcbiAgICAgICAgICB0b2FzdFJlZi5jdXJyZW50Py5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLXN3aXBlLWFtb3VudC14JykucmVwbGFjZSgncHgnLCAnJykgfHwgMCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3dpcGVBbW91bnRZID0gTnVtYmVyKFxuICAgICAgICAgIHRvYXN0UmVmLmN1cnJlbnQ/LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tc3dpcGUtYW1vdW50LXknKS5yZXBsYWNlKCdweCcsICcnKSB8fCAwLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0aW1lVGFrZW4gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGRyYWdTdGFydFRpbWUuY3VycmVudD8uZ2V0VGltZSgpO1xuXG4gICAgICAgIGNvbnN0IHN3aXBlQW1vdW50ID0gc3dpcGVEaXJlY3Rpb24gPT09ICd4JyA/IHN3aXBlQW1vdW50WCA6IHN3aXBlQW1vdW50WTtcbiAgICAgICAgY29uc3QgdmVsb2NpdHkgPSBNYXRoLmFicyhzd2lwZUFtb3VudCkgLyB0aW1lVGFrZW47XG5cbiAgICAgICAgaWYgKE1hdGguYWJzKHN3aXBlQW1vdW50KSA+PSBTV0lQRV9USFJFU0hPTEQgfHwgdmVsb2NpdHkgPiAwLjExKSB7XG4gICAgICAgICAgc2V0T2Zmc2V0QmVmb3JlUmVtb3ZlKG9mZnNldC5jdXJyZW50KTtcbiAgICAgICAgICB0b2FzdC5vbkRpc21pc3M/Lih0b2FzdCk7XG5cbiAgICAgICAgICBpZiAoc3dpcGVEaXJlY3Rpb24gPT09ICd4Jykge1xuICAgICAgICAgICAgc2V0U3dpcGVPdXREaXJlY3Rpb24oc3dpcGVBbW91bnRYID4gMCA/ICdyaWdodCcgOiAnbGVmdCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRTd2lwZU91dERpcmVjdGlvbihzd2lwZUFtb3VudFkgPiAwID8gJ2Rvd24nIDogJ3VwJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVsZXRlVG9hc3QoKTtcbiAgICAgICAgICBzZXRTd2lwZU91dCh0cnVlKTtcbiAgICAgICAgICBzZXRJc1N3aXBlZChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3dpcGluZyhmYWxzZSk7XG4gICAgICAgIHNldFN3aXBlRGlyZWN0aW9uKG51bGwpO1xuICAgICAgfX1cbiAgICAgIG9uUG9pbnRlck1vdmU9eyhldmVudCkgPT4ge1xuICAgICAgICBpZiAoIXBvaW50ZXJTdGFydFJlZi5jdXJyZW50IHx8ICFkaXNtaXNzaWJsZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGlzSGlnaGxpZ2h0ZWQgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LnRvU3RyaW5nKCkubGVuZ3RoID4gMDtcbiAgICAgICAgaWYgKGlzSGlnaGxpZ2h0ZWQpIHJldHVybjtcblxuICAgICAgICBjb25zdCB5RGVsdGEgPSBldmVudC5jbGllbnRZIC0gcG9pbnRlclN0YXJ0UmVmLmN1cnJlbnQueTtcbiAgICAgICAgY29uc3QgeERlbHRhID0gZXZlbnQuY2xpZW50WCAtIHBvaW50ZXJTdGFydFJlZi5jdXJyZW50Lng7XG5cbiAgICAgICAgY29uc3Qgc3dpcGVEaXJlY3Rpb25zID0gcHJvcHMuc3dpcGVEaXJlY3Rpb25zID8/IGdldERlZmF1bHRTd2lwZURpcmVjdGlvbnMocG9zaXRpb24pO1xuXG4gICAgICAgIC8vIERldGVybWluZSBzd2lwZSBkaXJlY3Rpb24gaWYgbm90IGFscmVhZHkgbG9ja2VkXG4gICAgICAgIGlmICghc3dpcGVEaXJlY3Rpb24gJiYgKE1hdGguYWJzKHhEZWx0YSkgPiAxIHx8IE1hdGguYWJzKHlEZWx0YSkgPiAxKSkge1xuICAgICAgICAgIHNldFN3aXBlRGlyZWN0aW9uKE1hdGguYWJzKHhEZWx0YSkgPiBNYXRoLmFicyh5RGVsdGEpID8gJ3gnIDogJ3knKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzd2lwZUFtb3VudCA9IHsgeDogMCwgeTogMCB9O1xuXG4gICAgICAgIC8vIE9ubHkgYXBwbHkgc3dpcGUgaW4gdGhlIGxvY2tlZCBkaXJlY3Rpb25cbiAgICAgICAgaWYgKHN3aXBlRGlyZWN0aW9uID09PSAneScpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgdmVydGljYWwgc3dpcGVzXG4gICAgICAgICAgaWYgKHN3aXBlRGlyZWN0aW9ucy5pbmNsdWRlcygndG9wJykgfHwgc3dpcGVEaXJlY3Rpb25zLmluY2x1ZGVzKCdib3R0b20nKSkge1xuICAgICAgICAgICAgaWYgKHN3aXBlRGlyZWN0aW9ucy5pbmNsdWRlcygndG9wJykgJiYgeURlbHRhIDwgMCkge1xuICAgICAgICAgICAgICBzd2lwZUFtb3VudC55ID0geURlbHRhO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzd2lwZURpcmVjdGlvbnMuaW5jbHVkZXMoJ2JvdHRvbScpICYmIHlEZWx0YSA+IDApIHtcbiAgICAgICAgICAgICAgc3dpcGVBbW91bnQueSA9IHlEZWx0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc3dpcGVEaXJlY3Rpb24gPT09ICd4Jykge1xuICAgICAgICAgIC8vIEhhbmRsZSBob3Jpem9udGFsIHN3aXBlc1xuICAgICAgICAgIGlmIChzd2lwZURpcmVjdGlvbnMuaW5jbHVkZXMoJ2xlZnQnKSB8fCBzd2lwZURpcmVjdGlvbnMuaW5jbHVkZXMoJ3JpZ2h0JykpIHtcbiAgICAgICAgICAgIGlmIChzd2lwZURpcmVjdGlvbnMuaW5jbHVkZXMoJ2xlZnQnKSAmJiB4RGVsdGEgPCAwKSB7XG4gICAgICAgICAgICAgIHN3aXBlQW1vdW50LnggPSB4RGVsdGE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN3aXBlRGlyZWN0aW9ucy5pbmNsdWRlcygncmlnaHQnKSAmJiB4RGVsdGEgPiAwKSB7XG4gICAgICAgICAgICAgIHN3aXBlQW1vdW50LnggPSB4RGVsdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE1hdGguYWJzKHN3aXBlQW1vdW50LngpID4gMCB8fCBNYXRoLmFicyhzd2lwZUFtb3VudC55KSA+IDApIHtcbiAgICAgICAgICBzZXRJc1N3aXBlZCh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFwcGx5IHRyYW5zZm9ybSB1c2luZyBib3RoIHggYW5kIHkgdmFsdWVzXG4gICAgICAgIHRvYXN0UmVmLmN1cnJlbnQ/LnN0eWxlLnNldFByb3BlcnR5KCctLXN3aXBlLWFtb3VudC14JywgYCR7c3dpcGVBbW91bnQueH1weGApO1xuICAgICAgICB0b2FzdFJlZi5jdXJyZW50Py5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zd2lwZS1hbW91bnQteScsIGAke3N3aXBlQW1vdW50Lnl9cHhgKTtcbiAgICAgIH19XG4gICAgPlxuICAgICAge2Nsb3NlQnV0dG9uICYmICF0b2FzdC5qc3ggPyAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPXtjbG9zZUJ1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgICBkYXRhLWRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBkYXRhLWNsb3NlLWJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9e1xuICAgICAgICAgICAgZGlzYWJsZWQgfHwgIWRpc21pc3NpYmxlXG4gICAgICAgICAgICAgID8gKCkgPT4ge31cbiAgICAgICAgICAgICAgOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBkZWxldGVUb2FzdCgpO1xuICAgICAgICAgICAgICAgICAgdG9hc3Qub25EaXNtaXNzPy4odG9hc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWVzPy5jbG9zZUJ1dHRvbiwgdG9hc3Q/LmNsYXNzTmFtZXM/LmNsb3NlQnV0dG9uKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtpY29ucz8uY2xvc2UgPz8gQ2xvc2VJY29ufVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICkgOiBudWxsfVxuICAgICAgey8qIFRPRE86IFRoaXMgY2FuIGJlIGNsZWFuZXIgKi99XG4gICAgICB7dG9hc3QuanN4IHx8IGlzVmFsaWRFbGVtZW50KHRvYXN0LnRpdGxlKSA/IChcbiAgICAgICAgdG9hc3QuanN4ID8gKFxuICAgICAgICAgIHRvYXN0LmpzeFxuICAgICAgICApIDogdHlwZW9mIHRvYXN0LnRpdGxlID09PSAnZnVuY3Rpb24nID8gKFxuICAgICAgICAgIHRvYXN0LnRpdGxlKClcbiAgICAgICAgKSA6IChcbiAgICAgICAgICB0b2FzdC50aXRsZVxuICAgICAgICApXG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0b2FzdFR5cGUgfHwgdG9hc3QuaWNvbiB8fCB0b2FzdC5wcm9taXNlID8gKFxuICAgICAgICAgICAgPGRpdiBkYXRhLWljb249XCJcIiBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZXM/Lmljb24sIHRvYXN0Py5jbGFzc05hbWVzPy5pY29uKX0+XG4gICAgICAgICAgICAgIHt0b2FzdC5wcm9taXNlIHx8ICh0b2FzdC50eXBlID09PSAnbG9hZGluZycgJiYgIXRvYXN0Lmljb24pID8gdG9hc3QuaWNvbiB8fCBnZXRMb2FkaW5nSWNvbigpIDogbnVsbH1cbiAgICAgICAgICAgICAge3RvYXN0LnR5cGUgIT09ICdsb2FkaW5nJyA/IHRvYXN0Lmljb24gfHwgaWNvbnM/Llt0b2FzdFR5cGVdIHx8IGdldEFzc2V0KHRvYXN0VHlwZSkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICA8ZGl2IGRhdGEtY29udGVudD1cIlwiIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lcz8uY29udGVudCwgdG9hc3Q/LmNsYXNzTmFtZXM/LmNvbnRlbnQpfT5cbiAgICAgICAgICAgIDxkaXYgZGF0YS10aXRsZT1cIlwiIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lcz8udGl0bGUsIHRvYXN0Py5jbGFzc05hbWVzPy50aXRsZSl9PlxuICAgICAgICAgICAgICB7dHlwZW9mIHRvYXN0LnRpdGxlID09PSAnZnVuY3Rpb24nID8gdG9hc3QudGl0bGUoKSA6IHRvYXN0LnRpdGxlfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7dG9hc3QuZGVzY3JpcHRpb24gPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBkYXRhLWRlc2NyaXB0aW9uPVwiXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25DbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICB0b2FzdERlc2NyaXB0aW9uQ2xhc3NuYW1lLFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lcz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICB0b2FzdD8uY2xhc3NOYW1lcz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0eXBlb2YgdG9hc3QuZGVzY3JpcHRpb24gPT09ICdmdW5jdGlvbicgPyB0b2FzdC5kZXNjcmlwdGlvbigpIDogdG9hc3QuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge2lzVmFsaWRFbGVtZW50KHRvYXN0LmNhbmNlbCkgPyAoXG4gICAgICAgICAgICB0b2FzdC5jYW5jZWxcbiAgICAgICAgICApIDogdG9hc3QuY2FuY2VsICYmIGlzQWN0aW9uKHRvYXN0LmNhbmNlbCkgPyAoXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGRhdGEtYnV0dG9uXG4gICAgICAgICAgICAgIGRhdGEtY2FuY2VsXG4gICAgICAgICAgICAgIHN0eWxlPXt0b2FzdC5jYW5jZWxCdXR0b25TdHlsZSB8fCBjYW5jZWxCdXR0b25TdHlsZX1cbiAgICAgICAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0d2ljZSBiZWNhdXNlIHR5cGVzY3JpcHRcbiAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aW9uKHRvYXN0LmNhbmNlbCkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBpZiAoIWRpc21pc3NpYmxlKSByZXR1cm47XG4gICAgICAgICAgICAgICAgdG9hc3QuY2FuY2VsLm9uQ2xpY2s/LihldmVudCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlVG9hc3QoKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihjbGFzc05hbWVzPy5jYW5jZWxCdXR0b24sIHRvYXN0Py5jbGFzc05hbWVzPy5jYW5jZWxCdXR0b24pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dG9hc3QuY2FuY2VsLmxhYmVsfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAge2lzVmFsaWRFbGVtZW50KHRvYXN0LmFjdGlvbikgPyAoXG4gICAgICAgICAgICB0b2FzdC5hY3Rpb25cbiAgICAgICAgICApIDogdG9hc3QuYWN0aW9uICYmIGlzQWN0aW9uKHRvYXN0LmFjdGlvbikgPyAoXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGRhdGEtYnV0dG9uXG4gICAgICAgICAgICAgIGRhdGEtYWN0aW9uXG4gICAgICAgICAgICAgIHN0eWxlPXt0b2FzdC5hY3Rpb25CdXR0b25TdHlsZSB8fCBhY3Rpb25CdXR0b25TdHlsZX1cbiAgICAgICAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0d2ljZSBiZWNhdXNlIHR5cGVzY3JpcHRcbiAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aW9uKHRvYXN0LmFjdGlvbikpIHJldHVybjtcbiAgICAgICAgICAgICAgICB0b2FzdC5hY3Rpb24ub25DbGljaz8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlbGV0ZVRvYXN0KCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lcz8uYWN0aW9uQnV0dG9uLCB0b2FzdD8uY2xhc3NOYW1lcz8uYWN0aW9uQnV0dG9uKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3RvYXN0LmFjdGlvbi5sYWJlbH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9saT5cbiAgKTtcbn07XG5cbmZ1bmN0aW9uIGdldERvY3VtZW50RGlyZWN0aW9uKCk6IFRvYXN0ZXJQcm9wc1snZGlyJ10ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiAnbHRyJztcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiAnbHRyJzsgLy8gRm9yIEZyZXNoIHB1cnBvc2VcblxuICBjb25zdCBkaXJBdHRyaWJ1dGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXInKTtcblxuICBpZiAoZGlyQXR0cmlidXRlID09PSAnYXV0bycgfHwgIWRpckF0dHJpYnV0ZSkge1xuICAgIHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmRpcmVjdGlvbiBhcyBUb2FzdGVyUHJvcHNbJ2RpciddO1xuICB9XG5cbiAgcmV0dXJuIGRpckF0dHJpYnV0ZSBhcyBUb2FzdGVyUHJvcHNbJ2RpciddO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25PZmZzZXQoZGVmYXVsdE9mZnNldDogVG9hc3RlclByb3BzWydvZmZzZXQnXSwgbW9iaWxlT2Zmc2V0OiBUb2FzdGVyUHJvcHNbJ21vYmlsZU9mZnNldCddKSB7XG4gIGNvbnN0IHN0eWxlcyA9IHt9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgW2RlZmF1bHRPZmZzZXQsIG1vYmlsZU9mZnNldF0uZm9yRWFjaCgob2Zmc2V0LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGlzTW9iaWxlID0gaW5kZXggPT09IDE7XG4gICAgY29uc3QgcHJlZml4ID0gaXNNb2JpbGUgPyAnLS1tb2JpbGUtb2Zmc2V0JyA6ICctLW9mZnNldCc7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gaXNNb2JpbGUgPyBNT0JJTEVfVklFV1BPUlRfT0ZGU0VUIDogVklFV1BPUlRfT0ZGU0VUO1xuXG4gICAgZnVuY3Rpb24gYXNzaWduQWxsKG9mZnNldDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgICBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBzdHlsZXNbYCR7cHJlZml4fS0ke2tleX1gXSA9IHR5cGVvZiBvZmZzZXQgPT09ICdudW1iZXInID8gYCR7b2Zmc2V0fXB4YCA6IG9mZnNldDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgYXNzaWduQWxsKG9mZnNldCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKG9mZnNldFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdHlsZXNbYCR7cHJlZml4fS0ke2tleX1gXSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHlsZXNbYCR7cHJlZml4fS0ke2tleX1gXSA9IHR5cGVvZiBvZmZzZXRba2V5XSA9PT0gJ251bWJlcicgPyBgJHtvZmZzZXRba2V5XX1weGAgOiBvZmZzZXRba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2lnbkFsbChkZWZhdWx0VmFsdWUpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHN0eWxlcztcbn1cblxuZnVuY3Rpb24gdXNlU29ubmVyKCkge1xuICBjb25zdCBbYWN0aXZlVG9hc3RzLCBzZXRBY3RpdmVUb2FzdHNdID0gUmVhY3QudXNlU3RhdGU8VG9hc3RUW10+KFtdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBUb2FzdFN0YXRlLnN1YnNjcmliZSgodG9hc3QpID0+IHtcbiAgICAgIGlmICgodG9hc3QgYXMgVG9hc3RUb0Rpc21pc3MpLmRpc21pc3MpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgUmVhY3RET00uZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgICAgIHNldEFjdGl2ZVRvYXN0cygodG9hc3RzKSA9PiB0b2FzdHMuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0b2FzdC5pZCkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBQcmV2ZW50IGJhdGNoaW5nLCB0ZW1wIHNvbHV0aW9uLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgc2V0QWN0aXZlVG9hc3RzKCh0b2FzdHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZFeGlzdGluZ1RvYXN0ID0gdG9hc3RzLmZpbmRJbmRleCgodCkgPT4gdC5pZCA9PT0gdG9hc3QuaWQpO1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRvYXN0IGlmIGl0IGFscmVhZHkgZXhpc3RzXG4gICAgICAgICAgICBpZiAoaW5kZXhPZkV4aXN0aW5nVG9hc3QgIT09IC0xKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgLi4udG9hc3RzLnNsaWNlKDAsIGluZGV4T2ZFeGlzdGluZ1RvYXN0KSxcbiAgICAgICAgICAgICAgICB7IC4uLnRvYXN0c1tpbmRleE9mRXhpc3RpbmdUb2FzdF0sIC4uLnRvYXN0IH0sXG4gICAgICAgICAgICAgICAgLi4udG9hc3RzLnNsaWNlKGluZGV4T2ZFeGlzdGluZ1RvYXN0ICsgMSksXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbdG9hc3QsIC4uLnRvYXN0c107XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4ge1xuICAgIHRvYXN0czogYWN0aXZlVG9hc3RzLFxuICB9O1xufVxuXG5jb25zdCBUb2FzdGVyID0gZm9yd2FyZFJlZjxIVE1MRWxlbWVudCwgVG9hc3RlclByb3BzPihmdW5jdGlvbiBUb2FzdGVyKHByb3BzLCByZWYpIHtcbiAgY29uc3Qge1xuICAgIGludmVydCxcbiAgICBwb3NpdGlvbiA9ICdib3R0b20tcmlnaHQnLFxuICAgIGhvdGtleSA9IFsnYWx0S2V5JywgJ0tleVQnXSxcbiAgICBleHBhbmQsXG4gICAgY2xvc2VCdXR0b24sXG4gICAgY2xhc3NOYW1lLFxuICAgIG9mZnNldCxcbiAgICBtb2JpbGVPZmZzZXQsXG4gICAgdGhlbWUgPSAnbGlnaHQnLFxuICAgIHJpY2hDb2xvcnMsXG4gICAgZHVyYXRpb24sXG4gICAgc3R5bGUsXG4gICAgdmlzaWJsZVRvYXN0cyA9IFZJU0lCTEVfVE9BU1RTX0FNT1VOVCxcbiAgICB0b2FzdE9wdGlvbnMsXG4gICAgZGlyID0gZ2V0RG9jdW1lbnREaXJlY3Rpb24oKSxcbiAgICBnYXAgPSBHQVAsXG4gICAgbG9hZGluZ0ljb24sXG4gICAgaWNvbnMsXG4gICAgY29udGFpbmVyQXJpYUxhYmVsID0gJ05vdGlmaWNhdGlvbnMnLFxuICAgIHBhdXNlV2hlblBhZ2VJc0hpZGRlbixcbiAgfSA9IHByb3BzO1xuICBjb25zdCBbdG9hc3RzLCBzZXRUb2FzdHNdID0gUmVhY3QudXNlU3RhdGU8VG9hc3RUW10+KFtdKTtcbiAgY29uc3QgcG9zc2libGVQb3NpdGlvbnMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoW3Bvc2l0aW9uXS5jb25jYXQodG9hc3RzLmZpbHRlcigodG9hc3QpID0+IHRvYXN0LnBvc2l0aW9uKS5tYXAoKHRvYXN0KSA9PiB0b2FzdC5wb3NpdGlvbikpKSxcbiAgICApO1xuICB9LCBbdG9hc3RzLCBwb3NpdGlvbl0pO1xuICBjb25zdCBbaGVpZ2h0cywgc2V0SGVpZ2h0c10gPSBSZWFjdC51c2VTdGF0ZTxIZWlnaHRUW10+KFtdKTtcbiAgY29uc3QgW2V4cGFuZGVkLCBzZXRFeHBhbmRlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpbnRlcmFjdGluZywgc2V0SW50ZXJhY3RpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbYWN0dWFsVGhlbWUsIHNldEFjdHVhbFRoZW1lXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIHRoZW1lICE9PSAnc3lzdGVtJ1xuICAgICAgPyB0aGVtZVxuICAgICAgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgPyB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXNcbiAgICAgICAgPyAnZGFyaydcbiAgICAgICAgOiAnbGlnaHQnXG4gICAgICA6ICdsaWdodCcsXG4gICk7XG5cbiAgY29uc3QgbGlzdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MT0xpc3RFbGVtZW50PihudWxsKTtcbiAgY29uc3QgaG90a2V5TGFiZWwgPSBob3RrZXkuam9pbignKycpLnJlcGxhY2UoL0tleS9nLCAnJykucmVwbGFjZSgvRGlnaXQvZywgJycpO1xuICBjb25zdCBsYXN0Rm9jdXNlZEVsZW1lbnRSZWYgPSBSZWFjdC51c2VSZWY8SFRNTEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBpc0ZvY3VzV2l0aGluUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcblxuICBjb25zdCByZW1vdmVUb2FzdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCh0b2FzdFRvUmVtb3ZlOiBUb2FzdFQpID0+IHtcbiAgICBzZXRUb2FzdHMoKHRvYXN0cykgPT4ge1xuICAgICAgaWYgKCF0b2FzdHMuZmluZCgodG9hc3QpID0+IHRvYXN0LmlkID09PSB0b2FzdFRvUmVtb3ZlLmlkKT8uZGVsZXRlKSB7XG4gICAgICAgIFRvYXN0U3RhdGUuZGlzbWlzcyh0b2FzdFRvUmVtb3ZlLmlkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRvYXN0cy5maWx0ZXIoKHsgaWQgfSkgPT4gaWQgIT09IHRvYXN0VG9SZW1vdmUuaWQpO1xuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gVG9hc3RTdGF0ZS5zdWJzY3JpYmUoKHRvYXN0KSA9PiB7XG4gICAgICBpZiAoKHRvYXN0IGFzIFRvYXN0VG9EaXNtaXNzKS5kaXNtaXNzKSB7XG4gICAgICAgIHNldFRvYXN0cygodG9hc3RzKSA9PiB0b2FzdHMubWFwKCh0KSA9PiAodC5pZCA9PT0gdG9hc3QuaWQgPyB7IC4uLnQsIGRlbGV0ZTogdHJ1ZSB9IDogdCkpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBQcmV2ZW50IGJhdGNoaW5nLCB0ZW1wIHNvbHV0aW9uLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgc2V0VG9hc3RzKCh0b2FzdHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZFeGlzdGluZ1RvYXN0ID0gdG9hc3RzLmZpbmRJbmRleCgodCkgPT4gdC5pZCA9PT0gdG9hc3QuaWQpO1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRvYXN0IGlmIGl0IGFscmVhZHkgZXhpc3RzXG4gICAgICAgICAgICBpZiAoaW5kZXhPZkV4aXN0aW5nVG9hc3QgIT09IC0xKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgLi4udG9hc3RzLnNsaWNlKDAsIGluZGV4T2ZFeGlzdGluZ1RvYXN0KSxcbiAgICAgICAgICAgICAgICB7IC4uLnRvYXN0c1tpbmRleE9mRXhpc3RpbmdUb2FzdF0sIC4uLnRvYXN0IH0sXG4gICAgICAgICAgICAgICAgLi4udG9hc3RzLnNsaWNlKGluZGV4T2ZFeGlzdGluZ1RvYXN0ICsgMSksXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbdG9hc3QsIC4uLnRvYXN0c107XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGVtZSAhPT0gJ3N5c3RlbScpIHtcbiAgICAgIHNldEFjdHVhbFRoZW1lKHRoZW1lKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhlbWUgPT09ICdzeXN0ZW0nKSB7XG4gICAgICAvLyBjaGVjayBpZiBjdXJyZW50IHByZWZlcmVuY2UgaXMgZGFya1xuICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcykge1xuICAgICAgICAvLyBpdCdzIGN1cnJlbnRseSBkYXJrXG4gICAgICAgIHNldEFjdHVhbFRoZW1lKCdkYXJrJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpdCdzIG5vdCBkYXJrXG4gICAgICAgIHNldEFjdHVhbFRoZW1lKCdsaWdodCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIGNvbnN0IGRhcmtNZWRpYVF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBDaHJvbWUgJiBGaXJlZm94XG4gICAgICBkYXJrTWVkaWFRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoeyBtYXRjaGVzIH0pID0+IHtcbiAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICBzZXRBY3R1YWxUaGVtZSgnZGFyaycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEFjdHVhbFRoZW1lKCdsaWdodCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2FmYXJpIDwgMTRcbiAgICAgIGRhcmtNZWRpYVF1ZXJ5LmFkZExpc3RlbmVyKCh7IG1hdGNoZXMgfSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICBzZXRBY3R1YWxUaGVtZSgnZGFyaycpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRBY3R1YWxUaGVtZSgnbGlnaHQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFt0aGVtZV0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRW5zdXJlIGV4cGFuZGVkIGlzIGFsd2F5cyBmYWxzZSB3aGVuIG5vIHRvYXN0cyBhcmUgcHJlc2VudCAvIG9ubHkgb25lIGxlZnRcbiAgICBpZiAodG9hc3RzLmxlbmd0aCA8PSAxKSB7XG4gICAgICBzZXRFeHBhbmRlZChmYWxzZSk7XG4gICAgfVxuICB9LCBbdG9hc3RzXSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBpc0hvdGtleVByZXNzZWQgPSBob3RrZXkuZXZlcnkoKGtleSkgPT4gKGV2ZW50IGFzIGFueSlba2V5XSB8fCBldmVudC5jb2RlID09PSBrZXkpO1xuXG4gICAgICBpZiAoaXNIb3RrZXlQcmVzc2VkKSB7XG4gICAgICAgIHNldEV4cGFuZGVkKHRydWUpO1xuICAgICAgICBsaXN0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnQuY29kZSA9PT0gJ0VzY2FwZScgJiZcbiAgICAgICAgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxpc3RSZWYuY3VycmVudCB8fCBsaXN0UmVmLmN1cnJlbnQ/LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKVxuICAgICAgKSB7XG4gICAgICAgIHNldEV4cGFuZGVkKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcblxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gIH0sIFtob3RrZXldKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsaXN0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCkge1xuICAgICAgICAgIGxhc3RGb2N1c2VkRWxlbWVudFJlZi5jdXJyZW50LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICBsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgaXNGb2N1c1dpdGhpblJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LCBbbGlzdFJlZi5jdXJyZW50XSk7XG5cbiAgcmV0dXJuIChcbiAgICAvLyBSZW1vdmUgaXRlbSBmcm9tIG5vcm1hbCBuYXZpZ2F0aW9uIGZsb3csIG9ubHkgYXZhaWxhYmxlIHZpYSBob3RrZXlcbiAgICA8c2VjdGlvblxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhcmlhLWxhYmVsPXtgJHtjb250YWluZXJBcmlhTGFiZWx9ICR7aG90a2V5TGFiZWx9YH1cbiAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICBhcmlhLXJlbGV2YW50PVwiYWRkaXRpb25zIHRleHRcIlxuICAgICAgYXJpYS1hdG9taWM9XCJmYWxzZVwiXG4gICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcbiAgICA+XG4gICAgICB7cG9zc2libGVQb3NpdGlvbnMubWFwKChwb3NpdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgW3ksIHhdID0gcG9zaXRpb24uc3BsaXQoJy0nKTtcblxuICAgICAgICBpZiAoIXRvYXN0cy5sZW5ndGgpIHJldHVybiBudWxsO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPG9sXG4gICAgICAgICAgICBrZXk9e3Bvc2l0aW9ufVxuICAgICAgICAgICAgZGlyPXtkaXIgPT09ICdhdXRvJyA/IGdldERvY3VtZW50RGlyZWN0aW9uKCkgOiBkaXJ9XG4gICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICByZWY9e2xpc3RSZWZ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgIGRhdGEtc29ubmVyLXRvYXN0ZXJcbiAgICAgICAgICAgIGRhdGEtdGhlbWU9e2FjdHVhbFRoZW1lfVxuICAgICAgICAgICAgZGF0YS15LXBvc2l0aW9uPXt5fVxuICAgICAgICAgICAgZGF0YS1saWZ0ZWQ9e2V4cGFuZGVkICYmIHRvYXN0cy5sZW5ndGggPiAxICYmICFleHBhbmR9XG4gICAgICAgICAgICBkYXRhLXgtcG9zaXRpb249e3h9XG4gICAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAnLS1mcm9udC10b2FzdC1oZWlnaHQnOiBgJHtoZWlnaHRzWzBdPy5oZWlnaHQgfHwgMH1weGAsXG4gICAgICAgICAgICAgICAgJy0td2lkdGgnOiBgJHtUT0FTVF9XSURUSH1weGAsXG4gICAgICAgICAgICAgICAgJy0tZ2FwJzogYCR7Z2FwfXB4YCxcbiAgICAgICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgICAgICAuLi5hc3NpZ25PZmZzZXQob2Zmc2V0LCBtb2JpbGVPZmZzZXQpLFxuICAgICAgICAgICAgICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQmx1cj17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpc0ZvY3VzV2l0aGluUmVmLmN1cnJlbnQgJiYgIWV2ZW50LmN1cnJlbnRUYXJnZXQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICBpc0ZvY3VzV2l0aGluUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGxhc3RGb2N1c2VkRWxlbWVudFJlZi5jdXJyZW50LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgIGxhc3RGb2N1c2VkRWxlbWVudFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkZvY3VzPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNOb3REaXNtaXNzaWJsZSA9XG4gICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgZXZlbnQudGFyZ2V0LmRhdGFzZXQuZGlzbWlzc2libGUgPT09ICdmYWxzZSc7XG5cbiAgICAgICAgICAgICAgaWYgKGlzTm90RGlzbWlzc2libGUpIHJldHVybjtcblxuICAgICAgICAgICAgICBpZiAoIWlzRm9jdXNXaXRoaW5SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGlzRm9jdXNXaXRoaW5SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgbGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRFeHBhbmRlZCh0cnVlKX1cbiAgICAgICAgICAgIG9uTW91c2VNb3ZlPXsoKSA9PiBzZXRFeHBhbmRlZCh0cnVlKX1cbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4ge1xuICAgICAgICAgICAgICAvLyBBdm9pZCBzZXR0aW5nIGV4cGFuZGVkIHRvIGZhbHNlIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBhIHRvYXN0LCBlLmcuIHN3aXBpbmdcbiAgICAgICAgICAgICAgaWYgKCFpbnRlcmFjdGluZykge1xuICAgICAgICAgICAgICAgIHNldEV4cGFuZGVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uRHJhZ0VuZD17KCkgPT4gc2V0RXhwYW5kZWQoZmFsc2UpfVxuICAgICAgICAgICAgb25Qb2ludGVyRG93bj17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzTm90RGlzbWlzc2libGUgPVxuICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5kYXRhc2V0LmRpc21pc3NpYmxlID09PSAnZmFsc2UnO1xuXG4gICAgICAgICAgICAgIGlmIChpc05vdERpc21pc3NpYmxlKSByZXR1cm47XG4gICAgICAgICAgICAgIHNldEludGVyYWN0aW5nKHRydWUpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uUG9pbnRlclVwPXsoKSA9PiBzZXRJbnRlcmFjdGluZyhmYWxzZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RvYXN0c1xuICAgICAgICAgICAgICAuZmlsdGVyKCh0b2FzdCkgPT4gKCF0b2FzdC5wb3NpdGlvbiAmJiBpbmRleCA9PT0gMCkgfHwgdG9hc3QucG9zaXRpb24gPT09IHBvc2l0aW9uKVxuICAgICAgICAgICAgICAubWFwKCh0b2FzdCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICA8VG9hc3RcbiAgICAgICAgICAgICAgICAgIGtleT17dG9hc3QuaWR9XG4gICAgICAgICAgICAgICAgICBpY29ucz17aWNvbnN9XG4gICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICB0b2FzdD17dG9hc3R9XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0UmljaENvbG9ycz17cmljaENvbG9yc31cbiAgICAgICAgICAgICAgICAgIGR1cmF0aW9uPXt0b2FzdE9wdGlvbnM/LmR1cmF0aW9uID8/IGR1cmF0aW9ufVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0b2FzdE9wdGlvbnM/LmNsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uQ2xhc3NOYW1lPXt0b2FzdE9wdGlvbnM/LmRlc2NyaXB0aW9uQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgICAgaW52ZXJ0PXtpbnZlcnR9XG4gICAgICAgICAgICAgICAgICB2aXNpYmxlVG9hc3RzPXt2aXNpYmxlVG9hc3RzfVxuICAgICAgICAgICAgICAgICAgY2xvc2VCdXR0b249e3RvYXN0T3B0aW9ucz8uY2xvc2VCdXR0b24gPz8gY2xvc2VCdXR0b259XG4gICAgICAgICAgICAgICAgICBpbnRlcmFjdGluZz17aW50ZXJhY3Rpbmd9XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbj17cG9zaXRpb259XG4gICAgICAgICAgICAgICAgICBzdHlsZT17dG9hc3RPcHRpb25zPy5zdHlsZX1cbiAgICAgICAgICAgICAgICAgIHVuc3R5bGVkPXt0b2FzdE9wdGlvbnM/LnVuc3R5bGVkfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lcz17dG9hc3RPcHRpb25zPy5jbGFzc05hbWVzfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uU3R5bGU9e3RvYXN0T3B0aW9ucz8uY2FuY2VsQnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25CdXR0b25TdHlsZT17dG9hc3RPcHRpb25zPy5hY3Rpb25CdXR0b25TdHlsZX1cbiAgICAgICAgICAgICAgICAgIHJlbW92ZVRvYXN0PXtyZW1vdmVUb2FzdH1cbiAgICAgICAgICAgICAgICAgIHRvYXN0cz17dG9hc3RzLmZpbHRlcigodCkgPT4gdC5wb3NpdGlvbiA9PSB0b2FzdC5wb3NpdGlvbil9XG4gICAgICAgICAgICAgICAgICBoZWlnaHRzPXtoZWlnaHRzLmZpbHRlcigoaCkgPT4gaC5wb3NpdGlvbiA9PSB0b2FzdC5wb3NpdGlvbil9XG4gICAgICAgICAgICAgICAgICBzZXRIZWlnaHRzPXtzZXRIZWlnaHRzfVxuICAgICAgICAgICAgICAgICAgZXhwYW5kQnlEZWZhdWx0PXtleHBhbmR9XG4gICAgICAgICAgICAgICAgICBnYXA9e2dhcH1cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmdJY29uPXtsb2FkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgIHBhdXNlV2hlblBhZ2VJc0hpZGRlbj17cGF1c2VXaGVuUGFnZUlzSGlkZGVufVxuICAgICAgICAgICAgICAgICAgc3dpcGVEaXJlY3Rpb25zPXtwcm9wcy5zd2lwZURpcmVjdGlvbnN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9vbD5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvc2VjdGlvbj5cbiAgKTtcbn0pO1xuZXhwb3J0IHsgdG9hc3QsIFRvYXN0ZXIsIHR5cGUgRXh0ZXJuYWxUb2FzdCwgdHlwZSBUb2FzdFQsIHR5cGUgVG9hc3RlclByb3BzLCB1c2VTb25uZXIgfTtcbmV4cG9ydCB7IHR5cGUgVG9hc3RDbGFzc25hbWVzLCB0eXBlIFRvYXN0VG9EaXNtaXNzLCB0eXBlIEFjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuIiwiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgVG9hc3RUeXBlcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0QXNzZXQgPSAodHlwZTogVG9hc3RUeXBlcyk6IEpTWC5FbGVtZW50IHwgbnVsbCA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgcmV0dXJuIFN1Y2Nlc3NJY29uO1xuXG4gICAgY2FzZSAnaW5mbyc6XG4gICAgICByZXR1cm4gSW5mb0ljb247XG5cbiAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgIHJldHVybiBXYXJuaW5nSWNvbjtcblxuICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgIHJldHVybiBFcnJvckljb247XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmNvbnN0IGJhcnMgPSBBcnJheSgxMikuZmlsbCgwKTtcblxuZXhwb3J0IGNvbnN0IExvYWRlciA9ICh7IHZpc2libGUsIGNsYXNzTmFtZSB9OiB7IHZpc2libGU6IGJvb2xlYW4sIGNsYXNzTmFtZT86IHN0cmluZyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e1snc29ubmVyLWxvYWRpbmctd3JhcHBlcicsIGNsYXNzTmFtZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKX0gZGF0YS12aXNpYmxlPXt2aXNpYmxlfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic29ubmVyLXNwaW5uZXJcIj5cbiAgICAgICAge2JhcnMubWFwKChfLCBpKSA9PiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzb25uZXItbG9hZGluZy1iYXJcIiBrZXk9e2BzcGlubmVyLWJhci0ke2l9YH0gLz5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IFN1Y2Nlc3NJY29uID0gKFxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiPlxuICAgIDxwYXRoXG4gICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgZD1cIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjg1Ny05LjgwOWEuNzUuNzUgMCAwMC0xLjIxNC0uODgybC0zLjQ4MyA0Ljc5LTEuODgtMS44OGEuNzUuNzUgMCAxMC0xLjA2IDEuMDYxbDIuNSAyLjVhLjc1Ljc1IDAgMDAxLjEzNy0uMDg5bDQtNS41elwiXG4gICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgV2FybmluZ0ljb24gPSAoXG4gIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjIwXCI+XG4gICAgPHBhdGhcbiAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICBkPVwiTTkuNDAxIDMuMDAzYzEuMTU1LTIgNC4wNDMtMiA1LjE5NyAwbDcuMzU1IDEyLjc0OGMxLjE1NCAyLS4yOSA0LjUtMi41OTkgNC41SDQuNjQ1Yy0yLjMwOSAwLTMuNzUyLTIuNS0yLjU5OC00LjVMOS40IDMuMDAzek0xMiA4LjI1YS43NS43NSAwIDAxLjc1Ljc1djMuNzVhLjc1Ljc1IDAgMDEtMS41IDBWOWEuNzUuNzUgMCAwMS43NS0uNzV6bTAgOC4yNWEuNzUuNzUgMCAxMDAtMS41Ljc1Ljc1IDAgMDAwIDEuNXpcIlxuICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IEluZm9JY29uID0gKFxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiPlxuICAgIDxwYXRoXG4gICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgZD1cIk0xOCAxMGE4IDggMCAxMS0xNiAwIDggOCAwIDAxMTYgMHptLTctNGExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6TTkgOWEuNzUuNzUgMCAwMDAgMS41aC4yNTNhLjI1LjI1IDAgMDEuMjQ0LjMwNGwtLjQ1OSAyLjA2NkExLjc1IDEuNzUgMCAwMDEwLjc0NyAxNUgxMWEuNzUuNzUgMCAwMDAtMS41aC0uMjUzYS4yNS4yNSAwIDAxLS4yNDQtLjMwNGwuNDU5LTIuMDY2QTEuNzUgMS43NSAwIDAwOS4yNTMgOUg5elwiXG4gICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgRXJyb3JJY29uID0gKFxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiPlxuICAgIDxwYXRoXG4gICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgZD1cIk0xOCAxMGE4IDggMCAxMS0xNiAwIDggOCAwIDAxMTYgMHptLTgtNWEuNzUuNzUgMCAwMS43NS43NXY0LjVhLjc1Ljc1IDAgMDEtMS41IDB2LTQuNUEuNzUuNzUgMCAwMTEwIDV6bTAgMTBhMSAxIDAgMTAwLTIgMSAxIDAgMDAwIDJ6XCJcbiAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5leHBvcnQgY29uc3QgQ2xvc2VJY29uID0gKFxuICA8c3ZnXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgd2lkdGg9XCIxMlwiXG4gICAgaGVpZ2h0PVwiMTJcIlxuICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgIHN0cm9rZVdpZHRoPVwiMS41XCJcbiAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICA+XG4gICAgPGxpbmUgeDE9XCIxOFwiIHkxPVwiNlwiIHgyPVwiNlwiIHkyPVwiMThcIj48L2xpbmU+XG4gICAgPGxpbmUgeDE9XCI2XCIgeTE9XCI2XCIgeDI9XCIxOFwiIHkyPVwiMThcIj48L2xpbmU+XG4gIDwvc3ZnPlxuKTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBjb25zdCB1c2VJc0RvY3VtZW50SGlkZGVuID0gKCkgPT4ge1xuICBjb25zdCBbaXNEb2N1bWVudEhpZGRlbiwgc2V0SXNEb2N1bWVudEhpZGRlbl0gPSBSZWFjdC51c2VTdGF0ZShkb2N1bWVudC5oaWRkZW4pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBzZXRJc0RvY3VtZW50SGlkZGVuKGRvY3VtZW50LmhpZGRlbik7XG4gICAgfTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgY2FsbGJhY2spO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIGNhbGxiYWNrKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiBpc0RvY3VtZW50SGlkZGVuO1xufTtcbiIsImltcG9ydCB0eXBlIHsgRXh0ZXJuYWxUb2FzdCwgUHJvbWlzZURhdGEsIFByb21pc2VULCBUb2FzdFQsIFRvYXN0VG9EaXNtaXNzLCBUb2FzdFR5cGVzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmxldCB0b2FzdHNDb3VudGVyID0gMTtcblxudHlwZSB0aXRsZVQgPSAoKCkgPT4gUmVhY3QuUmVhY3ROb2RlKSB8IFJlYWN0LlJlYWN0Tm9kZTtcblxuY2xhc3MgT2JzZXJ2ZXIge1xuICBzdWJzY3JpYmVyczogQXJyYXk8KHRvYXN0OiBFeHRlcm5hbFRvYXN0IHwgVG9hc3RUb0Rpc21pc3MpID0+IHZvaWQ+O1xuICB0b2FzdHM6IEFycmF5PFRvYXN0VCB8IFRvYXN0VG9EaXNtaXNzPjtcbiAgZGlzbWlzc2VkVG9hc3RzOiBTZXQ8c3RyaW5nIHwgbnVtYmVyPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnN1YnNjcmliZXJzID0gW107XG4gICAgdGhpcy50b2FzdHMgPSBbXTtcbiAgICB0aGlzLmRpc21pc3NlZFRvYXN0cyA9IG5ldyBTZXQoKTtcbiAgfVxuXG4gIC8vIFdlIHVzZSBhcnJvdyBmdW5jdGlvbnMgdG8gbWFpbnRhaW4gdGhlIGNvcnJlY3QgYHRoaXNgIHJlZmVyZW5jZVxuICBzdWJzY3JpYmUgPSAoc3Vic2NyaWJlcjogKHRvYXN0OiBUb2FzdFQgfCBUb2FzdFRvRGlzbWlzcykgPT4gdm9pZCkgPT4ge1xuICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcbiAgICAgIHRoaXMuc3Vic2NyaWJlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xuICB9O1xuXG4gIHB1Ymxpc2ggPSAoZGF0YTogVG9hc3RUKSA9PiB7XG4gICAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKChzdWJzY3JpYmVyKSA9PiBzdWJzY3JpYmVyKGRhdGEpKTtcbiAgfTtcblxuICBhZGRUb2FzdCA9IChkYXRhOiBUb2FzdFQpID0+IHtcbiAgICB0aGlzLnB1Ymxpc2goZGF0YSk7XG4gICAgdGhpcy50b2FzdHMgPSBbLi4udGhpcy50b2FzdHMsIGRhdGFdO1xuICB9O1xuXG4gIGNyZWF0ZSA9IChcbiAgICBkYXRhOiBFeHRlcm5hbFRvYXN0ICYge1xuICAgICAgbWVzc2FnZT86IHRpdGxlVDtcbiAgICAgIHR5cGU/OiBUb2FzdFR5cGVzO1xuICAgICAgcHJvbWlzZT86IFByb21pc2VUO1xuICAgICAganN4PzogUmVhY3QuUmVhY3RFbGVtZW50O1xuICAgIH0sXG4gICkgPT4ge1xuICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4ucmVzdCB9ID0gZGF0YTtcbiAgICBjb25zdCBpZCA9IHR5cGVvZiBkYXRhPy5pZCA9PT0gJ251bWJlcicgfHwgZGF0YS5pZD8ubGVuZ3RoID4gMCA/IGRhdGEuaWQgOiB0b2FzdHNDb3VudGVyKys7XG4gICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMudG9hc3RzLmZpbmQoKHRvYXN0KSA9PiB7XG4gICAgICByZXR1cm4gdG9hc3QuaWQgPT09IGlkO1xuICAgIH0pO1xuICAgIGNvbnN0IGRpc21pc3NpYmxlID0gZGF0YS5kaXNtaXNzaWJsZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGRhdGEuZGlzbWlzc2libGU7XG5cbiAgICBpZiAodGhpcy5kaXNtaXNzZWRUb2FzdHMuaGFzKGlkKSkge1xuICAgICAgdGhpcy5kaXNtaXNzZWRUb2FzdHMuZGVsZXRlKGlkKTtcbiAgICB9XG5cbiAgICBpZiAoYWxyZWFkeUV4aXN0cykge1xuICAgICAgdGhpcy50b2FzdHMgPSB0aGlzLnRvYXN0cy5tYXAoKHRvYXN0KSA9PiB7XG4gICAgICAgIGlmICh0b2FzdC5pZCA9PT0gaWQpIHtcbiAgICAgICAgICB0aGlzLnB1Ymxpc2goeyAuLi50b2FzdCwgLi4uZGF0YSwgaWQsIHRpdGxlOiBtZXNzYWdlIH0pO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50b2FzdCxcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGRpc21pc3NpYmxlLFxuICAgICAgICAgICAgdGl0bGU6IG1lc3NhZ2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b2FzdDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvYXN0KHsgdGl0bGU6IG1lc3NhZ2UsIC4uLnJlc3QsIGRpc21pc3NpYmxlLCBpZCB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaWQ7XG4gIH07XG5cbiAgZGlzbWlzcyA9IChpZD86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIHRoaXMuZGlzbWlzc2VkVG9hc3RzLmFkZChpZCk7XG5cbiAgICBpZiAoIWlkKSB7XG4gICAgICB0aGlzLnRvYXN0cy5mb3JFYWNoKCh0b2FzdCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goKHN1YnNjcmliZXIpID0+IHN1YnNjcmliZXIoeyBpZDogdG9hc3QuaWQsIGRpc21pc3M6IHRydWUgfSkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaCgoc3Vic2NyaWJlcikgPT4gc3Vic2NyaWJlcih7IGlkLCBkaXNtaXNzOiB0cnVlIH0pKTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG5cbiAgbWVzc2FnZSA9IChtZXNzYWdlOiB0aXRsZVQgfCBSZWFjdC5SZWFjdE5vZGUsIGRhdGE/OiBFeHRlcm5hbFRvYXN0KSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKHsgLi4uZGF0YSwgbWVzc2FnZSB9KTtcbiAgfTtcblxuICBlcnJvciA9IChtZXNzYWdlOiB0aXRsZVQgfCBSZWFjdC5SZWFjdE5vZGUsIGRhdGE/OiBFeHRlcm5hbFRvYXN0KSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKHsgLi4uZGF0YSwgbWVzc2FnZSwgdHlwZTogJ2Vycm9yJyB9KTtcbiAgfTtcblxuICBzdWNjZXNzID0gKG1lc3NhZ2U6IHRpdGxlVCB8IFJlYWN0LlJlYWN0Tm9kZSwgZGF0YT86IEV4dGVybmFsVG9hc3QpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoeyAuLi5kYXRhLCB0eXBlOiAnc3VjY2VzcycsIG1lc3NhZ2UgfSk7XG4gIH07XG5cbiAgaW5mbyA9IChtZXNzYWdlOiB0aXRsZVQgfCBSZWFjdC5SZWFjdE5vZGUsIGRhdGE/OiBFeHRlcm5hbFRvYXN0KSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKHsgLi4uZGF0YSwgdHlwZTogJ2luZm8nLCBtZXNzYWdlIH0pO1xuICB9O1xuXG4gIHdhcm5pbmcgPSAobWVzc2FnZTogdGl0bGVUIHwgUmVhY3QuUmVhY3ROb2RlLCBkYXRhPzogRXh0ZXJuYWxUb2FzdCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7IC4uLmRhdGEsIHR5cGU6ICd3YXJuaW5nJywgbWVzc2FnZSB9KTtcbiAgfTtcblxuICBsb2FkaW5nID0gKG1lc3NhZ2U6IHRpdGxlVCB8IFJlYWN0LlJlYWN0Tm9kZSwgZGF0YT86IEV4dGVybmFsVG9hc3QpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoeyAuLi5kYXRhLCB0eXBlOiAnbG9hZGluZycsIG1lc3NhZ2UgfSk7XG4gIH07XG5cbiAgcHJvbWlzZSA9IDxUb2FzdERhdGE+KHByb21pc2U6IFByb21pc2VUPFRvYXN0RGF0YT4sIGRhdGE/OiBQcm9taXNlRGF0YTxUb2FzdERhdGE+KSA9PiB7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIHNob3dcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgaWQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZGF0YS5sb2FkaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlkID0gdGhpcy5jcmVhdGUoe1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBwcm9taXNlLFxuICAgICAgICB0eXBlOiAnbG9hZGluZycsXG4gICAgICAgIG1lc3NhZ2U6IGRhdGEubG9hZGluZyxcbiAgICAgICAgZGVzY3JpcHRpb246IHR5cGVvZiBkYXRhLmRlc2NyaXB0aW9uICE9PSAnZnVuY3Rpb24nID8gZGF0YS5kZXNjcmlwdGlvbiA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHAgPSBwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSA/IHByb21pc2UgOiBwcm9taXNlKCk7XG5cbiAgICBsZXQgc2hvdWxkRGlzbWlzcyA9IGlkICE9PSB1bmRlZmluZWQ7XG4gICAgbGV0IHJlc3VsdDogWydyZXNvbHZlJywgVG9hc3REYXRhXSB8IFsncmVqZWN0JywgdW5rbm93bl07XG5cbiAgICBjb25zdCBvcmlnaW5hbFByb21pc2UgPSBwXG4gICAgICAudGhlbihhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmVzdWx0ID0gWydyZXNvbHZlJywgcmVzcG9uc2VdO1xuICAgICAgICBjb25zdCBpc1JlYWN0RWxlbWVudFJlc3BvbnNlID0gUmVhY3QuaXNWYWxpZEVsZW1lbnQocmVzcG9uc2UpO1xuICAgICAgICBpZiAoaXNSZWFjdEVsZW1lbnRSZXNwb25zZSkge1xuICAgICAgICAgIHNob3VsZERpc21pc3MgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNyZWF0ZSh7IGlkLCB0eXBlOiAnZGVmYXVsdCcsIG1lc3NhZ2U6IHJlc3BvbnNlIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSHR0cFJlc3BvbnNlKHJlc3BvbnNlKSAmJiAhcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBzaG91bGREaXNtaXNzID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgICAgICB0eXBlb2YgZGF0YS5lcnJvciA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IGRhdGEuZXJyb3IoYEhUVFAgZXJyb3IhIHN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9YCkgOiBkYXRhLmVycm9yO1xuICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID1cbiAgICAgICAgICAgIHR5cGVvZiBkYXRhLmRlc2NyaXB0aW9uID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgID8gYXdhaXQgZGF0YS5kZXNjcmlwdGlvbihgSFRUUCBlcnJvciEgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgICAgICAgICAgICA6IGRhdGEuZGVzY3JpcHRpb247XG4gICAgICAgICAgdGhpcy5jcmVhdGUoeyBpZCwgdHlwZTogJ2Vycm9yJywgbWVzc2FnZSwgZGVzY3JpcHRpb24gfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS5zdWNjZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzaG91bGREaXNtaXNzID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHR5cGVvZiBkYXRhLnN1Y2Nlc3MgPT09ICdmdW5jdGlvbicgPyBhd2FpdCBkYXRhLnN1Y2Nlc3MocmVzcG9uc2UpIDogZGF0YS5zdWNjZXNzO1xuICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID1cbiAgICAgICAgICAgIHR5cGVvZiBkYXRhLmRlc2NyaXB0aW9uID09PSAnZnVuY3Rpb24nID8gYXdhaXQgZGF0YS5kZXNjcmlwdGlvbihyZXNwb25zZSkgOiBkYXRhLmRlc2NyaXB0aW9uO1xuICAgICAgICAgIHRoaXMuY3JlYXRlKHsgaWQsIHR5cGU6ICdzdWNjZXNzJywgbWVzc2FnZSwgZGVzY3JpcHRpb24gfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goYXN5bmMgKGVycm9yKSA9PiB7XG4gICAgICAgIHJlc3VsdCA9IFsncmVqZWN0JywgZXJyb3JdO1xuICAgICAgICBpZiAoZGF0YS5lcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2hvdWxkRGlzbWlzcyA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0eXBlb2YgZGF0YS5lcnJvciA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IGRhdGEuZXJyb3IoZXJyb3IpIDogZGF0YS5lcnJvcjtcbiAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHR5cGVvZiBkYXRhLmRlc2NyaXB0aW9uID09PSAnZnVuY3Rpb24nID8gYXdhaXQgZGF0YS5kZXNjcmlwdGlvbihlcnJvcikgOiBkYXRhLmRlc2NyaXB0aW9uO1xuICAgICAgICAgIHRoaXMuY3JlYXRlKHsgaWQsIHR5cGU6ICdlcnJvcicsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBpZiAoc2hvdWxkRGlzbWlzcykge1xuICAgICAgICAgIC8vIFRvYXN0IGlzIHN0aWxsIGluIGxvYWQgc3RhdGUgKGFuZCB3aWxsIGJlIGluZGVmaW5pdGVseSDigJQgZGlzbWlzcyBpdClcbiAgICAgICAgICB0aGlzLmRpc21pc3MoaWQpO1xuICAgICAgICAgIGlkID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS5maW5hbGx5Py4oKTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdW53cmFwID0gKCkgPT5cbiAgICAgIG5ldyBQcm9taXNlPFRvYXN0RGF0YT4oKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICAgICAgb3JpZ2luYWxQcm9taXNlLnRoZW4oKCkgPT4gKHJlc3VsdFswXSA9PT0gJ3JlamVjdCcgPyByZWplY3QocmVzdWx0WzFdKSA6IHJlc29sdmUocmVzdWx0WzFdKSkpLmNhdGNoKHJlamVjdCksXG4gICAgICApO1xuXG4gICAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIGlkICE9PSAnbnVtYmVyJykge1xuICAgICAgLy8gY2Fubm90IE9iamVjdC5hc3NpZ24gb24gdW5kZWZpbmVkXG4gICAgICByZXR1cm4geyB1bndyYXAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oaWQsIHsgdW53cmFwIH0pO1xuICAgIH1cbiAgfTtcblxuICBjdXN0b20gPSAoanN4OiAoaWQ6IG51bWJlciB8IHN0cmluZykgPT4gUmVhY3QuUmVhY3RFbGVtZW50LCBkYXRhPzogRXh0ZXJuYWxUb2FzdCkgPT4ge1xuICAgIGNvbnN0IGlkID0gZGF0YT8uaWQgfHwgdG9hc3RzQ291bnRlcisrO1xuICAgIHRoaXMuY3JlYXRlKHsganN4OiBqc3goaWQpLCBpZCwgLi4uZGF0YSB9KTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG5cbiAgZ2V0QWN0aXZlVG9hc3RzID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnRvYXN0cy5maWx0ZXIoKHRvYXN0KSA9PiAhdGhpcy5kaXNtaXNzZWRUb2FzdHMuaGFzKHRvYXN0LmlkKSk7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBUb2FzdFN0YXRlID0gbmV3IE9ic2VydmVyKCk7XG5cbi8vIGJpbmQgdGhpcyB0byB0aGUgdG9hc3QgZnVuY3Rpb25cbmNvbnN0IHRvYXN0RnVuY3Rpb24gPSAobWVzc2FnZTogdGl0bGVULCBkYXRhPzogRXh0ZXJuYWxUb2FzdCkgPT4ge1xuICBjb25zdCBpZCA9IGRhdGE/LmlkIHx8IHRvYXN0c0NvdW50ZXIrKztcblxuICBUb2FzdFN0YXRlLmFkZFRvYXN0KHtcbiAgICB0aXRsZTogbWVzc2FnZSxcbiAgICAuLi5kYXRhLFxuICAgIGlkLFxuICB9KTtcbiAgcmV0dXJuIGlkO1xufTtcblxuY29uc3QgaXNIdHRwUmVzcG9uc2UgPSAoZGF0YTogYW55KTogZGF0YSBpcyBSZXNwb25zZSA9PiB7XG4gIHJldHVybiAoXG4gICAgZGF0YSAmJlxuICAgIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICdvaycgaW4gZGF0YSAmJlxuICAgIHR5cGVvZiBkYXRhLm9rID09PSAnYm9vbGVhbicgJiZcbiAgICAnc3RhdHVzJyBpbiBkYXRhICYmXG4gICAgdHlwZW9mIGRhdGEuc3RhdHVzID09PSAnbnVtYmVyJ1xuICApO1xufTtcblxuY29uc3QgYmFzaWNUb2FzdCA9IHRvYXN0RnVuY3Rpb247XG5cbmNvbnN0IGdldEhpc3RvcnkgPSAoKSA9PiBUb2FzdFN0YXRlLnRvYXN0cztcbmNvbnN0IGdldFRvYXN0cyA9ICgpID0+IFRvYXN0U3RhdGUuZ2V0QWN0aXZlVG9hc3RzKCk7XG5cbi8vIFdlIHVzZSBgT2JqZWN0LmFzc2lnbmAgdG8gbWFpbnRhaW4gdGhlIGNvcnJlY3QgdHlwZXMgYXMgd2Ugd291bGQgbG9zZSB0aGVtIG90aGVyd2lzZVxuZXhwb3J0IGNvbnN0IHRvYXN0ID0gT2JqZWN0LmFzc2lnbihcbiAgYmFzaWNUb2FzdCxcbiAge1xuICAgIHN1Y2Nlc3M6IFRvYXN0U3RhdGUuc3VjY2VzcyxcbiAgICBpbmZvOiBUb2FzdFN0YXRlLmluZm8sXG4gICAgd2FybmluZzogVG9hc3RTdGF0ZS53YXJuaW5nLFxuICAgIGVycm9yOiBUb2FzdFN0YXRlLmVycm9yLFxuICAgIGN1c3RvbTogVG9hc3RTdGF0ZS5jdXN0b20sXG4gICAgbWVzc2FnZTogVG9hc3RTdGF0ZS5tZXNzYWdlLFxuICAgIHByb21pc2U6IFRvYXN0U3RhdGUucHJvbWlzZSxcbiAgICBkaXNtaXNzOiBUb2FzdFN0YXRlLmRpc21pc3MsXG4gICAgbG9hZGluZzogVG9hc3RTdGF0ZS5sb2FkaW5nLFxuICB9LFxuICB7IGdldEhpc3RvcnksIGdldFRvYXN0cyB9LFxuKTtcbiIsIlxuICAgICAgICAgIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgeyBpbnNlcnRBdCB9ID0ge30pIHtcbiAgICAgICAgICAgIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVyblxuICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXVxuICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpXG4gICAgICAgICAgICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJ1xuICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGluc2VydEF0ID09PSAndG9wJykge1xuICAgICAgICAgICAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZClcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICAgICAgICAgICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAiLCJpbXBvcnQgc3R5bGVJbmplY3QgZnJvbSAnI3N0eWxlLWluamVjdCc7c3R5bGVJbmplY3QoXCI6d2hlcmUoaHRtbFtkaXI9XFxcImx0clxcXCJdKSw6d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0ZXJdW2Rpcj1cXFwibHRyXFxcIl0pey0tdG9hc3QtaWNvbi1tYXJnaW4tc3RhcnQ6IC0zcHg7LS10b2FzdC1pY29uLW1hcmdpbi1lbmQ6IDRweDstLXRvYXN0LXN2Zy1tYXJnaW4tc3RhcnQ6IC0xcHg7LS10b2FzdC1zdmctbWFyZ2luLWVuZDogMHB4Oy0tdG9hc3QtYnV0dG9uLW1hcmdpbi1zdGFydDogYXV0bzstLXRvYXN0LWJ1dHRvbi1tYXJnaW4tZW5kOiAwOy0tdG9hc3QtY2xvc2UtYnV0dG9uLXN0YXJ0OiAwOy0tdG9hc3QtY2xvc2UtYnV0dG9uLWVuZDogdW5zZXQ7LS10b2FzdC1jbG9zZS1idXR0b24tdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTM1JSwgLTM1JSl9OndoZXJlKGh0bWxbZGlyPVxcXCJydGxcXFwiXSksOndoZXJlKFtkYXRhLXNvbm5lci10b2FzdGVyXVtkaXI9XFxcInJ0bFxcXCJdKXstLXRvYXN0LWljb24tbWFyZ2luLXN0YXJ0OiA0cHg7LS10b2FzdC1pY29uLW1hcmdpbi1lbmQ6IC0zcHg7LS10b2FzdC1zdmctbWFyZ2luLXN0YXJ0OiAwcHg7LS10b2FzdC1zdmctbWFyZ2luLWVuZDogLTFweDstLXRvYXN0LWJ1dHRvbi1tYXJnaW4tc3RhcnQ6IDA7LS10b2FzdC1idXR0b24tbWFyZ2luLWVuZDogYXV0bzstLXRvYXN0LWNsb3NlLWJ1dHRvbi1zdGFydDogdW5zZXQ7LS10b2FzdC1jbG9zZS1idXR0b24tZW5kOiAwOy0tdG9hc3QtY2xvc2UtYnV0dG9uLXRyYW5zZm9ybTogdHJhbnNsYXRlKDM1JSwgLTM1JSl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdGVyXSl7cG9zaXRpb246Zml4ZWQ7d2lkdGg6dmFyKC0td2lkdGgpO2ZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxOb3RvIFNhbnMsc2Fucy1zZXJpZixBcHBsZSBDb2xvciBFbW9qaSxTZWdvZSBVSSBFbW9qaSxTZWdvZSBVSSBTeW1ib2wsTm90byBDb2xvciBFbW9qaTstLWdyYXkxOiBoc2woMCwgMCUsIDk5JSk7LS1ncmF5MjogaHNsKDAsIDAlLCA5Ny4zJSk7LS1ncmF5MzogaHNsKDAsIDAlLCA5NS4xJSk7LS1ncmF5NDogaHNsKDAsIDAlLCA5MyUpOy0tZ3JheTU6IGhzbCgwLCAwJSwgOTAuOSUpOy0tZ3JheTY6IGhzbCgwLCAwJSwgODguNyUpOy0tZ3JheTc6IGhzbCgwLCAwJSwgODUuOCUpOy0tZ3JheTg6IGhzbCgwLCAwJSwgNzglKTstLWdyYXk5OiBoc2woMCwgMCUsIDU2LjElKTstLWdyYXkxMDogaHNsKDAsIDAlLCA1Mi4zJSk7LS1ncmF5MTE6IGhzbCgwLCAwJSwgNDMuNSUpOy0tZ3JheTEyOiBoc2woMCwgMCUsIDklKTstLWJvcmRlci1yYWRpdXM6IDhweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowO21hcmdpbjowO2xpc3Qtc3R5bGU6bm9uZTtvdXRsaW5lOm5vbmU7ei1pbmRleDo5OTk5OTk5OTk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjRzIGVhc2V9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLWxpZnRlZD1cXFwidHJ1ZVxcXCJdKXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTBweCl9QG1lZGlhIChob3Zlcjogbm9uZSkgYW5kIChwb2ludGVyOiBjb2Fyc2Upezp3aGVyZShbZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS1saWZ0ZWQ9XFxcInRydWVcXFwiXSl7dHJhbnNmb3JtOm5vbmV9fTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS14LXBvc2l0aW9uPVxcXCJyaWdodFxcXCJdKXtyaWdodDp2YXIoLS1vZmZzZXQtcmlnaHQpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS14LXBvc2l0aW9uPVxcXCJsZWZ0XFxcIl0pe2xlZnQ6dmFyKC0tb2Zmc2V0LWxlZnQpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS14LXBvc2l0aW9uPVxcXCJjZW50ZXJcXFwiXSl7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteS1wb3NpdGlvbj1cXFwidG9wXFxcIl0pe3RvcDp2YXIoLS1vZmZzZXQtdG9wKX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteS1wb3NpdGlvbj1cXFwiYm90dG9tXFxcIl0pe2JvdHRvbTp2YXIoLS1vZmZzZXQtYm90dG9tKX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSl7LS15OiB0cmFuc2xhdGVZKDEwMCUpOy0tbGlmdC1hbW91bnQ6IGNhbGModmFyKC0tbGlmdCkgKiB2YXIoLS1nYXApKTt6LWluZGV4OnZhcigtLXotaW5kZXgpO3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDt0cmFuc2Zvcm06dmFyKC0teSk7ZmlsdGVyOmJsdXIoMCk7dG91Y2gtYWN0aW9uOm5vbmU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjRzLG9wYWNpdHkgLjRzLGhlaWdodCAuNHMsYm94LXNoYWRvdyAuMnM7Ym94LXNpemluZzpib3JkZXItYm94O291dGxpbmU6bm9uZTtvdmVyZmxvdy13cmFwOmFueXdoZXJlfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3R5bGVkPVxcXCJ0cnVlXFxcIl0pe3BhZGRpbmc6MTZweDtiYWNrZ3JvdW5kOnZhcigtLW5vcm1hbC1iZyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ub3JtYWwtYm9yZGVyKTtjb2xvcjp2YXIoLS1ub3JtYWwtdGV4dCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1ib3JkZXItcmFkaXVzKTtib3gtc2hhZG93OjAgNHB4IDEycHggIzAwMDAwMDFhO3dpZHRoOnZhcigtLXdpZHRoKTtmb250LXNpemU6MTNweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHh9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF06Zm9jdXMtdmlzaWJsZSl7Ym94LXNoYWRvdzowIDRweCAxMnB4ICMwMDAwMDAxYSwwIDAgMCAycHggIzAwMDN9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS15LXBvc2l0aW9uPVxcXCJ0b3BcXFwiXSl7dG9wOjA7LS15OiB0cmFuc2xhdGVZKC0xMDAlKTstLWxpZnQ6IDE7LS1saWZ0LWFtb3VudDogY2FsYygxICogdmFyKC0tZ2FwKSl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS15LXBvc2l0aW9uPVxcXCJib3R0b21cXFwiXSl7Ym90dG9tOjA7LS15OiB0cmFuc2xhdGVZKDEwMCUpOy0tbGlmdDogLTE7LS1saWZ0LWFtb3VudDogY2FsYyh2YXIoLS1saWZ0KSAqIHZhcigtLWdhcCkpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKSA6d2hlcmUoW2RhdGEtZGVzY3JpcHRpb25dKXtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS40O2NvbG9yOmluaGVyaXR9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pIDp3aGVyZShbZGF0YS10aXRsZV0pe2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxLjU7Y29sb3I6aW5oZXJpdH06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSkgOndoZXJlKFtkYXRhLWljb25dKXtkaXNwbGF5OmZsZXg7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDtwb3NpdGlvbjpyZWxhdGl2ZTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1zaHJpbms6MDttYXJnaW4tbGVmdDp2YXIoLS10b2FzdC1pY29uLW1hcmdpbi1zdGFydCk7bWFyZ2luLXJpZ2h0OnZhcigtLXRvYXN0LWljb24tbWFyZ2luLWVuZCl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1wcm9taXNlPVxcXCJ0cnVlXFxcIl0pIDp3aGVyZShbZGF0YS1pY29uXSk+c3Zne29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO2FuaW1hdGlvbjpzb25uZXItZmFkZS1pbiAuM3MgZWFzZSBmb3J3YXJkc306d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSkgOndoZXJlKFtkYXRhLWljb25dKT4qe2ZsZXgtc2hyaW5rOjB9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pIDp3aGVyZShbZGF0YS1pY29uXSkgc3Zne21hcmdpbi1sZWZ0OnZhcigtLXRvYXN0LXN2Zy1tYXJnaW4tc3RhcnQpO21hcmdpbi1yaWdodDp2YXIoLS10b2FzdC1zdmctbWFyZ2luLWVuZCl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pIDp3aGVyZShbZGF0YS1jb250ZW50XSl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4fVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9dHJ1ZV0gW2RhdGEtYnV0dG9uXXtib3JkZXItcmFkaXVzOjRweDtwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6OHB4O2hlaWdodDoyNHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLW5vcm1hbC1iZyk7YmFja2dyb3VuZDp2YXIoLS1ub3JtYWwtdGV4dCk7bWFyZ2luLWxlZnQ6dmFyKC0tdG9hc3QtYnV0dG9uLW1hcmdpbi1zdGFydCk7bWFyZ2luLXJpZ2h0OnZhcigtLXRvYXN0LWJ1dHRvbi1tYXJnaW4tZW5kKTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXNocmluazowO3RyYW5zaXRpb246b3BhY2l0eSAuNHMsYm94LXNoYWRvdyAuMnN9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pIDp3aGVyZShbZGF0YS1idXR0b25dKTpmb2N1cy12aXNpYmxle2JveC1zaGFkb3c6MCAwIDAgMnB4ICMwMDA2fTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKSA6d2hlcmUoW2RhdGEtYnV0dG9uXSk6Zmlyc3Qtb2YtdHlwZXttYXJnaW4tbGVmdDp2YXIoLS10b2FzdC1idXR0b24tbWFyZ2luLXN0YXJ0KTttYXJnaW4tcmlnaHQ6dmFyKC0tdG9hc3QtYnV0dG9uLW1hcmdpbi1lbmQpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKSA6d2hlcmUoW2RhdGEtY2FuY2VsXSl7Y29sb3I6dmFyKC0tbm9ybWFsLXRleHQpO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDgpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdGhlbWU9XFxcImRhcmtcXFwiXSkgOndoZXJlKFtkYXRhLWNhbmNlbF0pe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMyl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pIDp3aGVyZShbZGF0YS1jbG9zZS1idXR0b25dKXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OnZhcigtLXRvYXN0LWNsb3NlLWJ1dHRvbi1zdGFydCk7cmlnaHQ6dmFyKC0tdG9hc3QtY2xvc2UtYnV0dG9uLWVuZCk7dG9wOjA7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzowO2NvbG9yOnZhcigtLWdyYXkxMik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ncmF5NCk7dHJhbnNmb3JtOnZhcigtLXRvYXN0LWNsb3NlLWJ1dHRvbi10cmFuc2Zvcm0pO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MTt0cmFuc2l0aW9uOm9wYWNpdHkgLjFzLGJhY2tncm91bmQgLjJzLGJvcmRlci1jb2xvciAuMnN9W2RhdGEtc29ubmVyLXRvYXN0XSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0tZ3JheTEpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKSA6d2hlcmUoW2RhdGEtY2xvc2UtYnV0dG9uXSk6Zm9jdXMtdmlzaWJsZXtib3gtc2hhZG93OjAgNHB4IDEycHggIzAwMDAwMDFhLDAgMCAwIDJweCAjMDAwM306d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSkgOndoZXJlKFtkYXRhLWRpc2FibGVkPVxcXCJ0cnVlXFxcIl0pe2N1cnNvcjpub3QtYWxsb3dlZH06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSk6aG92ZXIgOndoZXJlKFtkYXRhLWNsb3NlLWJ1dHRvbl0pOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZ3JheTIpO2JvcmRlci1jb2xvcjp2YXIoLS1ncmF5NSl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwaW5nPVxcXCJ0cnVlXFxcIl0pOmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTUwJTtyaWdodDotNTAlO2hlaWdodDoxMDAlO3otaW5kZXg6LTF9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS15LXBvc2l0aW9uPVxcXCJ0b3BcXFwiXVtkYXRhLXN3aXBpbmc9XFxcInRydWVcXFwiXSk6YmVmb3Jle2JvdHRvbTo1MCU7dHJhbnNmb3JtOnNjYWxlWSgzKSB0cmFuc2xhdGVZKDUwJSl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS15LXBvc2l0aW9uPVxcXCJib3R0b21cXFwiXVtkYXRhLXN3aXBpbmc9XFxcInRydWVcXFwiXSk6YmVmb3Jle3RvcDo1MCU7dHJhbnNmb3JtOnNjYWxlWSgzKSB0cmFuc2xhdGVZKC01MCUpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGluZz1cXFwiZmFsc2VcXFwiXVtkYXRhLXJlbW92ZWQ9XFxcInRydWVcXFwiXSk6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt0cmFuc2Zvcm06c2NhbGVZKDIpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKTphZnRlcntjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtoZWlnaHQ6Y2FsYyh2YXIoLS1nYXApICsgMXB4KTtib3R0b206MTAwJTt3aWR0aDoxMDAlfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtbW91bnRlZD1cXFwidHJ1ZVxcXCJdKXstLXk6IHRyYW5zbGF0ZVkoMCk7b3BhY2l0eToxfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtZXhwYW5kZWQ9XFxcImZhbHNlXFxcIl1bZGF0YS1mcm9udD1cXFwiZmFsc2VcXFwiXSl7LS1zY2FsZTogdmFyKC0tdG9hc3RzLWJlZm9yZSkgKiAuMDUgKyAxOy0teTogdHJhbnNsYXRlWShjYWxjKHZhcigtLWxpZnQtYW1vdW50KSAqIHZhcigtLXRvYXN0cy1iZWZvcmUpKSkgc2NhbGUoY2FsYygtMSAqIHZhcigtLXNjYWxlKSkpO2hlaWdodDp2YXIoLS1mcm9udC10b2FzdC1oZWlnaHQpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKT4qe3RyYW5zaXRpb246b3BhY2l0eSAuNHN9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1leHBhbmRlZD1cXFwiZmFsc2VcXFwiXVtkYXRhLWZyb250PVxcXCJmYWxzZVxcXCJdW2RhdGEtc3R5bGVkPVxcXCJ0cnVlXFxcIl0pPip7b3BhY2l0eTowfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdmlzaWJsZT1cXFwiZmFsc2VcXFwiXSl7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmV9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1tb3VudGVkPVxcXCJ0cnVlXFxcIl1bZGF0YS1leHBhbmRlZD1cXFwidHJ1ZVxcXCJdKXstLXk6IHRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1saWZ0KSAqIHZhcigtLW9mZnNldCkpKTtoZWlnaHQ6dmFyKC0taW5pdGlhbC1oZWlnaHQpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtcmVtb3ZlZD1cXFwidHJ1ZVxcXCJdW2RhdGEtZnJvbnQ9XFxcInRydWVcXFwiXVtkYXRhLXN3aXBlLW91dD1cXFwiZmFsc2VcXFwiXSl7LS15OiB0cmFuc2xhdGVZKGNhbGModmFyKC0tbGlmdCkgKiAtMTAwJSkpO29wYWNpdHk6MH06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXJlbW92ZWQ9XFxcInRydWVcXFwiXVtkYXRhLWZyb250PVxcXCJmYWxzZVxcXCJdW2RhdGEtc3dpcGUtb3V0PVxcXCJmYWxzZVxcXCJdW2RhdGEtZXhwYW5kZWQ9XFxcInRydWVcXFwiXSl7LS15OiB0cmFuc2xhdGVZKGNhbGModmFyKC0tbGlmdCkgKiB2YXIoLS1vZmZzZXQpICsgdmFyKC0tbGlmdCkgKiAtMTAwJSkpO29wYWNpdHk6MH06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXJlbW92ZWQ9XFxcInRydWVcXFwiXVtkYXRhLWZyb250PVxcXCJmYWxzZVxcXCJdW2RhdGEtc3dpcGUtb3V0PVxcXCJmYWxzZVxcXCJdW2RhdGEtZXhwYW5kZWQ9XFxcImZhbHNlXFxcIl0pey0teTogdHJhbnNsYXRlWSg0MCUpO29wYWNpdHk6MDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNXMsb3BhY2l0eSAuMnN9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1yZW1vdmVkPVxcXCJ0cnVlXFxcIl1bZGF0YS1mcm9udD1cXFwiZmFsc2VcXFwiXSk6YmVmb3Jle2hlaWdodDpjYWxjKHZhcigtLWluaXRpYWwtaGVpZ2h0KSArIDIwJSl9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBpbmc9dHJ1ZV17dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZVkodmFyKC0tc3dpcGUtYW1vdW50LXksIDBweCkpIHRyYW5zbGF0ZSh2YXIoLS1zd2lwZS1hbW91bnQteCwgMHB4KSk7dHJhbnNpdGlvbjpub25lfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwZWQ9dHJ1ZV17dXNlci1zZWxlY3Q6bm9uZX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGUtb3V0PXRydWVdW2RhdGEteS1wb3NpdGlvbj1ib3R0b21dLFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwZS1vdXQ9dHJ1ZV1bZGF0YS15LXBvc2l0aW9uPXRvcF17YW5pbWF0aW9uLWR1cmF0aW9uOi4yczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0O2FuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHN9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBlLW91dD10cnVlXVtkYXRhLXN3aXBlLWRpcmVjdGlvbj1sZWZ0XXthbmltYXRpb24tbmFtZTpzd2lwZS1vdXQtbGVmdH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGUtb3V0PXRydWVdW2RhdGEtc3dpcGUtZGlyZWN0aW9uPXJpZ2h0XXthbmltYXRpb24tbmFtZTpzd2lwZS1vdXQtcmlnaHR9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBlLW91dD10cnVlXVtkYXRhLXN3aXBlLWRpcmVjdGlvbj11cF17YW5pbWF0aW9uLW5hbWU6c3dpcGUtb3V0LXVwfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwZS1vdXQ9dHJ1ZV1bZGF0YS1zd2lwZS1kaXJlY3Rpb249ZG93bl17YW5pbWF0aW9uLW5hbWU6c3dpcGUtb3V0LWRvd259QGtleWZyYW1lcyBzd2lwZS1vdXQtbGVmdHswJXt0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlKHZhcigtLXN3aXBlLWFtb3VudC14KSk7b3BhY2l0eToxfXRve3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGUoY2FsYyh2YXIoLS1zd2lwZS1hbW91bnQteCkgLSAxMDAlKSk7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHN3aXBlLW91dC1yaWdodHswJXt0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlKHZhcigtLXN3aXBlLWFtb3VudC14KSk7b3BhY2l0eToxfXRve3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGUoY2FsYyh2YXIoLS1zd2lwZS1hbW91bnQteCkgKyAxMDAlKSk7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHN3aXBlLW91dC11cHswJXt0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlWSh2YXIoLS1zd2lwZS1hbW91bnQteSkpO29wYWNpdHk6MX10b3t0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlWShjYWxjKHZhcigtLXN3aXBlLWFtb3VudC15KSAtIDEwMCUpKTtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgc3dpcGUtb3V0LWRvd257MCV7dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZVkodmFyKC0tc3dpcGUtYW1vdW50LXkpKTtvcGFjaXR5OjF9dG97dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1zd2lwZS1hbW91bnQteSkgKyAxMDAlKSk7b3BhY2l0eTowfX1AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpe1tkYXRhLXNvbm5lci10b2FzdGVyXXtwb3NpdGlvbjpmaXhlZDtyaWdodDp2YXIoLS1tb2JpbGUtb2Zmc2V0LXJpZ2h0KTtsZWZ0OnZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCk7d2lkdGg6MTAwJX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGlyPXJ0bF17bGVmdDpjYWxjKHZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCkgKiAtMSl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdIFtkYXRhLXNvbm5lci10b2FzdF17bGVmdDowO3JpZ2h0OjA7d2lkdGg6Y2FsYygxMDAlIC0gdmFyKC0tbW9iaWxlLW9mZnNldC1sZWZ0KSAqIDIpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249bGVmdF17bGVmdDp2YXIoLS1tb2JpbGUtb2Zmc2V0LWxlZnQpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXktcG9zaXRpb249Ym90dG9tXXtib3R0b206dmFyKC0tbW9iaWxlLW9mZnNldC1ib3R0b20pfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXktcG9zaXRpb249dG9wXXt0b3A6dmFyKC0tbW9iaWxlLW9mZnNldC10b3ApfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249Y2VudGVyXXtsZWZ0OnZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCk7cmlnaHQ6dmFyKC0tbW9iaWxlLW9mZnNldC1yaWdodCk7dHJhbnNmb3JtOm5vbmV9fVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXRoZW1lPWxpZ2h0XXstLW5vcm1hbC1iZzogI2ZmZjstLW5vcm1hbC1ib3JkZXI6IHZhcigtLWdyYXk0KTstLW5vcm1hbC10ZXh0OiB2YXIoLS1ncmF5MTIpOy0tc3VjY2Vzcy1iZzogaHNsKDE0MywgODUlLCA5NiUpOy0tc3VjY2Vzcy1ib3JkZXI6IGhzbCgxNDUsIDkyJSwgOTElKTstLXN1Y2Nlc3MtdGV4dDogaHNsKDE0MCwgMTAwJSwgMjclKTstLWluZm8tYmc6IGhzbCgyMDgsIDEwMCUsIDk3JSk7LS1pbmZvLWJvcmRlcjogaHNsKDIyMSwgOTElLCA5MSUpOy0taW5mby10ZXh0OiBoc2woMjEwLCA5MiUsIDQ1JSk7LS13YXJuaW5nLWJnOiBoc2woNDksIDEwMCUsIDk3JSk7LS13YXJuaW5nLWJvcmRlcjogaHNsKDQ5LCA5MSUsIDkxJSk7LS13YXJuaW5nLXRleHQ6IGhzbCgzMSwgOTIlLCA0NSUpOy0tZXJyb3ItYmc6IGhzbCgzNTksIDEwMCUsIDk3JSk7LS1lcnJvci1ib3JkZXI6IGhzbCgzNTksIDEwMCUsIDk0JSk7LS1lcnJvci10ZXh0OiBoc2woMzYwLCAxMDAlLCA0NSUpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXRoZW1lPWxpZ2h0XSBbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtaW52ZXJ0PXRydWVdey0tbm9ybWFsLWJnOiAjMDAwOy0tbm9ybWFsLWJvcmRlcjogaHNsKDAsIDAlLCAyMCUpOy0tbm9ybWFsLXRleHQ6IHZhcigtLWdyYXkxKX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS10aGVtZT1kYXJrXSBbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtaW52ZXJ0PXRydWVdey0tbm9ybWFsLWJnOiAjZmZmOy0tbm9ybWFsLWJvcmRlcjogdmFyKC0tZ3JheTMpOy0tbm9ybWFsLXRleHQ6IHZhcigtLWdyYXkxMil9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtdGhlbWU9ZGFya117LS1ub3JtYWwtYmc6ICMwMDA7LS1ub3JtYWwtYmctaG92ZXI6IGhzbCgwLCAwJSwgMTIlKTstLW5vcm1hbC1ib3JkZXI6IGhzbCgwLCAwJSwgMjAlKTstLW5vcm1hbC1ib3JkZXItaG92ZXI6IGhzbCgwLCAwJSwgMjUlKTstLW5vcm1hbC10ZXh0OiB2YXIoLS1ncmF5MSk7LS1zdWNjZXNzLWJnOiBoc2woMTUwLCAxMDAlLCA2JSk7LS1zdWNjZXNzLWJvcmRlcjogaHNsKDE0NywgMTAwJSwgMTIlKTstLXN1Y2Nlc3MtdGV4dDogaHNsKDE1MCwgODYlLCA2NSUpOy0taW5mby1iZzogaHNsKDIxNSwgMTAwJSwgNiUpOy0taW5mby1ib3JkZXI6IGhzbCgyMjMsIDEwMCUsIDEyJSk7LS1pbmZvLXRleHQ6IGhzbCgyMTYsIDg3JSwgNjUlKTstLXdhcm5pbmctYmc6IGhzbCg2NCwgMTAwJSwgNiUpOy0td2FybmluZy1ib3JkZXI6IGhzbCg2MCwgMTAwJSwgMTIlKTstLXdhcm5pbmctdGV4dDogaHNsKDQ2LCA4NyUsIDY1JSk7LS1lcnJvci1iZzogaHNsKDM1OCwgNzYlLCAxMCUpOy0tZXJyb3ItYm9yZGVyOiBoc2woMzU3LCA4OSUsIDE2JSk7LS1lcnJvci10ZXh0OiBoc2woMzU4LCAxMDAlLCA4MSUpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXRoZW1lPWRhcmtdIFtkYXRhLXNvbm5lci10b2FzdF0gW2RhdGEtY2xvc2UtYnV0dG9uXXtiYWNrZ3JvdW5kOnZhcigtLW5vcm1hbC1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLW5vcm1hbC1ib3JkZXIpO2NvbG9yOnZhcigtLW5vcm1hbC10ZXh0KX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS10aGVtZT1kYXJrXSBbZGF0YS1zb25uZXItdG9hc3RdIFtkYXRhLWNsb3NlLWJ1dHRvbl06aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1ub3JtYWwtYmctaG92ZXIpO2JvcmRlci1jb2xvcjp2YXIoLS1ub3JtYWwtYm9yZGVyLWhvdmVyKX1bZGF0YS1yaWNoLWNvbG9ycz10cnVlXVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS10eXBlPXN1Y2Nlc3NdLFtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9c3VjY2Vzc10gW2RhdGEtY2xvc2UtYnV0dG9uXXtiYWNrZ3JvdW5kOnZhcigtLXN1Y2Nlc3MtYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1zdWNjZXNzLWJvcmRlcik7Y29sb3I6dmFyKC0tc3VjY2Vzcy10ZXh0KX1bZGF0YS1yaWNoLWNvbG9ycz10cnVlXVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS10eXBlPWluZm9dLFtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9aW5mb10gW2RhdGEtY2xvc2UtYnV0dG9uXXtiYWNrZ3JvdW5kOnZhcigtLWluZm8tYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1pbmZvLWJvcmRlcik7Y29sb3I6dmFyKC0taW5mby10ZXh0KX1bZGF0YS1yaWNoLWNvbG9ycz10cnVlXVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS10eXBlPXdhcm5pbmddLFtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9d2FybmluZ10gW2RhdGEtY2xvc2UtYnV0dG9uXXtiYWNrZ3JvdW5kOnZhcigtLXdhcm5pbmctYmcpO2JvcmRlci1jb2xvcjp2YXIoLS13YXJuaW5nLWJvcmRlcik7Y29sb3I6dmFyKC0td2FybmluZy10ZXh0KX1bZGF0YS1yaWNoLWNvbG9ycz10cnVlXVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS10eXBlPWVycm9yXSxbZGF0YS1yaWNoLWNvbG9ycz10cnVlXVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS10eXBlPWVycm9yXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0tZXJyb3ItYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1lcnJvci1ib3JkZXIpO2NvbG9yOnZhcigtLWVycm9yLXRleHQpfS5zb25uZXItbG9hZGluZy13cmFwcGVyey0tc2l6ZTogMTZweDtoZWlnaHQ6dmFyKC0tc2l6ZSk7d2lkdGg6dmFyKC0tc2l6ZSk7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt6LWluZGV4OjEwfS5zb25uZXItbG9hZGluZy13cmFwcGVyW2RhdGEtdmlzaWJsZT1mYWxzZV17dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7YW5pbWF0aW9uOnNvbm5lci1mYWRlLW91dCAuMnMgZWFzZSBmb3J3YXJkc30uc29ubmVyLXNwaW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7dG9wOjUwJTtsZWZ0OjUwJTtoZWlnaHQ6dmFyKC0tc2l6ZSk7d2lkdGg6dmFyKC0tc2l6ZSl9LnNvbm5lci1sb2FkaW5nLWJhcnthbmltYXRpb246c29ubmVyLXNwaW4gMS4ycyBsaW5lYXIgaW5maW5pdGU7YmFja2dyb3VuZDp2YXIoLS1ncmF5MTEpO2JvcmRlci1yYWRpdXM6NnB4O2hlaWdodDo4JTtsZWZ0Oi0xMCU7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0zLjklO3dpZHRoOjI0JX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxKXthbmltYXRpb24tZGVsYXk6LTEuMnM7dHJhbnNmb3JtOnJvdGF0ZSguMDAwMWRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDIpe2FuaW1hdGlvbi1kZWxheTotMS4xczt0cmFuc2Zvcm06cm90YXRlKDMwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi0xczt0cmFuc2Zvcm06cm90YXRlKDYwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoNCl7YW5pbWF0aW9uLWRlbGF5Oi0uOXM7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDUpe2FuaW1hdGlvbi1kZWxheTotLjhzO3RyYW5zZm9ybTpyb3RhdGUoMTIwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi0uN3M7dHJhbnNmb3JtOnJvdGF0ZSgxNTBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCg3KXthbmltYXRpb24tZGVsYXk6LS42czt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDgpe2FuaW1hdGlvbi1kZWxheTotLjVzO3RyYW5zZm9ybTpyb3RhdGUoMjEwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoOSl7YW5pbWF0aW9uLWRlbGF5Oi0uNHM7dHJhbnNmb3JtOnJvdGF0ZSgyNDBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxMCl7YW5pbWF0aW9uLWRlbGF5Oi0uM3M7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxMSl7YW5pbWF0aW9uLWRlbGF5Oi0uMnM7dHJhbnNmb3JtOnJvdGF0ZSgzMDBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgxMil7YW5pbWF0aW9uLWRlbGF5Oi0uMXM7dHJhbnNmb3JtOnJvdGF0ZSgzMzBkZWcpIHRyYW5zbGF0ZSgxNDYlKX1Aa2V5ZnJhbWVzIHNvbm5lci1mYWRlLWluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9fUBrZXlmcmFtZXMgc29ubmVyLWZhZGUtb3V0ezAle29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOCl9fUBrZXlmcmFtZXMgc29ubmVyLXNwaW57MCV7b3BhY2l0eToxfXRve29wYWNpdHk6LjE1fX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pe1tkYXRhLXNvbm5lci10b2FzdF0sW2RhdGEtc29ubmVyLXRvYXN0XT4qLC5zb25uZXItbG9hZGluZy1iYXJ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudDthbmltYXRpb246bm9uZSFpbXBvcnRhbnR9fS5zb25uZXItbG9hZGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246b3BhY2l0eSAuMnMsdHJhbnNmb3JtIC4yc30uc29ubmVyLWxvYWRlcltkYXRhLXZpc2libGU9ZmFsc2Vde29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjgpIHRyYW5zbGF0ZSgtNTAlLC01MCUpfVxcblwiKSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCB0eXBlIFRvYXN0VHlwZXMgPSAnbm9ybWFsJyB8ICdhY3Rpb24nIHwgJ3N1Y2Nlc3MnIHwgJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJyB8ICdsb2FkaW5nJyB8ICdkZWZhdWx0JztcblxuZXhwb3J0IHR5cGUgUHJvbWlzZVQ8RGF0YSA9IGFueT4gPSBQcm9taXNlPERhdGE+IHwgKCgpID0+IFByb21pc2U8RGF0YT4pO1xuXG5leHBvcnQgdHlwZSBQcm9taXNlVFJlc3VsdDxEYXRhID0gYW55PiA9XG4gIHwgc3RyaW5nXG4gIHwgUmVhY3QuUmVhY3ROb2RlXG4gIHwgKChkYXRhOiBEYXRhKSA9PiBSZWFjdC5SZWFjdE5vZGUgfCBzdHJpbmcgfCBQcm9taXNlPFJlYWN0LlJlYWN0Tm9kZSB8IHN0cmluZz4pO1xuXG5leHBvcnQgdHlwZSBQcm9taXNlRXh0ZXJuYWxUb2FzdCA9IE9taXQ8RXh0ZXJuYWxUb2FzdCwgJ2Rlc2NyaXB0aW9uJz47XG5cbmV4cG9ydCB0eXBlIFByb21pc2VEYXRhPFRvYXN0RGF0YSA9IGFueT4gPSBQcm9taXNlRXh0ZXJuYWxUb2FzdCAmIHtcbiAgbG9hZGluZz86IHN0cmluZyB8IFJlYWN0LlJlYWN0Tm9kZTtcbiAgc3VjY2Vzcz86IFByb21pc2VUUmVzdWx0PFRvYXN0RGF0YT47XG4gIGVycm9yPzogUHJvbWlzZVRSZXN1bHQ7XG4gIGRlc2NyaXB0aW9uPzogUHJvbWlzZVRSZXN1bHQ7XG4gIGZpbmFsbHk/OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3RDbGFzc25hbWVzIHtcbiAgdG9hc3Q/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBjbG9zZUJ1dHRvbj86IHN0cmluZztcbiAgY2FuY2VsQnV0dG9uPzogc3RyaW5nO1xuICBhY3Rpb25CdXR0b24/OiBzdHJpbmc7XG4gIHN1Y2Nlc3M/OiBzdHJpbmc7XG4gIGVycm9yPzogc3RyaW5nO1xuICBpbmZvPzogc3RyaW5nO1xuICB3YXJuaW5nPzogc3RyaW5nO1xuICBsb2FkaW5nPzogc3RyaW5nO1xuICBkZWZhdWx0Pzogc3RyaW5nO1xuICBjb250ZW50Pzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvYXN0SWNvbnMge1xuICBzdWNjZXNzPzogUmVhY3QuUmVhY3ROb2RlO1xuICBpbmZvPzogUmVhY3QuUmVhY3ROb2RlO1xuICB3YXJuaW5nPzogUmVhY3QuUmVhY3ROb2RlO1xuICBlcnJvcj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgbG9hZGluZz86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xvc2U/OiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uIHtcbiAgbGFiZWw6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50LCBNb3VzZUV2ZW50PikgPT4gdm9pZDtcbiAgYWN0aW9uQnV0dG9uU3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvYXN0VCB7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmc7XG4gIHRpdGxlPzogKCgpID0+IFJlYWN0LlJlYWN0Tm9kZSkgfCBSZWFjdC5SZWFjdE5vZGU7XG4gIHR5cGU/OiBUb2FzdFR5cGVzO1xuICBpY29uPzogUmVhY3QuUmVhY3ROb2RlO1xuICBqc3g/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIHJpY2hDb2xvcnM/OiBib29sZWFuO1xuICBpbnZlcnQ/OiBib29sZWFuO1xuICBjbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIGRpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgZGVzY3JpcHRpb24/OiAoKCkgPT4gUmVhY3QuUmVhY3ROb2RlKSB8IFJlYWN0LlJlYWN0Tm9kZTtcbiAgZHVyYXRpb24/OiBudW1iZXI7XG4gIGRlbGV0ZT86IGJvb2xlYW47XG4gIGFjdGlvbj86IEFjdGlvbiB8IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2FuY2VsPzogQWN0aW9uIHwgUmVhY3QuUmVhY3ROb2RlO1xuICBvbkRpc21pc3M/OiAodG9hc3Q6IFRvYXN0VCkgPT4gdm9pZDtcbiAgb25BdXRvQ2xvc2U/OiAodG9hc3Q6IFRvYXN0VCkgPT4gdm9pZDtcbiAgcHJvbWlzZT86IFByb21pc2VUO1xuICBjYW5jZWxCdXR0b25TdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGFjdGlvbkJ1dHRvblN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICB1bnN0eWxlZD86IGJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgY2xhc3NOYW1lcz86IFRvYXN0Q2xhc3NuYW1lcztcbiAgZGVzY3JpcHRpb25DbGFzc05hbWU/OiBzdHJpbmc7XG4gIHBvc2l0aW9uPzogUG9zaXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbihhY3Rpb246IEFjdGlvbiB8IFJlYWN0LlJlYWN0Tm9kZSk6IGFjdGlvbiBpcyBBY3Rpb24ge1xuICByZXR1cm4gKGFjdGlvbiBhcyBBY3Rpb24pLmxhYmVsICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uID0gJ3RvcC1sZWZ0JyB8ICd0b3AtcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICdib3R0b20tcmlnaHQnIHwgJ3RvcC1jZW50ZXInIHwgJ2JvdHRvbS1jZW50ZXInO1xuZXhwb3J0IGludGVyZmFjZSBIZWlnaHRUIHtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIHRvYXN0SWQ6IG51bWJlciB8IHN0cmluZztcbiAgcG9zaXRpb246IFBvc2l0aW9uO1xufVxuXG5pbnRlcmZhY2UgVG9hc3RPcHRpb25zIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBjbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gIGRlc2NyaXB0aW9uQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGNhbmNlbEJ1dHRvblN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgYWN0aW9uQnV0dG9uU3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgdW5zdHlsZWQ/OiBib29sZWFuO1xuICBjbGFzc05hbWVzPzogVG9hc3RDbGFzc25hbWVzO1xufVxuXG50eXBlIE9mZnNldCA9XG4gIHwge1xuICAgICAgdG9wPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgICAgcmlnaHQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgICBib3R0b20/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgICBsZWZ0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIH1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3RlclByb3BzIHtcbiAgaW52ZXJ0PzogYm9vbGVhbjtcbiAgdGhlbWU/OiAnbGlnaHQnIHwgJ2RhcmsnIHwgJ3N5c3RlbSc7XG4gIHBvc2l0aW9uPzogUG9zaXRpb247XG4gIGhvdGtleT86IHN0cmluZ1tdO1xuICByaWNoQ29sb3JzPzogYm9vbGVhbjtcbiAgZXhwYW5kPzogYm9vbGVhbjtcbiAgZHVyYXRpb24/OiBudW1iZXI7XG4gIGdhcD86IG51bWJlcjtcbiAgdmlzaWJsZVRvYXN0cz86IG51bWJlcjtcbiAgY2xvc2VCdXR0b24/OiBib29sZWFuO1xuICB0b2FzdE9wdGlvbnM/OiBUb2FzdE9wdGlvbnM7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBvZmZzZXQ/OiBPZmZzZXQ7XG4gIG1vYmlsZU9mZnNldD86IE9mZnNldDtcbiAgZGlyPzogJ3J0bCcgfCAnbHRyJyB8ICdhdXRvJztcbiAgc3dpcGVEaXJlY3Rpb25zPzogU3dpcGVEaXJlY3Rpb25bXTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgdGhlIGBpY29uc2AgcHJvcCBpbnN0ZWFkOlxuICAgKiBgYGBqc3hcbiAgICogPFRvYXN0ZXJcbiAgICogICBpY29ucz17eyBsb2FkaW5nOiA8TG9hZGluZ0ljb24gLz4gfX1cbiAgICogLz5cbiAgICogYGBgXG4gICAqL1xuICBsb2FkaW5nSWNvbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgaWNvbnM/OiBUb2FzdEljb25zO1xuICBjb250YWluZXJBcmlhTGFiZWw/OiBzdHJpbmc7XG4gIHBhdXNlV2hlblBhZ2VJc0hpZGRlbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFN3aXBlRGlyZWN0aW9uID0gJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3RQcm9wcyB7XG4gIHRvYXN0OiBUb2FzdFQ7XG4gIHRvYXN0czogVG9hc3RUW107XG4gIGluZGV4OiBudW1iZXI7XG4gIHN3aXBlRGlyZWN0aW9ucz86IFN3aXBlRGlyZWN0aW9uW107XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBpbnZlcnQ6IGJvb2xlYW47XG4gIGhlaWdodHM6IEhlaWdodFRbXTtcbiAgc2V0SGVpZ2h0czogUmVhY3QuRGlzcGF0Y2g8UmVhY3QuU2V0U3RhdGVBY3Rpb248SGVpZ2h0VFtdPj47XG4gIHJlbW92ZVRvYXN0OiAodG9hc3Q6IFRvYXN0VCkgPT4gdm9pZDtcbiAgZ2FwPzogbnVtYmVyO1xuICBwb3NpdGlvbjogUG9zaXRpb247XG4gIHZpc2libGVUb2FzdHM6IG51bWJlcjtcbiAgZXhwYW5kQnlEZWZhdWx0OiBib29sZWFuO1xuICBjbG9zZUJ1dHRvbjogYm9vbGVhbjtcbiAgaW50ZXJhY3Rpbmc6IGJvb2xlYW47XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgY2FuY2VsQnV0dG9uU3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBhY3Rpb25CdXR0b25TdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHVuc3R5bGVkPzogYm9vbGVhbjtcbiAgZGVzY3JpcHRpb25DbGFzc05hbWU/OiBzdHJpbmc7XG4gIGxvYWRpbmdJY29uPzogUmVhY3QuUmVhY3ROb2RlO1xuICBjbGFzc05hbWVzPzogVG9hc3RDbGFzc25hbWVzO1xuICBpY29ucz86IFRvYXN0SWNvbnM7XG4gIGNsb3NlQnV0dG9uQXJpYUxhYmVsPzogc3RyaW5nO1xuICBwYXVzZVdoZW5QYWdlSXNIaWRkZW46IGJvb2xlYW47XG4gIGRlZmF1bHRSaWNoQ29sb3JzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gU3dpcGVTdGF0ZVR5cGVzIHtcbiAgU3dpcGVkT3V0ID0gJ1N3aXBlZE91dCcsXG4gIFN3aXBlZEJhY2sgPSAnU3dpcGVkQmFjaycsXG4gIE5vdFN3aXBlZCA9ICdOb3RTd2lwZWQnLFxufVxuXG5leHBvcnQgdHlwZSBUaGVtZSA9ICdsaWdodCcgfCAnZGFyayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3RUb0Rpc21pc3Mge1xuICBpZDogbnVtYmVyIHwgc3RyaW5nO1xuICBkaXNtaXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBFeHRlcm5hbFRvYXN0ID0gT21pdDxUb2FzdFQsICdpZCcgfCAndHlwZScgfCAndGl0bGUnIHwgJ2pzeCcgfCAnZGVsZXRlJyB8ICdwcm9taXNlJz4gJiB7XG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nO1xufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImZvcndhcmRSZWYiLCJpc1ZhbGlkRWxlbWVudCIsIlJlYWN0RE9NIiwiZ2V0QXNzZXQiLCJ0eXBlIiwiU3VjY2Vzc0ljb24iLCJJbmZvSWNvbiIsIldhcm5pbmdJY29uIiwiRXJyb3JJY29uIiwiYmFycyIsIkxvYWRlciIsInZpc2libGUiLCJjbGFzc05hbWUiLCJfIiwiaSIsIkNsb3NlSWNvbiIsInVzZUlzRG9jdW1lbnRIaWRkZW4iLCJpc0RvY3VtZW50SGlkZGVuIiwic2V0SXNEb2N1bWVudEhpZGRlbiIsImNhbGxiYWNrIiwidG9hc3RzQ291bnRlciIsIk9ic2VydmVyIiwic3Vic2NyaWJlciIsImluZGV4IiwiZGF0YSIsIl9hIiwibWVzc2FnZSIsInJlc3QiLCJpZCIsImFscmVhZHlFeGlzdHMiLCJ0b2FzdCIsImRpc21pc3NpYmxlIiwicHJvbWlzZSIsInAiLCJzaG91bGREaXNtaXNzIiwicmVzdWx0Iiwib3JpZ2luYWxQcm9taXNlIiwicmVzcG9uc2UiLCJpc0h0dHBSZXNwb25zZSIsImRlc2NyaXB0aW9uIiwiZXJyb3IiLCJ1bndyYXAiLCJyZXNvbHZlIiwicmVqZWN0IiwianN4IiwiVG9hc3RTdGF0ZSIsInRvYXN0RnVuY3Rpb24iLCJiYXNpY1RvYXN0IiwiZ2V0SGlzdG9yeSIsImdldFRvYXN0cyIsInN0eWxlSW5qZWN0IiwiY3NzIiwiaW5zZXJ0QXQiLCJoZWFkIiwic3R5bGUiLCJpc0FjdGlvbiIsImFjdGlvbiIsIlZJU0lCTEVfVE9BU1RTX0FNT1VOVCIsIlZJRVdQT1JUX09GRlNFVCIsIk1PQklMRV9WSUVXUE9SVF9PRkZTRVQiLCJUT0FTVF9MSUZFVElNRSIsIlRPQVNUX1dJRFRIIiwiR0FQIiwiU1dJUEVfVEhSRVNIT0xEIiwiVElNRV9CRUZPUkVfVU5NT1VOVCIsImNuIiwiY2xhc3NlcyIsImdldERlZmF1bHRTd2lwZURpcmVjdGlvbnMiLCJwb3NpdGlvbiIsInkiLCJ4IiwiZGlyZWN0aW9ucyIsIlRvYXN0IiwicHJvcHMiLCJfYiIsIl9jIiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJfaCIsIl9pIiwiX2oiLCJfayIsIlRvYXN0ZXJJbnZlcnQiLCJ1bnN0eWxlZCIsImludGVyYWN0aW5nIiwic2V0SGVpZ2h0cyIsInZpc2libGVUb2FzdHMiLCJoZWlnaHRzIiwidG9hc3RzIiwiZXhwYW5kZWQiLCJyZW1vdmVUb2FzdCIsImRlZmF1bHRSaWNoQ29sb3JzIiwiY2xvc2VCdXR0b25Gcm9tVG9hc3RlciIsImNhbmNlbEJ1dHRvblN0eWxlIiwiYWN0aW9uQnV0dG9uU3R5bGUiLCJkZXNjcmlwdGlvbkNsYXNzTmFtZSIsImR1cmF0aW9uRnJvbVRvYXN0ZXIiLCJnYXAiLCJsb2FkaW5nSWNvblByb3AiLCJleHBhbmRCeURlZmF1bHQiLCJjbGFzc05hbWVzIiwiaWNvbnMiLCJjbG9zZUJ1dHRvbkFyaWFMYWJlbCIsInBhdXNlV2hlblBhZ2VJc0hpZGRlbiIsInN3aXBlRGlyZWN0aW9uIiwic2V0U3dpcGVEaXJlY3Rpb24iLCJzd2lwZU91dERpcmVjdGlvbiIsInNldFN3aXBlT3V0RGlyZWN0aW9uIiwibW91bnRlZCIsInNldE1vdW50ZWQiLCJyZW1vdmVkIiwic2V0UmVtb3ZlZCIsInN3aXBpbmciLCJzZXRTd2lwaW5nIiwic3dpcGVPdXQiLCJzZXRTd2lwZU91dCIsImlzU3dpcGVkIiwic2V0SXNTd2lwZWQiLCJvZmZzZXRCZWZvcmVSZW1vdmUiLCJzZXRPZmZzZXRCZWZvcmVSZW1vdmUiLCJpbml0aWFsSGVpZ2h0Iiwic2V0SW5pdGlhbEhlaWdodCIsInJlbWFpbmluZ1RpbWUiLCJkcmFnU3RhcnRUaW1lIiwidG9hc3RSZWYiLCJpc0Zyb250IiwiaXNWaXNpYmxlIiwidG9hc3RUeXBlIiwidG9hc3RDbGFzc25hbWUiLCJ0b2FzdERlc2NyaXB0aW9uQ2xhc3NuYW1lIiwiaGVpZ2h0SW5kZXgiLCJoZWlnaHQiLCJjbG9zZUJ1dHRvbiIsImR1cmF0aW9uIiwiY2xvc2VUaW1lclN0YXJ0VGltZVJlZiIsIm9mZnNldCIsImxhc3RDbG9zZVRpbWVyU3RhcnRUaW1lUmVmIiwicG9pbnRlclN0YXJ0UmVmIiwidG9hc3RzSGVpZ2h0QmVmb3JlIiwicHJldiIsImN1cnIiLCJyZWR1Y2VySW5kZXgiLCJpbnZlcnQiLCJkaXNhYmxlZCIsInRvYXN0Tm9kZSIsImgiLCJvcmlnaW5hbEhlaWdodCIsIm5ld0hlaWdodCIsImRlbGV0ZVRvYXN0IiwidGltZW91dElkIiwiZWxhcHNlZFRpbWUiLCJnZXRMb2FkaW5nSWNvbiIsImV2ZW50Iiwic3dpcGVBbW91bnRYIiwic3dpcGVBbW91bnRZIiwidGltZVRha2VuIiwic3dpcGVBbW91bnQiLCJ2ZWxvY2l0eSIsInlEZWx0YSIsInhEZWx0YSIsInN3aXBlRGlyZWN0aW9ucyIsImdldERvY3VtZW50RGlyZWN0aW9uIiwiZGlyQXR0cmlidXRlIiwiYXNzaWduT2Zmc2V0IiwiZGVmYXVsdE9mZnNldCIsIm1vYmlsZU9mZnNldCIsInN0eWxlcyIsImlzTW9iaWxlIiwicHJlZml4IiwiZGVmYXVsdFZhbHVlIiwiYXNzaWduQWxsIiwia2V5IiwidXNlU29ubmVyIiwiYWN0aXZlVG9hc3RzIiwic2V0QWN0aXZlVG9hc3RzIiwidCIsImluZGV4T2ZFeGlzdGluZ1RvYXN0IiwiVG9hc3RlciIsInJlZiIsImhvdGtleSIsImV4cGFuZCIsInRoZW1lIiwicmljaENvbG9ycyIsInRvYXN0T3B0aW9ucyIsImRpciIsImxvYWRpbmdJY29uIiwiY29udGFpbmVyQXJpYUxhYmVsIiwic2V0VG9hc3RzIiwicG9zc2libGVQb3NpdGlvbnMiLCJzZXRFeHBhbmRlZCIsInNldEludGVyYWN0aW5nIiwiYWN0dWFsVGhlbWUiLCJzZXRBY3R1YWxUaGVtZSIsImxpc3RSZWYiLCJob3RrZXlMYWJlbCIsImxhc3RGb2N1c2VkRWxlbWVudFJlZiIsImlzRm9jdXNXaXRoaW5SZWYiLCJ0b2FzdFRvUmVtb3ZlIiwiZGFya01lZGlhUXVlcnkiLCJtYXRjaGVzIiwiZSIsImhhbmRsZUtleURvd24iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/sonner/dist/index.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/tailwind-merge/dist/bundle-mjs.mjs":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/tailwind-merge/dist/bundle-mjs.mjs ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createTailwindMerge: () => (/* binding */ createTailwindMerge),\n/* harmony export */ extendTailwindMerge: () => (/* binding */ extendTailwindMerge),\n/* harmony export */ fromTheme: () => (/* binding */ fromTheme),\n/* harmony export */ getDefaultConfig: () => (/* binding */ getDefaultConfig),\n/* harmony export */ mergeConfigs: () => (/* binding */ mergeConfigs),\n/* harmony export */ twJoin: () => (/* binding */ twJoin),\n/* harmony export */ twMerge: () => (/* binding */ twMerge),\n/* harmony export */ validators: () => (/* binding */ validators)\n/* harmony export */ });\nconst CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n prefix\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme);\n });\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\nconst getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {\n if (!prefix) {\n return classGroupEntries;\n }\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map(classDefinition => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition;\n }\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));\n }\n return classDefinition;\n });\n return [classGroupId, prefixedClassGroup];\n });\n};\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst createParseClassName = config => {\n const {\n separator,\n experimentalParseClassName\n } = config;\n const isSeparatorSingleCharacter = separator.length === 1;\n const firstSeparatorCharacter = separator[0];\n const separatorLength = separator.length;\n // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n const parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0) {\n if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + separatorLength;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);\n const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (experimentalParseClassName) {\n return className => experimentalParseClassName({\n className,\n parseClassName\n });\n }\n return parseClassName;\n};\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isArbitraryVariant = modifier[0] === '[';\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n let hasPostfixModifier = Boolean(maybePostfixModifierPosition);\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isLength = value => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, 'length', isLengthOnly);\nconst isNumber = value => Boolean(value) && !Number.isNaN(Number(value));\nconst isArbitraryNumber = value => getIsArbitraryValue(value, 'number', isNumber);\nconst isInteger = value => Boolean(value) && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);\nconst isArbitrarySize = value => getIsArbitraryValue(value, sizeLabels, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, 'position', isNever);\nconst imageLabels = /*#__PURE__*/new Set(['image', 'url']);\nconst isArbitraryImage = value => getIsArbitraryValue(value, imageLabels, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, '', isShadow);\nconst isAny = () => true;\nconst getIsArbitraryValue = (value, label, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return typeof label === 'string' ? result[1] === label : label.has(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isInteger,\n isLength,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n const colors = fromTheme('colors');\n const spacing = fromTheme('spacing');\n const blur = fromTheme('blur');\n const brightness = fromTheme('brightness');\n const borderColor = fromTheme('borderColor');\n const borderRadius = fromTheme('borderRadius');\n const borderSpacing = fromTheme('borderSpacing');\n const borderWidth = fromTheme('borderWidth');\n const contrast = fromTheme('contrast');\n const grayscale = fromTheme('grayscale');\n const hueRotate = fromTheme('hueRotate');\n const invert = fromTheme('invert');\n const gap = fromTheme('gap');\n const gradientColorStops = fromTheme('gradientColorStops');\n const gradientColorStopPositions = fromTheme('gradientColorStopPositions');\n const inset = fromTheme('inset');\n const margin = fromTheme('margin');\n const opacity = fromTheme('opacity');\n const padding = fromTheme('padding');\n const saturate = fromTheme('saturate');\n const scale = fromTheme('scale');\n const sepia = fromTheme('sepia');\n const skew = fromTheme('skew');\n const space = fromTheme('space');\n const translate = fromTheme('translate');\n const getOverscroll = () => ['auto', 'contain', 'none'];\n const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing];\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];\n const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength];\n const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue];\n const getPositions = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'];\n const getBlendModes = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const getAlign = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'];\n const getZeroAndEmpty = () => ['', '0', isArbitraryValue];\n const getBreaks = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];\n return {\n cacheSize: 500,\n separator: ':',\n theme: {\n colors: [isAny],\n spacing: [isLength, isArbitraryLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumberAndArbitrary(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmptyAndArbitrary(),\n contrast: getNumberAndArbitrary(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumberAndArbitrary(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumberAndArbitrary(),\n scale: getNumberAndArbitrary(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary()\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', 'video', isArbitraryValue]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isTshirtSize]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': getBreaks()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': getBreaks()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: [...getPositions(), isArbitraryValue]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: getOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': getOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': getOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: getOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': getOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': getOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: [inset]\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': [inset]\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': [inset]\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: [inset]\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: [inset]\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: [inset]\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: [inset]\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: [inset]\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: [inset]\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: ['auto', isInteger, isArbitraryValue]\n }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: getSpacingWithAutoAndArbitrary()\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['wrap', 'wrap-reverse', 'nowrap']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: ['1', 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: getZeroAndEmpty()\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: getZeroAndEmpty()\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: ['first', 'last', 'none', isInteger, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': [isAny]\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: ['auto', {\n span: ['full', isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': [isAny]\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: ['auto', {\n span: [isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: [gap]\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': [gap]\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': [gap]\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: ['normal', ...getAlign()]\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': ['start', 'end', 'center', 'stretch']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...getAlign(), 'baseline']\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': [...getAlign(), 'baseline']\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: [padding]\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: [padding]\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: [padding]\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: [padding]\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: [padding]\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: [padding]\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: [padding]\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: [padding]\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: [padding]\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: [margin]\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: [margin]\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: [margin]\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: [margin]\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: [margin]\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: [margin]\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: [margin]\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: [margin]\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: [margin]\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{\n 'space-x': [space]\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{\n 'space-y': [space]\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: ['auto', 'min', 'max', 'fit', 'svw', 'lvw', 'dvw', isArbitraryValue, spacing]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit']\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [isArbitraryValue, spacing, 'none', 'full', 'min', 'max', 'fit', 'prose', {\n screen: [isTshirtSize]\n }, isTshirtSize]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Size\n * @see https://tailwindcss.com/docs/size\n */\n size: [{\n size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit']\n }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', isTshirtSize, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isAny]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': ['none', isNumber, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isLength, isArbitraryValue]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryValue]\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['none', 'disc', 'decimal', isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: [colors]\n }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{\n 'placeholder-opacity': [opacity]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: [colors]\n }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{\n 'text-opacity': [opacity]\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...getLineStyles(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: ['auto', 'from-font', isLength, isArbitraryLength]\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': ['auto', isLength, isArbitraryValue]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: [colors]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: getSpacingWithArbitrary()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryValue]\n }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{\n 'bg-opacity': [opacity]\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: [...getPositions(), isArbitraryPosition]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'round', 'space']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: [colors]\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: [gradientColorStops]\n }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: [borderRadius]\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': [borderRadius]\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': [borderRadius]\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': [borderRadius]\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': [borderRadius]\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': [borderRadius]\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': [borderRadius]\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': [borderRadius]\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': [borderRadius]\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': [borderRadius]\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': [borderRadius]\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': [borderRadius]\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': [borderRadius]\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': [borderRadius]\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': [borderRadius]\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: [borderWidth]\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': [borderWidth]\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': [borderWidth]\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': [borderWidth]\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': [borderWidth]\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': [borderWidth]\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': [borderWidth]\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': [borderWidth]\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': [borderWidth]\n }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{\n 'border-opacity': [opacity]\n }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...getLineStyles(), 'hidden']\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{\n 'divide-x': [borderWidth]\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{\n 'divide-y': [borderWidth]\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{\n 'divide-opacity': [opacity]\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{\n divide: getLineStyles()\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: [borderColor]\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': [borderColor]\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': [borderColor]\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': [borderColor]\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': [borderColor]\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': [borderColor]\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': [borderColor]\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': [borderColor]\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': [borderColor]\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: [borderColor]\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: ['', ...getLineStyles()]\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isLength, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: [isLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [colors]\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{\n ring: getLengthWithEmptyAndArbitrary()\n }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{\n ring: [colors]\n }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{\n 'ring-opacity': [opacity]\n }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{\n 'ring-offset': [isLength, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{\n 'ring-offset': [colors]\n }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{\n shadow: [isAny]\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [opacity]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...getBlendModes(), 'plus-lighter', 'plus-darker']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': getBlendModes()\n }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: ['', 'none']\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: [blur]\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [brightness]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [contrast]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: [grayscale]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [hueRotate]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: [invert]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [saturate]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: [sepia]\n }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': ['', 'none']\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': [blur]\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [brightness]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [contrast]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': [grayscale]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [hueRotate]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': [invert]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [opacity]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [saturate]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': [sepia]\n }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': [borderSpacing]\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': [borderSpacing]\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': [borderSpacing]\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue]\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: getNumberAndArbitrary()\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: getNumberAndArbitrary()\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue]\n }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: ['', 'gpu', 'none']\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: [scale]\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': [scale]\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': [scale]\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: [isInteger, isArbitraryValue]\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': [translate]\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': [translate]\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': [skew]\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': [skew]\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue]\n }],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: ['auto', colors]\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryValue]\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: [colors]\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['none', 'auto']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', 'y', 'x', '']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue]\n }],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: [colors, 'none']\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: [colors, 'none']\n }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n }\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n separator,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'separator', separator);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n for (const configKey in override) {\n overrideConfigProperties(baseConfig[configKey], override[configKey]);\n }\n for (const key in extend) {\n mergeConfigProperties(baseConfig[key], extend[key]);\n }\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = (baseObject[key] || []).concat(mergeValue);\n }\n }\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\n\n//# sourceMappingURL=bundle-mjs.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9kaXN0L2J1bmRsZS1tanMubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMEJBQTBCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxPQUFPLG1CQUFtQixrQkFBa0IsYUFBYTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxZQUFZO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwyQkFBMkI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsZ0JBQWdCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDNEg7QUFDNUgiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHRhaWx3aW5kLW1lcmdlXFxkaXN0XFxidW5kbGUtbWpzLm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBDTEFTU19QQVJUX1NFUEFSQVRPUiA9ICctJztcbmNvbnN0IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyA9IGNvbmZpZyA9PiB7XG4gIGNvbnN0IGNsYXNzTWFwID0gY3JlYXRlQ2xhc3NNYXAoY29uZmlnKTtcbiAgY29uc3Qge1xuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsXG4gICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IGdldENsYXNzR3JvdXBJZCA9IGNsYXNzTmFtZSA9PiB7XG4gICAgY29uc3QgY2xhc3NQYXJ0cyA9IGNsYXNzTmFtZS5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUik7XG4gICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgIGlmIChjbGFzc1BhcnRzWzBdID09PSAnJyAmJiBjbGFzc1BhcnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgY2xhc3NQYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NNYXApIHx8IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpO1xuICB9O1xuICBjb25zdCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgPSAoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpID0+IHtcbiAgICBjb25zdCBjb25mbGljdHMgPSBjb25mbGljdGluZ0NsYXNzR3JvdXBzW2NsYXNzR3JvdXBJZF0gfHwgW107XG4gICAgaWYgKGhhc1Bvc3RmaXhNb2RpZmllciAmJiBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSkge1xuICAgICAgcmV0dXJuIFsuLi5jb25mbGljdHMsIC4uLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmZsaWN0cztcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzXG4gIH07XG59O1xuY29uc3QgZ2V0R3JvdXBSZWN1cnNpdmUgPSAoY2xhc3NQYXJ0cywgY2xhc3NQYXJ0T2JqZWN0KSA9PiB7XG4gIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkO1xuICB9XG4gIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdO1xuICBjb25zdCBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChjdXJyZW50Q2xhc3NQYXJ0KTtcbiAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdCA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpIDogdW5kZWZpbmVkO1xuICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydDtcbiAgfVxuICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpO1xuICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoe1xuICAgIHZhbGlkYXRvclxuICB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZDtcbn07XG5jb25zdCBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4ID0gL15cXFsoLispXFxdJC87XG5jb25zdCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkgPSBjbGFzc05hbWUgPT4ge1xuICBpZiAoYXJiaXRyYXJ5UHJvcGVydHlSZWdleC50ZXN0KGNsYXNzTmFtZSkpIHtcbiAgICBjb25zdCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSA9IGFyYml0cmFyeVByb3BlcnR5UmVnZXguZXhlYyhjbGFzc05hbWUpWzFdO1xuICAgIGNvbnN0IHByb3BlcnR5ID0gYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWU/LnN1YnN0cmluZygwLCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZS5pbmRleE9mKCc6JykpO1xuICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgLy8gSSB1c2UgdHdvIGRvdHMgaGVyZSBiZWNhdXNlIG9uZSBkb3QgaXMgdXNlZCBhcyBwcmVmaXggZm9yIGNsYXNzIGdyb3VwcyBpbiBwbHVnaW5zXG4gICAgICByZXR1cm4gJ2FyYml0cmFyeS4uJyArIHByb3BlcnR5O1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seVxuICovXG5jb25zdCBjcmVhdGVDbGFzc01hcCA9IGNvbmZpZyA9PiB7XG4gIGNvbnN0IHtcbiAgICB0aGVtZSxcbiAgICBwcmVmaXhcbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgY2xhc3NNYXAgPSB7XG4gICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICB2YWxpZGF0b3JzOiBbXVxuICB9O1xuICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyhPYmplY3QuZW50cmllcyhjb25maWcuY2xhc3NHcm91cHMpLCBwcmVmaXgpO1xuICBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzLmZvckVhY2goKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBjbGFzc01hcCwgY2xhc3NHcm91cElkLCB0aGVtZSk7XG4gIH0pO1xuICByZXR1cm4gY2xhc3NNYXA7XG59O1xuY29uc3QgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSA9IChjbGFzc0dyb3VwLCBjbGFzc1BhcnRPYmplY3QsIGNsYXNzR3JvdXBJZCwgdGhlbWUpID0+IHtcbiAgY2xhc3NHcm91cC5mb3JFYWNoKGNsYXNzRGVmaW5pdGlvbiA9PiB7XG4gICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBjbGFzc1BhcnRPYmplY3RUb0VkaXQgPSBjbGFzc0RlZmluaXRpb24gPT09ICcnID8gY2xhc3NQYXJ0T2JqZWN0IDogZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGNsYXNzRGVmaW5pdGlvbik7XG4gICAgICBjbGFzc1BhcnRPYmplY3RUb0VkaXQuY2xhc3NHcm91cElkID0gY2xhc3NHcm91cElkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGlzVGhlbWVHZXR0ZXIoY2xhc3NEZWZpbml0aW9uKSkge1xuICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzRGVmaW5pdGlvbih0aGVtZSksIGNsYXNzUGFydE9iamVjdCwgY2xhc3NHcm91cElkLCB0aGVtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLnB1c2goe1xuICAgICAgICB2YWxpZGF0b3I6IGNsYXNzRGVmaW5pdGlvbixcbiAgICAgICAgY2xhc3NHcm91cElkXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5mb3JFYWNoKChba2V5LCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwga2V5KSwgY2xhc3NHcm91cElkLCB0aGVtZSk7XG4gICAgfSk7XG4gIH0pO1xufTtcbmNvbnN0IGdldFBhcnQgPSAoY2xhc3NQYXJ0T2JqZWN0LCBwYXRoKSA9PiB7XG4gIGxldCBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0O1xuICBwYXRoLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKS5mb3JFYWNoKHBhdGhQYXJ0ID0+IHtcbiAgICBpZiAoIWN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuaGFzKHBhdGhQYXJ0KSkge1xuICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5zZXQocGF0aFBhcnQsIHtcbiAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgdmFsaWRhdG9yczogW11cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpO1xuICB9KTtcbiAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Q7XG59O1xuY29uc3QgaXNUaGVtZUdldHRlciA9IGZ1bmMgPT4gZnVuYy5pc1RoZW1lR2V0dGVyO1xuY29uc3QgZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IChjbGFzc0dyb3VwRW50cmllcywgcHJlZml4KSA9PiB7XG4gIGlmICghcHJlZml4KSB7XG4gICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzO1xuICB9XG4gIHJldHVybiBjbGFzc0dyb3VwRW50cmllcy5tYXAoKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwID0gY2xhc3NHcm91cC5tYXAoY2xhc3NEZWZpbml0aW9uID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcHJlZml4ICsgY2xhc3NEZWZpbml0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW3ByZWZpeCArIGtleSwgdmFsdWVdKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xhc3NEZWZpbml0aW9uO1xuICAgIH0pO1xuICAgIHJldHVybiBbY2xhc3NHcm91cElkLCBwcmVmaXhlZENsYXNzR3JvdXBdO1xuICB9KTtcbn07XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmNvbnN0IGNyZWF0ZUxydUNhY2hlID0gbWF4Q2FjaGVTaXplID0+IHtcbiAgaWYgKG1heENhY2hlU2l6ZSA8IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICBzZXQ6ICgpID0+IHt9XG4gICAgfTtcbiAgfVxuICBsZXQgY2FjaGVTaXplID0gMDtcbiAgbGV0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBsZXQgcHJldmlvdXNDYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgdXBkYXRlID0gKGtleSwgdmFsdWUpID0+IHtcbiAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgY2FjaGVTaXplKys7XG4gICAgaWYgKGNhY2hlU2l6ZSA+IG1heENhY2hlU2l6ZSkge1xuICAgICAgY2FjaGVTaXplID0gMDtcbiAgICAgIHByZXZpb3VzQ2FjaGUgPSBjYWNoZTtcbiAgICAgIGNhY2hlID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBnZXQoa2V5KSB7XG4gICAgICBsZXQgdmFsdWUgPSBjYWNoZS5nZXQoa2V5KTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodmFsdWUgPSBwcmV2aW91c0NhY2hlLmdldChrZXkpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcbmNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJztcbmNvbnN0IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lID0gY29uZmlnID0+IHtcbiAgY29uc3Qge1xuICAgIHNlcGFyYXRvcixcbiAgICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZVxuICB9ID0gY29uZmlnO1xuICBjb25zdCBpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciA9IHNlcGFyYXRvci5sZW5ndGggPT09IDE7XG4gIGNvbnN0IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyID0gc2VwYXJhdG9yWzBdO1xuICBjb25zdCBzZXBhcmF0b3JMZW5ndGggPSBzZXBhcmF0b3IubGVuZ3RoO1xuICAvLyBwYXJzZUNsYXNzTmFtZSBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2Jsb2IvdjMuMi4yL3NyYy91dGlsL3NwbGl0QXRUb3BMZXZlbE9ubHkuanNcbiAgY29uc3QgcGFyc2VDbGFzc05hbWUgPSBjbGFzc05hbWUgPT4ge1xuICAgIGNvbnN0IG1vZGlmaWVycyA9IFtdO1xuICAgIGxldCBicmFja2V0RGVwdGggPSAwO1xuICAgIGxldCBtb2RpZmllclN0YXJ0ID0gMDtcbiAgICBsZXQgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb247XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGxldCBjdXJyZW50Q2hhcmFjdGVyID0gY2xhc3NOYW1lW2luZGV4XTtcbiAgICAgIGlmIChicmFja2V0RGVwdGggPT09IDApIHtcbiAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyICYmIChpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciB8fCBjbGFzc05hbWUuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoKSA9PT0gc2VwYXJhdG9yKSkge1xuICAgICAgICAgIG1vZGlmaWVycy5wdXNoKGNsYXNzTmFtZS5zbGljZShtb2RpZmllclN0YXJ0LCBpbmRleCkpO1xuICAgICAgICAgIG1vZGlmaWVyU3RhcnQgPSBpbmRleCArIHNlcGFyYXRvckxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJy8nKSB7XG4gICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBpbmRleDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICdbJykge1xuICAgICAgICBicmFja2V0RGVwdGgrKztcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICAgIGJyYWNrZXREZXB0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyID0gbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCA/IGNsYXNzTmFtZSA6IGNsYXNzTmFtZS5zdWJzdHJpbmcobW9kaWZpZXJTdGFydCk7XG4gICAgY29uc3QgaGFzSW1wb3J0YW50TW9kaWZpZXIgPSBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN0YXJ0c1dpdGgoSU1QT1JUQU5UX01PRElGSUVSKTtcbiAgICBjb25zdCBiYXNlQ2xhc3NOYW1lID0gaGFzSW1wb3J0YW50TW9kaWZpZXIgPyBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN1YnN0cmluZygxKSA6IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXI7XG4gICAgY29uc3QgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uICYmIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID4gbW9kaWZpZXJTdGFydCA/IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uIC0gbW9kaWZpZXJTdGFydCA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kaWZpZXJzLFxuICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvblxuICAgIH07XG4gIH07XG4gIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgIHJldHVybiBjbGFzc05hbWUgPT4gZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUoe1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgcGFyc2VDbGFzc05hbWVcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcGFyc2VDbGFzc05hbWU7XG59O1xuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuY29uc3Qgc29ydE1vZGlmaWVycyA9IG1vZGlmaWVycyA9PiB7XG4gIGlmIChtb2RpZmllcnMubGVuZ3RoIDw9IDEpIHtcbiAgICByZXR1cm4gbW9kaWZpZXJzO1xuICB9XG4gIGNvbnN0IHNvcnRlZE1vZGlmaWVycyA9IFtdO1xuICBsZXQgdW5zb3J0ZWRNb2RpZmllcnMgPSBbXTtcbiAgbW9kaWZpZXJzLmZvckVhY2gobW9kaWZpZXIgPT4ge1xuICAgIGNvbnN0IGlzQXJiaXRyYXJ5VmFyaWFudCA9IG1vZGlmaWVyWzBdID09PSAnWyc7XG4gICAgaWYgKGlzQXJiaXRyYXJ5VmFyaWFudCkge1xuICAgICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpLCBtb2RpZmllcik7XG4gICAgICB1bnNvcnRlZE1vZGlmaWVycyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNvcnRlZE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCkpO1xuICByZXR1cm4gc29ydGVkTW9kaWZpZXJzO1xufTtcbmNvbnN0IGNyZWF0ZUNvbmZpZ1V0aWxzID0gY29uZmlnID0+ICh7XG4gIGNhY2hlOiBjcmVhdGVMcnVDYWNoZShjb25maWcuY2FjaGVTaXplKSxcbiAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gIC4uLmNyZWF0ZUNsYXNzR3JvdXBVdGlscyhjb25maWcpXG59KTtcbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy87XG5jb25zdCBtZXJnZUNsYXNzTGlzdCA9IChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwYXJzZUNsYXNzTmFtZSxcbiAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzXG4gIH0gPSBjb25maWdVdGlscztcbiAgLyoqXG4gICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAqIEBleGFtcGxlICdmbG9hdCdcbiAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgKi9cbiAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0ID0gW107XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBjbGFzc0xpc3QudHJpbSgpLnNwbGl0KFNQTElUX0NMQVNTRVNfUkVHRVgpO1xuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGZvciAobGV0IGluZGV4ID0gY2xhc3NOYW1lcy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxDbGFzc05hbWUgPSBjbGFzc05hbWVzW2luZGV4XTtcbiAgICBjb25zdCB7XG4gICAgICBtb2RpZmllcnMsXG4gICAgICBoYXNJbXBvcnRhbnRNb2RpZmllcixcbiAgICAgIGJhc2VDbGFzc05hbWUsXG4gICAgICBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uXG4gICAgfSA9IHBhcnNlQ2xhc3NOYW1lKG9yaWdpbmFsQ2xhc3NOYW1lKTtcbiAgICBsZXQgaGFzUG9zdGZpeE1vZGlmaWVyID0gQm9vbGVhbihtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKTtcbiAgICBsZXQgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKGhhc1Bvc3RmaXhNb2RpZmllciA/IGJhc2VDbGFzc05hbWUuc3Vic3RyaW5nKDAsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pIDogYmFzZUNsYXNzTmFtZSk7XG4gICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgIGlmICghaGFzUG9zdGZpeE1vZGlmaWVyKSB7XG4gICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoYmFzZUNsYXNzTmFtZSk7XG4gICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHZhcmlhbnRNb2RpZmllciA9IHNvcnRNb2RpZmllcnMobW9kaWZpZXJzKS5qb2luKCc6Jyk7XG4gICAgY29uc3QgbW9kaWZpZXJJZCA9IGhhc0ltcG9ydGFudE1vZGlmaWVyID8gdmFyaWFudE1vZGlmaWVyICsgSU1QT1JUQU5UX01PRElGSUVSIDogdmFyaWFudE1vZGlmaWVyO1xuICAgIGNvbnN0IGNsYXNzSWQgPSBtb2RpZmllcklkICsgY2xhc3NHcm91cElkO1xuICAgIGlmIChjbGFzc0dyb3Vwc0luQ29uZmxpY3QuaW5jbHVkZXMoY2xhc3NJZCkpIHtcbiAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG9taXR0ZWQgZHVlIHRvIGNvbmZsaWN0XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2goY2xhc3NJZCk7XG4gICAgY29uc3QgY29uZmxpY3RHcm91cHMgPSBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmxpY3RHcm91cHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNvbnN0IGdyb3VwID0gY29uZmxpY3RHcm91cHNbaV07XG4gICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChtb2RpZmllcklkICsgZ3JvdXApO1xuICAgIH1cbiAgICAvLyBUYWlsd2luZCBjbGFzcyBub3QgaW4gY29uZmxpY3RcbiAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuZnVuY3Rpb24gdHdKb2luKCkge1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgYXJndW1lbnQ7XG4gIGxldCByZXNvbHZlZFZhbHVlO1xuICBsZXQgc3RyaW5nID0gJyc7XG4gIHdoaWxlIChpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pIHtcbiAgICAgIGlmIChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpIHtcbiAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKTtcbiAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmc7XG59XG5jb25zdCB0b1ZhbHVlID0gbWl4ID0+IHtcbiAgaWYgKHR5cGVvZiBtaXggPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG1peDtcbiAgfVxuICBsZXQgcmVzb2x2ZWRWYWx1ZTtcbiAgbGV0IHN0cmluZyA9ICcnO1xuICBmb3IgKGxldCBrID0gMDsgayA8IG1peC5sZW5ndGg7IGsrKykge1xuICAgIGlmIChtaXhba10pIHtcbiAgICAgIGlmIChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShtaXhba10pKSB7XG4gICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJyk7XG4gICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyaW5nO1xufTtcbmZ1bmN0aW9uIGNyZWF0ZVRhaWx3aW5kTWVyZ2UoY3JlYXRlQ29uZmlnRmlyc3QsIC4uLmNyZWF0ZUNvbmZpZ1Jlc3QpIHtcbiAgbGV0IGNvbmZpZ1V0aWxzO1xuICBsZXQgY2FjaGVHZXQ7XG4gIGxldCBjYWNoZVNldDtcbiAgbGV0IGZ1bmN0aW9uVG9DYWxsID0gaW5pdFRhaWx3aW5kTWVyZ2U7XG4gIGZ1bmN0aW9uIGluaXRUYWlsd2luZE1lcmdlKGNsYXNzTGlzdCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZUNvbmZpZ1Jlc3QucmVkdWNlKChwcmV2aW91c0NvbmZpZywgY3JlYXRlQ29uZmlnQ3VycmVudCkgPT4gY3JlYXRlQ29uZmlnQ3VycmVudChwcmV2aW91c0NvbmZpZyksIGNyZWF0ZUNvbmZpZ0ZpcnN0KCkpO1xuICAgIGNvbmZpZ1V0aWxzID0gY3JlYXRlQ29uZmlnVXRpbHMoY29uZmlnKTtcbiAgICBjYWNoZUdldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLmdldDtcbiAgICBjYWNoZVNldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLnNldDtcbiAgICBmdW5jdGlvblRvQ2FsbCA9IHRhaWx3aW5kTWVyZ2U7XG4gICAgcmV0dXJuIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KTtcbiAgfVxuICBmdW5jdGlvbiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdCkge1xuICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlR2V0KGNsYXNzTGlzdCk7XG4gICAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gbWVyZ2VDbGFzc0xpc3QoY2xhc3NMaXN0LCBjb25maWdVdGlscyk7XG4gICAgY2FjaGVTZXQoY2xhc3NMaXN0LCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxUYWlsd2luZE1lcmdlKCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvQ2FsbCh0d0pvaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gIH07XG59XG5jb25zdCBmcm9tVGhlbWUgPSBrZXkgPT4ge1xuICBjb25zdCB0aGVtZUdldHRlciA9IHRoZW1lID0+IHRoZW1lW2tleV0gfHwgW107XG4gIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlO1xuICByZXR1cm4gdGhlbWVHZXR0ZXI7XG59O1xuY29uc3QgYXJiaXRyYXJ5VmFsdWVSZWdleCA9IC9eXFxbKD86KFthLXotXSspOik/KC4rKVxcXSQvaTtcbmNvbnN0IGZyYWN0aW9uUmVnZXggPSAvXlxcZCtcXC9cXGQrJC87XG5jb25zdCBzdHJpbmdMZW5ndGhzID0gLyojX19QVVJFX18qL25ldyBTZXQoWydweCcsICdmdWxsJywgJ3NjcmVlbiddKTtcbmNvbnN0IHRzaGlydFVuaXRSZWdleCA9IC9eKFxcZCsoXFwuXFxkKyk/KT8oeHN8c218bWR8bGd8eGwpJC87XG5jb25zdCBsZW5ndGhVbml0UmVnZXggPSAvXFxkKyglfHB4fHI/ZW18W3NkbF0/dihbaHdpYl18bWlufG1heCl8cHR8cGN8aW58Y218bW18Y2FwfGNofGV4fHI/bGh8Y3Eod3xofGl8YnxtaW58bWF4KSl8XFxiKGNhbGN8bWlufG1heHxjbGFtcClcXCguK1xcKXxeMCQvO1xuY29uc3QgY29sb3JGdW5jdGlvblJlZ2V4ID0gL14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpfGNvbG9yLW1peClcXCguK1xcKSQvO1xuLy8gU2hhZG93IGFsd2F5cyBiZWdpbnMgd2l0aCB4IGFuZCB5IG9mZnNldCBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZSBvcHRpb25hbGx5IHByZXBlbmRlZCBieSBpbnNldFxuY29uc3Qgc2hhZG93UmVnZXggPSAvXihpbnNldF8pPy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApXy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApLztcbmNvbnN0IGltYWdlUmVnZXggPSAvXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVxcKC4rXFwpJC87XG5jb25zdCBpc0xlbmd0aCA9IHZhbHVlID0+IGlzTnVtYmVyKHZhbHVlKSB8fCBzdHJpbmdMZW5ndGhzLmhhcyh2YWx1ZSkgfHwgZnJhY3Rpb25SZWdleC50ZXN0KHZhbHVlKTtcbmNvbnN0IGlzQXJiaXRyYXJ5TGVuZ3RoID0gdmFsdWUgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ2xlbmd0aCcsIGlzTGVuZ3RoT25seSk7XG5jb25zdCBpc051bWJlciA9IHZhbHVlID0+IEJvb2xlYW4odmFsdWUpICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSk7XG5jb25zdCBpc0FyYml0cmFyeU51bWJlciA9IHZhbHVlID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcik7XG5jb25zdCBpc0ludGVnZXIgPSB2YWx1ZSA9PiBCb29sZWFuKHZhbHVlKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcih2YWx1ZSkpO1xuY29uc3QgaXNQZXJjZW50ID0gdmFsdWUgPT4gdmFsdWUuZW5kc1dpdGgoJyUnKSAmJiBpc051bWJlcih2YWx1ZS5zbGljZSgwLCAtMSkpO1xuY29uc3QgaXNBcmJpdHJhcnlWYWx1ZSA9IHZhbHVlID0+IGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSk7XG5jb25zdCBpc1RzaGlydFNpemUgPSB2YWx1ZSA9PiB0c2hpcnRVbml0UmVnZXgudGVzdCh2YWx1ZSk7XG5jb25zdCBzaXplTGFiZWxzID0gLyojX19QVVJFX18qL25ldyBTZXQoWydsZW5ndGgnLCAnc2l6ZScsICdwZXJjZW50YWdlJ10pO1xuY29uc3QgaXNBcmJpdHJhcnlTaXplID0gdmFsdWUgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgc2l6ZUxhYmVscywgaXNOZXZlcik7XG5jb25zdCBpc0FyYml0cmFyeVBvc2l0aW9uID0gdmFsdWUgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcik7XG5jb25zdCBpbWFnZUxhYmVscyA9IC8qI19fUFVSRV9fKi9uZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pO1xuY29uc3QgaXNBcmJpdHJhcnlJbWFnZSA9IHZhbHVlID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIGltYWdlTGFiZWxzLCBpc0ltYWdlKTtcbmNvbnN0IGlzQXJiaXRyYXJ5U2hhZG93ID0gdmFsdWUgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJycsIGlzU2hhZG93KTtcbmNvbnN0IGlzQW55ID0gKCkgPT4gdHJ1ZTtcbmNvbnN0IGdldElzQXJiaXRyYXJ5VmFsdWUgPSAodmFsdWUsIGxhYmVsLCB0ZXN0VmFsdWUpID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gYXJiaXRyYXJ5VmFsdWVSZWdleC5leGVjKHZhbHVlKTtcbiAgaWYgKHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHRbMV0pIHtcbiAgICAgIHJldHVybiB0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnID8gcmVzdWx0WzFdID09PSBsYWJlbCA6IGxhYmVsLmhhcyhyZXN1bHRbMV0pO1xuICAgIH1cbiAgICByZXR1cm4gdGVzdFZhbHVlKHJlc3VsdFsyXSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbmNvbnN0IGlzTGVuZ3RoT25seSA9IHZhbHVlID0+XG4vLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4vLyBGb3IgZXhhbXBsZSwgYGhzbCgwIDAlIDAlKWAgd291bGQgYmUgY2xhc3NpZmllZCBhcyBhIGxlbmd0aCB3aXRob3V0IHRoaXMgY2hlY2suXG4vLyBJIGNvdWxkIGFsc28gdXNlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGluIGBsZW5ndGhVbml0UmVnZXhgIGJ1dCB0aGF0IGlzbid0IHN1cHBvcnRlZCB3aWRlbHkgZW5vdWdoLlxubGVuZ3RoVW5pdFJlZ2V4LnRlc3QodmFsdWUpICYmICFjb2xvckZ1bmN0aW9uUmVnZXgudGVzdCh2YWx1ZSk7XG5jb25zdCBpc05ldmVyID0gKCkgPT4gZmFsc2U7XG5jb25zdCBpc1NoYWRvdyA9IHZhbHVlID0+IHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpO1xuY29uc3QgaXNJbWFnZSA9IHZhbHVlID0+IGltYWdlUmVnZXgudGVzdCh2YWx1ZSk7XG5jb25zdCB2YWxpZGF0b3JzID0gLyojX19QVVJFX18qL09iamVjdC5kZWZpbmVQcm9wZXJ0eSh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgaXNBbnksXG4gIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gIGlzQXJiaXRyYXJ5TGVuZ3RoLFxuICBpc0FyYml0cmFyeU51bWJlcixcbiAgaXNBcmJpdHJhcnlQb3NpdGlvbixcbiAgaXNBcmJpdHJhcnlTaGFkb3csXG4gIGlzQXJiaXRyYXJ5U2l6ZSxcbiAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgaXNJbnRlZ2VyLFxuICBpc0xlbmd0aCxcbiAgaXNOdW1iZXIsXG4gIGlzUGVyY2VudCxcbiAgaXNUc2hpcnRTaXplXG59LCBTeW1ib2wudG9TdHJpbmdUYWcsIHtcbiAgdmFsdWU6ICdNb2R1bGUnXG59KTtcbmNvbnN0IGdldERlZmF1bHRDb25maWcgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbG9ycyA9IGZyb21UaGVtZSgnY29sb3JzJyk7XG4gIGNvbnN0IHNwYWNpbmcgPSBmcm9tVGhlbWUoJ3NwYWNpbmcnKTtcbiAgY29uc3QgYmx1ciA9IGZyb21UaGVtZSgnYmx1cicpO1xuICBjb25zdCBicmlnaHRuZXNzID0gZnJvbVRoZW1lKCdicmlnaHRuZXNzJyk7XG4gIGNvbnN0IGJvcmRlckNvbG9yID0gZnJvbVRoZW1lKCdib3JkZXJDb2xvcicpO1xuICBjb25zdCBib3JkZXJSYWRpdXMgPSBmcm9tVGhlbWUoJ2JvcmRlclJhZGl1cycpO1xuICBjb25zdCBib3JkZXJTcGFjaW5nID0gZnJvbVRoZW1lKCdib3JkZXJTcGFjaW5nJyk7XG4gIGNvbnN0IGJvcmRlcldpZHRoID0gZnJvbVRoZW1lKCdib3JkZXJXaWR0aCcpO1xuICBjb25zdCBjb250cmFzdCA9IGZyb21UaGVtZSgnY29udHJhc3QnKTtcbiAgY29uc3QgZ3JheXNjYWxlID0gZnJvbVRoZW1lKCdncmF5c2NhbGUnKTtcbiAgY29uc3QgaHVlUm90YXRlID0gZnJvbVRoZW1lKCdodWVSb3RhdGUnKTtcbiAgY29uc3QgaW52ZXJ0ID0gZnJvbVRoZW1lKCdpbnZlcnQnKTtcbiAgY29uc3QgZ2FwID0gZnJvbVRoZW1lKCdnYXAnKTtcbiAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BzID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcHMnKTtcbiAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zJyk7XG4gIGNvbnN0IGluc2V0ID0gZnJvbVRoZW1lKCdpbnNldCcpO1xuICBjb25zdCBtYXJnaW4gPSBmcm9tVGhlbWUoJ21hcmdpbicpO1xuICBjb25zdCBvcGFjaXR5ID0gZnJvbVRoZW1lKCdvcGFjaXR5Jyk7XG4gIGNvbnN0IHBhZGRpbmcgPSBmcm9tVGhlbWUoJ3BhZGRpbmcnKTtcbiAgY29uc3Qgc2F0dXJhdGUgPSBmcm9tVGhlbWUoJ3NhdHVyYXRlJyk7XG4gIGNvbnN0IHNjYWxlID0gZnJvbVRoZW1lKCdzY2FsZScpO1xuICBjb25zdCBzZXBpYSA9IGZyb21UaGVtZSgnc2VwaWEnKTtcbiAgY29uc3Qgc2tldyA9IGZyb21UaGVtZSgnc2tldycpO1xuICBjb25zdCBzcGFjZSA9IGZyb21UaGVtZSgnc3BhY2UnKTtcbiAgY29uc3QgdHJhbnNsYXRlID0gZnJvbVRoZW1lKCd0cmFuc2xhdGUnKTtcbiAgY29uc3QgZ2V0T3ZlcnNjcm9sbCA9ICgpID0+IFsnYXV0bycsICdjb250YWluJywgJ25vbmUnXTtcbiAgY29uc3QgZ2V0T3ZlcmZsb3cgPSAoKSA9PiBbJ2F1dG8nLCAnaGlkZGVuJywgJ2NsaXAnLCAndmlzaWJsZScsICdzY3JvbGwnXTtcbiAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ107XG4gIGNvbnN0IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5ID0gKCkgPT4gW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddO1xuICBjb25zdCBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkgPSAoKSA9PiBbJycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF07XG4gIGNvbnN0IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdO1xuICBjb25zdCBnZXRQb3NpdGlvbnMgPSAoKSA9PiBbJ2JvdHRvbScsICdjZW50ZXInLCAnbGVmdCcsICdsZWZ0LWJvdHRvbScsICdsZWZ0LXRvcCcsICdyaWdodCcsICdyaWdodC1ib3R0b20nLCAncmlnaHQtdG9wJywgJ3RvcCddO1xuICBjb25zdCBnZXRMaW5lU3R5bGVzID0gKCkgPT4gWydzb2xpZCcsICdkYXNoZWQnLCAnZG90dGVkJywgJ2RvdWJsZScsICdub25lJ107XG4gIGNvbnN0IGdldEJsZW5kTW9kZXMgPSAoKSA9PiBbJ25vcm1hbCcsICdtdWx0aXBseScsICdzY3JlZW4nLCAnb3ZlcmxheScsICdkYXJrZW4nLCAnbGlnaHRlbicsICdjb2xvci1kb2RnZScsICdjb2xvci1idXJuJywgJ2hhcmQtbGlnaHQnLCAnc29mdC1saWdodCcsICdkaWZmZXJlbmNlJywgJ2V4Y2x1c2lvbicsICdodWUnLCAnc2F0dXJhdGlvbicsICdjb2xvcicsICdsdW1pbm9zaXR5J107XG4gIGNvbnN0IGdldEFsaWduID0gKCkgPT4gWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2JldHdlZW4nLCAnYXJvdW5kJywgJ2V2ZW5seScsICdzdHJldGNoJ107XG4gIGNvbnN0IGdldFplcm9BbmRFbXB0eSA9ICgpID0+IFsnJywgJzAnLCBpc0FyYml0cmFyeVZhbHVlXTtcbiAgY29uc3QgZ2V0QnJlYWtzID0gKCkgPT4gWydhdXRvJywgJ2F2b2lkJywgJ2FsbCcsICdhdm9pZC1wYWdlJywgJ3BhZ2UnLCAnbGVmdCcsICdyaWdodCcsICdjb2x1bW4nXTtcbiAgY29uc3QgZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5ID0gKCkgPT4gW2lzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXTtcbiAgcmV0dXJuIHtcbiAgICBjYWNoZVNpemU6IDUwMCxcbiAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzOiBbaXNBbnldLFxuICAgICAgc3BhY2luZzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICBibHVyOiBbJ25vbmUnLCAnJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgIGJyaWdodG5lc3M6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgYm9yZGVyQ29sb3I6IFtjb2xvcnNdLFxuICAgICAgYm9yZGVyUmFkaXVzOiBbJ25vbmUnLCAnJywgJ2Z1bGwnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgYm9yZGVyU3BhY2luZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIGJvcmRlcldpZHRoOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSxcbiAgICAgIGNvbnRyYXN0OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgIGdyYXlzY2FsZTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICBodWVSb3RhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgaW52ZXJ0OiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIGdhcDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIGdyYWRpZW50Q29sb3JTdG9wczogW2NvbG9yc10sXG4gICAgICBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uczogW2lzUGVyY2VudCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgaW5zZXQ6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgbWFyZ2luOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgIG9wYWNpdHk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgcGFkZGluZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgIHNhdHVyYXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgIHNjYWxlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgIHNlcGlhOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgIHNrZXc6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgc3BhY2U6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICB0cmFuc2xhdGU6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICB9LFxuICAgIGNsYXNzR3JvdXBzOiB7XG4gICAgICAvLyBMYXlvdXRcbiAgICAgIC8qKlxuICAgICAgICogQXNwZWN0IFJhdGlvXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXNwZWN0LXJhdGlvXG4gICAgICAgKi9cbiAgICAgIGFzcGVjdDogW3tcbiAgICAgICAgYXNwZWN0OiBbJ2F1dG8nLCAnc3F1YXJlJywgJ3ZpZGVvJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDb250YWluZXJcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAqL1xuICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgLyoqXG4gICAgICAgKiBDb2x1bW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICovXG4gICAgICBjb2x1bW5zOiBbe1xuICAgICAgICBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAqL1xuICAgICAgJ2JyZWFrLWFmdGVyJzogW3tcbiAgICAgICAgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCcmVhayBCZWZvcmVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1iZWZvcmVcbiAgICAgICAqL1xuICAgICAgJ2JyZWFrLWJlZm9yZSc6IFt7XG4gICAgICAgICdicmVhay1iZWZvcmUnOiBnZXRCcmVha3MoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICovXG4gICAgICAnYnJlYWstaW5zaWRlJzogW3tcbiAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICovXG4gICAgICAnYm94LWRlY29yYXRpb24nOiBbe1xuICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3ggU2l6aW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNpemluZ1xuICAgICAgICovXG4gICAgICBib3g6IFt7XG4gICAgICAgIGJveDogWydib3JkZXInLCAnY29udGVudCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGlzcGxheVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAqL1xuICAgICAgZGlzcGxheTogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAndGFibGUnLCAnaW5saW5lLXRhYmxlJywgJ3RhYmxlLWNhcHRpb24nLCAndGFibGUtY2VsbCcsICd0YWJsZS1jb2x1bW4nLCAndGFibGUtY29sdW1uLWdyb3VwJywgJ3RhYmxlLWZvb3Rlci1ncm91cCcsICd0YWJsZS1oZWFkZXItZ3JvdXAnLCAndGFibGUtcm93LWdyb3VwJywgJ3RhYmxlLXJvdycsICdmbG93LXJvb3QnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdjb250ZW50cycsICdsaXN0LWl0ZW0nLCAnaGlkZGVuJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZsb2F0c1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Zsb2F0XG4gICAgICAgKi9cbiAgICAgIGZsb2F0OiBbe1xuICAgICAgICBmbG9hdDogWydyaWdodCcsICdsZWZ0JywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBDbGVhclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgKi9cbiAgICAgIGNsZWFyOiBbe1xuICAgICAgICBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIElzb2xhdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICovXG4gICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgLyoqXG4gICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICovXG4gICAgICAnb2JqZWN0LWZpdCc6IFt7XG4gICAgICAgIG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPYmplY3QgUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgJ29iamVjdC1wb3NpdGlvbic6IFt7XG4gICAgICAgIG9iamVjdDogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJmbG93XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAqL1xuICAgICAgb3ZlcmZsb3c6IFt7XG4gICAgICAgIG92ZXJmbG93OiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICdvdmVyZmxvdy14JzogW3tcbiAgICAgICAgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcmZsb3cgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICdvdmVyZmxvdy15JzogW3tcbiAgICAgICAgJ292ZXJmbG93LXknOiBnZXRPdmVyZmxvdygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgb3ZlcnNjcm9sbDogW3tcbiAgICAgICAgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICovXG4gICAgICAnb3ZlcnNjcm9sbC14JzogW3tcbiAgICAgICAgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAqL1xuICAgICAgJ292ZXJzY3JvbGwteSc6IFt7XG4gICAgICAgICdvdmVyc2Nyb2xsLXknOiBnZXRPdmVyc2Nyb2xsKClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgKi9cbiAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgIC8qKlxuICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIGluc2V0OiBbe1xuICAgICAgICBpbnNldDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICAnaW5zZXQteCc6IFt7XG4gICAgICAgICdpbnNldC14JzogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvcCAvIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICAnaW5zZXQteSc6IFt7XG4gICAgICAgICdpbnNldC15JzogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHN0YXJ0OiBbe1xuICAgICAgICBzdGFydDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBlbmQ6IFt7XG4gICAgICAgIGVuZDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICB0b3A6IFt7XG4gICAgICAgIHRvcDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgKi9cbiAgICAgIHJpZ2h0OiBbe1xuICAgICAgICByaWdodDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICovXG4gICAgICBib3R0b206IFt7XG4gICAgICAgIGJvdHRvbTogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAqL1xuICAgICAgbGVmdDogW3tcbiAgICAgICAgbGVmdDogW2luc2V0XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgKi9cbiAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogWi1JbmRleFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAqL1xuICAgICAgejogW3tcbiAgICAgICAgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAvKipcbiAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgKi9cbiAgICAgIGJhc2lzOiBbe1xuICAgICAgICBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IERpcmVjdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZGlyZWN0aW9uXG4gICAgICAgKi9cbiAgICAgICdmbGV4LWRpcmVjdGlvbic6IFt7XG4gICAgICAgIGZsZXg6IFsncm93JywgJ3Jvdy1yZXZlcnNlJywgJ2NvbCcsICdjb2wtcmV2ZXJzZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleCBXcmFwXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgKi9cbiAgICAgICdmbGV4LXdyYXAnOiBbe1xuICAgICAgICBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRmxleFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAqL1xuICAgICAgZmxleDogW3tcbiAgICAgICAgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IEdyb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWdyb3dcbiAgICAgICAqL1xuICAgICAgZ3JvdzogW3tcbiAgICAgICAgZ3JvdzogZ2V0WmVyb0FuZEVtcHR5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgKi9cbiAgICAgIHNocmluazogW3tcbiAgICAgICAgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE9yZGVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAqL1xuICAgICAgb3JkZXI6IFt7XG4gICAgICAgIG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIFRlbXBsYXRlIENvbHVtbnNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLWNvbHVtbnNcbiAgICAgICAqL1xuICAgICAgJ2dyaWQtY29scyc6IFt7XG4gICAgICAgICdncmlkLWNvbHMnOiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICovXG4gICAgICAnY29sLXN0YXJ0LWVuZCc6IFt7XG4gICAgICAgIGNvbDogWydhdXRvJywge1xuICAgICAgICAgIHNwYW46IFsnZnVsbCcsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgICAgfSwgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtc3RhcnQnOiBbe1xuICAgICAgICAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgKi9cbiAgICAgICdjb2wtZW5kJzogW3tcbiAgICAgICAgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBUZW1wbGF0ZSBSb3dzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1yb3dzXG4gICAgICAgKi9cbiAgICAgICdncmlkLXJvd3MnOiBbe1xuICAgICAgICAnZ3JpZC1yb3dzJzogW2lzQW55XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbe1xuICAgICAgICByb3c6IFsnYXV0bycsIHtcbiAgICAgICAgICBzcGFuOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgICB9LCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1zdGFydCc6IFt7XG4gICAgICAgICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAqL1xuICAgICAgJ3Jvdy1lbmQnOiBbe1xuICAgICAgICAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmlkIEF1dG8gRmxvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1mbG93XG4gICAgICAgKi9cbiAgICAgICdncmlkLWZsb3cnOiBbe1xuICAgICAgICAnZ3JpZC1mbG93JzogWydyb3cnLCAnY29sJywgJ2RlbnNlJywgJ3Jvdy1kZW5zZScsICdjb2wtZGVuc2UnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAqL1xuICAgICAgJ2F1dG8tY29scyc6IFt7XG4gICAgICAgICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICovXG4gICAgICAnYXV0by1yb3dzJzogW3tcbiAgICAgICAgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAqL1xuICAgICAgZ2FwOiBbe1xuICAgICAgICBnYXA6IFtnYXBdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR2FwIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAqL1xuICAgICAgJ2dhcC14JzogW3tcbiAgICAgICAgJ2dhcC14JzogW2dhcF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHYXAgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICovXG4gICAgICAnZ2FwLXknOiBbe1xuICAgICAgICAnZ2FwLXknOiBbZ2FwXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEp1c3RpZnkgQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktY29udGVudFxuICAgICAgICovXG4gICAgICAnanVzdGlmeS1jb250ZW50JzogW3tcbiAgICAgICAganVzdGlmeTogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3tcbiAgICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgKi9cbiAgICAgICdqdXN0aWZ5LXNlbGYnOiBbe1xuICAgICAgICAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgJ2FsaWduLWNvbnRlbnQnOiBbe1xuICAgICAgICBjb250ZW50OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCksICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICovXG4gICAgICAnYWxpZ24taXRlbXMnOiBbe1xuICAgICAgICBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgKi9cbiAgICAgICdhbGlnbi1zZWxmJzogW3tcbiAgICAgICAgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2UgQ29udGVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLWNvbnRlbnQnOiBbe1xuICAgICAgICAncGxhY2UtY29udGVudCc6IFsuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlLWl0ZW1zJzogW3tcbiAgICAgICAgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgKi9cbiAgICAgICdwbGFjZS1zZWxmJzogW3tcbiAgICAgICAgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ11cbiAgICAgIH1dLFxuICAgICAgLy8gU3BhY2luZ1xuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBwOiBbe1xuICAgICAgICBwOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB4OiBbe1xuICAgICAgICBweDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICovXG4gICAgICBweTogW3tcbiAgICAgICAgcHk6IFtwYWRkaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBhZGRpbmcgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBzOiBbe1xuICAgICAgICBwczogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBlOiBbe1xuICAgICAgICBwZTogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHB0OiBbe1xuICAgICAgICBwdDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGFkZGluZyBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcHI6IFt7XG4gICAgICAgIHByOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAqL1xuICAgICAgcGI6IFt7XG4gICAgICAgIHBiOiBbcGFkZGluZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgIHBsOiBbe1xuICAgICAgICBwbDogW3BhZGRpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG06IFt7XG4gICAgICAgIG06IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXg6IFt7XG4gICAgICAgIG14OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgKi9cbiAgICAgIG15OiBbe1xuICAgICAgICBteTogW21hcmdpbl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNYXJnaW4gU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXM6IFt7XG4gICAgICAgIG1zOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbWU6IFt7XG4gICAgICAgIG1lOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbXQ6IFt7XG4gICAgICAgIG10OiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1hcmdpbiBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtcjogW3tcbiAgICAgICAgbXI6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICovXG4gICAgICBtYjogW3tcbiAgICAgICAgbWI6IFttYXJnaW5dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAqL1xuICAgICAgbWw6IFt7XG4gICAgICAgIG1sOiBbbWFyZ2luXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNwYWNlIEJldHdlZW4gWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS14JzogW3tcbiAgICAgICAgJ3NwYWNlLXgnOiBbc3BhY2VdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICovXG4gICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAqL1xuICAgICAgJ3NwYWNlLXknOiBbe1xuICAgICAgICAnc3BhY2UteSc6IFtzcGFjZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgKi9cbiAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgLy8gU2l6aW5nXG4gICAgICAvKipcbiAgICAgICAqIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAqL1xuICAgICAgdzogW3tcbiAgICAgICAgdzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2dycsICdsdncnLCAnZHZ3JywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNaW4tV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4td2lkdGhcbiAgICAgICAqL1xuICAgICAgJ21pbi13JzogW3tcbiAgICAgICAgJ21pbi13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdtYXgtdyc6IFt7XG4gICAgICAgICdtYXgtdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbm9uZScsICdmdWxsJywgJ21pbicsICdtYXgnLCAnZml0JywgJ3Byb3NlJywge1xuICAgICAgICAgIHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV1cbiAgICAgICAgfSwgaXNUc2hpcnRTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2hlaWdodFxuICAgICAgICovXG4gICAgICBoOiBbe1xuICAgICAgICBoOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgKi9cbiAgICAgICdtaW4taCc6IFt7XG4gICAgICAgICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgKi9cbiAgICAgICdtYXgtaCc6IFt7XG4gICAgICAgICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNpemVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zaXplXG4gICAgICAgKi9cbiAgICAgIHNpemU6IFt7XG4gICAgICAgIHNpemU6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCddXG4gICAgICB9XSxcbiAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBTaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgKi9cbiAgICAgICdmb250LXNpemUnOiBbe1xuICAgICAgICB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAqL1xuICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICovXG4gICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICovXG4gICAgICAnZm9udC13ZWlnaHQnOiBbe1xuICAgICAgICBmb250OiBbJ3RoaW4nLCAnZXh0cmFsaWdodCcsICdsaWdodCcsICdub3JtYWwnLCAnbWVkaXVtJywgJ3NlbWlib2xkJywgJ2JvbGQnLCAnZXh0cmFib2xkJywgJ2JsYWNrJywgaXNBcmJpdHJhcnlOdW1iZXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICovXG4gICAgICAnZm9udC1mYW1pbHknOiBbe1xuICAgICAgICBmb250OiBbaXNBbnldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLW5vcm1hbCc6IFsnbm9ybWFsLW51bXMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLW9yZGluYWwnOiBbJ29yZGluYWwnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnc2xhc2hlZC16ZXJvJ10sXG4gICAgICAvKipcbiAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAqL1xuICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2xpbmluZy1udW1zJywgJ29sZHN0eWxlLW51bXMnXSxcbiAgICAgIC8qKlxuICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICovXG4gICAgICAnZnZuLXNwYWNpbmcnOiBbJ3Byb3BvcnRpb25hbC1udW1zJywgJ3RhYnVsYXItbnVtcyddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgKi9cbiAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2RpYWdvbmFsLWZyYWN0aW9ucycsICdzdGFja2VkLWZyYWN0aW9ucyddLFxuICAgICAgLyoqXG4gICAgICAgKiBMZXR0ZXIgU3BhY2luZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xldHRlci1zcGFjaW5nXG4gICAgICAgKi9cbiAgICAgIHRyYWNraW5nOiBbe1xuICAgICAgICB0cmFja2luZzogWyd0aWdodGVyJywgJ3RpZ2h0JywgJ25vcm1hbCcsICd3aWRlJywgJ3dpZGVyJywgJ3dpZGVzdCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGluZSBDbGFtcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtY2xhbXBcbiAgICAgICAqL1xuICAgICAgJ2xpbmUtY2xhbXAnOiBbe1xuICAgICAgICAnbGluZS1jbGFtcCc6IFsnbm9uZScsIGlzTnVtYmVyLCBpc0FyYml0cmFyeU51bWJlcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaW5lIEhlaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtaGVpZ2h0XG4gICAgICAgKi9cbiAgICAgIGxlYWRpbmc6IFt7XG4gICAgICAgIGxlYWRpbmc6IFsnbm9uZScsICd0aWdodCcsICdzbnVnJywgJ25vcm1hbCcsICdyZWxheGVkJywgJ2xvb3NlJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGlzdCBTdHlsZSBJbWFnZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtaW1hZ2VcbiAgICAgICAqL1xuICAgICAgJ2xpc3QtaW1hZ2UnOiBbe1xuICAgICAgICAnbGlzdC1pbWFnZSc6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogTGlzdCBTdHlsZSBUeXBlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS10eXBlXG4gICAgICAgKi9cbiAgICAgICdsaXN0LXN0eWxlLXR5cGUnOiBbe1xuICAgICAgICBsaXN0OiBbJ25vbmUnLCAnZGlzYycsICdkZWNpbWFsJywgaXNBcmJpdHJhcnlWYWx1ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBMaXN0IFN0eWxlIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1wb3NpdGlvblxuICAgICAgICovXG4gICAgICAnbGlzdC1zdHlsZS1wb3NpdGlvbic6IFt7XG4gICAgICAgIGxpc3Q6IFsnaW5zaWRlJywgJ291dHNpZGUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFBsYWNlaG9sZGVyIENvbG9yXG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlaG9sZGVyLWNvbG9yJzogW3tcbiAgICAgICAgcGxhY2Vob2xkZXI6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUGxhY2Vob2xkZXIgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbe1xuICAgICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgQWxpZ25tZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1hbGlnblxuICAgICAgICovXG4gICAgICAndGV4dC1hbGlnbm1lbnQnOiBbe1xuICAgICAgICB0ZXh0OiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0JywgJ2p1c3RpZnknLCAnc3RhcnQnLCAnZW5kJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1jb2xvclxuICAgICAgICovXG4gICAgICAndGV4dC1jb2xvcic6IFt7XG4gICAgICAgIHRleHQ6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICd0ZXh0LW9wYWNpdHknOiBbe1xuICAgICAgICAndGV4dC1vcGFjaXR5JzogW29wYWNpdHldXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVGV4dCBEZWNvcmF0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24nOiBbJ3VuZGVybGluZScsICdvdmVybGluZScsICdsaW5lLXRocm91Z2gnLCAnbm8tdW5kZXJsaW5lJ10sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBTdHlsZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1zdHlsZVxuICAgICAgICovXG4gICAgICAndGV4dC1kZWNvcmF0aW9uLXN0eWxlJzogW3tcbiAgICAgICAgZGVjb3JhdGlvbjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ3dhdnknXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBUaGlja25lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJzogW3tcbiAgICAgICAgZGVjb3JhdGlvbjogWydhdXRvJywgJ2Zyb20tZm9udCcsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IFVuZGVybGluZSBPZmZzZXRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXVuZGVybGluZS1vZmZzZXRcbiAgICAgICAqL1xuICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbe1xuICAgICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFsnYXV0bycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1jb2xvclxuICAgICAgICovXG4gICAgICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJzogW3tcbiAgICAgICAgZGVjb3JhdGlvbjogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IFRyYW5zZm9ybVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdHJhbnNmb3JtXG4gICAgICAgKi9cbiAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgT3ZlcmZsb3dcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW92ZXJmbG93XG4gICAgICAgKi9cbiAgICAgICd0ZXh0LW92ZXJmbG93JzogWyd0cnVuY2F0ZScsICd0ZXh0LWVsbGlwc2lzJywgJ3RleHQtY2xpcCddLFxuICAgICAgLyoqXG4gICAgICAgKiBUZXh0IFdyYXBcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXdyYXBcbiAgICAgICAqL1xuICAgICAgJ3RleHQtd3JhcCc6IFt7XG4gICAgICAgIHRleHQ6IFsnd3JhcCcsICdub3dyYXAnLCAnYmFsYW5jZScsICdwcmV0dHknXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRleHQgSW5kZW50XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1pbmRlbnRcbiAgICAgICAqL1xuICAgICAgaW5kZW50OiBbe1xuICAgICAgICBpbmRlbnQ6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBWZXJ0aWNhbCBBbGlnbm1lbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92ZXJ0aWNhbC1hbGlnblxuICAgICAgICovXG4gICAgICAndmVydGljYWwtYWxpZ24nOiBbe1xuICAgICAgICBhbGlnbjogWydiYXNlbGluZScsICd0b3AnLCAnbWlkZGxlJywgJ2JvdHRvbScsICd0ZXh0LXRvcCcsICd0ZXh0LWJvdHRvbScsICdzdWInLCAnc3VwZXInLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFdoaXRlc3BhY2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aGl0ZXNwYWNlXG4gICAgICAgKi9cbiAgICAgIHdoaXRlc3BhY2U6IFt7XG4gICAgICAgIHdoaXRlc3BhY2U6IFsnbm9ybWFsJywgJ25vd3JhcCcsICdwcmUnLCAncHJlLWxpbmUnLCAncHJlLXdyYXAnLCAnYnJlYWstc3BhY2VzJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBXb3JkIEJyZWFrXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd29yZC1icmVha1xuICAgICAgICovXG4gICAgICBicmVhazogW3tcbiAgICAgICAgYnJlYWs6IFsnbm9ybWFsJywgJ3dvcmRzJywgJ2FsbCcsICdrZWVwJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBIeXBoZW5zXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHlwaGVuc1xuICAgICAgICovXG4gICAgICBoeXBoZW5zOiBbe1xuICAgICAgICBoeXBoZW5zOiBbJ25vbmUnLCAnbWFudWFsJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIENvbnRlbnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250ZW50XG4gICAgICAgKi9cbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIGNvbnRlbnQ6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIEJhY2tncm91bmRzXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgQXR0YWNobWVudFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYXR0YWNobWVudFxuICAgICAgICovXG4gICAgICAnYmctYXR0YWNobWVudCc6IFt7XG4gICAgICAgIGJnOiBbJ2ZpeGVkJywgJ2xvY2FsJywgJ3Njcm9sbCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBDbGlwXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jbGlwXG4gICAgICAgKi9cbiAgICAgICdiZy1jbGlwJzogW3tcbiAgICAgICAgJ2JnLWNsaXAnOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnLCAndGV4dCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBPcGFjaXR5XG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcGFjaXR5XG4gICAgICAgKi9cbiAgICAgICdiZy1vcGFjaXR5JzogW3tcbiAgICAgICAgJ2JnLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIE9yaWdpblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3JpZ2luXG4gICAgICAgKi9cbiAgICAgICdiZy1vcmlnaW4nOiBbe1xuICAgICAgICAnYmctb3JpZ2luJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50J11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1wb3NpdGlvblxuICAgICAgICovXG4gICAgICAnYmctcG9zaXRpb24nOiBbe1xuICAgICAgICBiZzogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVBvc2l0aW9uXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgUmVwZWF0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1yZXBlYXRcbiAgICAgICAqL1xuICAgICAgJ2JnLXJlcGVhdCc6IFt7XG4gICAgICAgIGJnOiBbJ25vLXJlcGVhdCcsIHtcbiAgICAgICAgICByZXBlYXQ6IFsnJywgJ3gnLCAneScsICdyb3VuZCcsICdzcGFjZSddXG4gICAgICAgIH1dXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBTaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1zaXplXG4gICAgICAgKi9cbiAgICAgICdiZy1zaXplJzogW3tcbiAgICAgICAgYmc6IFsnYXV0bycsICdjb3ZlcicsICdjb250YWluJywgaXNBcmJpdHJhcnlTaXplXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tncm91bmQgSW1hZ2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWltYWdlXG4gICAgICAgKi9cbiAgICAgICdiZy1pbWFnZSc6IFt7XG4gICAgICAgIGJnOiBbJ25vbmUnLCB7XG4gICAgICAgICAgJ2dyYWRpZW50LXRvJzogWyd0JywgJ3RyJywgJ3InLCAnYnInLCAnYicsICdibCcsICdsJywgJ3RsJ11cbiAgICAgICAgfSwgaXNBcmJpdHJhcnlJbWFnZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZ3JvdW5kIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jb2xvclxuICAgICAgICovXG4gICAgICAnYmctY29sb3InOiBbe1xuICAgICAgICBiZzogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tIFBvc2l0aW9uXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LWZyb20tcG9zJzogW3tcbiAgICAgICAgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYSBQb3NpdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC12aWEtcG9zJzogW3tcbiAgICAgICAgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG8gUG9zaXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtdG8tcG9zJzogW3tcbiAgICAgICAgdG86IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAqL1xuICAgICAgJ2dyYWRpZW50LWZyb20nOiBbe1xuICAgICAgICBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgKi9cbiAgICAgICdncmFkaWVudC12aWEnOiBbe1xuICAgICAgICB2aWE6IFtncmFkaWVudENvbG9yU3RvcHNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG9cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICovXG4gICAgICAnZ3JhZGllbnQtdG8nOiBbe1xuICAgICAgICB0bzogW2dyYWRpZW50Q29sb3JTdG9wc11cbiAgICAgIH1dLFxuICAgICAgLy8gQm9yZGVyc1xuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICByb3VuZGVkOiBbe1xuICAgICAgICByb3VuZGVkOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXMnOiBbe1xuICAgICAgICAncm91bmRlZC1zJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtZSc6IFt7XG4gICAgICAgICdyb3VuZGVkLWUnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC10JzogW3tcbiAgICAgICAgJ3JvdW5kZWQtdCc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtcic6IFt7XG4gICAgICAgICdyb3VuZGVkLXInOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1iJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtYic6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC1sJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtbCc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtc3MnOiBbe1xuICAgICAgICAncm91bmRlZC1zcyc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXNlJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtc2UnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIEVuZFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtZWUnOiBbe1xuICAgICAgICAncm91bmRlZC1lZSc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgU3RhcnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLWVzJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtZXMnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgKi9cbiAgICAgICdyb3VuZGVkLXRsJzogW3tcbiAgICAgICAgJ3JvdW5kZWQtdGwnOiBbYm9yZGVyUmFkaXVzXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICovXG4gICAgICAncm91bmRlZC10cic6IFt7XG4gICAgICAgICdyb3VuZGVkLXRyJzogW2JvcmRlclJhZGl1c11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBSaWdodFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtYnInOiBbe1xuICAgICAgICAncm91bmRlZC1icic6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAqL1xuICAgICAgJ3JvdW5kZWQtYmwnOiBbe1xuICAgICAgICAncm91bmRlZC1ibCc6IFtib3JkZXJSYWRpdXNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdyc6IFt7XG4gICAgICAgIGJvcmRlcjogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy14JzogW3tcbiAgICAgICAgJ2JvcmRlci14JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy15JzogW3tcbiAgICAgICAgJ2JvcmRlci15JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICovXG4gICAgICAnYm9yZGVyLXctcyc6IFt7XG4gICAgICAgICdib3JkZXItcyc6IFtib3JkZXJXaWR0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgV2lkdGggRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1lJzogW3tcbiAgICAgICAgJ2JvcmRlci1lJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBUb3BcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LXQnOiBbe1xuICAgICAgICAnYm9yZGVyLXQnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItdy1yJzogW3tcbiAgICAgICAgJ2JvcmRlci1yJzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBXaWR0aCBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LWInOiBbe1xuICAgICAgICAnYm9yZGVyLWInOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFdpZHRoIExlZnRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci13LWwnOiBbe1xuICAgICAgICAnYm9yZGVyLWwnOiBbYm9yZGVyV2lkdGhdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItb3BhY2l0eVxuICAgICAgICovXG4gICAgICAnYm9yZGVyLW9wYWNpdHknOiBbe1xuICAgICAgICAnYm9yZGVyLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3R5bGVcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zdHlsZSc6IFt7XG4gICAgICAgIGJvcmRlcjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ2hpZGRlbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS14JzogW3tcbiAgICAgICAgJ2RpdmlkZS14JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBXaWR0aCBYIFJldmVyc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS14LXJldmVyc2UnOiBbJ2RpdmlkZS14LXJldmVyc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIFdpZHRoIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS15JzogW3tcbiAgICAgICAgJ2RpdmlkZS15JzogW2JvcmRlcldpZHRoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIERpdmlkZSBXaWR0aCBZIFJldmVyc2VcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS15LXJldmVyc2UnOiBbJ2RpdmlkZS15LXJldmVyc2UnXSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtb3BhY2l0eVxuICAgICAgICovXG4gICAgICAnZGl2aWRlLW9wYWNpdHknOiBbe1xuICAgICAgICAnZGl2aWRlLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEaXZpZGUgU3R5bGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtc3R5bGVcbiAgICAgICAqL1xuICAgICAgJ2RpdmlkZS1zdHlsZSc6IFt7XG4gICAgICAgIGRpdmlkZTogZ2V0TGluZVN0eWxlcygpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3InOiBbe1xuICAgICAgICBib3JkZXI6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbe1xuICAgICAgICAnYm9yZGVyLXgnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1jb2xvci15JzogW3tcbiAgICAgICAgJ2JvcmRlci15JzogW2JvcmRlckNvbG9yXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBDb2xvciBTXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3Itcyc6IFt7XG4gICAgICAgICdib3JkZXItcyc6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgRVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLWUnOiBbe1xuICAgICAgICAnYm9yZGVyLWUnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbe1xuICAgICAgICAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbG9yIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3Itcic6IFt7XG4gICAgICAgICdib3JkZXItcic6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sb3ItYic6IFt7XG4gICAgICAgICdib3JkZXItYic6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICovXG4gICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbe1xuICAgICAgICAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogRGl2aWRlIENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdkaXZpZGUtY29sb3InOiBbe1xuICAgICAgICBkaXZpZGU6IFtib3JkZXJDb2xvcl1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICovXG4gICAgICAnb3V0bGluZS1zdHlsZSc6IFt7XG4gICAgICAgIG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAqL1xuICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3tcbiAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgV2lkdGhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLXcnOiBbe1xuICAgICAgICBvdXRsaW5lOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdvdXRsaW5lLWNvbG9yJzogW3tcbiAgICAgICAgb3V0bGluZTogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICovXG4gICAgICAncmluZy13JzogW3tcbiAgICAgICAgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIFdpZHRoIEluc2V0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICovXG4gICAgICAncmluZy13LWluc2V0JzogWydyaW5nLWluc2V0J10sXG4gICAgICAvKipcbiAgICAgICAqIFJpbmcgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdyaW5nLWNvbG9yJzogW3tcbiAgICAgICAgcmluZzogW2NvbG9yc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7XG4gICAgICAgICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgKi9cbiAgICAgICdyaW5nLW9mZnNldC13JzogW3tcbiAgICAgICAgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBSaW5nIE9mZnNldCBDb2xvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdyaW5nLW9mZnNldC1jb2xvcic6IFt7XG4gICAgICAgICdyaW5nLW9mZnNldCc6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8vIEVmZmVjdHNcbiAgICAgIC8qKlxuICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAqL1xuICAgICAgc2hhZG93OiBbe1xuICAgICAgICBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgKi9cbiAgICAgICdzaGFkb3ctY29sb3InOiBbe1xuICAgICAgICBzaGFkb3c6IFtpc0FueV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBPcGFjaXR5XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3BhY2l0eVxuICAgICAgICovXG4gICAgICBvcGFjaXR5OiBbe1xuICAgICAgICBvcGFjaXR5OiBbb3BhY2l0eV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgKi9cbiAgICAgICdtaXgtYmxlbmQnOiBbe1xuICAgICAgICAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgKi9cbiAgICAgICdiZy1ibGVuZCc6IFt7XG4gICAgICAgICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKVxuICAgICAgfV0sXG4gICAgICAvLyBGaWx0ZXJzXG4gICAgICAvKipcbiAgICAgICAqIEZpbHRlclxuICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbHRlclxuICAgICAgICovXG4gICAgICBmaWx0ZXI6IFt7XG4gICAgICAgIGZpbHRlcjogWycnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmx1clxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAqL1xuICAgICAgYmx1cjogW3tcbiAgICAgICAgYmx1cjogW2JsdXJdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAqL1xuICAgICAgYnJpZ2h0bmVzczogW3tcbiAgICAgICAgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ29udHJhc3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250cmFzdFxuICAgICAgICovXG4gICAgICBjb250cmFzdDogW3tcbiAgICAgICAgY29udHJhc3Q6IFtjb250cmFzdF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgKi9cbiAgICAgICdkcm9wLXNoYWRvdyc6IFt7XG4gICAgICAgICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogR3JheXNjYWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgKi9cbiAgICAgIGdyYXlzY2FsZTogW3tcbiAgICAgICAgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEh1ZSBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9odWUtcm90YXRlXG4gICAgICAgKi9cbiAgICAgICdodWUtcm90YXRlJzogW3tcbiAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEludmVydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICovXG4gICAgICBpbnZlcnQ6IFt7XG4gICAgICAgIGludmVydDogW2ludmVydF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgKi9cbiAgICAgIHNhdHVyYXRlOiBbe1xuICAgICAgICBzYXR1cmF0ZTogW3NhdHVyYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNlcGlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2VwaWFcbiAgICAgICAqL1xuICAgICAgc2VwaWE6IFt7XG4gICAgICAgIHNlcGlhOiBbc2VwaWFdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbe1xuICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbe1xuICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFtibHVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEJyaWdodG5lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1icmlnaHRuZXNzXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbYnJpZ2h0bmVzc11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7XG4gICAgICAgICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEh1ZSBSb3RhdGVcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1odWUtcm90YXRlXG4gICAgICAgKi9cbiAgICAgICdiYWNrZHJvcC1odWUtcm90YXRlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICovXG4gICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbe1xuICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIFNhdHVyYXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2F0dXJhdGVcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3NhdHVyYXRlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAqL1xuICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3tcbiAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXVxuICAgICAgfV0sXG4gICAgICAvLyBUYWJsZXNcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItY29sbGFwc2UnOiBbe1xuICAgICAgICBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEJvcmRlciBTcGFjaW5nXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW3tcbiAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW2JvcmRlclNwYWNpbmddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgKi9cbiAgICAgICdib3JkZXItc3BhY2luZy14JzogW3tcbiAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAqL1xuICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbe1xuICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRhYmxlIExheW91dFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RhYmxlLWxheW91dFxuICAgICAgICovXG4gICAgICAndGFibGUtbGF5b3V0JzogW3tcbiAgICAgICAgdGFibGU6IFsnYXV0bycsICdmaXhlZCddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgKi9cbiAgICAgIGNhcHRpb246IFt7XG4gICAgICAgIGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddXG4gICAgICB9XSxcbiAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgIC8qKlxuICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgKi9cbiAgICAgIHRyYW5zaXRpb246IFt7XG4gICAgICAgIHRyYW5zaXRpb246IFsnbm9uZScsICdhbGwnLCAnJywgJ2NvbG9ycycsICdvcGFjaXR5JywgJ3NoYWRvdycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgKi9cbiAgICAgIGR1cmF0aW9uOiBbe1xuICAgICAgICBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgKi9cbiAgICAgIGVhc2U6IFt7XG4gICAgICAgIGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zaXRpb24gRGVsYXlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWRlbGF5XG4gICAgICAgKi9cbiAgICAgIGRlbGF5OiBbe1xuICAgICAgICBkZWxheTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBBbmltYXRpb25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAqL1xuICAgICAgYW5pbWF0ZTogW3tcbiAgICAgICAgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICovXG4gICAgICB0cmFuc2Zvcm06IFt7XG4gICAgICAgIHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjYWxlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAqL1xuICAgICAgc2NhbGU6IFt7XG4gICAgICAgIHNjYWxlOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGUgWFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgKi9cbiAgICAgICdzY2FsZS14JzogW3tcbiAgICAgICAgJ3NjYWxlLXgnOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2NhbGUgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgKi9cbiAgICAgICdzY2FsZS15JzogW3tcbiAgICAgICAgJ3NjYWxlLXknOiBbc2NhbGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUm90YXRlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvcm90YXRlXG4gICAgICAgKi9cbiAgICAgIHJvdGF0ZTogW3tcbiAgICAgICAgcm90YXRlOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgKi9cbiAgICAgICd0cmFuc2xhdGUteCc6IFt7XG4gICAgICAgICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAqL1xuICAgICAgJ3RyYW5zbGF0ZS15JzogW3tcbiAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV1cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTa2V3IFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgKi9cbiAgICAgICdza2V3LXgnOiBbe1xuICAgICAgICAnc2tldy14JzogW3NrZXddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2tldyBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICovXG4gICAgICAnc2tldy15JzogW3tcbiAgICAgICAgJ3NrZXcteSc6IFtza2V3XVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgKi9cbiAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW3tcbiAgICAgICAgb3JpZ2luOiBbJ2NlbnRlcicsICd0b3AnLCAndG9wLXJpZ2h0JywgJ3JpZ2h0JywgJ2JvdHRvbS1yaWdodCcsICdib3R0b20nLCAnYm90dG9tLWxlZnQnLCAnbGVmdCcsICd0b3AtbGVmdCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgIC8qKlxuICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgKi9cbiAgICAgIGFjY2VudDogW3tcbiAgICAgICAgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQXBwZWFyYW5jZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FwcGVhcmFuY2VcbiAgICAgICAqL1xuICAgICAgYXBwZWFyYW5jZTogW3tcbiAgICAgICAgYXBwZWFyYW5jZTogWydub25lJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIEN1cnNvclxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICovXG4gICAgICBjdXJzb3I6IFt7XG4gICAgICAgIGN1cnNvcjogWydhdXRvJywgJ2RlZmF1bHQnLCAncG9pbnRlcicsICd3YWl0JywgJ3RleHQnLCAnbW92ZScsICdoZWxwJywgJ25vdC1hbGxvd2VkJywgJ25vbmUnLCAnY29udGV4dC1tZW51JywgJ3Byb2dyZXNzJywgJ2NlbGwnLCAnY3Jvc3NoYWlyJywgJ3ZlcnRpY2FsLXRleHQnLCAnYWxpYXMnLCAnY29weScsICduby1kcm9wJywgJ2dyYWInLCAnZ3JhYmJpbmcnLCAnYWxsLXNjcm9sbCcsICdjb2wtcmVzaXplJywgJ3Jvdy1yZXNpemUnLCAnbi1yZXNpemUnLCAnZS1yZXNpemUnLCAncy1yZXNpemUnLCAndy1yZXNpemUnLCAnbmUtcmVzaXplJywgJ253LXJlc2l6ZScsICdzZS1yZXNpemUnLCAnc3ctcmVzaXplJywgJ2V3LXJlc2l6ZScsICducy1yZXNpemUnLCAnbmVzdy1yZXNpemUnLCAnbndzZS1yZXNpemUnLCAnem9vbS1pbicsICd6b29tLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAqL1xuICAgICAgJ2NhcmV0LWNvbG9yJzogW3tcbiAgICAgICAgY2FyZXQ6IFtjb2xvcnNdXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICovXG4gICAgICAncG9pbnRlci1ldmVudHMnOiBbe1xuICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogUmVzaXplXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmVzaXplXG4gICAgICAgKi9cbiAgICAgIHJlc2l6ZTogW3tcbiAgICAgICAgcmVzaXplOiBbJ25vbmUnLCAneScsICd4JywgJyddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbe1xuICAgICAgICBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbSc6IFt7XG4gICAgICAgICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbXgnOiBbe1xuICAgICAgICAnc2Nyb2xsLW14JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1teSc6IFt7XG4gICAgICAgICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tcyc6IFt7XG4gICAgICAgICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBFbmRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtbWUnOiBbe1xuICAgICAgICAnc2Nyb2xsLW1lJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW10JzogW3tcbiAgICAgICAgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1yJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgTWFyZ2luIEJvdHRvbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1tYic6IFt7XG4gICAgICAgICdzY3JvbGwtbWInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICovXG4gICAgICAnc2Nyb2xsLW1sJzogW3tcbiAgICAgICAgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcCc6IFt7XG4gICAgICAgICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBYXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1weCc6IFt7XG4gICAgICAgICdzY3JvbGwtcHgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgKi9cbiAgICAgICdzY3JvbGwtcHknOiBbe1xuICAgICAgICAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wcyc6IFt7XG4gICAgICAgICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgRW5kXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wZSc6IFt7XG4gICAgICAgICdzY3JvbGwtcGUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wdCc6IFt7XG4gICAgICAgICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXByJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBCb3R0b21cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICovXG4gICAgICAnc2Nyb2xsLXBiJzogW3tcbiAgICAgICAgJ3Njcm9sbC1wYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KClcbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAqL1xuICAgICAgJ3Njcm9sbC1wbCc6IFt7XG4gICAgICAgICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICovXG4gICAgICAnc25hcC1hbGlnbic6IFt7XG4gICAgICAgIHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBTdG9wXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtc3RvcFxuICAgICAgICovXG4gICAgICAnc25hcC1zdG9wJzogW3tcbiAgICAgICAgc25hcDogWydub3JtYWwnLCAnYWx3YXlzJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICovXG4gICAgICAnc25hcC10eXBlJzogW3tcbiAgICAgICAgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgKi9cbiAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbe1xuICAgICAgICBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvblxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICB0b3VjaDogW3tcbiAgICAgICAgdG91Y2g6IFsnYXV0bycsICdub25lJywgJ21hbmlwdWxhdGlvbiddXG4gICAgICB9XSxcbiAgICAgIC8qKlxuICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAqL1xuICAgICAgJ3RvdWNoLXgnOiBbe1xuICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgKi9cbiAgICAgICd0b3VjaC15JzogW3tcbiAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ11cbiAgICAgIH1dLFxuICAgICAgLyoqXG4gICAgICAgKiBUb3VjaCBBY3Rpb24gUGluY2ggWm9vbVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICovXG4gICAgICAndG91Y2gtcHonOiBbJ3RvdWNoLXBpbmNoLXpvb20nXSxcbiAgICAgIC8qKlxuICAgICAgICogVXNlciBTZWxlY3RcbiAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy91c2VyLXNlbGVjdFxuICAgICAgICovXG4gICAgICBzZWxlY3Q6IFt7XG4gICAgICAgIHNlbGVjdDogWydub25lJywgJ3RleHQnLCAnYWxsJywgJ2F1dG8nXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAqL1xuICAgICAgJ3dpbGwtY2hhbmdlJzogW3tcbiAgICAgICAgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXVxuICAgICAgfV0sXG4gICAgICAvLyBTVkdcbiAgICAgIC8qKlxuICAgICAgICogRmlsbFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAqL1xuICAgICAgZmlsbDogW3tcbiAgICAgICAgZmlsbDogW2NvbG9ycywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0cm9rZSBXaWR0aFxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZS13aWR0aFxuICAgICAgICovXG4gICAgICAnc3Ryb2tlLXcnOiBbe1xuICAgICAgICBzdHJva2U6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGgsIGlzQXJiaXRyYXJ5TnVtYmVyXVxuICAgICAgfV0sXG4gICAgICAvKipcbiAgICAgICAqIFN0cm9rZVxuICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICovXG4gICAgICBzdHJva2U6IFt7XG4gICAgICAgIHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXVxuICAgICAgfV0sXG4gICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAvKipcbiAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAqL1xuICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgLyoqXG4gICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICovXG4gICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7XG4gICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXVxuICAgICAgfV1cbiAgICB9LFxuICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6IHtcbiAgICAgIG92ZXJmbG93OiBbJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAgICAgb3ZlcnNjcm9sbDogWydvdmVyc2Nyb2xsLXgnLCAnb3ZlcnNjcm9sbC15J10sXG4gICAgICBpbnNldDogWydpbnNldC14JywgJ2luc2V0LXknLCAnc3RhcnQnLCAnZW5kJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAgICAgJ2luc2V0LXgnOiBbJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICAgICdpbnNldC15JzogWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICBmbGV4OiBbJ2Jhc2lzJywgJ2dyb3cnLCAnc2hyaW5rJ10sXG4gICAgICBnYXA6IFsnZ2FwLXgnLCAnZ2FwLXknXSxcbiAgICAgIHA6IFsncHgnLCAncHknLCAncHMnLCAncGUnLCAncHQnLCAncHInLCAncGInLCAncGwnXSxcbiAgICAgIHB4OiBbJ3ByJywgJ3BsJ10sXG4gICAgICBweTogWydwdCcsICdwYiddLFxuICAgICAgbTogWydteCcsICdteScsICdtcycsICdtZScsICdtdCcsICdtcicsICdtYicsICdtbCddLFxuICAgICAgbXg6IFsnbXInLCAnbWwnXSxcbiAgICAgIG15OiBbJ210JywgJ21iJ10sXG4gICAgICBzaXplOiBbJ3cnLCAnaCddLFxuICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ2Z2bi1vcmRpbmFsJywgJ2Z2bi1zbGFzaGVkLXplcm8nLCAnZnZuLWZpZ3VyZScsICdmdm4tc3BhY2luZycsICdmdm4tZnJhY3Rpb24nXSxcbiAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICByb3VuZGVkOiBbJ3JvdW5kZWQtcycsICdyb3VuZGVkLWUnLCAncm91bmRlZC10JywgJ3JvdW5kZWQtcicsICdyb3VuZGVkLWInLCAncm91bmRlZC1sJywgJ3JvdW5kZWQtc3MnLCAncm91bmRlZC1zZScsICdyb3VuZGVkLWVlJywgJ3JvdW5kZWQtZXMnLCAncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICdib3JkZXItdyc6IFsnYm9yZGVyLXctcycsICdib3JkZXItdy1lJywgJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctcicsICdib3JkZXItdy1iJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICdib3JkZXItY29sb3InOiBbJ2JvcmRlci1jb2xvci1zJywgJ2JvcmRlci1jb2xvci1lJywgJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1iJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAnc2Nyb2xsLW0nOiBbJ3Njcm9sbC1teCcsICdzY3JvbGwtbXknLCAnc2Nyb2xsLW1zJywgJ3Njcm9sbC1tZScsICdzY3JvbGwtbXQnLCAnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tYicsICdzY3JvbGwtbWwnXSxcbiAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICdzY3JvbGwtcCc6IFsnc2Nyb2xsLXB4JywgJ3Njcm9sbC1weScsICdzY3JvbGwtcHMnLCAnc2Nyb2xsLXBlJywgJ3Njcm9sbC1wdCcsICdzY3JvbGwtcHInLCAnc2Nyb2xsLXBiJywgJ3Njcm9sbC1wbCddLFxuICAgICAgJ3Njcm9sbC1weCc6IFsnc2Nyb2xsLXByJywgJ3Njcm9sbC1wbCddLFxuICAgICAgJ3Njcm9sbC1weSc6IFsnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wYiddLFxuICAgICAgdG91Y2g6IFsndG91Y2gteCcsICd0b3VjaC15JywgJ3RvdWNoLXB6J10sXG4gICAgICAndG91Y2gteCc6IFsndG91Y2gnXSxcbiAgICAgICd0b3VjaC15JzogWyd0b3VjaCddLFxuICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaCddXG4gICAgfSxcbiAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6IHtcbiAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQHBhcmFtIGJhc2VDb25maWcgQ29uZmlnIHdoZXJlIG90aGVyIGNvbmZpZyB3aWxsIGJlIG1lcmdlZCBpbnRvLiBUaGlzIG9iamVjdCB3aWxsIGJlIG11dGF0ZWQuXG4gKiBAcGFyYW0gY29uZmlnRXh0ZW5zaW9uIFBhcnRpYWwgY29uZmlnIHRvIG1lcmdlIGludG8gdGhlIGBiYXNlQ29uZmlnYC5cbiAqL1xuY29uc3QgbWVyZ2VDb25maWdzID0gKGJhc2VDb25maWcsIHtcbiAgY2FjaGVTaXplLFxuICBwcmVmaXgsXG4gIHNlcGFyYXRvcixcbiAgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUsXG4gIGV4dGVuZCA9IHt9LFxuICBvdmVycmlkZSA9IHt9XG59KSA9PiB7XG4gIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2NhY2hlU2l6ZScsIGNhY2hlU2l6ZSk7XG4gIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3ByZWZpeCcsIHByZWZpeCk7XG4gIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3NlcGFyYXRvcicsIHNlcGFyYXRvcik7XG4gIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2V4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lJywgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpO1xuICBmb3IgKGNvbnN0IGNvbmZpZ0tleSBpbiBvdmVycmlkZSkge1xuICAgIG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhiYXNlQ29uZmlnW2NvbmZpZ0tleV0sIG92ZXJyaWRlW2NvbmZpZ0tleV0pO1xuICB9XG4gIGZvciAoY29uc3Qga2V5IGluIGV4dGVuZCkge1xuICAgIG1lcmdlQ29uZmlnUHJvcGVydGllcyhiYXNlQ29uZmlnW2tleV0sIGV4dGVuZFtrZXldKTtcbiAgfVxuICByZXR1cm4gYmFzZUNvbmZpZztcbn07XG5jb25zdCBvdmVycmlkZVByb3BlcnR5ID0gKGJhc2VPYmplY3QsIG92ZXJyaWRlS2V5LCBvdmVycmlkZVZhbHVlKSA9PiB7XG4gIGlmIChvdmVycmlkZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBiYXNlT2JqZWN0W292ZXJyaWRlS2V5XSA9IG92ZXJyaWRlVmFsdWU7XG4gIH1cbn07XG5jb25zdCBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMgPSAoYmFzZU9iamVjdCwgb3ZlcnJpZGVPYmplY3QpID0+IHtcbiAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZU9iamVjdCwga2V5LCBvdmVycmlkZU9iamVjdFtrZXldKTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMgPSAoYmFzZU9iamVjdCwgbWVyZ2VPYmplY3QpID0+IHtcbiAgaWYgKG1lcmdlT2JqZWN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbWVyZ2VPYmplY3QpIHtcbiAgICAgIGNvbnN0IG1lcmdlVmFsdWUgPSBtZXJnZU9iamVjdFtrZXldO1xuICAgICAgaWYgKG1lcmdlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBiYXNlT2JqZWN0W2tleV0gPSAoYmFzZU9iamVjdFtrZXldIHx8IFtdKS5jb25jYXQobWVyZ2VWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuY29uc3QgZXh0ZW5kVGFpbHdpbmRNZXJnZSA9IChjb25maWdFeHRlbnNpb24sIC4uLmNyZWF0ZUNvbmZpZykgPT4gdHlwZW9mIGNvbmZpZ0V4dGVuc2lvbiA9PT0gJ2Z1bmN0aW9uJyA/IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZywgY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpIDogY3JlYXRlVGFpbHdpbmRNZXJnZSgoKSA9PiBtZXJnZUNvbmZpZ3MoZ2V0RGVmYXVsdENvbmZpZygpLCBjb25maWdFeHRlbnNpb24pLCAuLi5jcmVhdGVDb25maWcpO1xuY29uc3QgdHdNZXJnZSA9IC8qI19fUFVSRV9fKi9jcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcpO1xuZXhwb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSwgZXh0ZW5kVGFpbHdpbmRNZXJnZSwgZnJvbVRoZW1lLCBnZXREZWZhdWx0Q29uZmlnLCBtZXJnZUNvbmZpZ3MsIHR3Sm9pbiwgdHdNZXJnZSwgdmFsaWRhdG9ycyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLW1qcy5tanMubWFwXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/tailwind-merge/dist/bundle-mjs.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/tslib/tslib.es6.mjs":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/tslib/tslib.es6.mjs ***!
|
||
\******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ __addDisposableResource: () => (/* binding */ __addDisposableResource),\n/* harmony export */ __assign: () => (/* binding */ __assign),\n/* harmony export */ __asyncDelegator: () => (/* binding */ __asyncDelegator),\n/* harmony export */ __asyncGenerator: () => (/* binding */ __asyncGenerator),\n/* harmony export */ __asyncValues: () => (/* binding */ __asyncValues),\n/* harmony export */ __await: () => (/* binding */ __await),\n/* harmony export */ __awaiter: () => (/* binding */ __awaiter),\n/* harmony export */ __classPrivateFieldGet: () => (/* binding */ __classPrivateFieldGet),\n/* harmony export */ __classPrivateFieldIn: () => (/* binding */ __classPrivateFieldIn),\n/* harmony export */ __classPrivateFieldSet: () => (/* binding */ __classPrivateFieldSet),\n/* harmony export */ __createBinding: () => (/* binding */ __createBinding),\n/* harmony export */ __decorate: () => (/* binding */ __decorate),\n/* harmony export */ __disposeResources: () => (/* binding */ __disposeResources),\n/* harmony export */ __esDecorate: () => (/* binding */ __esDecorate),\n/* harmony export */ __exportStar: () => (/* binding */ __exportStar),\n/* harmony export */ __extends: () => (/* binding */ __extends),\n/* harmony export */ __generator: () => (/* binding */ __generator),\n/* harmony export */ __importDefault: () => (/* binding */ __importDefault),\n/* harmony export */ __importStar: () => (/* binding */ __importStar),\n/* harmony export */ __makeTemplateObject: () => (/* binding */ __makeTemplateObject),\n/* harmony export */ __metadata: () => (/* binding */ __metadata),\n/* harmony export */ __param: () => (/* binding */ __param),\n/* harmony export */ __propKey: () => (/* binding */ __propKey),\n/* harmony export */ __read: () => (/* binding */ __read),\n/* harmony export */ __rest: () => (/* binding */ __rest),\n/* harmony export */ __rewriteRelativeImportExtension: () => (/* binding */ __rewriteRelativeImportExtension),\n/* harmony export */ __runInitializers: () => (/* binding */ __runInitializers),\n/* harmony export */ __setFunctionName: () => (/* binding */ __setFunctionName),\n/* harmony export */ __spread: () => (/* binding */ __spread),\n/* harmony export */ __spreadArray: () => (/* binding */ __spreadArray),\n/* harmony export */ __spreadArrays: () => (/* binding */ __spreadArrays),\n/* harmony export */ __values: () => (/* binding */ __values),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nfunction __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nfunction __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nfunction __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nfunction __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nfunction __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nfunction __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nfunction __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nfunction __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) 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 = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nvar __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nfunction __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nfunction __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nfunction __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nfunction __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nfunction __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nfunction __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nfunction __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nfunction __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nfunction __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nfunction __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nfunction __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVMsZ0JBQWdCLHNDQUFzQyxrQkFBa0I7QUFDakYsd0JBQXdCO0FBQ3hCO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTs7QUFFTztBQUNQO0FBQ0EsK0NBQStDLE9BQU87QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxjQUFjO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsMkNBQTJDLFFBQVE7QUFDbkQ7QUFDQTs7QUFFTztBQUNQLGtDQUFrQztBQUNsQzs7QUFFTztBQUNQLHVCQUF1Qix1RkFBdUY7QUFDOUc7QUFDQTtBQUNBLHlHQUF5RztBQUN6RztBQUNBLHNDQUFzQyxRQUFRO0FBQzlDO0FBQ0EsZ0VBQWdFO0FBQ2hFO0FBQ0EsOENBQThDLHlGQUF5RjtBQUN2SSw4REFBOEQsMkNBQTJDO0FBQ3pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0Esa0JBQWtCLHlCQUF5QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBLDRDQUE0Qyx5RUFBeUU7QUFDckg7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1AsMEJBQTBCLCtEQUErRCxpQkFBaUI7QUFDMUc7QUFDQSxrQ0FBa0MsTUFBTSwrQkFBK0IsWUFBWTtB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUZBQXVGLFNBQVMsZ0JBQWdCO0FBQ2hIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUEsaUVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx0c2xpYlxcdHNsaWIuZXM2Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXG5cbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xuICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xuICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xufVxuXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XG4gICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgICByZXR1cm4gdDtcbiAgfVxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgdFtwXSA9IHNbcF07XG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgfVxuICByZXR1cm4gdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19lc0RlY29yYXRlKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7XG4gIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxuICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xuICB2YXIgdGFyZ2V0ID0gIWRlc2NyaXB0b3JJbiAmJiBjdG9yID8gY29udGV4dEluW1wic3RhdGljXCJdID8gY3RvciA6IGN0b3IucHJvdG90eXBlIDogbnVsbDtcbiAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XG4gIHZhciBfLCBkb25lID0gZmFsc2U7XG4gIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgY29udGV4dCA9IHt9O1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XG4gICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcbiAgICAgIGlmIChraW5kID09PSBcImFjY2Vzc29yXCIpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuZ2V0KSkgZGVzY3JpcHRvci5nZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xuICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXztcbiAgICAgIH1cbiAgfVxuICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7XG4gIGRvbmUgPSB0cnVlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcbiAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XG4gIH1cbiAgcmV0dXJuIHVzZVZhbHVlID8gdmFsdWUgOiB2b2lkIDA7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19wcm9wS2V5KHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xuICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwgXCJuYW1lXCIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gXCJcIi5jb25jYXQocHJlZml4LCBcIiBcIiwgbmFtZSkgOiBuYW1lIH0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcbiAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZyA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSk7XG4gIHJldHVybiBnLm5leHQgPSB2ZXJiKDApLCBnW1widGhyb3dcIl0gPSB2ZXJiKDEpLCBnW1wicmV0dXJuXCJdID0gdmVyYigyKSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICB9XG59XG5cbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICBvW2syXSA9IG1ba107XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XG4gIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcbiAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcbiAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIW0pIHJldHVybiBvO1xuICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgdHJ5IHtcbiAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICB9XG4gIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgfVxuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xuICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcbiAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxuICAgICAgICAgIHJba10gPSBhW2pdO1xuICByZXR1cm4gcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcbiAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XG4gIHJldHVybiBpID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEFzeW5jSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEFzeW5jSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSksIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiwgYXdhaXRSZXR1cm4pLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIGF3YWl0UmV0dXJuKGYpIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodikudGhlbihmLCByZWplY3QpOyB9OyB9XG4gIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpZiAoZ1tuXSkgeyBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyBpZiAoZikgaVtuXSA9IGYoaVtuXSk7IH0gfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XG4gIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxuICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICByZXR1cm4gY29va2VkO1xufTtcblxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxudmFyIG93bktleXMgPSBmdW5jdGlvbihvKSB7XG4gIG93bktleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBhciA9IFtdO1xuICAgIGZvciAodmFyIGsgaW4gbykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrKSkgYXJbYXIubGVuZ3RoXSA9IGs7XG4gICAgcmV0dXJuIGFyO1xuICB9O1xuICByZXR1cm4gb3duS2V5cyhvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XG4gIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrID0gb3duS2V5cyhtb2QpLCBpID0gMDsgaSA8IGsubGVuZ3RoOyBpKyspIGlmIChrW2ldICE9PSBcImRlZmF1bHRcIikgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrW2ldKTtcbiAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcbiAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcbiAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xuICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcbiAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlKGVudiwgdmFsdWUsIGFzeW5jKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XG4gICAgdmFyIGRpc3Bvc2UsIGlubmVyO1xuICAgIGlmIChhc3luYykge1xuICAgICAgaWYgKCFTeW1ib2wuYXN5bmNEaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jRGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07XG4gICAgfVxuICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHtcbiAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmRpc3Bvc2VdO1xuICAgICAgaWYgKGFzeW5jKSBpbm5lciA9IGRpc3Bvc2U7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcbiAgICBpZiAoaW5uZXIpIGRpc3Bvc2UgPSBmdW5jdGlvbigpIHsgdHJ5IHsgaW5uZXIuY2FsbCh0aGlzKTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7IH0gfTtcbiAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xuICB9XG4gIGVsc2UgaWYgKGFzeW5jKSB7XG4gICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XG4gIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcbiAgZnVuY3Rpb24gZmFpbChlKSB7XG4gICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xuICAgIGVudi5oYXNFcnJvciA9IHRydWU7XG4gIH1cbiAgdmFyIHIsIHMgPSAwO1xuICBmdW5jdGlvbiBuZXh0KCkge1xuICAgIHdoaWxlIChyID0gZW52LnN0YWNrLnBvcCgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIXIuYXN5bmMgJiYgcyA9PT0gMSkgcmV0dXJuIHMgPSAwLCBlbnYuc3RhY2sucHVzaChyKSwgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuZXh0KTtcbiAgICAgICAgaWYgKHIuZGlzcG9zZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSByLmRpc3Bvc2UuY2FsbChyLnZhbHVlKTtcbiAgICAgICAgICBpZiAoci5hc3luYykgcmV0dXJuIHMgfD0gMiwgUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihuZXh0LCBmdW5jdGlvbihlKSB7IGZhaWwoZSk7IHJldHVybiBuZXh0KCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgcyB8PSAxO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZmFpbChlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHMgPT09IDEpIHJldHVybiBlbnYuaGFzRXJyb3IgPyBQcm9taXNlLnJlamVjdChlbnYuZXJyb3IpIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgaWYgKGVudi5oYXNFcnJvcikgdGhyb3cgZW52LmVycm9yO1xuICB9XG4gIHJldHVybiBuZXh0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbihwYXRoLCBwcmVzZXJ2ZUpzeCkge1xuICBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIgJiYgL15cXC5cXC4/XFwvLy50ZXN0KHBhdGgpKSB7XG4gICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXC4odHN4KSR8KCg/OlxcLmQpPykoKD86XFwuW14uL10rPyk/KVxcLihbY21dPyl0cyQvaSwgZnVuY3Rpb24gKG0sIHRzeCwgZCwgZXh0LCBjbSkge1xuICAgICAgICAgIHJldHVybiB0c3ggPyBwcmVzZXJ2ZUpzeCA/IFwiLmpzeFwiIDogXCIuanNcIiA6IGQgJiYgKCFleHQgfHwgIWNtKSA/IG0gOiAoZCArIGV4dCArIFwiLlwiICsgY20udG9Mb3dlckNhc2UoKSArIFwianNcIik7XG4gICAgICB9KTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBfX2V4dGVuZHMsXG4gIF9fYXNzaWduLFxuICBfX3Jlc3QsXG4gIF9fZGVjb3JhdGUsXG4gIF9fcGFyYW0sXG4gIF9fZXNEZWNvcmF0ZSxcbiAgX19ydW5Jbml0aWFsaXplcnMsXG4gIF9fcHJvcEtleSxcbiAgX19zZXRGdW5jdGlvbk5hbWUsXG4gIF9fbWV0YWRhdGEsXG4gIF9fYXdhaXRlcixcbiAgX19nZW5lcmF0b3IsXG4gIF9fY3JlYXRlQmluZGluZyxcbiAgX19leHBvcnRTdGFyLFxuICBfX3ZhbHVlcyxcbiAgX19yZWFkLFxuICBfX3NwcmVhZCxcbiAgX19zcHJlYWRBcnJheXMsXG4gIF9fc3ByZWFkQXJyYXksXG4gIF9fYXdhaXQsXG4gIF9fYXN5bmNHZW5lcmF0b3IsXG4gIF9fYXN5bmNEZWxlZ2F0b3IsXG4gIF9fYXN5bmNWYWx1ZXMsXG4gIF9fbWFrZVRlbXBsYXRlT2JqZWN0LFxuICBfX2ltcG9ydFN0YXIsXG4gIF9faW1wb3J0RGVmYXVsdCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxuICBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSxcbiAgX19kaXNwb3NlUmVzb3VyY2VzLFxuICBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbixcbn07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/tslib/tslib.es6.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/w3c-keyname/index.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/w3c-keyname/index.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ base: () => (/* binding */ base),\n/* harmony export */ keyName: () => (/* binding */ keyName),\n/* harmony export */ shift: () => (/* binding */ shift)\n/* harmony export */ });\nvar base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nvar shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nfunction keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy93M2Mta2V5bmFtZS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsMEVBQTBFLEdBQUc7O0FBRTdFO0FBQ0EsZ0JBQWdCLFFBQVE7O0FBRXhCO0FBQ0EsZ0JBQWdCLFNBQVM7O0FBRXpCO0FBQ0EsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHczYy1rZXluYW1lXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGJhc2UgPSB7XG4gIDg6IFwiQmFja3NwYWNlXCIsXG4gIDk6IFwiVGFiXCIsXG4gIDEwOiBcIkVudGVyXCIsXG4gIDEyOiBcIk51bUxvY2tcIixcbiAgMTM6IFwiRW50ZXJcIixcbiAgMTY6IFwiU2hpZnRcIixcbiAgMTc6IFwiQ29udHJvbFwiLFxuICAxODogXCJBbHRcIixcbiAgMjA6IFwiQ2Fwc0xvY2tcIixcbiAgMjc6IFwiRXNjYXBlXCIsXG4gIDMyOiBcIiBcIixcbiAgMzM6IFwiUGFnZVVwXCIsXG4gIDM0OiBcIlBhZ2VEb3duXCIsXG4gIDM1OiBcIkVuZFwiLFxuICAzNjogXCJIb21lXCIsXG4gIDM3OiBcIkFycm93TGVmdFwiLFxuICAzODogXCJBcnJvd1VwXCIsXG4gIDM5OiBcIkFycm93UmlnaHRcIixcbiAgNDA6IFwiQXJyb3dEb3duXCIsXG4gIDQ0OiBcIlByaW50U2NyZWVuXCIsXG4gIDQ1OiBcIkluc2VydFwiLFxuICA0NjogXCJEZWxldGVcIixcbiAgNTk6IFwiO1wiLFxuICA2MTogXCI9XCIsXG4gIDkxOiBcIk1ldGFcIixcbiAgOTI6IFwiTWV0YVwiLFxuICAxMDY6IFwiKlwiLFxuICAxMDc6IFwiK1wiLFxuICAxMDg6IFwiLFwiLFxuICAxMDk6IFwiLVwiLFxuICAxMTA6IFwiLlwiLFxuICAxMTE6IFwiL1wiLFxuICAxNDQ6IFwiTnVtTG9ja1wiLFxuICAxNDU6IFwiU2Nyb2xsTG9ja1wiLFxuICAxNjA6IFwiU2hpZnRcIixcbiAgMTYxOiBcIlNoaWZ0XCIsXG4gIDE2MjogXCJDb250cm9sXCIsXG4gIDE2MzogXCJDb250cm9sXCIsXG4gIDE2NDogXCJBbHRcIixcbiAgMTY1OiBcIkFsdFwiLFxuICAxNzM6IFwiLVwiLFxuICAxODY6IFwiO1wiLFxuICAxODc6IFwiPVwiLFxuICAxODg6IFwiLFwiLFxuICAxODk6IFwiLVwiLFxuICAxOTA6IFwiLlwiLFxuICAxOTE6IFwiL1wiLFxuICAxOTI6IFwiYFwiLFxuICAyMTk6IFwiW1wiLFxuICAyMjA6IFwiXFxcXFwiLFxuICAyMjE6IFwiXVwiLFxuICAyMjI6IFwiJ1wiXG59XG5cbmV4cG9ydCB2YXIgc2hpZnQgPSB7XG4gIDQ4OiBcIilcIixcbiAgNDk6IFwiIVwiLFxuICA1MDogXCJAXCIsXG4gIDUxOiBcIiNcIixcbiAgNTI6IFwiJFwiLFxuICA1MzogXCIlXCIsXG4gIDU0OiBcIl5cIixcbiAgNTU6IFwiJlwiLFxuICA1NjogXCIqXCIsXG4gIDU3OiBcIihcIixcbiAgNTk6IFwiOlwiLFxuICA2MTogXCIrXCIsXG4gIDE3MzogXCJfXCIsXG4gIDE4NjogXCI6XCIsXG4gIDE4NzogXCIrXCIsXG4gIDE4ODogXCI8XCIsXG4gIDE4OTogXCJfXCIsXG4gIDE5MDogXCI+XCIsXG4gIDE5MTogXCI/XCIsXG4gIDE5MjogXCJ+XCIsXG4gIDIxOTogXCJ7XCIsXG4gIDIyMDogXCJ8XCIsXG4gIDIyMTogXCJ9XCIsXG4gIDIyMjogXCJcXFwiXCJcbn1cblxudmFyIG1hYyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gXCJ1bmRlZmluZWRcIiAmJiAvTWFjLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSlcbnZhciBpZSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gXCJ1bmRlZmluZWRcIiAmJiAvTVNJRSBcXGR8VHJpZGVudFxcLyg/Ols3LTldfFxcZHsyLH0pXFwuLipydjooXFxkKykvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudClcblxuLy8gRmlsbCBpbiB0aGUgZGlnaXQga2V5c1xuZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSBiYXNlWzQ4ICsgaV0gPSBiYXNlWzk2ICsgaV0gPSBTdHJpbmcoaSlcblxuLy8gVGhlIGZ1bmN0aW9uIGtleXNcbmZvciAodmFyIGkgPSAxOyBpIDw9IDI0OyBpKyspIGJhc2VbaSArIDExMV0gPSBcIkZcIiArIGlcblxuLy8gQW5kIHRoZSBhbHBoYWJldGljIGtleXNcbmZvciAodmFyIGkgPSA2NTsgaSA8PSA5MDsgaSsrKSB7XG4gIGJhc2VbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgKyAzMilcbiAgc2hpZnRbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXG59XG5cbi8vIEZvciBlYWNoIGNvZGUgdGhhdCBkb2Vzbid0IGhhdmUgYSBzaGlmdC1lcXVpdmFsZW50LCBjb3B5IHRoZSBiYXNlIG5hbWVcbmZvciAodmFyIGNvZGUgaW4gYmFzZSkgaWYgKCFzaGlmdC5oYXNPd25Qcm9wZXJ0eShjb2RlKSkgc2hpZnRbY29kZV0gPSBiYXNlW2NvZGVdXG5cbmV4cG9ydCBmdW5jdGlvbiBrZXlOYW1lKGV2ZW50KSB7XG4gIC8vIE9uIG1hY09TLCBrZXlzIGhlbGQgd2l0aCBTaGlmdCBhbmQgQ21kIGRvbid0IHJlZmxlY3QgdGhlIGVmZmVjdCBvZiBTaGlmdCBpbiBgLmtleWAuXG4gIC8vIE9uIElFLCBzaGlmdCBlZmZlY3QgaXMgbmV2ZXIgaW5jbHVkZWQgaW4gYC5rZXlgLlxuICB2YXIgaWdub3JlS2V5ID0gbWFjICYmIGV2ZW50Lm1ldGFLZXkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleSB8fFxuICAgICAgaWUgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ICYmIGV2ZW50LmtleS5sZW5ndGggPT0gMSB8fFxuICAgICAgZXZlbnQua2V5ID09IFwiVW5pZGVudGlmaWVkXCJcbiAgdmFyIG5hbWUgPSAoIWlnbm9yZUtleSAmJiBldmVudC5rZXkpIHx8XG4gICAgKGV2ZW50LnNoaWZ0S2V5ID8gc2hpZnQgOiBiYXNlKVtldmVudC5rZXlDb2RlXSB8fFxuICAgIGV2ZW50LmtleSB8fCBcIlVuaWRlbnRpZmllZFwiXG4gIC8vIEVkZ2Ugc29tZXRpbWVzIHByb2R1Y2VzIHdyb25nIG5hbWVzIChJc3N1ZSAjMylcbiAgaWYgKG5hbWUgPT0gXCJFc2NcIikgbmFtZSA9IFwiRXNjYXBlXCJcbiAgaWYgKG5hbWUgPT0gXCJEZWxcIikgbmFtZSA9IFwiRGVsZXRlXCJcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNvbS9lbi11cy9taWNyb3NvZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvODg2MDU3MS9cbiAgaWYgKG5hbWUgPT0gXCJMZWZ0XCIpIG5hbWUgPSBcIkFycm93TGVmdFwiXG4gIGlmIChuYW1lID09IFwiVXBcIikgbmFtZSA9IFwiQXJyb3dVcFwiXG4gIGlmIChuYW1lID09IFwiUmlnaHRcIikgbmFtZSA9IFwiQXJyb3dSaWdodFwiXG4gIGlmIChuYW1lID09IFwiRG93blwiKSBuYW1lID0gXCJBcnJvd0Rvd25cIlxuICByZXR1cm4gbmFtZVxufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/w3c-keyname/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/classic/checks.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/zod/v4/classic/checks.js ***!
|
||
\***********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ endsWith: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._endsWith),\n/* harmony export */ gt: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._gt),\n/* harmony export */ gte: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._gte),\n/* harmony export */ includes: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._includes),\n/* harmony export */ length: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._length),\n/* harmony export */ lowercase: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._lowercase),\n/* harmony export */ lt: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._lt),\n/* harmony export */ lte: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._lte),\n/* harmony export */ maxLength: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._maxLength),\n/* harmony export */ maxSize: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._maxSize),\n/* harmony export */ mime: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._mime),\n/* harmony export */ minLength: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._minLength),\n/* harmony export */ minSize: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._minSize),\n/* harmony export */ multipleOf: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._multipleOf),\n/* harmony export */ negative: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._negative),\n/* harmony export */ nonnegative: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._nonnegative),\n/* harmony export */ nonpositive: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._nonpositive),\n/* harmony export */ normalize: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._normalize),\n/* harmony export */ overwrite: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._overwrite),\n/* harmony export */ positive: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._positive),\n/* harmony export */ property: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._property),\n/* harmony export */ regex: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._regex),\n/* harmony export */ size: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._size),\n/* harmony export */ slugify: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._slugify),\n/* harmony export */ startsWith: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._startsWith),\n/* harmony export */ toLowerCase: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._toLowerCase),\n/* harmony export */ toUpperCase: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._toUpperCase),\n/* harmony export */ trim: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._trim),\n/* harmony export */ uppercase: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._uppercase)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/index.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9jaGVja3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXNwQiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcY2xhc3NpY1xcY2hlY2tzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IF9sdCBhcyBsdCwgX2x0ZSBhcyBsdGUsIF9ndCBhcyBndCwgX2d0ZSBhcyBndGUsIF9wb3NpdGl2ZSBhcyBwb3NpdGl2ZSwgX25lZ2F0aXZlIGFzIG5lZ2F0aXZlLCBfbm9ucG9zaXRpdmUgYXMgbm9ucG9zaXRpdmUsIF9ub25uZWdhdGl2ZSBhcyBub25uZWdhdGl2ZSwgX211bHRpcGxlT2YgYXMgbXVsdGlwbGVPZiwgX21heFNpemUgYXMgbWF4U2l6ZSwgX21pblNpemUgYXMgbWluU2l6ZSwgX3NpemUgYXMgc2l6ZSwgX21heExlbmd0aCBhcyBtYXhMZW5ndGgsIF9taW5MZW5ndGggYXMgbWluTGVuZ3RoLCBfbGVuZ3RoIGFzIGxlbmd0aCwgX3JlZ2V4IGFzIHJlZ2V4LCBfbG93ZXJjYXNlIGFzIGxvd2VyY2FzZSwgX3VwcGVyY2FzZSBhcyB1cHBlcmNhc2UsIF9pbmNsdWRlcyBhcyBpbmNsdWRlcywgX3N0YXJ0c1dpdGggYXMgc3RhcnRzV2l0aCwgX2VuZHNXaXRoIGFzIGVuZHNXaXRoLCBfcHJvcGVydHkgYXMgcHJvcGVydHksIF9taW1lIGFzIG1pbWUsIF9vdmVyd3JpdGUgYXMgb3ZlcndyaXRlLCBfbm9ybWFsaXplIGFzIG5vcm1hbGl6ZSwgX3RyaW0gYXMgdHJpbSwgX3RvTG93ZXJDYXNlIGFzIHRvTG93ZXJDYXNlLCBfdG9VcHBlckNhc2UgYXMgdG9VcHBlckNhc2UsIF9zbHVnaWZ5IGFzIHNsdWdpZnksIH0gZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/classic/checks.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/classic/coerce.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/zod/v4/classic/coerce.js ***!
|
||
\***********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bigint: () => (/* binding */ bigint),\n/* harmony export */ boolean: () => (/* binding */ boolean),\n/* harmony export */ date: () => (/* binding */ date),\n/* harmony export */ number: () => (/* binding */ number),\n/* harmony export */ string: () => (/* binding */ string)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/index.js\");\n/* harmony import */ var _schemas_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schemas.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/schemas.js\");\n\n\nfunction string(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedString(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodString, params);\n}\nfunction number(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedNumber(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNumber, params);\n}\nfunction boolean(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedBoolean(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodBoolean, params);\n}\nfunction bigint(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedBigint(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodBigInt, params);\n}\nfunction date(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedDate(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodDate, params);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9jb2VyY2UuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF5QztBQUNEO0FBQ2pDO0FBQ1AsV0FBVywwREFBbUIsQ0FBQyxrREFBaUI7QUFDaEQ7QUFDTztBQUNQLFdBQVcsMERBQW1CLENBQUMsa0RBQWlCO0FBQ2hEO0FBQ087QUFDUCxXQUFXLDJEQUFvQixDQUFDLG1EQUFrQjtBQUNsRDtBQUNPO0FBQ1AsV0FBVywwREFBbUIsQ0FBQyxrREFBaUI7QUFDaEQ7QUFDTztBQUNQLFdBQVcsd0RBQWlCLENBQUMsZ0RBQWU7QUFDNUMiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNsYXNzaWNcXGNvZXJjZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBzY2hlbWFzIGZyb20gXCIuL3NjaGVtYXMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NvZXJjZWRTdHJpbmcoc2NoZW1hcy5ab2RTdHJpbmcsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jb2VyY2VkTnVtYmVyKHNjaGVtYXMuWm9kTnVtYmVyLCBwYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGJvb2xlYW4ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NvZXJjZWRCb29sZWFuKHNjaGVtYXMuWm9kQm9vbGVhbiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBiaWdpbnQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NvZXJjZWRCaWdpbnQoc2NoZW1hcy5ab2RCaWdJbnQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGF0ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY29lcmNlZERhdGUoc2NoZW1hcy5ab2REYXRlLCBwYXJhbXMpO1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/classic/coerce.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/classic/compat.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/zod/v4/classic/compat.js ***!
|
||
\***********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $brand: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$brand),\n/* harmony export */ ZodFirstPartyTypeKind: () => (/* binding */ ZodFirstPartyTypeKind),\n/* harmony export */ ZodIssueCode: () => (/* binding */ ZodIssueCode),\n/* harmony export */ config: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.config),\n/* harmony export */ getErrorMap: () => (/* binding */ getErrorMap),\n/* harmony export */ setErrorMap: () => (/* binding */ setErrorMap)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/index.js\");\n// Zod 3 compat layer\n\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nconst ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\n\n/** @deprecated Use `z.config(params)` instead. */\nfunction setErrorMap(map) {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nfunction getErrorMap() {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9jb21wYXQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ3lDO0FBQ3pDO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDa0Q7QUFDbEQ7QUFDTztBQUNQLElBQUksa0RBQVc7QUFDZjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUCxXQUFXLGtEQUFXO0FBQ3RCO0FBQ0E7QUFDTztBQUNQO0FBQ0EsQ0FBQyxzREFBc0QiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNsYXNzaWNcXGNvbXBhdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBab2QgMyBjb21wYXQgbGF5ZXJcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbi8qKiBAZGVwcmVjYXRlZCBVc2UgdGhlIHJhdyBzdHJpbmcgbGl0ZXJhbCBjb2RlcyBpbnN0ZWFkLCBlLmcuIFwiaW52YWxpZF90eXBlXCIuICovXG5leHBvcnQgY29uc3QgWm9kSXNzdWVDb2RlID0ge1xuICAgIGludmFsaWRfdHlwZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICB0b29fYmlnOiBcInRvb19iaWdcIixcbiAgICB0b29fc21hbGw6IFwidG9vX3NtYWxsXCIsXG4gICAgaW52YWxpZF9mb3JtYXQ6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICBub3RfbXVsdGlwbGVfb2Y6IFwibm90X211bHRpcGxlX29mXCIsXG4gICAgdW5yZWNvZ25pemVkX2tleXM6IFwidW5yZWNvZ25pemVkX2tleXNcIixcbiAgICBpbnZhbGlkX3VuaW9uOiBcImludmFsaWRfdW5pb25cIixcbiAgICBpbnZhbGlkX2tleTogXCJpbnZhbGlkX2tleVwiLFxuICAgIGludmFsaWRfZWxlbWVudDogXCJpbnZhbGlkX2VsZW1lbnRcIixcbiAgICBpbnZhbGlkX3ZhbHVlOiBcImludmFsaWRfdmFsdWVcIixcbiAgICBjdXN0b206IFwiY3VzdG9tXCIsXG59O1xuZXhwb3J0IHsgJGJyYW5kLCBjb25maWcgfSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuLyoqIEBkZXByZWNhdGVkIFVzZSBgei5jb25maWcocGFyYW1zKWAgaW5zdGVhZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRFcnJvck1hcChtYXApIHtcbiAgICBjb3JlLmNvbmZpZyh7XG4gICAgICAgIGN1c3RvbUVycm9yOiBtYXAsXG4gICAgfSk7XG59XG4vKiogQGRlcHJlY2F0ZWQgVXNlIGB6LmNvbmZpZygpYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yTWFwKCkge1xuICAgIHJldHVybiBjb3JlLmNvbmZpZygpLmN1c3RvbUVycm9yO1xufVxuLyoqIEBkZXByZWNhdGVkIERvIG5vdCB1c2UuIFN0dWIgZGVmaW5pdGlvbiwgb25seSBpbmNsdWRlZCBmb3Igem9kLXRvLWpzb24tc2NoZW1hIGNvbXBhdGliaWxpdHkuICovXG5leHBvcnQgdmFyIFpvZEZpcnN0UGFydHlUeXBlS2luZDtcbihmdW5jdGlvbiAoWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKSB7XG59KShab2RGaXJzdFBhcnR5VHlwZUtpbmQgfHwgKFpvZEZpcnN0UGFydHlUeXBlS2luZCA9IHt9KSk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/classic/compat.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/classic/errors.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/zod/v4/classic/errors.js ***!
|
||
\***********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodError: () => (/* binding */ ZodError),\n/* harmony export */ ZodRealError: () => (/* binding */ ZodRealError)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/index.js\");\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\n\n\nconst initializer = (inst, issues) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => _core_index_js__WEBPACK_IMPORTED_MODULE_0__.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => _core_index_js__WEBPACK_IMPORTED_MODULE_0__.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, _core_util_js__WEBPACK_IMPORTED_MODULE_1__.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, _core_util_js__WEBPACK_IMPORTED_MODULE_1__.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nconst ZodError = _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodError\", initializer);\nconst ZodRealError = _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9lcnJvcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF5QztBQUNJO0FBQ0w7QUFDeEM7QUFDQSxJQUFJLHFEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHVEQUFnQjtBQUMvQztBQUNBLFNBQVM7QUFDVDtBQUNBLCtCQUErQix3REFBaUI7QUFDaEQ7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELGdFQUEwQjtBQUNyRixhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELGdFQUEwQjtBQUNyRixhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ08saUJBQWlCLHdEQUFpQjtBQUNsQyxxQkFBcUIsd0RBQWlCO0FBQzdDO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNsYXNzaWNcXGVycm9ycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyAkWm9kRXJyb3IgfSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBpbml0aWFsaXplciA9IChpbnN0LCBpc3N1ZXMpID0+IHtcbiAgICAkWm9kRXJyb3IuaW5pdChpbnN0LCBpc3N1ZXMpO1xuICAgIGluc3QubmFtZSA9IFwiWm9kRXJyb3JcIjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpbnN0LCB7XG4gICAgICAgIGZvcm1hdDoge1xuICAgICAgICAgICAgdmFsdWU6IChtYXBwZXIpID0+IGNvcmUuZm9ybWF0RXJyb3IoaW5zdCwgbWFwcGVyKSxcbiAgICAgICAgICAgIC8vIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBmbGF0dGVuOiB7XG4gICAgICAgICAgICB2YWx1ZTogKG1hcHBlcikgPT4gY29yZS5mbGF0dGVuRXJyb3IoaW5zdCwgbWFwcGVyKSxcbiAgICAgICAgICAgIC8vIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBhZGRJc3N1ZToge1xuICAgICAgICAgICAgdmFsdWU6IChpc3N1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGluc3QuaXNzdWVzLnB1c2goaXNzdWUpO1xuICAgICAgICAgICAgICAgIGluc3QubWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KGluc3QuaXNzdWVzLCB1dGlsLmpzb25TdHJpbmdpZnlSZXBsYWNlciwgMik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGFkZElzc3Vlczoge1xuICAgICAgICAgICAgdmFsdWU6IChpc3N1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICBpbnN0Lmlzc3Vlcy5wdXNoKC4uLmlzc3Vlcyk7XG4gICAgICAgICAgICAgICAgaW5zdC5tZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoaW5zdC5pc3N1ZXMsIHV0aWwuanNvblN0cmluZ2lmeVJlcGxhY2VyLCAyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgaXNFbXB0eToge1xuICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbnN0Lmlzc3Vlcy5sZW5ndGggPT09IDA7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgLy8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIFwiaXNFbXB0eVwiLCB7XG4gICAgLy8gICBnZXQoKSB7XG4gICAgLy8gICAgIHJldHVybiBpbnN0Lmlzc3Vlcy5sZW5ndGggPT09IDA7XG4gICAgLy8gICB9LFxuICAgIC8vIH0pO1xufTtcbmV4cG9ydCBjb25zdCBab2RFcnJvciA9IGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kRXJyb3JcIiwgaW5pdGlhbGl6ZXIpO1xuZXhwb3J0IGNvbnN0IFpvZFJlYWxFcnJvciA9IGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kRXJyb3JcIiwgaW5pdGlhbGl6ZXIsIHtcbiAgICBQYXJlbnQ6IEVycm9yLFxufSk7XG4vLyAvKiogQGRlcHJlY2F0ZWQgVXNlIGB6LmNvcmUuJFpvZEVycm9yTWFwQ3R4YCBpbnN0ZWFkLiAqL1xuLy8gZXhwb3J0IHR5cGUgRXJyb3JNYXBDdHggPSBjb3JlLiRab2RFcnJvck1hcEN0eDtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/classic/errors.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/classic/external.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/zod/v4/classic/external.js ***!
|
||
\*************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $brand: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$brand),\n/* harmony export */ $input: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$input),\n/* harmony export */ $output: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$output),\n/* harmony export */ NEVER: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.NEVER),\n/* harmony export */ TimePrecision: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.TimePrecision),\n/* harmony export */ ZodAny: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodAny),\n/* harmony export */ ZodArray: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodArray),\n/* harmony export */ ZodBase64: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodBase64),\n/* harmony export */ ZodBase64URL: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodBase64URL),\n/* harmony export */ ZodBigInt: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodBigInt),\n/* harmony export */ ZodBigIntFormat: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodBigIntFormat),\n/* harmony export */ ZodBoolean: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodBoolean),\n/* harmony export */ ZodCIDRv4: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodCIDRv4),\n/* harmony export */ ZodCIDRv6: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodCIDRv6),\n/* harmony export */ ZodCUID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodCUID),\n/* harmony export */ ZodCUID2: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodCUID2),\n/* harmony export */ ZodCatch: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodCatch),\n/* harmony export */ ZodCodec: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodCodec),\n/* harmony export */ ZodCustom: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodCustom),\n/* harmony export */ ZodCustomStringFormat: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodCustomStringFormat),\n/* harmony export */ ZodDate: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodDate),\n/* harmony export */ ZodDefault: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodDefault),\n/* harmony export */ ZodDiscriminatedUnion: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodDiscriminatedUnion),\n/* harmony export */ ZodE164: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodE164),\n/* harmony export */ ZodEmail: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodEmail),\n/* harmony export */ ZodEmoji: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodEmoji),\n/* harmony export */ ZodEnum: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodEnum),\n/* harmony export */ ZodError: () => (/* reexport safe */ _errors_js__WEBPACK_IMPORTED_MODULE_3__.ZodError),\n/* harmony export */ ZodExactOptional: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodExactOptional),\n/* harmony export */ ZodFile: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodFile),\n/* harmony export */ ZodFirstPartyTypeKind: () => (/* reexport safe */ _compat_js__WEBPACK_IMPORTED_MODULE_5__.ZodFirstPartyTypeKind),\n/* harmony export */ ZodFunction: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodFunction),\n/* harmony export */ ZodGUID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodGUID),\n/* harmony export */ ZodIPv4: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodIPv4),\n/* harmony export */ ZodIPv6: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodIPv6),\n/* harmony export */ ZodISODate: () => (/* reexport safe */ _iso_js__WEBPACK_IMPORTED_MODULE_10__.ZodISODate),\n/* harmony export */ ZodISODateTime: () => (/* reexport safe */ _iso_js__WEBPACK_IMPORTED_MODULE_10__.ZodISODateTime),\n/* harmony export */ ZodISODuration: () => (/* reexport safe */ _iso_js__WEBPACK_IMPORTED_MODULE_10__.ZodISODuration),\n/* harmony export */ ZodISOTime: () => (/* reexport safe */ _iso_js__WEBPACK_IMPORTED_MODULE_10__.ZodISOTime),\n/* harmony export */ ZodIntersection: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodIntersection),\n/* harmony export */ ZodIssueCode: () => (/* reexport safe */ _compat_js__WEBPACK_IMPORTED_MODULE_5__.ZodIssueCode),\n/* harmony export */ ZodJWT: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodJWT),\n/* harmony export */ ZodKSUID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodKSUID),\n/* harmony export */ ZodLazy: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodLazy),\n/* harmony export */ ZodLiteral: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodLiteral),\n/* harmony export */ ZodMAC: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodMAC),\n/* harmony export */ ZodMap: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodMap),\n/* harmony export */ ZodNaN: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNaN),\n/* harmony export */ ZodNanoID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNanoID),\n/* harmony export */ ZodNever: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNever),\n/* harmony export */ ZodNonOptional: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNonOptional),\n/* harmony export */ ZodNull: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNull),\n/* harmony export */ ZodNullable: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNullable),\n/* harmony export */ ZodNumber: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNumber),\n/* harmony export */ ZodNumberFormat: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNumberFormat),\n/* harmony export */ ZodObject: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodObject),\n/* harmony export */ ZodOptional: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodOptional),\n/* harmony export */ ZodPipe: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodPipe),\n/* harmony export */ ZodPrefault: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodPrefault),\n/* harmony export */ ZodPromise: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodPromise),\n/* harmony export */ ZodReadonly: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodReadonly),\n/* harmony export */ ZodRealError: () => (/* reexport safe */ _errors_js__WEBPACK_IMPORTED_MODULE_3__.ZodRealError),\n/* harmony export */ ZodRecord: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodRecord),\n/* harmony export */ ZodSet: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodSet),\n/* harmony export */ ZodString: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodString),\n/* harmony export */ ZodStringFormat: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodStringFormat),\n/* harmony export */ ZodSuccess: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodSuccess),\n/* harmony export */ ZodSymbol: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodSymbol),\n/* harmony export */ ZodTemplateLiteral: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodTemplateLiteral),\n/* harmony export */ ZodTransform: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodTransform),\n/* harmony export */ ZodTuple: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodTuple),\n/* harmony export */ ZodType: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodType),\n/* harmony export */ ZodULID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodULID),\n/* harmony export */ ZodURL: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodURL),\n/* harmony export */ ZodUUID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodUUID),\n/* harmony export */ ZodUndefined: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodUndefined),\n/* harmony export */ ZodUnion: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodUnion),\n/* harmony export */ ZodUnknown: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodUnknown),\n/* harmony export */ ZodVoid: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodVoid),\n/* harmony export */ ZodXID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodXID),\n/* harmony export */ ZodXor: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodXor),\n/* harmony export */ _ZodString: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__._ZodString),\n/* harmony export */ _default: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__._default),\n/* harmony export */ _function: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__._function),\n/* harmony export */ any: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.any),\n/* harmony export */ array: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.array),\n/* harmony export */ base64: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.base64),\n/* harmony export */ base64url: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.base64url),\n/* harmony export */ bigint: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.bigint),\n/* harmony export */ boolean: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.boolean),\n/* harmony export */ \"catch\": () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__[\"catch\"]),\n/* harmony export */ check: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.check),\n/* harmony export */ cidrv4: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.cidrv4),\n/* harmony export */ cidrv6: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.cidrv6),\n/* harmony export */ clone: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.clone),\n/* harmony export */ codec: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.codec),\n/* harmony export */ coerce: () => (/* reexport module object */ _coerce_js__WEBPACK_IMPORTED_MODULE_11__),\n/* harmony export */ config: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.config),\n/* harmony export */ core: () => (/* reexport module object */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__),\n/* harmony export */ cuid: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.cuid),\n/* harmony export */ cuid2: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.cuid2),\n/* harmony export */ custom: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.custom),\n/* harmony export */ date: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.date),\n/* harmony export */ decode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.decode),\n/* harmony export */ decodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.decodeAsync),\n/* harmony export */ describe: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.describe),\n/* harmony export */ discriminatedUnion: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.discriminatedUnion),\n/* harmony export */ e164: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.e164),\n/* harmony export */ email: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.email),\n/* harmony export */ emoji: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.emoji),\n/* harmony export */ encode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.encode),\n/* harmony export */ encodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.encodeAsync),\n/* harmony export */ endsWith: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.endsWith),\n/* harmony export */ \"enum\": () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__[\"enum\"]),\n/* harmony export */ exactOptional: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.exactOptional),\n/* harmony export */ file: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.file),\n/* harmony export */ flattenError: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.flattenError),\n/* harmony export */ float32: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.float32),\n/* harmony export */ float64: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.float64),\n/* harmony export */ formatError: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.formatError),\n/* harmony export */ fromJSONSchema: () => (/* reexport safe */ _from_json_schema_js__WEBPACK_IMPORTED_MODULE_8__.fromJSONSchema),\n/* harmony export */ \"function\": () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__[\"function\"]),\n/* harmony export */ getErrorMap: () => (/* reexport safe */ _compat_js__WEBPACK_IMPORTED_MODULE_5__.getErrorMap),\n/* harmony export */ globalRegistry: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.globalRegistry),\n/* harmony export */ gt: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.gt),\n/* harmony export */ gte: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.gte),\n/* harmony export */ guid: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.guid),\n/* harmony export */ hash: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.hash),\n/* harmony export */ hex: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.hex),\n/* harmony export */ hostname: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.hostname),\n/* harmony export */ httpUrl: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.httpUrl),\n/* harmony export */ includes: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.includes),\n/* harmony export */ \"instanceof\": () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__[\"instanceof\"]),\n/* harmony export */ int: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.int),\n/* harmony export */ int32: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.int32),\n/* harmony export */ int64: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.int64),\n/* harmony export */ intersection: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.intersection),\n/* harmony export */ ipv4: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ipv4),\n/* harmony export */ ipv6: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ipv6),\n/* harmony export */ iso: () => (/* reexport module object */ _iso_js__WEBPACK_IMPORTED_MODULE_10__),\n/* harmony export */ json: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.json),\n/* harmony export */ jwt: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.jwt),\n/* harmony export */ keyof: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.keyof),\n/* harmony export */ ksuid: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ksuid),\n/* harmony export */ lazy: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.lazy),\n/* harmony export */ length: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.length),\n/* harmony export */ literal: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.literal),\n/* harmony export */ locales: () => (/* reexport module object */ _locales_index_js__WEBPACK_IMPORTED_MODULE_9__),\n/* harmony export */ looseObject: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.looseObject),\n/* harmony export */ looseRecord: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.looseRecord),\n/* harmony export */ lowercase: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.lowercase),\n/* harmony export */ lt: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.lt),\n/* harmony export */ lte: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.lte),\n/* harmony export */ mac: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.mac),\n/* harmony export */ map: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.map),\n/* harmony export */ maxLength: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.maxLength),\n/* harmony export */ maxSize: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.maxSize),\n/* harmony export */ meta: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.meta),\n/* harmony export */ mime: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.mime),\n/* harmony export */ minLength: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.minLength),\n/* harmony export */ minSize: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.minSize),\n/* harmony export */ multipleOf: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.multipleOf),\n/* harmony export */ nan: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.nan),\n/* harmony export */ nanoid: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.nanoid),\n/* harmony export */ nativeEnum: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.nativeEnum),\n/* harmony export */ negative: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.negative),\n/* harmony export */ never: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.never),\n/* harmony export */ nonnegative: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.nonnegative),\n/* harmony export */ nonoptional: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.nonoptional),\n/* harmony export */ nonpositive: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.nonpositive),\n/* harmony export */ normalize: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.normalize),\n/* harmony export */ \"null\": () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__[\"null\"]),\n/* harmony export */ nullable: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.nullable),\n/* harmony export */ nullish: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.nullish),\n/* harmony export */ number: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.number),\n/* harmony export */ object: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.object),\n/* harmony export */ optional: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.optional),\n/* harmony export */ overwrite: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.overwrite),\n/* harmony export */ parse: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.parse),\n/* harmony export */ parseAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.parseAsync),\n/* harmony export */ partialRecord: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.partialRecord),\n/* harmony export */ pipe: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.pipe),\n/* harmony export */ positive: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.positive),\n/* harmony export */ prefault: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.prefault),\n/* harmony export */ preprocess: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.preprocess),\n/* harmony export */ prettifyError: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.prettifyError),\n/* harmony export */ promise: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.promise),\n/* harmony export */ property: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.property),\n/* harmony export */ readonly: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.readonly),\n/* harmony export */ record: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.record),\n/* harmony export */ refine: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.refine),\n/* harmony export */ regex: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.regex),\n/* harmony export */ regexes: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.regexes),\n/* harmony export */ registry: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.registry),\n/* harmony export */ safeDecode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.safeDecode),\n/* harmony export */ safeDecodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.safeDecodeAsync),\n/* harmony export */ safeEncode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.safeEncode),\n/* harmony export */ safeEncodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.safeEncodeAsync),\n/* harmony export */ safeParse: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.safeParse),\n/* harmony export */ safeParseAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_4__.safeParseAsync),\n/* harmony export */ set: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.set),\n/* harmony export */ setErrorMap: () => (/* reexport safe */ _compat_js__WEBPACK_IMPORTED_MODULE_5__.setErrorMap),\n/* harmony export */ size: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.size),\n/* harmony export */ slugify: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.slugify),\n/* harmony export */ startsWith: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.startsWith),\n/* harmony export */ strictObject: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.strictObject),\n/* harmony export */ string: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.string),\n/* harmony export */ stringFormat: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.stringFormat),\n/* harmony export */ stringbool: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.stringbool),\n/* harmony export */ success: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.success),\n/* harmony export */ superRefine: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.superRefine),\n/* harmony export */ symbol: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.symbol),\n/* harmony export */ templateLiteral: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.templateLiteral),\n/* harmony export */ toJSONSchema: () => (/* reexport safe */ _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_7__.toJSONSchema),\n/* harmony export */ toLowerCase: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.toLowerCase),\n/* harmony export */ toUpperCase: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.toUpperCase),\n/* harmony export */ transform: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.transform),\n/* harmony export */ treeifyError: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.treeifyError),\n/* harmony export */ trim: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.trim),\n/* harmony export */ tuple: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.tuple),\n/* harmony export */ uint32: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.uint32),\n/* harmony export */ uint64: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.uint64),\n/* harmony export */ ulid: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ulid),\n/* harmony export */ undefined: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.undefined),\n/* harmony export */ union: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.union),\n/* harmony export */ unknown: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.unknown),\n/* harmony export */ uppercase: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_2__.uppercase),\n/* harmony export */ url: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.url),\n/* harmony export */ util: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util),\n/* harmony export */ uuid: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.uuid),\n/* harmony export */ uuidv4: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.uuidv4),\n/* harmony export */ uuidv6: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.uuidv6),\n/* harmony export */ uuidv7: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.uuidv7),\n/* harmony export */ \"void\": () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__[\"void\"]),\n/* harmony export */ xid: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.xid),\n/* harmony export */ xor: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_1__.xor)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/index.js\");\n/* harmony import */ var _schemas_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schemas.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/schemas.js\");\n/* harmony import */ var _checks_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./checks.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/checks.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./errors.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/errors.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./parse.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/parse.js\");\n/* harmony import */ var _compat_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./compat.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/compat.js\");\n/* harmony import */ var _locales_en_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../locales/en.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/en.js\");\n/* harmony import */ var _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/json-schema-processors.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/json-schema-processors.js\");\n/* harmony import */ var _from_json_schema_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./from-json-schema.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/from-json-schema.js\");\n/* harmony import */ var _locales_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../locales/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/index.js\");\n/* harmony import */ var _iso_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./iso.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/iso.js\");\n/* harmony import */ var _coerce_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./coerce.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/coerce.js\");\n\n\n\n\n\n\n// zod-specified\n\n\n(0,_core_index_js__WEBPACK_IMPORTED_MODULE_0__.config)((0,_locales_en_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])());\n\n\n\n\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9leHRlcm5hbC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF5QztBQUNaO0FBQ0Q7QUFDQTtBQUNEO0FBQ0M7QUFDNUI7QUFDMEM7QUFDUjtBQUNsQyxzREFBTSxDQUFDLDBEQUFFO0FBQ3lMO0FBQ2pJO0FBQ1Y7QUFDUjtBQUMvQztBQUNBO0FBQ0E7QUFDa0Y7QUFDbEQ7QUFDTSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcY2xhc3NpY1xcZXh0ZXJuYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMgY29yZSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2NoZW1hcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2hlY2tzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BhcnNlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wYXQuanNcIjtcbi8vIHpvZC1zcGVjaWZpZWRcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4uL2xvY2FsZXMvZW4uanNcIjtcbmNvbmZpZyhlbigpKTtcbmV4cG9ydCB7IGdsb2JhbFJlZ2lzdHJ5LCByZWdpc3RyeSwgY29uZmlnLCAkb3V0cHV0LCAkaW5wdXQsICRicmFuZCwgY2xvbmUsIHJlZ2V4ZXMsIHRyZWVpZnlFcnJvciwgcHJldHRpZnlFcnJvciwgZm9ybWF0RXJyb3IsIGZsYXR0ZW5FcnJvciwgVGltZVByZWNpc2lvbiwgdXRpbCwgTkVWRVIsIH0gZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmV4cG9ydCB7IHRvSlNPTlNjaGVtYSB9IGZyb20gXCIuLi9jb3JlL2pzb24tc2NoZW1hLXByb2Nlc3NvcnMuanNcIjtcbmV4cG9ydCB7IGZyb21KU09OU2NoZW1hIH0gZnJvbSBcIi4vZnJvbS1qc29uLXNjaGVtYS5qc1wiO1xuZXhwb3J0ICogYXMgbG9jYWxlcyBmcm9tIFwiLi4vbG9jYWxlcy9pbmRleC5qc1wiO1xuLy8gaXNvXG4vLyBtdXN0IGJlIGV4cG9ydGVkIGZyb20gdG9wLWxldmVsXG4vLyBodHRwczovL2dpdGh1Yi5jb20vY29saW5oYWNrcy96b2QvaXNzdWVzLzQ0OTFcbmV4cG9ydCB7IFpvZElTT0RhdGVUaW1lLCBab2RJU09EYXRlLCBab2RJU09UaW1lLCBab2RJU09EdXJhdGlvbiB9IGZyb20gXCIuL2lzby5qc1wiO1xuZXhwb3J0ICogYXMgaXNvIGZyb20gXCIuL2lzby5qc1wiO1xuZXhwb3J0ICogYXMgY29lcmNlIGZyb20gXCIuL2NvZXJjZS5qc1wiO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/classic/external.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/classic/from-json-schema.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/zod/v4/classic/from-json-schema.js ***!
|
||
\*********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fromJSONSchema: () => (/* binding */ fromJSONSchema)\n/* harmony export */ });\n/* harmony import */ var _core_registries_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/registries.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/registries.js\");\n/* harmony import */ var _checks_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checks.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/checks.js\");\n/* harmony import */ var _iso_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./iso.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/iso.js\");\n/* harmony import */ var _schemas_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./schemas.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/schemas.js\");\n\n\n\n\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas_js__WEBPACK_IMPORTED_MODULE_3__,\n ..._checks_js__WEBPACK_IMPORTED_MODULE_1__,\n iso: _iso_js__WEBPACK_IMPORTED_MODULE_2__,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n // Apply metadata\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n if (schema.default !== undefined) {\n zodSchema = zodSchema.default(schema.default);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Collect metadata: core schema keywords and unrecognized keys\n const extraMeta = {};\n // Core schema keywords that should be captured as metadata\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Content keywords - store as metadata\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Unrecognized keys (custom metadata)\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nfunction fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n const version = detectVersion(schema, params?.defaultTarget);\n const defs = (schema.$defs || schema.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: schema,\n registry: params?.registry ?? _core_registries_js__WEBPACK_IMPORTED_MODULE_0__.globalRegistry,\n };\n return convertSchema(schema, ctx);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9mcm9tLWpzb24tc2NoZW1hLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXVEO0FBQ2hCO0FBQ047QUFDUTtBQUN6QztBQUNBO0FBQ0EsT0FBTyx3Q0FBUTtBQUNmLE9BQU8sdUNBQU87QUFDZCxTQUFTLG9DQUFJO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsSUFBSTtBQUN4RDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsSUFBSTtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixVQUFVO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxVQUFVO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0UsUUFBUTtBQUNoRjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsK0JBQStCO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELEtBQUs7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx5QkFBeUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBEO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQywrREFBYztBQUNwRDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNsYXNzaWNcXGZyb20tanNvbi1zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2xvYmFsUmVnaXN0cnkgfSBmcm9tIFwiLi4vY29yZS9yZWdpc3RyaWVzLmpzXCI7XG5pbXBvcnQgKiBhcyBfY2hlY2tzIGZyb20gXCIuL2NoZWNrcy5qc1wiO1xuaW1wb3J0ICogYXMgX2lzbyBmcm9tIFwiLi9pc28uanNcIjtcbmltcG9ydCAqIGFzIF9zY2hlbWFzIGZyb20gXCIuL3NjaGVtYXMuanNcIjtcbi8vIExvY2FsIHogb2JqZWN0IHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgd2l0aCAuLi9pbmRleC5qc1xuY29uc3QgeiA9IHtcbiAgICAuLi5fc2NoZW1hcyxcbiAgICAuLi5fY2hlY2tzLFxuICAgIGlzbzogX2lzbyxcbn07XG4vLyBLZXlzIHRoYXQgYXJlIHJlY29nbml6ZWQgYW5kIGhhbmRsZWQgYnkgdGhlIGNvbnZlcnNpb24gbG9naWNcbmNvbnN0IFJFQ09HTklaRURfS0VZUyA9IG5ldyBTZXQoW1xuICAgIC8vIFNjaGVtYSBpZGVudGlmaWNhdGlvblxuICAgIFwiJHNjaGVtYVwiLFxuICAgIFwiJHJlZlwiLFxuICAgIFwiJGRlZnNcIixcbiAgICBcImRlZmluaXRpb25zXCIsXG4gICAgLy8gQ29yZSBzY2hlbWEga2V5d29yZHNcbiAgICBcIiRpZFwiLFxuICAgIFwiaWRcIixcbiAgICBcIiRjb21tZW50XCIsXG4gICAgXCIkYW5jaG9yXCIsXG4gICAgXCIkdm9jYWJ1bGFyeVwiLFxuICAgIFwiJGR5bmFtaWNSZWZcIixcbiAgICBcIiRkeW5hbWljQW5jaG9yXCIsXG4gICAgLy8gVHlwZVxuICAgIFwidHlwZVwiLFxuICAgIFwiZW51bVwiLFxuICAgIFwiY29uc3RcIixcbiAgICAvLyBDb21wb3NpdGlvblxuICAgIFwiYW55T2ZcIixcbiAgICBcIm9uZU9mXCIsXG4gICAgXCJhbGxPZlwiLFxuICAgIFwibm90XCIsXG4gICAgLy8gT2JqZWN0XG4gICAgXCJwcm9wZXJ0aWVzXCIsXG4gICAgXCJyZXF1aXJlZFwiLFxuICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIixcbiAgICBcInBhdHRlcm5Qcm9wZXJ0aWVzXCIsXG4gICAgXCJwcm9wZXJ0eU5hbWVzXCIsXG4gICAgXCJtaW5Qcm9wZXJ0aWVzXCIsXG4gICAgXCJtYXhQcm9wZXJ0aWVzXCIsXG4gICAgLy8gQXJyYXlcbiAgICBcIml0ZW1zXCIsXG4gICAgXCJwcmVmaXhJdGVtc1wiLFxuICAgIFwiYWRkaXRpb25hbEl0ZW1zXCIsXG4gICAgXCJtaW5JdGVtc1wiLFxuICAgIFwibWF4SXRlbXNcIixcbiAgICBcInVuaXF1ZUl0ZW1zXCIsXG4gICAgXCJjb250YWluc1wiLFxuICAgIFwibWluQ29udGFpbnNcIixcbiAgICBcIm1heENvbnRhaW5zXCIsXG4gICAgLy8gU3RyaW5nXG4gICAgXCJtaW5MZW5ndGhcIixcbiAgICBcIm1heExlbmd0aFwiLFxuICAgIFwicGF0dGVyblwiLFxuICAgIFwiZm9ybWF0XCIsXG4gICAgLy8gTnVtYmVyXG4gICAgXCJtaW5pbXVtXCIsXG4gICAgXCJtYXhpbXVtXCIsXG4gICAgXCJleGNsdXNpdmVNaW5pbXVtXCIsXG4gICAgXCJleGNsdXNpdmVNYXhpbXVtXCIsXG4gICAgXCJtdWx0aXBsZU9mXCIsXG4gICAgLy8gQWxyZWFkeSBoYW5kbGVkIG1ldGFkYXRhXG4gICAgXCJkZXNjcmlwdGlvblwiLFxuICAgIFwiZGVmYXVsdFwiLFxuICAgIC8vIENvbnRlbnRcbiAgICBcImNvbnRlbnRFbmNvZGluZ1wiLFxuICAgIFwiY29udGVudE1lZGlhVHlwZVwiLFxuICAgIFwiY29udGVudFNjaGVtYVwiLFxuICAgIC8vIFVuc3VwcG9ydGVkIChlcnJvci10aHJvd2luZylcbiAgICBcInVuZXZhbHVhdGVkSXRlbXNcIixcbiAgICBcInVuZXZhbHVhdGVkUHJvcGVydGllc1wiLFxuICAgIFwiaWZcIixcbiAgICBcInRoZW5cIixcbiAgICBcImVsc2VcIixcbiAgICBcImRlcGVuZGVudFNjaGVtYXNcIixcbiAgICBcImRlcGVuZGVudFJlcXVpcmVkXCIsXG4gICAgLy8gT3BlbkFQSVxuICAgIFwibnVsbGFibGVcIixcbiAgICBcInJlYWRPbmx5XCIsXG5dKTtcbmZ1bmN0aW9uIGRldGVjdFZlcnNpb24oc2NoZW1hLCBkZWZhdWx0VGFyZ2V0KSB7XG4gICAgY29uc3QgJHNjaGVtYSA9IHNjaGVtYS4kc2NoZW1hO1xuICAgIGlmICgkc2NoZW1hID09PSBcImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiZHJhZnQtMjAyMC0xMlwiO1xuICAgIH1cbiAgICBpZiAoJHNjaGVtYSA9PT0gXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSNcIikge1xuICAgICAgICByZXR1cm4gXCJkcmFmdC03XCI7XG4gICAgfVxuICAgIGlmICgkc2NoZW1hID09PSBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hI1wiKSB7XG4gICAgICAgIHJldHVybiBcImRyYWZ0LTRcIjtcbiAgICB9XG4gICAgLy8gVXNlIGRlZmF1bHRUYXJnZXQgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSBkZWZhdWx0IHRvIGRyYWZ0LTIwMjAtMTJcbiAgICByZXR1cm4gZGVmYXVsdFRhcmdldCA/PyBcImRyYWZ0LTIwMjAtMTJcIjtcbn1cbmZ1bmN0aW9uIHJlc29sdmVSZWYocmVmLCBjdHgpIHtcbiAgICBpZiAoIXJlZi5zdGFydHNXaXRoKFwiI1wiKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkXCIpO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gcmVmLnNsaWNlKDEpLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgLy8gSGFuZGxlIHJvb3QgcmVmZXJlbmNlIFwiI1wiXG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjdHgucm9vdFNjaGVtYTtcbiAgICB9XG4gICAgY29uc3QgZGVmc0tleSA9IGN0eC52ZXJzaW9uID09PSBcImRyYWZ0LTIwMjAtMTJcIiA/IFwiJGRlZnNcIiA6IFwiZGVmaW5pdGlvbnNcIjtcbiAgICBpZiAocGF0aFswXSA9PT0gZGVmc0tleSkge1xuICAgICAgICBjb25zdCBrZXkgPSBwYXRoWzFdO1xuICAgICAgICBpZiAoIWtleSB8fCAhY3R4LmRlZnNba2V5XSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWZlcmVuY2Ugbm90IGZvdW5kOiAke3JlZn1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3R4LmRlZnNba2V5XTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZWZlcmVuY2Ugbm90IGZvdW5kOiAke3JlZn1gKTtcbn1cbmZ1bmN0aW9uIGNvbnZlcnRCYXNlU2NoZW1hKHNjaGVtYSwgY3R4KSB7XG4gICAgLy8gSGFuZGxlIHVuc3VwcG9ydGVkIGZlYXR1cmVzXG4gICAgaWYgKHNjaGVtYS5ub3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBTcGVjaWFsIGNhc2U6IHsgbm90OiB7fSB9IHJlcHJlc2VudHMgbmV2ZXJcbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubm90ID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5rZXlzKHNjaGVtYS5ub3QpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHoubmV2ZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpXCIpO1xuICAgIH1cbiAgICBpZiAoc2NoZW1hLnVuZXZhbHVhdGVkSXRlbXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmV2YWx1YXRlZEl0ZW1zIGlzIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxuICAgIGlmIChzY2hlbWEudW5ldmFsdWF0ZWRQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5ldmFsdWF0ZWRQcm9wZXJ0aWVzIGlzIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxuICAgIGlmIChzY2hlbWEuaWYgIT09IHVuZGVmaW5lZCB8fCBzY2hlbWEudGhlbiAhPT0gdW5kZWZpbmVkIHx8IHNjaGVtYS5lbHNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5kZXBlbmRlbnRTY2hlbWFzICE9PSB1bmRlZmluZWQgfHwgc2NoZW1hLmRlcGVuZGVudFJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGVwZW5kZW50U2NoZW1hcyBhbmQgZGVwZW5kZW50UmVxdWlyZWQgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxuICAgIC8vIEhhbmRsZSAkcmVmXG4gICAgaWYgKHNjaGVtYS4kcmVmKSB7XG4gICAgICAgIGNvbnN0IHJlZlBhdGggPSBzY2hlbWEuJHJlZjtcbiAgICAgICAgaWYgKGN0eC5yZWZzLmhhcyhyZWZQYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5yZWZzLmdldChyZWZQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LnByb2Nlc3NpbmcuaGFzKHJlZlBhdGgpKSB7XG4gICAgICAgICAgICAvLyBDaXJjdWxhciByZWZlcmVuY2UgLSB1c2UgbGF6eVxuICAgICAgICAgICAgcmV0dXJuIHoubGF6eSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjdHgucmVmcy5oYXMocmVmUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciByZWZlcmVuY2Ugbm90IHJlc29sdmVkOiAke3JlZlBhdGh9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjdHgucmVmcy5nZXQocmVmUGF0aCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjdHgucHJvY2Vzc2luZy5hZGQocmVmUGF0aCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVJlZihyZWZQYXRoLCBjdHgpO1xuICAgICAgICBjb25zdCB6b2RTY2hlbWEgPSBjb252ZXJ0U2NoZW1hKHJlc29sdmVkLCBjdHgpO1xuICAgICAgICBjdHgucmVmcy5zZXQocmVmUGF0aCwgem9kU2NoZW1hKTtcbiAgICAgICAgY3R4LnByb2Nlc3NpbmcuZGVsZXRlKHJlZlBhdGgpO1xuICAgICAgICByZXR1cm4gem9kU2NoZW1hO1xuICAgIH1cbiAgICAvLyBIYW5kbGUgZW51bVxuICAgIGlmIChzY2hlbWEuZW51bSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSBzY2hlbWEuZW51bTtcbiAgICAgICAgLy8gU3BlY2lhbCBjYXNlOiBPcGVuQVBJIDMuMCBudWxsIHJlcHJlc2VudGF0aW9uIHsgdHlwZTogXCJzdHJpbmdcIiwgbnVsbGFibGU6IHRydWUsIGVudW06IFtudWxsXSB9XG4gICAgICAgIGlmIChjdHgudmVyc2lvbiA9PT0gXCJvcGVuYXBpLTMuMFwiICYmXG4gICAgICAgICAgICBzY2hlbWEubnVsbGFibGUgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGVudW1WYWx1ZXMubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgICBlbnVtVmFsdWVzWzBdID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gei5udWxsKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudW1WYWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gei5uZXZlcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnVtVmFsdWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHoubGl0ZXJhbChlbnVtVmFsdWVzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGFyZSBzdHJpbmdzXG4gICAgICAgIGlmIChlbnVtVmFsdWVzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikpIHtcbiAgICAgICAgICAgIHJldHVybiB6LmVudW0oZW51bVZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTWl4ZWQgdHlwZXMgLSB1c2UgdW5pb24gb2YgbGl0ZXJhbHNcbiAgICAgICAgY29uc3QgbGl0ZXJhbFNjaGVtYXMgPSBlbnVtVmFsdWVzLm1hcCgodikgPT4gei5saXRlcmFsKHYpKTtcbiAgICAgICAgaWYgKGxpdGVyYWxTY2hlbWFzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsU2NoZW1hc1swXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gei51bmlvbihbbGl0ZXJhbFNjaGVtYXNbMF0sIGxpdGVyYWxTY2hlbWFzWzFdLCAuLi5saXRlcmFsU2NoZW1hcy5zbGljZSgyKV0pO1xuICAgIH1cbiAgICAvLyBIYW5kbGUgY29uc3RcbiAgICBpZiAoc2NoZW1hLmNvbnN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHoubGl0ZXJhbChzY2hlbWEuY29uc3QpO1xuICAgIH1cbiAgICAvLyBIYW5kbGUgdHlwZVxuICAgIGNvbnN0IHR5cGUgPSBzY2hlbWEudHlwZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgICAvLyBFeHBhbmQgdHlwZSBhcnJheSBpbnRvIGFueU9mIHVuaW9uXG4gICAgICAgIGNvbnN0IHR5cGVTY2hlbWFzID0gdHlwZS5tYXAoKHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVTY2hlbWEgPSB7IC4uLnNjaGVtYSwgdHlwZTogdCB9O1xuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRCYXNlU2NoZW1hKHR5cGVTY2hlbWEsIGN0eCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodHlwZVNjaGVtYXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gei5uZXZlcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlU2NoZW1hcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlU2NoZW1hc1swXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gei51bmlvbih0eXBlU2NoZW1hcyk7XG4gICAgfVxuICAgIGlmICghdHlwZSkge1xuICAgICAgICAvLyBObyB0eXBlIHNwZWNpZmllZCAtIGVtcHR5IHNjaGVtYSAoYW55KVxuICAgICAgICByZXR1cm4gei5hbnkoKTtcbiAgICB9XG4gICAgbGV0IHpvZFNjaGVtYTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOiB7XG4gICAgICAgICAgICBsZXQgc3RyaW5nU2NoZW1hID0gei5zdHJpbmcoKTtcbiAgICAgICAgICAgIC8vIEFwcGx5IGZvcm1hdCB1c2luZyAuY2hlY2soKSB3aXRoIFpvZCBmb3JtYXQgZnVuY3Rpb25zXG4gICAgICAgICAgICBpZiAoc2NoZW1hLmZvcm1hdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdCA9IHNjaGVtYS5mb3JtYXQ7XG4gICAgICAgICAgICAgICAgLy8gTWFwIGNvbW1vbiBmb3JtYXRzIHRvIFpvZCBjaGVjayBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ID09PSBcImVtYWlsXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLmNoZWNrKHouZW1haWwoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdCA9PT0gXCJ1cmlcIiB8fCBmb3JtYXQgPT09IFwidXJpLXJlZmVyZW5jZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5jaGVjayh6LnVybCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBcInV1aWRcIiB8fCBmb3JtYXQgPT09IFwiZ3VpZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5jaGVjayh6LnV1aWQoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdCA9PT0gXCJkYXRlLXRpbWVcIikge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEuY2hlY2soei5pc28uZGF0ZXRpbWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdCA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLmNoZWNrKHouaXNvLmRhdGUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdCA9PT0gXCJ0aW1lXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLmNoZWNrKHouaXNvLnRpbWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdCA9PT0gXCJkdXJhdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5jaGVjayh6Lmlzby5kdXJhdGlvbigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBcImlwdjRcIikge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEuY2hlY2soei5pcHY0KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09IFwiaXB2NlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5jaGVjayh6LmlwdjYoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdCA9PT0gXCJtYWNcIikge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEuY2hlY2soei5tYWMoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1hdCA9PT0gXCJjaWRyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLmNoZWNrKHouY2lkcnY0KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09IFwiY2lkci12NlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5jaGVjayh6LmNpZHJ2NigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBcImJhc2U2NFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5jaGVjayh6LmJhc2U2NCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBcImJhc2U2NHVybFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5jaGVjayh6LmJhc2U2NHVybCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBcImUxNjRcIikge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEuY2hlY2soei5lMTY0KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09IFwiand0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLmNoZWNrKHouand0KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09IFwiZW1vamlcIikge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEuY2hlY2soei5lbW9qaSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBcIm5hbm9pZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5jaGVjayh6Lm5hbm9pZCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBcImN1aWRcIikge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEuY2hlY2soei5jdWlkKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09IFwiY3VpZDJcIikge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEuY2hlY2soei5jdWlkMigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBcInVsaWRcIikge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEuY2hlY2soei51bGlkKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09IFwieGlkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLmNoZWNrKHoueGlkKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09IFwia3N1aWRcIikge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEuY2hlY2soei5rc3VpZCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gTm90ZToganNvbi1zdHJpbmcgZm9ybWF0IGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IFpvZFxuICAgICAgICAgICAgICAgIC8vIEN1c3RvbSBmb3JtYXRzIGFyZSBpZ25vcmVkIC0ga2VlcCBhcyBwbGFpbiBzdHJpbmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFwcGx5IGNvbnN0cmFpbnRzXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5MZW5ndGggPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmdTY2hlbWEgPSBzdHJpbmdTY2hlbWEubWluKHNjaGVtYS5taW5MZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEubWF4TGVuZ3RoID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLm1heChzY2hlbWEubWF4TGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzY2hlbWEucGF0dGVybikge1xuICAgICAgICAgICAgICAgIC8vIEpTT04gU2NoZW1hIHBhdHRlcm5zIGFyZSBub3QgaW1wbGljaXRseSBhbmNob3JlZCAobWF0Y2ggYW55d2hlcmUgaW4gc3RyaW5nKVxuICAgICAgICAgICAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5yZWdleChuZXcgUmVnRXhwKHNjaGVtYS5wYXR0ZXJuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB6b2RTY2hlbWEgPSBzdHJpbmdTY2hlbWE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIGNhc2UgXCJpbnRlZ2VyXCI6IHtcbiAgICAgICAgICAgIGxldCBudW1iZXJTY2hlbWEgPSB0eXBlID09PSBcImludGVnZXJcIiA/IHoubnVtYmVyKCkuaW50KCkgOiB6Lm51bWJlcigpO1xuICAgICAgICAgICAgLy8gQXBwbHkgY29uc3RyYWludHNcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1pbmltdW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJTY2hlbWEgPSBudW1iZXJTY2hlbWEubWluKHNjaGVtYS5taW5pbXVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1heGltdW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJTY2hlbWEgPSBudW1iZXJTY2hlbWEubWF4KHNjaGVtYS5tYXhpbXVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJTY2hlbWEgPSBudW1iZXJTY2hlbWEuZ3Qoc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0gPT09IHRydWUgJiYgdHlwZW9mIHNjaGVtYS5taW5pbXVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyU2NoZW1hID0gbnVtYmVyU2NoZW1hLmd0KHNjaGVtYS5taW5pbXVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJTY2hlbWEgPSBudW1iZXJTY2hlbWEubHQoc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0gPT09IHRydWUgJiYgdHlwZW9mIHNjaGVtYS5tYXhpbXVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyU2NoZW1hID0gbnVtYmVyU2NoZW1hLmx0KHNjaGVtYS5tYXhpbXVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm11bHRpcGxlT2YgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJTY2hlbWEgPSBudW1iZXJTY2hlbWEubXVsdGlwbGVPZihzY2hlbWEubXVsdGlwbGVPZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB6b2RTY2hlbWEgPSBudW1iZXJTY2hlbWE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiYm9vbGVhblwiOiB7XG4gICAgICAgICAgICB6b2RTY2hlbWEgPSB6LmJvb2xlYW4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJudWxsXCI6IHtcbiAgICAgICAgICAgIHpvZFNjaGVtYSA9IHoubnVsbCgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBjb25zdCBzaGFwZSA9IHt9O1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRTZXQgPSBuZXcgU2V0KHNjaGVtYS5yZXF1aXJlZCB8fCBbXSk7XG4gICAgICAgICAgICAvLyBDb252ZXJ0IHByb3BlcnRpZXMgLSBtYXJrIG9wdGlvbmFsIG9uZXNcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgcHJvcFNjaGVtYV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wWm9kU2NoZW1hID0gY29udmVydFNjaGVtYShwcm9wU2NoZW1hLCBjdHgpO1xuICAgICAgICAgICAgICAgIC8vIElmIG5vdCBpbiByZXF1aXJlZCBhcnJheSwgbWFrZSBpdCBvcHRpb25hbFxuICAgICAgICAgICAgICAgIHNoYXBlW2tleV0gPSByZXF1aXJlZFNldC5oYXMoa2V5KSA/IHByb3Bab2RTY2hlbWEgOiBwcm9wWm9kU2NoZW1hLm9wdGlvbmFsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBIYW5kbGUgcHJvcGVydHlOYW1lc1xuICAgICAgICAgICAgaWYgKHNjaGVtYS5wcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5U2NoZW1hID0gY29udmVydFNjaGVtYShzY2hlbWEucHJvcGVydHlOYW1lcywgY3R4KTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZVNjaGVtYSA9IHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyAmJiB0eXBlb2Ygc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID09PSBcIm9iamVjdFwiXG4gICAgICAgICAgICAgICAgICAgID8gY29udmVydFNjaGVtYShzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMsIGN0eClcbiAgICAgICAgICAgICAgICAgICAgOiB6LmFueSgpO1xuICAgICAgICAgICAgICAgIC8vIENhc2UgQTogTm8gcHJvcGVydGllcyAocHVyZSByZWNvcmQpXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHNoYXBlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgem9kU2NoZW1hID0gei5yZWNvcmQoa2V5U2NoZW1hLCB2YWx1ZVNjaGVtYSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBDYXNlIEI6IFdpdGggcHJvcGVydGllcyAoaW50ZXJzZWN0aW9uIG9mIG9iamVjdCBhbmQgbG9vc2VSZWNvcmQpXG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0U2NoZW1hID0gei5vYmplY3Qoc2hhcGUpLnBhc3N0aHJvdWdoKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkU2NoZW1hID0gei5sb29zZVJlY29yZChrZXlTY2hlbWEsIHZhbHVlU2NoZW1hKTtcbiAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSB6LmludGVyc2VjdGlvbihvYmplY3RTY2hlbWEsIHJlY29yZFNjaGVtYSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBIYW5kbGUgcGF0dGVyblByb3BlcnRpZXNcbiAgICAgICAgICAgIGlmIChzY2hlbWEucGF0dGVyblByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAvLyBwYXR0ZXJuUHJvcGVydGllczoga2V5cyBtYXRjaGluZyBwYXR0ZXJuIG11c3Qgc2F0aXNmeSBjb3JyZXNwb25kaW5nIHNjaGVtYVxuICAgICAgICAgICAgICAgIC8vIFVzZSBsb29zZSByZWNvcmRzIHNvIG5vbi1tYXRjaGluZyBrZXlzIHBhc3MgdGhyb3VnaFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhdHRlcm5Qcm9wcyA9IHNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcztcbiAgICAgICAgICAgICAgICBjb25zdCBwYXR0ZXJuS2V5cyA9IE9iamVjdC5rZXlzKHBhdHRlcm5Qcm9wcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9vc2VSZWNvcmRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5LZXlzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdHRlcm5WYWx1ZSA9IGNvbnZlcnRTY2hlbWEocGF0dGVyblByb3BzW3BhdHRlcm5dLCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlTY2hlbWEgPSB6LnN0cmluZygpLnJlZ2V4KG5ldyBSZWdFeHAocGF0dGVybikpO1xuICAgICAgICAgICAgICAgICAgICBsb29zZVJlY29yZHMucHVzaCh6Lmxvb3NlUmVjb3JkKGtleVNjaGVtYSwgcGF0dGVyblZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEJ1aWxkIGludGVyc2VjdGlvbjogb2JqZWN0IHNjaGVtYSArIGFsbCBwYXR0ZXJuIHByb3BlcnR5IHJlY29yZHNcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFzVG9JbnRlcnNlY3QgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoc2hhcGUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHBhc3N0aHJvdWdoIHNvIHBhdHRlcm5Qcm9wZXJ0aWVzIGNhbiB2YWxpZGF0ZSBhZGRpdGlvbmFsIGtleXNcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hc1RvSW50ZXJzZWN0LnB1c2goei5vYmplY3Qoc2hhcGUpLnBhc3N0aHJvdWdoKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzY2hlbWFzVG9JbnRlcnNlY3QucHVzaCguLi5sb29zZVJlY29yZHMpO1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWFzVG9JbnRlcnNlY3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHpvZFNjaGVtYSA9IHoub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWFzVG9JbnRlcnNlY3QubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHpvZFNjaGVtYSA9IHNjaGVtYXNUb0ludGVyc2VjdFswXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoYWluIGludGVyc2VjdGlvbnM6IChBICYgQikgJiBDICYgRCAuLi5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHouaW50ZXJzZWN0aW9uKHNjaGVtYXNUb0ludGVyc2VjdFswXSwgc2NoZW1hc1RvSW50ZXJzZWN0WzFdKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDI7IGkgPCBzY2hlbWFzVG9JbnRlcnNlY3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHouaW50ZXJzZWN0aW9uKHJlc3VsdCwgc2NoZW1hc1RvSW50ZXJzZWN0W2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSGFuZGxlIGFkZGl0aW9uYWxQcm9wZXJ0aWVzXG4gICAgICAgICAgICAvLyBJbiBKU09OIFNjaGVtYSwgYWRkaXRpb25hbFByb3BlcnRpZXMgZGVmYXVsdHMgdG8gdHJ1ZSAoYWxsb3cgYW55IGV4dHJhIHByb3BlcnRpZXMpXG4gICAgICAgICAgICAvLyBJbiBab2QsIG9iamVjdHMgc3RyaXAgdW5rbm93biBrZXlzIGJ5IGRlZmF1bHQsIHNvIHdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgZXhwbGljaXRseVxuICAgICAgICAgICAgY29uc3Qgb2JqZWN0U2NoZW1hID0gei5vYmplY3Qoc2hhcGUpO1xuICAgICAgICAgICAgaWYgKHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAvLyBTdHJpY3QgbW9kZSAtIG5vIGV4dHJhIHByb3BlcnRpZXMgYWxsb3dlZFxuICAgICAgICAgICAgICAgIHpvZFNjaGVtYSA9IG9iamVjdFNjaGVtYS5zdHJpY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAvLyBFeHRyYSBwcm9wZXJ0aWVzIG11c3QgbWF0Y2ggdGhlIHNwZWNpZmllZCBzY2hlbWFcbiAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSBvYmplY3RTY2hlbWEuY2F0Y2hhbGwoY29udmVydFNjaGVtYShzY2hlbWEuYWRkaXRpb25hbFByb3BlcnRpZXMsIGN0eCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkaXRpb25hbFByb3BlcnRpZXMgaXMgdHJ1ZSBvciB1bmRlZmluZWQgLSBhbGxvdyBhbnkgZXh0cmEgcHJvcGVydGllcyAocGFzc3Rocm91Z2gpXG4gICAgICAgICAgICAgICAgem9kU2NoZW1hID0gb2JqZWN0U2NoZW1hLnBhc3N0aHJvdWdoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiYXJyYXlcIjoge1xuICAgICAgICAgICAgLy8gVE9ETzogdW5pcXVlSXRlbXMgaXMgbm90IHN1cHBvcnRlZFxuICAgICAgICAgICAgLy8gVE9ETzogY29udGFpbnMvbWluQ29udGFpbnMvbWF4Q29udGFpbnMgYXJlIG5vdCBzdXBwb3J0ZWRcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSB0dXBsZSAocHJlZml4SXRlbXMgb3IgaXRlbXMgYXMgYXJyYXkpXG4gICAgICAgICAgICBjb25zdCBwcmVmaXhJdGVtcyA9IHNjaGVtYS5wcmVmaXhJdGVtcztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gc2NoZW1hLml0ZW1zO1xuICAgICAgICAgICAgaWYgKHByZWZpeEl0ZW1zICYmIEFycmF5LmlzQXJyYXkocHJlZml4SXRlbXMpKSB7XG4gICAgICAgICAgICAgICAgLy8gVHVwbGUgd2l0aCBwcmVmaXhJdGVtcyAoZHJhZnQtMjAyMC0xMilcbiAgICAgICAgICAgICAgICBjb25zdCB0dXBsZUl0ZW1zID0gcHJlZml4SXRlbXMubWFwKChpdGVtKSA9PiBjb252ZXJ0U2NoZW1hKGl0ZW0sIGN0eCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3QgPSBpdGVtcyAmJiB0eXBlb2YgaXRlbXMgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoaXRlbXMpXG4gICAgICAgICAgICAgICAgICAgID8gY29udmVydFNjaGVtYShpdGVtcywgY3R4KVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAocmVzdCkge1xuICAgICAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSB6LnR1cGxlKHR1cGxlSXRlbXMpLnJlc3QocmVzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSB6LnR1cGxlKHR1cGxlSXRlbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBBcHBseSBtaW5JdGVtcy9tYXhJdGVtcyBjb25zdHJhaW50cyB0byB0dXBsZXNcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5JdGVtcyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSB6b2RTY2hlbWEuY2hlY2soei5taW5MZW5ndGgoc2NoZW1hLm1pbkl0ZW1zKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1heEl0ZW1zID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHpvZFNjaGVtYSA9IHpvZFNjaGVtYS5jaGVjayh6Lm1heExlbmd0aChzY2hlbWEubWF4SXRlbXMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgICAgIC8vIFR1cGxlIHdpdGggaXRlbXMgYXJyYXkgKGRyYWZ0LTcpXG4gICAgICAgICAgICAgICAgY29uc3QgdHVwbGVJdGVtcyA9IGl0ZW1zLm1hcCgoaXRlbSkgPT4gY29udmVydFNjaGVtYShpdGVtLCBjdHgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN0ID0gc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyAmJiB0eXBlb2Ygc2NoZW1hLmFkZGl0aW9uYWxJdGVtcyA9PT0gXCJvYmplY3RcIlxuICAgICAgICAgICAgICAgICAgICA/IGNvbnZlcnRTY2hlbWEoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcywgY3R4KVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDsgLy8gYWRkaXRpb25hbEl0ZW1zOiBmYWxzZSBtZWFucyBubyByZXN0LCBoYW5kbGVkIGJ5IGRlZmF1bHQgdHVwbGUgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICBpZiAocmVzdCkge1xuICAgICAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSB6LnR1cGxlKHR1cGxlSXRlbXMpLnJlc3QocmVzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSB6LnR1cGxlKHR1cGxlSXRlbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBBcHBseSBtaW5JdGVtcy9tYXhJdGVtcyBjb25zdHJhaW50cyB0byB0dXBsZXNcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5JdGVtcyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSB6b2RTY2hlbWEuY2hlY2soei5taW5MZW5ndGgoc2NoZW1hLm1pbkl0ZW1zKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2NoZW1hLm1heEl0ZW1zID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHpvZFNjaGVtYSA9IHpvZFNjaGVtYS5jaGVjayh6Lm1heExlbmd0aChzY2hlbWEubWF4SXRlbXMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpdGVtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gUmVndWxhciBhcnJheVxuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb252ZXJ0U2NoZW1hKGl0ZW1zLCBjdHgpO1xuICAgICAgICAgICAgICAgIGxldCBhcnJheVNjaGVtYSA9IHouYXJyYXkoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgLy8gQXBwbHkgY29uc3RyYWludHNcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5taW5JdGVtcyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICBhcnJheVNjaGVtYSA9IGFycmF5U2NoZW1hLm1pbihzY2hlbWEubWluSXRlbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNjaGVtYS5tYXhJdGVtcyA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICBhcnJheVNjaGVtYSA9IGFycmF5U2NoZW1hLm1heChzY2hlbWEubWF4SXRlbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB6b2RTY2hlbWEgPSBhcnJheVNjaGVtYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIE5vIGl0ZW1zIHNwZWNpZmllZCAtIGFycmF5IG9mIGFueVxuICAgICAgICAgICAgICAgIHpvZFNjaGVtYSA9IHouYXJyYXkoei5hbnkoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eXBlOiAke3R5cGV9YCk7XG4gICAgfVxuICAgIC8vIEFwcGx5IG1ldGFkYXRhXG4gICAgaWYgKHNjaGVtYS5kZXNjcmlwdGlvbikge1xuICAgICAgICB6b2RTY2hlbWEgPSB6b2RTY2hlbWEuZGVzY3JpYmUoc2NoZW1hLmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYS5kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgem9kU2NoZW1hID0gem9kU2NoZW1hLmRlZmF1bHQoc2NoZW1hLmRlZmF1bHQpO1xuICAgIH1cbiAgICByZXR1cm4gem9kU2NoZW1hO1xufVxuZnVuY3Rpb24gY29udmVydFNjaGVtYShzY2hlbWEsIGN0eCkge1xuICAgIGlmICh0eXBlb2Ygc2NoZW1hID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICByZXR1cm4gc2NoZW1hID8gei5hbnkoKSA6IHoubmV2ZXIoKTtcbiAgICB9XG4gICAgLy8gQ29udmVydCBiYXNlIHNjaGVtYSBmaXJzdCAoaWdub3JpbmcgY29tcG9zaXRpb24ga2V5d29yZHMpXG4gICAgbGV0IGJhc2VTY2hlbWEgPSBjb252ZXJ0QmFzZVNjaGVtYShzY2hlbWEsIGN0eCk7XG4gICAgY29uc3QgaGFzRXhwbGljaXRUeXBlID0gc2NoZW1hLnR5cGUgfHwgc2NoZW1hLmVudW0gIT09IHVuZGVmaW5lZCB8fCBzY2hlbWEuY29uc3QgIT09IHVuZGVmaW5lZDtcbiAgICAvLyBQcm9jZXNzIGNvbXBvc2l0aW9uIGtleXdvcmRzIExBU1QgKHRoZXkgY2FuIGFwcGVhciB0b2dldGhlcilcbiAgICAvLyBIYW5kbGUgYW55T2YgLSB3cmFwIGJhc2Ugc2NoZW1hIHdpdGggdW5pb25cbiAgICBpZiAoc2NoZW1hLmFueU9mICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hLmFueU9mKSkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gc2NoZW1hLmFueU9mLm1hcCgocykgPT4gY29udmVydFNjaGVtYShzLCBjdHgpKTtcbiAgICAgICAgY29uc3QgYW55T2ZVbmlvbiA9IHoudW5pb24ob3B0aW9ucyk7XG4gICAgICAgIGJhc2VTY2hlbWEgPSBoYXNFeHBsaWNpdFR5cGUgPyB6LmludGVyc2VjdGlvbihiYXNlU2NoZW1hLCBhbnlPZlVuaW9uKSA6IGFueU9mVW5pb247XG4gICAgfVxuICAgIC8vIEhhbmRsZSBvbmVPZiAtIGV4Y2x1c2l2ZSB1bmlvbiAoZXhhY3RseSBvbmUgbXVzdCBtYXRjaClcbiAgICBpZiAoc2NoZW1hLm9uZU9mICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hLm9uZU9mKSkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gc2NoZW1hLm9uZU9mLm1hcCgocykgPT4gY29udmVydFNjaGVtYShzLCBjdHgpKTtcbiAgICAgICAgY29uc3Qgb25lT2ZVbmlvbiA9IHoueG9yKG9wdGlvbnMpO1xuICAgICAgICBiYXNlU2NoZW1hID0gaGFzRXhwbGljaXRUeXBlID8gei5pbnRlcnNlY3Rpb24oYmFzZVNjaGVtYSwgb25lT2ZVbmlvbikgOiBvbmVPZlVuaW9uO1xuICAgIH1cbiAgICAvLyBIYW5kbGUgYWxsT2YgLSB3cmFwIGJhc2Ugc2NoZW1hIHdpdGggaW50ZXJzZWN0aW9uXG4gICAgaWYgKHNjaGVtYS5hbGxPZiAmJiBBcnJheS5pc0FycmF5KHNjaGVtYS5hbGxPZikpIHtcbiAgICAgICAgaWYgKHNjaGVtYS5hbGxPZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGJhc2VTY2hlbWEgPSBoYXNFeHBsaWNpdFR5cGUgPyBiYXNlU2NoZW1hIDogei5hbnkoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBoYXNFeHBsaWNpdFR5cGUgPyBiYXNlU2NoZW1hIDogY29udmVydFNjaGVtYShzY2hlbWEuYWxsT2ZbMF0sIGN0eCk7XG4gICAgICAgICAgICBjb25zdCBzdGFydElkeCA9IGhhc0V4cGxpY2l0VHlwZSA/IDAgOiAxO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0SWR4OyBpIDwgc2NoZW1hLmFsbE9mLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gei5pbnRlcnNlY3Rpb24ocmVzdWx0LCBjb252ZXJ0U2NoZW1hKHNjaGVtYS5hbGxPZltpXSwgY3R4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiYXNlU2NoZW1hID0gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEhhbmRsZSBudWxsYWJsZSAoT3BlbkFQSSAzLjApXG4gICAgaWYgKHNjaGVtYS5udWxsYWJsZSA9PT0gdHJ1ZSAmJiBjdHgudmVyc2lvbiA9PT0gXCJvcGVuYXBpLTMuMFwiKSB7XG4gICAgICAgIGJhc2VTY2hlbWEgPSB6Lm51bGxhYmxlKGJhc2VTY2hlbWEpO1xuICAgIH1cbiAgICAvLyBIYW5kbGUgcmVhZE9ubHlcbiAgICBpZiAoc2NoZW1hLnJlYWRPbmx5ID09PSB0cnVlKSB7XG4gICAgICAgIGJhc2VTY2hlbWEgPSB6LnJlYWRvbmx5KGJhc2VTY2hlbWEpO1xuICAgIH1cbiAgICAvLyBDb2xsZWN0IG1ldGFkYXRhOiBjb3JlIHNjaGVtYSBrZXl3b3JkcyBhbmQgdW5yZWNvZ25pemVkIGtleXNcbiAgICBjb25zdCBleHRyYU1ldGEgPSB7fTtcbiAgICAvLyBDb3JlIHNjaGVtYSBrZXl3b3JkcyB0aGF0IHNob3VsZCBiZSBjYXB0dXJlZCBhcyBtZXRhZGF0YVxuICAgIGNvbnN0IGNvcmVNZXRhZGF0YUtleXMgPSBbXCIkaWRcIiwgXCJpZFwiLCBcIiRjb21tZW50XCIsIFwiJGFuY2hvclwiLCBcIiR2b2NhYnVsYXJ5XCIsIFwiJGR5bmFtaWNSZWZcIiwgXCIkZHluYW1pY0FuY2hvclwiXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBjb3JlTWV0YWRhdGFLZXlzKSB7XG4gICAgICAgIGlmIChrZXkgaW4gc2NoZW1hKSB7XG4gICAgICAgICAgICBleHRyYU1ldGFba2V5XSA9IHNjaGVtYVtrZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbnRlbnQga2V5d29yZHMgLSBzdG9yZSBhcyBtZXRhZGF0YVxuICAgIGNvbnN0IGNvbnRlbnRNZXRhZGF0YUtleXMgPSBbXCJjb250ZW50RW5jb2RpbmdcIiwgXCJjb250ZW50TWVkaWFUeXBlXCIsIFwiY29udGVudFNjaGVtYVwiXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBjb250ZW50TWV0YWRhdGFLZXlzKSB7XG4gICAgICAgIGlmIChrZXkgaW4gc2NoZW1hKSB7XG4gICAgICAgICAgICBleHRyYU1ldGFba2V5XSA9IHNjaGVtYVtrZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFVucmVjb2duaXplZCBrZXlzIChjdXN0b20gbWV0YWRhdGEpXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc2NoZW1hKSkge1xuICAgICAgICBpZiAoIVJFQ09HTklaRURfS0VZUy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgZXh0cmFNZXRhW2tleV0gPSBzY2hlbWFba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoZXh0cmFNZXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGN0eC5yZWdpc3RyeS5hZGQoYmFzZVNjaGVtYSwgZXh0cmFNZXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2VTY2hlbWE7XG59XG4vKipcbiAqIENvbnZlcnRzIGEgSlNPTiBTY2hlbWEgdG8gYSBab2Qgc2NoZW1hLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjb25zaWRlcmVkIHNlbWktZXhwZXJpbWVudGFsLiBJdCdzIGJlaGF2aW9yIGlzIGxpYWJsZSB0byBjaGFuZ2UuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUpTT05TY2hlbWEoc2NoZW1hLCBwYXJhbXMpIHtcbiAgICAvLyBIYW5kbGUgYm9vbGVhbiBzY2hlbWFzXG4gICAgaWYgKHR5cGVvZiBzY2hlbWEgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEgPyB6LmFueSgpIDogei5uZXZlcigpO1xuICAgIH1cbiAgICBjb25zdCB2ZXJzaW9uID0gZGV0ZWN0VmVyc2lvbihzY2hlbWEsIHBhcmFtcz8uZGVmYXVsdFRhcmdldCk7XG4gICAgY29uc3QgZGVmcyA9IChzY2hlbWEuJGRlZnMgfHwgc2NoZW1hLmRlZmluaXRpb25zIHx8IHt9KTtcbiAgICBjb25zdCBjdHggPSB7XG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIGRlZnMsXG4gICAgICAgIHJlZnM6IG5ldyBNYXAoKSxcbiAgICAgICAgcHJvY2Vzc2luZzogbmV3IFNldCgpLFxuICAgICAgICByb290U2NoZW1hOiBzY2hlbWEsXG4gICAgICAgIHJlZ2lzdHJ5OiBwYXJhbXM/LnJlZ2lzdHJ5ID8/IGdsb2JhbFJlZ2lzdHJ5LFxuICAgIH07XG4gICAgcmV0dXJuIGNvbnZlcnRTY2hlbWEoc2NoZW1hLCBjdHgpO1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/classic/from-json-schema.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/classic/iso.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/zod/v4/classic/iso.js ***!
|
||
\********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodISODate: () => (/* binding */ ZodISODate),\n/* harmony export */ ZodISODateTime: () => (/* binding */ ZodISODateTime),\n/* harmony export */ ZodISODuration: () => (/* binding */ ZodISODuration),\n/* harmony export */ ZodISOTime: () => (/* binding */ ZodISOTime),\n/* harmony export */ date: () => (/* binding */ date),\n/* harmony export */ datetime: () => (/* binding */ datetime),\n/* harmony export */ duration: () => (/* binding */ duration),\n/* harmony export */ time: () => (/* binding */ time)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/index.js\");\n/* harmony import */ var _schemas_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schemas.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/schemas.js\");\n\n\nconst ZodISODateTime = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodISODateTime\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodISODateTime.init(inst, def);\n _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodStringFormat.init(inst, def);\n});\nfunction datetime(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._isoDateTime(ZodISODateTime, params);\n}\nconst ZodISODate = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodISODate\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodISODate.init(inst, def);\n _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodStringFormat.init(inst, def);\n});\nfunction date(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._isoDate(ZodISODate, params);\n}\nconst ZodISOTime = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodISOTime\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodISOTime.init(inst, def);\n _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodStringFormat.init(inst, def);\n});\nfunction time(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._isoTime(ZodISOTime, params);\n}\nconst ZodISODuration = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodISODuration\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodISODuration.init(inst, def);\n _schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodStringFormat.init(inst, def);\n});\nfunction duration(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._isoDuration(ZodISODuration, params);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9pc28uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUF5QztBQUNEO0FBQ2pDLHFDQUFxQyx3REFBaUI7QUFDN0QsSUFBSSwyREFBb0I7QUFDeEIsSUFBSSx3REFBdUI7QUFDM0IsQ0FBQztBQUNNO0FBQ1AsV0FBVyx3REFBaUI7QUFDNUI7QUFDTyxpQ0FBaUMsd0RBQWlCO0FBQ3pELElBQUksdURBQWdCO0FBQ3BCLElBQUksd0RBQXVCO0FBQzNCLENBQUM7QUFDTTtBQUNQLFdBQVcsb0RBQWE7QUFDeEI7QUFDTyxpQ0FBaUMsd0RBQWlCO0FBQ3pELElBQUksdURBQWdCO0FBQ3BCLElBQUksd0RBQXVCO0FBQzNCLENBQUM7QUFDTTtBQUNQLFdBQVcsb0RBQWE7QUFDeEI7QUFDTyxxQ0FBcUMsd0RBQWlCO0FBQzdELElBQUksMkRBQW9CO0FBQ3hCLElBQUksd0RBQXVCO0FBQzNCLENBQUM7QUFDTTtBQUNQLFdBQVcsd0RBQWlCO0FBQzVCIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxjbGFzc2ljXFxpc28uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0ICogYXMgc2NoZW1hcyBmcm9tIFwiLi9zY2hlbWFzLmpzXCI7XG5leHBvcnQgY29uc3QgWm9kSVNPRGF0ZVRpbWUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVNPRGF0ZVRpbWVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZElTT0RhdGVUaW1lLmluaXQoaW5zdCwgZGVmKTtcbiAgICBzY2hlbWFzLlpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXNvRGF0ZVRpbWUoWm9kSVNPRGF0ZVRpbWUsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kSVNPRGF0ZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RJU09EYXRlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJU09EYXRlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBzY2hlbWFzLlpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBkYXRlKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pc29EYXRlKFpvZElTT0RhdGUsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kSVNPVGltZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RJU09UaW1lXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJU09UaW1lLmluaXQoaW5zdCwgZGVmKTtcbiAgICBzY2hlbWFzLlpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0aW1lKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pc29UaW1lKFpvZElTT1RpbWUsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kSVNPRHVyYXRpb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVNPRHVyYXRpb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZElTT0R1cmF0aW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBzY2hlbWFzLlpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBkdXJhdGlvbihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXNvRHVyYXRpb24oWm9kSVNPRHVyYXRpb24sIHBhcmFtcyk7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/classic/iso.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/classic/parse.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/zod/v4/classic/parse.js ***!
|
||
\**********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ decode: () => (/* binding */ decode),\n/* harmony export */ decodeAsync: () => (/* binding */ decodeAsync),\n/* harmony export */ encode: () => (/* binding */ encode),\n/* harmony export */ encodeAsync: () => (/* binding */ encodeAsync),\n/* harmony export */ parse: () => (/* binding */ parse),\n/* harmony export */ parseAsync: () => (/* binding */ parseAsync),\n/* harmony export */ safeDecode: () => (/* binding */ safeDecode),\n/* harmony export */ safeDecodeAsync: () => (/* binding */ safeDecodeAsync),\n/* harmony export */ safeEncode: () => (/* binding */ safeEncode),\n/* harmony export */ safeEncodeAsync: () => (/* binding */ safeEncodeAsync),\n/* harmony export */ safeParse: () => (/* binding */ safeParse),\n/* harmony export */ safeParseAsync: () => (/* binding */ safeParseAsync)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/index.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./errors.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/errors.js\");\n\n\nconst parse = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._parse(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst parseAsync = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._parseAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst safeParse = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._safeParse(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst safeParseAsync = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._safeParseAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\n// Codec functions\nconst encode = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._encode(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst decode = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._decode(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst encodeAsync = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._encodeAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst decodeAsync = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._decodeAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst safeEncode = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._safeEncode(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst safeDecode = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._safeDecode(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst safeEncodeAsync = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._safeEncodeAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst safeDecodeAsync = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._safeDecodeAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9wYXJzZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUF5QztBQUNFO0FBQ3BDLDhCQUE4QixrREFBVyxDQUFDLG9EQUFZO0FBQ3RELG1DQUFtQyx1REFBZ0IsQ0FBQyxvREFBWTtBQUNoRSxrQ0FBa0Msc0RBQWUsQ0FBQyxvREFBWTtBQUM5RCx1Q0FBdUMsMkRBQW9CLENBQUMsb0RBQVk7QUFDL0U7QUFDTywrQkFBK0IsbURBQVksQ0FBQyxvREFBWTtBQUN4RCwrQkFBK0IsbURBQVksQ0FBQyxvREFBWTtBQUN4RCxvQ0FBb0Msd0RBQWlCLENBQUMsb0RBQVk7QUFDbEUsb0NBQW9DLHdEQUFpQixDQUFDLG9EQUFZO0FBQ2xFLG1DQUFtQyx1REFBZ0IsQ0FBQyxvREFBWTtBQUNoRSxtQ0FBbUMsdURBQWdCLENBQUMsb0RBQVk7QUFDaEUsd0NBQXdDLDREQUFxQixDQUFDLG9EQUFZO0FBQzFFLHdDQUF3Qyw0REFBcUIsQ0FBQyxvREFBWSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcY2xhc3NpY1xccGFyc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgWm9kUmVhbEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5leHBvcnQgY29uc3QgcGFyc2UgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fcGFyc2UoWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBwYXJzZUFzeW5jID0gLyogQF9fUFVSRV9fICovIGNvcmUuX3BhcnNlQXN5bmMoWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBzYWZlUGFyc2UgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fc2FmZVBhcnNlKFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3Qgc2FmZVBhcnNlQXN5bmMgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fc2FmZVBhcnNlQXN5bmMoWm9kUmVhbEVycm9yKTtcbi8vIENvZGVjIGZ1bmN0aW9uc1xuZXhwb3J0IGNvbnN0IGVuY29kZSA9IC8qIEBfX1BVUkVfXyAqLyBjb3JlLl9lbmNvZGUoWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBkZWNvZGUgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fZGVjb2RlKFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3QgZW5jb2RlQXN5bmMgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fZW5jb2RlQXN5bmMoWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBkZWNvZGVBc3luYyA9IC8qIEBfX1BVUkVfXyAqLyBjb3JlLl9kZWNvZGVBc3luYyhab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IHNhZmVFbmNvZGUgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fc2FmZUVuY29kZShab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IHNhZmVEZWNvZGUgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fc2FmZURlY29kZShab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IHNhZmVFbmNvZGVBc3luYyA9IC8qIEBfX1BVUkVfXyAqLyBjb3JlLl9zYWZlRW5jb2RlQXN5bmMoWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBzYWZlRGVjb2RlQXN5bmMgPSAvKiBAX19QVVJFX18gKi8gY29yZS5fc2FmZURlY29kZUFzeW5jKFpvZFJlYWxFcnJvcik7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/classic/parse.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/classic/schemas.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/zod/v4/classic/schemas.js ***!
|
||
\************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodAny: () => (/* binding */ ZodAny),\n/* harmony export */ ZodArray: () => (/* binding */ ZodArray),\n/* harmony export */ ZodBase64: () => (/* binding */ ZodBase64),\n/* harmony export */ ZodBase64URL: () => (/* binding */ ZodBase64URL),\n/* harmony export */ ZodBigInt: () => (/* binding */ ZodBigInt),\n/* harmony export */ ZodBigIntFormat: () => (/* binding */ ZodBigIntFormat),\n/* harmony export */ ZodBoolean: () => (/* binding */ ZodBoolean),\n/* harmony export */ ZodCIDRv4: () => (/* binding */ ZodCIDRv4),\n/* harmony export */ ZodCIDRv6: () => (/* binding */ ZodCIDRv6),\n/* harmony export */ ZodCUID: () => (/* binding */ ZodCUID),\n/* harmony export */ ZodCUID2: () => (/* binding */ ZodCUID2),\n/* harmony export */ ZodCatch: () => (/* binding */ ZodCatch),\n/* harmony export */ ZodCodec: () => (/* binding */ ZodCodec),\n/* harmony export */ ZodCustom: () => (/* binding */ ZodCustom),\n/* harmony export */ ZodCustomStringFormat: () => (/* binding */ ZodCustomStringFormat),\n/* harmony export */ ZodDate: () => (/* binding */ ZodDate),\n/* harmony export */ ZodDefault: () => (/* binding */ ZodDefault),\n/* harmony export */ ZodDiscriminatedUnion: () => (/* binding */ ZodDiscriminatedUnion),\n/* harmony export */ ZodE164: () => (/* binding */ ZodE164),\n/* harmony export */ ZodEmail: () => (/* binding */ ZodEmail),\n/* harmony export */ ZodEmoji: () => (/* binding */ ZodEmoji),\n/* harmony export */ ZodEnum: () => (/* binding */ ZodEnum),\n/* harmony export */ ZodExactOptional: () => (/* binding */ ZodExactOptional),\n/* harmony export */ ZodFile: () => (/* binding */ ZodFile),\n/* harmony export */ ZodFunction: () => (/* binding */ ZodFunction),\n/* harmony export */ ZodGUID: () => (/* binding */ ZodGUID),\n/* harmony export */ ZodIPv4: () => (/* binding */ ZodIPv4),\n/* harmony export */ ZodIPv6: () => (/* binding */ ZodIPv6),\n/* harmony export */ ZodIntersection: () => (/* binding */ ZodIntersection),\n/* harmony export */ ZodJWT: () => (/* binding */ ZodJWT),\n/* harmony export */ ZodKSUID: () => (/* binding */ ZodKSUID),\n/* harmony export */ ZodLazy: () => (/* binding */ ZodLazy),\n/* harmony export */ ZodLiteral: () => (/* binding */ ZodLiteral),\n/* harmony export */ ZodMAC: () => (/* binding */ ZodMAC),\n/* harmony export */ ZodMap: () => (/* binding */ ZodMap),\n/* harmony export */ ZodNaN: () => (/* binding */ ZodNaN),\n/* harmony export */ ZodNanoID: () => (/* binding */ ZodNanoID),\n/* harmony export */ ZodNever: () => (/* binding */ ZodNever),\n/* harmony export */ ZodNonOptional: () => (/* binding */ ZodNonOptional),\n/* harmony export */ ZodNull: () => (/* binding */ ZodNull),\n/* harmony export */ ZodNullable: () => (/* binding */ ZodNullable),\n/* harmony export */ ZodNumber: () => (/* binding */ ZodNumber),\n/* harmony export */ ZodNumberFormat: () => (/* binding */ ZodNumberFormat),\n/* harmony export */ ZodObject: () => (/* binding */ ZodObject),\n/* harmony export */ ZodOptional: () => (/* binding */ ZodOptional),\n/* harmony export */ ZodPipe: () => (/* binding */ ZodPipe),\n/* harmony export */ ZodPrefault: () => (/* binding */ ZodPrefault),\n/* harmony export */ ZodPromise: () => (/* binding */ ZodPromise),\n/* harmony export */ ZodReadonly: () => (/* binding */ ZodReadonly),\n/* harmony export */ ZodRecord: () => (/* binding */ ZodRecord),\n/* harmony export */ ZodSet: () => (/* binding */ ZodSet),\n/* harmony export */ ZodString: () => (/* binding */ ZodString),\n/* harmony export */ ZodStringFormat: () => (/* binding */ ZodStringFormat),\n/* harmony export */ ZodSuccess: () => (/* binding */ ZodSuccess),\n/* harmony export */ ZodSymbol: () => (/* binding */ ZodSymbol),\n/* harmony export */ ZodTemplateLiteral: () => (/* binding */ ZodTemplateLiteral),\n/* harmony export */ ZodTransform: () => (/* binding */ ZodTransform),\n/* harmony export */ ZodTuple: () => (/* binding */ ZodTuple),\n/* harmony export */ ZodType: () => (/* binding */ ZodType),\n/* harmony export */ ZodULID: () => (/* binding */ ZodULID),\n/* harmony export */ ZodURL: () => (/* binding */ ZodURL),\n/* harmony export */ ZodUUID: () => (/* binding */ ZodUUID),\n/* harmony export */ ZodUndefined: () => (/* binding */ ZodUndefined),\n/* harmony export */ ZodUnion: () => (/* binding */ ZodUnion),\n/* harmony export */ ZodUnknown: () => (/* binding */ ZodUnknown),\n/* harmony export */ ZodVoid: () => (/* binding */ ZodVoid),\n/* harmony export */ ZodXID: () => (/* binding */ ZodXID),\n/* harmony export */ ZodXor: () => (/* binding */ ZodXor),\n/* harmony export */ _ZodString: () => (/* binding */ _ZodString),\n/* harmony export */ _default: () => (/* binding */ _default),\n/* harmony export */ _function: () => (/* binding */ _function),\n/* harmony export */ any: () => (/* binding */ any),\n/* harmony export */ array: () => (/* binding */ array),\n/* harmony export */ base64: () => (/* binding */ base64),\n/* harmony export */ base64url: () => (/* binding */ base64url),\n/* harmony export */ bigint: () => (/* binding */ bigint),\n/* harmony export */ boolean: () => (/* binding */ boolean),\n/* harmony export */ \"catch\": () => (/* binding */ _catch),\n/* harmony export */ check: () => (/* binding */ check),\n/* harmony export */ cidrv4: () => (/* binding */ cidrv4),\n/* harmony export */ cidrv6: () => (/* binding */ cidrv6),\n/* harmony export */ codec: () => (/* binding */ codec),\n/* harmony export */ cuid: () => (/* binding */ cuid),\n/* harmony export */ cuid2: () => (/* binding */ cuid2),\n/* harmony export */ custom: () => (/* binding */ custom),\n/* harmony export */ date: () => (/* binding */ date),\n/* harmony export */ describe: () => (/* binding */ describe),\n/* harmony export */ discriminatedUnion: () => (/* binding */ discriminatedUnion),\n/* harmony export */ e164: () => (/* binding */ e164),\n/* harmony export */ email: () => (/* binding */ email),\n/* harmony export */ emoji: () => (/* binding */ emoji),\n/* harmony export */ \"enum\": () => (/* binding */ _enum),\n/* harmony export */ exactOptional: () => (/* binding */ exactOptional),\n/* harmony export */ file: () => (/* binding */ file),\n/* harmony export */ float32: () => (/* binding */ float32),\n/* harmony export */ float64: () => (/* binding */ float64),\n/* harmony export */ \"function\": () => (/* binding */ _function),\n/* harmony export */ guid: () => (/* binding */ guid),\n/* harmony export */ hash: () => (/* binding */ hash),\n/* harmony export */ hex: () => (/* binding */ hex),\n/* harmony export */ hostname: () => (/* binding */ hostname),\n/* harmony export */ httpUrl: () => (/* binding */ httpUrl),\n/* harmony export */ \"instanceof\": () => (/* binding */ _instanceof),\n/* harmony export */ int: () => (/* binding */ int),\n/* harmony export */ int32: () => (/* binding */ int32),\n/* harmony export */ int64: () => (/* binding */ int64),\n/* harmony export */ intersection: () => (/* binding */ intersection),\n/* harmony export */ ipv4: () => (/* binding */ ipv4),\n/* harmony export */ ipv6: () => (/* binding */ ipv6),\n/* harmony export */ json: () => (/* binding */ json),\n/* harmony export */ jwt: () => (/* binding */ jwt),\n/* harmony export */ keyof: () => (/* binding */ keyof),\n/* harmony export */ ksuid: () => (/* binding */ ksuid),\n/* harmony export */ lazy: () => (/* binding */ lazy),\n/* harmony export */ literal: () => (/* binding */ literal),\n/* harmony export */ looseObject: () => (/* binding */ looseObject),\n/* harmony export */ looseRecord: () => (/* binding */ looseRecord),\n/* harmony export */ mac: () => (/* binding */ mac),\n/* harmony export */ map: () => (/* binding */ map),\n/* harmony export */ meta: () => (/* binding */ meta),\n/* harmony export */ nan: () => (/* binding */ nan),\n/* harmony export */ nanoid: () => (/* binding */ nanoid),\n/* harmony export */ nativeEnum: () => (/* binding */ nativeEnum),\n/* harmony export */ never: () => (/* binding */ never),\n/* harmony export */ nonoptional: () => (/* binding */ nonoptional),\n/* harmony export */ \"null\": () => (/* binding */ _null),\n/* harmony export */ nullable: () => (/* binding */ nullable),\n/* harmony export */ nullish: () => (/* binding */ nullish),\n/* harmony export */ number: () => (/* binding */ number),\n/* harmony export */ object: () => (/* binding */ object),\n/* harmony export */ optional: () => (/* binding */ optional),\n/* harmony export */ partialRecord: () => (/* binding */ partialRecord),\n/* harmony export */ pipe: () => (/* binding */ pipe),\n/* harmony export */ prefault: () => (/* binding */ prefault),\n/* harmony export */ preprocess: () => (/* binding */ preprocess),\n/* harmony export */ promise: () => (/* binding */ promise),\n/* harmony export */ readonly: () => (/* binding */ readonly),\n/* harmony export */ record: () => (/* binding */ record),\n/* harmony export */ refine: () => (/* binding */ refine),\n/* harmony export */ set: () => (/* binding */ set),\n/* harmony export */ strictObject: () => (/* binding */ strictObject),\n/* harmony export */ string: () => (/* binding */ string),\n/* harmony export */ stringFormat: () => (/* binding */ stringFormat),\n/* harmony export */ stringbool: () => (/* binding */ stringbool),\n/* harmony export */ success: () => (/* binding */ success),\n/* harmony export */ superRefine: () => (/* binding */ superRefine),\n/* harmony export */ symbol: () => (/* binding */ symbol),\n/* harmony export */ templateLiteral: () => (/* binding */ templateLiteral),\n/* harmony export */ transform: () => (/* binding */ transform),\n/* harmony export */ tuple: () => (/* binding */ tuple),\n/* harmony export */ uint32: () => (/* binding */ uint32),\n/* harmony export */ uint64: () => (/* binding */ uint64),\n/* harmony export */ ulid: () => (/* binding */ ulid),\n/* harmony export */ undefined: () => (/* binding */ _undefined),\n/* harmony export */ union: () => (/* binding */ union),\n/* harmony export */ unknown: () => (/* binding */ unknown),\n/* harmony export */ url: () => (/* binding */ url),\n/* harmony export */ uuid: () => (/* binding */ uuid),\n/* harmony export */ uuidv4: () => (/* binding */ uuidv4),\n/* harmony export */ uuidv6: () => (/* binding */ uuidv6),\n/* harmony export */ uuidv7: () => (/* binding */ uuidv7),\n/* harmony export */ \"void\": () => (/* binding */ _void),\n/* harmony export */ xid: () => (/* binding */ xid),\n/* harmony export */ xor: () => (/* binding */ xor)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/index.js\");\n/* harmony import */ var _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/json-schema-processors.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/json-schema-processors.js\");\n/* harmony import */ var _core_to_json_schema_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/to-json-schema.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/to-json-schema.js\");\n/* harmony import */ var _checks_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./checks.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/checks.js\");\n/* harmony import */ var _iso_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./iso.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/iso.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./parse.js */ \"(app-pages-browser)/./node_modules/zod/v4/classic/parse.js\");\n\n\n\n\n\n\n\nconst ZodType = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodType\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: (0,_core_to_json_schema_js__WEBPACK_IMPORTED_MODULE_2__.createStandardJSONSchemaMethod)(inst, \"input\"),\n output: (0,_core_to_json_schema_js__WEBPACK_IMPORTED_MODULE_2__.createStandardJSONSchemaMethod)(inst, \"output\"),\n },\n });\n inst.toJSONSchema = (0,_core_to_json_schema_js__WEBPACK_IMPORTED_MODULE_2__.createToJSONSchemaMethod)(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(_core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), {\n parent: true,\n });\n };\n inst.with = inst.check;\n inst.clone = (def, params) => _core_index_js__WEBPACK_IMPORTED_MODULE_0__.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.encode(inst, data, params);\n inst.decode = (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => _parse_js__WEBPACK_IMPORTED_MODULE_5__.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.exactOptional = () => exactOptional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n inst.apply = (fn) => fn(inst);\n return inst;\n});\n/** @internal */\nconst _ZodString = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"_ZodString\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.regex(...args));\n inst.includes = (...args) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.includes(...args));\n inst.startsWith = (...args) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.startsWith(...args));\n inst.endsWith = (...args) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.endsWith(...args));\n inst.min = (...args) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.minLength(...args));\n inst.max = (...args) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.maxLength(...args));\n inst.length = (...args) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.length(...args));\n inst.nonempty = (...args) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lowercase(params));\n inst.uppercase = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.uppercase(params));\n // transforms\n inst.trim = () => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.trim());\n inst.normalize = (...args) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.normalize(...args));\n inst.toLowerCase = () => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.toLowerCase());\n inst.toUpperCase = () => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.toUpperCase());\n inst.slugify = () => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.slugify());\n});\nconst ZodString = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodString\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._email(ZodEmail, params));\n inst.url = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._url(ZodURL, params));\n inst.jwt = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(_iso_js__WEBPACK_IMPORTED_MODULE_4__.datetime(params));\n inst.date = (params) => inst.check(_iso_js__WEBPACK_IMPORTED_MODULE_4__.date(params));\n inst.time = (params) => inst.check(_iso_js__WEBPACK_IMPORTED_MODULE_4__.time(params));\n inst.duration = (params) => inst.check(_iso_js__WEBPACK_IMPORTED_MODULE_4__.duration(params));\n});\nfunction string(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._string(ZodString, params);\n}\nconst ZodStringFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodStringFormat\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nconst ZodEmail = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction email(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._email(ZodEmail, params);\n}\nconst ZodGUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction guid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._guid(ZodGUID, params);\n}\nconst ZodUUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction uuid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._uuid(ZodUUID, params);\n}\nfunction uuidv4(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nfunction uuidv6(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nfunction uuidv7(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._uuidv7(ZodUUID, params);\n}\nconst ZodURL = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction url(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._url(ZodURL, params);\n}\nfunction httpUrl(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._url(ZodURL, {\n protocol: /^https?$/,\n hostname: _core_index_js__WEBPACK_IMPORTED_MODULE_0__.regexes.domain,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodEmoji = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction emoji(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._emoji(ZodEmoji, params);\n}\nconst ZodNanoID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction nanoid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._nanoid(ZodNanoID, params);\n}\nconst ZodCUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction cuid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._cuid(ZodCUID, params);\n}\nconst ZodCUID2 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction cuid2(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._cuid2(ZodCUID2, params);\n}\nconst ZodULID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction ulid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._ulid(ZodULID, params);\n}\nconst ZodXID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction xid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._xid(ZodXID, params);\n}\nconst ZodKSUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction ksuid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._ksuid(ZodKSUID, params);\n}\nconst ZodIPv4 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction ipv4(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._ipv4(ZodIPv4, params);\n}\nconst ZodMAC = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction mac(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._mac(ZodMAC, params);\n}\nconst ZodIPv6 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction ipv6(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._ipv6(ZodIPv6, params);\n}\nconst ZodCIDRv4 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCIDRv4\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction cidrv4(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._cidrv4(ZodCIDRv4, params);\n}\nconst ZodCIDRv6 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCIDRv6\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction cidrv6(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._cidrv6(ZodCIDRv6, params);\n}\nconst ZodBase64 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction base64(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._base64(ZodBase64, params);\n}\nconst ZodBase64URL = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction base64url(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._base64url(ZodBase64URL, params);\n}\nconst ZodE164 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction e164(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._e164(ZodE164, params);\n}\nconst ZodJWT = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction jwt(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._jwt(ZodJWT, params);\n}\nconst ZodCustomStringFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction stringFormat(format, fnOrRegex, _params = {}) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nfunction hostname(_params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._stringFormat(ZodCustomStringFormat, \"hostname\", _core_index_js__WEBPACK_IMPORTED_MODULE_0__.regexes.hostname, _params);\n}\nfunction hex(_params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._stringFormat(ZodCustomStringFormat, \"hex\", _core_index_js__WEBPACK_IMPORTED_MODULE_0__.regexes.hex, _params);\n}\nfunction hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = _core_index_js__WEBPACK_IMPORTED_MODULE_0__.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nconst ZodNumber = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNumber\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.numberProcessor(inst, ctx, json, params);\n inst.gt = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gt(value, params));\n inst.gte = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gte(value, params));\n inst.min = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gte(value, params));\n inst.lt = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lt(value, params));\n inst.lte = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lte(value, params));\n inst.max = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gt(0, params));\n inst.nonnegative = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gte(0, params));\n inst.negative = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lt(0, params));\n inst.nonpositive = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.multipleOf(value, params));\n inst.step = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nfunction number(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._number(ZodNumber, params);\n}\nconst ZodNumberFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNumberFormat\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nfunction int(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._int(ZodNumberFormat, params);\n}\nfunction float32(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._float32(ZodNumberFormat, params);\n}\nfunction float64(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._float64(ZodNumberFormat, params);\n}\nfunction int32(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._int32(ZodNumberFormat, params);\n}\nfunction uint32(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._uint32(ZodNumberFormat, params);\n}\nconst ZodBoolean = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBoolean\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.booleanProcessor(inst, ctx, json, params);\n});\nfunction boolean(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._boolean(ZodBoolean, params);\n}\nconst ZodBigInt = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBigInt\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gte(value, params));\n inst.min = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gte(value, params));\n inst.gt = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gt(value, params));\n inst.gte = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gte(value, params));\n inst.min = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gte(value, params));\n inst.lt = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lt(value, params));\n inst.lte = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lte(value, params));\n inst.max = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lte(value, params));\n inst.positive = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nfunction bigint(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._bigint(ZodBigInt, params);\n}\nconst ZodBigIntFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nfunction int64(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._int64(ZodBigIntFormat, params);\n}\n// uint64\nfunction uint64(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._uint64(ZodBigIntFormat, params);\n}\nconst ZodSymbol = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodSymbol\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.symbolProcessor(inst, ctx, json, params);\n});\nfunction symbol(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._symbol(ZodSymbol, params);\n}\nconst ZodUndefined = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodUndefined\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._undefined(ZodUndefined, params);\n}\n\nconst ZodNull = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNull\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._null(ZodNull, params);\n}\n\nconst ZodAny = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodAny\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.anyProcessor(inst, ctx, json, params);\n});\nfunction any() {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._any(ZodAny);\n}\nconst ZodUnknown = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodUnknown\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.unknownProcessor(inst, ctx, json, params);\n});\nfunction unknown() {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._unknown(ZodUnknown);\n}\nconst ZodNever = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNever\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.neverProcessor(inst, ctx, json, params);\n});\nfunction never(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._never(ZodNever, params);\n}\nconst ZodVoid = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodVoid\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._void(ZodVoid, params);\n}\n\nconst ZodDate = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodDate\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.gte(value, params));\n inst.max = (value, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nfunction date(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._date(ZodDate, params);\n}\nconst ZodArray = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodArray\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_3__.length(len, params));\n inst.unwrap = () => inst.element;\n});\nfunction array(element, params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._array(ZodArray, element, params);\n}\n// .keyof\nfunction keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nconst ZodObject = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodObject\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.objectProcessor(inst, ctx, json, params);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.merge(inst, other);\n inst.pick = (mask) => _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.pick(inst, mask);\n inst.omit = (mask) => _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.omit(inst, mask);\n inst.partial = (...args) => _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.required(ZodNonOptional, inst, args[0]);\n});\nfunction object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nfunction strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\n// looseObject\nfunction looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodUnion = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodUnion\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nfunction union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodXor = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nfunction xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodDiscriminatedUnion = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodDiscriminatedUnion.init(inst, def);\n});\nfunction discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodIntersection = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodIntersection\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.intersectionProcessor(inst, ctx, json, params);\n});\nfunction intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nconst ZodTuple = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodTuple\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nfunction tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodRecord = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodRecord\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nfunction record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nfunction partialRecord(keyType, valueType, params) {\n const k = _core_index_js__WEBPACK_IMPORTED_MODULE_0__.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nfunction looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodMap = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMap\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._minSize(...args));\n inst.nonempty = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._minSize(1, params));\n inst.max = (...args) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._maxSize(...args));\n inst.size = (...args) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._size(...args));\n});\nfunction map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodSet = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodSet\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._minSize(...args));\n inst.nonempty = (params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._minSize(1, params));\n inst.max = (...args) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._maxSize(...args));\n inst.size = (...args) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._size(...args));\n});\nfunction set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodEnum = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodEnum\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\n\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nfunction nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodLiteral = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodLiteral\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nfunction literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodFile = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodFile\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._minSize(size, params));\n inst.max = (size, params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._maxSize(size, params));\n inst.mime = (types, params) => inst.check(_core_index_js__WEBPACK_IMPORTED_MODULE_0__._mime(Array.isArray(types) ? types : [types], params));\n});\nfunction file(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._file(ZodFile, params);\n}\nconst ZodTransform = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodTransform\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(_core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(_core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nfunction transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nconst ZodOptional = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodOptional\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nconst ZodExactOptional = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodExactOptional\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nconst ZodNullable = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNullable\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nfunction nullish(innerType) {\n return optional(nullable(innerType));\n}\nconst ZodDefault = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodDefault\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nfunction _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.shallowClone(defaultValue);\n },\n });\n}\nconst ZodPrefault = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodPrefault\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : _core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.shallowClone(defaultValue);\n },\n });\n}\nconst ZodNonOptional = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNonOptional\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodSuccess = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodSuccess\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nconst ZodCatch = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCatch\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n\nconst ZodNaN = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNaN\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.nanProcessor(inst, ctx, json, params);\n});\nfunction nan(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._nan(ZodNaN, params);\n}\nconst ZodPipe = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodPipe\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nfunction pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nconst ZodCodec = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCodec.init(inst, def);\n});\nfunction codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nconst ZodReadonly = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodReadonly\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nconst ZodTemplateLiteral = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.templateLiteralProcessor(inst, ctx, json, params);\n});\nfunction templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n}\nconst ZodLazy = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodLazy\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nfunction lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nconst ZodPromise = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodPromise\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nfunction promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nconst ZodFunction = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodFunction\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.functionProcessor(inst, ctx, json, params);\n});\nfunction _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\n\nconst ZodCustom = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCustom\", (inst, def) => {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => _core_json_schema_processors_js__WEBPACK_IMPORTED_MODULE_1__.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nfunction check(fn) {\n const ch = new _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nfunction custom(fn, _params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._custom(ZodCustom, fn ?? (() => true), _params);\n}\nfunction refine(fn, _params = {}) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._refine(ZodCustom, fn, _params);\n}\n// superRefine\nfunction superRefine(fn) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._superRefine(fn);\n}\n// Re-export describe and meta from core\nconst describe = _core_index_js__WEBPACK_IMPORTED_MODULE_0__.describe;\nconst meta = _core_index_js__WEBPACK_IMPORTED_MODULE_0__.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_0__.util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\n\n// stringbool\nconst stringbool = (...args) => _core_index_js__WEBPACK_IMPORTED_MODULE_0__._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nfunction json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nfunction preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9zY2hlbWFzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXlDO0FBQ0Q7QUFDd0I7QUFDcUM7QUFDL0Q7QUFDTjtBQUNJO0FBQzdCLDhCQUE4Qix3REFBaUI7QUFDdEQsSUFBSSxvREFBYTtBQUNqQjtBQUNBO0FBQ0EsbUJBQW1CLHVGQUE4QjtBQUNqRCxvQkFBb0IsdUZBQThCO0FBQ2xELFNBQVM7QUFDVCxLQUFLO0FBQ0wsd0JBQXdCLGlGQUF3QixTQUFTO0FBQ3pEO0FBQ0E7QUFDQSwwQ0FBMEMsWUFBWTtBQUN0RDtBQUNBO0FBQ0EsMEJBQTBCLDBEQUFjO0FBQ3hDO0FBQ0E7QUFDQSxtRUFBbUUsUUFBUSxrQkFBa0IsaUJBQWlCLG1CQUFtQjtBQUNqSTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esa0NBQWtDLGlEQUFVO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUNBQW1DLDRDQUFXLHVCQUF1QixvQkFBb0I7QUFDekYsdUNBQXVDLGdEQUFlO0FBQ3RELDhDQUE4QyxpREFBZ0IsdUJBQXVCLHlCQUF5QjtBQUM5RyxrREFBa0QscURBQW9CO0FBQ3RFO0FBQ0E7QUFDQSxvQ0FBb0MsNkNBQVk7QUFDaEQsb0NBQW9DLDZDQUFZO0FBQ2hELCtDQUErQyxrREFBaUI7QUFDaEUsK0NBQStDLGtEQUFpQjtBQUNoRSx3Q0FBd0MsaURBQWdCO0FBQ3hELHdDQUF3QyxpREFBZ0I7QUFDeEQsbURBQW1ELHNEQUFxQjtBQUN4RSxt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ZTtBQUNuQjtBQUNBLHlEQUF5RCw0RUFBMEI7QUFDbkYsQ0FBQztBQUNEO0FBQ087QUFDUCxtQkFBbUIscURBQWM7QUFDakM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDTztBQUNQLFdBQVcsbURBQVk7QUFDdkI7QUFDTyxnQ0FBZ0M7QUFDdkMsV0FBVyxtREFBWTtBQUN2QjtBQUNBO0FBQ087QUFDUCxXQUFXLHdEQUFpQjtBQUM1QjtBQUNBO0FBQ08saUJBQWlCLG9EQUFhO0FBQzlCLGFBQWEsZ0RBQVM7QUFDN0IscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdFQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDcUM7QUFDckM7QUFDTyxnQ0FBZ0MsdURBQWdCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDTTtBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNsYXNzaWNcXHNjaGVtYXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBwcm9jZXNzb3JzIGZyb20gXCIuLi9jb3JlL2pzb24tc2NoZW1hLXByb2Nlc3NvcnMuanNcIjtcbmltcG9ydCB7IGNyZWF0ZVN0YW5kYXJkSlNPTlNjaGVtYU1ldGhvZCwgY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kIH0gZnJvbSBcIi4uL2NvcmUvdG8tanNvbi1zY2hlbWEuanNcIjtcbmltcG9ydCAqIGFzIGNoZWNrcyBmcm9tIFwiLi9jaGVja3MuanNcIjtcbmltcG9ydCAqIGFzIGlzbyBmcm9tIFwiLi9pc28uanNcIjtcbmltcG9ydCAqIGFzIHBhcnNlIGZyb20gXCIuL3BhcnNlLmpzXCI7XG5leHBvcnQgY29uc3QgWm9kVHlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RUeXBlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBPYmplY3QuYXNzaWduKGluc3RbXCJ+c3RhbmRhcmRcIl0sIHtcbiAgICAgICAganNvblNjaGVtYToge1xuICAgICAgICAgICAgaW5wdXQ6IGNyZWF0ZVN0YW5kYXJkSlNPTlNjaGVtYU1ldGhvZChpbnN0LCBcImlucHV0XCIpLFxuICAgICAgICAgICAgb3V0cHV0OiBjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2QoaW5zdCwgXCJvdXRwdXRcIiksXG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgaW5zdC50b0pTT05TY2hlbWEgPSBjcmVhdGVUb0pTT05TY2hlbWFNZXRob2QoaW5zdCwge30pO1xuICAgIGluc3QuZGVmID0gZGVmO1xuICAgIGluc3QudHlwZSA9IGRlZi50eXBlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcIl9kZWZcIiwgeyB2YWx1ZTogZGVmIH0pO1xuICAgIC8vIGJhc2UgbWV0aG9kc1xuICAgIGluc3QuY2hlY2sgPSAoLi4uY2hlY2tzKSA9PiB7XG4gICAgICAgIHJldHVybiBpbnN0LmNsb25lKHV0aWwubWVyZ2VEZWZzKGRlZiwge1xuICAgICAgICAgICAgY2hlY2tzOiBbXG4gICAgICAgICAgICAgICAgLi4uKGRlZi5jaGVja3MgPz8gW10pLFxuICAgICAgICAgICAgICAgIC4uLmNoZWNrcy5tYXAoKGNoKSA9PiB0eXBlb2YgY2ggPT09IFwiZnVuY3Rpb25cIiA/IHsgX3pvZDogeyBjaGVjazogY2gsIGRlZjogeyBjaGVjazogXCJjdXN0b21cIiB9LCBvbmF0dGFjaDogW10gfSB9IDogY2gpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSksIHtcbiAgICAgICAgICAgIHBhcmVudDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBpbnN0LndpdGggPSBpbnN0LmNoZWNrO1xuICAgIGluc3QuY2xvbmUgPSAoZGVmLCBwYXJhbXMpID0+IGNvcmUuY2xvbmUoaW5zdCwgZGVmLCBwYXJhbXMpO1xuICAgIGluc3QuYnJhbmQgPSAoKSA9PiBpbnN0O1xuICAgIGluc3QucmVnaXN0ZXIgPSAoKHJlZywgbWV0YSkgPT4ge1xuICAgICAgICByZWcuYWRkKGluc3QsIG1ldGEpO1xuICAgICAgICByZXR1cm4gaW5zdDtcbiAgICB9KTtcbiAgICAvLyBwYXJzaW5nXG4gICAgaW5zdC5wYXJzZSA9IChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnBhcnNlKGluc3QsIGRhdGEsIHBhcmFtcywgeyBjYWxsZWU6IGluc3QucGFyc2UgfSk7XG4gICAgaW5zdC5zYWZlUGFyc2UgPSAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5zYWZlUGFyc2UoaW5zdCwgZGF0YSwgcGFyYW1zKTtcbiAgICBpbnN0LnBhcnNlQXN5bmMgPSBhc3luYyAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5wYXJzZUFzeW5jKGluc3QsIGRhdGEsIHBhcmFtcywgeyBjYWxsZWU6IGluc3QucGFyc2VBc3luYyB9KTtcbiAgICBpbnN0LnNhZmVQYXJzZUFzeW5jID0gYXN5bmMgKGRhdGEsIHBhcmFtcykgPT4gcGFyc2Uuc2FmZVBhcnNlQXN5bmMoaW5zdCwgZGF0YSwgcGFyYW1zKTtcbiAgICBpbnN0LnNwYSA9IGluc3Quc2FmZVBhcnNlQXN5bmM7XG4gICAgLy8gZW5jb2RpbmcvZGVjb2RpbmdcbiAgICBpbnN0LmVuY29kZSA9IChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLmVuY29kZShpbnN0LCBkYXRhLCBwYXJhbXMpO1xuICAgIGluc3QuZGVjb2RlID0gKGRhdGEsIHBhcmFtcykgPT4gcGFyc2UuZGVjb2RlKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgaW5zdC5lbmNvZGVBc3luYyA9IGFzeW5jIChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLmVuY29kZUFzeW5jKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgaW5zdC5kZWNvZGVBc3luYyA9IGFzeW5jIChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLmRlY29kZUFzeW5jKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgaW5zdC5zYWZlRW5jb2RlID0gKGRhdGEsIHBhcmFtcykgPT4gcGFyc2Uuc2FmZUVuY29kZShpbnN0LCBkYXRhLCBwYXJhbXMpO1xuICAgIGluc3Quc2FmZURlY29kZSA9IChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnNhZmVEZWNvZGUoaW5zdCwgZGF0YSwgcGFyYW1zKTtcbiAgICBpbnN0LnNhZmVFbmNvZGVBc3luYyA9IGFzeW5jIChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnNhZmVFbmNvZGVBc3luYyhpbnN0LCBkYXRhLCBwYXJhbXMpO1xuICAgIGluc3Quc2FmZURlY29kZUFzeW5jID0gYXN5bmMgKGRhdGEsIHBhcmFtcykgPT4gcGFyc2Uuc2FmZURlY29kZUFzeW5jKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgLy8gcmVmaW5lbWVudHNcbiAgICBpbnN0LnJlZmluZSA9IChjaGVjaywgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKHJlZmluZShjaGVjaywgcGFyYW1zKSk7XG4gICAgaW5zdC5zdXBlclJlZmluZSA9IChyZWZpbmVtZW50KSA9PiBpbnN0LmNoZWNrKHN1cGVyUmVmaW5lKHJlZmluZW1lbnQpKTtcbiAgICBpbnN0Lm92ZXJ3cml0ZSA9IChmbikgPT4gaW5zdC5jaGVjayhjaGVja3Mub3ZlcndyaXRlKGZuKSk7XG4gICAgLy8gd3JhcHBlcnNcbiAgICBpbnN0Lm9wdGlvbmFsID0gKCkgPT4gb3B0aW9uYWwoaW5zdCk7XG4gICAgaW5zdC5leGFjdE9wdGlvbmFsID0gKCkgPT4gZXhhY3RPcHRpb25hbChpbnN0KTtcbiAgICBpbnN0Lm51bGxhYmxlID0gKCkgPT4gbnVsbGFibGUoaW5zdCk7XG4gICAgaW5zdC5udWxsaXNoID0gKCkgPT4gb3B0aW9uYWwobnVsbGFibGUoaW5zdCkpO1xuICAgIGluc3Qubm9ub3B0aW9uYWwgPSAocGFyYW1zKSA9PiBub25vcHRpb25hbChpbnN0LCBwYXJhbXMpO1xuICAgIGluc3QuYXJyYXkgPSAoKSA9PiBhcnJheShpbnN0KTtcbiAgICBpbnN0Lm9yID0gKGFyZykgPT4gdW5pb24oW2luc3QsIGFyZ10pO1xuICAgIGluc3QuYW5kID0gKGFyZykgPT4gaW50ZXJzZWN0aW9uKGluc3QsIGFyZyk7XG4gICAgaW5zdC50cmFuc2Zvcm0gPSAodHgpID0+IHBpcGUoaW5zdCwgdHJhbnNmb3JtKHR4KSk7XG4gICAgaW5zdC5kZWZhdWx0ID0gKGRlZikgPT4gX2RlZmF1bHQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnByZWZhdWx0ID0gKGRlZikgPT4gcHJlZmF1bHQoaW5zdCwgZGVmKTtcbiAgICAvLyBpbnN0LmNvYWxlc2NlID0gKGRlZiwgcGFyYW1zKSA9PiBjb2FsZXNjZShpbnN0LCBkZWYsIHBhcmFtcyk7XG4gICAgaW5zdC5jYXRjaCA9IChwYXJhbXMpID0+IF9jYXRjaChpbnN0LCBwYXJhbXMpO1xuICAgIGluc3QucGlwZSA9ICh0YXJnZXQpID0+IHBpcGUoaW5zdCwgdGFyZ2V0KTtcbiAgICBpbnN0LnJlYWRvbmx5ID0gKCkgPT4gcmVhZG9ubHkoaW5zdCk7XG4gICAgLy8gbWV0YVxuICAgIGluc3QuZGVzY3JpYmUgPSAoZGVzY3JpcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgY2wgPSBpbnN0LmNsb25lKCk7XG4gICAgICAgIGNvcmUuZ2xvYmFsUmVnaXN0cnkuYWRkKGNsLCB7IGRlc2NyaXB0aW9uIH0pO1xuICAgICAgICByZXR1cm4gY2w7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJkZXNjcmlwdGlvblwiLCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIHJldHVybiBjb3JlLmdsb2JhbFJlZ2lzdHJ5LmdldChpbnN0KT8uZGVzY3JpcHRpb247XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBpbnN0Lm1ldGEgPSAoLi4uYXJncykgPT4ge1xuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBjb3JlLmdsb2JhbFJlZ2lzdHJ5LmdldChpbnN0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbCA9IGluc3QuY2xvbmUoKTtcbiAgICAgICAgY29yZS5nbG9iYWxSZWdpc3RyeS5hZGQoY2wsIGFyZ3NbMF0pO1xuICAgICAgICByZXR1cm4gY2w7XG4gICAgfTtcbiAgICAvLyBoZWxwZXJzXG4gICAgaW5zdC5pc09wdGlvbmFsID0gKCkgPT4gaW5zdC5zYWZlUGFyc2UodW5kZWZpbmVkKS5zdWNjZXNzO1xuICAgIGluc3QuaXNOdWxsYWJsZSA9ICgpID0+IGluc3Quc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3M7XG4gICAgaW5zdC5hcHBseSA9IChmbikgPT4gZm4oaW5zdCk7XG4gICAgcmV0dXJuIGluc3Q7XG59KTtcbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBfWm9kU3RyaW5nID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIl9ab2RTdHJpbmdcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLnN0cmluZ1Byb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG4gICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICBpbnN0LmZvcm1hdCA9IGJhZy5mb3JtYXQgPz8gbnVsbDtcbiAgICBpbnN0Lm1pbkxlbmd0aCA9IGJhZy5taW5pbXVtID8/IG51bGw7XG4gICAgaW5zdC5tYXhMZW5ndGggPSBiYWcubWF4aW11bSA/PyBudWxsO1xuICAgIC8vIHZhbGlkYXRpb25zXG4gICAgaW5zdC5yZWdleCA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5yZWdleCguLi5hcmdzKSk7XG4gICAgaW5zdC5pbmNsdWRlcyA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5pbmNsdWRlcyguLi5hcmdzKSk7XG4gICAgaW5zdC5zdGFydHNXaXRoID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLnN0YXJ0c1dpdGgoLi4uYXJncykpO1xuICAgIGluc3QuZW5kc1dpdGggPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3MuZW5kc1dpdGgoLi4uYXJncykpO1xuICAgIGluc3QubWluID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLm1pbkxlbmd0aCguLi5hcmdzKSk7XG4gICAgaW5zdC5tYXggPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3MubWF4TGVuZ3RoKC4uLmFyZ3MpKTtcbiAgICBpbnN0Lmxlbmd0aCA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sZW5ndGgoLi4uYXJncykpO1xuICAgIGluc3Qubm9uZW1wdHkgPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3MubWluTGVuZ3RoKDEsIC4uLmFyZ3MpKTtcbiAgICBpbnN0Lmxvd2VyY2FzZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmxvd2VyY2FzZShwYXJhbXMpKTtcbiAgICBpbnN0LnVwcGVyY2FzZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLnVwcGVyY2FzZShwYXJhbXMpKTtcbiAgICAvLyB0cmFuc2Zvcm1zXG4gICAgaW5zdC50cmltID0gKCkgPT4gaW5zdC5jaGVjayhjaGVja3MudHJpbSgpKTtcbiAgICBpbnN0Lm5vcm1hbGl6ZSA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ub3JtYWxpemUoLi4uYXJncykpO1xuICAgIGluc3QudG9Mb3dlckNhc2UgPSAoKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy50b0xvd2VyQ2FzZSgpKTtcbiAgICBpbnN0LnRvVXBwZXJDYXNlID0gKCkgPT4gaW5zdC5jaGVjayhjaGVja3MudG9VcHBlckNhc2UoKSk7XG4gICAgaW5zdC5zbHVnaWZ5ID0gKCkgPT4gaW5zdC5jaGVjayhjaGVja3Muc2x1Z2lmeSgpKTtcbn0pO1xuZXhwb3J0IGNvbnN0IFpvZFN0cmluZyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RTdHJpbmdcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG4gICAgX1pvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5lbWFpbCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZW1haWwoWm9kRW1haWwsIHBhcmFtcykpO1xuICAgIGluc3QudXJsID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl91cmwoWm9kVVJMLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmp3dCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fand0KFpvZEpXVCwgcGFyYW1zKSk7XG4gICAgaW5zdC5lbW9qaSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZW1vamkoWm9kRW1vamksIHBhcmFtcykpO1xuICAgIGluc3QuZ3VpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZ3VpZChab2RHVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LnV1aWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3V1aWQoWm9kVVVJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC51dWlkdjQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3V1aWR2NChab2RVVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LnV1aWR2NiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fdXVpZHY2KFpvZFVVSUQsIHBhcmFtcykpO1xuICAgIGluc3QudXVpZHY3ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl91dWlkdjcoWm9kVVVJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5uYW5vaWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX25hbm9pZChab2ROYW5vSUQsIHBhcmFtcykpO1xuICAgIGluc3QuZ3VpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZ3VpZChab2RHVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LmN1aWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2N1aWQoWm9kQ1VJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5jdWlkMiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fY3VpZDIoWm9kQ1VJRDIsIHBhcmFtcykpO1xuICAgIGluc3QudWxpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fdWxpZChab2RVTElELCBwYXJhbXMpKTtcbiAgICBpbnN0LmJhc2U2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fYmFzZTY0KFpvZEJhc2U2NCwgcGFyYW1zKSk7XG4gICAgaW5zdC5iYXNlNjR1cmwgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2Jhc2U2NHVybChab2RCYXNlNjRVUkwsIHBhcmFtcykpO1xuICAgIGluc3QueGlkID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl94aWQoWm9kWElELCBwYXJhbXMpKTtcbiAgICBpbnN0LmtzdWlkID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9rc3VpZChab2RLU1VJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5pcHY0ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9pcHY0KFpvZElQdjQsIHBhcmFtcykpO1xuICAgIGluc3QuaXB2NiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5faXB2Nihab2RJUHY2LCBwYXJhbXMpKTtcbiAgICBpbnN0LmNpZHJ2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fY2lkcnY0KFpvZENJRFJ2NCwgcGFyYW1zKSk7XG4gICAgaW5zdC5jaWRydjYgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2NpZHJ2Nihab2RDSURSdjYsIHBhcmFtcykpO1xuICAgIGluc3QuZTE2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZTE2NChab2RFMTY0LCBwYXJhbXMpKTtcbiAgICAvLyBpc29cbiAgICBpbnN0LmRhdGV0aW1lID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpc28uZGF0ZXRpbWUocGFyYW1zKSk7XG4gICAgaW5zdC5kYXRlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpc28uZGF0ZShwYXJhbXMpKTtcbiAgICBpbnN0LnRpbWUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGlzby50aW1lKHBhcmFtcykpO1xuICAgIGluc3QuZHVyYXRpb24gPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGlzby5kdXJhdGlvbihwYXJhbXMpKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZyhwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fc3RyaW5nKFpvZFN0cmluZywgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RTdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIF9ab2RTdHJpbmcuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgWm9kRW1haWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kRW1haWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kRW1haWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlbWFpbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZW1haWwoWm9kRW1haWwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kR1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RHVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEdVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBndWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9ndWlkKFpvZEdVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kVVVJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZFVVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1dWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkKFpvZFVVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gdXVpZHY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkdjQoWm9kVVVJRCwgcGFyYW1zKTtcbn1cbi8vIFpvZFVVSUR2NlxuZXhwb3J0IGZ1bmN0aW9uIHV1aWR2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdXVpZHY2KFpvZFVVSUQsIHBhcmFtcyk7XG59XG4vLyBab2RVVUlEdjdcbmV4cG9ydCBmdW5jdGlvbiB1dWlkdjcocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3V1aWR2Nyhab2RVVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVSTCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVUkxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kVVJMLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdXJsKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91cmwoWm9kVVJMLCBwYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGh0dHBVcmwocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VybChab2RVUkwsIHtcbiAgICAgICAgcHJvdG9jb2w6IC9eaHR0cHM/JC8sXG4gICAgICAgIGhvc3RuYW1lOiBjb3JlLnJlZ2V4ZXMuZG9tYWluLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZEVtb2ppID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEVtb2ppXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEVtb2ppLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZW1vamkocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Vtb2ppKFpvZEVtb2ppLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE5hbm9JRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROYW5vSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kTmFub0lELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uYW5vaWQoWm9kTmFub0lELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQ1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RDVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY3VpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VpZChab2RDVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENVSUQyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZENVSUQyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZENVSUQyLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY3VpZDIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2N1aWQyKFpvZENVSUQyLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVMSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVUxJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RVTElELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdWxpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdWxpZChab2RVTElELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFhJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RYSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kWElELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24geGlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl94aWQoWm9kWElELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEtTVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEtTVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEtTVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24ga3N1aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2tzdWlkKFpvZEtTVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElQdjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVB2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RJUHY0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaXB2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXB2NChab2RJUHY0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1BQyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNQUNcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kTUFDLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbWFjKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9tYWMoWm9kTUFDLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElQdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVB2NlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RJUHY2LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaXB2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXB2Nihab2RJUHY2LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENJRFJ2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDSURSdjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENJRFJ2NC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGNpZHJ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY2lkcnY0KFpvZENJRFJ2NCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RDSURSdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQ0lEUnY2XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDSURSdjYuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBjaWRydjYocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NpZHJ2Nihab2RDSURSdjYsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQmFzZTY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEJhc2U2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RCYXNlNjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jhc2U2NChab2RCYXNlNjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQmFzZTY0VVJMID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEJhc2U2NFVSTFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RCYXNlNjRVUkwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjR1cmwocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jhc2U2NHVybChab2RCYXNlNjRVUkwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kRTE2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RFMTY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEUxNjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlMTY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9lMTY0KFpvZEUxNjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kSldUID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEpXVFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RKV1QuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBqd3QocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2p3dChab2RKV1QsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQ3VzdG9tU3RyaW5nRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RDdXN0b21TdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdGb3JtYXQoZm9ybWF0LCBmbk9yUmVnZXgsIF9wYXJhbXMgPSB7fSkge1xuICAgIHJldHVybiBjb3JlLl9zdHJpbmdGb3JtYXQoWm9kQ3VzdG9tU3RyaW5nRm9ybWF0LCBmb3JtYXQsIGZuT3JSZWdleCwgX3BhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaG9zdG5hbWUoX3BhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9zdHJpbmdGb3JtYXQoWm9kQ3VzdG9tU3RyaW5nRm9ybWF0LCBcImhvc3RuYW1lXCIsIGNvcmUucmVnZXhlcy5ob3N0bmFtZSwgX3BhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaGV4KF9wYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fc3RyaW5nRm9ybWF0KFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCwgXCJoZXhcIiwgY29yZS5yZWdleGVzLmhleCwgX3BhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaGFzaChhbGcsIHBhcmFtcykge1xuICAgIGNvbnN0IGVuYyA9IHBhcmFtcz8uZW5jID8/IFwiaGV4XCI7XG4gICAgY29uc3QgZm9ybWF0ID0gYCR7YWxnfV8ke2VuY31gO1xuICAgIGNvbnN0IHJlZ2V4ID0gY29yZS5yZWdleGVzW2Zvcm1hdF07XG4gICAgaWYgKCFyZWdleClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7Zm9ybWF0fWApO1xuICAgIHJldHVybiBjb3JlLl9zdHJpbmdGb3JtYXQoWm9kQ3VzdG9tU3RyaW5nRm9ybWF0LCBmb3JtYXQsIHJlZ2V4LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE51bWJlciA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROdW1iZXJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bWJlci5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLm51bWJlclByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG4gICAgaW5zdC5ndCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndCh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5ndGUgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1pbiA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QubHQgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHQodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QubHRlID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5tYXggPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHRlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0LmludCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soaW50KHBhcmFtcykpO1xuICAgIGluc3Quc2FmZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soaW50KHBhcmFtcykpO1xuICAgIGluc3QucG9zaXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndCgwLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm5vbm5lZ2F0aXZlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKDAsIHBhcmFtcykpO1xuICAgIGluc3QubmVnYXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdCgwLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm5vbnBvc2l0aXZlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHRlKDAsIHBhcmFtcykpO1xuICAgIGluc3QubXVsdGlwbGVPZiA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5tdWx0aXBsZU9mKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0LnN0ZXAgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubXVsdGlwbGVPZih2YWx1ZSwgcGFyYW1zKSk7XG4gICAgLy8gaW5zdC5maW5pdGUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuZmluaXRlKHBhcmFtcykpO1xuICAgIGluc3QuZmluaXRlID0gKCkgPT4gaW5zdDtcbiAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgIGluc3QubWluVmFsdWUgPVxuICAgICAgICBNYXRoLm1heChiYWcubWluaW11bSA/PyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksIGJhZy5leGNsdXNpdmVNaW5pbXVtID8/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSkgPz8gbnVsbDtcbiAgICBpbnN0Lm1heFZhbHVlID1cbiAgICAgICAgTWF0aC5taW4oYmFnLm1heGltdW0gPz8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBiYWcuZXhjbHVzaXZlTWF4aW11bSA/PyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpID8/IG51bGw7XG4gICAgaW5zdC5pc0ludCA9IChiYWcuZm9ybWF0ID8/IFwiXCIpLmluY2x1ZGVzKFwiaW50XCIpIHx8IE51bWJlci5pc1NhZmVJbnRlZ2VyKGJhZy5tdWx0aXBsZU9mID8/IDAuNSk7XG4gICAgaW5zdC5pc0Zpbml0ZSA9IHRydWU7XG4gICAgaW5zdC5mb3JtYXQgPSBiYWcuZm9ybWF0ID8/IG51bGw7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBudW1iZXIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX251bWJlcihab2ROdW1iZXIsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTnVtYmVyRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE51bWJlckZvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVtYmVyRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2ROdW1iZXIuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaW50KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pbnQoWm9kTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0MzIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Zsb2F0MzIoWm9kTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0NjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Zsb2F0NjQoWm9kTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGludDMyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pbnQzMihab2ROdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gdWludDMyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91aW50MzIoWm9kTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEJvb2xlYW4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQm9vbGVhblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQm9vbGVhbi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLmJvb2xlYW5Qcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gYm9vbGVhbihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYm9vbGVhbihab2RCb29sZWFuLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEJpZ0ludCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RCaWdJbnRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEJpZ0ludC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLmJpZ2ludFByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG4gICAgaW5zdC5ndGUgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1pbiA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QuZ3QgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3QodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QuZ3RlID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5taW4gPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmx0ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0KHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmx0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QubWF4ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5wb3NpdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0KEJpZ0ludCgwKSwgcGFyYW1zKSk7XG4gICAgaW5zdC5uZWdhdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0KEJpZ0ludCgwKSwgcGFyYW1zKSk7XG4gICAgaW5zdC5ub25wb3NpdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0ZShCaWdJbnQoMCksIHBhcmFtcykpO1xuICAgIGluc3Qubm9ubmVnYXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUoQmlnSW50KDApLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm11bHRpcGxlT2YgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubXVsdGlwbGVPZih2YWx1ZSwgcGFyYW1zKSk7XG4gICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICBpbnN0Lm1pblZhbHVlID0gYmFnLm1pbmltdW0gPz8gbnVsbDtcbiAgICBpbnN0Lm1heFZhbHVlID0gYmFnLm1heGltdW0gPz8gbnVsbDtcbiAgICBpbnN0LmZvcm1hdCA9IGJhZy5mb3JtYXQgPz8gbnVsbDtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJpZ2ludChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYmlnaW50KFpvZEJpZ0ludCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RCaWdJbnRGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQmlnSW50Rm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCaWdJbnRGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZEJpZ0ludC5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vIGludDY0XG5leHBvcnQgZnVuY3Rpb24gaW50NjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ludDY0KFpvZEJpZ0ludEZvcm1hdCwgcGFyYW1zKTtcbn1cbi8vIHVpbnQ2NFxuZXhwb3J0IGZ1bmN0aW9uIHVpbnQ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdWludDY0KFpvZEJpZ0ludEZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RTeW1ib2wgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU3ltYm9sXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTeW1ib2wuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5zeW1ib2xQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc3ltYm9sKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9zeW1ib2woWm9kU3ltYm9sLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVuZGVmaW5lZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVbmRlZmluZWRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVuZGVmaW5lZC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLnVuZGVmaW5lZFByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG59KTtcbmZ1bmN0aW9uIF91bmRlZmluZWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VuZGVmaW5lZChab2RVbmRlZmluZWQsIHBhcmFtcyk7XG59XG5leHBvcnQgeyBfdW5kZWZpbmVkIGFzIHVuZGVmaW5lZCB9O1xuZXhwb3J0IGNvbnN0IFpvZE51bGwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTnVsbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVsbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLm51bGxQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xufSk7XG5mdW5jdGlvbiBfbnVsbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbnVsbChab2ROdWxsLCBwYXJhbXMpO1xufVxuZXhwb3J0IHsgX251bGwgYXMgbnVsbCB9O1xuZXhwb3J0IGNvbnN0IFpvZEFueSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RBbnlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEFueS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLmFueVByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBhbnkoKSB7XG4gICAgcmV0dXJuIGNvcmUuX2FueShab2RBbnkpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVua25vd24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVW5rbm93blwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVW5rbm93bi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLnVua25vd25Qcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdW5rbm93bigpIHtcbiAgICByZXR1cm4gY29yZS5fdW5rbm93bihab2RVbmtub3duKTtcbn1cbmV4cG9ydCBjb25zdCBab2ROZXZlciA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROZXZlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTmV2ZXIuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5uZXZlclByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBuZXZlcihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbmV2ZXIoWm9kTmV2ZXIsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kVm9pZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RWb2lkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RWb2lkLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMudm9pZFByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG59KTtcbmZ1bmN0aW9uIF92b2lkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl92b2lkKFpvZFZvaWQsIHBhcmFtcyk7XG59XG5leHBvcnQgeyBfdm9pZCBhcyB2b2lkIH07XG5leHBvcnQgY29uc3QgWm9kRGF0ZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2REYXRlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2REYXRlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMuZGF0ZVByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG4gICAgaW5zdC5taW4gPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGNvbnN0IGMgPSBpbnN0Ll96b2QuYmFnO1xuICAgIGluc3QubWluRGF0ZSA9IGMubWluaW11bSA/IG5ldyBEYXRlKGMubWluaW11bSkgOiBudWxsO1xuICAgIGluc3QubWF4RGF0ZSA9IGMubWF4aW11bSA/IG5ldyBEYXRlKGMubWF4aW11bSkgOiBudWxsO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZGF0ZShab2REYXRlLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEFycmF5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEFycmF5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RBcnJheS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLmFycmF5UHJvY2Vzc29yKGluc3QsIGN0eCwganNvbiwgcGFyYW1zKTtcbiAgICBpbnN0LmVsZW1lbnQgPSBkZWYuZWxlbWVudDtcbiAgICBpbnN0Lm1pbiA9IChtaW5MZW5ndGgsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubWluTGVuZ3RoKG1pbkxlbmd0aCwgcGFyYW1zKSk7XG4gICAgaW5zdC5ub25lbXB0eSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLm1pbkxlbmd0aCgxLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9IChtYXhMZW5ndGgsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubWF4TGVuZ3RoKG1heExlbmd0aCwgcGFyYW1zKSk7XG4gICAgaW5zdC5sZW5ndGggPSAobGVuLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmxlbmd0aChsZW4sIHBhcmFtcykpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5lbGVtZW50O1xufSk7XG5leHBvcnQgZnVuY3Rpb24gYXJyYXkoZWxlbWVudCwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2FycmF5KFpvZEFycmF5LCBlbGVtZW50LCBwYXJhbXMpO1xufVxuLy8gLmtleW9mXG5leHBvcnQgZnVuY3Rpb24ga2V5b2Yoc2NoZW1hKSB7XG4gICAgY29uc3Qgc2hhcGUgPSBzY2hlbWEuX3pvZC5kZWYuc2hhcGU7XG4gICAgcmV0dXJuIF9lbnVtKE9iamVjdC5rZXlzKHNoYXBlKSk7XG59XG5leHBvcnQgY29uc3QgWm9kT2JqZWN0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE9iamVjdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kT2JqZWN0SklULmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMub2JqZWN0UHJvY2Vzc29yKGluc3QsIGN0eCwganNvbiwgcGFyYW1zKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdCwgXCJzaGFwZVwiLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiBkZWYuc2hhcGU7XG4gICAgfSk7XG4gICAgaW5zdC5rZXlvZiA9ICgpID0+IF9lbnVtKE9iamVjdC5rZXlzKGluc3QuX3pvZC5kZWYuc2hhcGUpKTtcbiAgICBpbnN0LmNhdGNoYWxsID0gKGNhdGNoYWxsKSA9PiBpbnN0LmNsb25lKHsgLi4uaW5zdC5fem9kLmRlZiwgY2F0Y2hhbGw6IGNhdGNoYWxsIH0pO1xuICAgIGluc3QucGFzc3Rocm91Z2ggPSAoKSA9PiBpbnN0LmNsb25lKHsgLi4uaW5zdC5fem9kLmRlZiwgY2F0Y2hhbGw6IHVua25vd24oKSB9KTtcbiAgICBpbnN0Lmxvb3NlID0gKCkgPT4gaW5zdC5jbG9uZSh7IC4uLmluc3QuX3pvZC5kZWYsIGNhdGNoYWxsOiB1bmtub3duKCkgfSk7XG4gICAgaW5zdC5zdHJpY3QgPSAoKSA9PiBpbnN0LmNsb25lKHsgLi4uaW5zdC5fem9kLmRlZiwgY2F0Y2hhbGw6IG5ldmVyKCkgfSk7XG4gICAgaW5zdC5zdHJpcCA9ICgpID0+IGluc3QuY2xvbmUoeyAuLi5pbnN0Ll96b2QuZGVmLCBjYXRjaGFsbDogdW5kZWZpbmVkIH0pO1xuICAgIGluc3QuZXh0ZW5kID0gKGluY29taW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB1dGlsLmV4dGVuZChpbnN0LCBpbmNvbWluZyk7XG4gICAgfTtcbiAgICBpbnN0LnNhZmVFeHRlbmQgPSAoaW5jb21pbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWwuc2FmZUV4dGVuZChpbnN0LCBpbmNvbWluZyk7XG4gICAgfTtcbiAgICBpbnN0Lm1lcmdlID0gKG90aGVyKSA9PiB1dGlsLm1lcmdlKGluc3QsIG90aGVyKTtcbiAgICBpbnN0LnBpY2sgPSAobWFzaykgPT4gdXRpbC5waWNrKGluc3QsIG1hc2spO1xuICAgIGluc3Qub21pdCA9IChtYXNrKSA9PiB1dGlsLm9taXQoaW5zdCwgbWFzayk7XG4gICAgaW5zdC5wYXJ0aWFsID0gKC4uLmFyZ3MpID0+IHV0aWwucGFydGlhbChab2RPcHRpb25hbCwgaW5zdCwgYXJnc1swXSk7XG4gICAgaW5zdC5yZXF1aXJlZCA9ICguLi5hcmdzKSA9PiB1dGlsLnJlcXVpcmVkKFpvZE5vbk9wdGlvbmFsLCBpbnN0LCBhcmdzWzBdKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdChzaGFwZSwgcGFyYW1zKSB7XG4gICAgY29uc3QgZGVmID0ge1xuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICBzaGFwZTogc2hhcGUgPz8ge30sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdChkZWYpO1xufVxuLy8gc3RyaWN0T2JqZWN0XG5leHBvcnQgZnVuY3Rpb24gc3RyaWN0T2JqZWN0KHNoYXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBjYXRjaGFsbDogbmV2ZXIoKSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIGxvb3NlT2JqZWN0XG5leHBvcnQgZnVuY3Rpb24gbG9vc2VPYmplY3Qoc2hhcGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgc2hhcGUsXG4gICAgICAgIGNhdGNoYWxsOiB1bmtub3duKCksXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kVW5pb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVuaW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMudW5pb25Qcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3Qub3B0aW9ucyA9IGRlZi5vcHRpb25zO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdW5pb24ob3B0aW9ucywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmlvbih7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RYb3IgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kWG9yXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBab2RVbmlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kWG9yLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMudW5pb25Qcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3Qub3B0aW9ucyA9IGRlZi5vcHRpb25zO1xufSk7XG4vKiogQ3JlYXRlcyBhbiBleGNsdXNpdmUgdW5pb24gKFhPUikgd2hlcmUgZXhhY3RseSBvbmUgb3B0aW9uIG11c3QgbWF0Y2guXG4gKiBVbmxpa2UgcmVndWxhciB1bmlvbnMgdGhhdCBzdWNjZWVkIHdoZW4gYW55IG9wdGlvbiBtYXRjaGVzLCB4b3IgZmFpbHMgaWZcbiAqIHplcm8gb3IgbW9yZSB0aGFuIG9uZSBvcHRpb24gbWF0Y2hlcyB0aGUgaW5wdXQuICovXG5leHBvcnQgZnVuY3Rpb24geG9yKG9wdGlvbnMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kWG9yKHtcbiAgICAgICAgdHlwZTogXCJ1bmlvblwiLFxuICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZERpc2NyaW1pbmF0ZWRVbmlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2REaXNjcmltaW5hdGVkVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIFpvZFVuaW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2REaXNjcmltaW5hdGVkVW5pb24uaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGlzY3JpbWluYXRlZFVuaW9uKGRpc2NyaW1pbmF0b3IsIG9wdGlvbnMsIHBhcmFtcykge1xuICAgIC8vIGNvbnN0IFtvcHRpb25zLCBwYXJhbXNdID0gYXJncztcbiAgICByZXR1cm4gbmV3IFpvZERpc2NyaW1pbmF0ZWRVbmlvbih7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZGlzY3JpbWluYXRvcixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RJbnRlcnNlY3Rpb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSW50ZXJzZWN0aW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJbnRlcnNlY3Rpb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5pbnRlcnNlY3Rpb25Qcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaW50ZXJzZWN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gICAgcmV0dXJuIG5ldyBab2RJbnRlcnNlY3Rpb24oe1xuICAgICAgICB0eXBlOiBcImludGVyc2VjdGlvblwiLFxuICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICByaWdodDogcmlnaHQsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kVHVwbGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVHVwbGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFR1cGxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMudHVwbGVQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3QucmVzdCA9IChyZXN0KSA9PiBpbnN0LmNsb25lKHtcbiAgICAgICAgLi4uaW5zdC5fem9kLmRlZixcbiAgICAgICAgcmVzdDogcmVzdCxcbiAgICB9KTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHR1cGxlKGl0ZW1zLCBfcGFyYW1zT3JSZXN0LCBfcGFyYW1zKSB7XG4gICAgY29uc3QgaGFzUmVzdCA9IF9wYXJhbXNPclJlc3QgaW5zdGFuY2VvZiBjb3JlLiRab2RUeXBlO1xuICAgIGNvbnN0IHBhcmFtcyA9IGhhc1Jlc3QgPyBfcGFyYW1zIDogX3BhcmFtc09yUmVzdDtcbiAgICBjb25zdCByZXN0ID0gaGFzUmVzdCA/IF9wYXJhbXNPclJlc3QgOiBudWxsO1xuICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xuICAgICAgICB0eXBlOiBcInR1cGxlXCIsXG4gICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgcmVzdCxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RSZWNvcmQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUmVjb3JkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RSZWNvcmQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5yZWNvcmRQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3Qua2V5VHlwZSA9IGRlZi5rZXlUeXBlO1xuICAgIGluc3QudmFsdWVUeXBlID0gZGVmLnZhbHVlVHlwZTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHJlY29yZChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kUmVjb3JkKHtcbiAgICAgICAgdHlwZTogXCJyZWNvcmRcIixcbiAgICAgICAga2V5VHlwZSxcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyB0eXBlIGFsa3NqZiA9IGNvcmUub3V0cHV0PGNvcmUuJFpvZFJlY29yZEtleT47XG5leHBvcnQgZnVuY3Rpb24gcGFydGlhbFJlY29yZChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIGNvbnN0IGsgPSBjb3JlLmNsb25lKGtleVR5cGUpO1xuICAgIGsuX3pvZC52YWx1ZXMgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG5ldyBab2RSZWNvcmQoe1xuICAgICAgICB0eXBlOiBcInJlY29yZFwiLFxuICAgICAgICBrZXlUeXBlOiBrLFxuICAgICAgICB2YWx1ZVR5cGU6IHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsb29zZVJlY29yZChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kUmVjb3JkKHtcbiAgICAgICAgdHlwZTogXCJyZWNvcmRcIixcbiAgICAgICAga2V5VHlwZSxcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIG1vZGU6IFwibG9vc2VcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNYXAgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWFwXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RNYXAuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5tYXBQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3Qua2V5VHlwZSA9IGRlZi5rZXlUeXBlO1xuICAgIGluc3QudmFsdWVUeXBlID0gZGVmLnZhbHVlVHlwZTtcbiAgICBpbnN0Lm1pbiA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNvcmUuX21pblNpemUoLi4uYXJncykpO1xuICAgIGluc3Qubm9uZW1wdHkgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX21pblNpemUoMSwgcGFyYW1zKSk7XG4gICAgaW5zdC5tYXggPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjb3JlLl9tYXhTaXplKC4uLmFyZ3MpKTtcbiAgICBpbnN0LnNpemUgPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjb3JlLl9zaXplKC4uLmFyZ3MpKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG1hcChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWFwKHtcbiAgICAgICAgdHlwZTogXCJtYXBcIixcbiAgICAgICAga2V5VHlwZToga2V5VHlwZSxcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kU2V0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFNldFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU2V0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMuc2V0UHJvY2Vzc29yKGluc3QsIGN0eCwganNvbiwgcGFyYW1zKTtcbiAgICBpbnN0Lm1pbiA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNvcmUuX21pblNpemUoLi4uYXJncykpO1xuICAgIGluc3Qubm9uZW1wdHkgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX21pblNpemUoMSwgcGFyYW1zKSk7XG4gICAgaW5zdC5tYXggPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjb3JlLl9tYXhTaXplKC4uLmFyZ3MpKTtcbiAgICBpbnN0LnNpemUgPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjb3JlLl9zaXplKC4uLmFyZ3MpKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHNldCh2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kU2V0KHtcbiAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kRW51bSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RFbnVtXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RFbnVtLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMuZW51bVByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG4gICAgaW5zdC5lbnVtID0gZGVmLmVudHJpZXM7XG4gICAgaW5zdC5vcHRpb25zID0gT2JqZWN0LnZhbHVlcyhkZWYuZW50cmllcyk7XG4gICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZGVmLmVudHJpZXMpKTtcbiAgICBpbnN0LmV4dHJhY3QgPSAodmFsdWVzLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgbmV3RW50cmllcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgaWYgKGtleXMuaGFzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIG5ld0VudHJpZXNbdmFsdWVdID0gZGVmLmVudHJpZXNbdmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgS2V5ICR7dmFsdWV9IG5vdCBmb3VuZCBpbiBlbnVtYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RFbnVtKHtcbiAgICAgICAgICAgIC4uLmRlZixcbiAgICAgICAgICAgIGNoZWNrczogW10sXG4gICAgICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICAgICAgZW50cmllczogbmV3RW50cmllcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBpbnN0LmV4Y2x1ZGUgPSAodmFsdWVzLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgbmV3RW50cmllcyA9IHsgLi4uZGVmLmVudHJpZXMgfTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGlmIChrZXlzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3RW50cmllc1t2YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHt2YWx1ZX0gbm90IGZvdW5kIGluIGVudW1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZEVudW0oe1xuICAgICAgICAgICAgLi4uZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgICAgICBlbnRyaWVzOiBuZXdFbnRyaWVzLFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBfZW51bSh2YWx1ZXMsIHBhcmFtcykge1xuICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlcykgPyBPYmplY3QuZnJvbUVudHJpZXModmFsdWVzLm1hcCgodikgPT4gW3YsIHZdKSkgOiB2YWx1ZXM7XG4gICAgcmV0dXJuIG5ldyBab2RFbnVtKHtcbiAgICAgICAgdHlwZTogXCJlbnVtXCIsXG4gICAgICAgIGVudHJpZXMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgeyBfZW51bSBhcyBlbnVtIH07XG4vKiogQGRlcHJlY2F0ZWQgVGhpcyBBUEkgaGFzIGJlZW4gbWVyZ2VkIGludG8gYHouZW51bSgpYC4gVXNlIGB6LmVudW0oKWAgaW5zdGVhZC5cbiAqXG4gKiBgYGB0c1xuICogZW51bSBDb2xvcnMgeyByZWQsIGdyZWVuLCBibHVlIH1cbiAqIHouZW51bShDb2xvcnMpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYXRpdmVFbnVtKGVudHJpZXMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kRW51bSh7XG4gICAgICAgIHR5cGU6IFwiZW51bVwiLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZExpdGVyYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTGl0ZXJhbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTGl0ZXJhbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLmxpdGVyYWxQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3QudmFsdWVzID0gbmV3IFNldChkZWYudmFsdWVzKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJ2YWx1ZVwiLCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIGlmIChkZWYudmFsdWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZWYudmFsdWVzWzBdO1xuICAgICAgICB9LFxuICAgIH0pO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RMaXRlcmFsKHtcbiAgICAgICAgdHlwZTogXCJsaXRlcmFsXCIsXG4gICAgICAgIHZhbHVlczogQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kRmlsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RGaWxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RGaWxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMuZmlsZVByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG4gICAgaW5zdC5taW4gPSAoc2l6ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX21pblNpemUoc2l6ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5tYXggPSAoc2l6ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX21heFNpemUoc2l6ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5taW1lID0gKHR5cGVzLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fbWltZShBcnJheS5pc0FycmF5KHR5cGVzKSA/IHR5cGVzIDogW3R5cGVzXSwgcGFyYW1zKSk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBmaWxlKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9maWxlKFpvZEZpbGUsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kVHJhbnNmb3JtID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFRyYW5zZm9ybVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVHJhbnNmb3JtLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMudHJhbnNmb3JtUHJvY2Vzc29yKGluc3QsIGN0eCwganNvbiwgcGFyYW1zKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBpZiAoX2N0eC5kaXJlY3Rpb24gPT09IFwiYmFja3dhcmRcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEVuY29kZUVycm9yKGluc3QuY29uc3RydWN0b3IubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC5hZGRJc3N1ZSA9IChpc3N1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpc3N1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2godXRpbC5pc3N1ZShpc3N1ZSwgcGF5bG9hZC52YWx1ZSwgZGVmKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgWm9kIDMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZhdGFsKVxuICAgICAgICAgICAgICAgICAgICBfaXNzdWUuY29udGludWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuY29kZSA/PyAoX2lzc3VlLmNvZGUgPSBcImN1c3RvbVwiKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuaW5wdXQgPz8gKF9pc3N1ZS5pbnB1dCA9IHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIF9pc3N1ZS5pbnN0ID8/IChfaXNzdWUuaW5zdCA9IGluc3QpO1xuICAgICAgICAgICAgICAgIC8vIF9pc3N1ZS5jb250aW51ZSA/Pz0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHV0aWwuaXNzdWUoX2lzc3VlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IGRlZi50cmFuc2Zvcm0ocGF5bG9hZC52YWx1ZSwgcGF5bG9hZCk7XG4gICAgICAgIGlmIChvdXRwdXQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0LnRoZW4oKG91dHB1dCkgPT4ge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBvdXRwdXQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0gb3V0cHV0O1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgcmV0dXJuIG5ldyBab2RUcmFuc2Zvcm0oe1xuICAgICAgICB0eXBlOiBcInRyYW5zZm9ybVwiLFxuICAgICAgICB0cmFuc2Zvcm06IGZuLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE9wdGlvbmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RPcHRpb25hbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLm9wdGlvbmFsUHJvY2Vzc29yKGluc3QsIGN0eCwganNvbiwgcGFyYW1zKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWwoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RPcHRpb25hbCh7XG4gICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kRXhhY3RPcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RFeGFjdE9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RFeGFjdE9wdGlvbmFsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMub3B0aW9uYWxQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBleGFjdE9wdGlvbmFsKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kRXhhY3RPcHRpb25hbCh7XG4gICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTnVsbGFibGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTnVsbGFibGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bGxhYmxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMubnVsbGFibGVQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBudWxsYWJsZShpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE51bGxhYmxlKHtcbiAgICAgICAgdHlwZTogXCJudWxsYWJsZVwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbi8vIG51bGxpc2hcbmV4cG9ydCBmdW5jdGlvbiBudWxsaXNoKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBvcHRpb25hbChudWxsYWJsZShpbm5lclR5cGUpKTtcbn1cbmV4cG9ydCBjb25zdCBab2REZWZhdWx0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZERlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZERlZmF1bHQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5kZWZhdWx0UHJvY2Vzc29yKGluc3QsIGN0eCwganNvbiwgcGFyYW1zKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xuICAgIGluc3QucmVtb3ZlRGVmYXVsdCA9IGluc3QudW53cmFwO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gX2RlZmF1bHQoaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZERlZmF1bHQoe1xuICAgICAgICB0eXBlOiBcImRlZmF1bHRcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gZGVmYXVsdFZhbHVlKCkgOiB1dGlsLnNoYWxsb3dDbG9uZShkZWZhdWx0VmFsdWUpO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFByZWZhdWx0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFByZWZhdWx0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RQcmVmYXVsdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLnByZWZhdWx0UHJvY2Vzc29yKGluc3QsIGN0eCwganNvbiwgcGFyYW1zKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcHJlZmF1bHQoaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZFByZWZhdWx0KHtcbiAgICAgICAgdHlwZTogXCJwcmVmYXVsdFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgZ2V0IGRlZmF1bHRWYWx1ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBkZWZhdWx0VmFsdWUoKSA6IHV0aWwuc2hhbGxvd0Nsb25lKGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTm9uT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTm9uT3B0aW9uYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE5vbk9wdGlvbmFsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEgPSAoY3R4LCBqc29uLCBwYXJhbXMpID0+IHByb2Nlc3NvcnMubm9ub3B0aW9uYWxQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBub25vcHRpb25hbChpbm5lclR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTm9uT3B0aW9uYWwoe1xuICAgICAgICB0eXBlOiBcIm5vbm9wdGlvbmFsXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFN1Y2Nlc3MgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU3VjY2Vzc1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3VjY2Vzcy5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLnN1Y2Nlc3NQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzdWNjZXNzKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kU3VjY2Vzcyh7XG4gICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RDYXRjaCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDYXRjaFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ2F0Y2guaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5jYXRjaFByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmlubmVyVHlwZTtcbiAgICBpbnN0LnJlbW92ZUNhdGNoID0gaW5zdC51bndyYXA7XG59KTtcbmZ1bmN0aW9uIF9jYXRjaChpbm5lclR5cGUsIGNhdGNoVmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZENhdGNoKHtcbiAgICAgICAgdHlwZTogXCJjYXRjaFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgY2F0Y2hWYWx1ZTogKHR5cGVvZiBjYXRjaFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBjYXRjaFZhbHVlIDogKCkgPT4gY2F0Y2hWYWx1ZSksXG4gICAgfSk7XG59XG5leHBvcnQgeyBfY2F0Y2ggYXMgY2F0Y2ggfTtcbmV4cG9ydCBjb25zdCBab2ROYU4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTmFOXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROYU4uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5uYW5Qcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbmFuKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uYW4oWm9kTmFOLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFBpcGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUGlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUGlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLnBpcGVQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3QuaW4gPSBkZWYuaW47XG4gICAgaW5zdC5vdXQgPSBkZWYub3V0O1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcGlwZShpbl8sIG91dCkge1xuICAgIHJldHVybiBuZXcgWm9kUGlwZSh7XG4gICAgICAgIHR5cGU6IFwicGlwZVwiLFxuICAgICAgICBpbjogaW5fLFxuICAgICAgICBvdXQ6IG91dCxcbiAgICAgICAgLy8gLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RDb2RlYyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDb2RlY1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgWm9kUGlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kQ29kZWMuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY29kZWMoaW5fLCBvdXQsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kQ29kZWMoe1xuICAgICAgICB0eXBlOiBcInBpcGVcIixcbiAgICAgICAgaW46IGluXyxcbiAgICAgICAgb3V0OiBvdXQsXG4gICAgICAgIHRyYW5zZm9ybTogcGFyYW1zLmRlY29kZSxcbiAgICAgICAgcmV2ZXJzZVRyYW5zZm9ybTogcGFyYW1zLmVuY29kZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RSZWFkb25seSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RSZWFkb25seVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUmVhZG9ubHkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5yZWFkb25seVByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmlubmVyVHlwZTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRvbmx5KGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kUmVhZG9ubHkoe1xuICAgICAgICB0eXBlOiBcInJlYWRvbmx5XCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFRlbXBsYXRlTGl0ZXJhbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RUZW1wbGF0ZUxpdGVyYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFRlbXBsYXRlTGl0ZXJhbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLnRlbXBsYXRlTGl0ZXJhbFByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZUxpdGVyYWwocGFydHMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kVGVtcGxhdGVMaXRlcmFsKHtcbiAgICAgICAgdHlwZTogXCJ0ZW1wbGF0ZV9saXRlcmFsXCIsXG4gICAgICAgIHBhcnRzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZExhenkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTGF6eVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTGF6eS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLmxhenlQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5nZXR0ZXIoKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGxhenkoZ2V0dGVyKSB7XG4gICAgcmV0dXJuIG5ldyBab2RMYXp5KHtcbiAgICAgICAgdHlwZTogXCJsYXp5XCIsXG4gICAgICAgIGdldHRlcjogZ2V0dGVyLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFByb21pc2UgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUHJvbWlzZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUHJvbWlzZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLnByb21pc2VQcm9jZXNzb3IoaW5zdCwgY3R4LCBqc29uLCBwYXJhbXMpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNlKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kUHJvbWlzZSh7XG4gICAgICAgIHR5cGU6IFwicHJvbWlzZVwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RGdW5jdGlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RGdW5jdGlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRnVuY3Rpb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSA9IChjdHgsIGpzb24sIHBhcmFtcykgPT4gcHJvY2Vzc29ycy5mdW5jdGlvblByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBfZnVuY3Rpb24ocGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RGdW5jdGlvbih7XG4gICAgICAgIHR5cGU6IFwiZnVuY3Rpb25cIixcbiAgICAgICAgaW5wdXQ6IEFycmF5LmlzQXJyYXkocGFyYW1zPy5pbnB1dCkgPyB0dXBsZShwYXJhbXM/LmlucHV0KSA6IChwYXJhbXM/LmlucHV0ID8/IGFycmF5KHVua25vd24oKSkpLFxuICAgICAgICBvdXRwdXQ6IHBhcmFtcz8ub3V0cHV0ID8/IHVua25vd24oKSxcbiAgICB9KTtcbn1cbmV4cG9ydCB7IF9mdW5jdGlvbiBhcyBmdW5jdGlvbiB9O1xuZXhwb3J0IGNvbnN0IFpvZEN1c3RvbSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDdXN0b21cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEN1c3RvbS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hID0gKGN0eCwganNvbiwgcGFyYW1zKSA9PiBwcm9jZXNzb3JzLmN1c3RvbVByb2Nlc3NvcihpbnN0LCBjdHgsIGpzb24sIHBhcmFtcyk7XG59KTtcbi8vIGN1c3RvbSBjaGVja3NcbmV4cG9ydCBmdW5jdGlvbiBjaGVjayhmbikge1xuICAgIGNvbnN0IGNoID0gbmV3IGNvcmUuJFpvZENoZWNrKHtcbiAgICAgICAgY2hlY2s6IFwiY3VzdG9tXCIsXG4gICAgICAgIC8vIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gICAgY2guX3pvZC5jaGVjayA9IGZuO1xuICAgIHJldHVybiBjaDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjdXN0b20oZm4sIF9wYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VzdG9tKFpvZEN1c3RvbSwgZm4gPz8gKCgpID0+IHRydWUpLCBfcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZWZpbmUoZm4sIF9wYXJhbXMgPSB7fSkge1xuICAgIHJldHVybiBjb3JlLl9yZWZpbmUoWm9kQ3VzdG9tLCBmbiwgX3BhcmFtcyk7XG59XG4vLyBzdXBlclJlZmluZVxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyUmVmaW5lKGZuKSB7XG4gICAgcmV0dXJuIGNvcmUuX3N1cGVyUmVmaW5lKGZuKTtcbn1cbi8vIFJlLWV4cG9ydCBkZXNjcmliZSBhbmQgbWV0YSBmcm9tIGNvcmVcbmV4cG9ydCBjb25zdCBkZXNjcmliZSA9IGNvcmUuZGVzY3JpYmU7XG5leHBvcnQgY29uc3QgbWV0YSA9IGNvcmUubWV0YTtcbmZ1bmN0aW9uIF9pbnN0YW5jZW9mKGNscywgcGFyYW1zID0ge30pIHtcbiAgICBjb25zdCBpbnN0ID0gbmV3IFpvZEN1c3RvbSh7XG4gICAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIGNoZWNrOiBcImN1c3RvbVwiLFxuICAgICAgICBmbjogKGRhdGEpID0+IGRhdGEgaW5zdGFuY2VvZiBjbHMsXG4gICAgICAgIGFib3J0OiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICAgIGluc3QuX3pvZC5iYWcuQ2xhc3MgPSBjbHM7XG4gICAgLy8gT3ZlcnJpZGUgY2hlY2sgdG8gZW1pdCBpbnZhbGlkX3R5cGUgaW5zdGVhZCBvZiBjdXN0b21cbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoIShwYXlsb2FkLnZhbHVlIGluc3RhbmNlb2YgY2xzKSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogY2xzLm5hbWUsXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBwYXRoOiBbLi4uKGluc3QuX3pvZC5kZWYucGF0aCA/PyBbXSldLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBpbnN0O1xufVxuZXhwb3J0IHsgX2luc3RhbmNlb2YgYXMgaW5zdGFuY2VvZiB9O1xuLy8gc3RyaW5nYm9vbFxuZXhwb3J0IGNvbnN0IHN0cmluZ2Jvb2wgPSAoLi4uYXJncykgPT4gY29yZS5fc3RyaW5nYm9vbCh7XG4gICAgQ29kZWM6IFpvZENvZGVjLFxuICAgIEJvb2xlYW46IFpvZEJvb2xlYW4sXG4gICAgU3RyaW5nOiBab2RTdHJpbmcsXG59LCAuLi5hcmdzKTtcbmV4cG9ydCBmdW5jdGlvbiBqc29uKHBhcmFtcykge1xuICAgIGNvbnN0IGpzb25TY2hlbWEgPSBsYXp5KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHVuaW9uKFtzdHJpbmcocGFyYW1zKSwgbnVtYmVyKCksIGJvb2xlYW4oKSwgX251bGwoKSwgYXJyYXkoanNvblNjaGVtYSksIHJlY29yZChzdHJpbmcoKSwganNvblNjaGVtYSldKTtcbiAgICB9KTtcbiAgICByZXR1cm4ganNvblNjaGVtYTtcbn1cbi8vIHByZXByb2Nlc3Ncbi8vIC8qKiBAZGVwcmVjYXRlZCBVc2UgYHoucGlwZSgpYCBhbmQgYHoudHJhbnNmb3JtKClgIGluc3RlYWQuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2Vzcyhmbiwgc2NoZW1hKSB7XG4gICAgcmV0dXJuIHBpcGUodHJhbnNmb3JtKGZuKSwgc2NoZW1hKTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/classic/schemas.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/api.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/zod/v4/core/api.js ***!
|
||
\*****************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TimePrecision: () => (/* binding */ TimePrecision),\n/* harmony export */ _any: () => (/* binding */ _any),\n/* harmony export */ _array: () => (/* binding */ _array),\n/* harmony export */ _base64: () => (/* binding */ _base64),\n/* harmony export */ _base64url: () => (/* binding */ _base64url),\n/* harmony export */ _bigint: () => (/* binding */ _bigint),\n/* harmony export */ _boolean: () => (/* binding */ _boolean),\n/* harmony export */ _catch: () => (/* binding */ _catch),\n/* harmony export */ _check: () => (/* binding */ _check),\n/* harmony export */ _cidrv4: () => (/* binding */ _cidrv4),\n/* harmony export */ _cidrv6: () => (/* binding */ _cidrv6),\n/* harmony export */ _coercedBigint: () => (/* binding */ _coercedBigint),\n/* harmony export */ _coercedBoolean: () => (/* binding */ _coercedBoolean),\n/* harmony export */ _coercedDate: () => (/* binding */ _coercedDate),\n/* harmony export */ _coercedNumber: () => (/* binding */ _coercedNumber),\n/* harmony export */ _coercedString: () => (/* binding */ _coercedString),\n/* harmony export */ _cuid: () => (/* binding */ _cuid),\n/* harmony export */ _cuid2: () => (/* binding */ _cuid2),\n/* harmony export */ _custom: () => (/* binding */ _custom),\n/* harmony export */ _date: () => (/* binding */ _date),\n/* harmony export */ _default: () => (/* binding */ _default),\n/* harmony export */ _discriminatedUnion: () => (/* binding */ _discriminatedUnion),\n/* harmony export */ _e164: () => (/* binding */ _e164),\n/* harmony export */ _email: () => (/* binding */ _email),\n/* harmony export */ _emoji: () => (/* binding */ _emoji),\n/* harmony export */ _endsWith: () => (/* binding */ _endsWith),\n/* harmony export */ _enum: () => (/* binding */ _enum),\n/* harmony export */ _file: () => (/* binding */ _file),\n/* harmony export */ _float32: () => (/* binding */ _float32),\n/* harmony export */ _float64: () => (/* binding */ _float64),\n/* harmony export */ _gt: () => (/* binding */ _gt),\n/* harmony export */ _gte: () => (/* binding */ _gte),\n/* harmony export */ _guid: () => (/* binding */ _guid),\n/* harmony export */ _includes: () => (/* binding */ _includes),\n/* harmony export */ _int: () => (/* binding */ _int),\n/* harmony export */ _int32: () => (/* binding */ _int32),\n/* harmony export */ _int64: () => (/* binding */ _int64),\n/* harmony export */ _intersection: () => (/* binding */ _intersection),\n/* harmony export */ _ipv4: () => (/* binding */ _ipv4),\n/* harmony export */ _ipv6: () => (/* binding */ _ipv6),\n/* harmony export */ _isoDate: () => (/* binding */ _isoDate),\n/* harmony export */ _isoDateTime: () => (/* binding */ _isoDateTime),\n/* harmony export */ _isoDuration: () => (/* binding */ _isoDuration),\n/* harmony export */ _isoTime: () => (/* binding */ _isoTime),\n/* harmony export */ _jwt: () => (/* binding */ _jwt),\n/* harmony export */ _ksuid: () => (/* binding */ _ksuid),\n/* harmony export */ _lazy: () => (/* binding */ _lazy),\n/* harmony export */ _length: () => (/* binding */ _length),\n/* harmony export */ _literal: () => (/* binding */ _literal),\n/* harmony export */ _lowercase: () => (/* binding */ _lowercase),\n/* harmony export */ _lt: () => (/* binding */ _lt),\n/* harmony export */ _lte: () => (/* binding */ _lte),\n/* harmony export */ _mac: () => (/* binding */ _mac),\n/* harmony export */ _map: () => (/* binding */ _map),\n/* harmony export */ _max: () => (/* binding */ _lte),\n/* harmony export */ _maxLength: () => (/* binding */ _maxLength),\n/* harmony export */ _maxSize: () => (/* binding */ _maxSize),\n/* harmony export */ _mime: () => (/* binding */ _mime),\n/* harmony export */ _min: () => (/* binding */ _gte),\n/* harmony export */ _minLength: () => (/* binding */ _minLength),\n/* harmony export */ _minSize: () => (/* binding */ _minSize),\n/* harmony export */ _multipleOf: () => (/* binding */ _multipleOf),\n/* harmony export */ _nan: () => (/* binding */ _nan),\n/* harmony export */ _nanoid: () => (/* binding */ _nanoid),\n/* harmony export */ _nativeEnum: () => (/* binding */ _nativeEnum),\n/* harmony export */ _negative: () => (/* binding */ _negative),\n/* harmony export */ _never: () => (/* binding */ _never),\n/* harmony export */ _nonnegative: () => (/* binding */ _nonnegative),\n/* harmony export */ _nonoptional: () => (/* binding */ _nonoptional),\n/* harmony export */ _nonpositive: () => (/* binding */ _nonpositive),\n/* harmony export */ _normalize: () => (/* binding */ _normalize),\n/* harmony export */ _null: () => (/* binding */ _null),\n/* harmony export */ _nullable: () => (/* binding */ _nullable),\n/* harmony export */ _number: () => (/* binding */ _number),\n/* harmony export */ _optional: () => (/* binding */ _optional),\n/* harmony export */ _overwrite: () => (/* binding */ _overwrite),\n/* harmony export */ _pipe: () => (/* binding */ _pipe),\n/* harmony export */ _positive: () => (/* binding */ _positive),\n/* harmony export */ _promise: () => (/* binding */ _promise),\n/* harmony export */ _property: () => (/* binding */ _property),\n/* harmony export */ _readonly: () => (/* binding */ _readonly),\n/* harmony export */ _record: () => (/* binding */ _record),\n/* harmony export */ _refine: () => (/* binding */ _refine),\n/* harmony export */ _regex: () => (/* binding */ _regex),\n/* harmony export */ _set: () => (/* binding */ _set),\n/* harmony export */ _size: () => (/* binding */ _size),\n/* harmony export */ _slugify: () => (/* binding */ _slugify),\n/* harmony export */ _startsWith: () => (/* binding */ _startsWith),\n/* harmony export */ _string: () => (/* binding */ _string),\n/* harmony export */ _stringFormat: () => (/* binding */ _stringFormat),\n/* harmony export */ _stringbool: () => (/* binding */ _stringbool),\n/* harmony export */ _success: () => (/* binding */ _success),\n/* harmony export */ _superRefine: () => (/* binding */ _superRefine),\n/* harmony export */ _symbol: () => (/* binding */ _symbol),\n/* harmony export */ _templateLiteral: () => (/* binding */ _templateLiteral),\n/* harmony export */ _toLowerCase: () => (/* binding */ _toLowerCase),\n/* harmony export */ _toUpperCase: () => (/* binding */ _toUpperCase),\n/* harmony export */ _transform: () => (/* binding */ _transform),\n/* harmony export */ _trim: () => (/* binding */ _trim),\n/* harmony export */ _tuple: () => (/* binding */ _tuple),\n/* harmony export */ _uint32: () => (/* binding */ _uint32),\n/* harmony export */ _uint64: () => (/* binding */ _uint64),\n/* harmony export */ _ulid: () => (/* binding */ _ulid),\n/* harmony export */ _undefined: () => (/* binding */ _undefined),\n/* harmony export */ _union: () => (/* binding */ _union),\n/* harmony export */ _unknown: () => (/* binding */ _unknown),\n/* harmony export */ _uppercase: () => (/* binding */ _uppercase),\n/* harmony export */ _url: () => (/* binding */ _url),\n/* harmony export */ _uuid: () => (/* binding */ _uuid),\n/* harmony export */ _uuidv4: () => (/* binding */ _uuidv4),\n/* harmony export */ _uuidv6: () => (/* binding */ _uuidv6),\n/* harmony export */ _uuidv7: () => (/* binding */ _uuidv7),\n/* harmony export */ _void: () => (/* binding */ _void),\n/* harmony export */ _xid: () => (/* binding */ _xid),\n/* harmony export */ _xor: () => (/* binding */ _xor),\n/* harmony export */ describe: () => (/* binding */ describe),\n/* harmony export */ meta: () => (/* binding */ meta)\n/* harmony export */ });\n/* harmony import */ var _checks_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./checks.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/checks.js\");\n/* harmony import */ var _registries_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./registries.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/registries.js\");\n/* harmony import */ var _schemas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./schemas.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/schemas.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\n\n\n\n// @__NO_SIDE_EFFECTS__\nfunction _string(Class, params) {\n return new Class({\n type: \"string\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\nconst TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nfunction _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _null(Class, params) {\n return new Class({\n type: \"null\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _never(Class, params) {\n return new Class({\n type: \"never\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _void(Class, params) {\n return new Class({\n type: \"void\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _date(Class, params) {\n return new Class({\n type: \"date\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _lt(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckLessThan({\n check: \"less_than\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _lte(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckLessThan({\n check: \"less_than\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction _gt(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _gte(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nfunction _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nfunction _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nfunction _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nfunction _multipleOf(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _maxSize(maximum, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckMaxSize({\n check: \"max_size\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _minSize(minimum, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckMinSize({\n check: \"min_size\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _size(size, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _maxLength(maximum, params) {\n const ch = new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckMaxLength({\n check: \"max_length\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _minLength(minimum, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckMinLength({\n check: \"min_length\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _length(length, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _regex(pattern, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _lowercase(params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _uppercase(params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _includes(includes, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _startsWith(prefix, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _endsWith(suffix, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _property(property, schema, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _mime(types, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _overwrite(tx) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nfunction _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nfunction _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nfunction _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nfunction _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nfunction _slugify() {\n return _overwrite((input) => _util_js__WEBPACK_IMPORTED_MODULE_3__.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nfunction _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\nfunction _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nfunction _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof _schemas_js__WEBPACK_IMPORTED_MODULE_2__.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nfunction _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _file(Class, params) {\n return new Class({\n type: \"file\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : _util_js__WEBPACK_IMPORTED_MODULE_3__.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction _custom(Class, fn, _params) {\n const norm = _util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nfunction _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(_util_js__WEBPACK_IMPORTED_MODULE_3__.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(_util_js__WEBPACK_IMPORTED_MODULE_3__.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _check(fn, params) {\n const ch = new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheck({\n check: \"custom\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction describe(description) {\n const ch = new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = _registries_js__WEBPACK_IMPORTED_MODULE_1__.globalRegistry.get(inst) ?? {};\n _registries_js__WEBPACK_IMPORTED_MODULE_1__.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction meta(metadata) {\n const ch = new _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = _registries_js__WEBPACK_IMPORTED_MODULE_1__.globalRegistry.get(inst) ?? {};\n _registries_js__WEBPACK_IMPORTED_MODULE_1__.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _stringbool(Classes, _params) {\n const params = _util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? _schemas_js__WEBPACK_IMPORTED_MODULE_2__.$ZodCodec;\n const _Boolean = Classes.Boolean ?? _schemas_js__WEBPACK_IMPORTED_MODULE_2__.$ZodBoolean;\n const _String = Classes.String ?? _schemas_js__WEBPACK_IMPORTED_MODULE_2__.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nfunction _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = _util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(_params);\n const def = {\n ..._util_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9hcGkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFzQztBQUNRO0FBQ047QUFDTjtBQUNsQztBQUNPO0FBQ1A7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFvQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscURBQW9CO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxREFBb0I7QUFDL0IsS0FBSztBQUNMO0FBQ0E7QUFD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Q0EsNkJBQTZCLDBEQUF5QjtBQUN0RCxZQUFZLDBEQUF5QixhQUFhLDBCQUEwQjtBQUM1RSxTQUFTO0FBQ1Q7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ087QUFDUCxtQkFBbUIsaURBQWdCLEdBQUcsZUFBZTtBQUNyRDtBQUNBO0FBQ0EsNkJBQTZCLDBEQUF5QjtBQUN0RCxZQUFZLDBEQUF5QixhQUFhLDBCQUEwQjtBQUM1RSxTQUFTO0FBQ1Q7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ087QUFDUCxtQkFBbUIscURBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0RBQWlCO0FBQ3JELHdDQUF3QyxvREFBbUI7QUFDM0Qsc0NBQXNDLG1EQUFrQjtBQUN4RCx1Q0FBdUMscUNBQXFDO0FBQzVFLHlDQUF5QyxzQ0FBc0M7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDTyw2REFBNkQ7QUFDcEUsbUJBQW1CLHFEQUFvQjtBQUN2QztBQUNBLFdBQVcscURBQW9CO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcY29yZVxcYXBpLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoZWNrcyBmcm9tIFwiLi9jaGVja3MuanNcIjtcbmltcG9ydCAqIGFzIHJlZ2lzdHJpZXMgZnJvbSBcIi4vcmVnaXN0cmllcy5qc1wiO1xuaW1wb3J0ICogYXMgc2NoZW1hcyBmcm9tIFwiLi9zY2hlbWFzLmpzXCI7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuL3V0aWwuanNcIjtcbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX3N0cmluZyhDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9jb2VyY2VkU3RyaW5nKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgY29lcmNlOiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfZW1haWwoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZW1haWxcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9ndWlkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImd1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF91dWlkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInV1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF91dWlkdjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwidXVpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgdmVyc2lvbjogXCJ2NFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfdXVpZHY2KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInV1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIHZlcnNpb246IFwidjZcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX3V1aWR2NyhDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJ1dWlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICB2ZXJzaW9uOiBcInY3XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF91cmwoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwidXJsXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfZW1vamkoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZW1vamlcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9uYW5vaWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwibmFub2lkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfY3VpZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJjdWlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfY3VpZDIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiY3VpZDJcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF91bGlkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInVsaWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF94aWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwieGlkXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfa3N1aWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwia3N1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9pcHY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImlwdjRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9pcHY2KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImlwdjZcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9tYWMoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwibWFjXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfY2lkcnY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImNpZHJ2NFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2NpZHJ2NihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJjaWRydjZcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9iYXNlNjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiYmFzZTY0XCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfYmFzZTY0dXJsKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImJhc2U2NHVybFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2UxNjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZTE2NFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2p3dChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJqd3RcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgVGltZVByZWNpc2lvbiA9IHtcbiAgICBBbnk6IG51bGwsXG4gICAgTWludXRlOiAtMSxcbiAgICBTZWNvbmQ6IDAsXG4gICAgTWlsbGlzZWNvbmQ6IDMsXG4gICAgTWljcm9zZWNvbmQ6IDYsXG59O1xuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfaXNvRGF0ZVRpbWUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZGF0ZXRpbWVcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBvZmZzZXQ6IGZhbHNlLFxuICAgICAgICBsb2NhbDogZmFsc2UsXG4gICAgICAgIHByZWNpc2lvbjogbnVsbCxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2lzb0RhdGUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZGF0ZVwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9pc29UaW1lKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInRpbWVcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBwcmVjaXNpb246IG51bGwsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9pc29EdXJhdGlvbihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJkdXJhdGlvblwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9udW1iZXIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjaGVja3M6IFtdLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfY29lcmNlZE51bWJlcihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNvZXJjZTogdHJ1ZSxcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2ludChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNoZWNrOiBcIm51bWJlcl9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwic2FmZWludFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfZmxvYXQzMihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNoZWNrOiBcIm51bWJlcl9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwiZmxvYXQzMlwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfZmxvYXQ2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNoZWNrOiBcIm51bWJlcl9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwiZmxvYXQ2NFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfaW50MzIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjaGVjazogXCJudW1iZXJfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgZm9ybWF0OiBcImludDMyXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF91aW50MzIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjaGVjazogXCJudW1iZXJfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgZm9ybWF0OiBcInVpbnQzMlwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfYm9vbGVhbihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfY29lcmNlZEJvb2xlYW4oQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgY29lcmNlOiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfYmlnaW50KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJiaWdpbnRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2NvZXJjZWRCaWdpbnQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImJpZ2ludFwiLFxuICAgICAgICBjb2VyY2U6IHRydWUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9pbnQ2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgIGNoZWNrOiBcImJpZ2ludF9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwiaW50NjRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX3VpbnQ2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgIGNoZWNrOiBcImJpZ2ludF9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwidWludDY0XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9zeW1ib2woQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN5bWJvbFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfdW5kZWZpbmVkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ1bmRlZmluZWRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX251bGwoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bGxcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2FueShDbGFzcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImFueVwiLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfdW5rbm93bihDbGFzcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInVua25vd25cIixcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX25ldmVyKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJuZXZlclwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfdm9pZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidm9pZFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfZGF0ZShDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfY29lcmNlZERhdGUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgY29lcmNlOiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbmFuKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJuYW5cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2x0KHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tMZXNzVGhhbih7XG4gICAgICAgIGNoZWNrOiBcImxlc3NfdGhhblwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2x0ZSh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTGVzc1RoYW4oe1xuICAgICAgICBjaGVjazogXCJsZXNzX3RoYW5cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICB9KTtcbn1cbmV4cG9ydCB7IFxuLyoqIEBkZXByZWNhdGVkIFVzZSBgei5sdGUoKWAgaW5zdGVhZC4gKi9cbl9sdGUgYXMgX21heCwgfTtcbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2d0KHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tHcmVhdGVyVGhhbih7XG4gICAgICAgIGNoZWNrOiBcImdyZWF0ZXJfdGhhblwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2d0ZSh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrR3JlYXRlclRoYW4oe1xuICAgICAgICBjaGVjazogXCJncmVhdGVyX3RoYW5cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICB9KTtcbn1cbmV4cG9ydCB7IFxuLyoqIEBkZXByZWNhdGVkIFVzZSBgei5ndGUoKWAgaW5zdGVhZC4gKi9cbl9ndGUgYXMgX21pbiwgfTtcbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX3Bvc2l0aXZlKHBhcmFtcykge1xuICAgIHJldHVybiBfZ3QoMCwgcGFyYW1zKTtcbn1cbi8vIG5lZ2F0aXZlXG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9uZWdhdGl2ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gX2x0KDAsIHBhcmFtcyk7XG59XG4vLyBub25wb3NpdGl2ZVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbm9ucG9zaXRpdmUocGFyYW1zKSB7XG4gICAgcmV0dXJuIF9sdGUoMCwgcGFyYW1zKTtcbn1cbi8vIG5vbm5lZ2F0aXZlXG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9ub25uZWdhdGl2ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gX2d0ZSgwLCBwYXJhbXMpO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbXVsdGlwbGVPZih2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTXVsdGlwbGVPZih7XG4gICAgICAgIGNoZWNrOiBcIm11bHRpcGxlX29mXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHZhbHVlLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbWF4U2l6ZShtYXhpbXVtLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tNYXhTaXplKHtcbiAgICAgICAgY2hlY2s6IFwibWF4X3NpemVcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgbWF4aW11bSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX21pblNpemUobWluaW11bSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTWluU2l6ZSh7XG4gICAgICAgIGNoZWNrOiBcIm1pbl9zaXplXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIG1pbmltdW0sXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9zaXplKHNpemUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja1NpemVFcXVhbHMoe1xuICAgICAgICBjaGVjazogXCJzaXplX2VxdWFsc1wiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBzaXplLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbWF4TGVuZ3RoKG1heGltdW0sIHBhcmFtcykge1xuICAgIGNvbnN0IGNoID0gbmV3IGNoZWNrcy4kWm9kQ2hlY2tNYXhMZW5ndGgoe1xuICAgICAgICBjaGVjazogXCJtYXhfbGVuZ3RoXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIG1heGltdW0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGNoO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbWluTGVuZ3RoKG1pbmltdW0sIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja01pbkxlbmd0aCh7XG4gICAgICAgIGNoZWNrOiBcIm1pbl9sZW5ndGhcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgbWluaW11bSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2xlbmd0aChsZW5ndGgsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0xlbmd0aEVxdWFscyh7XG4gICAgICAgIGNoZWNrOiBcImxlbmd0aF9lcXVhbHNcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgbGVuZ3RoLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfcmVnZXgocGF0dGVybiwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrUmVnZXgoe1xuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGZvcm1hdDogXCJyZWdleFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBwYXR0ZXJuLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbG93ZXJjYXNlKHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0xvd2VyQ2FzZSh7XG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgZm9ybWF0OiBcImxvd2VyY2FzZVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfdXBwZXJjYXNlKHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja1VwcGVyQ2FzZSh7XG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgZm9ybWF0OiBcInVwcGVyY2FzZVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfaW5jbHVkZXMoaW5jbHVkZXMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0luY2x1ZGVzKHtcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBmb3JtYXQ6IFwiaW5jbHVkZXNcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgaW5jbHVkZXMsXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9zdGFydHNXaXRoKHByZWZpeCwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrU3RhcnRzV2l0aCh7XG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgZm9ybWF0OiBcInN0YXJ0c193aXRoXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHByZWZpeCxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2VuZHNXaXRoKHN1ZmZpeCwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrRW5kc1dpdGgoe1xuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGZvcm1hdDogXCJlbmRzX3dpdGhcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgc3VmZml4LFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfcHJvcGVydHkocHJvcGVydHksIHNjaGVtYSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrUHJvcGVydHkoe1xuICAgICAgICBjaGVjazogXCJwcm9wZXJ0eVwiLFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbWltZSh0eXBlcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTWltZVR5cGUoe1xuICAgICAgICBjaGVjazogXCJtaW1lX3R5cGVcIixcbiAgICAgICAgbWltZTogdHlwZXMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9vdmVyd3JpdGUodHgpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tPdmVyd3JpdGUoe1xuICAgICAgICBjaGVjazogXCJvdmVyd3JpdGVcIixcbiAgICAgICAgdHgsXG4gICAgfSk7XG59XG4vLyBub3JtYWxpemVcbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX25vcm1hbGl6ZShmb3JtKSB7XG4gICAgcmV0dXJuIF9vdmVyd3JpdGUoKGlucHV0KSA9PiBpbnB1dC5ub3JtYWxpemUoZm9ybSkpO1xufVxuLy8gdHJpbVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfdHJpbSgpIHtcbiAgICByZXR1cm4gX292ZXJ3cml0ZSgoaW5wdXQpID0+IGlucHV0LnRyaW0oKSk7XG59XG4vLyB0b0xvd2VyQ2FzZVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfdG9Mb3dlckNhc2UoKSB7XG4gICAgcmV0dXJuIF9vdmVyd3JpdGUoKGlucHV0KSA9PiBpbnB1dC50b0xvd2VyQ2FzZSgpKTtcbn1cbi8vIHRvVXBwZXJDYXNlXG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF90b1VwcGVyQ2FzZSgpIHtcbiAgICByZXR1cm4gX292ZXJ3cml0ZSgoaW5wdXQpID0+IGlucHV0LnRvVXBwZXJDYXNlKCkpO1xufVxuLy8gc2x1Z2lmeVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfc2x1Z2lmeSgpIHtcbiAgICByZXR1cm4gX292ZXJ3cml0ZSgoaW5wdXQpID0+IHV0aWwuc2x1Z2lmeShpbnB1dCkpO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfYXJyYXkoQ2xhc3MsIGVsZW1lbnQsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIC8vIGdldCBlbGVtZW50KCkge1xuICAgICAgICAvLyAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICAvLyB9LFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfdW5pb24oQ2xhc3MsIG9wdGlvbnMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInVuaW9uXCIsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3hvcihDbGFzcywgb3B0aW9ucywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2Rpc2NyaW1pbmF0ZWRVbmlvbihDbGFzcywgZGlzY3JpbWluYXRvciwgb3B0aW9ucywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZGlzY3JpbWluYXRvcixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2ludGVyc2VjdGlvbihDbGFzcywgbGVmdCwgcmlnaHQpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJpbnRlcnNlY3Rpb25cIixcbiAgICAgICAgbGVmdCxcbiAgICAgICAgcmlnaHQsXG4gICAgfSk7XG59XG4vLyBleHBvcnQgZnVuY3Rpb24gX3R1cGxlKFxuLy8gICBDbGFzczogdXRpbC5TY2hlbWFDbGFzczxzY2hlbWFzLiRab2RUdXBsZT4sXG4vLyAgIGl0ZW1zOiBbXSxcbi8vICAgcGFyYW1zPzogc3RyaW5nIHwgJFpvZFR1cGxlUGFyYW1zXG4vLyApOiBzY2hlbWFzLiRab2RUdXBsZTxbXSwgbnVsbD47XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF90dXBsZShDbGFzcywgaXRlbXMsIF9wYXJhbXNPclJlc3QsIF9wYXJhbXMpIHtcbiAgICBjb25zdCBoYXNSZXN0ID0gX3BhcmFtc09yUmVzdCBpbnN0YW5jZW9mIHNjaGVtYXMuJFpvZFR5cGU7XG4gICAgY29uc3QgcGFyYW1zID0gaGFzUmVzdCA/IF9wYXJhbXMgOiBfcGFyYW1zT3JSZXN0O1xuICAgIGNvbnN0IHJlc3QgPSBoYXNSZXN0ID8gX3BhcmFtc09yUmVzdCA6IG51bGw7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidHVwbGVcIixcbiAgICAgICAgaXRlbXMsXG4gICAgICAgIHJlc3QsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9yZWNvcmQoQ2xhc3MsIGtleVR5cGUsIHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwicmVjb3JkXCIsXG4gICAgICAgIGtleVR5cGUsXG4gICAgICAgIHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX21hcChDbGFzcywga2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJtYXBcIixcbiAgICAgICAga2V5VHlwZSxcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfc2V0KENsYXNzLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInNldFwiLFxuICAgICAgICB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9lbnVtKENsYXNzLCB2YWx1ZXMsIHBhcmFtcykge1xuICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlcykgPyBPYmplY3QuZnJvbUVudHJpZXModmFsdWVzLm1hcCgodikgPT4gW3YsIHZdKSkgOiB2YWx1ZXM7XG4gICAgLy8gaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgIC8vICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAvLyAgICAgZW50cmllc1t2YWx1ZV0gPSB2YWx1ZTtcbiAgICAvLyAgIH1cbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgT2JqZWN0LmFzc2lnbihlbnRyaWVzLCB2YWx1ZXMpO1xuICAgIC8vIH1cbiAgICAvLyBjb25zdCBlbnRyaWVzOiB1dGlsLkVudW1MaWtlID0ge307XG4gICAgLy8gZm9yIChjb25zdCB2YWwgb2YgdmFsdWVzKSB7XG4gICAgLy8gICBlbnRyaWVzW3ZhbF0gPSB2YWw7XG4gICAgLy8gfVxuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImVudW1cIixcbiAgICAgICAgZW50cmllcyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG4vKiogQGRlcHJlY2F0ZWQgVGhpcyBBUEkgaGFzIGJlZW4gbWVyZ2VkIGludG8gYHouZW51bSgpYC4gVXNlIGB6LmVudW0oKWAgaW5zdGVhZC5cbiAqXG4gKiBgYGB0c1xuICogZW51bSBDb2xvcnMgeyByZWQsIGdyZWVuLCBibHVlIH1cbiAqIHouZW51bShDb2xvcnMpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfbmF0aXZlRW51bShDbGFzcywgZW50cmllcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiZW51bVwiLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbGl0ZXJhbChDbGFzcywgdmFsdWUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImxpdGVyYWxcIixcbiAgICAgICAgdmFsdWVzOiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2ZpbGUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX3RyYW5zZm9ybShDbGFzcywgZm4pIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgdHJhbnNmb3JtOiBmbixcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX29wdGlvbmFsKENsYXNzLCBpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJvcHRpb25hbFwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9udWxsYWJsZShDbGFzcywgaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVsbGFibGVcIixcbiAgICAgICAgaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfZGVmYXVsdChDbGFzcywgaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJkZWZhdWx0XCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICAgICAgZ2V0IGRlZmF1bHRWYWx1ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBkZWZhdWx0VmFsdWUoKSA6IHV0aWwuc2hhbGxvd0Nsb25lKGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9ub25vcHRpb25hbChDbGFzcywgaW5uZXJUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJub25vcHRpb25hbFwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9zdWNjZXNzKENsYXNzLCBpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdWNjZXNzXCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2NhdGNoKENsYXNzLCBpbm5lclR5cGUsIGNhdGNoVmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJjYXRjaFwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgICAgIGNhdGNoVmFsdWU6ICh0eXBlb2YgY2F0Y2hWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gY2F0Y2hWYWx1ZSA6ICgpID0+IGNhdGNoVmFsdWUpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfcGlwZShDbGFzcywgaW5fLCBvdXQpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJwaXBlXCIsXG4gICAgICAgIGluOiBpbl8sXG4gICAgICAgIG91dCxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX3JlYWRvbmx5KENsYXNzLCBpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJyZWFkb25seVwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF90ZW1wbGF0ZUxpdGVyYWwoQ2xhc3MsIHBhcnRzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJ0ZW1wbGF0ZV9saXRlcmFsXCIsXG4gICAgICAgIHBhcnRzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfbGF6eShDbGFzcywgZ2V0dGVyKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibGF6eVwiLFxuICAgICAgICBnZXR0ZXIsXG4gICAgfSk7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9wcm9taXNlKENsYXNzLCBpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJwcm9taXNlXCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5leHBvcnQgZnVuY3Rpb24gX2N1c3RvbShDbGFzcywgZm4sIF9wYXJhbXMpIHtcbiAgICBjb25zdCBub3JtID0gdXRpbC5ub3JtYWxpemVQYXJhbXMoX3BhcmFtcyk7XG4gICAgbm9ybS5hYm9ydCA/PyAobm9ybS5hYm9ydCA9IHRydWUpOyAvLyBkZWZhdWx0IHRvIGFib3J0OmZhbHNlXG4gICAgY29uc3Qgc2NoZW1hID0gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJjdXN0b21cIixcbiAgICAgICAgY2hlY2s6IFwiY3VzdG9tXCIsXG4gICAgICAgIGZuOiBmbixcbiAgICAgICAgLi4ubm9ybSxcbiAgICB9KTtcbiAgICByZXR1cm4gc2NoZW1hO1xufVxuLy8gc2FtZSBhcyBfY3VzdG9tIGJ1dCBkZWZhdWx0cyB0byBhYm9ydDpmYWxzZVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfcmVmaW5lKENsYXNzLCBmbiwgX3BhcmFtcykge1xuICAgIGNvbnN0IHNjaGVtYSA9IG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIGNoZWNrOiBcImN1c3RvbVwiLFxuICAgICAgICBmbjogZm4sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKF9wYXJhbXMpLFxuICAgIH0pO1xuICAgIHJldHVybiBzY2hlbWE7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9zdXBlclJlZmluZShmbikge1xuICAgIGNvbnN0IGNoID0gX2NoZWNrKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHBheWxvYWQuYWRkSXNzdWUgPSAoaXNzdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXNzdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHV0aWwuaXNzdWUoaXNzdWUsIHBheWxvYWQudmFsdWUsIGNoLl96b2QuZGVmKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgWm9kIDMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZhdGFsKVxuICAgICAgICAgICAgICAgICAgICBfaXNzdWUuY29udGludWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuY29kZSA/PyAoX2lzc3VlLmNvZGUgPSBcImN1c3RvbVwiKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuaW5wdXQgPz8gKF9pc3N1ZS5pbnB1dCA9IHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIF9pc3N1ZS5pbnN0ID8/IChfaXNzdWUuaW5zdCA9IGNoKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuY29udGludWUgPz8gKF9pc3N1ZS5jb250aW51ZSA9ICFjaC5fem9kLmRlZi5hYm9ydCk7IC8vIGFib3J0IGlzIGFsd2F5cyB1bmRlZmluZWQsIHNvIHRoaXMgaXMgYWx3YXlzIHRydWUuLi5cbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHV0aWwuaXNzdWUoX2lzc3VlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmbihwYXlsb2FkLnZhbHVlLCBwYXlsb2FkKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY2g7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9jaGVjayhmbiwgcGFyYW1zKSB7XG4gICAgY29uc3QgY2ggPSBuZXcgY2hlY2tzLiRab2RDaGVjayh7XG4gICAgICAgIGNoZWNrOiBcImN1c3RvbVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICAgIGNoLl96b2QuY2hlY2sgPSBmbjtcbiAgICByZXR1cm4gY2g7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlKGRlc2NyaXB0aW9uKSB7XG4gICAgY29uc3QgY2ggPSBuZXcgY2hlY2tzLiRab2RDaGVjayh7IGNoZWNrOiBcImRlc2NyaWJlXCIgfSk7XG4gICAgY2guX3pvZC5vbmF0dGFjaCA9IFtcbiAgICAgICAgKGluc3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcmVnaXN0cmllcy5nbG9iYWxSZWdpc3RyeS5nZXQoaW5zdCkgPz8ge307XG4gICAgICAgICAgICByZWdpc3RyaWVzLmdsb2JhbFJlZ2lzdHJ5LmFkZChpbnN0LCB7IC4uLmV4aXN0aW5nLCBkZXNjcmlwdGlvbiB9KTtcbiAgICAgICAgfSxcbiAgICBdO1xuICAgIGNoLl96b2QuY2hlY2sgPSAoKSA9PiB7IH07IC8vIG5vLW9wIGNoZWNrXG4gICAgcmV0dXJuIGNoO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBtZXRhKG1ldGFkYXRhKSB7XG4gICAgY29uc3QgY2ggPSBuZXcgY2hlY2tzLiRab2RDaGVjayh7IGNoZWNrOiBcIm1ldGFcIiB9KTtcbiAgICBjaC5fem9kLm9uYXR0YWNoID0gW1xuICAgICAgICAoaW5zdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSByZWdpc3RyaWVzLmdsb2JhbFJlZ2lzdHJ5LmdldChpbnN0KSA/PyB7fTtcbiAgICAgICAgICAgIHJlZ2lzdHJpZXMuZ2xvYmFsUmVnaXN0cnkuYWRkKGluc3QsIHsgLi4uZXhpc3RpbmcsIC4uLm1ldGFkYXRhIH0pO1xuICAgICAgICB9LFxuICAgIF07XG4gICAgY2guX3pvZC5jaGVjayA9ICgpID0+IHsgfTsgLy8gbm8tb3AgY2hlY2tcbiAgICByZXR1cm4gY2g7XG59XG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZXhwb3J0IGZ1bmN0aW9uIF9zdHJpbmdib29sKENsYXNzZXMsIF9wYXJhbXMpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB1dGlsLm5vcm1hbGl6ZVBhcmFtcyhfcGFyYW1zKTtcbiAgICBsZXQgdHJ1dGh5QXJyYXkgPSBwYXJhbXMudHJ1dGh5ID8/IFtcInRydWVcIiwgXCIxXCIsIFwieWVzXCIsIFwib25cIiwgXCJ5XCIsIFwiZW5hYmxlZFwiXTtcbiAgICBsZXQgZmFsc3lBcnJheSA9IHBhcmFtcy5mYWxzeSA/PyBbXCJmYWxzZVwiLCBcIjBcIiwgXCJub1wiLCBcIm9mZlwiLCBcIm5cIiwgXCJkaXNhYmxlZFwiXTtcbiAgICBpZiAocGFyYW1zLmNhc2UgIT09IFwic2Vuc2l0aXZlXCIpIHtcbiAgICAgICAgdHJ1dGh5QXJyYXkgPSB0cnV0aHlBcnJheS5tYXAoKHYpID0+ICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiA/IHYudG9Mb3dlckNhc2UoKSA6IHYpKTtcbiAgICAgICAgZmFsc3lBcnJheSA9IGZhbHN5QXJyYXkubWFwKCh2KSA9PiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIgPyB2LnRvTG93ZXJDYXNlKCkgOiB2KSk7XG4gICAgfVxuICAgIGNvbnN0IHRydXRoeVNldCA9IG5ldyBTZXQodHJ1dGh5QXJyYXkpO1xuICAgIGNvbnN0IGZhbHN5U2V0ID0gbmV3IFNldChmYWxzeUFycmF5KTtcbiAgICBjb25zdCBfQ29kZWMgPSBDbGFzc2VzLkNvZGVjID8/IHNjaGVtYXMuJFpvZENvZGVjO1xuICAgIGNvbnN0IF9Cb29sZWFuID0gQ2xhc3Nlcy5Cb29sZWFuID8/IHNjaGVtYXMuJFpvZEJvb2xlYW47XG4gICAgY29uc3QgX1N0cmluZyA9IENsYXNzZXMuU3RyaW5nID8/IHNjaGVtYXMuJFpvZFN0cmluZztcbiAgICBjb25zdCBzdHJpbmdTY2hlbWEgPSBuZXcgX1N0cmluZyh7IHR5cGU6IFwic3RyaW5nXCIsIGVycm9yOiBwYXJhbXMuZXJyb3IgfSk7XG4gICAgY29uc3QgYm9vbGVhblNjaGVtYSA9IG5ldyBfQm9vbGVhbih7IHR5cGU6IFwiYm9vbGVhblwiLCBlcnJvcjogcGFyYW1zLmVycm9yIH0pO1xuICAgIGNvbnN0IGNvZGVjID0gbmV3IF9Db2RlYyh7XG4gICAgICAgIHR5cGU6IFwicGlwZVwiLFxuICAgICAgICBpbjogc3RyaW5nU2NoZW1hLFxuICAgICAgICBvdXQ6IGJvb2xlYW5TY2hlbWEsXG4gICAgICAgIHRyYW5zZm9ybTogKChpbnB1dCwgcGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGEgPSBpbnB1dDtcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY2FzZSAhPT0gXCJzZW5zaXRpdmVcIilcbiAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKHRydXRoeVNldC5oYXMoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGZhbHN5U2V0LmhhcyhkYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdmFsdWVcIixcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwic3RyaW5nYm9vbFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsuLi50cnV0aHlTZXQsIC4uLmZhbHN5U2V0XSxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGluc3Q6IGNvZGVjLFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgcmV2ZXJzZVRyYW5zZm9ybTogKChpbnB1dCwgX3BheWxvYWQpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnV0aHlBcnJheVswXSB8fCBcInRydWVcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzeUFycmF5WzBdIHx8IFwiZmFsc2VcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGVycm9yOiBwYXJhbXMuZXJyb3IsXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvZGVjO1xufVxuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmV4cG9ydCBmdW5jdGlvbiBfc3RyaW5nRm9ybWF0KENsYXNzLCBmb3JtYXQsIGZuT3JSZWdleCwgX3BhcmFtcyA9IHt9KSB7XG4gICAgY29uc3QgcGFyYW1zID0gdXRpbC5ub3JtYWxpemVQYXJhbXMoX3BhcmFtcyk7XG4gICAgY29uc3QgZGVmID0ge1xuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhfcGFyYW1zKSxcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQsXG4gICAgICAgIGZuOiB0eXBlb2YgZm5PclJlZ2V4ID09PSBcImZ1bmN0aW9uXCIgPyBmbk9yUmVnZXggOiAodmFsKSA9PiBmbk9yUmVnZXgudGVzdCh2YWwpLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfTtcbiAgICBpZiAoZm5PclJlZ2V4IGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIGRlZi5wYXR0ZXJuID0gZm5PclJlZ2V4O1xuICAgIH1cbiAgICBjb25zdCBpbnN0ID0gbmV3IENsYXNzKGRlZik7XG4gICAgcmV0dXJuIGluc3Q7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/api.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/checks.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/zod/v4/core/checks.js ***!
|
||
\********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodCheck: () => (/* binding */ $ZodCheck),\n/* harmony export */ $ZodCheckBigIntFormat: () => (/* binding */ $ZodCheckBigIntFormat),\n/* harmony export */ $ZodCheckEndsWith: () => (/* binding */ $ZodCheckEndsWith),\n/* harmony export */ $ZodCheckGreaterThan: () => (/* binding */ $ZodCheckGreaterThan),\n/* harmony export */ $ZodCheckIncludes: () => (/* binding */ $ZodCheckIncludes),\n/* harmony export */ $ZodCheckLengthEquals: () => (/* binding */ $ZodCheckLengthEquals),\n/* harmony export */ $ZodCheckLessThan: () => (/* binding */ $ZodCheckLessThan),\n/* harmony export */ $ZodCheckLowerCase: () => (/* binding */ $ZodCheckLowerCase),\n/* harmony export */ $ZodCheckMaxLength: () => (/* binding */ $ZodCheckMaxLength),\n/* harmony export */ $ZodCheckMaxSize: () => (/* binding */ $ZodCheckMaxSize),\n/* harmony export */ $ZodCheckMimeType: () => (/* binding */ $ZodCheckMimeType),\n/* harmony export */ $ZodCheckMinLength: () => (/* binding */ $ZodCheckMinLength),\n/* harmony export */ $ZodCheckMinSize: () => (/* binding */ $ZodCheckMinSize),\n/* harmony export */ $ZodCheckMultipleOf: () => (/* binding */ $ZodCheckMultipleOf),\n/* harmony export */ $ZodCheckNumberFormat: () => (/* binding */ $ZodCheckNumberFormat),\n/* harmony export */ $ZodCheckOverwrite: () => (/* binding */ $ZodCheckOverwrite),\n/* harmony export */ $ZodCheckProperty: () => (/* binding */ $ZodCheckProperty),\n/* harmony export */ $ZodCheckRegex: () => (/* binding */ $ZodCheckRegex),\n/* harmony export */ $ZodCheckSizeEquals: () => (/* binding */ $ZodCheckSizeEquals),\n/* harmony export */ $ZodCheckStartsWith: () => (/* binding */ $ZodCheckStartsWith),\n/* harmony export */ $ZodCheckStringFormat: () => (/* binding */ $ZodCheckStringFormat),\n/* harmony export */ $ZodCheckUpperCase: () => (/* binding */ $ZodCheckUpperCase)\n/* harmony export */ });\n/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _regexes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./regexes.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/regexes.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n// import { $ZodType } from \"./schemas.js\";\n\n\n\nconst $ZodCheck = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nconst $ZodCheckLessThan = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckGreaterThan = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckMultipleOf = \n/*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : _util_js__WEBPACK_IMPORTED_MODULE_2__.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckNumberFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = _util_js__WEBPACK_IMPORTED_MODULE_2__.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_1__.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nconst $ZodCheckBigIntFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = _util_js__WEBPACK_IMPORTED_MODULE_2__.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nconst $ZodCheckMaxSize = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_2__.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: _util_js__WEBPACK_IMPORTED_MODULE_2__.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckMinSize = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_2__.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: _util_js__WEBPACK_IMPORTED_MODULE_2__.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckSizeEquals = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_2__.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: _util_js__WEBPACK_IMPORTED_MODULE_2__.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckMaxLength = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_2__.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = _util_js__WEBPACK_IMPORTED_MODULE_2__.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckMinLength = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_2__.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = _util_js__WEBPACK_IMPORTED_MODULE_2__.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckLengthEquals = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_2__.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = _util_js__WEBPACK_IMPORTED_MODULE_2__.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckStringFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nconst $ZodCheckRegex = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckLowerCase = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_1__.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nconst $ZodCheckUpperCase = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_1__.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nconst $ZodCheckIncludes = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = _util_js__WEBPACK_IMPORTED_MODULE_2__.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckStartsWith = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${_util_js__WEBPACK_IMPORTED_MODULE_2__.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckEndsWith = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${_util_js__WEBPACK_IMPORTED_MODULE_2__.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(property, result.issues));\n }\n}\nconst $ZodCheckProperty = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nconst $ZodCheckMimeType = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCheckOverwrite = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9jaGVja3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFlBQVksV0FBVztBQUNXO0FBQ007QUFDTjtBQUMzQixnQ0FBZ0Msa0RBQWlCO0FBQ3hEO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLHdDQUF3QyxrREFBaUI7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxDQUFDO0FBQ00sMkNBQTJDLGtEQUFpQjtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLENBQUM7QUFDTTtBQUNQLGNBQWMsa0RBQWlCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUF1QjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxDQUFDO0FBQ00sNENBQTRDLGtEQUFpQjtBQUNwRSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDBEQUF5QjtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsZ0RBQWU7QUFDekMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Q0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLENBQUM7QUFDTSx3Q0FBd0Msa0RBQWlCO0FBQ2hFO0FBQ0Esb0NBQW9DLGlEQUFnQixhQUFhO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGtEQUFpQjtBQUNoRDtBQUNBO0FBQ08sd0NBQXdDLGtEQUFpQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFJO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNNLHdDQUF3QyxrREFBaUI7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsQ0FBQztBQUNNLHlDQUF5QyxrREFBaUI7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxjb3JlXFxjaGVja3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgJFpvZFR5cGUgfSBmcm9tIFwiLi9zY2hlbWFzLmpzXCI7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuL2NvcmUuanNcIjtcbmltcG9ydCAqIGFzIHJlZ2V4ZXMgZnJvbSBcIi4vcmVnZXhlcy5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi91dGlsLmpzXCI7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGluc3QuX3pvZCA/PyAoaW5zdC5fem9kID0ge30pO1xuICAgIGluc3QuX3pvZC5kZWYgPSBkZWY7XG4gICAgKF9hID0gaW5zdC5fem9kKS5vbmF0dGFjaCA/PyAoX2Eub25hdHRhY2ggPSBbXSk7XG59KTtcbmNvbnN0IG51bWVyaWNPcmlnaW5NYXAgPSB7XG4gICAgbnVtYmVyOiBcIm51bWJlclwiLFxuICAgIGJpZ2ludDogXCJiaWdpbnRcIixcbiAgICBvYmplY3Q6IFwiZGF0ZVwiLFxufTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tMZXNzVGhhbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tMZXNzVGhhblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCBvcmlnaW4gPSBudW1lcmljT3JpZ2luTWFwW3R5cGVvZiBkZWYudmFsdWVdO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGNvbnN0IGN1cnIgPSAoZGVmLmluY2x1c2l2ZSA/IGJhZy5tYXhpbXVtIDogYmFnLmV4Y2x1c2l2ZU1heGltdW0pID8/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICAgICAgaWYgKGRlZi52YWx1ZSA8IGN1cnIpIHtcbiAgICAgICAgICAgIGlmIChkZWYuaW5jbHVzaXZlKVxuICAgICAgICAgICAgICAgIGJhZy5tYXhpbXVtID0gZGVmLnZhbHVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJhZy5leGNsdXNpdmVNYXhpbXVtID0gZGVmLnZhbHVlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKGRlZi5pbmNsdXNpdmUgPyBwYXlsb2FkLnZhbHVlIDw9IGRlZi52YWx1ZSA6IHBheWxvYWQudmFsdWUgPCBkZWYudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIGNvZGU6IFwidG9vX2JpZ1wiLFxuICAgICAgICAgICAgbWF4aW11bTogdHlwZW9mIGRlZi52YWx1ZSA9PT0gXCJvYmplY3RcIiA/IGRlZi52YWx1ZS5nZXRUaW1lKCkgOiBkZWYudmFsdWUsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZGVmLmluY2x1c2l2ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0dyZWF0ZXJUaGFuID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0dyZWF0ZXJUaGFuXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IG9yaWdpbiA9IG51bWVyaWNPcmlnaW5NYXBbdHlwZW9mIGRlZi52YWx1ZV07XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgY29uc3QgY3VyciA9IChkZWYuaW5jbHVzaXZlID8gYmFnLm1pbmltdW0gOiBiYWcuZXhjbHVzaXZlTWluaW11bSkgPz8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICAgICAgICBpZiAoZGVmLnZhbHVlID4gY3Vycikge1xuICAgICAgICAgICAgaWYgKGRlZi5pbmNsdXNpdmUpXG4gICAgICAgICAgICAgICAgYmFnLm1pbmltdW0gPSBkZWYudmFsdWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYmFnLmV4Y2x1c2l2ZU1pbmltdW0gPSBkZWYudmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoZGVmLmluY2x1c2l2ZSA/IHBheWxvYWQudmFsdWUgPj0gZGVmLnZhbHVlIDogcGF5bG9hZC52YWx1ZSA+IGRlZi52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgY29kZTogXCJ0b29fc21hbGxcIixcbiAgICAgICAgICAgIG1pbmltdW06IHR5cGVvZiBkZWYudmFsdWUgPT09IFwib2JqZWN0XCIgPyBkZWYudmFsdWUuZ2V0VGltZSgpIDogZGVmLnZhbHVlLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGRlZi5pbmNsdXNpdmUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tNdWx0aXBsZU9mID0gXG4vKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTXVsdGlwbGVPZlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IGluc3QuX3pvZC5iYWcpLm11bHRpcGxlT2YgPz8gKF9hLm11bHRpcGxlT2YgPSBkZWYudmFsdWUpO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC52YWx1ZSAhPT0gdHlwZW9mIGRlZi52YWx1ZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtaXggbnVtYmVyIGFuZCBiaWdpbnQgaW4gbXVsdGlwbGVfb2YgY2hlY2suXCIpO1xuICAgICAgICBjb25zdCBpc011bHRpcGxlID0gdHlwZW9mIHBheWxvYWQudmFsdWUgPT09IFwiYmlnaW50XCJcbiAgICAgICAgICAgID8gcGF5bG9hZC52YWx1ZSAlIGRlZi52YWx1ZSA9PT0gQmlnSW50KDApXG4gICAgICAgICAgICA6IHV0aWwuZmxvYXRTYWZlUmVtYWluZGVyKHBheWxvYWQudmFsdWUsIGRlZi52YWx1ZSkgPT09IDA7XG4gICAgICAgIGlmIChpc011bHRpcGxlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogdHlwZW9mIHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBjb2RlOiBcIm5vdF9tdWx0aXBsZV9vZlwiLFxuICAgICAgICAgICAgZGl2aXNvcjogZGVmLnZhbHVlLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tOdW1iZXJGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTnVtYmVyRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpOyAvLyBubyBmb3JtYXQgY2hlY2tzXG4gICAgZGVmLmZvcm1hdCA9IGRlZi5mb3JtYXQgfHwgXCJmbG9hdDY0XCI7XG4gICAgY29uc3QgaXNJbnQgPSBkZWYuZm9ybWF0Py5pbmNsdWRlcyhcImludFwiKTtcbiAgICBjb25zdCBvcmlnaW4gPSBpc0ludCA/IFwiaW50XCIgOiBcIm51bWJlclwiO1xuICAgIGNvbnN0IFttaW5pbXVtLCBtYXhpbXVtXSA9IHV0aWwuTlVNQkVSX0ZPUk1BVF9SQU5HRVNbZGVmLmZvcm1hdF07XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLmZvcm1hdCA9IGRlZi5mb3JtYXQ7XG4gICAgICAgIGJhZy5taW5pbXVtID0gbWluaW11bTtcbiAgICAgICAgYmFnLm1heGltdW0gPSBtYXhpbXVtO1xuICAgICAgICBpZiAoaXNJbnQpXG4gICAgICAgICAgICBiYWcucGF0dGVybiA9IHJlZ2V4ZXMuaW50ZWdlcjtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmIChpc0ludCkge1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0KSkge1xuICAgICAgICAgICAgICAgIC8vIGludmFsaWRfZm9ybWF0IGlzc3VlXG4gICAgICAgICAgICAgICAgLy8gcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgLy8gICBleHBlY3RlZDogZGVmLmZvcm1hdCxcbiAgICAgICAgICAgICAgICAvLyAgIGZvcm1hdDogZGVmLmZvcm1hdCxcbiAgICAgICAgICAgICAgICAvLyAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICAvLyAgIGlucHV0LFxuICAgICAgICAgICAgICAgIC8vICAgaW5zdCxcbiAgICAgICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgICAgICAvLyBpbnZhbGlkX3R5cGUgaXNzdWVcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IG9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBkZWYuZm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAvLyBub3RfbXVsdGlwbGVfb2YgaXNzdWVcbiAgICAgICAgICAgICAgICAvLyBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAvLyAgIGNvZGU6IFwibm90X211bHRpcGxlX29mXCIsXG4gICAgICAgICAgICAgICAgLy8gICBvcmlnaW46IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgLy8gICBpbnB1dCxcbiAgICAgICAgICAgICAgICAvLyAgIGluc3QsXG4gICAgICAgICAgICAgICAgLy8gICBkaXZpc29yOiAxLFxuICAgICAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRvb19iaWdcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFwidG9vX2JpZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9vX3NtYWxsXG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBcInRvb19zbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0IDwgbWluaW11bSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGNvZGU6IFwidG9vX3NtYWxsXCIsXG4gICAgICAgICAgICAgICAgbWluaW11bSxcbiAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dCA+IG1heGltdW0pIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpbjogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBjb2RlOiBcInRvb19iaWdcIixcbiAgICAgICAgICAgICAgICBtYXhpbXVtLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrQmlnSW50Rm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0JpZ0ludEZvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTsgLy8gbm8gZm9ybWF0IGNoZWNrc1xuICAgIGNvbnN0IFttaW5pbXVtLCBtYXhpbXVtXSA9IHV0aWwuQklHSU5UX0ZPUk1BVF9SQU5HRVNbZGVmLmZvcm1hdF07XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLmZvcm1hdCA9IGRlZi5mb3JtYXQ7XG4gICAgICAgIGJhZy5taW5pbXVtID0gbWluaW11bTtcbiAgICAgICAgYmFnLm1heGltdW0gPSBtYXhpbXVtO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKGlucHV0IDwgbWluaW11bSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcImJpZ2ludFwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGNvZGU6IFwidG9vX3NtYWxsXCIsXG4gICAgICAgICAgICAgICAgbWluaW11bTogbWluaW11bSxcbiAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dCA+IG1heGltdW0pIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpbjogXCJiaWdpbnRcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBjb2RlOiBcInRvb19iaWdcIixcbiAgICAgICAgICAgICAgICBtYXhpbXVtLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTWF4U2l6ZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tNYXhTaXplXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICAoX2EgPSBpbnN0Ll96b2QuZGVmKS53aGVuID8/IChfYS53aGVuID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICF1dGlsLm51bGxpc2godmFsKSAmJiB2YWwuc2l6ZSAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnIgPSAoaW5zdC5fem9kLmJhZy5tYXhpbXVtID8/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGlmIChkZWYubWF4aW11bSA8IGN1cnIpXG4gICAgICAgICAgICBpbnN0Ll96b2QuYmFnLm1heGltdW0gPSBkZWYubWF4aW11bTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IHNpemUgPSBpbnB1dC5zaXplO1xuICAgICAgICBpZiAoc2l6ZSA8PSBkZWYubWF4aW11bSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW46IHV0aWwuZ2V0U2l6YWJsZU9yaWdpbihpbnB1dCksXG4gICAgICAgICAgICBjb2RlOiBcInRvb19iaWdcIixcbiAgICAgICAgICAgIG1heGltdW06IGRlZi5tYXhpbXVtLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tNaW5TaXplID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja01pblNpemVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIChfYSA9IGluc3QuX3pvZC5kZWYpLndoZW4gPz8gKF9hLndoZW4gPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICByZXR1cm4gIXV0aWwubnVsbGlzaCh2YWwpICYmIHZhbC5zaXplICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgY3VyciA9IChpbnN0Ll96b2QuYmFnLm1pbmltdW0gPz8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTtcbiAgICAgICAgaWYgKGRlZi5taW5pbXVtID4gY3VycilcbiAgICAgICAgICAgIGluc3QuX3pvZC5iYWcubWluaW11bSA9IGRlZi5taW5pbXVtO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGlucHV0LnNpemU7XG4gICAgICAgIGlmIChzaXplID49IGRlZi5taW5pbXVtKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogdXRpbC5nZXRTaXphYmxlT3JpZ2luKGlucHV0KSxcbiAgICAgICAgICAgIGNvZGU6IFwidG9vX3NtYWxsXCIsXG4gICAgICAgICAgICBtaW5pbXVtOiBkZWYubWluaW11bSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrU2l6ZUVxdWFscyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tTaXplRXF1YWxzXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICAoX2EgPSBpbnN0Ll96b2QuZGVmKS53aGVuID8/IChfYS53aGVuID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICF1dGlsLm51bGxpc2godmFsKSAmJiB2YWwuc2l6ZSAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5taW5pbXVtID0gZGVmLnNpemU7XG4gICAgICAgIGJhZy5tYXhpbXVtID0gZGVmLnNpemU7XG4gICAgICAgIGJhZy5zaXplID0gZGVmLnNpemU7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBzaXplID0gaW5wdXQuc2l6ZTtcbiAgICAgICAgaWYgKHNpemUgPT09IGRlZi5zaXplKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB0b29CaWcgPSBzaXplID4gZGVmLnNpemU7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiB1dGlsLmdldFNpemFibGVPcmlnaW4oaW5wdXQpLFxuICAgICAgICAgICAgLi4uKHRvb0JpZyA/IHsgY29kZTogXCJ0b29fYmlnXCIsIG1heGltdW06IGRlZi5zaXplIH0gOiB7IGNvZGU6IFwidG9vX3NtYWxsXCIsIG1pbmltdW06IGRlZi5zaXplIH0pLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgZXhhY3Q6IHRydWUsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja01heExlbmd0aCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tNYXhMZW5ndGhcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIChfYSA9IGluc3QuX3pvZC5kZWYpLndoZW4gPz8gKF9hLndoZW4gPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICByZXR1cm4gIXV0aWwubnVsbGlzaCh2YWwpICYmIHZhbC5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyID0gKGluc3QuX3pvZC5iYWcubWF4aW11bSA/PyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBpZiAoZGVmLm1heGltdW0gPCBjdXJyKVxuICAgICAgICAgICAgaW5zdC5fem9kLmJhZy5tYXhpbXVtID0gZGVmLm1heGltdW07XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPD0gZGVmLm1heGltdW0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHV0aWwuZ2V0TGVuZ3RoYWJsZU9yaWdpbihpbnB1dCk7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgY29kZTogXCJ0b29fYmlnXCIsXG4gICAgICAgICAgICBtYXhpbXVtOiBkZWYubWF4aW11bSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTWluTGVuZ3RoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja01pbkxlbmd0aFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgKF9hID0gaW5zdC5fem9kLmRlZikud2hlbiA/PyAoX2Eud2hlbiA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIHJldHVybiAhdXRpbC5udWxsaXNoKHZhbCkgJiYgdmFsLmxlbmd0aCAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnIgPSAoaW5zdC5fem9kLmJhZy5taW5pbXVtID8/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGlmIChkZWYubWluaW11bSA+IGN1cnIpXG4gICAgICAgICAgICBpbnN0Ll96b2QuYmFnLm1pbmltdW0gPSBkZWYubWluaW11bTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA+PSBkZWYubWluaW11bSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdXRpbC5nZXRMZW5ndGhhYmxlT3JpZ2luKGlucHV0KTtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICBjb2RlOiBcInRvb19zbWFsbFwiLFxuICAgICAgICAgICAgbWluaW11bTogZGVmLm1pbmltdW0sXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0xlbmd0aEVxdWFscyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHNcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIChfYSA9IGluc3QuX3pvZC5kZWYpLndoZW4gPz8gKF9hLndoZW4gPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICByZXR1cm4gIXV0aWwubnVsbGlzaCh2YWwpICYmIHZhbC5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcubWluaW11bSA9IGRlZi5sZW5ndGg7XG4gICAgICAgIGJhZy5tYXhpbXVtID0gZGVmLmxlbmd0aDtcbiAgICAgICAgYmFnLmxlbmd0aCA9IGRlZi5sZW5ndGg7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IGRlZi5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHV0aWwuZ2V0TGVuZ3RoYWJsZU9yaWdpbihpbnB1dCk7XG4gICAgICAgIGNvbnN0IHRvb0JpZyA9IGxlbmd0aCA+IGRlZi5sZW5ndGg7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgLi4uKHRvb0JpZyA/IHsgY29kZTogXCJ0b29fYmlnXCIsIG1heGltdW06IGRlZi5sZW5ndGggfSA6IHsgY29kZTogXCJ0b29fc21hbGxcIiwgbWluaW11bTogZGVmLmxlbmd0aCB9KSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGV4YWN0OiB0cnVlLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tTdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLmZvcm1hdCA9IGRlZi5mb3JtYXQ7XG4gICAgICAgIGlmIChkZWYucGF0dGVybikge1xuICAgICAgICAgICAgYmFnLnBhdHRlcm5zID8/IChiYWcucGF0dGVybnMgPSBuZXcgU2V0KCkpO1xuICAgICAgICAgICAgYmFnLnBhdHRlcm5zLmFkZChkZWYucGF0dGVybik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoZGVmLnBhdHRlcm4pXG4gICAgICAgIChfYSA9IGluc3QuX3pvZCkuY2hlY2sgPz8gKF9hLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIGRlZi5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICBpZiAoZGVmLnBhdHRlcm4udGVzdChwYXlsb2FkLnZhbHVlKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogZGVmLmZvcm1hdCxcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICAuLi4oZGVmLnBhdHRlcm4gPyB7IHBhdHRlcm46IGRlZi5wYXR0ZXJuLnRvU3RyaW5nKCkgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIGVsc2VcbiAgICAgICAgKF9iID0gaW5zdC5fem9kKS5jaGVjayA/PyAoX2IuY2hlY2sgPSAoKSA9PiB7IH0pO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrUmVnZXggPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrUmVnZXhcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVja1N0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGVmLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgaWYgKGRlZi5wYXR0ZXJuLnRlc3QocGF5bG9hZC52YWx1ZSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgZm9ybWF0OiBcInJlZ2V4XCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIHBhdHRlcm46IGRlZi5wYXR0ZXJuLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tMb3dlckNhc2UgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTG93ZXJDYXNlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmxvd2VyY2FzZSk7XG4gICAgJFpvZENoZWNrU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja1VwcGVyQ2FzZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tVcHBlckNhc2VcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMudXBwZXJjYXNlKTtcbiAgICAkWm9kQ2hlY2tTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrSW5jbHVkZXMgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrSW5jbHVkZXNcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgZXNjYXBlZFJlZ2V4ID0gdXRpbC5lc2NhcGVSZWdleChkZWYuaW5jbHVkZXMpO1xuICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKHR5cGVvZiBkZWYucG9zaXRpb24gPT09IFwibnVtYmVyXCIgPyBgXi57JHtkZWYucG9zaXRpb259fSR7ZXNjYXBlZFJlZ2V4fWAgOiBlc2NhcGVkUmVnZXgpO1xuICAgIGRlZi5wYXR0ZXJuID0gcGF0dGVybjtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcucGF0dGVybnMgPz8gKGJhZy5wYXR0ZXJucyA9IG5ldyBTZXQoKSk7XG4gICAgICAgIGJhZy5wYXR0ZXJucy5hZGQocGF0dGVybik7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQudmFsdWUuaW5jbHVkZXMoZGVmLmluY2x1ZGVzLCBkZWYucG9zaXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJpbmNsdWRlc1wiLFxuICAgICAgICAgICAgaW5jbHVkZXM6IGRlZi5pbmNsdWRlcyxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrU3RhcnRzV2l0aCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tTdGFydHNXaXRoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGBeJHt1dGlsLmVzY2FwZVJlZ2V4KGRlZi5wcmVmaXgpfS4qYCk7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcGF0dGVybik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLnBhdHRlcm5zID8/IChiYWcucGF0dGVybnMgPSBuZXcgU2V0KCkpO1xuICAgICAgICBiYWcucGF0dGVybnMuYWRkKHBhdHRlcm4pO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlLnN0YXJ0c1dpdGgoZGVmLnByZWZpeCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgZm9ybWF0OiBcInN0YXJ0c193aXRoXCIsXG4gICAgICAgICAgICBwcmVmaXg6IGRlZi5wcmVmaXgsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0VuZHNXaXRoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0VuZHNXaXRoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGAuKiR7dXRpbC5lc2NhcGVSZWdleChkZWYuc3VmZml4KX0kYCk7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcGF0dGVybik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLnBhdHRlcm5zID8/IChiYWcucGF0dGVybnMgPSBuZXcgU2V0KCkpO1xuICAgICAgICBiYWcucGF0dGVybnMuYWRkKHBhdHRlcm4pO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlLmVuZHNXaXRoKGRlZi5zdWZmaXgpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJlbmRzX3dpdGhcIixcbiAgICAgICAgICAgIHN1ZmZpeDogZGVmLnN1ZmZpeCxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8gICAgJFpvZENoZWNrUHJvcGVydHkgICAgLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5mdW5jdGlvbiBoYW5kbGVDaGVja1Byb3BlcnR5UmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgcHJvcGVydHkpIHtcbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3Vlcyhwcm9wZXJ0eSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tQcm9wZXJ0eSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tQcm9wZXJ0eVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuc2NoZW1hLl96b2QucnVuKHtcbiAgICAgICAgICAgIHZhbHVlOiBwYXlsb2FkLnZhbHVlW2RlZi5wcm9wZXJ0eV0sXG4gICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICB9LCB7fSk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlQ2hlY2tQcm9wZXJ0eVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGRlZi5wcm9wZXJ0eSkpO1xuICAgICAgICB9XG4gICAgICAgIGhhbmRsZUNoZWNrUHJvcGVydHlSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBkZWYucHJvcGVydHkpO1xuICAgICAgICByZXR1cm47XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja01pbWVUeXBlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja01pbWVUeXBlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IG1pbWVTZXQgPSBuZXcgU2V0KGRlZi5taW1lKTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBpbnN0Ll96b2QuYmFnLm1pbWUgPSBkZWYubWltZTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAobWltZVNldC5oYXMocGF5bG9hZC52YWx1ZS50eXBlKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdmFsdWVcIixcbiAgICAgICAgICAgIHZhbHVlczogZGVmLm1pbWUsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZS50eXBlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrT3ZlcndyaXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja092ZXJ3cml0ZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBwYXlsb2FkLnZhbHVlID0gZGVmLnR4KHBheWxvYWQudmFsdWUpO1xuICAgIH07XG59KTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/checks.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/core.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/zod/v4/core/core.js ***!
|
||
\******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodAsyncError: () => (/* binding */ $ZodAsyncError),\n/* harmony export */ $ZodEncodeError: () => (/* binding */ $ZodEncodeError),\n/* harmony export */ $brand: () => (/* binding */ $brand),\n/* harmony export */ $constructor: () => (/* binding */ $constructor),\n/* harmony export */ NEVER: () => (/* binding */ NEVER),\n/* harmony export */ config: () => (/* binding */ config),\n/* harmony export */ globalConfig: () => (/* binding */ globalConfig)\n/* harmony export */ });\n/** A special constant with type `never` */\nconst NEVER = Object.freeze({\n status: \"aborted\",\n});\nfunction $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nconst $brand = Symbol(\"zod_brand\");\nclass $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nclass $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nconst globalConfig = {};\nfunction config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9jb3JlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNPO0FBQ1A7QUFDQSxDQUFDO0FBQytCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsYUFBYTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxhQUFhO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMLHVDQUF1QyxhQUFhO0FBQ3BEO0FBQ0E7QUFDQTtBQUNPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxxRUFBcUUsS0FBSztBQUMxRTtBQUNBO0FBQ0E7QUFDTztBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNvcmVcXGNvcmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEEgc3BlY2lhbCBjb25zdGFudCB3aXRoIHR5cGUgYG5ldmVyYCAqL1xuZXhwb3J0IGNvbnN0IE5FVkVSID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgc3RhdHVzOiBcImFib3J0ZWRcIixcbn0pO1xuZXhwb3J0IC8qQF9fTk9fU0lERV9FRkZFQ1RTX18qLyBmdW5jdGlvbiAkY29uc3RydWN0b3IobmFtZSwgaW5pdGlhbGl6ZXIsIHBhcmFtcykge1xuICAgIGZ1bmN0aW9uIGluaXQoaW5zdCwgZGVmKSB7XG4gICAgICAgIGlmICghaW5zdC5fem9kKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJfem9kXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICBkZWYsXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cjogXyxcbiAgICAgICAgICAgICAgICAgICAgdHJhaXRzOiBuZXcgU2V0KCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnN0Ll96b2QudHJhaXRzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGluc3QuX3pvZC50cmFpdHMuYWRkKG5hbWUpO1xuICAgICAgICBpbml0aWFsaXplcihpbnN0LCBkZWYpO1xuICAgICAgICAvLyBzdXBwb3J0IHByb3RvdHlwZSBtb2RpZmljYXRpb25zXG4gICAgICAgIGNvbnN0IHByb3RvID0gXy5wcm90b3R5cGU7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm90byk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgayA9IGtleXNbaV07XG4gICAgICAgICAgICBpZiAoIShrIGluIGluc3QpKSB7XG4gICAgICAgICAgICAgICAgaW5zdFtrXSA9IHByb3RvW2tdLmJpbmQoaW5zdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gZG9lc24ndCB3b3JrIGlmIFBhcmVudCBoYXMgYSBjb25zdHJ1Y3RvciB3aXRoIGFyZ3VtZW50c1xuICAgIGNvbnN0IFBhcmVudCA9IHBhcmFtcz8uUGFyZW50ID8/IE9iamVjdDtcbiAgICBjbGFzcyBEZWZpbml0aW9uIGV4dGVuZHMgUGFyZW50IHtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERlZmluaXRpb24sIFwibmFtZVwiLCB7IHZhbHVlOiBuYW1lIH0pO1xuICAgIGZ1bmN0aW9uIF8oZGVmKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgaW5zdCA9IHBhcmFtcz8uUGFyZW50ID8gbmV3IERlZmluaXRpb24oKSA6IHRoaXM7XG4gICAgICAgIGluaXQoaW5zdCwgZGVmKTtcbiAgICAgICAgKF9hID0gaW5zdC5fem9kKS5kZWZlcnJlZCA/PyAoX2EuZGVmZXJyZWQgPSBbXSk7XG4gICAgICAgIGZvciAoY29uc3QgZm4gb2YgaW5zdC5fem9kLmRlZmVycmVkKSB7XG4gICAgICAgICAgICBmbigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnN0O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXywgXCJpbml0XCIsIHsgdmFsdWU6IGluaXQgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF8sIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuICAgICAgICB2YWx1ZTogKGluc3QpID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJhbXM/LlBhcmVudCAmJiBpbnN0IGluc3RhbmNlb2YgcGFyYW1zLlBhcmVudClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0Py5fem9kPy50cmFpdHM/LmhhcyhuYW1lKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXywgXCJuYW1lXCIsIHsgdmFsdWU6IG5hbWUgfSk7XG4gICAgcmV0dXJuIF87XG59XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gICBVVElMSVRJRVMgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBjb25zdCAkYnJhbmQgPSBTeW1ib2woXCJ6b2RfYnJhbmRcIik7XG5leHBvcnQgY2xhc3MgJFpvZEFzeW5jRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKGBFbmNvdW50ZXJlZCBQcm9taXNlIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZS4gVXNlIC5wYXJzZUFzeW5jKCkgaW5zdGVhZC5gKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgJFpvZEVuY29kZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICAgICAgc3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke25hbWV9YCk7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiWm9kRW5jb2RlRXJyb3JcIjtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgZ2xvYmFsQ29uZmlnID0ge307XG5leHBvcnQgZnVuY3Rpb24gY29uZmlnKG5ld0NvbmZpZykge1xuICAgIGlmIChuZXdDb25maWcpXG4gICAgICAgIE9iamVjdC5hc3NpZ24oZ2xvYmFsQ29uZmlnLCBuZXdDb25maWcpO1xuICAgIHJldHVybiBnbG9iYWxDb25maWc7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/core.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/doc.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/zod/v4/core/doc.js ***!
|
||
\*****************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Doc: () => (/* binding */ Doc)\n/* harmony export */ });\nclass Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9kb2MuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbUJBQW1CO0FBQzNDLHdCQUF3QixvQkFBb0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxFQUFFO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxjb3JlXFxkb2MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERvYyB7XG4gICAgY29uc3RydWN0b3IoYXJncyA9IFtdKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IFtdO1xuICAgICAgICB0aGlzLmluZGVudCA9IDA7XG4gICAgICAgIGlmICh0aGlzKVxuICAgICAgICAgICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB9XG4gICAgaW5kZW50ZWQoZm4pIHtcbiAgICAgICAgdGhpcy5pbmRlbnQgKz0gMTtcbiAgICAgICAgZm4odGhpcyk7XG4gICAgICAgIHRoaXMuaW5kZW50IC09IDE7XG4gICAgfVxuICAgIHdyaXRlKGFyZykge1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBhcmcodGhpcywgeyBleGVjdXRpb246IFwic3luY1wiIH0pO1xuICAgICAgICAgICAgYXJnKHRoaXMsIHsgZXhlY3V0aW9uOiBcImFzeW5jXCIgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udGVudCA9IGFyZztcbiAgICAgICAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpLmZpbHRlcigoeCkgPT4geCk7XG4gICAgICAgIGNvbnN0IG1pbkluZGVudCA9IE1hdGgubWluKC4uLmxpbmVzLm1hcCgoeCkgPT4geC5sZW5ndGggLSB4LnRyaW1TdGFydCgpLmxlbmd0aCkpO1xuICAgICAgICBjb25zdCBkZWRlbnRlZCA9IGxpbmVzLm1hcCgoeCkgPT4geC5zbGljZShtaW5JbmRlbnQpKS5tYXAoKHgpID0+IFwiIFwiLnJlcGVhdCh0aGlzLmluZGVudCAqIDIpICsgeCk7XG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBkZWRlbnRlZCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50LnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29tcGlsZSgpIHtcbiAgICAgICAgY29uc3QgRiA9IEZ1bmN0aW9uO1xuICAgICAgICBjb25zdCBhcmdzID0gdGhpcz8uYXJncztcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXM/LmNvbnRlbnQgPz8gW2BgXTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBbLi4uY29udGVudC5tYXAoKHgpID0+IGAgICR7eH1gKV07XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGxpbmVzLmpvaW4oXCJcXG5cIikpO1xuICAgICAgICByZXR1cm4gbmV3IEYoLi4uYXJncywgbGluZXMuam9pbihcIlxcblwiKSk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/doc.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/errors.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/zod/v4/core/errors.js ***!
|
||
\********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodError: () => (/* binding */ $ZodError),\n/* harmony export */ $ZodRealError: () => (/* binding */ $ZodRealError),\n/* harmony export */ flattenError: () => (/* binding */ flattenError),\n/* harmony export */ formatError: () => (/* binding */ formatError),\n/* harmony export */ prettifyError: () => (/* binding */ prettifyError),\n/* harmony export */ toDotPath: () => (/* binding */ toDotPath),\n/* harmony export */ treeifyError: () => (/* binding */ treeifyError)\n/* harmony export */ });\n/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\n\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, _util_js__WEBPACK_IMPORTED_MODULE_1__.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nconst $ZodError = (0,_core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor)(\"$ZodError\", initializer);\nconst $ZodRealError = (0,_core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor)(\"$ZodError\", initializer, { Parent: Error });\nfunction flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nfunction formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nfunction treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nfunction toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nfunction prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9lcnJvcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQXlDO0FBQ1A7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsdUNBQXVDLDJEQUEwQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDTyxrQkFBa0Isc0RBQVk7QUFDOUIsc0JBQXNCLHNEQUFZLDZCQUE2QixlQUFlO0FBQzlFO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1AsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxRQUFRO0FBQ3BFO0FBQ0E7QUFDQSwrQkFBK0Isc0JBQXNCO0FBQ3JEO0FBQ0E7QUFDQSwrQkFBK0Isc0JBQXNCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxRQUFRO0FBQ3BFO0FBQ0E7QUFDQSwrQkFBK0Isc0JBQXNCO0FBQ3JEO0FBQ0E7QUFDQSwrQkFBK0Isc0JBQXNCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFO0FBQ2hFLGtFQUFrRSxZQUFZO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkRBQTZELFlBQVk7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQUk7QUFDOUI7QUFDQSwwQkFBMEIsNEJBQTRCO0FBQ3REO0FBQ0EsMEJBQTBCLG9CQUFvQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGNBQWM7QUFDdEM7QUFDQSxpQ0FBaUMsc0JBQXNCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxjb3JlXFxlcnJvcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgJGNvbnN0cnVjdG9yIH0gZnJvbSBcIi4vY29yZS5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi91dGlsLmpzXCI7XG5jb25zdCBpbml0aWFsaXplciA9IChpbnN0LCBkZWYpID0+IHtcbiAgICBpbnN0Lm5hbWUgPSBcIiRab2RFcnJvclwiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcIl96b2RcIiwge1xuICAgICAgICB2YWx1ZTogaW5zdC5fem9kLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJpc3N1ZXNcIiwge1xuICAgICAgICB2YWx1ZTogZGVmLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgICBpbnN0Lm1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShkZWYsIHV0aWwuanNvblN0cmluZ2lmeVJlcGxhY2VyLCAyKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJ0b1N0cmluZ1wiLCB7XG4gICAgICAgIHZhbHVlOiAoKSA9PiBpbnN0Lm1lc3NhZ2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjb25zdCAkWm9kRXJyb3IgPSAkY29uc3RydWN0b3IoXCIkWm9kRXJyb3JcIiwgaW5pdGlhbGl6ZXIpO1xuZXhwb3J0IGNvbnN0ICRab2RSZWFsRXJyb3IgPSAkY29uc3RydWN0b3IoXCIkWm9kRXJyb3JcIiwgaW5pdGlhbGl6ZXIsIHsgUGFyZW50OiBFcnJvciB9KTtcbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuRXJyb3IoZXJyb3IsIG1hcHBlciA9IChpc3N1ZSkgPT4gaXNzdWUubWVzc2FnZSkge1xuICAgIGNvbnN0IGZpZWxkRXJyb3JzID0ge307XG4gICAgY29uc3QgZm9ybUVycm9ycyA9IFtdO1xuICAgIGZvciAoY29uc3Qgc3ViIG9mIGVycm9yLmlzc3Vlcykge1xuICAgICAgICBpZiAoc3ViLnBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dID0gZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dIHx8IFtdO1xuICAgICAgICAgICAgZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dLnB1c2gobWFwcGVyKHN1YikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9ybUVycm9ycy5wdXNoKG1hcHBlcihzdWIpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBmb3JtRXJyb3JzLCBmaWVsZEVycm9ycyB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9yKGVycm9yLCBtYXBwZXIgPSAoaXNzdWUpID0+IGlzc3VlLm1lc3NhZ2UpIHtcbiAgICBjb25zdCBmaWVsZEVycm9ycyA9IHsgX2Vycm9yczogW10gfTtcbiAgICBjb25zdCBwcm9jZXNzRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBpc3N1ZSBvZiBlcnJvci5pc3N1ZXMpIHtcbiAgICAgICAgICAgIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfdW5pb25cIiAmJiBpc3N1ZS5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaXNzdWUuZXJyb3JzLm1hcCgoaXNzdWVzKSA9PiBwcm9jZXNzRXJyb3IoeyBpc3N1ZXMgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX2tleVwiKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKHsgaXNzdWVzOiBpc3N1ZS5pc3N1ZXMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfZWxlbWVudFwiKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKHsgaXNzdWVzOiBpc3N1ZS5pc3N1ZXMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5wYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzLl9lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBjdXJyID0gZmllbGRFcnJvcnM7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgaXNzdWUucGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBpc3N1ZS5wYXRoW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IGkgPT09IGlzc3VlLnBhdGgubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXJtaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IHsgX2Vycm9yczogW10gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJbZWxdLl9lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjdXJyID0gY3VycltlbF07XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHByb2Nlc3NFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIGZpZWxkRXJyb3JzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVpZnlFcnJvcihlcnJvciwgbWFwcGVyID0gKGlzc3VlKSA9PiBpc3N1ZS5tZXNzYWdlKSB7XG4gICAgY29uc3QgcmVzdWx0ID0geyBlcnJvcnM6IFtdIH07XG4gICAgY29uc3QgcHJvY2Vzc0Vycm9yID0gKGVycm9yLCBwYXRoID0gW10pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgZm9yIChjb25zdCBpc3N1ZSBvZiBlcnJvci5pc3N1ZXMpIHtcbiAgICAgICAgICAgIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfdW5pb25cIiAmJiBpc3N1ZS5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVndWxhciB1bmlvbiBlcnJvclxuICAgICAgICAgICAgICAgIGlzc3VlLmVycm9ycy5tYXAoKGlzc3VlcykgPT4gcHJvY2Vzc0Vycm9yKHsgaXNzdWVzIH0sIGlzc3VlLnBhdGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF9rZXlcIikge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NFcnJvcih7IGlzc3VlczogaXNzdWUuaXNzdWVzIH0sIGlzc3VlLnBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX2VsZW1lbnRcIikge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NFcnJvcih7IGlzc3VlczogaXNzdWUuaXNzdWVzIH0sIGlzc3VlLnBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVsbHBhdGggPSBbLi4ucGF0aCwgLi4uaXNzdWUucGF0aF07XG4gICAgICAgICAgICAgICAgaWYgKGZ1bGxwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgY3VyciA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBmdWxscGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBmdWxscGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVybWluYWwgPSBpID09PSBmdWxscGF0aC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyLnByb3BlcnRpZXMgPz8gKGN1cnIucHJvcGVydGllcyA9IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChfYSA9IGN1cnIucHJvcGVydGllcylbZWxdID8/IChfYVtlbF0gPSB7IGVycm9yczogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyID0gY3Vyci5wcm9wZXJ0aWVzW2VsXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnIuaXRlbXMgPz8gKGN1cnIuaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAoX2IgPSBjdXJyLml0ZW1zKVtlbF0gPz8gKF9iW2VsXSA9IHsgZXJyb3JzOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJyLml0ZW1zW2VsXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGVybWluYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnIuZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcHJvY2Vzc0Vycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqIEZvcm1hdCBhIFpvZEVycm9yIGFzIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nIGluIHRoZSBmb2xsb3dpbmcgZm9ybS5cbiAqXG4gKiBGcm9tXG4gKlxuICogYGBgdHNcbiAqIFpvZEVycm9yIHtcbiAqICAgaXNzdWVzOiBbXG4gKiAgICAge1xuICogICAgICAgZXhwZWN0ZWQ6ICdzdHJpbmcnLFxuICogICAgICAgY29kZTogJ2ludmFsaWRfdHlwZScsXG4gKiAgICAgICBwYXRoOiBbICd1c2VybmFtZScgXSxcbiAqICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGlucHV0OiBleHBlY3RlZCBzdHJpbmcnXG4gKiAgICAgfSxcbiAqICAgICB7XG4gKiAgICAgICBleHBlY3RlZDogJ251bWJlcicsXG4gKiAgICAgICBjb2RlOiAnaW52YWxpZF90eXBlJyxcbiAqICAgICAgIHBhdGg6IFsgJ2Zhdm9yaXRlTnVtYmVycycsIDEgXSxcbiAqICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGlucHV0OiBleHBlY3RlZCBudW1iZXInXG4gKiAgICAgfVxuICogICBdO1xuICogfVxuICogYGBgXG4gKlxuICogdG9cbiAqXG4gKiBgYGBcbiAqIHVzZXJuYW1lXG4gKiAgIOKcliBFeHBlY3RlZCBudW1iZXIsIHJlY2VpdmVkIHN0cmluZyBhdCBcInVzZXJuYW1lXG4gKiBmYXZvcml0ZU51bWJlcnNbMF1cbiAqICAg4pyWIEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkIG51bWJlclxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RvdFBhdGgoX3BhdGgpIHtcbiAgICBjb25zdCBzZWdzID0gW107XG4gICAgY29uc3QgcGF0aCA9IF9wYXRoLm1hcCgoc2VnKSA9PiAodHlwZW9mIHNlZyA9PT0gXCJvYmplY3RcIiA/IHNlZy5rZXkgOiBzZWcpKTtcbiAgICBmb3IgKGNvbnN0IHNlZyBvZiBwYXRoKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VnID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgc2Vncy5wdXNoKGBbJHtzZWd9XWApO1xuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygc2VnID09PSBcInN5bWJvbFwiKVxuICAgICAgICAgICAgc2Vncy5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShTdHJpbmcoc2VnKSl9XWApO1xuICAgICAgICBlbHNlIGlmICgvW15cXHckXS8udGVzdChzZWcpKVxuICAgICAgICAgICAgc2Vncy5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShzZWcpfV1gKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2Vncy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgc2Vncy5wdXNoKFwiLlwiKTtcbiAgICAgICAgICAgIHNlZ3MucHVzaChzZWcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzZWdzLmpvaW4oXCJcIik7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJldHRpZnlFcnJvcihlcnJvcikge1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgLy8gc29ydCBieSBwYXRoIGxlbmd0aFxuICAgIGNvbnN0IGlzc3VlcyA9IFsuLi5lcnJvci5pc3N1ZXNdLnNvcnQoKGEsIGIpID0+IChhLnBhdGggPz8gW10pLmxlbmd0aCAtIChiLnBhdGggPz8gW10pLmxlbmd0aCk7XG4gICAgLy8gUHJvY2VzcyBlYWNoIGlzc3VlXG4gICAgZm9yIChjb25zdCBpc3N1ZSBvZiBpc3N1ZXMpIHtcbiAgICAgICAgbGluZXMucHVzaChg4pyWICR7aXNzdWUubWVzc2FnZX1gKTtcbiAgICAgICAgaWYgKGlzc3VlLnBhdGg/Lmxlbmd0aClcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAg4oaSIGF0ICR7dG9Eb3RQYXRoKGlzc3VlLnBhdGgpfWApO1xuICAgIH1cbiAgICAvLyBDb252ZXJ0IE1hcCB0byBmb3JtYXR0ZWQgc3RyaW5nXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIik7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/errors.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/index.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/core/index.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodAny: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodAny),\n/* harmony export */ $ZodArray: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodArray),\n/* harmony export */ $ZodAsyncError: () => (/* reexport safe */ _core_js__WEBPACK_IMPORTED_MODULE_0__.$ZodAsyncError),\n/* harmony export */ $ZodBase64: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodBase64),\n/* harmony export */ $ZodBase64URL: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodBase64URL),\n/* harmony export */ $ZodBigInt: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodBigInt),\n/* harmony export */ $ZodBigIntFormat: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodBigIntFormat),\n/* harmony export */ $ZodBoolean: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodBoolean),\n/* harmony export */ $ZodCIDRv4: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodCIDRv4),\n/* harmony export */ $ZodCIDRv6: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodCIDRv6),\n/* harmony export */ $ZodCUID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodCUID),\n/* harmony export */ $ZodCUID2: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodCUID2),\n/* harmony export */ $ZodCatch: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodCatch),\n/* harmony export */ $ZodCheck: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheck),\n/* harmony export */ $ZodCheckBigIntFormat: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckBigIntFormat),\n/* harmony export */ $ZodCheckEndsWith: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckEndsWith),\n/* harmony export */ $ZodCheckGreaterThan: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckGreaterThan),\n/* harmony export */ $ZodCheckIncludes: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckIncludes),\n/* harmony export */ $ZodCheckLengthEquals: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckLengthEquals),\n/* harmony export */ $ZodCheckLessThan: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckLessThan),\n/* harmony export */ $ZodCheckLowerCase: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckLowerCase),\n/* harmony export */ $ZodCheckMaxLength: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckMaxLength),\n/* harmony export */ $ZodCheckMaxSize: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckMaxSize),\n/* harmony export */ $ZodCheckMimeType: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckMimeType),\n/* harmony export */ $ZodCheckMinLength: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckMinLength),\n/* harmony export */ $ZodCheckMinSize: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckMinSize),\n/* harmony export */ $ZodCheckMultipleOf: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckMultipleOf),\n/* harmony export */ $ZodCheckNumberFormat: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckNumberFormat),\n/* harmony export */ $ZodCheckOverwrite: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckOverwrite),\n/* harmony export */ $ZodCheckProperty: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckProperty),\n/* harmony export */ $ZodCheckRegex: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckRegex),\n/* harmony export */ $ZodCheckSizeEquals: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckSizeEquals),\n/* harmony export */ $ZodCheckStartsWith: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckStartsWith),\n/* harmony export */ $ZodCheckStringFormat: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckStringFormat),\n/* harmony export */ $ZodCheckUpperCase: () => (/* reexport safe */ _checks_js__WEBPACK_IMPORTED_MODULE_4__.$ZodCheckUpperCase),\n/* harmony export */ $ZodCodec: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodCodec),\n/* harmony export */ $ZodCustom: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodCustom),\n/* harmony export */ $ZodCustomStringFormat: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodCustomStringFormat),\n/* harmony export */ $ZodDate: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodDate),\n/* harmony export */ $ZodDefault: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodDefault),\n/* harmony export */ $ZodDiscriminatedUnion: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodDiscriminatedUnion),\n/* harmony export */ $ZodE164: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodE164),\n/* harmony export */ $ZodEmail: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodEmail),\n/* harmony export */ $ZodEmoji: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodEmoji),\n/* harmony export */ $ZodEncodeError: () => (/* reexport safe */ _core_js__WEBPACK_IMPORTED_MODULE_0__.$ZodEncodeError),\n/* harmony export */ $ZodEnum: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodEnum),\n/* harmony export */ $ZodError: () => (/* reexport safe */ _errors_js__WEBPACK_IMPORTED_MODULE_2__.$ZodError),\n/* harmony export */ $ZodExactOptional: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodExactOptional),\n/* harmony export */ $ZodFile: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodFile),\n/* harmony export */ $ZodFunction: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodFunction),\n/* harmony export */ $ZodGUID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodGUID),\n/* harmony export */ $ZodIPv4: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodIPv4),\n/* harmony export */ $ZodIPv6: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodIPv6),\n/* harmony export */ $ZodISODate: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodISODate),\n/* harmony export */ $ZodISODateTime: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodISODateTime),\n/* harmony export */ $ZodISODuration: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodISODuration),\n/* harmony export */ $ZodISOTime: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodISOTime),\n/* harmony export */ $ZodIntersection: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodIntersection),\n/* harmony export */ $ZodJWT: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodJWT),\n/* harmony export */ $ZodKSUID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodKSUID),\n/* harmony export */ $ZodLazy: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodLazy),\n/* harmony export */ $ZodLiteral: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodLiteral),\n/* harmony export */ $ZodMAC: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodMAC),\n/* harmony export */ $ZodMap: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodMap),\n/* harmony export */ $ZodNaN: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodNaN),\n/* harmony export */ $ZodNanoID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodNanoID),\n/* harmony export */ $ZodNever: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodNever),\n/* harmony export */ $ZodNonOptional: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodNonOptional),\n/* harmony export */ $ZodNull: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodNull),\n/* harmony export */ $ZodNullable: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodNullable),\n/* harmony export */ $ZodNumber: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodNumber),\n/* harmony export */ $ZodNumberFormat: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodNumberFormat),\n/* harmony export */ $ZodObject: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodObject),\n/* harmony export */ $ZodObjectJIT: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodObjectJIT),\n/* harmony export */ $ZodOptional: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodOptional),\n/* harmony export */ $ZodPipe: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodPipe),\n/* harmony export */ $ZodPrefault: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodPrefault),\n/* harmony export */ $ZodPromise: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodPromise),\n/* harmony export */ $ZodReadonly: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodReadonly),\n/* harmony export */ $ZodRealError: () => (/* reexport safe */ _errors_js__WEBPACK_IMPORTED_MODULE_2__.$ZodRealError),\n/* harmony export */ $ZodRecord: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodRecord),\n/* harmony export */ $ZodRegistry: () => (/* reexport safe */ _registries_js__WEBPACK_IMPORTED_MODULE_9__.$ZodRegistry),\n/* harmony export */ $ZodSet: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodSet),\n/* harmony export */ $ZodString: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodString),\n/* harmony export */ $ZodStringFormat: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodStringFormat),\n/* harmony export */ $ZodSuccess: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodSuccess),\n/* harmony export */ $ZodSymbol: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodSymbol),\n/* harmony export */ $ZodTemplateLiteral: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodTemplateLiteral),\n/* harmony export */ $ZodTransform: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodTransform),\n/* harmony export */ $ZodTuple: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodTuple),\n/* harmony export */ $ZodType: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodType),\n/* harmony export */ $ZodULID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodULID),\n/* harmony export */ $ZodURL: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodURL),\n/* harmony export */ $ZodUUID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodUUID),\n/* harmony export */ $ZodUndefined: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodUndefined),\n/* harmony export */ $ZodUnion: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodUnion),\n/* harmony export */ $ZodUnknown: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodUnknown),\n/* harmony export */ $ZodVoid: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodVoid),\n/* harmony export */ $ZodXID: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodXID),\n/* harmony export */ $ZodXor: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.$ZodXor),\n/* harmony export */ $brand: () => (/* reexport safe */ _core_js__WEBPACK_IMPORTED_MODULE_0__.$brand),\n/* harmony export */ $constructor: () => (/* reexport safe */ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor),\n/* harmony export */ $input: () => (/* reexport safe */ _registries_js__WEBPACK_IMPORTED_MODULE_9__.$input),\n/* harmony export */ $output: () => (/* reexport safe */ _registries_js__WEBPACK_IMPORTED_MODULE_9__.$output),\n/* harmony export */ Doc: () => (/* reexport safe */ _doc_js__WEBPACK_IMPORTED_MODULE_10__.Doc),\n/* harmony export */ JSONSchema: () => (/* reexport module object */ _json_schema_js__WEBPACK_IMPORTED_MODULE_15__),\n/* harmony export */ JSONSchemaGenerator: () => (/* reexport safe */ _json_schema_generator_js__WEBPACK_IMPORTED_MODULE_14__.JSONSchemaGenerator),\n/* harmony export */ NEVER: () => (/* reexport safe */ _core_js__WEBPACK_IMPORTED_MODULE_0__.NEVER),\n/* harmony export */ TimePrecision: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__.TimePrecision),\n/* harmony export */ _any: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._any),\n/* harmony export */ _array: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._array),\n/* harmony export */ _base64: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._base64),\n/* harmony export */ _base64url: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._base64url),\n/* harmony export */ _bigint: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._bigint),\n/* harmony export */ _boolean: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._boolean),\n/* harmony export */ _catch: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._catch),\n/* harmony export */ _check: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._check),\n/* harmony export */ _cidrv4: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._cidrv4),\n/* harmony export */ _cidrv6: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._cidrv6),\n/* harmony export */ _coercedBigint: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._coercedBigint),\n/* harmony export */ _coercedBoolean: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._coercedBoolean),\n/* harmony export */ _coercedDate: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._coercedDate),\n/* harmony export */ _coercedNumber: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._coercedNumber),\n/* harmony export */ _coercedString: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._coercedString),\n/* harmony export */ _cuid: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._cuid),\n/* harmony export */ _cuid2: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._cuid2),\n/* harmony export */ _custom: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._custom),\n/* harmony export */ _date: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._date),\n/* harmony export */ _decode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._decode),\n/* harmony export */ _decodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._decodeAsync),\n/* harmony export */ _default: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._default),\n/* harmony export */ _discriminatedUnion: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._discriminatedUnion),\n/* harmony export */ _e164: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._e164),\n/* harmony export */ _email: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._email),\n/* harmony export */ _emoji: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._emoji),\n/* harmony export */ _encode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._encode),\n/* harmony export */ _encodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._encodeAsync),\n/* harmony export */ _endsWith: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._endsWith),\n/* harmony export */ _enum: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._enum),\n/* harmony export */ _file: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._file),\n/* harmony export */ _float32: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._float32),\n/* harmony export */ _float64: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._float64),\n/* harmony export */ _gt: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._gt),\n/* harmony export */ _gte: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._gte),\n/* harmony export */ _guid: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._guid),\n/* harmony export */ _includes: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._includes),\n/* harmony export */ _int: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._int),\n/* harmony export */ _int32: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._int32),\n/* harmony export */ _int64: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._int64),\n/* harmony export */ _intersection: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._intersection),\n/* harmony export */ _ipv4: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._ipv4),\n/* harmony export */ _ipv6: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._ipv6),\n/* harmony export */ _isoDate: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._isoDate),\n/* harmony export */ _isoDateTime: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._isoDateTime),\n/* harmony export */ _isoDuration: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._isoDuration),\n/* harmony export */ _isoTime: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._isoTime),\n/* harmony export */ _jwt: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._jwt),\n/* harmony export */ _ksuid: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._ksuid),\n/* harmony export */ _lazy: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._lazy),\n/* harmony export */ _length: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._length),\n/* harmony export */ _literal: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._literal),\n/* harmony export */ _lowercase: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._lowercase),\n/* harmony export */ _lt: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._lt),\n/* harmony export */ _lte: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._lte),\n/* harmony export */ _mac: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._mac),\n/* harmony export */ _map: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._map),\n/* harmony export */ _max: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._max),\n/* harmony export */ _maxLength: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._maxLength),\n/* harmony export */ _maxSize: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._maxSize),\n/* harmony export */ _mime: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._mime),\n/* harmony export */ _min: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._min),\n/* harmony export */ _minLength: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._minLength),\n/* harmony export */ _minSize: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._minSize),\n/* harmony export */ _multipleOf: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._multipleOf),\n/* harmony export */ _nan: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._nan),\n/* harmony export */ _nanoid: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._nanoid),\n/* harmony export */ _nativeEnum: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._nativeEnum),\n/* harmony export */ _negative: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._negative),\n/* harmony export */ _never: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._never),\n/* harmony export */ _nonnegative: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._nonnegative),\n/* harmony export */ _nonoptional: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._nonoptional),\n/* harmony export */ _nonpositive: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._nonpositive),\n/* harmony export */ _normalize: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._normalize),\n/* harmony export */ _null: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._null),\n/* harmony export */ _nullable: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._nullable),\n/* harmony export */ _number: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._number),\n/* harmony export */ _optional: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._optional),\n/* harmony export */ _overwrite: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._overwrite),\n/* harmony export */ _parse: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._parse),\n/* harmony export */ _parseAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._parseAsync),\n/* harmony export */ _pipe: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._pipe),\n/* harmony export */ _positive: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._positive),\n/* harmony export */ _promise: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._promise),\n/* harmony export */ _property: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._property),\n/* harmony export */ _readonly: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._readonly),\n/* harmony export */ _record: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._record),\n/* harmony export */ _refine: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._refine),\n/* harmony export */ _regex: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._regex),\n/* harmony export */ _safeDecode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._safeDecode),\n/* harmony export */ _safeDecodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._safeDecodeAsync),\n/* harmony export */ _safeEncode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._safeEncode),\n/* harmony export */ _safeEncodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._safeEncodeAsync),\n/* harmony export */ _safeParse: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._safeParse),\n/* harmony export */ _safeParseAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__._safeParseAsync),\n/* harmony export */ _set: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._set),\n/* harmony export */ _size: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._size),\n/* harmony export */ _slugify: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._slugify),\n/* harmony export */ _startsWith: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._startsWith),\n/* harmony export */ _string: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._string),\n/* harmony export */ _stringFormat: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._stringFormat),\n/* harmony export */ _stringbool: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._stringbool),\n/* harmony export */ _success: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._success),\n/* harmony export */ _superRefine: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._superRefine),\n/* harmony export */ _symbol: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._symbol),\n/* harmony export */ _templateLiteral: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._templateLiteral),\n/* harmony export */ _toLowerCase: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._toLowerCase),\n/* harmony export */ _toUpperCase: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._toUpperCase),\n/* harmony export */ _transform: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._transform),\n/* harmony export */ _trim: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._trim),\n/* harmony export */ _tuple: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._tuple),\n/* harmony export */ _uint32: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._uint32),\n/* harmony export */ _uint64: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._uint64),\n/* harmony export */ _ulid: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._ulid),\n/* harmony export */ _undefined: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._undefined),\n/* harmony export */ _union: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._union),\n/* harmony export */ _unknown: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._unknown),\n/* harmony export */ _uppercase: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._uppercase),\n/* harmony export */ _url: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._url),\n/* harmony export */ _uuid: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._uuid),\n/* harmony export */ _uuidv4: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._uuidv4),\n/* harmony export */ _uuidv6: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._uuidv6),\n/* harmony export */ _uuidv7: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._uuidv7),\n/* harmony export */ _void: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._void),\n/* harmony export */ _xid: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._xid),\n/* harmony export */ _xor: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__._xor),\n/* harmony export */ clone: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.clone),\n/* harmony export */ config: () => (/* reexport safe */ _core_js__WEBPACK_IMPORTED_MODULE_0__.config),\n/* harmony export */ createStandardJSONSchemaMethod: () => (/* reexport safe */ _to_json_schema_js__WEBPACK_IMPORTED_MODULE_12__.createStandardJSONSchemaMethod),\n/* harmony export */ createToJSONSchemaMethod: () => (/* reexport safe */ _to_json_schema_js__WEBPACK_IMPORTED_MODULE_12__.createToJSONSchemaMethod),\n/* harmony export */ decode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.decode),\n/* harmony export */ decodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.decodeAsync),\n/* harmony export */ describe: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__.describe),\n/* harmony export */ encode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.encode),\n/* harmony export */ encodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.encodeAsync),\n/* harmony export */ extractDefs: () => (/* reexport safe */ _to_json_schema_js__WEBPACK_IMPORTED_MODULE_12__.extractDefs),\n/* harmony export */ finalize: () => (/* reexport safe */ _to_json_schema_js__WEBPACK_IMPORTED_MODULE_12__.finalize),\n/* harmony export */ flattenError: () => (/* reexport safe */ _errors_js__WEBPACK_IMPORTED_MODULE_2__.flattenError),\n/* harmony export */ formatError: () => (/* reexport safe */ _errors_js__WEBPACK_IMPORTED_MODULE_2__.formatError),\n/* harmony export */ globalConfig: () => (/* reexport safe */ _core_js__WEBPACK_IMPORTED_MODULE_0__.globalConfig),\n/* harmony export */ globalRegistry: () => (/* reexport safe */ _registries_js__WEBPACK_IMPORTED_MODULE_9__.globalRegistry),\n/* harmony export */ initializeContext: () => (/* reexport safe */ _to_json_schema_js__WEBPACK_IMPORTED_MODULE_12__.initializeContext),\n/* harmony export */ isValidBase64: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.isValidBase64),\n/* harmony export */ isValidBase64URL: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.isValidBase64URL),\n/* harmony export */ isValidJWT: () => (/* reexport safe */ _schemas_js__WEBPACK_IMPORTED_MODULE_3__.isValidJWT),\n/* harmony export */ locales: () => (/* reexport module object */ _locales_index_js__WEBPACK_IMPORTED_MODULE_8__),\n/* harmony export */ meta: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_11__.meta),\n/* harmony export */ parse: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.parse),\n/* harmony export */ parseAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.parseAsync),\n/* harmony export */ prettifyError: () => (/* reexport safe */ _errors_js__WEBPACK_IMPORTED_MODULE_2__.prettifyError),\n/* harmony export */ process: () => (/* reexport safe */ _to_json_schema_js__WEBPACK_IMPORTED_MODULE_12__.process),\n/* harmony export */ regexes: () => (/* reexport module object */ _regexes_js__WEBPACK_IMPORTED_MODULE_7__),\n/* harmony export */ registry: () => (/* reexport safe */ _registries_js__WEBPACK_IMPORTED_MODULE_9__.registry),\n/* harmony export */ safeDecode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.safeDecode),\n/* harmony export */ safeDecodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.safeDecodeAsync),\n/* harmony export */ safeEncode: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.safeEncode),\n/* harmony export */ safeEncodeAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.safeEncodeAsync),\n/* harmony export */ safeParse: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.safeParse),\n/* harmony export */ safeParseAsync: () => (/* reexport safe */ _parse_js__WEBPACK_IMPORTED_MODULE_1__.safeParseAsync),\n/* harmony export */ toDotPath: () => (/* reexport safe */ _errors_js__WEBPACK_IMPORTED_MODULE_2__.toDotPath),\n/* harmony export */ toJSONSchema: () => (/* reexport safe */ _json_schema_processors_js__WEBPACK_IMPORTED_MODULE_13__.toJSONSchema),\n/* harmony export */ treeifyError: () => (/* reexport safe */ _errors_js__WEBPACK_IMPORTED_MODULE_2__.treeifyError),\n/* harmony export */ util: () => (/* reexport module object */ _util_js__WEBPACK_IMPORTED_MODULE_6__),\n/* harmony export */ version: () => (/* reexport safe */ _versions_js__WEBPACK_IMPORTED_MODULE_5__.version)\n/* harmony export */ });\n/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/parse.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./errors.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/errors.js\");\n/* harmony import */ var _schemas_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./schemas.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/schemas.js\");\n/* harmony import */ var _checks_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./checks.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/checks.js\");\n/* harmony import */ var _versions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./versions.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/versions.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n/* harmony import */ var _regexes_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./regexes.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/regexes.js\");\n/* harmony import */ var _locales_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../locales/index.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/index.js\");\n/* harmony import */ var _registries_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./registries.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/registries.js\");\n/* harmony import */ var _doc_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./doc.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/doc.js\");\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./api.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/api.js\");\n/* harmony import */ var _to_json_schema_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./to-json-schema.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/to-json-schema.js\");\n/* harmony import */ var _json_schema_processors_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./json-schema-processors.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/json-schema-processors.js\");\n/* harmony import */ var _json_schema_generator_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./json-schema-generator.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/json-schema-generator.js\");\n/* harmony import */ var _json_schema_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./json-schema.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/json-schema.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTBCO0FBQ0M7QUFDQztBQUNDO0FBQ0Q7QUFDRTtBQUNJO0FBQ007QUFDTztBQUNmO0FBQ1A7QUFDQTtBQUNXO0FBQ3VCO0FBQ007QUFDbEIiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNvcmVcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvcmUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BhcnNlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NjaGVtYXMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoZWNrcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmVyc2lvbnMuanNcIjtcbmV4cG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4vdXRpbC5qc1wiO1xuZXhwb3J0ICogYXMgcmVnZXhlcyBmcm9tIFwiLi9yZWdleGVzLmpzXCI7XG5leHBvcnQgKiBhcyBsb2NhbGVzIGZyb20gXCIuLi9sb2NhbGVzL2luZGV4LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZWdpc3RyaWVzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kb2MuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FwaS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG8tanNvbi1zY2hlbWEuanNcIjtcbmV4cG9ydCB7IHRvSlNPTlNjaGVtYSB9IGZyb20gXCIuL2pzb24tc2NoZW1hLXByb2Nlc3NvcnMuanNcIjtcbmV4cG9ydCB7IEpTT05TY2hlbWFHZW5lcmF0b3IgfSBmcm9tIFwiLi9qc29uLXNjaGVtYS1nZW5lcmF0b3IuanNcIjtcbmV4cG9ydCAqIGFzIEpTT05TY2hlbWEgZnJvbSBcIi4vanNvbi1zY2hlbWEuanNcIjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/json-schema-generator.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/zod/v4/core/json-schema-generator.js ***!
|
||
\***********************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ JSONSchemaGenerator: () => (/* binding */ JSONSchemaGenerator)\n/* harmony export */ });\n/* harmony import */ var _json_schema_processors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./json-schema-processors.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/json-schema-processors.js\");\n/* harmony import */ var _to_json_schema_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./to-json-schema.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/to-json-schema.js\");\n\n\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nclass JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_1__.initializeContext)({\n processors: _json_schema_processors_js__WEBPACK_IMPORTED_MODULE_0__.allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_1__.process)(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_1__.extractDefs)(this.ctx, schema);\n const result = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_1__.finalize)(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9qc29uLXNjaGVtYS1nZW5lcmF0b3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTREO0FBQzZCO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxvQkFBb0I7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsb0JBQW9CO0FBQzdEO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUVBQWlCO0FBQ3BDLHdCQUF3QixxRUFBYTtBQUNyQztBQUNBLHNDQUFzQywyQkFBMkI7QUFDakUsNkNBQTZDLHlDQUF5QztBQUN0RixzQ0FBc0MsMkJBQTJCO0FBQ2pFLGdDQUFnQyxlQUFlO0FBQy9DLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLDBCQUEwQjtBQUMxRCxlQUFlLDJEQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsK0RBQVc7QUFDbkIsdUJBQXVCLDREQUFRO0FBQy9CO0FBQ0EsZ0JBQWdCLGlDQUFpQztBQUNqRDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNvcmVcXGpzb24tc2NoZW1hLWdlbmVyYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbGxQcm9jZXNzb3JzIH0gZnJvbSBcIi4vanNvbi1zY2hlbWEtcHJvY2Vzc29ycy5qc1wiO1xuaW1wb3J0IHsgZXh0cmFjdERlZnMsIGZpbmFsaXplLCBpbml0aWFsaXplQ29udGV4dCwgcHJvY2VzcywgfSBmcm9tIFwiLi90by1qc29uLXNjaGVtYS5qc1wiO1xuLyoqXG4gKiBMZWdhY3kgY2xhc3MtYmFzZWQgaW50ZXJmYWNlIGZvciBKU09OIFNjaGVtYSBnZW5lcmF0aW9uLlxuICogVGhpcyBjbGFzcyB3cmFwcyB0aGUgbmV3IGZ1bmN0aW9uYWwgaW1wbGVtZW50YXRpb24gdG8gcHJvdmlkZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYHRvSlNPTlNjaGVtYWAgZnVuY3Rpb24gaW5zdGVhZCBmb3IgbmV3IGNvZGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIExlZ2FjeSB1c2FnZSAoc3RpbGwgc3VwcG9ydGVkKVxuICogY29uc3QgZ2VuID0gbmV3IEpTT05TY2hlbWFHZW5lcmF0b3IoeyB0YXJnZXQ6IFwiZHJhZnQtMDdcIiB9KTtcbiAqIGdlbi5wcm9jZXNzKHNjaGVtYSk7XG4gKiBjb25zdCByZXN1bHQgPSBnZW4uZW1pdChzY2hlbWEpO1xuICpcbiAqIC8vIFByZWZlcnJlZCBtb2Rlcm4gdXNhZ2VcbiAqIGNvbnN0IHJlc3VsdCA9IHRvSlNPTlNjaGVtYShzY2hlbWEsIHsgdGFyZ2V0OiBcImRyYWZ0LTA3XCIgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEpTT05TY2hlbWFHZW5lcmF0b3Ige1xuICAgIC8qKiBAZGVwcmVjYXRlZCBBY2Nlc3MgdmlhIGN0eCBpbnN0ZWFkICovXG4gICAgZ2V0IG1ldGFkYXRhUmVnaXN0cnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN0eC5tZXRhZGF0YVJlZ2lzdHJ5O1xuICAgIH1cbiAgICAvKiogQGRlcHJlY2F0ZWQgQWNjZXNzIHZpYSBjdHggaW5zdGVhZCAqL1xuICAgIGdldCB0YXJnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN0eC50YXJnZXQ7XG4gICAgfVxuICAgIC8qKiBAZGVwcmVjYXRlZCBBY2Nlc3MgdmlhIGN0eCBpbnN0ZWFkICovXG4gICAgZ2V0IHVucmVwcmVzZW50YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3R4LnVucmVwcmVzZW50YWJsZTtcbiAgICB9XG4gICAgLyoqIEBkZXByZWNhdGVkIEFjY2VzcyB2aWEgY3R4IGluc3RlYWQgKi9cbiAgICBnZXQgb3ZlcnJpZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN0eC5vdmVycmlkZTtcbiAgICB9XG4gICAgLyoqIEBkZXByZWNhdGVkIEFjY2VzcyB2aWEgY3R4IGluc3RlYWQgKi9cbiAgICBnZXQgaW8oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN0eC5pbztcbiAgICB9XG4gICAgLyoqIEBkZXByZWNhdGVkIEFjY2VzcyB2aWEgY3R4IGluc3RlYWQgKi9cbiAgICBnZXQgY291bnRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3R4LmNvdW50ZXI7XG4gICAgfVxuICAgIHNldCBjb3VudGVyKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY3R4LmNvdW50ZXIgPSB2YWx1ZTtcbiAgICB9XG4gICAgLyoqIEBkZXByZWNhdGVkIEFjY2VzcyB2aWEgY3R4IGluc3RlYWQgKi9cbiAgICBnZXQgc2VlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3R4LnNlZW47XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhcmFtcykge1xuICAgICAgICAvLyBOb3JtYWxpemUgdGFyZ2V0IGZvciBpbnRlcm5hbCBjb250ZXh0XG4gICAgICAgIGxldCBub3JtYWxpemVkVGFyZ2V0ID0gcGFyYW1zPy50YXJnZXQgPz8gXCJkcmFmdC0yMDIwLTEyXCI7XG4gICAgICAgIGlmIChub3JtYWxpemVkVGFyZ2V0ID09PSBcImRyYWZ0LTRcIilcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRUYXJnZXQgPSBcImRyYWZ0LTA0XCI7XG4gICAgICAgIGlmIChub3JtYWxpemVkVGFyZ2V0ID09PSBcImRyYWZ0LTdcIilcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRUYXJnZXQgPSBcImRyYWZ0LTA3XCI7XG4gICAgICAgIHRoaXMuY3R4ID0gaW5pdGlhbGl6ZUNvbnRleHQoe1xuICAgICAgICAgICAgcHJvY2Vzc29yczogYWxsUHJvY2Vzc29ycyxcbiAgICAgICAgICAgIHRhcmdldDogbm9ybWFsaXplZFRhcmdldCxcbiAgICAgICAgICAgIC4uLihwYXJhbXM/Lm1ldGFkYXRhICYmIHsgbWV0YWRhdGE6IHBhcmFtcy5tZXRhZGF0YSB9KSxcbiAgICAgICAgICAgIC4uLihwYXJhbXM/LnVucmVwcmVzZW50YWJsZSAmJiB7IHVucmVwcmVzZW50YWJsZTogcGFyYW1zLnVucmVwcmVzZW50YWJsZSB9KSxcbiAgICAgICAgICAgIC4uLihwYXJhbXM/Lm92ZXJyaWRlICYmIHsgb3ZlcnJpZGU6IHBhcmFtcy5vdmVycmlkZSB9KSxcbiAgICAgICAgICAgIC4uLihwYXJhbXM/LmlvICYmIHsgaW86IHBhcmFtcy5pbyB9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgYSBzY2hlbWEgdG8gcHJlcGFyZSBpdCBmb3IgSlNPTiBTY2hlbWEgZ2VuZXJhdGlvbi5cbiAgICAgKiBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBlbWl0KCkuXG4gICAgICovXG4gICAgcHJvY2VzcyhzY2hlbWEsIF9wYXJhbXMgPSB7IHBhdGg6IFtdLCBzY2hlbWFQYXRoOiBbXSB9KSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzKHNjaGVtYSwgdGhpcy5jdHgsIF9wYXJhbXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWl0IHRoZSBmaW5hbCBKU09OIFNjaGVtYSBhZnRlciBwcm9jZXNzaW5nLlxuICAgICAqIE11c3QgY2FsbCBwcm9jZXNzKCkgZmlyc3QuXG4gICAgICovXG4gICAgZW1pdChzY2hlbWEsIF9wYXJhbXMpIHtcbiAgICAgICAgLy8gQXBwbHkgZW1pdCBwYXJhbXMgdG8gdGhlIGNvbnRleHRcbiAgICAgICAgaWYgKF9wYXJhbXMpIHtcbiAgICAgICAgICAgIGlmIChfcGFyYW1zLmN5Y2xlcylcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5jeWNsZXMgPSBfcGFyYW1zLmN5Y2xlcztcbiAgICAgICAgICAgIGlmIChfcGFyYW1zLnJldXNlZClcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5yZXVzZWQgPSBfcGFyYW1zLnJldXNlZDtcbiAgICAgICAgICAgIGlmIChfcGFyYW1zLmV4dGVybmFsKVxuICAgICAgICAgICAgICAgIHRoaXMuY3R4LmV4dGVybmFsID0gX3BhcmFtcy5leHRlcm5hbDtcbiAgICAgICAgfVxuICAgICAgICBleHRyYWN0RGVmcyh0aGlzLmN0eCwgc2NoZW1hKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZmluYWxpemUodGhpcy5jdHgsIHNjaGVtYSk7XG4gICAgICAgIC8vIFN0cmlwIH5zdGFuZGFyZCBwcm9wZXJ0eSB0byBtYXRjaCBvbGQgaW1wbGVtZW50YXRpb24ncyByZXR1cm4gdHlwZVxuICAgICAgICBjb25zdCB7IFwifnN0YW5kYXJkXCI6IF8sIC4uLnBsYWluUmVzdWx0IH0gPSByZXN1bHQ7XG4gICAgICAgIHJldHVybiBwbGFpblJlc3VsdDtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/json-schema-generator.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/json-schema-processors.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/zod/v4/core/json-schema-processors.js ***!
|
||
\************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ allProcessors: () => (/* binding */ allProcessors),\n/* harmony export */ anyProcessor: () => (/* binding */ anyProcessor),\n/* harmony export */ arrayProcessor: () => (/* binding */ arrayProcessor),\n/* harmony export */ bigintProcessor: () => (/* binding */ bigintProcessor),\n/* harmony export */ booleanProcessor: () => (/* binding */ booleanProcessor),\n/* harmony export */ catchProcessor: () => (/* binding */ catchProcessor),\n/* harmony export */ customProcessor: () => (/* binding */ customProcessor),\n/* harmony export */ dateProcessor: () => (/* binding */ dateProcessor),\n/* harmony export */ defaultProcessor: () => (/* binding */ defaultProcessor),\n/* harmony export */ enumProcessor: () => (/* binding */ enumProcessor),\n/* harmony export */ fileProcessor: () => (/* binding */ fileProcessor),\n/* harmony export */ functionProcessor: () => (/* binding */ functionProcessor),\n/* harmony export */ intersectionProcessor: () => (/* binding */ intersectionProcessor),\n/* harmony export */ lazyProcessor: () => (/* binding */ lazyProcessor),\n/* harmony export */ literalProcessor: () => (/* binding */ literalProcessor),\n/* harmony export */ mapProcessor: () => (/* binding */ mapProcessor),\n/* harmony export */ nanProcessor: () => (/* binding */ nanProcessor),\n/* harmony export */ neverProcessor: () => (/* binding */ neverProcessor),\n/* harmony export */ nonoptionalProcessor: () => (/* binding */ nonoptionalProcessor),\n/* harmony export */ nullProcessor: () => (/* binding */ nullProcessor),\n/* harmony export */ nullableProcessor: () => (/* binding */ nullableProcessor),\n/* harmony export */ numberProcessor: () => (/* binding */ numberProcessor),\n/* harmony export */ objectProcessor: () => (/* binding */ objectProcessor),\n/* harmony export */ optionalProcessor: () => (/* binding */ optionalProcessor),\n/* harmony export */ pipeProcessor: () => (/* binding */ pipeProcessor),\n/* harmony export */ prefaultProcessor: () => (/* binding */ prefaultProcessor),\n/* harmony export */ promiseProcessor: () => (/* binding */ promiseProcessor),\n/* harmony export */ readonlyProcessor: () => (/* binding */ readonlyProcessor),\n/* harmony export */ recordProcessor: () => (/* binding */ recordProcessor),\n/* harmony export */ setProcessor: () => (/* binding */ setProcessor),\n/* harmony export */ stringProcessor: () => (/* binding */ stringProcessor),\n/* harmony export */ successProcessor: () => (/* binding */ successProcessor),\n/* harmony export */ symbolProcessor: () => (/* binding */ symbolProcessor),\n/* harmony export */ templateLiteralProcessor: () => (/* binding */ templateLiteralProcessor),\n/* harmony export */ toJSONSchema: () => (/* binding */ toJSONSchema),\n/* harmony export */ transformProcessor: () => (/* binding */ transformProcessor),\n/* harmony export */ tupleProcessor: () => (/* binding */ tupleProcessor),\n/* harmony export */ undefinedProcessor: () => (/* binding */ undefinedProcessor),\n/* harmony export */ unionProcessor: () => (/* binding */ unionProcessor),\n/* harmony export */ unknownProcessor: () => (/* binding */ unknownProcessor),\n/* harmony export */ voidProcessor: () => (/* binding */ voidProcessor)\n/* harmony export */ });\n/* harmony import */ var _to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./to-json-schema.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/to-json-schema.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\n\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nconst stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nconst numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nconst booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nconst bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nconst symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nconst nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nconst undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nconst voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nconst neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nconst anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nconst unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nconst dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nconst enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = (0,_util_js__WEBPACK_IMPORTED_MODULE_1__.getEnumValues)(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nconst literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nconst nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nconst templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nconst fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nconst successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nconst customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nconst functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nconst transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nconst mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nconst setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nconst arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nconst objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nconst unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nconst intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nconst tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nconst recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nconst nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nconst nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nconst defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nconst prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nconst catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nconst pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nconst readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nconst promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nconst optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nconst lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nconst allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nfunction toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.initializeContext)({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.extractDefs)(ctx, schema);\n schemas[key] = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.finalize)(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.initializeContext)({ ...params, processors: allProcessors });\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.process)(input, ctx);\n (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.extractDefs)(ctx, input);\n return (0,_to_json_schema_js__WEBPACK_IMPORTED_MODULE_0__.finalize)(ctx, input);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9qc29uLXNjaGVtYS1wcm9jZXNzb3JzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBeUY7QUFDL0M7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLFlBQVksc0RBQXNEO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsWUFBWSwyRUFBMkU7QUFDdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLG1CQUFtQix1REFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUJBQXlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDLDZDQUE2QyxxQkFBcUIsSUFBSTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsWUFBWSxtQkFBbUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyREFBTyxxQkFBcUIsNENBQTRDO0FBQ3pGO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkRBQU87QUFDdEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsMkRBQU87QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QywyREFBTztBQUNyRDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLGNBQWMsMkRBQU87QUFDckI7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjLDJEQUFPO0FBQ3JCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsMkRBQU87QUFDdkQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFVBQVUsMkRBQU87QUFDakI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxtQkFBbUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwyREFBTztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsMkRBQU87QUFDeEM7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLG9DQUFvQywyREFBTztBQUMzQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLGtCQUFrQiwyREFBTztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsY0FBYztBQUM3QztBQUNBO0FBQ087QUFDUDtBQUNBLElBQUksMkRBQU87QUFDWDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsSUFBSSwyREFBTztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLElBQUksMkRBQU87QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLElBQUksMkRBQU87QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsSUFBSSwyREFBTztBQUNYO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxJQUFJLDJEQUFPO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsSUFBSSwyREFBTztBQUNYO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxJQUFJLDJEQUFPO0FBQ1g7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLElBQUksMkRBQU87QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixxRUFBaUIsR0FBRyxzQ0FBc0M7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksK0RBQVc7QUFDdkIsMkJBQTJCLDREQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxnQkFBZ0IscUVBQWlCLEdBQUcsc0NBQXNDO0FBQzFFLElBQUksMkRBQU87QUFDWCxJQUFJLCtEQUFXO0FBQ2YsV0FBVyw0REFBUTtBQUNuQiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcY29yZVxcanNvbi1zY2hlbWEtcHJvY2Vzc29ycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHRyYWN0RGVmcywgZmluYWxpemUsIGluaXRpYWxpemVDb250ZXh0LCBwcm9jZXNzLCB9IGZyb20gXCIuL3RvLWpzb24tc2NoZW1hLmpzXCI7XG5pbXBvcnQgeyBnZXRFbnVtVmFsdWVzIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuY29uc3QgZm9ybWF0TWFwID0ge1xuICAgIGd1aWQ6IFwidXVpZFwiLFxuICAgIHVybDogXCJ1cmlcIixcbiAgICBkYXRldGltZTogXCJkYXRlLXRpbWVcIixcbiAgICBqc29uX3N0cmluZzogXCJqc29uLXN0cmluZ1wiLFxuICAgIHJlZ2V4OiBcIlwiLCAvLyBkbyBub3Qgc2V0XG59O1xuLy8gPT09PT09PT09PT09PT09PT09PT0gU0lNUExFIFRZUEUgUFJPQ0VTU09SUyA9PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNvbnN0IHN0cmluZ1Byb2Nlc3NvciA9IChzY2hlbWEsIGN0eCwgX2pzb24sIF9wYXJhbXMpID0+IHtcbiAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAganNvbi50eXBlID0gXCJzdHJpbmdcIjtcbiAgICBjb25zdCB7IG1pbmltdW0sIG1heGltdW0sIGZvcm1hdCwgcGF0dGVybnMsIGNvbnRlbnRFbmNvZGluZyB9ID0gc2NoZW1hLl96b2RcbiAgICAgICAgLmJhZztcbiAgICBpZiAodHlwZW9mIG1pbmltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgIGpzb24ubWluTGVuZ3RoID0gbWluaW11bTtcbiAgICBpZiAodHlwZW9mIG1heGltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgIGpzb24ubWF4TGVuZ3RoID0gbWF4aW11bTtcbiAgICAvLyBjdXN0b20gcGF0dGVybiBvdmVycmlkZXMgZm9ybWF0XG4gICAgaWYgKGZvcm1hdCkge1xuICAgICAgICBqc29uLmZvcm1hdCA9IGZvcm1hdE1hcFtmb3JtYXRdID8/IGZvcm1hdDtcbiAgICAgICAgaWYgKGpzb24uZm9ybWF0ID09PSBcIlwiKVxuICAgICAgICAgICAgZGVsZXRlIGpzb24uZm9ybWF0OyAvLyBlbXB0eSBmb3JtYXQgaXMgbm90IHZhbGlkXG4gICAgICAgIC8vIEpTT04gU2NoZW1hIGZvcm1hdDogXCJ0aW1lXCIgcmVxdWlyZXMgYSBmdWxsIHRpbWUgd2l0aCBvZmZzZXQgb3IgWlxuICAgICAgICAvLyB6Lmlzby50aW1lKCkgZG9lcyBub3QgaW5jbHVkZSB0aW1lem9uZSBpbmZvcm1hdGlvbiwgc28gZm9ybWF0OiBcInRpbWVcIiBzaG91bGQgbmV2ZXIgYmUgdXNlZFxuICAgICAgICBpZiAoZm9ybWF0ID09PSBcInRpbWVcIikge1xuICAgICAgICAgICAgZGVsZXRlIGpzb24uZm9ybWF0O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb250ZW50RW5jb2RpbmcpXG4gICAgICAgIGpzb24uY29udGVudEVuY29kaW5nID0gY29udGVudEVuY29kaW5nO1xuICAgIGlmIChwYXR0ZXJucyAmJiBwYXR0ZXJucy5zaXplID4gMCkge1xuICAgICAgICBjb25zdCByZWdleGVzID0gWy4uLnBhdHRlcm5zXTtcbiAgICAgICAgaWYgKHJlZ2V4ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAganNvbi5wYXR0ZXJuID0gcmVnZXhlc1swXS5zb3VyY2U7XG4gICAgICAgIGVsc2UgaWYgKHJlZ2V4ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAganNvbi5hbGxPZiA9IFtcbiAgICAgICAgICAgICAgICAuLi5yZWdleGVzLm1hcCgocmVnZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLihjdHgudGFyZ2V0ID09PSBcImRyYWZ0LTA3XCIgfHwgY3R4LnRhcmdldCA9PT0gXCJkcmFmdC0wNFwiIHx8IGN0eC50YXJnZXQgPT09IFwib3BlbmFwaS0zLjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7IHR5cGU6IFwic3RyaW5nXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHJlZ2V4LnNvdXJjZSxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgfVxufTtcbmV4cG9ydCBjb25zdCBudW1iZXJQcm9jZXNzb3IgPSAoc2NoZW1hLCBjdHgsIF9qc29uLCBfcGFyYW1zKSA9PiB7XG4gICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgIGNvbnN0IHsgbWluaW11bSwgbWF4aW11bSwgZm9ybWF0LCBtdWx0aXBsZU9mLCBleGNsdXNpdmVNYXhpbXVtLCBleGNsdXNpdmVNaW5pbXVtIH0gPSBzY2hlbWEuX3pvZC5iYWc7XG4gICAgaWYgKHR5cGVvZiBmb3JtYXQgPT09IFwic3RyaW5nXCIgJiYgZm9ybWF0LmluY2x1ZGVzKFwiaW50XCIpKVxuICAgICAgICBqc29uLnR5cGUgPSBcImludGVnZXJcIjtcbiAgICBlbHNlXG4gICAgICAgIGpzb24udHlwZSA9IFwibnVtYmVyXCI7XG4gICAgaWYgKHR5cGVvZiBleGNsdXNpdmVNaW5pbXVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIGlmIChjdHgudGFyZ2V0ID09PSBcImRyYWZ0LTA0XCIgfHwgY3R4LnRhcmdldCA9PT0gXCJvcGVuYXBpLTMuMFwiKSB7XG4gICAgICAgICAgICBqc29uLm1pbmltdW0gPSBleGNsdXNpdmVNaW5pbXVtO1xuICAgICAgICAgICAganNvbi5leGNsdXNpdmVNaW5pbXVtID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGpzb24uZXhjbHVzaXZlTWluaW11bSA9IGV4Y2x1c2l2ZU1pbmltdW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtaW5pbXVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIGpzb24ubWluaW11bSA9IG1pbmltdW07XG4gICAgICAgIGlmICh0eXBlb2YgZXhjbHVzaXZlTWluaW11bSA9PT0gXCJudW1iZXJcIiAmJiBjdHgudGFyZ2V0ICE9PSBcImRyYWZ0LTA0XCIpIHtcbiAgICAgICAgICAgIGlmIChleGNsdXNpdmVNaW5pbXVtID49IG1pbmltdW0pXG4gICAgICAgICAgICAgICAgZGVsZXRlIGpzb24ubWluaW11bTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkZWxldGUganNvbi5leGNsdXNpdmVNaW5pbXVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZXhjbHVzaXZlTWF4aW11bSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBpZiAoY3R4LnRhcmdldCA9PT0gXCJkcmFmdC0wNFwiIHx8IGN0eC50YXJnZXQgPT09IFwib3BlbmFwaS0zLjBcIikge1xuICAgICAgICAgICAganNvbi5tYXhpbXVtID0gZXhjbHVzaXZlTWF4aW11bTtcbiAgICAgICAgICAgIGpzb24uZXhjbHVzaXZlTWF4aW11bSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBqc29uLmV4Y2x1c2l2ZU1heGltdW0gPSBleGNsdXNpdmVNYXhpbXVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWF4aW11bSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBqc29uLm1heGltdW0gPSBtYXhpbXVtO1xuICAgICAgICBpZiAodHlwZW9mIGV4Y2x1c2l2ZU1heGltdW0gPT09IFwibnVtYmVyXCIgJiYgY3R4LnRhcmdldCAhPT0gXCJkcmFmdC0wNFwiKSB7XG4gICAgICAgICAgICBpZiAoZXhjbHVzaXZlTWF4aW11bSA8PSBtYXhpbXVtKVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLm1heGltdW07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGVsZXRlIGpzb24uZXhjbHVzaXZlTWF4aW11bTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG11bHRpcGxlT2YgPT09IFwibnVtYmVyXCIpXG4gICAgICAgIGpzb24ubXVsdGlwbGVPZiA9IG11bHRpcGxlT2Y7XG59O1xuZXhwb3J0IGNvbnN0IGJvb2xlYW5Qcm9jZXNzb3IgPSAoX3NjaGVtYSwgX2N0eCwganNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGpzb24udHlwZSA9IFwiYm9vbGVhblwiO1xufTtcbmV4cG9ydCBjb25zdCBiaWdpbnRQcm9jZXNzb3IgPSAoX3NjaGVtYSwgY3R4LCBfanNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGlmIChjdHgudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQmlnSW50IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IHN5bWJvbFByb2Nlc3NvciA9IChfc2NoZW1hLCBjdHgsIF9qc29uLCBfcGFyYW1zKSA9PiB7XG4gICAgaWYgKGN0eC51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW1ib2xzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IG51bGxQcm9jZXNzb3IgPSAoX3NjaGVtYSwgY3R4LCBqc29uLCBfcGFyYW1zKSA9PiB7XG4gICAgaWYgKGN0eC50YXJnZXQgPT09IFwib3BlbmFwaS0zLjBcIikge1xuICAgICAgICBqc29uLnR5cGUgPSBcInN0cmluZ1wiO1xuICAgICAgICBqc29uLm51bGxhYmxlID0gdHJ1ZTtcbiAgICAgICAganNvbi5lbnVtID0gW251bGxdO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAganNvbi50eXBlID0gXCJudWxsXCI7XG4gICAgfVxufTtcbmV4cG9ydCBjb25zdCB1bmRlZmluZWRQcm9jZXNzb3IgPSAoX3NjaGVtYSwgY3R4LCBfanNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGlmIChjdHgudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5kZWZpbmVkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IHZvaWRQcm9jZXNzb3IgPSAoX3NjaGVtYSwgY3R4LCBfanNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGlmIChjdHgudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVm9pZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgfVxufTtcbmV4cG9ydCBjb25zdCBuZXZlclByb2Nlc3NvciA9IChfc2NoZW1hLCBfY3R4LCBqc29uLCBfcGFyYW1zKSA9PiB7XG4gICAganNvbi5ub3QgPSB7fTtcbn07XG5leHBvcnQgY29uc3QgYW55UHJvY2Vzc29yID0gKF9zY2hlbWEsIF9jdHgsIF9qc29uLCBfcGFyYW1zKSA9PiB7XG4gICAgLy8gZW1wdHkgc2NoZW1hIGFjY2VwdHMgYW55dGhpbmdcbn07XG5leHBvcnQgY29uc3QgdW5rbm93blByb2Nlc3NvciA9IChfc2NoZW1hLCBfY3R4LCBfanNvbiwgX3BhcmFtcykgPT4ge1xuICAgIC8vIGVtcHR5IHNjaGVtYSBhY2NlcHRzIGFueXRoaW5nXG59O1xuZXhwb3J0IGNvbnN0IGRhdGVQcm9jZXNzb3IgPSAoX3NjaGVtYSwgY3R4LCBfanNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGlmIChjdHgudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgfVxufTtcbmV4cG9ydCBjb25zdCBlbnVtUHJvY2Vzc29yID0gKHNjaGVtYSwgX2N0eCwganNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGNvbnN0IGRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICBjb25zdCB2YWx1ZXMgPSBnZXRFbnVtVmFsdWVzKGRlZi5lbnRyaWVzKTtcbiAgICAvLyBOdW1iZXIgZW51bXMgY2FuIGhhdmUgYm90aCBzdHJpbmcgYW5kIG51bWJlciB2YWx1ZXNcbiAgICBpZiAodmFsdWVzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikpXG4gICAgICAgIGpzb24udHlwZSA9IFwibnVtYmVyXCI7XG4gICAgaWYgKHZhbHVlcy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIpKVxuICAgICAgICBqc29uLnR5cGUgPSBcInN0cmluZ1wiO1xuICAgIGpzb24uZW51bSA9IHZhbHVlcztcbn07XG5leHBvcnQgY29uc3QgbGl0ZXJhbFByb2Nlc3NvciA9IChzY2hlbWEsIGN0eCwganNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGNvbnN0IGRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICBjb25zdCB2YWxzID0gW107XG4gICAgZm9yIChjb25zdCB2YWwgb2YgZGVmLnZhbHVlcykge1xuICAgICAgICBpZiAodmFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChjdHgudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMaXRlcmFsIGB1bmRlZmluZWRgIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgdG8gdmFsc1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09IFwiYmlnaW50XCIpIHtcbiAgICAgICAgICAgIGlmIChjdHgudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCaWdJbnQgbGl0ZXJhbHMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFscy5wdXNoKE51bWJlcih2YWwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhbHMucHVzaCh2YWwpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh2YWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBkbyBub3RoaW5nIChhbiB1bmRlZmluZWQgbGl0ZXJhbCB3YXMgc3RyaXBwZWQpXG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHZhbHNbMF07XG4gICAgICAgIGpzb24udHlwZSA9IHZhbCA9PT0gbnVsbCA/IFwibnVsbFwiIDogdHlwZW9mIHZhbDtcbiAgICAgICAgaWYgKGN0eC50YXJnZXQgPT09IFwiZHJhZnQtMDRcIiB8fCBjdHgudGFyZ2V0ID09PSBcIm9wZW5hcGktMy4wXCIpIHtcbiAgICAgICAgICAgIGpzb24uZW51bSA9IFt2YWxdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAganNvbi5jb25zdCA9IHZhbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKHZhbHMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSlcbiAgICAgICAgICAgIGpzb24udHlwZSA9IFwibnVtYmVyXCI7XG4gICAgICAgIGlmICh2YWxzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikpXG4gICAgICAgICAgICBqc29uLnR5cGUgPSBcInN0cmluZ1wiO1xuICAgICAgICBpZiAodmFscy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSlcbiAgICAgICAgICAgIGpzb24udHlwZSA9IFwiYm9vbGVhblwiO1xuICAgICAgICBpZiAodmFscy5ldmVyeSgodikgPT4gdiA9PT0gbnVsbCkpXG4gICAgICAgICAgICBqc29uLnR5cGUgPSBcIm51bGxcIjtcbiAgICAgICAganNvbi5lbnVtID0gdmFscztcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IG5hblByb2Nlc3NvciA9IChfc2NoZW1hLCBjdHgsIF9qc29uLCBfcGFyYW1zKSA9PiB7XG4gICAgaWYgKGN0eC51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOYU4gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgIH1cbn07XG5leHBvcnQgY29uc3QgdGVtcGxhdGVMaXRlcmFsUHJvY2Vzc29yID0gKHNjaGVtYSwgX2N0eCwganNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGNvbnN0IF9qc29uID0ganNvbjtcbiAgICBjb25zdCBwYXR0ZXJuID0gc2NoZW1hLl96b2QucGF0dGVybjtcbiAgICBpZiAoIXBhdHRlcm4pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdHRlcm4gbm90IGZvdW5kIGluIHRlbXBsYXRlIGxpdGVyYWxcIik7XG4gICAgX2pzb24udHlwZSA9IFwic3RyaW5nXCI7XG4gICAgX2pzb24ucGF0dGVybiA9IHBhdHRlcm4uc291cmNlO1xufTtcbmV4cG9ydCBjb25zdCBmaWxlUHJvY2Vzc29yID0gKHNjaGVtYSwgX2N0eCwganNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGNvbnN0IF9qc29uID0ganNvbjtcbiAgICBjb25zdCBmaWxlID0ge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiYmluYXJ5XCIsXG4gICAgICAgIGNvbnRlbnRFbmNvZGluZzogXCJiaW5hcnlcIixcbiAgICB9O1xuICAgIGNvbnN0IHsgbWluaW11bSwgbWF4aW11bSwgbWltZSB9ID0gc2NoZW1hLl96b2QuYmFnO1xuICAgIGlmIChtaW5pbXVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgIGZpbGUubWluTGVuZ3RoID0gbWluaW11bTtcbiAgICBpZiAobWF4aW11bSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICBmaWxlLm1heExlbmd0aCA9IG1heGltdW07XG4gICAgaWYgKG1pbWUpIHtcbiAgICAgICAgaWYgKG1pbWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBmaWxlLmNvbnRlbnRNZWRpYVR5cGUgPSBtaW1lWzBdO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihfanNvbiwgZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKF9qc29uLCBmaWxlKTsgLy8gc2hhcmVkIHByb3BzIGF0IHJvb3RcbiAgICAgICAgICAgIF9qc29uLmFueU9mID0gbWltZS5tYXAoKG0pID0+ICh7IGNvbnRlbnRNZWRpYVR5cGU6IG0gfSkpOyAvLyBvbmx5IGNvbnRlbnRNZWRpYVR5cGUgZGlmZmVyc1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBPYmplY3QuYXNzaWduKF9qc29uLCBmaWxlKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IHN1Y2Nlc3NQcm9jZXNzb3IgPSAoX3NjaGVtYSwgX2N0eCwganNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGpzb24udHlwZSA9IFwiYm9vbGVhblwiO1xufTtcbmV4cG9ydCBjb25zdCBjdXN0b21Qcm9jZXNzb3IgPSAoX3NjaGVtYSwgY3R4LCBfanNvbiwgX3BhcmFtcykgPT4ge1xuICAgIGlmIChjdHgudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ3VzdG9tIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IGZ1bmN0aW9uUHJvY2Vzc29yID0gKF9zY2hlbWEsIGN0eCwgX2pzb24sIF9wYXJhbXMpID0+IHtcbiAgICBpZiAoY3R4LnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZ1bmN0aW9uIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVByb2Nlc3NvciA9IChfc2NoZW1hLCBjdHgsIF9qc29uLCBfcGFyYW1zKSA9PiB7XG4gICAgaWYgKGN0eC51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmFuc2Zvcm1zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IG1hcFByb2Nlc3NvciA9IChfc2NoZW1hLCBjdHgsIF9qc29uLCBfcGFyYW1zKSA9PiB7XG4gICAgaWYgKGN0eC51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNYXAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgIH1cbn07XG5leHBvcnQgY29uc3Qgc2V0UHJvY2Vzc29yID0gKF9zY2hlbWEsIGN0eCwgX2pzb24sIF9wYXJhbXMpID0+IHtcbiAgICBpZiAoY3R4LnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNldCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgfVxufTtcbi8vID09PT09PT09PT09PT09PT09PT09IENPTVBPU0lURSBUWVBFIFBST0NFU1NPUlMgPT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBjb25zdCBhcnJheVByb2Nlc3NvciA9IChzY2hlbWEsIGN0eCwgX2pzb24sIHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICBjb25zdCBkZWYgPSBzY2hlbWEuX3pvZC5kZWY7XG4gICAgY29uc3QgeyBtaW5pbXVtLCBtYXhpbXVtIH0gPSBzY2hlbWEuX3pvZC5iYWc7XG4gICAgaWYgKHR5cGVvZiBtaW5pbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICBqc29uLm1pbkl0ZW1zID0gbWluaW11bTtcbiAgICBpZiAodHlwZW9mIG1heGltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgIGpzb24ubWF4SXRlbXMgPSBtYXhpbXVtO1xuICAgIGpzb24udHlwZSA9IFwiYXJyYXlcIjtcbiAgICBqc29uLml0ZW1zID0gcHJvY2VzcyhkZWYuZWxlbWVudCwgY3R4LCB7IC4uLnBhcmFtcywgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcIml0ZW1zXCJdIH0pO1xufTtcbmV4cG9ydCBjb25zdCBvYmplY3RQcm9jZXNzb3IgPSAoc2NoZW1hLCBjdHgsIF9qc29uLCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgY29uc3QgZGVmID0gc2NoZW1hLl96b2QuZGVmO1xuICAgIGpzb24udHlwZSA9IFwib2JqZWN0XCI7XG4gICAganNvbi5wcm9wZXJ0aWVzID0ge307XG4gICAgY29uc3Qgc2hhcGUgPSBkZWYuc2hhcGU7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gc2hhcGUpIHtcbiAgICAgICAganNvbi5wcm9wZXJ0aWVzW2tleV0gPSBwcm9jZXNzKHNoYXBlW2tleV0sIGN0eCwge1xuICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcInByb3BlcnRpZXNcIiwga2V5XSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIHJlcXVpcmVkIGtleXNcbiAgICBjb25zdCBhbGxLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyhzaGFwZSkpO1xuICAgIGNvbnN0IHJlcXVpcmVkS2V5cyA9IG5ldyBTZXQoWy4uLmFsbEtleXNdLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSBkZWYuc2hhcGVba2V5XS5fem9kO1xuICAgICAgICBpZiAoY3R4LmlvID09PSBcImlucHV0XCIpIHtcbiAgICAgICAgICAgIHJldHVybiB2Lm9wdGluID09PSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdi5vcHRvdXQgPT09IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICBpZiAocmVxdWlyZWRLZXlzLnNpemUgPiAwKSB7XG4gICAgICAgIGpzb24ucmVxdWlyZWQgPSBBcnJheS5mcm9tKHJlcXVpcmVkS2V5cyk7XG4gICAgfVxuICAgIC8vIGNhdGNoYWxsXG4gICAgaWYgKGRlZi5jYXRjaGFsbD8uX3pvZC5kZWYudHlwZSA9PT0gXCJuZXZlclwiKSB7XG4gICAgICAgIC8vIHN0cmljdFxuICAgICAgICBqc29uLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFkZWYuY2F0Y2hhbGwpIHtcbiAgICAgICAgLy8gcmVndWxhclxuICAgICAgICBpZiAoY3R4LmlvID09PSBcIm91dHB1dFwiKVxuICAgICAgICAgICAganNvbi5hZGRpdGlvbmFsUHJvcGVydGllcyA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIGlmIChkZWYuY2F0Y2hhbGwpIHtcbiAgICAgICAganNvbi5hZGRpdGlvbmFsUHJvcGVydGllcyA9IHByb2Nlc3MoZGVmLmNhdGNoYWxsLCBjdHgsIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiXSxcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbmV4cG9ydCBjb25zdCB1bmlvblByb2Nlc3NvciA9IChzY2hlbWEsIGN0eCwganNvbiwgcGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZGVmID0gc2NoZW1hLl96b2QuZGVmO1xuICAgIC8vIEV4Y2x1c2l2ZSB1bmlvbnMgKGluY2x1c2l2ZSA9PT0gZmFsc2UpIHVzZSBvbmVPZiAoZXhhY3RseSBvbmUgbWF0Y2gpIGluc3RlYWQgb2YgYW55T2YgKG9uZSBvciBtb3JlIG1hdGNoZXMpXG4gICAgLy8gVGhpcyBpbmNsdWRlcyBib3RoIHoueG9yKCkgYW5kIGRpc2NyaW1pbmF0ZWQgdW5pb25zXG4gICAgY29uc3QgaXNFeGNsdXNpdmUgPSBkZWYuaW5jbHVzaXZlID09PSBmYWxzZTtcbiAgICBjb25zdCBvcHRpb25zID0gZGVmLm9wdGlvbnMubWFwKCh4LCBpKSA9PiBwcm9jZXNzKHgsIGN0eCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgaXNFeGNsdXNpdmUgPyBcIm9uZU9mXCIgOiBcImFueU9mXCIsIGldLFxuICAgIH0pKTtcbiAgICBpZiAoaXNFeGNsdXNpdmUpIHtcbiAgICAgICAganNvbi5vbmVPZiA9IG9wdGlvbnM7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBqc29uLmFueU9mID0gb3B0aW9ucztcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IGludGVyc2VjdGlvblByb2Nlc3NvciA9IChzY2hlbWEsIGN0eCwganNvbiwgcGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZGVmID0gc2NoZW1hLl96b2QuZGVmO1xuICAgIGNvbnN0IGEgPSBwcm9jZXNzKGRlZi5sZWZ0LCBjdHgsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiYWxsT2ZcIiwgMF0sXG4gICAgfSk7XG4gICAgY29uc3QgYiA9IHByb2Nlc3MoZGVmLnJpZ2h0LCBjdHgsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiYWxsT2ZcIiwgMV0sXG4gICAgfSk7XG4gICAgY29uc3QgaXNTaW1wbGVJbnRlcnNlY3Rpb24gPSAodmFsKSA9PiBcImFsbE9mXCIgaW4gdmFsICYmIE9iamVjdC5rZXlzKHZhbCkubGVuZ3RoID09PSAxO1xuICAgIGNvbnN0IGFsbE9mID0gW1xuICAgICAgICAuLi4oaXNTaW1wbGVJbnRlcnNlY3Rpb24oYSkgPyBhLmFsbE9mIDogW2FdKSxcbiAgICAgICAgLi4uKGlzU2ltcGxlSW50ZXJzZWN0aW9uKGIpID8gYi5hbGxPZiA6IFtiXSksXG4gICAgXTtcbiAgICBqc29uLmFsbE9mID0gYWxsT2Y7XG59O1xuZXhwb3J0IGNvbnN0IHR1cGxlUHJvY2Vzc29yID0gKHNjaGVtYSwgY3R4LCBfanNvbiwgcGFyYW1zKSA9PiB7XG4gICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgIGNvbnN0IGRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICBqc29uLnR5cGUgPSBcImFycmF5XCI7XG4gICAgY29uc3QgcHJlZml4UGF0aCA9IGN0eC50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiID8gXCJwcmVmaXhJdGVtc1wiIDogXCJpdGVtc1wiO1xuICAgIGNvbnN0IHJlc3RQYXRoID0gY3R4LnRhcmdldCA9PT0gXCJkcmFmdC0yMDIwLTEyXCIgPyBcIml0ZW1zXCIgOiBjdHgudGFyZ2V0ID09PSBcIm9wZW5hcGktMy4wXCIgPyBcIml0ZW1zXCIgOiBcImFkZGl0aW9uYWxJdGVtc1wiO1xuICAgIGNvbnN0IHByZWZpeEl0ZW1zID0gZGVmLml0ZW1zLm1hcCgoeCwgaSkgPT4gcHJvY2Vzcyh4LCBjdHgsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIHByZWZpeFBhdGgsIGldLFxuICAgIH0pKTtcbiAgICBjb25zdCByZXN0ID0gZGVmLnJlc3RcbiAgICAgICAgPyBwcm9jZXNzKGRlZi5yZXN0LCBjdHgsIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgcmVzdFBhdGgsIC4uLihjdHgudGFyZ2V0ID09PSBcIm9wZW5hcGktMy4wXCIgPyBbZGVmLml0ZW1zLmxlbmd0aF0gOiBbXSldLFxuICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgaWYgKGN0eC50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiKSB7XG4gICAgICAgIGpzb24ucHJlZml4SXRlbXMgPSBwcmVmaXhJdGVtcztcbiAgICAgICAgaWYgKHJlc3QpIHtcbiAgICAgICAgICAgIGpzb24uaXRlbXMgPSByZXN0O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKGN0eC50YXJnZXQgPT09IFwib3BlbmFwaS0zLjBcIikge1xuICAgICAgICBqc29uLml0ZW1zID0ge1xuICAgICAgICAgICAgYW55T2Y6IHByZWZpeEl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICBpZiAocmVzdCkge1xuICAgICAgICAgICAganNvbi5pdGVtcy5hbnlPZi5wdXNoKHJlc3QpO1xuICAgICAgICB9XG4gICAgICAgIGpzb24ubWluSXRlbXMgPSBwcmVmaXhJdGVtcy5sZW5ndGg7XG4gICAgICAgIGlmICghcmVzdCkge1xuICAgICAgICAgICAganNvbi5tYXhJdGVtcyA9IHByZWZpeEl0ZW1zLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAganNvbi5pdGVtcyA9IHByZWZpeEl0ZW1zO1xuICAgICAgICBpZiAocmVzdCkge1xuICAgICAgICAgICAganNvbi5hZGRpdGlvbmFsSXRlbXMgPSByZXN0O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGxlbmd0aFxuICAgIGNvbnN0IHsgbWluaW11bSwgbWF4aW11bSB9ID0gc2NoZW1hLl96b2QuYmFnO1xuICAgIGlmICh0eXBlb2YgbWluaW11bSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAganNvbi5taW5JdGVtcyA9IG1pbmltdW07XG4gICAgaWYgKHR5cGVvZiBtYXhpbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICBqc29uLm1heEl0ZW1zID0gbWF4aW11bTtcbn07XG5leHBvcnQgY29uc3QgcmVjb3JkUHJvY2Vzc29yID0gKHNjaGVtYSwgY3R4LCBfanNvbiwgcGFyYW1zKSA9PiB7XG4gICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgIGNvbnN0IGRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICBqc29uLnR5cGUgPSBcIm9iamVjdFwiO1xuICAgIC8vIEZvciBsb29zZVJlY29yZCB3aXRoIHJlZ2V4IHBhdHRlcm5zLCB1c2UgcGF0dGVyblByb3BlcnRpZXNcbiAgICAvLyBUaGlzIGNvcnJlY3RseSByZXByZXNlbnRzIFwib25seSB2YWxpZGF0ZSBrZXlzIG1hdGNoaW5nIHRoZSBwYXR0ZXJuXCIgc2VtYW50aWNzXG4gICAgLy8gYW5kIGNvbXBvc2VzIHdlbGwgd2l0aCBhbGxPZiAoaW50ZXJzZWN0aW9ucylcbiAgICBjb25zdCBrZXlUeXBlID0gZGVmLmtleVR5cGU7XG4gICAgY29uc3Qga2V5QmFnID0ga2V5VHlwZS5fem9kLmJhZztcbiAgICBjb25zdCBwYXR0ZXJucyA9IGtleUJhZz8ucGF0dGVybnM7XG4gICAgaWYgKGRlZi5tb2RlID09PSBcImxvb3NlXCIgJiYgcGF0dGVybnMgJiYgcGF0dGVybnMuc2l6ZSA+IDApIHtcbiAgICAgICAgLy8gVXNlIHBhdHRlcm5Qcm9wZXJ0aWVzIGZvciBsb29zZVJlY29yZCB3aXRoIHJlZ2V4IHBhdHRlcm5zXG4gICAgICAgIGNvbnN0IHZhbHVlU2NoZW1hID0gcHJvY2VzcyhkZWYudmFsdWVUeXBlLCBjdHgsIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJwYXR0ZXJuUHJvcGVydGllc1wiLCBcIipcIl0sXG4gICAgICAgIH0pO1xuICAgICAgICBqc29uLnBhdHRlcm5Qcm9wZXJ0aWVzID0ge307XG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgICAgICAgICAganNvbi5wYXR0ZXJuUHJvcGVydGllc1twYXR0ZXJuLnNvdXJjZV0gPSB2YWx1ZVNjaGVtYTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvcjogdXNlIHByb3BlcnR5TmFtZXMgKyBhZGRpdGlvbmFsUHJvcGVydGllc1xuICAgICAgICBpZiAoY3R4LnRhcmdldCA9PT0gXCJkcmFmdC0wN1wiIHx8IGN0eC50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiKSB7XG4gICAgICAgICAgICBqc29uLnByb3BlcnR5TmFtZXMgPSBwcm9jZXNzKGRlZi5rZXlUeXBlLCBjdHgsIHtcbiAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcInByb3BlcnR5TmFtZXNcIl0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBqc29uLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gcHJvY2VzcyhkZWYudmFsdWVUeXBlLCBjdHgsIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIEFkZCByZXF1aXJlZCBmb3Iga2V5cyB3aXRoIGRpc2NyZXRlIHZhbHVlcyAoZW51bSwgbGl0ZXJhbCwgZXRjLilcbiAgICBjb25zdCBrZXlWYWx1ZXMgPSBrZXlUeXBlLl96b2QudmFsdWVzO1xuICAgIGlmIChrZXlWYWx1ZXMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRLZXlWYWx1ZXMgPSBbLi4ua2V5VmFsdWVzXS5maWx0ZXIoKHYpID0+IHR5cGVvZiB2ID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB2ID09PSBcIm51bWJlclwiKTtcbiAgICAgICAgaWYgKHZhbGlkS2V5VmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGpzb24ucmVxdWlyZWQgPSB2YWxpZEtleVZhbHVlcztcbiAgICAgICAgfVxuICAgIH1cbn07XG5leHBvcnQgY29uc3QgbnVsbGFibGVQcm9jZXNzb3IgPSAoc2NoZW1hLCBjdHgsIGpzb24sIHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICBjb25zdCBpbm5lciA9IHByb2Nlc3MoZGVmLmlubmVyVHlwZSwgY3R4LCBwYXJhbXMpO1xuICAgIGNvbnN0IHNlZW4gPSBjdHguc2Vlbi5nZXQoc2NoZW1hKTtcbiAgICBpZiAoY3R4LnRhcmdldCA9PT0gXCJvcGVuYXBpLTMuMFwiKSB7XG4gICAgICAgIHNlZW4ucmVmID0gZGVmLmlubmVyVHlwZTtcbiAgICAgICAganNvbi5udWxsYWJsZSA9IHRydWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBqc29uLmFueU9mID0gW2lubmVyLCB7IHR5cGU6IFwibnVsbFwiIH1dO1xuICAgIH1cbn07XG5leHBvcnQgY29uc3Qgbm9ub3B0aW9uYWxQcm9jZXNzb3IgPSAoc2NoZW1hLCBjdHgsIF9qc29uLCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCBkZWYgPSBzY2hlbWEuX3pvZC5kZWY7XG4gICAgcHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBjdHgsIHBhcmFtcyk7XG4gICAgY29uc3Qgc2VlbiA9IGN0eC5zZWVuLmdldChzY2hlbWEpO1xuICAgIHNlZW4ucmVmID0gZGVmLmlubmVyVHlwZTtcbn07XG5leHBvcnQgY29uc3QgZGVmYXVsdFByb2Nlc3NvciA9IChzY2hlbWEsIGN0eCwganNvbiwgcGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZGVmID0gc2NoZW1hLl96b2QuZGVmO1xuICAgIHByb2Nlc3MoZGVmLmlubmVyVHlwZSwgY3R4LCBwYXJhbXMpO1xuICAgIGNvbnN0IHNlZW4gPSBjdHguc2Vlbi5nZXQoc2NoZW1hKTtcbiAgICBzZWVuLnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAganNvbi5kZWZhdWx0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZWYuZGVmYXVsdFZhbHVlKSk7XG59O1xuZXhwb3J0IGNvbnN0IHByZWZhdWx0UHJvY2Vzc29yID0gKHNjaGVtYSwgY3R4LCBqc29uLCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCBkZWYgPSBzY2hlbWEuX3pvZC5kZWY7XG4gICAgcHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBjdHgsIHBhcmFtcyk7XG4gICAgY29uc3Qgc2VlbiA9IGN0eC5zZWVuLmdldChzY2hlbWEpO1xuICAgIHNlZW4ucmVmID0gZGVmLmlubmVyVHlwZTtcbiAgICBpZiAoY3R4LmlvID09PSBcImlucHV0XCIpXG4gICAgICAgIGpzb24uX3ByZWZhdWx0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZWYuZGVmYXVsdFZhbHVlKSk7XG59O1xuZXhwb3J0IGNvbnN0IGNhdGNoUHJvY2Vzc29yID0gKHNjaGVtYSwgY3R4LCBqc29uLCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCBkZWYgPSBzY2hlbWEuX3pvZC5kZWY7XG4gICAgcHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBjdHgsIHBhcmFtcyk7XG4gICAgY29uc3Qgc2VlbiA9IGN0eC5zZWVuLmdldChzY2hlbWEpO1xuICAgIHNlZW4ucmVmID0gZGVmLmlubmVyVHlwZTtcbiAgICBsZXQgY2F0Y2hWYWx1ZTtcbiAgICB0cnkge1xuICAgICAgICBjYXRjaFZhbHVlID0gZGVmLmNhdGNoVmFsdWUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEeW5hbWljIGNhdGNoIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICB9XG4gICAganNvbi5kZWZhdWx0ID0gY2F0Y2hWYWx1ZTtcbn07XG5leHBvcnQgY29uc3QgcGlwZVByb2Nlc3NvciA9IChzY2hlbWEsIGN0eCwgX2pzb24sIHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICBjb25zdCBpbm5lclR5cGUgPSBjdHguaW8gPT09IFwiaW5wdXRcIiA/IChkZWYuaW4uX3pvZC5kZWYudHlwZSA9PT0gXCJ0cmFuc2Zvcm1cIiA/IGRlZi5vdXQgOiBkZWYuaW4pIDogZGVmLm91dDtcbiAgICBwcm9jZXNzKGlubmVyVHlwZSwgY3R4LCBwYXJhbXMpO1xuICAgIGNvbnN0IHNlZW4gPSBjdHguc2Vlbi5nZXQoc2NoZW1hKTtcbiAgICBzZWVuLnJlZiA9IGlubmVyVHlwZTtcbn07XG5leHBvcnQgY29uc3QgcmVhZG9ubHlQcm9jZXNzb3IgPSAoc2NoZW1hLCBjdHgsIGpzb24sIHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICBwcm9jZXNzKGRlZi5pbm5lclR5cGUsIGN0eCwgcGFyYW1zKTtcbiAgICBjb25zdCBzZWVuID0gY3R4LnNlZW4uZ2V0KHNjaGVtYSk7XG4gICAgc2Vlbi5yZWYgPSBkZWYuaW5uZXJUeXBlO1xuICAgIGpzb24ucmVhZE9ubHkgPSB0cnVlO1xufTtcbmV4cG9ydCBjb25zdCBwcm9taXNlUHJvY2Vzc29yID0gKHNjaGVtYSwgY3R4LCBfanNvbiwgcGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZGVmID0gc2NoZW1hLl96b2QuZGVmO1xuICAgIHByb2Nlc3MoZGVmLmlubmVyVHlwZSwgY3R4LCBwYXJhbXMpO1xuICAgIGNvbnN0IHNlZW4gPSBjdHguc2Vlbi5nZXQoc2NoZW1hKTtcbiAgICBzZWVuLnJlZiA9IGRlZi5pbm5lclR5cGU7XG59O1xuZXhwb3J0IGNvbnN0IG9wdGlvbmFsUHJvY2Vzc29yID0gKHNjaGVtYSwgY3R4LCBfanNvbiwgcGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZGVmID0gc2NoZW1hLl96b2QuZGVmO1xuICAgIHByb2Nlc3MoZGVmLmlubmVyVHlwZSwgY3R4LCBwYXJhbXMpO1xuICAgIGNvbnN0IHNlZW4gPSBjdHguc2Vlbi5nZXQoc2NoZW1hKTtcbiAgICBzZWVuLnJlZiA9IGRlZi5pbm5lclR5cGU7XG59O1xuZXhwb3J0IGNvbnN0IGxhenlQcm9jZXNzb3IgPSAoc2NoZW1hLCBjdHgsIF9qc29uLCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCBpbm5lclR5cGUgPSBzY2hlbWEuX3pvZC5pbm5lclR5cGU7XG4gICAgcHJvY2Vzcyhpbm5lclR5cGUsIGN0eCwgcGFyYW1zKTtcbiAgICBjb25zdCBzZWVuID0gY3R4LnNlZW4uZ2V0KHNjaGVtYSk7XG4gICAgc2Vlbi5yZWYgPSBpbm5lclR5cGU7XG59O1xuLy8gPT09PT09PT09PT09PT09PT09PT0gQUxMIFBST0NFU1NPUlMgPT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBjb25zdCBhbGxQcm9jZXNzb3JzID0ge1xuICAgIHN0cmluZzogc3RyaW5nUHJvY2Vzc29yLFxuICAgIG51bWJlcjogbnVtYmVyUHJvY2Vzc29yLFxuICAgIGJvb2xlYW46IGJvb2xlYW5Qcm9jZXNzb3IsXG4gICAgYmlnaW50OiBiaWdpbnRQcm9jZXNzb3IsXG4gICAgc3ltYm9sOiBzeW1ib2xQcm9jZXNzb3IsXG4gICAgbnVsbDogbnVsbFByb2Nlc3NvcixcbiAgICB1bmRlZmluZWQ6IHVuZGVmaW5lZFByb2Nlc3NvcixcbiAgICB2b2lkOiB2b2lkUHJvY2Vzc29yLFxuICAgIG5ldmVyOiBuZXZlclByb2Nlc3NvcixcbiAgICBhbnk6IGFueVByb2Nlc3NvcixcbiAgICB1bmtub3duOiB1bmtub3duUHJvY2Vzc29yLFxuICAgIGRhdGU6IGRhdGVQcm9jZXNzb3IsXG4gICAgZW51bTogZW51bVByb2Nlc3NvcixcbiAgICBsaXRlcmFsOiBsaXRlcmFsUHJvY2Vzc29yLFxuICAgIG5hbjogbmFuUHJvY2Vzc29yLFxuICAgIHRlbXBsYXRlX2xpdGVyYWw6IHRlbXBsYXRlTGl0ZXJhbFByb2Nlc3NvcixcbiAgICBmaWxlOiBmaWxlUHJvY2Vzc29yLFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NQcm9jZXNzb3IsXG4gICAgY3VzdG9tOiBjdXN0b21Qcm9jZXNzb3IsXG4gICAgZnVuY3Rpb246IGZ1bmN0aW9uUHJvY2Vzc29yLFxuICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtUHJvY2Vzc29yLFxuICAgIG1hcDogbWFwUHJvY2Vzc29yLFxuICAgIHNldDogc2V0UHJvY2Vzc29yLFxuICAgIGFycmF5OiBhcnJheVByb2Nlc3NvcixcbiAgICBvYmplY3Q6IG9iamVjdFByb2Nlc3NvcixcbiAgICB1bmlvbjogdW5pb25Qcm9jZXNzb3IsXG4gICAgaW50ZXJzZWN0aW9uOiBpbnRlcnNlY3Rpb25Qcm9jZXNzb3IsXG4gICAgdHVwbGU6IHR1cGxlUHJvY2Vzc29yLFxuICAgIHJlY29yZDogcmVjb3JkUHJvY2Vzc29yLFxuICAgIG51bGxhYmxlOiBudWxsYWJsZVByb2Nlc3NvcixcbiAgICBub25vcHRpb25hbDogbm9ub3B0aW9uYWxQcm9jZXNzb3IsXG4gICAgZGVmYXVsdDogZGVmYXVsdFByb2Nlc3NvcixcbiAgICBwcmVmYXVsdDogcHJlZmF1bHRQcm9jZXNzb3IsXG4gICAgY2F0Y2g6IGNhdGNoUHJvY2Vzc29yLFxuICAgIHBpcGU6IHBpcGVQcm9jZXNzb3IsXG4gICAgcmVhZG9ubHk6IHJlYWRvbmx5UHJvY2Vzc29yLFxuICAgIHByb21pc2U6IHByb21pc2VQcm9jZXNzb3IsXG4gICAgb3B0aW9uYWw6IG9wdGlvbmFsUHJvY2Vzc29yLFxuICAgIGxhenk6IGxhenlQcm9jZXNzb3IsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIHRvSlNPTlNjaGVtYShpbnB1dCwgcGFyYW1zKSB7XG4gICAgaWYgKFwiX2lkbWFwXCIgaW4gaW5wdXQpIHtcbiAgICAgICAgLy8gUmVnaXN0cnkgY2FzZVxuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGlucHV0O1xuICAgICAgICBjb25zdCBjdHggPSBpbml0aWFsaXplQ29udGV4dCh7IC4uLnBhcmFtcywgcHJvY2Vzc29yczogYWxsUHJvY2Vzc29ycyB9KTtcbiAgICAgICAgY29uc3QgZGVmcyA9IHt9O1xuICAgICAgICAvLyBGaXJzdCBwYXNzOiBwcm9jZXNzIGFsbCBzY2hlbWFzIHRvIGJ1aWxkIHRoZSBzZWVuIG1hcFxuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlZ2lzdHJ5Ll9pZG1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IFtfLCBzY2hlbWFdID0gZW50cnk7XG4gICAgICAgICAgICBwcm9jZXNzKHNjaGVtYSwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY2hlbWFzID0ge307XG4gICAgICAgIGNvbnN0IGV4dGVybmFsID0ge1xuICAgICAgICAgICAgcmVnaXN0cnksXG4gICAgICAgICAgICB1cmk6IHBhcmFtcz8udXJpLFxuICAgICAgICAgICAgZGVmcyxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBjb250ZXh0IHdpdGggZXh0ZXJuYWwgY29uZmlndXJhdGlvblxuICAgICAgICBjdHguZXh0ZXJuYWwgPSBleHRlcm5hbDtcbiAgICAgICAgLy8gU2Vjb25kIHBhc3M6IGVtaXQgZWFjaCBzY2hlbWFcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiByZWdpc3RyeS5faWRtYXAuZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBba2V5LCBzY2hlbWFdID0gZW50cnk7XG4gICAgICAgICAgICBleHRyYWN0RGVmcyhjdHgsIHNjaGVtYSk7XG4gICAgICAgICAgICBzY2hlbWFzW2tleV0gPSBmaW5hbGl6ZShjdHgsIHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRlZnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZnNTZWdtZW50ID0gY3R4LnRhcmdldCA9PT0gXCJkcmFmdC0yMDIwLTEyXCIgPyBcIiRkZWZzXCIgOiBcImRlZmluaXRpb25zXCI7XG4gICAgICAgICAgICBzY2hlbWFzLl9fc2hhcmVkID0ge1xuICAgICAgICAgICAgICAgIFtkZWZzU2VnbWVudF06IGRlZnMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHNjaGVtYXMgfTtcbiAgICB9XG4gICAgLy8gU2luZ2xlIHNjaGVtYSBjYXNlXG4gICAgY29uc3QgY3R4ID0gaW5pdGlhbGl6ZUNvbnRleHQoeyAuLi5wYXJhbXMsIHByb2Nlc3NvcnM6IGFsbFByb2Nlc3NvcnMgfSk7XG4gICAgcHJvY2VzcyhpbnB1dCwgY3R4KTtcbiAgICBleHRyYWN0RGVmcyhjdHgsIGlucHV0KTtcbiAgICByZXR1cm4gZmluYWxpemUoY3R4LCBpbnB1dCk7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/json-schema-processors.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/json-schema.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/zod/v4/core/json-schema.js ***!
|
||
\*************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9qc29uLXNjaGVtYS5qcyIsIm1hcHBpbmdzIjoiO0FBQVUiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNvcmVcXGpzb24tc2NoZW1hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/json-schema.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/parse.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/core/parse.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _decode: () => (/* binding */ _decode),\n/* harmony export */ _decodeAsync: () => (/* binding */ _decodeAsync),\n/* harmony export */ _encode: () => (/* binding */ _encode),\n/* harmony export */ _encodeAsync: () => (/* binding */ _encodeAsync),\n/* harmony export */ _parse: () => (/* binding */ _parse),\n/* harmony export */ _parseAsync: () => (/* binding */ _parseAsync),\n/* harmony export */ _safeDecode: () => (/* binding */ _safeDecode),\n/* harmony export */ _safeDecodeAsync: () => (/* binding */ _safeDecodeAsync),\n/* harmony export */ _safeEncode: () => (/* binding */ _safeEncode),\n/* harmony export */ _safeEncodeAsync: () => (/* binding */ _safeEncodeAsync),\n/* harmony export */ _safeParse: () => (/* binding */ _safeParse),\n/* harmony export */ _safeParseAsync: () => (/* binding */ _safeParseAsync),\n/* harmony export */ decode: () => (/* binding */ decode),\n/* harmony export */ decodeAsync: () => (/* binding */ decodeAsync),\n/* harmony export */ encode: () => (/* binding */ encode),\n/* harmony export */ encodeAsync: () => (/* binding */ encodeAsync),\n/* harmony export */ parse: () => (/* binding */ parse),\n/* harmony export */ parseAsync: () => (/* binding */ parseAsync),\n/* harmony export */ safeDecode: () => (/* binding */ safeDecode),\n/* harmony export */ safeDecodeAsync: () => (/* binding */ safeDecodeAsync),\n/* harmony export */ safeEncode: () => (/* binding */ safeEncode),\n/* harmony export */ safeEncodeAsync: () => (/* binding */ safeEncodeAsync),\n/* harmony export */ safeParse: () => (/* binding */ safeParse),\n/* harmony export */ safeParseAsync: () => (/* binding */ safeParseAsync)\n/* harmony export */ });\n/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./errors.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/errors.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\n\n\nconst _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_0__.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config())));\n _util_js__WEBPACK_IMPORTED_MODULE_2__.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nconst parse = /* @__PURE__*/ _parse(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config())));\n _util_js__WEBPACK_IMPORTED_MODULE_2__.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nconst parseAsync = /* @__PURE__*/ _parseAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_0__.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? _errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodError)(result.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config()))),\n }\n : { success: true, data: result.value };\n};\nconst safeParse = /* @__PURE__*/ _safeParse(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config()))),\n }\n : { success: true, data: result.value };\n};\nconst safeParseAsync = /* @__PURE__*/ _safeParseAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nconst encode = /* @__PURE__*/ _encode(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nconst decode = /* @__PURE__*/ _decode(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nconst encodeAsync = /* @__PURE__*/ _encodeAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nconst decodeAsync = /* @__PURE__*/ _decodeAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nconst safeEncode = /* @__PURE__*/ _safeEncode(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nconst safeDecode = /* @__PURE__*/ _safeDecode(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nconst safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\nconst _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nconst safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRealError);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9wYXJzZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBa0M7QUFDSTtBQUNKO0FBQzNCO0FBQ1AsNkNBQTZDLGNBQWMsTUFBTTtBQUNqRSxxQ0FBcUMsbUJBQW1CO0FBQ3hEO0FBQ0Esa0JBQWtCLG9EQUFtQjtBQUNyQztBQUNBO0FBQ0Esd0VBQXdFLG1EQUFrQixXQUFXLDRDQUFXO0FBQ2hILFFBQVEsdURBQXNCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ08sb0NBQW9DLHFEQUFvQjtBQUN4RDtBQUNQLDZDQUE2QyxhQUFhLE1BQU07QUFDaEUsbUNBQW1DLG1CQUFtQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsbURBQWtCLFdBQVcsNENBQVc7QUFDL0csUUFBUSx1REFBc0I7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDTyw4Q0FBOEMscURBQW9CO0FBQ2xFO0FBQ1AseUJBQXlCLHdCQUF3QixJQUFJO0FBQ3JELHFDQUFxQyxtQkFBbUI7QUFDeEQ7QUFDQSxrQkFBa0Isb0RBQW1CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGlEQUFnQiw2QkFBNkIsbURBQWtCLFdBQVcsNENBQVc7QUFDckg7QUFDQSxZQUFZO0FBQ1o7QUFDTyw0Q0FBNEMscURBQW9CO0FBQ2hFO0FBQ1AsNkNBQTZDLGFBQWEsTUFBTTtBQUNoRSxtQ0FBbUMsbUJBQW1CO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsbURBQWtCLFdBQVcsNENBQVc7QUFDL0Y7QUFDQSxZQUFZO0FBQ1o7QUFDTyxzREFBc0QscURBQW9CO0FBQzFFO0FBQ1AsNkNBQTZDLHVCQUF1QixNQUFNO0FBQzFFO0FBQ0E7QUFDTyxzQ0FBc0MscURBQW9CO0FBQzFEO0FBQ1A7QUFDQTtBQUNPLHNDQUFzQyxxREFBb0I7QUFDMUQ7QUFDUCw2Q0FBNkMsdUJBQXVCLE1BQU07QUFDMUU7QUFDQTtBQUNPLGdEQUFnRCxxREFBb0I7QUFDcEU7QUFDUDtBQUNBO0FBQ08sZ0RBQWdELHFEQUFvQjtBQUNwRTtBQUNQLDZDQUE2Qyx1QkFBdUIsTUFBTTtBQUMxRTtBQUNBO0FBQ08sOENBQThDLHFEQUFvQjtBQUNsRTtBQUNQO0FBQ0E7QUFDTyw4Q0FBOEMscURBQW9CO0FBQ2xFO0FBQ1AsNkNBQTZDLHVCQUF1QixNQUFNO0FBQzFFO0FBQ0E7QUFDTyx3REFBd0QscURBQW9CO0FBQzVFO0FBQ1A7QUFDQTtBQUNPLHdEQUF3RCxxREFBb0IiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNvcmVcXHBhcnNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4vY29yZS5qc1wiO1xuaW1wb3J0ICogYXMgZXJyb3JzIGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi91dGlsLmpzXCI7XG5leHBvcnQgY29uc3QgX3BhcnNlID0gKF9FcnIpID0+IChzY2hlbWEsIHZhbHVlLCBfY3R4LCBfcGFyYW1zKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gX2N0eCA/IE9iamVjdC5hc3NpZ24oX2N0eCwgeyBhc3luYzogZmFsc2UgfSkgOiB7IGFzeW5jOiBmYWxzZSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IHNjaGVtYS5fem9kLnJ1bih7IHZhbHVlLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGUgPSBuZXcgKF9wYXJhbXM/LkVyciA/PyBfRXJyKShyZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSk7XG4gICAgICAgIHV0aWwuY2FwdHVyZVN0YWNrVHJhY2UoZSwgX3BhcmFtcz8uY2FsbGVlKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbn07XG5leHBvcnQgY29uc3QgcGFyc2UgPSAvKiBAX19QVVJFX18qLyBfcGFyc2UoZXJyb3JzLiRab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IF9wYXJzZUFzeW5jID0gKF9FcnIpID0+IGFzeW5jIChzY2hlbWEsIHZhbHVlLCBfY3R4LCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8gT2JqZWN0LmFzc2lnbihfY3R4LCB7IGFzeW5jOiB0cnVlIH0pIDogeyBhc3luYzogdHJ1ZSB9O1xuICAgIGxldCByZXN1bHQgPSBzY2hlbWEuX3pvZC5ydW4oeyB2YWx1ZSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKVxuICAgICAgICByZXN1bHQgPSBhd2FpdCByZXN1bHQ7XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGUgPSBuZXcgKHBhcmFtcz8uRXJyID8/IF9FcnIpKHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpKTtcbiAgICAgICAgdXRpbC5jYXB0dXJlU3RhY2tUcmFjZShlLCBwYXJhbXM/LmNhbGxlZSk7XG4gICAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG59O1xuZXhwb3J0IGNvbnN0IHBhcnNlQXN5bmMgPSAvKiBAX19QVVJFX18qLyBfcGFyc2VBc3luYyhlcnJvcnMuJFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3QgX3NhZmVQYXJzZSA9IChfRXJyKSA9PiAoc2NoZW1hLCB2YWx1ZSwgX2N0eCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IF9jdHggPyB7IC4uLl9jdHgsIGFzeW5jOiBmYWxzZSB9IDogeyBhc3luYzogZmFsc2UgfTtcbiAgICBjb25zdCByZXN1bHQgPSBzY2hlbWEuX3pvZC5ydW4oeyB2YWx1ZSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLiRab2RBc3luY0Vycm9yKCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQuaXNzdWVzLmxlbmd0aFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IG5ldyAoX0VyciA/PyBlcnJvcnMuJFpvZEVycm9yKShyZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSksXG4gICAgICAgIH1cbiAgICAgICAgOiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IHJlc3VsdC52YWx1ZSB9O1xufTtcbmV4cG9ydCBjb25zdCBzYWZlUGFyc2UgPSAvKiBAX19QVVJFX18qLyBfc2FmZVBhcnNlKGVycm9ycy4kWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBfc2FmZVBhcnNlQXN5bmMgPSAoX0VycikgPT4gYXN5bmMgKHNjaGVtYSwgdmFsdWUsIF9jdHgpID0+IHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8gT2JqZWN0LmFzc2lnbihfY3R4LCB7IGFzeW5jOiB0cnVlIH0pIDogeyBhc3luYzogdHJ1ZSB9O1xuICAgIGxldCByZXN1bHQgPSBzY2hlbWEuX3pvZC5ydW4oeyB2YWx1ZSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKVxuICAgICAgICByZXN1bHQgPSBhd2FpdCByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdC5pc3N1ZXMubGVuZ3RoXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogbmV3IF9FcnIocmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSkpLFxuICAgICAgICB9XG4gICAgICAgIDogeyBzdWNjZXNzOiB0cnVlLCBkYXRhOiByZXN1bHQudmFsdWUgfTtcbn07XG5leHBvcnQgY29uc3Qgc2FmZVBhcnNlQXN5bmMgPSAvKiBAX19QVVJFX18qLyBfc2FmZVBhcnNlQXN5bmMoZXJyb3JzLiRab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IF9lbmNvZGUgPSAoX0VycikgPT4gKHNjaGVtYSwgdmFsdWUsIF9jdHgpID0+IHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8gT2JqZWN0LmFzc2lnbihfY3R4LCB7IGRpcmVjdGlvbjogXCJiYWNrd2FyZFwiIH0pIDogeyBkaXJlY3Rpb246IFwiYmFja3dhcmRcIiB9O1xuICAgIHJldHVybiBfcGFyc2UoX0Vycikoc2NoZW1hLCB2YWx1ZSwgY3R4KTtcbn07XG5leHBvcnQgY29uc3QgZW5jb2RlID0gLyogQF9fUFVSRV9fKi8gX2VuY29kZShlcnJvcnMuJFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3QgX2RlY29kZSA9IChfRXJyKSA9PiAoc2NoZW1hLCB2YWx1ZSwgX2N0eCkgPT4ge1xuICAgIHJldHVybiBfcGFyc2UoX0Vycikoc2NoZW1hLCB2YWx1ZSwgX2N0eCk7XG59O1xuZXhwb3J0IGNvbnN0IGRlY29kZSA9IC8qIEBfX1BVUkVfXyovIF9kZWNvZGUoZXJyb3JzLiRab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IF9lbmNvZGVBc3luYyA9IChfRXJyKSA9PiBhc3luYyAoc2NoZW1hLCB2YWx1ZSwgX2N0eCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IF9jdHggPyBPYmplY3QuYXNzaWduKF9jdHgsIHsgZGlyZWN0aW9uOiBcImJhY2t3YXJkXCIgfSkgOiB7IGRpcmVjdGlvbjogXCJiYWNrd2FyZFwiIH07XG4gICAgcmV0dXJuIF9wYXJzZUFzeW5jKF9FcnIpKHNjaGVtYSwgdmFsdWUsIGN0eCk7XG59O1xuZXhwb3J0IGNvbnN0IGVuY29kZUFzeW5jID0gLyogQF9fUFVSRV9fKi8gX2VuY29kZUFzeW5jKGVycm9ycy4kWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBfZGVjb2RlQXN5bmMgPSAoX0VycikgPT4gYXN5bmMgKHNjaGVtYSwgdmFsdWUsIF9jdHgpID0+IHtcbiAgICByZXR1cm4gX3BhcnNlQXN5bmMoX0Vycikoc2NoZW1hLCB2YWx1ZSwgX2N0eCk7XG59O1xuZXhwb3J0IGNvbnN0IGRlY29kZUFzeW5jID0gLyogQF9fUFVSRV9fKi8gX2RlY29kZUFzeW5jKGVycm9ycy4kWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBfc2FmZUVuY29kZSA9IChfRXJyKSA9PiAoc2NoZW1hLCB2YWx1ZSwgX2N0eCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IF9jdHggPyBPYmplY3QuYXNzaWduKF9jdHgsIHsgZGlyZWN0aW9uOiBcImJhY2t3YXJkXCIgfSkgOiB7IGRpcmVjdGlvbjogXCJiYWNrd2FyZFwiIH07XG4gICAgcmV0dXJuIF9zYWZlUGFyc2UoX0Vycikoc2NoZW1hLCB2YWx1ZSwgY3R4KTtcbn07XG5leHBvcnQgY29uc3Qgc2FmZUVuY29kZSA9IC8qIEBfX1BVUkVfXyovIF9zYWZlRW5jb2RlKGVycm9ycy4kWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBfc2FmZURlY29kZSA9IChfRXJyKSA9PiAoc2NoZW1hLCB2YWx1ZSwgX2N0eCkgPT4ge1xuICAgIHJldHVybiBfc2FmZVBhcnNlKF9FcnIpKHNjaGVtYSwgdmFsdWUsIF9jdHgpO1xufTtcbmV4cG9ydCBjb25zdCBzYWZlRGVjb2RlID0gLyogQF9fUFVSRV9fKi8gX3NhZmVEZWNvZGUoZXJyb3JzLiRab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IF9zYWZlRW5jb2RlQXN5bmMgPSAoX0VycikgPT4gYXN5bmMgKHNjaGVtYSwgdmFsdWUsIF9jdHgpID0+IHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8gT2JqZWN0LmFzc2lnbihfY3R4LCB7IGRpcmVjdGlvbjogXCJiYWNrd2FyZFwiIH0pIDogeyBkaXJlY3Rpb246IFwiYmFja3dhcmRcIiB9O1xuICAgIHJldHVybiBfc2FmZVBhcnNlQXN5bmMoX0Vycikoc2NoZW1hLCB2YWx1ZSwgY3R4KTtcbn07XG5leHBvcnQgY29uc3Qgc2FmZUVuY29kZUFzeW5jID0gLyogQF9fUFVSRV9fKi8gX3NhZmVFbmNvZGVBc3luYyhlcnJvcnMuJFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3QgX3NhZmVEZWNvZGVBc3luYyA9IChfRXJyKSA9PiBhc3luYyAoc2NoZW1hLCB2YWx1ZSwgX2N0eCkgPT4ge1xuICAgIHJldHVybiBfc2FmZVBhcnNlQXN5bmMoX0Vycikoc2NoZW1hLCB2YWx1ZSwgX2N0eCk7XG59O1xuZXhwb3J0IGNvbnN0IHNhZmVEZWNvZGVBc3luYyA9IC8qIEBfX1BVUkVfXyovIF9zYWZlRGVjb2RlQXN5bmMoZXJyb3JzLiRab2RSZWFsRXJyb3IpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/parse.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/regexes.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/zod/v4/core/regexes.js ***!
|
||
\*********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ base64: () => (/* binding */ base64),\n/* harmony export */ base64url: () => (/* binding */ base64url),\n/* harmony export */ bigint: () => (/* binding */ bigint),\n/* harmony export */ boolean: () => (/* binding */ boolean),\n/* harmony export */ browserEmail: () => (/* binding */ browserEmail),\n/* harmony export */ cidrv4: () => (/* binding */ cidrv4),\n/* harmony export */ cidrv6: () => (/* binding */ cidrv6),\n/* harmony export */ cuid: () => (/* binding */ cuid),\n/* harmony export */ cuid2: () => (/* binding */ cuid2),\n/* harmony export */ date: () => (/* binding */ date),\n/* harmony export */ datetime: () => (/* binding */ datetime),\n/* harmony export */ domain: () => (/* binding */ domain),\n/* harmony export */ duration: () => (/* binding */ duration),\n/* harmony export */ e164: () => (/* binding */ e164),\n/* harmony export */ email: () => (/* binding */ email),\n/* harmony export */ emoji: () => (/* binding */ emoji),\n/* harmony export */ extendedDuration: () => (/* binding */ extendedDuration),\n/* harmony export */ guid: () => (/* binding */ guid),\n/* harmony export */ hex: () => (/* binding */ hex),\n/* harmony export */ hostname: () => (/* binding */ hostname),\n/* harmony export */ html5Email: () => (/* binding */ html5Email),\n/* harmony export */ idnEmail: () => (/* binding */ idnEmail),\n/* harmony export */ integer: () => (/* binding */ integer),\n/* harmony export */ ipv4: () => (/* binding */ ipv4),\n/* harmony export */ ipv6: () => (/* binding */ ipv6),\n/* harmony export */ ksuid: () => (/* binding */ ksuid),\n/* harmony export */ lowercase: () => (/* binding */ lowercase),\n/* harmony export */ mac: () => (/* binding */ mac),\n/* harmony export */ md5_base64: () => (/* binding */ md5_base64),\n/* harmony export */ md5_base64url: () => (/* binding */ md5_base64url),\n/* harmony export */ md5_hex: () => (/* binding */ md5_hex),\n/* harmony export */ nanoid: () => (/* binding */ nanoid),\n/* harmony export */ \"null\": () => (/* binding */ _null),\n/* harmony export */ number: () => (/* binding */ number),\n/* harmony export */ rfc5322Email: () => (/* binding */ rfc5322Email),\n/* harmony export */ sha1_base64: () => (/* binding */ sha1_base64),\n/* harmony export */ sha1_base64url: () => (/* binding */ sha1_base64url),\n/* harmony export */ sha1_hex: () => (/* binding */ sha1_hex),\n/* harmony export */ sha256_base64: () => (/* binding */ sha256_base64),\n/* harmony export */ sha256_base64url: () => (/* binding */ sha256_base64url),\n/* harmony export */ sha256_hex: () => (/* binding */ sha256_hex),\n/* harmony export */ sha384_base64: () => (/* binding */ sha384_base64),\n/* harmony export */ sha384_base64url: () => (/* binding */ sha384_base64url),\n/* harmony export */ sha384_hex: () => (/* binding */ sha384_hex),\n/* harmony export */ sha512_base64: () => (/* binding */ sha512_base64),\n/* harmony export */ sha512_base64url: () => (/* binding */ sha512_base64url),\n/* harmony export */ sha512_hex: () => (/* binding */ sha512_hex),\n/* harmony export */ string: () => (/* binding */ string),\n/* harmony export */ time: () => (/* binding */ time),\n/* harmony export */ ulid: () => (/* binding */ ulid),\n/* harmony export */ undefined: () => (/* binding */ _undefined),\n/* harmony export */ unicodeEmail: () => (/* binding */ unicodeEmail),\n/* harmony export */ uppercase: () => (/* binding */ uppercase),\n/* harmony export */ uuid: () => (/* binding */ uuid),\n/* harmony export */ uuid4: () => (/* binding */ uuid4),\n/* harmony export */ uuid6: () => (/* binding */ uuid6),\n/* harmony export */ uuid7: () => (/* binding */ uuid7),\n/* harmony export */ xid: () => (/* binding */ xid)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst cuid = /^[cC][^\\s-]{8,}$/;\nconst cuid2 = /^[0-9a-z]+$/;\nconst ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nconst xid = /^[0-9a-vA-V]{20}$/;\nconst ksuid = /^[A-Za-z0-9]{27}$/;\nconst nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nconst duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nconst extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nconst guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nconst uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nconst uuid4 = /*@__PURE__*/ uuid(4);\nconst uuid6 = /*@__PURE__*/ uuid(6);\nconst uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nconst email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nconst html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nconst rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nconst unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nconst idnEmail = unicodeEmail;\nconst browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nfunction emoji() {\n return new RegExp(_emoji, \"u\");\n}\nconst ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nconst mac = (delimiter) => {\n const escapedDelim = _util_js__WEBPACK_IMPORTED_MODULE_0__.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nconst cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nconst cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nconst base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nconst hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nconst domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nconst e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nconst date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nfunction time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nconst string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nconst bigint = /^-?\\d+n?$/;\nconst integer = /^-?\\d+$/;\nconst number = /^-?\\d+(?:\\.\\d+)?$/;\nconst boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\n\nconst _undefined = /^undefined$/i;\n\n// regex for string with no uppercase letters\nconst lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nconst uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nconst hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nconst md5_hex = /^[0-9a-fA-F]{32}$/;\nconst md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nconst md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nconst sha1_hex = /^[0-9a-fA-F]{40}$/;\nconst sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nconst sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nconst sha256_hex = /^[0-9a-fA-F]{64}$/;\nconst sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nconst sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nconst sha384_hex = /^[0-9a-fA-F]{96}$/;\nconst sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nconst sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nconst sha512_hex = /^[0-9a-fA-F]{128}$/;\nconst sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nconst sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9yZWdleGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWtDO0FBQzNCLDBCQUEwQixHQUFHO0FBQzdCO0FBQ0EsK0NBQStDLEdBQUc7QUFDbEQsMEJBQTBCLEdBQUc7QUFDN0IsNEJBQTRCLEdBQUc7QUFDL0IsK0JBQStCLEdBQUc7QUFDekM7QUFDTztBQUNQO0FBQ087QUFDUDtBQUNPLDRCQUE0QixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsR0FBRztBQUNsRztBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsOEJBQThCLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsR0FBRztBQUMxRyxxQ0FBcUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxRQUFRLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEdBQUc7QUFDdEg7QUFDTztBQUNBO0FBQ0E7QUFDUDtBQUNPLDJHQUEyRyxHQUFHO0FBQ3JIO0FBQ08sK0NBQStDLEVBQUUsZ0NBQWdDLEtBQUssNkNBQTZDLEtBQUs7QUFDL0k7QUFDTyx3Q0FBd0MseUJBQXlCLDZCQUE2QixJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLGdDQUFnQyxHQUFHO0FBQ2hMO0FBQ08sK0JBQStCLEtBQUssUUFBUSxNQUFNO0FBQ2xEO0FBQ0EsaURBQWlELEVBQUUsZ0NBQWdDLEtBQUssNkNBQTZDLEtBQUs7QUFDako7QUFDQSxzQkFBc0Isc0JBQXNCLEtBQUssZ0JBQWdCO0FBQzFEO0FBQ1A7QUFDQTtBQUNPLDBFQUEwRSxFQUFFO0FBQzVFLDZCQUE2QixJQUFJLEdBQUcsRUFBRSxZQUFZLElBQUksY0FBYyxJQUFJLEdBQUcsSUFBSSxlQUFlLElBQUksR0FBRyxJQUFJLGFBQWEsSUFBSSxjQUFjLElBQUksR0FBRyxJQUFJLGNBQWMsSUFBSSxFQUFFLElBQUksY0FBYyxJQUFJLEdBQUcsSUFBSSxjQUFjLElBQUksRUFBRSxJQUFJLGNBQWMsSUFBSSxHQUFHLElBQUksY0FBYyxJQUFJLEVBQUUsSUFBSSxjQUFjLElBQUksR0FBRyxJQUFJLGNBQWMsSUFBSSxFQUFFLElBQUksYUFBYSxJQUFJLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxrQkFBa0IsSUFBSSxFQUFFLElBQUk7QUFDclk7QUFDUCx5QkFBeUIsaURBQWdCO0FBQ3pDLG9DQUFvQyxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRTtBQUNuSDtBQUNPLHdFQUF3RSxFQUFFO0FBQzFFLCtCQUErQixJQUFJLEdBQUcsRUFBRSxZQUFZLElBQUksaUJBQWlCLElBQUksaUJBQWlCLElBQUksSUFBSSxJQUFJO0FBQ2pIO0FBQ08scUNBQXFDLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUU7QUFDdEY7QUFDUDtBQUNBO0FBQ08sd0JBQXdCLE1BQU0sZ0NBQWdDLEtBQUssNkNBQTZDLEtBQUs7QUFDckgsNkNBQTZDLEtBQUssMEJBQTBCLEdBQUc7QUFDdEY7QUFDQSxxQ0FBcUM7QUFDOUIseUJBQXlCLEtBQUs7QUFDckMsaUhBQWlILEVBQUU7QUFDbkgsa0hBQWtILEVBQUU7QUFDN0csMENBQTBDLFdBQVc7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBSztBQUN0QjtBQUNBLHFCQUFxQixLQUFLO0FBQzFCLHFCQUFxQixLQUFLLGdCQUFnQixFQUFFLGdCQUFnQjtBQUM1RCxhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNPO0FBQ1AsMEJBQTBCLGlCQUFpQjtBQUMzQztBQUNBO0FBQ087QUFDUCw4QkFBOEIsMkJBQTJCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxFQUFFLEtBQUssRUFBRTtBQUNyRDtBQUNBO0FBQ0EseUJBQXlCLEtBQUssS0FBSyxlQUFlO0FBQ2xELDBCQUEwQixXQUFXLE1BQU0sVUFBVTtBQUNyRDtBQUNPO0FBQ1AscUNBQXFDLEVBQUUscUJBQXFCLEdBQUcsdUJBQXVCO0FBQ3RGLDBCQUEwQixNQUFNO0FBQ2hDO0FBQ087QUFDQTtBQUNBO0FBQ0E7QUFDUDtBQUN5QjtBQUN6QjtBQUNtQztBQUNuQztBQUNPO0FBQ1A7QUFDTztBQUNQO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsRUFBRSxZQUFZLEVBQUUsUUFBUTtBQUM5RDtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsRUFBRSxRQUFRO0FBQ2hEO0FBQ0E7QUFDTyw4QkFBOEIsR0FBRztBQUNqQztBQUNBO0FBQ1A7QUFDTywrQkFBK0IsR0FBRztBQUNsQztBQUNBO0FBQ1A7QUFDTyxpQ0FBaUMsR0FBRztBQUNwQztBQUNBO0FBQ1A7QUFDTyxpQ0FBaUMsR0FBRztBQUNwQztBQUNBO0FBQ1A7QUFDTyxpQ0FBaUMsSUFBSTtBQUNyQztBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxjb3JlXFxyZWdleGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4vdXRpbC5qc1wiO1xuZXhwb3J0IGNvbnN0IGN1aWQgPSAvXltjQ11bXlxccy1dezgsfSQvO1xuZXhwb3J0IGNvbnN0IGN1aWQyID0gL15bMC05YS16XSskLztcbmV4cG9ydCBjb25zdCB1bGlkID0gL15bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI2fSQvO1xuZXhwb3J0IGNvbnN0IHhpZCA9IC9eWzAtOWEtdkEtVl17MjB9JC87XG5leHBvcnQgY29uc3Qga3N1aWQgPSAvXltBLVphLXowLTldezI3fSQvO1xuZXhwb3J0IGNvbnN0IG5hbm9pZCA9IC9eW2EtekEtWjAtOV8tXXsyMX0kLztcbi8qKiBJU08gODYwMS0xIGR1cmF0aW9uIHJlZ2V4LiBEb2VzIG5vdCBzdXBwb3J0IHRoZSA4NjAxLTIgZXh0ZW5zaW9ucyBsaWtlIG5lZ2F0aXZlIGR1cmF0aW9ucyBvciBmcmFjdGlvbmFsL25lZ2F0aXZlIGNvbXBvbmVudHMuICovXG5leHBvcnQgY29uc3QgZHVyYXRpb24gPSAvXlAoPzooXFxkK1cpfCg/IS4qVykoPz1cXGR8VFxcZCkoXFxkK1kpPyhcXGQrTSk/KFxcZCtEKT8oVCg/PVxcZCkoXFxkK0gpPyhcXGQrTSk/KFxcZCsoWy4sXVxcZCspP1MpPyk/KSQvO1xuLyoqIEltcGxlbWVudHMgSVNPIDg2MDEtMiBleHRlbnNpb25zIGxpa2UgZXhwbGljaXQgKy0gcHJlZml4ZXMsIG1peGluZyB3ZWVrcyB3aXRoIG90aGVyIHVuaXRzLCBhbmQgZnJhY3Rpb25hbC9uZWdhdGl2ZSBjb21wb25lbnRzLiAqL1xuZXhwb3J0IGNvbnN0IGV4dGVuZGVkRHVyYXRpb24gPSAvXlstK10/UCg/ISQpKD86KD86Wy0rXT9cXGQrWSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtZJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzooPzpbLStdP1xcZCtXKXwoPzpbLStdP1xcZCtbLixdXFxkK1ckKSk/KD86KD86Wy0rXT9cXGQrRCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtEJCkpPyg/OlQoPz1bXFxkKy1dKSg/Oig/OlstK10/XFxkK0gpfCg/OlstK10/XFxkK1suLF1cXGQrSCQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86Wy0rXT9cXGQrKD86Wy4sXVxcZCspP1MpPyk/PyQvO1xuLyoqIEEgcmVnZXggZm9yIGFueSBVVUlELWxpa2UgaWRlbnRpZmllcjogOC00LTQtNC0xMiBoZXggcGF0dGVybiAqL1xuZXhwb3J0IGNvbnN0IGd1aWQgPSAvXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0pJC87XG4vKiogUmV0dXJucyBhIHJlZ2V4IGZvciB2YWxpZGF0aW5nIGFuIFJGQyA5NTYyLzQxMjIgVVVJRC5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvbiBPcHRpb25hbGx5IHNwZWNpZnkgYSB2ZXJzaW9uIDEtOC4gSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQsIGFsbCB2ZXJzaW9ucyBhcmUgc3VwcG9ydGVkLiAqL1xuZXhwb3J0IGNvbnN0IHV1aWQgPSAodmVyc2lvbikgPT4ge1xuICAgIGlmICghdmVyc2lvbilcbiAgICAgICAgcmV0dXJuIC9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLztcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke3ZlcnNpb259WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApO1xufTtcbmV4cG9ydCBjb25zdCB1dWlkNCA9IC8qQF9fUFVSRV9fKi8gdXVpZCg0KTtcbmV4cG9ydCBjb25zdCB1dWlkNiA9IC8qQF9fUFVSRV9fKi8gdXVpZCg2KTtcbmV4cG9ydCBjb25zdCB1dWlkNyA9IC8qQF9fUFVSRV9fKi8gdXVpZCg3KTtcbi8qKiBQcmFjdGljYWwgZW1haWwgdmFsaWRhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IGVtYWlsID0gL14oPyFcXC4pKD8hLipcXC5cXC4pKFtBLVphLXowLTlfJytcXC1cXC5dKilbQS1aYS16MC05XystXUAoW0EtWmEtejAtOV1bQS1aYS16MC05XFwtXSpcXC4pK1tBLVphLXpdezIsfSQvO1xuLyoqIEVxdWl2YWxlbnQgdG8gdGhlIEhUTUw1IGlucHV0W3R5cGU9ZW1haWxdIHZhbGlkYXRpb24gaW1wbGVtZW50ZWQgYnkgYnJvd3NlcnMuIFNvdXJjZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2VtYWlsICovXG5leHBvcnQgY29uc3QgaHRtbDVFbWFpbCA9IC9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLztcbi8qKiBUaGUgY2xhc3NpYyBlbWFpbHJlZ2V4LmNvbSByZWdleCBmb3IgUkZDIDUzMjItY29tcGxpYW50IGVtYWlscyAqL1xuZXhwb3J0IGNvbnN0IHJmYzUzMjJFbWFpbCA9IC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvO1xuLyoqIEEgbG9vc2UgcmVnZXggdGhhdCBhbGxvd3MgVW5pY29kZSBjaGFyYWN0ZXJzLCBlbmZvcmNlcyBsZW5ndGggbGltaXRzLCBhbmQgdGhhdCdzIGFib3V0IGl0LiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVFbWFpbCA9IC9eW15cXHNAXCJdezEsNjR9QFteXFxzQF17MSwyNTV9JC91O1xuZXhwb3J0IGNvbnN0IGlkbkVtYWlsID0gdW5pY29kZUVtYWlsO1xuZXhwb3J0IGNvbnN0IGJyb3dzZXJFbWFpbCA9IC9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLztcbi8vIGZyb20gaHR0cHM6Ly90aGVrZXZpbnNjb3R0LmNvbS9lbW9qaXMtaW4tamF2YXNjcmlwdC8jd3JpdGluZy1hLXJlZ3VsYXItZXhwcmVzc2lvblxuY29uc3QgX2Vtb2ppID0gYF4oXFxcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXFxccHtFbW9qaV9Db21wb25lbnR9KSskYDtcbmV4cG9ydCBmdW5jdGlvbiBlbW9qaSgpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChfZW1vamksIFwidVwiKTtcbn1cbmV4cG9ydCBjb25zdCBpcHY0ID0gL14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLztcbmV4cG9ydCBjb25zdCBpcHY2ID0gL14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSkkLztcbmV4cG9ydCBjb25zdCBtYWMgPSAoZGVsaW1pdGVyKSA9PiB7XG4gICAgY29uc3QgZXNjYXBlZERlbGltID0gdXRpbC5lc2NhcGVSZWdleChkZWxpbWl0ZXIgPz8gXCI6XCIpO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKD86WzAtOUEtRl17Mn0ke2VzY2FwZWREZWxpbX0pezV9WzAtOUEtRl17Mn0kfF4oPzpbMC05YS1mXXsyfSR7ZXNjYXBlZERlbGltfSl7NX1bMC05YS1mXXsyfSRgKTtcbn07XG5leHBvcnQgY29uc3QgY2lkcnY0ID0gL14oKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC87XG5leHBvcnQgY29uc3QgY2lkcnY2ID0gL14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18Ojp8KFswLTlhLWZBLUZdezEsNH0pPzo6KFswLTlhLWZBLUZdezEsNH06Pyl7MCw2fSlcXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvO1xuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzg2MDM5Mi9kZXRlcm1pbmUtaWYtc3RyaW5nLWlzLWluLWJhc2U2NC11c2luZy1qYXZhc2NyaXB0XG5leHBvcnQgY29uc3QgYmFzZTY0ID0gL14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC87XG5leHBvcnQgY29uc3QgYmFzZTY0dXJsID0gL15bQS1aYS16MC05Xy1dKiQvO1xuLy8gYmFzZWQgb24gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTA2MTc5L3JlZ3VsYXItZXhwcmVzc2lvbi10by1tYXRjaC1kbnMtaG9zdG5hbWUtb3ItaXAtYWRkcmVzc1xuLy8gZXhwb3J0IGNvbnN0IGhvc3RuYW1lOiBSZWdFeHAgPSAvXihbYS16QS1aMC05LV0rXFwuKSpbYS16QS1aMC05LV0rJC87XG5leHBvcnQgY29uc3QgaG9zdG5hbWUgPSAvXig/PS57MSwyNTN9XFwuPyQpW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbLTAtOWEtekEtWl17MCw2MX1bMC05YS16QS1aXSk/KSpcXC4/JC87XG5leHBvcnQgY29uc3QgZG9tYWluID0gL14oW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XFwuKStbYS16QS1aXXsyLH0kLztcbi8vIGh0dHBzOi8vYmxvZy5zdGV2ZW5sZXZpdGhhbi5jb20vYXJjaGl2ZXMvdmFsaWRhdGUtcGhvbmUtbnVtYmVyI3I0LTMgKHJlZ2V4IHNhbnMgc3BhY2VzKVxuLy8gRS4xNjQ6IGxlYWRpbmcgZGlnaXQgbXVzdCBiZSAxLTk7IHRvdGFsIGRpZ2l0cyAoZXhjbHVkaW5nICcrJykgYmV0d2VlbiA3LTE1XG5leHBvcnQgY29uc3QgZTE2NCA9IC9eXFwrWzEtOV1cXGR7NiwxNH0kLztcbi8vIGNvbnN0IGRhdGVTb3VyY2UgPSBgKChcXFxcZFxcXFxkWzI0NjhdWzA0OF18XFxcXGRcXFxcZFsxMzU3OV1bMjZdfFxcXFxkXFxcXGQwWzQ4XXxbMDI0NjhdWzA0OF0wMHxbMTM1NzldWzI2XTAwKS0wMi0yOXxcXFxcZHs0fS0oKDBbMTM1NzhdfDFbMDJdKS0oMFsxLTldfFsxMl1cXFxcZHwzWzAxXSl8KDBbNDY5XXwxMSktKDBbMS05XXxbMTJdXFxcXGR8MzApfCgwMiktKDBbMS05XXwxXFxcXGR8MlswLThdKSkpYDtcbmNvbnN0IGRhdGVTb3VyY2UgPSBgKD86KD86XFxcXGRcXFxcZFsyNDY4XVswNDhdfFxcXFxkXFxcXGRbMTM1NzldWzI2XXxcXFxcZFxcXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxcXGR7NH0tKD86KD86MFsxMzU3OF18MVswMl0pLSg/OjBbMS05XXxbMTJdXFxcXGR8M1swMV0pfCg/OjBbNDY5XXwxMSktKD86MFsxLTldfFsxMl1cXFxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxcXGR8MlswLThdKSkpYDtcbmV4cG9ydCBjb25zdCBkYXRlID0gLypAX19QVVJFX18qLyBuZXcgUmVnRXhwKGBeJHtkYXRlU291cmNlfSRgKTtcbmZ1bmN0aW9uIHRpbWVTb3VyY2UoYXJncykge1xuICAgIGNvbnN0IGhobW0gPSBgKD86WzAxXVxcXFxkfDJbMC0zXSk6WzAtNV1cXFxcZGA7XG4gICAgY29uc3QgcmVnZXggPSB0eXBlb2YgYXJncy5wcmVjaXNpb24gPT09IFwibnVtYmVyXCJcbiAgICAgICAgPyBhcmdzLnByZWNpc2lvbiA9PT0gLTFcbiAgICAgICAgICAgID8gYCR7aGhtbX1gXG4gICAgICAgICAgICA6IGFyZ3MucHJlY2lzaW9uID09PSAwXG4gICAgICAgICAgICAgICAgPyBgJHtoaG1tfTpbMC01XVxcXFxkYFxuICAgICAgICAgICAgICAgIDogYCR7aGhtbX06WzAtNV1cXFxcZFxcXFwuXFxcXGR7JHthcmdzLnByZWNpc2lvbn19YFxuICAgICAgICA6IGAke2hobW19KD86OlswLTVdXFxcXGQoPzpcXFxcLlxcXFxkKyk/KT9gO1xuICAgIHJldHVybiByZWdleDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0aW1lKGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7dGltZVNvdXJjZShhcmdzKX0kYCk7XG59XG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzMxNDMyMzFcbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZShhcmdzKSB7XG4gICAgY29uc3QgdGltZSA9IHRpbWVTb3VyY2UoeyBwcmVjaXNpb246IGFyZ3MucHJlY2lzaW9uIH0pO1xuICAgIGNvbnN0IG9wdHMgPSBbXCJaXCJdO1xuICAgIGlmIChhcmdzLmxvY2FsKVxuICAgICAgICBvcHRzLnB1c2goXCJcIik7XG4gICAgLy8gaWYgKGFyZ3Mub2Zmc2V0KSBvcHRzLnB1c2goYChbKy1dXFxcXGR7Mn06XFxcXGR7Mn0pYCk7XG4gICAgaWYgKGFyZ3Mub2Zmc2V0KVxuICAgICAgICBvcHRzLnB1c2goYChbKy1dKD86WzAxXVxcXFxkfDJbMC0zXSk6WzAtNV1cXFxcZClgKTtcbiAgICBjb25zdCB0aW1lUmVnZXggPSBgJHt0aW1lfSg/OiR7b3B0cy5qb2luKFwifFwiKX0pYDtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7ZGF0ZVNvdXJjZX1UKD86JHt0aW1lUmVnZXh9KSRgKTtcbn1cbmV4cG9ydCBjb25zdCBzdHJpbmcgPSAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgcmVnZXggPSBwYXJhbXMgPyBgW1xcXFxzXFxcXFNdeyR7cGFyYW1zPy5taW5pbXVtID8/IDB9LCR7cGFyYW1zPy5tYXhpbXVtID8/IFwiXCJ9fWAgOiBgW1xcXFxzXFxcXFNdKmA7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4ke3JlZ2V4fSRgKTtcbn07XG5leHBvcnQgY29uc3QgYmlnaW50ID0gL14tP1xcZCtuPyQvO1xuZXhwb3J0IGNvbnN0IGludGVnZXIgPSAvXi0/XFxkKyQvO1xuZXhwb3J0IGNvbnN0IG51bWJlciA9IC9eLT9cXGQrKD86XFwuXFxkKyk/JC87XG5leHBvcnQgY29uc3QgYm9vbGVhbiA9IC9eKD86dHJ1ZXxmYWxzZSkkL2k7XG5jb25zdCBfbnVsbCA9IC9ebnVsbCQvaTtcbmV4cG9ydCB7IF9udWxsIGFzIG51bGwgfTtcbmNvbnN0IF91bmRlZmluZWQgPSAvXnVuZGVmaW5lZCQvaTtcbmV4cG9ydCB7IF91bmRlZmluZWQgYXMgdW5kZWZpbmVkIH07XG4vLyByZWdleCBmb3Igc3RyaW5nIHdpdGggbm8gdXBwZXJjYXNlIGxldHRlcnNcbmV4cG9ydCBjb25zdCBsb3dlcmNhc2UgPSAvXlteQS1aXSokLztcbi8vIHJlZ2V4IGZvciBzdHJpbmcgd2l0aCBubyBsb3dlcmNhc2UgbGV0dGVyc1xuZXhwb3J0IGNvbnN0IHVwcGVyY2FzZSA9IC9eW15hLXpdKiQvO1xuLy8gcmVnZXggZm9yIGhleGFkZWNpbWFsIHN0cmluZ3MgKGFueSBsZW5ndGgpXG5leHBvcnQgY29uc3QgaGV4ID0gL15bMC05YS1mQS1GXSokLztcbi8vIEhhc2ggcmVnZXhlcyBmb3IgZGlmZmVyZW50IGFsZ29yaXRobXMgYW5kIGVuY29kaW5nc1xuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBiYXNlNjQgcmVnZXggd2l0aCBleGFjdCBsZW5ndGggYW5kIHBhZGRpbmdcbmZ1bmN0aW9uIGZpeGVkQmFzZTY0KGJvZHlMZW5ndGgsIHBhZGRpbmcpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHtib2R5TGVuZ3RofX0ke3BhZGRpbmd9JGApO1xufVxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBiYXNlNjR1cmwgcmVnZXggd2l0aCBleGFjdCBsZW5ndGggKG5vIHBhZGRpbmcpXG5mdW5jdGlvbiBmaXhlZEJhc2U2NHVybChsZW5ndGgpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTlfLV17JHtsZW5ndGh9fSRgKTtcbn1cbi8vIE1ENSAoMTYgYnl0ZXMpOiBiYXNlNjQgPSAyNCBjaGFycyB0b3RhbCAoMjIgKyBcIj09XCIpXG5leHBvcnQgY29uc3QgbWQ1X2hleCA9IC9eWzAtOWEtZkEtRl17MzJ9JC87XG5leHBvcnQgY29uc3QgbWQ1X2Jhc2U2NCA9IC8qQF9fUFVSRV9fKi8gZml4ZWRCYXNlNjQoMjIsIFwiPT1cIik7XG5leHBvcnQgY29uc3QgbWQ1X2Jhc2U2NHVybCA9IC8qQF9fUFVSRV9fKi8gZml4ZWRCYXNlNjR1cmwoMjIpO1xuLy8gU0hBMSAoMjAgYnl0ZXMpOiBiYXNlNjQgPSAyOCBjaGFycyB0b3RhbCAoMjcgKyBcIj1cIilcbmV4cG9ydCBjb25zdCBzaGExX2hleCA9IC9eWzAtOWEtZkEtRl17NDB9JC87XG5leHBvcnQgY29uc3Qgc2hhMV9iYXNlNjQgPSAvKkBfX1BVUkVfXyovIGZpeGVkQmFzZTY0KDI3LCBcIj1cIik7XG5leHBvcnQgY29uc3Qgc2hhMV9iYXNlNjR1cmwgPSAvKkBfX1BVUkVfXyovIGZpeGVkQmFzZTY0dXJsKDI3KTtcbi8vIFNIQTI1NiAoMzIgYnl0ZXMpOiBiYXNlNjQgPSA0NCBjaGFycyB0b3RhbCAoNDMgKyBcIj1cIilcbmV4cG9ydCBjb25zdCBzaGEyNTZfaGV4ID0gL15bMC05YS1mQS1GXXs2NH0kLztcbmV4cG9ydCBjb25zdCBzaGEyNTZfYmFzZTY0ID0gLypAX19QVVJFX18qLyBmaXhlZEJhc2U2NCg0MywgXCI9XCIpO1xuZXhwb3J0IGNvbnN0IHNoYTI1Nl9iYXNlNjR1cmwgPSAvKkBfX1BVUkVfXyovIGZpeGVkQmFzZTY0dXJsKDQzKTtcbi8vIFNIQTM4NCAoNDggYnl0ZXMpOiBiYXNlNjQgPSA2NCBjaGFycyB0b3RhbCAobm8gcGFkZGluZylcbmV4cG9ydCBjb25zdCBzaGEzODRfaGV4ID0gL15bMC05YS1mQS1GXXs5Nn0kLztcbmV4cG9ydCBjb25zdCBzaGEzODRfYmFzZTY0ID0gLypAX19QVVJFX18qLyBmaXhlZEJhc2U2NCg2NCwgXCJcIik7XG5leHBvcnQgY29uc3Qgc2hhMzg0X2Jhc2U2NHVybCA9IC8qQF9fUFVSRV9fKi8gZml4ZWRCYXNlNjR1cmwoNjQpO1xuLy8gU0hBNTEyICg2NCBieXRlcyk6IGJhc2U2NCA9IDg4IGNoYXJzIHRvdGFsICg4NiArIFwiPT1cIilcbmV4cG9ydCBjb25zdCBzaGE1MTJfaGV4ID0gL15bMC05YS1mQS1GXXsxMjh9JC87XG5leHBvcnQgY29uc3Qgc2hhNTEyX2Jhc2U2NCA9IC8qQF9fUFVSRV9fKi8gZml4ZWRCYXNlNjQoODYsIFwiPT1cIik7XG5leHBvcnQgY29uc3Qgc2hhNTEyX2Jhc2U2NHVybCA9IC8qQF9fUFVSRV9fKi8gZml4ZWRCYXNlNjR1cmwoODYpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/regexes.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/registries.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/zod/v4/core/registries.js ***!
|
||
\************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodRegistry: () => (/* binding */ $ZodRegistry),\n/* harmony export */ $input: () => (/* binding */ $input),\n/* harmony export */ $output: () => (/* binding */ $output),\n/* harmony export */ globalRegistry: () => (/* binding */ globalRegistry),\n/* harmony export */ registry: () => (/* binding */ registry)\n/* harmony export */ });\nvar _a;\nconst $output = Symbol(\"ZodOutput\");\nconst $input = Symbol(\"ZodInput\");\nclass $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nfunction registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nconst globalRegistry = globalThis.__zod_globalRegistry;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9yZWdpc3RyaWVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDTztBQUNBO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIscUJBQXFCO0FBQzlDLDBCQUEwQjtBQUMxQix3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDTyIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcY29yZVxccmVnaXN0cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2E7XG5leHBvcnQgY29uc3QgJG91dHB1dCA9IFN5bWJvbChcIlpvZE91dHB1dFwiKTtcbmV4cG9ydCBjb25zdCAkaW5wdXQgPSBTeW1ib2woXCJab2RJbnB1dFwiKTtcbmV4cG9ydCBjbGFzcyAkWm9kUmVnaXN0cnkge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9tYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB0aGlzLl9pZG1hcCA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgYWRkKHNjaGVtYSwgLi4uX21ldGEpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IF9tZXRhWzBdO1xuICAgICAgICB0aGlzLl9tYXAuc2V0KHNjaGVtYSwgbWV0YSk7XG4gICAgICAgIGlmIChtZXRhICYmIHR5cGVvZiBtZXRhID09PSBcIm9iamVjdFwiICYmIFwiaWRcIiBpbiBtZXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9pZG1hcC5zZXQobWV0YS5pZCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgIHRoaXMuX2lkbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgcmVtb3ZlKHNjaGVtYSkge1xuICAgICAgICBjb25zdCBtZXRhID0gdGhpcy5fbWFwLmdldChzY2hlbWEpO1xuICAgICAgICBpZiAobWV0YSAmJiB0eXBlb2YgbWV0YSA9PT0gXCJvYmplY3RcIiAmJiBcImlkXCIgaW4gbWV0YSkge1xuICAgICAgICAgICAgdGhpcy5faWRtYXAuZGVsZXRlKG1ldGEuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21hcC5kZWxldGUoc2NoZW1hKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGdldChzY2hlbWEpIHtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMuX21hcC5nZXQoc2NoZW1hKSBhcyBhbnk7XG4gICAgICAgIC8vIGluaGVyaXQgbWV0YWRhdGFcbiAgICAgICAgY29uc3QgcCA9IHNjaGVtYS5fem9kLnBhcmVudDtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIGNvbnN0IHBtID0geyAuLi4odGhpcy5nZXQocCkgPz8ge30pIH07XG4gICAgICAgICAgICBkZWxldGUgcG0uaWQ7IC8vIGRvIG5vdCBpbmhlcml0IGlkXG4gICAgICAgICAgICBjb25zdCBmID0geyAuLi5wbSwgLi4udGhpcy5fbWFwLmdldChzY2hlbWEpIH07XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZikubGVuZ3RoID8gZiA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbWFwLmdldChzY2hlbWEpO1xuICAgIH1cbiAgICBoYXMoc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXAuaGFzKHNjaGVtYSk7XG4gICAgfVxufVxuLy8gcmVnaXN0cmllc1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdHJ5KCkge1xuICAgIHJldHVybiBuZXcgJFpvZFJlZ2lzdHJ5KCk7XG59XG4oX2EgPSBnbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxSZWdpc3RyeSA/PyAoX2EuX196b2RfZ2xvYmFsUmVnaXN0cnkgPSByZWdpc3RyeSgpKTtcbmV4cG9ydCBjb25zdCBnbG9iYWxSZWdpc3RyeSA9IGdsb2JhbFRoaXMuX196b2RfZ2xvYmFsUmVnaXN0cnk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/registries.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/schemas.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/zod/v4/core/schemas.js ***!
|
||
\*********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodAny: () => (/* binding */ $ZodAny),\n/* harmony export */ $ZodArray: () => (/* binding */ $ZodArray),\n/* harmony export */ $ZodBase64: () => (/* binding */ $ZodBase64),\n/* harmony export */ $ZodBase64URL: () => (/* binding */ $ZodBase64URL),\n/* harmony export */ $ZodBigInt: () => (/* binding */ $ZodBigInt),\n/* harmony export */ $ZodBigIntFormat: () => (/* binding */ $ZodBigIntFormat),\n/* harmony export */ $ZodBoolean: () => (/* binding */ $ZodBoolean),\n/* harmony export */ $ZodCIDRv4: () => (/* binding */ $ZodCIDRv4),\n/* harmony export */ $ZodCIDRv6: () => (/* binding */ $ZodCIDRv6),\n/* harmony export */ $ZodCUID: () => (/* binding */ $ZodCUID),\n/* harmony export */ $ZodCUID2: () => (/* binding */ $ZodCUID2),\n/* harmony export */ $ZodCatch: () => (/* binding */ $ZodCatch),\n/* harmony export */ $ZodCodec: () => (/* binding */ $ZodCodec),\n/* harmony export */ $ZodCustom: () => (/* binding */ $ZodCustom),\n/* harmony export */ $ZodCustomStringFormat: () => (/* binding */ $ZodCustomStringFormat),\n/* harmony export */ $ZodDate: () => (/* binding */ $ZodDate),\n/* harmony export */ $ZodDefault: () => (/* binding */ $ZodDefault),\n/* harmony export */ $ZodDiscriminatedUnion: () => (/* binding */ $ZodDiscriminatedUnion),\n/* harmony export */ $ZodE164: () => (/* binding */ $ZodE164),\n/* harmony export */ $ZodEmail: () => (/* binding */ $ZodEmail),\n/* harmony export */ $ZodEmoji: () => (/* binding */ $ZodEmoji),\n/* harmony export */ $ZodEnum: () => (/* binding */ $ZodEnum),\n/* harmony export */ $ZodExactOptional: () => (/* binding */ $ZodExactOptional),\n/* harmony export */ $ZodFile: () => (/* binding */ $ZodFile),\n/* harmony export */ $ZodFunction: () => (/* binding */ $ZodFunction),\n/* harmony export */ $ZodGUID: () => (/* binding */ $ZodGUID),\n/* harmony export */ $ZodIPv4: () => (/* binding */ $ZodIPv4),\n/* harmony export */ $ZodIPv6: () => (/* binding */ $ZodIPv6),\n/* harmony export */ $ZodISODate: () => (/* binding */ $ZodISODate),\n/* harmony export */ $ZodISODateTime: () => (/* binding */ $ZodISODateTime),\n/* harmony export */ $ZodISODuration: () => (/* binding */ $ZodISODuration),\n/* harmony export */ $ZodISOTime: () => (/* binding */ $ZodISOTime),\n/* harmony export */ $ZodIntersection: () => (/* binding */ $ZodIntersection),\n/* harmony export */ $ZodJWT: () => (/* binding */ $ZodJWT),\n/* harmony export */ $ZodKSUID: () => (/* binding */ $ZodKSUID),\n/* harmony export */ $ZodLazy: () => (/* binding */ $ZodLazy),\n/* harmony export */ $ZodLiteral: () => (/* binding */ $ZodLiteral),\n/* harmony export */ $ZodMAC: () => (/* binding */ $ZodMAC),\n/* harmony export */ $ZodMap: () => (/* binding */ $ZodMap),\n/* harmony export */ $ZodNaN: () => (/* binding */ $ZodNaN),\n/* harmony export */ $ZodNanoID: () => (/* binding */ $ZodNanoID),\n/* harmony export */ $ZodNever: () => (/* binding */ $ZodNever),\n/* harmony export */ $ZodNonOptional: () => (/* binding */ $ZodNonOptional),\n/* harmony export */ $ZodNull: () => (/* binding */ $ZodNull),\n/* harmony export */ $ZodNullable: () => (/* binding */ $ZodNullable),\n/* harmony export */ $ZodNumber: () => (/* binding */ $ZodNumber),\n/* harmony export */ $ZodNumberFormat: () => (/* binding */ $ZodNumberFormat),\n/* harmony export */ $ZodObject: () => (/* binding */ $ZodObject),\n/* harmony export */ $ZodObjectJIT: () => (/* binding */ $ZodObjectJIT),\n/* harmony export */ $ZodOptional: () => (/* binding */ $ZodOptional),\n/* harmony export */ $ZodPipe: () => (/* binding */ $ZodPipe),\n/* harmony export */ $ZodPrefault: () => (/* binding */ $ZodPrefault),\n/* harmony export */ $ZodPromise: () => (/* binding */ $ZodPromise),\n/* harmony export */ $ZodReadonly: () => (/* binding */ $ZodReadonly),\n/* harmony export */ $ZodRecord: () => (/* binding */ $ZodRecord),\n/* harmony export */ $ZodSet: () => (/* binding */ $ZodSet),\n/* harmony export */ $ZodString: () => (/* binding */ $ZodString),\n/* harmony export */ $ZodStringFormat: () => (/* binding */ $ZodStringFormat),\n/* harmony export */ $ZodSuccess: () => (/* binding */ $ZodSuccess),\n/* harmony export */ $ZodSymbol: () => (/* binding */ $ZodSymbol),\n/* harmony export */ $ZodTemplateLiteral: () => (/* binding */ $ZodTemplateLiteral),\n/* harmony export */ $ZodTransform: () => (/* binding */ $ZodTransform),\n/* harmony export */ $ZodTuple: () => (/* binding */ $ZodTuple),\n/* harmony export */ $ZodType: () => (/* binding */ $ZodType),\n/* harmony export */ $ZodULID: () => (/* binding */ $ZodULID),\n/* harmony export */ $ZodURL: () => (/* binding */ $ZodURL),\n/* harmony export */ $ZodUUID: () => (/* binding */ $ZodUUID),\n/* harmony export */ $ZodUndefined: () => (/* binding */ $ZodUndefined),\n/* harmony export */ $ZodUnion: () => (/* binding */ $ZodUnion),\n/* harmony export */ $ZodUnknown: () => (/* binding */ $ZodUnknown),\n/* harmony export */ $ZodVoid: () => (/* binding */ $ZodVoid),\n/* harmony export */ $ZodXID: () => (/* binding */ $ZodXID),\n/* harmony export */ $ZodXor: () => (/* binding */ $ZodXor),\n/* harmony export */ clone: () => (/* reexport safe */ _util_js__WEBPACK_IMPORTED_MODULE_5__.clone),\n/* harmony export */ isValidBase64: () => (/* binding */ isValidBase64),\n/* harmony export */ isValidBase64URL: () => (/* binding */ isValidBase64URL),\n/* harmony export */ isValidJWT: () => (/* binding */ isValidJWT)\n/* harmony export */ });\n/* harmony import */ var _checks_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./checks.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/checks.js\");\n/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./core.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _doc_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./doc.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/doc.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parse.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/parse.js\");\n/* harmony import */ var _regexes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./regexes.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/regexes.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n/* harmony import */ var _versions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./versions.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/versions.js\");\n\n\n\n\n\n\n\nconst $ZodType = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = _versions_js__WEBPACK_IMPORTED_MODULE_6__.version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = _util_js__WEBPACK_IMPORTED_MODULE_5__.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_1__.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = _util_js__WEBPACK_IMPORTED_MODULE_5__.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = _util_js__WEBPACK_IMPORTED_MODULE_5__.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (_util_js__WEBPACK_IMPORTED_MODULE_5__.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new _core_js__WEBPACK_IMPORTED_MODULE_1__.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new _core_js__WEBPACK_IMPORTED_MODULE_1__.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = (0,_parse_js__WEBPACK_IMPORTED_MODULE_3__.safeParse)(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return (0,_parse_js__WEBPACK_IMPORTED_MODULE_3__.safeParseAsync)(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\n\nconst $ZodString = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? _regexes_js__WEBPACK_IMPORTED_MODULE_4__.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nconst $ZodStringFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nconst $ZodGUID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.guid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodUUID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.uuid());\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodEmail = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.email);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodURL = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nconst $ZodEmoji = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.emoji());\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodNanoID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodCUID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.cuid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodCUID2 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodULID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.ulid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodXID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.xid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodKSUID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodISODateTime = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodISODate = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.date);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodISOTime = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.time(def));\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodISODuration = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.duration);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodIPv4 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nconst $ZodIPv6 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nconst $ZodMAC = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nconst $ZodCIDRv4 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodCIDRv6 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nfunction isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nconst $ZodBase64 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nfunction isValidBase64URL(data) {\n if (!_regexes_js__WEBPACK_IMPORTED_MODULE_4__.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nconst $ZodBase64URL = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodE164 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nfunction isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nconst $ZodJWT = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodCustomStringFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nconst $ZodNumber = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? _regexes_js__WEBPACK_IMPORTED_MODULE_4__.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nconst $ZodNumberFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nconst $ZodBoolean = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nconst $ZodBigInt = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nconst $ZodBigIntFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nconst $ZodSymbol = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nconst $ZodUndefined = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nconst $ZodNull = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__[\"null\"];\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nconst $ZodAny = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nconst $ZodUnknown = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nconst $ZodNever = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nconst $ZodVoid = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nconst $ZodDate = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_5__.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nconst $ZodArray = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n if (result.issues.length) {\n // For optional-out schemas, ignore errors on absent keys\n if (isOptionalOut && !(key in input)) {\n return;\n }\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_5__.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = _util_js__WEBPACK_IMPORTED_MODULE_5__.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nconst $ZodObject = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = _util_js__WEBPACK_IMPORTED_MODULE_5__.cached(() => normalizeDef(def));\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = _util_js__WEBPACK_IMPORTED_MODULE_5__.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nconst $ZodObjectJIT = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = _util_js__WEBPACK_IMPORTED_MODULE_5__.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new _doc_js__WEBPACK_IMPORTED_MODULE_2__.Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = _util_js__WEBPACK_IMPORTED_MODULE_5__.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = _util_js__WEBPACK_IMPORTED_MODULE_5__.esc(key);\n const schema = shape[key];\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalOut) {\n // For optional-out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = _util_js__WEBPACK_IMPORTED_MODULE_5__.isObject;\n const jit = !_core_js__WEBPACK_IMPORTED_MODULE_1__.globalConfig.jitless;\n const allowsEval = _util_js__WEBPACK_IMPORTED_MODULE_5__.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !_util_js__WEBPACK_IMPORTED_MODULE_5__.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_5__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_1__.config()))),\n });\n return final;\n}\nconst $ZodUnion = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => _util_js__WEBPACK_IMPORTED_MODULE_5__.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_5__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_1__.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nconst $ZodXor = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nconst $ZodDiscriminatedUnion = \n/*@__PURE__*/\n_core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = _util_js__WEBPACK_IMPORTED_MODULE_5__.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!_util_js__WEBPACK_IMPORTED_MODULE_5__.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nconst $ZodIntersection = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (_util_js__WEBPACK_IMPORTED_MODULE_5__.isPlainObject(a) && _util_js__WEBPACK_IMPORTED_MODULE_5__.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (_util_js__WEBPACK_IMPORTED_MODULE_5__.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nconst $ZodTuple = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig\n ? { code: \"too_big\", maximum: items.length, inclusive: true }\n : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_5__.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nconst $ZodRecord = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!_util_js__WEBPACK_IMPORTED_MODULE_5__.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_5__.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_5__.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && _regexes_js__WEBPACK_IMPORTED_MODULE_4__.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_5__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_1__.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_5__.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_5__.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nconst $ZodMap = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (_util_js__WEBPACK_IMPORTED_MODULE_5__.propertyKeyTypes.has(typeof key)) {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_5__.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_5__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_1__.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (_util_js__WEBPACK_IMPORTED_MODULE_5__.propertyKeyTypes.has(typeof key)) {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_5__.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_5__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_1__.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nconst $ZodSet = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nconst $ZodEnum = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = _util_js__WEBPACK_IMPORTED_MODULE_5__.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => _util_js__WEBPACK_IMPORTED_MODULE_5__.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? _util_js__WEBPACK_IMPORTED_MODULE_5__.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nconst $ZodLiteral = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? _util_js__WEBPACK_IMPORTED_MODULE_5__.escapeRegex(o) : o ? _util_js__WEBPACK_IMPORTED_MODULE_5__.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nconst $ZodFile = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nconst $ZodTransform = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_1__.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_1__.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nconst $ZodOptional = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${_util_js__WEBPACK_IMPORTED_MODULE_5__.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nconst $ZodExactOptional = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nconst $ZodNullable = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${_util_js__WEBPACK_IMPORTED_MODULE_5__.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nconst $ZodDefault = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nconst $ZodPrefault = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nconst $ZodNonOptional = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nconst $ZodSuccess = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_1__.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nconst $ZodCatch = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_5__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_1__.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => _util_js__WEBPACK_IMPORTED_MODULE_5__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_1__.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nconst $ZodNaN = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nconst $ZodPipe = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nconst $ZodCodec = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nconst $ZodReadonly = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nconst $ZodTemplateLiteral = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || _util_js__WEBPACK_IMPORTED_MODULE_5__.primitiveTypes.has(typeof part)) {\n regexParts.push(_util_js__WEBPACK_IMPORTED_MODULE_5__.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nconst $ZodFunction = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? (0,_parse_js__WEBPACK_IMPORTED_MODULE_3__.parse)(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return (0,_parse_js__WEBPACK_IMPORTED_MODULE_3__.parse)(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await (0,_parse_js__WEBPACK_IMPORTED_MODULE_3__.parseAsync)(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await (0,_parse_js__WEBPACK_IMPORTED_MODULE_3__.parseAsync)(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nconst $ZodPromise = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nconst $ZodLazy = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"innerType\", () => def.getter());\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n _util_js__WEBPACK_IMPORTED_MODULE_5__.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nconst $ZodCustom = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"$ZodCustom\", (inst, def) => {\n _checks_js__WEBPACK_IMPORTED_MODULE_0__.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(_util_js__WEBPACK_IMPORTED_MODULE_5__.issue(_iss));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9zY2hlbWFzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFzQztBQUNKO0FBQ0g7QUFDMkM7QUFDbEM7QUFDTjtBQUNNO0FBQ2pDLCtCQUErQixrREFBaUI7QUFDdkQ7QUFDQSxzQkFBc0I7QUFDdEIseUJBQXlCO0FBQ3pCLHlDQUF5QztBQUN6Qyx3QkFBd0IsaURBQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDZDQUFZO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9EQUFtQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDZDQUFZO0FBQ3BELHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsNkNBQVk7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDZDQUFZO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9EQUFtQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELGtDQUFrQyxJQUFJLDBCQUEwQjtBQUNqSDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsSUFBSSxnREFBZTtBQUNuQixJQUFJLGdEQUFlO0FBQ25CLElBQUksZ0RBQWU7QUFDbkIsSUFBSSxnREFBZTtBQUNuQixJQUFJLGdEQUFlO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNNLGlDQUFpQyxrREFBaUI7QUFDekQsSUFBSSxpREFBZ0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDJDQUFVO0FBQ3RDO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGNvcmVcXHNjaGVtYXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hlY2tzIGZyb20gXCIuL2NoZWNrcy5qc1wiO1xuaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi9jb3JlLmpzXCI7XG5pbXBvcnQgeyBEb2MgfSBmcm9tIFwiLi9kb2MuanNcIjtcbmltcG9ydCB7IHBhcnNlLCBwYXJzZUFzeW5jLCBzYWZlUGFyc2UsIHNhZmVQYXJzZUFzeW5jIH0gZnJvbSBcIi4vcGFyc2UuanNcIjtcbmltcG9ydCAqIGFzIHJlZ2V4ZXMgZnJvbSBcIi4vcmVnZXhlcy5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi91dGlsLmpzXCI7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSBcIi4vdmVyc2lvbnMuanNcIjtcbmV4cG9ydCBjb25zdCAkWm9kVHlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVHlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGluc3QgPz8gKGluc3QgPSB7fSk7XG4gICAgaW5zdC5fem9kLmRlZiA9IGRlZjsgLy8gc2V0IF9kZWYgcHJvcGVydHlcbiAgICBpbnN0Ll96b2QuYmFnID0gaW5zdC5fem9kLmJhZyB8fCB7fTsgLy8gaW5pdGlhbGl6ZSBfYmFnIG9iamVjdFxuICAgIGluc3QuX3pvZC52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICBjb25zdCBjaGVja3MgPSBbLi4uKGluc3QuX3pvZC5kZWYuY2hlY2tzID8/IFtdKV07XG4gICAgLy8gaWYgaW5zdCBpcyBpdHNlbGYgYSBjaGVja3MuJFpvZENoZWNrLCBydW4gaXQgYXMgYSBjaGVja1xuICAgIGlmIChpbnN0Ll96b2QudHJhaXRzLmhhcyhcIiRab2RDaGVja1wiKSkge1xuICAgICAgICBjaGVja3MudW5zaGlmdChpbnN0KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBjaCBvZiBjaGVja3MpIHtcbiAgICAgICAgZm9yIChjb25zdCBmbiBvZiBjaC5fem9kLm9uYXR0YWNoKSB7XG4gICAgICAgICAgICBmbihpbnN0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hlY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBkZWZlcnJlZCBpbml0aWFsaXplclxuICAgICAgICAvLyBpbnN0Ll96b2QucGFyc2UgaXMgbm90IHlldCBkZWZpbmVkXG4gICAgICAgIChfYSA9IGluc3QuX3pvZCkuZGVmZXJyZWQgPz8gKF9hLmRlZmVycmVkID0gW10pO1xuICAgICAgICBpbnN0Ll96b2QuZGVmZXJyZWQ/LnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgaW5zdC5fem9kLnJ1biA9IGluc3QuX3pvZC5wYXJzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBydW5DaGVja3MgPSAocGF5bG9hZCwgY2hlY2tzLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGxldCBpc0Fib3J0ZWQgPSB1dGlsLmFib3J0ZWQocGF5bG9hZCk7XG4gICAgICAgICAgICBsZXQgYXN5bmNSZXN1bHQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIGNoZWNrcykge1xuICAgICAgICAgICAgICAgIGlmIChjaC5fem9kLmRlZi53aGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFJ1biA9IGNoLl96b2QuZGVmLndoZW4ocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkUnVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQWJvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY3VyckxlbiA9IHBheWxvYWQuaXNzdWVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBfID0gY2guX3pvZC5jaGVjayhwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBpZiAoXyBpbnN0YW5jZW9mIFByb21pc2UgJiYgY3R4Py5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFzeW5jUmVzdWx0IHx8IF8gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFzeW5jUmVzdWx0ID0gKGFzeW5jUmVzdWx0ID8/IFByb21pc2UucmVzb2x2ZSgpKS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IF87XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0TGVuID0gcGF5bG9hZC5pc3N1ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRMZW4gPT09IGN1cnJMZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Fib3J0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBYm9ydGVkID0gdXRpbC5hYm9ydGVkKHBheWxvYWQsIGN1cnJMZW4pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRMZW4gPSBwYXlsb2FkLmlzc3Vlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0TGVuID09PSBjdXJyTGVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNBYm9ydGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBYm9ydGVkID0gdXRpbC5hYm9ydGVkKHBheWxvYWQsIGN1cnJMZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhc3luY1Jlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhc3luY1Jlc3VsdC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaGFuZGxlQ2FuYXJ5UmVzdWx0ID0gKGNhbmFyeSwgcGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgICAgICAvLyBhYm9ydCBpZiB0aGUgY2FuYXJ5IGlzIGFib3J0ZWRcbiAgICAgICAgICAgIGlmICh1dGlsLmFib3J0ZWQoY2FuYXJ5KSkge1xuICAgICAgICAgICAgICAgIGNhbmFyeS5hYm9ydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FuYXJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcnVuIGNoZWNrcyBmaXJzdCwgdGhlblxuICAgICAgICAgICAgY29uc3QgY2hlY2tSZXN1bHQgPSBydW5DaGVja3MocGF5bG9hZCwgY2hlY2tzLCBjdHgpO1xuICAgICAgICAgICAgaWYgKGNoZWNrUmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGlmIChjdHguYXN5bmMgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgY29yZS4kWm9kQXN5bmNFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdC50aGVuKChjaGVja1Jlc3VsdCkgPT4gaW5zdC5fem9kLnBhcnNlKGNoZWNrUmVzdWx0LCBjdHgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbnN0Ll96b2QucGFyc2UoY2hlY2tSZXN1bHQsIGN0eCk7XG4gICAgICAgIH07XG4gICAgICAgIGluc3QuX3pvZC5ydW4gPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoY3R4LnNraXBDaGVja3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5zdC5fem9kLnBhcnNlKHBheWxvYWQsIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3R4LmRpcmVjdGlvbiA9PT0gXCJiYWNrd2FyZFwiKSB7XG4gICAgICAgICAgICAgICAgLy8gcnVuIGNhbmFyeVxuICAgICAgICAgICAgICAgIC8vIGluaXRpYWwgcGFzcyAobm8gY2hlY2tzKVxuICAgICAgICAgICAgICAgIGNvbnN0IGNhbmFyeSA9IGluc3QuX3pvZC5wYXJzZSh7IHZhbHVlOiBwYXlsb2FkLnZhbHVlLCBpc3N1ZXM6IFtdIH0sIHsgLi4uY3R4LCBza2lwQ2hlY2tzOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIGlmIChjYW5hcnkgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5hcnkudGhlbigoY2FuYXJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2FuYXJ5UmVzdWx0KGNhbmFyeSwgcGF5bG9hZCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVDYW5hcnlSZXN1bHQoY2FuYXJ5LCBwYXlsb2FkLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9yd2FyZFxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdC5fem9kLnBhcnNlKHBheWxvYWQsIGN0eCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGlmIChjdHguYXN5bmMgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgY29yZS4kWm9kQXN5bmNFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbigocmVzdWx0KSA9PiBydW5DaGVja3MocmVzdWx0LCBjaGVja3MsIGN0eCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJ1bkNoZWNrcyhyZXN1bHQsIGNoZWNrcywgY3R4KTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gTGF6eSBpbml0aWFsaXplIH5zdGFuZGFyZCB0byBhdm9pZCBjcmVhdGluZyBvYmplY3RzIGZvciBldmVyeSBzY2hlbWFcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdCwgXCJ+c3RhbmRhcmRcIiwgKCkgPT4gKHtcbiAgICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByID0gc2FmZVBhcnNlKGluc3QsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gci5zdWNjZXNzID8geyB2YWx1ZTogci5kYXRhIH0gOiB7IGlzc3Vlczogci5lcnJvcj8uaXNzdWVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzYWZlUGFyc2VBc3luYyhpbnN0LCB2YWx1ZSkudGhlbigocikgPT4gKHIuc3VjY2VzcyA/IHsgdmFsdWU6IHIuZGF0YSB9IDogeyBpc3N1ZXM6IHIuZXJyb3I/Lmlzc3VlcyB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZlbmRvcjogXCJ6b2RcIixcbiAgICAgICAgdmVyc2lvbjogMSxcbiAgICB9KSk7XG59KTtcbmV4cG9ydCB7IGNsb25lIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuZXhwb3J0IGNvbnN0ICRab2RTdHJpbmcgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFN0cmluZ1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gWy4uLihpbnN0Py5fem9kLmJhZz8ucGF0dGVybnMgPz8gW10pXS5wb3AoKSA/PyByZWdleGVzLnN0cmluZyhpbnN0Ll96b2QuYmFnKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgXykgPT4ge1xuICAgICAgICBpZiAoZGVmLmNvZXJjZSlcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IFN0cmluZyhwYXlsb2FkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfKSB7IH1cbiAgICAgICAgaWYgKHR5cGVvZiBwYXlsb2FkLnZhbHVlID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RTdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFN0cmluZ0Zvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gY2hlY2sgaW5pdGlhbGl6YXRpb24gbXVzdCBjb21lIGZpcnN0XG4gICAgY2hlY2tzLiRab2RDaGVja1N0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgJFpvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kR1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kR1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5ndWlkKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RVVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RVVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBpZiAoZGVmLnZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgdmVyc2lvbk1hcCA9IHtcbiAgICAgICAgICAgIHYxOiAxLFxuICAgICAgICAgICAgdjI6IDIsXG4gICAgICAgICAgICB2MzogMyxcbiAgICAgICAgICAgIHY0OiA0LFxuICAgICAgICAgICAgdjU6IDUsXG4gICAgICAgICAgICB2NjogNixcbiAgICAgICAgICAgIHY3OiA3LFxuICAgICAgICAgICAgdjg6IDgsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHYgPSB2ZXJzaW9uTWFwW2RlZi52ZXJzaW9uXTtcbiAgICAgICAgaWYgKHYgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246IFwiJHtkZWYudmVyc2lvbn1cImApO1xuICAgICAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLnV1aWQodikpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMudXVpZCgpKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RFbWFpbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRW1haWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZW1haWwpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFVSTCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVVJMXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGZyb20gaW5wdXRcbiAgICAgICAgICAgIGNvbnN0IHRyaW1tZWQgPSBwYXlsb2FkLnZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodHJpbW1lZCk7XG4gICAgICAgICAgICBpZiAoZGVmLmhvc3RuYW1lKSB7XG4gICAgICAgICAgICAgICAgZGVmLmhvc3RuYW1lLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKCFkZWYuaG9zdG5hbWUudGVzdCh1cmwuaG9zdG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBcInVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJJbnZhbGlkIGhvc3RuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBkZWYuaG9zdG5hbWUuc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkZWYucHJvdG9jb2wpIHtcbiAgICAgICAgICAgICAgICBkZWYucHJvdG9jb2wubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBpZiAoIWRlZi5wcm90b2NvbC50ZXN0KHVybC5wcm90b2NvbC5lbmRzV2l0aChcIjpcIikgPyB1cmwucHJvdG9jb2wuc2xpY2UoMCwgLTEpIDogdXJsLnByb3RvY29sKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogXCJ1cmxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSW52YWxpZCBwcm90b2NvbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogZGVmLnByb3RvY29sLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTZXQgdGhlIG91dHB1dCB2YWx1ZSBiYXNlZCBvbiBub3JtYWxpemUgZmxhZ1xuICAgICAgICAgICAgaWYgKGRlZi5ub3JtYWxpemUpIHtcbiAgICAgICAgICAgICAgICAvLyBVc2Ugbm9ybWFsaXplZCBVUkxcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gdXJsLmhyZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgaW5wdXQgKHRyaW1tZWQpXG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IHRyaW1tZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwidXJsXCIsXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RFbW9qaSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRW1vamlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZW1vamkoKSk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTmFub0lEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2ROYW5vSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMubmFub2lkKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmN1aWQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENVSUQyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDVUlEMlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5jdWlkMik7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVUxJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVUxJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy51bGlkKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RYSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFhJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy54aWQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEtTVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RLU1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5rc3VpZCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kSVNPRGF0ZVRpbWUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZElTT0RhdGVUaW1lXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmRhdGV0aW1lKGRlZikpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElTT0RhdGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZElTT0RhdGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZGF0ZSk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kSVNPVGltZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kSVNPVGltZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy50aW1lKGRlZikpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElTT0R1cmF0aW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RJU09EdXJhdGlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5kdXJhdGlvbik7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kSVB2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kSVB2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5pcHY0KTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuYmFnLmZvcm1hdCA9IGBpcHY0YDtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJUHY2ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RJUHY2XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmlwdjYpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5iYWcuZm9ybWF0ID0gYGlwdjZgO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBuZXcgVVJMKGBodHRwOi8vWyR7cGF5bG9hZC52YWx1ZX1dYCk7XG4gICAgICAgICAgICAvLyByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogXCJpcHY2XCIsXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RNQUMgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE1BQ1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5tYWMoZGVmLmRlbGltaXRlcikpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5iYWcuZm9ybWF0ID0gYG1hY2A7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ0lEUnY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDSURSdjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuY2lkcnY0KTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDSURSdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENJRFJ2NlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5jaWRydjYpOyAvLyBub3QgdXNlZCBmb3IgdmFsaWRhdGlvblxuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gcGF5bG9hZC52YWx1ZS5zcGxpdChcIi9cIik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoICE9PSAyKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICAgICAgY29uc3QgW2FkZHJlc3MsIHByZWZpeF0gPSBwYXJ0cztcbiAgICAgICAgICAgIGlmICghcHJlZml4KVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICAgICAgY29uc3QgcHJlZml4TnVtID0gTnVtYmVyKHByZWZpeCk7XG4gICAgICAgICAgICBpZiAoYCR7cHJlZml4TnVtfWAgIT09IHByZWZpeClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgICAgICAgIGlmIChwcmVmaXhOdW0gPCAwIHx8IHByZWZpeE51bSA+IDEyOClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ldyBVUkwoYGh0dHA6Ly9bJHthZGRyZXNzfV1gKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcImNpZHJ2NlwiLFxuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59KTtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgIFpvZEJhc2U2NCAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCYXNlNjQoZGF0YSkge1xuICAgIGlmIChkYXRhID09PSBcIlwiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZGF0YS5sZW5ndGggJSA0ICE9PSAwKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBhdG9iKGRhdGEpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0ICRab2RCYXNlNjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEJhc2U2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5iYXNlNjQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5iYWcuY29udGVudEVuY29kaW5nID0gXCJiYXNlNjRcIjtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoaXNWYWxpZEJhc2U2NChwYXlsb2FkLnZhbHVlKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFwiYmFzZTY0XCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAgWm9kQmFzZTY0ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEJhc2U2NFVSTChkYXRhKSB7XG4gICAgaWYgKCFyZWdleGVzLmJhc2U2NHVybC50ZXN0KGRhdGEpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYmFzZTY0ID0gZGF0YS5yZXBsYWNlKC9bLV9dL2csIChjKSA9PiAoYyA9PT0gXCItXCIgPyBcIitcIiA6IFwiL1wiKSk7XG4gICAgY29uc3QgcGFkZGVkID0gYmFzZTY0LnBhZEVuZChNYXRoLmNlaWwoYmFzZTY0Lmxlbmd0aCAvIDQpICogNCwgXCI9XCIpO1xuICAgIHJldHVybiBpc1ZhbGlkQmFzZTY0KHBhZGRlZCk7XG59XG5leHBvcnQgY29uc3QgJFpvZEJhc2U2NFVSTCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQmFzZTY0VVJMXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmJhc2U2NHVybCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLmJhZy5jb250ZW50RW5jb2RpbmcgPSBcImJhc2U2NHVybFwiO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChpc1ZhbGlkQmFzZTY0VVJMKHBheWxvYWQudmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJiYXNlNjR1cmxcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEUxNjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEUxNjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZTE2NCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgIFpvZEpXVCAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRKV1QodG9rZW4sIGFsZ29yaXRobSA9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB0b2tlbnNQYXJ0cyA9IHRva2VuLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKHRva2Vuc1BhcnRzLmxlbmd0aCAhPT0gMylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgW2hlYWRlcl0gPSB0b2tlbnNQYXJ0cztcbiAgICAgICAgaWYgKCFoZWFkZXIpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgcGFyc2VkSGVhZGVyID0gSlNPTi5wYXJzZShhdG9iKGhlYWRlcikpO1xuICAgICAgICBpZiAoXCJ0eXBcIiBpbiBwYXJzZWRIZWFkZXIgJiYgcGFyc2VkSGVhZGVyPy50eXAgIT09IFwiSldUXCIpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghcGFyc2VkSGVhZGVyLmFsZylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGFsZ29yaXRobSAmJiAoIShcImFsZ1wiIGluIHBhcnNlZEhlYWRlcikgfHwgcGFyc2VkSGVhZGVyLmFsZyAhPT0gYWxnb3JpdGhtKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCAkWm9kSldUID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RKV1RcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChpc1ZhbGlkSldUKHBheWxvYWQudmFsdWUsIGRlZi5hbGcpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJqd3RcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoZGVmLmZuKHBheWxvYWQudmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogZGVmLmZvcm1hdCxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE51bWJlciA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTnVtYmVyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBpbnN0Ll96b2QuYmFnLnBhdHRlcm4gPz8gcmVnZXhlcy5udW1iZXI7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5jb2VyY2UpXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBOdW1iZXIocGF5bG9hZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIiAmJiAhTnVtYmVyLmlzTmFOKGlucHV0KSAmJiBOdW1iZXIuaXNGaW5pdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWNlaXZlZCA9IHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgPyBOdW1iZXIuaXNOYU4oaW5wdXQpXG4gICAgICAgICAgICAgICAgPyBcIk5hTlwiXG4gICAgICAgICAgICAgICAgOiAhTnVtYmVyLmlzRmluaXRlKGlucHV0KVxuICAgICAgICAgICAgICAgICAgICA/IFwiSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgLi4uKHJlY2VpdmVkID8geyByZWNlaXZlZCB9IDoge30pLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROdW1iZXJGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE51bWJlckZvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY2hlY2tzLiRab2RDaGVja051bWJlckZvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgJFpvZE51bWJlci5pbml0KGluc3QsIGRlZik7IC8vIG5vIGZvcm1hdCBjaGVja3Ncbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RCb29sZWFuID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RCb29sZWFuXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSByZWdleGVzLmJvb2xlYW47XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5jb2VyY2UpXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBCb29sZWFuKHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwiYm9vbGVhblwiKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQmlnSW50ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RCaWdJbnRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGF0dGVybiA9IHJlZ2V4ZXMuYmlnaW50O1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGlmIChkZWYuY29lcmNlKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gQmlnSW50KHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQudmFsdWUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJiaWdpbnRcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEJpZ0ludEZvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQmlnSW50Rm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjaGVja3MuJFpvZENoZWNrQmlnSW50Rm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICAkWm9kQmlnSW50LmluaXQoaW5zdCwgZGVmKTsgLy8gbm8gZm9ybWF0IGNoZWNrc1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFN5bWJvbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kU3ltYm9sXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcInN5bWJvbFwiKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwic3ltYm9sXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RVbmRlZmluZWQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFVuZGVmaW5lZFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gcmVnZXhlcy51bmRlZmluZWQ7XG4gICAgaW5zdC5fem9kLnZhbHVlcyA9IG5ldyBTZXQoW3VuZGVmaW5lZF0pO1xuICAgIGluc3QuX3pvZC5vcHRpbiA9IFwib3B0aW9uYWxcIjtcbiAgICBpbnN0Ll96b2Qub3B0b3V0ID0gXCJvcHRpb25hbFwiO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcInVuZGVmaW5lZFwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTnVsbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTnVsbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gcmVnZXhlcy5udWxsO1xuICAgIGluc3QuX3pvZC52YWx1ZXMgPSBuZXcgU2V0KFtudWxsXSk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJudWxsXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RBbnkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEFueVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkKSA9PiBwYXlsb2FkO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFVua25vd24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFVua25vd25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCkgPT4gcGF5bG9hZDtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROZXZlciA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTmV2ZXJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcIm5ldmVyXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RWb2lkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RWb2lkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwidm9pZFwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kRGF0ZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRGF0ZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGlmIChkZWYuY29lcmNlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBuZXcgRGF0ZShwYXlsb2FkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfZXJyKSB7IH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IGlzRGF0ZSA9IGlucHV0IGluc3RhbmNlb2YgRGF0ZTtcbiAgICAgICAgY29uc3QgaXNWYWxpZERhdGUgPSBpc0RhdGUgJiYgIU51bWJlci5pc05hTihpbnB1dC5nZXRUaW1lKCkpO1xuICAgICAgICBpZiAoaXNWYWxpZERhdGUpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJkYXRlXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAuLi4oaXNEYXRlID8geyByZWNlaXZlZDogXCJJbnZhbGlkIERhdGVcIiB9IDoge30pLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZUFycmF5UmVzdWx0KHJlc3VsdCwgZmluYWwsIGluZGV4KSB7XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGluZGV4LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgfVxuICAgIGZpbmFsLnZhbHVlW2luZGV4XSA9IHJlc3VsdC52YWx1ZTtcbn1cbmV4cG9ydCBjb25zdCAkWm9kQXJyYXkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEFycmF5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0gQXJyYXkoaW5wdXQubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcHJvbXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGlucHV0W2ldO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLmVsZW1lbnQuX3pvZC5ydW4oe1xuICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtLFxuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICB9LCBjdHgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHJlc3VsdC50aGVuKChyZXN1bHQpID0+IGhhbmRsZUFycmF5UmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZUFycmF5UmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb21zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21zKS50aGVuKCgpID0+IHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkOyAvL2hhbmRsZUFycmF5UmVzdWx0c0FzeW5jKHBhcnNlUmVzdWx0cywgZmluYWwpO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVByb3BlcnR5UmVzdWx0KHJlc3VsdCwgZmluYWwsIGtleSwgaW5wdXQsIGlzT3B0aW9uYWxPdXQpIHtcbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgLy8gRm9yIG9wdGlvbmFsLW91dCBzY2hlbWFzLCBpZ25vcmUgZXJyb3JzIG9uIGFic2VudCBrZXlzXG4gICAgICAgIGlmIChpc09wdGlvbmFsT3V0ICYmICEoa2V5IGluIGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGtleSBpbiBpbnB1dCkge1xuICAgICAgICAgICAgZmluYWwudmFsdWVba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZmluYWwudmFsdWVba2V5XSA9IHJlc3VsdC52YWx1ZTtcbiAgICB9XG59XG5mdW5jdGlvbiBub3JtYWxpemVEZWYoZGVmKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGRlZi5zaGFwZSk7XG4gICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgICAgaWYgKCFkZWYuc2hhcGU/LltrXT8uX3pvZD8udHJhaXRzPy5oYXMoXCIkWm9kVHlwZVwiKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgYXQga2V5IFwiJHtrfVwiOiBleHBlY3RlZCBhIFpvZCBzY2hlbWFgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBva2V5cyA9IHV0aWwub3B0aW9uYWxLZXlzKGRlZi5zaGFwZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGVmLFxuICAgICAgICBrZXlzLFxuICAgICAgICBrZXlTZXQ6IG5ldyBTZXQoa2V5cyksXG4gICAgICAgIG51bUtleXM6IGtleXMubGVuZ3RoLFxuICAgICAgICBvcHRpb25hbEtleXM6IG5ldyBTZXQob2tleXMpLFxuICAgIH07XG59XG5mdW5jdGlvbiBoYW5kbGVDYXRjaGFsbChwcm9tcywgaW5wdXQsIHBheWxvYWQsIGN0eCwgZGVmLCBpbnN0KSB7XG4gICAgY29uc3QgdW5yZWNvZ25pemVkID0gW107XG4gICAgLy8gaXRlcmF0ZSBvdmVyIGlucHV0IGtleXNcbiAgICBjb25zdCBrZXlTZXQgPSBkZWYua2V5U2V0O1xuICAgIGNvbnN0IF9jYXRjaGFsbCA9IGRlZi5jYXRjaGFsbC5fem9kO1xuICAgIGNvbnN0IHQgPSBfY2F0Y2hhbGwuZGVmLnR5cGU7XG4gICAgY29uc3QgaXNPcHRpb25hbE91dCA9IF9jYXRjaGFsbC5vcHRvdXQgPT09IFwib3B0aW9uYWxcIjtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnB1dCkge1xuICAgICAgICBpZiAoa2V5U2V0LmhhcyhrZXkpKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmICh0ID09PSBcIm5ldmVyXCIpIHtcbiAgICAgICAgICAgIHVucmVjb2duaXplZC5wdXNoKGtleSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByID0gX2NhdGNoYWxsLnJ1bih7IHZhbHVlOiBpbnB1dFtrZXldLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgIGlmIChyIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcHJvbXMucHVzaChyLnRoZW4oKHIpID0+IGhhbmRsZVByb3BlcnR5UmVzdWx0KHIsIHBheWxvYWQsIGtleSwgaW5wdXQsIGlzT3B0aW9uYWxPdXQpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVQcm9wZXJ0eVJlc3VsdChyLCBwYXlsb2FkLCBrZXksIGlucHV0LCBpc09wdGlvbmFsT3V0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodW5yZWNvZ25pemVkLmxlbmd0aCkge1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwidW5yZWNvZ25pemVkX2tleXNcIixcbiAgICAgICAgICAgIGtleXM6IHVucmVjb2duaXplZCxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghcHJvbXMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCAkWm9kT2JqZWN0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RPYmplY3RcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIHJlcXVpcmVzIGNhc3QgYmVjYXVzZSB0ZWNobmljYWxseSAkWm9kT2JqZWN0IGRvZXNuJ3QgZXh0ZW5kXG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIC8vIGNvbnN0IHNoID0gZGVmLnNoYXBlO1xuICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRlZiwgXCJzaGFwZVwiKTtcbiAgICBpZiAoIWRlc2M/LmdldCkge1xuICAgICAgICBjb25zdCBzaCA9IGRlZi5zaGFwZTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlZiwgXCJzaGFwZVwiLCB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTaCA9IHsgLi4uc2ggfTtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVmLCBcInNoYXBlXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5ld1NoLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdTaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBfbm9ybWFsaXplZCA9IHV0aWwuY2FjaGVkKCgpID0+IG5vcm1hbGl6ZURlZihkZWYpKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInByb3BWYWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICBjb25zdCBzaGFwZSA9IGRlZi5zaGFwZTtcbiAgICAgICAgY29uc3QgcHJvcFZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzaGFwZSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBzaGFwZVtrZXldLl96b2Q7XG4gICAgICAgICAgICBpZiAoZmllbGQudmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcHJvcFZhbHVlc1trZXldID8/IChwcm9wVmFsdWVzW2tleV0gPSBuZXcgU2V0KCkpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiBmaWVsZC52YWx1ZXMpXG4gICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZXNba2V5XS5hZGQodik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb3BWYWx1ZXM7XG4gICAgfSk7XG4gICAgY29uc3QgaXNPYmplY3QgPSB1dGlsLmlzT2JqZWN0O1xuICAgIGNvbnN0IGNhdGNoYWxsID0gZGVmLmNhdGNoYWxsO1xuICAgIGxldCB2YWx1ZTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIHZhbHVlID8/ICh2YWx1ZSA9IF9ub3JtYWxpemVkLnZhbHVlKTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0ge307XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIGNvbnN0IHNoYXBlID0gdmFsdWUuc2hhcGU7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHZhbHVlLmtleXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gc2hhcGVba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IGlzT3B0aW9uYWxPdXQgPSBlbC5fem9kLm9wdG91dCA9PT0gXCJvcHRpb25hbFwiO1xuICAgICAgICAgICAgY29uc3QgciA9IGVsLl96b2QucnVuKHsgdmFsdWU6IGlucHV0W2tleV0sIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChyIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHByb21zLnB1c2goci50aGVuKChyKSA9PiBoYW5kbGVQcm9wZXJ0eVJlc3VsdChyLCBwYXlsb2FkLCBrZXksIGlucHV0LCBpc09wdGlvbmFsT3V0KSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlUHJvcGVydHlSZXN1bHQociwgcGF5bG9hZCwga2V5LCBpbnB1dCwgaXNPcHRpb25hbE91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjYXRjaGFsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb21zLmxlbmd0aCA/IFByb21pc2UuYWxsKHByb21zKS50aGVuKCgpID0+IHBheWxvYWQpIDogcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlQ2F0Y2hhbGwocHJvbXMsIGlucHV0LCBwYXlsb2FkLCBjdHgsIF9ub3JtYWxpemVkLnZhbHVlLCBpbnN0KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE9iamVjdEpJVCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kT2JqZWN0SklUXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyByZXF1aXJlcyBjYXN0IGJlY2F1c2UgdGVjaG5pY2FsbHkgJFpvZE9iamVjdCBkb2Vzbid0IGV4dGVuZFxuICAgICRab2RPYmplY3QuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IHN1cGVyUGFyc2UgPSBpbnN0Ll96b2QucGFyc2U7XG4gICAgY29uc3QgX25vcm1hbGl6ZWQgPSB1dGlsLmNhY2hlZCgoKSA9PiBub3JtYWxpemVEZWYoZGVmKSk7XG4gICAgY29uc3QgZ2VuZXJhdGVGYXN0cGFzcyA9IChzaGFwZSkgPT4ge1xuICAgICAgICBjb25zdCBkb2MgPSBuZXcgRG9jKFtcInNoYXBlXCIsIFwicGF5bG9hZFwiLCBcImN0eFwiXSk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBfbm9ybWFsaXplZC52YWx1ZTtcbiAgICAgICAgY29uc3QgcGFyc2VTdHIgPSAoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrID0gdXRpbC5lc2Moa2V5KTtcbiAgICAgICAgICAgIHJldHVybiBgc2hhcGVbJHtrfV0uX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXRbJHtrfV0sIGlzc3VlczogW10gfSwgY3R4KWA7XG4gICAgICAgIH07XG4gICAgICAgIGRvYy53cml0ZShgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO2ApO1xuICAgICAgICBjb25zdCBpZHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBsZXQgY291bnRlciA9IDA7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIG5vcm1hbGl6ZWQua2V5cykge1xuICAgICAgICAgICAgaWRzW2tleV0gPSBga2V5XyR7Y291bnRlcisrfWA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQTogcHJlc2VydmUga2V5IG9yZGVyIHtcbiAgICAgICAgZG9jLndyaXRlKGBjb25zdCBuZXdSZXN1bHQgPSB7fTtgKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Ygbm9ybWFsaXplZC5rZXlzKSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IGlkc1trZXldO1xuICAgICAgICAgICAgY29uc3QgayA9IHV0aWwuZXNjKGtleSk7XG4gICAgICAgICAgICBjb25zdCBzY2hlbWEgPSBzaGFwZVtrZXldO1xuICAgICAgICAgICAgY29uc3QgaXNPcHRpb25hbE91dCA9IHNjaGVtYT8uX3pvZD8ub3B0b3V0ID09PSBcIm9wdGlvbmFsXCI7XG4gICAgICAgICAgICBkb2Mud3JpdGUoYGNvbnN0ICR7aWR9ID0gJHtwYXJzZVN0cihrZXkpfTtgKTtcbiAgICAgICAgICAgIGlmIChpc09wdGlvbmFsT3V0KSB7XG4gICAgICAgICAgICAgICAgLy8gRm9yIG9wdGlvbmFsLW91dCBzY2hlbWFzLCBpZ25vcmUgZXJyb3JzIG9uIGFic2VudCBrZXlzXG4gICAgICAgICAgICAgICAgZG9jLndyaXRlKGBcbiAgICAgICAgaWYgKCR7aWR9Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAoJHtrfSBpbiBpbnB1dCkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtpZH0uaXNzdWVzLm1hcChpc3MgPT4gKHtcbiAgICAgICAgICAgICAgLi4uaXNzLFxuICAgICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske2t9LCAuLi5pc3MucGF0aF0gOiBbJHtrfV1cbiAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoJHtpZH0udmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICgke2t9IGluIGlucHV0KSB7XG4gICAgICAgICAgICBuZXdSZXN1bHRbJHtrfV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1Jlc3VsdFske2t9XSA9ICR7aWR9LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2Mud3JpdGUoYFxuICAgICAgICBpZiAoJHtpZH0uaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7aWR9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7XG4gICAgICAgICAgICAuLi5pc3MsXG4gICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske2t9LCAuLi5pc3MucGF0aF0gOiBbJHtrfV1cbiAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoJHtpZH0udmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICgke2t9IGluIGlucHV0KSB7XG4gICAgICAgICAgICBuZXdSZXN1bHRbJHtrfV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1Jlc3VsdFske2t9XSA9ICR7aWR9LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZG9jLndyaXRlKGBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0O2ApO1xuICAgICAgICBkb2Mud3JpdGUoYHJldHVybiBwYXlsb2FkO2ApO1xuICAgICAgICBjb25zdCBmbiA9IGRvYy5jb21waWxlKCk7XG4gICAgICAgIHJldHVybiAocGF5bG9hZCwgY3R4KSA9PiBmbihzaGFwZSwgcGF5bG9hZCwgY3R4KTtcbiAgICB9O1xuICAgIGxldCBmYXN0cGFzcztcbiAgICBjb25zdCBpc09iamVjdCA9IHV0aWwuaXNPYmplY3Q7XG4gICAgY29uc3Qgaml0ID0gIWNvcmUuZ2xvYmFsQ29uZmlnLmppdGxlc3M7XG4gICAgY29uc3QgYWxsb3dzRXZhbCA9IHV0aWwuYWxsb3dzRXZhbDtcbiAgICBjb25zdCBmYXN0RW5hYmxlZCA9IGppdCAmJiBhbGxvd3NFdmFsLnZhbHVlOyAvLyAmJiAhZGVmLmNhdGNoYWxsO1xuICAgIGNvbnN0IGNhdGNoYWxsID0gZGVmLmNhdGNoYWxsO1xuICAgIGxldCB2YWx1ZTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIHZhbHVlID8/ICh2YWx1ZSA9IF9ub3JtYWxpemVkLnZhbHVlKTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaml0ICYmIGZhc3RFbmFibGVkICYmIGN0eD8uYXN5bmMgPT09IGZhbHNlICYmIGN0eC5qaXRsZXNzICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAvLyBhbHdheXMgc3luY2hyb25vdXNcbiAgICAgICAgICAgIGlmICghZmFzdHBhc3MpXG4gICAgICAgICAgICAgICAgZmFzdHBhc3MgPSBnZW5lcmF0ZUZhc3RwYXNzKGRlZi5zaGFwZSk7XG4gICAgICAgICAgICBwYXlsb2FkID0gZmFzdHBhc3MocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgICAgIGlmICghY2F0Y2hhbGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2F0Y2hhbGwoW10sIGlucHV0LCBwYXlsb2FkLCBjdHgsIHZhbHVlLCBpbnN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXJQYXJzZShwYXlsb2FkLCBjdHgpO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVVuaW9uUmVzdWx0cyhyZXN1bHRzLCBmaW5hbCwgaW5zdCwgY3R4KSB7XG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGZpbmFsLnZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIGZpbmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5vbmFib3J0ZWQgPSByZXN1bHRzLmZpbHRlcigocikgPT4gIXV0aWwuYWJvcnRlZChyKSk7XG4gICAgaWYgKG5vbmFib3J0ZWQubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGZpbmFsLnZhbHVlID0gbm9uYWJvcnRlZFswXS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIG5vbmFib3J0ZWRbMF07XG4gICAgfVxuICAgIGZpbmFsLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgY29kZTogXCJpbnZhbGlkX3VuaW9uXCIsXG4gICAgICAgIGlucHV0OiBmaW5hbC52YWx1ZSxcbiAgICAgICAgaW5zdCxcbiAgICAgICAgZXJyb3JzOiByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSksXG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbmFsO1xufVxuZXhwb3J0IGNvbnN0ICRab2RVbmlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdGluXCIsICgpID0+IGRlZi5vcHRpb25zLnNvbWUoKG8pID0+IG8uX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiKSA/IFwib3B0aW9uYWxcIiA6IHVuZGVmaW5lZCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLm9wdGlvbnMuc29tZSgobykgPT4gby5fem9kLm9wdG91dCA9PT0gXCJvcHRpb25hbFwiKSA/IFwib3B0aW9uYWxcIiA6IHVuZGVmaW5lZCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICBpZiAoZGVmLm9wdGlvbnMuZXZlcnkoKG8pID0+IG8uX3pvZC52YWx1ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNldChkZWYub3B0aW9ucy5mbGF0TWFwKChvcHRpb24pID0+IEFycmF5LmZyb20ob3B0aW9uLl96b2QudmFsdWVzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwYXR0ZXJuXCIsICgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5vcHRpb25zLmV2ZXJ5KChvKSA9PiBvLl96b2QucGF0dGVybikpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdHRlcm5zID0gZGVmLm9wdGlvbnMubWFwKChvKSA9PiBvLl96b2QucGF0dGVybik7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgXigke3BhdHRlcm5zLm1hcCgocCkgPT4gdXRpbC5jbGVhblJlZ2V4KHAuc291cmNlKSkuam9pbihcInxcIil9KSRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGNvbnN0IHNpbmdsZSA9IGRlZi5vcHRpb25zLmxlbmd0aCA9PT0gMTtcbiAgICBjb25zdCBmaXJzdCA9IGRlZi5vcHRpb25zWzBdLl96b2QucnVuO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgaWYgKHNpbmdsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0KHBheWxvYWQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFzeW5jID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdGlvbi5fem9kLnJ1bih7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICAgICAgICAgIGFzeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFzeW5jKVxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVVuaW9uUmVzdWx0cyhyZXN1bHRzLCBwYXlsb2FkLCBpbnN0LCBjdHgpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0cykudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVVuaW9uUmVzdWx0cyhyZXN1bHRzLCBwYXlsb2FkLCBpbnN0LCBjdHgpO1xuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVFeGNsdXNpdmVVbmlvblJlc3VsdHMocmVzdWx0cywgZmluYWwsIGluc3QsIGN0eCkge1xuICAgIGNvbnN0IHN1Y2Nlc3NlcyA9IHJlc3VsdHMuZmlsdGVyKChyKSA9PiByLmlzc3Vlcy5sZW5ndGggPT09IDApO1xuICAgIGlmIChzdWNjZXNzZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGZpbmFsLnZhbHVlID0gc3VjY2Vzc2VzWzBdLnZhbHVlO1xuICAgICAgICByZXR1cm4gZmluYWw7XG4gICAgfVxuICAgIGlmIChzdWNjZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIE5vIG1hdGNoZXMgLSBzYW1lIGFzIHJlZ3VsYXIgdW5pb25cbiAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3VuaW9uXCIsXG4gICAgICAgICAgICBpbnB1dDogZmluYWwudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgZXJyb3JzOiByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gTXVsdGlwbGUgbWF0Y2hlcyAtIGV4Y2x1c2l2ZSB1bmlvbiBmYWlsdXJlXG4gICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF91bmlvblwiLFxuICAgICAgICAgICAgaW5wdXQ6IGZpbmFsLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbmFsO1xufVxuZXhwb3J0IGNvbnN0ICRab2RYb3IgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFhvclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFVuaW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBkZWYuaW5jbHVzaXZlID0gZmFsc2U7XG4gICAgY29uc3Qgc2luZ2xlID0gZGVmLm9wdGlvbnMubGVuZ3RoID09PSAxO1xuICAgIGNvbnN0IGZpcnN0ID0gZGVmLm9wdGlvbnNbMF0uX3pvZC5ydW47XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBpZiAoc2luZ2xlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlyc3QocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYXN5bmMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBkZWYub3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gb3B0aW9uLl96b2QucnVuKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgYXN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhc3luYylcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVFeGNsdXNpdmVVbmlvblJlc3VsdHMocmVzdWx0cywgcGF5bG9hZCwgaW5zdCwgY3R4KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHJlc3VsdHMpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVFeGNsdXNpdmVVbmlvblJlc3VsdHMocmVzdWx0cywgcGF5bG9hZCwgaW5zdCwgY3R4KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2REaXNjcmltaW5hdGVkVW5pb24gPSBcbi8qQF9fUFVSRV9fKi9cbmNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZERpc2NyaW1pbmF0ZWRVbmlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLmluY2x1c2l2ZSA9IGZhbHNlO1xuICAgICRab2RVbmlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgX3N1cGVyID0gaW5zdC5fem9kLnBhcnNlO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicHJvcFZhbHVlc1wiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BWYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHB2ID0gb3B0aW9uLl96b2QucHJvcFZhbHVlcztcbiAgICAgICAgICAgIGlmICghcHYgfHwgT2JqZWN0LmtleXMocHYpLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggXCIke2RlZi5vcHRpb25zLmluZGV4T2Yob3B0aW9uKX1cImApO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocHYpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcm9wVmFsdWVzW2tdKVxuICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWVzW2tdID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdmFsIG9mIHYpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlc1trXS5hZGQodmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb3BWYWx1ZXM7XG4gICAgfSk7XG4gICAgY29uc3QgZGlzYyA9IHV0aWwuY2FjaGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IGRlZi5vcHRpb25zO1xuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgbyBvZiBvcHRzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBvLl96b2QucHJvcFZhbHVlcz8uW2RlZi5kaXNjcmltaW5hdG9yXTtcbiAgICAgICAgICAgIGlmICghdmFsdWVzIHx8IHZhbHVlcy5zaXplID09PSAwKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCBcIiR7ZGVmLm9wdGlvbnMuaW5kZXhPZihvKX1cImApO1xuICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIHZhbHVlcykge1xuICAgICAgICAgICAgICAgIGlmIChtYXAuaGFzKHYpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIGRpc2NyaW1pbmF0b3IgdmFsdWUgXCIke1N0cmluZyh2KX1cImApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYXAuc2V0KHYsIG8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICghdXRpbC5pc09iamVjdChpbnB1dCkpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0ID0gZGlzYy52YWx1ZS5nZXQoaW5wdXQ/LltkZWYuZGlzY3JpbWluYXRvcl0pO1xuICAgICAgICBpZiAob3B0KSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0Ll96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi51bmlvbkZhbGxiYWNrKSB7XG4gICAgICAgICAgICByZXR1cm4gX3N1cGVyKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm8gbWF0Y2hpbmcgZGlzY3JpbWluYXRvclxuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF91bmlvblwiLFxuICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgIG5vdGU6IFwiTm8gbWF0Y2hpbmcgZGlzY3JpbWluYXRvclwiLFxuICAgICAgICAgICAgZGlzY3JpbWluYXRvcjogZGVmLmRpc2NyaW1pbmF0b3IsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIHBhdGg6IFtkZWYuZGlzY3JpbWluYXRvcl0sXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJbnRlcnNlY3Rpb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEludGVyc2VjdGlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBsZWZ0ID0gZGVmLmxlZnQuX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXQsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBkZWYucmlnaHQuX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXQsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgY29uc3QgYXN5bmMgPSBsZWZ0IGluc3RhbmNlb2YgUHJvbWlzZSB8fCByaWdodCBpbnN0YW5jZW9mIFByb21pc2U7XG4gICAgICAgIGlmIChhc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtsZWZ0LCByaWdodF0pLnRoZW4oKFtsZWZ0LCByaWdodF0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhwYXlsb2FkLCBsZWZ0LCByaWdodCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhwYXlsb2FkLCBsZWZ0LCByaWdodCk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gbWVyZ2VWYWx1ZXMoYSwgYikge1xuICAgIC8vIGNvbnN0IGFUeXBlID0gcGFyc2UudChhKTtcbiAgICAvLyBjb25zdCBiVHlwZSA9IHBhcnNlLnQoYik7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IGEgfTtcbiAgICB9XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlICYmICthID09PSArYikge1xuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogYSB9O1xuICAgIH1cbiAgICBpZiAodXRpbC5pc1BsYWluT2JqZWN0KGEpICYmIHV0aWwuaXNQbGFpbk9iamVjdChiKSkge1xuICAgICAgICBjb25zdCBiS2V5cyA9IE9iamVjdC5rZXlzKGIpO1xuICAgICAgICBjb25zdCBzaGFyZWRLZXlzID0gT2JqZWN0LmtleXMoYSkuZmlsdGVyKChrZXkpID0+IGJLZXlzLmluZGV4T2Yoa2V5KSAhPT0gLTEpO1xuICAgICAgICBjb25zdCBuZXdPYmogPSB7IC4uLmEsIC4uLmIgfTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Ygc2hhcmVkS2V5cykge1xuICAgICAgICAgICAgY29uc3Qgc2hhcmVkVmFsdWUgPSBtZXJnZVZhbHVlcyhhW2tleV0sIGJba2V5XSk7XG4gICAgICAgICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBtZXJnZUVycm9yUGF0aDogW2tleSwgLi4uc2hhcmVkVmFsdWUubWVyZ2VFcnJvclBhdGhdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdPYmpba2V5XSA9IHNoYXJlZFZhbHVlLmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IG5ld09iaiB9O1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgbWVyZ2VFcnJvclBhdGg6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3QXJyYXkgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGEubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtQSA9IGFbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgaXRlbUIgPSBiW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHNoYXJlZFZhbHVlID0gbWVyZ2VWYWx1ZXMoaXRlbUEsIGl0ZW1CKTtcbiAgICAgICAgICAgIGlmICghc2hhcmVkVmFsdWUudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlRXJyb3JQYXRoOiBbaW5kZXgsIC4uLnNoYXJlZFZhbHVlLm1lcmdlRXJyb3JQYXRoXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3QXJyYXkucHVzaChzaGFyZWRWYWx1ZS5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogbmV3QXJyYXkgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBtZXJnZUVycm9yUGF0aDogW10gfTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUludGVyc2VjdGlvblJlc3VsdHMocmVzdWx0LCBsZWZ0LCByaWdodCkge1xuICAgIC8vIFRyYWNrIHdoaWNoIHNpZGUocykgcmVwb3J0IGVhY2gga2V5IGFzIHVucmVjb2duaXplZFxuICAgIGNvbnN0IHVucmVjS2V5cyA9IG5ldyBNYXAoKTtcbiAgICBsZXQgdW5yZWNJc3N1ZTtcbiAgICBmb3IgKGNvbnN0IGlzcyBvZiBsZWZ0Lmlzc3Vlcykge1xuICAgICAgICBpZiAoaXNzLmNvZGUgPT09IFwidW5yZWNvZ25pemVkX2tleXNcIikge1xuICAgICAgICAgICAgdW5yZWNJc3N1ZSA/PyAodW5yZWNJc3N1ZSA9IGlzcyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGsgb2YgaXNzLmtleXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXVucmVjS2V5cy5oYXMoaykpXG4gICAgICAgICAgICAgICAgICAgIHVucmVjS2V5cy5zZXQoaywge30pO1xuICAgICAgICAgICAgICAgIHVucmVjS2V5cy5nZXQoaykubCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQuaXNzdWVzLnB1c2goaXNzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGlzcyBvZiByaWdodC5pc3N1ZXMpIHtcbiAgICAgICAgaWYgKGlzcy5jb2RlID09PSBcInVucmVjb2duaXplZF9rZXlzXCIpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgayBvZiBpc3Mua2V5cykge1xuICAgICAgICAgICAgICAgIGlmICghdW5yZWNLZXlzLmhhcyhrKSlcbiAgICAgICAgICAgICAgICAgICAgdW5yZWNLZXlzLnNldChrLCB7fSk7XG4gICAgICAgICAgICAgICAgdW5yZWNLZXlzLmdldChrKS5yID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5pc3N1ZXMucHVzaChpc3MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFJlcG9ydCBvbmx5IGtleXMgdW5yZWNvZ25pemVkIGJ5IEJPVEggc2lkZXNcbiAgICBjb25zdCBib3RoS2V5cyA9IFsuLi51bnJlY0tleXNdLmZpbHRlcigoWywgZl0pID0+IGYubCAmJiBmLnIpLm1hcCgoW2tdKSA9PiBrKTtcbiAgICBpZiAoYm90aEtleXMubGVuZ3RoICYmIHVucmVjSXNzdWUpIHtcbiAgICAgICAgcmVzdWx0Lmlzc3Vlcy5wdXNoKHsgLi4udW5yZWNJc3N1ZSwga2V5czogYm90aEtleXMgfSk7XG4gICAgfVxuICAgIGlmICh1dGlsLmFib3J0ZWQocmVzdWx0KSlcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZVZhbHVlcyhsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSk7XG4gICAgaWYgKCFtZXJnZWQudmFsaWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbm1lcmdhYmxlIGludGVyc2VjdGlvbi4gRXJyb3IgcGF0aDogYCArIGAke0pTT04uc3RyaW5naWZ5KG1lcmdlZC5tZXJnZUVycm9yUGF0aCl9YCk7XG4gICAgfVxuICAgIHJlc3VsdC52YWx1ZSA9IG1lcmdlZC5kYXRhO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgY29uc3QgJFpvZFR1cGxlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RUdXBsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IGl0ZW1zID0gZGVmLml0ZW1zO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcInR1cGxlXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IFtdO1xuICAgICAgICBjb25zdCBwcm9tcyA9IFtdO1xuICAgICAgICBjb25zdCByZXZlcnNlZEluZGV4ID0gWy4uLml0ZW1zXS5yZXZlcnNlKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl96b2Qub3B0aW4gIT09IFwib3B0aW9uYWxcIik7XG4gICAgICAgIGNvbnN0IG9wdFN0YXJ0ID0gcmV2ZXJzZWRJbmRleCA9PT0gLTEgPyAwIDogaXRlbXMubGVuZ3RoIC0gcmV2ZXJzZWRJbmRleDtcbiAgICAgICAgaWYgKCFkZWYucmVzdCkge1xuICAgICAgICAgICAgY29uc3QgdG9vQmlnID0gaW5wdXQubGVuZ3RoID4gaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBpbnB1dC5sZW5ndGggPCBvcHRTdGFydCAtIDE7XG4gICAgICAgICAgICBpZiAodG9vQmlnIHx8IHRvb1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLih0b29CaWdcbiAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb2RlOiBcInRvb19iaWdcIiwgbWF4aW11bTogaXRlbXMubGVuZ3RoLCBpbmNsdXNpdmU6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7IGNvZGU6IFwidG9vX3NtYWxsXCIsIG1pbmltdW06IGl0ZW1zLmxlbmd0aCB9KSxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbjogXCJhcnJheVwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBpID0gLTE7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgaWYgKGkgPj0gaW5wdXQubGVuZ3RoKVxuICAgICAgICAgICAgICAgIGlmIChpID49IG9wdFN0YXJ0KVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGl0ZW0uX3pvZC5ydW4oe1xuICAgICAgICAgICAgICAgIHZhbHVlOiBpbnB1dFtpXSxcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcHJvbXMucHVzaChyZXN1bHQudGhlbigocmVzdWx0KSA9PiBoYW5kbGVUdXBsZVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGkpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUdXBsZVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkZWYucmVzdCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdCA9IGlucHV0LnNsaWNlKGl0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIHJlc3QpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLnJlc3QuX3pvZC5ydW4oe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWwsXG4gICAgICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgfSwgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHJlc3VsdC50aGVuKChyZXN1bHQpID0+IGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9tcy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4gcGF5bG9hZCk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgZmluYWwsIGluZGV4KSB7XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGluZGV4LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgfVxuICAgIGZpbmFsLnZhbHVlW2luZGV4XSA9IHJlc3VsdC52YWx1ZTtcbn1cbmV4cG9ydCBjb25zdCAkWm9kUmVjb3JkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RSZWNvcmRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCF1dGlsLmlzUGxhaW5PYmplY3QoaW5wdXQpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJyZWNvcmRcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGRlZi5rZXlUeXBlLl96b2QudmFsdWVzO1xuICAgICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0ge307XG4gICAgICAgICAgICBjb25zdCByZWNvcmRLZXlzID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGtleSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2Yga2V5ID09PSBcInN5bWJvbFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZEtleXMuYWRkKHR5cGVvZiBrZXkgPT09IFwibnVtYmVyXCIgPyBrZXkudG9TdHJpbmcoKSA6IGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi52YWx1ZVR5cGUuX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXRba2V5XSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXMucHVzaChyZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoa2V5LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWVba2V5XSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoa2V5LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlW2tleV0gPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdW5yZWNvZ25pemVkO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlY29yZEtleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5yZWNvZ25pemVkID0gdW5yZWNvZ25pemVkID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICB1bnJlY29nbml6ZWQucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh1bnJlY29nbml6ZWQgJiYgdW5yZWNvZ25pemVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogXCJ1bnJlY29nbml6ZWRfa2V5c1wiLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAga2V5czogdW5yZWNvZ25pemVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKGlucHV0KSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IFwiX19wcm90b19fXCIpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGxldCBrZXlSZXN1bHQgPSBkZWYua2V5VHlwZS5fem9kLnJ1bih7IHZhbHVlOiBrZXksIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5UmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBOdW1lcmljIHN0cmluZyBmYWxsYmFjazogaWYga2V5IGlzIGEgbnVtZXJpYyBzdHJpbmcgYW5kIGZhaWxlZCwgcmV0cnkgd2l0aCBOdW1iZXIoa2V5KVxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB6Lm51bWJlcigpLCB6LmxpdGVyYWwoWzEsIDIsIDNdKSwgYW5kIHVuaW9ucyBjb250YWluaW5nIG51bWVyaWMgbGl0ZXJhbHNcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja051bWVyaWNLZXkgPSB0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiICYmIHJlZ2V4ZXMubnVtYmVyLnRlc3Qoa2V5KSAmJiBrZXlSZXN1bHQuaXNzdWVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tOdW1lcmljS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5UmVzdWx0ID0gZGVmLmtleVR5cGUuX3pvZC5ydW4oeyB2YWx1ZTogTnVtYmVyKGtleSksIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldHJ5UmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmV0cnlSZXN1bHQuaXNzdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5UmVzdWx0ID0gcmV0cnlSZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGtleVJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWYubW9kZSA9PT0gXCJsb29zZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXNzIHRocm91Z2ggdW5jaGFuZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlW2tleV0gPSBpbnB1dFtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBcInN0cmljdFwiIGJlaGF2aW9yOiBlcnJvciBvbiBpbnZhbGlkIGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2tleVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjogXCJyZWNvcmRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IGtleVJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogW2tleV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYudmFsdWVUeXBlLl96b2QucnVuKHsgdmFsdWU6IGlucHV0W2tleV0sIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoa2V5LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlW2tleVJlc3VsdC52YWx1ZV0gPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlW2tleVJlc3VsdC52YWx1ZV0gPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9tcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9tcykudGhlbigoKSA9PiBwYXlsb2FkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE1hcCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTWFwXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICghKGlucHV0IGluc3RhbmNlb2YgTWFwKSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwibWFwXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9tcyA9IFtdO1xuICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBpbnB1dCkge1xuICAgICAgICAgICAgY29uc3Qga2V5UmVzdWx0ID0gZGVmLmtleVR5cGUuX3pvZC5ydW4oeyB2YWx1ZToga2V5LCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZVJlc3VsdCA9IGRlZi52YWx1ZVR5cGUuX3pvZC5ydW4oeyB2YWx1ZTogdmFsdWUsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChrZXlSZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlIHx8IHZhbHVlUmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHByb21zLnB1c2goUHJvbWlzZS5hbGwoW2tleVJlc3VsdCwgdmFsdWVSZXN1bHRdKS50aGVuKChba2V5UmVzdWx0LCB2YWx1ZVJlc3VsdF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlTWFwUmVzdWx0KGtleVJlc3VsdCwgdmFsdWVSZXN1bHQsIHBheWxvYWQsIGtleSwgaW5wdXQsIGluc3QsIGN0eCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlTWFwUmVzdWx0KGtleVJlc3VsdCwgdmFsdWVSZXN1bHQsIHBheWxvYWQsIGtleSwgaW5wdXQsIGluc3QsIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb21zLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9tcykudGhlbigoKSA9PiBwYXlsb2FkKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlTWFwUmVzdWx0KGtleVJlc3VsdCwgdmFsdWVSZXN1bHQsIGZpbmFsLCBrZXksIGlucHV0LCBpbnN0LCBjdHgpIHtcbiAgICBpZiAoa2V5UmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHV0aWwucHJvcGVydHlLZXlUeXBlcy5oYXModHlwZW9mIGtleSkpIHtcbiAgICAgICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwga2V5UmVzdWx0Lmlzc3VlcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9rZXlcIixcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwibWFwXCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IGtleVJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZhbHVlUmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHV0aWwucHJvcGVydHlLZXlUeXBlcy5oYXModHlwZW9mIGtleSkpIHtcbiAgICAgICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgdmFsdWVSZXN1bHQuaXNzdWVzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcIm1hcFwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9lbGVtZW50XCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IHZhbHVlUmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5hbC52YWx1ZS5zZXQoa2V5UmVzdWx0LnZhbHVlLCB2YWx1ZVJlc3VsdC52YWx1ZSk7XG59XG5leHBvcnQgY29uc3QgJFpvZFNldCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kU2V0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICghKGlucHV0IGluc3RhbmNlb2YgU2V0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJzZXRcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9tcyA9IFtdO1xuICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3IFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaW5wdXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi52YWx1ZVR5cGUuX3pvZC5ydW4oeyB2YWx1ZTogaXRlbSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHJlc3VsdC50aGVuKChyZXN1bHQpID0+IGhhbmRsZVNldFJlc3VsdChyZXN1bHQsIHBheWxvYWQpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgaGFuZGxlU2V0UmVzdWx0KHJlc3VsdCwgcGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb21zLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9tcykudGhlbigoKSA9PiBwYXlsb2FkKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlU2V0UmVzdWx0KHJlc3VsdCwgZmluYWwpIHtcbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goLi4ucmVzdWx0Lmlzc3Vlcyk7XG4gICAgfVxuICAgIGZpbmFsLnZhbHVlLmFkZChyZXN1bHQudmFsdWUpO1xufVxuZXhwb3J0IGNvbnN0ICRab2RFbnVtID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RFbnVtXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgdmFsdWVzID0gdXRpbC5nZXRFbnVtVmFsdWVzKGRlZi5lbnRyaWVzKTtcbiAgICBjb25zdCB2YWx1ZXNTZXQgPSBuZXcgU2V0KHZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnZhbHVlcyA9IHZhbHVlc1NldDtcbiAgICBpbnN0Ll96b2QucGF0dGVybiA9IG5ldyBSZWdFeHAoYF4oJHt2YWx1ZXNcbiAgICAgICAgLmZpbHRlcigoaykgPT4gdXRpbC5wcm9wZXJ0eUtleVR5cGVzLmhhcyh0eXBlb2YgaykpXG4gICAgICAgIC5tYXAoKG8pID0+ICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIiA/IHV0aWwuZXNjYXBlUmVnZXgobykgOiBvLnRvU3RyaW5nKCkpKVxuICAgICAgICAuam9pbihcInxcIil9KSRgKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZXNTZXQuaGFzKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdmFsdWVcIixcbiAgICAgICAgICAgIHZhbHVlcyxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTGl0ZXJhbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTGl0ZXJhbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGlmIChkZWYudmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGxpdGVyYWwgc2NoZW1hIHdpdGggbm8gdmFsaWQgdmFsdWVzXCIpO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZXMgPSBuZXcgU2V0KGRlZi52YWx1ZXMpO1xuICAgIGluc3QuX3pvZC52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBuZXcgUmVnRXhwKGBeKCR7ZGVmLnZhbHVlc1xuICAgICAgICAubWFwKChvKSA9PiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB1dGlsLmVzY2FwZVJlZ2V4KG8pIDogbyA/IHV0aWwuZXNjYXBlUmVnZXgoby50b1N0cmluZygpKSA6IFN0cmluZyhvKSkpXG4gICAgICAgIC5qb2luKFwifFwiKX0pJGApO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlcy5oYXMoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF92YWx1ZVwiLFxuICAgICAgICAgICAgdmFsdWVzOiBkZWYudmFsdWVzLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RGaWxlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RGaWxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIEZpbGUpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJmaWxlXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RUcmFuc2Zvcm0gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFRyYW5zZm9ybVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgaWYgKGN0eC5kaXJlY3Rpb24gPT09IFwiYmFja3dhcmRcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEVuY29kZUVycm9yKGluc3QuY29uc3RydWN0b3IubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgX291dCA9IGRlZi50cmFuc2Zvcm0ocGF5bG9hZC52YWx1ZSwgcGF5bG9hZCk7XG4gICAgICAgIGlmIChjdHguYXN5bmMpIHtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IF9vdXQgaW5zdGFuY2VvZiBQcm9taXNlID8gX291dCA6IFByb21pc2UucmVzb2x2ZShfb3V0KTtcbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQudGhlbigob3V0cHV0KSA9PiB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfb3V0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0gX291dDtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlT3B0aW9uYWxSZXN1bHQocmVzdWx0LCBpbnB1dCkge1xuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCAmJiBpbnB1dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB7IGlzc3VlczogW10sIHZhbHVlOiB1bmRlZmluZWQgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBjb25zdCAkWm9kT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9wdGluID0gXCJvcHRpb25hbFwiO1xuICAgIGluc3QuX3pvZC5vcHRvdXQgPSBcIm9wdGlvbmFsXCI7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyA/IG5ldyBTZXQoWy4uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsIHVuZGVmaW5lZF0pIDogdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicGF0dGVyblwiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPSBkZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4gPyBuZXcgUmVnRXhwKGBeKCR7dXRpbC5jbGVhblJlZ2V4KHBhdHRlcm4uc291cmNlKX0pPyRgKSA6IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChkZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4gPT09IFwib3B0aW9uYWxcIikge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyKSA9PiBoYW5kbGVPcHRpb25hbFJlc3VsdChyLCBwYXlsb2FkLnZhbHVlKSk7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlT3B0aW9uYWxSZXN1bHQocmVzdWx0LCBwYXlsb2FkLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF5bG9hZC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kRXhhY3RPcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRXhhY3RPcHRpb25hbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gQ2FsbCBwYXJlbnQgaW5pdCAtIGluaGVyaXRzIG9wdGluL29wdG91dCA9IFwib3B0aW9uYWxcIlxuICAgICRab2RPcHRpb25hbC5pbml0KGluc3QsIGRlZik7XG4gICAgLy8gT3ZlcnJpZGUgdmFsdWVzL3BhdHRlcm4gdG8gTk9UIGFkZCB1bmRlZmluZWRcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInBhdHRlcm5cIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnBhdHRlcm4pO1xuICAgIC8vIE92ZXJyaWRlIHBhcnNlIHRvIGp1c3QgZGVsZWdhdGUgKG5vIHVuZGVmaW5lZCBoYW5kbGluZylcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROdWxsYWJsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTnVsbGFibGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdGluXCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC5vcHRpbik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLm9wdG91dCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwYXR0ZXJuXCIsICgpID0+IHtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IGRlZi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO1xuICAgICAgICByZXR1cm4gcGF0dGVybiA/IG5ldyBSZWdFeHAoYF4oJHt1dGlsLmNsZWFuUmVnZXgocGF0dGVybi5zb3VyY2UpfXxudWxsKSRgKSA6IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzID8gbmV3IFNldChbLi4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcywgbnVsbF0pIDogdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgLy8gRm9yd2FyZCBkaXJlY3Rpb24gKGRlY29kZSk6IGFsbG93IG51bGwgdG8gcGFzcyB0aHJvdWdoXG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2REZWZhdWx0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2REZWZhdWx0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgLy8gaW5zdC5fem9kLnFpbiA9IFwidHJ1ZVwiO1xuICAgIGluc3QuX3pvZC5vcHRpbiA9IFwib3B0aW9uYWxcIjtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChjdHguZGlyZWN0aW9uID09PSBcImJhY2t3YXJkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yd2FyZCBkaXJlY3Rpb24gKGRlY29kZSk6IGFwcGx5IGRlZmF1bHRzIGZvciB1bmRlZmluZWQgaW5wdXRcbiAgICAgICAgaWYgKHBheWxvYWQudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGRlZi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqICRab2REZWZhdWx0IHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgaW1tZWRpYXRlbHkgaW4gZm9yd2FyZCBkaXJlY3Rpb24uXG4gICAgICAgICAgICAgKiBJdCBkb2Vzbid0IHBhc3MgdGhlIGRlZmF1bHQgdmFsdWUgaW50byB0aGUgdmFsaWRhdG9yIChcInByZWZhdWx0XCIpLiBUaGVyZSdzIG5vIHJlYXNvbiB0byBwYXNzIHRoZSBkZWZhdWx0IHZhbHVlIHRocm91Z2ggdmFsaWRhdGlvbi4gVGhlIHZhbGlkaXR5IG9mIHRoZSBkZWZhdWx0IGlzIGVuZm9yY2VkIGJ5IFR5cGVTY3JpcHQgc3RhdGljYWxseS4gT3RoZXJ3aXNlLCBpdCdzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgdXNlciB0byBlbnN1cmUgdGhlIGRlZmF1bHQgaXMgdmFsaWQuIEluIHRoZSBjYXNlIG9mIHBpcGVzIHdpdGggZGl2ZXJnZW50IGluL291dCB0eXBlcywgeW91IGNhbiBzcGVjaWZ5IHRoZSBkZWZhdWx0IG9uIHRoZSBgaW5gIHNjaGVtYSBvZiB5b3VyIFpvZFBpcGUgdG8gc2V0IGEgXCJwcmVmYXVsdFwiIGZvciB0aGUgcGlwZS4gICAqL1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yd2FyZCBkaXJlY3Rpb246IGNvbnRpbnVlIHdpdGggZGVmYXVsdCBoYW5kbGluZ1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlRGVmYXVsdFJlc3VsdChyZXN1bHQsIGRlZikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYW5kbGVEZWZhdWx0UmVzdWx0KHJlc3VsdCwgZGVmKTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVEZWZhdWx0UmVzdWx0KHBheWxvYWQsIGRlZikge1xuICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGRlZi5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xufVxuZXhwb3J0IGNvbnN0ICRab2RQcmVmYXVsdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kUHJlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub3B0aW4gPSBcIm9wdGlvbmFsXCI7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBpZiAoY3R4LmRpcmVjdGlvbiA9PT0gXCJiYWNrd2FyZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZvcndhcmQgZGlyZWN0aW9uIChkZWNvZGUpOiBhcHBseSBwcmVmYXVsdCBmb3IgdW5kZWZpbmVkIGlucHV0XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBkZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROb25PcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTm9uT3B0aW9uYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzO1xuICAgICAgICByZXR1cm4gdiA/IG5ldyBTZXQoWy4uLnZdLmZpbHRlcigoeCkgPT4geCAhPT0gdW5kZWZpbmVkKSkgOiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlTm9uT3B0aW9uYWxSZXN1bHQocmVzdWx0LCBpbnN0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZU5vbk9wdGlvbmFsUmVzdWx0KHJlc3VsdCwgaW5zdCk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlTm9uT3B0aW9uYWxSZXN1bHQocGF5bG9hZCwgaW5zdCkge1xuICAgIGlmICghcGF5bG9hZC5pc3N1ZXMubGVuZ3RoICYmIHBheWxvYWQudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBleHBlY3RlZDogXCJub25vcHRpb25hbFwiLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHBheWxvYWQ7XG59XG5leHBvcnQgY29uc3QgJFpvZFN1Y2Nlc3MgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFN1Y2Nlc3NcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChjdHguZGlyZWN0aW9uID09PSBcImJhY2t3YXJkXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBjb3JlLiRab2RFbmNvZGVFcnJvcihcIlpvZFN1Y2Nlc3NcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gcmVzdWx0Lmlzc3Vlcy5sZW5ndGggPT09IDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0gcmVzdWx0Lmlzc3Vlcy5sZW5ndGggPT09IDA7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2F0Y2ggPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENhdGNoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRpblwiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4pO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0b3V0XCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwidmFsdWVzXCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgaWYgKGN0eC5kaXJlY3Rpb24gPT09IFwiYmFja3dhcmRcIikge1xuICAgICAgICAgICAgcmV0dXJuIGRlZi5pbm5lclR5cGUuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3J3YXJkIGRpcmVjdGlvbiAoZGVjb2RlKTogYXBwbHkgY2F0Y2ggbG9naWNcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gZGVmLmNhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiByZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gZGVmLmNhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiByZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTmFOID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2ROYU5cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQudmFsdWUgIT09IFwibnVtYmVyXCIgfHwgIU51bWJlci5pc05hTihwYXlsb2FkLnZhbHVlKSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJuYW5cIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFBpcGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFBpcGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiBkZWYuaW4uX3pvZC52YWx1ZXMpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0aW5cIiwgKCkgPT4gZGVmLmluLl96b2Qub3B0aW4pO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0b3V0XCIsICgpID0+IGRlZi5vdXQuX3pvZC5vcHRvdXQpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicHJvcFZhbHVlc1wiLCAoKSA9PiBkZWYuaW4uX3pvZC5wcm9wVmFsdWVzKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChjdHguZGlyZWN0aW9uID09PSBcImJhY2t3YXJkXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZGVmLm91dC5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICAgICAgaWYgKHJpZ2h0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByaWdodC50aGVuKChyaWdodCkgPT4gaGFuZGxlUGlwZVJlc3VsdChyaWdodCwgZGVmLmluLCBjdHgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVQaXBlUmVzdWx0KHJpZ2h0LCBkZWYuaW4sIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVmdCA9IGRlZi5pbi5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICBpZiAobGVmdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBsZWZ0LnRoZW4oKGxlZnQpID0+IGhhbmRsZVBpcGVSZXN1bHQobGVmdCwgZGVmLm91dCwgY3R4KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZVBpcGVSZXN1bHQobGVmdCwgZGVmLm91dCwgY3R4KTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVQaXBlUmVzdWx0KGxlZnQsIG5leHQsIGN0eCkge1xuICAgIGlmIChsZWZ0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgLy8gcHJldmVudCBmdXJ0aGVyIGNoZWNrc1xuICAgICAgICBsZWZ0LmFib3J0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gbGVmdDtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQuX3pvZC5ydW4oeyB2YWx1ZTogbGVmdC52YWx1ZSwgaXNzdWVzOiBsZWZ0Lmlzc3VlcyB9LCBjdHgpO1xufVxuZXhwb3J0IGNvbnN0ICRab2RDb2RlYyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ29kZWNcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiBkZWYuaW4uX3pvZC52YWx1ZXMpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0aW5cIiwgKCkgPT4gZGVmLmluLl96b2Qub3B0aW4pO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0b3V0XCIsICgpID0+IGRlZi5vdXQuX3pvZC5vcHRvdXQpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicHJvcFZhbHVlc1wiLCAoKSA9PiBkZWYuaW4uX3pvZC5wcm9wVmFsdWVzKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGN0eC5kaXJlY3Rpb24gfHwgXCJmb3J3YXJkXCI7XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09IFwiZm9yd2FyZFwiKSB7XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gZGVmLmluLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgICAgICBpZiAobGVmdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGVmdC50aGVuKChsZWZ0KSA9PiBoYW5kbGVDb2RlY0FSZXN1bHQobGVmdCwgZGVmLCBjdHgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVDb2RlY0FSZXN1bHQobGVmdCwgZGVmLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBkZWYub3V0Ll96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgICAgICBpZiAocmlnaHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJpZ2h0LnRoZW4oKHJpZ2h0KSA9PiBoYW5kbGVDb2RlY0FSZXN1bHQocmlnaHQsIGRlZiwgY3R4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlQ29kZWNBUmVzdWx0KHJpZ2h0LCBkZWYsIGN0eCk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVDb2RlY0FSZXN1bHQocmVzdWx0LCBkZWYsIGN0eCkge1xuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAvLyBwcmV2ZW50IGZ1cnRoZXIgY2hlY2tzXG4gICAgICAgIHJlc3VsdC5hYm9ydGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgZGlyZWN0aW9uID0gY3R4LmRpcmVjdGlvbiB8fCBcImZvcndhcmRcIjtcbiAgICBpZiAoZGlyZWN0aW9uID09PSBcImZvcndhcmRcIikge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IGRlZi50cmFuc2Zvcm0ocmVzdWx0LnZhbHVlLCByZXN1bHQpO1xuICAgICAgICBpZiAodHJhbnNmb3JtZWQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWQudGhlbigodmFsdWUpID0+IGhhbmRsZUNvZGVjVHhSZXN1bHQocmVzdWx0LCB2YWx1ZSwgZGVmLm91dCwgY3R4KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZUNvZGVjVHhSZXN1bHQocmVzdWx0LCB0cmFuc2Zvcm1lZCwgZGVmLm91dCwgY3R4KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkID0gZGVmLnJldmVyc2VUcmFuc2Zvcm0ocmVzdWx0LnZhbHVlLCByZXN1bHQpO1xuICAgICAgICBpZiAodHJhbnNmb3JtZWQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWQudGhlbigodmFsdWUpID0+IGhhbmRsZUNvZGVjVHhSZXN1bHQocmVzdWx0LCB2YWx1ZSwgZGVmLmluLCBjdHgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlQ29kZWNUeFJlc3VsdChyZXN1bHQsIHRyYW5zZm9ybWVkLCBkZWYuaW4sIGN0eCk7XG4gICAgfVxufVxuZnVuY3Rpb24gaGFuZGxlQ29kZWNUeFJlc3VsdChsZWZ0LCB2YWx1ZSwgbmV4dFNjaGVtYSwgY3R4KSB7XG4gICAgLy8gQ2hlY2sgaWYgdHJhbnNmb3JtIGFkZGVkIGFueSBpc3N1ZXNcbiAgICBpZiAobGVmdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGxlZnQuYWJvcnRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBsZWZ0O1xuICAgIH1cbiAgICByZXR1cm4gbmV4dFNjaGVtYS5fem9kLnJ1bih7IHZhbHVlLCBpc3N1ZXM6IGxlZnQuaXNzdWVzIH0sIGN0eCk7XG59XG5leHBvcnQgY29uc3QgJFpvZFJlYWRvbmx5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RSZWFkb25seVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicHJvcFZhbHVlc1wiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRpblwiLCAoKSA9PiBkZWYuaW5uZXJUeXBlPy5fem9kPy5vcHRpbik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChjdHguZGlyZWN0aW9uID09PSBcImJhY2t3YXJkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKGhhbmRsZVJlYWRvbmx5UmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlUmVhZG9ubHlSZXN1bHQocmVzdWx0KTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVSZWFkb25seVJlc3VsdChwYXlsb2FkKSB7XG4gICAgcGF5bG9hZC52YWx1ZSA9IE9iamVjdC5mcmVlemUocGF5bG9hZC52YWx1ZSk7XG4gICAgcmV0dXJuIHBheWxvYWQ7XG59XG5leHBvcnQgY29uc3QgJFpvZFRlbXBsYXRlTGl0ZXJhbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVGVtcGxhdGVMaXRlcmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgY29uc3QgcmVnZXhQYXJ0cyA9IFtdO1xuICAgIGZvciAoY29uc3QgcGFydCBvZiBkZWYucGFydHMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXJ0ID09PSBcIm9iamVjdFwiICYmIHBhcnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGlzIFpvZCBzY2hlbWFcbiAgICAgICAgICAgIGlmICghcGFydC5fem9kLnBhdHRlcm4pIHtcbiAgICAgICAgICAgICAgICAvLyBpZiAoIXNvdXJjZSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0LCBubyBwYXR0ZXJuIGZvdW5kOiAke1suLi5wYXJ0Ll96b2QudHJhaXRzXS5zaGlmdCgpfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcGFydC5fem9kLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHAgPyBwYXJ0Ll96b2QucGF0dGVybi5zb3VyY2UgOiBwYXJ0Ll96b2QucGF0dGVybjtcbiAgICAgICAgICAgIGlmICghc291cmNlKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7cGFydC5fem9kLnRyYWl0c31gKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gc291cmNlLnN0YXJ0c1dpdGgoXCJeXCIpID8gMSA6IDA7XG4gICAgICAgICAgICBjb25zdCBlbmQgPSBzb3VyY2UuZW5kc1dpdGgoXCIkXCIpID8gc291cmNlLmxlbmd0aCAtIDEgOiBzb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgcmVnZXhQYXJ0cy5wdXNoKHNvdXJjZS5zbGljZShzdGFydCwgZW5kKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGFydCA9PT0gbnVsbCB8fCB1dGlsLnByaW1pdGl2ZVR5cGVzLmhhcyh0eXBlb2YgcGFydCkpIHtcbiAgICAgICAgICAgIHJlZ2V4UGFydHMucHVzaCh1dGlsLmVzY2FwZVJlZ2V4KGAke3BhcnR9YCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtwYXJ0fWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gbmV3IFJlZ0V4cChgXiR7cmVnZXhQYXJ0cy5qb2luKFwiXCIpfSRgKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQudmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaW5zdC5fem9kLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgaWYgKCFpbnN0Ll96b2QucGF0dGVybi50ZXN0KHBheWxvYWQudmFsdWUpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IGRlZi5mb3JtYXQgPz8gXCJ0ZW1wbGF0ZV9saXRlcmFsXCIsXG4gICAgICAgICAgICAgICAgcGF0dGVybjogaW5zdC5fem9kLnBhdHRlcm4uc291cmNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEZ1bmN0aW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RGdW5jdGlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX2RlZiA9IGRlZjtcbiAgICBpbnN0Ll96b2QuZGVmID0gZGVmO1xuICAgIGluc3QuaW1wbGVtZW50ID0gKGZ1bmMpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImltcGxlbWVudCgpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBmdW5jdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFyZ3MgPSBpbnN0Ll9kZWYuaW5wdXQgPyBwYXJzZShpbnN0Ll9kZWYuaW5wdXQsIGFyZ3MpIDogYXJncztcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3QuYXBwbHkoZnVuYywgdGhpcywgcGFyc2VkQXJncyk7XG4gICAgICAgICAgICBpZiAoaW5zdC5fZGVmLm91dHB1dCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZShpbnN0Ll9kZWYub3V0cHV0LCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGluc3QuaW1wbGVtZW50QXN5bmMgPSAoZnVuYykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRBcmdzID0gaW5zdC5fZGVmLmlucHV0ID8gYXdhaXQgcGFyc2VBc3luYyhpbnN0Ll9kZWYuaW5wdXQsIGFyZ3MpIDogYXJncztcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuYywgdGhpcywgcGFyc2VkQXJncyk7XG4gICAgICAgICAgICBpZiAoaW5zdC5fZGVmLm91dHB1dCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBwYXJzZUFzeW5jKGluc3QuX2RlZi5vdXRwdXQsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgIH07XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXlsb2FkLnZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiZnVuY3Rpb25cIixcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBpZiBvdXRwdXQgaXMgYSBwcm9taXNlIHR5cGUgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCB1c2UgYXN5bmMgaW1wbGVtZW50YXRpb25cbiAgICAgICAgY29uc3QgaGFzUHJvbWlzZU91dHB1dCA9IGluc3QuX2RlZi5vdXRwdXQgJiYgaW5zdC5fZGVmLm91dHB1dC5fem9kLmRlZi50eXBlID09PSBcInByb21pc2VcIjtcbiAgICAgICAgaWYgKGhhc1Byb21pc2VPdXRwdXQpIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBpbnN0LmltcGxlbWVudEFzeW5jKHBheWxvYWQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGluc3QuaW1wbGVtZW50KHBheWxvYWQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG4gICAgaW5zdC5pbnB1dCA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IEYgPSBpbnN0LmNvbnN0cnVjdG9yO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmdzWzBdKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImZ1bmN0aW9uXCIsXG4gICAgICAgICAgICAgICAgaW5wdXQ6IG5ldyAkWm9kVHVwbGUoe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInR1cGxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBhcmdzWzBdLFxuICAgICAgICAgICAgICAgICAgICByZXN0OiBhcmdzWzFdLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG91dHB1dDogaW5zdC5fZGVmLm91dHB1dCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRih7XG4gICAgICAgICAgICB0eXBlOiBcImZ1bmN0aW9uXCIsXG4gICAgICAgICAgICBpbnB1dDogYXJnc1swXSxcbiAgICAgICAgICAgIG91dHB1dDogaW5zdC5fZGVmLm91dHB1dCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBpbnN0Lm91dHB1dCA9IChvdXRwdXQpID0+IHtcbiAgICAgICAgY29uc3QgRiA9IGluc3QuY29uc3RydWN0b3I7XG4gICAgICAgIHJldHVybiBuZXcgRih7XG4gICAgICAgICAgICB0eXBlOiBcImZ1bmN0aW9uXCIsXG4gICAgICAgICAgICBpbnB1dDogaW5zdC5fZGVmLmlucHV0LFxuICAgICAgICAgICAgb3V0cHV0LFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBpbnN0O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFByb21pc2UgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFByb21pc2VcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocGF5bG9hZC52YWx1ZSkudGhlbigoaW5uZXIpID0+IGRlZi5pbm5lclR5cGUuX3pvZC5ydW4oeyB2YWx1ZTogaW5uZXIsIGlzc3VlczogW10gfSwgY3R4KSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RMYXp5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RMYXp5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgLy8gbGV0IF9pbm5lclR5cGUhOiBhbnk7XG4gICAgLy8gdXRpbC5kZWZpbmVMYXp5KGRlZiwgXCJnZXR0ZXJcIiwgKCkgPT4ge1xuICAgIC8vICAgaWYgKCFfaW5uZXJUeXBlKSB7XG4gICAgLy8gICAgIF9pbm5lclR5cGUgPSBkZWYuZ2V0dGVyKCk7XG4gICAgLy8gICB9XG4gICAgLy8gICByZXR1cm4gKCkgPT4gX2lubmVyVHlwZTtcbiAgICAvLyB9KTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcImlubmVyVHlwZVwiLCAoKSA9PiBkZWYuZ2V0dGVyKCkpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicGF0dGVyblwiLCAoKSA9PiBpbnN0Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5wYXR0ZXJuKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInByb3BWYWx1ZXNcIiwgKCkgPT4gaW5zdC5fem9kLmlubmVyVHlwZT8uX3pvZD8ucHJvcFZhbHVlcyk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRpblwiLCAoKSA9PiBpbnN0Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5vcHRpbiA/PyB1bmRlZmluZWQpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0b3V0XCIsICgpID0+IGluc3QuX3pvZC5pbm5lclR5cGU/Ll96b2Q/Lm9wdG91dCA/PyB1bmRlZmluZWQpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5uZXIgPSBpbnN0Ll96b2QuaW5uZXJUeXBlO1xuICAgICAgICByZXR1cm4gaW5uZXIuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEN1c3RvbSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ3VzdG9tXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjaGVja3MuJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF8pID0+IHtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IHIgPSBkZWYuZm4oaW5wdXQpO1xuICAgICAgICBpZiAociBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiByLnRoZW4oKHIpID0+IGhhbmRsZVJlZmluZVJlc3VsdChyLCBwYXlsb2FkLCBpbnB1dCwgaW5zdCkpO1xuICAgICAgICB9XG4gICAgICAgIGhhbmRsZVJlZmluZVJlc3VsdChyLCBwYXlsb2FkLCBpbnB1dCwgaW5zdCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVSZWZpbmVSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBpbnB1dCwgaW5zdCkge1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IF9pc3MgPSB7XG4gICAgICAgICAgICBjb2RlOiBcImN1c3RvbVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LCAvLyBpbmNvcnBvcmF0ZXMgcGFyYW1zLmVycm9yIGludG8gaXNzdWUgcmVwb3J0aW5nXG4gICAgICAgICAgICBwYXRoOiBbLi4uKGluc3QuX3pvZC5kZWYucGF0aCA/PyBbXSldLCAvLyBpbmNvcnBvcmF0ZXMgcGFyYW1zLmVycm9yIGludG8gaXNzdWUgcmVwb3J0aW5nXG4gICAgICAgICAgICBjb250aW51ZTogIWluc3QuX3pvZC5kZWYuYWJvcnQsXG4gICAgICAgICAgICAvLyBwYXJhbXM6IGluc3QuX3pvZC5kZWYucGFyYW1zLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoaW5zdC5fem9kLmRlZi5wYXJhbXMpXG4gICAgICAgICAgICBfaXNzLnBhcmFtcyA9IGluc3QuX3pvZC5kZWYucGFyYW1zO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHV0aWwuaXNzdWUoX2lzcykpO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/schemas.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/to-json-schema.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/zod/v4/core/to-json-schema.js ***!
|
||
\****************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createStandardJSONSchemaMethod: () => (/* binding */ createStandardJSONSchemaMethod),\n/* harmony export */ createToJSONSchemaMethod: () => (/* binding */ createToJSONSchemaMethod),\n/* harmony export */ extractDefs: () => (/* binding */ extractDefs),\n/* harmony export */ finalize: () => (/* binding */ finalize),\n/* harmony export */ initializeContext: () => (/* binding */ initializeContext),\n/* harmony export */ process: () => (/* binding */ process)\n/* harmony export */ });\n/* harmony import */ var _registries_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./registries.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/registries.js\");\n\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nfunction initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? _registries_js__WEBPACK_IMPORTED_MODULE_0__.globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nfunction process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nfunction extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nfunction finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nconst createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nconst createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS90by1qc29uLXNjaGVtYS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDLDhDQUE4QywwREFBYztBQUM1RDtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTywwQ0FBMEMsMEJBQTBCO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsVUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVGQUF1RixTQUFTO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELEdBQUc7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0UsaUJBQWlCLGNBQWMsY0FBYztBQUNySDtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBLHdFQUF3RSxjQUFjO0FBQ3RG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c291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxjb3JlXFx0by1qc29uLXNjaGVtYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnbG9iYWxSZWdpc3RyeSB9IGZyb20gXCIuL3JlZ2lzdHJpZXMuanNcIjtcbi8vIGZ1bmN0aW9uIGluaXRpYWxpemVDb250ZXh0PFQgZXh0ZW5kcyBzY2hlbWFzLiRab2RUeXBlPihpbnB1dHM6IEpTT05TY2hlbWFHZW5lcmF0b3JQYXJhbXM8VD4pOiBUb0pTT05TY2hlbWFDb250ZXh0PFQ+IHtcbi8vICAgcmV0dXJuIHtcbi8vICAgICBwcm9jZXNzb3I6IGlucHV0cy5wcm9jZXNzb3IsXG4vLyAgICAgbWV0YWRhdGFSZWdpc3RyeTogaW5wdXRzLm1ldGFkYXRhID8/IGdsb2JhbFJlZ2lzdHJ5LFxuLy8gICAgIHRhcmdldDogaW5wdXRzLnRhcmdldCA/PyBcImRyYWZ0LTIwMjAtMTJcIixcbi8vICAgICB1bnJlcHJlc2VudGFibGU6IGlucHV0cy51bnJlcHJlc2VudGFibGUgPz8gXCJ0aHJvd1wiLFxuLy8gICB9O1xuLy8gfVxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVDb250ZXh0KHBhcmFtcykge1xuICAgIC8vIE5vcm1hbGl6ZSB0YXJnZXQ6IGNvbnZlcnQgb2xkIG5vbi1oeXBoZW5hdGVkIHZlcnNpb25zIHRvIGh5cGhlbmF0ZWQgdmVyc2lvbnNcbiAgICBsZXQgdGFyZ2V0ID0gcGFyYW1zPy50YXJnZXQgPz8gXCJkcmFmdC0yMDIwLTEyXCI7XG4gICAgaWYgKHRhcmdldCA9PT0gXCJkcmFmdC00XCIpXG4gICAgICAgIHRhcmdldCA9IFwiZHJhZnQtMDRcIjtcbiAgICBpZiAodGFyZ2V0ID09PSBcImRyYWZ0LTdcIilcbiAgICAgICAgdGFyZ2V0ID0gXCJkcmFmdC0wN1wiO1xuICAgIHJldHVybiB7XG4gICAgICAgIHByb2Nlc3NvcnM6IHBhcmFtcy5wcm9jZXNzb3JzID8/IHt9LFxuICAgICAgICBtZXRhZGF0YVJlZ2lzdHJ5OiBwYXJhbXM/Lm1ldGFkYXRhID8/IGdsb2JhbFJlZ2lzdHJ5LFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHVucmVwcmVzZW50YWJsZTogcGFyYW1zPy51bnJlcHJlc2VudGFibGUgPz8gXCJ0aHJvd1wiLFxuICAgICAgICBvdmVycmlkZTogcGFyYW1zPy5vdmVycmlkZSA/PyAoKCkgPT4geyB9KSxcbiAgICAgICAgaW86IHBhcmFtcz8uaW8gPz8gXCJvdXRwdXRcIixcbiAgICAgICAgY291bnRlcjogMCxcbiAgICAgICAgc2VlbjogbmV3IE1hcCgpLFxuICAgICAgICBjeWNsZXM6IHBhcmFtcz8uY3ljbGVzID8/IFwicmVmXCIsXG4gICAgICAgIHJldXNlZDogcGFyYW1zPy5yZXVzZWQgPz8gXCJpbmxpbmVcIixcbiAgICAgICAgZXh0ZXJuYWw6IHBhcmFtcz8uZXh0ZXJuYWwgPz8gdW5kZWZpbmVkLFxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcHJvY2VzcyhzY2hlbWEsIGN0eCwgX3BhcmFtcyA9IHsgcGF0aDogW10sIHNjaGVtYVBhdGg6IFtdIH0pIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgZGVmID0gc2NoZW1hLl96b2QuZGVmO1xuICAgIC8vIGNoZWNrIGZvciBzY2hlbWEgaW4gc2VlbnNcbiAgICBjb25zdCBzZWVuID0gY3R4LnNlZW4uZ2V0KHNjaGVtYSk7XG4gICAgaWYgKHNlZW4pIHtcbiAgICAgICAgc2Vlbi5jb3VudCsrO1xuICAgICAgICAvLyBjaGVjayBpZiBjeWNsZVxuICAgICAgICBjb25zdCBpc0N5Y2xlID0gX3BhcmFtcy5zY2hlbWFQYXRoLmluY2x1ZGVzKHNjaGVtYSk7XG4gICAgICAgIGlmIChpc0N5Y2xlKSB7XG4gICAgICAgICAgICBzZWVuLmN5Y2xlID0gX3BhcmFtcy5wYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWVuLnNjaGVtYTtcbiAgICB9XG4gICAgLy8gaW5pdGlhbGl6ZVxuICAgIGNvbnN0IHJlc3VsdCA9IHsgc2NoZW1hOiB7fSwgY291bnQ6IDEsIGN5Y2xlOiB1bmRlZmluZWQsIHBhdGg6IF9wYXJhbXMucGF0aCB9O1xuICAgIGN0eC5zZWVuLnNldChzY2hlbWEsIHJlc3VsdCk7XG4gICAgLy8gY3VzdG9tIG1ldGhvZCBvdmVycmlkZXMgZGVmYXVsdCBiZWhhdmlvclxuICAgIGNvbnN0IG92ZXJyaWRlU2NoZW1hID0gc2NoZW1hLl96b2QudG9KU09OU2NoZW1hPy4oKTtcbiAgICBpZiAob3ZlcnJpZGVTY2hlbWEpIHtcbiAgICAgICAgcmVzdWx0LnNjaGVtYSA9IG92ZXJyaWRlU2NoZW1hO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgLi4uX3BhcmFtcyxcbiAgICAgICAgICAgIHNjaGVtYVBhdGg6IFsuLi5fcGFyYW1zLnNjaGVtYVBhdGgsIHNjaGVtYV0sXG4gICAgICAgICAgICBwYXRoOiBfcGFyYW1zLnBhdGgsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChzY2hlbWEuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSkge1xuICAgICAgICAgICAgc2NoZW1hLl96b2QucHJvY2Vzc0pTT05TY2hlbWEoY3R4LCByZXN1bHQuc2NoZW1hLCBwYXJhbXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgX2pzb24gPSByZXN1bHQuc2NoZW1hO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yID0gY3R4LnByb2Nlc3NvcnNbZGVmLnR5cGVdO1xuICAgICAgICAgICAgaWYgKCFwcm9jZXNzb3IpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFt0b0pTT05TY2hlbWFdOiBOb24tcmVwcmVzZW50YWJsZSB0eXBlIGVuY291bnRlcmVkOiAke2RlZi50eXBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvY2Vzc29yKHNjaGVtYSwgY3R4LCBfanNvbiwgcGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJlbnQgPSBzY2hlbWEuX3pvZC5wYXJlbnQ7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIC8vIEFsc28gc2V0IHJlZiBpZiBwcm9jZXNzb3IgZGlkbid0IChmb3IgaW5oZXJpdGFuY2UpXG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5yZWYpXG4gICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IHBhcmVudDtcbiAgICAgICAgICAgIHByb2Nlc3MocGFyZW50LCBjdHgsIHBhcmFtcyk7XG4gICAgICAgICAgICBjdHguc2Vlbi5nZXQocGFyZW50KS5pc1BhcmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gbWV0YWRhdGFcbiAgICBjb25zdCBtZXRhID0gY3R4Lm1ldGFkYXRhUmVnaXN0cnkuZ2V0KHNjaGVtYSk7XG4gICAgaWYgKG1ldGEpXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LnNjaGVtYSwgbWV0YSk7XG4gICAgaWYgKGN0eC5pbyA9PT0gXCJpbnB1dFwiICYmIGlzVHJhbnNmb3JtaW5nKHNjaGVtYSkpIHtcbiAgICAgICAgLy8gZXhhbXBsZXMvZGVmYXVsdHMgb25seSBhcHBseSB0byBvdXRwdXQgdHlwZSBvZiBwaXBlXG4gICAgICAgIGRlbGV0ZSByZXN1bHQuc2NoZW1hLmV4YW1wbGVzO1xuICAgICAgICBkZWxldGUgcmVzdWx0LnNjaGVtYS5kZWZhdWx0O1xuICAgIH1cbiAgICAvLyBzZXQgcHJlZmF1bHQgYXMgZGVmYXVsdFxuICAgIGlmIChjdHguaW8gPT09IFwiaW5wdXRcIiAmJiByZXN1bHQuc2NoZW1hLl9wcmVmYXVsdClcbiAgICAgICAgKF9hID0gcmVzdWx0LnNjaGVtYSkuZGVmYXVsdCA/PyAoX2EuZGVmYXVsdCA9IHJlc3VsdC5zY2hlbWEuX3ByZWZhdWx0KTtcbiAgICBkZWxldGUgcmVzdWx0LnNjaGVtYS5fcHJlZmF1bHQ7XG4gICAgLy8gcHVsbGluZyBmcmVzaCBmcm9tIGN0eC5zZWVuIGluIGNhc2UgaXQgd2FzIG92ZXJ3cml0dGVuXG4gICAgY29uc3QgX3Jlc3VsdCA9IGN0eC5zZWVuLmdldChzY2hlbWEpO1xuICAgIHJldHVybiBfcmVzdWx0LnNjaGVtYTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RGVmcyhjdHgsIHNjaGVtYVxuLy8gcGFyYW1zOiBFbWl0UGFyYW1zXG4pIHtcbiAgICAvLyBpdGVyYXRlIG92ZXIgc2VlbiBtYXA7XG4gICAgY29uc3Qgcm9vdCA9IGN0eC5zZWVuLmdldChzY2hlbWEpO1xuICAgIGlmICghcm9vdClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC5cIik7XG4gICAgLy8gVHJhY2sgaWRzIHRvIGRldGVjdCBkdXBsaWNhdGVzIGFjcm9zcyBkaWZmZXJlbnQgc2NoZW1hc1xuICAgIGNvbnN0IGlkVG9TY2hlbWEgPSBuZXcgTWFwKCk7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBjdHguc2Vlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgY29uc3QgaWQgPSBjdHgubWV0YWRhdGFSZWdpc3RyeS5nZXQoZW50cnlbMF0pPy5pZDtcbiAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IGlkVG9TY2hlbWEuZ2V0KGlkKTtcbiAgICAgICAgICAgIGlmIChleGlzdGluZyAmJiBleGlzdGluZyAhPT0gZW50cnlbMF0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBzY2hlbWEgaWQgXCIke2lkfVwiIGRldGVjdGVkIGR1cmluZyBKU09OIFNjaGVtYSBjb252ZXJzaW9uLiBUd28gZGlmZmVyZW50IHNjaGVtYXMgY2Fubm90IHNoYXJlIHRoZSBzYW1lIGlkIHdoZW4gY29udmVydGVkIHRvZ2V0aGVyLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWRUb1NjaGVtYS5zZXQoaWQsIGVudHJ5WzBdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyByZXR1cm5zIGEgcmVmIHRvIHRoZSBzY2hlbWFcbiAgICAvLyBkZWZJZCB3aWxsIGJlIGVtcHR5IGlmIHRoZSByZWYgcG9pbnRzIHRvIGFuIGV4dGVybmFsIHNjaGVtYSAob3IgIylcbiAgICBjb25zdCBtYWtlVVJJID0gKGVudHJ5KSA9PiB7XG4gICAgICAgIC8vIGNvbXBhcmluZyB0aGUgc2VlbiBvYmplY3RzIGJlY2F1c2Ugc29tZXRpbWVzXG4gICAgICAgIC8vIG11bHRpcGxlIHNjaGVtYXMgbWFwIHRvIHRoZSBzYW1lIHNlZW4gb2JqZWN0LlxuICAgICAgICAvLyBlLmcuIGxhenlcbiAgICAgICAgLy8gZXh0ZXJuYWwgaXMgY29uZmlndXJlZFxuICAgICAgICBjb25zdCBkZWZzU2VnbWVudCA9IGN0eC50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiID8gXCIkZGVmc1wiIDogXCJkZWZpbml0aW9uc1wiO1xuICAgICAgICBpZiAoY3R4LmV4dGVybmFsKSB7XG4gICAgICAgICAgICBjb25zdCBleHRlcm5hbElkID0gY3R4LmV4dGVybmFsLnJlZ2lzdHJ5LmdldChlbnRyeVswXSk/LmlkOyAvLyA/PyBcIl9fc2hhcmVkXCI7Ly8gYF9fc2NoZW1hJHtjdHguY291bnRlcisrfWA7XG4gICAgICAgICAgICAvLyBjaGVjayBpZiBzY2hlbWEgaXMgaW4gdGhlIGV4dGVybmFsIHJlZ2lzdHJ5XG4gICAgICAgICAgICBjb25zdCB1cmlHZW5lcmF0b3IgPSBjdHguZXh0ZXJuYWwudXJpID8/ICgoaWQpID0+IGlkKTtcbiAgICAgICAgICAgIGlmIChleHRlcm5hbElkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVmOiB1cmlHZW5lcmF0b3IoZXh0ZXJuYWxJZCkgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgYWRkIHRvIF9fc2hhcmVkXG4gICAgICAgICAgICBjb25zdCBpZCA9IGVudHJ5WzFdLmRlZklkID8/IGVudHJ5WzFdLnNjaGVtYS5pZCA/PyBgc2NoZW1hJHtjdHguY291bnRlcisrfWA7XG4gICAgICAgICAgICBlbnRyeVsxXS5kZWZJZCA9IGlkOyAvLyBzZXQgZGVmSWQgc28gaXQgd2lsbCBiZSByZXVzZWQgaWYgbmVlZGVkXG4gICAgICAgICAgICByZXR1cm4geyBkZWZJZDogaWQsIHJlZjogYCR7dXJpR2VuZXJhdG9yKFwiX19zaGFyZWRcIil9Iy8ke2RlZnNTZWdtZW50fS8ke2lkfWAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW50cnlbMV0gPT09IHJvb3QpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZjogXCIjXCIgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzZWxmLWNvbnRhaW5lZCBzY2hlbWFcbiAgICAgICAgY29uc3QgdXJpUHJlZml4ID0gYCNgO1xuICAgICAgICBjb25zdCBkZWZVcmlQcmVmaXggPSBgJHt1cmlQcmVmaXh9LyR7ZGVmc1NlZ21lbnR9L2A7XG4gICAgICAgIGNvbnN0IGRlZklkID0gZW50cnlbMV0uc2NoZW1hLmlkID8/IGBfX3NjaGVtYSR7Y3R4LmNvdW50ZXIrK31gO1xuICAgICAgICByZXR1cm4geyBkZWZJZCwgcmVmOiBkZWZVcmlQcmVmaXggKyBkZWZJZCB9O1xuICAgIH07XG4gICAgLy8gc3RvcmVkIGNhY2hlZCB2ZXJzaW9uIGluIGBkZWZgIHByb3BlcnR5XG4gICAgLy8gcmVtb3ZlIGFsbCBwcm9wZXJ0aWVzLCBzZXQgJHJlZlxuICAgIGNvbnN0IGV4dHJhY3RUb0RlZiA9IChlbnRyeSkgPT4ge1xuICAgICAgICAvLyBpZiB0aGUgc2NoZW1hIGlzIGFscmVhZHkgYSByZWZlcmVuY2UsIGRvIG5vdCBleHRyYWN0IGl0XG4gICAgICAgIGlmIChlbnRyeVsxXS5zY2hlbWEuJHJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlZW4gPSBlbnRyeVsxXTtcbiAgICAgICAgY29uc3QgeyByZWYsIGRlZklkIH0gPSBtYWtlVVJJKGVudHJ5KTtcbiAgICAgICAgc2Vlbi5kZWYgPSB7IC4uLnNlZW4uc2NoZW1hIH07XG4gICAgICAgIC8vIGRlZklkIHdvbid0IGJlIHNldCBpZiB0aGUgc2NoZW1hIGlzIGEgcmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIHNjaGVtYVxuICAgICAgICAvLyBvciBpZiB0aGUgc2NoZW1hIGlzIHRoZSByb290IHNjaGVtYVxuICAgICAgICBpZiAoZGVmSWQpXG4gICAgICAgICAgICBzZWVuLmRlZklkID0gZGVmSWQ7XG4gICAgICAgIC8vIHdpcGUgYXdheSBhbGwgcHJvcGVydGllcyBleGNlcHQgJHJlZlxuICAgICAgICBjb25zdCBzY2hlbWEgPSBzZWVuLnNjaGVtYTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hKSB7XG4gICAgICAgICAgICBkZWxldGUgc2NoZW1hW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgc2NoZW1hLiRyZWYgPSByZWY7XG4gICAgfTtcbiAgICAvLyB0aHJvdyBvbiBjeWNsZXNcbiAgICAvLyBicmVhayBjeWNsZXNcbiAgICBpZiAoY3R4LmN5Y2xlcyA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgY3R4LnNlZW4uZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gZW50cnlbMV07XG4gICAgICAgICAgICBpZiAoc2Vlbi5jeWNsZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkN5Y2xlIGRldGVjdGVkOiBcIiArXG4gICAgICAgICAgICAgICAgICAgIGAjLyR7c2Vlbi5jeWNsZT8uam9pbihcIi9cIil9Lzxyb290PmAgK1xuICAgICAgICAgICAgICAgICAgICAnXFxuXFxuU2V0IHRoZSBgY3ljbGVzYCBwYXJhbWV0ZXIgdG8gYFwicmVmXCJgIHRvIHJlc29sdmUgY3ljbGljYWwgc2NoZW1hcyB3aXRoIGRlZnMuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gZXh0cmFjdCBzY2hlbWFzIGludG8gJGRlZnNcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGN0eC5zZWVuLmVudHJpZXMoKSkge1xuICAgICAgICBjb25zdCBzZWVuID0gZW50cnlbMV07XG4gICAgICAgIC8vIGNvbnZlcnQgcm9vdCBzY2hlbWEgdG8gIyAkcmVmXG4gICAgICAgIGlmIChzY2hlbWEgPT09IGVudHJ5WzBdKSB7XG4gICAgICAgICAgICBleHRyYWN0VG9EZWYoZW50cnkpOyAvLyB0aGlzIGhhcyBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGUgcm9vdCBzY2hlbWFcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGV4dHJhY3Qgc2NoZW1hcyB0aGF0IGFyZSBpbiB0aGUgZXh0ZXJuYWwgcmVnaXN0cnlcbiAgICAgICAgaWYgKGN0eC5leHRlcm5hbCkge1xuICAgICAgICAgICAgY29uc3QgZXh0ID0gY3R4LmV4dGVybmFsLnJlZ2lzdHJ5LmdldChlbnRyeVswXSk/LmlkO1xuICAgICAgICAgICAgaWYgKHNjaGVtYSAhPT0gZW50cnlbMF0gJiYgZXh0KSB7XG4gICAgICAgICAgICAgICAgZXh0cmFjdFRvRGVmKGVudHJ5KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBleHRyYWN0IHNjaGVtYXMgd2l0aCBgaWRgIG1ldGFcbiAgICAgICAgY29uc3QgaWQgPSBjdHgubWV0YWRhdGFSZWdpc3RyeS5nZXQoZW50cnlbMF0pPy5pZDtcbiAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBleHRyYWN0VG9EZWYoZW50cnkpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gYnJlYWsgY3ljbGVzXG4gICAgICAgIGlmIChzZWVuLmN5Y2xlKSB7XG4gICAgICAgICAgICAvLyBhbnlcbiAgICAgICAgICAgIGV4dHJhY3RUb0RlZihlbnRyeSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBleHRyYWN0IHJldXNlZCBzY2hlbWFzXG4gICAgICAgIGlmIChzZWVuLmNvdW50ID4gMSkge1xuICAgICAgICAgICAgaWYgKGN0eC5yZXVzZWQgPT09IFwicmVmXCIpIHtcbiAgICAgICAgICAgICAgICBleHRyYWN0VG9EZWYoZW50cnkpO1xuICAgICAgICAgICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50OlxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbmFsaXplKGN0eCwgc2NoZW1hKSB7XG4gICAgY29uc3Qgcm9vdCA9IGN0eC5zZWVuLmdldChzY2hlbWEpO1xuICAgIGlmICghcm9vdClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC5cIik7XG4gICAgLy8gZmxhdHRlbiByZWZzIC0gaW5oZXJpdCBwcm9wZXJ0aWVzIGZyb20gcGFyZW50IHNjaGVtYXNcbiAgICBjb25zdCBmbGF0dGVuUmVmID0gKHpvZFNjaGVtYSkgPT4ge1xuICAgICAgICBjb25zdCBzZWVuID0gY3R4LnNlZW4uZ2V0KHpvZFNjaGVtYSk7XG4gICAgICAgIC8vIGFscmVhZHkgcHJvY2Vzc2VkXG4gICAgICAgIGlmIChzZWVuLnJlZiA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgc2NoZW1hID0gc2Vlbi5kZWYgPz8gc2Vlbi5zY2hlbWE7XG4gICAgICAgIGNvbnN0IF9jYWNoZWQgPSB7IC4uLnNjaGVtYSB9O1xuICAgICAgICBjb25zdCByZWYgPSBzZWVuLnJlZjtcbiAgICAgICAgc2Vlbi5yZWYgPSBudWxsOyAvLyBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvblxuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICBmbGF0dGVuUmVmKHJlZik7XG4gICAgICAgICAgICBjb25zdCByZWZTZWVuID0gY3R4LnNlZW4uZ2V0KHJlZik7XG4gICAgICAgICAgICBjb25zdCByZWZTY2hlbWEgPSByZWZTZWVuLnNjaGVtYTtcbiAgICAgICAgICAgIC8vIG1lcmdlIHJlZmVyZW5jZWQgc2NoZW1hIGludG8gY3VycmVudFxuICAgICAgICAgICAgaWYgKHJlZlNjaGVtYS4kcmVmICYmIChjdHgudGFyZ2V0ID09PSBcImRyYWZ0LTA3XCIgfHwgY3R4LnRhcmdldCA9PT0gXCJkcmFmdC0wNFwiIHx8IGN0eC50YXJnZXQgPT09IFwib3BlbmFwaS0zLjBcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBvbGRlciBkcmFmdHMgY2FuJ3QgY29tYmluZSAkcmVmIHdpdGggb3RoZXIgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIHNjaGVtYS5hbGxPZiA9IHNjaGVtYS5hbGxPZiA/PyBbXTtcbiAgICAgICAgICAgICAgICBzY2hlbWEuYWxsT2YucHVzaChyZWZTY2hlbWEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihzY2hlbWEsIHJlZlNjaGVtYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByZXN0b3JlIGNoaWxkJ3Mgb3duIHByb3BlcnRpZXMgKGNoaWxkIHdpbnMpXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHNjaGVtYSwgX2NhY2hlZCk7XG4gICAgICAgICAgICBjb25zdCBpc1BhcmVudFJlZiA9IHpvZFNjaGVtYS5fem9kLnBhcmVudCA9PT0gcmVmO1xuICAgICAgICAgICAgLy8gRm9yIHBhcmVudCBjaGFpbiwgY2hpbGQgaXMgYSByZWZpbmVtZW50IC0gcmVtb3ZlIHBhcmVudC1vbmx5IHByb3BlcnRpZXNcbiAgICAgICAgICAgIGlmIChpc1BhcmVudFJlZikge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBcIiRyZWZcIiB8fCBrZXkgPT09IFwiYWxsT2ZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShrZXkgaW4gX2NhY2hlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzY2hlbWFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdoZW4gcmVmIHdhcyBleHRyYWN0ZWQgdG8gJGRlZnMsIHJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgbWF0Y2ggdGhlIGRlZmluaXRpb25cbiAgICAgICAgICAgIGlmIChyZWZTY2hlbWEuJHJlZiAmJiByZWZTZWVuLmRlZikge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBcIiRyZWZcIiB8fCBrZXkgPT09IFwiYWxsT2ZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHJlZlNlZW4uZGVmICYmIEpTT04uc3RyaW5naWZ5KHNjaGVtYVtrZXldKSA9PT0gSlNPTi5zdHJpbmdpZnkocmVmU2Vlbi5kZWZba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzY2hlbWFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBwYXJlbnQgd2FzIGV4dHJhY3RlZCAoaGFzICRyZWYpLCBwcm9wYWdhdGUgJHJlZiB0byB0aGlzIHNjaGVtYVxuICAgICAgICAvLyBUaGlzIGhhbmRsZXMgY2FzZXMgbGlrZTogcmVhZG9ubHkoKS5tZXRhKHtpZH0pLmRlc2NyaWJlKClcbiAgICAgICAgLy8gd2hlcmUgcHJvY2Vzc29yIHNldHMgcmVmIHRvIGlubmVyVHlwZSBidXQgcGFyZW50IHNob3VsZCBiZSByZWZlcmVuY2VkXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHpvZFNjaGVtYS5fem9kLnBhcmVudDtcbiAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQgIT09IHJlZikge1xuICAgICAgICAgICAgLy8gRW5zdXJlIHBhcmVudCBpcyBwcm9jZXNzZWQgZmlyc3Qgc28gaXRzIGRlZiBoYXMgaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAgICAgICAgICAgIGZsYXR0ZW5SZWYocGFyZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFNlZW4gPSBjdHguc2Vlbi5nZXQocGFyZW50KTtcbiAgICAgICAgICAgIGlmIChwYXJlbnRTZWVuPy5zY2hlbWEuJHJlZikge1xuICAgICAgICAgICAgICAgIHNjaGVtYS4kcmVmID0gcGFyZW50U2Vlbi5zY2hlbWEuJHJlZjtcbiAgICAgICAgICAgICAgICAvLyBEZS1kdXBsaWNhdGUgd2l0aCBwYXJlbnQncyBkZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudFNlZW4uZGVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gXCIkcmVmXCIgfHwga2V5ID09PSBcImFsbE9mXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHBhcmVudFNlZW4uZGVmICYmIEpTT04uc3RyaW5naWZ5KHNjaGVtYVtrZXldKSA9PT0gSlNPTi5zdHJpbmdpZnkocGFyZW50U2Vlbi5kZWZba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2NoZW1hW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXhlY3V0ZSBvdmVycmlkZXNcbiAgICAgICAgY3R4Lm92ZXJyaWRlKHtcbiAgICAgICAgICAgIHpvZFNjaGVtYTogem9kU2NoZW1hLFxuICAgICAgICAgICAganNvblNjaGVtYTogc2NoZW1hLFxuICAgICAgICAgICAgcGF0aDogc2Vlbi5wYXRoID8/IFtdLFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgWy4uLmN0eC5zZWVuLmVudHJpZXMoKV0ucmV2ZXJzZSgpKSB7XG4gICAgICAgIGZsYXR0ZW5SZWYoZW50cnlbMF0pO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBpZiAoY3R4LnRhcmdldCA9PT0gXCJkcmFmdC0yMDIwLTEyXCIpIHtcbiAgICAgICAgcmVzdWx0LiRzY2hlbWEgPSBcImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hXCI7XG4gICAgfVxuICAgIGVsc2UgaWYgKGN0eC50YXJnZXQgPT09IFwiZHJhZnQtMDdcIikge1xuICAgICAgICByZXN1bHQuJHNjaGVtYSA9IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjXCI7XG4gICAgfVxuICAgIGVsc2UgaWYgKGN0eC50YXJnZXQgPT09IFwiZHJhZnQtMDRcIikge1xuICAgICAgICByZXN1bHQuJHNjaGVtYSA9IFwiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjXCI7XG4gICAgfVxuICAgIGVsc2UgaWYgKGN0eC50YXJnZXQgPT09IFwib3BlbmFwaS0zLjBcIikge1xuICAgICAgICAvLyBPcGVuQVBJIDMuMCBzY2hlbWEgb2JqZWN0cyBzaG91bGQgbm90IGluY2x1ZGUgYSAkc2NoZW1hIHByb3BlcnR5XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBBcmJpdHJhcnkgc3RyaW5nIHZhbHVlcyBhcmUgYWxsb3dlZCBidXQgd29uJ3QgaGF2ZSBhICRzY2hlbWEgcHJvcGVydHkgc2V0XG4gICAgfVxuICAgIGlmIChjdHguZXh0ZXJuYWw/LnVyaSkge1xuICAgICAgICBjb25zdCBpZCA9IGN0eC5leHRlcm5hbC5yZWdpc3RyeS5nZXQoc2NoZW1hKT8uaWQ7XG4gICAgICAgIGlmICghaWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTY2hlbWEgaXMgbWlzc2luZyBhbiBgaWRgIHByb3BlcnR5XCIpO1xuICAgICAgICByZXN1bHQuJGlkID0gY3R4LmV4dGVybmFsLnVyaShpZCk7XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LCByb290LmRlZiA/PyByb290LnNjaGVtYSk7XG4gICAgLy8gYnVpbGQgZGVmcyBvYmplY3RcbiAgICBjb25zdCBkZWZzID0gY3R4LmV4dGVybmFsPy5kZWZzID8/IHt9O1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgY3R4LnNlZW4uZW50cmllcygpKSB7XG4gICAgICAgIGNvbnN0IHNlZW4gPSBlbnRyeVsxXTtcbiAgICAgICAgaWYgKHNlZW4uZGVmICYmIHNlZW4uZGVmSWQpIHtcbiAgICAgICAgICAgIGRlZnNbc2Vlbi5kZWZJZF0gPSBzZWVuLmRlZjtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBzZXQgZGVmaW5pdGlvbnMgaW4gcmVzdWx0XG4gICAgaWYgKGN0eC5leHRlcm5hbCkge1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRlZnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChjdHgudGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIikge1xuICAgICAgICAgICAgICAgIHJlc3VsdC4kZGVmcyA9IGRlZnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuZGVmaW5pdGlvbnMgPSBkZWZzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHRoaXMgXCJmaW5hbGl6ZXNcIiB0aGlzIHNjaGVtYSBhbmQgZW5zdXJlcyBhbGwgY3ljbGVzIGFyZSByZW1vdmVkXG4gICAgICAgIC8vIGVhY2ggY2FsbCB0byBmaW5hbGl6ZSgpIGlzIGZ1bmN0aW9uYWxseSBpbmRlcGVuZGVudFxuICAgICAgICAvLyB0aG91Z2ggdGhlIHNlZW4gbWFwIGlzIHNoYXJlZFxuICAgICAgICBjb25zdCBmaW5hbGl6ZWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmluYWxpemVkLCBcIn5zdGFuZGFyZFwiLCB7XG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIC4uLnNjaGVtYVtcIn5zdGFuZGFyZFwiXSxcbiAgICAgICAgICAgICAgICBqc29uU2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0OiBjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Qoc2NoZW1hLCBcImlucHV0XCIsIGN0eC5wcm9jZXNzb3JzKSxcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0OiBjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Qoc2NoZW1hLCBcIm91dHB1dFwiLCBjdHgucHJvY2Vzc29ycyksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmaW5hbGl6ZWQ7XG4gICAgfVxuICAgIGNhdGNoIChfZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIGNvbnZlcnRpbmcgc2NoZW1hIHRvIEpTT04uXCIpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGlzVHJhbnNmb3JtaW5nKF9zY2hlbWEsIF9jdHgpIHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8/IHsgc2VlbjogbmV3IFNldCgpIH07XG4gICAgaWYgKGN0eC5zZWVuLmhhcyhfc2NoZW1hKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGN0eC5zZWVuLmFkZChfc2NoZW1hKTtcbiAgICBjb25zdCBkZWYgPSBfc2NoZW1hLl96b2QuZGVmO1xuICAgIGlmIChkZWYudHlwZSA9PT0gXCJ0cmFuc2Zvcm1cIilcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKGRlZi50eXBlID09PSBcImFycmF5XCIpXG4gICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuZWxlbWVudCwgY3R4KTtcbiAgICBpZiAoZGVmLnR5cGUgPT09IFwic2V0XCIpXG4gICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYudmFsdWVUeXBlLCBjdHgpO1xuICAgIGlmIChkZWYudHlwZSA9PT0gXCJsYXp5XCIpXG4gICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuZ2V0dGVyKCksIGN0eCk7XG4gICAgaWYgKGRlZi50eXBlID09PSBcInByb21pc2VcIiB8fFxuICAgICAgICBkZWYudHlwZSA9PT0gXCJvcHRpb25hbFwiIHx8XG4gICAgICAgIGRlZi50eXBlID09PSBcIm5vbm9wdGlvbmFsXCIgfHxcbiAgICAgICAgZGVmLnR5cGUgPT09IFwibnVsbGFibGVcIiB8fFxuICAgICAgICBkZWYudHlwZSA9PT0gXCJyZWFkb25seVwiIHx8XG4gICAgICAgIGRlZi50eXBlID09PSBcImRlZmF1bHRcIiB8fFxuICAgICAgICBkZWYudHlwZSA9PT0gXCJwcmVmYXVsdFwiKSB7XG4gICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuaW5uZXJUeXBlLCBjdHgpO1xuICAgIH1cbiAgICBpZiAoZGVmLnR5cGUgPT09IFwiaW50ZXJzZWN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi5sZWZ0LCBjdHgpIHx8IGlzVHJhbnNmb3JtaW5nKGRlZi5yaWdodCwgY3R4KTtcbiAgICB9XG4gICAgaWYgKGRlZi50eXBlID09PSBcInJlY29yZFwiIHx8IGRlZi50eXBlID09PSBcIm1hcFwiKSB7XG4gICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYua2V5VHlwZSwgY3R4KSB8fCBpc1RyYW5zZm9ybWluZyhkZWYudmFsdWVUeXBlLCBjdHgpO1xuICAgIH1cbiAgICBpZiAoZGVmLnR5cGUgPT09IFwicGlwZVwiKSB7XG4gICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuaW4sIGN0eCkgfHwgaXNUcmFuc2Zvcm1pbmcoZGVmLm91dCwgY3R4KTtcbiAgICB9XG4gICAgaWYgKGRlZi50eXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRlZi5zaGFwZSkge1xuICAgICAgICAgICAgaWYgKGlzVHJhbnNmb3JtaW5nKGRlZi5zaGFwZVtrZXldLCBjdHgpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGRlZi50eXBlID09PSBcInVuaW9uXCIpIHtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChpc1RyYW5zZm9ybWluZyhvcHRpb24sIGN0eCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZGVmLnR5cGUgPT09IFwidHVwbGVcIikge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGVmLml0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1pbmcoaXRlbSwgY3R4KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmLnJlc3QgJiYgaXNUcmFuc2Zvcm1pbmcoZGVmLnJlc3QsIGN0eCkpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vKipcbiAqIENyZWF0ZXMgYSB0b0pTT05TY2hlbWEgbWV0aG9kIGZvciBhIHNjaGVtYSBpbnN0YW5jZS5cbiAqIFRoaXMgZW5jYXBzdWxhdGVzIHRoZSBsb2dpYyBvZiBpbml0aWFsaXppbmcgY29udGV4dCwgcHJvY2Vzc2luZywgZXh0cmFjdGluZyBkZWZzLCBhbmQgZmluYWxpemluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVRvSlNPTlNjaGVtYU1ldGhvZCA9IChzY2hlbWEsIHByb2Nlc3NvcnMgPSB7fSkgPT4gKHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGN0eCA9IGluaXRpYWxpemVDb250ZXh0KHsgLi4ucGFyYW1zLCBwcm9jZXNzb3JzIH0pO1xuICAgIHByb2Nlc3Moc2NoZW1hLCBjdHgpO1xuICAgIGV4dHJhY3REZWZzKGN0eCwgc2NoZW1hKTtcbiAgICByZXR1cm4gZmluYWxpemUoY3R4LCBzY2hlbWEpO1xufTtcbmV4cG9ydCBjb25zdCBjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2QgPSAoc2NoZW1hLCBpbywgcHJvY2Vzc29ycyA9IHt9KSA9PiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgeyBsaWJyYXJ5T3B0aW9ucywgdGFyZ2V0IH0gPSBwYXJhbXMgPz8ge307XG4gICAgY29uc3QgY3R4ID0gaW5pdGlhbGl6ZUNvbnRleHQoeyAuLi4obGlicmFyeU9wdGlvbnMgPz8ge30pLCB0YXJnZXQsIGlvLCBwcm9jZXNzb3JzIH0pO1xuICAgIHByb2Nlc3Moc2NoZW1hLCBjdHgpO1xuICAgIGV4dHJhY3REZWZzKGN0eCwgc2NoZW1hKTtcbiAgICByZXR1cm4gZmluYWxpemUoY3R4LCBzY2hlbWEpO1xufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/to-json-schema.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/util.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/zod/v4/core/util.js ***!
|
||
\******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BIGINT_FORMAT_RANGES: () => (/* binding */ BIGINT_FORMAT_RANGES),\n/* harmony export */ Class: () => (/* binding */ Class),\n/* harmony export */ NUMBER_FORMAT_RANGES: () => (/* binding */ NUMBER_FORMAT_RANGES),\n/* harmony export */ aborted: () => (/* binding */ aborted),\n/* harmony export */ allowsEval: () => (/* binding */ allowsEval),\n/* harmony export */ assert: () => (/* binding */ assert),\n/* harmony export */ assertEqual: () => (/* binding */ assertEqual),\n/* harmony export */ assertIs: () => (/* binding */ assertIs),\n/* harmony export */ assertNever: () => (/* binding */ assertNever),\n/* harmony export */ assertNotEqual: () => (/* binding */ assertNotEqual),\n/* harmony export */ assignProp: () => (/* binding */ assignProp),\n/* harmony export */ base64ToUint8Array: () => (/* binding */ base64ToUint8Array),\n/* harmony export */ base64urlToUint8Array: () => (/* binding */ base64urlToUint8Array),\n/* harmony export */ cached: () => (/* binding */ cached),\n/* harmony export */ captureStackTrace: () => (/* binding */ captureStackTrace),\n/* harmony export */ cleanEnum: () => (/* binding */ cleanEnum),\n/* harmony export */ cleanRegex: () => (/* binding */ cleanRegex),\n/* harmony export */ clone: () => (/* binding */ clone),\n/* harmony export */ cloneDef: () => (/* binding */ cloneDef),\n/* harmony export */ createTransparentProxy: () => (/* binding */ createTransparentProxy),\n/* harmony export */ defineLazy: () => (/* binding */ defineLazy),\n/* harmony export */ esc: () => (/* binding */ esc),\n/* harmony export */ escapeRegex: () => (/* binding */ escapeRegex),\n/* harmony export */ extend: () => (/* binding */ extend),\n/* harmony export */ finalizeIssue: () => (/* binding */ finalizeIssue),\n/* harmony export */ floatSafeRemainder: () => (/* binding */ floatSafeRemainder),\n/* harmony export */ getElementAtPath: () => (/* binding */ getElementAtPath),\n/* harmony export */ getEnumValues: () => (/* binding */ getEnumValues),\n/* harmony export */ getLengthableOrigin: () => (/* binding */ getLengthableOrigin),\n/* harmony export */ getParsedType: () => (/* binding */ getParsedType),\n/* harmony export */ getSizableOrigin: () => (/* binding */ getSizableOrigin),\n/* harmony export */ hexToUint8Array: () => (/* binding */ hexToUint8Array),\n/* harmony export */ isObject: () => (/* binding */ isObject),\n/* harmony export */ isPlainObject: () => (/* binding */ isPlainObject),\n/* harmony export */ issue: () => (/* binding */ issue),\n/* harmony export */ joinValues: () => (/* binding */ joinValues),\n/* harmony export */ jsonStringifyReplacer: () => (/* binding */ jsonStringifyReplacer),\n/* harmony export */ merge: () => (/* binding */ merge),\n/* harmony export */ mergeDefs: () => (/* binding */ mergeDefs),\n/* harmony export */ normalizeParams: () => (/* binding */ normalizeParams),\n/* harmony export */ nullish: () => (/* binding */ nullish),\n/* harmony export */ numKeys: () => (/* binding */ numKeys),\n/* harmony export */ objectClone: () => (/* binding */ objectClone),\n/* harmony export */ omit: () => (/* binding */ omit),\n/* harmony export */ optionalKeys: () => (/* binding */ optionalKeys),\n/* harmony export */ parsedType: () => (/* binding */ parsedType),\n/* harmony export */ partial: () => (/* binding */ partial),\n/* harmony export */ pick: () => (/* binding */ pick),\n/* harmony export */ prefixIssues: () => (/* binding */ prefixIssues),\n/* harmony export */ primitiveTypes: () => (/* binding */ primitiveTypes),\n/* harmony export */ promiseAllObject: () => (/* binding */ promiseAllObject),\n/* harmony export */ propertyKeyTypes: () => (/* binding */ propertyKeyTypes),\n/* harmony export */ randomString: () => (/* binding */ randomString),\n/* harmony export */ required: () => (/* binding */ required),\n/* harmony export */ safeExtend: () => (/* binding */ safeExtend),\n/* harmony export */ shallowClone: () => (/* binding */ shallowClone),\n/* harmony export */ slugify: () => (/* binding */ slugify),\n/* harmony export */ stringifyPrimitive: () => (/* binding */ stringifyPrimitive),\n/* harmony export */ uint8ArrayToBase64: () => (/* binding */ uint8ArrayToBase64),\n/* harmony export */ uint8ArrayToBase64url: () => (/* binding */ uint8ArrayToBase64url),\n/* harmony export */ uint8ArrayToHex: () => (/* binding */ uint8ArrayToHex),\n/* harmony export */ unwrapMessage: () => (/* binding */ unwrapMessage)\n/* harmony export */ });\n// functions\nfunction assertEqual(val) {\n return val;\n}\nfunction assertNotEqual(val) {\n return val;\n}\nfunction assertIs(_arg) { }\nfunction assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nfunction assert(_) { }\nfunction getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nfunction joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nfunction jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nfunction cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nfunction nullish(input) {\n return input === null || input === undefined;\n}\nfunction cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nfunction defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nfunction objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nfunction assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nfunction mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nfunction cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nfunction getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nfunction promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nfunction randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nfunction esc(str) {\n return JSON.stringify(str);\n}\nfunction slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nconst captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nfunction isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nconst allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nfunction isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nfunction shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nfunction numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nconst propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nconst primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nfunction escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nfunction clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nfunction normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nfunction createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nfunction stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nfunction optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nconst NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nconst BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nfunction pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nfunction omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nfunction extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nfunction safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nfunction merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nfunction partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nfunction required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nfunction aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nfunction prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nfunction unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nfunction finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nfunction getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nfunction getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nfunction parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nfunction issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nfunction cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nfunction base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nfunction uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nfunction base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nfunction uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nfunction hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nfunction uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nclass Class {\n constructor(..._args) { }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS91dGlsLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNBO0FBQ1A7QUFDQTtBQUNPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELE9BQU87QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlCQUFpQjtBQUN6QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDTztBQUNQO0FBQ0E7QUFDQSxvQkFBb0IsWUFBWTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxxR0FBcUc7QUFDckc7QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ007QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELEVBQUU7QUFDcEQ7QUFDQTtBQUNPO0FBQ0E7QUFDQTtBQUNQLGlDQUFpQztBQUNqQztBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ087QUFDUDtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztB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QUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxvQkFBb0IseUJBQXlCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFCQUFxQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcY29yZVxcdXRpbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmdW5jdGlvbnNcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbCh2YWwpIHtcbiAgICByZXR1cm4gdmFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFsKHZhbCkge1xuICAgIHJldHVybiB2YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXMoX2FyZykgeyB9XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoX3gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHZhbHVlIGluIGV4aGF1c3RpdmUgY2hlY2tcIik7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0KF8pIHsgfVxuZXhwb3J0IGZ1bmN0aW9uIGdldEVudW1WYWx1ZXMoZW50cmllcykge1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZXMgPSBPYmplY3QudmFsdWVzKGVudHJpZXMpLmZpbHRlcigodikgPT4gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIpO1xuICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKGVudHJpZXMpXG4gICAgICAgIC5maWx0ZXIoKFtrLCBfXSkgPT4gbnVtZXJpY1ZhbHVlcy5pbmRleE9mKCtrKSA9PT0gLTEpXG4gICAgICAgIC5tYXAoKFtfLCB2XSkgPT4gdik7XG4gICAgcmV0dXJuIHZhbHVlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBqb2luVmFsdWVzKGFycmF5LCBzZXBhcmF0b3IgPSBcInxcIikge1xuICAgIHJldHVybiBhcnJheS5tYXAoKHZhbCkgPT4gc3RyaW5naWZ5UHJpbWl0aXZlKHZhbCkpLmpvaW4oc2VwYXJhdG9yKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBqc29uU3RyaW5naWZ5UmVwbGFjZXIoXywgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJpZ2ludFwiKVxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnQgZnVuY3Rpb24gY2FjaGVkKGdldHRlcikge1xuICAgIGNvbnN0IHNldCA9IGZhbHNlO1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICAgIGlmICghc2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXR0ZXIoKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJ2YWx1ZVwiLCB7IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhY2hlZCB2YWx1ZSBhbHJlYWR5IHNldFwiKTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG51bGxpc2goaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQgPT09IG51bGwgfHwgaW5wdXQgPT09IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblJlZ2V4KHNvdXJjZSkge1xuICAgIGNvbnN0IHN0YXJ0ID0gc291cmNlLnN0YXJ0c1dpdGgoXCJeXCIpID8gMSA6IDA7XG4gICAgY29uc3QgZW5kID0gc291cmNlLmVuZHNXaXRoKFwiJFwiKSA/IHNvdXJjZS5sZW5ndGggLSAxIDogc291cmNlLmxlbmd0aDtcbiAgICByZXR1cm4gc291cmNlLnNsaWNlKHN0YXJ0LCBlbmQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0U2FmZVJlbWFpbmRlcih2YWwsIHN0ZXApIHtcbiAgICBjb25zdCB2YWxEZWNDb3VudCA9ICh2YWwudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0gfHwgXCJcIikubGVuZ3RoO1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLnRvU3RyaW5nKCk7XG4gICAgbGV0IHN0ZXBEZWNDb3VudCA9IChzdGVwU3RyaW5nLnNwbGl0KFwiLlwiKVsxXSB8fCBcIlwiKS5sZW5ndGg7XG4gICAgaWYgKHN0ZXBEZWNDb3VudCA9PT0gMCAmJiAvXFxkP2UtXFxkPy8udGVzdChzdGVwU3RyaW5nKSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHN0ZXBTdHJpbmcubWF0Y2goL1xcZD9lLShcXGQ/KS8pO1xuICAgICAgICBpZiAobWF0Y2g/LlsxXSkge1xuICAgICAgICAgICAgc3RlcERlY0NvdW50ID0gTnVtYmVyLnBhcnNlSW50KG1hdGNoWzFdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkZWNDb3VudCA9IHZhbERlY0NvdW50ID4gc3RlcERlY0NvdW50ID8gdmFsRGVjQ291bnQgOiBzdGVwRGVjQ291bnQ7XG4gICAgY29uc3QgdmFsSW50ID0gTnVtYmVyLnBhcnNlSW50KHZhbC50b0ZpeGVkKGRlY0NvdW50KS5yZXBsYWNlKFwiLlwiLCBcIlwiKSk7XG4gICAgY29uc3Qgc3RlcEludCA9IE51bWJlci5wYXJzZUludChzdGVwLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcbiAgICByZXR1cm4gKHZhbEludCAlIHN0ZXBJbnQpIC8gMTAgKiogZGVjQ291bnQ7XG59XG5jb25zdCBFVkFMVUFUSU5HID0gU3ltYm9sKFwiZXZhbHVhdGluZ1wiKTtcbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVMYXp5KG9iamVjdCwga2V5LCBnZXR0ZXIpIHtcbiAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gRVZBTFVBVElORykge1xuICAgICAgICAgICAgICAgIC8vIENpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCwgcmV0dXJuIHVuZGVmaW5lZCB0byBicmVhayB0aGUgY3ljbGVcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IEVWQUxVQVRJTkc7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBnZXR0ZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHYpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gb2JqZWN0W2tleV0gPSB2O1xuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0Q2xvbmUob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaiksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iaikpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnblByb3AodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3AsIHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEZWZzKC4uLmRlZnMpIHtcbiAgICBjb25zdCBtZXJnZWREZXNjcmlwdG9ycyA9IHt9O1xuICAgIGZvciAoY29uc3QgZGVmIG9mIGRlZnMpIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhkZWYpO1xuICAgICAgICBPYmplY3QuYXNzaWduKG1lcmdlZERlc2NyaXB0b3JzLCBkZXNjcmlwdG9ycyk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSwgbWVyZ2VkRGVzY3JpcHRvcnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lRGVmKHNjaGVtYSkge1xuICAgIHJldHVybiBtZXJnZURlZnMoc2NoZW1hLl96b2QuZGVmKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50QXRQYXRoKG9iaiwgcGF0aCkge1xuICAgIGlmICghcGF0aClcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICByZXR1cm4gcGF0aC5yZWR1Y2UoKGFjYywga2V5KSA9PiBhY2M/LltrZXldLCBvYmopO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VBbGxPYmplY3QocHJvbWlzZXNPYmopIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvbWlzZXNPYmopO1xuICAgIGNvbnN0IHByb21pc2VzID0ga2V5cy5tYXAoKGtleSkgPT4gcHJvbWlzZXNPYmpba2V5XSk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkT2JqID0ge307XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcmVzb2x2ZWRPYmpba2V5c1tpXV0gPSByZXN1bHRzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZE9iajtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21TdHJpbmcobGVuZ3RoID0gMTApIHtcbiAgICBjb25zdCBjaGFycyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcbiAgICBsZXQgc3RyID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHN0ciArPSBjaGFyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpXTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlc2Moc3RyKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN0cik7XG59XG5leHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dFxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXlxcd1xccy1dL2csIFwiXCIpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dKy9nLCBcIi1cIilcbiAgICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIik7XG59XG5leHBvcnQgY29uc3QgY2FwdHVyZVN0YWNrVHJhY2UgPSAoXCJjYXB0dXJlU3RhY2tUcmFjZVwiIGluIEVycm9yID8gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgOiAoLi4uX2FyZ3MpID0+IHsgfSk7XG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QoZGF0YSkge1xuICAgIHJldHVybiB0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIiAmJiBkYXRhICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KGRhdGEpO1xufVxuZXhwb3J0IGNvbnN0IGFsbG93c0V2YWwgPSBjYWNoZWQoKCkgPT4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBuYXZpZ2F0b3I/LnVzZXJBZ2VudD8uaW5jbHVkZXMoXCJDbG91ZGZsYXJlXCIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgRiA9IEZ1bmN0aW9uO1xuICAgICAgICBuZXcgRihcIlwiKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIChfKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KG8pIHtcbiAgICBpZiAoaXNPYmplY3QobykgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gbW9kaWZpZWQgY29uc3RydWN0b3JcbiAgICBjb25zdCBjdG9yID0gby5jb25zdHJ1Y3RvcjtcbiAgICBpZiAoY3RvciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAodHlwZW9mIGN0b3IgIT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgLy8gbW9kaWZpZWQgcHJvdG90eXBlXG4gICAgY29uc3QgcHJvdCA9IGN0b3IucHJvdG90eXBlO1xuICAgIGlmIChpc09iamVjdChwcm90KSA9PT0gZmFsc2UpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBjdG9yIGRvZXNuJ3QgaGF2ZSBzdGF0aWMgYGlzUHJvdG90eXBlT2ZgXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm90LCBcImlzUHJvdG90eXBlT2ZcIikgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgZnVuY3Rpb24gc2hhbGxvd0Nsb25lKG8pIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChvKSlcbiAgICAgICAgcmV0dXJuIHsgLi4ubyB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KG8pKVxuICAgICAgICByZXR1cm4gWy4uLm9dO1xuICAgIHJldHVybiBvO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG51bUtleXMoZGF0YSkge1xuICAgIGxldCBrZXlDb3VudCA9IDA7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgIGtleUNvdW50Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGtleUNvdW50O1xufVxuZXhwb3J0IGNvbnN0IGdldFBhcnNlZFR5cGUgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHQgPSB0eXBlb2YgZGF0YTtcbiAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgICAgICAgcmV0dXJuIFwidW5kZWZpbmVkXCI7XG4gICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGEpID8gXCJuYW5cIiA6IFwibnVtYmVyXCI7XG4gICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiZnVuY3Rpb25cIjtcbiAgICAgICAgY2FzZSBcImJpZ2ludFwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiYmlnaW50XCI7XG4gICAgICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgICAgICAgIHJldHVybiBcInN5bWJvbFwiO1xuICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImFycmF5XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLnRoZW4gJiYgdHlwZW9mIGRhdGEudGhlbiA9PT0gXCJmdW5jdGlvblwiICYmIGRhdGEuY2F0Y2ggJiYgdHlwZW9mIGRhdGEuY2F0Y2ggPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBcInByb21pc2VcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgTWFwICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJtYXBcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgU2V0ICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJzZXRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgRGF0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImRhdGVcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlmICh0eXBlb2YgRmlsZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcImZpbGVcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIm9iamVjdFwiO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRhdGEgdHlwZTogJHt0fWApO1xuICAgIH1cbn07XG5leHBvcnQgY29uc3QgcHJvcGVydHlLZXlUeXBlcyA9IG5ldyBTZXQoW1wic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwic3ltYm9sXCJdKTtcbmV4cG9ydCBjb25zdCBwcmltaXRpdmVUeXBlcyA9IG5ldyBTZXQoW1wic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwiYmlnaW50XCIsIFwiYm9vbGVhblwiLCBcInN5bWJvbFwiLCBcInVuZGVmaW5lZFwiXSk7XG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmVnZXgoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIik7XG59XG4vLyB6b2Qtc3BlY2lmaWMgdXRpbHNcbmV4cG9ydCBmdW5jdGlvbiBjbG9uZShpbnN0LCBkZWYsIHBhcmFtcykge1xuICAgIGNvbnN0IGNsID0gbmV3IGluc3QuX3pvZC5jb25zdHIoZGVmID8/IGluc3QuX3pvZC5kZWYpO1xuICAgIGlmICghZGVmIHx8IHBhcmFtcz8ucGFyZW50KVxuICAgICAgICBjbC5fem9kLnBhcmVudCA9IGluc3Q7XG4gICAgcmV0dXJuIGNsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVBhcmFtcyhfcGFyYW1zKSB7XG4gICAgY29uc3QgcGFyYW1zID0gX3BhcmFtcztcbiAgICBpZiAoIXBhcmFtcylcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIGlmICh0eXBlb2YgcGFyYW1zID09PSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4geyBlcnJvcjogKCkgPT4gcGFyYW1zIH07XG4gICAgaWYgKHBhcmFtcz8ubWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChwYXJhbXM/LmVycm9yICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXNcIik7XG4gICAgICAgIHBhcmFtcy5lcnJvciA9IHBhcmFtcy5tZXNzYWdlO1xuICAgIH1cbiAgICBkZWxldGUgcGFyYW1zLm1lc3NhZ2U7XG4gICAgaWYgKHR5cGVvZiBwYXJhbXMuZXJyb3IgPT09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiB7IC4uLnBhcmFtcywgZXJyb3I6ICgpID0+IHBhcmFtcy5lcnJvciB9O1xuICAgIHJldHVybiBwYXJhbXM7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNwYXJlbnRQcm94eShnZXR0ZXIpIHtcbiAgICBsZXQgdGFyZ2V0O1xuICAgIHJldHVybiBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgZ2V0KF8sIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICB0YXJnZXQgPz8gKHRhcmdldCA9IGdldHRlcigpKTtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KF8sIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBoYXMoXywgcHJvcCkge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVsZXRlUHJvcGVydHkoXywgcHJvcCkge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzKF8pIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXywgcHJvcCkge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVmaW5lUHJvcGVydHkoXywgcHJvcCwgZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3AsIGRlc2NyaXB0b3IpO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVByaW1pdGl2ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpICsgXCJuXCI7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIGBcIiR7dmFsdWV9XCJgO1xuICAgIHJldHVybiBgJHt2YWx1ZX1gO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsS2V5cyhzaGFwZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzaGFwZSkuZmlsdGVyKChrKSA9PiB7XG4gICAgICAgIHJldHVybiBzaGFwZVtrXS5fem9kLm9wdGluID09PSBcIm9wdGlvbmFsXCIgJiYgc2hhcGVba10uX3pvZC5vcHRvdXQgPT09IFwib3B0aW9uYWxcIjtcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBOVU1CRVJfRk9STUFUX1JBTkdFUyA9IHtcbiAgICBzYWZlaW50OiBbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXSxcbiAgICBpbnQzMjogWy0yMTQ3NDgzNjQ4LCAyMTQ3NDgzNjQ3XSxcbiAgICB1aW50MzI6IFswLCA0Mjk0OTY3Mjk1XSxcbiAgICBmbG9hdDMyOiBbLTMuNDAyODIzNDY2Mzg1Mjg4NmUzOCwgMy40MDI4MjM0NjYzODUyODg2ZTM4XSxcbiAgICBmbG9hdDY0OiBbLU51bWJlci5NQVhfVkFMVUUsIE51bWJlci5NQVhfVkFMVUVdLFxufTtcbmV4cG9ydCBjb25zdCBCSUdJTlRfRk9STUFUX1JBTkdFUyA9IHtcbiAgICBpbnQ2NDogWy8qIEBfX1BVUkVfXyovIEJpZ0ludChcIi05MjIzMzcyMDM2ODU0Nzc1ODA4XCIpLCAvKiBAX19QVVJFX18qLyBCaWdJbnQoXCI5MjIzMzcyMDM2ODU0Nzc1ODA3XCIpXSxcbiAgICB1aW50NjQ6IFsvKiBAX19QVVJFX18qLyBCaWdJbnQoMCksIC8qIEBfX1BVUkVfXyovIEJpZ0ludChcIjE4NDQ2NzQ0MDczNzA5NTUxNjE1XCIpXSxcbn07XG5leHBvcnQgZnVuY3Rpb24gcGljayhzY2hlbWEsIG1hc2spIHtcbiAgICBjb25zdCBjdXJyRGVmID0gc2NoZW1hLl96b2QuZGVmO1xuICAgIGNvbnN0IGNoZWNrcyA9IGN1cnJEZWYuY2hlY2tzO1xuICAgIGNvbnN0IGhhc0NoZWNrcyA9IGNoZWNrcyAmJiBjaGVja3MubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzQ2hlY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50c1wiKTtcbiAgICB9XG4gICAgY29uc3QgZGVmID0gbWVyZ2VEZWZzKHNjaGVtYS5fem9kLmRlZiwge1xuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTaGFwZSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWFzaykge1xuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiBjdXJyRGVmLnNoYXBlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6IFwiJHtrZXl9XCJgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFtYXNrW2tleV0pXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSBjdXJyRGVmLnNoYXBlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgbmV3U2hhcGUpOyAvLyBzZWxmLWNhY2hpbmdcbiAgICAgICAgICAgIHJldHVybiBuZXdTaGFwZTtcbiAgICAgICAgfSxcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICB9KTtcbiAgICByZXR1cm4gY2xvbmUoc2NoZW1hLCBkZWYpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9taXQoc2NoZW1hLCBtYXNrKSB7XG4gICAgY29uc3QgY3VyckRlZiA9IHNjaGVtYS5fem9kLmRlZjtcbiAgICBjb25zdCBjaGVja3MgPSBjdXJyRGVmLmNoZWNrcztcbiAgICBjb25zdCBoYXNDaGVja3MgPSBjaGVja3MgJiYgY2hlY2tzLmxlbmd0aCA+IDA7XG4gICAgaWYgKGhhc0NoZWNrcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIub21pdCgpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHNcIik7XG4gICAgfVxuICAgIGNvbnN0IGRlZiA9IG1lcmdlRGVmcyhzY2hlbWEuX3pvZC5kZWYsIHtcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgY29uc3QgbmV3U2hhcGUgPSB7IC4uLnNjaGVtYS5fem9kLmRlZi5zaGFwZSB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWFzaykge1xuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiBjdXJyRGVmLnNoYXBlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6IFwiJHtrZXl9XCJgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFtYXNrW2tleV0pXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdTaGFwZVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIG5ld1NoYXBlKTsgLy8gc2VsZi1jYWNoaW5nXG4gICAgICAgICAgICByZXR1cm4gbmV3U2hhcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGNoZWNrczogW10sXG4gICAgfSk7XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwgZGVmKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQoc2NoZW1hLCBzaGFwZSkge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChzaGFwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnB1dCB0byBleHRlbmQ6IGV4cGVjdGVkIGEgcGxhaW4gb2JqZWN0XCIpO1xuICAgIH1cbiAgICBjb25zdCBjaGVja3MgPSBzY2hlbWEuX3pvZC5kZWYuY2hlY2tzO1xuICAgIGNvbnN0IGhhc0NoZWNrcyA9IGNoZWNrcyAmJiBjaGVja3MubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzQ2hlY2tzKSB7XG4gICAgICAgIC8vIE9ubHkgdGhyb3cgaWYgbmV3IHNoYXBlIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc2hhcGVcbiAgICAgICAgLy8gVXNlIGdldE93blByb3BlcnR5RGVzY3JpcHRvciB0byBjaGVjayBrZXkgZXhpc3RlbmNlIHdpdGhvdXQgYWNjZXNzaW5nIHZhbHVlc1xuICAgICAgICBjb25zdCBleGlzdGluZ1NoYXBlID0gc2NoZW1hLl96b2QuZGVmLnNoYXBlO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzaGFwZSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhpc3RpbmdTaGFwZSwga2V5KSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZGVmID0gbWVyZ2VEZWZzKHNjaGVtYS5fem9kLmRlZiwge1xuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICBjb25zdCBfc2hhcGUgPSB7IC4uLnNjaGVtYS5fem9kLmRlZi5zaGFwZSwgLi4uc2hhcGUgfTtcbiAgICAgICAgICAgIGFzc2lnblByb3AodGhpcywgXCJzaGFwZVwiLCBfc2hhcGUpOyAvLyBzZWxmLWNhY2hpbmdcbiAgICAgICAgICAgIHJldHVybiBfc2hhcGU7XG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwgZGVmKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzYWZlRXh0ZW5kKHNjaGVtYSwgc2hhcGUpIHtcbiAgICBpZiAoIWlzUGxhaW5PYmplY3Qoc2hhcGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3RcIik7XG4gICAgfVxuICAgIGNvbnN0IGRlZiA9IG1lcmdlRGVmcyhzY2hlbWEuX3pvZC5kZWYsIHtcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgY29uc3QgX3NoYXBlID0geyAuLi5zY2hlbWEuX3pvZC5kZWYuc2hhcGUsIC4uLnNoYXBlIH07XG4gICAgICAgICAgICBhc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgX3NoYXBlKTsgLy8gc2VsZi1jYWNoaW5nXG4gICAgICAgICAgICByZXR1cm4gX3NoYXBlO1xuICAgICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiBjbG9uZShzY2hlbWEsIGRlZik7XG59XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoYSwgYikge1xuICAgIGNvbnN0IGRlZiA9IG1lcmdlRGVmcyhhLl96b2QuZGVmLCB7XG4gICAgICAgIGdldCBzaGFwZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IF9zaGFwZSA9IHsgLi4uYS5fem9kLmRlZi5zaGFwZSwgLi4uYi5fem9kLmRlZi5zaGFwZSB9O1xuICAgICAgICAgICAgYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIF9zaGFwZSk7IC8vIHNlbGYtY2FjaGluZ1xuICAgICAgICAgICAgcmV0dXJuIF9zaGFwZTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGNhdGNoYWxsKCkge1xuICAgICAgICAgICAgcmV0dXJuIGIuX3pvZC5kZWYuY2F0Y2hhbGw7XG4gICAgICAgIH0sXG4gICAgICAgIGNoZWNrczogW10sIC8vIGRlbGV0ZSBleGlzdGluZyBjaGVja3NcbiAgICB9KTtcbiAgICByZXR1cm4gY2xvbmUoYSwgZGVmKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJ0aWFsKENsYXNzLCBzY2hlbWEsIG1hc2spIHtcbiAgICBjb25zdCBjdXJyRGVmID0gc2NoZW1hLl96b2QuZGVmO1xuICAgIGNvbnN0IGNoZWNrcyA9IGN1cnJEZWYuY2hlY2tzO1xuICAgIGNvbnN0IGhhc0NoZWNrcyA9IGNoZWNrcyAmJiBjaGVja3MubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzQ2hlY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIi5wYXJ0aWFsKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50c1wiKTtcbiAgICB9XG4gICAgY29uc3QgZGVmID0gbWVyZ2VEZWZzKHNjaGVtYS5fem9kLmRlZiwge1xuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICBjb25zdCBvbGRTaGFwZSA9IHNjaGVtYS5fem9kLmRlZi5zaGFwZTtcbiAgICAgICAgICAgIGNvbnN0IHNoYXBlID0geyAuLi5vbGRTaGFwZSB9O1xuICAgICAgICAgICAgaWYgKG1hc2spIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtYXNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiBvbGRTaGFwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogXCIke2tleX1cImApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWFza1trZXldKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChvbGRTaGFwZVtrZXldIS5fem9kLm9wdGluID09PSBcIm9wdGlvbmFsXCIpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBzaGFwZVtrZXldID0gQ2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IENsYXNzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJUeXBlOiBvbGRTaGFwZVtrZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogb2xkU2hhcGVba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvbGRTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiAob2xkU2hhcGVba2V5XSEuX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcGVba2V5XSA9IENsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBDbGFzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyVHlwZTogb2xkU2hhcGVba2V5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG9sZFNoYXBlW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIHNoYXBlKTsgLy8gc2VsZi1jYWNoaW5nXG4gICAgICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGNoZWNrczogW10sXG4gICAgfSk7XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwgZGVmKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChDbGFzcywgc2NoZW1hLCBtYXNrKSB7XG4gICAgY29uc3QgZGVmID0gbWVyZ2VEZWZzKHNjaGVtYS5fem9kLmRlZiwge1xuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICBjb25zdCBvbGRTaGFwZSA9IHNjaGVtYS5fem9kLmRlZi5zaGFwZTtcbiAgICAgICAgICAgIGNvbnN0IHNoYXBlID0geyAuLi5vbGRTaGFwZSB9O1xuICAgICAgICAgICAgaWYgKG1hc2spIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtYXNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiBzaGFwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogXCIke2tleX1cImApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWFza1trZXldKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIG92ZXJ3cml0ZSB3aXRoIG5vbi1vcHRpb25hbFxuICAgICAgICAgICAgICAgICAgICBzaGFwZVtrZXldID0gbmV3IENsYXNzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwibm9ub3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyVHlwZTogb2xkU2hhcGVba2V5XSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2xkU2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcndyaXRlIHdpdGggbm9uLW9wdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgIHNoYXBlW2tleV0gPSBuZXcgQ2xhc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJub25vcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJUeXBlOiBvbGRTaGFwZVtrZXldLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgc2hhcGUpOyAvLyBzZWxmLWNhY2hpbmdcbiAgICAgICAgICAgIHJldHVybiBzaGFwZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gY2xvbmUoc2NoZW1hLCBkZWYpO1xufVxuLy8gaW52YWxpZF90eXBlIHwgdG9vX2JpZyB8IHRvb19zbWFsbCB8IGludmFsaWRfZm9ybWF0IHwgbm90X211bHRpcGxlX29mIHwgdW5yZWNvZ25pemVkX2tleXMgfCBpbnZhbGlkX3VuaW9uIHwgaW52YWxpZF9rZXkgfCBpbnZhbGlkX2VsZW1lbnQgfCBpbnZhbGlkX3ZhbHVlIHwgY3VzdG9tXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRlZCh4LCBzdGFydEluZGV4ID0gMCkge1xuICAgIGlmICh4LmFib3J0ZWQgPT09IHRydWUpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgeC5pc3N1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHguaXNzdWVzW2ldPy5jb250aW51ZSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeElzc3VlcyhwYXRoLCBpc3N1ZXMpIHtcbiAgICByZXR1cm4gaXNzdWVzLm1hcCgoaXNzKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gaXNzKS5wYXRoID8/IChfYS5wYXRoID0gW10pO1xuICAgICAgICBpc3MucGF0aC51bnNoaWZ0KHBhdGgpO1xuICAgICAgICByZXR1cm4gaXNzO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcE1lc3NhZ2UobWVzc2FnZSkge1xuICAgIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiA/IG1lc3NhZ2UgOiBtZXNzYWdlPy5tZXNzYWdlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvbmZpZykge1xuICAgIGNvbnN0IGZ1bGwgPSB7IC4uLmlzcywgcGF0aDogaXNzLnBhdGggPz8gW10gfTtcbiAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBpZiAoIWlzcy5tZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB1bndyYXBNZXNzYWdlKGlzcy5pbnN0Py5fem9kLmRlZj8uZXJyb3I/Lihpc3MpKSA/P1xuICAgICAgICAgICAgdW53cmFwTWVzc2FnZShjdHg/LmVycm9yPy4oaXNzKSkgPz9cbiAgICAgICAgICAgIHVud3JhcE1lc3NhZ2UoY29uZmlnLmN1c3RvbUVycm9yPy4oaXNzKSkgPz9cbiAgICAgICAgICAgIHVud3JhcE1lc3NhZ2UoY29uZmlnLmxvY2FsZUVycm9yPy4oaXNzKSkgPz9cbiAgICAgICAgICAgIFwiSW52YWxpZCBpbnB1dFwiO1xuICAgICAgICBmdWxsLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cbiAgICAvLyBkZWxldGUgKGZ1bGwgYXMgYW55KS5kZWY7XG4gICAgZGVsZXRlIGZ1bGwuaW5zdDtcbiAgICBkZWxldGUgZnVsbC5jb250aW51ZTtcbiAgICBpZiAoIWN0eD8ucmVwb3J0SW5wdXQpIHtcbiAgICAgICAgZGVsZXRlIGZ1bGwuaW5wdXQ7XG4gICAgfVxuICAgIHJldHVybiBmdWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpemFibGVPcmlnaW4oaW5wdXQpIHtcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBTZXQpXG4gICAgICAgIHJldHVybiBcInNldFwiO1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIE1hcClcbiAgICAgICAgcmV0dXJuIFwibWFwXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIEZpbGUpXG4gICAgICAgIHJldHVybiBcImZpbGVcIjtcbiAgICByZXR1cm4gXCJ1bmtub3duXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TGVuZ3RoYWJsZU9yaWdpbihpbnB1dCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSlcbiAgICAgICAgcmV0dXJuIFwiYXJyYXlcIjtcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICByZXR1cm4gXCJ1bmtub3duXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VkVHlwZShkYXRhKSB7XG4gICAgY29uc3QgdCA9IHR5cGVvZiBkYXRhO1xuICAgIHN3aXRjaCAodCkge1xuICAgICAgICBjYXNlIFwibnVtYmVyXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4oZGF0YSkgPyBcIm5hblwiIDogXCJudW1iZXJcIjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgIGlmIChkYXRhID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhcnJheVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb2JqID0gZGF0YTtcbiAgICAgICAgICAgIGlmIChvYmogJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgXCJjb25zdHJ1Y3RvclwiIGluIG9iaiAmJiBvYmouY29uc3RydWN0b3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNzdWUoLi4uYXJncykge1xuICAgIGNvbnN0IFtpc3MsIGlucHV0LCBpbnN0XSA9IGFyZ3M7XG4gICAgaWYgKHR5cGVvZiBpc3MgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGlzcyxcbiAgICAgICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7IC4uLmlzcyB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuRW51bShvYmopIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKVxuICAgICAgICAuZmlsdGVyKChbaywgX10pID0+IHtcbiAgICAgICAgLy8gcmV0dXJuIHRydWUgaWYgTmFOLCBtZWFuaW5nIGl0J3Mgbm90IGEgbnVtYmVyLCB0aHVzIGEgc3RyaW5nIGtleVxuICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludChrLCAxMCkpO1xuICAgIH0pXG4gICAgICAgIC5tYXAoKGVsKSA9PiBlbFsxXSk7XG59XG4vLyBDb2RlYyB1dGlsaXR5IGZ1bmN0aW9uc1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2U2NFRvVWludDhBcnJheShiYXNlNjQpIHtcbiAgICBjb25zdCBiaW5hcnlTdHJpbmcgPSBhdG9iKGJhc2U2NCk7XG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShiaW5hcnlTdHJpbmcubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeVN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICBieXRlc1tpXSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgICByZXR1cm4gYnl0ZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gdWludDhBcnJheVRvQmFzZTY0KGJ5dGVzKSB7XG4gICAgbGV0IGJpbmFyeVN0cmluZyA9IFwiXCI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBiaW5hcnlTdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7XG4gICAgfVxuICAgIHJldHVybiBidG9hKGJpbmFyeVN0cmluZyk7XG59XG5leHBvcnQgZnVuY3Rpb24gYmFzZTY0dXJsVG9VaW50OEFycmF5KGJhc2U2NHVybCkge1xuICAgIGNvbnN0IGJhc2U2NCA9IGJhc2U2NHVybC5yZXBsYWNlKC8tL2csIFwiK1wiKS5yZXBsYWNlKC9fL2csIFwiL1wiKTtcbiAgICBjb25zdCBwYWRkaW5nID0gXCI9XCIucmVwZWF0KCg0IC0gKGJhc2U2NC5sZW5ndGggJSA0KSkgJSA0KTtcbiAgICByZXR1cm4gYmFzZTY0VG9VaW50OEFycmF5KGJhc2U2NCArIHBhZGRpbmcpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVpbnQ4QXJyYXlUb0Jhc2U2NHVybChieXRlcykge1xuICAgIHJldHVybiB1aW50OEFycmF5VG9CYXNlNjQoYnl0ZXMpLnJlcGxhY2UoL1xcKy9nLCBcIi1cIikucmVwbGFjZSgvXFwvL2csIFwiX1wiKS5yZXBsYWNlKC89L2csIFwiXCIpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhleFRvVWludDhBcnJheShoZXgpIHtcbiAgICBjb25zdCBjbGVhbkhleCA9IGhleC5yZXBsYWNlKC9eMHgvLCBcIlwiKTtcbiAgICBpZiAoY2xlYW5IZXgubGVuZ3RoICUgMiAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGhleCBzdHJpbmcgbGVuZ3RoXCIpO1xuICAgIH1cbiAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGNsZWFuSGV4Lmxlbmd0aCAvIDIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2xlYW5IZXgubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgYnl0ZXNbaSAvIDJdID0gTnVtYmVyLnBhcnNlSW50KGNsZWFuSGV4LnNsaWNlKGksIGkgKyAyKSwgMTYpO1xuICAgIH1cbiAgICByZXR1cm4gYnl0ZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gdWludDhBcnJheVRvSGV4KGJ5dGVzKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYnl0ZXMpXG4gICAgICAgIC5tYXAoKGIpID0+IGIudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIFwiMFwiKSlcbiAgICAgICAgLmpvaW4oXCJcIik7XG59XG4vLyBpbnN0YW5jZW9mXG5leHBvcnQgY2xhc3MgQ2xhc3Mge1xuICAgIGNvbnN0cnVjdG9yKC4uLl9hcmdzKSB7IH1cbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/util.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/core/versions.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/zod/v4/core/versions.js ***!
|
||
\**********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\nconst version = {\n major: 4,\n minor: 3,\n patch: 6,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS92ZXJzaW9ucy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcY29yZVxcdmVyc2lvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHZlcnNpb24gPSB7XG4gICAgbWFqb3I6IDQsXG4gICAgbWlub3I6IDMsXG4gICAgcGF0Y2g6IDYsXG59O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/core/versions.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ar.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ar.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"حرف\", verb: \"أن يحوي\" },\n file: { unit: \"بايت\", verb: \"أن يحوي\" },\n array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"مدخل\",\n email: \"بريد إلكتروني\",\n url: \"رابط\",\n emoji: \"إيموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاريخ ووقت بمعيار ISO\",\n date: \"تاريخ بمعيار ISO\",\n time: \"وقت بمعيار ISO\",\n duration: \"مدة بمعيار ISO\",\n ipv4: \"عنوان IPv4\",\n ipv6: \"عنوان IPv6\",\n cidrv4: \"مدى عناوين بصيغة IPv4\",\n cidrv6: \"مدى عناوين بصيغة IPv6\",\n base64: \"نَص بترميز base64-encoded\",\n base64url: \"نَص بترميز base64url-encoded\",\n json_string: \"نَص على هيئة JSON\",\n e164: \"رقم هاتف بمعيار E.164\",\n jwt: \"JWT\",\n template_literal: \"مدخل\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `مدخلات غير مقبولة: يفترض إدخال instanceof ${issue.expected}، ولكن تم إدخال ${received}`;\n }\n return `مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `مدخلات غير مقبولة: يفترض إدخال ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} غير مقبول`;\n }\n case \"not_multiple_of\":\n return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `معرف غير مقبول في ${issue.origin}`;\n case \"invalid_union\":\n return \"مدخل غير مقبول\";\n case \"invalid_element\":\n return `مدخل غير مقبول في ${issue.origin}`;\n default:\n return \"مدخل غير مقبول\";\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9hci5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLDhCQUE4QjtBQUNoRCxnQkFBZ0IsK0JBQStCO0FBQy9DLGlCQUFpQiwrQkFBK0I7QUFDaEQsZUFBZSwrQkFBK0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0Esd0VBQXdFLGVBQWUsa0JBQWtCLFNBQVM7QUFDbEg7QUFDQSx5REFBeUQsU0FBUyxrQkFBa0IsU0FBUztBQUM3RjtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsNkRBQXVCLGtCQUFrQjtBQUN0RywyRUFBMkUscURBQWUsb0JBQW9CO0FBQzlHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkRBQTZELDBCQUEwQixFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0I7QUFDbEosd0RBQXdELDBCQUEwQixFQUFFLEtBQUssRUFBRSx5QkFBeUI7QUFDcEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxjQUFjLFVBQVUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDOUg7QUFDQSxtREFBbUQsY0FBYyxVQUFVLEtBQUssRUFBRSx5QkFBeUI7QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsYUFBYTtBQUMxRTtBQUNBLDhEQUE4RCxjQUFjO0FBQzVFO0FBQ0EsNkRBQTZELGdCQUFnQjtBQUM3RTtBQUNBLGdFQUFnRSxlQUFlO0FBQy9FLDBCQUEwQixpREFBaUQ7QUFDM0U7QUFDQTtBQUNBLGdFQUFnRSxjQUFjO0FBQzlFO0FBQ0EsOEJBQThCLG1DQUFtQyxNQUFNLGlDQUFpQyxJQUFJLHFEQUFlLG1CQUFtQjtBQUM5STtBQUNBLDRDQUE0QyxhQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxhQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcYXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCLYrdix2YFcIiwgdmVyYjogXCLYo9mGINmK2K3ZiNmKXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcItio2KfZitiqXCIsIHZlcmI6IFwi2KPZhiDZitit2YjZilwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwi2LnZhti12LFcIiwgdmVyYjogXCLYo9mGINmK2K3ZiNmKXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwi2LnZhti12LFcIiwgdmVyYjogXCLYo9mGINmK2K3ZiNmKXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCLZhdiv2K7ZhFwiLFxuICAgICAgICBlbWFpbDogXCLYqNix2YrYryDYpdmE2YPYqtix2YjZhtmKXCIsXG4gICAgICAgIHVybDogXCLYsdin2KjYt1wiLFxuICAgICAgICBlbW9qaTogXCLYpdmK2YXZiNis2YpcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwi2KrYp9ix2YrYriDZiNmI2YLYqiDYqNmF2LnZitin2LEgSVNPXCIsXG4gICAgICAgIGRhdGU6IFwi2KrYp9ix2YrYriDYqNmF2LnZitin2LEgSVNPXCIsXG4gICAgICAgIHRpbWU6IFwi2YjZgtiqINio2YXYudmK2KfYsSBJU09cIixcbiAgICAgICAgZHVyYXRpb246IFwi2YXYr9ipINio2YXYudmK2KfYsSBJU09cIixcbiAgICAgICAgaXB2NDogXCLYudmG2YjYp9mGIElQdjRcIixcbiAgICAgICAgaXB2NjogXCLYudmG2YjYp9mGIElQdjZcIixcbiAgICAgICAgY2lkcnY0OiBcItmF2K/ZiSDYudmG2KfZiNmK2YYg2KjYtdmK2LrYqSBJUHY0XCIsXG4gICAgICAgIGNpZHJ2NjogXCLZhdiv2Ykg2LnZhtin2YjZitmGINio2LXZiti62KkgSVB2NlwiLFxuICAgICAgICBiYXNlNjQ6IFwi2YbZjti1INio2KrYsdmF2YrYsiBiYXNlNjQtZW5jb2RlZFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwi2YbZjti1INio2KrYsdmF2YrYsiBiYXNlNjR1cmwtZW5jb2RlZFwiLFxuICAgICAgICBqc29uX3N0cmluZzogXCLZhtmO2LUg2LnZhNmJINmH2YrYptipIEpTT05cIixcbiAgICAgICAgZTE2NDogXCLYsdmC2YUg2YfYp9iq2YEg2KjZhdi52YrYp9ixIEUuMTY0XCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCLZhdiv2K7ZhFwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR92Iwg2YjZhNmD2YYg2KrZhSDYpdiv2K7Yp9mEICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEICR7ZXhwZWN0ZWR92Iwg2YjZhNmD2YYg2KrZhSDYpdiv2K7Yp9mEICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYNin2K7YqtmK2KfYsSDYutmK2LEg2YXZgtio2YjZhDog2YrYqtmI2YLYuSDYp9mG2KrZgtin2KEg2KPYrdivINmH2LDZhyDYp9mE2K7Zitin2LHYp9iqOiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgINij2YPYqNixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INij2YYg2KrZg9mI2YYgJHtpc3N1ZS5vcmlnaW4gPz8gXCLYp9mE2YLZitmF2KlcIn0gJHthZGp9ICR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwi2LnZhti12LFcIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg2KPZg9io2LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2KPZhiDYqtmD2YjZhiAke2lzc3VlLm9yaWdpbiA/PyBcItin2YTZgtmK2YXYqVwifSAke2Fkan0gJHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDYo9i12LrYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDZhNmAICR7aXNzdWUub3JpZ2lufSDYo9mGINmK2YPZiNmGICR7YWRqfSAke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYNij2LXYutixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INmE2YAgJHtpc3N1ZS5vcmlnaW59INij2YYg2YrZg9mI2YYgJHthZGp9ICR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitio2K/YoyDYqNmAIFwiJHtpc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrZhtiq2YfZiiDYqNmAIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYqti22YXZkdmO2YYgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2LfYp9io2YIg2KfZhNmG2YXYtyAke19pc3N1ZS5wYXR0ZXJufWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fSDYutmK2LEg2YXZgtio2YjZhGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDYsdmC2YUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2YPZiNmGINmF2YYg2YXYttin2LnZgdin2KogJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNmF2LnYsdmBJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcItin2KpcIiA6IFwiXCJ9INi62LHZitioJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcItipXCIgOiBcIlwifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCLYjCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg2YXYudix2YEg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLZhdiv2K7ZhCDYutmK2LEg2YXZgtio2YjZhFwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLZhdiv2K7ZhCDYutmK2LEg2YXZgtio2YjZhFwiO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ar.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/az.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/az.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"element\", verb: \"olmalıdır\" },\n set: { unit: \"element\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanlış dəyər: gözlənilən instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanlış dəyər: gözlənilən ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n if (_issue.format === \"ends_with\")\n return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n if (_issue.format === \"includes\")\n return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n if (_issue.format === \"regex\")\n return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n return `Yanlış ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n case \"unrecognized_keys\":\n return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilində yanlış açar`;\n case \"invalid_union\":\n return \"Yanlış dəyər\";\n case \"invalid_element\":\n return `${issue.origin} daxilində yanlış dəyər`;\n default:\n return `Yanlış dəyər`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9hei5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLG1DQUFtQztBQUNyRCxnQkFBZ0IsaUNBQWlDO0FBQ2pELGlCQUFpQixvQ0FBb0M7QUFDckQsZUFBZSxvQ0FBb0M7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0Esa0VBQWtFLGVBQWUsZUFBZSxTQUFTO0FBQ3pHO0FBQ0EsbURBQW1ELFNBQVMsZUFBZSxTQUFTO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCw2REFBdUIsa0JBQWtCO0FBQ2hHLHdFQUF3RSxxREFBZSxvQkFBb0I7QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QseUJBQXlCLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QjtBQUMxSSxnREFBZ0QseUJBQXlCLEVBQUUsSUFBSSxFQUFFLHlCQUF5QjtBQUMxRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGNBQWMsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUNsSCxnREFBZ0QsY0FBYyxFQUFFLElBQUksRUFBRSx5QkFBeUI7QUFDL0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsY0FBYztBQUMxRDtBQUNBLDRDQUE0QyxjQUFjO0FBQzFEO0FBQ0EsNENBQTRDLGdCQUFnQjtBQUM1RDtBQUNBLDJDQUEyQyxnQkFBZ0I7QUFDM0QsaUNBQWlDLGdEQUFnRDtBQUNqRjtBQUNBO0FBQ0EsdUNBQXVDLGVBQWU7QUFDdEQ7QUFDQSx5Q0FBeUMsbUNBQW1DLElBQUkscURBQWUsbUJBQW1CO0FBQ2xIO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxhei5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcInNpbXZvbFwiLCB2ZXJiOiBcIm9sbWFsxLFkxLFyXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImJheXRcIiwgdmVyYjogXCJvbG1hbMSxZMSxclwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwiZWxlbWVudFwiLCB2ZXJiOiBcIm9sbWFsxLFkxLFyXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwiZWxlbWVudFwiLCB2ZXJiOiBcIm9sbWFsxLFkxLFyXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJpbnB1dFwiLFxuICAgICAgICBlbWFpbDogXCJlbWFpbCBhZGRyZXNzXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiSVNPIGRhdGV0aW1lXCIsXG4gICAgICAgIGRhdGU6IFwiSVNPIGRhdGVcIixcbiAgICAgICAgdGltZTogXCJJU08gdGltZVwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08gZHVyYXRpb25cIixcbiAgICAgICAgaXB2NDogXCJJUHY0IGFkZHJlc3NcIixcbiAgICAgICAgaXB2NjogXCJJUHY2IGFkZHJlc3NcIixcbiAgICAgICAgY2lkcnY0OiBcIklQdjQgcmFuZ2VcIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYgcmFuZ2VcIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NC1lbmNvZGVkIHN0cmluZ1wiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04gc3RyaW5nXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQgbnVtYmVyXCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCJpbnB1dFwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCBkYXhpbCBvbGFuICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluICR7ZXhwZWN0ZWR9LCBkYXhpbCBvbGFuICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFlhbmzEscWfIHNlw6dpbTogYcWfYcSfxLFkYWvEsWxhcmRhbiBiaXJpIG9sbWFsxLFkxLFyOiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7aXNzdWUub3JpZ2luID8/IFwiZMmZecmZclwifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcImVsZW1lbnRcIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7aXNzdWUub3JpZ2luID8/IFwiZMmZecmZclwifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDDh294IGtpw6dpazogZ8O2emzJmW5pbMmZbiAke2lzc3VlLm9yaWdpbn0gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYMOHb3gga2nDp2lrOiBnw7Z6bMmZbmlsyZluICR7aXNzdWUub3JpZ2lufSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFlhbmzEscWfIG3JmXRuOiBcIiR7X2lzc3VlLnByZWZpeH1cIiBpbMmZIGJhxZ9sYW1hbMSxZMSxcmA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgWWFubMSxxZ8gbcmZdG46IFwiJHtfaXNzdWUuc3VmZml4fVwiIGlsyZkgYml0bcmZbGlkaXJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgWWFubMSxxZ8gbcmZdG46IFwiJHtfaXNzdWUuaW5jbHVkZXN9XCIgZGF4aWwgb2xtYWzEsWTEsXJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgWWFubMSxxZ8gbcmZdG46ICR7X2lzc3VlLnBhdHRlcm59IMWfYWJsb251bmEgdXnEn3VuIG9sbWFsxLFkxLFyYDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFlhbmzEscWfICR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFlhbmzEscWfIMmZZMmZZDogJHtpc3N1ZS5kaXZpc29yfSBpbMmZIGLDtmzDvG7JmSBiaWzJmW4gb2xtYWzEsWTEsXJgO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUYW7EsW5tYXlhbiBhw6dhciR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJsYXJcIiA6IFwiXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2lufSBkYXhpbGluZMmZIHlhbmzEscWfIGHDp2FyYDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiWWFubMSxxZ8gZMmZecmZclwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtpc3N1ZS5vcmlnaW59IGRheGlsaW5kyZkgeWFubMSxxZ8gZMmZecmZcmA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgWWFubMSxxZ8gZMmZecmZcmA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/az.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/be.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/be.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"сімвал\",\n few: \"сімвалы\",\n many: \"сімвалаў\",\n },\n verb: \"мець\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байты\",\n many: \"байтаў\",\n },\n verb: \"мець\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"увод\",\n email: \"email адрас\",\n url: \"URL\",\n emoji: \"эмодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата і час\",\n date: \"ISO дата\",\n time: \"ISO час\",\n duration: \"ISO працягласць\",\n ipv4: \"IPv4 адрас\",\n ipv6: \"IPv6 адрас\",\n cidrv4: \"IPv4 дыяпазон\",\n cidrv6: \"IPv6 дыяпазон\",\n base64: \"радок у фармаце base64\",\n base64url: \"радок у фармаце base64url\",\n json_string: \"JSON радок\",\n e164: \"нумар E.164\",\n jwt: \"JWT\",\n template_literal: \"увод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"лік\",\n array: \"масіў\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Няправільны ўвод: чакаўся instanceof ${issue.expected}, атрымана ${received}`;\n }\n return `Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Няправільны ўвод: чакалася ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Няправільны варыянт: чакаўся адзін з ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n return `Няправільны ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Няправільны ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Няправільны ўвод\";\n case \"invalid_element\":\n return `Няправільнае значэнне ў ${issue.origin}`;\n default:\n return `Няправільны ўвод`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9iZS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsbUVBQW1FLGVBQWUsYUFBYSxTQUFTO0FBQ3hHO0FBQ0Esb0RBQW9ELFNBQVMsYUFBYSxTQUFTO0FBQ25GO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCw2REFBdUIsa0JBQWtCO0FBQ2xHLCtEQUErRCxxREFBZSxvQkFBb0I7QUFDbEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELDRCQUE0QixVQUFVLGFBQWEsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsS0FBSztBQUN4SjtBQUNBLHdEQUF3RCw0QkFBNEIsZUFBZSxJQUFJLEVBQUUseUJBQXlCO0FBQ2xJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELGNBQWMsVUFBVSxhQUFhLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLEtBQUs7QUFDeEk7QUFDQSxzREFBc0QsY0FBYyxlQUFlLElBQUksRUFBRSx5QkFBeUI7QUFDbEg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0UsY0FBYztBQUNwRjtBQUNBLHlFQUF5RSxjQUFjO0FBQ3ZGO0FBQ0EsbUVBQW1FLGdCQUFnQjtBQUNuRjtBQUNBLDRFQUE0RSxlQUFlO0FBQzNGLHNDQUFzQyxnREFBZ0Q7QUFDdEY7QUFDQTtBQUNBLGdFQUFnRSxjQUFjO0FBQzlFO0FBQ0EsdUNBQXVDLHlDQUF5QyxJQUFJLHFEQUFlLG1CQUFtQjtBQUN0SDtBQUNBLDZDQUE2QyxhQUFhO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxhQUFhO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcYmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5mdW5jdGlvbiBnZXRCZWxhcnVzaWFuUGx1cmFsKGNvdW50LCBvbmUsIGZldywgbWFueSkge1xuICAgIGNvbnN0IGFic0NvdW50ID0gTWF0aC5hYnMoY291bnQpO1xuICAgIGNvbnN0IGxhc3REaWdpdCA9IGFic0NvdW50ICUgMTA7XG4gICAgY29uc3QgbGFzdFR3b0RpZ2l0cyA9IGFic0NvdW50ICUgMTAwO1xuICAgIGlmIChsYXN0VHdvRGlnaXRzID49IDExICYmIGxhc3RUd29EaWdpdHMgPD0gMTkpIHtcbiAgICAgICAgcmV0dXJuIG1hbnk7XG4gICAgfVxuICAgIGlmIChsYXN0RGlnaXQgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIG9uZTtcbiAgICB9XG4gICAgaWYgKGxhc3REaWdpdCA+PSAyICYmIGxhc3REaWdpdCA8PSA0KSB7XG4gICAgICAgIHJldHVybiBmZXc7XG4gICAgfVxuICAgIHJldHVybiBtYW55O1xufVxuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7XG4gICAgICAgICAgICB1bml0OiB7XG4gICAgICAgICAgICAgICAgb25lOiBcItGB0ZbQvNCy0LDQu1wiLFxuICAgICAgICAgICAgICAgIGZldzogXCLRgdGW0LzQstCw0LvRi1wiLFxuICAgICAgICAgICAgICAgIG1hbnk6IFwi0YHRltC80LLQsNC70LDRnlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmI6IFwi0LzQtdGG0YxcIixcbiAgICAgICAgfSxcbiAgICAgICAgYXJyYXk6IHtcbiAgICAgICAgICAgIHVuaXQ6IHtcbiAgICAgICAgICAgICAgICBvbmU6IFwi0Y3Qu9C10LzQtdC90YJcIixcbiAgICAgICAgICAgICAgICBmZXc6IFwi0Y3Qu9C10LzQtdC90YLRi1wiLFxuICAgICAgICAgICAgICAgIG1hbnk6IFwi0Y3Qu9C10LzQtdC90YLQsNGeXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyYjogXCLQvNC10YbRjFwiLFxuICAgICAgICB9LFxuICAgICAgICBzZXQ6IHtcbiAgICAgICAgICAgIHVuaXQ6IHtcbiAgICAgICAgICAgICAgICBvbmU6IFwi0Y3Qu9C10LzQtdC90YJcIixcbiAgICAgICAgICAgICAgICBmZXc6IFwi0Y3Qu9C10LzQtdC90YLRi1wiLFxuICAgICAgICAgICAgICAgIG1hbnk6IFwi0Y3Qu9C10LzQtdC90YLQsNGeXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyYjogXCLQvNC10YbRjFwiLFxuICAgICAgICB9LFxuICAgICAgICBmaWxlOiB7XG4gICAgICAgICAgICB1bml0OiB7XG4gICAgICAgICAgICAgICAgb25lOiBcItCx0LDQudGCXCIsXG4gICAgICAgICAgICAgICAgZmV3OiBcItCx0LDQudGC0YtcIixcbiAgICAgICAgICAgICAgICBtYW55OiBcItCx0LDQudGC0LDRnlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmI6IFwi0LzQtdGG0YxcIixcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCLRg9Cy0L7QtFwiLFxuICAgICAgICBlbWFpbDogXCJlbWFpbCDQsNC00YDQsNGBXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwi0Y3QvNC+0LTQt9GWXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTyDQtNCw0YLQsCDRliDRh9Cw0YFcIixcbiAgICAgICAgZGF0ZTogXCJJU08g0LTQsNGC0LBcIixcbiAgICAgICAgdGltZTogXCJJU08g0YfQsNGBXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIklTTyDQv9GA0LDRhtGP0LPQu9Cw0YHRhtGMXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NCDQsNC00YDQsNGBXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiDQsNC00YDQsNGBXCIsXG4gICAgICAgIGNpZHJ2NDogXCJJUHY0INC00YvRj9C/0LDQt9C+0L1cIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYg0LTRi9GP0L/QsNC30L7QvVwiLFxuICAgICAgICBiYXNlNjQ6IFwi0YDQsNC00L7QuiDRgyDRhNCw0YDQvNCw0YbQtSBiYXNlNjRcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcItGA0LDQtNC+0Log0YMg0YTQsNGA0LzQsNGG0LUgYmFzZTY0dXJsXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04g0YDQsNC00L7QulwiLFxuICAgICAgICBlMTY0OiBcItC90YPQvNCw0YAgRS4xNjRcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcItGD0LLQvtC0XCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwi0LvRltC6XCIsXG4gICAgICAgIGFycmF5OiBcItC80LDRgdGW0Z5cIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDRntGB0Y8gaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwg0LDRgtGA0YvQvNCw0L3QsCAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDRntGB0Y8gJHtleHBlY3RlZH0sINCw0YLRgNGL0LzQsNC90LAgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNC70LDRgdGPICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDQstCw0YDRi9GP0L3Rgjog0YfQsNC60LDRntGB0Y8g0LDQtNC30ZbQvSDQtyAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBOdW1iZXIoaXNzdWUubWF4aW11bSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaXQgPSBnZXRCZWxhcnVzaWFuUGx1cmFsKG1heFZhbHVlLCBzaXppbmcudW5pdC5vbmUsIHNpemluZy51bml0LmZldywgc2l6aW5nLnVuaXQubWFueSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0JfQsNC90LDQtNGC0LAg0LLRj9C70ZbQutGWOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtpc3N1ZS5vcmlnaW4gPz8gXCLQt9C90LDRh9GN0L3QvdC1XCJ9INC/0LDQstGW0L3QvdCwICR7c2l6aW5nLnZlcmJ9ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3VuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQl9Cw0L3QsNC00YLQsCDQstGP0LvRltC60ZY6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2lzc3VlLm9yaWdpbiA/PyBcItC30L3QsNGH0Y3QvdC90LVcIn0g0L/QsNCy0ZbQvdC90LAg0LHRi9GG0YwgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluVmFsdWUgPSBOdW1iZXIoaXNzdWUubWluaW11bSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaXQgPSBnZXRCZWxhcnVzaWFuUGx1cmFsKG1pblZhbHVlLCBzaXppbmcudW5pdC5vbmUsIHNpemluZy51bml0LmZldywgc2l6aW5nLnVuaXQubWFueSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0JfQsNC90LDQtNGC0LAg0LzQsNC70Ys6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2lzc3VlLm9yaWdpbn0g0L/QsNCy0ZbQvdC90LAgJHtzaXppbmcudmVyYn0gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7dW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYNCX0LDQvdCw0LTRgtCwINC80LDQu9GLOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtpc3N1ZS5vcmlnaW59INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQv9Cw0YfRi9C90LDRhtGG0LAg0LcgXCIke19pc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LfQsNC60LDQvdGH0LLQsNGG0YbQsCDQvdCwIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LfQvNGP0YjRh9Cw0YbRjCBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LDQtNC/0LDQstGP0LTQsNGG0Ywg0YjQsNCx0LvQvtC90YMgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQndGP0L/RgNCw0LLRltC70YzQvdGLINC70ZbQujog0L/QsNCy0ZbQvdC10L0g0LHRi9GG0Ywg0LrRgNCw0YLQvdGL0LwgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXRgNCw0YHQv9Cw0LfQvdCw0L3RiyAke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwi0LrQu9GO0YfRi1wiIDogXCLQutC70Y7Rh1wifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQndGP0L/RgNCw0LLRltC70YzQvdGLINC60LvRjtGHINGDICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcItCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LRcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0Y/Qv9GA0LDQstGW0LvRjNC90LDQtSDQt9C90LDRh9GN0L3QvdC1INGeICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtGA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/be.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/bg.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/bg.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"символа\", verb: \"да съдържа\" },\n file: { unit: \"байта\", verb: \"да съдържа\" },\n array: { unit: \"елемента\", verb: \"да съдържа\" },\n set: { unit: \"елемента\", verb: \"да съдържа\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вход\",\n email: \"имейл адрес\",\n url: \"URL\",\n emoji: \"емоджи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO време\",\n date: \"ISO дата\",\n time: \"ISO време\",\n duration: \"ISO продължителност\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"base64-кодиран низ\",\n base64url: \"base64url-кодиран низ\",\n json_string: \"JSON низ\",\n e164: \"E.164 номер\",\n jwt: \"JWT\",\n template_literal: \"вход\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Невалиден вход: очакван instanceof ${issue.expected}, получен ${received}`;\n }\n return `Невалиден вход: очакван ${expected}, получен ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Невалиден вход: очакван ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Невалидна опция: очаквано едно от ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елемента\"}`;\n return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да бъде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Невалиден низ: трябва да започва с \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Невалиден низ: трябва да завършва с \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Невалиден низ: трябва да включва \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;\n let invalid_adj = \"Невалиден\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"date\")\n invalid_adj = \"Невалидна\";\n if (_issue.format === \"time\")\n invalid_adj = \"Невалидно\";\n if (_issue.format === \"duration\")\n invalid_adj = \"Невалидна\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Неразпознат${issue.keys.length > 1 ? \"и\" : \"\"} ключ${issue.keys.length > 1 ? \"ове\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Невалиден ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Невалиден вход\";\n case \"invalid_element\":\n return `Невалидна стойност в ${issue.origin}`;\n default:\n return `Невалиден вход`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9iZy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHFDQUFxQztBQUN2RCxnQkFBZ0IsbUNBQW1DO0FBQ25ELGlCQUFpQixzQ0FBc0M7QUFDdkQsZUFBZSxzQ0FBc0M7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLGlFQUFpRSxlQUFlLFlBQVksU0FBUztBQUNyRztBQUNBLGtEQUFrRCxTQUFTLFlBQVksU0FBUztBQUNoRjtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsNkRBQXVCLGtCQUFrQjtBQUMvRiw0REFBNEQscURBQWUsb0JBQW9CO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELDRCQUE0QixhQUFhLElBQUksRUFBRSwwQkFBMEIsRUFBRSwwQkFBMEI7QUFDNUosbURBQW1ELDRCQUE0QixVQUFVLElBQUksRUFBRSx5QkFBeUI7QUFDeEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxjQUFjLGFBQWEsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDL0g7QUFDQSxrREFBa0QsY0FBYyxVQUFVLElBQUksRUFBRSx5QkFBeUI7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsY0FBYztBQUNoRjtBQUNBO0FBQ0EsbUVBQW1FLGNBQWM7QUFDakY7QUFDQSxnRUFBZ0UsZ0JBQWdCO0FBQ2hGO0FBQ0EsaUVBQWlFLGVBQWU7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixhQUFhLEVBQUUsZ0RBQWdEO0FBQ3pGO0FBQ0E7QUFDQSxvRUFBb0UsY0FBYztBQUNsRjtBQUNBLHFDQUFxQyxrQ0FBa0MsTUFBTSxtQ0FBbUMsSUFBSSxxREFBZSxtQkFBbUI7QUFDdEo7QUFDQSwyQ0FBMkMsYUFBYTtBQUN4RDtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsYUFBYTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGJnLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwi0YHQuNC80LLQvtC70LBcIiwgdmVyYjogXCLQtNCwINGB0YrQtNGK0YDQttCwXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcItCx0LDQudGC0LBcIiwgdmVyYjogXCLQtNCwINGB0YrQtNGK0YDQttCwXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCLQtdC70LXQvNC10L3RgtCwXCIsIHZlcmI6IFwi0LTQsCDRgdGK0LTRitGA0LbQsFwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcItC10LvQtdC80LXQvdGC0LBcIiwgdmVyYjogXCLQtNCwINGB0YrQtNGK0YDQttCwXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCLQstGF0L7QtFwiLFxuICAgICAgICBlbWFpbDogXCLQuNC80LXQudC7INCw0LTRgNC10YFcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCLQtdC80L7QtNC20LhcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiSVNPINCy0YDQtdC80LVcIixcbiAgICAgICAgZGF0ZTogXCJJU08g0LTQsNGC0LBcIixcbiAgICAgICAgdGltZTogXCJJU08g0LLRgNC10LzQtVwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08g0L/RgNC+0LTRitC70LbQuNGC0LXQu9C90L7RgdGCXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NCDQsNC00YDQtdGBXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiDQsNC00YDQtdGBXCIsXG4gICAgICAgIGNpZHJ2NDogXCJJUHY0INC00LjQsNC/0LDQt9C+0L1cIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYg0LTQuNCw0L/QsNC30L7QvVwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LdC60L7QtNC40YDQsNC9INC90LjQt1wiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsLdC60L7QtNC40YDQsNC9INC90LjQt1wiLFxuICAgICAgICBqc29uX3N0cmluZzogXCJKU09OINC90LjQt1wiLFxuICAgICAgICBlMTY0OiBcIkUuMTY0INC90L7QvNC10YBcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcItCy0YXQvtC0XCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwi0YfQuNGB0LvQvlwiLFxuICAgICAgICBhcnJheTogXCLQvNCw0YHQuNCyXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwg0L/QvtC70YPRh9C10L0gJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gJHtleHBlY3RlZH0sINC/0L7Qu9GD0YfQtdC9ICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQstCw0LvQuNC00L3QsCDQvtC/0YbQuNGPOiDQvtGH0LDQutCy0LDQvdC+INC10LTQvdC+INC+0YIgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCi0LLRitGA0LTQtSDQs9C+0LvRj9C80L46INC+0YfQsNC60LLQsCDRgdC1ICR7aXNzdWUub3JpZ2luID8/IFwi0YHRgtC+0LnQvdC+0YHRglwifSDQtNCwINGB0YrQtNGK0YDQttCwICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwi0LXQu9C10LzQtdC90YLQsFwifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQotCy0YrRgNC00LUg0LPQvtC70Y/QvNC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2lzc3VlLm9yaWdpbiA/PyBcItGB0YLQvtC50L3QvtGB0YJcIn0g0LTQsCDQsdGK0LTQtSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCi0LLRitGA0LTQtSDQvNCw0LvQutC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2lzc3VlLm9yaWdpbn0g0LTQsCDRgdGK0LTRitGA0LbQsCAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYNCi0LLRitGA0LTQtSDQvNCw0LvQutC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2lzc3VlLm9yaWdpbn0g0LTQsCDQsdGK0LTQtSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LfQsNC/0L7Rh9Cy0LAg0YEgXCIke19pc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQt9Cw0LLRitGA0YjQstCwINGBIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINCy0LrQu9GO0YfQstCwIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0YHRitCy0L/QsNC00LAg0YEgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIGxldCBpbnZhbGlkX2FkaiA9IFwi0J3QtdCy0LDQu9C40LTQtdC9XCI7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW1vamlcIilcbiAgICAgICAgICAgICAgICAgICAgaW52YWxpZF9hZGogPSBcItCd0LXQstCw0LvQuNC00L3QvlwiO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImRhdGV0aW1lXCIpXG4gICAgICAgICAgICAgICAgICAgIGludmFsaWRfYWRqID0gXCLQndC10LLQsNC70LjQtNC90L5cIjtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJkYXRlXCIpXG4gICAgICAgICAgICAgICAgICAgIGludmFsaWRfYWRqID0gXCLQndC10LLQsNC70LjQtNC90LBcIjtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJ0aW1lXCIpXG4gICAgICAgICAgICAgICAgICAgIGludmFsaWRfYWRqID0gXCLQndC10LLQsNC70LjQtNC90L5cIjtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJkdXJhdGlvblwiKVxuICAgICAgICAgICAgICAgICAgICBpbnZhbGlkX2FkaiA9IFwi0J3QtdCy0LDQu9C40LTQvdCwXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2ludmFsaWRfYWRqfSAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQndC10LLQsNC70LjQtNC90L4g0YfQuNGB0LvQvjog0YLRgNGP0LHQstCwINC00LAg0LHRitC00LUg0LrRgNCw0YLQvdC+INC90LAgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXRgNCw0LfQv9C+0LfQvdCw0YIke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwi0LhcIiA6IFwiXCJ9INC60LvRjtGHJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcItC+0LLQtVwiIDogXCJcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LDQu9C40LTQtdC9INC60LvRjtGHINCyICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcItCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtFwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LDQu9C40LTQvdCwINGB0YLQvtC50L3QvtGB0YIg0LIgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LRgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/bg.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ca.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ca.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"caràcters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adreça electrònica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adreça IPv4\",\n ipv6: \"adreça IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus invàlid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor invàlid: s'esperava ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Opció invàlida: s'esperava una de ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n return `Format invàlid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau invàlida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n case \"invalid_element\":\n return `Element invàlid a ${issue.origin}`;\n default:\n return `Entrada invàlida`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9jYS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHFDQUFxQztBQUN2RCxnQkFBZ0IsaUNBQWlDO0FBQ2pELGlCQUFpQixvQ0FBb0M7QUFDckQsZUFBZSxvQ0FBb0M7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsbUVBQW1FLGVBQWUsZUFBZSxTQUFTO0FBQzFHO0FBQ0Esb0RBQW9ELFNBQVMsZUFBZSxTQUFTO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCw2REFBdUIsa0JBQWtCO0FBQ2pHLDREQUE0RCxxREFBZSxzQkFBc0I7QUFDakc7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsNEJBQTRCLGFBQWEsS0FBSyxFQUFFLDBCQUEwQixFQUFFLDBCQUEwQjtBQUMvSixxREFBcUQsNEJBQTRCLE1BQU0sS0FBSyxFQUFFLHlCQUF5QjtBQUN2SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELGNBQWMsYUFBYSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUNwSTtBQUNBLHNEQUFzRCxjQUFjLE1BQU0sS0FBSyxFQUFFLHlCQUF5QjtBQUMxRztBQUNBO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRSxjQUFjO0FBQ2hGO0FBQ0E7QUFDQSwrREFBK0QsY0FBYztBQUM3RTtBQUNBLDZEQUE2RCxnQkFBZ0I7QUFDN0U7QUFDQSwyRUFBMkUsZUFBZTtBQUMxRiwrQ0FBK0MsZ0RBQWdEO0FBQy9GO0FBQ0E7QUFDQSxnRUFBZ0UsY0FBYztBQUM5RTtBQUNBLDhCQUE4QixrQ0FBa0MsZUFBZSxpQ0FBaUMsSUFBSSxxREFBZSxtQkFBbUI7QUFDdEo7QUFDQSwwQ0FBMEMsYUFBYTtBQUN2RDtBQUNBLDJDQUEyQztBQUMzQztBQUNBLDRDQUE0QyxhQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcY2EuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJjYXLDoGN0ZXJzXCIsIHZlcmI6IFwiY29udGVuaXJcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYnl0ZXNcIiwgdmVyYjogXCJjb250ZW5pclwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwiZWxlbWVudHNcIiwgdmVyYjogXCJjb250ZW5pclwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcImVsZW1lbnRzXCIsIHZlcmI6IFwiY29udGVuaXJcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcImVudHJhZGFcIixcbiAgICAgICAgZW1haWw6IFwiYWRyZcOnYSBlbGVjdHLDsm5pY2FcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJkYXRhIGkgaG9yYSBJU09cIixcbiAgICAgICAgZGF0ZTogXCJkYXRhIElTT1wiLFxuICAgICAgICB0aW1lOiBcImhvcmEgSVNPXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcImR1cmFkYSBJU09cIixcbiAgICAgICAgaXB2NDogXCJhZHJlw6dhIElQdjRcIixcbiAgICAgICAgaXB2NjogXCJhZHJlw6dhIElQdjZcIixcbiAgICAgICAgY2lkcnY0OiBcInJhbmcgSVB2NFwiLFxuICAgICAgICBjaWRydjY6IFwicmFuZyBJUHY2XCIsXG4gICAgICAgIGJhc2U2NDogXCJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjRcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NHVybFwiLFxuICAgICAgICBqc29uX3N0cmluZzogXCJjYWRlbmEgSlNPTlwiLFxuICAgICAgICBlMTY0OiBcIm7Dum1lcm8gRS4xNjRcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcImVudHJhZGFcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRpcHVzIGludsOgbGlkOiBzJ2VzcGVyYXZhIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sIHMnaGEgcmVidXQgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFRpcHVzIGludsOgbGlkOiBzJ2VzcGVyYXZhICR7ZXhwZWN0ZWR9LCBzJ2hhIHJlYnV0ICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVmFsb3IgaW52w6BsaWQ6IHMnZXNwZXJhdmEgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBPcGNpw7MgaW52w6BsaWRhOiBzJ2VzcGVyYXZhIHVuYSBkZSAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwiIG8gXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCJjb20gYSBtw6B4aW1cIiA6IFwibWVueXMgZGVcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7aXNzdWUub3JpZ2luID8/IFwiZWwgdmFsb3JcIn0gY29udGluZ3XDqXMgJHthZGp9ICR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVudHNcIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgTWFzc2EgZ3Jhbjogcydlc3BlcmF2YSBxdWUgJHtpc3N1ZS5vcmlnaW4gPz8gXCJlbCB2YWxvclwifSBmb3MgJHthZGp9ICR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcImNvbSBhIG3DrW5pbVwiIDogXCJtw6lzIGRlXCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE1hc3NhIHBldGl0OiBzJ2VzcGVyYXZhIHF1ZSAke2lzc3VlLm9yaWdpbn0gY29udGluZ3XDqXMgJHthZGp9ICR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgTWFzc2EgcGV0aXQ6IHMnZXNwZXJhdmEgcXVlICR7aXNzdWUub3JpZ2lufSBmb3MgJHthZGp9ICR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBGb3JtYXQgaW52w6BsaWQ6IGhhIGRlIGNvbWVuw6dhciBhbWIgXCIke19pc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBGb3JtYXQgaW52w6BsaWQ6IGhhIGQnYWNhYmFyIGFtYiBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBGb3JtYXQgaW52w6BsaWQ6IGhhIGQnaW5jbG91cmUgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBGb3JtYXQgaW52w6BsaWQ6IGhhIGRlIGNvaW5jaWRpciBhbWIgZWwgcGF0csOzICR7X2lzc3VlLnBhdHRlcm59YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYEZvcm1hdCBpbnbDoGxpZCBwZXIgYSAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOw7ptZXJvIGludsOgbGlkOiBoYSBkZSBzZXIgbcO6bHRpcGxlIGRlICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBDbGF1JHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9IG5vIHJlY29uZWd1ZGEke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgQ2xhdSBpbnbDoGxpZGEgYSAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJFbnRyYWRhIGludsOgbGlkYVwiOyAvLyBDb3VsZCBhbHNvIGJlIFwiVGlwdXMgZCd1bmnDsyBpbnbDoGxpZFwiIGJ1dCBcIkVudHJhZGEgaW52w6BsaWRhXCIgaXMgbW9yZSBnZW5lcmFsXG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBFbGVtZW50IGludsOgbGlkIGEgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBFbnRyYWRhIGludsOgbGlkYWA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ca.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/cs.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/cs.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaků\", verb: \"mít\" },\n file: { unit: \"bajtů\", verb: \"mít\" },\n array: { unit: \"prvků\", verb: \"mít\" },\n set: { unit: \"prvků\", verb: \"mít\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulární výraz\",\n email: \"e-mailová adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a čas ve formátu ISO\",\n date: \"datum ve formátu ISO\",\n time: \"čas ve formátu ISO\",\n duration: \"doba trvání ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"řetězec zakódovaný ve formátu base64\",\n base64url: \"řetězec zakódovaný ve formátu base64url\",\n json_string: \"řetězec ve formátu JSON\",\n e164: \"číslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"číslo\",\n string: \"řetězec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatný vstup: očekáváno instanceof ${issue.expected}, obdrženo ${received}`;\n }\n return `Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatný vstup: očekáváno ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Neplatná možnost: očekávána jedna z hodnot ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n return `Neplatný formát ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neznámé klíče: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatný klíč v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatný vstup\";\n case \"invalid_element\":\n return `Neplatná hodnota v ${issue.origin}`;\n default:\n return `Neplatný vstup`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9jcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLDRCQUE0QjtBQUM5QyxnQkFBZ0IsNEJBQTRCO0FBQzVDLGlCQUFpQiw0QkFBNEI7QUFDN0MsZUFBZSw0QkFBNEI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHFEQUFlO0FBQ3BEO0FBQ0E7QUFDQSxtRUFBbUUsZUFBZSxhQUFhLFNBQVM7QUFDeEc7QUFDQSxvREFBb0QsU0FBUyxhQUFhLFNBQVM7QUFDbkY7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELDZEQUF1QixrQkFBa0I7QUFDakcscUVBQXFFLHFEQUFlLG9CQUFvQjtBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCwyQkFBMkIsV0FBVyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsdUJBQXVCO0FBQ3RKO0FBQ0EsbURBQW1ELDJCQUEyQixXQUFXLElBQUksRUFBRSx5QkFBeUI7QUFDeEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCwyQkFBMkIsV0FBVyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsdUJBQXVCO0FBQ3JKO0FBQ0Esa0RBQWtELDJCQUEyQixXQUFXLElBQUksRUFBRSx5QkFBeUI7QUFDdkg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsY0FBYztBQUMvRTtBQUNBLGdFQUFnRSxjQUFjO0FBQzlFO0FBQ0EsZ0VBQWdFLGdCQUFnQjtBQUNoRjtBQUNBLHFFQUFxRSxlQUFlO0FBQ3BGLDBDQUEwQyxnREFBZ0Q7QUFDMUY7QUFDQTtBQUNBLDREQUE0RCxjQUFjO0FBQzFFO0FBQ0EseUNBQXlDLHFEQUFlLG1CQUFtQjtBQUMzRTtBQUNBLDBDQUEwQyxhQUFhO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxhQUFhO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcY3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJ6bmFrxa9cIiwgdmVyYjogXCJtw610XCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImJhanTFr1wiLCB2ZXJiOiBcIm3DrXRcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcInBydmvFr1wiLCB2ZXJiOiBcIm3DrXRcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCJwcnZrxa9cIiwgdmVyYjogXCJtw610XCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJyZWd1bMOhcm7DrSB2w71yYXpcIixcbiAgICAgICAgZW1haWw6IFwiZS1tYWlsb3bDoSBhZHJlc2FcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJkYXR1bSBhIMSNYXMgdmUgZm9ybcOhdHUgSVNPXCIsXG4gICAgICAgIGRhdGU6IFwiZGF0dW0gdmUgZm9ybcOhdHUgSVNPXCIsXG4gICAgICAgIHRpbWU6IFwixI1hcyB2ZSBmb3Jtw6F0dSBJU09cIixcbiAgICAgICAgZHVyYXRpb246IFwiZG9iYSB0cnbDoW7DrSBJU09cIixcbiAgICAgICAgaXB2NDogXCJJUHY0IGFkcmVzYVwiLFxuICAgICAgICBpcHY2OiBcIklQdjYgYWRyZXNhXCIsXG4gICAgICAgIGNpZHJ2NDogXCJyb3pzYWggSVB2NFwiLFxuICAgICAgICBjaWRydjY6IFwicm96c2FoIElQdjZcIixcbiAgICAgICAgYmFzZTY0OiBcIsWZZXTEm3plYyB6YWvDs2RvdmFuw70gdmUgZm9ybcOhdHUgYmFzZTY0XCIsXG4gICAgICAgIGJhc2U2NHVybDogXCLFmWV0xJt6ZWMgemFrw7Nkb3ZhbsO9IHZlIGZvcm3DoXR1IGJhc2U2NHVybFwiLFxuICAgICAgICBqc29uX3N0cmluZzogXCLFmWV0xJt6ZWMgdmUgZm9ybcOhdHUgSlNPTlwiLFxuICAgICAgICBlMTY0OiBcIsSNw61zbG8gRS4xNjRcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcInZzdHVwXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwixI3DrXNsb1wiLFxuICAgICAgICBzdHJpbmc6IFwixZlldMSbemVjXCIsXG4gICAgICAgIGZ1bmN0aW9uOiBcImZ1bmtjZVwiLFxuICAgICAgICBhcnJheTogXCJwb2xlXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sIG9iZHLFvmVubyAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gJHtleHBlY3RlZH0sIG9iZHLFvmVubyAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgTmVwbGF0bsOhIG1vxb5ub3N0OiBvxI1la8OhdsOhbmEgamVkbmEgeiBob2Rub3QgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSG9kbm90YSBqZSBwxZnDrWxpxaEgdmVsa8OhOiAke2lzc3VlLm9yaWdpbiA/PyBcImhvZG5vdGFcIn0gbXVzw60gbcOtdCAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcInBydmvFr1wifWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgSG9kbm90YSBqZSBwxZnDrWxpxaEgdmVsa8OhOiAke2lzc3VlLm9yaWdpbiA/PyBcImhvZG5vdGFcIn0gbXVzw60gYsO9dCAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEhvZG5vdGEgamUgcMWZw61sacWhIG1hbMOhOiAke2lzc3VlLm9yaWdpbiA/PyBcImhvZG5vdGFcIn0gbXVzw60gbcOtdCAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcInBydmvFr1wifWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgSG9kbm90YSBqZSBwxZnDrWxpxaEgbWFsw6E6ICR7aXNzdWUub3JpZ2luID8/IFwiaG9kbm90YVwifSBtdXPDrSBiw710ICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gemHEjcOtbmF0IG5hIFwiJHtfaXNzdWUucHJlZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSBrb27EjWl0IG5hIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIG9ic2Fob3ZhdCBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIG9kcG92w61kYXQgdnpvcnUgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgTmVwbGF0bsO9IGZvcm3DoXQgJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTmVwbGF0bsOpIMSNw61zbG86IG11c8OtIGLDvXQgbsOhc29ia2VtICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZXpuw6Ftw6kga2zDrcSNZTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZXBsYXRuw70ga2zDrcSNIHYgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiTmVwbGF0bsO9IHZzdHVwXCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZXBsYXRuw6EgaG9kbm90YSB2ICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgTmVwbGF0bsO9IHZzdHVwYDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/cs.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/da.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/da.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslæt\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslæt\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"sæt\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig værdi: forventede ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af følgende ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal være deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte nøgler\" : \"Ukendt nøgle\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøgle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig værdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9kYS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLDZCQUE2QjtBQUMvQyxnQkFBZ0IsOEJBQThCO0FBQzlDLGlCQUFpQixzQ0FBc0M7QUFDdkQsZUFBZSxzQ0FBc0M7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHFEQUFlO0FBQ3BEO0FBQ0E7QUFDQSxvRUFBb0UsZUFBZSxRQUFRLFNBQVM7QUFDcEc7QUFDQSxxREFBcUQsU0FBUyxRQUFRLFNBQVM7QUFDL0U7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELDZEQUF1QixrQkFBa0I7QUFDakcsbUVBQW1FLHFEQUFlLG9CQUFvQjtBQUN0RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELG1CQUFtQixFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCO0FBQ3JKLCtDQUErQyxtQkFBbUIsUUFBUSxLQUFLLEVBQUUseUJBQXlCO0FBQzFHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxZQUFZO0FBQzVIO0FBQ0EsZ0RBQWdELFFBQVEsUUFBUSxLQUFLLEVBQUUseUJBQXlCO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStELGNBQWM7QUFDN0U7QUFDQSw2REFBNkQsY0FBYztBQUMzRTtBQUNBLDhEQUE4RCxnQkFBZ0I7QUFDOUU7QUFDQSxvRUFBb0UsZUFBZTtBQUNuRixrQ0FBa0MsZ0RBQWdEO0FBQ2xGO0FBQ0E7QUFDQSwrREFBK0QsY0FBYztBQUM3RTtBQUNBLDBCQUEwQiwwREFBMEQsSUFBSSxxREFBZSxtQkFBbUI7QUFDMUg7QUFDQSwwQ0FBMEMsYUFBYTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsYUFBYTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGRhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwidGVnblwiLCB2ZXJiOiBcImhhdmRlXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImJ5dGVzXCIsIHZlcmI6IFwiaGF2ZGVcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcImVsZW1lbnRlclwiLCB2ZXJiOiBcImluZGVob2xkdFwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcImVsZW1lbnRlclwiLCB2ZXJiOiBcImluZGVob2xkdFwiIH0sXG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRTaXppbmcob3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBTaXphYmxlW29yaWdpbl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgRm9ybWF0RGljdGlvbmFyeSA9IHtcbiAgICAgICAgcmVnZXg6IFwiaW5wdXRcIixcbiAgICAgICAgZW1haWw6IFwiZS1tYWlsYWRyZXNzZVwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTyBkYXRvLSBvZyBrbG9ra2VzbMOmdFwiLFxuICAgICAgICBkYXRlOiBcIklTTy1kYXRvXCIsXG4gICAgICAgIHRpbWU6IFwiSVNPLWtsb2trZXNsw6Z0XCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIklTTy12YXJpZ2hlZFwiLFxuICAgICAgICBpcHY0OiBcIklQdjQtb21yw6VkZVwiLFxuICAgICAgICBpcHY2OiBcIklQdjYtb21yw6VkZVwiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NC1zcGVrdHJ1bVwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2Ni1zcGVrdHJ1bVwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LWtvZGV0IHN0cmVuZ1wiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsLWtvZGV0IHN0cmVuZ1wiLFxuICAgICAgICBqc29uX3N0cmluZzogXCJKU09OLXN0cmVuZ1wiLFxuICAgICAgICBlMTY0OiBcIkUuMTY0LW51bW1lclwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwiaW5wdXRcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIHN0cmluZzogXCJzdHJlbmdcIixcbiAgICAgICAgbnVtYmVyOiBcInRhbFwiLFxuICAgICAgICBib29sZWFuOiBcImJvb2xlYW5cIixcbiAgICAgICAgYXJyYXk6IFwibGlzdGVcIixcbiAgICAgICAgb2JqZWN0OiBcIm9iamVrdFwiLFxuICAgICAgICBzZXQ6IFwic8OmdFwiLFxuICAgICAgICBmaWxlOiBcImZpbFwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlndCBpbnB1dDogZm9ydmVudGVkZSBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCBmaWsgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFVneWxkaWd0IGlucHV0OiBmb3J2ZW50ZWRlICR7ZXhwZWN0ZWR9LCBmaWsgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIHbDpnJkaTogZm9ydmVudGVkZSAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFVneWxkaWd0IHZhbGc6IGZvcnZlbnRlZGUgZW4gYWYgZsO4bGdlbmRlICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gVHlwZURpY3Rpb25hcnlbaXNzdWUub3JpZ2luXSA/PyBpc3N1ZS5vcmlnaW47XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBGb3Igc3RvcjogZm9ydmVudGVkZSAke29yaWdpbiA/PyBcInZhbHVlXCJ9ICR7c2l6aW5nLnZlcmJ9ICR7YWRqfSAke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcImVsZW1lbnRlclwifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBGb3Igc3RvcjogZm9ydmVudGVkZSAke29yaWdpbiA/PyBcInZhbHVlXCJ9IGhhdmRlICR7YWRqfSAke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gVHlwZURpY3Rpb25hcnlbaXNzdWUub3JpZ2luXSA/PyBpc3N1ZS5vcmlnaW47XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEZvciBsaWxsZTogZm9ydmVudGVkZSAke29yaWdpbn0gJHtzaXppbmcudmVyYn0gJHthZGp9ICR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgRm9yIGxpbGxlOiBmb3J2ZW50ZWRlICR7b3JpZ2lufSBoYXZkZSAke2Fkan0gJHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIHN0cmVuZzogc2thbCBzdGFydGUgbWVkIFwiJHtfaXNzdWUucHJlZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIHN0cmVuZzogc2thbCBlbmRlIG1lZCBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIHN0cmVuZzogc2thbCBpbmRlaG9sZGUgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIHN0cmVuZzogc2thbCBtYXRjaGUgbcO4bnN0ZXJldCAke19pc3N1ZS5wYXR0ZXJufWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnICR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFVneWxkaWd0IHRhbDogc2thbCB2w6ZyZSBkZWxlbGlndCBtZWQgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJVa2VuZHRlIG7DuGdsZXJcIiA6IFwiVWtlbmR0IG7DuGdsZVwifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIG7DuGdsZSBpICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIlVneWxkaWd0IGlucHV0OiBtYXRjaGVyIGluZ2VuIGFmIGRlIHRpbGxhZHRlIHR5cGVyXCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIHbDpnJkaSBpICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgVWd5bGRpZ3QgaW5wdXRgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/da.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/de.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/de.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ungültige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ungültige Eingabe: erwartet ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Ungültige Option: erwartet eine von ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ungültig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ungültiger Schlüssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ungültige Eingabe\";\n case \"invalid_element\":\n return `Ungültiger Wert in ${issue.origin}`;\n default:\n return `Ungültige Eingabe`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9kZS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLG1DQUFtQztBQUNyRCxnQkFBZ0IsaUNBQWlDO0FBQ2pELGlCQUFpQixvQ0FBb0M7QUFDckQsZUFBZSxvQ0FBb0M7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLHFFQUFxRSxlQUFlLGFBQWEsU0FBUztBQUMxRztBQUNBLHNEQUFzRCxTQUFTLGFBQWEsU0FBUztBQUNyRjtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsNkRBQXVCLGtCQUFrQjtBQUNuRyw4REFBOEQscURBQWUsb0JBQW9CO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELHdCQUF3QixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSwyQkFBMkI7QUFDN0ksa0RBQWtELHdCQUF3QixFQUFFLElBQUksRUFBRSwwQkFBMEI7QUFDNUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxjQUFjLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLGFBQWE7QUFDdEg7QUFDQSxtREFBbUQsY0FBYyxFQUFFLElBQUksRUFBRSwwQkFBMEI7QUFDbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsY0FBYztBQUN6RTtBQUNBLDJEQUEyRCxjQUFjO0FBQ3pFO0FBQ0EsdURBQXVELGdCQUFnQjtBQUN2RTtBQUNBLGlFQUFpRSxnQkFBZ0I7QUFDakYsb0NBQW9DLGdEQUFnRDtBQUNwRjtBQUNBO0FBQ0Esa0VBQWtFLGVBQWU7QUFDakY7QUFDQSwwQkFBMEIseUVBQXlFLElBQUkscURBQWUsbUJBQW1CO0FBQ3pJO0FBQ0Esa0RBQWtELGFBQWE7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLGFBQWE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxkZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcIlplaWNoZW5cIiwgdmVyYjogXCJ6dSBoYWJlblwiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCJCeXRlc1wiLCB2ZXJiOiBcInp1IGhhYmVuXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJFbGVtZW50ZVwiLCB2ZXJiOiBcInp1IGhhYmVuXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwiRWxlbWVudGVcIiwgdmVyYjogXCJ6dSBoYWJlblwiIH0sXG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRTaXppbmcob3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBTaXphYmxlW29yaWdpbl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgRm9ybWF0RGljdGlvbmFyeSA9IHtcbiAgICAgICAgcmVnZXg6IFwiRWluZ2FiZVwiLFxuICAgICAgICBlbWFpbDogXCJFLU1haWwtQWRyZXNzZVwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcIkVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTy1EYXR1bSB1bmQgLVVocnplaXRcIixcbiAgICAgICAgZGF0ZTogXCJJU08tRGF0dW1cIixcbiAgICAgICAgdGltZTogXCJJU08tVWhyemVpdFwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08tRGF1ZXJcIixcbiAgICAgICAgaXB2NDogXCJJUHY0LUFkcmVzc2VcIixcbiAgICAgICAgaXB2NjogXCJJUHY2LUFkcmVzc2VcIixcbiAgICAgICAgY2lkcnY0OiBcIklQdjQtQmVyZWljaFwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2Ni1CZXJlaWNoXCIsXG4gICAgICAgIGJhc2U2NDogXCJCYXNlNjQtY29kaWVydGVyIFN0cmluZ1wiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiQmFzZTY0LVVSTC1jb2RpZXJ0ZXIgU3RyaW5nXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04tU3RyaW5nXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQtTnVtbWVyXCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCJFaW5nYWJlXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwiWmFobFwiLFxuICAgICAgICBhcnJheTogXCJBcnJheVwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0IGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sIGVyaGFsdGVuICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0ICR7ZXhwZWN0ZWR9LCBlcmhhbHRlbiAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBVbmfDvGx0aWdlIE9wdGlvbjogZXJ3YXJ0ZXQgZWluZSB2b24gJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFp1IGdyb8OfOiBlcndhcnRldCwgZGFzcyAke2lzc3VlLm9yaWdpbiA/PyBcIldlcnRcIn0gJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCJFbGVtZW50ZVwifSBoYXRgO1xuICAgICAgICAgICAgICAgIHJldHVybiBgWnUgZ3Jvw586IGVyd2FydGV0LCBkYXNzICR7aXNzdWUub3JpZ2luID8/IFwiV2VydFwifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gaXN0YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtpc3N1ZS5vcmlnaW59ICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fSBoYXRgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFp1IGtsZWluOiBlcndhcnRldCwgZGFzcyAke2lzc3VlLm9yaWdpbn0gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzdGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIG1pdCBcIiR7X2lzc3VlLnByZWZpeH1cIiBiZWdpbm5lbmA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIG1pdCBcIiR7X2lzc3VlLnN1ZmZpeH1cIiBlbmRlbmA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgXCIke19pc3N1ZS5pbmNsdWRlc31cIiBlbnRoYWx0ZW5gO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIGRlbSBNdXN0ZXIgJHtfaXNzdWUucGF0dGVybn0gZW50c3ByZWNoZW5gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgVW5nw7xsdGlnOiAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBVbmfDvGx0aWdlIFphaGw6IG11c3MgZWluIFZpZWxmYWNoZXMgdm9uICR7aXNzdWUuZGl2aXNvcn0gc2VpbmA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJVbmJla2FubnRlIFNjaGzDvHNzZWxcIiA6IFwiVW5iZWthbm50ZXIgU2NobMO8c3NlbFwifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBVbmfDvGx0aWdlciBTY2hsw7xzc2VsIGluICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIlVuZ8O8bHRpZ2UgRWluZ2FiZVwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgVW5nw7xsdGlnZXIgV2VydCBpbiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFVuZ8O8bHRpZ2UgRWluZ2FiZWA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/de.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/en.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/en.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9lbi5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHFDQUFxQztBQUN2RCxnQkFBZ0IsZ0NBQWdDO0FBQ2hELGlCQUFpQixnQ0FBZ0M7QUFDakQsZUFBZSxnQ0FBZ0M7QUFDL0MsZUFBZSxrQ0FBa0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHFEQUFlO0FBQ3BEO0FBQ0Esa0RBQWtELFNBQVMsYUFBYSxTQUFTO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCw2REFBdUIsa0JBQWtCO0FBQy9GLDBEQUEwRCxxREFBZSxvQkFBb0I7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QseUJBQXlCLFVBQVUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLDBCQUEwQjtBQUMvSSw0Q0FBNEMseUJBQXlCLFFBQVEsSUFBSSxFQUFFLHlCQUF5QjtBQUM1RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELGNBQWMsVUFBVSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUN4SDtBQUNBLDhDQUE4QyxjQUFjLFFBQVEsSUFBSSxFQUFFLHlCQUF5QjtBQUNuRztBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxjQUFjO0FBQzdFO0FBQ0E7QUFDQSw2REFBNkQsY0FBYztBQUMzRTtBQUNBLDREQUE0RCxnQkFBZ0I7QUFDNUU7QUFDQSxpRUFBaUUsZUFBZTtBQUNoRixrQ0FBa0MsZ0RBQWdEO0FBQ2xGO0FBQ0E7QUFDQSxnRUFBZ0UsY0FBYztBQUM5RTtBQUNBLDBDQUEwQyxpQ0FBaUMsSUFBSSxxREFBZSxtQkFBbUI7QUFDakg7QUFDQSx5Q0FBeUMsYUFBYTtBQUN0RDtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsYUFBYTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGVuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwiY2hhcmFjdGVyc1wiLCB2ZXJiOiBcInRvIGhhdmVcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYnl0ZXNcIiwgdmVyYjogXCJ0byBoYXZlXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJpdGVtc1wiLCB2ZXJiOiBcInRvIGhhdmVcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCJpdGVtc1wiLCB2ZXJiOiBcInRvIGhhdmVcIiB9LFxuICAgICAgICBtYXA6IHsgdW5pdDogXCJlbnRyaWVzXCIsIHZlcmI6IFwidG8gaGF2ZVwiIH0sXG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRTaXppbmcob3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBTaXphYmxlW29yaWdpbl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgRm9ybWF0RGljdGlvbmFyeSA9IHtcbiAgICAgICAgcmVnZXg6IFwiaW5wdXRcIixcbiAgICAgICAgZW1haWw6IFwiZW1haWwgYWRkcmVzc1wiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTyBkYXRldGltZVwiLFxuICAgICAgICBkYXRlOiBcIklTTyBkYXRlXCIsXG4gICAgICAgIHRpbWU6IFwiSVNPIHRpbWVcIixcbiAgICAgICAgZHVyYXRpb246IFwiSVNPIGR1cmF0aW9uXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NCBhZGRyZXNzXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiBhZGRyZXNzXCIsXG4gICAgICAgIG1hYzogXCJNQUMgYWRkcmVzc1wiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NCByYW5nZVwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2NiByYW5nZVwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LWVuY29kZWQgc3RyaW5nXCIsXG4gICAgICAgIGJhc2U2NHVybDogXCJiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmdcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTiBzdHJpbmdcIixcbiAgICAgICAgZTE2NDogXCJFLjE2NCBudW1iZXJcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcImlucHV0XCIsXG4gICAgfTtcbiAgICAvLyB0eXBlIG5hbWVzOiBtaXNzaW5nIGtleXMgPSBkbyBub3QgdHJhbnNsYXRlICh1c2UgcmF3IHZhbHVlIHZpYSA/PyBmYWxsYmFjaylcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgLy8gQ29tcGF0aWJpbGl0eTogXCJuYW5cIiAtPiBcIk5hTlwiIGZvciBkaXNwbGF5XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICAgICAgLy8gQWxsIG90aGVyIHR5cGUgbmFtZXMgb21pdHRlZCAtIHRoZXkgZmFsbCBiYWNrIHRvIHJhdyB2YWx1ZXMgdmlhID8/IG9wZXJhdG9yXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtleHBlY3RlZH0sIHJlY2VpdmVkICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIG9wdGlvbjogZXhwZWN0ZWQgb25lIG9mICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUb28gYmlnOiBleHBlY3RlZCAke2lzc3VlLm9yaWdpbiA/PyBcInZhbHVlXCJ9IHRvIGhhdmUgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCJlbGVtZW50c1wifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUb28gYmlnOiBleHBlY3RlZCAke2lzc3VlLm9yaWdpbiA/PyBcInZhbHVlXCJ9IHRvIGJlICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVG9vIHNtYWxsOiBleHBlY3RlZCAke2lzc3VlLm9yaWdpbn0gdG8gaGF2ZSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtpc3N1ZS5vcmlnaW59IHRvIGJlICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIHN0cmluZzogbXVzdCBzdGFydCB3aXRoIFwiJHtfaXNzdWUucHJlZml4fVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBzdHJpbmc6IG11c3QgZW5kIHdpdGggXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBzdHJpbmc6IG11c3QgaW5jbHVkZSBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIG51bWJlcjogbXVzdCBiZSBhIG11bHRpcGxlIG9mICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBVbnJlY29nbml6ZWQga2V5JHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQga2V5IGluICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIkludmFsaWQgaW5wdXRcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYEludmFsaWQgdmFsdWUgaW4gJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBJbnZhbGlkIGlucHV0YDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/en.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/eo.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/eo.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emoĝio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-daŭro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendiĝis instanceof ${issue.expected}, riceviĝis ${received}`;\n }\n return `Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendiĝis ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendiĝis unu el ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendiĝis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendiĝis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenciĝi per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas finiĝi per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} ŝlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida ŝlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9lby5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGtDQUFrQztBQUNwRCxnQkFBZ0IsK0JBQStCO0FBQy9DLGlCQUFpQixrQ0FBa0M7QUFDbkQsZUFBZSxrQ0FBa0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsbUVBQW1FLGVBQWUsY0FBYyxTQUFTO0FBQ3pHO0FBQ0Esb0RBQW9ELFNBQVMsY0FBYyxTQUFTO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCw2REFBdUIsa0JBQWtCO0FBQ2pHLDJEQUEyRCxxREFBZSxvQkFBb0I7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsMEJBQTBCLE9BQU8sSUFBSSxFQUFFLDBCQUEwQixFQUFFLDRCQUE0QjtBQUN0SixtREFBbUQsMEJBQTBCLE9BQU8sSUFBSSxFQUFFLHlCQUF5QjtBQUNuSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELGNBQWMsT0FBTyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUM3SDtBQUNBLHNEQUFzRCxjQUFjLE9BQU8sSUFBSSxFQUFFLHlCQUF5QjtBQUMxRztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdFQUF3RSxjQUFjO0FBQ3RGO0FBQ0EscUVBQXFFLGNBQWM7QUFDbkY7QUFDQSxvRUFBb0UsZ0JBQWdCO0FBQ3BGO0FBQ0EsK0VBQStFLGVBQWU7QUFDOUYsbUNBQW1DLGdEQUFnRDtBQUNuRjtBQUNBO0FBQ0EsOERBQThELGNBQWM7QUFDNUU7QUFDQSxrQ0FBa0Msa0NBQWtDLFNBQVMsaUNBQWlDLElBQUkscURBQWUsbUJBQW1CO0FBQ3BKO0FBQ0EsOENBQThDLGFBQWE7QUFDM0Q7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLGFBQWE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxlby5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcImthcmFrdHJvam5cIiwgdmVyYjogXCJoYXZpXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImJhanRvam5cIiwgdmVyYjogXCJoYXZpXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJlbGVtZW50b2puXCIsIHZlcmI6IFwiaGF2aVwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcImVsZW1lbnRvam5cIiwgdmVyYjogXCJoYXZpXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJlbmlnb1wiLFxuICAgICAgICBlbWFpbDogXCJyZXRhZHJlc29cIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW/EnWlvXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTy1kYXRvdGVtcG9cIixcbiAgICAgICAgZGF0ZTogXCJJU08tZGF0b1wiLFxuICAgICAgICB0aW1lOiBcIklTTy10ZW1wb1wiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08tZGHFrXJvXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NC1hZHJlc29cIixcbiAgICAgICAgaXB2NjogXCJJUHY2LWFkcmVzb1wiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NC1yYW5nb1wiLFxuICAgICAgICBjaWRydjY6IFwiSVB2Ni1yYW5nb1wiLFxuICAgICAgICBiYXNlNjQ6IFwiNjQtdW1lIGtvZGl0YSBrYXJha3RyYXJvXCIsXG4gICAgICAgIGJhc2U2NHVybDogXCJVUkwtNjQtdW1lIGtvZGl0YSBrYXJha3RyYXJvXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04ta2FyYWt0cmFyb1wiLFxuICAgICAgICBlMTY0OiBcIkUuMTY0LW5vbWJyb1wiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwiZW5pZ29cIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCJub21icm9cIixcbiAgICAgICAgYXJyYXk6IFwidGFiZWxvXCIsXG4gICAgICAgIG51bGw6IFwic2VudmFsb3JhXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sIHJpY2V2acSdaXMgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzICR7ZXhwZWN0ZWR9LCByaWNldmnEnWlzICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZXZhbGlkYSBvcGNpbzogYXRlbmRpxJ1pcyB1bnUgZWwgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRybyBncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtpc3N1ZS5vcmlnaW4gPz8gXCJ2YWxvcm9cIn0gaGF2dSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcImVsZW1lbnRvam5cIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgVHJvIGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2lzc3VlLm9yaWdpbiA/PyBcInZhbG9yb1wifSBoYXZ1ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVHJvIG1hbGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2lzc3VlLm9yaWdpbn0gaGF2dSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFRybyBtYWxncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtpc3N1ZS5vcmlnaW59IGVzdHUgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb21lbmNpxJ1pIHBlciBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMgZmluacSdaSBwZXIgXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMgaW5rbHV6aXZpIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29uZ3J1aSBrdW4gbGEgbW9kZWxvICR7X2lzc3VlLnBhdHRlcm59YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5ldmFsaWRhICR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5ldmFsaWRhIG5vbWJybzogZGV2YXMgZXN0aSBvYmxvIGRlICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZWtvbmF0YSR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJqXCIgOiBcIlwifSDFnWxvc2lsbyR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJqXCIgOiBcIlwifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZXZhbGlkYSDFnWxvc2lsbyBlbiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJOZXZhbGlkYSBlbmlnb1wiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTmV2YWxpZGEgdmFsb3JvIGVuICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgTmV2YWxpZGEgZW5pZ29gO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/eo.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/es.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/es.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"dirección de correo electrónico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duración ISO\",\n ipv4: \"dirección IPv4\",\n ipv6: \"dirección IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"número\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"número grande\",\n symbol: \"símbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"función\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeración\",\n union: \"unión\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vacío\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inválida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inválida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: se esperaba ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Opción inválida: se esperaba una de ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n return `Inválido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inválida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inválida`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9lcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLG1DQUFtQztBQUNyRCxnQkFBZ0IsOEJBQThCO0FBQzlDLGlCQUFpQixrQ0FBa0M7QUFDbkQsZUFBZSxrQ0FBa0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsdUVBQXVFLGVBQWUsYUFBYSxTQUFTO0FBQzVHO0FBQ0Esd0RBQXdELFNBQVMsYUFBYSxTQUFTO0FBQ3ZGO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCw2REFBdUIsa0JBQWtCO0FBQ3JHLDhEQUE4RCxxREFBZSxvQkFBb0I7QUFDakc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSxtQkFBbUIsVUFBVSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCO0FBQzFKLDREQUE0RCxtQkFBbUIsUUFBUSxJQUFJLEVBQUUseUJBQXlCO0FBQ3RIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSxRQUFRLFVBQVUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDakk7QUFDQSw2REFBNkQsUUFBUSxRQUFRLElBQUksRUFBRSx5QkFBeUI7QUFDNUc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsY0FBYztBQUNoRjtBQUNBLGlFQUFpRSxjQUFjO0FBQy9FO0FBQ0EsNkRBQTZELGdCQUFnQjtBQUM3RTtBQUNBLDRFQUE0RSxlQUFlO0FBQzNGLG1DQUFtQyxnREFBZ0Q7QUFDbkY7QUFDQTtBQUNBLGdFQUFnRSxjQUFjO0FBQzlFO0FBQ0EsK0JBQStCLGtDQUFrQyxhQUFhLGlDQUFpQyxJQUFJLHFEQUFlLG1CQUFtQjtBQUNySjtBQUNBLDRDQUE0Qyw2Q0FBNkM7QUFDekY7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLDZDQUE2QztBQUN6RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwiY2FyYWN0ZXJlc1wiLCB2ZXJiOiBcInRlbmVyXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImJ5dGVzXCIsIHZlcmI6IFwidGVuZXJcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcImVsZW1lbnRvc1wiLCB2ZXJiOiBcInRlbmVyXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwiZWxlbWVudG9zXCIsIHZlcmI6IFwidGVuZXJcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcImVudHJhZGFcIixcbiAgICAgICAgZW1haWw6IFwiZGlyZWNjacOzbiBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiZmVjaGEgeSBob3JhIElTT1wiLFxuICAgICAgICBkYXRlOiBcImZlY2hhIElTT1wiLFxuICAgICAgICB0aW1lOiBcImhvcmEgSVNPXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcImR1cmFjacOzbiBJU09cIixcbiAgICAgICAgaXB2NDogXCJkaXJlY2Npw7NuIElQdjRcIixcbiAgICAgICAgaXB2NjogXCJkaXJlY2Npw7NuIElQdjZcIixcbiAgICAgICAgY2lkcnY0OiBcInJhbmdvIElQdjRcIixcbiAgICAgICAgY2lkcnY2OiBcInJhbmdvIElQdjZcIixcbiAgICAgICAgYmFzZTY0OiBcImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiVVJMIGNvZGlmaWNhZGEgZW4gYmFzZTY0XCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcImNhZGVuYSBKU09OXCIsXG4gICAgICAgIGUxNjQ6IFwibsO6bWVybyBFLjE2NFwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwiZW50cmFkYVwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICAgICAgc3RyaW5nOiBcInRleHRvXCIsXG4gICAgICAgIG51bWJlcjogXCJuw7ptZXJvXCIsXG4gICAgICAgIGJvb2xlYW46IFwiYm9vbGVhbm9cIixcbiAgICAgICAgYXJyYXk6IFwiYXJyZWdsb1wiLFxuICAgICAgICBvYmplY3Q6IFwib2JqZXRvXCIsXG4gICAgICAgIHNldDogXCJjb25qdW50b1wiLFxuICAgICAgICBmaWxlOiBcImFyY2hpdm9cIixcbiAgICAgICAgZGF0ZTogXCJmZWNoYVwiLFxuICAgICAgICBiaWdpbnQ6IFwibsO6bWVybyBncmFuZGVcIixcbiAgICAgICAgc3ltYm9sOiBcInPDrW1ib2xvXCIsXG4gICAgICAgIHVuZGVmaW5lZDogXCJpbmRlZmluaWRvXCIsXG4gICAgICAgIG51bGw6IFwibnVsb1wiLFxuICAgICAgICBmdW5jdGlvbjogXCJmdW5jacOzblwiLFxuICAgICAgICBtYXA6IFwibWFwYVwiLFxuICAgICAgICByZWNvcmQ6IFwicmVnaXN0cm9cIixcbiAgICAgICAgdHVwbGU6IFwidHVwbGFcIixcbiAgICAgICAgZW51bTogXCJlbnVtZXJhY2nDs25cIixcbiAgICAgICAgdW5pb246IFwidW5pw7NuXCIsXG4gICAgICAgIGxpdGVyYWw6IFwibGl0ZXJhbFwiLFxuICAgICAgICBwcm9taXNlOiBcInByb21lc2FcIixcbiAgICAgICAgdm9pZDogXCJ2YWPDrW9cIixcbiAgICAgICAgbmV2ZXI6IFwibnVuY2FcIixcbiAgICAgICAgdW5rbm93bjogXCJkZXNjb25vY2lkb1wiLFxuICAgICAgICBhbnk6IFwiY3VhbHF1aWVyYVwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwgcmVjaWJpZG8gJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSAke2V4cGVjdGVkfSwgcmVjaWJpZG8gJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBPcGNpw7NuIGludsOhbGlkYTogc2UgZXNwZXJhYmEgdW5hIGRlICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gVHlwZURpY3Rpb25hcnlbaXNzdWUub3JpZ2luXSA/PyBpc3N1ZS5vcmlnaW47XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBEZW1hc2lhZG8gZ3JhbmRlOiBzZSBlc3BlcmFiYSBxdWUgJHtvcmlnaW4gPz8gXCJ2YWxvclwifSB0dXZpZXJhICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVudG9zXCJ9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYERlbWFzaWFkbyBncmFuZGU6IHNlIGVzcGVyYWJhIHF1ZSAke29yaWdpbiA/PyBcInZhbG9yXCJ9IGZ1ZXJhICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW4gPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5vcmlnaW5dID8/IGlzc3VlLm9yaWdpbjtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgRGVtYXNpYWRvIHBlcXVlw7FvOiBzZSBlc3BlcmFiYSBxdWUgJHtvcmlnaW59IHR1dmllcmEgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBEZW1hc2lhZG8gcGVxdWXDsW86IHNlIGVzcGVyYWJhIHF1ZSAke29yaWdpbn0gZnVlcmEgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGNvbWVuemFyIGNvbiBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgQ2FkZW5hIGludsOhbGlkYTogZGViZSB0ZXJtaW5hciBlbiBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGluY2x1aXIgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGNvaW5jaWRpciBjb24gZWwgcGF0csOzbiAke19pc3N1ZS5wYXR0ZXJufWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBJbnbDoWxpZG8gJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTsO6bWVybyBpbnbDoWxpZG86IGRlYmUgc2VyIG3Dumx0aXBsbyBkZSAke2lzc3VlLmRpdmlzb3J9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTGxhdmUke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn0gZGVzY29ub2NpZGEke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTGxhdmUgaW52w6FsaWRhIGVuICR7VHlwZURpY3Rpb25hcnlbaXNzdWUub3JpZ2luXSA/PyBpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiRW50cmFkYSBpbnbDoWxpZGFcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFZhbG9yIGludsOhbGlkbyBlbiAke1R5cGVEaWN0aW9uYXJ5W2lzc3VlLm9yaWdpbl0gPz8gaXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgRW50cmFkYSBpbnbDoWxpZGFgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/es.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/fa.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/fa.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n file: { unit: \"بایت\", verb: \"داشته باشد\" },\n array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودی\",\n email: \"آدرس ایمیل\",\n url: \"URL\",\n emoji: \"ایموجی\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاریخ و زمان ایزو\",\n date: \"تاریخ ایزو\",\n time: \"زمان ایزو\",\n duration: \"مدت زمان ایزو\",\n ipv4: \"IPv4 آدرس\",\n ipv6: \"IPv6 آدرس\",\n cidrv4: \"IPv4 دامنه\",\n cidrv6: \"IPv6 دامنه\",\n base64: \"base64-encoded رشته\",\n base64url: \"base64url-encoded رشته\",\n json_string: \"JSON رشته\",\n e164: \"E.164 عدد\",\n jwt: \"JWT\",\n template_literal: \"ورودی\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"آرایه\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ورودی نامعتبر: میبایست instanceof ${issue.expected} میبود، ${received} دریافت شد`;\n }\n return `ورودی نامعتبر: میبایست ${expected} میبود، ${received} دریافت شد`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ورودی نامعتبر: میبایست ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])} میبود`;\n }\n return `گزینه نامعتبر: میبایست یکی از ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")} میبود`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n }\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n }\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n }\n if (_issue.format === \"ends_with\") {\n return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n }\n if (_issue.format === \"includes\") {\n return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n }\n if (_issue.format === \"regex\") {\n return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} نامعتبر`;\n }\n case \"not_multiple_of\":\n return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n case \"unrecognized_keys\":\n return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `کلید ناشناس در ${issue.origin}`;\n case \"invalid_union\":\n return `ورودی نامعتبر`;\n case \"invalid_element\":\n return `مقدار نامعتبر در ${issue.origin}`;\n default:\n return `ورودی نامعتبر`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9mYS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHFDQUFxQztBQUN2RCxnQkFBZ0Isa0NBQWtDO0FBQ2xELGlCQUFpQixrQ0FBa0M7QUFDbkQsZUFBZSxrQ0FBa0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLGlFQUFpRSxnQkFBZ0IsVUFBVSxVQUFVO0FBQ3JHO0FBQ0Esa0RBQWtELFVBQVUsVUFBVSxVQUFVO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCw2REFBdUIsbUJBQW1CO0FBQ2hHO0FBQ0EseURBQXlELHFEQUFlLHFCQUFxQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyx5QkFBeUIsT0FBTyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsdUJBQXVCO0FBQ2xJO0FBQ0EscUNBQXFDLHlCQUF5QixPQUFPLElBQUksRUFBRSwwQkFBMEI7QUFDckc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxjQUFjLE9BQU8sSUFBSSxFQUFFLDBCQUEwQixFQUFFLGFBQWE7QUFDN0c7QUFDQSxxQ0FBcUMsY0FBYyxPQUFPLElBQUksRUFBRSwwQkFBMEI7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsY0FBYztBQUNuRTtBQUNBO0FBQ0EscURBQXFELGNBQWM7QUFDbkU7QUFDQTtBQUNBLHVEQUF1RCxnQkFBZ0I7QUFDdkU7QUFDQTtBQUNBLDBEQUEwRCxnQkFBZ0I7QUFDMUU7QUFDQSwwQkFBMEIsaURBQWlEO0FBQzNFO0FBQ0E7QUFDQSxpREFBaUQsZUFBZTtBQUNoRTtBQUNBLDhCQUE4QixvQ0FBb0MsVUFBVSxxREFBZSxtQkFBbUI7QUFDOUc7QUFDQSx5Q0FBeUMsYUFBYTtBQUN0RDtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsYUFBYTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGZhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwi2qnYp9ix2Kfaqdiq2LFcIiwgdmVyYjogXCLYr9in2LTYqtmHINio2KfYtNivXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcItio2KfbjNiqXCIsIHZlcmI6IFwi2K/Yp9i02KrZhyDYqNin2LTYr1wiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwi2KLbjNiq2YVcIiwgdmVyYjogXCLYr9in2LTYqtmHINio2KfYtNivXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwi2KLbjNiq2YVcIiwgdmVyYjogXCLYr9in2LTYqtmHINio2KfYtNivXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCLZiNix2YjYr9uMXCIsXG4gICAgICAgIGVtYWlsOiBcItii2K/YsdizINin24zZhduM2YRcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCLYp9uM2YXZiNis24xcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwi2KrYp9ix24zYriDZiCDYstmF2KfZhiDYp9uM2LLZiFwiLFxuICAgICAgICBkYXRlOiBcItiq2KfYsduM2K4g2KfbjNiy2YhcIixcbiAgICAgICAgdGltZTogXCLYstmF2KfZhiDYp9uM2LLZiFwiLFxuICAgICAgICBkdXJhdGlvbjogXCLZhdiv2Kog2LLZhdin2YYg2KfbjNiy2YhcIixcbiAgICAgICAgaXB2NDogXCJJUHY0INii2K/YsdizXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiDYotiv2LHYs1wiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NCDYr9in2YXZhtmHXCIsXG4gICAgICAgIGNpZHJ2NjogXCJJUHY2INiv2KfZhdmG2YdcIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NC1lbmNvZGVkINix2LTYqtmHXCIsXG4gICAgICAgIGJhc2U2NHVybDogXCJiYXNlNjR1cmwtZW5jb2RlZCDYsdi02KrZh1wiLFxuICAgICAgICBqc29uX3N0cmluZzogXCJKU09OINix2LTYqtmHXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQg2LnYr9ivXCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCLZiNix2YjYr9uMXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwi2LnYr9ivXCIsXG4gICAgICAgIGFycmF5OiBcItii2LHYp9uM2YdcIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2KogaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSDZhduM4oCM2KjZiNiv2IwgJHtyZWNlaXZlZH0g2K/YsduM2KfZgdiqINi02K9gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYNmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LE6INmF24zigIzYqNin24zYs9iqICR7ZXhwZWN0ZWR9INmF24zigIzYqNmI2K/YjCAke3JlY2VpdmVkfSDYr9ix24zYp9mB2Kog2LTYr2A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2KogJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfSDZhduM4oCM2KjZiNivYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDar9iy24zZhtmHINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiDbjNqp24wg2KfYsiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX0g2YXbjOKAjNio2YjYr2A7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNiu24zZhNuMINio2LLYsdqvOiAke2lzc3VlLm9yaWdpbiA/PyBcItmF2YLYr9in2LFcIn0g2KjYp9uM2K8gJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCLYudmG2LXYsVwifSDYqNin2LTYr2A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg2K7bjNmE24wg2KjYstix2q86ICR7aXNzdWUub3JpZ2luID8/IFwi2YXZgtiv2KfYsVwifSDYqNin24zYryAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0g2KjYp9i02K9gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNiu24zZhNuMINqp2YjahtqpOiAke2lzc3VlLm9yaWdpbn0g2KjYp9uM2K8gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9INio2KfYtNivYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDYrtuM2YTbjCDaqdmI2obaqTogJHtpc3N1ZS5vcmlnaW59INio2KfbjNivICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSDYqNin2LTYr2A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyBcIiR7X2lzc3VlLnByZWZpeH1cIiDYtNix2YjYuSDYtNmI2K9gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinIFwiJHtfaXNzdWUuc3VmZml4fVwiINiq2YXYp9mFINi02YjYr2A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2LTYp9mF2YQgXCIke19pc3N1ZS5pbmNsdWRlc31cIiDYqNin2LTYr2A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyDYp9mE2q/ZiNuMICR7X2lzc3VlLnBhdHRlcm59INmF2LfYp9io2YLYqiDYr9in2LTYqtmHINio2KfYtNivYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fSDZhtin2YXYudiq2KjYsWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDYudiv2K8g2YbYp9mF2LnYqtio2LE6INio2KfbjNivINmF2LbYsdioICR7aXNzdWUuZGl2aXNvcn0g2KjYp9i02K9gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDaqdmE24zYryR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCLZh9in24xcIiA6IFwiXCJ9INmG2KfYtNmG2KfYszogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDaqdmE24zYryDZhtin2LTZhtin2LMg2K/YsSAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LFgO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg2YXZgtiv2KfYsSDZhtin2YXYudiq2KjYsSDYr9ixICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBg2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsWA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/fa.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/fi.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/fi.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"päivämäärän\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"säännöllinen lauseke\",\n email: \"sähköpostiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-päivämäärä\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen syöte: täytyy olla ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: täytyy olla yksi seuraavista: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen syöte`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9maS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHlDQUF5QztBQUMzRCxnQkFBZ0IscUNBQXFDO0FBQ3JELGlCQUFpQixvQ0FBb0M7QUFDckQsZUFBZSxvQ0FBb0M7QUFDbkQsa0JBQWtCLDRCQUE0QjtBQUM5QyxrQkFBa0IsMkNBQTJDO0FBQzdELGVBQWUsb0NBQW9DO0FBQ25ELGdCQUFnQixrQ0FBa0M7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EseUVBQXlFLGVBQWUsUUFBUSxTQUFTO0FBQ3pHO0FBQ0EsMERBQTBELFNBQVMsUUFBUSxTQUFTO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCw2REFBdUIsa0JBQWtCO0FBQ3ZHLDhFQUE4RSxxREFBZSxvQkFBb0I7QUFDakg7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsZ0JBQWdCLGNBQWMsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDdkg7QUFDQSx5REFBeUQsSUFBSSxFQUFFLHlCQUF5QjtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLGdCQUFnQixjQUFjLElBQUksRUFBRSwwQkFBMEIsRUFBRSxZQUFZO0FBQ3ZIO0FBQ0EseURBQXlELElBQUksRUFBRSx5QkFBeUI7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsY0FBYztBQUM5RTtBQUNBLGlFQUFpRSxjQUFjO0FBQy9FO0FBQ0EsbUVBQW1FLGdCQUFnQjtBQUNuRjtBQUNBLHlGQUF5RixlQUFlO0FBQ3hHO0FBQ0EsdUNBQXVDLGdEQUFnRDtBQUN2RjtBQUNBO0FBQ0EsK0RBQStELGVBQWU7QUFDOUU7QUFDQSwwQkFBMEIscUVBQXFFLElBQUkscURBQWUsbUJBQW1CO0FBQ3JJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcZmkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJtZXJra2nDpFwiLCBzdWJqZWN0OiBcIm1lcmtraWpvbm9uXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcInRhdnVhXCIsIHN1YmplY3Q6IFwidGllZG9zdG9uXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJhbGtpb3RhXCIsIHN1YmplY3Q6IFwibGlzdGFuXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwiYWxraW90YVwiLCBzdWJqZWN0OiBcImpvdWtvblwiIH0sXG4gICAgICAgIG51bWJlcjogeyB1bml0OiBcIlwiLCBzdWJqZWN0OiBcImx1dnVuXCIgfSxcbiAgICAgICAgYmlnaW50OiB7IHVuaXQ6IFwiXCIsIHN1YmplY3Q6IFwic3V1cmVuIGtva29uYWlzbHV2dW5cIiB9LFxuICAgICAgICBpbnQ6IHsgdW5pdDogXCJcIiwgc3ViamVjdDogXCJrb2tvbmFpc2x1dnVuXCIgfSxcbiAgICAgICAgZGF0ZTogeyB1bml0OiBcIlwiLCBzdWJqZWN0OiBcInDDpGl2w6Rtw6TDpHLDpG5cIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcInPDpMOkbm7DtmxsaW5lbiBsYXVzZWtlXCIsXG4gICAgICAgIGVtYWlsOiBcInPDpGhrw7Zwb3N0aW9zb2l0ZVwiLFxuICAgICAgICB1cmw6IFwiVVJMLW9zb2l0ZVwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJJU08tYWlrYWxlaW1hXCIsXG4gICAgICAgIGRhdGU6IFwiSVNPLXDDpGl2w6Rtw6TDpHLDpFwiLFxuICAgICAgICB0aW1lOiBcIklTTy1haWthXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIklTTy1rZXN0b1wiLFxuICAgICAgICBpcHY0OiBcIklQdjQtb3NvaXRlXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2Ni1vc29pdGVcIixcbiAgICAgICAgY2lkcnY0OiBcIklQdjQtYWx1ZVwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2Ni1hbHVlXCIsXG4gICAgICAgIGJhc2U2NDogXCJiYXNlNjQta29vZGF0dHUgbWVya2tpam9ub1wiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsLWtvb2RhdHR1IG1lcmtraWpvbm9cIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTi1tZXJra2lqb25vXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQtbHVrdVwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwidGVtcGxhYXR0aW1lcmtraWpvbm9cIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFZpcmhlZWxsaW5lbiB0eXlwcGk6IG9kb3RldHRpaW4gaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwgb2xpICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBWaXJoZWVsbGluZW4gdHl5cHBpOiBvZG90ZXR0aWluICR7ZXhwZWN0ZWR9LCBvbGkgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IG9sbGEgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBWaXJoZWVsbGluZW4gdmFsaW50YTogdMOkeXR5eSBvbGxhIHlrc2kgc2V1cmFhdmlzdGE6ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYExpaWFuIHN1dXJpOiAke3NpemluZy5zdWJqZWN0fSB0w6R5dHl5IG9sbGEgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YC50cmltKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgTGlpYW4gc3V1cmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYExpaWFuIHBpZW5pOiAke3NpemluZy5zdWJqZWN0fSB0w6R5dHl5IG9sbGEgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YC50cmltKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgTGlpYW4gcGllbmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgYWxrYWEgXCIke19pc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgbG9wcHVhIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgc2lzw6RsdMOkw6QgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgdmFzdGF0YSBzw6TDpG5uw7ZsbGlzdMOkIGxhdXNla2V0dGEgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFZpcmhlZWxsaW5lbiAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBWaXJoZWVsbGluZW4gbHVrdTogdMOkeXR5eSBvbGxhIGx1dnVuICR7aXNzdWUuZGl2aXNvcn0gbW9uaWtlcnRhYDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcIlR1bnRlbWF0dG9tYXQgYXZhaW1ldFwiIDogXCJUdW50ZW1hdG9uIGF2YWluXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJWaXJoZWVsbGluZW4gYXZhaW4gdGlldHVlZXNzYVwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJWaXJoZWVsbGluZW4gdW5pb25pXCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiVmlyaGVlbGxpbmVuIGFydm8gam91a29zc2FcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBWaXJoZWVsbGluZW4gc3nDtnRlYDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/fi.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/fr-CA.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/fr-CA.js ***!
|
||
\**********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : attendu instanceof ${issue.expected}, reçu ${received}`;\n }\n return `Entrée invalide : attendu ${expected}, reçu ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : attendu ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"≤\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"≥\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9mci1DQS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLG1DQUFtQztBQUNyRCxnQkFBZ0IsK0JBQStCO0FBQy9DLGlCQUFpQixpQ0FBaUM7QUFDbEQsZUFBZSxpQ0FBaUM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsbUVBQW1FLGVBQWUsU0FBUyxTQUFTO0FBQ3BHO0FBQ0Esb0RBQW9ELFNBQVMsU0FBUyxTQUFTO0FBQy9FO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCw2REFBdUIsa0JBQWtCO0FBQ2pHLGdGQUFnRixxREFBZSxvQkFBb0I7QUFDbkg7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsNkJBQTZCLE1BQU0sSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDeEksbURBQW1ELDZCQUE2QixPQUFPLElBQUksRUFBRSx5QkFBeUI7QUFDdEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxjQUFjLE1BQU0sSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDekg7QUFDQSxtREFBbUQsY0FBYyxPQUFPLElBQUksRUFBRSx5QkFBeUI7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0UsY0FBYztBQUNsRjtBQUNBO0FBQ0Esc0VBQXNFLGNBQWM7QUFDcEY7QUFDQSw4REFBOEQsZ0JBQWdCO0FBQzlFO0FBQ0EsMkVBQTJFLGVBQWU7QUFDMUYsMEJBQTBCLGlEQUFpRDtBQUMzRTtBQUNBO0FBQ0EscUVBQXFFLGNBQWM7QUFDbkY7QUFDQSw2QkFBNkIsa0NBQWtDLGNBQWMsa0NBQWtDLElBQUkscURBQWUsbUJBQW1CO0FBQ3JKO0FBQ0EsNENBQTRDLGFBQWE7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLGFBQWE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxmci1DQS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcImNhcmFjdMOocmVzXCIsIHZlcmI6IFwiYXZvaXJcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwib2N0ZXRzXCIsIHZlcmI6IFwiYXZvaXJcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcIsOpbMOpbWVudHNcIiwgdmVyYjogXCJhdm9pclwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcIsOpbMOpbWVudHNcIiwgdmVyYjogXCJhdm9pclwiIH0sXG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRTaXppbmcob3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBTaXphYmxlW29yaWdpbl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgRm9ybWF0RGljdGlvbmFyeSA9IHtcbiAgICAgICAgcmVnZXg6IFwiZW50csOpZVwiLFxuICAgICAgICBlbWFpbDogXCJhZHJlc3NlIGNvdXJyaWVsXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiZGF0ZS1oZXVyZSBJU09cIixcbiAgICAgICAgZGF0ZTogXCJkYXRlIElTT1wiLFxuICAgICAgICB0aW1lOiBcImhldXJlIElTT1wiLFxuICAgICAgICBkdXJhdGlvbjogXCJkdXLDqWUgSVNPXCIsXG4gICAgICAgIGlwdjQ6IFwiYWRyZXNzZSBJUHY0XCIsXG4gICAgICAgIGlwdjY6IFwiYWRyZXNzZSBJUHY2XCIsXG4gICAgICAgIGNpZHJ2NDogXCJwbGFnZSBJUHY0XCIsXG4gICAgICAgIGNpZHJ2NjogXCJwbGFnZSBJUHY2XCIsXG4gICAgICAgIGJhc2U2NDogXCJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjR1cmxcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiY2hhw65uZSBKU09OXCIsXG4gICAgICAgIGUxNjQ6IFwibnVtw6lybyBFLjE2NFwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwiZW50csOpZVwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwgcmXDp3UgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7ZXhwZWN0ZWR9LCByZcOndSAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgT3B0aW9uIGludmFsaWRlIDogYXR0ZW5kdSBsJ3VuZSBkZXMgdmFsZXVycyBzdWl2YW50ZXMgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIuKJpFwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUcm9wIGdyYW5kIDogYXR0ZW5kdSBxdWUgJHtpc3N1ZS5vcmlnaW4gPz8gXCJsYSB2YWxldXJcIn0gYWl0ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUcm9wIGdyYW5kIDogYXR0ZW5kdSBxdWUgJHtpc3N1ZS5vcmlnaW4gPz8gXCJsYSB2YWxldXJcIn0gc29pdCAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCLiiaVcIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUcm9wIHBldGl0IDogYXR0ZW5kdSBxdWUgJHtpc3N1ZS5vcmlnaW59IGFpdCAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFRyb3AgcGV0aXQgOiBhdHRlbmR1IHF1ZSAke2lzc3VlLm9yaWdpbn0gc29pdCAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29tbWVuY2VyIHBhciBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYENoYcOubmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBDaGHDrm5lIGludmFsaWRlIDogZG9pdCBpbmNsdXJlIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29ycmVzcG9uZHJlIGF1IG1vdGlmICR7X2lzc3VlLnBhdHRlcm59YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9IGludmFsaWRlYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5vbWJyZSBpbnZhbGlkZSA6IGRvaXQgw6p0cmUgdW4gbXVsdGlwbGUgZGUgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYENsw6kke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn0gbm9uIHJlY29ubnVlJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9IDogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBDbMOpIGludmFsaWRlIGRhbnMgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiRW50csOpZSBpbnZhbGlkZVwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgVmFsZXVyIGludmFsaWRlIGRhbnMgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBFbnRyw6llIGludmFsaWRlYDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/fr-CA.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/fr.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/fr.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrée\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombre\",\n array: \"tableau\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrée invalide : instanceof ${issue.expected} attendu, ${received} reçu`;\n }\n return `Entrée invalide : ${expected} attendu, ${received} reçu`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : ${issue.origin} doit être ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9mci5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLG1DQUFtQztBQUNyRCxnQkFBZ0IsK0JBQStCO0FBQy9DLGlCQUFpQixpQ0FBaUM7QUFDbEQsZUFBZSxpQ0FBaUM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLDJEQUEyRCxnQkFBZ0IsV0FBVyxVQUFVO0FBQ2hHO0FBQ0EsNENBQTRDLFVBQVUsV0FBVyxVQUFVO0FBQzNFO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCw2REFBdUIsbUJBQW1CO0FBQzFGLDZEQUE2RCxxREFBZSxxQkFBcUI7QUFDakc7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsMEJBQTBCLE9BQU8sYUFBYSxFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSw0QkFBNEI7QUFDekosdUNBQXVDLDBCQUEwQixZQUFZLElBQUksRUFBRSx5QkFBeUI7QUFDNUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxjQUFjLE9BQU8sYUFBYSxFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxZQUFZO0FBQzdIO0FBQ0EsdUNBQXVDLGNBQWMsWUFBWSxJQUFJLEVBQUUseUJBQXlCO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FLGNBQWM7QUFDbEY7QUFDQSxzRUFBc0UsY0FBYztBQUNwRjtBQUNBLDhEQUE4RCxnQkFBZ0I7QUFDOUU7QUFDQSw0RUFBNEUsZUFBZTtBQUMzRiwwQkFBMEIsaURBQWlEO0FBQzNFO0FBQ0E7QUFDQSxxRUFBcUUsY0FBYztBQUNuRjtBQUNBLDZCQUE2QixrQ0FBa0MsY0FBYyxrQ0FBa0MsSUFBSSxxREFBZSxtQkFBbUI7QUFDcko7QUFDQSw0Q0FBNEMsYUFBYTtBQUN6RDtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsYUFBYTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGZyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwiY2FyYWN0w6hyZXNcIiwgdmVyYjogXCJhdm9pclwiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCJvY3RldHNcIiwgdmVyYjogXCJhdm9pclwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwiw6lsw6ltZW50c1wiLCB2ZXJiOiBcImF2b2lyXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwiw6lsw6ltZW50c1wiLCB2ZXJiOiBcImF2b2lyXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJlbnRyw6llXCIsXG4gICAgICAgIGVtYWlsOiBcImFkcmVzc2UgZS1tYWlsXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiZGF0ZSBldCBoZXVyZSBJU09cIixcbiAgICAgICAgZGF0ZTogXCJkYXRlIElTT1wiLFxuICAgICAgICB0aW1lOiBcImhldXJlIElTT1wiLFxuICAgICAgICBkdXJhdGlvbjogXCJkdXLDqWUgSVNPXCIsXG4gICAgICAgIGlwdjQ6IFwiYWRyZXNzZSBJUHY0XCIsXG4gICAgICAgIGlwdjY6IFwiYWRyZXNzZSBJUHY2XCIsXG4gICAgICAgIGNpZHJ2NDogXCJwbGFnZSBJUHY0XCIsXG4gICAgICAgIGNpZHJ2NjogXCJwbGFnZSBJUHY2XCIsXG4gICAgICAgIGJhc2U2NDogXCJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjR1cmxcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiY2hhw65uZSBKU09OXCIsXG4gICAgICAgIGUxNjQ6IFwibnVtw6lybyBFLjE2NFwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwiZW50csOpZVwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICAgICAgbnVtYmVyOiBcIm5vbWJyZVwiLFxuICAgICAgICBhcnJheTogXCJ0YWJsZWF1XCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEVudHLDqWUgaW52YWxpZGUgOiBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9IGF0dGVuZHUsICR7cmVjZWl2ZWR9IHJlw6d1YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBFbnRyw6llIGludmFsaWRlIDogJHtleHBlY3RlZH0gYXR0ZW5kdSwgJHtyZWNlaXZlZH0gcmXDp3VgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBFbnRyw6llIGludmFsaWRlIDogJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfSBhdHRlbmR1YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYE9wdGlvbiBpbnZhbGlkZSA6IHVuZSB2YWxldXIgcGFybWkgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9IGF0dGVuZHVlYDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRyb3AgZ3JhbmQgOiAke2lzc3VlLm9yaWdpbiA/PyBcInZhbGV1clwifSBkb2l0ICR7c2l6aW5nLnZlcmJ9ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiw6lsw6ltZW50KHMpXCJ9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFRyb3AgZ3JhbmQgOiAke2lzc3VlLm9yaWdpbiA/PyBcInZhbGV1clwifSBkb2l0IMOqdHJlICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVHJvcCBwZXRpdCA6ICR7aXNzdWUub3JpZ2lufSBkb2l0ICR7c2l6aW5nLnZlcmJ9ICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgVHJvcCBwZXRpdCA6ICR7aXNzdWUub3JpZ2lufSBkb2l0IMOqdHJlICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29tbWVuY2VyIHBhciBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgc2UgdGVybWluZXIgcGFyIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb3JyZXNwb25kcmUgYXUgbW9kw6hsZSAke19pc3N1ZS5wYXR0ZXJufWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fSBpbnZhbGlkZWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOb21icmUgaW52YWxpZGUgOiBkb2l0IMOqdHJlIHVuIG11bHRpcGxlIGRlICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBDbMOpJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9IG5vbiByZWNvbm51ZSR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJzXCIgOiBcIlwifSA6ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgQ2zDqSBpbnZhbGlkZSBkYW5zICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIkVudHLDqWUgaW52YWxpZGVcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFZhbGV1ciBpbnZhbGlkZSBkYW5zICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgRW50csOpZSBpbnZhbGlkZWA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/fr.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/he.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/he.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"מחרוזת\", gender: \"f\" },\n number: { label: \"מספר\", gender: \"m\" },\n boolean: { label: \"ערך בוליאני\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"תאריך\", gender: \"m\" },\n array: { label: \"מערך\", gender: \"m\" },\n object: { label: \"אובייקט\", gender: \"m\" },\n null: { label: \"ערך ריק (null)\", gender: \"m\" },\n undefined: { label: \"ערך לא מוגדר (undefined)\", gender: \"m\" },\n symbol: { label: \"סימבול (Symbol)\", gender: \"m\" },\n function: { label: \"פונקציה\", gender: \"f\" },\n map: { label: \"מפה (Map)\", gender: \"f\" },\n set: { label: \"קבוצה (Set)\", gender: \"f\" },\n file: { label: \"קובץ\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"ערך לא ידוע\", gender: \"m\" },\n value: { label: \"ערך\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"תווים\", shortLabel: \"קצר\", longLabel: \"ארוך\" },\n file: { unit: \"בייטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n array: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n set: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n number: { unit: \"\", shortLabel: \"קטן\", longLabel: \"גדול\" }, // no unit\n };\n // Helpers — labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `ה${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"צריכה להיות\" : \"צריך להיות\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"קלט\", gender: \"m\" },\n email: { label: \"כתובת אימייל\", gender: \"f\" },\n url: { label: \"כתובת רשת\", gender: \"f\" },\n emoji: { label: \"אימוג'י\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"תאריך וזמן ISO\", gender: \"m\" },\n date: { label: \"תאריך ISO\", gender: \"m\" },\n time: { label: \"זמן ISO\", gender: \"m\" },\n duration: { label: \"משך זמן ISO\", gender: \"m\" },\n ipv4: { label: \"כתובת IPv4\", gender: \"f\" },\n ipv6: { label: \"כתובת IPv6\", gender: \"f\" },\n cidrv4: { label: \"טווח IPv4\", gender: \"m\" },\n cidrv6: { label: \"טווח IPv6\", gender: \"m\" },\n base64: { label: \"מחרוזת בבסיס 64\", gender: \"f\" },\n base64url: { label: \"מחרוזת בבסיס 64 לכתובות רשת\", gender: \"f\" },\n json_string: { label: \"מחרוזת JSON\", gender: \"f\" },\n e164: { label: \"מספר E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"קלט\", gender: \"m\" },\n includes: { label: \"קלט\", gender: \"m\" },\n lowercase: { label: \"קלט\", gender: \"m\" },\n starts_with: { label: \"קלט\", gender: \"m\" },\n uppercase: { label: \"קלט\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `קלט לא תקין: צריך להיות instanceof ${issue.expected}, התקבל ${received}`;\n }\n return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `ערך לא תקין: הערך חייב להיות ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => _core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" או \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"ארוך\"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או פחות\" : \"לכל היותר\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`;\n return `גדול מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} או פחות`\n : `פחות מ-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"גדול\"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"קצר\"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או יותר\" : \"לפחות\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`;\n return `קטן מדי: ${subject} צריך להיות ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"לפחות פריט אחד\" : \"לפחות פריט אחד\";\n return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} או יותר`\n : `יותר מ-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"קטן\"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings — use feminine grammar + ה׳ הידיעה\n if (_issue.format === \"starts_with\")\n return `המחרוזת חייבת להתחיל ב \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `המחרוזת חייבת להסתיים ב \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `המחרוזת חייבת לכלול \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"תקינה\" : \"תקין\";\n return `${noun} לא ${adjective}`;\n }\n case \"not_multiple_of\":\n return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `שדה לא תקין באובייקט`;\n }\n case \"invalid_union\":\n return \"קלט לא תקין\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `ערך לא תקין ב${place}`;\n }\n default:\n return `קלט לא תקין`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9oZS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsOEJBQThCO0FBQ2hELGtCQUFrQiw0QkFBNEI7QUFDOUMsbUJBQW1CLG1DQUFtQztBQUN0RCxrQkFBa0IsOEJBQThCO0FBQ2hELGdCQUFnQiw2QkFBNkI7QUFDN0MsaUJBQWlCLDRCQUE0QjtBQUM3QyxrQkFBa0IsK0JBQStCO0FBQ2pELGdCQUFnQixzQ0FBc0M7QUFDdEQscUJBQXFCLGdEQUFnRDtBQUNyRSxrQkFBa0IsdUNBQXVDO0FBQ3pELG9CQUFvQiwrQkFBK0I7QUFDbkQsZUFBZSxpQ0FBaUM7QUFDaEQsZUFBZSxtQ0FBbUM7QUFDbEQsZ0JBQWdCLDRCQUE0QjtBQUM1QyxtQkFBbUIsK0JBQStCO0FBQ2xELGVBQWUsMkJBQTJCO0FBQzFDLG1CQUFtQixtQ0FBbUM7QUFDdEQsaUJBQWlCLDJCQUEyQjtBQUM1QztBQUNBO0FBQ0E7QUFDQSxrQkFBa0IscURBQXFEO0FBQ3ZFLGdCQUFnQixzREFBc0Q7QUFDdEUsaUJBQWlCLHNEQUFzRDtBQUN2RSxlQUFlLHNEQUFzRDtBQUNyRSxrQkFBa0IsZ0RBQWdEO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLGFBQWE7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyQkFBMkI7QUFDNUMsaUJBQWlCLG9DQUFvQztBQUNyRCxlQUFlLGlDQUFpQztBQUNoRCxpQkFBaUIsK0JBQStCO0FBQ2hELGdCQUFnQiw0QkFBNEI7QUFDNUMsa0JBQWtCLDhCQUE4QjtBQUNoRCxnQkFBZ0IsNEJBQTRCO0FBQzVDLGdCQUFnQiw0QkFBNEI7QUFDNUMsaUJBQWlCLDZCQUE2QjtBQUM5QyxnQkFBZ0IsNEJB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LDBCQUEwQixNQUFNLEtBQUssVUFBVTtBQUMvQztBQUNBO0FBQ0EsNERBQTRELGNBQWM7QUFDMUU7QUFDQSw4QkFBOEIsbUNBQW1DLFNBQVMsbUNBQW1DLElBQUkscURBQWUsbUJBQW1CO0FBQ25KO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLE1BQU07QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGhlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgLy8gSGVicmV3IGxhYmVscyArIGdyYW1tYXRpY2FsIGdlbmRlclxuICAgIGNvbnN0IFR5cGVOYW1lcyA9IHtcbiAgICAgICAgc3RyaW5nOiB7IGxhYmVsOiBcItee15fXqNeV15bXqlwiLCBnZW5kZXI6IFwiZlwiIH0sXG4gICAgICAgIG51bWJlcjogeyBsYWJlbDogXCLXnteh16TXqFwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIGJvb2xlYW46IHsgbGFiZWw6IFwi16LXqNeaINeR15XXnNeZ15DXoNeZXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgYmlnaW50OiB7IGxhYmVsOiBcIkJpZ0ludFwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIGRhdGU6IHsgbGFiZWw6IFwi16rXkNeo15nXmlwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIGFycmF5OiB7IGxhYmVsOiBcItee16LXqNeaXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgb2JqZWN0OiB7IGxhYmVsOiBcIteQ15XXkdeZ15nXp9eYXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgbnVsbDogeyBsYWJlbDogXCLXoteo15og16jXmdenIChudWxsKVwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIHVuZGVmaW5lZDogeyBsYWJlbDogXCLXoteo15og15zXkCDXnteV15LXk9eoICh1bmRlZmluZWQpXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgc3ltYm9sOiB7IGxhYmVsOiBcIteh15nXnteR15XXnCAoU3ltYm9sKVwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIGZ1bmN0aW9uOiB7IGxhYmVsOiBcItek15XXoNen16bXmdeUXCIsIGdlbmRlcjogXCJmXCIgfSxcbiAgICAgICAgbWFwOiB7IGxhYmVsOiBcItee16TXlCAoTWFwKVwiLCBnZW5kZXI6IFwiZlwiIH0sXG4gICAgICAgIHNldDogeyBsYWJlbDogXCLXp9eR15XXpteUIChTZXQpXCIsIGdlbmRlcjogXCJmXCIgfSxcbiAgICAgICAgZmlsZTogeyBsYWJlbDogXCLXp9eV15HXpVwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIHByb21pc2U6IHsgbGFiZWw6IFwiUHJvbWlzZVwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIE5hTjogeyBsYWJlbDogXCJOYU5cIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICB1bmtub3duOiB7IGxhYmVsOiBcItei16jXmiDXnNeQINeZ15PXldeiXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgdmFsdWU6IHsgbGFiZWw6IFwi16LXqNeaXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICB9O1xuICAgIC8vIFNpemluZyB1bml0cyBmb3Igc2l6ZS1yZWxhdGVkIG1lc3NhZ2VzICsgbG9jYWxpemVkIG9yaWdpbiBsYWJlbHNcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCLXqteV15XXmdedXCIsIHNob3J0TGFiZWw6IFwi16fXpteoXCIsIGxvbmdMYWJlbDogXCLXkNeo15XXmlwiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCLXkdeZ15nXmNeZ151cIiwgc2hvcnRMYWJlbDogXCLXp9eY159cIiwgbG9uZ0xhYmVsOiBcIteS15PXldecXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCLXpNeo15nXmNeZ151cIiwgc2hvcnRMYWJlbDogXCLXp9eY159cIiwgbG9uZ0xhYmVsOiBcIteS15PXldecXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwi16TXqNeZ15jXmdedXCIsIHNob3J0TGFiZWw6IFwi16fXmNefXCIsIGxvbmdMYWJlbDogXCLXkteT15XXnFwiIH0sXG4gICAgICAgIG51bWJlcjogeyB1bml0OiBcIlwiLCBzaG9ydExhYmVsOiBcIten15jXn1wiLCBsb25nTGFiZWw6IFwi15LXk9eV15xcIiB9LCAvLyBubyB1bml0XG4gICAgfTtcbiAgICAvLyBIZWxwZXJzIOKAlCBsYWJlbHMsIGFydGljbGVzLCBhbmQgdmVyYnNcbiAgICBjb25zdCB0eXBlRW50cnkgPSAodCkgPT4gKHQgPyBUeXBlTmFtZXNbdF0gOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IHR5cGVMYWJlbCA9ICh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGUgPSB0eXBlRW50cnkodCk7XG4gICAgICAgIGlmIChlKVxuICAgICAgICAgICAgcmV0dXJuIGUubGFiZWw7XG4gICAgICAgIC8vIGZhbGxiYWNrOiBzaG93IHJhdyBzdHJpbmcgaWYgdW5rbm93blxuICAgICAgICByZXR1cm4gdCA/PyBUeXBlTmFtZXMudW5rbm93bi5sYWJlbDtcbiAgICB9O1xuICAgIGNvbnN0IHdpdGhEZWZpbml0ZSA9ICh0KSA9PiBg15Qke3R5cGVMYWJlbCh0KX1gO1xuICAgIGNvbnN0IHZlcmJGb3IgPSAodCkgPT4ge1xuICAgICAgICBjb25zdCBlID0gdHlwZUVudHJ5KHQpO1xuICAgICAgICBjb25zdCBnZW5kZXIgPSBlPy5nZW5kZXIgPz8gXCJtXCI7XG4gICAgICAgIHJldHVybiBnZW5kZXIgPT09IFwiZlwiID8gXCLXpteo15nXm9eUINec15TXmdeV16pcIiA6IFwi16bXqNeZ15og15zXlNeZ15XXqlwiO1xuICAgIH07XG4gICAgY29uc3QgZ2V0U2l6aW5nID0gKG9yaWdpbikgPT4ge1xuICAgICAgICBpZiAoIW9yaWdpbilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfTtcbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogeyBsYWJlbDogXCLXp9ec15hcIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICBlbWFpbDogeyBsYWJlbDogXCLXm9eq15XXkdeqINeQ15nXnteZ15nXnFwiLCBnZW5kZXI6IFwiZlwiIH0sXG4gICAgICAgIHVybDogeyBsYWJlbDogXCLXm9eq15XXkdeqINeo16nXqlwiLCBnZW5kZXI6IFwiZlwiIH0sXG4gICAgICAgIGVtb2ppOiB7IGxhYmVsOiBcIteQ15nXnteV15In15lcIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICB1dWlkOiB7IGxhYmVsOiBcIlVVSURcIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICBuYW5vaWQ6IHsgbGFiZWw6IFwibmFub2lkXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgZ3VpZDogeyBsYWJlbDogXCJHVUlEXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgY3VpZDogeyBsYWJlbDogXCJjdWlkXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgY3VpZDI6IHsgbGFiZWw6IFwiY3VpZDJcIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICB1bGlkOiB7IGxhYmVsOiBcIlVMSURcIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICB4aWQ6IHsgbGFiZWw6IFwiWElEXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAga3N1aWQ6IHsgbGFiZWw6IFwiS1NVSURcIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICBkYXRldGltZTogeyBsYWJlbDogXCLXqteQ16jXmdeaINeV15bXntefIElTT1wiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIGRhdGU6IHsgbGFiZWw6IFwi16rXkNeo15nXmiBJU09cIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICB0aW1lOiB7IGxhYmVsOiBcIteW157XnyBJU09cIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICBkdXJhdGlvbjogeyBsYWJlbDogXCLXntep15og15bXntefIElTT1wiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIGlwdjQ6IHsgbGFiZWw6IFwi15vXqteV15HXqiBJUHY0XCIsIGdlbmRlcjogXCJmXCIgfSxcbiAgICAgICAgaXB2NjogeyBsYWJlbDogXCLXm9eq15XXkdeqIElQdjZcIiwgZ2VuZGVyOiBcImZcIiB9LFxuICAgICAgICBjaWRydjQ6IHsgbGFiZWw6IFwi15jXldeV15cgSVB2NFwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIGNpZHJ2NjogeyBsYWJlbDogXCLXmNeV15XXlyBJUHY2XCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgYmFzZTY0OiB7IGxhYmVsOiBcItee15fXqNeV15bXqiDXkdeR16HXmdehIDY0XCIsIGdlbmRlcjogXCJmXCIgfSxcbiAgICAgICAgYmFzZTY0dXJsOiB7IGxhYmVsOiBcItee15fXqNeV15bXqiDXkdeR16HXmdehIDY0INec15vXqteV15HXldeqINeo16nXqlwiLCBnZW5kZXI6IFwiZlwiIH0sXG4gICAgICAgIGpzb25fc3RyaW5nOiB7IGxhYmVsOiBcItee15fXqNeV15bXqiBKU09OXCIsIGdlbmRlcjogXCJmXCIgfSxcbiAgICAgICAgZTE2NDogeyBsYWJlbDogXCLXnteh16TXqCBFLjE2NFwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIGp3dDogeyBsYWJlbDogXCJKV1RcIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgICAgICBlbmRzX3dpdGg6IHsgbGFiZWw6IFwi16fXnNeYXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgaW5jbHVkZXM6IHsgbGFiZWw6IFwi16fXnNeYXCIsIGdlbmRlcjogXCJtXCIgfSxcbiAgICAgICAgbG93ZXJjYXNlOiB7IGxhYmVsOiBcIten15zXmFwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIHN0YXJ0c193aXRoOiB7IGxhYmVsOiBcIten15zXmFwiLCBnZW5kZXI6IFwibVwiIH0sXG4gICAgICAgIHVwcGVyY2FzZTogeyBsYWJlbDogXCLXp9ec15hcIiwgZ2VuZGVyOiBcIm1cIiB9LFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICAvLyBFeHBlY3RlZCB0eXBlOiBzaG93IHdpdGhvdXQgZGVmaW5pdGUgYXJ0aWNsZSBmb3IgY2xlYXJlciBIZWJyZXdcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZEtleSA9IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbZXhwZWN0ZWRLZXkgPz8gXCJcIl0gPz8gdHlwZUxhYmVsKGV4cGVjdGVkS2V5KTtcbiAgICAgICAgICAgICAgICAvLyBSZWNlaXZlZDogc2hvdyBsb2NhbGl6ZWQgbGFiZWwgaWYga25vd24sIG90aGVyd2lzZSBjb25zdHJ1Y3Rvci9yYXdcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyBUeXBlTmFtZXNbcmVjZWl2ZWRUeXBlXT8ubGFiZWwgPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNen15zXmCDXnNeQINeq16fXmdefOiDXpteo15nXmiDXnNeU15nXldeqIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sINeU16rXp9eR15wgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYNen15zXmCDXnNeQINeq16fXmdefOiDXpteo15nXmiDXnNeU15nXldeqICR7ZXhwZWN0ZWR9LCDXlNeq16fXkdecICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNei16jXmiDXnNeQINeq16fXmdefOiDXlNei16jXmiDXl9eZ15nXkSDXnNeU15nXldeqICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBKb2luIHZhbHVlcyB3aXRoIHByb3BlciBIZWJyZXcgZm9ybWF0dGluZ1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZ2lmaWVkID0gaXNzdWUudmFsdWVzLm1hcCgodikgPT4gdXRpbC5zdHJpbmdpZnlQcmltaXRpdmUodikpO1xuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg16LXqNeaINec15Ag16rXp9eZ1586INeU15DXpNep16jXldeZ15XXqiDXlNee16rXkNeZ157XldeqINeU158gJHtzdHJpbmdpZmllZFswXX0g15DXlSAke3N0cmluZ2lmaWVkWzFdfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEZvciAzKyB2YWx1ZXM6IFwiYVwiLCBcImJcIiDXkNeVIFwiY1wiXG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdFZhbHVlID0gc3RyaW5naWZpZWRbc3RyaW5naWZpZWQubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdFZhbHVlcyA9IHN0cmluZ2lmaWVkLnNsaWNlKDAsIC0xKS5qb2luKFwiLCBcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke3Jlc3RWYWx1ZXN9INeQ15UgJHtsYXN0VmFsdWV9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJqZWN0ID0gd2l0aERlZmluaXRlKGlzc3VlLm9yaWdpbiA/PyBcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS5vcmlnaW4gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3Igc3RyaW5ncyAtIG1vcmUgbmF0dXJhbCBIZWJyZXdcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3NpemluZz8ubG9uZ0xhYmVsID8/IFwi15DXqNeV15pcIn0g157Xk9eZOiAke3N1YmplY3R9INem16jXmdeb15Qg15zXlNeb15nXnCAke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmc/LnVuaXQgPz8gXCJcIn0gJHtpc3N1ZS5pbmNsdXNpdmUgPyBcIteQ15Ug16TXl9eV16pcIiA6IFwi15zXm9ecINeU15nXldeq16hcIn1gLnRyaW0oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLm9yaWdpbiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYXR1cmFsIEhlYnJldyBmb3IgbnVtYmVyc1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wYXJpc29uID0gaXNzdWUuaW5jbHVzaXZlID8gYNen15jXnyDXkNeVINep15XXldeUINecLSR7aXNzdWUubWF4aW11bX1gIDogYNen15jXnyDXni0ke2lzc3VlLm1heGltdW19YDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDXkteT15XXnCDXnteT15k6ICR7c3ViamVjdH0g16bXqNeZ15og15zXlNeZ15XXqiAke2NvbXBhcmlzb259YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLm9yaWdpbiA9PT0gXCJhcnJheVwiIHx8IGlzc3VlLm9yaWdpbiA9PT0gXCJzZXRcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYXR1cmFsIEhlYnJldyBmb3IgYXJyYXlzIGFuZCBzZXRzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcmIgPSBpc3N1ZS5vcmlnaW4gPT09IFwic2V0XCIgPyBcItem16jXmdeb15RcIiA6IFwi16bXqNeZ15pcIjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcGFyaXNvbiA9IGlzc3VlLmluY2x1c2l2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtpc3N1ZS5tYXhpbXVtfSAke3NpemluZz8udW5pdCA/PyBcIlwifSDXkNeVINek15fXldeqYFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBg16TXl9eV16og154tJHtpc3N1ZS5tYXhpbXVtfSAke3NpemluZz8udW5pdCA/PyBcIlwifWA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg15LXk9eV15wg157Xk9eZOiAke3N1YmplY3R9ICR7dmVyYn0g15zXlNeb15nXnCAke2NvbXBhcmlzb259YC50cmltKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJlID0gdmVyYkZvcihpc3N1ZS5vcmlnaW4gPz8gXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nPy51bml0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtzaXppbmcubG9uZ0xhYmVsfSDXnteT15k6ICR7c3ViamVjdH0gJHtiZX0gJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3NpemluZz8ubG9uZ0xhYmVsID8/IFwi15LXk9eV15xcIn0g157Xk9eZOiAke3N1YmplY3R9ICR7YmV9ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJqZWN0ID0gd2l0aERlZmluaXRlKGlzc3VlLm9yaWdpbiA/PyBcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS5vcmlnaW4gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3Igc3RyaW5ncyAtIG1vcmUgbmF0dXJhbCBIZWJyZXdcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3NpemluZz8uc2hvcnRMYWJlbCA/PyBcIten16bXqFwifSDXnteT15k6ICR7c3ViamVjdH0g16bXqNeZ15vXlCDXnNeU15vXmdecICR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZz8udW5pdCA/PyBcIlwifSAke2lzc3VlLmluY2x1c2l2ZSA/IFwi15DXlSDXmdeV16rXqFwiIDogXCLXnNek15fXldeqXCJ9YC50cmltKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS5vcmlnaW4gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTmF0dXJhbCBIZWJyZXcgZm9yIG51bWJlcnNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcGFyaXNvbiA9IGlzc3VlLmluY2x1c2l2ZSA/IGDXkteT15XXnCDXkNeVINep15XXldeUINecLSR7aXNzdWUubWluaW11bX1gIDogYNeS15PXldecINeeLSR7aXNzdWUubWluaW11bX1gO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNen15jXnyDXnteT15k6ICR7c3ViamVjdH0g16bXqNeZ15og15zXlNeZ15XXqiAke2NvbXBhcmlzb259YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLm9yaWdpbiA9PT0gXCJhcnJheVwiIHx8IGlzc3VlLm9yaWdpbiA9PT0gXCJzZXRcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBOYXR1cmFsIEhlYnJldyBmb3IgYXJyYXlzIGFuZCBzZXRzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcmIgPSBpc3N1ZS5vcmlnaW4gPT09IFwic2V0XCIgPyBcItem16jXmdeb15RcIiA6IFwi16bXqNeZ15pcIjtcbiAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBzaW5ndWxhciAobWluaW11bSA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLm1pbmltdW0gPT09IDEgJiYgaXNzdWUuaW5jbHVzaXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaW5ndWxhclBocmFzZSA9IGlzc3VlLm9yaWdpbiA9PT0gXCJzZXRcIiA/IFwi15zXpNeX15XXqiDXpNeo15nXmCDXkNeX15NcIiA6IFwi15zXpNeX15XXqiDXpNeo15nXmCDXkNeX15NcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBg16fXmNefINee15PXmTogJHtzdWJqZWN0fSAke3ZlcmJ9INec15TXm9eZ15wgJHtzaW5ndWxhclBocmFzZX1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBhcmlzb24gPSBpc3N1ZS5pbmNsdXNpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7aXNzdWUubWluaW11bX0gJHtzaXppbmc/LnVuaXQgPz8gXCJcIn0g15DXlSDXmdeV16rXqGBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYNeZ15XXqteoINeeLSR7aXNzdWUubWluaW11bX0gJHtzaXppbmc/LnVuaXQgPz8gXCJcIn1gO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNen15jXnyDXnteT15k6ICR7c3ViamVjdH0gJHt2ZXJifSDXnNeU15vXmdecICR7Y29tcGFyaXNvbn1gLnRyaW0oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3QgYmUgPSB2ZXJiRm9yKGlzc3VlLm9yaWdpbiA/PyBcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmc/LnVuaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3NpemluZy5zaG9ydExhYmVsfSDXnteT15k6ICR7c3ViamVjdH0gJHtiZX0gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3NpemluZz8uc2hvcnRMYWJlbCA/PyBcIten15jXn1wifSDXnteT15k6ICR7c3ViamVjdH0gJHtiZX0gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgLy8gVGhlc2UgYXBwbHkgdG8gc3RyaW5ncyDigJQgdXNlIGZlbWluaW5lIGdyYW1tYXIgKyDXlNezINeU15nXk9eZ16LXlFxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeU16rXl9eZ15wg15EgXCIke19pc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeh16rXmdeZ150g15EgXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeb15zXldecIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeU16rXkNeZ150g15zXqteR16DXmdeqICR7X2lzc3VlLnBhdHRlcm59YDtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgZ2VuZGVyIGFncmVlbWVudCBmb3IgZm9ybWF0c1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vdW5FbnRyeSA9IEZvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF07XG4gICAgICAgICAgICAgICAgY29uc3Qgbm91biA9IG5vdW5FbnRyeT8ubGFiZWwgPz8gX2lzc3VlLmZvcm1hdDtcbiAgICAgICAgICAgICAgICBjb25zdCBnZW5kZXIgPSBub3VuRW50cnk/LmdlbmRlciA/PyBcIm1cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGplY3RpdmUgPSBnZW5kZXIgPT09IFwiZlwiID8gXCLXqten15nXoNeUXCIgOiBcIteq16fXmdefXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25vdW59INec15AgJHthZGplY3RpdmV9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNee16HXpNeoINec15Ag16rXp9eZ1586INeX15nXmdeRINec15TXmdeV16og157Xm9ek15zXlCDXqdecICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDXntek16rXlyR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCLXldeqXCIgOiBcIlwifSDXnNeQINee15bXldeUJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcIteZ151cIiA6IFwi15RcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDXqdeT15Qg15zXkCDXqten15nXnyDXkdeQ15XXkdeZ15nXp9eYYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi16fXnNeYINec15Ag16rXp9eZ159cIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlID0gd2l0aERlZmluaXRlKGlzc3VlLm9yaWdpbiA/PyBcImFycmF5XCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBg16LXqNeaINec15Ag16rXp9eZ158g15Eke3BsYWNlfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBg16fXnNeYINec15Ag16rXp9eZ159gO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/he.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/hu.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/hu.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email cím\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO időbélyeg\",\n date: \"ISO dátum\",\n time: \"ISO idő\",\n duration: \"ISO időintervallum\",\n ipv4: \"IPv4 cím\",\n ipv6: \"IPv6 cím\",\n cidrv4: \"IPv4 tartomány\",\n cidrv6: \"IPv6 tartomány\",\n base64: \"base64-kódolt string\",\n base64url: \"base64url-kódolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 szám\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"szám\",\n array: \"tömb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Érvénytelen bemenet: a várt érték instanceof ${issue.expected}, a kapott érték ${received}`;\n }\n return `Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Érvénytelen bemenet: a várt érték ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Érvénytelen opció: valamelyik érték várt ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n if (_issue.format === \"ends_with\")\n return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n if (_issue.format === \"includes\")\n return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n return `Érvénytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Érvénytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"Érvénytelen bemenet\";\n case \"invalid_element\":\n return `Érvénytelen érték: ${issue.origin}`;\n default:\n return `Érvénytelen bemenet`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9odS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGtDQUFrQztBQUNwRCxnQkFBZ0IsOEJBQThCO0FBQzlDLGlCQUFpQiw4QkFBOEI7QUFDL0MsZUFBZSw4QkFBOEI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLDJFQUEyRSxlQUFlLG1CQUFtQixTQUFTO0FBQ3RIO0FBQ0EsNERBQTRELFNBQVMsbUJBQW1CLFNBQVM7QUFDakc7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFLDZEQUF1QixrQkFBa0I7QUFDekcsbUVBQW1FLHFEQUFlLG9CQUFvQjtBQUN0RztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qyx5QkFBeUIsa0JBQWtCLElBQUksRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0I7QUFDM0kscURBQXFELHlCQUF5QixZQUFZLElBQUksRUFBRSx5QkFBeUI7QUFDekg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxjQUFjLG1CQUFtQixJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUN6STtBQUNBLHNEQUFzRCxjQUFjLFlBQVksSUFBSSxFQUFFLHlCQUF5QjtBQUMvRztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxjQUFjO0FBQ2pFO0FBQ0EsbURBQW1ELGNBQWM7QUFDakU7QUFDQSxtREFBbUQsZ0JBQWdCO0FBQ25FO0FBQ0Esa0RBQWtELGdCQUFnQjtBQUNsRSxzQ0FBc0MsZ0RBQWdEO0FBQ3RGO0FBQ0E7QUFDQSw0Q0FBNEMsZUFBZTtBQUMzRDtBQUNBLDBDQUEwQyxpQ0FBaUMsSUFBSSxxREFBZSxtQkFBbUI7QUFDakg7QUFDQSw0Q0FBNEMsYUFBYTtBQUN6RDtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsYUFBYTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGh1LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwia2FyYWt0ZXJcIiwgdmVyYjogXCJsZWd5ZW5cIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYnl0ZVwiLCB2ZXJiOiBcImxlZ3llblwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwiZWxlbVwiLCB2ZXJiOiBcImxlZ3llblwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcImVsZW1cIiwgdmVyYjogXCJsZWd5ZW5cIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcImJlbWVuZXRcIixcbiAgICAgICAgZW1haWw6IFwiZW1haWwgY8OtbVwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTyBpZMWRYsOpbHllZ1wiLFxuICAgICAgICBkYXRlOiBcIklTTyBkw6F0dW1cIixcbiAgICAgICAgdGltZTogXCJJU08gaWTFkVwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08gaWTFkWludGVydmFsbHVtXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NCBjw61tXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiBjw61tXCIsXG4gICAgICAgIGNpZHJ2NDogXCJJUHY0IHRhcnRvbcOhbnlcIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYgdGFydG9tw6FueVwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LWvDs2RvbHQgc3RyaW5nXCIsXG4gICAgICAgIGJhc2U2NHVybDogXCJiYXNlNjR1cmwta8OzZG9sdCBzdHJpbmdcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTiBzdHJpbmdcIixcbiAgICAgICAgZTE2NDogXCJFLjE2NCBzesOhbVwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwiYmVtZW5ldFwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICAgICAgbnVtYmVyOiBcInN6w6FtXCIsXG4gICAgICAgIGFycmF5OiBcInTDtm1iXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sIGEga2Fwb3R0IMOpcnTDqWsgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrICR7ZXhwZWN0ZWR9LCBhIGthcG90dCDDqXJ0w6lrICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDDiXJ2w6lueXRlbGVuIG9wY2nDszogdmFsYW1lbHlpayDDqXJ0w6lrIHbDoXJ0ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUw7psIG5hZ3k6ICR7aXNzdWUub3JpZ2luID8/IFwiw6lydMOpa1wifSBtw6lyZXRlIHTDumwgbmFneSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcImVsZW1cIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgVMO6bCBuYWd5OiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtpc3N1ZS5vcmlnaW4gPz8gXCLDqXJ0w6lrXCJ9IHTDumwgbmFneTogJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUw7psIGtpY3NpOiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtpc3N1ZS5vcmlnaW59IG3DqXJldGUgdMO6bCBraWNzaSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFTDumwga2ljc2k6IGEgYmVtZW5ldGkgw6lydMOpayAke2lzc3VlLm9yaWdpbn0gdMO6bCBraWNzaSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYMOJcnbDqW55dGVsZW4gc3RyaW5nOiBcIiR7X2lzc3VlLnByZWZpeH1cIiDDqXJ0w6lra2VsIGtlbGwga2V6ZMWRZG5pZWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgw4lydsOpbnl0ZWxlbiBzdHJpbmc6IFwiJHtfaXNzdWUuc3VmZml4fVwiIMOpcnTDqWtrZWwga2VsbCB2w6lnesWRZG5pZWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDDiXJ2w6lueXRlbGVuIHN0cmluZzogXCIke19pc3N1ZS5pbmNsdWRlc31cIiDDqXJ0w6lrZXQga2VsbCB0YXJ0YWxtYXpuaWFgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICR7X2lzc3VlLnBhdHRlcm59IG1pbnTDoW5hayBrZWxsIG1lZ2ZlbGVsbmllYDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYMOJcnbDqW55dGVsZW4gJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgw4lydsOpbnl0ZWxlbiBzesOhbTogJHtpc3N1ZS5kaXZpc29yfSB0w7ZiYnN6w7Zyw7Zzw6luZWsga2VsbCBsZW5uaWVgO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBJc21lcmV0bGVuIGt1bGNzJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYMOJcnbDqW55dGVsZW4ga3VsY3MgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiw4lydsOpbnl0ZWxlbiBiZW1lbmV0XCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDDiXJ2w6lueXRlbGVuIMOpcnTDqWs6ICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgw4lydsOpbnl0ZWxlbiBiZW1lbmV0YDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/hu.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/hy.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/hy.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"ա\", \"ե\", \"ը\", \"ի\", \"ո\", \"ու\", \"օ\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"ն\" : \"ը\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"նշան\",\n many: \"նշաններ\",\n },\n verb: \"ունենալ\",\n },\n file: {\n unit: {\n one: \"բայթ\",\n many: \"բայթեր\",\n },\n verb: \"ունենալ\",\n },\n array: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n set: {\n unit: {\n one: \"տարր\",\n many: \"տարրեր\",\n },\n verb: \"ունենալ\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"մուտք\",\n email: \"էլ. հասցե\",\n url: \"URL\",\n emoji: \"էմոջի\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO ամսաթիվ և ժամ\",\n date: \"ISO ամսաթիվ\",\n time: \"ISO ժամ\",\n duration: \"ISO տևողություն\",\n ipv4: \"IPv4 հասցե\",\n ipv6: \"IPv6 հասցե\",\n cidrv4: \"IPv4 միջակայք\",\n cidrv6: \"IPv6 միջակայք\",\n base64: \"base64 ձևաչափով տող\",\n base64url: \"base64url ձևաչափով տող\",\n json_string: \"JSON տող\",\n e164: \"E.164 համար\",\n jwt: \"JWT\",\n template_literal: \"մուտք\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"թիվ\",\n array: \"զանգված\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Սխալ մուտքագրում․ սպասվում էր instanceof ${issue.expected}, ստացվել է ${received}`;\n }\n return `Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Սխալ մուտքագրում․ սպասվում էր ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[1])}`;\n return `Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} կունենա ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} լինի ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} կունենա ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} լինի ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Սխալ տող․ պետք է սկսվի \"${_issue.prefix}\"-ով`;\n if (_issue.format === \"ends_with\")\n return `Սխալ տող․ պետք է ավարտվի \"${_issue.suffix}\"-ով`;\n if (_issue.format === \"includes\")\n return `Սխալ տող․ պետք է պարունակի \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;\n return `Սխալ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue.divisor}-ի`;\n case \"unrecognized_keys\":\n return `Չճանաչված բանալի${issue.keys.length > 1 ? \"ներ\" : \"\"}. ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Սխալ բանալի ${withDefiniteArticle(issue.origin)}-ում`;\n case \"invalid_union\":\n return \"Սխալ մուտքագրում\";\n case \"invalid_element\":\n return `Սխալ արժեք ${withDefiniteArticle(issue.origin)}-ում`;\n default:\n return `Սխալ մուտքագրում`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9oeS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsdUVBQXVFLGVBQWUsY0FBYyxTQUFTO0FBQzdHO0FBQ0Esd0RBQXdELFNBQVMsY0FBYyxTQUFTO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCw2REFBdUIsa0JBQWtCO0FBQ3JHLHdFQUF3RSxxREFBZSxvQkFBb0I7QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFLDhDQUE4QyxVQUFVLElBQUksRUFBRSwwQkFBMEIsRUFBRSxLQUFLO0FBQ2hLO0FBQ0EsNkRBQTZELDhDQUE4QyxPQUFPLElBQUksRUFBRSx5QkFBeUI7QUFDako7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsbUNBQW1DLFVBQVUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLEtBQUs7QUFDdEo7QUFDQSw4REFBOEQsbUNBQW1DLE9BQU8sSUFBSSxFQUFFLHlCQUF5QjtBQUN2STtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxjQUFjO0FBQ3BFO0FBQ0Esd0RBQXdELGNBQWM7QUFDdEU7QUFDQSwwREFBMEQsZ0JBQWdCO0FBQzFFO0FBQ0EsNkRBQTZELGdCQUFnQjtBQUM3RSwrQkFBK0IsZ0RBQWdEO0FBQy9FO0FBQ0E7QUFDQSwyREFBMkQsY0FBYztBQUN6RTtBQUNBLDBDQUEwQyxtQ0FBbUMsSUFBSSxxREFBZSxtQkFBbUI7QUFDbkg7QUFDQSxzQ0FBc0Msa0NBQWtDO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxrQ0FBa0M7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxoeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmZ1bmN0aW9uIGdldEFybWVuaWFuUGx1cmFsKGNvdW50LCBvbmUsIG1hbnkpIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoY291bnQpID09PSAxID8gb25lIDogbWFueTtcbn1cbmZ1bmN0aW9uIHdpdGhEZWZpbml0ZUFydGljbGUod29yZCkge1xuICAgIGlmICghd29yZClcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgY29uc3Qgdm93ZWxzID0gW1wi1aFcIiwgXCLVpVwiLCBcItWoXCIsIFwi1atcIiwgXCLVuFwiLCBcItW41oJcIiwgXCLWhVwiXTtcbiAgICBjb25zdCBsYXN0Q2hhciA9IHdvcmRbd29yZC5sZW5ndGggLSAxXTtcbiAgICByZXR1cm4gd29yZCArICh2b3dlbHMuaW5jbHVkZXMobGFzdENoYXIpID8gXCLVtlwiIDogXCLVqFwiKTtcbn1cbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzoge1xuICAgICAgICAgICAgdW5pdDoge1xuICAgICAgICAgICAgICAgIG9uZTogXCLVttW31aHVtlwiLFxuICAgICAgICAgICAgICAgIG1hbnk6IFwi1bbVt9Wh1bbVttWl1oBcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJiOiBcItW41oLVttWl1bbVodWsXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGZpbGU6IHtcbiAgICAgICAgICAgIHVuaXQ6IHtcbiAgICAgICAgICAgICAgICBvbmU6IFwi1aLVodW11alcIixcbiAgICAgICAgICAgICAgICBtYW55OiBcItWi1aHVtdWp1aXWgFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmI6IFwi1bjWgtW21aXVttWh1axcIixcbiAgICAgICAgfSxcbiAgICAgICAgYXJyYXk6IHtcbiAgICAgICAgICAgIHVuaXQ6IHtcbiAgICAgICAgICAgICAgICBvbmU6IFwi1b/VodaA1oBcIixcbiAgICAgICAgICAgICAgICBtYW55OiBcItW/1aHWgNaA1aXWgFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmI6IFwi1bjWgtW21aXVttWh1axcIixcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiB7XG4gICAgICAgICAgICB1bml0OiB7XG4gICAgICAgICAgICAgICAgb25lOiBcItW/1aHWgNaAXCIsXG4gICAgICAgICAgICAgICAgbWFueTogXCLVv9Wh1oDWgNWl1oBcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJiOiBcItW41oLVttWl1bbVodWsXCIsXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRTaXppbmcob3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBTaXphYmxlW29yaWdpbl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgRm9ybWF0RGljdGlvbmFyeSA9IHtcbiAgICAgICAgcmVnZXg6IFwi1bTVuNaC1b/WhFwiLFxuICAgICAgICBlbWFpbDogXCLVp9WsLiDVsNWh1b3WgdWlXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwi1afVtNW41bvVq1wiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJJU08g1aHVtNW91aHVqdWr1b4g1ocg1arVodW0XCIsXG4gICAgICAgIGRhdGU6IFwiSVNPINWh1bTVvdWh1anVq9W+XCIsXG4gICAgICAgIHRpbWU6IFwiSVNPINWq1aHVtFwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08g1b/Wh9W41bLVuNaC1anVtdW41oLVtlwiLFxuICAgICAgICBpcHY0OiBcIklQdjQg1bDVodW91oHVpVwiLFxuICAgICAgICBpcHY2OiBcIklQdjYg1bDVodW91oHVpVwiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NCDVtNWr1bvVodWv1aHVtdaEXCIsXG4gICAgICAgIGNpZHJ2NjogXCJJUHY2INW01avVu9Wh1a/VodW11oRcIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NCDVsdaH1aHVudWh1oPVuNW+INW/1bjVslwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsINWx1ofVodW51aHWg9W41b4g1b/VuNWyXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04g1b/VuNWyXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQg1bDVodW01aHWgFwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwi1bTVuNaC1b/WhFwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICAgICAgbnVtYmVyOiBcItWp1avVvlwiLFxuICAgICAgICBhcnJheTogXCLVptWh1bbVo9W+1aHVrlwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCDVvdW/1aHWgdW+1aXVrCDVpyAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtOKApCDVvdW61aHVvdW+1bjWgtW0INWn1oAgJHtleHBlY3RlZH0sINW91b/VodaB1b7VpdWsINWnICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtOKApCDVvdW61aHVvdW+1bjWgtW0INWn1oAgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMV0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDVjdWt1aHVrCDVv9Wh1oDVotWl1oDVodWv4oCkINW91brVodW91b7VuNaC1bQg1afWgCDVsNWl1b/Wh9W11aHVrNW21aXWgNWr1oEg1bTVpdWv1ajVnSAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBOdW1iZXIoaXNzdWUubWF4aW11bSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaXQgPSBnZXRBcm1lbmlhblBsdXJhbChtYXhWYWx1ZSwgc2l6aW5nLnVuaXQub25lLCBzaXppbmcudW5pdC5tYW55KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHt3aXRoRGVmaW5pdGVBcnRpY2xlKGlzc3VlLm9yaWdpbiA/PyBcItWh1oDVqtWl1oRcIil9INWv1bjWgtW21aXVttWhICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3VuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHt3aXRoRGVmaW5pdGVBcnRpY2xlKGlzc3VlLm9yaWdpbiA/PyBcItWh1oDVqtWl1oRcIil9INWs1avVttWrICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pblZhbHVlID0gTnVtYmVyKGlzc3VlLm1pbmltdW0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bml0ID0gZ2V0QXJtZW5pYW5QbHVyYWwobWluVmFsdWUsIHNpemluZy51bml0Lm9uZSwgc2l6aW5nLnVuaXQubWFueSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg1YnVodaD1aHVptWh1bbWgSDWg9W41oTWgCDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHt3aXRoRGVmaW5pdGVBcnRpY2xlKGlzc3VlLm9yaWdpbil9INWv1bjWgtW21aXVttWhICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3VuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDVidWh1oPVodWm1aHVttaBINaD1bjWhNaAINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke3dpdGhEZWZpbml0ZUFydGljbGUoaXNzdWUub3JpZ2luKX0g1azVq9W21asgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1b3Vr9W91b7VqyBcIiR7X2lzc3VlLnByZWZpeH1cIi3VuNW+YDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1aHVvtWh1oDVv9W+1asgXCIke19pc3N1ZS5zdWZmaXh9XCIt1bjVvmA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1brVodaA1bjWgtW21aHVr9WrIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINWw1aHVtNWh1brVodW/1aHVvdWt1aHVttWrICR7X2lzc3VlLnBhdHRlcm59INWx1ofVodW51aHWg9Wr1bZgO1xuICAgICAgICAgICAgICAgIHJldHVybiBg1Y3VrdWh1awgJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg1Y3VrdWh1awg1anVq9W+4oCkINW61aXVv9aEINWnINWi1aHVptW01aHVutWh1b/Vq9WvINWs1avVttWrICR7aXNzdWUuZGl2aXNvcn0t1atgO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDVidWz1aHVttWh1bnVvtWh1a4g1aLVodW21aHVrNWrJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcItW21aXWgFwiIDogXCJcIn0uICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg1Y3VrdWh1awg1aLVodW21aHVrNWrICR7d2l0aERlZmluaXRlQXJ0aWNsZShpc3N1ZS5vcmlnaW4pfS3VuNaC1bRgO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW0XCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDVjdWt1aHVrCDVodaA1arVpdaEICR7d2l0aERlZmluaXRlQXJ0aWNsZShpc3N1ZS5vcmlnaW4pfS3VuNaC1bRgO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bRgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/hy.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/id.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/id.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9pZC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLG9DQUFvQztBQUN0RCxnQkFBZ0IsZ0NBQWdDO0FBQ2hELGlCQUFpQixnQ0FBZ0M7QUFDakQsZUFBZSxnQ0FBZ0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsdUVBQXVFLGVBQWUsYUFBYSxTQUFTO0FBQzVHO0FBQ0Esd0RBQXdELFNBQVMsYUFBYSxTQUFTO0FBQ3ZGO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCw2REFBdUIsa0JBQWtCO0FBQ3JHLDBFQUEwRSxxREFBZSxvQkFBb0I7QUFDN0c7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QseUJBQXlCLFdBQVcsSUFBSSxFQUFFLDBCQUEwQixFQUFFLHdCQUF3QjtBQUN0SixvREFBb0QseUJBQXlCLFVBQVUsSUFBSSxFQUFFLHlCQUF5QjtBQUN0SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELGNBQWMsV0FBVyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUMvSDtBQUNBLG9EQUFvRCxjQUFjLFVBQVUsSUFBSSxFQUFFLHlCQUF5QjtBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdFQUF3RSxjQUFjO0FBQ3RGO0FBQ0EseUVBQXlFLGNBQWM7QUFDdkY7QUFDQSxxRUFBcUUsZ0JBQWdCO0FBQ3JGO0FBQ0Esb0VBQW9FLGVBQWU7QUFDbkYsMEJBQTBCLGlEQUFpRDtBQUMzRTtBQUNBO0FBQ0Esa0VBQWtFLGNBQWM7QUFDaEY7QUFDQSwrQ0FBK0MsaUNBQWlDLElBQUkscURBQWUsbUJBQW1CO0FBQ3RIO0FBQ0EsK0NBQStDLGFBQWE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLGFBQWE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxpZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcImthcmFrdGVyXCIsIHZlcmI6IFwibWVtaWxpa2lcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYnl0ZVwiLCB2ZXJiOiBcIm1lbWlsaWtpXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJpdGVtXCIsIHZlcmI6IFwibWVtaWxpa2lcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCJpdGVtXCIsIHZlcmI6IFwibWVtaWxpa2lcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcImlucHV0XCIsXG4gICAgICAgIGVtYWlsOiBcImFsYW1hdCBlbWFpbFwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcInRhbmdnYWwgZGFuIHdha3R1IGZvcm1hdCBJU09cIixcbiAgICAgICAgZGF0ZTogXCJ0YW5nZ2FsIGZvcm1hdCBJU09cIixcbiAgICAgICAgdGltZTogXCJqYW0gZm9ybWF0IElTT1wiLFxuICAgICAgICBkdXJhdGlvbjogXCJkdXJhc2kgZm9ybWF0IElTT1wiLFxuICAgICAgICBpcHY0OiBcImFsYW1hdCBJUHY0XCIsXG4gICAgICAgIGlwdjY6IFwiYWxhbWF0IElQdjZcIixcbiAgICAgICAgY2lkcnY0OiBcInJlbnRhbmcgYWxhbWF0IElQdjRcIixcbiAgICAgICAgY2lkcnY2OiBcInJlbnRhbmcgYWxhbWF0IElQdjZcIixcbiAgICAgICAgYmFzZTY0OiBcInN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwic3RyaW5nIGRlbmdhbiBlbmtvZGUgYmFzZTY0dXJsXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcInN0cmluZyBKU09OXCIsXG4gICAgICAgIGUxNjQ6IFwiYW5na2EgRS4xNjRcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcImlucHV0XCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBJbnB1dCB0aWRhayB2YWxpZDogZGloYXJhcGthbiBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCBkaXRlcmltYSAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgSW5wdXQgdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gJHtleHBlY3RlZH0sIGRpdGVyaW1hICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW5wdXQgdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBQaWxpaGFuIHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIHNhbGFoIHNhdHUgZGFyaSAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVGVybGFsdSBiZXNhcjogZGloYXJhcGthbiAke2lzc3VlLm9yaWdpbiA/PyBcInZhbHVlXCJ9IG1lbWlsaWtpICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVuXCJ9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFRlcmxhbHUgYmVzYXI6IGRpaGFyYXBrYW4gJHtpc3N1ZS5vcmlnaW4gPz8gXCJ2YWx1ZVwifSBtZW5qYWRpICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2lzc3VlLm9yaWdpbn0gbWVtaWxpa2kgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUZXJsYWx1IGtlY2lsOiBkaWhhcmFwa2FuICR7aXNzdWUub3JpZ2lufSBtZW5qYWRpICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBkaW11bGFpIGRlbmdhbiBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBiZXJha2hpciBkZW5nYW4gXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBtZW55ZXJ0YWthbiBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgc2VzdWFpIHBvbGEgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH0gdGlkYWsgdmFsaWRgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgQW5na2EgdGlkYWsgdmFsaWQ6IGhhcnVzIGtlbGlwYXRhbiBkYXJpICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBLdW5jaSB0aWRhayBkaWtlbmFsaSAke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgS3VuY2kgdGlkYWsgdmFsaWQgZGkgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiSW5wdXQgdGlkYWsgdmFsaWRcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5pbGFpIHRpZGFrIHZhbGlkIGRpICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgSW5wdXQgdGlkYWsgdmFsaWRgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/id.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/index.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/index.js ***!
|
||
\**********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ar: () => (/* reexport safe */ _ar_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ az: () => (/* reexport safe */ _az_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ be: () => (/* reexport safe */ _be_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ bg: () => (/* reexport safe */ _bg_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ ca: () => (/* reexport safe */ _ca_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ cs: () => (/* reexport safe */ _cs_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ da: () => (/* reexport safe */ _da_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ de: () => (/* reexport safe */ _de_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ en: () => (/* reexport safe */ _en_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ eo: () => (/* reexport safe */ _eo_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ es: () => (/* reexport safe */ _es_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ fa: () => (/* reexport safe */ _fa_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ fi: () => (/* reexport safe */ _fi_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ fr: () => (/* reexport safe */ _fr_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ frCA: () => (/* reexport safe */ _fr_CA_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ he: () => (/* reexport safe */ _he_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ hu: () => (/* reexport safe */ _hu_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ hy: () => (/* reexport safe */ _hy_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ id: () => (/* reexport safe */ _id_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]),\n/* harmony export */ is: () => (/* reexport safe */ _is_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]),\n/* harmony export */ it: () => (/* reexport safe */ _it_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]),\n/* harmony export */ ja: () => (/* reexport safe */ _ja_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]),\n/* harmony export */ ka: () => (/* reexport safe */ _ka_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]),\n/* harmony export */ kh: () => (/* reexport safe */ _kh_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]),\n/* harmony export */ km: () => (/* reexport safe */ _km_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]),\n/* harmony export */ ko: () => (/* reexport safe */ _ko_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]),\n/* harmony export */ lt: () => (/* reexport safe */ _lt_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]),\n/* harmony export */ mk: () => (/* reexport safe */ _mk_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]),\n/* harmony export */ ms: () => (/* reexport safe */ _ms_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]),\n/* harmony export */ nl: () => (/* reexport safe */ _nl_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]),\n/* harmony export */ no: () => (/* reexport safe */ _no_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]),\n/* harmony export */ ota: () => (/* reexport safe */ _ota_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]),\n/* harmony export */ pl: () => (/* reexport safe */ _pl_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]),\n/* harmony export */ ps: () => (/* reexport safe */ _ps_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]),\n/* harmony export */ pt: () => (/* reexport safe */ _pt_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]),\n/* harmony export */ ru: () => (/* reexport safe */ _ru_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]),\n/* harmony export */ sl: () => (/* reexport safe */ _sl_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]),\n/* harmony export */ sv: () => (/* reexport safe */ _sv_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]),\n/* harmony export */ ta: () => (/* reexport safe */ _ta_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]),\n/* harmony export */ th: () => (/* reexport safe */ _th_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]),\n/* harmony export */ tr: () => (/* reexport safe */ _tr_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]),\n/* harmony export */ ua: () => (/* reexport safe */ _ua_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]),\n/* harmony export */ uk: () => (/* reexport safe */ _uk_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]),\n/* harmony export */ ur: () => (/* reexport safe */ _ur_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]),\n/* harmony export */ uz: () => (/* reexport safe */ _uz_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]),\n/* harmony export */ vi: () => (/* reexport safe */ _vi_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]),\n/* harmony export */ yo: () => (/* reexport safe */ _yo_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]),\n/* harmony export */ zhCN: () => (/* reexport safe */ _zh_CN_js__WEBPACK_IMPORTED_MODULE_46__[\"default\"]),\n/* harmony export */ zhTW: () => (/* reexport safe */ _zh_TW_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _ar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ar.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ar.js\");\n/* harmony import */ var _az_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./az.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/az.js\");\n/* harmony import */ var _be_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./be.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/be.js\");\n/* harmony import */ var _bg_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bg.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/bg.js\");\n/* harmony import */ var _ca_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ca.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ca.js\");\n/* harmony import */ var _cs_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cs.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/cs.js\");\n/* harmony import */ var _da_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./da.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/da.js\");\n/* harmony import */ var _de_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./de.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/de.js\");\n/* harmony import */ var _en_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./en.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/en.js\");\n/* harmony import */ var _eo_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./eo.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/eo.js\");\n/* harmony import */ var _es_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./es.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/es.js\");\n/* harmony import */ var _fa_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./fa.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/fa.js\");\n/* harmony import */ var _fi_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./fi.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/fi.js\");\n/* harmony import */ var _fr_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./fr.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/fr.js\");\n/* harmony import */ var _fr_CA_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./fr-CA.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/fr-CA.js\");\n/* harmony import */ var _he_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./he.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/he.js\");\n/* harmony import */ var _hu_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./hu.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/hu.js\");\n/* harmony import */ var _hy_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./hy.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/hy.js\");\n/* harmony import */ var _id_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./id.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/id.js\");\n/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./is.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/is.js\");\n/* harmony import */ var _it_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./it.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/it.js\");\n/* harmony import */ var _ja_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./ja.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ja.js\");\n/* harmony import */ var _ka_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./ka.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ka.js\");\n/* harmony import */ var _kh_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./kh.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/kh.js\");\n/* harmony import */ var _km_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./km.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/km.js\");\n/* harmony import */ var _ko_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./ko.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ko.js\");\n/* harmony import */ var _lt_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./lt.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/lt.js\");\n/* harmony import */ var _mk_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./mk.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/mk.js\");\n/* harmony import */ var _ms_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./ms.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ms.js\");\n/* harmony import */ var _nl_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./nl.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/nl.js\");\n/* harmony import */ var _no_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./no.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/no.js\");\n/* harmony import */ var _ota_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./ota.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ota.js\");\n/* harmony import */ var _ps_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./ps.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ps.js\");\n/* harmony import */ var _pl_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./pl.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/pl.js\");\n/* harmony import */ var _pt_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./pt.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/pt.js\");\n/* harmony import */ var _ru_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./ru.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ru.js\");\n/* harmony import */ var _sl_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./sl.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/sl.js\");\n/* harmony import */ var _sv_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./sv.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/sv.js\");\n/* harmony import */ var _ta_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./ta.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ta.js\");\n/* harmony import */ var _th_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./th.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/th.js\");\n/* harmony import */ var _tr_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./tr.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/tr.js\");\n/* harmony import */ var _ua_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./ua.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ua.js\");\n/* harmony import */ var _uk_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./uk.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/uk.js\");\n/* harmony import */ var _ur_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./ur.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/ur.js\");\n/* harmony import */ var _uz_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./uz.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/uz.js\");\n/* harmony import */ var _vi_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./vi.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/vi.js\");\n/* harmony import */ var _zh_CN_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./zh-CN.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/zh-CN.js\");\n/* harmony import */ var _zh_TW_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./zh-TW.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/zh-TW.js\");\n/* harmony import */ var _yo_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./yo.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/yo.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0s7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNLO0FBQ0E7QUFDTCIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBhciB9IGZyb20gXCIuL2FyLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGF6IH0gZnJvbSBcIi4vYXouanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYmUgfSBmcm9tIFwiLi9iZS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBiZyB9IGZyb20gXCIuL2JnLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNhIH0gZnJvbSBcIi4vY2EuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3MgfSBmcm9tIFwiLi9jcy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkYSB9IGZyb20gXCIuL2RhLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlIH0gZnJvbSBcIi4vZGUuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW4gfSBmcm9tIFwiLi9lbi5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbyB9IGZyb20gXCIuL2VvLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVzIH0gZnJvbSBcIi4vZXMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmEgfSBmcm9tIFwiLi9mYS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmaSB9IGZyb20gXCIuL2ZpLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZyIH0gZnJvbSBcIi4vZnIuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZnJDQSB9IGZyb20gXCIuL2ZyLUNBLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhlIH0gZnJvbSBcIi4vaGUuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaHUgfSBmcm9tIFwiLi9odS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoeSB9IGZyb20gXCIuL2h5LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlkIH0gZnJvbSBcIi4vaWQuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXMgfSBmcm9tIFwiLi9pcy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpdCB9IGZyb20gXCIuL2l0LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGphIH0gZnJvbSBcIi4vamEuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMga2EgfSBmcm9tIFwiLi9rYS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBraCB9IGZyb20gXCIuL2toLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGttIH0gZnJvbSBcIi4va20uanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMga28gfSBmcm9tIFwiLi9rby5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsdCB9IGZyb20gXCIuL2x0LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1rIH0gZnJvbSBcIi4vbWsuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbXMgfSBmcm9tIFwiLi9tcy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBubCB9IGZyb20gXCIuL25sLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vIH0gZnJvbSBcIi4vbm8uanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb3RhIH0gZnJvbSBcIi4vb3RhLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBzIH0gZnJvbSBcIi4vcHMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGwgfSBmcm9tIFwiLi9wbC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwdCB9IGZyb20gXCIuL3B0LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJ1IH0gZnJvbSBcIi4vcnUuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2wgfSBmcm9tIFwiLi9zbC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdiB9IGZyb20gXCIuL3N2LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRhIH0gZnJvbSBcIi4vdGEuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGggfSBmcm9tIFwiLi90aC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0ciB9IGZyb20gXCIuL3RyLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVhIH0gZnJvbSBcIi4vdWEuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdWsgfSBmcm9tIFwiLi91ay5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1ciB9IGZyb20gXCIuL3VyLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHV6IH0gZnJvbSBcIi4vdXouanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmkgfSBmcm9tIFwiLi92aS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB6aENOIH0gZnJvbSBcIi4vemgtQ04uanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgemhUVyB9IGZyb20gXCIuL3poLVRXLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHlvIH0gZnJvbSBcIi4veW8uanNcIjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/index.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/is.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/is.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"að hafa\" },\n file: { unit: \"bæti\", verb: \"að hafa\" },\n array: { unit: \"hluti\", verb: \"að hafa\" },\n set: { unit: \"hluti\", verb: \"að hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefslóð\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og tími\",\n date: \"ISO dagsetning\",\n time: \"ISO tími\",\n duration: \"ISO tímalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 tölugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"númer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert ráð fyrir ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Ógilt val: má vera eitt af eftirfarandi ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} sé ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of lítið: gert er ráð fyrir að ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of lítið: gert er ráð fyrir að ${issue.origin} sé ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ógildur strengur: verður að byrja á \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ógildur strengur: verður að enda á \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ógildur strengur: verður að innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Röng tala: verður að vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Óþekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill í ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi í ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9pcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGdDQUFnQztBQUNsRCxnQkFBZ0IsK0JBQStCO0FBQy9DLGlCQUFpQixnQ0FBZ0M7QUFDakQsZUFBZSxnQ0FBZ0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLHdEQUF3RCxVQUFVLCtCQUErQixlQUFlO0FBQ2hIO0FBQ0Esb0RBQW9ELFVBQVUsb0JBQW9CLFNBQVM7QUFDM0Y7QUFDQTtBQUNBO0FBQ0EsMERBQTBELDZEQUF1QixrQkFBa0I7QUFDbkcsa0VBQWtFLHFEQUFlLG9CQUFvQjtBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCx5QkFBeUIsT0FBTyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsdUJBQXVCO0FBQ3RKLHlEQUF5RCx5QkFBeUIsS0FBSyxJQUFJLEVBQUUseUJBQXlCO0FBQ3RIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsY0FBYyxPQUFPLElBQUksRUFBRSwwQkFBMEIsRUFBRSxZQUFZO0FBQ2hJO0FBQ0EseURBQXlELGNBQWMsS0FBSyxJQUFJLEVBQUUseUJBQXlCO0FBQzNHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FLGNBQWM7QUFDakY7QUFDQTtBQUNBLGtFQUFrRSxjQUFjO0FBQ2hGO0FBQ0EscUVBQXFFLGdCQUFnQjtBQUNyRjtBQUNBLHlFQUF5RSxlQUFlO0FBQ3hGLGdDQUFnQyxnREFBZ0Q7QUFDaEY7QUFDQTtBQUNBLGlFQUFpRSxjQUFjO0FBQy9FO0FBQ0EsaUNBQWlDLGtEQUFrRCxJQUFJLHFEQUFlLG1CQUFtQjtBQUN6SDtBQUNBLDBDQUEwQyxhQUFhO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxhQUFhO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcaXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJzdGFmaVwiLCB2ZXJiOiBcImHDsCBoYWZhXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImLDpnRpXCIsIHZlcmI6IFwiYcOwIGhhZmFcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcImhsdXRpXCIsIHZlcmI6IFwiYcOwIGhhZmFcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCJobHV0aVwiLCB2ZXJiOiBcImHDsCBoYWZhXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJnaWxkaVwiLFxuICAgICAgICBlbWFpbDogXCJuZXRmYW5nXCIsXG4gICAgICAgIHVybDogXCJ2ZWZzbMOzw7BcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiSVNPIGRhZ3NldG5pbmcgb2cgdMOtbWlcIixcbiAgICAgICAgZGF0ZTogXCJJU08gZGFnc2V0bmluZ1wiLFxuICAgICAgICB0aW1lOiBcIklTTyB0w61taVwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08gdMOtbWFsZW5nZFwiLFxuICAgICAgICBpcHY0OiBcIklQdjQgYWRkcmVzc1wiLFxuICAgICAgICBpcHY2OiBcIklQdjYgYWRkcmVzc1wiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NCByYW5nZVwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2NiByYW5nZVwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LWVuY29kZWQgc3RyZW5ndXJcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcImJhc2U2NHVybC1lbmNvZGVkIHN0cmVuZ3VyXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04gc3RyZW5ndXJcIixcbiAgICAgICAgZTE2NDogXCJFLjE2NCB0w7ZsdWdpbGRpXCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCJnaWxkaVwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICAgICAgbnVtYmVyOiBcIm7Dum1lclwiLFxuICAgICAgICBhcnJheTogXCJmeWxraVwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBSYW5ndCBnaWxkaTogw57DuiBzbMOzc3QgaW5uICR7cmVjZWl2ZWR9IMO+YXIgc2VtIMOhIGHDsCB2ZXJhIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFJhbmd0IGdpbGRpOiDDnsO6IHNsw7NzdCBpbm4gJHtyZWNlaXZlZH0gw75hciBzZW0gw6EgYcOwIHZlcmEgJHtleHBlY3RlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBSYW5ndCBnaWxkaTogZ2VydCByw6HDsCBmeXJpciAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYMOTZ2lsdCB2YWw6IG3DoSB2ZXJhIGVpdHQgYWYgZWZ0aXJmYXJhbmRpICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBPZiBzdMOzcnQ6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7aXNzdWUub3JpZ2luID8/IFwiZ2lsZGlcIn0gaGFmaSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcImhsdXRpXCJ9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYE9mIHN0w7NydDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtpc3N1ZS5vcmlnaW4gPz8gXCJnaWxkaVwifSBzw6kgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBPZiBsw610acOwOiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2lzc3VlLm9yaWdpbn0gaGFmaSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYE9mIGzDrXRpw7A6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7aXNzdWUub3JpZ2lufSBzw6kgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBieXJqYSDDoSBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBlbmRhIMOhIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBpbm5paGFsZGEgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgZnlsZ2phIG15bnN0cmkgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgUmFuZ3QgJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgUsO2bmcgdGFsYTogdmVyw7B1ciBhw7AgdmVyYSBtYXJnZmVsZGkgYWYgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYMOTw75la2t0ICR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJpciBseWtsYXJcIiA6IFwidXIgbHlraWxsXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFJhbmd1ciBseWtpbGwgw60gJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiUmFuZ3QgZ2lsZGlcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFJhbmd0IGdpbGRpIMOtICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgUmFuZ3QgZ2lsZGlgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/is.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/it.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/it.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9pdC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGtDQUFrQztBQUNwRCxnQkFBZ0IsNkJBQTZCO0FBQzdDLGlCQUFpQixpQ0FBaUM7QUFDbEQsZUFBZSxpQ0FBaUM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLGtFQUFrRSxlQUFlLGFBQWEsU0FBUztBQUN2RztBQUNBLG1EQUFtRCxTQUFTLGFBQWEsU0FBUztBQUNsRjtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsNkRBQXVCLGtCQUFrQjtBQUNoRyw2REFBNkQscURBQWUsb0JBQW9CO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLDBCQUEwQixhQUFhLElBQUksRUFBRSwwQkFBMEIsRUFBRSwwQkFBMEI7QUFDaEoseUNBQXlDLDBCQUEwQixjQUFjLElBQUksRUFBRSx5QkFBeUI7QUFDaEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxjQUFjLGFBQWEsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDdkg7QUFDQSwwQ0FBMEMsY0FBYyxjQUFjLElBQUksRUFBRSx5QkFBeUI7QUFDckc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxRUFBcUUsY0FBYztBQUNuRjtBQUNBLHNFQUFzRSxjQUFjO0FBQ3BGO0FBQ0Esa0VBQWtFLGdCQUFnQjtBQUNsRjtBQUNBLGdGQUFnRixlQUFlO0FBQy9GLGtDQUFrQyxnREFBZ0Q7QUFDbEY7QUFDQTtBQUNBLHdFQUF3RSxjQUFjO0FBQ3RGO0FBQ0EsK0JBQStCLG1DQUFtQyxpQkFBaUIsa0NBQWtDLElBQUkscURBQWUsbUJBQW1CO0FBQzNKO0FBQ0EsK0NBQStDLGFBQWE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLGFBQWE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxpdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcImNhcmF0dGVyaVwiLCB2ZXJiOiBcImF2ZXJlXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImJ5dGVcIiwgdmVyYjogXCJhdmVyZVwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwiZWxlbWVudGlcIiwgdmVyYjogXCJhdmVyZVwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcImVsZW1lbnRpXCIsIHZlcmI6IFwiYXZlcmVcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcImlucHV0XCIsXG4gICAgICAgIGVtYWlsOiBcImluZGlyaXp6byBlbWFpbFwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcImRhdGEgZSBvcmEgSVNPXCIsXG4gICAgICAgIGRhdGU6IFwiZGF0YSBJU09cIixcbiAgICAgICAgdGltZTogXCJvcmEgSVNPXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcImR1cmF0YSBJU09cIixcbiAgICAgICAgaXB2NDogXCJpbmRpcml6em8gSVB2NFwiLFxuICAgICAgICBpcHY2OiBcImluZGlyaXp6byBJUHY2XCIsXG4gICAgICAgIGNpZHJ2NDogXCJpbnRlcnZhbGxvIElQdjRcIixcbiAgICAgICAgY2lkcnY2OiBcImludGVydmFsbG8gSVB2NlwiLFxuICAgICAgICBiYXNlNjQ6IFwic3RyaW5nYSBjb2RpZmljYXRhIGluIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiVVJMIGNvZGlmaWNhdGEgaW4gYmFzZTY0XCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcInN0cmluZ2EgSlNPTlwiLFxuICAgICAgICBlMTY0OiBcIm51bWVybyBFLjE2NFwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwiaW5wdXRcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCJudW1lcm9cIixcbiAgICAgICAgYXJyYXk6IFwidmV0dG9yZVwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwgcmljZXZ1dG8gJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyAke2V4cGVjdGVkfSwgcmljZXZ1dG8gJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBPcHppb25lIG5vbiB2YWxpZGE6IGF0dGVzbyB1bm8gdHJhICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUcm9wcG8gZ3JhbmRlOiAke2lzc3VlLm9yaWdpbiA/PyBcInZhbG9yZVwifSBkZXZlIGF2ZXJlICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVudGlcIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgVHJvcHBvIGdyYW5kZTogJHtpc3N1ZS5vcmlnaW4gPz8gXCJ2YWxvcmVcIn0gZGV2ZSBlc3NlcmUgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUcm9wcG8gcGljY29sbzogJHtpc3N1ZS5vcmlnaW59IGRldmUgYXZlcmUgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUcm9wcG8gcGljY29sbzogJHtpc3N1ZS5vcmlnaW59IGRldmUgZXNzZXJlICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGluaXppYXJlIGNvbiBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIHRlcm1pbmFyZSBjb24gXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGluY2x1ZGVyZSBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBjb3JyaXNwb25kZXJlIGFsIHBhdHRlcm4gJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOdW1lcm8gbm9uIHZhbGlkbzogZGV2ZSBlc3NlcmUgdW4gbXVsdGlwbG8gZGkgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYENoaWF2JHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcImlcIiA6IFwiZVwifSBub24gcmljb25vc2NpdXQke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwiZVwiIDogXCJhXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYENoaWF2ZSBub24gdmFsaWRhIGluICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIklucHV0IG5vbiB2YWxpZG9cIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFZhbG9yZSBub24gdmFsaWRvIGluICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgSW5wdXQgbm9uIHZhbGlkb2A7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/it.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ja.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ja.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"文字\", verb: \"である\" },\n file: { unit: \"バイト\", verb: \"である\" },\n array: { unit: \"要素\", verb: \"である\" },\n set: { unit: \"要素\", verb: \"である\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"入力値\",\n email: \"メールアドレス\",\n url: \"URL\",\n emoji: \"絵文字\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日時\",\n date: \"ISO日付\",\n time: \"ISO時刻\",\n duration: \"ISO期間\",\n ipv4: \"IPv4アドレス\",\n ipv6: \"IPv6アドレス\",\n cidrv4: \"IPv4範囲\",\n cidrv6: \"IPv6範囲\",\n base64: \"base64エンコード文字列\",\n base64url: \"base64urlエンコード文字列\",\n json_string: \"JSON文字列\",\n e164: \"E.164番号\",\n jwt: \"JWT\",\n template_literal: \"入力値\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数値\",\n array: \"配列\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;\n }\n return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無効な入力: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}が期待されました`;\n return `無効な選択: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n if (_issue.format === \"ends_with\")\n return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n if (_issue.format === \"includes\")\n return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n if (_issue.format === \"regex\")\n return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n return `無効な${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n case \"unrecognized_keys\":\n return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin}内の無効なキー`;\n case \"invalid_union\":\n return \"無効な入力\";\n case \"invalid_element\":\n return `${issue.origin}内の無効な値`;\n default:\n return `無効な入力`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9qYS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHlCQUF5QjtBQUMzQyxnQkFBZ0IsMEJBQTBCO0FBQzFDLGlCQUFpQix5QkFBeUI7QUFDMUMsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLGdEQUFnRCxlQUFlLFlBQVksU0FBUztBQUNwRjtBQUNBLGlDQUFpQyxTQUFTLFlBQVksU0FBUztBQUMvRDtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsNkRBQXVCLGtCQUFrQjtBQUM5RSxpQ0FBaUMscURBQWUsb0JBQW9CO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLG9CQUFvQixHQUFHLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLElBQUk7QUFDbEgsa0NBQWtDLG9CQUFvQixHQUFHLHlCQUF5QixFQUFFLElBQUk7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxhQUFhLEdBQUcseUJBQXlCLEVBQUUsWUFBWSxFQUFFLElBQUk7QUFDbkcsa0NBQWtDLGFBQWEsR0FBRyx5QkFBeUIsRUFBRSxJQUFJO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLGNBQWM7QUFDckQ7QUFDQSx1Q0FBdUMsY0FBYztBQUNyRDtBQUNBLHVDQUF1QyxnQkFBZ0I7QUFDdkQ7QUFDQSwwQ0FBMEMsZUFBZTtBQUN6RCw2QkFBNkIsZ0RBQWdEO0FBQzdFO0FBQ0E7QUFDQSxpQ0FBaUMsY0FBYztBQUMvQztBQUNBLG9DQUFvQyxpQ0FBaUMsSUFBSSxxREFBZSxrQkFBa0I7QUFDMUc7QUFDQSwwQkFBMEIsYUFBYTtBQUN2QztBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsYUFBYTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGphLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwi5paH5a2XXCIsIHZlcmI6IFwi44Gn44GC44KLXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcIuODkOOCpOODiFwiLCB2ZXJiOiBcIuOBp+OBguOCi1wiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwi6KaB57SgXCIsIHZlcmI6IFwi44Gn44GC44KLXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwi6KaB57SgXCIsIHZlcmI6IFwi44Gn44GC44KLXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCLlhaXlipvlgKRcIixcbiAgICAgICAgZW1haWw6IFwi44Oh44O844Or44Ki44OJ44Os44K5XCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwi57W15paH5a2XXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTT+aXpeaZglwiLFxuICAgICAgICBkYXRlOiBcIklTT+aXpeS7mFwiLFxuICAgICAgICB0aW1lOiBcIklTT+aZguWIu1wiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU0/mnJ/plpNcIixcbiAgICAgICAgaXB2NDogXCJJUHY044Ki44OJ44Os44K5XCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NuOCouODieODrOOCuVwiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NOevhOWbslwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2NuevhOWbslwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY044Ko44Oz44Kz44O844OJ5paH5a2X5YiXXCIsXG4gICAgICAgIGJhc2U2NHVybDogXCJiYXNlNjR1cmzjgqjjg7PjgrPjg7zjg4nmloflrZfliJdcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTuaWh+Wtl+WIl1wiLFxuICAgICAgICBlMTY0OiBcIkUuMTY055Wq5Y+3XCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCLlhaXlipvlgKRcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCLmlbDlgKRcIixcbiAgICAgICAgYXJyYXk6IFwi6YWN5YiXXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOeEoeWKueOBquWFpeWKmzogaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn+OBjOOAgSR7cmVjZWl2ZWR944GM5YWl5Yqb44GV44KM44G+44GX44GfYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDnhKHlirnjgarlhaXlips6ICR7ZXhwZWN0ZWR944GM5pyf5b6F44GV44KM44G+44GX44Gf44GM44CBJHtyZWNlaXZlZH3jgYzlhaXlipvjgZXjgozjgb7jgZfjgZ9gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDnhKHlirnjgarlhaXlips6ICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX3jgYzmnJ/lvoXjgZXjgozjgb7jgZfjgZ9gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg54Sh5Yq544Gq6YG45oqeOiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwi44CBXCIpfeOBruOBhOOBmuOCjOOBi+OBp+OBguOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCLku6XkuIvjgafjgYLjgotcIiA6IFwi44KI44KK5bCP44GV44GEXCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDlpKfjgY3jgZnjgY7jgovlgKQ6ICR7aXNzdWUub3JpZ2luID8/IFwi5YCkXCJ944GvJHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHtzaXppbmcudW5pdCA/PyBcIuimgee0oFwifSR7YWRqfeW/heimgeOBjOOBguOCiuOBvuOBmWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDlpKfjgY3jgZnjgY7jgovlgKQ6ICR7aXNzdWUub3JpZ2luID8/IFwi5YCkXCJ944GvJHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHthZGp95b+F6KaB44GM44GC44KK44G+44GZYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwi5Lul5LiK44Gn44GC44KLXCIgOiBcIuOCiOOCiuWkp+OBjeOBhFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg5bCP44GV44GZ44GO44KL5YCkOiAke2lzc3VlLm9yaWdpbn3jga8ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0ke3NpemluZy51bml0fSR7YWRqfeW/heimgeOBjOOBguOCiuOBvuOBmWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDlsI/jgZXjgZnjgY7jgovlgKQ6ICR7aXNzdWUub3JpZ2lufeOBryR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSR7YWRqfeW/heimgeOBjOOBguOCiuOBvuOBmWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg54Sh5Yq544Gq5paH5a2X5YiXOiBcIiR7X2lzc3VlLnByZWZpeH1cIuOBp+Wni+OBvuOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg54Sh5Yq544Gq5paH5a2X5YiXOiBcIiR7X2lzc3VlLnN1ZmZpeH1cIuOBp+e1guOCj+OCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDnhKHlirnjgarmloflrZfliJc6IFwiJHtfaXNzdWUuaW5jbHVkZXN9XCLjgpLlkKvjgoDlv4XopoHjgYzjgYLjgorjgb7jgZlgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg54Sh5Yq544Gq5paH5a2X5YiXOiDjg5Hjgr/jg7zjg7Mke19pc3N1ZS5wYXR0ZXJufeOBq+S4gOiHtOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDnhKHlirnjgaoke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDnhKHlirnjgarmlbDlgKQ6ICR7aXNzdWUuZGl2aXNvcn3jga7lgI3mlbDjgafjgYLjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDoqo3orZjjgZXjgozjgabjgYTjgarjgYTjgq3jg7wke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwi576kXCIgOiBcIlwifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCLjgIFcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtpc3N1ZS5vcmlnaW595YaF44Gu54Sh5Yq544Gq44Kt44O8YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi54Sh5Yq544Gq5YWl5YqbXCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2lzc3VlLm9yaWdpbn3lhoXjga7nhKHlirnjgarlgKRgO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOeEoeWKueOBquWFpeWKm2A7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ja.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ka.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ka.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"სიმბოლო\", verb: \"უნდა შეიცავდეს\" },\n file: { unit: \"ბაიტი\", verb: \"უნდა შეიცავდეს\" },\n array: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n set: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"შეყვანა\",\n email: \"ელ-ფოსტის მისამართი\",\n url: \"URL\",\n emoji: \"ემოჯი\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"თარიღი-დრო\",\n date: \"თარიღი\",\n time: \"დრო\",\n duration: \"ხანგრძლივობა\",\n ipv4: \"IPv4 მისამართი\",\n ipv6: \"IPv6 მისამართი\",\n cidrv4: \"IPv4 დიაპაზონი\",\n cidrv6: \"IPv6 დიაპაზონი\",\n base64: \"base64-კოდირებული სტრინგი\",\n base64url: \"base64url-კოდირებული სტრინგი\",\n json_string: \"JSON სტრინგი\",\n e164: \"E.164 ნომერი\",\n jwt: \"JWT\",\n template_literal: \"შეყვანა\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"რიცხვი\",\n string: \"სტრინგი\",\n boolean: \"ბულეანი\",\n function: \"ფუნქცია\",\n array: \"მასივი\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;\n }\n return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `არასწორი შეყვანა: მოსალოდნელი ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}-დან`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} იყოს ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `არასწორი სტრინგი: უნდა იწყებოდეს \"${_issue.prefix}\"-ით`;\n }\n if (_issue.format === \"ends_with\")\n return `არასწორი სტრინგი: უნდა მთავრდებოდეს \"${_issue.suffix}\"-ით`;\n if (_issue.format === \"includes\")\n return `არასწორი სტრინგი: უნდა შეიცავდეს \"${_issue.includes}\"-ს`;\n if (_issue.format === \"regex\")\n return `არასწორი სტრინგი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;\n return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;\n case \"unrecognized_keys\":\n return `უცნობი გასაღებ${issue.keys.length > 1 ? \"ები\" : \"ი\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `არასწორი გასაღები ${issue.origin}-ში`;\n case \"invalid_union\":\n return \"არასწორი შეყვანა\";\n case \"invalid_element\":\n return `არასწორი მნიშვნელობა ${issue.origin}-ში`;\n default:\n return `არასწორი შეყვანა`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9rYS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHlDQUF5QztBQUMzRCxnQkFBZ0IsdUNBQXVDO0FBQ3ZELGlCQUFpQiwwQ0FBMEM7QUFDM0QsZUFBZSwwQ0FBMEM7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLHVFQUF1RSxlQUFlLGFBQWEsU0FBUztBQUM1RztBQUNBLHdEQUF3RCxTQUFTLGFBQWEsU0FBUztBQUN2RjtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsNkRBQXVCLGtCQUFrQjtBQUNyRyxtRUFBbUUscURBQWUsb0JBQW9CO0FBQ3RHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELCtCQUErQixFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUN2SixxREFBcUQsK0JBQStCLE9BQU8sSUFBSSxFQUFFLHlCQUF5QjtBQUMxSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELGNBQWMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDeEk7QUFDQSx1REFBdUQsY0FBYyxPQUFPLElBQUksRUFBRSx5QkFBeUI7QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsY0FBYztBQUM5RTtBQUNBO0FBQ0EsbUVBQW1FLGNBQWM7QUFDakY7QUFDQSxnRUFBZ0UsZ0JBQWdCO0FBQ2hGO0FBQ0EsNEVBQTRFLGVBQWU7QUFDM0YsbUNBQW1DLGdEQUFnRDtBQUNuRjtBQUNBO0FBQ0EscURBQXFELGNBQWM7QUFDbkU7QUFDQSx3Q0FBd0Msb0NBQW9DLElBQUkscURBQWUsbUJBQW1CO0FBQ2xIO0FBQ0EsNENBQTRDLGFBQWE7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLGFBQWE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxrYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcIuGDoeGDmOGDm+GDkeGDneGDmuGDnVwiLCB2ZXJiOiBcIuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6FcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwi4YOR4YOQ4YOY4YOi4YOYXCIsIHZlcmI6IFwi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoVwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwi4YOU4YOa4YOU4YOb4YOU4YOc4YOi4YOYXCIsIHZlcmI6IFwi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoVwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcIuGDlOGDmuGDlOGDm+GDlOGDnOGDouGDmFwiLCB2ZXJiOiBcIuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6FcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcIuGDqOGDlOGDp+GDleGDkOGDnOGDkFwiLFxuICAgICAgICBlbWFpbDogXCLhg5Thg5ot4YOk4YOd4YOh4YOi4YOY4YOhIOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmFwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcIuGDlOGDm+GDneGDr+GDmFwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCLhg5fhg5Dhg6Dhg5jhg6bhg5gt4YOT4YOg4YOdXCIsXG4gICAgICAgIGRhdGU6IFwi4YOX4YOQ4YOg4YOY4YOm4YOYXCIsXG4gICAgICAgIHRpbWU6IFwi4YOT4YOg4YOdXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIuGDruGDkOGDnOGDkuGDoOGDq+GDmuGDmOGDleGDneGDkeGDkFwiLFxuICAgICAgICBpcHY0OiBcIklQdjQg4YOb4YOY4YOh4YOQ4YOb4YOQ4YOg4YOX4YOYXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5hcIixcbiAgICAgICAgY2lkcnY0OiBcIklQdjQg4YOT4YOY4YOQ4YOe4YOQ4YOW4YOd4YOc4YOYXCIsXG4gICAgICAgIGNpZHJ2NjogXCJJUHY2IOGDk+GDmOGDkOGDnuGDkOGDluGDneGDnOGDmFwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5hcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcImJhc2U2NHVybC3hg5nhg53hg5Phg5jhg6Dhg5Thg5Hhg6Phg5rhg5gg4YOh4YOi4YOg4YOY4YOc4YOS4YOYXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04g4YOh4YOi4YOg4YOY4YOc4YOS4YOYXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQg4YOc4YOd4YOb4YOU4YOg4YOYXCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCLhg6jhg5Thg6fhg5Xhg5Dhg5zhg5BcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCLhg6Dhg5jhg6rhg67hg5Xhg5hcIixcbiAgICAgICAgc3RyaW5nOiBcIuGDoeGDouGDoOGDmOGDnOGDkuGDmFwiLFxuICAgICAgICBib29sZWFuOiBcIuGDkeGDo+GDmuGDlOGDkOGDnOGDmFwiLFxuICAgICAgICBmdW5jdGlvbjogXCLhg6Thg6Phg5zhg6Xhg6rhg5jhg5BcIixcbiAgICAgICAgYXJyYXk6IFwi4YOb4YOQ4YOh4YOY4YOV4YOYXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCDhg5vhg5jhg6bhg5Thg5Hhg6Phg5rhg5ggJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2V4cGVjdGVkfSwg4YOb4YOY4YOm4YOU4YOR4YOj4YOa4YOYICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDkOGDoOGDmOGDkOGDnOGDouGDmDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOY4YOQIOGDlOGDoOGDly3hg5Thg6Dhg5fhg5ggJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9LeGDk+GDkOGDnGA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOT4YOY4YOT4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtpc3N1ZS5vcmlnaW4gPz8gXCLhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5BcIn0gJHtzaXppbmcudmVyYn0gJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg5Phg5jhg5Phg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2lzc3VlLm9yaWdpbiA/PyBcIuGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkFwifSDhg5jhg6fhg53hg6EgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtpc3N1ZS5vcmlnaW59ICR7c2l6aW5nLnZlcmJ9ICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDnuGDkOGDouGDkOGDoOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7aXNzdWUub3JpZ2lufSDhg5jhg6fhg53hg6EgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Hhg6Lhg6Dhg5jhg5zhg5Lhg5g6IOGDo+GDnOGDk+GDkCDhg5jhg6zhg6fhg5Thg5Hhg53hg5Phg5Thg6EgXCIke19pc3N1ZS5wcmVmaXh9XCIt4YOY4YOXYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDoeGDouGDoOGDmOGDnOGDkuGDmDog4YOj4YOc4YOT4YOQIOGDm+GDl+GDkOGDleGDoOGDk+GDlOGDkeGDneGDk+GDlOGDoSBcIiR7X2lzc3VlLnN1ZmZpeH1cIi3hg5jhg5dgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDoeGDouGDoOGDmOGDnOGDkuGDmDog4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiLeGDoWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOh4YOi4YOg4YOY4YOc4YOS4YOYOiDhg6Phg5zhg5Phg5Ag4YOo4YOU4YOU4YOh4YOQ4YOR4YOQ4YOb4YOU4YOR4YOd4YOT4YOU4YOhIOGDqOGDkOGDkeGDmuGDneGDnOGDoSAke19pc3N1ZS5wYXR0ZXJufWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5ggJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDoOGDmOGDquGDruGDleGDmDog4YOj4YOc4YOT4YOQIOGDmOGDp+GDneGDoSAke2lzc3VlLmRpdmlzb3J9LeGDmOGDoSDhg6/hg5Thg6Dhg5Dhg5Phg5hgO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDhg6Phg6rhg5zhg53hg5Hhg5gg4YOS4YOQ4YOh4YOQ4YOm4YOU4YORJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcIuGDlOGDkeGDmFwiIDogXCLhg5hcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDkuGDkOGDoeGDkOGDpuGDlOGDkeGDmCAke2lzc3VlLm9yaWdpbn0t4YOo4YOYYDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkFwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCAke2lzc3VlLm9yaWdpbn0t4YOo4YOYYDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQYDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ka.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/kh.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/kh.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _km_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./km.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/km.js\");\n\n/** @deprecated Use `km` instead. */\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_km_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9raC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF5QjtBQUN6QjtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCLFdBQVcsa0RBQUU7QUFDYiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xca2guanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGttIGZyb20gXCIuL2ttLmpzXCI7XG4vKiogQGRlcHJlY2F0ZWQgVXNlIGBrbWAgaW5zdGVhZC4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ga20oKTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/kh.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/km.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/km.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ទិន្នន័យបញ្ចូល\",\n email: \"អាសយដ្ឋានអ៊ីមែល\",\n url: \"URL\",\n emoji: \"សញ្ញាអារម្មណ៍\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n date: \"កាលបរិច្ឆេទ ISO\",\n time: \"ម៉ោង ISO\",\n duration: \"រយៈពេល ISO\",\n ipv4: \"អាសយដ្ឋាន IPv4\",\n ipv6: \"អាសយដ្ឋាន IPv6\",\n cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n json_string: \"ខ្សែអក្សរ JSON\",\n e164: \"លេខ E.164\",\n jwt: \"JWT\",\n template_literal: \"ទិន្នន័យបញ្ចូល\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"លេខ\",\n array: \"អារេ (Array)\",\n null: \"គ្មានតម្លៃ (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue.expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `រកឃើញសោមិនស្គាល់៖ ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n case \"invalid_union\":\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n case \"invalid_element\":\n return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n default:\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9rbS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGlDQUFpQztBQUNuRCxnQkFBZ0IsNEJBQTRCO0FBQzVDLGlCQUFpQiw4QkFBOEI7QUFDL0MsZUFBZSw4QkFBOEI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsK0VBQStFLGdCQUFnQixpQkFBaUIsU0FBUztBQUN6SDtBQUNBLGdFQUFnRSxVQUFVLGlCQUFpQixTQUFTO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSw2REFBdUIsa0JBQWtCO0FBQzdHLG9FQUFvRSxxREFBZSxvQkFBb0I7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLHNCQUFzQjtBQUNsSSwwQ0FBMEMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLHlCQUF5QjtBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLGNBQWMsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUM5RztBQUNBLDJDQUEyQyxjQUFjLEVBQUUsS0FBSyxFQUFFLHlCQUF5QjtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlFQUF5RSxjQUFjO0FBQ3ZGO0FBQ0E7QUFDQSxzRUFBc0UsY0FBYztBQUNwRjtBQUNBLGdFQUFnRSxnQkFBZ0I7QUFDaEY7QUFDQSwwRkFBMEYsZUFBZTtBQUN6Ryx5Q0FBeUMsZ0RBQWdEO0FBQ3pGO0FBQ0E7QUFDQSw4REFBOEQsY0FBYztBQUM1RTtBQUNBLDRDQUE0QyxxREFBZSxtQkFBbUI7QUFDOUU7QUFDQSxpREFBaUQsYUFBYTtBQUM5RDtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsYUFBYTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXGttLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwi4Z6P4Z694Z6i4Z6A4Z+S4Z6f4Z6aXCIsIHZlcmI6IFwi4Z6C4Z694Z6a4Z6Y4Z624Z6TXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcIuGelOGfg1wiLCB2ZXJiOiBcIuGeguGeveGemuGemOGetuGek1wiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwi4Z6S4Z624Z6P4Z67XCIsIHZlcmI6IFwi4Z6C4Z694Z6a4Z6Y4Z624Z6TXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwi4Z6S4Z624Z6P4Z67XCIsIHZlcmI6IFwi4Z6C4Z694Z6a4Z6Y4Z624Z6TXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnptcIixcbiAgICAgICAgZW1haWw6IFwi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6T4Z6i4Z+K4Z644Z6Y4Z+C4Z6bXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwi4Z6f4Z6J4Z+S4Z6J4Z624Z6i4Z624Z6a4Z6Y4Z+S4Z6Y4Z6O4Z+NXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIuGegOGetuGem+GelOGemuGet+GeheGfkuGehuGfgeGekSDhnpPhnrfhnoThnpjhn4nhn4ThnoQgSVNPXCIsXG4gICAgICAgIGRhdGU6IFwi4Z6A4Z624Z6b4Z6U4Z6a4Z634Z6F4Z+S4Z6G4Z+B4Z6RIElTT1wiLFxuICAgICAgICB0aW1lOiBcIuGemOGfieGfhOGehCBJU09cIixcbiAgICAgICAgZHVyYXRpb246IFwi4Z6a4Z6Z4Z+I4Z6W4Z+B4Z6bIElTT1wiLFxuICAgICAgICBpcHY0OiBcIuGeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY0XCIsXG4gICAgICAgIGlwdjY6IFwi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjZcIixcbiAgICAgICAgY2lkcnY0OiBcIuGeiuGfguGek+GeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY0XCIsXG4gICAgICAgIGNpZHJ2NjogXCLhnorhn4LhnpPhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NlwiLFxuICAgICAgICBiYXNlNjQ6IFwi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6i4Z+K4Z634Z6A4Z684Z6KIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6i4Z+K4Z634Z6A4Z684Z6KIGJhc2U2NHVybFwiLFxuICAgICAgICBqc29uX3N0cmluZzogXCLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnpogSlNPTlwiLFxuICAgICAgICBlMTY0OiBcIuGem+GfgeGegSBFLjE2NFwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwi4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6bXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwi4Z6b4Z+B4Z6BXCIsXG4gICAgICAgIGFycmF5OiBcIuGeouGetuGemuGfgSAoQXJyYXkpXCIsXG4gICAgICAgIG51bGw6IFwi4Z6C4Z+S4Z6Y4Z624Z6T4Z6P4Z6Y4Z+S4Z6b4Z+DIChudWxsKVwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0g4Z6U4Z+J4Z674Z6T4Z+S4Z6P4Z+C4Z6R4Z6R4Z694Z6b4Z6U4Z624Z6TICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZXhwZWN0ZWR9IOGelOGfieGeu+Gek+GfkuGej+GfguGekeGekeGeveGem+GelOGetuGekyAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDhnofhnpjhn5Lhnprhnr7hnp/hnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6H4Z624Z6Y4Z694Z6Z4Z6A4Z+S4Z6T4Z674Z6E4Z6F4Z+G4Z6O4Z+E4Z6YICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDhnpLhn4bhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7aXNzdWUub3JpZ2luID8/IFwi4Z6P4Z6Y4Z+S4Z6b4Z+DXCJ9ICR7YWRqfSAke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcIuGekuGetuGej+Geu1wifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDhnpLhn4bhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7aXNzdWUub3JpZ2luID8/IFwi4Z6P4Z6Y4Z+S4Z6b4Z+DXCJ9ICR7YWRqfSAke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOGej+GevOGeheGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtpc3N1ZS5vcmlnaW59ICR7YWRqfSAke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYOGej+GevOGeheGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtpc3N1ZS5vcmlnaW59ICR7YWRqfSAke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGeheGetuGelOGfi+GeleGfkuGej+GevuGemOGeiuGfhOGemSBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnpThnonhn5LhnoXhnpThn4vhnorhn4ThnpkgXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGemOGetuGekyBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhno/hn4LhnpXhn5LhnoLhnrzhnpXhn5LhnoLhnoThnpPhnrnhnoThnpHhnpjhn5LhnprhnoThn4vhnorhn4LhnpvhnpThnrbhnpPhnoDhn4bhno7hno/hn4sgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WICR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOGem+GfgeGegeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhno/hn4LhnofhnrbhnpbhnqDhnrvhnoLhnrvhno7hnpPhn4MgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOGemuGegOGeg+GevuGeieGen+GfhOGemOGet+Gek+Gen+GfkuGeguGetuGem+Gfi+GfliAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOGen+GfhOGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGek+GfheGegOGfkuGek+Geu+GehCAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenGA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpzhnpPhn4XhnoDhn5LhnpPhnrvhnoQgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpxgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/km.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ko.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ko.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"문자\", verb: \"to have\" },\n file: { unit: \"바이트\", verb: \"to have\" },\n array: { unit: \"개\", verb: \"to have\" },\n set: { unit: \"개\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"입력\",\n email: \"이메일 주소\",\n url: \"URL\",\n emoji: \"이모지\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 날짜시간\",\n date: \"ISO 날짜\",\n time: \"ISO 시간\",\n duration: \"ISO 기간\",\n ipv4: \"IPv4 주소\",\n ipv6: \"IPv6 주소\",\n cidrv4: \"IPv4 범위\",\n cidrv6: \"IPv6 범위\",\n base64: \"base64 인코딩 문자열\",\n base64url: \"base64url 인코딩 문자열\",\n json_string: \"JSON 문자열\",\n e164: \"E.164 번호\",\n jwt: \"JWT\",\n template_literal: \"입력\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `잘못된 입력: 예상 타입은 instanceof ${issue.expected}, 받은 타입은 ${received}입니다`;\n }\n return `잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `잘못된 입력: 값은 ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n return `잘못된 옵션: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"이하\" : \"미만\";\n const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing)\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"이상\" : \"초과\";\n const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing) {\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n }\n if (_issue.format === \"ends_with\")\n return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n if (_issue.format === \"includes\")\n return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n if (_issue.format === \"regex\")\n return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n case \"unrecognized_keys\":\n return `인식할 수 없는 키: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `잘못된 키: ${issue.origin}`;\n case \"invalid_union\":\n return `잘못된 입력`;\n case \"invalid_element\":\n return `잘못된 값: ${issue.origin}`;\n default:\n return `잘못된 입력`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9rby5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLDZCQUE2QjtBQUMvQyxnQkFBZ0IsOEJBQThCO0FBQzlDLGlCQUFpQiw0QkFBNEI7QUFDN0MsZUFBZSw0QkFBNEI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0Esd0RBQXdELGVBQWUsV0FBVyxTQUFTO0FBQzNGO0FBQ0EseUNBQXlDLFNBQVMsV0FBVyxTQUFTO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyw2REFBdUIsbUJBQW1CO0FBQ25GLGtDQUFrQyxxREFBZSx1QkFBdUI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9CQUFvQixZQUFZLHlCQUF5QixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTztBQUM5RywwQkFBMEIsb0JBQW9CLFlBQVksMEJBQTBCLEVBQUUsSUFBSSxFQUFFLE9BQU87QUFDbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsb0JBQW9CLGFBQWEseUJBQXlCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPO0FBQy9HO0FBQ0EsMEJBQTBCLG9CQUFvQixhQUFhLDBCQUEwQixFQUFFLElBQUksRUFBRSxPQUFPO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGNBQWM7QUFDdEQ7QUFDQTtBQUNBLHdDQUF3QyxjQUFjO0FBQ3REO0FBQ0Esd0NBQXdDLGdCQUFnQjtBQUN4RDtBQUNBLDJDQUEyQyxnQkFBZ0I7QUFDM0QsOEJBQThCLGdEQUFnRDtBQUM5RTtBQUNBO0FBQ0Esa0NBQWtDLGNBQWM7QUFDaEQ7QUFDQSxzQ0FBc0MscURBQWUsbUJBQW1CO0FBQ3hFO0FBQ0EsaUNBQWlDLGFBQWE7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLGFBQWE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxrby5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcIuusuOyekFwiLCB2ZXJiOiBcInRvIGhhdmVcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwi67CU7J207Yq4XCIsIHZlcmI6IFwidG8gaGF2ZVwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwi6rCcXCIsIHZlcmI6IFwidG8gaGF2ZVwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcIuqwnFwiLCB2ZXJiOiBcInRvIGhhdmVcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcIuyeheugpVwiLFxuICAgICAgICBlbWFpbDogXCLsnbTrqZTsnbwg7KO87IaMXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwi7J2066qo7KeAXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTyDrgqDsp5zsi5zqsIRcIixcbiAgICAgICAgZGF0ZTogXCJJU08g64Kg7KecXCIsXG4gICAgICAgIHRpbWU6IFwiSVNPIOyLnOqwhFwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08g6riw6rCEXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NCDso7zshoxcIixcbiAgICAgICAgaXB2NjogXCJJUHY2IOyjvOyGjFwiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NCDrspTsnIRcIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYg67KU7JyEXCIsXG4gICAgICAgIGJhc2U2NDogXCJiYXNlNjQg7J247L2U65SpIOusuOyekOyXtFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsIOyduOy9lOuUqSDrrLjsnpDsl7RcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTiDrrLjsnpDsl7RcIixcbiAgICAgICAgZTE2NDogXCJFLjE2NCDrsojtmLhcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcIuyeheugpVwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg7J6Y66q765CcIOyeheugpTog7JiI7IOBIO2DgOyeheydgCBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCDrsJvsnYAg7YOA7J6F7J2AICR7cmVjZWl2ZWR97J6F64uI64ukYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDsnpjrqrvrkJwg7J6F66ClOiDsmIjsg4Eg7YOA7J6F7J2AICR7ZXhwZWN0ZWR9LCDrsJvsnYAg7YOA7J6F7J2AICR7cmVjZWl2ZWR97J6F64uI64ukYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg7J6Y66q765CcIOyeheugpTog6rCS7J2AICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX0g7J207Ja07JW8IO2VqeuLiOuLpGA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDsnpjrqrvrkJwg7Ji17IWYOiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwi65iQ64qUIFwiKX0g7KSRIO2VmOuCmOyXrOyVvCDtlanri4jri6RgO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwi7J207ZWYXCIgOiBcIuuvuOunjFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1ZmZpeCA9IGFkaiA9PT0gXCLrr7jrp4xcIiA/IFwi7J207Ja07JW8IO2VqeuLiOuLpFwiIDogXCLsl6zslbwg7ZWp64uI64ukXCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5pdCA9IHNpemluZz8udW5pdCA/PyBcIuyalOyGjFwiO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtpc3N1ZS5vcmlnaW4gPz8gXCLqsJJcIn3snbQg64SI66y0IO2BveuLiOuLpDogJHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHt1bml0fSAke2Fkan0ke3N1ZmZpeH1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtpc3N1ZS5vcmlnaW4gPz8gXCLqsJJcIn3snbQg64SI66y0IO2BveuLiOuLpDogJHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YWRqfSR7c3VmZml4fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIuydtOyDgVwiIDogXCLstIjqs7xcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWZmaXggPSBhZGogPT09IFwi7J207IOBXCIgPyBcIuydtOyWtOyVvCDtlanri4jri6RcIiA6IFwi7Jes7JW8IO2VqeuLiOuLpFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuaXQgPSBzaXppbmc/LnVuaXQgPz8gXCLsmpTshoxcIjtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtpc3N1ZS5vcmlnaW4gPz8gXCLqsJJcIn3snbQg64SI66y0IOyekeyKteuLiOuLpDogJHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHt1bml0fSAke2Fkan0ke3N1ZmZpeH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2luID8/IFwi6rCSXCJ97J20IOuEiOustCDsnpHsirXri4jri6Q6ICR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke2Fkan0ke3N1ZmZpeH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg7J6Y66q765CcIOusuOyekOyXtDogXCIke19pc3N1ZS5wcmVmaXh9XCIo7Jy8KeuhnCDsi5zsnpHtlbTslbwg7ZWp64uI64ukYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg7J6Y66q765CcIOusuOyekOyXtDogXCIke19pc3N1ZS5zdWZmaXh9XCIo7Jy8KeuhnCDrgZ3rgpjslbwg7ZWp64uI64ukYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOyemOuqu+uQnCDrrLjsnpDsl7Q6IFwiJHtfaXNzdWUuaW5jbHVkZXN9XCLsnYQo66W8KSDtj6ztlajtlbTslbwg7ZWp64uI64ukYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOyemOuqu+uQnCDrrLjsnpDsl7Q6IOygleq3nOyLnSAke19pc3N1ZS5wYXR0ZXJufSDtjKjthLTqs7wg7J287LmY7ZW07JW8IO2VqeuLiOuLpGA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDsnpjrqrvrkJwgJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg7J6Y66q765CcIOyIq+yekDogJHtpc3N1ZS5kaXZpc29yfeydmCDrsLDsiJjsl6zslbwg7ZWp64uI64ukYDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg7J247Iud7ZWgIOyImCDsl4bripQg7YKkOiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOyemOuqu+uQnCDtgqQ6ICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg7J6Y66q765CcIOyeheugpWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDsnpjrqrvrkJwg6rCSOiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOyemOuqu+uQnCDsnoXroKVgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ko.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/lt.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/lt.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simbolių\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne ilgesnė kaip\",\n notInclusive: \"turi būti trumpesnė kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne trumpesnė kaip\",\n notInclusive: \"turi būti ilgesnė kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"baitų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi būti ne didesnis kaip\",\n notInclusive: \"turi būti mažesnis kaip\",\n },\n bigger: {\n inclusive: \"turi būti ne mažesnis kaip\",\n notInclusive: \"turi būti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"elementą\",\n few: \"elementus\",\n many: \"elementų\",\n },\n verb: {\n smaller: {\n inclusive: \"turi turėti ne daugiau kaip\",\n notInclusive: \"turi turėti mažiau kaip\",\n },\n bigger: {\n inclusive: \"turi turėti ne mažiau kaip\",\n notInclusive: \"turi turėti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"įvestis\",\n email: \"el. pašto adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukmė\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 užkoduota eilutė\",\n base64url: \"base64url užkoduota eilutė\",\n json_string: \"JSON eilutė\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"įvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skaičius\",\n bigint: \"sveikasis skaičius\",\n string: \"eilutė\",\n boolean: \"loginė reikšmė\",\n undefined: \"neapibrėžta reikšmė\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulinė reikšmė\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tikėtasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tikėtasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo būti ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Privalo būti vienas iš ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")} pasirinkimų`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"mažesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"elementų\"}`;\n const adj = issue.inclusive ? \"ne mažesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilutė privalo prasidėti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilutė privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilutė privalo įtraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilutė privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skaičius privalo būti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpažint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga įvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi klaidingą įvestį`;\n }\n default:\n return \"Klaidinga įvestis\";\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9sdC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsMkNBQTJDLFNBQVMsNEJBQTRCLGVBQWU7QUFDL0Y7QUFDQSx1Q0FBdUMsU0FBUyxpQkFBaUIsU0FBUztBQUMxRTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsNkRBQXVCLGtCQUFrQjtBQUNwRixpREFBaUQscURBQWUscUJBQXFCO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLCtEQUErRCxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSwwQkFBMEI7QUFDcEs7QUFDQSwwQkFBMEIsK0RBQStELFlBQVksS0FBSyxFQUFFLDBCQUEwQixFQUFFLGFBQWE7QUFDcko7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QiwrREFBK0QsRUFBRSxhQUFhLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCO0FBQ3BLO0FBQ0EsMEJBQTBCLCtEQUErRCxZQUFZLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxhQUFhO0FBQ3JKO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELGNBQWM7QUFDdEU7QUFDQTtBQUNBLHlEQUF5RCxjQUFjO0FBQ3ZFO0FBQ0EsdURBQXVELGdCQUFnQjtBQUN2RTtBQUNBLHNEQUFzRCxlQUFlO0FBQ3JFLHNDQUFzQyxnREFBZ0Q7QUFDdEY7QUFDQTtBQUNBLGdEQUFnRCxlQUFlO0FBQy9EO0FBQ0Esb0NBQW9DLG9DQUFvQyxNQUFNLG9DQUFvQyxJQUFJLHFEQUFlLG1CQUFtQjtBQUN4SjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsK0RBQStEO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxsdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGNhcGl0YWxpemVGaXJzdENoYXJhY3RlciA9ICh0ZXh0KSA9PiB7XG4gICAgcmV0dXJuIHRleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnNsaWNlKDEpO1xufTtcbmZ1bmN0aW9uIGdldFVuaXRUeXBlRnJvbU51bWJlcihudW1iZXIpIHtcbiAgICBjb25zdCBhYnMgPSBNYXRoLmFicyhudW1iZXIpO1xuICAgIGNvbnN0IGxhc3QgPSBhYnMgJSAxMDtcbiAgICBjb25zdCBsYXN0MiA9IGFicyAlIDEwMDtcbiAgICBpZiAoKGxhc3QyID49IDExICYmIGxhc3QyIDw9IDE5KSB8fCBsYXN0ID09PSAwKVxuICAgICAgICByZXR1cm4gXCJtYW55XCI7XG4gICAgaWYgKGxhc3QgPT09IDEpXG4gICAgICAgIHJldHVybiBcIm9uZVwiO1xuICAgIHJldHVybiBcImZld1wiO1xufVxuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7XG4gICAgICAgICAgICB1bml0OiB7XG4gICAgICAgICAgICAgICAgb25lOiBcInNpbWJvbGlzXCIsXG4gICAgICAgICAgICAgICAgZmV3OiBcInNpbWJvbGlhaVwiLFxuICAgICAgICAgICAgICAgIG1hbnk6IFwic2ltYm9sacWzXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyYjoge1xuICAgICAgICAgICAgICAgIHNtYWxsZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBcInR1cmkgYsWrdGkgbmUgaWxnZXNuxJcga2FpcFwiLFxuICAgICAgICAgICAgICAgICAgICBub3RJbmNsdXNpdmU6IFwidHVyaSBixat0aSB0cnVtcGVzbsSXIGthaXBcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJpZ2dlcjoge1xuICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IFwidHVyaSBixat0aSBuZSB0cnVtcGVzbsSXIGthaXBcIixcbiAgICAgICAgICAgICAgICAgICAgbm90SW5jbHVzaXZlOiBcInR1cmkgYsWrdGkgaWxnZXNuxJcga2FpcFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBmaWxlOiB7XG4gICAgICAgICAgICB1bml0OiB7XG4gICAgICAgICAgICAgICAgb25lOiBcImJhaXRhc1wiLFxuICAgICAgICAgICAgICAgIGZldzogXCJiYWl0YWlcIixcbiAgICAgICAgICAgICAgICBtYW55OiBcImJhaXTFs1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmI6IHtcbiAgICAgICAgICAgICAgICBzbWFsbGVyOiB7XG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogXCJ0dXJpIGLFq3RpIG5lIGRpZGVzbmlzIGthaXBcIixcbiAgICAgICAgICAgICAgICAgICAgbm90SW5jbHVzaXZlOiBcInR1cmkgYsWrdGkgbWHFvmVzbmlzIGthaXBcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJpZ2dlcjoge1xuICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IFwidHVyaSBixat0aSBuZSBtYcW+ZXNuaXMga2FpcFwiLFxuICAgICAgICAgICAgICAgICAgICBub3RJbmNsdXNpdmU6IFwidHVyaSBixat0aSBkaWRlc25pcyBrYWlwXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGFycmF5OiB7XG4gICAgICAgICAgICB1bml0OiB7XG4gICAgICAgICAgICAgICAgb25lOiBcImVsZW1lbnTEhVwiLFxuICAgICAgICAgICAgICAgIGZldzogXCJlbGVtZW50dXNcIixcbiAgICAgICAgICAgICAgICBtYW55OiBcImVsZW1lbnTFs1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmI6IHtcbiAgICAgICAgICAgICAgICBzbWFsbGVyOiB7XG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogXCJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwXCIsXG4gICAgICAgICAgICAgICAgICAgIG5vdEluY2x1c2l2ZTogXCJ0dXJpIHR1csSXdGkgbWHFvmlhdSBrYWlwXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBiaWdnZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBcInR1cmkgdHVyxJd0aSBuZSBtYcW+aWF1IGthaXBcIixcbiAgICAgICAgICAgICAgICAgICAgbm90SW5jbHVzaXZlOiBcInR1cmkgdHVyxJd0aSBkYXVnaWF1IGthaXBcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiB7XG4gICAgICAgICAgICB1bml0OiB7XG4gICAgICAgICAgICAgICAgb25lOiBcImVsZW1lbnTEhVwiLFxuICAgICAgICAgICAgICAgIGZldzogXCJlbGVtZW50dXNcIixcbiAgICAgICAgICAgICAgICBtYW55OiBcImVsZW1lbnTFs1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmI6IHtcbiAgICAgICAgICAgICAgICBzbWFsbGVyOiB7XG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogXCJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwXCIsXG4gICAgICAgICAgICAgICAgICAgIG5vdEluY2x1c2l2ZTogXCJ0dXJpIHR1csSXdGkgbWHFvmlhdSBrYWlwXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBiaWdnZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBcInR1cmkgdHVyxJd0aSBuZSBtYcW+aWF1IGthaXBcIixcbiAgICAgICAgICAgICAgICAgICAgbm90SW5jbHVzaXZlOiBcInR1cmkgdHVyxJd0aSBkYXVnaWF1IGthaXBcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4sIHVuaXRUeXBlLCBpbmNsdXNpdmUsIHRhcmdldFNob3VsZEJlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVuaXQ6IHJlc3VsdC51bml0W3VuaXRUeXBlXSxcbiAgICAgICAgICAgIHZlcmI6IHJlc3VsdC52ZXJiW3RhcmdldFNob3VsZEJlXVtpbmNsdXNpdmUgPyBcImluY2x1c2l2ZVwiIDogXCJub3RJbmNsdXNpdmVcIl0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcIsSvdmVzdGlzXCIsXG4gICAgICAgIGVtYWlsOiBcImVsLiBwYcWhdG8gYWRyZXNhc1wiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImphdXN0dWthc1wiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJJU08gZGF0YSBpciBsYWlrYXNcIixcbiAgICAgICAgZGF0ZTogXCJJU08gZGF0YVwiLFxuICAgICAgICB0aW1lOiBcIklTTyBsYWlrYXNcIixcbiAgICAgICAgZHVyYXRpb246IFwiSVNPIHRydWttxJdcIixcbiAgICAgICAgaXB2NDogXCJJUHY0IGFkcmVzYXNcIixcbiAgICAgICAgaXB2NjogXCJJUHY2IGFkcmVzYXNcIixcbiAgICAgICAgY2lkcnY0OiBcIklQdjQgdGlua2xvIHByZWZpa3NhcyAoQ0lEUilcIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYgdGlua2xvIHByZWZpa3NhcyAoQ0lEUilcIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NCB1xb5rb2R1b3RhIGVpbHV0xJdcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcImJhc2U2NHVybCB1xb5rb2R1b3RhIGVpbHV0xJdcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTiBlaWx1dMSXXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQgbnVtZXJpc1wiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwixK92ZXN0aXNcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCJza2FpxI1pdXNcIixcbiAgICAgICAgYmlnaW50OiBcInN2ZWlrYXNpcyBza2FpxI1pdXNcIixcbiAgICAgICAgc3RyaW5nOiBcImVpbHV0xJdcIixcbiAgICAgICAgYm9vbGVhbjogXCJsb2dpbsSXIHJlaWvFoW3El1wiLFxuICAgICAgICB1bmRlZmluZWQ6IFwibmVhcGlicsSXxb50YSByZWlrxaFtxJdcIixcbiAgICAgICAgZnVuY3Rpb246IFwiZnVua2NpamFcIixcbiAgICAgICAgc3ltYm9sOiBcInNpbWJvbGlzXCIsXG4gICAgICAgIGFycmF5OiBcIm1hc3l2YXNcIixcbiAgICAgICAgb2JqZWN0OiBcIm9iamVrdGFzXCIsXG4gICAgICAgIG51bGw6IFwibnVsaW7ElyByZWlrxaFtxJdcIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgR2F1dGFzIHRpcGFzICR7cmVjZWl2ZWR9LCBvIHRpa8SXdGFzaSAtIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYEdhdXRhcyB0aXBhcyAke3JlY2VpdmVkfSwgbyB0aWvEl3Rhc2kgLSAke2V4cGVjdGVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFByaXZhbG8gYsWrdGkgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBQcml2YWxvIGLFq3RpIHZpZW5hcyBpxaEgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9IHBhc2lyaW5raW3Fs2A7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gVHlwZURpY3Rpb25hcnlbaXNzdWUub3JpZ2luXSA/PyBpc3N1ZS5vcmlnaW47XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbiwgZ2V0VW5pdFR5cGVGcm9tTnVtYmVyKE51bWJlcihpc3N1ZS5tYXhpbXVtKSksIGlzc3VlLmluY2x1c2l2ZSA/PyBmYWxzZSwgXCJzbWFsbGVyXCIpO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmc/LnZlcmIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtjYXBpdGFsaXplRmlyc3RDaGFyYWN0ZXIob3JpZ2luID8/IGlzc3VlLm9yaWdpbiA/PyBcInJlaWvFoW3El1wiKX0gJHtzaXppbmcudmVyYn0gJHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCJlbGVtZW50xbNcIn1gO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwibmUgZGlkZXNuaXMga2FpcFwiIDogXCJtYcW+ZXNuaXMga2FpcFwiO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtjYXBpdGFsaXplRmlyc3RDaGFyYWN0ZXIob3JpZ2luID8/IGlzc3VlLm9yaWdpbiA/PyBcInJlaWvFoW3El1wiKX0gdHVyaSBixat0aSAke2Fkan0gJHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nPy51bml0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW4gPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5vcmlnaW5dID8/IGlzc3VlLm9yaWdpbjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luLCBnZXRVbml0VHlwZUZyb21OdW1iZXIoTnVtYmVyKGlzc3VlLm1pbmltdW0pKSwgaXNzdWUuaW5jbHVzaXZlID8/IGZhbHNlLCBcImJpZ2dlclwiKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nPy52ZXJiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y2FwaXRhbGl6ZUZpcnN0Q2hhcmFjdGVyKG9yaWdpbiA/PyBpc3N1ZS5vcmlnaW4gPz8gXCJyZWlrxaFtxJdcIil9ICR7c2l6aW5nLnZlcmJ9ICR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVudMWzXCJ9YDtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIm5lIG1hxb5lc25pcyBrYWlwXCIgOiBcImRpZGVzbmlzIGthaXBcIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y2FwaXRhbGl6ZUZpcnN0Q2hhcmFjdGVyKG9yaWdpbiA/PyBpc3N1ZS5vcmlnaW4gPz8gXCJyZWlrxaFtxJdcIil9IHR1cmkgYsWrdGkgJHthZGp9ICR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZz8udW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgRWlsdXTElyBwcml2YWxvIHByYXNpZMSXdGkgXCIke19pc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBFaWx1dMSXIHByaXZhbG8gcGFzaWJhaWd0aSBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBFaWx1dMSXIHByaXZhbG8gxK90cmF1a3RpIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgRWlsdXTElyBwcml2YWxvIGF0aXRpa3RpICR7X2lzc3VlLnBhdHRlcm59YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5ldGVpc2luZ2FzICR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFNrYWnEjWl1cyBwcml2YWxvIGLFq3RpICR7aXNzdWUuZGl2aXNvcn0ga2FydG90aW5pcy5gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZWF0cGHFvmludCR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJpXCIgOiBcImFzXCJ9IHJha3Qke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwiYWlcIiA6IFwiYXNcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIlJhc3RhcyBrbGFpZGluZ2FzIHJha3Rhc1wiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJLbGFpZGluZ2EgxK92ZXN0aXNcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLm9yaWdpbl0gPz8gaXNzdWUub3JpZ2luO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtjYXBpdGFsaXplRmlyc3RDaGFyYWN0ZXIob3JpZ2luID8/IGlzc3VlLm9yaWdpbiA/PyBcInJlaWvFoW3El1wiKX0gdHVyaSBrbGFpZGluZ8SFIMSvdmVzdMSvYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiS2xhaWRpbmdhIMSvdmVzdGlzXCI7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/lt.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/mk.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/mk.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"знаци\", verb: \"да имаат\" },\n file: { unit: \"бајти\", verb: \"да имаат\" },\n array: { unit: \"ставки\", verb: \"да имаат\" },\n set: { unit: \"ставки\", verb: \"да имаат\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"внес\",\n email: \"адреса на е-пошта\",\n url: \"URL\",\n emoji: \"емоџи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO датум и време\",\n date: \"ISO датум\",\n time: \"ISO време\",\n duration: \"ISO времетраење\",\n ipv4: \"IPv4 адреса\",\n ipv6: \"IPv6 адреса\",\n cidrv4: \"IPv4 опсег\",\n cidrv6: \"IPv6 опсег\",\n base64: \"base64-енкодирана низа\",\n base64url: \"base64url-енкодирана низа\",\n json_string: \"JSON низа\",\n e164: \"E.164 број\",\n jwt: \"JWT\",\n template_literal: \"внес\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"број\",\n array: \"низа\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Грешен внес: се очекува instanceof ${issue.expected}, примено ${received}`;\n }\n return `Грешен внес: се очекува ${expected}, примено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Грешана опција: се очекува една ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Грешен број: мора да биде делив со ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Грешен клуч во ${issue.origin}`;\n case \"invalid_union\":\n return \"Грешен внес\";\n case \"invalid_element\":\n return `Грешна вредност во ${issue.origin}`;\n default:\n return `Грешен внес`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9tay5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGlDQUFpQztBQUNuRCxnQkFBZ0IsaUNBQWlDO0FBQ2pELGlCQUFpQixrQ0FBa0M7QUFDbkQsZUFBZSxrQ0FBa0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLGlFQUFpRSxlQUFlLFlBQVksU0FBUztBQUNyRztBQUNBLGtEQUFrRCxTQUFTLFlBQVksU0FBUztBQUNoRjtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsNkRBQXVCLGtCQUFrQjtBQUMvRiwwREFBMEQscURBQWUsb0JBQW9CO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELDZCQUE2QixTQUFTLElBQUksRUFBRSwwQkFBMEIsRUFBRSwwQkFBMEI7QUFDM0oscURBQXFELDZCQUE2QixVQUFVLElBQUksRUFBRSx5QkFBeUI7QUFDM0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxjQUFjLFNBQVMsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDNUg7QUFDQSxtREFBbUQsY0FBYyxVQUFVLElBQUksRUFBRSx5QkFBeUI7QUFDMUc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0UsY0FBYztBQUNsRjtBQUNBO0FBQ0EsbUVBQW1FLGNBQWM7QUFDakY7QUFDQSxnRUFBZ0UsZ0JBQWdCO0FBQ2hGO0FBQ0EsMEVBQTBFLGVBQWU7QUFDekYsa0NBQWtDLGdEQUFnRDtBQUNsRjtBQUNBO0FBQ0EsNkRBQTZELGNBQWM7QUFDM0U7QUFDQSwwQkFBMEIsc0VBQXNFLElBQUkscURBQWUsbUJBQW1CO0FBQ3RJO0FBQ0EseUNBQXlDLGFBQWE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLGFBQWE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxtay5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcItC30L3QsNGG0LhcIiwgdmVyYjogXCLQtNCwINC40LzQsNCw0YJcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwi0LHQsNGY0YLQuFwiLCB2ZXJiOiBcItC00LAg0LjQvNCw0LDRglwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwi0YHRgtCw0LLQutC4XCIsIHZlcmI6IFwi0LTQsCDQuNC80LDQsNGCXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwi0YHRgtCw0LLQutC4XCIsIHZlcmI6IFwi0LTQsCDQuNC80LDQsNGCXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCLQstC90LXRgVwiLFxuICAgICAgICBlbWFpbDogXCLQsNC00YDQtdGB0LAg0L3QsCDQtS3Qv9C+0YjRgtCwXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwi0LXQvNC+0Z/QuFwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJJU08g0LTQsNGC0YPQvCDQuCDQstGA0LXQvNC1XCIsXG4gICAgICAgIGRhdGU6IFwiSVNPINC00LDRgtGD0LxcIixcbiAgICAgICAgdGltZTogXCJJU08g0LLRgNC10LzQtVwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08g0LLRgNC10LzQtdGC0YDQsNC10ZrQtVwiLFxuICAgICAgICBpcHY0OiBcIklQdjQg0LDQtNGA0LXRgdCwXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiDQsNC00YDQtdGB0LBcIixcbiAgICAgICAgY2lkcnY0OiBcIklQdjQg0L7Qv9GB0LXQs1wiLFxuICAgICAgICBjaWRydjY6IFwiSVB2NiDQvtC/0YHQtdCzXCIsXG4gICAgICAgIGJhc2U2NDogXCJiYXNlNjQt0LXQvdC60L7QtNC40YDQsNC90LAg0L3QuNC30LBcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcImJhc2U2NHVybC3QtdC90LrQvtC00LjRgNCw0L3QsCDQvdC40LfQsFwiLFxuICAgICAgICBqc29uX3N0cmluZzogXCJKU09OINC90LjQt9CwXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQg0LHRgNC+0ZhcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcItCy0L3QtdGBXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwi0LHRgNC+0ZhcIixcbiAgICAgICAgYXJyYXk6IFwi0L3QuNC30LBcIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0JPRgNC10YjQtdC9INCy0L3QtdGBOiDRgdC1INC+0YfQtdC60YPQstCwIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sINC/0YDQuNC80LXQvdC+ICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQk9GA0LXRiNC10L0g0LLQvdC10YE6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtleHBlY3RlZH0sINC/0YDQuNC80LXQvdC+ICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQk9GA0LXRiNCw0L3QsCDQvtC/0YbQuNGY0LA6INGB0LUg0L7Rh9C10LrRg9Cy0LAg0LXQtNC90LAgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCf0YDQtdC80L3QvtCz0YMg0LPQvtC70LXQvDog0YHQtSDQvtGH0LXQutGD0LLQsCAke2lzc3VlLm9yaWdpbiA/PyBcItCy0YDQtdC00L3QvtGB0YLQsFwifSDQtNCwINC40LzQsCAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcItC10LvQtdC80LXQvdGC0LhcIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg0J/RgNC10LzQvdC+0LPRgyDQs9C+0LvQtdC8OiDRgdC1INC+0YfQtdC60YPQstCwICR7aXNzdWUub3JpZ2luID8/IFwi0LLRgNC10LTQvdC+0YHRgtCwXCJ9INC00LAg0LHQuNC00LUgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDQn9GA0LXQvNC90L7Qs9GDINC80LDQuzog0YHQtSDQvtGH0LXQutGD0LLQsCAke2lzc3VlLm9yaWdpbn0g0LTQsCDQuNC80LAgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQn9GA0LXQvNC90L7Qs9GDINC80LDQuzog0YHQtSDQvtGH0LXQutGD0LLQsCAke2lzc3VlLm9yaWdpbn0g0LTQsCDQsdC40LTQtSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC30LDQv9C+0YfQvdGD0LLQsCDRgdC+IFwiJHtfaXNzdWUucHJlZml4fVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC30LDQstGA0YjRg9Cy0LAg0YHQviBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LLQutC70YPRh9GD0LLQsCBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQvtC00LPQvtCw0YDQsCDQvdCwINC/0LDRgtC10YDQvdC+0YIgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgSW52YWxpZCAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQk9GA0LXRiNC10L0g0LHRgNC+0Zg6INC80L7RgNCwINC00LAg0LHQuNC00LUg0LTQtdC70LjQsiDRgdC+ICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwi0J3QtdC/0YDQtdC/0L7Qt9C90LDQtdC90Lgg0LrQu9GD0YfQtdCy0LhcIiA6IFwi0J3QtdC/0YDQtdC/0L7Qt9C90LDQtdC9INC60LvRg9GHXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCT0YDQtdGI0LXQvSDQutC70YPRhyDQstC+ICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcItCT0YDQtdGI0LXQvSDQstC90LXRgVwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg0JPRgNC10YjQvdCwINCy0YDQtdC00L3QvtGB0YIg0LLQviAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCT0YDQtdGI0LXQvSDQstC90LXRgWA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/mk.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ms.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ms.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9tcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLG1DQUFtQztBQUNyRCxnQkFBZ0IsaUNBQWlDO0FBQ2pELGlCQUFpQixtQ0FBbUM7QUFDcEQsZUFBZSxtQ0FBbUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHFEQUFlO0FBQ3BEO0FBQ0E7QUFDQSxtRUFBbUUsZUFBZSxhQUFhLFNBQVM7QUFDeEc7QUFDQSxvREFBb0QsU0FBUyxhQUFhLFNBQVM7QUFDbkY7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELDZEQUF1QixrQkFBa0I7QUFDakcsMEVBQTBFLHFEQUFlLG9CQUFvQjtBQUM3RztBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCx5QkFBeUIsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLHdCQUF3QjtBQUMxSixrREFBa0QseUJBQXlCLFNBQVMsSUFBSSxFQUFFLHlCQUF5QjtBQUNuSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELGNBQWMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDbkk7QUFDQSxrREFBa0QsY0FBYyxTQUFTLElBQUksRUFBRSx5QkFBeUI7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0UsY0FBYztBQUNwRjtBQUNBLHVFQUF1RSxjQUFjO0FBQ3JGO0FBQ0EsbUVBQW1FLGdCQUFnQjtBQUNuRjtBQUNBLDJFQUEyRSxlQUFlO0FBQzFGLDBCQUEwQixpREFBaUQ7QUFDM0U7QUFDQTtBQUNBLDBEQUEwRCxjQUFjO0FBQ3hFO0FBQ0EsZ0RBQWdELHFEQUFlLG1CQUFtQjtBQUNsRjtBQUNBLGdEQUFnRCxhQUFhO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxhQUFhO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcbXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJha3NhcmFcIiwgdmVyYjogXCJtZW1wdW55YWlcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYmFpdFwiLCB2ZXJiOiBcIm1lbXB1bnlhaVwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwiZWxlbWVuXCIsIHZlcmI6IFwibWVtcHVueWFpXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwiZWxlbWVuXCIsIHZlcmI6IFwibWVtcHVueWFpXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJpbnB1dFwiLFxuICAgICAgICBlbWFpbDogXCJhbGFtYXQgZS1tZWxcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJ0YXJpa2ggbWFzYSBJU09cIixcbiAgICAgICAgZGF0ZTogXCJ0YXJpa2ggSVNPXCIsXG4gICAgICAgIHRpbWU6IFwibWFzYSBJU09cIixcbiAgICAgICAgZHVyYXRpb246IFwidGVtcG9oIElTT1wiLFxuICAgICAgICBpcHY0OiBcImFsYW1hdCBJUHY0XCIsXG4gICAgICAgIGlwdjY6IFwiYWxhbWF0IElQdjZcIixcbiAgICAgICAgY2lkcnY0OiBcImp1bGF0IElQdjRcIixcbiAgICAgICAgY2lkcnY2OiBcImp1bGF0IElQdjZcIixcbiAgICAgICAgYmFzZTY0OiBcInN0cmluZyBkaWtvZGthbiBiYXNlNjRcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcInN0cmluZyBkaWtvZGthbiBiYXNlNjR1cmxcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwic3RyaW5nIEpTT05cIixcbiAgICAgICAgZTE2NDogXCJub21ib3IgRS4xNjRcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcImlucHV0XCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwibm9tYm9yXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwgZGl0ZXJpbWEgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgJHtleHBlY3RlZH0sIGRpdGVyaW1hICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFBpbGloYW4gdGlkYWsgc2FoOiBkaWphbmdrYSBzYWxhaCBzYXR1IGRhcmlwYWRhICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUZXJsYWx1IGJlc2FyOiBkaWphbmdrYSAke2lzc3VlLm9yaWdpbiA/PyBcIm5pbGFpXCJ9ICR7c2l6aW5nLnZlcmJ9ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVuXCJ9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7aXNzdWUub3JpZ2luID8/IFwibmlsYWlcIn0gYWRhbGFoICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVGVybGFsdSBrZWNpbDogZGlqYW5na2EgJHtpc3N1ZS5vcmlnaW59ICR7c2l6aW5nLnZlcmJ9ICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgVGVybGFsdSBrZWNpbDogZGlqYW5na2EgJHtpc3N1ZS5vcmlnaW59IGFkYWxhaCAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcm11bGEgZGVuZ2FuIFwiJHtfaXNzdWUucHJlZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBiZXJha2hpciBkZW5nYW4gXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgbWVuZ2FuZHVuZ2kgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBzZXBhZGFuIGRlbmdhbiBjb3JhayAke19pc3N1ZS5wYXR0ZXJufWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fSB0aWRhayBzYWhgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTm9tYm9yIHRpZGFrIHNhaDogcGVybHUgZ2FuZGFhbiAke2lzc3VlLmRpdmlzb3J9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgS3VuY2kgdGlkYWsgZGlrZW5hbGk6ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgS3VuY2kgdGlkYWsgc2FoIGRhbGFtICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIklucHV0IHRpZGFrIHNhaFwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTmlsYWkgdGlkYWsgc2FoIGRhbGFtICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgSW5wdXQgdGlkYWsgc2FoYDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ms.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/nl.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/nl.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht één van ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9ubC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLCtCQUErQjtBQUNqRCxnQkFBZ0IsOEJBQThCO0FBQzlDLGlCQUFpQixrQ0FBa0M7QUFDbkQsZUFBZSxrQ0FBa0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHFEQUFlO0FBQ3BEO0FBQ0E7QUFDQSxvRUFBb0UsZUFBZSxZQUFZLFNBQVM7QUFDeEc7QUFDQSxxREFBcUQsU0FBUyxZQUFZLFNBQVM7QUFDbkY7QUFDQTtBQUNBO0FBQ0EseURBQXlELDZEQUF1QixrQkFBa0I7QUFDbEcsNERBQTRELHFEQUFlLG9CQUFvQjtBQUMvRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLFNBQVMsaUJBQWlCLDBCQUEwQixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSw0QkFBNEIsRUFBRSxZQUFZO0FBQ25LLDZCQUE2QixTQUFTLGlCQUFpQiwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsMEJBQTBCO0FBQ25IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxVQUFVLGlCQUFpQixjQUFjLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLGFBQWEsRUFBRSxZQUFZO0FBQ3pJO0FBQ0EsNkJBQTZCLFVBQVUsaUJBQWlCLGNBQWMsRUFBRSxJQUFJLEVBQUUsMEJBQTBCO0FBQ3hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELGNBQWM7QUFDdkU7QUFDQTtBQUNBLHdEQUF3RCxjQUFjO0FBQ3RFO0FBQ0EscURBQXFELGdCQUFnQjtBQUNyRTtBQUNBLDZFQUE2RSxlQUFlO0FBQzVGLG9DQUFvQyxnREFBZ0Q7QUFDcEY7QUFDQTtBQUNBLGdFQUFnRSxlQUFlO0FBQy9FO0FBQ0EsdUNBQXVDLGlDQUFpQyxJQUFJLHFEQUFlLG1CQUFtQjtBQUM5RztBQUNBLDJDQUEyQyxhQUFhO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxhQUFhO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcbmwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJ0ZWtlbnNcIiwgdmVyYjogXCJoZWVmdFwiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCJieXRlc1wiLCB2ZXJiOiBcImhlZWZ0XCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJlbGVtZW50ZW5cIiwgdmVyYjogXCJoZWVmdFwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcImVsZW1lbnRlblwiLCB2ZXJiOiBcImhlZWZ0XCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJpbnZvZXJcIixcbiAgICAgICAgZW1haWw6IFwiZW1haWxhZHJlc1wiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTyBkYXR1bSBlbiB0aWpkXCIsXG4gICAgICAgIGRhdGU6IFwiSVNPIGRhdHVtXCIsXG4gICAgICAgIHRpbWU6IFwiSVNPIHRpamRcIixcbiAgICAgICAgZHVyYXRpb246IFwiSVNPIGR1dXJcIixcbiAgICAgICAgaXB2NDogXCJJUHY0LWFkcmVzXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2Ni1hZHJlc1wiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NC1iZXJlaWtcIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYtYmVyZWlrXCIsXG4gICAgICAgIGJhc2U2NDogXCJiYXNlNjQtZ2Vjb2RlZXJkZSB0ZWtzdFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0IFVSTC1nZWNvZGVlcmRlIHRla3N0XCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04gc3RyaW5nXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQtbnVtbWVyXCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCJpbnZvZXJcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCJnZXRhbFwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCBvbnR2aW5nICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCAke2V4cGVjdGVkfSwgb250dmluZyAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0ICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgT25nZWxkaWdlIG9wdGllOiB2ZXJ3YWNodCDDqcOpbiB2YW4gJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb25nTmFtZSA9IGlzc3VlLm9yaWdpbiA9PT0gXCJkYXRlXCIgPyBcImxhYXRcIiA6IGlzc3VlLm9yaWdpbiA9PT0gXCJzdHJpbmdcIiA/IFwibGFuZ1wiIDogXCJncm9vdFwiO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVGUgJHtsb25nTmFtZX06IHZlcndhY2h0IGRhdCAke2lzc3VlLm9yaWdpbiA/PyBcIndhYXJkZVwifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcImVsZW1lbnRlblwifSAke3NpemluZy52ZXJifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUZSAke2xvbmdOYW1lfTogdmVyd2FjaHQgZGF0ICR7aXNzdWUub3JpZ2luID8/IFwid2FhcmRlXCJ9ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSBpc2A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG9ydE5hbWUgPSBpc3N1ZS5vcmlnaW4gPT09IFwiZGF0ZVwiID8gXCJ2cm9lZ1wiIDogaXNzdWUub3JpZ2luID09PSBcInN0cmluZ1wiID8gXCJrb3J0XCIgOiBcImtsZWluXCI7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRlICR7c2hvcnROYW1lfTogdmVyd2FjaHQgZGF0ICR7aXNzdWUub3JpZ2lufSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH0gJHtzaXppbmcudmVyYn1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFRlICR7c2hvcnROYW1lfTogdmVyd2FjaHQgZGF0ICR7aXNzdWUub3JpZ2lufSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gaXNgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgT25nZWxkaWdlIHRla3N0OiBtb2V0IG1ldCBcIiR7X2lzc3VlLnByZWZpeH1cIiBiZWdpbm5lbmA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBvcCBcIiR7X2lzc3VlLnN1ZmZpeH1cIiBlaW5kaWdlbmA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgXCIke19pc3N1ZS5pbmNsdWRlc31cIiBiZXZhdHRlbmA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgb3ZlcmVlbmtvbWVuIG1ldCBwYXRyb29uICR7X2lzc3VlLnBhdHRlcm59YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYE9uZ2VsZGlnOiAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBPbmdlbGRpZyBnZXRhbDogbW9ldCBlZW4gdmVlbHZvdWQgdmFuICR7aXNzdWUuZGl2aXNvcn0gemlqbmA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE9uYmVrZW5kZSBrZXkke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgT25nZWxkaWdlIGtleSBpbiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJPbmdlbGRpZ2UgaW52b2VyXCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBPbmdlbGRpZ2Ugd2FhcmRlIGluICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgT25nZWxkaWdlIGludm9lcmA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/nl.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/no.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/no.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"å ha\" },\n file: { unit: \"bytes\", verb: \"å ha\" },\n array: { unit: \"elementer\", verb: \"å inneholde\" },\n set: { unit: \"elementer\", verb: \"å inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøkkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9uby5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLDRCQUE0QjtBQUM5QyxnQkFBZ0IsNkJBQTZCO0FBQzdDLGlCQUFpQix3Q0FBd0M7QUFDekQsZUFBZSx3Q0FBd0M7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLGtFQUFrRSxlQUFlLFNBQVMsU0FBUztBQUNuRztBQUNBLG1EQUFtRCxTQUFTLFNBQVMsU0FBUztBQUM5RTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsNkRBQXVCLGtCQUFrQjtBQUNoRyx3REFBd0QscURBQWUsb0JBQW9CO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELHlCQUF5QixXQUFXLElBQUksRUFBRSwwQkFBMEIsRUFBRSwyQkFBMkI7QUFDdEosaURBQWlELHlCQUF5QixXQUFXLElBQUksRUFBRSx5QkFBeUI7QUFDcEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxjQUFjLFdBQVcsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDNUg7QUFDQSxpREFBaUQsY0FBYyxXQUFXLElBQUksRUFBRSx5QkFBeUI7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsY0FBYztBQUMzRTtBQUNBLDJEQUEyRCxjQUFjO0FBQ3pFO0FBQ0EsNERBQTRELGdCQUFnQjtBQUM1RTtBQUNBLGtFQUFrRSxlQUFlO0FBQ2pGLGtDQUFrQyxnREFBZ0Q7QUFDbEY7QUFDQTtBQUNBLGdFQUFnRSxjQUFjO0FBQzlFO0FBQ0EsMEJBQTBCLDJEQUEyRCxJQUFJLHFEQUFlLG1CQUFtQjtBQUMzSDtBQUNBLDJDQUEyQyxhQUFhO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxhQUFhO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcbm8uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJ0ZWduXCIsIHZlcmI6IFwiw6UgaGFcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYnl0ZXNcIiwgdmVyYjogXCLDpSBoYVwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwiZWxlbWVudGVyXCIsIHZlcmI6IFwiw6UgaW5uZWhvbGRlXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwiZWxlbWVudGVyXCIsIHZlcmI6IFwiw6UgaW5uZWhvbGRlXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJpbnB1dFwiLFxuICAgICAgICBlbWFpbDogXCJlLXBvc3RhZHJlc3NlXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiSVNPIGRhdG8tIG9nIGtsb2trZXNsZXR0XCIsXG4gICAgICAgIGRhdGU6IFwiSVNPLWRhdG9cIixcbiAgICAgICAgdGltZTogXCJJU08ta2xva2tlc2xldHRcIixcbiAgICAgICAgZHVyYXRpb246IFwiSVNPLXZhcmlnaGV0XCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NC1vbXLDpWRlXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2Ni1vbXLDpWRlXCIsXG4gICAgICAgIGNpZHJ2NDogXCJJUHY0LXNwZWt0ZXJcIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYtc3Bla3RlclwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LWVua29kZXQgc3RyZW5nXCIsXG4gICAgICAgIGJhc2U2NHVybDogXCJiYXNlNjR1cmwtZW5rb2RldCBzdHJlbmdcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTi1zdHJlbmdcIixcbiAgICAgICAgZTE2NDogXCJFLjE2NC1udW1tZXJcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcImlucHV0XCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwidGFsbFwiLFxuICAgICAgICBhcnJheTogXCJsaXN0ZVwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIGlucHV0OiBmb3J2ZW50ZXQgaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwgZmlrayAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0ICR7ZXhwZWN0ZWR9LCBmaWtrICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVWd5bGRpZyB2ZXJkaTogZm9ydmVudGV0ICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgVWd5bGRpZyB2YWxnOiBmb3J2ZW50ZXQgZW4gYXYgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEZvciBzdG9yKHQpOiBmb3J2ZW50ZXQgJHtpc3N1ZS5vcmlnaW4gPz8gXCJ2YWx1ZVwifSB0aWwgw6UgaGEgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCJlbGVtZW50ZXJcIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgRm9yIHN0b3IodCk6IGZvcnZlbnRldCAke2lzc3VlLm9yaWdpbiA/PyBcInZhbHVlXCJ9IHRpbCDDpSBoYSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEZvciBsaXRlKG4pOiBmb3J2ZW50ZXQgJHtpc3N1ZS5vcmlnaW59IHRpbCDDpSBoYSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYEZvciBsaXRlKG4pOiBmb3J2ZW50ZXQgJHtpc3N1ZS5vcmlnaW59IHRpbCDDpSBoYSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFVneWxkaWcgc3RyZW5nOiBtw6Ugc3RhcnRlIG1lZCBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVWd5bGRpZyBzdHJlbmc6IG3DpSBlbmRlIG1lZCBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIHN0cmVuZzogbcOlIGlubmVob2xkZSBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFVneWxkaWcgc3RyZW5nOiBtw6UgbWF0Y2hlIG3DuG5zdGVyZXQgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgVWd5bGRpZyAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBVZ3lsZGlnIHRhbGw6IG3DpSB2w6ZyZSBldCBtdWx0aXBsdW0gYXYgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJVa2plbnRlIG7DuGtsZXJcIiA6IFwiVWtqZW50IG7DuGtrZWxcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgVWd5bGRpZyBuw7hra2VsIGkgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiVWd5bGRpZyBpbnB1dFwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgVWd5bGRpZyB2ZXJkaSBpICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgVWd5bGRpZyBpbnB1dGA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/no.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ota.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ota.js ***!
|
||
\********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"unsur\", verb: \"olmalıdır\" },\n set: { unit: \"unsur\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostagâh\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO hengâmı\",\n date: \"ISO tarihi\",\n time: \"ISO zamanı\",\n duration: \"ISO müddeti\",\n ipv4: \"IPv4 nişânı\",\n ipv6: \"IPv6 nişânı\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-şifreli metin\",\n base64url: \"base64url-şifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Fâsit giren: umulan instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Fâsit giren: umulan ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Fâsit giren: umulan ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Fâsit tercih: mûteberler ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n }\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n if (_issue.format === \"ends_with\")\n return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n if (_issue.format === \"regex\")\n return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n return `Fâsit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} için tanınmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tanınamadı.\";\n case \"invalid_element\":\n return `${issue.origin} için tanınmayan kıymet var.`;\n default:\n return `Kıymet tanınamadı.`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9vdGEuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0M7QUFDeEM7QUFDQTtBQUNBLGtCQUFrQixpQ0FBaUM7QUFDbkQsZ0JBQWdCLGlDQUFpQztBQUNqRCxpQkFBaUIsa0NBQWtDO0FBQ25ELGVBQWUsa0NBQWtDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLDZEQUE2RCxlQUFlLFdBQVcsU0FBUztBQUNoRztBQUNBLDhDQUE4QyxTQUFTLFdBQVcsU0FBUztBQUMzRTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsNkRBQXVCLGtCQUFrQjtBQUMzRixtREFBbUQscURBQWUsb0JBQW9CO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHdCQUF3QixJQUFJLElBQUksRUFBRSwwQkFBMEIsRUFBRSwyQkFBMkI7QUFDcEksdUNBQXVDLHdCQUF3QixJQUFJLElBQUksRUFBRSwwQkFBMEI7QUFDbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxhQUFhLElBQUksSUFBSSxFQUFFLDBCQUEwQixFQUFFLGFBQWE7QUFDM0c7QUFDQSx1Q0FBdUMsYUFBYSxJQUFJLElBQUksRUFBRSwwQkFBMEI7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsY0FBYztBQUMxRDtBQUNBLDRDQUE0QyxjQUFjO0FBQzFEO0FBQ0EsNENBQTRDLGdCQUFnQjtBQUM1RDtBQUNBLDJDQUEyQyxnQkFBZ0I7QUFDM0QsZ0NBQWdDLGdEQUFnRDtBQUNoRjtBQUNBO0FBQ0Esc0NBQXNDLGVBQWU7QUFDckQ7QUFDQSw2Q0FBNkMsaUNBQWlDLElBQUkscURBQWUsbUJBQW1CO0FBQ3BIO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxvdGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJoYXJmXCIsIHZlcmI6IFwib2xtYWzEsWTEsXJcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYmF5dFwiLCB2ZXJiOiBcIm9sbWFsxLFkxLFyXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJ1bnN1clwiLCB2ZXJiOiBcIm9sbWFsxLFkxLFyXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwidW5zdXJcIiwgdmVyYjogXCJvbG1hbMSxZMSxclwiIH0sXG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRTaXppbmcob3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBTaXphYmxlW29yaWdpbl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgRm9ybWF0RGljdGlvbmFyeSA9IHtcbiAgICAgICAgcmVnZXg6IFwiZ2lyZW5cIixcbiAgICAgICAgZW1haWw6IFwiZXBvc3RhZ8OiaFwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTyBoZW5nw6JtxLFcIixcbiAgICAgICAgZGF0ZTogXCJJU08gdGFyaWhpXCIsXG4gICAgICAgIHRpbWU6IFwiSVNPIHphbWFuxLFcIixcbiAgICAgICAgZHVyYXRpb246IFwiSVNPIG3DvGRkZXRpXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NCBuacWfw6JuxLFcIixcbiAgICAgICAgaXB2NjogXCJJUHY2IG5pxZ/Dom7EsVwiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NCBtZW56aWxpXCIsXG4gICAgICAgIGNpZHJ2NjogXCJJUHY2IG1lbnppbGlcIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NC3Fn2lmcmVsaSBtZXRpblwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsLcWfaWZyZWxpIG1ldGluXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04gbWV0aW5cIixcbiAgICAgICAgZTE2NDogXCJFLjE2NCBzYXnEsXPEsVwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwiZ2lyZW5cIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCJudW1hcmFcIixcbiAgICAgICAgYXJyYXk6IFwic2FmXCIsXG4gICAgICAgIG51bGw6IFwiZ2F5YlwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBGw6JzaXQgZ2lyZW46IHVtdWxhbiBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCBhbMSxbmFuICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBGw6JzaXQgZ2lyZW46IHVtdWxhbiAke2V4cGVjdGVkfSwgYWzEsW5hbiAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEbDonNpdCBnaXJlbjogdW11bGFuICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgRsOic2l0IHRlcmNpaDogbcO7dGViZXJsZXIgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEZhemxhIGLDvHnDvGs6ICR7aXNzdWUub3JpZ2luID8/IFwidmFsdWVcIn0sICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVudHNcIn0gc2FoaXAgb2xtYWzEsXlkxLEuYDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYEZhemxhIGLDvHnDvGs6ICR7aXNzdWUub3JpZ2luID8/IFwidmFsdWVcIn0sICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSBvbG1hbMSxeWTEsS5gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEZhemxhIGvDvMOnw7xrOiAke2lzc3VlLm9yaWdpbn0sICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fSBzYWhpcCBvbG1hbMSxeWTEsS5gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYEZhemxhIGvDvMOnw7xrOiAke2lzc3VlLm9yaWdpbn0sICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSBvbG1hbMSxeWTEsS5gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEbDonNpdCBtZXRpbjogXCIke19pc3N1ZS5wcmVmaXh9XCIgaWxlIGJhxZ9sYW1hbMSxLmA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgRsOic2l0IG1ldGluOiBcIiR7X2lzc3VlLnN1ZmZpeH1cIiBpbGUgYml0bWVsaS5gO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgRsOic2l0IG1ldGluOiBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiIGlodGl2w6IgZXRtZWxpLmA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBGw6JzaXQgbWV0aW46ICR7X2lzc3VlLnBhdHRlcm59IG5ha8WfxLFuYSB1eW1hbMSxLmA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBGw6JzaXQgJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgRsOic2l0IHNhecSxOiAke2lzc3VlLmRpdmlzb3J9IGthdMSxIG9sbWFsxLF5ZMSxLmA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFRhbsSxbm1heWFuIGFuYWh0YXIgJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2lufSBpw6dpbiB0YW7EsW5tYXlhbiBhbmFodGFyIHZhci5gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJHaXJlbiB0YW7EsW5hbWFkxLEuXCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2lzc3VlLm9yaWdpbn0gacOnaW4gdGFuxLFubWF5YW4ga8SxeW1ldCB2YXIuYDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBLxLF5bWV0IHRhbsSxbmFtYWTEsS5gO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ota.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/pl.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/pl.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaków\", verb: \"mieć\" },\n file: { unit: \"bajtów\", verb: \"mieć\" },\n array: { unit: \"elementów\", verb: \"mieć\" },\n set: { unit: \"elementów\", verb: \"mieć\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyrażenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ciąg znaków zakodowany w formacie base64\",\n base64url: \"ciąg znaków zakodowany w formacie base64url\",\n json_string: \"ciąg znaków w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wejście\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawidłowe dane wejściowe: oczekiwano ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n return `Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawidłowy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawidłowe dane wejściowe\";\n case \"invalid_element\":\n return `Nieprawidłowa wartość w ${issue.origin}`;\n default:\n return `Nieprawidłowe dane wejściowe`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9wbC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLDhCQUE4QjtBQUNoRCxnQkFBZ0IsOEJBQThCO0FBQzlDLGlCQUFpQixpQ0FBaUM7QUFDbEQsZUFBZSxpQ0FBaUM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLGtGQUFrRixlQUFlLGNBQWMsU0FBUztBQUN4SDtBQUNBLG1FQUFtRSxTQUFTLGNBQWMsU0FBUztBQUNuRztBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsNkRBQXVCLGtCQUFrQjtBQUNoSCw0RUFBNEUscURBQWUsb0JBQW9CO0FBQy9HO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThELDJCQUEyQixjQUFjLElBQUksRUFBRSwwQkFBMEIsRUFBRSwyQkFBMkI7QUFDcEs7QUFDQSwwREFBMEQsMkJBQTJCLGlCQUFpQixJQUFJLEVBQUUseUJBQXlCO0FBQ3JJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsMkJBQTJCLGNBQWMsSUFBSSxFQUFFLDBCQUEwQixFQUFFLDJCQUEyQjtBQUNwSztBQUNBLDBEQUEwRCwyQkFBMkIsaUJBQWlCLElBQUksRUFBRSx5QkFBeUI7QUFDckk7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrRUFBK0UsY0FBYztBQUM3RjtBQUNBLDhFQUE4RSxjQUFjO0FBQzVGO0FBQ0Esd0VBQXdFLGdCQUFnQjtBQUN4RjtBQUNBLGtGQUFrRixlQUFlO0FBQ2pHLDhDQUE4QyxnREFBZ0Q7QUFDOUY7QUFDQTtBQUNBLHlFQUF5RSxjQUFjO0FBQ3ZGO0FBQ0EsOENBQThDLGlDQUFpQyxJQUFJLHFEQUFlLG1CQUFtQjtBQUNySDtBQUNBLGdEQUFnRCxhQUFhO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxhQUFhO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xccGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJ6bmFrw7N3XCIsIHZlcmI6IFwibWllxIdcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYmFqdMOzd1wiLCB2ZXJiOiBcIm1pZcSHXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJlbGVtZW50w7N3XCIsIHZlcmI6IFwibWllxIdcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCJlbGVtZW50w7N3XCIsIHZlcmI6IFwibWllxIdcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcInd5cmHFvGVuaWVcIixcbiAgICAgICAgZW1haWw6IFwiYWRyZXMgZW1haWxcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJkYXRhIGkgZ29kemluYSB3IGZvcm1hY2llIElTT1wiLFxuICAgICAgICBkYXRlOiBcImRhdGEgdyBmb3JtYWNpZSBJU09cIixcbiAgICAgICAgdGltZTogXCJnb2R6aW5hIHcgZm9ybWFjaWUgSVNPXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcImN6YXMgdHJ3YW5pYSBJU09cIixcbiAgICAgICAgaXB2NDogXCJhZHJlcyBJUHY0XCIsXG4gICAgICAgIGlwdjY6IFwiYWRyZXMgSVB2NlwiLFxuICAgICAgICBjaWRydjQ6IFwiemFrcmVzIElQdjRcIixcbiAgICAgICAgY2lkcnY2OiBcInpha3JlcyBJUHY2XCIsXG4gICAgICAgIGJhc2U2NDogXCJjacSFZyB6bmFrw7N3IHpha29kb3dhbnkgdyBmb3JtYWNpZSBiYXNlNjRcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcImNpxIVnIHpuYWvDs3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NHVybFwiLFxuICAgICAgICBqc29uX3N0cmluZzogXCJjacSFZyB6bmFrw7N3IHcgZm9ybWFjaWUgSlNPTlwiLFxuICAgICAgICBlMTY0OiBcImxpY3piYSBFLjE2NFwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwid2VqxZtjaWVcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCJsaWN6YmFcIixcbiAgICAgICAgYXJyYXk6IFwidGFibGljYVwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwgb3RyenltYW5vICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gJHtleHBlY3RlZH0sIG90cnp5bWFubyAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5pZXByYXdpZMWCb3dhIG9wY2phOiBvY3pla2l3YW5vIGplZG5laiB6IHdhcnRvxZtjaSAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBaYSBkdcW8YSB3YXJ0b8WbxIc6IG9jemVraXdhbm8sIMW8ZSAke2lzc3VlLm9yaWdpbiA/PyBcIndhcnRvxZvEh1wifSBixJlkemllIG1pZcSHICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVudMOzd1wifWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgWmJ5dCBkdcW8KHkvYS9lKTogb2N6ZWtpd2FubywgxbxlICR7aXNzdWUub3JpZ2luID8/IFwid2FydG/Fm8SHXCJ9IGLEmWR6aWUgd3lub3NpxIcgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBaYSBtYcWCYSB3YXJ0b8WbxIc6IG9jemVraXdhbm8sIMW8ZSAke2lzc3VlLm9yaWdpbiA/PyBcIndhcnRvxZvEh1wifSBixJlkemllIG1pZcSHICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwiZWxlbWVudMOzd1wifWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgWmJ5dCBtYcWCKHkvYS9lKTogb2N6ZWtpd2FubywgxbxlICR7aXNzdWUub3JpZ2luID8/IFwid2FydG/Fm8SHXCJ9IGLEmWR6aWUgd3lub3NpxIcgJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIHphY3p5bmHEhyBzacSZIG9kIFwiJHtfaXNzdWUucHJlZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIGtvxYRjennEhyBzacSZIG5hIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kgemF3aWVyYcSHIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSBvZHBvd2lhZGHEhyB3em9yY293aSAke19pc3N1ZS5wYXR0ZXJufWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOaWVwcmF3aWTFgm93KHkvYS9lKSAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOaWVwcmF3aWTFgm93YSBsaWN6YmE6IG11c2kgYnnEhyB3aWVsb2tyb3Rub8WbY2nEhSAke2lzc3VlLmRpdmlzb3J9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTmllcm96cG96bmFuZSBrbHVjemUke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTmllcHJhd2lkxYJvd3kga2x1Y3ogdyAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2VcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5pZXByYXdpZMWCb3dhIHdhcnRvxZvEhyB3ICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlYDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/pl.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ps.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ps.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"توکي\", verb: \"ولري\" },\n file: { unit: \"بایټس\", verb: \"ولري\" },\n array: { unit: \"توکي\", verb: \"ولري\" },\n set: { unit: \"توکي\", verb: \"ولري\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ورودي\",\n email: \"بریښنالیک\",\n url: \"یو آر ال\",\n emoji: \"ایموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"نیټه او وخت\",\n date: \"نېټه\",\n time: \"وخت\",\n duration: \"موده\",\n ipv4: \"د IPv4 پته\",\n ipv6: \"د IPv6 پته\",\n cidrv4: \"د IPv4 ساحه\",\n cidrv6: \"د IPv6 ساحه\",\n base64: \"base64-encoded متن\",\n base64url: \"base64url-encoded متن\",\n json_string: \"JSON متن\",\n e164: \"د E.164 شمېره\",\n jwt: \"JWT\",\n template_literal: \"ورودي\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"عدد\",\n array: \"ارې\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ناسم ورودي: باید instanceof ${issue.expected} وای, مګر ${received} ترلاسه شو`;\n }\n return `ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ناسم ورودي: باید ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])} وای`;\n }\n return `ناسم انتخاب: باید یو له ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")} څخه وای`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n }\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n }\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n }\n if (_issue.format === \"ends_with\") {\n return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n }\n if (_issue.format === \"includes\") {\n return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n }\n if (_issue.format === \"regex\") {\n return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} ناسم دی`;\n }\n case \"not_multiple_of\":\n return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n case \"unrecognized_keys\":\n return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `ناسم کلیډ په ${issue.origin} کې`;\n case \"invalid_union\":\n return `ناسمه ورودي`;\n case \"invalid_element\":\n return `ناسم عنصر په ${issue.origin} کې`;\n default:\n return `ناسمه ورودي`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9wcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLDRCQUE0QjtBQUM5QyxnQkFBZ0IsNkJBQTZCO0FBQzdDLGlCQUFpQiw0QkFBNEI7QUFDN0MsZUFBZSw0QkFBNEI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLDBEQUEwRCxnQkFBZ0IsV0FBVyxVQUFVO0FBQy9GO0FBQ0EsMkNBQTJDLFVBQVUsV0FBVyxVQUFVO0FBQzFFO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyw2REFBdUIsbUJBQW1CO0FBQ3pGO0FBQ0Esa0RBQWtELHFEQUFlLHFCQUFxQjtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qyx5QkFBeUIsT0FBTyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCO0FBQ25JO0FBQ0EsbUNBQW1DLHlCQUF5QixPQUFPLElBQUksRUFBRSwwQkFBMEI7QUFDbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxjQUFjLE9BQU8sSUFBSSxFQUFFLDBCQUEwQixFQUFFLGFBQWE7QUFDN0c7QUFDQSxxQ0FBcUMsY0FBYyxPQUFPLElBQUksRUFBRSwwQkFBMEI7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsY0FBYztBQUM5RDtBQUNBO0FBQ0EsZ0RBQWdELGNBQWM7QUFDOUQ7QUFDQTtBQUNBLDhDQUE4QyxnQkFBZ0I7QUFDOUQ7QUFDQTtBQUNBLCtDQUErQyxnQkFBZ0I7QUFDL0Q7QUFDQSwwQkFBMEIsaURBQWlEO0FBQzNFO0FBQ0E7QUFDQSwyQ0FBMkMsZUFBZTtBQUMxRDtBQUNBLCtCQUErQiwyQ0FBMkMsSUFBSSxxREFBZSxtQkFBbUI7QUFDaEg7QUFDQSx1Q0FBdUMsY0FBYztBQUNyRDtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsY0FBYztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXHBzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwi2KrZiNqp2YpcIiwgdmVyYjogXCLZiNmE2LHZilwiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCLYqNin24zZvNizXCIsIHZlcmI6IFwi2YjZhNix2YpcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcItiq2YjaqdmKXCIsIHZlcmI6IFwi2YjZhNix2YpcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCLYqtmI2qnZilwiLCB2ZXJiOiBcItmI2YTYsdmKXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCLZiNix2YjYr9mKXCIsXG4gICAgICAgIGVtYWlsOiBcItio2LHbjNqa2YbYp9mE24zaqVwiLFxuICAgICAgICB1cmw6IFwi24zZiCDYotixINin2YRcIixcbiAgICAgICAgZW1vamk6IFwi2KfbjNmF2YjYrNmKXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcItmG24zZvNmHINin2Ygg2YjYrtiqXCIsXG4gICAgICAgIGRhdGU6IFwi2YbbkNm82YdcIixcbiAgICAgICAgdGltZTogXCLZiNiu2KpcIixcbiAgICAgICAgZHVyYXRpb246IFwi2YXZiNiv2YdcIixcbiAgICAgICAgaXB2NDogXCLYryBJUHY0INm+2KrZh1wiLFxuICAgICAgICBpcHY2OiBcItivIElQdjYg2b7YqtmHXCIsXG4gICAgICAgIGNpZHJ2NDogXCLYryBJUHY0INiz2KfYrdmHXCIsXG4gICAgICAgIGNpZHJ2NjogXCLYryBJUHY2INiz2KfYrdmHXCIsXG4gICAgICAgIGJhc2U2NDogXCJiYXNlNjQtZW5jb2RlZCDZhdiq2YZcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcImJhc2U2NHVybC1lbmNvZGVkINmF2KrZhlwiLFxuICAgICAgICBqc29uX3N0cmluZzogXCJKU09OINmF2KrZhlwiLFxuICAgICAgICBlMTY0OiBcItivIEUuMTY0INi02YXbkNix2YdcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcItmI2LHZiNiv2YpcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCLYudiv2K9cIixcbiAgICAgICAgYXJyYXk6IFwi2KfYsduQXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0g2YjYp9uMLCDZhdqr2LEgJHtyZWNlaXZlZH0g2KrYsdmE2KfYs9mHINi02YhgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivICR7ZXhwZWN0ZWR9INmI2KfbjCwg2YXaq9ixICR7cmVjZWl2ZWR9INiq2LHZhNin2LPZhyDYtNmIYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9INmI2KfbjGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg2YbYp9iz2YUg2KfZhtiq2K7Yp9ioOiDYqNin24zYryDbjNmIINmE2YcgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9INqF2K7ZhyDZiNin24xgO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDaiduM2LEg2YTZiNuMOiAke2lzc3VlLm9yaWdpbiA/PyBcItin2LHYstqa2KpcIn0g2KjYp9uM2K8gJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCLYudmG2LXYsdmI2YbZh1wifSDZiNmE2LHZimA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg2onbjNixINmE2YjbjDogJHtpc3N1ZS5vcmlnaW4gPz8gXCLYp9ix2LLamtiqXCJ9INio2KfbjNivICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSDZiNmKYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDaiduM2LEg2qnZiNqG2YbbjDogJHtpc3N1ZS5vcmlnaW59INio2KfbjNivICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fSDZiNmE2LHZimA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg2onbjNixINqp2YjahtmG24w6ICR7aXNzdWUub3JpZ2lufSDYqNin24zYryAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0g2YjZimA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivIFwiJHtfaXNzdWUucHJlZml4fVwiINiz2LHZhyDZvtuM2YQg2LTZimA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryBcIiR7X2lzc3VlLnN1ZmZpeH1cIiDYs9ix2Ycg2b7Yp9uMINiq2Ycg2YjYsdiz2YraltmKYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNmG2KfYs9mFINmF2KrZhjog2KjYp9uM2K8gXCIke19pc3N1ZS5pbmNsdWRlc31cIiDZiNmE2LHZimA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICR7X2lzc3VlLnBhdHRlcm59INiz2LHZhyDZhdi32KfYqNmC2Kog2YjZhNix2YpgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9INmG2KfYs9mFINiv24xgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg2YbYp9iz2YUg2LnYr9ivOiDYqNin24zYryDYryAke2lzc3VlLmRpdmlzb3J9INmF2LbYsdioINmI2YpgO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDZhtin2LPZhSAke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwi2qnZhNuM2onZiNmG2YdcIiA6IFwi2qnZhNuM2olcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg2YbYp9iz2YUg2qnZhNuM2okg2b7ZhyAke2lzc3VlLm9yaWdpbn0g2qnbkGA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg2YbYp9iz2YXZhyDZiNix2YjYr9mKYDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNmG2KfYs9mFINi52YbYtdixINm+2YcgJHtpc3N1ZS5vcmlnaW59INqp25BgO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNmG2KfYs9mF2Ycg2YjYsdmI2K/ZimA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ps.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/pt.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/pt.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padrão\",\n email: \"endereço de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"duração ISO\",\n ipv4: \"endereço IPv4\",\n ipv6: \"endereço IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"número\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inválido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inválido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: esperado ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Opção inválida: esperada uma das ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inválido`;\n }\n case \"not_multiple_of\":\n return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inválida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido em ${issue.origin}`;\n default:\n return `Campo inválido`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9wdC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGlDQUFpQztBQUNuRCxnQkFBZ0IsNEJBQTRCO0FBQzVDLGlCQUFpQiw0QkFBNEI7QUFDN0MsZUFBZSw0QkFBNEI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLGlFQUFpRSxlQUFlLGFBQWEsU0FBUztBQUN0RztBQUNBLGtEQUFrRCxTQUFTLGFBQWEsU0FBUztBQUNqRjtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsNkRBQXVCLGtCQUFrQjtBQUNsRywyREFBMkQscURBQWUsb0JBQW9CO0FBQzlGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELHlCQUF5QixVQUFVLElBQUksRUFBRSwwQkFBMEIsRUFBRSwyQkFBMkI7QUFDekoscURBQXFELHlCQUF5QixRQUFRLElBQUksRUFBRSx5QkFBeUI7QUFDckg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxjQUFjLFVBQVUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDaEk7QUFDQSxzREFBc0QsY0FBYyxRQUFRLElBQUksRUFBRSx5QkFBeUI7QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsY0FBYztBQUM5RTtBQUNBLGlFQUFpRSxjQUFjO0FBQy9FO0FBQ0EsNERBQTRELGdCQUFnQjtBQUM1RTtBQUNBLDBFQUEwRSxlQUFlO0FBQ3pGLDBCQUEwQixpREFBaUQ7QUFDM0U7QUFDQTtBQUNBLGdFQUFnRSxjQUFjO0FBQzlFO0FBQ0EsK0JBQStCLGtDQUFrQyxjQUFjLGlDQUFpQyxJQUFJLHFEQUFlLG1CQUFtQjtBQUN0SjtBQUNBLDRDQUE0QyxhQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxhQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xccHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJjYXJhY3RlcmVzXCIsIHZlcmI6IFwidGVyXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImJ5dGVzXCIsIHZlcmI6IFwidGVyXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJpdGVuc1wiLCB2ZXJiOiBcInRlclwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcIml0ZW5zXCIsIHZlcmI6IFwidGVyXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJwYWRyw6NvXCIsXG4gICAgICAgIGVtYWlsOiBcImVuZGVyZcOnbyBkZSBlLW1haWxcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJkYXRhIGUgaG9yYSBJU09cIixcbiAgICAgICAgZGF0ZTogXCJkYXRhIElTT1wiLFxuICAgICAgICB0aW1lOiBcImhvcmEgSVNPXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcImR1cmHDp8OjbyBJU09cIixcbiAgICAgICAgaXB2NDogXCJlbmRlcmXDp28gSVB2NFwiLFxuICAgICAgICBpcHY2OiBcImVuZGVyZcOnbyBJUHY2XCIsXG4gICAgICAgIGNpZHJ2NDogXCJmYWl4YSBkZSBJUHY0XCIsXG4gICAgICAgIGNpZHJ2NjogXCJmYWl4YSBkZSBJUHY2XCIsXG4gICAgICAgIGJhc2U2NDogXCJ0ZXh0byBjb2RpZmljYWRvIGVtIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiVVJMIGNvZGlmaWNhZGEgZW0gYmFzZTY0XCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcInRleHRvIEpTT05cIixcbiAgICAgICAgZTE2NDogXCJuw7ptZXJvIEUuMTY0XCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCJlbnRyYWRhXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwibsO6bWVyb1wiLFxuICAgICAgICBudWxsOiBcIm51bG9cIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVGlwbyBpbnbDoWxpZG86IGVzcGVyYWRvIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sIHJlY2ViaWRvICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUaXBvIGludsOhbGlkbzogZXNwZXJhZG8gJHtleHBlY3RlZH0sIHJlY2ViaWRvICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgRW50cmFkYSBpbnbDoWxpZGE6IGVzcGVyYWRvICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgT3DDp8OjbyBpbnbDoWxpZGE6IGVzcGVyYWRhIHVtYSBkYXMgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE11aXRvIGdyYW5kZTogZXNwZXJhZG8gcXVlICR7aXNzdWUub3JpZ2luID8/IFwidmFsb3JcIn0gdGl2ZXNzZSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcImVsZW1lbnRvc1wifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBNdWl0byBncmFuZGU6IGVzcGVyYWRvIHF1ZSAke2lzc3VlLm9yaWdpbiA/PyBcInZhbG9yXCJ9IGZvc3NlICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7aXNzdWUub3JpZ2lufSB0aXZlc3NlICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7aXNzdWUub3JpZ2lufSBmb3NzZSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRleHRvIGludsOhbGlkbzogZGV2ZSBjb21lw6dhciBjb20gXCIke19pc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFRleHRvIGludsOhbGlkbzogZGV2ZSB0ZXJtaW5hciBjb20gXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVGV4dG8gaW52w6FsaWRvOiBkZXZlIGluY2x1aXIgXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBUZXh0byBpbnbDoWxpZG86IGRldmUgY29ycmVzcG9uZGVyIGFvIHBhZHLDo28gJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH0gaW52w6FsaWRvYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE7Dum1lcm8gaW52w6FsaWRvOiBkZXZlIHNlciBtw7psdGlwbG8gZGUgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYENoYXZlJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9IGRlc2NvbmhlY2lkYSR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJzXCIgOiBcIlwifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBDaGF2ZSBpbnbDoWxpZGEgZW0gJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiRW50cmFkYSBpbnbDoWxpZGFcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFZhbG9yIGludsOhbGlkbyBlbSAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYENhbXBvIGludsOhbGlkb2A7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/pt.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ru.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ru.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"символ\",\n few: \"символа\",\n many: \"символов\",\n },\n verb: \"иметь\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байта\",\n many: \"байт\",\n },\n verb: \"иметь\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ввод\",\n email: \"email адрес\",\n url: \"URL\",\n emoji: \"эмодзи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата и время\",\n date: \"ISO дата\",\n time: \"ISO время\",\n duration: \"ISO длительность\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"строка в формате base64\",\n base64url: \"строка в формате base64url\",\n json_string: \"JSON строка\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"ввод\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"массив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неверный ввод: ожидалось instanceof ${issue.expected}, получено ${received}`;\n }\n return `Неверный ввод: ожидалось ${expected}, получено ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неверный ввод: ожидалось ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Неверный вариант: ожидалось одно из ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n return `Неверный ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неверное число: должно быть кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неверный ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Неверные входные данные\";\n case \"invalid_element\":\n return `Неверное значение в ${issue.origin}`;\n default:\n return `Неверные входные данные`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9ydS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0Esa0VBQWtFLGVBQWUsYUFBYSxTQUFTO0FBQ3ZHO0FBQ0EsbURBQW1ELFNBQVMsYUFBYSxTQUFTO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCw2REFBdUIsa0JBQWtCO0FBQ2hHLDhEQUE4RCxxREFBZSxvQkFBb0I7QUFDakc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUVBQXVFLDRCQUE0QixjQUFjLElBQUksRUFBRSwwQkFBMEIsRUFBRSxLQUFLO0FBQ3hKO0FBQ0EsbUVBQW1FLDRCQUE0QixRQUFRLElBQUksRUFBRSx5QkFBeUI7QUFDdEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RUFBeUUsY0FBYyxjQUFjLElBQUksRUFBRSwwQkFBMEIsRUFBRSxLQUFLO0FBQzVJO0FBQ0EscUVBQXFFLGNBQWMsUUFBUSxJQUFJLEVBQUUseUJBQXlCO0FBQzFIO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FLGNBQWM7QUFDbEY7QUFDQSx3RUFBd0UsY0FBYztBQUN0RjtBQUNBLGlFQUFpRSxnQkFBZ0I7QUFDakY7QUFDQSw4RUFBOEUsZUFBZTtBQUM3RixtQ0FBbUMsZ0RBQWdEO0FBQ25GO0FBQ0E7QUFDQSw4REFBOEQsY0FBYztBQUM1RTtBQUNBLHNDQUFzQyxxQ0FBcUMsTUFBTSxpQ0FBaUMsSUFBSSxxREFBZSxtQkFBbUI7QUFDeEo7QUFDQSwwQ0FBMEMsYUFBYTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsYUFBYTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXHJ1LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuZnVuY3Rpb24gZ2V0UnVzc2lhblBsdXJhbChjb3VudCwgb25lLCBmZXcsIG1hbnkpIHtcbiAgICBjb25zdCBhYnNDb3VudCA9IE1hdGguYWJzKGNvdW50KTtcbiAgICBjb25zdCBsYXN0RGlnaXQgPSBhYnNDb3VudCAlIDEwO1xuICAgIGNvbnN0IGxhc3RUd29EaWdpdHMgPSBhYnNDb3VudCAlIDEwMDtcbiAgICBpZiAobGFzdFR3b0RpZ2l0cyA+PSAxMSAmJiBsYXN0VHdvRGlnaXRzIDw9IDE5KSB7XG4gICAgICAgIHJldHVybiBtYW55O1xuICAgIH1cbiAgICBpZiAobGFzdERpZ2l0ID09PSAxKSB7XG4gICAgICAgIHJldHVybiBvbmU7XG4gICAgfVxuICAgIGlmIChsYXN0RGlnaXQgPj0gMiAmJiBsYXN0RGlnaXQgPD0gNCkge1xuICAgICAgICByZXR1cm4gZmV3O1xuICAgIH1cbiAgICByZXR1cm4gbWFueTtcbn1cbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzoge1xuICAgICAgICAgICAgdW5pdDoge1xuICAgICAgICAgICAgICAgIG9uZTogXCLRgdC40LzQstC+0LtcIixcbiAgICAgICAgICAgICAgICBmZXc6IFwi0YHQuNC80LLQvtC70LBcIixcbiAgICAgICAgICAgICAgICBtYW55OiBcItGB0LjQvNCy0L7Qu9C+0LJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJiOiBcItC40LzQtdGC0YxcIixcbiAgICAgICAgfSxcbiAgICAgICAgZmlsZToge1xuICAgICAgICAgICAgdW5pdDoge1xuICAgICAgICAgICAgICAgIG9uZTogXCLQsdCw0LnRglwiLFxuICAgICAgICAgICAgICAgIGZldzogXCLQsdCw0LnRgtCwXCIsXG4gICAgICAgICAgICAgICAgbWFueTogXCLQsdCw0LnRglwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmI6IFwi0LjQvNC10YLRjFwiLFxuICAgICAgICB9LFxuICAgICAgICBhcnJheToge1xuICAgICAgICAgICAgdW5pdDoge1xuICAgICAgICAgICAgICAgIG9uZTogXCLRjdC70LXQvNC10L3RglwiLFxuICAgICAgICAgICAgICAgIGZldzogXCLRjdC70LXQvNC10L3RgtCwXCIsXG4gICAgICAgICAgICAgICAgbWFueTogXCLRjdC70LXQvNC10L3RgtC+0LJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJiOiBcItC40LzQtdGC0YxcIixcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiB7XG4gICAgICAgICAgICB1bml0OiB7XG4gICAgICAgICAgICAgICAgb25lOiBcItGN0LvQtdC80LXQvdGCXCIsXG4gICAgICAgICAgICAgICAgZmV3OiBcItGN0LvQtdC80LXQvdGC0LBcIixcbiAgICAgICAgICAgICAgICBtYW55OiBcItGN0LvQtdC80LXQvdGC0L7QslwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmI6IFwi0LjQvNC10YLRjFwiLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcItCy0LLQvtC0XCIsXG4gICAgICAgIGVtYWlsOiBcImVtYWlsINCw0LTRgNC10YFcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCLRjdC80L7QtNC30LhcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiSVNPINC00LDRgtCwINC4INCy0YDQtdC80Y9cIixcbiAgICAgICAgZGF0ZTogXCJJU08g0LTQsNGC0LBcIixcbiAgICAgICAgdGltZTogXCJJU08g0LLRgNC10LzRj1wiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08g0LTQu9C40YLQtdC70YzQvdC+0YHRgtGMXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NCDQsNC00YDQtdGBXCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiDQsNC00YDQtdGBXCIsXG4gICAgICAgIGNpZHJ2NDogXCJJUHY0INC00LjQsNC/0LDQt9C+0L1cIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjYg0LTQuNCw0L/QsNC30L7QvVwiLFxuICAgICAgICBiYXNlNjQ6IFwi0YHRgtGA0L7QutCwINCyINGE0L7RgNC80LDRgtC1IGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwi0YHRgtGA0L7QutCwINCyINGE0L7RgNC80LDRgtC1IGJhc2U2NHVybFwiLFxuICAgICAgICBqc29uX3N0cmluZzogXCJKU09OINGB0YLRgNC+0LrQsFwiLFxuICAgICAgICBlMTY0OiBcItC90L7QvNC10YAgRS4xNjRcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcItCy0LLQvtC0XCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwi0YfQuNGB0LvQvlwiLFxuICAgICAgICBhcnJheTogXCLQvNCw0YHRgdC40LJcIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sINC/0L7Qu9GD0YfQtdC90L4gJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQstC10YDQvdGL0Lkg0LLQstC+0LQ6INC+0LbQuNC00LDQu9C+0YHRjCAke2V4cGVjdGVkfSwg0L/QvtC70YPRh9C10L3QviAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQstC10YDQvdGL0Lkg0LLQstC+0LQ6INC+0LbQuNC00LDQu9C+0YHRjCAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQstC10YDQvdGL0Lkg0LLQsNGA0LjQsNC90YI6INC+0LbQuNC00LDQu9C+0YHRjCDQvtC00L3QviDQuNC3ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhWYWx1ZSA9IE51bWJlcihpc3N1ZS5tYXhpbXVtKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5pdCA9IGdldFJ1c3NpYW5QbHVyYWwobWF4VmFsdWUsIHNpemluZy51bml0Lm9uZSwgc2l6aW5nLnVuaXQuZmV3LCBzaXppbmcudW5pdC5tYW55KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2lzc3VlLm9yaWdpbiA/PyBcItC30L3QsNGH0LXQvdC40LVcIn0g0LHRg9C00LXRgiDQuNC80LXRgtGMICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3VuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2lzc3VlLm9yaWdpbiA/PyBcItC30L3QsNGH0LXQvdC40LVcIn0g0LHRg9C00LXRgiAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW5WYWx1ZSA9IE51bWJlcihpc3N1ZS5taW5pbXVtKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5pdCA9IGdldFJ1c3NpYW5QbHVyYWwobWluVmFsdWUsIHNpemluZy51bml0Lm9uZSwgc2l6aW5nLnVuaXQuZmV3LCBzaXppbmcudW5pdC5tYW55KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDQodC70LjRiNC60L7QvCDQvNCw0LvQtdC90YzQutC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtpc3N1ZS5vcmlnaW59INCx0YPQtNC10YIg0LjQvNC10YLRjCAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHt1bml0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg0KHQu9C40YjQutC+0Lwg0LzQsNC70LXQvdGM0LrQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7aXNzdWUub3JpZ2lufSDQsdGD0LTQtdGCICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDQvdCw0YfQuNC90LDRgtGM0YHRjyDRgSBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDQt9Cw0LrQsNC90YfQuNCy0LDRgtGM0YHRjyDQvdCwIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0YHQvtC00LXRgNC20LDRgtGMIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDRgdC+0L7RgtCy0LXRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC90YMgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LXRgNC90YvQuSAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQndC10LLQtdGA0L3QvtC1INGH0LjRgdC70L46INC00L7Qu9C20L3QviDQsdGL0YLRjCDQutGA0LDRgtC90YvQvCAke2lzc3VlLmRpdmlzb3J9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdGA0LDRgdC/0L7Qt9C90LDQvdC9JHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcItGL0LVcIiA6IFwi0YvQuVwifSDQutC70Y7RhyR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCLQuFwiIDogXCJcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LXRgNC90YvQuSDQutC70Y7RhyDQsiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLQndC10LLQtdGA0L3Ri9C1INCy0YXQvtC00L3Ri9C1INC00LDQvdC90YvQtVwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1INCyICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdCy0LXRgNC90YvQtSDQstGF0L7QtNC90YvQtSDQtNCw0L3QvdGL0LVgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ru.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/sl.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/sl.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-poštni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in čas\",\n date: \"ISO datum\",\n time: \"ISO čas\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 številka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"število\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pričakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pričakovano ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna možnost: pričakovano eno izmed ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven ključ v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9zbC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLCtCQUErQjtBQUNqRCxnQkFBZ0IsK0JBQStCO0FBQy9DLGlCQUFpQixrQ0FBa0M7QUFDbkQsZUFBZSxrQ0FBa0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLHNFQUFzRSxlQUFlLFlBQVksU0FBUztBQUMxRztBQUNBLHVEQUF1RCxTQUFTLFlBQVksU0FBUztBQUNyRjtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsNkRBQXVCLGtCQUFrQjtBQUNwRyxvRUFBb0UscURBQWUsb0JBQW9CO0FBQ3ZHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELDRCQUE0QixRQUFRLElBQUksRUFBRSwwQkFBMEIsRUFBRSwyQkFBMkI7QUFDN0osd0RBQXdELDRCQUE0QixFQUFFLElBQUksRUFBRSx5QkFBeUI7QUFDckg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxjQUFjLFFBQVEsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFlBQVk7QUFDaEk7QUFDQSx3REFBd0QsY0FBYyxFQUFFLElBQUksRUFBRSx5QkFBeUI7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsY0FBYztBQUM5RTtBQUNBO0FBQ0EsaUVBQWlFLGNBQWM7QUFDL0U7QUFDQSw4REFBOEQsZ0JBQWdCO0FBQzlFO0FBQ0Esb0VBQW9FLGVBQWU7QUFDbkYscUNBQXFDLGdEQUFnRDtBQUNyRjtBQUNBO0FBQ0EsbUVBQW1FLGNBQWM7QUFDakY7QUFDQSxxQ0FBcUMsOENBQThDLElBQUkscURBQWUsbUJBQW1CO0FBQ3pIO0FBQ0EsNkNBQTZDLGFBQWE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELGFBQWE7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFxzbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcInpuYWtvdlwiLCB2ZXJiOiBcImltZXRpXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImJhanRvdlwiLCB2ZXJiOiBcImltZXRpXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCJlbGVtZW50b3ZcIiwgdmVyYjogXCJpbWV0aVwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcImVsZW1lbnRvdlwiLCB2ZXJiOiBcImltZXRpXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJ2bm9zXCIsXG4gICAgICAgIGVtYWlsOiBcImUtcG/FoXRuaSBuYXNsb3ZcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJJU08gZGF0dW0gaW4gxI1hc1wiLFxuICAgICAgICBkYXRlOiBcIklTTyBkYXR1bVwiLFxuICAgICAgICB0aW1lOiBcIklTTyDEjWFzXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIklTTyB0cmFqYW5qZVwiLFxuICAgICAgICBpcHY0OiBcIklQdjQgbmFzbG92XCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiBuYXNsb3ZcIixcbiAgICAgICAgY2lkcnY0OiBcIm9ic2VnIElQdjRcIixcbiAgICAgICAgY2lkcnY2OiBcIm9ic2VnIElQdjZcIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NCBrb2RpcmFuIG5pelwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsIGtvZGlyYW4gbml6XCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04gbml6XCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQgxaF0ZXZpbGthXCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCJ2bm9zXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwixaF0ZXZpbG9cIixcbiAgICAgICAgYXJyYXk6IFwidGFiZWxhXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sIHByZWpldG8gJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vICR7ZXhwZWN0ZWR9LCBwcmVqZXRvICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZXZlbGphdm5hIG1vxb5ub3N0OiBwcmnEjWFrb3Zhbm8gZW5vIGl6bWVkICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtpc3N1ZS5vcmlnaW4gPz8gXCJ2cmVkbm9zdFwifSBpbWVsbyAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcImVsZW1lbnRvdlwifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtpc3N1ZS5vcmlnaW4gPz8gXCJ2cmVkbm9zdFwifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFByZW1hamhubzogcHJpxI1ha292YW5vLCBkYSBibyAke2lzc3VlLm9yaWdpbn0gaW1lbG8gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBQcmVtYWpobm86IHByacSNYWtvdmFubywgZGEgYm8gJHtpc3N1ZS5vcmlnaW59ICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBOZXZlbGphdmVuIG5pejogbW9yYSBzZSB6YcSNZXRpIHogXCIke19pc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBOZXZlbGphdmVuIG5pejogbW9yYSBzZSBrb27EjWF0aSB6IFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5ldmVsamF2ZW4gbml6OiBtb3JhIHZzZWJvdmF0aSBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5ldmVsamF2ZW4gbml6OiBtb3JhIHVzdHJlemF0aSB2em9yY3UgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgTmV2ZWxqYXZlbiAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZXZlbGphdm5vIMWhdGV2aWxvOiBtb3JhIGJpdGkgdmXEjWtyYXRuaWsgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5lcHJlcG96bmFuJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcImkga2xqdcSNaVwiIDogXCIga2xqdcSNXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5ldmVsamF2ZW4ga2xqdcSNIHYgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiTmV2ZWxqYXZlbiB2bm9zXCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOZXZlbGphdm5hIHZyZWRub3N0IHYgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiTmV2ZWxqYXZlbiB2bm9zXCI7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/sl.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/sv.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/sv.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att innehålla\" },\n set: { unit: \"objekt\", verb: \"att innehålla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"reguljärt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad sträng\",\n base64url: \"base64url-kodad sträng\",\n json_string: \"JSON-sträng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: förväntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: förväntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: förväntat ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: förväntade en av ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy9zdi5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGdDQUFnQztBQUNsRCxnQkFBZ0IsK0JBQStCO0FBQy9DLGlCQUFpQix1Q0FBdUM7QUFDeEQsZUFBZSx1Q0FBdUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLHNFQUFzRSxlQUFlLFNBQVMsU0FBUztBQUN2RztBQUNBLHVEQUF1RCxTQUFTLFNBQVMsU0FBUztBQUNsRjtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsNkRBQXVCLGtCQUFrQjtBQUNwRyx5REFBeUQscURBQWUsb0JBQW9CO0FBQzVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELDBCQUEwQixTQUFTLElBQUksRUFBRSwwQkFBMEIsRUFBRSx5QkFBeUI7QUFDcEo7QUFDQSxpREFBaUQsMEJBQTBCLFNBQVMsSUFBSSxFQUFFLHlCQUF5QjtBQUNuSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELDBCQUEwQixTQUFTLElBQUksRUFBRSwwQkFBMEIsRUFBRSxZQUFZO0FBQ3ZJO0FBQ0Esa0RBQWtELDBCQUEwQixTQUFTLElBQUksRUFBRSx5QkFBeUI7QUFDcEg7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QsY0FBYztBQUM3RTtBQUNBO0FBQ0EsK0RBQStELGNBQWM7QUFDN0U7QUFDQSwrREFBK0QsZ0JBQWdCO0FBQy9FO0FBQ0EscUVBQXFFLGVBQWU7QUFDcEYscUNBQXFDLGdEQUFnRDtBQUNyRjtBQUNBO0FBQ0Esa0VBQWtFLGNBQWM7QUFDaEY7QUFDQSwwQkFBMEIsMERBQTBELElBQUkscURBQWUsbUJBQW1CO0FBQzFIO0FBQ0EsMkNBQTJDLHlCQUF5QjtBQUNwRTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMseUJBQXlCO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcc3YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCJ0ZWNrZW5cIiwgdmVyYjogXCJhdHQgaGFcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwiYnl0ZXNcIiwgdmVyYjogXCJhdHQgaGFcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcIm9iamVrdFwiLCB2ZXJiOiBcImF0dCBpbm5laMOlbGxhXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwib2JqZWt0XCIsIHZlcmI6IFwiYXR0IGlubmVow6VsbGFcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcInJlZ3VsasOkcnQgdXR0cnlja1wiLFxuICAgICAgICBlbWFpbDogXCJlLXBvc3RhZHJlc3NcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJJU08tZGF0dW0gb2NoIHRpZFwiLFxuICAgICAgICBkYXRlOiBcIklTTy1kYXR1bVwiLFxuICAgICAgICB0aW1lOiBcIklTTy10aWRcIixcbiAgICAgICAgZHVyYXRpb246IFwiSVNPLXZhcmFrdGlnaGV0XCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NC1pbnRlcnZhbGxcIixcbiAgICAgICAgaXB2NjogXCJJUHY2LWludGVydmFsbFwiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NC1zcGVrdHJ1bVwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2Ni1zcGVrdHJ1bVwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LWtvZGFkIHN0csOkbmdcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcImJhc2U2NHVybC1rb2RhZCBzdHLDpG5nXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04tc3Ryw6RuZ1wiLFxuICAgICAgICBlMTY0OiBcIkUuMTY0LW51bW1lclwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwibWFsbC1saXRlcmFsXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwiYW50YWxcIixcbiAgICAgICAgYXJyYXk6IFwibGlzdGFcIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0IGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0sIGZpY2sgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYE9naWx0aWcgaW5tYXRuaW5nOiBmw7ZydsOkbnRhdCAke2V4cGVjdGVkfSwgZmljayAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE9naWx0aWcgaW5tYXRuaW5nOiBmw7ZydsOkbnRhdCAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYE9naWx0aWd0IHZhbDogZsO2cnbDpG50YWRlIGVuIGF2ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEbDtnIgc3Rvcih0KTogZsO2cnbDpG50YWRlICR7aXNzdWUub3JpZ2luID8/IFwidsOkcmRldFwifSBhdHQgaGEgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCJlbGVtZW50XCJ9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBGw7ZyIHN0b3IodCk6IGbDtnJ2w6RudGF0ICR7aXNzdWUub3JpZ2luID8/IFwidsOkcmRldFwifSBhdHQgaGEgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBGw7ZyIGxpdGUodCk6IGbDtnJ2w6RudGFkZSAke2lzc3VlLm9yaWdpbiA/PyBcInbDpHJkZXRcIn0gYXR0IGhhICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgRsO2ciBsaXRlKHQpOiBmw7ZydsOkbnRhZGUgJHtpc3N1ZS5vcmlnaW4gPz8gXCJ2w6RyZGV0XCJ9IGF0dCBoYSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgYsO2cmphIG1lZCBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIHNsdXRhIG1lZCBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBPZ2lsdGlnIHN0csOkbmc6IG3DpXN0ZSBpbm5laMOlbGxhIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgbWF0Y2hhIG3Dtm5zdHJldCBcIiR7X2lzc3VlLnBhdHRlcm59XCJgO1xuICAgICAgICAgICAgICAgIHJldHVybiBgT2dpbHRpZyh0KSAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBPZ2lsdGlndCB0YWw6IG3DpXN0ZSB2YXJhIGVuIG11bHRpcGVsIGF2ICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwiT2vDpG5kYSBueWNrbGFyXCIgOiBcIk9rw6RuZCBueWNrZWxcIn06ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgT2dpbHRpZyBueWNrZWwgaSAke2lzc3VlLm9yaWdpbiA/PyBcInbDpHJkZXRcIn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJPZ2lsdGlnIGlucHV0XCI7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9lbGVtZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBPZ2lsdGlndCB2w6RyZGUgaSAke2lzc3VlLm9yaWdpbiA/PyBcInbDpHJkZXRcIn1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE9naWx0aWcgaW5wdXRgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/sv.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ta.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ta.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"உள்ளீடு\",\n email: \"மின்னஞ்சல் முகவரி\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO தேதி நேரம்\",\n date: \"ISO தேதி\",\n time: \"ISO நேரம்\",\n duration: \"ISO கால அளவு\",\n ipv4: \"IPv4 முகவரி\",\n ipv6: \"IPv6 முகவரி\",\n cidrv4: \"IPv4 வரம்பு\",\n cidrv6: \"IPv6 வரம்பு\",\n base64: \"base64-encoded சரம்\",\n base64url: \"base64url-encoded சரம்\",\n json_string: \"JSON சரம்\",\n e164: \"E.164 எண்\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"எண்\",\n array: \"அணி\",\n null: \"வெறுமை\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue.expected}, பெறப்பட்டது ${received}`;\n }\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n }\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n }\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n if (_issue.format === \"ends_with\")\n return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n if (_issue.format === \"includes\")\n return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n if (_issue.format === \"regex\")\n return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n return `தவறான ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n case \"unrecognized_keys\":\n return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} இல் தவறான விசை`;\n case \"invalid_union\":\n return \"தவறான உள்ளீடு\";\n case \"invalid_element\":\n return `${issue.origin} இல் தவறான மதிப்பு`;\n default:\n return `தவறான உள்ளீடு`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy90YS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLG9EQUFvRDtBQUN0RSxnQkFBZ0IsaURBQWlEO0FBQ2pFLGlCQUFpQixrREFBa0Q7QUFDbkUsZUFBZSxrREFBa0Q7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsNkVBQTZFLGVBQWUsZ0JBQWdCLFNBQVM7QUFDckg7QUFDQSw4REFBOEQsU0FBUyxnQkFBZ0IsU0FBUztBQUNoRztBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsNkRBQXVCLGtCQUFrQjtBQUMzRyxnRUFBZ0UscURBQWUscUJBQXFCO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFLDJCQUEyQixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSw2QkFBNkI7QUFDNUo7QUFDQSw0REFBNEQsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLDBCQUEwQjtBQUN6SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0VBQWtFLGNBQWMsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsYUFBYSxxQkFBcUI7QUFDdEo7QUFDQSw4REFBOEQsY0FBYyxFQUFFLElBQUksRUFBRSwwQkFBMEI7QUFDOUc7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsY0FBYztBQUN6RDtBQUNBLDJDQUEyQyxjQUFjO0FBQ3pEO0FBQ0EsMkNBQTJDLGdCQUFnQjtBQUMzRDtBQUNBLDBDQUEwQyxnQkFBZ0I7QUFDMUQsZ0NBQWdDLGdEQUFnRDtBQUNoRjtBQUNBO0FBQ0EscUNBQXFDLGVBQWU7QUFDcEQ7QUFDQSwrQ0FBK0MsbUNBQW1DLElBQUkscURBQWUsbUJBQW1CO0FBQ3hIO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFx0YS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcIuCujuCutOCvgeCupOCvjeCupOCvgeCuleCvjeCuleCus+CvjVwiLCB2ZXJiOiBcIuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41cIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwi4K6q4K+I4K6f4K+N4K6f4K+B4K6V4K6z4K+NXCIsIHZlcmI6IFwi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjVwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwi4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NXCIsIHZlcmI6IFwi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjVwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcIuCuieCuseCvgeCuquCvjeCuquCvgeCuleCus+CvjVwiLCB2ZXJiOiBcIuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41cIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcIuCuieCus+CvjeCus+CvgOCun+CvgVwiLFxuICAgICAgICBlbWFpbDogXCLgrq7grr/grqngr43grqngrp7gr43grprgrrLgr40g4K6u4K+B4K6V4K614K6w4K6/XCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiSVNPIOCupOCvh+CupOCuvyDgrqjgr4fgrrDgrq7gr41cIixcbiAgICAgICAgZGF0ZTogXCJJU08g4K6k4K+H4K6k4K6/XCIsXG4gICAgICAgIHRpbWU6IFwiSVNPIOCuqOCvh+CusOCuruCvjVwiLFxuICAgICAgICBkdXJhdGlvbjogXCJJU08g4K6V4K6+4K6yIOCuheCus+CuteCvgVwiLFxuICAgICAgICBpcHY0OiBcIklQdjQg4K6u4K+B4K6V4K614K6w4K6/XCIsXG4gICAgICAgIGlwdjY6IFwiSVB2NiDgrq7gr4HgrpXgrrXgrrDgrr9cIixcbiAgICAgICAgY2lkcnY0OiBcIklQdjQg4K614K6w4K6u4K+N4K6q4K+BXCIsXG4gICAgICAgIGNpZHJ2NjogXCJJUHY2IOCuteCusOCuruCvjeCuquCvgVwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0LWVuY29kZWQg4K6a4K6w4K6u4K+NXCIsXG4gICAgICAgIGJhc2U2NHVybDogXCJiYXNlNjR1cmwtZW5jb2RlZCDgrprgrrDgrq7gr41cIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTiDgrprgrrDgrq7gr41cIixcbiAgICAgICAgZTE2NDogXCJFLjE2NCDgro7grqPgr41cIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcImlucHV0XCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwi4K6O4K6j4K+NXCIsXG4gICAgICAgIGFycmF5OiBcIuCuheCuo+Cuv1wiLFxuICAgICAgICBudWxsOiBcIuCuteCvhuCuseCvgeCuruCviFwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwg4K6q4K+G4K6x4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtleHBlY3RlZH0sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYOCupOCuteCuseCuvuCuqSDgrrXgrr/grrDgr4Hgrqrgr43grqrgrq7gr406IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX0g4K6H4K6y4K+NIOCukuCuqeCvjeCuseCvgWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOCuruCuv+CulSDgrqrgr4bgrrDgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2lzc3VlLm9yaWdpbiA/PyBcIuCuruCupOCuv+CuquCvjeCuquCvgVwifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcIuCuieCuseCvgeCuquCvjeCuquCvgeCuleCus+CvjVwifSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg4K6u4K6/4K6VIOCuquCvhuCusOCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7aXNzdWUub3JpZ2luID8/IFwi4K6u4K6k4K6/4K6q4K+N4K6q4K+BXCJ9ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4K6u4K6/4K6V4K6a4K+NIOCumuCuv+CuseCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7aXNzdWUub3JpZ2lufSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOyAvL1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYOCuruCuv+CuleCumuCvjSDgrprgrr/grrHgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2lzc3VlLm9yaWdpbn0gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiBcIiR7X2lzc3VlLnByZWZpeH1cIiDgrofgrrLgr40g4K6k4K+K4K6f4K6Z4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogXCIke19pc3N1ZS5zdWZmaXh9XCIg4K6H4K6y4K+NIOCuruCvgeCun+Cuv+CuteCun+CviOCuryDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogXCIke19pc3N1ZS5pbmNsdWRlc31cIiDgrpAg4K6J4K6z4K+N4K6z4K6f4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAke19pc3N1ZS5wYXR0ZXJufSDgrq7gr4HgrrHgr4jgrqrgrr7grp/gr43grp/gr4Hgrp/grqngr40g4K6q4K+K4K6w4K+B4K6o4K+N4K6kIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDgrqTgrrXgrrHgrr7grqkgJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg4K6k4K614K6x4K6+4K6pIOCujuCuo+CvjTogJHtpc3N1ZS5kaXZpc29yfSDgrofgrqngr40g4K6q4K6y4K6u4K6+4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDgroXgrp/gr4jgrq/grr7grrPgrq7gr40g4K6k4K+G4K6w4K6/4K6v4K6+4K6kIOCuteCuv+CumuCviCR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCLgrpXgrrPgr41cIiA6IFwiXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2lufSDgrofgrrLgr40g4K6k4K614K6x4K6+4K6pIOCuteCuv+CumuCviGA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF91bmlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIuCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4FcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2lufSDgrofgrrLgr40g4K6k4K614K6x4K6+4K6pIOCuruCupOCuv+CuquCvjeCuquCvgWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBg4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgWA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ta.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/th.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/th.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n array: { unit: \"รายการ\", verb: \"ควรมี\" },\n set: { unit: \"รายการ\", verb: \"ควรมี\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ข้อมูลที่ป้อน\",\n email: \"ที่อยู่อีเมล\",\n url: \"URL\",\n emoji: \"อิโมจิ\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"วันที่เวลาแบบ ISO\",\n date: \"วันที่แบบ ISO\",\n time: \"เวลาแบบ ISO\",\n duration: \"ช่วงเวลาแบบ ISO\",\n ipv4: \"ที่อยู่ IPv4\",\n ipv6: \"ที่อยู่ IPv6\",\n cidrv4: \"ช่วง IP แบบ IPv4\",\n cidrv6: \"ช่วง IP แบบ IPv6\",\n base64: \"ข้อความแบบ Base64\",\n base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n json_string: \"ข้อความแบบ JSON\",\n e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n jwt: \"โทเคน JWT\",\n template_literal: \"ข้อมูลที่ป้อน\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"ตัวเลข\",\n array: \"อาร์เรย์ (Array)\",\n null: \"ไม่มีค่า (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue.expected} แต่ได้รับ ${received}`;\n }\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ค่าไม่ถูกต้อง: ควรเป็น ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n if (_issue.format === \"regex\")\n return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n return `รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n case \"unrecognized_keys\":\n return `พบคีย์ที่ไม่รู้จัก: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n case \"invalid_union\":\n return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n case \"invalid_element\":\n return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n default:\n return `ข้อมูลไม่ถูกต้อง`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy90aC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGlDQUFpQztBQUNuRCxnQkFBZ0IsNkJBQTZCO0FBQzdDLGlCQUFpQiwrQkFBK0I7QUFDaEQsZUFBZSwrQkFBK0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EseUVBQXlFLGdCQUFnQixZQUFZLFNBQVM7QUFDOUc7QUFDQSwwREFBMEQsVUFBVSxZQUFZLFNBQVM7QUFDekY7QUFDQTtBQUNBO0FBQ0EscURBQXFELDZEQUF1QixrQkFBa0I7QUFDOUYsNkRBQTZELHFEQUFlLG9CQUFvQjtBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyx1QkFBdUIsT0FBTyxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCO0FBQ2xJLHFDQUFxQyx1QkFBdUIsT0FBTyxLQUFLLEVBQUUseUJBQXlCO0FBQ25HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsY0FBYyxPQUFPLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxZQUFZO0FBQ2pIO0FBQ0EseUNBQXlDLGNBQWMsT0FBTyxLQUFLLEVBQUUseUJBQXlCO0FBQzlGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFLGNBQWM7QUFDdEY7QUFDQTtBQUNBLHVFQUF1RSxjQUFjO0FBQ3JGO0FBQ0EsK0RBQStELGdCQUFnQjtBQUMvRTtBQUNBLHlFQUF5RSxlQUFlO0FBQ3hGLDRDQUE0QyxnREFBZ0Q7QUFDNUY7QUFDQTtBQUNBLG9FQUFvRSxlQUFlO0FBQ25GO0FBQ0EsOENBQThDLHFEQUFlLG1CQUFtQjtBQUNoRjtBQUNBLDJDQUEyQyxhQUFhO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxhQUFhO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcdGguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi4vY29yZS91dGlsLmpzXCI7XG5jb25zdCBlcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBTaXphYmxlID0ge1xuICAgICAgICBzdHJpbmc6IHsgdW5pdDogXCLguJXguLHguKfguK3guLHguIHguKnguKNcIiwgdmVyYjogXCLguITguKfguKPguKHguLVcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwi4LmE4Lia4LiV4LmMXCIsIHZlcmI6IFwi4LiE4Lin4Lij4Lih4Li1XCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCLguKPguLLguKLguIHguLLguKNcIiwgdmVyYjogXCLguITguKfguKPguKHguLVcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCLguKPguLLguKLguIHguLLguKNcIiwgdmVyYjogXCLguITguKfguKPguKHguLVcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcIuC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC4m+C5ieC4reC4mVwiLFxuICAgICAgICBlbWFpbDogXCLguJfguLXguYjguK3guKLguLnguYjguK3guLXguYDguKHguKVcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCLguK3guLTguYLguKHguIjguLRcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwi4Lin4Lix4LiZ4LiX4Li14LmI4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTT1wiLFxuICAgICAgICBkYXRlOiBcIuC4p+C4seC4meC4l+C4teC5iOC5geC4muC4miBJU09cIixcbiAgICAgICAgdGltZTogXCLguYDguKfguKXguLLguYHguJrguJogSVNPXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIuC4iuC5iOC4p+C4h+C5gOC4p+C4peC4suC5geC4muC4miBJU09cIixcbiAgICAgICAgaXB2NDogXCLguJfguLXguYjguK3guKLguLnguYggSVB2NFwiLFxuICAgICAgICBpcHY2OiBcIuC4l+C4teC5iOC4reC4ouC4ueC5iCBJUHY2XCIsXG4gICAgICAgIGNpZHJ2NDogXCLguIrguYjguKfguIcgSVAg4LmB4Lia4LiaIElQdjRcIixcbiAgICAgICAgY2lkcnY2OiBcIuC4iuC5iOC4p+C4hyBJUCDguYHguJrguJogSVB2NlwiLFxuICAgICAgICBiYXNlNjQ6IFwi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEJhc2U2NCDguKrguLPguKvguKPguLHguJogVVJMXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIuC4guC5ieC4reC4hOC4p+C4suC4oeC5geC4muC4miBKU09OXCIsXG4gICAgICAgIGUxNjQ6IFwi4LmA4Lia4Lit4Lij4LmM4LmC4LiX4Lij4Lio4Lix4Lie4LiX4LmM4Lij4Liw4Lir4Lin4LmI4Liy4LiH4Lib4Lij4Liw4LmA4LiX4LioIChFLjE2NClcIixcbiAgICAgICAgand0OiBcIuC5guC4l+C5gOC4hOC4mSBKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCLguILguYnguK3guKHguLnguKXguJfguLXguYjguJvguYnguK3guJlcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCLguJXguLHguKfguYDguKXguIJcIixcbiAgICAgICAgYXJyYXk6IFwi4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmMIChBcnJheSlcIixcbiAgICAgICAgbnVsbDogXCLguYTguKHguYjguKHguLXguITguYjguLIgKG51bGwpXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOC4m+C4o+C4sOC5gOC4oOC4l+C4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZIGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0g4LmB4LiV4LmI4LmE4LiU4LmJ4Lij4Lix4LiaICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDguJvguKPguLDguYDguKDguJfguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4mSAke2V4cGVjdGVkfSDguYHguJXguYjguYTguJTguYnguKPguLHguJogJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDguITguYjguLLguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4mSAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYOC4leC4seC4p+C5gOC4peC4t+C4reC4geC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZ4Lir4LiZ4Li24LmI4LiH4LmD4LiZICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCLguYTguKHguYjguYDguIHguLTguJlcIiA6IFwi4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4LiyXCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDguYDguIHguLTguJnguIHguLPguKvguJnguJQ6ICR7aXNzdWUub3JpZ2luID8/IFwi4LiE4LmI4LiyXCJ9IOC4hOC4p+C4o+C4oeC4tSR7YWRqfSAke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcIuC4o+C4suC4ouC4geC4suC4o1wifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDguYDguIHguLTguJnguIHguLPguKvguJnguJQ6ICR7aXNzdWUub3JpZ2luID8/IFwi4LiE4LmI4LiyXCJ9IOC4hOC4p+C4o+C4oeC4tSR7YWRqfSAke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCLguK3guKLguYjguLLguIfguJnguYnguK3guKJcIiA6IFwi4Lih4Liy4LiB4LiB4Lin4LmI4LiyXCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOC4meC5ieC4reC4ouC4geC4p+C5iOC4suC4geC4s+C4q+C4meC4lDogJHtpc3N1ZS5vcmlnaW59IOC4hOC4p+C4o+C4oeC4tSR7YWRqfSAke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYOC4meC5ieC4reC4ouC4geC4p+C5iOC4suC4geC4s+C4q+C4meC4lDogJHtpc3N1ZS5vcmlnaW59IOC4hOC4p+C4o+C4oeC4tSR7YWRqfSAke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguILguYnguK3guITguKfguLLguKHguJXguYnguK3guIfguILguLbguYnguJnguJXguYnguJnguJTguYnguKfguKIgXCIke19pc3N1ZS5wcmVmaXh9XCJgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4peC4h+C4l+C5ieC4suC4ouC4lOC5ieC4p+C4oiBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4oeC4tSBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiIOC4reC4ouC4ueC5iOC5g+C4meC4guC5ieC4reC4hOC4p+C4suC4oWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4leC5ieC4reC4h+C4leC4o+C4h+C4geC4seC4muC4o+C4ueC4m+C5geC4muC4muC4l+C4teC5iOC4geC4s+C4q+C4meC4lCAke19pc3N1ZS5wYXR0ZXJufWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6ICR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOC4leC4seC4p+C5gOC4peC4guC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiV4LmJ4Lit4LiH4LmA4Lib4LmH4LiZ4LiI4Liz4LiZ4Lin4LiZ4LiX4Li14LmI4Lir4Liy4Lij4LiU4LmJ4Lin4LiiICR7aXNzdWUuZGl2aXNvcn0g4LmE4LiU4LmJ4Lil4LiH4LiV4Lix4LinYDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg4Lie4Lia4LiE4Li14Lii4LmM4LiX4Li14LmI4LmE4Lih4LmI4Lij4Li54LmJ4LiI4Lix4LiBOiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOC4hOC4teC4ouC5jOC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4h+C5g+C4mSAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC5hOC4oeC5iOC4leC4o+C4h+C4geC4seC4muC4o+C4ueC4m+C5geC4muC4muC4ouC4ueC5gOC4meC4teC4ouC4meC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5iVwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiH4LmD4LiZICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBg4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHYDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/th.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/tr.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/tr.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmalı\" },\n file: { unit: \"bayt\", verb: \"olmalı\" },\n array: { unit: \"öğe\", verb: \"olmalı\" },\n set: { unit: \"öğe\", verb: \"olmalı\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO süre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aralığı\",\n cidrv6: \"IPv6 aralığı\",\n base64: \"base64 ile şifrelenmiş metin\",\n base64url: \"base64url ile şifrelenmiş metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"Şablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Geçersiz değer: beklenen instanceof ${issue.expected}, alınan ${received}`;\n }\n return `Geçersiz değer: beklenen ${expected}, alınan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Geçersiz değer: beklenen ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n if (_issue.format === \"ends_with\")\n return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n if (_issue.format === \"regex\")\n return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n return `Geçersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} içinde geçersiz anahtar`;\n case \"invalid_union\":\n return \"Geçersiz değer\";\n case \"invalid_element\":\n return `${issue.origin} içinde geçersiz değer`;\n default:\n return `Geçersiz değer`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy90ci5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGtDQUFrQztBQUNwRCxnQkFBZ0IsOEJBQThCO0FBQzlDLGlCQUFpQiw2QkFBNkI7QUFDOUMsZUFBZSw2QkFBNkI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0Esa0VBQWtFLGVBQWUsV0FBVyxTQUFTO0FBQ3JHO0FBQ0EsbURBQW1ELFNBQVMsV0FBVyxTQUFTO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCw2REFBdUIsa0JBQWtCO0FBQ2hHLHlFQUF5RSxxREFBZSxvQkFBb0I7QUFDNUc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QseUJBQXlCLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQjtBQUNwSSw4Q0FBOEMseUJBQXlCLEVBQUUsSUFBSSxFQUFFLHlCQUF5QjtBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELGNBQWMsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUNoSCw4Q0FBOEMsY0FBYyxFQUFFLElBQUksRUFBRSx5QkFBeUI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsY0FBYztBQUM3RDtBQUNBLCtDQUErQyxjQUFjO0FBQzdEO0FBQ0EsK0NBQStDLGdCQUFnQjtBQUMvRDtBQUNBLDhDQUE4QyxnQkFBZ0I7QUFDOUQsbUNBQW1DLGdEQUFnRDtBQUNuRjtBQUNBO0FBQ0EseUNBQXlDLGVBQWU7QUFDeEQ7QUFDQSw0Q0FBNEMsbUNBQW1DLElBQUkscURBQWUsbUJBQW1CO0FBQ3JIO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFx0ci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcImthcmFrdGVyXCIsIHZlcmI6IFwib2xtYWzEsVwiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCJiYXl0XCIsIHZlcmI6IFwib2xtYWzEsVwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwiw7bEn2VcIiwgdmVyYjogXCJvbG1hbMSxXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwiw7bEn2VcIiwgdmVyYjogXCJvbG1hbMSxXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCJnaXJkaVwiLFxuICAgICAgICBlbWFpbDogXCJlLXBvc3RhIGFkcmVzaVwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIklTTyB0YXJpaCB2ZSBzYWF0XCIsXG4gICAgICAgIGRhdGU6IFwiSVNPIHRhcmloXCIsXG4gICAgICAgIHRpbWU6IFwiSVNPIHNhYXRcIixcbiAgICAgICAgZHVyYXRpb246IFwiSVNPIHPDvHJlXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NCBhZHJlc2lcIixcbiAgICAgICAgaXB2NjogXCJJUHY2IGFkcmVzaVwiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NCBhcmFsxLHEn8SxXCIsXG4gICAgICAgIGNpZHJ2NjogXCJJUHY2IGFyYWzEscSfxLFcIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NCBpbGUgxZ9pZnJlbGVubWnFnyBtZXRpblwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJsIGlsZSDFn2lmcmVsZW5tacWfIG1ldGluXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT04gZGl6ZXNpXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQgc2F5xLFzxLFcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcIsWeYWJsb24gZGl6ZXNpXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCBhbMSxbmFuICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiAke2V4cGVjdGVkfSwgYWzEsW5hbiAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgR2XDp2Vyc2l6IHNlw6dlbmVrOiBhxZ9hxJ/EsWRha2lsZXJkZW4gYmlyaSBvbG1hbMSxOiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgw4dvayBiw7x5w7xrOiBiZWtsZW5lbiAke2lzc3VlLm9yaWdpbiA/PyBcImRlxJ9lclwifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcIsO2xJ9lXCJ9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYMOHb2sgYsO8ecO8azogYmVrbGVuZW4gJHtpc3N1ZS5vcmlnaW4gPz8gXCJkZcSfZXJcIn0gJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgw4dvayBrw7zDp8O8azogYmVrbGVuZW4gJHtpc3N1ZS5vcmlnaW59ICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDDh29rIGvDvMOnw7xrOiBiZWtsZW5lbiAke2lzc3VlLm9yaWdpbn0gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBHZcOnZXJzaXogbWV0aW46IFwiJHtfaXNzdWUucHJlZml4fVwiIGlsZSBiYcWfbGFtYWzEsWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgR2XDp2Vyc2l6IG1ldGluOiBcIiR7X2lzc3VlLnN1ZmZpeH1cIiBpbGUgYml0bWVsaWA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBHZcOnZXJzaXogbWV0aW46IFwiJHtfaXNzdWUuaW5jbHVkZXN9XCIgacOnZXJtZWxpYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEdlw6dlcnNpeiBtZXRpbjogJHtfaXNzdWUucGF0dGVybn0gZGVzZW5pbmUgdXltYWzEsWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBHZcOnZXJzaXogJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgR2XDp2Vyc2l6IHNhecSxOiAke2lzc3VlLmRpdmlzb3J9IGlsZSB0YW0gYsO2bMO8bmViaWxtZWxpYDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgVGFuxLFubWF5YW4gYW5haHRhciR7aXNzdWUua2V5cy5sZW5ndGggPiAxID8gXCJsYXJcIiA6IFwiXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcIiwgXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2lufSBpw6dpbmRlIGdlw6dlcnNpeiBhbmFodGFyYDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiR2XDp2Vyc2l6IGRlxJ9lclwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtpc3N1ZS5vcmlnaW59IGnDp2luZGUgZ2XDp2Vyc2l6IGRlxJ9lcmA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgR2XDp2Vyc2l6IGRlxJ9lcmA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/tr.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ua.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ua.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _uk_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uk.js */ \"(app-pages-browser)/./node_modules/zod/v4/locales/uk.js\");\n\n/** @deprecated Use `uk` instead. */\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_uk_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy91YS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF5QjtBQUN6QjtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCLFdBQVcsa0RBQUU7QUFDYiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcem9kXFx2NFxcbG9jYWxlc1xcdWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHVrIGZyb20gXCIuL3VrLmpzXCI7XG4vKiogQGRlcHJlY2F0ZWQgVXNlIGB1a2AgaW5zdGVhZC4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdWsoKTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ua.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/uk.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/uk.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"символів\", verb: \"матиме\" },\n file: { unit: \"байтів\", verb: \"матиме\" },\n array: { unit: \"елементів\", verb: \"матиме\" },\n set: { unit: \"елементів\", verb: \"матиме\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"вхідні дані\",\n email: \"адреса електронної пошти\",\n url: \"URL\",\n emoji: \"емодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"дата та час ISO\",\n date: \"дата ISO\",\n time: \"час ISO\",\n duration: \"тривалість ISO\",\n ipv4: \"адреса IPv4\",\n ipv6: \"адреса IPv6\",\n cidrv4: \"діапазон IPv4\",\n cidrv6: \"діапазон IPv6\",\n base64: \"рядок у кодуванні base64\",\n base64url: \"рядок у кодуванні base64url\",\n json_string: \"рядок JSON\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"вхідні дані\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"число\",\n array: \"масив\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Неправильні вхідні дані: очікується instanceof ${issue.expected}, отримано ${received}`;\n }\n return `Неправильні вхідні дані: очікується ${expected}, отримано ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неправильні вхідні дані: очікується ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Неправильна опція: очікується одне з ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n return `Неправильний ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неправильний ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Неправильні вхідні дані\";\n case \"invalid_element\":\n return `Неправильне значення у ${issue.origin}`;\n default:\n return `Неправильні вхідні дані`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy91ay5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLGtDQUFrQztBQUNwRCxnQkFBZ0IsZ0NBQWdDO0FBQ2hELGlCQUFpQixtQ0FBbUM7QUFDcEQsZUFBZSxtQ0FBbUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLDZFQUE2RSxlQUFlLGFBQWEsU0FBUztBQUNsSDtBQUNBLDhEQUE4RCxTQUFTLGFBQWEsU0FBUztBQUM3RjtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsNkRBQXVCLGtCQUFrQjtBQUMzRywrREFBK0QscURBQWUsb0JBQW9CO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkRBQTZELDRCQUE0QixFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCO0FBQ3ZLLHlEQUF5RCw0QkFBNEIsT0FBTyxJQUFJLEVBQUUseUJBQXlCO0FBQzNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsY0FBYyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUN4STtBQUNBLHVEQUF1RCxjQUFjLE9BQU8sSUFBSSxFQUFFLHlCQUF5QjtBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdFQUF3RSxjQUFjO0FBQ3RGO0FBQ0EsNEVBQTRFLGNBQWM7QUFDMUY7QUFDQSxtRUFBbUUsZ0JBQWdCO0FBQ25GO0FBQ0EsOEVBQThFLGVBQWU7QUFDN0YsdUNBQXVDLGdEQUFnRDtBQUN2RjtBQUNBO0FBQ0Esa0VBQWtFLGNBQWM7QUFDaEY7QUFDQSw0Q0FBNEMsaUNBQWlDLElBQUkscURBQWUsbUJBQW1CO0FBQ25IO0FBQ0EsOENBQThDLGFBQWE7QUFDM0Q7QUFDQTtBQUNBO0FBQ0EsaURBQWlELGFBQWE7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFx1ay5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcItGB0LjQvNCy0L7Qu9GW0LJcIiwgdmVyYjogXCLQvNCw0YLQuNC80LVcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwi0LHQsNC50YLRltCyXCIsIHZlcmI6IFwi0LzQsNGC0LjQvNC1XCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCLQtdC70LXQvNC10L3RgtGW0LJcIiwgdmVyYjogXCLQvNCw0YLQuNC80LVcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCLQtdC70LXQvNC10L3RgtGW0LJcIiwgdmVyYjogXCLQvNCw0YLQuNC80LVcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcItCy0YXRltC00L3RliDQtNCw0L3RllwiLFxuICAgICAgICBlbWFpbDogXCLQsNC00YDQtdGB0LAg0LXQu9C10LrRgtGA0L7QvdC90L7RlyDQv9C+0YjRgtC4XCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwi0LXQvNC+0LTQt9GWXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcItC00LDRgtCwINGC0LAg0YfQsNGBIElTT1wiLFxuICAgICAgICBkYXRlOiBcItC00LDRgtCwIElTT1wiLFxuICAgICAgICB0aW1lOiBcItGH0LDRgSBJU09cIixcbiAgICAgICAgZHVyYXRpb246IFwi0YLRgNC40LLQsNC70ZbRgdGC0YwgSVNPXCIsXG4gICAgICAgIGlwdjQ6IFwi0LDQtNGA0LXRgdCwIElQdjRcIixcbiAgICAgICAgaXB2NjogXCLQsNC00YDQtdGB0LAgSVB2NlwiLFxuICAgICAgICBjaWRydjQ6IFwi0LTRltCw0L/QsNC30L7QvSBJUHY0XCIsXG4gICAgICAgIGNpZHJ2NjogXCLQtNGW0LDQv9Cw0LfQvtC9IElQdjZcIixcbiAgICAgICAgYmFzZTY0OiBcItGA0Y/QtNC+0Log0YMg0LrQvtC00YPQstCw0L3QvdGWIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwi0YDRj9C00L7QuiDRgyDQutC+0LTRg9Cy0LDQvdC90ZYgYmFzZTY0dXJsXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcItGA0Y/QtNC+0LogSlNPTlwiLFxuICAgICAgICBlMTY0OiBcItC90L7QvNC10YAgRS4xNjRcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcItCy0YXRltC00L3RliDQtNCw0L3RllwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICAgICAgbnVtYmVyOiBcItGH0LjRgdC70L5cIixcbiAgICAgICAgYXJyYXk6IFwi0LzQsNGB0LjQslwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwg0L7RgtGA0LjQvNCw0L3QviAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7ZXhwZWN0ZWR9LCDQvtGC0YDQuNC80LDQvdC+ICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdC/0YDQsNCy0LjQu9GM0L3QsCDQvtC/0YbRltGPOiDQvtGH0ZbQutGD0ZTRgtGM0YHRjyDQvtC00L3QtSDQtyAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0JfQsNC90LDQtNGC0L4g0LLQtdC70LjQutC1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2lzc3VlLm9yaWdpbiA/PyBcItC30L3QsNGH0LXQvdC90Y9cIn0gJHtzaXppbmcudmVyYn0gJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCLQtdC70LXQvNC10L3RgtGW0LJcIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg0JfQsNC90LDQtNGC0L4g0LLQtdC70LjQutC1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2lzc3VlLm9yaWdpbiA/PyBcItC30L3QsNGH0LXQvdC90Y9cIn0g0LHRg9C00LUgJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJ0b29fc21hbGxcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPj1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDQl9Cw0L3QsNC00YLQviDQvNCw0LvQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtpc3N1ZS5vcmlnaW59ICR7c2l6aW5nLnZlcmJ9ICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg0JfQsNC90LDQtNGC0L4g0LzQsNC70LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7aXNzdWUub3JpZ2lufSDQsdGD0LTQtSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQv9C+0YfQuNC90LDRgtC40YHRjyDQtyBcIiR7X2lzc3VlLnByZWZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC30LDQutGW0L3Rh9GD0LLQsNGC0LjRgdGPINC90LAgXCIke19pc3N1ZS5zdWZmaXh9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC80ZbRgdGC0LjRgtC4IFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INCy0ZbQtNC/0L7QstGW0LTQsNGC0Lgg0YjQsNCx0LvQvtC90YMgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5ICR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0YfQuNGB0LvQvjog0L/QvtCy0LjQvdC90L4g0LHRg9GC0Lgg0LrRgNCw0YLQvdC40LwgJHtpc3N1ZS5kaXZpc29yfWA7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXRgNC+0LfQv9GW0LfQvdCw0L3QuNC5INC60LvRjtGHJHtpc3N1ZS5rZXlzLmxlbmd0aCA+IDEgPyBcItGWXCIgOiBcIlwifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0LrQu9GO0Ycg0YMgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZZcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0LfQvdCw0YfQtdC90L3RjyDRgyAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWYDtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZUVycm9yOiBlcnJvcigpLFxuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/uk.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/ur.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/ur.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"حروف\", verb: \"ہونا\" },\n file: { unit: \"بائٹس\", verb: \"ہونا\" },\n array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ان پٹ\",\n email: \"ای میل ایڈریس\",\n url: \"یو آر ایل\",\n emoji: \"ایموجی\",\n uuid: \"یو یو آئی ڈی\",\n uuidv4: \"یو یو آئی ڈی وی 4\",\n uuidv6: \"یو یو آئی ڈی وی 6\",\n nanoid: \"نینو آئی ڈی\",\n guid: \"جی یو آئی ڈی\",\n cuid: \"سی یو آئی ڈی\",\n cuid2: \"سی یو آئی ڈی 2\",\n ulid: \"یو ایل آئی ڈی\",\n xid: \"ایکس آئی ڈی\",\n ksuid: \"کے ایس یو آئی ڈی\",\n datetime: \"آئی ایس او ڈیٹ ٹائم\",\n date: \"آئی ایس او تاریخ\",\n time: \"آئی ایس او وقت\",\n duration: \"آئی ایس او مدت\",\n ipv4: \"آئی پی وی 4 ایڈریس\",\n ipv6: \"آئی پی وی 6 ایڈریس\",\n cidrv4: \"آئی پی وی 4 رینج\",\n cidrv6: \"آئی پی وی 6 رینج\",\n base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n json_string: \"جے ایس او این سٹرنگ\",\n e164: \"ای 164 نمبر\",\n jwt: \"جے ڈبلیو ٹی\",\n template_literal: \"ان پٹ\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"نمبر\",\n array: \"آرے\",\n null: \"نل\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `غلط ان پٹ: instanceof ${issue.expected} متوقع تھا، ${received} موصول ہوا`;\n }\n return `غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `غلط ان پٹ: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n return `غلط آپشن: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n }\n return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n }\n if (_issue.format === \"ends_with\")\n return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n if (_issue.format === \"includes\")\n return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n if (_issue.format === \"regex\")\n return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n return `غلط ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n case \"unrecognized_keys\":\n return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `${issue.origin} میں غلط کی`;\n case \"invalid_union\":\n return \"غلط ان پٹ\";\n case \"invalid_element\":\n return `${issue.origin} میں غلط ویلیو`;\n default:\n return `غلط ان پٹ`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy91ci5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLDRCQUE0QjtBQUM5QyxnQkFBZ0IsNkJBQTZCO0FBQzdDLGlCQUFpQiw2QkFBNkI7QUFDOUMsZUFBZSw2QkFBNkI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0Esb0RBQW9ELGdCQUFnQixhQUFhLFVBQVU7QUFDM0Y7QUFDQSxxQ0FBcUMsVUFBVSxhQUFhLFVBQVU7QUFDdEU7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLDZEQUF1QixtQkFBbUI7QUFDbkYsb0NBQW9DLHFEQUFlLHFCQUFxQjtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qyx5QkFBeUIsS0FBSyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCO0FBQy9ILG1DQUFtQyx5QkFBeUIsS0FBSyxJQUFJLEVBQUUsMEJBQTBCO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsY0FBYyxLQUFLLElBQUksRUFBRSwwQkFBMEIsRUFBRSxhQUFhO0FBQzNHO0FBQ0EscUNBQXFDLGNBQWMsS0FBSyxJQUFJLEVBQUUsMEJBQTBCO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLGNBQWM7QUFDeEQ7QUFDQTtBQUNBLDBDQUEwQyxjQUFjO0FBQ3hEO0FBQ0EsMENBQTBDLGdCQUFnQjtBQUMxRDtBQUNBLCtDQUErQyxnQkFBZ0I7QUFDL0QsOEJBQThCLGdEQUFnRDtBQUM5RTtBQUNBO0FBQ0Esb0NBQW9DLGVBQWU7QUFDbkQ7QUFDQSwwQ0FBMEMsaUNBQWlDLElBQUkscURBQWUsbUJBQW1CO0FBQ2pIO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFx1ci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcItit2LHZiNmBXCIsIHZlcmI6IFwi24HZiNmG2KdcIiB9LFxuICAgICAgICBmaWxlOiB7IHVuaXQ6IFwi2KjYp9im2bnYs1wiLCB2ZXJiOiBcItuB2YjZhtinXCIgfSxcbiAgICAgICAgYXJyYXk6IHsgdW5pdDogXCLYotim2bnZhdiyXCIsIHZlcmI6IFwi24HZiNmG2KdcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCLYotim2bnZhdiyXCIsIHZlcmI6IFwi24HZiNmG2KdcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcItin2YYg2b7ZuVwiLFxuICAgICAgICBlbWFpbDogXCLYp9uMINmF24zZhCDYp9uM2ojYsduM2LNcIixcbiAgICAgICAgdXJsOiBcItuM2Ygg2KLYsSDYp9uM2YRcIixcbiAgICAgICAgZW1vamk6IFwi2KfbjNmF2YjYrNuMXCIsXG4gICAgICAgIHV1aWQ6IFwi24zZiCDbjNmIINii2KbbjCDaiNuMXCIsXG4gICAgICAgIHV1aWR2NDogXCLbjNmIINuM2Ygg2KLYptuMINqI24wg2YjbjCA0XCIsXG4gICAgICAgIHV1aWR2NjogXCLbjNmIINuM2Ygg2KLYptuMINqI24wg2YjbjCA2XCIsXG4gICAgICAgIG5hbm9pZDogXCLZhtuM2YbZiCDYotim24wg2ojbjFwiLFxuICAgICAgICBndWlkOiBcItis24wg24zZiCDYotim24wg2ojbjFwiLFxuICAgICAgICBjdWlkOiBcItiz24wg24zZiCDYotim24wg2ojbjFwiLFxuICAgICAgICBjdWlkMjogXCLYs9uMINuM2Ygg2KLYptuMINqI24wgMlwiLFxuICAgICAgICB1bGlkOiBcItuM2Ygg2KfbjNmEINii2KbbjCDaiNuMXCIsXG4gICAgICAgIHhpZDogXCLYp9uM2qnYsyDYotim24wg2ojbjFwiLFxuICAgICAgICBrc3VpZDogXCLaqduSINin24zYsyDbjNmIINii2KbbjCDaiNuMXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcItii2KbbjCDYp9uM2LMg2KfZiCDaiNuM2bkg2bnYp9im2YVcIixcbiAgICAgICAgZGF0ZTogXCLYotim24wg2KfbjNizINin2Ygg2KrYp9ix24zYrlwiLFxuICAgICAgICB0aW1lOiBcItii2KbbjCDYp9uM2LMg2KfZiCDZiNmC2KpcIixcbiAgICAgICAgZHVyYXRpb246IFwi2KLYptuMINin24zYsyDYp9mIINmF2K/YqlwiLFxuICAgICAgICBpcHY0OiBcItii2KbbjCDZvtuMINmI24wgNCDYp9uM2ojYsduM2LNcIixcbiAgICAgICAgaXB2NjogXCLYotim24wg2b7bjCDZiNuMIDYg2KfbjNqI2LHbjNizXCIsXG4gICAgICAgIGNpZHJ2NDogXCLYotim24wg2b7bjCDZiNuMIDQg2LHbjNmG2KxcIixcbiAgICAgICAgY2lkcnY2OiBcItii2KbbjCDZvtuMINmI24wgNiDYsduM2YbYrFwiLFxuICAgICAgICBiYXNlNjQ6IFwi2KjbjNizIDY0INin2YYg2qnZiNqI2ogg2LPZudix2Ybar1wiLFxuICAgICAgICBiYXNlNjR1cmw6IFwi2KjbjNizIDY0INuM2Ygg2KLYsSDYp9uM2YQg2KfZhiDaqdmI2ojaiCDYs9m52LHZhtqvXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcItis25Ig2KfbjNizINin2Ygg2KfbjNmGINiz2bnYsdmG2q9cIixcbiAgICAgICAgZTE2NDogXCLYp9uMIDE2NCDZhtmF2KjYsVwiLFxuICAgICAgICBqd3Q6IFwi2KzbkiDaiNio2YTbjNmIINm524xcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCLYp9mGINm+2blcIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCLZhtmF2KjYsVwiLFxuICAgICAgICBhcnJheTogXCLYotix25JcIixcbiAgICAgICAgbnVsbDogXCLZhtmEXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNi62YTYtyDYp9mGINm+2bk6IGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH0g2YXYqtmI2YLYuSDYqtq+2KfYjCAke3JlY2VpdmVkfSDZhdmI2LXZiNmEINuB2YjYp2A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg2LrZhNi3INin2YYg2b7ZuTogJHtleHBlY3RlZH0g2YXYqtmI2YLYuSDYqtq+2KfYjCAke3JlY2VpdmVkfSDZhdmI2LXZiNmEINuB2YjYp2A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNi62YTYtyDYp9mGINm+2bk6ICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX0g2YXYqtmI2YLYuSDYqtq+2KdgO1xuICAgICAgICAgICAgICAgIHJldHVybiBg2LrZhNi3INii2b7YtNmGOiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX0g2YXbjNq6INiz25Ig2KfbjNqpINmF2KrZiNmC2Lkg2KravtinYDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNio24HYqiDYqNqR2Kc6ICR7aXNzdWUub3JpZ2luID8/IFwi2YjbjNmE24zZiFwifSDaqduSICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0ID8/IFwi2LnZhtin2LXYsVwifSDbgdmI2YbbkiDZhdiq2YjZgti5INiq2r7bkmA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDYqNuB2Kog2KjakdinOiAke2lzc3VlLm9yaWdpbiA/PyBcItmI24zZhNuM2YhcIn0g2qnYpyAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0g24HZiNmG2Kcg2YXYqtmI2YLYuSDYqtq+2KdgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNio24HYqiDahtq+2YjZudinOiAke2lzc3VlLm9yaWdpbn0g2qnbkiAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH0g24HZiNmG25Ig2YXYqtmI2YLYuSDYqtq+25JgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYNio24HYqiDahtq+2YjZudinOiAke2lzc3VlLm9yaWdpbn0g2qnYpyAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0g24HZiNmG2Kcg2YXYqtmI2YLYuSDYqtq+2KdgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg2LrZhNi3INiz2bnYsdmG2q86IFwiJHtfaXNzdWUucHJlZml4fVwiINiz25Ig2LTYsdmI2Lkg24HZiNmG2Kcg2obYp9uB24zbkmA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNi62YTYtyDYs9m52LHZhtqvOiBcIiR7X2lzc3VlLnN1ZmZpeH1cIiDZvtixINiu2KrZhSDbgdmI2YbYpyDahtin24HbjNuSYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYNi62YTYtyDYs9m52LHZhtqvOiBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiINi02KfZhdmEINuB2YjZhtinINqG2KfbgduM25JgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg2LrZhNi3INiz2bnYsdmG2q86INm+24zZudix2YYgJHtfaXNzdWUucGF0dGVybn0g2LPbkiDZhduM2oYg24HZiNmG2Kcg2obYp9uB24zbkmA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDYutmE2LcgJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg2LrZhNi3INmG2YXYqNixOiAke2lzc3VlLmRpdmlzb3J9INqp2Kcg2YXYttin2LnZgSDbgdmI2YbYpyDahtin24HbjNuSYDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBg2LrbjNixINiq2LPZhNuM2YUg2LTYr9uBINqp24wke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwi2LJcIiA6IFwiXCJ9OiAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS5rZXlzLCBcItiMIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2lzc3VlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDaqduMYDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi2LrZhNi3INin2YYg2b7ZuVwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtpc3N1ZS5vcmlnaW59INmF24zauiDYutmE2Lcg2YjbjNmE24zZiGA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBg2LrZhNi3INin2YYg2b7ZuWA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/ur.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/uz.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/uz.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo‘lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo‘lishi kerak\" },\n array: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n set: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto‘g‘ri kirish: kutilgan ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto‘g‘ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto‘g‘ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto‘g‘ri satr: \"${_issue.includes}\" ni o‘z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma’lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto‘g‘ri`;\n case \"invalid_union\":\n return \"Noto‘g‘ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto‘g‘ri qiymat`;\n default:\n return `Noto‘g‘ri kirish`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy91ei5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHVDQUF1QztBQUN6RCxnQkFBZ0Isc0NBQXNDO0FBQ3RELGlCQUFpQix5Q0FBeUM7QUFDMUQsZUFBZSx5Q0FBeUM7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0Esb0VBQW9FLGVBQWUsbUJBQW1CLFNBQVM7QUFDL0c7QUFDQSxxREFBcUQsU0FBUyxtQkFBbUIsU0FBUztBQUMxRjtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsNkRBQXVCLGtCQUFrQjtBQUNsRywwRUFBMEUscURBQWUsb0JBQW9CO0FBQzdHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELDBCQUEwQixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxhQUFhLEVBQUUsWUFBWTtBQUM1SSwrQ0FBK0MsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLHlCQUF5QjtBQUMxRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGNBQWMsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsYUFBYSxFQUFFLFlBQVk7QUFDakk7QUFDQSxnREFBZ0QsY0FBYyxFQUFFLElBQUksRUFBRSx5QkFBeUI7QUFDL0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsY0FBYztBQUM3RDtBQUNBLCtDQUErQyxjQUFjO0FBQzdEO0FBQ0EsK0NBQStDLGdCQUFnQjtBQUMvRDtBQUNBLDhDQUE4QyxnQkFBZ0I7QUFDOUQsb0NBQW9DLGdEQUFnRDtBQUNwRjtBQUNBO0FBQ0EsMkNBQTJDLGVBQWU7QUFDMUQ7QUFDQSx3Q0FBd0MsbUNBQW1DLElBQUkscURBQWUsbUJBQW1CO0FBQ2pIO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFx1ei5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcImJlbGdpXCIsIHZlcmI6IFwiYm/igJhsaXNoaSBrZXJha1wiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCJiYXl0XCIsIHZlcmI6IFwiYm/igJhsaXNoaSBrZXJha1wiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwiZWxlbWVudFwiLCB2ZXJiOiBcImJv4oCYbGlzaGkga2VyYWtcIiB9LFxuICAgICAgICBzZXQ6IHsgdW5pdDogXCJlbGVtZW50XCIsIHZlcmI6IFwiYm/igJhsaXNoaSBrZXJha1wiIH0sXG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRTaXppbmcob3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBTaXphYmxlW29yaWdpbl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgRm9ybWF0RGljdGlvbmFyeSA9IHtcbiAgICAgICAgcmVnZXg6IFwia2lyaXNoXCIsXG4gICAgICAgIGVtYWlsOiBcImVsZWt0cm9uIHBvY2h0YSBtYW56aWxpXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiSVNPIHNhbmEgdmEgdmFxdGlcIixcbiAgICAgICAgZGF0ZTogXCJJU08gc2FuYVwiLFxuICAgICAgICB0aW1lOiBcIklTTyB2YXF0XCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIklTTyBkYXZvbWl5bGlrXCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NCBtYW56aWxcIixcbiAgICAgICAgaXB2NjogXCJJUHY2IG1hbnppbFwiLFxuICAgICAgICBtYWM6IFwiTUFDIG1hbnppbFwiLFxuICAgICAgICBjaWRydjQ6IFwiSVB2NCBkaWFwYXpvblwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2NiBkaWFwYXpvblwiLFxuICAgICAgICBiYXNlNjQ6IFwiYmFzZTY0IGtvZGxhbmdhbiBzYXRyXCIsXG4gICAgICAgIGJhc2U2NHVybDogXCJiYXNlNjR1cmwga29kbGFuZ2FuIHNhdHJcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTiBzYXRyXCIsXG4gICAgICAgIGUxNjQ6IFwiRS4xNjQgcmFxYW1cIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcImtpcmlzaFwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICAgICAgbnVtYmVyOiBcInJhcWFtXCIsXG4gICAgICAgIGFycmF5OiBcIm1hc3NpdlwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwgcWFidWwgcWlsaW5nYW4gJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiAke2V4cGVjdGVkfSwgcWFidWwgcWlsaW5nYW4gJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdmFsdWVcIjpcbiAgICAgICAgICAgICAgICBpZiAoaXNzdWUudmFsdWVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gJHt1dGlsLnN0cmluZ2lmeVByaW1pdGl2ZShpc3N1ZS52YWx1ZXNbMF0pfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOb3Rv4oCYZ+KAmHJpIHZhcmlhbnQ6IHF1eWlkYWdpbGFyZGFuIGJpcmkga3V0aWxnYW4gJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEp1ZGEga2F0dGE6IGt1dGlsZ2FuICR7aXNzdWUub3JpZ2luID8/IFwicWl5bWF0XCJ9ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfSAke3NpemluZy51bml0fSAke3NpemluZy52ZXJifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBKdWRhIGthdHRhOiBrdXRpbGdhbiAke2lzc3VlLm9yaWdpbiA/PyBcInFpeW1hdFwifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYEp1ZGEga2ljaGlrOiBrdXRpbGdhbiAke2lzc3VlLm9yaWdpbn0gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9ICR7c2l6aW5nLnZlcmJ9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBKdWRhIGtpY2hpazoga3V0aWxnYW4gJHtpc3N1ZS5vcmlnaW59ICR7YWRqfSR7aXNzdWUubWluaW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTm90b+KAmGfigJhyaSBzYXRyOiBcIiR7X2lzc3VlLnByZWZpeH1cIiBiaWxhbiBib3NobGFuaXNoaSBrZXJha2A7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiZW5kc193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgTm90b+KAmGfigJhyaSBzYXRyOiBcIiR7X2lzc3VlLnN1ZmZpeH1cIiBiaWxhbiB0dWdhc2hpIGtlcmFrYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5vdG/igJhn4oCYcmkgc2F0cjogXCIke19pc3N1ZS5pbmNsdWRlc31cIiBuaSBv4oCYeiBpY2hpZ2Egb2xpc2hpIGtlcmFrYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE5vdG/igJhn4oCYcmkgc2F0cjogJHtfaXNzdWUucGF0dGVybn0gc2hhYmxvbmlnYSBtb3Mga2VsaXNoaSBrZXJha2A7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBOb3Rv4oCYZ+KAmHJpICR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5vdG/igJhn4oCYcmkgcmFxYW06ICR7aXNzdWUuZGl2aXNvcn0gbmluZyBrYXJyYWxpc2kgYm/igJhsaXNoaSBrZXJha2A7XG4gICAgICAgICAgICBjYXNlIFwidW5yZWNvZ25pemVkX2tleXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5vbWHigJlsdW0ga2FsaXQke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwibGFyXCIgOiBcIlwifTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2lzc3VlLm9yaWdpbn0gZGFnaSBrYWxpdCBub3Rv4oCYZ+KAmHJpYDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiTm90b+KAmGfigJhyaSBraXJpc2hcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2lufSBkYSBub3Rv4oCYZ+KAmHJpIHFpeW1hdGA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgTm90b+KAmGfigJhyaSBraXJpc2hgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/uz.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/vi.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/vi.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"ký tự\", verb: \"có\" },\n file: { unit: \"byte\", verb: \"có\" },\n array: { unit: \"phần tử\", verb: \"có\" },\n set: { unit: \"phần tử\", verb: \"có\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"đầu vào\",\n email: \"địa chỉ email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ngày giờ ISO\",\n date: \"ngày ISO\",\n time: \"giờ ISO\",\n duration: \"khoảng thời gian ISO\",\n ipv4: \"địa chỉ IPv4\",\n ipv6: \"địa chỉ IPv6\",\n cidrv4: \"dải IPv4\",\n cidrv6: \"dải IPv6\",\n base64: \"chuỗi mã hóa base64\",\n base64url: \"chuỗi mã hóa base64url\",\n json_string: \"chuỗi JSON\",\n e164: \"số E.164\",\n jwt: \"JWT\",\n template_literal: \"đầu vào\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"số\",\n array: \"mảng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;\n }\n return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Đầu vào không hợp lệ: mong đợi ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;\n }\n case \"not_multiple_of\":\n return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Khóa không được nhận dạng: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Khóa không hợp lệ trong ${issue.origin}`;\n case \"invalid_union\":\n return \"Đầu vào không hợp lệ\";\n case \"invalid_element\":\n return `Giá trị không hợp lệ trong ${issue.origin}`;\n default:\n return `Đầu vào không hợp lệ`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy92aS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLDJCQUEyQjtBQUM3QyxnQkFBZ0IsMEJBQTBCO0FBQzFDLGlCQUFpQiw2QkFBNkI7QUFDOUMsZUFBZSw2QkFBNkI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLHdFQUF3RSxlQUFlLGNBQWMsU0FBUztBQUM5RztBQUNBLHlEQUF5RCxTQUFTLGNBQWMsU0FBUztBQUN6RjtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsNkRBQXVCLGtCQUFrQjtBQUN0RyxnRkFBZ0YscURBQWUsb0JBQW9CO0FBQ25IO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELDJCQUEyQixFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCO0FBQ3ZKLDRDQUE0QywyQkFBMkIsRUFBRSxJQUFJLEVBQUUseUJBQXlCO0FBQ3hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsY0FBYyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUM3SDtBQUNBLDRDQUE0QyxjQUFjLEVBQUUsSUFBSSxFQUFFLHlCQUF5QjtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRSxjQUFjO0FBQ25GO0FBQ0Esc0VBQXNFLGNBQWM7QUFDcEY7QUFDQSxnRUFBZ0UsZ0JBQWdCO0FBQ2hGO0FBQ0Esb0VBQW9FLGVBQWU7QUFDbkYsMEJBQTBCLGlEQUFpRDtBQUMzRTtBQUNBO0FBQ0EsOERBQThELGNBQWM7QUFDNUU7QUFDQSxxREFBcUQscURBQWUsbUJBQW1CO0FBQ3ZGO0FBQ0Esa0RBQWtELGFBQWE7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EscURBQXFELGFBQWE7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFx2aS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcImvDvSB04buxXCIsIHZlcmI6IFwiY8OzXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcImJ5dGVcIiwgdmVyYjogXCJjw7NcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcInBo4bqnbiB04butXCIsIHZlcmI6IFwiY8OzXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwicGjhuqduIHThu61cIiwgdmVyYjogXCJjw7NcIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcIsSR4bqndSB2w6BvXCIsXG4gICAgICAgIGVtYWlsOiBcIsSR4buLYSBjaOG7iSBlbWFpbFwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcImVtb2ppXCIsXG4gICAgICAgIHV1aWQ6IFwiVVVJRFwiLFxuICAgICAgICB1dWlkdjQ6IFwiVVVJRHY0XCIsXG4gICAgICAgIHV1aWR2NjogXCJVVUlEdjZcIixcbiAgICAgICAgbmFub2lkOiBcIm5hbm9pZFwiLFxuICAgICAgICBndWlkOiBcIkdVSURcIixcbiAgICAgICAgY3VpZDogXCJjdWlkXCIsXG4gICAgICAgIGN1aWQyOiBcImN1aWQyXCIsXG4gICAgICAgIHVsaWQ6IFwiVUxJRFwiLFxuICAgICAgICB4aWQ6IFwiWElEXCIsXG4gICAgICAgIGtzdWlkOiBcIktTVUlEXCIsXG4gICAgICAgIGRhdGV0aW1lOiBcIm5nw6B5IGdp4budIElTT1wiLFxuICAgICAgICBkYXRlOiBcIm5nw6B5IElTT1wiLFxuICAgICAgICB0aW1lOiBcImdp4budIElTT1wiLFxuICAgICAgICBkdXJhdGlvbjogXCJraG/huqNuZyB0aOG7nWkgZ2lhbiBJU09cIixcbiAgICAgICAgaXB2NDogXCLEkeG7i2EgY2jhu4kgSVB2NFwiLFxuICAgICAgICBpcHY2OiBcIsSR4buLYSBjaOG7iSBJUHY2XCIsXG4gICAgICAgIGNpZHJ2NDogXCJk4bqjaSBJUHY0XCIsXG4gICAgICAgIGNpZHJ2NjogXCJk4bqjaSBJUHY2XCIsXG4gICAgICAgIGJhc2U2NDogXCJjaHXhu5dpIG3DoyBow7NhIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiY2h14buXaSBtw6MgaMOzYSBiYXNlNjR1cmxcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiY2h14buXaSBKU09OXCIsXG4gICAgICAgIGUxNjQ6IFwic+G7kSBFLjE2NFwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwixJHhuqd1IHbDoG9cIixcbiAgICB9O1xuICAgIGNvbnN0IFR5cGVEaWN0aW9uYXJ5ID0ge1xuICAgICAgICBuYW46IFwiTmFOXCIsXG4gICAgICAgIG51bWJlcjogXCJz4buRXCIsXG4gICAgICAgIGFycmF5OiBcIm3huqNuZ1wiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfSwgbmjhuq1uIMSRxrDhu6NjICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgJHtleHBlY3RlZH0sIG5o4bqtbiDEkcaw4bujYyAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFTDuXkgY2jhu41uIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSBt4buZdCB0cm9uZyBjw6FjIGdpw6EgdHLhu4sgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUudmFsdWVzLCBcInxcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ0b29fYmlnXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIjw9XCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFF1w6EgbOG7m246IG1vbmcgxJHhu6NpICR7aXNzdWUub3JpZ2luID8/IFwiZ2nDoSB0cuG7i1wifSAke3NpemluZy52ZXJifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcInBo4bqnbiB04butXCJ9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFF1w6EgbOG7m246IG1vbmcgxJHhu6NpICR7aXNzdWUub3JpZ2luID8/IFwiZ2nDoSB0cuG7i1wifSAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFF1w6Egbmjhu486IG1vbmcgxJHhu6NpICR7aXNzdWUub3JpZ2lufSAke3NpemluZy52ZXJifSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYFF1w6Egbmjhu486IG1vbmcgxJHhu6NpICR7aXNzdWUub3JpZ2lufSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBi4bqvdCDEkeG6p3UgYuG6sW5nIFwiJHtfaXNzdWUucHJlZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kga+G6v3QgdGjDumMgYuG6sW5nIFwiJHtfaXNzdWUuc3VmZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBiYW8gZ+G7k20gXCIke19pc3N1ZS5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwicmVnZXhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kga2jhu5twIHbhu5tpIG3huqt1ICR7X2lzc3VlLnBhdHRlcm59YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Rm9ybWF0RGljdGlvbmFyeVtfaXNzdWUuZm9ybWF0XSA/PyBpc3N1ZS5mb3JtYXR9IGtow7RuZyBo4bujcCBs4buHYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJub3RfbXVsdGlwbGVfb2ZcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFPhu5Ega2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBsw6AgYuG7mWkgc+G7kSBj4bunYSAke2lzc3VlLmRpdmlzb3J9YDtcbiAgICAgICAgICAgIGNhc2UgXCJ1bnJlY29nbml6ZWRfa2V5c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgS2jDs2Ega2jDtG5nIMSRxrDhu6NjIG5o4bqtbiBk4bqhbmc6ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgS2jDs2Ega2jDtG5nIGjhu6NwIGzhu4cgdHJvbmcgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3VuaW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwixJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4dcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYEdpw6EgdHLhu4sga2jDtG5nIGjhu6NwIGzhu4cgdHJvbmcgJHtpc3N1ZS5vcmlnaW59YDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7h2A7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/vi.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/yo.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/yo.js ***!
|
||
\*******************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"àmi\", verb: \"ní\" },\n file: { unit: \"bytes\", verb: \"ní\" },\n array: { unit: \"nkan\", verb: \"ní\" },\n set: { unit: \"nkan\", verb: \"ní\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"ẹ̀rọ ìbáwọlé\",\n email: \"àdírẹ́sì ìmẹ́lì\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"àkókò ISO\",\n date: \"ọjọ́ ISO\",\n time: \"àkókò ISO\",\n duration: \"àkókò tó pé ISO\",\n ipv4: \"àdírẹ́sì IPv4\",\n ipv6: \"àdírẹ́sì IPv6\",\n cidrv4: \"àgbègbè IPv4\",\n cidrv6: \"àgbègbè IPv6\",\n base64: \"ọ̀rọ̀ tí a kọ́ ní base64\",\n base64url: \"ọ̀rọ̀ base64url\",\n json_string: \"ọ̀rọ̀ JSON\",\n e164: \"nọ́mbà E.164\",\n jwt: \"JWT\",\n template_literal: \"ẹ̀rọ ìbáwọlé\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nọ́mbà\",\n array: \"akopọ\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;\n }\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ìbáwọlé aṣìṣe: a ní láti fi ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;\n return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Bọtìnì àìmọ̀: ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Bọtìnì aṣìṣe nínú ${issue.origin}`;\n case \"invalid_union\":\n return \"Ìbáwọlé aṣìṣe\";\n case \"invalid_element\":\n return `Iye aṣìṣe nínú ${issue.origin}`;\n default:\n return \"Ìbáwọlé aṣìṣe\";\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy95by5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHlCQUF5QjtBQUMzQyxnQkFBZ0IsMkJBQTJCO0FBQzNDLGlCQUFpQiwwQkFBMEI7QUFDM0MsZUFBZSwwQkFBMEI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQWU7QUFDcEQ7QUFDQTtBQUNBLHFFQUFxRSxlQUFlLGNBQWMsU0FBUztBQUMzRztBQUNBLHNEQUFzRCxTQUFTLGNBQWMsU0FBUztBQUN0RjtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsNkRBQXVCLGtCQUFrQjtBQUNuRyx1REFBdUQscURBQWUsb0JBQW9CO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELHVCQUF1QixFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFlBQVk7QUFDckksbURBQW1ELElBQUksRUFBRSxjQUFjO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsY0FBYyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFlBQVk7QUFDMUgsaURBQWlELElBQUksRUFBRSxjQUFjO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFLGNBQWM7QUFDL0U7QUFDQSwrREFBK0QsY0FBYztBQUM3RTtBQUNBLHVEQUF1RCxnQkFBZ0I7QUFDdkU7QUFDQSxnRUFBZ0UsZUFBZTtBQUMvRSxpQ0FBaUMsZ0RBQWdEO0FBQ2pGO0FBQ0E7QUFDQSxpRUFBaUUsY0FBYztBQUMvRTtBQUNBLHdDQUF3QyxxREFBZSxtQkFBbUI7QUFDMUU7QUFDQSw0Q0FBNEMsYUFBYTtBQUN6RDtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsYUFBYTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXHlvLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwiw6BtaVwiLCB2ZXJiOiBcIm7DrVwiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCJieXRlc1wiLCB2ZXJiOiBcIm7DrVwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwibmthblwiLCB2ZXJiOiBcIm7DrVwiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcIm5rYW5cIiwgdmVyYjogXCJuw61cIiB9LFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0U2l6aW5nKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gU2l6YWJsZVtvcmlnaW5dID8/IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IEZvcm1hdERpY3Rpb25hcnkgPSB7XG4gICAgICAgIHJlZ2V4OiBcIuG6ucyAcuG7jSDDrGLDoXfhu41sw6lcIixcbiAgICAgICAgZW1haWw6IFwiw6Bkw61y4bq5zIFzw6wgw6xt4bq5zIFsw6xcIixcbiAgICAgICAgdXJsOiBcIlVSTFwiLFxuICAgICAgICBlbW9qaTogXCJlbW9qaVwiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCLDoGvDs2vDsiBJU09cIixcbiAgICAgICAgZGF0ZTogXCLhu41q4buNzIEgSVNPXCIsXG4gICAgICAgIHRpbWU6IFwiw6Brw7Nrw7IgSVNPXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIsOga8Oza8OyIHTDsyBww6kgSVNPXCIsXG4gICAgICAgIGlwdjQ6IFwiw6Bkw61y4bq5zIFzw6wgSVB2NFwiLFxuICAgICAgICBpcHY2OiBcIsOgZMOtcuG6ucyBc8OsIElQdjZcIixcbiAgICAgICAgY2lkcnY0OiBcIsOgZ2LDqGdiw6ggSVB2NFwiLFxuICAgICAgICBjaWRydjY6IFwiw6BnYsOoZ2LDqCBJUHY2XCIsXG4gICAgICAgIGJhc2U2NDogXCLhu43MgHLhu43MgCB0w60gYSBr4buNzIEgbsOtIGJhc2U2NFwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwi4buNzIBy4buNzIAgYmFzZTY0dXJsXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIuG7jcyAcuG7jcyAIEpTT05cIixcbiAgICAgICAgZTE2NDogXCJu4buNzIFtYsOgIEUuMTY0XCIsXG4gICAgICAgIGp3dDogXCJKV1RcIixcbiAgICAgICAgdGVtcGxhdGVfbGl0ZXJhbDogXCLhurnMgHLhu40gw6xiw6F34buNbMOpXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwibuG7jcyBbWLDoFwiLFxuICAgICAgICBhcnJheTogXCJha29w4buNXCIsXG4gICAgfTtcbiAgICByZXR1cm4gKGlzc3VlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXNzdWUuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdHlwZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBUeXBlRGljdGlvbmFyeVtpc3N1ZS5leHBlY3RlZF0gPz8gaXNzdWUuZXhwZWN0ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUeXBlID0gdXRpbC5wYXJzZWRUeXBlKGlzc3VlLmlucHV0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IFR5cGVEaWN0aW9uYXJ5W3JlY2VpdmVkVHlwZV0gPz8gcmVjZWl2ZWRUeXBlO1xuICAgICAgICAgICAgICAgIGlmICgvXltBLVpdLy50ZXN0KGlzc3VlLmV4cGVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSBpbnN0YW5jZW9mICR7aXNzdWUuZXhwZWN0ZWR9LCDDoG3hu43MgCBhIHLDrSAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpICR7ZXhwZWN0ZWR9LCDDoG3hu43MgCBhIHLDrSAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYMOA4bmjw6B5w6BuIGHhuaPDrOG5o2U6IHlhbiDhu43MgGthbiBsw6FyYSAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgVMOzIHDhu43MgCBqw7k6IGEgbsOtIGzDoXRpIGrhurnMgSBww6kgJHtpc3N1ZS5vcmlnaW4gPz8gXCJpeWVcIn0gJHtzaXppbmcudmVyYn0gJHthZGp9JHtpc3N1ZS5tYXhpbXVtfSAke3NpemluZy51bml0fWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUw7MgcOG7jcyAIGrDuTogYSBuw60gbMOhdGkgauG6ucyBICR7YWRqfSR7aXNzdWUubWF4aW11bX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInRvb19zbWFsbFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI+PVwiIDogXCI+XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBLw6lyw6kganU6IGEgbsOtIGzDoXRpIGrhurnMgSBww6kgJHtpc3N1ZS5vcmlnaW59ICR7c2l6aW5nLnZlcmJ9ICR7YWRqfSR7aXNzdWUubWluaW11bX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgS8OpcsOpIGp1OiBhIG7DrSBsw6F0aSBq4bq5zIEgJHthZGp9JHtpc3N1ZS5taW5pbXVtfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9mb3JtYXRcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pc3N1ZSA9IGlzc3VlO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInN0YXJ0c193aXRoXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBi4bq5zIBy4bq5zIAgcOG6ucyAbMO6IFwiJHtfaXNzdWUucHJlZml4fVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIHBhcsOtIHDhurnMgGzDuiBcIiR7X2lzc3VlLnN1ZmZpeH1cImA7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwiaW5jbHVkZXNcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIG7DrSBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgYsOhIMOgcOG6ueG6uXLhurkgbXUgJHtfaXNzdWUucGF0dGVybn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBgQeG5o8Os4bmjZTogJHtGb3JtYXREaWN0aW9uYXJ5W19pc3N1ZS5mb3JtYXRdID8/IGlzc3VlLmZvcm1hdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIm5vdF9tdWx0aXBsZV9vZlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgTuG7jcyBbWLDoCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIGrhurnMgSDDqHnDoCBww61ww61uIHRpICR7aXNzdWUuZGl2aXNvcn1gO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBC4buNdMOsbsOsIMOgw6xt4buNzIA6ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2tleVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgQuG7jXTDrG7DrCBh4bmjw6zhuaNlIG7DrW7DuiAke2lzc3VlLm9yaWdpbn1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLDjGLDoXfhu41sw6kgYeG5o8Os4bmjZVwiO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZWxlbWVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgSXllIGHhuaPDrOG5o2UgbsOtbsO6ICR7aXNzdWUub3JpZ2lufWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBcIsOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlXCI7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/yo.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/zh-CN.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/zh-CN.js ***!
|
||
\**********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"字符\", verb: \"包含\" },\n file: { unit: \"字节\", verb: \"包含\" },\n array: { unit: \"项\", verb: \"包含\" },\n set: { unit: \"项\", verb: \"包含\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"输入\",\n email: \"电子邮件\",\n url: \"URL\",\n emoji: \"表情符号\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日期时间\",\n date: \"ISO日期\",\n time: \"ISO时间\",\n duration: \"ISO时长\",\n ipv4: \"IPv4地址\",\n ipv6: \"IPv6地址\",\n cidrv4: \"IPv4网段\",\n cidrv6: \"IPv6网段\",\n base64: \"base64编码字符串\",\n base64url: \"base64url编码字符串\",\n json_string: \"JSON字符串\",\n e164: \"E.164号码\",\n jwt: \"JWT\",\n template_literal: \"输入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"数字\",\n array: \"数组\",\n null: \"空值(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `无效输入:期望 instanceof ${issue.expected},实际接收 ${received}`;\n }\n return `无效输入:期望 ${expected},实际接收 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `无效输入:期望 ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `无效选项:期望以下之一 ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `无效字符串:必须以 \"${_issue.prefix}\" 开头`;\n if (_issue.format === \"ends_with\")\n return `无效字符串:必须以 \"${_issue.suffix}\" 结尾`;\n if (_issue.format === \"includes\")\n return `无效字符串:必须包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;\n return `无效${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `无效数字:必须是 ${issue.divisor} 的倍数`;\n case \"unrecognized_keys\":\n return `出现未知的键(key): ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} 中的键(key)无效`;\n case \"invalid_union\":\n return \"无效输入\";\n case \"invalid_element\":\n return `${issue.origin} 中包含无效值(value)`;\n default:\n return `无效输入`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy96aC1DTi5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHdCQUF3QjtBQUMxQyxnQkFBZ0Isd0JBQXdCO0FBQ3hDLGlCQUFpQix1QkFBdUI7QUFDeEMsZUFBZSx1QkFBdUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0EsaURBQWlELGVBQWUsUUFBUSxTQUFTO0FBQ2pGO0FBQ0Esa0NBQWtDLFNBQVMsUUFBUSxTQUFTO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyw2REFBdUIsa0JBQWtCO0FBQy9FLHNDQUFzQyxxREFBZSxvQkFBb0I7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MscUJBQXFCLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQjtBQUNwSCxrQ0FBa0MscUJBQXFCLEVBQUUsSUFBSSxFQUFFLHlCQUF5QjtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLGNBQWMsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUNwRztBQUNBLGtDQUFrQyxjQUFjLEVBQUUsSUFBSSxFQUFFLHlCQUF5QjtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxjQUFjO0FBQ3ZEO0FBQ0EseUNBQXlDLGNBQWM7QUFDdkQ7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFEO0FBQ0EsOENBQThDLGVBQWU7QUFDN0QsNEJBQTRCLGdEQUFnRDtBQUM1RTtBQUNBO0FBQ0EsbUNBQW1DLGVBQWU7QUFDbEQ7QUFDQSx1Q0FBdUMscURBQWUsbUJBQW1CO0FBQ3pFO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLHNDQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJFOlxcR0lUXFxtdnBcXG5hc2hlbC1mcm9udGVuZFxcbm9kZV9tb2R1bGVzXFx6b2RcXHY0XFxsb2NhbGVzXFx6aC1DTi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuLi9jb3JlL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IFNpemFibGUgPSB7XG4gICAgICAgIHN0cmluZzogeyB1bml0OiBcIuWtl+esplwiLCB2ZXJiOiBcIuWMheWQq1wiIH0sXG4gICAgICAgIGZpbGU6IHsgdW5pdDogXCLlrZfoioJcIiwgdmVyYjogXCLljIXlkKtcIiB9LFxuICAgICAgICBhcnJheTogeyB1bml0OiBcIumhuVwiLCB2ZXJiOiBcIuWMheWQq1wiIH0sXG4gICAgICAgIHNldDogeyB1bml0OiBcIumhuVwiLCB2ZXJiOiBcIuWMheWQq1wiIH0sXG4gICAgfTtcbiAgICBmdW5jdGlvbiBnZXRTaXppbmcob3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBTaXphYmxlW29yaWdpbl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgRm9ybWF0RGljdGlvbmFyeSA9IHtcbiAgICAgICAgcmVnZXg6IFwi6L6T5YWlXCIsXG4gICAgICAgIGVtYWlsOiBcIueUteWtkOmCruS7tlwiLFxuICAgICAgICB1cmw6IFwiVVJMXCIsXG4gICAgICAgIGVtb2ppOiBcIuihqOaDheespuWPt1wiLFxuICAgICAgICB1dWlkOiBcIlVVSURcIixcbiAgICAgICAgdXVpZHY0OiBcIlVVSUR2NFwiLFxuICAgICAgICB1dWlkdjY6IFwiVVVJRHY2XCIsXG4gICAgICAgIG5hbm9pZDogXCJuYW5vaWRcIixcbiAgICAgICAgZ3VpZDogXCJHVUlEXCIsXG4gICAgICAgIGN1aWQ6IFwiY3VpZFwiLFxuICAgICAgICBjdWlkMjogXCJjdWlkMlwiLFxuICAgICAgICB1bGlkOiBcIlVMSURcIixcbiAgICAgICAgeGlkOiBcIlhJRFwiLFxuICAgICAgICBrc3VpZDogXCJLU1VJRFwiLFxuICAgICAgICBkYXRldGltZTogXCJJU0/ml6XmnJ/ml7bpl7RcIixcbiAgICAgICAgZGF0ZTogXCJJU0/ml6XmnJ9cIixcbiAgICAgICAgdGltZTogXCJJU0/ml7bpl7RcIixcbiAgICAgICAgZHVyYXRpb246IFwiSVNP5pe26ZW/XCIsXG4gICAgICAgIGlwdjQ6IFwiSVB2NOWcsOWdgFwiLFxuICAgICAgICBpcHY2OiBcIklQdjblnLDlnYBcIixcbiAgICAgICAgY2lkcnY0OiBcIklQdjTnvZHmrrVcIixcbiAgICAgICAgY2lkcnY2OiBcIklQdjbnvZHmrrVcIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NOe8lueggeWtl+espuS4slwiLFxuICAgICAgICBiYXNlNjR1cmw6IFwiYmFzZTY0dXJs57yW56CB5a2X56ym5LiyXCIsXG4gICAgICAgIGpzb25fc3RyaW5nOiBcIkpTT07lrZfnrKbkuLJcIixcbiAgICAgICAgZTE2NDogXCJFLjE2NOWPt+eggVwiLFxuICAgICAgICBqd3Q6IFwiSldUXCIsXG4gICAgICAgIHRlbXBsYXRlX2xpdGVyYWw6IFwi6L6T5YWlXCIsXG4gICAgfTtcbiAgICBjb25zdCBUeXBlRGljdGlvbmFyeSA9IHtcbiAgICAgICAgbmFuOiBcIk5hTlwiLFxuICAgICAgICBudW1iZXI6IFwi5pWw5a2XXCIsXG4gICAgICAgIGFycmF5OiBcIuaVsOe7hFwiLFxuICAgICAgICBudWxsOiBcIuepuuWAvChudWxsKVwiLFxuICAgIH07XG4gICAgcmV0dXJuIChpc3N1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3R5cGVcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gVHlwZURpY3Rpb25hcnlbaXNzdWUuZXhwZWN0ZWRdID8/IGlzc3VlLmV4cGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHV0aWwucGFyc2VkVHlwZShpc3N1ZS5pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBUeXBlRGljdGlvbmFyeVtyZWNlaXZlZFR5cGVdID8/IHJlY2VpdmVkVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoL15bQS1aXS8udGVzdChpc3N1ZS5leHBlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDml6DmlYjovpPlhaXvvJrmnJ/mnJsgaW5zdGFuY2VvZiAke2lzc3VlLmV4cGVjdGVkfe+8jOWunumZheaOpeaUtiAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBg5peg5pWI6L6T5YWl77ya5pyf5pybICR7ZXhwZWN0ZWR977yM5a6e6ZmF5o6l5pS2ICR7cmVjZWl2ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX3ZhbHVlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLnZhbHVlcy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg5peg5pWI6L6T5YWl77ya5pyf5pybICR7dXRpbC5zdHJpbmdpZnlQcmltaXRpdmUoaXNzdWUudmFsdWVzWzBdKX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg5peg5pWI6YCJ6aG577ya5pyf5pyb5Lul5LiL5LmL5LiAICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLnZhbHVlcywgXCJ8XCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwidG9vX2JpZ1wiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqID0gaXNzdWUuaW5jbHVzaXZlID8gXCI8PVwiIDogXCI8XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6aW5nID0gZ2V0U2l6aW5nKGlzc3VlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgaWYgKHNpemluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDmlbDlgLzov4flpKfvvJrmnJ/mnJsgJHtpc3N1ZS5vcmlnaW4gPz8gXCLlgLxcIn0gJHthZGp9JHtpc3N1ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXQgPz8gXCLkuKrlhYPntKBcIn1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBg5pWw5YC86L+H5aSn77ya5pyf5pybICR7aXNzdWUub3JpZ2luID8/IFwi5YC8XCJ9ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg5pWw5YC86L+H5bCP77ya5pyf5pybICR7aXNzdWUub3JpZ2lufSAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYOaVsOWAvOi/h+Wwj++8muacn+acmyAke2lzc3VlLm9yaWdpbn0gJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2Zvcm1hdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mb3JtYXQgPT09IFwic3RhcnRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvku6UgXCIke19pc3N1ZS5wcmVmaXh9XCIg5byA5aS0YDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJlbmRzX3dpdGhcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGDml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvku6UgXCIke19pc3N1ZS5zdWZmaXh9XCIg57uT5bC+YDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJpbmNsdWRlc1wiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOaXoOaViOWtl+espuS4su+8muW/hemhu+WMheWQqyBcIiR7X2lzc3VlLmluY2x1ZGVzfVwiYDtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJyZWdleFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOaXoOaViOWtl+espuS4su+8muW/hemhu+a7oei2s+ato+WImeihqOi+vuW8jyAke19pc3N1ZS5wYXR0ZXJufWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDml6DmlYgke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDml6DmlYjmlbDlrZfvvJrlv4XpobvmmK8gJHtpc3N1ZS5kaXZpc29yfSDnmoTlgI3mlbBgO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDlh7rnjrDmnKrnn6XnmoTplK4oa2V5KTogJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUua2V5cywgXCIsIFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfa2V5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2lzc3VlLm9yaWdpbn0g5Lit55qE6ZSuKGtleSnml6DmlYhgO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLml6DmlYjovpPlhaVcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2lufSDkuK3ljIXlkKvml6DmlYjlgLwodmFsdWUpYDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDml6DmlYjovpPlhaVgO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9jYWxlRXJyb3I6IGVycm9yKCksXG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/zh-CN.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zod/v4/locales/zh-TW.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/zod/v4/locales/zh-TW.js ***!
|
||
\**********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _core_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/util.js */ \"(app-pages-browser)/./node_modules/zod/v4/core/util.js\");\n\nconst error = () => {\n const Sizable = {\n string: { unit: \"字元\", verb: \"擁有\" },\n file: { unit: \"位元組\", verb: \"擁有\" },\n array: { unit: \"項目\", verb: \"擁有\" },\n set: { unit: \"項目\", verb: \"擁有\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"輸入\",\n email: \"郵件地址\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 日期時間\",\n date: \"ISO 日期\",\n time: \"ISO 時間\",\n duration: \"ISO 期間\",\n ipv4: \"IPv4 位址\",\n ipv6: \"IPv6 位址\",\n cidrv4: \"IPv4 範圍\",\n cidrv6: \"IPv6 範圍\",\n base64: \"base64 編碼字串\",\n base64url: \"base64url 編碼字串\",\n json_string: \"JSON 字串\",\n e164: \"E.164 數值\",\n jwt: \"JWT\",\n template_literal: \"輸入\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = _core_util_js__WEBPACK_IMPORTED_MODULE_0__.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `無效的輸入值:預期為 instanceof ${issue.expected},但收到 ${received}`;\n }\n return `無效的輸入值:預期為 ${expected},但收到 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無效的輸入值:預期為 ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.stringifyPrimitive(issue.values[0])}`;\n return `無效的選項:預期為以下其中之一 ${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `無效的字串:必須以 \"${_issue.prefix}\" 開頭`;\n }\n if (_issue.format === \"ends_with\")\n return `無效的字串:必須以 \"${_issue.suffix}\" 結尾`;\n if (_issue.format === \"includes\")\n return `無效的字串:必須包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `無效的字串:必須符合格式 ${_issue.pattern}`;\n return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無效的數字:必須為 ${issue.divisor} 的倍數`;\n case \"unrecognized_keys\":\n return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}:${_core_util_js__WEBPACK_IMPORTED_MODULE_0__.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin} 中有無效的鍵值`;\n case \"invalid_union\":\n return \"無效的輸入值\";\n case \"invalid_element\":\n return `${issue.origin} 中有無效的值`;\n default:\n return `無效的輸入值`;\n }\n };\n};\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return {\n localeError: error(),\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96b2QvdjQvbG9jYWxlcy96aC1UVy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3QztBQUN4QztBQUNBO0FBQ0Esa0JBQWtCLHdCQUF3QjtBQUMxQyxnQkFBZ0IseUJBQXlCO0FBQ3pDLGlCQUFpQix3QkFBd0I7QUFDekMsZUFBZSx3QkFBd0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxREFBZTtBQUNwRDtBQUNBO0FBQ0Esb0RBQW9ELGVBQWUsT0FBTyxTQUFTO0FBQ25GO0FBQ0EscUNBQXFDLFNBQVMsT0FBTyxTQUFTO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyw2REFBdUIsa0JBQWtCO0FBQ2xGLDBDQUEwQyxxREFBZSxvQkFBb0I7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MscUJBQXFCLEtBQUssSUFBSSxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQjtBQUN2SCxrQ0FBa0MscUJBQXFCLEtBQUssSUFBSSxFQUFFLHlCQUF5QjtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLGNBQWMsS0FBSyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsWUFBWTtBQUN2RztBQUNBLGtDQUFrQyxjQUFjLEtBQUssSUFBSSxFQUFFLHlCQUF5QjtBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxjQUFjO0FBQ3ZEO0FBQ0E7QUFDQSx5Q0FBeUMsY0FBYztBQUN2RDtBQUNBLDBDQUEwQyxnQkFBZ0I7QUFDMUQ7QUFDQSwyQ0FBMkMsZUFBZTtBQUMxRCw4QkFBOEIsZ0RBQWdEO0FBQzlFO0FBQ0E7QUFDQSxvQ0FBb0MsZUFBZTtBQUNuRDtBQUNBLGlDQUFpQyxpQ0FBaUMsR0FBRyxxREFBZSxrQkFBa0I7QUFDdEc7QUFDQSwwQkFBMEIsY0FBYztBQUN4QztBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsY0FBYztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHpvZFxcdjRcXGxvY2FsZXNcXHpoLVRXLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uL2NvcmUvdXRpbC5qc1wiO1xuY29uc3QgZXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgU2l6YWJsZSA9IHtcbiAgICAgICAgc3RyaW5nOiB7IHVuaXQ6IFwi5a2X5YWDXCIsIHZlcmI6IFwi5pOB5pyJXCIgfSxcbiAgICAgICAgZmlsZTogeyB1bml0OiBcIuS9jeWFg+e1hFwiLCB2ZXJiOiBcIuaTgeaciVwiIH0sXG4gICAgICAgIGFycmF5OiB7IHVuaXQ6IFwi6aCF55uuXCIsIHZlcmI6IFwi5pOB5pyJXCIgfSxcbiAgICAgICAgc2V0OiB7IHVuaXQ6IFwi6aCF55uuXCIsIHZlcmI6IFwi5pOB5pyJXCIgfSxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldFNpemluZyhvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIFNpemFibGVbb3JpZ2luXSA/PyBudWxsO1xuICAgIH1cbiAgICBjb25zdCBGb3JtYXREaWN0aW9uYXJ5ID0ge1xuICAgICAgICByZWdleDogXCLovLjlhaVcIixcbiAgICAgICAgZW1haWw6IFwi6YO15Lu25Zyw5Z2AXCIsXG4gICAgICAgIHVybDogXCJVUkxcIixcbiAgICAgICAgZW1vamk6IFwiZW1vamlcIixcbiAgICAgICAgdXVpZDogXCJVVUlEXCIsXG4gICAgICAgIHV1aWR2NDogXCJVVUlEdjRcIixcbiAgICAgICAgdXVpZHY2OiBcIlVVSUR2NlwiLFxuICAgICAgICBuYW5vaWQ6IFwibmFub2lkXCIsXG4gICAgICAgIGd1aWQ6IFwiR1VJRFwiLFxuICAgICAgICBjdWlkOiBcImN1aWRcIixcbiAgICAgICAgY3VpZDI6IFwiY3VpZDJcIixcbiAgICAgICAgdWxpZDogXCJVTElEXCIsXG4gICAgICAgIHhpZDogXCJYSURcIixcbiAgICAgICAga3N1aWQ6IFwiS1NVSURcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiSVNPIOaXpeacn+aZgumWk1wiLFxuICAgICAgICBkYXRlOiBcIklTTyDml6XmnJ9cIixcbiAgICAgICAgdGltZTogXCJJU08g5pmC6ZaTXCIsXG4gICAgICAgIGR1cmF0aW9uOiBcIklTTyDmnJ/plpNcIixcbiAgICAgICAgaXB2NDogXCJJUHY0IOS9jeWdgFwiLFxuICAgICAgICBpcHY2OiBcIklQdjYg5L2N5Z2AXCIsXG4gICAgICAgIGNpZHJ2NDogXCJJUHY0IOevhOWcjVwiLFxuICAgICAgICBjaWRydjY6IFwiSVB2NiDnr4TlnI1cIixcbiAgICAgICAgYmFzZTY0OiBcImJhc2U2NCDnt6jnorzlrZfkuLJcIixcbiAgICAgICAgYmFzZTY0dXJsOiBcImJhc2U2NHVybCDnt6jnorzlrZfkuLJcIixcbiAgICAgICAganNvbl9zdHJpbmc6IFwiSlNPTiDlrZfkuLJcIixcbiAgICAgICAgZTE2NDogXCJFLjE2NCDmlbjlgLxcIixcbiAgICAgICAgand0OiBcIkpXVFwiLFxuICAgICAgICB0ZW1wbGF0ZV9saXRlcmFsOiBcIui8uOWFpVwiLFxuICAgIH07XG4gICAgY29uc3QgVHlwZURpY3Rpb25hcnkgPSB7XG4gICAgICAgIG5hbjogXCJOYU5cIixcbiAgICB9O1xuICAgIHJldHVybiAoaXNzdWUpID0+IHtcbiAgICAgICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF90eXBlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IFR5cGVEaWN0aW9uYXJ5W2lzc3VlLmV4cGVjdGVkXSA/PyBpc3N1ZS5leHBlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlZFR5cGUgPSB1dGlsLnBhcnNlZFR5cGUoaXNzdWUuaW5wdXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gVHlwZURpY3Rpb25hcnlbcmVjZWl2ZWRUeXBlXSA/PyByZWNlaXZlZFR5cGU7XG4gICAgICAgICAgICAgICAgaWYgKC9eW0EtWl0vLnRlc3QoaXNzdWUuZXhwZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6IGluc3RhbmNlb2YgJHtpc3N1ZS5leHBlY3RlZH3vvIzkvYbmlLbliLAgJHtyZWNlaXZlZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYOeEoeaViOeahOi8uOWFpeWAvO+8mumgkOacn+eCuiAke2V4cGVjdGVkfe+8jOS9huaUtuWIsCAke3JlY2VpdmVkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF92YWx1ZVwiOlxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS52YWx1ZXMubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOeEoeaViOeahOi8uOWFpeWAvO+8mumgkOacn+eCuiAke3V0aWwuc3RyaW5naWZ5UHJpbWl0aXZlKGlzc3VlLnZhbHVlc1swXSl9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYOeEoeaViOeahOmBuOmghe+8mumgkOacn+eCuuS7peS4i+WFtuS4reS5i+S4gCAke3V0aWwuam9pblZhbHVlcyhpc3N1ZS52YWx1ZXMsIFwifFwiKX1gO1xuICAgICAgICAgICAgY2FzZSBcInRvb19iaWdcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkaiA9IGlzc3VlLmluY2x1c2l2ZSA/IFwiPD1cIiA6IFwiPFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemluZyA9IGdldFNpemluZyhpc3N1ZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzaXppbmcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg5pW45YC86YGO5aSn77ya6aCQ5pyfICR7aXNzdWUub3JpZ2luID8/IFwi5YC8XCJ9IOaHieeCuiAke2Fkan0ke2lzc3VlLm1heGltdW0udG9TdHJpbmcoKX0gJHtzaXppbmcudW5pdCA/PyBcIuWAi+WFg+e0oFwifWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDmlbjlgLzpgY7lpKfvvJrpoJDmnJ8gJHtpc3N1ZS5vcmlnaW4gPz8gXCLlgLxcIn0g5oeJ54K6ICR7YWRqfSR7aXNzdWUubWF4aW11bS50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwidG9vX3NtYWxsXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGogPSBpc3N1ZS5pbmNsdXNpdmUgPyBcIj49XCIgOiBcIj5cIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXppbmcgPSBnZXRTaXppbmcoaXNzdWUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg5pW45YC86YGO5bCP77ya6aCQ5pyfICR7aXNzdWUub3JpZ2lufSDmh4nngrogJHthZGp9JHtpc3N1ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7c2l6aW5nLnVuaXR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDmlbjlgLzpgY7lsI/vvJrpoJDmnJ8gJHtpc3N1ZS5vcmlnaW59IOaHieeCuiAke2Fkan0ke2lzc3VlLm1pbmltdW0udG9TdHJpbmcoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfZm9ybWF0XCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfaXNzdWUgPSBpc3N1ZTtcbiAgICAgICAgICAgICAgICBpZiAoX2lzc3VlLmZvcm1hdCA9PT0gXCJzdGFydHNfd2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI5LulIFwiJHtfaXNzdWUucHJlZml4fVwiIOmWi+mgrWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImVuZHNfd2l0aFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYOeEoeaViOeahOWtl+S4su+8muW/hemgiOS7pSBcIiR7X2lzc3VlLnN1ZmZpeH1cIiDntZDlsL5gO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcImluY2x1ZGVzXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI5YyF5ZCrIFwiJHtfaXNzdWUuaW5jbHVkZXN9XCJgO1xuICAgICAgICAgICAgICAgIGlmIChfaXNzdWUuZm9ybWF0ID09PSBcInJlZ2V4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBg54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI56ym5ZCI5qC85byPICR7X2lzc3VlLnBhdHRlcm59YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYOeEoeaViOeahCAke0Zvcm1hdERpY3Rpb25hcnlbX2lzc3VlLmZvcm1hdF0gPz8gaXNzdWUuZm9ybWF0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibm90X211bHRpcGxlX29mXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDnhKHmlYjnmoTmlbjlrZfvvJrlv4XpoIjngrogJHtpc3N1ZS5kaXZpc29yfSDnmoTlgI3mlbhgO1xuICAgICAgICAgICAgY2FzZSBcInVucmVjb2duaXplZF9rZXlzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGDnhKHms5XorZjliKXnmoTpjbXlgLwke2lzc3VlLmtleXMubGVuZ3RoID4gMSA/IFwi5YCRXCIgOiBcIlwife+8miR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwi44CBXCIpfWA7XG4gICAgICAgICAgICBjYXNlIFwiaW52YWxpZF9rZXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTpjbXlgLxgO1xuICAgICAgICAgICAgY2FzZSBcImludmFsaWRfdW5pb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLnhKHmlYjnmoTovLjlhaXlgLxcIjtcbiAgICAgICAgICAgIGNhc2UgXCJpbnZhbGlkX2VsZW1lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aXNzdWUub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTlgLxgO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYOeEoeaViOeahOi8uOWFpeWAvGA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGVFcnJvcjogZXJyb3IoKSxcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zod/v4/locales/zh-TW.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zustand/esm/react.mjs":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/zustand/esm/react.mjs ***!
|
||
\********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ create: () => (/* binding */ create),\n/* harmony export */ useStore: () => (/* binding */ useStore)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var zustand_vanilla__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand/vanilla */ \"(app-pages-browser)/./node_modules/zustand/esm/vanilla.mjs\");\n\n\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = react__WEBPACK_IMPORTED_MODULE_0__.useSyncExternalStore(\n api.subscribe,\n react__WEBPACK_IMPORTED_MODULE_0__.useCallback(() => selector(api.getState()), [api, selector]),\n react__WEBPACK_IMPORTED_MODULE_0__.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = (0,zustand_vanilla__WEBPACK_IMPORTED_MODULE_1__.createStore)(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS9yZWFjdC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUEwQjtBQUNvQjs7QUFFOUM7QUFDQTtBQUNBLGdCQUFnQix1REFBMEI7QUFDMUM7QUFDQSxJQUFJLDhDQUFpQjtBQUNyQixJQUFJLDhDQUFpQjtBQUNyQjtBQUNBLEVBQUUsZ0RBQW1CO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNERBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFNEIiLCJzb3VyY2VzIjpbIkU6XFxHSVRcXG12cFxcbmFzaGVsLWZyb250ZW5kXFxub2RlX21vZHVsZXNcXHp1c3RhbmRcXGVzbVxccmVhY3QubWpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gJ3p1c3RhbmQvdmFuaWxsYSc7XG5cbmNvbnN0IGlkZW50aXR5ID0gKGFyZykgPT4gYXJnO1xuZnVuY3Rpb24gdXNlU3RvcmUoYXBpLCBzZWxlY3RvciA9IGlkZW50aXR5KSB7XG4gIGNvbnN0IHNsaWNlID0gUmVhY3QudXNlU3luY0V4dGVybmFsU3RvcmUoXG4gICAgYXBpLnN1YnNjcmliZSxcbiAgICBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiBzZWxlY3RvcihhcGkuZ2V0U3RhdGUoKSksIFthcGksIHNlbGVjdG9yXSksXG4gICAgUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gc2VsZWN0b3IoYXBpLmdldEluaXRpYWxTdGF0ZSgpKSwgW2FwaSwgc2VsZWN0b3JdKVxuICApO1xuICBSZWFjdC51c2VEZWJ1Z1ZhbHVlKHNsaWNlKTtcbiAgcmV0dXJuIHNsaWNlO1xufVxuY29uc3QgY3JlYXRlSW1wbCA9IChjcmVhdGVTdGF0ZSkgPT4ge1xuICBjb25zdCBhcGkgPSBjcmVhdGVTdG9yZShjcmVhdGVTdGF0ZSk7XG4gIGNvbnN0IHVzZUJvdW5kU3RvcmUgPSAoc2VsZWN0b3IpID0+IHVzZVN0b3JlKGFwaSwgc2VsZWN0b3IpO1xuICBPYmplY3QuYXNzaWduKHVzZUJvdW5kU3RvcmUsIGFwaSk7XG4gIHJldHVybiB1c2VCb3VuZFN0b3JlO1xufTtcbmNvbnN0IGNyZWF0ZSA9ICgoY3JlYXRlU3RhdGUpID0+IGNyZWF0ZVN0YXRlID8gY3JlYXRlSW1wbChjcmVhdGVTdGF0ZSkgOiBjcmVhdGVJbXBsKTtcblxuZXhwb3J0IHsgY3JlYXRlLCB1c2VTdG9yZSB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zustand/esm/react.mjs\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(app-pages-browser)/./node_modules/zustand/esm/vanilla.mjs":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/zustand/esm/vanilla.mjs ***!
|
||
\**********************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createStore: () => (/* binding */ createStore)\n/* harmony export */ });\nconst createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS92YW5pbGxhLm1qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4SEFBOEg7QUFDOUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUV1QiIsInNvdXJjZXMiOlsiRTpcXEdJVFxcbXZwXFxuYXNoZWwtZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcenVzdGFuZFxcZXNtXFx2YW5pbGxhLm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjcmVhdGVTdG9yZUltcGwgPSAoY3JlYXRlU3RhdGUpID0+IHtcbiAgbGV0IHN0YXRlO1xuICBjb25zdCBsaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBjb25zdCBzZXRTdGF0ZSA9IChwYXJ0aWFsLCByZXBsYWNlKSA9PiB7XG4gICAgY29uc3QgbmV4dFN0YXRlID0gdHlwZW9mIHBhcnRpYWwgPT09IFwiZnVuY3Rpb25cIiA/IHBhcnRpYWwoc3RhdGUpIDogcGFydGlhbDtcbiAgICBpZiAoIU9iamVjdC5pcyhuZXh0U3RhdGUsIHN0YXRlKSkge1xuICAgICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IHN0YXRlO1xuICAgICAgc3RhdGUgPSAocmVwbGFjZSAhPSBudWxsID8gcmVwbGFjZSA6IHR5cGVvZiBuZXh0U3RhdGUgIT09IFwib2JqZWN0XCIgfHwgbmV4dFN0YXRlID09PSBudWxsKSA/IG5leHRTdGF0ZSA6IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBuZXh0U3RhdGUpO1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcihzdGF0ZSwgcHJldmlvdXNTdGF0ZSkpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0U3RhdGUgPSAoKSA9PiBzdGF0ZTtcbiAgY29uc3QgZ2V0SW5pdGlhbFN0YXRlID0gKCkgPT4gaW5pdGlhbFN0YXRlO1xuICBjb25zdCBzdWJzY3JpYmUgPSAobGlzdGVuZXIpID0+IHtcbiAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICByZXR1cm4gKCkgPT4gbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gIH07XG4gIGNvbnN0IGFwaSA9IHsgc2V0U3RhdGUsIGdldFN0YXRlLCBnZXRJbml0aWFsU3RhdGUsIHN1YnNjcmliZSB9O1xuICBjb25zdCBpbml0aWFsU3RhdGUgPSBzdGF0ZSA9IGNyZWF0ZVN0YXRlKHNldFN0YXRlLCBnZXRTdGF0ZSwgYXBpKTtcbiAgcmV0dXJuIGFwaTtcbn07XG5jb25zdCBjcmVhdGVTdG9yZSA9ICgoY3JlYXRlU3RhdGUpID0+IGNyZWF0ZVN0YXRlID8gY3JlYXRlU3RvcmVJbXBsKGNyZWF0ZVN0YXRlKSA6IGNyZWF0ZVN0b3JlSW1wbCk7XG5cbmV4cG9ydCB7IGNyZWF0ZVN0b3JlIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/zustand/esm/vanilla.mjs\n"));
|
||
|
||
/***/ })
|
||
|
||
},
|
||
/******/ __webpack_require__ => { // webpackRuntimeModules
|
||
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
|
||
/******/ __webpack_require__.O(0, ["main-app"], () => (__webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22E%3A%5C%5CGIT%5C%5Cmvp%5C%5Cnashel-frontend%5C%5Csrc%5C%5Capp%5C%5Cdashboard%5C%5Cprofile%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!")));
|
||
/******/ var __webpack_exports__ = __webpack_require__.O();
|
||
/******/ _N_E = __webpack_exports__;
|
||
/******/ }
|
||
]); |