134 lines
90 KiB
JavaScript
134 lines
90 KiB
JavaScript
/*
|
||
* 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/).
|
||
*/
|
||
(() => {
|
||
var exports = {};
|
||
exports.id = "pages/_app";
|
||
exports.ids = ["pages/_app"];
|
||
exports.modules = {
|
||
|
||
/***/ "(pages-dir-node)/./src/components/AudioProvider.js":
|
||
/*!*****************************************!*\
|
||
!*** ./src/components/AudioProvider.js ***!
|
||
\*****************************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AudioProvider: () => (/* binding */ AudioProvider),\n/* harmony export */ useAudio: () => (/* binding */ useAudio)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\n/* harmony import */ var _utils_asset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/asset */ \"(pages-dir-node)/./src/utils/asset.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, _utils_asset__WEBPACK_IMPORTED_MODULE_3__]);\n([_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__, _utils_asset__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n// 全局音效 Provider:根据 estmodel 预加载并动态切换资源\n\n\n\n\nconst AudioCtx = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)({\n play: ()=>{}\n});\nfunction AudioProvider({ children }) {\n const { estmodel } = (0,_store_deviceStore__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const soundsRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({});\n const ensureAudio = (key, path)=>{\n const url = (0,_utils_asset__WEBPACK_IMPORTED_MODULE_3__.getAssetUrl)(path);\n let audio = soundsRef.current[key];\n if (!audio) {\n audio = new Audio(url);\n audio.preload = 'auto';\n soundsRef.current[key] = audio;\n } else if (audio.src !== url) {\n audio.src = url;\n audio.load();\n }\n };\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"AudioProvider.useEffect\": ()=>{\n if (true) return;\n // 按需添加你要的音效键和值\n ensureAudio('install', '/sounds/generic_in.wav');\n ensureAudio('uninstall', '/sounds/generic_out.wav');\n ensureAudio('keyClick', '/sounds/key_click.wav');\n ensureAudio('pass', '/sounds/test_pass.wav');\n ensureAudio('fail', '/sounds/test_fail.wav');\n ensureAudio('connect', '/sounds/rmt_connect.wav');\n ensureAudio('disconnect', '/sounds/rmt_disconnect.wav');\n }\n }[\"AudioProvider.useEffect\"], [\n estmodel\n ]);\n const play = (key, opts = {})=>{\n const base = soundsRef.current[key];\n if (!base) return;\n // 克隆节点以支持频繁触发的并发播放\n const audio = base.cloneNode(true);\n if (opts.volume != null) audio.volume = Math.min(1, Math.max(0, opts.volume));\n if (opts.playbackRate != null) audio.playbackRate = opts.playbackRate;\n audio.currentTime = 0;\n audio.play().catch(()=>{});\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AudioCtx.Provider, {\n value: {\n play\n },\n children: children\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/components/AudioProvider.js\",\n lineNumber: 51,\n columnNumber: 5\n }, this);\n}\nconst useAudio = ()=>(0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AudioCtx);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9jb21wb25lbnRzL0F1ZGlvUHJvdmlkZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBdUM7O0FBQzhCO0FBQ3BCO0FBQ0w7QUFFNUMsTUFBTU0seUJBQVdOLG9EQUFhQSxDQUFDO0lBQUVPLE1BQU0sS0FBTztBQUFFO0FBRXpDLFNBQVNDLGNBQWMsRUFBRUMsUUFBUSxFQUFFO0lBQ3hDLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdOLDhEQUFjQTtJQUNuQyxNQUFNTyxZQUFZUiw2Q0FBTUEsQ0FBQyxDQUFDO0lBRTFCLE1BQU1TLGNBQWMsQ0FBQ0MsS0FBS0M7UUFDeEIsTUFBTUMsTUFBTVYseURBQVdBLENBQUNTO1FBQ3hCLElBQUlFLFFBQVFMLFVBQVVNLE9BQU8sQ0FBQ0osSUFBSTtRQUNsQyxJQUFJLENBQUNHLE9BQU87WUFDVkEsUUFBUSxJQUFJRSxNQUFNSDtZQUNsQkMsTUFBTUcsT0FBTyxHQUFHO1lBQ2hCUixVQUFVTSxPQUFPLENBQUNKLElBQUksR0FBR0c7UUFDM0IsT0FBTyxJQUFJQSxNQUFNSSxHQUFHLEtBQUtMLEtBQUs7WUFDNUJDLE1BQU1JLEdBQUcsR0FBR0w7WUFDWkMsTUFBTUssSUFBSTtRQUNaO0lBQ0Y7SUFFQW5CLGdEQUFTQTttQ0FBQztZQUNSLElBQUksSUFBNkQsRUFBRTtZQUNuRSxlQUFlO1lBQ2ZVLFlBQVksV0FBVztZQUN2QkEsWUFBWSxhQUFhO1lBQ3pCQSxZQUFZLFlBQVk7WUFFeEJBLFlBQVksUUFBUTtZQUNwQkEsWUFBWSxRQUFRO1lBRXBCQSxZQUFZLFdBQVc7WUFDdkJBLFlBQVksY0FBYztRQUM1QjtrQ0FBRztRQUFDRjtLQUFTO0lBRWIsTUFBTUgsT0FBTyxDQUFDTSxLQUFLUyxPQUFPLENBQUMsQ0FBQztRQUMxQixNQUFNQyxPQUFPWixVQUFVTSxPQUFPLENBQUNKLElBQUk7UUFDbkMsSUFBSSxDQUFDVSxNQUFNO1FBQ1gsbUJBQW1CO1FBQ25CLE1BQU1QLFFBQVFPLEtBQUtDLFNBQVMsQ0FBQztRQUM3QixJQUFJRixLQUFLRyxNQUFNLElBQUksTUFBTVQsTUFBTVMsTUFBTSxHQUFHQyxLQUFLQyxHQUFHLENBQUMsR0FBR0QsS0FBS0UsR0FBRyxDQUFDLEdBQUdOLEtBQUtHLE1BQU07UUFDM0UsSUFBSUgsS0FBS08sWUFBWSxJQUFJLE1BQU1iLE1BQU1hLFlBQVksR0FBR1AsS0FBS08sWUFBWTtRQUNyRWIsTUFBTWMsV0FBVyxHQUFHO1FBQ3BCZCxNQUFNVCxJQUFJLEdBQUd3QixLQUFLLENBQUMsS0FBTztJQUM1QjtJQUVBLHFCQUNFLDhEQUFDekIsU0FBUzBCLFFBQVE7UUFBQ0MsT0FBTztZQUFFMUI7UUFBSztrQkFDOUJFOzs7Ozs7QUFHUDtBQUVPLE1BQU15QixXQUFXLElBQU1qQyxpREFBVUEsQ0FBQ0ssVUFBVSIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvY29tcG9uZW50cy9BdWRpb1Byb3ZpZGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIOWFqOWxgOmfs+aViCBQcm92aWRlcu+8muagueaNriBlc3Rtb2RlbCDpooTliqDovb3lubbliqjmgIHliIfmjaLotYTmupBcclxuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB1c2VEZXZpY2VTdG9yZSBmcm9tICdAL3N0b3JlL2RldmljZVN0b3JlJztcclxuaW1wb3J0IHsgZ2V0QXNzZXRVcmwgfSBmcm9tICdAL3V0aWxzL2Fzc2V0JztcclxuXHJcbmNvbnN0IEF1ZGlvQ3R4ID0gY3JlYXRlQ29udGV4dCh7IHBsYXk6ICgpID0+IHt9IH0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEF1ZGlvUHJvdmlkZXIoeyBjaGlsZHJlbiB9KSB7XHJcbiAgY29uc3QgeyBlc3Rtb2RlbCB9ID0gdXNlRGV2aWNlU3RvcmUoKTtcclxuICBjb25zdCBzb3VuZHNSZWYgPSB1c2VSZWYoe30pO1xyXG5cclxuICBjb25zdCBlbnN1cmVBdWRpbyA9IChrZXksIHBhdGgpID0+IHtcclxuICAgIGNvbnN0IHVybCA9IGdldEFzc2V0VXJsKHBhdGgpO1xyXG4gICAgbGV0IGF1ZGlvID0gc291bmRzUmVmLmN1cnJlbnRba2V5XTtcclxuICAgIGlmICghYXVkaW8pIHtcclxuICAgICAgYXVkaW8gPSBuZXcgQXVkaW8odXJsKTtcclxuICAgICAgYXVkaW8ucHJlbG9hZCA9ICdhdXRvJztcclxuICAgICAgc291bmRzUmVmLmN1cnJlbnRba2V5XSA9IGF1ZGlvO1xyXG4gICAgfSBlbHNlIGlmIChhdWRpby5zcmMgIT09IHVybCkge1xyXG4gICAgICBhdWRpby5zcmMgPSB1cmw7XHJcbiAgICAgIGF1ZGlvLmxvYWQoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBBdWRpbyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcclxuICAgIC8vIOaMiemcgOa3u+WKoOS9oOimgeeahOmfs+aViOmUruWSjOWAvFxyXG4gICAgZW5zdXJlQXVkaW8oJ2luc3RhbGwnLCAnL3NvdW5kcy9nZW5lcmljX2luLndhdicpO1xyXG4gICAgZW5zdXJlQXVkaW8oJ3VuaW5zdGFsbCcsICcvc291bmRzL2dlbmVyaWNfb3V0LndhdicpO1xyXG4gICAgZW5zdXJlQXVkaW8oJ2tleUNsaWNrJywgJy9zb3VuZHMva2V5X2NsaWNrLndhdicpO1xyXG4gICAgXHJcbiAgICBlbnN1cmVBdWRpbygncGFzcycsICcvc291bmRzL3Rlc3RfcGFzcy53YXYnKTtcclxuICAgIGVuc3VyZUF1ZGlvKCdmYWlsJywgJy9zb3VuZHMvdGVzdF9mYWlsLndhdicpO1xyXG5cclxuICAgIGVuc3VyZUF1ZGlvKCdjb25uZWN0JywgJy9zb3VuZHMvcm10X2Nvbm5lY3Qud2F2Jyk7XHJcbiAgICBlbnN1cmVBdWRpbygnZGlzY29ubmVjdCcsICcvc291bmRzL3JtdF9kaXNjb25uZWN0LndhdicpO1xyXG4gIH0sIFtlc3Rtb2RlbF0pO1xyXG5cclxuICBjb25zdCBwbGF5ID0gKGtleSwgb3B0cyA9IHt9KSA9PiB7XHJcbiAgICBjb25zdCBiYXNlID0gc291bmRzUmVmLmN1cnJlbnRba2V5XTtcclxuICAgIGlmICghYmFzZSkgcmV0dXJuO1xyXG4gICAgLy8g5YWL6ZqG6IqC54K55Lul5pSv5oyB6aKR57mB6Kem5Y+R55qE5bm25Y+R5pKt5pS+XHJcbiAgICBjb25zdCBhdWRpbyA9IGJhc2UuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgaWYgKG9wdHMudm9sdW1lICE9IG51bGwpIGF1ZGlvLnZvbHVtZSA9IE1hdGgubWluKDEsIE1hdGgubWF4KDAsIG9wdHMudm9sdW1lKSk7XHJcbiAgICBpZiAob3B0cy5wbGF5YmFja1JhdGUgIT0gbnVsbCkgYXVkaW8ucGxheWJhY2tSYXRlID0gb3B0cy5wbGF5YmFja1JhdGU7XHJcbiAgICBhdWRpby5jdXJyZW50VGltZSA9IDA7XHJcbiAgICBhdWRpby5wbGF5KCkuY2F0Y2goKCkgPT4ge30pO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8QXVkaW9DdHguUHJvdmlkZXIgdmFsdWU9e3sgcGxheSB9fT5cclxuICAgICAge2NoaWxkcmVufVxyXG4gICAgPC9BdWRpb0N0eC5Qcm92aWRlcj5cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdXNlQXVkaW8gPSAoKSA9PiB1c2VDb250ZXh0KEF1ZGlvQ3R4KTsiXSwibmFtZXMiOlsiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VEZXZpY2VTdG9yZSIsImdldEFzc2V0VXJsIiwiQXVkaW9DdHgiLCJwbGF5IiwiQXVkaW9Qcm92aWRlciIsImNoaWxkcmVuIiwiZXN0bW9kZWwiLCJzb3VuZHNSZWYiLCJlbnN1cmVBdWRpbyIsImtleSIsInBhdGgiLCJ1cmwiLCJhdWRpbyIsImN1cnJlbnQiLCJBdWRpbyIsInByZWxvYWQiLCJzcmMiLCJsb2FkIiwib3B0cyIsImJhc2UiLCJjbG9uZU5vZGUiLCJ2b2x1bWUiLCJNYXRoIiwibWluIiwibWF4IiwicGxheWJhY2tSYXRlIiwiY3VycmVudFRpbWUiLCJjYXRjaCIsIlByb3ZpZGVyIiwidmFsdWUiLCJ1c2VBdWRpbyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/components/AudioProvider.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-node)/./src/pages/_app.js":
|
||
/*!***************************!*\
|
||
!*** ./src/pages/_app.js ***!
|
||
\***************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ App)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _styles_globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/styles/globals.css */ \"(pages-dir-node)/./src/styles/globals.css\");\n/* harmony import */ var _styles_globals_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_styles_globals_css__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/head */ \"next/head\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_AudioProvider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/AudioProvider */ \"(pages-dir-node)/./src/components/AudioProvider.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_AudioProvider__WEBPACK_IMPORTED_MODULE_3__]);\n_components_AudioProvider__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\nfunction App({ Component, pageProps }) {\n return /*#__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)((next_head__WEBPACK_IMPORTED_MODULE_2___default()), {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: \"信息网络布线仿真测试平台\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 9,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n name: \"description\",\n content: \"信息网络布线仿真测试平台\"\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 10,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 8,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_AudioProvider__WEBPACK_IMPORTED_MODULE_3__.AudioProvider, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Component, {\n ...pageProps\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/opt/dev/est-dsx/src/pages/_app.js\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9wYWdlcy9fYXBwLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUE4QjtBQUNGO0FBQytCO0FBRTVDLFNBQVNFLElBQUksRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUU7SUFDbEQscUJBQ0U7OzBCQUNFLDhEQUFDSixrREFBSUE7O2tDQUNILDhEQUFDSztrQ0FBTTs7Ozs7O2tDQUNQLDhEQUFDQzt3QkFBS0MsTUFBSzt3QkFBY0MsU0FBUTs7Ozs7Ozs7Ozs7OzBCQUVuQyw4REFBQ1Asb0VBQWFBOzBCQUNaLDRFQUFDRTtvQkFBVyxHQUFHQyxTQUFTOzs7Ozs7Ozs7Ozs7O0FBSWhDIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy9wYWdlcy9fYXBwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIkAvc3R5bGVzL2dsb2JhbHMuY3NzXCI7XG5pbXBvcnQgSGVhZCBmcm9tICduZXh0L2hlYWQnXG5pbXBvcnQgeyBBdWRpb1Byb3ZpZGVyIH0gZnJvbSAnQC9jb21wb25lbnRzL0F1ZGlvUHJvdmlkZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBcHAoeyBDb21wb25lbnQsIHBhZ2VQcm9wcyB9KSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxIZWFkPlxuICAgICAgICA8dGl0bGU+5L+h5oGv572R57uc5biD57q/5Lu/55yf5rWL6K+V5bmz5Y+wPC90aXRsZT5cbiAgICAgICAgPG1ldGEgbmFtZT1cImRlc2NyaXB0aW9uXCIgY29udGVudD1cIuS/oeaBr+e9kee7nOW4g+e6v+S7v+ecn+a1i+ivleW5s+WPsFwiIC8+XG4gICAgICA8L0hlYWQ+XG4gICAgICA8QXVkaW9Qcm92aWRlcj5cbiAgICAgICAgPENvbXBvbmVudCB7Li4ucGFnZVByb3BzfSAvPlxuICAgICAgPC9BdWRpb1Byb3ZpZGVyPlxuICAgIDwvPlxuICApXG59XG4iXSwibmFtZXMiOlsiSGVhZCIsIkF1ZGlvUHJvdmlkZXIiLCJBcHAiLCJDb21wb25lbnQiLCJwYWdlUHJvcHMiLCJ0aXRsZSIsIm1ldGEiLCJuYW1lIiwiY29udGVudCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/pages/_app.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-node)/./src/store/deviceStore.js":
|
||
/*!**********************************!*\
|
||
!*** ./src/store/deviceStore.js ***!
|
||
\**********************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__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 zustand__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zustand */ \"zustand\");\n/* harmony import */ var zustand_middleware__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand/middleware */ \"zustand/middleware\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([zustand__WEBPACK_IMPORTED_MODULE_0__, zustand_middleware__WEBPACK_IMPORTED_MODULE_1__]);\n([zustand__WEBPACK_IMPORTED_MODULE_0__, zustand_middleware__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\nconst useDeviceStore = (0,zustand__WEBPACK_IMPORTED_MODULE_0__.create)((0,zustand_middleware__WEBPACK_IMPORTED_MODULE_1__.devtools)((set, get)=>({\n // 版本控制\n estmodel: 'general',\n // estmodel: 'fluke',\n updateEstmodel: (model)=>set({\n estmodel: model\n }),\n // 各个类别的设备\n devices: {\n '设备': [\n {\n id: 'dsx',\n name: '认证测试仪',\n type: 'device',\n image: '/DSX-MA.png',\n description: '认证分析测试仪仪'\n },\n {\n id: 'est-analyzer',\n name: '线缆分析仪',\n type: 'device',\n image: '/cableanalyzer.png',\n description: '平衡/不平衡分析仪'\n },\n {\n id: 'wifi',\n name: '无线分析仪',\n type: 'device',\n image: '/wifi.png',\n description: '无线信号分析仪'\n }\n ],\n '模块': [\n {\n id: '8000',\n name: '铜缆分析模块',\n type: 'module',\n portType: 'copper',\n image: '/dsx.png',\n description: '铜缆认证分析仪模块'\n },\n {\n id: 'cfp',\n name: '光纤损耗模块',\n type: 'module',\n portType: 'fiber',\n image: '/cfp.png',\n description: '光纤损耗测试模块'\n },\n {\n id: 'ofp',\n name: '光时域反射模块',\n type: 'module',\n portType: 'fiber',\n image: '/ofp.png',\n description: 'OTDR光时域反射测试模块'\n }\n ],\n '适配器': [\n {\n id: 'channel',\n name: '通道适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-copper',\n image: '/CHA804.png',\n description: 'Cat 8/Class I 通道测试适配器'\n },\n {\n id: 'permanent',\n name: '永久链路适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-copper',\n image: '/PLA804.png',\n description: 'Cat 8/Class I 永久链路测试适配器'\n },\n {\n id: 'patchcode-Cat6',\n name: '跳线适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-copper',\n image: '/DSX-PC6S.png',\n description: 'Cat 6 跳线适配器'\n },\n {\n id: 'channel-m12-d',\n name: 'M12 D-Code适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-m12-d',\n image: '/DSX-CHA021S.png',\n description: ' M12-D 4位适配器'\n },\n {\n id: 'channel-m12-x',\n name: 'M12 X-Code适配器',\n type: 'adapter',\n portType: 'copper',\n jstype: 'modelport-m12-x',\n image: '/DSX-CHA-M12-X-S.png',\n description: 'M12-X 8 位适配器'\n }\n ],\n '跳线': [\n // 铜缆跳线\n {\n id: 'pachcode-copper',\n name: 'RJ45跳线',\n type: 'cable',\n portType: 'copper',\n image: '/Cable.png',\n description: 'Cat 6测试跳线'\n },\n {\n id: 'pachcode-m12-x',\n name: 'M12-X-Code跳线',\n type: 'cable',\n portType: 'copper-m12-x',\n image: '/M12.png',\n description: 'M12-X-Code跳线'\n },\n {\n id: 'pachcode-m12-d',\n name: 'M12-D-Code跳线',\n type: 'cable',\n portType: 'copper-m12-d',\n image: '/M12.png',\n description: 'M12-D-Code跳线'\n },\n // 光纤跳线\n {\n id: 'sm-lc-lc',\n name: '单模跳纤',\n type: 'cable',\n portType: 'fiber',\n image: '/SM-LC-LC.png',\n description: '单模 LC-LC 双工测试跳线'\n },\n {\n id: 'mm-lc-lc',\n name: '多模跳纤',\n type: 'cable',\n portType: 'fiber',\n image: '/MM-LC-LC.png',\n description: '多模 LC-LC 双工测试跳线'\n },\n // 补偿光纤\n {\n id: 'smc-lc-lc',\n name: '单模补偿光纤',\n type: 'cable',\n portType: 'fiber',\n image: '/SMC-LC-LC.png',\n description: '单模 LC-LC 双工补偿光纤'\n },\n {\n id: 'mmc-lc-lc',\n name: '多模补偿光纤',\n type: 'cable',\n portType: 'fiber',\n image: '/MMC-LC-LC.png',\n description: '多模 LC-LC 双工补偿光纤'\n },\n // MPO跳线\n {\n id: 'sm-mpo-mpo',\n name: '单模MPO跳线',\n type: 'cable-mpo',\n portType: 'fiber-mpo',\n image: '/SM-MPO-MPO.png',\n description: '单模 MPO-MPO 跳线'\n },\n {\n id: 'mm-mpo-mpo',\n name: '多模MPO跳线',\n type: 'cable-mpo',\n portType: 'fiber-mpo',\n image: '/MM-MPO-MPO.png',\n description: '多模 MPO-MPO 跳线'\n },\n {\n id: 'mm-mpo-lc-box',\n name: '多模mpo-lc转接盒',\n type: 'mpo',\n portType: 'fiberbox',\n image: '/MM-MPO-LC-BOX.png',\n description: '多模 MPO-LC 转接盒'\n }\n ],\n '连接器': [\n {\n id: 'lc-connector',\n name: 'LC法兰',\n type: 'connector',\n portType: 'fiber',\n image: '/LC-connector.png',\n description: '光纤连接器'\n }\n ],\n '工具': [\n {\n id: 'lc-clean',\n name: '1.25mm清洁笔',\n image: '/LC-clean.png',\n description: '光纤清洁笔'\n },\n {\n id: 'mpo-clean',\n name: 'mpo清洁笔',\n image: '/MPO-clean.png',\n description: '光纤清洁笔'\n },\n {\n id: 'ILT200',\n name: '音频探棒',\n image: '/ILT200.png',\n description: '音频探棒'\n }\n ],\n '夹具': [\n {\n id: 'cal-2p',\n name: '测试夹具-2芯',\n type: 'module',\n portType: 'copper',\n image: '/CAL-2P.png',\n description: '插座测试夹具2芯'\n },\n {\n id: 'cal-4p',\n name: '测试夹具-4芯',\n type: 'module',\n portType: 'copper',\n image: '/CAL-4P.png',\n description: '插座测试夹具4芯'\n },\n {\n id: 'benchmark-copper',\n name: '基准连接器',\n type: 'module',\n portType: 'cal-copper-out',\n image: '/benchmark.png',\n description: '基准连接'\n }\n ]\n },\n // 故障场景\n faultScenarios: \"Office\",\n // faultScenarios: \"WorldSkill\",\n // faultScenarios: \"Industry\",\n // faultScenarios: \"DataCenter\",\n // faultScenarios: \"CopperAnalyzer\",\n WorldSkillScenarios: \"OFFICE\",\n // 赛位号\n // seatNumber: \"husky\",\n seatNumber: \"\",\n // 组织机构\n seatOrg: \"\",\n // 比赛ID\n seatUUID: null,\n // 比赛开始时间\n seatStartTime: null,\n // 表单记录\n reports: [],\n // 当前安装设备 - 格式: { main: device, remote: device }\n installedDevices: {\n main: null,\n remote: null\n },\n // 主机已安装模块\n mainUnitModules: [],\n // 远端已安装模块\n remoteUnitModules: [],\n // 主机适配器\n mainUnitAdapter: null,\n // 远端适配器\n remoteUnitAdapter: null,\n // 主机接口\n mainUnitPorts: [],\n // 远端接口\n remoteUnitPorts: [],\n // 当前选中的工具\n selectedTool: null,\n // 连接区物品列表\n connectionItems: [],\n // 连接路径列表\n connectionPaths: [],\n // 连接状态分析结果\n connectionStatus: [],\n // 传输线基准状态\n hasBenchmarkModule: false,\n // 线缆参数\n cableParams: {\n conductorMaterial: 'copper',\n coreDiameter: 0.57,\n insulationMaterial: 'pe',\n insulationThickness: 0.2,\n twistPitch: 12,\n pair2TwistRatio: 1.0,\n cableLength: 100,\n R: 0,\n L: 0,\n C: 0,\n G: 0 // 电导 G′ (nS/m)\n },\n // 选择工具\n selectTool: (tool)=>{\n set({\n selectedTool: tool\n });\n },\n // 取消选择工具\n clearSelectedTool: ()=>{\n set({\n selectedTool: null\n });\n },\n // 安装设备\n installDevice: (device, target)=>{\n set((state)=>({\n installedDevices: {\n ...state.installedDevices,\n [target]: device\n }\n }));\n },\n // 卸载设备\n uninstallDevice: (target)=>{\n set((state)=>{\n // 卸载设备时,同时清除该设备上的所有模块和适配器\n const updates = {\n installedDevices: {\n ...state.installedDevices,\n [target]: null\n }\n };\n // 清除对应的模块和适配器\n if (target === 'main') {\n updates.mainUnitModules = [];\n updates.mainUnitAdapter = null;\n updates.mainUnitFixture = null;\n updates.mainUnitPorts = [];\n updates.hasBenchmarkModule = false;\n } else {\n updates.remoteUnitModules = [];\n updates.remoteUnitAdapter = null;\n updates.remoteUnitPorts = [];\n updates.hasBenchmarkModule = false;\n }\n return updates;\n });\n },\n // 安装模块\n installModule: (module, target)=>{\n set((state)=>{\n if (target === 'main') {\n let ports = [];\n if (module.id === 'cfp') {\n ports = [\n {\n id: 'cfp-sm-out',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'cfp-in',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'cfp-mm-out',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'vfl',\n type: 'modelport',\n module: 'cfp'\n }\n ];\n } else if (module.id === 'ofp') {\n ports = [\n {\n id: 'ofp-sm-out',\n type: 'modelport',\n module: 'ofp'\n },\n {\n id: 'ofp-mm-out',\n type: 'modelport',\n module: 'ofp'\n },\n {\n id: 'vfl',\n type: 'modelport',\n module: 'ofp'\n }\n ];\n } else if (module.id === 'cal-2p') {\n ports = [\n {\n id: 'cal-1p-1',\n type: 'cal-copper',\n module: 'cal-2p'\n },\n {\n id: 'cal-1p-2',\n type: 'cal-copper',\n module: 'cal-2p'\n }\n ];\n } else if (module.id === 'cal-4p') {\n ports = [\n {\n id: 'cal-2p-1',\n type: 'cal-copper',\n module: 'cal-4p'\n },\n {\n id: 'cal-2p-2',\n type: 'cal-copper',\n module: 'cal-4p'\n },\n {\n id: 'cal-2p-3',\n type: 'cal-copper',\n module: 'cal-4p'\n },\n {\n id: 'cal-2p-4',\n type: 'cal-copper',\n module: 'cal-4p'\n }\n ];\n }\n const newMainModules = [\n ...state.mainUnitModules,\n module\n ];\n const newRemoteModules = state.remoteUnitModules;\n return {\n mainUnitModules: newMainModules,\n mainUnitPorts: ports,\n hasBenchmarkModule: newMainModules.some((m)=>m.id === 'benchmark-copper') && newRemoteModules.some((m)=>m.id === 'benchmark-copper')\n };\n } else {\n let ports = [];\n if (module.id === 'cfp') {\n ports = [\n {\n id: 'cfp-sm-out',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'cfp-in',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'cfp-mm-out',\n type: 'modelport',\n module: 'cfp'\n },\n {\n id: 'vfl',\n type: 'modelport',\n module: 'cfp'\n }\n ];\n } else if (module.id === 'cal-2p') {\n ports = [\n {\n id: 'cal-1p-1',\n type: 'cal-copper',\n module: 'cal-2p'\n },\n {\n id: 'cal-1p-2',\n type: 'cal-copper',\n module: 'cal-2p'\n }\n ];\n } else if (module.id === 'cal-4p') {\n ports = [\n {\n id: 'cal-2p-1',\n type: 'cal-copper',\n module: 'cal-4p'\n },\n {\n id: 'cal-2p-2',\n type: 'cal-copper',\n module: 'cal-4p'\n },\n {\n id: 'cal-2p-3',\n type: 'cal-copper',\n module: 'cal-4p'\n },\n {\n id: 'cal-2p-4',\n type: 'cal-copper',\n module: 'cal-4p'\n }\n ];\n }\n const newRemoteModules = [\n ...state.remoteUnitModules,\n module\n ];\n const newMainModules = state.mainUnitModules;\n return {\n remoteUnitModules: newRemoteModules,\n remoteUnitPorts: ports,\n hasBenchmarkModule: newMainModules.some((m)=>m.id === 'benchmark-copper') && newRemoteModules.some((m)=>m.id === 'benchmark-copper')\n };\n }\n });\n },\n // 卸载模块\n uninstallModule: (moduleId, target)=>{\n set((state)=>{\n if (target === 'main') {\n const newMainModules = state.mainUnitModules.filter((m)=>m.id !== moduleId);\n const newRemoteModules = state.remoteUnitModules;\n return {\n mainUnitModules: newMainModules,\n mainUnitPorts: [],\n mainUnitAdapter: null,\n hasBenchmarkModule: newMainModules.some((m)=>m.id === 'benchmark-copper') && newRemoteModules.some((m)=>m.id === 'benchmark-copper')\n };\n } else {\n const newRemoteModules = state.remoteUnitModules.filter((m)=>m.id !== moduleId);\n const newMainModules = state.mainUnitModules;\n return {\n remoteUnitModules: newRemoteModules,\n remoteUnitPorts: [],\n remoteUnitAdapter: null,\n hasBenchmarkModule: newMainModules.some((m)=>m.id === 'benchmark-copper') && newRemoteModules.some((m)=>m.id === 'benchmark-copper')\n };\n }\n });\n },\n // 安装适配器\n installAdapter: (adapter, target)=>{\n set((state)=>({\n [target === 'main' ? 'mainUnitAdapter' : 'remoteUnitAdapter']: {\n ...adapter,\n port: {\n id: `${adapter.id}`,\n type: 'modelport',\n module: adapter.id\n }\n }\n }));\n },\n // 卸载适配器\n uninstallAdapter: (target)=>{\n set((state)=>({\n [target === 'main' ? 'mainUnitAdapter' : 'remoteUnitAdapter']: null\n }));\n },\n // 更新故障场景\n updateFaultScenarios: (status)=>{\n set(()=>({\n faultScenarios: status\n }));\n },\n // 更新竞赛故障场景\n updateWorldSkillScenarios: (status)=>{\n set(()=>({\n WorldSkillScenarios: status\n }));\n },\n // 更新赛位号\n updateSeatNumber: (number)=>{\n set(()=>({\n seatNumber: number\n }));\n },\n // 更新组织机构\n updateSeatOrg: (org)=>{\n set(()=>({\n seatOrg: org\n }));\n },\n // 更新比赛ID\n updateSeatUUID: (uuid)=>{\n set(()=>({\n seatUUID: uuid\n }));\n },\n // 更新比赛开始时间\n updateSeatStartTime: (startTime)=>{\n set(()=>({\n seatStartTime: startTime\n }));\n },\n // 更新报告数据\n updateReports: (records)=>{\n set(()=>({\n reports: records\n }));\n },\n // ----***物品区域方法***----\n // 添加物品到连接区\n addConnectionItem: (item)=>set((state)=>({\n connectionItems: [\n ...state.connectionItems,\n item\n ]\n })),\n // 从连接区移除物品\n removeConnectionItem: (index)=>set((state)=>({\n connectionItems: state.connectionItems.filter((_, i)=>i !== index)\n })),\n // ---***连接路径***---\n // 添加连接路径\n addConnectionPath: (path)=>set((state)=>{\n const newPaths = [\n ...state.connectionPaths,\n path\n ];\n return {\n connectionPaths: newPaths\n };\n }),\n // 移除连接路径\n removeConnectionPath: (sourceId, targetId)=>set((state)=>{\n const newPaths = state.connectionPaths.filter((path)=>!(path.source === sourceId && path.target === targetId));\n return {\n connectionPaths: newPaths\n };\n }),\n // 清空连接路径\n clearConnectionPaths: ()=>set(()=>{\n return {\n connectionPaths: []\n };\n }),\n // 获取当前连接路径\n getConnectionPaths: ()=>get().connectionPaths,\n // ---***连接状态分析结果***---\n // 更新连接状态\n updateConnectionStatus: (status)=>set(()=>({\n connectionStatus: status\n })),\n // 提示框方法\n setShowTotalToast: (show)=>set({\n showTotalToast: show\n }),\n setTotalToastMessage: (message)=>set({\n totalToastMessage: message\n }),\n // ---***线缆参数管理***---\n // 更新传输线基准状态\n updateHasBenchmarkModule: (status)=>set(()=>({\n hasBenchmarkModule: status\n })),\n // 更新线缆参数\n updateCableParams: (params)=>set((state)=>({\n cableParams: {\n ...state.cableParams,\n ...params\n }\n })),\n // 更新单个线缆参数\n updateSingleCableParam: (key, value)=>set((state)=>({\n cableParams: {\n ...state.cableParams,\n [key]: value\n }\n })),\n // 重置线缆参数\n resetCableParams: ()=>set(()=>({\n cableParams: {\n conductorMaterial: 'copper',\n coreDiameter: 0.57,\n insulationMaterial: 'pe',\n insulationThickness: 0.2,\n twistPitch: 12,\n pair2TwistRatio: 1.0,\n cableLength: 100,\n R: 0,\n L: 0,\n C: 0,\n G: 0\n }\n })),\n // 初始化数据\n // 重置到默认状态\n resetdeviceStore: ()=>{\n set(()=>({\n // 当前安装设备\n installedDevices: {\n main: null,\n remote: null\n },\n // 主机已安装模块\n mainUnitModules: [],\n // 远端已安装模块\n remoteUnitModules: [],\n // 主机适配器\n mainUnitAdapter: null,\n // 远端适配器\n remoteUnitAdapter: null,\n // 主机接口\n mainUnitPorts: [],\n // 远端接口\n remoteUnitPorts: [],\n // 当前选中的工具\n selectedTool: null,\n // 连接区物品列表\n connectionItems: [],\n // 连接路径列表\n connectionPaths: [],\n // 连接状态分析结果\n connectionStatus: [],\n // 报告数据\n reports: [],\n // 传输线基准状态\n hasBenchmarkModule: false,\n // 线缆参数\n cableParams: {\n conductorMaterial: 'copper',\n coreDiameter: 0.57,\n insulationMaterial: 'pe',\n insulationThickness: 0.2,\n twistPitch: 12,\n pair2TwistRatio: 1.0,\n cableLength: 100,\n R: 0,\n L: 0,\n C: 0,\n G: 0\n }\n }));\n }\n })));\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useDeviceStore);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy9zdG9yZS9kZXZpY2VTdG9yZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBaUM7QUFDYTtBQUc5QyxNQUFNRSxpQkFBaUJGLCtDQUFNQSxDQUM3QkMsNERBQVFBLENBQ0osQ0FBQ0UsS0FBS0MsTUFBUztRQUNqQixPQUFPO1FBQ1BDLFVBQVU7UUFDVixxQkFBcUI7UUFDcEJDLGdCQUFnQixDQUFDQyxRQUFVSixJQUFJO2dCQUFFRSxVQUFVRTtZQUFNO1FBRWxELFVBQVU7UUFDVkMsU0FBUztZQUNQLE1BQU07Z0JBQ0o7b0JBQ0VDLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05DLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7YUFDRDtZQUNELE1BQU07Z0JBQ0o7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZGLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZGLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZGLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7YUFDRDtZQUNELE9BQU87Z0JBQ0w7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZDLFFBQVE7b0JBQ1JILE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZDLFFBQVE7b0JBQ1JILE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZDLFFBQVE7b0JBQ1JILE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZDLFFBQVE7b0JBQ1JILE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZDLFFBQVE7b0JBQ1JILE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7YUFDRDtZQUNELE1BQU07Z0JBQ0osT0FBTztnQkFDUDtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjtnQkFDQTtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjtnQkFDQTtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjtnQkFDQSxPQUFPO2dCQUNQO29CQUNFSixJQUFJO29CQUNKQyxNQUFNO29CQUNOQyxNQUFNO29CQUNORyxVQUFVO29CQUNWRixPQUFPO29CQUNQQyxhQUFhO2dCQUNmO2dCQUNBO29CQUNFSixJQUFJO29CQUNKQyxNQUFNO29CQUNOQyxNQUFNO29CQUNORyxVQUFVO29CQUNWRixPQUFPO29CQUNQQyxhQUFhO2dCQUNmO2dCQUNBLE9BQU87Z0JBQ1A7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZGLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0E7b0JBQ0VKLElBQUk7b0JBQ0pDLE1BQU07b0JBQ05DLE1BQU07b0JBQ05HLFVBQVU7b0JBQ1ZGLE9BQU87b0JBQ1BDLGFBQWE7Z0JBQ2Y7Z0JBQ0EsUUFBUTtnQkFDUjtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjtnQkFDQTtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjtnQkFDQTtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjthQUNEO1lBQ0QsT0FBTztnQkFDTDtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjthQUNEO1lBQ0QsTUFBTTtnQkFDSjtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkUsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjtnQkFDQTtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkUsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjtnQkFDQTtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkUsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjthQUNEO1lBRUQsTUFBTTtnQkFDSjtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjtnQkFDQTtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjtnQkFDQTtvQkFDRUosSUFBSTtvQkFDSkMsTUFBTTtvQkFDTkMsTUFBTTtvQkFDTkcsVUFBVTtvQkFDVkYsT0FBTztvQkFDUEMsYUFBYTtnQkFDZjthQUNEO1FBRUg7UUFJQSxPQUFPO1FBQ1BHLGdCQUFnQjtRQUNoQixnQ0FBZ0M7UUFDaEMsOEJBQThCO1FBQzlCLGdDQUFnQztRQUNoQyxvQ0FBb0M7UUFDcENDLHFCQUFxQjtRQUNyQixNQUFNO1FBQ04sdUJBQXVCO1FBQ3ZCQyxZQUFZO1FBQ1osT0FBTztRQUNQQyxTQUFTO1FBQ1QsT0FBTztRQUNQQyxVQUFVO1FBQ1YsU0FBUztRQUNUQyxlQUFjO1FBQ2QsT0FBTztRQUNQQyxTQUFRLEVBQUU7UUFDVixnREFBZ0Q7UUFDaERDLGtCQUFrQjtZQUFFQyxNQUFNO1lBQU1DLFFBQVE7UUFBSztRQUM3QyxVQUFVO1FBQ1ZDLGlCQUFpQixFQUFFO1FBQ25CLFVBQVU7UUFDVkMsbUJBQW1CLEVBQUU7UUFDckIsUUFBUTtRQUNSQyxpQkFBaUI7UUFDakIsUUFBUTtRQUNSQyxtQkFBbUI7UUFDbkIsT0FBTztRQUNQQyxlQUFlLEVBQUU7UUFDakIsT0FBTztRQUNQQyxpQkFBaUIsRUFBRTtRQUNuQixVQUFVO1FBQ1ZDLGNBQWM7UUFDZCxVQUFVO1FBQ1ZDLGlCQUFpQixFQUFFO1FBQ25CLFNBQVM7UUFDVEMsaUJBQWlCLEVBQUU7UUFDbkIsV0FBVztRQUNYQyxrQkFBa0IsRUFBRTtRQUVwQixVQUFVO1FBQ1ZDLG9CQUFvQjtRQUNwQixPQUFPO1FBQ1BDLGFBQWE7WUFDWEMsbUJBQW1CO1lBQ25CQyxjQUFjO1lBQ2RDLG9CQUFvQjtZQUNwQkMscUJBQXFCO1lBQ3JCQyxZQUFZO1lBQ1pDLGlCQUFpQjtZQUNqQkMsYUFBYTtZQUNiQyxHQUFHO1lBQ0hDLEdBQUc7WUFDSEMsR0FBRztZQUNIQyxHQUFHLEVBQW9CLGVBQWU7UUFDeEM7UUFFQSxPQUFPO1FBQ1BDLFlBQVksQ0FBQ0M7WUFDWC9DLElBQUk7Z0JBQUU2QixjQUFja0I7WUFBSztRQUMzQjtRQUNBLFNBQVM7UUFDVEMsbUJBQW1CO1lBQ2pCaEQsSUFBSTtnQkFBRTZCLGNBQWM7WUFBSztRQUMzQjtRQUVBLE9BQU87UUFDUG9CLGVBQWUsQ0FBQ0MsUUFBUUM7WUFDdEJuRCxJQUFJLENBQUNvRCxRQUFXO29CQUNkaEMsa0JBQWtCO3dCQUNoQixHQUFHZ0MsTUFBTWhDLGdCQUFnQjt3QkFDekIsQ0FBQytCLE9BQU8sRUFBRUQ7b0JBQ1o7Z0JBQ0Y7UUFDRjtRQUVBLE9BQU87UUFDUEcsaUJBQWlCLENBQUNGO1lBQ2hCbkQsSUFBSSxDQUFDb0Q7Z0JBQ0gsMEJBQTBCO2dCQUMxQixNQUFNRSxVQUFVO29CQUNkbEMsa0JBQWtCO3dCQUNoQixHQUFHZ0MsTUFBTWhDLGdCQUFnQjt3QkFDekIsQ0FBQytCLE9BQU8sRUFBRTtvQkFDWjtnQkFDRjtnQkFFQSxjQUFjO2dCQUNkLElBQUlBLFdBQVcsUUFBUTtvQkFDckJHLFFBQVEvQixlQUFlLEdBQUcsRUFBRTtvQkFDNUIrQixRQUFRN0IsZUFBZSxHQUFHO29CQUMxQjZCLFFBQVFDLGVBQWUsR0FBRztvQkFDMUJELFFBQVEzQixhQUFhLEdBQUcsRUFBRTtvQkFDMUIyQixRQUFRckIsa0JBQWtCLEdBQUc7Z0JBQy9CLE9BQU87b0JBQ0xxQixRQUFROUIsaUJBQWlCLEdBQUcsRUFBRTtvQkFDOUI4QixRQUFRNUIsaUJBQWlCLEdBQUc7b0JBQzVCNEIsUUFBUTFCLGVBQWUsR0FBRyxFQUFFO29CQUM1QjBCLFFBQVFyQixrQkFBa0IsR0FBRztnQkFDL0I7Z0JBRUEsT0FBT3FCO1lBQ1Q7UUFDRjtRQUVBLE9BQU87UUFDUEUsZUFBZSxDQUFDQyxRQUFRTjtZQUN0Qm5ELElBQUksQ0FBQ29EO2dCQUNILElBQUlELFdBQVcsUUFBUTtvQkFDckIsSUFBSU8sUUFBUSxFQUFFO29CQUNkLElBQUlELE9BQU9uRCxFQUFFLEtBQUssT0FBTzt3QkFDdkJvRCxRQUFROzRCQUNOO2dDQUFFcEQsSUFBSTtnQ0FBY0UsTUFBTTtnQ0FBYWlELFFBQVE7NEJBQU07NEJBQ3JEO2dDQUFFbkQsSUFBSTtnQ0FBVUUsTUFBTTtnQ0FBYWlELFFBQVE7NEJBQU07NEJBQ2pEO2dDQUFFbkQsSUFBSTtnQ0FBY0UsTUFBTTtnQ0FBYWlELFFBQVE7NEJBQU07NEJBQ3JEO2dDQUFFbkQsSUFBSTtnQ0FBT0UsTUFBTTtnQ0FBYWlELFFBQVE7NEJBQU07eUJBQy9DO29CQUNILE9BQU8sSUFBSUEsT0FBT25ELEVBQUUsS0FBSyxPQUFPO3dCQUM5Qm9ELFFBQVE7NEJBQ047Z0NBQUVwRCxJQUFJO2dDQUFjRSxNQUFNO2dDQUFhaUQsUUFBUTs0QkFBTTs0QkFDckQ7Z0NBQUVuRCxJQUFJO2dDQUFjRSxNQUFNO2dDQUFhaUQsUUFBUTs0QkFBTTs0QkFDckQ7Z0NBQUVuRCxJQUFJO2dDQUFPRSxNQUFNO2dDQUFhaUQsUUFBUTs0QkFBTTt5QkFDL0M7b0JBQ0gsT0FBTyxJQUFJQSxPQUFPbkQsRUFBRSxLQUFLLFVBQVU7d0JBQ2pDb0QsUUFBUTs0QkFDTjtnQ0FBRXBELElBQUk7Z0NBQVlFLE1BQU07Z0NBQWNpRCxRQUFROzRCQUFTOzRCQUN2RDtnQ0FBRW5ELElBQUk7Z0NBQVlFLE1BQU07Z0NBQWNpRCxRQUFROzRCQUFTO3lCQUN4RDtvQkFDSCxPQUFPLElBQUlBLE9BQU9uRCxFQUFFLEtBQUssVUFBVTt3QkFDakNvRCxRQUFROzRCQUNOO2dDQUFFcEQsSUFBSTtnQ0FBWUUsTUFBTTtnQ0FBY2lELFFBQVE7NEJBQVM7NEJBQ3ZEO2dDQUFFbkQsSUFBSTtnQ0FBWUUsTUFBTTtnQ0FBY2lELFFBQVE7NEJBQVM7NEJBQ3ZEO2dDQUFFbkQsSUFBSTtnQ0FBWUUsTUFBTTtnQ0FBY2lELFFBQVE7NEJBQVM7NEJBQ3ZEO2dDQUFFbkQsSUFBSTtnQ0FBWUUsTUFBTTtnQ0FBY2lELFFBQVE7NEJBQVM7eUJBQ3hEO29CQUNIO29CQUVBLE1BQU1FLGlCQUFpQjsyQkFBSVAsTUFBTTdCLGVBQWU7d0JBQUVrQztxQkFBTztvQkFDekQsTUFBTUcsbUJBQW1CUixNQUFNNUIsaUJBQWlCO29CQUNoRCxPQUFPO3dCQUNMRCxpQkFBaUJvQzt3QkFDakJoQyxlQUFlK0I7d0JBQ2Z6QixvQkFBb0IwQixlQUFlRSxJQUFJLENBQUNDLENBQUFBLElBQUtBLEVBQUV4RCxFQUFFLEtBQUssdUJBQXVCc0QsaUJBQWlCQyxJQUFJLENBQUNDLENBQUFBLElBQUtBLEVBQUV4RCxFQUFFLEtBQUs7b0JBQ25IO2dCQUNGLE9BQU87b0JBQ0wsSUFBSW9ELFFBQVEsRUFBRTtvQkFDZCxJQUFJRCxPQUFPbkQsRUFBRSxLQUFLLE9BQU87d0JBQ3ZCb0QsUUFBUTs0QkFDTjtnQ0FBRXBELElBQUk7Z0NBQWNFLE1BQU07Z0NBQWFpRCxRQUFROzRCQUFNOzRCQUNyRDtnQ0FBRW5ELElBQUk7Z0NBQVVFLE1BQU07Z0NBQWFpRCxRQUFROzRCQUFNOzRCQUNqRDtnQ0FBRW5ELElBQUk7Z0NBQWNFLE1BQU07Z0NBQWFpRCxRQUFROzRCQUFNOzRCQUNyRDtnQ0FBRW5ELElBQUk7Z0NBQU9FLE1BQU07Z0NBQWFpRCxRQUFROzRCQUFNO3lCQUMvQztvQkFDSCxPQUFPLElBQUlBLE9BQU9uRCxFQUFFLEtBQUssVUFBVTt3QkFDakNvRCxRQUFROzRCQUNOO2dDQUFFcEQsSUFBSTtnQ0FBWUUsTUFBTTtnQ0FBY2lELFFBQVE7NEJBQVM7NEJBQ3ZEO2dDQUFFbkQsSUFBSTtnQ0FBWUUsTUFBTTtnQ0FBY2lELFFBQVE7NEJBQVM7eUJBQ3hEO29CQUNILE9BQU8sSUFBSUEsT0FBT25ELEVBQUUsS0FBSyxVQUFVO3dCQUNqQ29ELFFBQVE7NEJBQ047Z0NBQUVwRCxJQUFJO2dDQUFZRSxNQUFNO2dDQUFjaUQsUUFBUTs0QkFBUzs0QkFDdkQ7Z0NBQUVuRCxJQUFJO2dDQUFZRSxNQUFNO2dDQUFjaUQsUUFBUTs0QkFBUzs0QkFDdkQ7Z0NBQUVuRCxJQUFJO2dDQUFZRSxNQUFNO2dDQUFjaUQsUUFBUTs0QkFBUzs0QkFDdkQ7Z0NBQUVuRCxJQUFJO2dDQUFZRSxNQUFNO2dDQUFjaUQsUUFBUTs0QkFBUzt5QkFDeEQ7b0JBQ0g7b0JBRUEsTUFBTUcsbUJBQW1COzJCQUFJUixNQUFNNUIsaUJBQWlCO3dCQUFFaUM7cUJBQU87b0JBQzdELE1BQU1FLGlCQUFpQlAsTUFBTTdCLGVBQWU7b0JBQzVDLE9BQU87d0JBQ0xDLG1CQUFtQm9DO3dCQUNuQmhDLGlCQUFpQjhCO3dCQUNqQnpCLG9CQUFvQjBCLGVBQWVFLElBQUksQ0FBQ0MsQ0FBQUEsSUFBS0EsRUFBRXhELEVBQUUsS0FBSyx1QkFBdUJzRCxpQkFBaUJDLElBQUksQ0FBQ0MsQ0FBQUEsSUFBS0EsRUFBRXhELEVBQUUsS0FBSztvQkFDbkg7Z0JBQ0Y7WUFDRjtRQUNGO1FBRUEsT0FBTztRQUNQeUQsaUJBQWlCLENBQUNDLFVBQVViO1lBQzFCbkQsSUFBSSxDQUFDb0Q7Z0JBQ0gsSUFBSUQsV0FBVyxRQUFRO29CQUNyQixNQUFNUSxpQkFBaUJQLE1BQU03QixlQUFlLENBQUMwQyxNQUFNLENBQUNILENBQUFBLElBQUtBLEVBQUV4RCxFQUFFLEtBQUswRDtvQkFDbEUsTUFBTUosbUJBQW1CUixNQUFNNUIsaUJBQWlCO29CQUNoRCxPQUFPO3dCQUNMRCxpQkFBaUJvQzt3QkFDakJoQyxlQUFlLEVBQUU7d0JBQ2pCRixpQkFBaUI7d0JBQ2pCUSxvQkFBb0IwQixlQUFlRSxJQUFJLENBQUNDLENBQUFBLElBQUtBLEVBQUV4RCxFQUFFLEtBQUssdUJBQXVCc0QsaUJBQWlCQyxJQUFJLENBQUNDLENBQUFBLElBQUtBLEVBQUV4RCxFQUFFLEtBQUs7b0JBQ25IO2dCQUNGLE9BQU87b0JBQ0wsTUFBTXNELG1CQUFtQlIsTUFBTTVCLGlCQUFpQixDQUFDeUMsTUFBTSxDQUFDSCxDQUFBQSxJQUFLQSxFQUFFeEQsRUFBRSxLQUFLMEQ7b0JBQ3RFLE1BQU1MLGlCQUFpQlAsTUFBTTdCLGVBQWU7b0JBQzVDLE9BQU87d0JBQ0xDLG1CQUFtQm9DO3dCQUNuQmhDLGlCQUFpQixFQUFFO3dCQUNuQkYsbUJBQW1CO3dCQUNuQk8sb0JBQW9CMEIsZUFBZUUsSUFBSSxDQUFDQyxDQUFBQSxJQUFLQSxFQUFFeEQsRUFBRSxLQUFLLHVCQUF1QnNELGlCQUFpQkMsSUFBSSxDQUFDQyxDQUFBQSxJQUFLQSxFQUFFeEQsRUFBRSxLQUFLO29CQUNuSDtnQkFDRjtZQUNGO1FBQ0Y7UUFFQSxRQUFRO1FBQ1I0RCxnQkFBZ0IsQ0FBQ0MsU0FBU2hCO1lBQ3hCbkQsSUFBSSxDQUFDb0QsUUFBVztvQkFDZCxDQUFDRCxXQUFXLFNBQVMsb0JBQW9CLG9CQUFvQixFQUFFO3dCQUM3RCxHQUFHZ0IsT0FBTzt3QkFDVkMsTUFBTTs0QkFDSjlELElBQUksR0FBRzZELFFBQVE3RCxFQUFFLEVBQUU7NEJBQ25CRSxNQUFNOzRCQUNOaUQsUUFBUVUsUUFBUTdELEVBQUU7d0JBQ3BCO29CQUNGO2dCQUNGO1FBQ0Y7UUFFQSxRQUFRO1FBQ1IrRCxrQkFBa0IsQ0FBQ2xCO1lBQ2pCbkQsSUFBSSxDQUFDb0QsUUFBVztvQkFDZCxDQUFDRCxXQUFXLFNBQVMsb0JBQW9CLG9CQUFvQixFQUFFO2dCQUNqRTtRQUNGO1FBR0EsU0FBUztRQUNUbUIsc0JBQXNCLENBQUNDO1lBQ3JCdkUsSUFBSSxJQUFPO29CQUNUYSxnQkFBZ0IwRDtnQkFDbEI7UUFDRjtRQUNBLFdBQVc7UUFDWEMsMkJBQTJCLENBQUNEO1lBQzFCdkUsSUFBSSxJQUFPO29CQUNUYyxxQkFBcUJ5RDtnQkFDdkI7UUFDRjtRQUNBLFFBQVE7UUFDUkUsa0JBQWtCLENBQUNDO1lBQ2pCMUUsSUFBSSxJQUFPO29CQUNUZSxZQUFZMkQ7Z0JBQ2Q7UUFDRjtRQUNBLFNBQVM7UUFDVEMsZUFBZSxDQUFDQztZQUNkNUUsSUFBSSxJQUFPO29CQUNUZ0IsU0FBUzREO2dCQUNYO1FBQ0Y7UUFDQSxTQUFTO1FBQ1RDLGdCQUFnQixDQUFDQztZQUNmOUUsSUFBSSxJQUFPO29CQUNUaUIsVUFBVTZEO2dCQUNaO1FBQ0Y7UUFFQSxXQUFXO1FBQ1hDLHFCQUFxQixDQUFDQztZQUNwQmhGLElBQUksSUFBTztvQkFDVGtCLGVBQWU4RDtnQkFDakI7UUFDRjtRQUNBLFNBQVM7UUFDVEMsZUFBZSxDQUFDQztZQUNkbEYsSUFBSSxJQUFPO29CQUNUbUIsU0FBUytEO2dCQUNYO1FBQ0Y7UUFHRix1QkFBdUI7UUFDckIsV0FBVztRQUNYQyxtQkFBbUIsQ0FBQ0MsT0FDbEJwRixJQUFJLENBQUNvRCxRQUFXO29CQUNkdEIsaUJBQWlCOzJCQUFJc0IsTUFBTXRCLGVBQWU7d0JBQUVzRDtxQkFBSztnQkFDbkQ7UUFFRixXQUFXO1FBQ1hDLHNCQUFzQixDQUFDQyxRQUNyQnRGLElBQUksQ0FBQ29ELFFBQVc7b0JBQ2R0QixpQkFBaUJzQixNQUFNdEIsZUFBZSxDQUFDbUMsTUFBTSxDQUFDLENBQUNzQixHQUFHQyxJQUFNQSxNQUFNRjtnQkFDaEU7UUFHSixtQkFBbUI7UUFDakIsU0FBUztRQUNURyxtQkFBbUIsQ0FBQ0MsT0FDbEIxRixJQUFJLENBQUNvRDtnQkFDSCxNQUFNdUMsV0FBVzt1QkFBSXZDLE1BQU1yQixlQUFlO29CQUFFMkQ7aUJBQUs7Z0JBQ2pELE9BQU87b0JBQ0wzRCxpQkFBaUI0RDtnQkFDbkI7WUFDRjtRQUVGLFNBQVM7UUFDVEMsc0JBQXNCLENBQUNDLFVBQVVDLFdBQy9COUYsSUFBSSxDQUFDb0Q7Z0JBQ0gsTUFBTXVDLFdBQVd2QyxNQUFNckIsZUFBZSxDQUFDa0MsTUFBTSxDQUFDeUIsQ0FBQUEsT0FDNUMsQ0FBRUEsQ0FBQUEsS0FBS0ssTUFBTSxLQUFLRixZQUFZSCxLQUFLdkMsTUFBTSxLQUFLMkMsUUFBTztnQkFFdkQsT0FBTztvQkFDTC9ELGlCQUFpQjREO2dCQUNuQjtZQUNGO1FBRUYsU0FBUztRQUNUSyxzQkFBc0IsSUFDcEJoRyxJQUFJO2dCQUNGLE9BQU87b0JBQ0wrQixpQkFBaUIsRUFBRTtnQkFDckI7WUFDRjtRQUVGLFdBQVc7UUFDWGtFLG9CQUFvQixJQUFNaEcsTUFBTThCLGVBQWU7UUFFaEQsdUJBQXVCO1FBR3RCLFNBQVM7UUFDVG1FLHdCQUF3QixDQUFDM0IsU0FDdkJ2RSxJQUFJLElBQU87b0JBQ1RnQyxrQkFBa0J1QztnQkFDcEI7UUFFRixRQUFRO1FBQ1I0QixtQkFBbUIsQ0FBQ0MsT0FBU3BHLElBQUk7Z0JBQUVxRyxnQkFBZ0JEO1lBQUs7UUFDeERFLHNCQUFzQixDQUFDQyxVQUFZdkcsSUFBSTtnQkFBRXdHLG1CQUFtQkQ7WUFBUTtRQUVwRSxxQkFBcUI7UUFDckIsWUFBWTtRQUNaRSwwQkFBMEIsQ0FBQ2xDLFNBQ3pCdkUsSUFBSSxJQUFPO29CQUNUaUMsb0JBQW9Cc0M7Z0JBQ3RCO1FBRUYsU0FBUztRQUNUbUMsbUJBQW1CLENBQUNDLFNBQ2xCM0csSUFBSSxDQUFDb0QsUUFBVztvQkFDZGxCLGFBQWE7d0JBQ1gsR0FBR2tCLE1BQU1sQixXQUFXO3dCQUNwQixHQUFHeUUsTUFBTTtvQkFDWDtnQkFDRjtRQUVGLFdBQVc7UUFDWEMsd0JBQXdCLENBQUNDLEtBQUtDLFFBQzVCOUcsSUFBSSxDQUFDb0QsUUFBVztvQkFDZGxCLGFBQWE7d0JBQ1gsR0FBR2tCLE1BQU1sQixXQUFXO3dCQUNwQixDQUFDMkUsSUFBSSxFQUFFQztvQkFDVDtnQkFDRjtRQUVGLFNBQVM7UUFDVEMsa0JBQWtCLElBQ2hCL0csSUFBSSxJQUFPO29CQUNUa0MsYUFBYTt3QkFDWEMsbUJBQW1CO3dCQUNuQkMsY0FBYzt3QkFDZEMsb0JBQW9CO3dCQUNwQkMscUJBQXFCO3dCQUNyQkMsWUFBWTt3QkFDWkMsaUJBQWlCO3dCQUNqQkMsYUFBYTt3QkFDYkMsR0FBRzt3QkFDSEMsR0FBRzt3QkFDSEMsR0FBRzt3QkFDSEMsR0FBRztvQkFDTDtnQkFDRjtRQUVKLFFBQVE7UUFFSixVQUFVO1FBQ1ZtRSxrQkFBa0I7WUFDaEJoSCxJQUFJLElBQU87b0JBQ1QsU0FBUztvQkFDVG9CLGtCQUFrQjt3QkFBRUMsTUFBTTt3QkFBTUMsUUFBUTtvQkFBSztvQkFDN0MsVUFBVTtvQkFDVkMsaUJBQWlCLEVBQUU7b0JBQ25CLFVBQVU7b0JBQ1ZDLG1CQUFtQixFQUFFO29CQUNyQixRQUFRO29CQUNSQyxpQkFBaUI7b0JBQ2pCLFFBQVE7b0JBQ1JDLG1CQUFtQjtvQkFDbkIsT0FBTztvQkFDUEMsZUFBZSxFQUFFO29CQUNqQixPQUFPO29CQUNQQyxpQkFBaUIsRUFBRTtvQkFDbkIsVUFBVTtvQkFDVkMsY0FBYztvQkFDZCxVQUFVO29CQUNWQyxpQkFBaUIsRUFBRTtvQkFDbkIsU0FBUztvQkFDVEMsaUJBQWlCLEVBQUU7b0JBQ25CLFdBQVc7b0JBQ1hDLGtCQUFrQixFQUFFO29CQUNwQixPQUFPO29CQUNQYixTQUFTLEVBQUU7b0JBQ1gsVUFBVTtvQkFDVmMsb0JBQW9CO29CQUNwQixPQUFPO29CQUNQQyxhQUFhO3dCQUNYQyxtQkFBbUI7d0JBQ25CQyxjQUFjO3dCQUNkQyxvQkFBb0I7d0JBQ3BCQyxxQkFBcUI7d0JBQ3JCQyxZQUFZO3dCQUNaQyxpQkFBaUI7d0JBQ2pCQyxhQUFhO3dCQUNiQyxHQUFHO3dCQUNIQyxHQUFHO3dCQUNIQyxHQUFHO3dCQUNIQyxHQUFHO29CQUNMO2dCQUNGO1FBQ0o7SUFJRjtBQVdBLGlFQUFlOUMsY0FBY0EsRUFBQyIsInNvdXJjZXMiOlsiL29wdC9kZXYvZXN0LWRzeC9zcmMvc3RvcmUvZGV2aWNlU3RvcmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlIH0gZnJvbSAnenVzdGFuZCc7XG5pbXBvcnQgeyBkZXZ0b29scyB9IGZyb20gJ3p1c3RhbmQvbWlkZGxld2FyZSc7XG5cblxuY29uc3QgdXNlRGV2aWNlU3RvcmUgPSBjcmVhdGUoXG5kZXZ0b29scyhcbiAgICAoc2V0LCBnZXQpID0+ICh7XG4gIC8vIOeJiOacrOaOp+WItlxuICBlc3Rtb2RlbDogJ2dlbmVyYWwnLFxuICAvLyBlc3Rtb2RlbDogJ2ZsdWtlJyxcbiAgIHVwZGF0ZUVzdG1vZGVsOiAobW9kZWwpID0+IHNldCh7IGVzdG1vZGVsOiBtb2RlbCB9KSxcbiAgIFxuICAvLyDlkITkuKrnsbvliKvnmoTorr7lpIdcbiAgZGV2aWNlczoge1xuICAgICforr7lpIcnOiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnZHN4JywgXG4gICAgICAgIG5hbWU6ICforqTor4HmtYvor5Xku6onLFxuICAgICAgICB0eXBlOiAnZGV2aWNlJyxcbiAgICAgICAgaW1hZ2U6ICcvRFNYLU1BLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAn6K6k6K+B5YiG5p6Q5rWL6K+V5Luq5LuqJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdlc3QtYW5hbHl6ZXInLCBcbiAgICAgICAgbmFtZTogJ+e6v+e8huWIhuaekOS7qicsXG4gICAgICAgIHR5cGU6ICdkZXZpY2UnLFxuICAgICAgICBpbWFnZTogJy9jYWJsZWFuYWx5emVyLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAn5bmz6KGhL+S4jeW5s+ihoeWIhuaekOS7qidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnd2lmaScsIFxuICAgICAgICBuYW1lOiAn5peg57q/5YiG5p6Q5LuqJyxcbiAgICAgICAgdHlwZTogJ2RldmljZScsXG4gICAgICAgIGltYWdlOiAnL3dpZmkucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICfml6Dnur/kv6Hlj7fliIbmnpDku6onXG4gICAgICB9XG4gICAgXSxcbiAgICAn5qih5Z2XJzogW1xuICAgICAge1xuICAgICAgICBpZDogJzgwMDAnLCBcbiAgICAgICAgbmFtZTogJ+mTnOe8huWIhuaekOaooeWdlycsXG4gICAgICAgIHR5cGU6ICdtb2R1bGUnLFxuICAgICAgICBwb3J0VHlwZTogJ2NvcHBlcicsXG4gICAgICAgIGltYWdlOiAnL2RzeC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+mTnOe8huiupOivgeWIhuaekOS7quaooeWdlydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnY2ZwJywgXG4gICAgICAgIG5hbWU6ICflhYnnuqTmjZ/ogJfmqKHlnZcnLFxuICAgICAgICB0eXBlOiAnbW9kdWxlJyxcbiAgICAgICAgcG9ydFR5cGU6ICdmaWJlcicsXG4gICAgICAgIGltYWdlOiAnL2NmcC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+WFiee6pOaNn+iAl+a1i+ivleaooeWdlydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnb2ZwJywgXG4gICAgICAgIG5hbWU6ICflhYnml7bln5/lj43lsITmqKHlnZcnLFxuICAgICAgICB0eXBlOiAnbW9kdWxlJyxcbiAgICAgICAgcG9ydFR5cGU6ICdmaWJlcicsXG4gICAgICAgIGltYWdlOiAnL29mcC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09URFLlhYnml7bln5/lj43lsITmtYvor5XmqKHlnZcnXG4gICAgICB9XG4gICAgXSxcbiAgICAn6YCC6YWN5ZmoJzogW1xuICAgICAge1xuICAgICAgICBpZDogJ2NoYW5uZWwnLCBcbiAgICAgICAgbmFtZTogJ+mAmumBk+mAgumFjeWZqCcsIFxuICAgICAgICB0eXBlOiAnYWRhcHRlcicsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyJyxcbiAgICAgICAganN0eXBlOiAnbW9kZWxwb3J0LWNvcHBlcicsXG4gICAgICAgIGltYWdlOiAnL0NIQTgwNC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0NhdCA4L0NsYXNzIEkg6YCa6YGT5rWL6K+V6YCC6YWN5ZmoJ1xuICAgICAgfSxcbiAgICAgIHsgXG4gICAgICAgIGlkOiAncGVybWFuZW50JywgXG4gICAgICAgIG5hbWU6ICfmsLjkuYXpk77ot6/pgILphY3lmagnLCBcbiAgICAgICAgdHlwZTogJ2FkYXB0ZXInLFxuICAgICAgICBwb3J0VHlwZTogJ2NvcHBlcicsXG4gICAgICAgIGpzdHlwZTogJ21vZGVscG9ydC1jb3BwZXInLFxuICAgICAgICBpbWFnZTogJy9QTEE4MDQucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDYXQgOC9DbGFzcyBJIOawuOS5hemTvui3r+a1i+ivlemAgumFjeWZqCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAncGF0Y2hjb2RlLUNhdDYnLCBcbiAgICAgICAgbmFtZTogJ+i3s+e6v+mAgumFjeWZqCcsIFxuICAgICAgICB0eXBlOiAnYWRhcHRlcicsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyJyxcbiAgICAgICAganN0eXBlOiAnbW9kZWxwb3J0LWNvcHBlcicsXG4gICAgICAgIGltYWdlOiAnL0RTWC1QQzZTLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQ2F0IDYg6Lez57q/6YCC6YWN5ZmoJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdjaGFubmVsLW0xMi1kJywgXG4gICAgICAgIG5hbWU6ICdNMTIgRC1Db2Rl6YCC6YWN5ZmoJywgXG4gICAgICAgIHR5cGU6ICdhZGFwdGVyJyxcbiAgICAgICAgcG9ydFR5cGU6ICdjb3BwZXInLFxuICAgICAgICBqc3R5cGU6ICdtb2RlbHBvcnQtbTEyLWQnLFxuICAgICAgICBpbWFnZTogJy9EU1gtQ0hBMDIxUy5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJyBNMTItRCA05L2N6YCC6YWN5ZmoJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdjaGFubmVsLW0xMi14JywgXG4gICAgICAgIG5hbWU6ICdNMTIgWC1Db2Rl6YCC6YWN5ZmoJywgXG4gICAgICAgIHR5cGU6ICdhZGFwdGVyJyxcbiAgICAgICAgcG9ydFR5cGU6ICdjb3BwZXInLFxuICAgICAgICBqc3R5cGU6ICdtb2RlbHBvcnQtbTEyLXgnLFxuICAgICAgICBpbWFnZTogJy9EU1gtQ0hBLU0xMi1YLVMucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdNMTItWCA4IOS9jemAgumFjeWZqCdcbiAgICAgIH1cbiAgICBdLFxuICAgICfot7Pnur8nOiBbXG4gICAgICAvLyDpk5znvIbot7Pnur9cbiAgICAgIHsgXG4gICAgICAgIGlkOiAncGFjaGNvZGUtY29wcGVyJywgXG4gICAgICAgIG5hbWU6ICdSSjQ16Lez57q/JywgXG4gICAgICAgIHR5cGU6ICdjYWJsZScsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyJyxcbiAgICAgICAgaW1hZ2U6ICcvQ2FibGUucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDYXQgNua1i+ivlei3s+e6vydcbiAgICAgIH0sXG4gICAgICB7IFxuICAgICAgICBpZDogJ3BhY2hjb2RlLW0xMi14JywgXG4gICAgICAgIG5hbWU6ICdNMTItWC1Db2Rl6Lez57q/JywgXG4gICAgICAgIHR5cGU6ICdjYWJsZScsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyLW0xMi14JyxcbiAgICAgICAgaW1hZ2U6ICcvTTEyLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTTEyLVgtQ29kZei3s+e6vydcbiAgICAgIH0sXG4gICAgICB7IFxuICAgICAgICBpZDogJ3BhY2hjb2RlLW0xMi1kJywgXG4gICAgICAgIG5hbWU6ICdNMTItRC1Db2Rl6Lez57q/JywgXG4gICAgICAgIHR5cGU6ICdjYWJsZScsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyLW0xMi1kJyxcbiAgICAgICAgaW1hZ2U6ICcvTTEyLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTTEyLUQtQ29kZei3s+e6vydcbiAgICAgIH0sXG4gICAgICAvLyDlhYnnuqTot7Pnur9cbiAgICAgIHsgXG4gICAgICAgIGlkOiAnc20tbGMtbGMnLCBcbiAgICAgICAgbmFtZTogJ+WNleaooei3s+e6pCcsIFxuICAgICAgICB0eXBlOiAnY2FibGUnLFxuICAgICAgICBwb3J0VHlwZTogJ2ZpYmVyJyxcbiAgICAgICAgaW1hZ2U6ICcvU00tTEMtTEMucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICfljZXmqKEgTEMtTEMg5Y+M5bel5rWL6K+V6Lez57q/J1xuICAgICAgfSxcbiAgICAgIHsgXG4gICAgICAgIGlkOiAnbW0tbGMtbGMnLCBcbiAgICAgICAgbmFtZTogJ+Wkmuaooei3s+e6pCcsIFxuICAgICAgICB0eXBlOiAnY2FibGUnLFxuICAgICAgICBwb3J0VHlwZTogJ2ZpYmVyJyxcbiAgICAgICAgaW1hZ2U6ICcvTU0tTEMtTEMucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICflpJrmqKEgTEMtTEMg5Y+M5bel5rWL6K+V6Lez57q/J1xuICAgICAgfSxcbiAgICAgIC8vIOihpeWBv+WFiee6pFxuICAgICAgeyBcbiAgICAgICAgaWQ6ICdzbWMtbGMtbGMnLCBcbiAgICAgICAgbmFtZTogJ+WNleaooeihpeWBv+WFiee6pCcsIFxuICAgICAgICB0eXBlOiAnY2FibGUnLFxuICAgICAgICBwb3J0VHlwZTogJ2ZpYmVyJyxcbiAgICAgICAgaW1hZ2U6ICcvU01DLUxDLUxDLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAn5Y2V5qihIExDLUxDIOWPjOW3peihpeWBv+WFiee6pCdcbiAgICAgIH0sXG4gICAgICB7IFxuICAgICAgICBpZDogJ21tYy1sYy1sYycsIFxuICAgICAgICBuYW1lOiAn5aSa5qih6KGl5YG/5YWJ57qkJywgXG4gICAgICAgIHR5cGU6ICdjYWJsZScsXG4gICAgICAgIHBvcnRUeXBlOiAnZmliZXInLFxuICAgICAgICBpbWFnZTogJy9NTUMtTEMtTEMucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICflpJrmqKEgTEMtTEMg5Y+M5bel6KGl5YG/5YWJ57qkJ1xuICAgICAgfSxcbiAgICAgIC8vIE1QT+i3s+e6v1xuICAgICAgeyBcbiAgICAgICAgaWQ6ICdzbS1tcG8tbXBvJywgXG4gICAgICAgIG5hbWU6ICfljZXmqKFNUE/ot7Pnur8nLCBcbiAgICAgICAgdHlwZTogJ2NhYmxlLW1wbycsXG4gICAgICAgIHBvcnRUeXBlOiAnZmliZXItbXBvJyxcbiAgICAgICAgaW1hZ2U6ICcvU00tTVBPLU1QTy5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+WNleaooSBNUE8tTVBPIOi3s+e6vydcbiAgICAgIH0sXG4gICAgICB7IFxuICAgICAgICBpZDogJ21tLW1wby1tcG8nLCBcbiAgICAgICAgbmFtZTogJ+WkmuaooU1QT+i3s+e6vycsIFxuICAgICAgICB0eXBlOiAnY2FibGUtbXBvJyxcbiAgICAgICAgcG9ydFR5cGU6ICdmaWJlci1tcG8nLFxuICAgICAgICBpbWFnZTogJy9NTS1NUE8tTVBPLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAn5aSa5qihIE1QTy1NUE8g6Lez57q/J1xuICAgICAgfSxcbiAgICAgIHsgXG4gICAgICAgIGlkOiAnbW0tbXBvLWxjLWJveCcsIFxuICAgICAgICBuYW1lOiAn5aSa5qihbXBvLWxj6L2s5o6l55uSJywgXG4gICAgICAgIHR5cGU6ICdtcG8nLFxuICAgICAgICBwb3J0VHlwZTogJ2ZpYmVyYm94JyxcbiAgICAgICAgaW1hZ2U6ICcvTU0tTVBPLUxDLUJPWC5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+WkmuaooSBNUE8tTEMg6L2s5o6l55uSJ1xuICAgICAgfVxuICAgIF0sXG4gICAgJ+i/nuaOpeWZqCc6IFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdsYy1jb25uZWN0b3InLFxuICAgICAgICBuYW1lOiAnTEPms5XlhbAnLFxuICAgICAgICB0eXBlOiAnY29ubmVjdG9yJyxcbiAgICAgICAgcG9ydFR5cGU6ICdmaWJlcicsXG4gICAgICAgIGltYWdlOiAnL0xDLWNvbm5lY3Rvci5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+WFiee6pOi/nuaOpeWZqCdcbiAgICAgIH1cbiAgICBdLFxuICAgICflt6XlhbcnOiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnbGMtY2xlYW4nLFxuICAgICAgICBuYW1lOiAnMS4yNW1t5riF5rSB56yUJyxcbiAgICAgICAgaW1hZ2U6ICcvTEMtY2xlYW4ucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICflhYnnuqTmuIXmtIHnrJQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ21wby1jbGVhbicsXG4gICAgICAgIG5hbWU6ICdtcG/muIXmtIHnrJQnLFxuICAgICAgICBpbWFnZTogJy9NUE8tY2xlYW4ucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICflhYnnuqTmuIXmtIHnrJQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ0lMVDIwMCcsXG4gICAgICAgIG5hbWU6ICfpn7PpopHmjqLmo5InLFxuICAgICAgICBpbWFnZTogJy9JTFQyMDAucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICfpn7PpopHmjqLmo5InXG4gICAgICB9XG4gICAgXSxcbiAgICBcbiAgICAn5aS55YW3JzogW1xuICAgICAge1xuICAgICAgICBpZDogJ2NhbC0ycCcsIFxuICAgICAgICBuYW1lOiAn5rWL6K+V5aS55YW3LTLoiq8nLFxuICAgICAgICB0eXBlOiAnbW9kdWxlJyxcbiAgICAgICAgcG9ydFR5cGU6ICdjb3BwZXInLFxuICAgICAgICBpbWFnZTogJy9DQUwtMlAucG5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICfmj5LluqfmtYvor5XlpLnlhbcy6IqvJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdjYWwtNHAnLCBcbiAgICAgICAgbmFtZTogJ+a1i+ivleWkueWFty006IqvJyxcbiAgICAgICAgdHlwZTogJ21vZHVsZScsXG4gICAgICAgIHBvcnRUeXBlOiAnY29wcGVyJyxcbiAgICAgICAgaW1hZ2U6ICcvQ0FMLTRQLnBuZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAn5o+S5bqn5rWL6K+V5aS55YW3NOiKrydcbiAgICAgIH0sXG4gICAgICB7IFxuICAgICAgICBpZDogJ2JlbmNobWFyay1jb3BwZXInLCBcbiAgICAgICAgbmFtZTogJ+WfuuWHhui/nuaOpeWZqCcsIFxuICAgICAgICB0eXBlOiAnbW9kdWxlJyxcbiAgICAgICAgcG9ydFR5cGU6ICdjYWwtY29wcGVyLW91dCcsXG4gICAgICAgIGltYWdlOiAnL2JlbmNobWFyay5wbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ+WfuuWHhui/nuaOpSdcbiAgICAgIH0sXG4gICAgXSxcbiAgICBcbiAgfSxcblxuXG4gIFxuICAvLyDmlYXpmpzlnLrmma9cbiAgZmF1bHRTY2VuYXJpb3M6IFwiT2ZmaWNlXCIsXG4gIC8vIGZhdWx0U2NlbmFyaW9zOiBcIldvcmxkU2tpbGxcIixcbiAgLy8gZmF1bHRTY2VuYXJpb3M6IFwiSW5kdXN0cnlcIixcbiAgLy8gZmF1bHRTY2VuYXJpb3M6IFwiRGF0YUNlbnRlclwiLFxuICAvLyBmYXVsdFNjZW5hcmlvczogXCJDb3BwZXJBbmFseXplclwiLFxuICBXb3JsZFNraWxsU2NlbmFyaW9zOiBcIk9GRklDRVwiLFxuICAvLyDotZvkvY3lj7dcbiAgLy8gc2VhdE51bWJlcjogXCJodXNreVwiLFxuICBzZWF0TnVtYmVyOiBcIlwiLFxuICAvLyDnu4Tnu4fmnLrmnoRcbiAgc2VhdE9yZzogXCJcIixcbiAgLy8g5q+U6LWbSURcbiAgc2VhdFVVSUQ6IG51bGwsXG4gIC8vIOavlOi1m+W8gOWni+aXtumXtFxuICBzZWF0U3RhcnRUaW1lOm51bGwsXG4gIC8vIOihqOWNleiusOW9lVxuICByZXBvcnRzOltdLFxuICAvLyDlvZPliY3lronoo4Xorr7lpIcgLSDmoLzlvI86IHsgbWFpbjogZGV2aWNlLCByZW1vdGU6IGRldmljZSB9XG4gIGluc3RhbGxlZERldmljZXM6IHsgbWFpbjogbnVsbCwgcmVtb3RlOiBudWxsIH0sXG4gIC8vIOS4u+acuuW3suWuieijheaooeWdl1xuICBtYWluVW5pdE1vZHVsZXM6IFtdLFxuICAvLyDov5znq6/lt7Llronoo4XmqKHlnZdcbiAgcmVtb3RlVW5pdE1vZHVsZXM6IFtdLFxuICAvLyDkuLvmnLrpgILphY3lmahcbiAgbWFpblVuaXRBZGFwdGVyOiBudWxsLFxuICAvLyDov5znq6/pgILphY3lmahcbiAgcmVtb3RlVW5pdEFkYXB0ZXI6IG51bGwsXG4gIC8vIOS4u+acuuaOpeWPo1xuICBtYWluVW5pdFBvcnRzOiBbXSxcbiAgLy8g6L+c56uv5o6l5Y+jXG4gIHJlbW90ZVVuaXRQb3J0czogW10sXG4gIC8vIOW9k+WJjemAieS4reeahOW3peWFt1xuICBzZWxlY3RlZFRvb2w6IG51bGwsXG4gIC8vIOi/nuaOpeWMuueJqeWTgeWIl+ihqFxuICBjb25uZWN0aW9uSXRlbXM6IFtdLFxuICAvLyDov57mjqXot6/lvoTliJfooahcbiAgY29ubmVjdGlvblBhdGhzOiBbXSxcbiAgLy8g6L+e5o6l54q25oCB5YiG5p6Q57uT5p6cXG4gIGNvbm5lY3Rpb25TdGF0dXM6IFtdLFxuICBcbiAgLy8g5Lyg6L6T57q/5Z+65YeG54q25oCBXG4gIGhhc0JlbmNobWFya01vZHVsZTogZmFsc2UsXG4gIC8vIOe6v+e8huWPguaVsFxuICBjYWJsZVBhcmFtczoge1xuICAgIGNvbmR1Y3Rvck1hdGVyaWFsOiAnY29wcGVyJyxcbiAgICBjb3JlRGlhbWV0ZXI6IDAuNTcsXG4gICAgaW5zdWxhdGlvbk1hdGVyaWFsOiAncGUnLFxuICAgIGluc3VsYXRpb25UaGlja25lc3M6IDAuMixcbiAgICB0d2lzdFBpdGNoOiAxMiwgICAgICAgIC8vIOe7nui3nSAobW0pXG4gICAgcGFpcjJUd2lzdFJhdGlvOiAxLjAsICAvLyDnrKzkuozlr7nnu57ot53mr5TkvosgKOebuOWvueS6juesrOS4gOWvuSlcbiAgICBjYWJsZUxlbmd0aDogMTAwLCAgICAgIC8vIOe6v+e8humVv+W6piAobSlcbiAgICBSOiAwLCAgICAgICAgICAgICAgICAgIC8vIOeUtemYuyBS4oCyICjOqS9tKVxuICAgIEw6IDAsICAgICAgICAgICAgICAgICAgLy8g55S15oSfIEzigLIgKG5IL20pXG4gICAgQzogMCwgICAgICAgICAgICAgICAgICAvLyDnlLXlrrkgQ+KAsiAocEYvbSlcbiAgICBHOiAwICAgICAgICAgICAgICAgICAgIC8vIOeUteWvvCBH4oCyIChuUy9tKVxuICB9LFxuXG4gIC8vIOmAieaLqeW3peWFt1xuICBzZWxlY3RUb29sOiAodG9vbCkgPT4ge1xuICAgIHNldCh7IHNlbGVjdGVkVG9vbDogdG9vbCB9KTtcbiAgfSxcbiAgLy8g5Y+W5raI6YCJ5oup5bel5YW3XG4gIGNsZWFyU2VsZWN0ZWRUb29sOiAoKSA9PiB7XG4gICAgc2V0KHsgc2VsZWN0ZWRUb29sOiBudWxsIH0pO1xuICB9LFxuICBcbiAgLy8g5a6J6KOF6K6+5aSHXG4gIGluc3RhbGxEZXZpY2U6IChkZXZpY2UsIHRhcmdldCkgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBpbnN0YWxsZWREZXZpY2VzOiB7XG4gICAgICAgIC4uLnN0YXRlLmluc3RhbGxlZERldmljZXMsXG4gICAgICAgIFt0YXJnZXRdOiBkZXZpY2VcbiAgICAgIH1cbiAgICB9KSk7XG4gIH0sXG4gIFxuICAvLyDljbjovb3orr7lpIdcbiAgdW5pbnN0YWxsRGV2aWNlOiAodGFyZ2V0KSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgLy8g5Y246L296K6+5aSH5pe277yM5ZCM5pe25riF6Zmk6K+l6K6+5aSH5LiK55qE5omA5pyJ5qih5Z2X5ZKM6YCC6YWN5ZmoXG4gICAgICBjb25zdCB1cGRhdGVzID0ge1xuICAgICAgICBpbnN0YWxsZWREZXZpY2VzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuaW5zdGFsbGVkRGV2aWNlcyxcbiAgICAgICAgICBbdGFyZ2V0XTogbnVsbFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgXG4gICAgICAvLyDmuIXpmaTlr7nlupTnmoTmqKHlnZflkozpgILphY3lmahcbiAgICAgIGlmICh0YXJnZXQgPT09ICdtYWluJykge1xuICAgICAgICB1cGRhdGVzLm1haW5Vbml0TW9kdWxlcyA9IFtdO1xuICAgICAgICB1cGRhdGVzLm1haW5Vbml0QWRhcHRlciA9IG51bGw7XG4gICAgICAgIHVwZGF0ZXMubWFpblVuaXRGaXh0dXJlID0gbnVsbDtcbiAgICAgICAgdXBkYXRlcy5tYWluVW5pdFBvcnRzID0gW107XG4gICAgICAgIHVwZGF0ZXMuaGFzQmVuY2htYXJrTW9kdWxlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGVzLnJlbW90ZVVuaXRNb2R1bGVzID0gW107XG4gICAgICAgIHVwZGF0ZXMucmVtb3RlVW5pdEFkYXB0ZXIgPSBudWxsO1xuICAgICAgICB1cGRhdGVzLnJlbW90ZVVuaXRQb3J0cyA9IFtdO1xuICAgICAgICB1cGRhdGVzLmhhc0JlbmNobWFya01vZHVsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgXG4gICAgICByZXR1cm4gdXBkYXRlcztcbiAgICB9KTtcbiAgfSxcblxuICAvLyDlronoo4XmqKHlnZdcbiAgaW5zdGFsbE1vZHVsZTogKG1vZHVsZSwgdGFyZ2V0KSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgaWYgKHRhcmdldCA9PT0gJ21haW4nKSB7XG4gICAgICAgIGxldCBwb3J0cyA9IFtdO1xuICAgICAgICBpZiAobW9kdWxlLmlkID09PSAnY2ZwJykge1xuICAgICAgICAgIHBvcnRzID0gW1xuICAgICAgICAgICAgeyBpZDogJ2NmcC1zbS1vdXQnLCB0eXBlOiAnbW9kZWxwb3J0JywgbW9kdWxlOiAnY2ZwJyB9LFxuICAgICAgICAgICAgeyBpZDogJ2NmcC1pbicsIHR5cGU6ICdtb2RlbHBvcnQnLCBtb2R1bGU6ICdjZnAnIH0sXG4gICAgICAgICAgICB7IGlkOiAnY2ZwLW1tLW91dCcsIHR5cGU6ICdtb2RlbHBvcnQnLCBtb2R1bGU6ICdjZnAnIH0sXG4gICAgICAgICAgICB7IGlkOiAndmZsJywgdHlwZTogJ21vZGVscG9ydCcsIG1vZHVsZTogJ2NmcCcgfVxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSBpZiAobW9kdWxlLmlkID09PSAnb2ZwJykge1xuICAgICAgICAgIHBvcnRzID0gW1xuICAgICAgICAgICAgeyBpZDogJ29mcC1zbS1vdXQnLCB0eXBlOiAnbW9kZWxwb3J0JywgbW9kdWxlOiAnb2ZwJyB9LFxuICAgICAgICAgICAgeyBpZDogJ29mcC1tbS1vdXQnLCB0eXBlOiAnbW9kZWxwb3J0JywgbW9kdWxlOiAnb2ZwJyB9LFxuICAgICAgICAgICAgeyBpZDogJ3ZmbCcsIHR5cGU6ICdtb2RlbHBvcnQnLCBtb2R1bGU6ICdvZnAnIH1cbiAgICAgICAgICBdO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZHVsZS5pZCA9PT0gJ2NhbC0ycCcpIHtcbiAgICAgICAgICBwb3J0cyA9IFtcbiAgICAgICAgICAgIHsgaWQ6ICdjYWwtMXAtMScsIHR5cGU6ICdjYWwtY29wcGVyJywgbW9kdWxlOiAnY2FsLTJwJyB9LFxuICAgICAgICAgICAgeyBpZDogJ2NhbC0xcC0yJywgdHlwZTogJ2NhbC1jb3BwZXInLCBtb2R1bGU6ICdjYWwtMnAnIH1cbiAgICAgICAgICBdO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZHVsZS5pZCA9PT0gJ2NhbC00cCcpIHtcbiAgICAgICAgICBwb3J0cyA9IFtcbiAgICAgICAgICAgIHsgaWQ6ICdjYWwtMnAtMScsIHR5cGU6ICdjYWwtY29wcGVyJywgbW9kdWxlOiAnY2FsLTRwJyB9LFxuICAgICAgICAgICAgeyBpZDogJ2NhbC0ycC0yJywgdHlwZTogJ2NhbC1jb3BwZXInLCBtb2R1bGU6ICdjYWwtNHAnIH0sXG4gICAgICAgICAgICB7IGlkOiAnY2FsLTJwLTMnLCB0eXBlOiAnY2FsLWNvcHBlcicsIG1vZHVsZTogJ2NhbC00cCcgfSxcbiAgICAgICAgICAgIHsgaWQ6ICdjYWwtMnAtNCcsIHR5cGU6ICdjYWwtY29wcGVyJywgbW9kdWxlOiAnY2FsLTRwJyB9XG4gICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgbmV3TWFpbk1vZHVsZXMgPSBbLi4uc3RhdGUubWFpblVuaXRNb2R1bGVzLCBtb2R1bGVdO1xuICAgICAgICBjb25zdCBuZXdSZW1vdGVNb2R1bGVzID0gc3RhdGUucmVtb3RlVW5pdE1vZHVsZXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWFpblVuaXRNb2R1bGVzOiBuZXdNYWluTW9kdWxlcyxcbiAgICAgICAgICBtYWluVW5pdFBvcnRzOiBwb3J0cyxcbiAgICAgICAgICBoYXNCZW5jaG1hcmtNb2R1bGU6IG5ld01haW5Nb2R1bGVzLnNvbWUobSA9PiBtLmlkID09PSAnYmVuY2htYXJrLWNvcHBlcicpICYmIG5ld1JlbW90ZU1vZHVsZXMuc29tZShtID0+IG0uaWQgPT09ICdiZW5jaG1hcmstY29wcGVyJylcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwb3J0cyA9IFtdO1xuICAgICAgICBpZiAobW9kdWxlLmlkID09PSAnY2ZwJykge1xuICAgICAgICAgIHBvcnRzID0gW1xuICAgICAgICAgICAgeyBpZDogJ2NmcC1zbS1vdXQnLCB0eXBlOiAnbW9kZWxwb3J0JywgbW9kdWxlOiAnY2ZwJyB9LFxuICAgICAgICAgICAgeyBpZDogJ2NmcC1pbicsIHR5cGU6ICdtb2RlbHBvcnQnLCBtb2R1bGU6ICdjZnAnIH0sXG4gICAgICAgICAgICB7IGlkOiAnY2ZwLW1tLW91dCcsIHR5cGU6ICdtb2RlbHBvcnQnLCBtb2R1bGU6ICdjZnAnIH0sXG4gICAgICAgICAgICB7IGlkOiAndmZsJywgdHlwZTogJ21vZGVscG9ydCcsIG1vZHVsZTogJ2NmcCcgfVxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSBpZiAobW9kdWxlLmlkID09PSAnY2FsLTJwJykge1xuICAgICAgICAgIHBvcnRzID0gW1xuICAgICAgICAgICAgeyBpZDogJ2NhbC0xcC0xJywgdHlwZTogJ2NhbC1jb3BwZXInLCBtb2R1bGU6ICdjYWwtMnAnIH0sXG4gICAgICAgICAgICB7IGlkOiAnY2FsLTFwLTInLCB0eXBlOiAnY2FsLWNvcHBlcicsIG1vZHVsZTogJ2NhbC0ycCcgfVxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSBpZiAobW9kdWxlLmlkID09PSAnY2FsLTRwJykge1xuICAgICAgICAgIHBvcnRzID0gW1xuICAgICAgICAgICAgeyBpZDogJ2NhbC0ycC0xJywgdHlwZTogJ2NhbC1jb3BwZXInLCBtb2R1bGU6ICdjYWwtNHAnIH0sXG4gICAgICAgICAgICB7IGlkOiAnY2FsLTJwLTInLCB0eXBlOiAnY2FsLWNvcHBlcicsIG1vZHVsZTogJ2NhbC00cCcgfSxcbiAgICAgICAgICAgIHsgaWQ6ICdjYWwtMnAtMycsIHR5cGU6ICdjYWwtY29wcGVyJywgbW9kdWxlOiAnY2FsLTRwJyB9LFxuICAgICAgICAgICAgeyBpZDogJ2NhbC0ycC00JywgdHlwZTogJ2NhbC1jb3BwZXInLCBtb2R1bGU6ICdjYWwtNHAnIH1cbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCBuZXdSZW1vdGVNb2R1bGVzID0gWy4uLnN0YXRlLnJlbW90ZVVuaXRNb2R1bGVzLCBtb2R1bGVdO1xuICAgICAgICBjb25zdCBuZXdNYWluTW9kdWxlcyA9IHN0YXRlLm1haW5Vbml0TW9kdWxlcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZW1vdGVVbml0TW9kdWxlczogbmV3UmVtb3RlTW9kdWxlcyxcbiAgICAgICAgICByZW1vdGVVbml0UG9ydHM6IHBvcnRzLFxuICAgICAgICAgIGhhc0JlbmNobWFya01vZHVsZTogbmV3TWFpbk1vZHVsZXMuc29tZShtID0+IG0uaWQgPT09ICdiZW5jaG1hcmstY29wcGVyJykgJiYgbmV3UmVtb3RlTW9kdWxlcy5zb21lKG0gPT4gbS5pZCA9PT0gJ2JlbmNobWFyay1jb3BwZXInKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICBcbiAgLy8g5Y246L295qih5Z2XXG4gIHVuaW5zdGFsbE1vZHVsZTogKG1vZHVsZUlkLCB0YXJnZXQpID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAodGFyZ2V0ID09PSAnbWFpbicpIHtcbiAgICAgICAgY29uc3QgbmV3TWFpbk1vZHVsZXMgPSBzdGF0ZS5tYWluVW5pdE1vZHVsZXMuZmlsdGVyKG0gPT4gbS5pZCAhPT0gbW9kdWxlSWQpO1xuICAgICAgICBjb25zdCBuZXdSZW1vdGVNb2R1bGVzID0gc3RhdGUucmVtb3RlVW5pdE1vZHVsZXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWFpblVuaXRNb2R1bGVzOiBuZXdNYWluTW9kdWxlcyxcbiAgICAgICAgICBtYWluVW5pdFBvcnRzOiBbXSxcbiAgICAgICAgICBtYWluVW5pdEFkYXB0ZXI6IG51bGwsXG4gICAgICAgICAgaGFzQmVuY2htYXJrTW9kdWxlOiBuZXdNYWluTW9kdWxlcy5zb21lKG0gPT4gbS5pZCA9PT0gJ2JlbmNobWFyay1jb3BwZXInKSAmJiBuZXdSZW1vdGVNb2R1bGVzLnNvbWUobSA9PiBtLmlkID09PSAnYmVuY2htYXJrLWNvcHBlcicpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuZXdSZW1vdGVNb2R1bGVzID0gc3RhdGUucmVtb3RlVW5pdE1vZHVsZXMuZmlsdGVyKG0gPT4gbS5pZCAhPT0gbW9kdWxlSWQpO1xuICAgICAgICBjb25zdCBuZXdNYWluTW9kdWxlcyA9IHN0YXRlLm1haW5Vbml0TW9kdWxlcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZW1vdGVVbml0TW9kdWxlczogbmV3UmVtb3RlTW9kdWxlcyxcbiAgICAgICAgICByZW1vdGVVbml0UG9ydHM6IFtdLFxuICAgICAgICAgIHJlbW90ZVVuaXRBZGFwdGVyOiBudWxsLFxuICAgICAgICAgIGhhc0JlbmNobWFya01vZHVsZTogbmV3TWFpbk1vZHVsZXMuc29tZShtID0+IG0uaWQgPT09ICdiZW5jaG1hcmstY29wcGVyJykgJiYgbmV3UmVtb3RlTW9kdWxlcy5zb21lKG0gPT4gbS5pZCA9PT0gJ2JlbmNobWFyay1jb3BwZXInKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICBcbiAgLy8g5a6J6KOF6YCC6YWN5ZmoXG4gIGluc3RhbGxBZGFwdGVyOiAoYWRhcHRlciwgdGFyZ2V0KSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIFt0YXJnZXQgPT09ICdtYWluJyA/ICdtYWluVW5pdEFkYXB0ZXInIDogJ3JlbW90ZVVuaXRBZGFwdGVyJ106IHtcbiAgICAgICAgLi4uYWRhcHRlcixcbiAgICAgICAgcG9ydDoge1xuICAgICAgICAgIGlkOiBgJHthZGFwdGVyLmlkfWAsXG4gICAgICAgICAgdHlwZTogJ21vZGVscG9ydCcsXG4gICAgICAgICAgbW9kdWxlOiBhZGFwdGVyLmlkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH0sXG4gIFxuICAvLyDljbjovb3pgILphY3lmahcbiAgdW5pbnN0YWxsQWRhcHRlcjogKHRhcmdldCkgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBbdGFyZ2V0ID09PSAnbWFpbicgPyAnbWFpblVuaXRBZGFwdGVyJyA6ICdyZW1vdGVVbml0QWRhcHRlciddOiBudWxsXG4gICAgfSkpO1xuICB9LFxuXG4gIFxuICAvLyDmm7TmlrDmlYXpmpzlnLrmma9cbiAgdXBkYXRlRmF1bHRTY2VuYXJpb3M6IChzdGF0dXMpID0+IHtcbiAgICBzZXQoKCkgPT4gKHtcbiAgICAgIGZhdWx0U2NlbmFyaW9zOiBzdGF0dXNcbiAgICB9KSk7XG4gIH0sXG4gIC8vIOabtOaWsOernui1m+aVhemanOWcuuaZr1xuICB1cGRhdGVXb3JsZFNraWxsU2NlbmFyaW9zOiAoc3RhdHVzKSA9PiB7XG4gICAgc2V0KCgpID0+ICh7XG4gICAgICBXb3JsZFNraWxsU2NlbmFyaW9zOiBzdGF0dXNcbiAgICB9KSk7XG4gIH0sXG4gIC8vIOabtOaWsOi1m+S9jeWPt1xuICB1cGRhdGVTZWF0TnVtYmVyOiAobnVtYmVyKSA9PiB7XG4gICAgc2V0KCgpID0+ICh7XG4gICAgICBzZWF0TnVtYmVyOiBudW1iZXJcbiAgICB9KSk7XG4gIH0sXG4gIC8vIOabtOaWsOe7hOe7h+acuuaehFxuICB1cGRhdGVTZWF0T3JnOiAob3JnKSA9PiB7XG4gICAgc2V0KCgpID0+ICh7XG4gICAgICBzZWF0T3JnOiBvcmdcbiAgICB9KSk7XG4gIH0sXG4gIC8vIOabtOaWsOavlOi1m0lEXG4gIHVwZGF0ZVNlYXRVVUlEOiAodXVpZCkgPT4ge1xuICAgIHNldCgoKSA9PiAoe1xuICAgICAgc2VhdFVVSUQ6IHV1aWRcbiAgICB9KSk7XG4gIH0sXG5cbiAgLy8g5pu05paw5q+U6LWb5byA5aeL5pe26Ze0XG4gIHVwZGF0ZVNlYXRTdGFydFRpbWU6IChzdGFydFRpbWUpID0+IHtcbiAgICBzZXQoKCkgPT4gKHtcbiAgICAgIHNlYXRTdGFydFRpbWU6IHN0YXJ0VGltZVxuICAgIH0pKTtcbiAgfSxcbiAgLy8g5pu05paw5oql5ZGK5pWw5o2uXG4gIHVwZGF0ZVJlcG9ydHM6IChyZWNvcmRzKSA9PiB7XG4gICAgc2V0KCgpID0+ICh7XG4gICAgICByZXBvcnRzOiByZWNvcmRzXG4gICAgfSkpO1xuICB9LFxuICBcblxuLy8gLS0tLSoqKueJqeWTgeWMuuWfn+aWueazlSoqKi0tLS1cbiAgLy8g5re75Yqg54mp5ZOB5Yiw6L+e5o6l5Yy6XG4gIGFkZENvbm5lY3Rpb25JdGVtOiAoaXRlbSkgPT4gXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGNvbm5lY3Rpb25JdGVtczogWy4uLnN0YXRlLmNvbm5lY3Rpb25JdGVtcywgaXRlbV1cbiAgICB9KSksXG5cbiAgLy8g5LuO6L+e5o6l5Yy656e76Zmk54mp5ZOBXG4gIHJlbW92ZUNvbm5lY3Rpb25JdGVtOiAoaW5kZXgpID0+XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGNvbm5lY3Rpb25JdGVtczogc3RhdGUuY29ubmVjdGlvbkl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpXG4gICAgfSkpLFxuXG5cbi8vIC0tLSoqKui/nuaOpei3r+W+hCoqKi0tLVxuICAvLyDmt7vliqDov57mjqXot6/lvoRcbiAgYWRkQ29ubmVjdGlvblBhdGg6IChwYXRoKSA9PiBcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBuZXdQYXRocyA9IFsuLi5zdGF0ZS5jb25uZWN0aW9uUGF0aHMsIHBhdGhdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29ubmVjdGlvblBhdGhzOiBuZXdQYXRoc1xuICAgICAgfTtcbiAgICB9KSxcblxuICAvLyDnp7vpmaTov57mjqXot6/lvoRcbiAgcmVtb3ZlQ29ubmVjdGlvblBhdGg6IChzb3VyY2VJZCwgdGFyZ2V0SWQpID0+XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgbmV3UGF0aHMgPSBzdGF0ZS5jb25uZWN0aW9uUGF0aHMuZmlsdGVyKHBhdGggPT4gXG4gICAgICAgICEocGF0aC5zb3VyY2UgPT09IHNvdXJjZUlkICYmIHBhdGgudGFyZ2V0ID09PSB0YXJnZXRJZClcbiAgICAgICk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb25uZWN0aW9uUGF0aHM6IG5ld1BhdGhzXG4gICAgICB9O1xuICAgIH0pLFxuXG4gIC8vIOa4heepuui/nuaOpei3r+W+hFxuICBjbGVhckNvbm5lY3Rpb25QYXRoczogKCkgPT5cbiAgICBzZXQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29ubmVjdGlvblBhdGhzOiBbXVxuICAgICAgfTtcbiAgICB9KSxcblxuICAvLyDojrflj5blvZPliY3ov57mjqXot6/lvoRcbiAgZ2V0Q29ubmVjdGlvblBhdGhzOiAoKSA9PiBnZXQoKS5jb25uZWN0aW9uUGF0aHMsXG5cbiAvLyAtLS0qKirov57mjqXnirbmgIHliIbmnpDnu5PmnpwqKiotLS1cblxuXG4gIC8vIOabtOaWsOi/nuaOpeeKtuaAgVxuICB1cGRhdGVDb25uZWN0aW9uU3RhdHVzOiAoc3RhdHVzKSA9PlxuICAgIHNldCgoKSA9PiAoe1xuICAgICAgY29ubmVjdGlvblN0YXR1czogc3RhdHVzXG4gICAgfSkpLFxuXG4gIC8vIOaPkOekuuahhuaWueazlVxuICBzZXRTaG93VG90YWxUb2FzdDogKHNob3cpID0+IHNldCh7IHNob3dUb3RhbFRvYXN0OiBzaG93IH0pLFxuICBzZXRUb3RhbFRvYXN0TWVzc2FnZTogKG1lc3NhZ2UpID0+IHNldCh7IHRvdGFsVG9hc3RNZXNzYWdlOiBtZXNzYWdlIH0pLFxuXG4gIC8vIC0tLSoqKue6v+e8huWPguaVsOeuoeeQhioqKi0tLVxuICAvLyDmm7TmlrDkvKDovpPnur/ln7rlh4bnirbmgIFcbiAgdXBkYXRlSGFzQmVuY2htYXJrTW9kdWxlOiAoc3RhdHVzKSA9PlxuICAgIHNldCgoKSA9PiAoe1xuICAgICAgaGFzQmVuY2htYXJrTW9kdWxlOiBzdGF0dXNcbiAgICB9KSksXG4gIFxuICAvLyDmm7TmlrDnur/nvIblj4LmlbBcbiAgdXBkYXRlQ2FibGVQYXJhbXM6IChwYXJhbXMpID0+XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGNhYmxlUGFyYW1zOiB7XG4gICAgICAgIC4uLnN0YXRlLmNhYmxlUGFyYW1zLFxuICAgICAgICAuLi5wYXJhbXNcbiAgICAgIH1cbiAgICB9KSksXG5cbiAgLy8g5pu05paw5Y2V5Liq57q/57yG5Y+C5pWwXG4gIHVwZGF0ZVNpbmdsZUNhYmxlUGFyYW06IChrZXksIHZhbHVlKSA9PlxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBjYWJsZVBhcmFtczoge1xuICAgICAgICAuLi5zdGF0ZS5jYWJsZVBhcmFtcyxcbiAgICAgICAgW2tleV06IHZhbHVlXG4gICAgICB9XG4gICAgfSkpLFxuXG4gIC8vIOmHjee9rue6v+e8huWPguaVsFxuICByZXNldENhYmxlUGFyYW1zOiAoKSA9PlxuICAgIHNldCgoKSA9PiAoe1xuICAgICAgY2FibGVQYXJhbXM6IHtcbiAgICAgICAgY29uZHVjdG9yTWF0ZXJpYWw6ICdjb3BwZXInLFxuICAgICAgICBjb3JlRGlhbWV0ZXI6IDAuNTcsXG4gICAgICAgIGluc3VsYXRpb25NYXRlcmlhbDogJ3BlJyxcbiAgICAgICAgaW5zdWxhdGlvblRoaWNrbmVzczogMC4yLFxuICAgICAgICB0d2lzdFBpdGNoOiAxMixcbiAgICAgICAgcGFpcjJUd2lzdFJhdGlvOiAxLjAsXG4gICAgICAgIGNhYmxlTGVuZ3RoOiAxMDAsXG4gICAgICAgIFI6IDAsXG4gICAgICAgIEw6IDAsXG4gICAgICAgIEM6IDAsXG4gICAgICAgIEc6IDBcbiAgICAgIH1cbiAgICB9KSksXG5cbi8vIOWIneWni+WMluaVsOaNrlxuXG4gICAgLy8g6YeN572u5Yiw6buY6K6k54q25oCBXG4gICAgcmVzZXRkZXZpY2VTdG9yZTogKCkgPT4ge1xuICAgICAgc2V0KCgpID0+ICh7XG4gICAgICAgIC8vIOW9k+WJjeWuieijheiuvuWkh1xuICAgICAgICBpbnN0YWxsZWREZXZpY2VzOiB7IG1haW46IG51bGwsIHJlbW90ZTogbnVsbCB9LFxuICAgICAgICAvLyDkuLvmnLrlt7Llronoo4XmqKHlnZdcbiAgICAgICAgbWFpblVuaXRNb2R1bGVzOiBbXSxcbiAgICAgICAgLy8g6L+c56uv5bey5a6J6KOF5qih5Z2XXG4gICAgICAgIHJlbW90ZVVuaXRNb2R1bGVzOiBbXSxcbiAgICAgICAgLy8g5Li75py66YCC6YWN5ZmoXG4gICAgICAgIG1haW5Vbml0QWRhcHRlcjogbnVsbCxcbiAgICAgICAgLy8g6L+c56uv6YCC6YWN5ZmoXG4gICAgICAgIHJlbW90ZVVuaXRBZGFwdGVyOiBudWxsLFxuICAgICAgICAvLyDkuLvmnLrmjqXlj6NcbiAgICAgICAgbWFpblVuaXRQb3J0czogW10sXG4gICAgICAgIC8vIOi/nOerr+aOpeWPo1xuICAgICAgICByZW1vdGVVbml0UG9ydHM6IFtdLFxuICAgICAgICAvLyDlvZPliY3pgInkuK3nmoTlt6XlhbdcbiAgICAgICAgc2VsZWN0ZWRUb29sOiBudWxsLFxuICAgICAgICAvLyDov57mjqXljLrnianlk4HliJfooahcbiAgICAgICAgY29ubmVjdGlvbkl0ZW1zOiBbXSxcbiAgICAgICAgLy8g6L+e5o6l6Lev5b6E5YiX6KGoXG4gICAgICAgIGNvbm5lY3Rpb25QYXRoczogW10sXG4gICAgICAgIC8vIOi/nuaOpeeKtuaAgeWIhuaekOe7k+aenFxuICAgICAgICBjb25uZWN0aW9uU3RhdHVzOiBbXSxcbiAgICAgICAgLy8g5oql5ZGK5pWw5o2uXG4gICAgICAgIHJlcG9ydHM6IFtdLFxuICAgICAgICAvLyDkvKDovpPnur/ln7rlh4bnirbmgIFcbiAgICAgICAgaGFzQmVuY2htYXJrTW9kdWxlOiBmYWxzZSxcbiAgICAgICAgLy8g57q/57yG5Y+C5pWwXG4gICAgICAgIGNhYmxlUGFyYW1zOiB7XG4gICAgICAgICAgY29uZHVjdG9yTWF0ZXJpYWw6ICdjb3BwZXInLFxuICAgICAgICAgIGNvcmVEaWFtZXRlcjogMC41NyxcbiAgICAgICAgICBpbnN1bGF0aW9uTWF0ZXJpYWw6ICdwZScsXG4gICAgICAgICAgaW5zdWxhdGlvblRoaWNrbmVzczogMC4yLFxuICAgICAgICAgIHR3aXN0UGl0Y2g6IDEyLFxuICAgICAgICAgIHBhaXIyVHdpc3RSYXRpbzogMS4wLFxuICAgICAgICAgIGNhYmxlTGVuZ3RoOiAxMDAsXG4gICAgICAgICAgUjogMCxcbiAgICAgICAgICBMOiAwLFxuICAgICAgICAgIEM6IDAsXG4gICAgICAgICAgRzogMFxuICAgICAgICB9XG4gICAgICB9KSk7XG4gIH0sXG5cblxuXG59KVxuXG4vL2RldnRvb2xzXG4gIClcbiAgXG4pO1xuXG5cblxuXG5cbmV4cG9ydCBkZWZhdWx0IHVzZURldmljZVN0b3JlO1xuIl0sIm5hbWVzIjpbImNyZWF0ZSIsImRldnRvb2xzIiwidXNlRGV2aWNlU3RvcmUiLCJzZXQiLCJnZXQiLCJlc3Rtb2RlbCIsInVwZGF0ZUVzdG1vZGVsIiwibW9kZWwiLCJkZXZpY2VzIiwiaWQiLCJuYW1lIiwidHlwZSIsImltYWdlIiwiZGVzY3JpcHRpb24iLCJwb3J0VHlwZSIsImpzdHlwZSIsImZhdWx0U2NlbmFyaW9zIiwiV29ybGRTa2lsbFNjZW5hcmlvcyIsInNlYXROdW1iZXIiLCJzZWF0T3JnIiwic2VhdFVVSUQiLCJzZWF0U3RhcnRUaW1lIiwicmVwb3J0cyIsImluc3RhbGxlZERldmljZXMiLCJtYWluIiwicmVtb3RlIiwibWFpblVuaXRNb2R1bGVzIiwicmVtb3RlVW5pdE1vZHVsZXMiLCJtYWluVW5pdEFkYXB0ZXIiLCJyZW1vdGVVbml0QWRhcHRlciIsIm1haW5Vbml0UG9ydHMiLCJyZW1vdGVVbml0UG9ydHMiLCJzZWxlY3RlZFRvb2wiLCJjb25uZWN0aW9uSXRlbXMiLCJjb25uZWN0aW9uUGF0aHMiLCJjb25uZWN0aW9uU3RhdHVzIiwiaGFzQmVuY2htYXJrTW9kdWxlIiwiY2FibGVQYXJhbXMiLCJjb25kdWN0b3JNYXRlcmlhbCIsImNvcmVEaWFtZXRlciIsImluc3VsYXRpb25NYXRlcmlhbCIsImluc3VsYXRpb25UaGlja25lc3MiLCJ0d2lzdFBpdGNoIiwicGFpcjJUd2lzdFJhdGlvIiwiY2FibGVMZW5ndGgiLCJSIiwiTCIsIkMiLCJHIiwic2VsZWN0VG9vbCIsInRvb2wiLCJjbGVhclNlbGVjdGVkVG9vbCIsImluc3RhbGxEZXZpY2UiLCJkZXZpY2UiLCJ0YXJnZXQiLCJzdGF0ZSIsInVuaW5zdGFsbERldmljZSIsInVwZGF0ZXMiLCJtYWluVW5pdEZpeHR1cmUiLCJpbnN0YWxsTW9kdWxlIiwibW9kdWxlIiwicG9ydHMiLCJuZXdNYWluTW9kdWxlcyIsIm5ld1JlbW90ZU1vZHVsZXMiLCJzb21lIiwibSIsInVuaW5zdGFsbE1vZHVsZSIsIm1vZHVsZUlkIiwiZmlsdGVyIiwiaW5zdGFsbEFkYXB0ZXIiLCJhZGFwdGVyIiwicG9ydCIsInVuaW5zdGFsbEFkYXB0ZXIiLCJ1cGRhdGVGYXVsdFNjZW5hcmlvcyIsInN0YXR1cyIsInVwZGF0ZVdvcmxkU2tpbGxTY2VuYXJpb3MiLCJ1cGRhdGVTZWF0TnVtYmVyIiwibnVtYmVyIiwidXBkYXRlU2VhdE9yZyIsIm9yZyIsInVwZGF0ZVNlYXRVVUlEIiwidXVpZCIsInVwZGF0ZVNlYXRTdGFydFRpbWUiLCJzdGFydFRpbWUiLCJ1cGRhdGVSZXBvcnRzIiwicmVjb3JkcyIsImFkZENvbm5lY3Rpb25JdGVtIiwiaXRlbSIsInJlbW92ZUNvbm5lY3Rpb25JdGVtIiwiaW5kZXgiLCJfIiwiaSIsImFkZENvbm5lY3Rpb25QYXRoIiwicGF0aCIsIm5ld1BhdGhzIiwicmVtb3ZlQ29ubmVjdGlvblBhdGgiLCJzb3VyY2VJZCIsInRhcmdldElkIiwic291cmNlIiwiY2xlYXJDb25uZWN0aW9uUGF0aHMiLCJnZXRDb25uZWN0aW9uUGF0aHMiLCJ1cGRhdGVDb25uZWN0aW9uU3RhdHVzIiwic2V0U2hvd1RvdGFsVG9hc3QiLCJzaG93Iiwic2hvd1RvdGFsVG9hc3QiLCJzZXRUb3RhbFRvYXN0TWVzc2FnZSIsIm1lc3NhZ2UiLCJ0b3RhbFRvYXN0TWVzc2FnZSIsInVwZGF0ZUhhc0JlbmNobWFya01vZHVsZSIsInVwZGF0ZUNhYmxlUGFyYW1zIiwicGFyYW1zIiwidXBkYXRlU2luZ2xlQ2FibGVQYXJhbSIsImtleSIsInZhbHVlIiwicmVzZXRDYWJsZVBhcmFtcyIsInJlc2V0ZGV2aWNlU3RvcmUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/store/deviceStore.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-node)/./src/styles/globals.css":
|
||
/*!********************************!*\
|
||
!*** ./src/styles/globals.css ***!
|
||
\********************************/
|
||
/***/ (() => {
|
||
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-node)/./src/utils/asset.js":
|
||
/*!****************************!*\
|
||
!*** ./src/utils/asset.js ***!
|
||
\****************************/
|
||
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAssetUrl: () => (/* binding */ getAssetUrl)\n/* harmony export */ });\n/* harmony import */ var _store_deviceStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/store/deviceStore */ \"(pages-dir-node)/./src/store/deviceStore.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_store_deviceStore__WEBPACK_IMPORTED_MODULE_0__]);\n_store_deviceStore__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\nfunction getAssetUrl(relativePath) {\n const { estmodel } = _store_deviceStore__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getState();\n const cleanPath = relativePath?.startsWith('/') ? relativePath : `/${relativePath}`;\n if (!estmodel) return cleanPath;\n if (cleanPath.startsWith(`/${estmodel}/`)) return cleanPath;\n return `/${estmodel}${cleanPath}`;\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3NyYy91dGlscy9hc3NldC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFpRDtBQUUxQyxTQUFTQyxZQUFZQyxZQUFZO0lBQ3BDLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdILG1FQUF1QjtJQUM1QyxNQUFNSyxZQUFZSCxjQUFjSSxXQUFXLE9BQU9KLGVBQWUsQ0FBQyxDQUFDLEVBQUVBLGNBQWM7SUFFbkYsSUFBSSxDQUFDQyxVQUFVLE9BQU9FO0lBQ3RCLElBQUlBLFVBQVVDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRUgsU0FBUyxDQUFDLENBQUMsR0FBRyxPQUFPRTtJQUVsRCxPQUFPLENBQUMsQ0FBQyxFQUFFRixXQUFXRSxXQUFXO0FBQ3JDIiwic291cmNlcyI6WyIvb3B0L2Rldi9lc3QtZHN4L3NyYy91dGlscy9hc3NldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXNlRGV2aWNlU3RvcmUgZnJvbSAnQC9zdG9yZS9kZXZpY2VTdG9yZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzZXRVcmwocmVsYXRpdmVQYXRoKSB7XHJcbiAgICBjb25zdCB7IGVzdG1vZGVsIH0gPSB1c2VEZXZpY2VTdG9yZS5nZXRTdGF0ZSgpO1xyXG4gICAgY29uc3QgY2xlYW5QYXRoID0gcmVsYXRpdmVQYXRoPy5zdGFydHNXaXRoKCcvJykgPyByZWxhdGl2ZVBhdGggOiBgLyR7cmVsYXRpdmVQYXRofWA7XHJcblxyXG4gICAgaWYgKCFlc3Rtb2RlbCkgcmV0dXJuIGNsZWFuUGF0aDtcclxuICAgIGlmIChjbGVhblBhdGguc3RhcnRzV2l0aChgLyR7ZXN0bW9kZWx9L2ApKSByZXR1cm4gY2xlYW5QYXRoO1xyXG5cclxuICAgIHJldHVybiBgLyR7ZXN0bW9kZWx9JHtjbGVhblBhdGh9YDtcclxufSJdLCJuYW1lcyI6WyJ1c2VEZXZpY2VTdG9yZSIsImdldEFzc2V0VXJsIiwicmVsYXRpdmVQYXRoIiwiZXN0bW9kZWwiLCJnZXRTdGF0ZSIsImNsZWFuUGF0aCIsInN0YXJ0c1dpdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./src/utils/asset.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "next/head":
|
||
/*!****************************!*\
|
||
!*** external "next/head" ***!
|
||
\****************************/
|
||
/***/ ((module) => {
|
||
|
||
"use strict";
|
||
module.exports = require("next/head");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "react":
|
||
/*!************************!*\
|
||
!*** external "react" ***!
|
||
\************************/
|
||
/***/ ((module) => {
|
||
|
||
"use strict";
|
||
module.exports = require("react");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "react/jsx-dev-runtime":
|
||
/*!****************************************!*\
|
||
!*** external "react/jsx-dev-runtime" ***!
|
||
\****************************************/
|
||
/***/ ((module) => {
|
||
|
||
"use strict";
|
||
module.exports = require("react/jsx-dev-runtime");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "zustand":
|
||
/*!**************************!*\
|
||
!*** external "zustand" ***!
|
||
\**************************/
|
||
/***/ ((module) => {
|
||
|
||
"use strict";
|
||
module.exports = import("zustand");;
|
||
|
||
/***/ }),
|
||
|
||
/***/ "zustand/middleware":
|
||
/*!*************************************!*\
|
||
!*** external "zustand/middleware" ***!
|
||
\*************************************/
|
||
/***/ ((module) => {
|
||
|
||
"use strict";
|
||
module.exports = import("zustand/middleware");;
|
||
|
||
/***/ })
|
||
|
||
};
|
||
;
|
||
|
||
// load runtime
|
||
var __webpack_require__ = require("../webpack-runtime.js");
|
||
__webpack_require__.C(exports);
|
||
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
|
||
var __webpack_exports__ = (__webpack_exec__("(pages-dir-node)/./src/pages/_app.js"));
|
||
module.exports = __webpack_exports__;
|
||
|
||
})(); |